修复运动数据刷新,优化cywee服务初始化 2053/1 2053/head 2059/target/1 2060/target/1
authorpenglei <1624952103@qq.com>
Thu, 7 Aug 2025 04:29:41 +0000 (12:29 +0800)
committerpenglei <1624952103@qq.com>
Thu, 7 Aug 2025 04:29:41 +0000 (12:29 +0800)
14 files changed:
code/sdk/application/brandy/brandy_standard/thread_pri_init.c
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/training_card/include/TraingCardPresenter.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/training_card/src/TraingCardPresenter.cpp
code/sdk/application/wearable/fd230/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp
code/sdk/build/config/target_config/brandy/config.py
code/sdk/drivers/chips/brandy/include/platform_core.h
code/sdk/zhihui/UI/producttest/src/testGPS.cpp
code/sdk/zhihui/drivers/cywee/dml/cywee_dml.c
code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c
code/sdk/zhihui/drivers/ppg/ppgBleService/ppgBleService.c
code/sdk/zhihui/utils/custom_fileoperate_service.c
code/sdk/zhihui/utils/custom_utils.c
code/sdk/zhihui/utils/custom_utils_at_cmd.c

index 61505be..7e6b57e 100644 (file)
@@ -526,6 +526,11 @@ static void thread_main(const void *unused)
     // custom_i2c_init(I2C_BUS_3);\r
     // custom_i2c_init(I2C_BUS_0);\r
     custom_i2c_init(I2C_BUS_2);\r
+\r
+#ifdef SUPPORT_CYWEE_SERVICE\r
+    uapi_cywee_service_init();\r
+#endif \r
+\r
 #ifdef ROTARYENCODER_MIXO\r
     uapi_mixo_service_init();\r
 #endif\r
@@ -533,10 +538,6 @@ static void thread_main(const void *unused)
     uapi_mag_service_init();\r
 #endif\r
 \r
-#ifdef SUPPORT_CYWEE_SERVICE\r
-    uapi_cywee_service_init();\r
-#endif \r
-\r
 #ifdef ENABLE_LQBP002TA\r
     uapi_lqbp_service_init();\r
 #endif \r
index f8eeea0..9be6b23 100644 (file)
@@ -2399,6 +2399,12 @@ static void sport_data_callbackProc(int data) {
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"heart_data_callbackProc::hrs = %d\n", hrs);
 #endif
   TraingModel::GetInstance()->AnalysisHeartData(hrs);
+
+  if(TraingCardPresenter::GetInstance())
+  {
+    TraingCardPresenter::GetInstance()->updataview();
+  }
+
 }
 
 static void sport_data_timer_callback(int data) {
index a5e178a..4791bc3 100644 (file)
@@ -48,7 +48,7 @@ public:
   void OnPause() override;\r
   void OnResume() override;\r
   void OnStop() override;\r
-  void OnTickEvent() override;\r
+  void OnTickEvent() override{};\r
   void Notify() override {}\r
 \r
   bool OpenSensor(ExerciseClass type);\r
@@ -60,7 +60,7 @@ public:
   void UpdateTimeOfControl();\r
   void UpdateTimeOfData();\r
   void UpdateDataView();\r
-\r
+  void updataview();\r
 /*蓝牙开启运动*/\r
 #ifdef BLE_SERVER_ENABLE\r
   bool send_sport_cmd(training_ble *cmd);\r
index dc1cb0d..393c42a 100644 (file)
@@ -41,7 +41,8 @@ extern "C" void do_cywee_service_check_msg(int cmd, int data[]);
 #define DEFAULT_DASH "--"\r
 #define DATATEST 0\r
 \r
-extern "C" {\r
+extern "C"\r
+{\r
 void StartTimer();\r
 void StopAndResetTimer();\r
 void PauseTimer();\r
@@ -52,7 +53,8 @@ void ResumeTimer();
 #ifdef SUPPORT_CYWEE_SERVICE\r
 #include "cywee_service.h"\r
 #endif\r
-namespace OHOS {\r
+namespace OHOS\r
+{\r
 \r
 REGIST_SLICE(VIEW_TRAININGCRAD, TraingCardView, TraingCardPresenter);\r
 \r
@@ -61,115 +63,139 @@ static TraingCardPresenter *g_pTraingCardPresenter = nullptr;
 \r
 TraingCardPresenter::TraingCardPresenter() { g_pTraingCardPresenter = this; }\r
 \r
-TraingCardPresenter::~TraingCardPresenter() {\r
+TraingCardPresenter::~TraingCardPresenter()\r
+{\r
   // tag_ = 0;\r
   g_pTraingCardPresenter = nullptr;\r
 }\r
 \r
-TraingCardPresenter *TraingCardPresenter::GetInstance() {\r
+TraingCardPresenter *TraingCardPresenter::GetInstance()\r
+{\r
   static TraingCardPresenter instance;\r
   return &instance;\r
 }\r
 \r
-void TraingCardPresenter::OnStart() {\r
+void TraingCardPresenter::OnStart()\r
+{\r
   Presenter<TraingCardView>::OnStart();\r
   // ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 长亮屏\r
 }\r
 \r
-void TraingCardPresenter::OnPause(void) {\r
+void TraingCardPresenter::OnPause(void)\r
+{\r
   Presenter<TraingCardView>::OnPause();\r
 }\r
 \r
-void TraingCardPresenter::OnResume(void) {\r
+void TraingCardPresenter::OnResume(void)\r
+{\r
 \r
   Presenter<TraingCardView>::OnResume();\r
 }\r
 \r
-void TraingCardPresenter::OnStop(void) {\r
+void TraingCardPresenter::OnStop(void)\r
+{\r
 \r
   Presenter<TraingCardView>::OnStop();\r
   // ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 长亮屏\r
 }\r
 \r
-bool TraingCardPresenter::OnDrag(UIView &view, const DragEvent &event) {\r
+bool TraingCardPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+{\r
   UNUSED(view);\r
   return true;\r
 }\r
 \r
 // 计时器更新timer\r
-void TraingCardPresenter::ModifiesTime() {\r
+void TraingCardPresenter::ModifiesTime()\r
+{\r
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime begin");\r
   std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
 \r
   /*灭屏状态不刷新UI*/\r
-  if (uapi_get_screen_state() == 1) {\r
+  if (uapi_get_screen_state() == 1)\r
+  {\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_get_screen_state is off");\r
     return;\r
   }\r
 \r
-  if (TimeStr.empty()) {\r
+  if (TimeStr.empty())\r
+  {\r
     WEARABLE_LOGE(\r
         WEARABLE_LOG_MODULE_APP,\r
         "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
     return;\r
   }\r
   if (TrainingControlView::GetInstance() != nullptr &&\r
-      TrainingDataView::GetInstance() != nullptr) {\r
-    if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr) {\r
+      TrainingDataView::GetInstance() != nullptr)\r
+  {\r
+    if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr)\r
+    {\r
       TrainingControlView::GetInstance()->GetTimeLabel()->SetText(\r
           TimeStr.c_str());\r
     }\r
-    if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr) {\r
+    if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr)\r
+    {\r
       TrainingDataView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
     }\r
   }\r
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime end");\r
 }\r
 \r
-//计时器\r
-void TraingCardPresenter::UpdateTimeOfControl() {\r
+// 计时器\r
+void TraingCardPresenter::UpdateTimeOfControl()\r
+{\r
   std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
-  if (TimeStr.empty()) {\r
+  if (TimeStr.empty())\r
+  {\r
     WEARABLE_LOGE(\r
         WEARABLE_LOG_MODULE_APP,\r
         "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
     return;\r
   }\r
-  if (TrainingControlView::GetInstance() != nullptr) {\r
-    if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr) {\r
+  if (TrainingControlView::GetInstance() != nullptr)\r
+  {\r
+    if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr)\r
+    {\r
       TrainingControlView::GetInstance()->GetTimeLabel()->SetText(\r
           TimeStr.c_str());\r
     }\r
   }\r
 }\r
-void TraingCardPresenter::UpdateTimeOfData() {\r
+void TraingCardPresenter::UpdateTimeOfData()\r
+{\r
   std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
-  if (TimeStr.empty()) {\r
+  if (TimeStr.empty())\r
+  {\r
     WEARABLE_LOGE(\r
         WEARABLE_LOG_MODULE_APP,\r
         "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
     return;\r
   }\r
-  if (TrainingDataView::GetInstance() != nullptr) {\r
-    if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr) {\r
+  if (TrainingDataView::GetInstance() != nullptr)\r
+  {\r
+    if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr)\r
+    {\r
       TrainingDataView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
     }\r
   }\r
 }\r
 \r
 /* --------------------------------- cywee库操作\r
- * -------------------------------- */\r
+  * -------------------------------- */\r
 /*开启cywee*/\r
-bool TraingCardPresenter::OpenSensor(ExerciseClass type) {\r
+bool TraingCardPresenter::OpenSensor(ExerciseClass type)\r
+{\r
   // 防止重复开启\r
-  if (opensensorstuats) {\r
+  if (opensensorstuats)\r
+  {\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OpenSensor is opening!!");\r
     return false;\r
   }\r
   // 根据不同的运动项目进行不同的运动\r
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingCardPresenter::OpenSensor!!");\r
 #ifdef SUPPORT_CYWEE_SERVICE\r
-  switch (type) {\r
+  switch (type)\r
+  {\r
   case ExerciseClass::NORMAL:\r
     cywee_sport_mode_change(CYWEE_SERVICE_CMD_NORMAL_MODE);\r
     break;\r
@@ -198,9 +224,11 @@ bool TraingCardPresenter::OpenSensor(ExerciseClass type) {
 }\r
 \r
 /*控制cywee*/\r
-bool TraingCardPresenter::ControlSensor(ExerciseState state) {\r
+bool TraingCardPresenter::ControlSensor(ExerciseState state)\r
+{\r
 #ifdef SUPPORT_PPG_SERVICE\r
-  switch (state) {\r
+  switch (state)\r
+  {\r
   case ExerciseState::End:\r
     // 退出进入普通模式\r
     do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE, NULL);\r
@@ -221,8 +249,10 @@ bool TraingCardPresenter::ControlSensor(ExerciseState state) {
   return true;\r
 }\r
 \r
-void TraingCardPresenter::RefreshData(SportData *sportdata) {\r
-  if (sportdata == nullptr) {\r
+void TraingCardPresenter::RefreshData(SportData *sportdata)\r
+{\r
+  if (sportdata == nullptr)\r
+  {\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sportdata is null");\r
     return;\r
   }\r
@@ -232,13 +262,16 @@ void TraingCardPresenter::RefreshData(SportData *sportdata) {
     return;\r
 \r
   std::string distanceStr;\r
-  if (sportdata->distance != 0) {\r
+  if (sportdata->distance != 0)\r
+  {\r
     double distance_km =\r
         sportdata->distance / 1000.0; // 转换为公里并保留两位小数\r
     std::stringstream ss;\r
     ss << std::fixed << std::setprecision(2) << distance_km;\r
     distanceStr = ss.str();\r
-  } else {\r
+  }\r
+  else\r
+  {\r
     distanceStr = DEFAULT_DASH;\r
   }\r
 \r
@@ -247,8 +280,8 @@ void TraingCardPresenter::RefreshData(SportData *sportdata) {
   std::string stepsStr =\r
       (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH;\r
   std::string calorieStr = (sportdata->calories != 0)\r
-                               ? std::to_string(sportdata->calories)\r
-                               : DEFAULT_DASH;\r
+                                ? std::to_string(sportdata->calories)\r
+                                : DEFAULT_DASH;\r
   // 训练强度刷新\r
   UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();\r
   // printf("intensityid %d \r\n", intensityid);\r
@@ -274,21 +307,33 @@ void TraingCardPresenter::RefreshData(SportData *sportdata) {
 }\r
 #if 1\r
 /*刷新 time 和 data */\r
-void TraingCardPresenter::OnTickEvent(void) {\r
+void TraingCardPresenter::updataview(void)\r
+{\r
   // 如果未开启训练,直接退出\r
-  if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General ||\r
-      view_ == nullptr) {\r
+  if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General)\r
+  {\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::GetInstance()->GetSportState() == ExerciseState::General ");\r
     return;\r
   }\r
 \r
-  Control_Card cardId = static_cast<Control_Card>(view_->GetCurrentPage());\r
+  if (TraingCardView::GetInstance() == nullptr)\r
+  {\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "view_ == nullptr");\r
+    return;\r
+  }\r
 \r
-  switch (cardId) {\r
-  case Control_Card::CONTROL: {\r
+  Control_Card cardId = static_cast<Control_Card>(TraingCardView::GetInstance()->GetCurrentPage());\r
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "cardId %d", (int)cardId);\r
+\r
+  switch (cardId)\r
+  {\r
+  case Control_Card::CONTROL:\r
+  {\r
     UpdateTimeOfControl(); // 更新控制界面的时间\r
     break;\r
   }\r
-  case Control_Card::DATA: {\r
+  case Control_Card::DATA:\r
+  {\r
     UpdateDataView(); // 更新训练数据视图\r
     break;\r
   }\r
@@ -297,21 +342,26 @@ void TraingCardPresenter::OnTickEvent(void) {
   }\r
 }\r
 #else\r
-void TraingCardPresenter::Notify(void) {\r
+void TraingCardPresenter::Notify(void)\r
+{\r
   // 如果未开启训练,直接退出\r
   if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General ||\r
-      view_ == nullptr) {\r
+      view_ == nullptr)\r
+  {\r
     return;\r
   }\r
 \r
   Control_Card cardId = static_cast<Control_Card>(view_->GetCurrentPage());\r
 \r
-  switch (cardId) {\r
-  case Control_Card::CONTROL: {\r
+  switch (cardId)\r
+  {\r
+  case Control_Card::CONTROL:\r
+  {\r
     UpdateTimeOfControl(); // 更新控制界面的时间\r
     break;\r
   }\r
-  case Control_Card::DATA: {\r
+  case Control_Card::DATA:\r
+  {\r
     UpdateDataView(); // 更新训练数据视图\r
     break;\r
   }\r
@@ -320,7 +370,8 @@ void TraingCardPresenter::Notify(void) {
   }\r
 }\r
 #endif\r
-void TraingCardPresenter::UpdateDataView() {\r
+void TraingCardPresenter::UpdateDataView()\r
+{\r
   // 刷新计时\r
   UpdateTimeOfData();\r
 \r
@@ -335,8 +386,9 @@ void TraingCardPresenter::UpdateDataView() {
   RefreshData(sportdata);\r
 }\r
 /* --------------------------------- 点击事件处理\r
- * --------------------------------- */\r
-bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event) {\r
+  * --------------------------------- */\r
+bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+{\r
   const std::string viewId = view.GetViewId();\r
 \r
   // 定义点击事件映射\r
@@ -344,48 +396,58 @@ bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event) {
       actionMap = {\r
           // 暂停按键\r
           {BUTTONSTOP,\r
-           [&]() {\r
-             auto currentState = TraingModel::GetInstance()->GetSportState();\r
-             if (currentState == ExerciseState::Continue ||\r
-                 currentState == ExerciseState::Start) {\r
-               handlePauseState();\r
-             } else if (currentState == ExerciseState::Pause) {\r
-               handleContinueState();\r
-             }\r
-           }},\r
+            [&]()\r
+            {\r
+              auto currentState = TraingModel::GetInstance()->GetSportState();\r
+              if (currentState == ExerciseState::Continue ||\r
+                  currentState == ExerciseState::Start)\r
+              {\r
+                handlePauseState();\r
+              }\r
+              else if (currentState == ExerciseState::Pause)\r
+              {\r
+                handleContinueState();\r
+              }\r
+            }},\r
           // 结束按键\r
           {BUTTONEND,\r
-           [&]() {\r
-             //  ControlSensor(ExerciseState::Pause);\r
-             TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true);\r
-             TraingCardView::GetInstance()->RefreshEndView();\r
-           }},\r
+            [&]()\r
+            {\r
+              //  ControlSensor(ExerciseState::Pause);\r
+              TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true);\r
+              TraingCardView::GetInstance()->RefreshEndView();\r
+            }},\r
           // 确定结束\r
-          {BUTTONEXIT, [&]() { handleEndState(); }},\r
+          {BUTTONEXIT, [&]()\r
+            { handleEndState(); }},\r
           // 返回\r
           {BUTTONBACK,\r
-           [&]() {\r
-             //  ControlSensor(ExerciseState::Continue);\r
-             TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
-           }},\r
+            [&]()\r
+            {\r
+              //  ControlSensor(ExerciseState::Continue);\r
+              TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
+            }},\r
           // 确定达到目标\r
           {BUTTONWINOK,\r
-           [&]() {\r
-             TraingCardView::GetInstance()->GetAnimator()->Stop();\r
-             TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup,\r
-                                                               false);\r
-           }},\r
+            [&]()\r
+            {\r
+              TraingCardView::GetInstance()->GetAnimator()->Stop();\r
+              TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup,\r
+                                                                false);\r
+            }},\r
           // 确定心率提醒\r
           {BUTTONNOTE,\r
-           [&]() {\r
-             TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup,\r
-                                                               false);\r
-           }},\r
+            [&]()\r
+            {\r
+              TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup,\r
+                                                                false);\r
+            }},\r
       };\r
 \r
   // 查找并执行对应的操作\r
   auto it = actionMap.find(viewId);\r
-  if (it != actionMap.end()) {\r
+  if (it != actionMap.end())\r
+  {\r
     it->second(); // 执行操作\r
     return true;\r
   }\r
@@ -397,14 +459,17 @@ bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event) {
 //   UNUSED(view);\r
 //   return;\r
 // }\r
-bool TraingCardPresenter::OnKeyAct(UIView &view, const KeyEvent &event) {\r
+bool TraingCardPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+{\r
   /*消耗按键事件*/\r
   return true;\r
 }\r
 \r
 #ifdef BLE_SERVER_ENABLE\r
-bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {\r
-  if (cmd == nullptr) {\r
+bool TraingCardPresenter::send_sport_cmd(training_ble *cmd)\r
+{\r
+  if (cmd == nullptr)\r
+  {\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "无效的运动命令 cmd 为空!");\r
     return false;\r
   }\r
@@ -415,14 +480,19 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cmdstate:%d currentState:%d",\r
                 cmdstate, currentState);\r
   int m_sportTag = 0;\r
-  switch (cmd->controlmd) {\r
+  switch (cmd->controlmd)\r
+  {\r
   case SETGOAL:\r
     // 仅在一般状态下允许设置目标\r
-    if (currentState == ExerciseState::General) {\r
-      if (cmd->sportTagType == 0) {\r
-        //训练目标->m 需要转换 km\r
+    if (currentState == ExerciseState::General)\r
+    {\r
+      if (cmd->sportTagType == 0)\r
+      {\r
+        // 训练目标->m 需要转换 km\r
         m_sportTag = cmd->sportTag / 1000;\r
-      } else {\r
+      }\r
+      else\r
+      {\r
         m_sportTag = cmd->sportTag;\r
       }\r
       TraingModel::GetInstance()->SetSportTag(\r
@@ -443,14 +513,18 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
   }\r
 \r
   // 仅在一般状态下允许开始运动\r
-  if (cmdstate == ExerciseState::Start) {\r
-    if ((currentState == ExerciseState::General)) {\r
-      if (TraingCardView::GetInstance() == nullptr) {\r
+  if (cmdstate == ExerciseState::Start)\r
+  {\r
+    if ((currentState == ExerciseState::General))\r
+    {\r
+      if (TraingCardView::GetInstance() == nullptr)\r
+      {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble 开启运动");\r
         uapi_set_screen_on_api(); // 亮屏\r
         NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD);\r
         // 设置目标类型和项目有且只有一次\r
-        switch (cmd->sportType) {\r
+        switch (cmd->sportType)\r
+        {\r
         case 0:\r
           TraingModel::GetInstance()->SetSportEvent(\r
               STR_EXERCISE_OUTDOORWALKING);\r
@@ -472,16 +546,20 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
       reply_APP_OpenSportModeCmd(true);\r
       handleStartState();\r
       return true;\r
-    } else {\r
+    }\r
+    else\r
+    {\r
 \r
       reply_APP_OpenSportModeCmd(false);\r
       // return false;\r
     }\r
   }\r
   // 仅在运动状态为开始或继续时允许暂停\r
-  if (cmdstate == ExerciseState::Pause) {\r
+  if (cmdstate == ExerciseState::Pause)\r
+  {\r
     if (currentState == ExerciseState::Start ||\r
-        currentState == ExerciseState::Continue) {\r
+        currentState == ExerciseState::Continue)\r
+    {\r
       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble 暂停运动");\r
       reply_APP_SportPasueResetCmd(TraingModel::GetInstance()->GetSportTime());\r
       handlePauseState();\r
@@ -491,7 +569,8 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
 \r
   // 仅在暂停状态下允许恢复运动\r
   if (cmdstate == ExerciseState::Continue &&\r
-      currentState == ExerciseState::Pause) {\r
+      currentState == ExerciseState::Pause)\r
+  {\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble 恢复运动");\r
     reply_APP_SportPasueResetCmd(TraingModel::GetInstance()->GetSportTime());\r
     handleContinueState();\r
@@ -501,8 +580,9 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
   // 仅在运动状态为开始、继续或暂停时允许结束运动\r
   if (cmdstate == ExerciseState::End &&\r
       (currentState == ExerciseState::Start ||\r
-       currentState == ExerciseState::Continue ||\r
-       currentState == ExerciseState::Pause)) {\r
+        currentState == ExerciseState::Continue ||\r
+        currentState == ExerciseState::Pause))\r
+  {\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble 结束运动");\r
     uint32_t sport_time = TraingModel::GetInstance()->GetSportTime();\r
     reply_APP_SportStopModeCmd(sport_time);\r
@@ -524,7 +604,8 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
 #endif\r
 \r
 /*训练结束*/\r
-void TraingCardPresenter::handleEndState() {\r
+void TraingCardPresenter::handleEndState()\r
+{\r
   TraingModel::GetInstance()->SetSportState(ExerciseState::End);\r
   ControlSensor(ExerciseState::End);\r
   uapi_set_screen_on_api(); // 亮屏\r
@@ -535,17 +616,21 @@ void TraingCardPresenter::handleEndState() {
   return;\r
 #endif\r
   // 是否达到训练目标\r
-  if (TraingModel::GetInstance()->GetMomentum()) {\r
+  if (TraingModel::GetInstance()->GetMomentum())\r
+  {\r
     // 进入训练详情\r
     NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
     NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
-  } else {\r
+  }\r
+  else\r
+  {\r
     // 进入训练记录\r
     // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD);\r
     if (TraingModel::GetInstance()->GetEntryType() == APPLIST_ENTER)\r
       NativeAbility::GetInstance().ChangeSlice(\r
           VIEW_TRAINING, TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
-    else {\r
+    else\r
+    {\r
       NativeAbility::GetInstance().ChangeSlice(\r
           VIEW_MAIN, TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
       NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
@@ -555,7 +640,8 @@ void TraingCardPresenter::handleEndState() {
 }\r
 \r
 /*训练暂停*/\r
-void TraingCardPresenter::handlePauseState() {\r
+void TraingCardPresenter::handlePauseState()\r
+{\r
   uapi_set_screen_on_api(); // 亮屏\r
   TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_RESUME);\r
   TrainingControlView::GetInstance()->GetButton()->SetImageSrc(\r
@@ -566,7 +652,8 @@ void TraingCardPresenter::handlePauseState() {
 }\r
 \r
 /*训练继续*/\r
-void TraingCardPresenter::handleContinueState() {\r
+void TraingCardPresenter::handleContinueState()\r
+{\r
   uapi_set_screen_on_api(); // 亮屏\r
   TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_PAUSE);\r
   TrainingControlView::GetInstance()->GetButton()->SetImageSrc(\r
@@ -577,7 +664,8 @@ void TraingCardPresenter::handleContinueState() {
 }\r
 \r
 /*训练开始*/\r
-void TraingCardPresenter::handleStartState() {\r
+void TraingCardPresenter::handleStartState()\r
+{\r
   ControlSensor(ExerciseState::Start);\r
   TraingModel::GetInstance()->SetSportOpenWay(true);\r
 }\r
index e4037e7..83e3c24 100644 (file)
@@ -1154,6 +1154,7 @@ namespace OHOS
             {
                 if (toggleButtonOffline->IsVisible() == false)
                 {
+                    toggleButtonOffline->SetState(uapi_dev_runtime_get_hrs_ble_status());
                     toggleButtonOffline->SetViewId("hrs_ble_switch");
                     toggleButtonOffline->SetVisible(true);
                 }
index d553a55..0e51687 100644 (file)
@@ -409,7 +409,7 @@ target = {
             'NANDFLASH_DS35X',
             'BLE_INSTRUCT',
             # 'AILPAY_SUPPORT',
-            # 'SUPPORT_FACT_SERVICE',
+            # 'SUPPORT_FACTORY_SERVICE',
             # 'MEMORY_CORRUPTION',
             
         ],
@@ -527,7 +527,7 @@ target = {
         'ROTARYENCODER_HX3507',
         'NANDFLASH_DS35X',
         # 'BLE_INSTRUCT',
-        # 'SUPPORT_FACT_SERVICE',
+        # 'SUPPORT_FACTORY_SERVICE',
     ],
     #添加自定义应用
     'ram_component': [
@@ -636,7 +636,7 @@ target = {
                     'ROTARYENCODER_U8',
                     'NANDFLASH_DS35X',
                     'BLE_INSTRUCT',
-                    'SUPPORT_FACT_SERVICE',
+                    'SUPPORT_FACTORY_SERVICE',
                     ],
                'ram_component': [
                           'audio_at_service', 
@@ -746,7 +746,7 @@ target = {
                     'TEST_GPS_UI',
                     'NANDFLASH_F35UQA',
                     #'BLE_INSTRUCT',
-                    'SUPPORT_FACT_SERVICE',
+                    'SUPPORT_FACTORY_SERVICE',
                     'PPG_GH3X2X',
                     ],
                'ram_component': [
@@ -860,7 +860,7 @@ target = {
                     'NANDFLASH_F35UQA',
                     'PPG_VC921X',
                     'ROTARYENCODER_HX3508',
-                    'SUPPORT_FACT_SERVICE',
+                    'SUPPORT_FACTORY_SERVICE',
                     # 'BLE_INSTRUCT'
                     
                     ],
@@ -980,7 +980,7 @@ target = {
             'BLE_INSTRUCT',
             'PPG_PAH8009',
             # 'AILPAY_SUPPORT',
-            'SUPPORT_FACT_SERVICE',
+            'SUPPORT_FACTORY_SERVICE',
             # 'MEMORY_CORRUPTION',
             # 'SUPPORT_GNSS',
             # 'DISABLE_UART_LOG',
@@ -994,7 +994,7 @@ target = {
                           'media_at_service', 
                           'bt_manager_at_service',
                             "ppg_sensor_pah8009",
-                        #   "ppgBleService",
+                           "ppgBleService",
                            "mag_sensor_mmc5603",
                           "vibrator",
                           "vibrator_service",
index 7479c76..ca609c5 100644 (file)
  * Maximum UART buses
  * Defined here rather than in the uart_bus_t enum, due to needing to use it for conditional compilation
  */
+#ifdef DISABLE_UART_LOG
+#define UART_BUS_MAX_NUMBER 3  // !< Max number of UARTS available
+#else
 #define UART_BUS_MAX_NUMBER 2  // !< Max number of UARTS available
-
+#endif
 #define I2C_BUS_MAX_NUMBER  4  // !< Max number of I2C available
 #define I2C_4_IRQn I2C_0_IRQN
 #define I2C_5_IRQn I2C_0_IRQN
 #define CODELOADER_UART_TX_PIN S_MGPIO33
 #define CODELOADER_UART_RX_PIN S_MGPIO34
 
+#if 0
 #define LOG_UART_BUS    UART_BUS_1
 #define LOG_UART_TX_PIN     S_MGPIO33
 #define LOG_UART_RX_PIN     S_MGPIO34
 #define CHIP_FIXED_RX_PIN S_MGPIO34
 #endif
 #endif
+#endif
+#ifdef DISABLE_UART_LOG
+
+#define SW_DEBUG_UART_BUS UART_BUS_2
+#define CHIP_FIXED_TX_PIN PIN_NONE
+#define CHIP_FIXED_RX_PIN PIN_NONE
+
+#define LOG_UART_BUS UART_BUS_2
+#define LOG_UART_TX_PIN PIN_NONE
+#define LOG_UART_RX_PIN PIN_NONE
+#else
+
+#ifndef FT_SINGLE_UART
+#define SW_DEBUG_UART_BUS UART_BUS_0
+#define CHIP_FIXED_TX_PIN S_MGPIO19
+#define CHIP_FIXED_RX_PIN S_MGPIO20
+
+#define LOG_UART_BUS UART_BUS_0
+#define LOG_UART_TX_PIN S_MGPIO19
+#define LOG_UART_RX_PIN S_MGPIO20
+
+#else
+#define SW_DEBUG_UART_BUS UART_BUS_1
+#define CHIP_FIXED_TX_PIN S_MGPIO33
+#define CHIP_FIXED_RX_PIN S_MGPIO34
+
+#define LOG_UART_BUS UART_BUS_1
+#define LOG_UART_TX_PIN S_MGPIO33
+#define LOG_UART_RX_PIN S_MGPIO34
+
+#endif
+
+
+#endif
+
 #define CHIP_FIXED_UART_BUS UART_BUS_0
 
 #define QSPI_MAX_NUMBER    3
index 02cb844..c8e77cd 100644 (file)
@@ -8,11 +8,12 @@
 #if defined(SUPPORT_GNSS)
 
 #include "NMEA0183.h"
+#include "pgnss_sample.h"
 // code/sdk/zhihui/services/gnss/inc/.h
 
 #include "producttest/include/testView.h"
 #include "producttest/include/testGPS.h"
-#include "gnss_sample.h"
+// #include "gnss_sample.h"
 #include "graphic_service.h"
 namespace OHOS
 {
@@ -142,7 +143,7 @@ namespace OHOS
     {
         if (label_1_GPS_MSG != nullptr) {
         
-            gps_data_t * gpsdata=getGPSGlobaldata();
+            gps_data_t * gpsdata=getPGPSGlobaldata();
             gps_data_t gpsd={0};
             if (gpsdata->last_gps_time_ms>0)
             {
@@ -152,7 +153,7 @@ namespace OHOS
             dump_location_data_to_buf(&gpsd,msgtmp,sizeof(msgtmp));
             label_1_GPS_MSG->SetText(msgtmp);
 
-            if (getGnssServerStat()==1)
+            if (getPGnssServerStat()==1)
             {
                 label_1_GPS_on_or_off->SetText("GPS开");
             }else{
index cc1fdb5..63733ce 100644 (file)
@@ -155,7 +155,7 @@ uint8_t cywee_get_log_flag(void)
 static void cywee_gnss_update(void)
 {
 #ifdef SUPPORT_GNSS
-    gps_data_t *gps_data = getGPSGlobaldata();
+    gps_data_t *gps_data = getPGPSGlobaldata();
     if(gps_data == NULL)
     {
         PRINT("gps_data == NULL \n");
@@ -1849,7 +1849,8 @@ int cywee_start(void)
     scl.iData[0] = 1;
     scl.iData[1] = 31010100;
 #ifdef CYWEE_MAC_ACTIVE
-    scl.iData[5] = (int)SEC_FILE_ADDR;
+    if(SEC_FILE_ADDR != NULL)
+        scl.iData[5] = (int)SEC_FILE_ADDR;
 #endif
     CWM_SettingControl(SCL_CHIP_VENDOR_CONFIG, &scl);
     //1.Init data
index ed35c71..5f8f480 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-03-13 15:08:38
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-07-28 17:37:22
+ * @LastEditTime: 2025-08-07 12:01:02
  * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
  * @Description: 
  * 
@@ -85,7 +85,7 @@ uint8_t ppg_get_hrs(void)
     hrs = pah8009_get_hrs();
 #endif
 
-    printf("ppg_get_hrs : %d\n",hrs);
+    // printf("ppg_get_hrs : %d\n",hrs);
     return hrs;
 }
 
index 9d8bce2..f6506c2 100644 (file)
@@ -11,6 +11,7 @@ extern "C" {
 \r
 #ifdef SUPPORT_BLE_SERVICE\r
 #include "bleService.h"\r
+#endif\r
 #include "bts_gatt_stru.h"\r
 #include "bts_a2dp_source.h"\r
 #include "bts_gatt_server.h"\r
@@ -62,7 +63,7 @@ static void ble_ppgtest_add_service(uint8_t server_id)
     bts_data_to_uuid_len2(BLE_UUID_PPG_BLE_SERVICE, &ppgtest_service_uuid);\r
     //只有一个服务,永远是1\r
     errcode_t ret = 0;\r
-#ifndef SUPPORT_OHOSFWK\r
+#ifndef SUPPORT_AT_OHOSFWK\r
     ret = gatts_add_service(server_id, &ppgtest_service_uuid, true);\r
     // printf("ble_ppgtest_add_service wrapper_gatts_add_service ret: 0x%x server_id = 0x%x uuid.uuid_len:%d\n", ret, server_id,ppgtest_service_uuid.uuid_len);\r
 #else\r
@@ -158,7 +159,7 @@ void ble_ppgtest_server_init(uint8_t server_id)
 {\r
     ble_ppgtest_add_service(server_id);\r
 }\r
-#endif\r
+\r
 \r
 #ifdef __cplusplus\r
 }\r
index f0c8cb1..80e942f 100644 (file)
@@ -52,7 +52,7 @@ extern "C"
 {
 #endif
 
-#ifdef SUPPORT_FACT_SERVICE
+#ifdef SUPPORT_FACTORY_SERVICE
 #include "factorytest_protocol.h"
 #endif
 #ifdef SUPPORT_CYWEE_SERVICE
@@ -63,7 +63,7 @@ extern "C"
 #include "mag_hal.h"
 #endif
 
-#ifdef SUPPORT_FACT_SERVICE
+#ifdef SUPPORT_FACTORY_SERVICE
 #include "factorytest_protocol.h"
 #endif
 
@@ -215,13 +215,13 @@ static void custom_fileoperate_service_check_task(void const *arg)
             break;
 
         case CUSTOM_FILEOPERATE_MSG_TYPE_AGING_DATA_READ:
-#ifdef SUPPORT_FACT_SERVICE
+#ifdef SUPPORT_FACTORY_SERVICE
             factorytest_read_aging_data();
 #endif
             break;
 
         case CUSTOM_FILEOPERATE_MSG_TYPE_AGING_DATA_SAVE:
-#ifdef SUPPORT_FACT_SERVICE
+#ifdef SUPPORT_FACTORY_SERVICE
             factorytest_save_aging_data();
 #endif
             break;
index cadae82..043b12d 100644 (file)
@@ -3282,6 +3282,7 @@ uint8_t DEFAULT_MAC_KEY[] = {
 #endif
 uint8_t* uapi_cywee_get_mac_key(void)
 {
+    uint8_t *data = NULL;
 #ifdef CYWEE_MAC_ACTIVE
     if(access(CYWEE_MAC_KEY_PATH, F_OK) == -1)
     {
@@ -3290,7 +3291,6 @@ uint8_t* uapi_cywee_get_mac_key(void)
     // uapi_get_file_data(CYWEE_MAC_KEY_PATH,key_data,len);
     FILE *file;
     uint16_t fileSize;
-    uint8_t *data = NULL;
     file = fopen(CYWEE_MAC_KEY_PATH, "rb"); 
     if (file == NULL) 
     {
@@ -3315,9 +3315,8 @@ uint8_t* uapi_cywee_get_mac_key(void)
         return NULL;
     }
     fclose(file);
-    return data;
 #endif
-    return NULL;
+    return data;
 }
 
 void uapi_get_a5133_rxdata(uint8_t *databuf,uint8_t len)
index 16881da..a41573d 100644 (file)
@@ -19,6 +19,7 @@
 
 #ifdef SUPPORT_BATTERY_SERVICE
 #include "battery_hal.h"
+#include "battery_service.h"
 #endif
 
 
@@ -28,7 +29,7 @@
 #include "Bluetooyhpabpserver.h"
 
 #include "dial_sos_c.h"
-#include "battery_service.h"
+
 #endif
 // #include "msg_center_customerC.h"
 #ifdef SUPPORT_A5133_SERVICE
 #include "cywee_service.h"
 #endif
 
+#ifdef SUPPORT_PPG_SERVICE
+#include "ppg_hal.h"
+#endif
+
 #define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0]))
 #define CUSTOM_UTILS_MAX_ARGC            8
 #define CUSTOM_UTILS_MAX_ARGV_LEN        256
@@ -333,9 +338,10 @@ static uint32_t custom_get_ppg_id(uint8_t *para, uint32_t paraLen, char *strComm
 {
 
     UNUSED(strCommonCmd);
-    uint8_t chip_id = 0;
-    // uapi_ppg_get_id(&chip_id);
+#ifdef SUPPORT_PPG_SERVICE
+    uint8_t chip_id = ppg_get_chip_id();
     wstp_print("ppg_id[%x]\n",chip_id);
+#endif
     return ERRCODE_SUCC;
 }