* @Author: penglei 1624952103@qq.com\r
* @Date: 2024-06-17 14:31:08\r
* @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2025-08-18 18:37:51\r
+ * @LastEditTime: 2025-10-21 11:11:55\r
* @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
* @Description: \r
* \r
#include "gnss_ctl.h"\r
#include "NMEA0183.h"\r
static gps_data_t send_gps_data = {0};\r
+static osTimerId_t g_gps_test_timer = NULL;\r
+static uint8_t g_gps_test_flag = 0;\r
+static uint32_t g_gps_test_count = 0;\r
+static char *g_gps_tmp_buffer = NULL;\r
+static char *g_gps_time_buffer = NULL;\r
#endif\r
\r
#ifdef ENABLE_BN02\r
6);\r
}\r
\r
+#ifdef SUPPORT_GNSS\r
+void gps_test_timer_callback(void)\r
+{\r
+ if(g_gps_tmp_buffer == NULL)\r
+ {\r
+ g_gps_tmp_buffer = (char*)malloc(1024);\r
+ if(g_gps_tmp_buffer == NULL)\r
+ {\r
+ PRINT("GPS timer callback: malloc tmp buffer failed\n");\r
+ return;\r
+ }\r
+ }\r
+ \r
+ if(g_gps_time_buffer == NULL)\r
+ {\r
+ g_gps_time_buffer = (char*)malloc(10);\r
+ if(g_gps_time_buffer == NULL)\r
+ {\r
+ PRINT("GPS timer callback: malloc time buffer failed\n");\r
+ return;\r
+ }\r
+ }\r
+ \r
+ memset(g_gps_tmp_buffer, 0, 1024);\r
+ memset(g_gps_time_buffer, 0, 10);\r
+ \r
+ gps_data_t *gps_data = getPGPSGlobaldata();\r
+ if(gps_data == NULL)\r
+ {\r
+ PRINT("gps_data == NULL \n");\r
+\r
+ if(g_gps_test_timer != NULL)\r
+ {\r
+ osTimerStop(g_gps_test_timer);\r
+ osTimerDelete(g_gps_test_timer);\r
+ g_gps_test_timer = NULL;\r
+ }\r
+ gnss_stop();\r
+\r
+ if(g_gps_tmp_buffer != NULL)\r
+ {\r
+ free(g_gps_tmp_buffer);\r
+ g_gps_tmp_buffer = NULL;\r
+ }\r
+ if(g_gps_time_buffer != NULL)\r
+ {\r
+ free(g_gps_time_buffer);\r
+ g_gps_time_buffer = NULL;\r
+ }\r
+ return;\r
+ }\r
+\r
+ if (gps_data->last_gps_time_ms > 0)\r
+ {\r
+ memcpy_s(&send_gps_data, sizeof(gps_data_t), gps_data, sizeof(gps_data_t));\r
+ }\r
+ \r
+ g_gps_test_count++;\r
+ \r
+ memset_s(g_gps_tmp_buffer, 1024, 0, 1024); \r
+ dump_location_data_to_factory(&send_gps_data, g_gps_tmp_buffer, 1024);\r
+ memset_s(g_gps_time_buffer, 10, 0, 10); \r
+ sprintf_s(g_gps_time_buffer, 10, "%d", g_gps_test_count);\r
+ strcat_s(g_gps_tmp_buffer, 1024, g_gps_time_buffer);\r
+\r
+ if(g_gps_tmp_buffer != NULL)\r
+ {\r
+ uint16_t data_len = (uint16_t)strlen(g_gps_tmp_buffer);\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_GPS,\r
+ 0x01,\r
+ (uint8_t*)g_gps_tmp_buffer,\r
+ data_len);\r
+ }\r
+ \r
+ if(send_gps_data.status > 1)\r
+ {\r
+ g_gps_test_flag = 1; \r
+ }\r
+ \r
+ if(g_gps_test_flag || g_gps_test_count >= 2 * 60)\r
+ {\r
+ if(g_gps_test_timer != NULL)\r
+ {\r
+ osTimerStop(g_gps_test_timer);\r
+ osTimerDelete(g_gps_test_timer);\r
+ g_gps_test_timer = NULL;\r
+ }\r
+ \r
+\r
+ gnss_stop();\r
+\r
+ g_gps_test_flag = 0;\r
+ g_gps_test_count = 0;\r
+ \r
+\r
+ if(g_gps_tmp_buffer != NULL)\r
+ {\r
+ free(g_gps_tmp_buffer);\r
+ g_gps_tmp_buffer = NULL;\r
+ }\r
+ if(g_gps_time_buffer != NULL)\r
+ {\r
+ free(g_gps_time_buffer);\r
+ g_gps_time_buffer = NULL;\r
+ }\r
+ }\r
+}\r
+#endif\r
+\r
static uint8_t aging_start_flag = 0;\r
\r
void factorytest_start_aging_test(void)\r
if (testitem == 0x01)\r
{\r
//定位\r
- uint8_t send_data = 0;\r
- bool flag = 0;\r
- char tmp[1024]={0};\r
- char time[10]={0};\r
#ifdef SUPPORT_GNSS\r
+ g_gps_test_flag = 0;\r
+ g_gps_test_count = 0;\r
+ memset(&send_gps_data, 0, sizeof(gps_data_t));\r
+ \r
gnss_start();\r
LOS_Msleep(100);\r
- do{\r
- gps_data_t *gps_data = getPGPSGlobaldata();\r
- if(gps_data == NULL)\r
- {\r
- PRINT("gps_data == NULL \n");\r
- return;\r
- }\r
- if (gps_data->last_gps_time_ms > 0)\r
- {\r
- memcpy_s(&send_gps_data,sizeof(gps_data_t),gps_data,sizeof(gps_data_t));\r
- }\r
- if(send_gps_data.status > 1)\r
- {\r
- flag = 1;\r
- }\r
- else\r
- {\r
- LOS_Msleep(1000);\r
- send_data++;\r
- }\r
- memset_s(tmp,sizeof(tmp),0,sizeof(tmp)); \r
- dump_location_data_to_factory(&send_gps_data,tmp,sizeof(tmp));\r
- memset_s(time,sizeof(time),0,sizeof(time)); \r
- sprintf_s(time,sizeof(time),"%d",send_data);\r
- strcat_s(tmp,sizeof(tmp),time);\r
- PRINT("send_gps_data.status : %d time : %d\n",send_gps_data.status,send_data);\r
- PRINT("tmp : %s size : %d\n",tmp,strlen(tmp));\r
- factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
- BLE_TEST_CMD_SOFT_TEST_SUB_MODE_GPS,\r
- 0x01,\r
- (uint8_t*)tmp,\r
- strlen(tmp));\r
- }while(send_data <= 2 * 60 && !flag);\r
- // PRINT("定位超时 关闭GPS\n");\r
- gnss_stop();\r
+ \r
+ if(g_gps_test_timer == NULL)\r
+ {\r
+ g_gps_test_timer = osTimerNew((osTimerFunc_t)gps_test_timer_callback, osTimerPeriodic, NULL, NULL);\r
+ }\r
+ if(g_gps_test_timer != NULL)\r
+ {\r
+ osTimerStart(g_gps_test_timer, 1000); // 1秒定时\r
+ }\r
+ else\r
+ {\r
+ gnss_stop();\r
+ }\r
#endif\r
\r
} else if(testitem == 0x02)\r