更新表盘数据model 距离 卡路里 更新
authorCaisking <3449750381@qq.com>
Fri, 2 Aug 2024 06:54:47 +0000 (14:54 +0800)
committerCaisking <3449750381@qq.com>
Fri, 2 Aug 2024 06:54:47 +0000 (14:54 +0800)
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialDataBase.h
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelCalorie.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelDistance.h
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelCalorie.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelDistance.cpp
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp

index 246a612..b738edc 100644 (file)
@@ -160,6 +160,8 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelPowerStandby.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelCharge.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelSPO2.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelDistance.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelCalorie.cpp
 
     #exception handling
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/CheckAbnormalView.cpp
index d8e4769..914dc80 100644 (file)
@@ -1,3 +1,9 @@
+/***
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-31 17:52:21
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialDataBase.h
+ */
 /***
  * @Date: 2024-04-15 10:55:58
  * @LastEditors: Caisking 3449750381@qq.com
@@ -18,9 +24,9 @@
 enum class DialDataType
 {
     DATA_TYPE_FLOAT_BASE = 0,
-    DATA_TYPE_STEPS,          // 步数
+    DATA_TYPE_STEPS,          // 运动步数
     DATA_TYPE_HEART_RATE,     // 心率
-    DATA_TYPE_CALORIE,        // 卡路里
+    DATA_TYPE_CALORIE,        // 运动卡路里
     DATA_TYPE_TEMPERATURE,    // 温度
     DATA_TYPE_PM25,           // PM2.5
     DATA_TYPE_PRESSURE,       // 压力
@@ -41,7 +47,7 @@ enum class DialDataType
     DATA_TYPE_CHARGE,        // 充电状态
     DATA_TYPE_DIALPATH,      // 表盘路径
     DATA_TYPE_SPO2,          // 血氧
-    DATA_TYPE_DISTANCE,      // 距离
+    DATA_TYPE_DISTANCE,      // è¿\90å\8a¨è·\9d离
     DATA_TYPE_WEATHER,       // 天气
     DATA_TYPE_POWER_STANDBY, // 备用电量数据类型
 
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelCalorie.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelCalorie.h
new file mode 100644 (file)
index 0000000..076ef59
--- /dev/null
@@ -0,0 +1,39 @@
+/***
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-31 18:20:02
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelCalorie.h
+ */
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelCalorie
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_MODEL_Calorie_H
+#define DIAL_MODEL_Calorie_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS
+{
+    class DialModelCalorie : public DialBaseModel
+    {
+    public:
+        DialModelCalorie() {}
+        virtual ~DialModelCalorie() {}
+        static DialModelCalorie *GetInstance()
+        {
+            static DialModelCalorie instance;
+            return &instance;
+        }
+        bool GetDialFloatData(DialDataType &type, float &out) override;
+        void UpdateCalorie(int16_t Calorie);
+        int GetCalorieData(void);
+
+    private:
+        float calorie_ = 0; // 67.0: default Calorie value as reference
+    };
+}
+#endif
index a464b1b..4a7500a 100644 (file)
@@ -1,3 +1,9 @@
+/*** 
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-31 18:20:02
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelDistance.h
+ */
 /*
  * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
  * Description: DialModelDistance
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelCalorie.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelCalorie.cpp
new file mode 100644 (file)
index 0000000..3df18dc
--- /dev/null
@@ -0,0 +1,38 @@
+/*** 
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-31 18:36:06
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelCalorie.cpp
+ */
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelCalorie
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "RegisterDialModel.h"
+#include "DialModelCalorie.h"
+#include "wearable_log.h"
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_CALORIE, OHOS::DialModelCalorie::GetInstance());
+
+namespace OHOS
+{
+    bool DialModelCalorie::GetDialFloatData(DialDataType &type, float &out)
+    {
+        (void)type;
+        out = calorie_;
+        //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialModelCalorie %d", calorie_);
+        return true;
+    }
+
+    void DialModelCalorie::UpdateCalorie(int16_t calorie)
+    {
+        //更新表盘卡路里数据
+        calorie_ = static_cast<float>(calorie);
+        if (onChangeListener_ != nullptr)
+        {
+            onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_CALORIE, calorie_);
+        }
+    }
+}
index 0b69c57..66eb104 100644 (file)
@@ -1,3 +1,9 @@
+/***
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-31 20:19:35
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelDistance.cpp
+ */
 /*
  * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
  * Description: DialModelDistance
@@ -16,15 +22,18 @@ namespace OHOS
     {
         (void)type;
         out = distance_;
-        //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialModelDistance %d", distance_);
+        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialModelDistance %d", distance_);
         return true;
     }
 
     void DialModelDistance::UpdateDistance(int16_t distance)
     {
-        distance_ = static_cast<float>(distance);
+        // 将距离从米(m)转换为公里(km)并保留一位小数
+        distance_ = static_cast<float>(distance) / 1000.0f; // 假设 distance 米
+
         if (onChangeListener_ != nullptr)
         {
+            // 通知改变监听器更新距离数据
             onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_DISTANCE, distance_);
         }
     }
index c15164e..f683566 100644 (file)
@@ -47,6 +47,8 @@
 #include "DialModelCharge.h"
 #include "DialModelHeartRate.h"
 #include "DialModelSPO2.h"
+#include "DialModelDistance.h"
+#include "DialModelCalorie.h"
 #include "BloodOxygenModel.h"
 #include "HeartModel.h"
 #include "SaveEleModel.h"
@@ -59,6 +61,8 @@
 #include "goalother.h"
 
 #include "heart_blood/health_service/health_service.h"
+
+#define DIALDATASET 1
 //#include "Systemupgrade.h"
 namespace OHOS {
 
@@ -348,7 +352,9 @@ void MsgCenterNotifyChargePlugProc(const Topic topic, Request* req)
     {
         display_api->turn_on_screen();
     }
+#if DIALDATASET
     DialModelCharge::GetInstance()->UpdateChargeStuaut(1);
+#endif
     SaveEleModel::GetInstance()->SetChargeStuaut(1);
 
    
@@ -372,7 +378,9 @@ void MsgCenterNotifyChargeUnPlugProc(const Topic topic, Request* req)
     unused(req);
     unused(topic);
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "MsgCenterNotifyProc:: CHarger UnPlug !");
+#if DIALDATASET
     DialModelCharge::GetInstance()->UpdateChargeStuaut(0);
+#endif
     SaveEleModel::GetInstance()->SetChargeStuaut(0);
 
    
@@ -479,12 +487,11 @@ void MsgCenterNotifyNextDayProc(const Topic topic, Request* req)
         //未设置睡眠监控 nextday进行清除睡眠数据。
         SleepModel::GetInstance().DeleteSleepData();
     }
-
     //清空当日的健康数据
-    if(!HealthService::GetInstance()->CleanHealthData())
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CleanHealthData fail!");
-    }
+    // if(!HealthService::GetInstance()->CleanHealthData())
+    // {
+    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CleanHealthData fail!");
+    // }
 #endif
 }
 
@@ -641,7 +648,9 @@ void MsgCenterNotifySPO2hProc(const Topic topic, Request* req)
     {
         uint8_t spo2 = *((uint8_t*)(req->data)); // 进行类型转换
         #ifdef FD230
+#if DIALDATASET
         DialModelSPO2::GetInstance()->UpdateSPO2(spo2);
+#endif
         BloodOxygenModel::GetInstance()->UpSPO2data(spo2);
         #endif
     }
@@ -656,7 +665,9 @@ void MsgCenterNotifyHeartRateProc(const Topic topic, Request* req)
         u_int8_t heart = *((u_int8_t*)(req->data)); // 进行类型转换
         //通知对应信息进行更新
         #ifdef FD230
+#if DIALDATASET
         DialModelHeartRate::GetInstance()->UpdateHeartRate(heart);
+#endif
         HeartModel::GetInstance()->UpHeartdata(heart);
         #endif
     }
@@ -988,7 +999,7 @@ void MsgCenterNotifyDrinkReminderProc(const Topic topic, Request *req)
     DrinkReminderViewEventListener::GetInstance().set_screen_on_and_vibration();
     NotificationManager::GetInstance()->ShowNotify(showDrinkReminderNotify, (uint16_t)topic, true);
 }
-//每日训练
+//每日训练数据刷新
 void MsgCenterNotifyActivityProc(const Topic topic, Request* req)
 {
     unused(topic);
@@ -1007,15 +1018,31 @@ void MsgCenterNotifyActivityProc(const Topic topic, Request* req)
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s c_activity_result_t failed, ret = %d", rets);
         return;
     }
+
+    /*更新卡路里数据*/
     if(c_activity_result_t->calories!=0)
-    set_calories_data(c_activity_result_t->calories);
+    {
+        set_calories_data(c_activity_result_t->calories);
+#if DIALDATASET
+        DialModelCalorie::GetInstance()->UpdateCalorie(c_activity_result_t->calories);
+#endif
+    }
 
 
+    /*更新距离数据*/
     if(c_activity_result_t->distance!=0)
-    set_distance_data(c_activity_result_t->distance);
+    {
+        set_distance_data(c_activity_result_t->distance);  
+#if DIALDATASET
+        DialModelDistance::GetInstance()->UpdateDistance(c_activity_result_t->distance);
+#endif 
+    }
 
+    /*更新卡路里数据*/
     if(c_activity_result_t->MHR_zone>=2)
-    set_fat_time_data();
+    {
+        set_fat_time_data();
+    }
 
     free(c_activity_result_t);
     c_activity_result_t = NULL;