优化蓝牙产测,修改读取RTC,读取SN,
authorpenglei <1624952103@qq.com>
Tue, 2 Apr 2024 12:26:58 +0000 (20:26 +0800)
committerpenglei <1624952103@qq.com>
Tue, 2 Apr 2024 12:26:58 +0000 (20:26 +0800)
code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c
code/sdk/application/wstp/at_service/app/app_common_api.c

index 648b1cc..658ff94 100644 (file)
@@ -498,18 +498,52 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             } else if(testitem == 0x02)\r
             {\r
                 //获取RTC\r
-                char send_data[64] = {0};\r
-                get_system_time(&send_data[1]);\r
-                uint16_t datalen = strlen(&send_data[1]);\r
-                for(int i = 0; i < datalen + 1 ; i++)\r
-                    PRINT("timebuf : %s \r\n",send_data[i]);\r
+                char time_data[64] = {0};\r
+                uint8_t send_data1[20] = {0};\r
+                uint8_t send_data2[7] = {0};\r
+                uint8_t time_stamp[5] = {0};\r
+\r
+                uint32_t msc = 0;\r
+\r
+                uint8_t i = 0;\r
+                get_system_time(time_data);\r
+                uint8_t len = strlen(time_data);\r
+                //1970-01-01 00:00:26\r
+                PRINT("time_data : %s , len : %d\r\n",time_data,len);\r
+\r
+                for (int j = 0; j < len; j ++) \r
+                {\r
+                    if(time_data[j] >= '0' && time_data[j] <= '9' ) \r
+                    {\r
+                        send_data1[i++] = (time_data[j] - '0');\r
+                    }\r
+                }\r
+                \r
+                i = 0;\r
+                for(int j = 0; j < 14 ; j+=2)\r
+                {\r
+                    send_data2[i++] = send_data1[j] * 10 + send_data1[j+1];\r
+                }\r
+\r
+                msc = ((((send_data2[0] * 100 + send_data2[1] - 1970) * 365 \r
+                + (send_data2[2] -1)* 30 + (send_data2[3] - 1) ) * 24 \r
+                + send_data2[4]) * 60 + send_data2[5]) * 60 \r
+                + send_data2[6];\r
+\r
+                time_stamp[1] = (uint8_t)((msc & 0XFF000000) >> 24);\r
+                time_stamp[2] = (uint8_t)((msc & 0X00FF0000) >> 16);\r
+                time_stamp[3] = (uint8_t)((msc & 0X0000FF00) >> 8);\r
+                time_stamp[4] = (uint8_t)((msc & 0X000000FF) >> 0);\r
+\r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                         BLE_TEST_CMD_SOFT_TEST_SUB_MODE_RTC,\r
                         0x02,\r
-                        &send_data,\r
-                        datalen+1);\r
+                        time_stamp,\r
+                        5);\r
             }\r
 \r
+            break;\r
+\r
         case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CUSTOM_CMD:\r
             if(testitem == 0x01)\r
             {\r
@@ -527,14 +561,16 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             {\r
                 //读SN\r
                 uint8_t send_data[64] = {0};\r
-                uint32_t datalen;\r
+                uint32_t datalen = 63;\r
                 zh_get_sn(&send_data[1],&datalen);\r
-\r
+                PRINT("len : %d \r\n",datalen);\r
+                for(int i = 0; i < datalen; i++)\r
+                    PRINT("send_data[%d] : %X \r\n",i,send_data[i]);\r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                         BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CUSTOM_CMD,\r
                         0x02,\r
                         send_data,\r
-                        datalen+1);\r
+                        datalen);\r
             } else if(testitem == 0x11)\r
             {\r
                 uint8_t i;\r
@@ -1118,7 +1154,6 @@ errcode_t factorytest_protocol_decode(uint8_t *buf, uint16_t event_size)
                     \r
                     //  主模式ID  生产软件      0x02\r
                     case BLE_TEST_CMD_MODE_SOFT_TEST:\r
-                        PRINT("111\r\n");\r
                         factorytest_protocol_soft_test_decode(header.submod,header.testitem,\r
                                         buf+1+2+1+1+1,\r
                                         header.len);\r
index 626ab26..597d1ff 100755 (executable)
@@ -197,12 +197,20 @@ uint32_t get_system_time(char *timedata)
         wstp_print("%s", timebuf);
     }
 
-    memcmp(timedata,&timebuf,strlen(&timebuf));
+    sprintf(timedata,"%s",timebuf);
 
     uint32_t millisec = tv.tv_usec / USEC_TO_MILLI;
     wstp_print(":%03d\n", millisec);
 
-    timedata = strcat(timedata,&millisec);
+    // char millisecdata[4] = {0};
+    // millisecdata[0] = (char)((millisec & 0XFF000000)>> 24);
+    // millisecdata[1] = (char)((millisec & 0X00FF0000)>> 16);
+    // millisecdata[2] = (char)((millisec & 0X0000FF00)>> 8);
+    // millisecdata[3] = (char)((millisec & 0X000000FF)>> 0);
+
+    // PRINT("mil %d %d %d %d \r\n",millisecdata[0],millisecdata[1],millisecdata[2],millisecdata[3]);
+
+    // sprintf(timedata,"%s%s",timebuf,millisecdata);
 
     return ERRCODE_SUCC;
 }