wanghechen 8 місяців тому
батько
коміт
9d6dba9ff1
3 змінених файлів з 68 додано та 18 видалено
  1. 5 4
      main/ulp_riscv_adc_example_main.c
  2. 62 13
      main/yc_protocol.c
  3. 1 1
      main/yc_protocol.h

+ 5 - 4
main/ulp_riscv_adc_example_main.c

@@ -399,15 +399,16 @@ static void light_sleep_task(void *args)
                 printList(Send_list);
 
                 // if(Machine_info.wait_send_rssi_bat>(30*60/TIMER_WAKEUP_TIME_S))//30分钟发一次lora
-                if (Machine_info.wait_send_rssi_bat > 60) // 30分钟唤醒一次->(30*60/TIMER_WAKEUP_TIME_S) = 60
-                // if (0)
+                // if (Machine_info.wait_send_rssi_bat > 60) // 30分钟唤醒一次->(30*60/TIMER_WAKEUP_TIME_S) = 60
+                if (Machine_info.wait_send_rssi_bat>10)
                 {
                     ESP_LOGE(LOG_TAG, "-> 30minite send lora info");
                     Machine_info.wait_send_rssi_bat = 0;
-                    // f_send_get_chart_data();
+                    // f_send_test();
+                    f_send_get_chart_data();
                     // f_send_lora_rssi(Machine_info.rssi);
                     f_send_battary_vaule(Machine_info.batt_precent);
-                    // f_send_get_time();
+                    f_send_get_time();
                 }
 
                 if ((Machine_info.last_button.Minute != Machine_info.min) /*||(Machine_info.last_button.Hour != Machine_info.Hour)*/) //

+ 62 - 13
main/yc_protocol.c

@@ -225,7 +225,7 @@ void screen_display(void)
      * happened. */
     if (bits == 3)
     {
-        // xQueueReset(screen_queue);    
+        // xQueueReset(screen_queue);
         Machine_info.left_current_Quick_refresh_time = 5; // 刷两个屏最好为慢刷
         set_screen_dis_info_and_send_queue(false, true, false, false, 100);
         set_screen_dis_info_and_send_queue(true, false, false, false, 100);
@@ -1460,8 +1460,7 @@ static void hardware_ungwpair_func(const LORA_DATA_T *buf)
 /*网关收到终端发送的数据 ACK 终端收到用于删除当前的msgid的数据*/
 static void hardware_ack_delete_msg_id(const LORA_DATA_T *buf)
 {
-
-    int msg_id = (buf->data_buf[11] >> 8) | buf->data_buf[12]; // 获取当前消息id 用于删除当前链表的数据
+    int msg_id = (buf->data_buf[11] << 8) | buf->data_buf[12]; // 获取当前消息id 用于删除当前链表的数据
     ESP_LOG_BUFFER_HEX("ACK", buf->data_buf, buf->data_len);
 
     // int current =  countNodes(Send_list);   //获取当前节点数据
@@ -1469,19 +1468,19 @@ static void hardware_ack_delete_msg_id(const LORA_DATA_T *buf)
 
     if (find != NULL)
     {
-        // printf("delete list node bofore = %d\r\n",msg_id);
+        ESP_LOGE(LOG_TAG, "find  %d", msg_id);
         // printList(Send_list);
 
-        for(int i=0;i< LORA_INFO_END;i++)
+        for (int i = 0; i < LORA_INFO_END; i++)
         {
-            if(lora_pool[i].num == msg_id)
+            if (lora_pool[i].num == msg_id)
             {
-                lora_pool[LORA_INFO_VERSION].flag = false;
+                lora_pool[i].flag = false;
                 Send_list = deleteNode(Send_list, msg_id);
-                ESP_LOGE(LOG_TAG,"delete msg_id %d",msg_id);
+                ESP_LOGE(LOG_TAG, "delete msg_id %d", msg_id);
             }
         }
-        
+
         // printf("delete list node msg_id = %d\r\n",msg_id);
 
         // printf("delete list node after = %d\r\n",msg_id);
@@ -1490,6 +1489,7 @@ static void hardware_ack_delete_msg_id(const LORA_DATA_T *buf)
     else
     {
         ESP_LOGE(LOG_TAG, "delete fail");
+        printList(Send_list);
     }
 
     // display_flag = 0;
@@ -2310,6 +2310,7 @@ void f_send_get_time(void)
 {
     if (lora_pool[LORA_INFO_GET_TIME].flag == true)
     {
+        ESP_LOGE(LOG_TAG, "%s-->return", __FUNCTION__);
         return;
     }
     uint8_t strlorabuf[200];
@@ -2356,8 +2357,9 @@ void f_send_get_time(void)
 }
 void f_send_get_chart_data(void)
 {
-        if (lora_pool[LORA_INFO_GET_CHART].flag == true)
+    if (lora_pool[LORA_INFO_GET_CHART].flag == true)
     {
+        ESP_LOGE(LOG_TAG, "%s-->return", __FUNCTION__);
         return;
     }
     ESP_LOGW(LOG_TAG, "f_send_get_chart_data");
@@ -2405,6 +2407,7 @@ void f_send_version(void)
 {
     if (lora_pool[LORA_INFO_VERSION].flag == true)
     {
+        ESP_LOGE(LOG_TAG, "%s-->return", __FUNCTION__);
         return;
     }
     ESP_LOGW(LOG_TAG, "f_send_version");
@@ -2454,6 +2457,7 @@ void f_send_lora_rssi(int rssi)
 {
     if (lora_pool[LORA_INFO_RSSI].flag == true)
     {
+        ESP_LOGE(LOG_TAG, "%s-->return", __FUNCTION__);
         return;
     }
     // ESP_LOGW(LOG_TAG,"f_send_lora_rssi:rssi = %d",rssi);
@@ -2497,11 +2501,56 @@ void f_send_lora_rssi(int rssi)
     lora_pool[LORA_INFO_RSSI].flag = true;
     Send_list = postInsert(Send_list, Machine_info.msg_id, LORA_INFO_RSSI, (char *)strlorabuf, len); // 插入数据
 }
+void f_send_test(void)
+{
+
+    // ESP_LOGW(LOG_TAG,"f_send_lora_rssi:rssi = %d",rssi);
+    uint8_t strlorabuf[200];
+
+    int crc16 = 0, i = 0, len = 0;
+
+    strlorabuf[0] = 0x5A;
+    strlorabuf[1] = 0x51; // 包头
+    strlorabuf[2] = 0x00; // 校验和
+
+    strlorabuf[3] = mac_addr[0];
+    strlorabuf[4] = mac_addr[1];
+    strlorabuf[5] = mac_addr[2];
+    strlorabuf[6] = mac_addr[3];
+    strlorabuf[7] = mac_addr[4];
+    strlorabuf[8] = mac_addr[5];
+    strlorabuf[9] = Machine_info.eflagID; // 组内编号
+    strlorabuf[10] = 0x05;                // cmd命令字
 
+    Machine_info.msg_id = allocateMsgIdNum(); // 分配ID
+
+    Machine_info.msg_id = 0x1234;
+    strlorabuf[11] = ((Machine_info.msg_id) >> 8) & 0XFF; //
+    strlorabuf[12] = ((Machine_info.msg_id) >> 0) & 0XFF; // 总包数,当前包数
+
+    strlorabuf[13] = 0x00;
+    strlorabuf[14] = 0x01; // 长度
+    strlorabuf[15] = 0xab;
+    strlorabuf[16] = 0;
+
+    crc16 = strlorabuf[0] + strlorabuf[1];
+    for (i = 3; i < 16; i++)
+        crc16 = crc16 + strlorabuf[i];
+    strlorabuf[2] = crc16 & 0xff;
+
+    changebintotxt(strlorabuf, 16);
+    // Serial.println((char *)strlorabuf);
+    strcat((char *)strlorabuf, (char *)Machine_info.cid);
+    len = strlen((char *)strlorabuf);
+    // send_lora_data(strlorabuf, len);
+    // lora_send_data((char *)strlorabuf, len);
+    Send_list = postInsert(Send_list, Machine_info.msg_id, LORA_INFO_BATT, (char *)strlorabuf, len); // 插入数据
+}
 void f_send_battary_vaule(int battry)
 {
     if (lora_pool[LORA_INFO_BATT].flag == true)
     {
+        ESP_LOGE(LOG_TAG, "%s-->return", __FUNCTION__);
         return;
     }
     uint8_t strlorabuf[200];
@@ -2543,13 +2592,13 @@ void f_send_battary_vaule(int battry)
     lora_pool[LORA_INFO_BATT].num = Machine_info.msg_id;
     lora_pool[LORA_INFO_BATT].flag = true;
     Send_list = postInsert(Send_list, Machine_info.msg_id, LORA_INFO_BATT, (char *)strlorabuf, len); // 插入数据
-
 }
 
 void f_send_reply_status(int status)
 {
     if (lora_pool[LORA_INFO_BATT].flag == true)
     {
+        ESP_LOGE(LOG_TAG, "%s-->return", __FUNCTION__);
         return;
     }
     uint8_t strlorabuf[200];
@@ -2806,9 +2855,9 @@ void f_send_status_duration(void)
 
 #else
     // printList(Send_list);
-    lora_pool[LORA_INFO_DUR].flag =true;
+    lora_pool[LORA_INFO_DUR].flag = true;
     lora_pool[LORA_INFO_DUR].num = Machine_info.msg_id;
-    Send_list = postInsert(Send_list, Machine_info.msg_id , LORA_INFO_DUR, (char *)strlorabuf, len); // 插入数据
+    Send_list = postInsert(Send_list, Machine_info.msg_id, LORA_INFO_DUR, (char *)strlorabuf, len); // 插入数据
 
 #endif
 

+ 1 - 1
main/yc_protocol.h

@@ -308,7 +308,7 @@ void f_send_lora_rssi(int rssi);
 void f_send_battary_vaule(int battry);
 void f_send_reply_status(int status);
 void f_send_get_time(void);
-
+void f_send_test(void);
 void set_status_heights(void);
 void user_compare(int last, int now);