睡眠:增加睡眠数据判断
authorCaisking <3449750381@qq.com>
Mon, 25 Nov 2024 03:24:51 +0000 (11:24 +0800)
committerCaisking <3449750381@qq.com>
Mon, 25 Nov 2024 03:24:51 +0000 (11:24 +0800)
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index d0db63d..89cdf29 100644 (file)
@@ -603,7 +603,7 @@ void HeartModel::handleHighHeartRate() {
 // 设置佩戴状态\r
 void HeartModel::SetWearStatus() {\r
 \r
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "佩戴状态 %d %d",\r
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "佩戴状态 %d %d",\r
                 uapi_dev_runtime_get_heartrate_detect_status(),\r
                 unwear_counter_);\r
 \r
index d1765d5..80a4ae0 100644 (file)
@@ -25,72 +25,80 @@ SleepView::~SleepView() {
   g_pSleepView = nullptr;
 }
 
-void SleepView::SleepDataRefresh() {
-  // 获取睡眠数据内存
-  SleepModel &sleepModel = SleepModel::GetInstance();
-  sleepModel.ReInitData();
-
-  int sleep_hour = sleepModel.get_sleep_hour();
-  int sleep_min = sleepModel.get_sleep_min();
-  int total_sleep = sleepModel.get_sleep_total();
-  int sleep_goal = sleepModel.get_sleep_goal();
-
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                "SleepDataRefresh %d %d sleep_goal:%d total_sleep:%d",
-                sleep_hour, sleep_min, sleep_goal * 60, total_sleep);
-
-  // 补零操作
-  std::string hour_str = (sleep_hour < 10) ? "0" + std::to_string(sleep_hour)
-                                           : std::to_string(sleep_hour);
-  std::string min_str = (sleep_min < 10) ? "0" + std::to_string(sleep_min)
-                                         : std::to_string(sleep_min);
-
-  // 有数据才刷新
-  if (sleep_hour != 0 || sleep_min != 0) {
-    // 更新时间显示
-    if (time_hour != nullptr) {
-      time_hour->SetText(hour_str.c_str());
-    }
-    if (time_minute != nullptr) {
-      time_minute->SetText(min_str.c_str());
-    }
-
-    // 计算进度百分比,确保目标睡眠时间不为零
-    float progress_value = 0.0f;
-    if (sleep_goal > 0) {
-      progress_value =
-          static_cast<float>(total_sleep) / (sleep_goal * 60); // 计算进度
-    }
-
-    // 日志输出进度百分比
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Progress value: %.2f%%",
-                  progress_value * 100); // 显示为百分比
-
-    // 更新进度条
-    circleProgress_->SetValue(progress_value *
-                              100); // 更新进度条值,范围为 0 到 100
-    circleProgress_->SetCapType(CAP_ROUND);
-  }
-  // 更新时间
-  if (sleep_update_time != nullptr) {
-    std::string update_time = sleepModel.GetUpdateSleepTime();
-    if (!update_time.empty()) // 检查返回值是否有效
-    {
-      std::string update_time_str;
-          // TODO:多国语言
-        if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {
-        update_time_str = update_time + " 更新";
-      }
-      else {
-        update_time_str = update_time + " update";
-      }
-      sleep_update_time->SetText(update_time_str.c_str());
-      // UpdateLabel(sleep_update_time, sleep_goal, STR_SLEEPMGOAL); // TODO:
-      // 多国语言支持
-    }
-  }
-  // 刷新视图
-  RootView::GetInstance()->Invalidate();
+void SleepView::SleepDataRefresh() {  
+  // 获取睡眠数据内存  
+  SleepModel &sleepModel = SleepModel::GetInstance();  
+  sleepModel.ReInitData();  
+
+  int sleep_hour = sleepModel.get_sleep_hour();  
+  int sleep_min = sleepModel.get_sleep_min();  
+  int total_sleep = sleepModel.get_sleep_total();  
+  int sleep_goal = sleepModel.get_sleep_goal();  
+
+  // 检查是否超过24小时  
+  if (sleep_hour >= 24) {  
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "异常:睡眠时长超过24小时");  
+    return; 
+  }  
+
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,  
+                "SleepDataRefresh %d %d sleep_goal:%d total_sleep:%d",  
+                sleep_hour, sleep_min, sleep_goal * 60, total_sleep);  
+
+  // 补零操作  
+  std::string hour_str = (sleep_hour < 10) ? "0" + std::to_string(sleep_hour)  
+                                           : std::to_string(sleep_hour);  
+  std::string min_str = (sleep_min < 10) ? "0" + std::to_string(sleep_min)  
+                                         : std::to_string(sleep_min);  
+
+  // 有数据才刷新  
+  if (sleep_hour != 0 || sleep_min != 0) {  
+    // 更新时间显示  
+    if (time_hour != nullptr) {  
+      time_hour->SetText(hour_str.c_str());  
+    }  
+    if (time_minute != nullptr) {  
+      time_minute->SetText(min_str.c_str());  
+    }  
+
+    // 计算进度百分比,确保目标睡眠时间不为零  
+    float progress_value = 0.0f;  
+    if (sleep_goal > 0) {  
+      progress_value =  
+          static_cast<float>(total_sleep) / (sleep_goal * 60); // 计算进度  
+    }  
+
+    // 日志输出进度百分比  
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Progress value: %.2f%%",  
+                  progress_value * 100); // 显示为百分比  
+
+    // 更新进度条  
+    circleProgress_->SetValue(progress_value *  
+                              100); // 更新进度条值,范围为 0 到 100  
+    circleProgress_->SetCapType(CAP_ROUND);  
+  }  
+  
+  // 更新时间  
+  if (sleep_update_time != nullptr) {  
+    std::string update_time = sleepModel.GetUpdateSleepTime();  
+    if (!update_time.empty()) // 检查返回值是否有效  
+    {  
+      std::string update_time_str;  
+      // TODO:多国语言  
+      if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {  
+        update_time_str = update_time + " 更新";  
+      }  
+      else {  
+        update_time_str = update_time + " update";  
+      }  
+      sleep_update_time->SetText(update_time_str.c_str());  
+      // UpdateLabel(sleep_update_time, sleep_goal, STR_SLEEPMGOAL); // TODO:  
+      // 多国语言支持  
+    }  
+  }  
+  
+  // 刷新视图  
+  RootView::GetInstance()->Invalidate();  
 }
 
 void SleepView::ClearAll() {
index 52851c7..10326b1 100644 (file)
@@ -129,6 +129,9 @@ static void Training_Notify(void *args, const Topic topic, Request *request) {
                     "memcpy_s cywee_activity_result_t fail  ret = %d", rets);
       return;
     }
+    // GraphicService::GetInstance()->PostGraphicEvent(
+    // std::bind(&TraingCardPresenter::send_sport_cmd,
+    //           TraingCardPresenter::GetInstance(), traingbleInfo));
     TraingCardPresenter::GetInstance()->send_sport_cmd(traingbleInfo);
     delete traingbleInfo;
   }
@@ -605,7 +608,7 @@ void TraingModel::SetTimestamp() {
     // 设置训练 runtime 为 1 训练中
     uapi_dev_runtime_set_train_status(1);
     if (Openingway) {
-      uapi_ble_connect_param_update(10);
+      // uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH);
     }
 
     // 更新用户数据
@@ -647,7 +650,7 @@ void TraingModel::SetTimestamp() {
     // 设置训练 runtime 为 0 训练结束
     uapi_dev_runtime_set_train_status(0);
     if (Openingway) {
-      uapi_ble_connect_param_update(50);
+      // uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW);
     }
 
     sportdata->endtime = time;
index 4416121..58526bb 100644 (file)
@@ -413,6 +413,7 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
   if (cmdstate == ExerciseState::Start) {\r
     if ((currentState == ExerciseState::General)) {\r
       if (TraingCardView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ble 开启运动");\r
         uapi_set_screen_on_api(); // 亮屏\r
         NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD);\r
         // 设置目标类型和项目有且只有一次\r
@@ -439,6 +440,7 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
       handleStartState();\r
       return true;\r
     } else {\r
+      \r
       reply_APP_OpenSportModeCmd(false);\r
       // return false;\r
     }\r
@@ -447,6 +449,7 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
   if (cmdstate == ExerciseState::Pause) {\r
     if (currentState == ExerciseState::Start ||\r
         currentState == ExerciseState::Continue) {\r
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ble 暂停运动");\r
       reply_APP_SportPasueResetCmd(TraingModel::GetInstance()->GetSportTime());\r
       handlePauseState();\r
       return true;\r
@@ -456,6 +459,7 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
   // 仅在暂停状态下允许恢复运动\r
   if (cmdstate == ExerciseState::Continue &&\r
       currentState == ExerciseState::Pause) {\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ble 恢复运动");\r
     reply_APP_SportPasueResetCmd(TraingModel::GetInstance()->GetSportTime());\r
     handleContinueState();\r
     return true;\r
@@ -466,6 +470,7 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {
       (currentState == ExerciseState::Start ||\r
        currentState == ExerciseState::Continue ||\r
        currentState == ExerciseState::Pause)) {\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ble 结束运动");\r
     uint32_t sport_time = TraingModel::GetInstance()->GetSportTime();\r
     reply_APP_SportStopModeCmd(sport_time);\r
     handleEndState();\r
index 444ffe5..65b56fd 100644 (file)
@@ -424,7 +424,7 @@ void send_big_data(ble_data_type type,char *data, uint16 datalen)
     buf = ym_malloc(17 + datalen + 1); \r
     memset_s(buf,ble_nus_max_data_len,0,17 + datalen + 1);\r
     if (buf == NULL && datalen!=0) {\r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"内存分配失败\n");\r
+          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"内存分配失败\n");\r
         return;\r
     }\r
     if(type.Packet_id>=2)\r
@@ -536,7 +536,7 @@ void sendtraningstatedata(uint8_t state ,uint16_t time)
     uint32_t data_len=3;\r
     data[0]=state;\r
     memcpy(&data[1],&time,2);\r
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"发送训练状态数据%d %d\r\n",data[0],time);\r
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"发送训练状态数据%d %d\r\n",data[0],time);\r
     ble_data_type type={0x05,0x50,data_len,1,1};\r
     send_big_data(type,data,data_len);\r
     \r
@@ -548,7 +548,7 @@ void sendtraningstateend(void)
     char data[1]={0};\r
     uint32_t data_len=1;\r
     data[0]=0;  //[0 结束]\r
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"发送训练状态结束%d\r\n",data[0]);\r
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"发送训练状态结束%d\r\n",data[0]);\r
     \r
     ble_data_type type={0x05,0x51,data_len,1,1};\r
     send_big_data(type,data,data_len);\r
@@ -4361,7 +4361,7 @@ static void OpenSportModeCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *to
     {\r
         training_ble_data.sportType= data[0];//运动类型 0 健走 1跑步 2骑行 3\r
         training_ble_data.controlmd= START;\r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开启指定运动%d\r\n",data[0]);\r
+          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"开启指定运动%d\r\n",data[0]);\r
         CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,sizeof(training_ble));\r
 \r
         // value[17] = 1; //1 操作成功 2 操作失败\r
@@ -4382,7 +4382,7 @@ void reply_APP_SportStopModeCmd(uint16_t time)
     uint32_t data_len=3;\r
     data[0]=1;\r
     memcpy(&data[1],&time,2);\r
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"发送训练状态数据%d %d\r\n",data[0],time);\r
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"发送训练状态数据%d %d\r\n",data[0],time);\r
     ble_data_type type={0x01,0x0B,data_len,1,1};\r
     send_big_data(type,data,data_len);\r
 }\r
@@ -4405,7 +4405,7 @@ static void StopSportModeCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *to
        \r
         training_ble_data.sportType= 4;//运动类型 0 健走 1跑步 2骑行 3\r
         training_ble_data.controlmd= END;\r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束运动\r\n");\r
+          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"结束运动\r\n");\r
 \r
         CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,sizeof(training_ble));\r
         // value[17] = 1; //1 操作成功 2 操作失败\r