GPS gnss优化 3335/target/2 3336/1 3336/head
authorluozheng <1732036298@qq.com>
Tue, 7 Apr 2026 06:40:34 +0000 (14:40 +0800)
committerluozheng <1732036298@qq.com>
Tue, 7 Apr 2026 06:40:34 +0000 (14:40 +0800)
code/sdk/application/wearable/fd272/nativeapp/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/traing/src/TraingNomalPresenter.cpp
code/sdk/zhihui/services/gnss/sample/pgnss_sample/pgnss_sample.c

index 4d49fb9..9dfe12d 100644 (file)
@@ -884,8 +884,8 @@ void TraingModel::SetSportdata(SportData *data) {
      Startstate = false;
      Endstate = true;
  
-     stop_heart_gps();  // 停止心率和gps数据采集
      gnss_stop_timer(); // 停止gps定时器
+     stop_heart_gps();  // 停止心率和gps数据采集
  
  #if 0
         // 重置训练目标 [发生在训练前]
index 53a5a3a..23d9e2b 100644 (file)
@@ -160,12 +160,12 @@ namespace OHOS
     // 清理GPS和心率相关资源
     void TraingNomalPresenter::CleanupGPSResources()
     {
-        // 关闭心率
-        TraingModel::GetInstance()->stop_heart_gps();
         #if defined(SUPPORT_GNSS)
         // 关闭gps定时器
         TraingModel::GetInstance()->gnss_stop_timer();
         #endif
+        // 关闭心率
+        TraingModel::GetInstance()->stop_heart_gps();
     }
 
     // 启动运动相关资源
index d8c583c..ac30715 100644 (file)
@@ -683,9 +683,6 @@ static void ListenGnssData(tiot_handle handle)
  */
 static void do_gps_stop_cleanup(void)
 {
-    // 设置停止标志
-    g_pgnss_stopflag = 1;
-    
     // 如果当前正在下载星历,关闭下载服务
     printf("PGnssServerStop: Checking and stopping AGNSS download service...\r\n");
     uapi_gnss_http_server_deinit();
@@ -726,7 +723,9 @@ static void gps_stop_wait_timer_callback(int data)
         }
         
         // 执行清理工作
-        do_gps_stop_cleanup();
+        // do_gps_stop_cleanup();
+        // 设置停止标志
+        g_pgnss_stopflag = 1;
         g_stop_wait_count = 0;
         return;
     }
@@ -749,7 +748,10 @@ static void gps_stop_wait_timer_callback(int data)
         }
         
         // 强制执行清理工作
+
         do_gps_stop_cleanup();
+        // 设置停止标志
+        g_pgnss_stopflag = 1;
         g_stop_wait_count = 0;
     }
 }
@@ -767,7 +769,9 @@ void PGnssServerStop(void)
     // 如果数据监听已经停止,直接执行清理
     if (g_is_listening_data == 1) {
         printf("PGnssServerStop: Data listening already stopped, executing cleanup immediately\r\n");
-        do_gps_stop_cleanup();
+        // do_gps_stop_cleanup();
+        // 设置停止标志
+        g_pgnss_stopflag = 1;
         return;
     }
     
@@ -786,7 +790,9 @@ void PGnssServerStop(void)
                                     osTimerPeriodic, NULL, NULL);
     if (g_stop_wait_timer == NULL) {
         printf("PGnssServerStop: Failed to create wait timer, executing cleanup immediately\r\n");
-        do_gps_stop_cleanup();
+        // do_gps_stop_cleanup();
+        // 设置停止标志
+        g_pgnss_stopflag = 1;
         return;
     }
     
@@ -797,7 +803,9 @@ void PGnssServerStop(void)
         printf("PGnssServerStop: Failed to start wait timer (ret=%d), executing cleanup immediately\r\n", ret);
         osTimerDelete(g_stop_wait_timer);
         g_stop_wait_timer = NULL;
-        do_gps_stop_cleanup();
+        // do_gps_stop_cleanup();
+        // 设置停止标志
+        g_pgnss_stopflag = 1;
         return;
     }
     
@@ -1486,6 +1494,8 @@ void PGnssServerStart(void)
 #endif
     printf("finish gnss samples\r\n");
 
+    do_gps_stop_cleanup();
+    // 设置停止标志
     // 释放pgnss_log内存
     // if (pgnss_log != NULL) {
     //     printf("pgnss_log:%s\r\n",pgnss_log);