*/\r
#include "pgnss_sample.h"\r
#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
#include "securec.h"\r
#include "tiot_service_interface.h"\r
#include "pm_definition.h"\r
static int g_is_pgnss_logon=0;\r
static int g_pgnss_stopflag=0;\r
\r
+static char *pgnss_log = NULL;\r
+\r
static int32_t QryVersion(tiot_handle handle)\r
{\r
const uint8_t qryVersion[] = {0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00};\r
if (decode_nmea(pbuf[index])==1)\r
{\r
// dump_location_data(&g_global_gpsData);\r
+ char temp_buf[512];\r
+ dump_location_data_to_buf(&g_global_gpsData, temp_buf, sizeof(temp_buf));\r
+ \r
+ // 追加到pgnss_log中\r
+ if (pgnss_log != NULL) {\r
+ int current_len = strlen(pgnss_log);\r
+ int data_len = strlen(temp_buf);\r
+ if (current_len + data_len < 2047) { // 留1字节给字符串结束符\r
+ // strcat(pgnss_log, temp_buf);\r
+ snprintf(pgnss_log + current_len, 2048 - current_len, "%s", temp_buf);\r
+ }\r
+ }\r
+ \r
printf("decode_nmea done\r\n");\r
}\r
}\r
void PGnssServerStart(void)\r
{\r
printf("\nenter gnss samples\r\n");\r
+ \r
+ if (pgnss_log == NULL) \r
+ {\r
+ pgnss_log = (char *)malloc(2048);\r
+ if (pgnss_log == NULL) {\r
+ printf("error: malloc pgnss_log failed!\n");\r
+ return;\r
+ }\r
+ memset(pgnss_log, 0, 2048);\r
+ }\r
+\r
if(g_is_pgnss_poweron == 1)\r
{\r
printf("gnss already on\r\n");\r
+ if (pgnss_log != NULL) {\r
+ free(pgnss_log);\r
+ pgnss_log = NULL;\r
+ }\r
return ;\r
}\r
uapi_pm_add_sleep_veto(PM_ID_SYS);\r
printf("tiot service init fail\r\n");\r
g_is_pgnss_poweron = 0;\r
g_pgnss_stopflag = 1;\r
+ if (pgnss_log != NULL) {\r
+ free(pgnss_log);\r
+ pgnss_log = NULL;\r
+ }\r
+ return;\r
}\r
\r
// 打开日志文件\r
g_gnssLogFp = fopen("/user/log/gnss.log", "w");\r
if (g_gnssLogFp == NULL) {\r
printf("error: open log file error\n");\r
+ if (pgnss_log != NULL) {\r
+ free(pgnss_log);\r
+ pgnss_log = NULL;\r
+ }\r
return;\r
}\r
}\r
printf("open tiot service fail\r\n");\r
g_is_pgnss_poweron = 0;\r
g_pgnss_stopflag = 1;\r
+ if (pgnss_log != NULL) {\r
+ free(pgnss_log);\r
+ pgnss_log = NULL;\r
+ }\r
return;\r
}\r
printf("open tiot service success\r\n");\r
sw_debug_uart_deinit();\r
uart_config_init();\r
printf("finish gnss samples\r\n");\r
+ \r
+ printf("pgnss_log: %s\r\n", pgnss_log);\r
+ // 释放pgnss_log内存\r
+ if (pgnss_log != NULL) {\r
+ free(pgnss_log);\r
+ pgnss_log = NULL;\r
+ }\r
}\r