分离dml驱动,默认关闭ppg,cywee服务
authorpenglei <1624952103@qq.com>
Tue, 20 May 2025 03:47:29 +0000 (11:47 +0800)
committerpenglei <1624952103@qq.com>
Tue, 20 May 2025 03:47:29 +0000 (11:47 +0800)
60 files changed:
.vscode/settings.json
code/sdk/application/wearable/fd230/nativeapp/nativeui/bloodoxygen/src/BloodOxygenModel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/bloodoxygen/src/BloodResultPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/goal/src/goalmodel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/heart_blood/CheckAbnormalPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/heart_blood/CheckInvalidPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/heartrate/src/HeartModel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/heartrate/src/HeartResultPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/main/src/dial/DialModelCalorie.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/main/src/dial/DialModelDistance.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230/service/broadcast/include/broadcast_feature.h
code/sdk/application/wearable/fd230/service/power_manager/src/actions/display_action.c
code/sdk/build/config/target_config/brandy/config.py
code/sdk/zhihui/UI/producttest/src/testgsenson.cpp
code/sdk/zhihui/UI/producttest/src/testhrsenson.cpp
code/sdk/zhihui/drivers/cywee/CMakeLists.txt
code/sdk/zhihui/drivers/cywee/ble_service/CMakeLists.txt [new file with mode: 0644]
code/sdk/zhihui/drivers/cywee/ble_service/cywee_ble_Service.h [moved from code/sdk/zhihui/drivers/cywee/Inc/cywee_ble_Service.h with 80% similarity]
code/sdk/zhihui/drivers/cywee/ble_service/cywee_ble_service.c [new file with mode: 0644]
code/sdk/zhihui/drivers/cywee/dml/CMakeLists.txt [new file with mode: 0644]
code/sdk/zhihui/drivers/cywee/dml/CWM_CustomDataStruct.h [moved from code/sdk/zhihui/drivers/cywee/Inc/CWM_CustomDataStruct.h with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/CWM_EventStructure.h [moved from code/sdk/zhihui/drivers/cywee/Inc/CWM_EventStructure.h with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/CWM_LIB_DML_clang_riscv.a [moved from code/sdk/zhihui/drivers/cywee/Lib/CWM_LIB_DML_clang_riscv.a with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/CWM_LIB_clang_riscv.a [moved from code/sdk/zhihui/drivers/cywee/Lib/CWM_LIB_clang_riscv.a with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/CWM_LIB_clang_riscv_mac.a [moved from code/sdk/zhihui/drivers/cywee/Lib/CWM_LIB_clang_riscv_mac.a with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/OsApi.h [moved from code/sdk/zhihui/drivers/cywee/Inc/OsApi.h with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/board_yh601s.c [new file with mode: 0644]
code/sdk/zhihui/drivers/cywee/dml/config.h [moved from code/sdk/zhihui/drivers/cywee/Inc/config.h with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/custom_factory.h [moved from code/sdk/zhihui/drivers/cywee/Inc/custom_factory.h with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/custom_factory_core.c [moved from code/sdk/zhihui/drivers/cywee/src/custom_factory_core.c with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/custom_factory_impl.c [moved from code/sdk/zhihui/drivers/cywee/src/custom_factory_impl.c with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/cwm_lib.h [moved from code/sdk/zhihui/drivers/cywee/Inc/cwm_lib.h with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/cwm_lib_dml.h [moved from code/sdk/zhihui/drivers/cywee/Inc/cwm_lib_dml.h with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/cywee_dml.h [moved from code/sdk/zhihui/drivers/cywee/Inc/cywee_hal.h with 89% similarity]
code/sdk/zhihui/drivers/cywee/dml/main.c [moved from code/sdk/zhihui/drivers/cywee/src/main.c with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/main_dml.c [moved from code/sdk/zhihui/drivers/cywee/src/main_dml.c with 85% similarity]
code/sdk/zhihui/drivers/cywee/dml/simulate_signal.h [moved from code/sdk/zhihui/drivers/cywee/Inc/simulate_signal.h with 100% similarity]
code/sdk/zhihui/drivers/cywee/dml/test_api.c [moved from code/sdk/zhihui/drivers/cywee/src/test_api.c with 100% similarity]
code/sdk/zhihui/drivers/cywee/hal/CMakeLists.txt [new file with mode: 0644]
code/sdk/zhihui/drivers/cywee/hal/cywee_hal.c [new file with mode: 0644]
code/sdk/zhihui/drivers/cywee/hal/cywee_hal.h [new file with mode: 0644]
code/sdk/zhihui/drivers/cywee/service/CMakeLists.txt [new file with mode: 0644]
code/sdk/zhihui/drivers/cywee/service/cywee_at_cmd.h [moved from code/sdk/zhihui/drivers/cywee/Inc/cywee_at_cmd.h with 100% similarity]
code/sdk/zhihui/drivers/cywee/service/cywee_ble_Service.c [deleted file]
code/sdk/zhihui/drivers/cywee/service/cywee_hal.c [deleted file]
code/sdk/zhihui/drivers/cywee/service/cywee_service.c
code/sdk/zhihui/drivers/cywee/service/cywee_service.h [moved from code/sdk/zhihui/drivers/cywee/Inc/cywee_service.h with 100% similarity]
code/sdk/zhihui/drivers/cywee/src/board_yh601s.c [deleted file]
code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c
code/sdk/zhihui/drivers/ppg/hx3695/hx3695_hrs_custom.c
code/sdk/zhihui/services/ble_service/blemoder/bleInstruct.cpp
code/sdk/zhihui/services/ble_service/blemoder/bleInstruct.h
code/sdk/zhihui/services/ble_service/blemoder/bleinstruct_sample.cpp
code/sdk/zhihui/services/ble_service/bleservice/bleEvent.c
code/sdk/zhihui/services/ble_service/bleservice/bleService.c
code/sdk/zhihui/services/factorytest_service/factorytest_protocol.c
code/sdk/zhihui/utils/custom_utils.c
code/sdk/zhihui/utils/custom_utils_at_cmd.c

index 7bb1ba3..56e6e81 100644 (file)
         "custom_runtime.h": "c",
         "hx3695.h": "c",
         "configmodelc.h": "c",
-        "factorytest_protocol.h": "c"
+        "factorytest_protocol.h": "c",
+        "sleepmodelc.h": "c",
+        "bluetoothmodelc.h": "c",
+        "errcode.h": "c",
+        "cst86xx_touch1.h": "c",
+        "__split_buffer": "cpp",
+        "initializer_list": "cpp",
+        "list": "cpp",
+        "queue": "cpp",
+        "stack": "cpp",
+        "stat.h": "c",
+        "gnss_ctl.h": "c",
+        "stdlib.h": "c"
     }
 }
\ No newline at end of file
index 6442fe8..3fd1bcd 100644 (file)
@@ -12,7 +12,7 @@ extern "C" errcode_t uapi_get_timestamp_ms(uint32_t *tm);
 
 #include "custom_utils.h"
 
-#ifdef PPG_HX3695
+#ifdef SUPPORT_PPG_SERVICE
 #include "ppg_service.h"
 #endif
 
@@ -72,7 +72,9 @@ namespace OHOS
         {
             // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startspo2 End");
             // uint16_t md = PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST;
+#ifdef SUPORT_PPG_SERVICE
             // send_ppg_cmd_msg(md);
+#endif
             // startspo2 = false;
 
             // uapi_save_runtime_log(RUNTIME_LOG_OXYGEN_MEASURE_END);
@@ -88,7 +90,9 @@ namespace OHOS
             // }
             // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startspo2 Start");
             // uint16_t md = PPG_SERVICE_CMD_TYPE_DO_SPO2_TEST;
+#ifdef SUPORT_PPG_SERVICE
             // send_ppg_cmd_msg(md);
+#endif
             // startspo2 = true;
 
             // uapi_save_runtime_log(RUNTIME_LOG_OXYGEN_MEASURE);
index da1e857..8f0bc41 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-08 18:40:09
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-12-04 16:28:23
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-20 10:36:33
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/GoalModel.cpp
  */
 #include "goal/include/goalmodel.h"
@@ -13,7 +13,7 @@
 // #include "cywee_hal.h"
 // #include "goal_notification.h"
 #include "custom_utils.h"
-// #include "cywee_ble_Service.h"
+// #include "cywee_ble_service.h"
 // #include "goalmodel.h"
 namespace OHOS
 {
@@ -43,7 +43,7 @@ namespace OHOS
       // calories_goal=ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES);
       // stand_goal=ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES);
 
-      // standdata_now=get_now_stand_count();
+      // standdata_now=cywee_get_now_stand_count();
 
       // show_step=goal_parse_step_data();
       // show_calories=goal_parse_calories_data();
@@ -60,7 +60,7 @@ namespace OHOS
    uint8_t GoalModel::getstepvalue()
    {
       int stepgoal = step_goal;
-      int stepdata = show_data_step_refresh();//get_step_data();//OHOS::ActivityModel::GetInstance()->GetStepCounter();
+      int stepdata = show_data_step_refresh();//cywee_get_step_data();//OHOS::ActivityModel::GetInstance()->GetStepCounter();
       // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d %d %f ",stepdata,stepgoal,((float)stepdata/(float)stepgoal) * 100);
       uint8_t value = ((float)stepdata / (float)stepgoal) * 100;
 
@@ -524,7 +524,7 @@ namespace OHOS
       // uint32_t toal_date;
       
       // toal_date=show_step;
-      // get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP);
+      // cywee_get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP);
       // if(value>0)
       // toal_date+=value;
       // return toal_date;
@@ -537,7 +537,7 @@ namespace OHOS
       // float   _f_value=0;
       // float   toal_date;
       // toal_date=show_calories;
-      // get_now_hour_data(&_f_value,CYWEE_SAVE_DATA_CALORIES);
+      // cywee_get_now_hour_data(&_f_value,CYWEE_SAVE_DATA_CALORIES);
       // if(_f_value>0)
       // toal_date+=_f_value;
    
@@ -551,7 +551,7 @@ namespace OHOS
       // float   _f_value=0;
       // float   toal_date;
       // toal_date=show_distance;
-      // get_now_hour_data(&_f_value,CYWEE_SAVE_DATA_DISTANCE);
+      // cywee_get_now_hour_data(&_f_value,CYWEE_SAVE_DATA_DISTANCE);
       // if(_f_value>0)
       // toal_date+=_f_value;
    
@@ -566,7 +566,7 @@ namespace OHOS
       // uint16_t   _16_value=0;
       // uint32_t   toal_date;
       // toal_date=show_fat;
-      // get_now_hour_data(&_16_value,CYWEE_SAVE_DATA_FAT);
+      // cywee_get_now_hour_data(&_16_value,CYWEE_SAVE_DATA_FAT);
       // if(_16_value>0)
       // toal_date+=_16_value;
    
index 2d1014c..352a901 100644 (file)
@@ -18,7 +18,7 @@
 \r
 #include "heart_blood/health_service/health_service.h"\r
 \r
-#ifdef PPG_HX3695\r
+#ifdef SUPORT_PPG_SERVICE\r
 #include "ppg_service.h"\r
 #endif\r
 \r
 #include "languagecode/LanguageInit.h"\r
 #include "ui_service.h"\r
 \r
-#ifdef PPG_HX3695\r
-#include "hx3695.h"\r
-#endif\r
-\r
 \r
 #include <custom_save_runtime.h>\r
 \r
@@ -399,7 +395,7 @@ void HeartModel::SetResult(HeartResult result) { heartresult_ = result; }
 HeartResult HeartModel::GetResult() { return heartresult_; }\r
 // 控制心率检测\r
 void HeartModel::Heart_Control(HeartState state, HeartCheck check) {\r
-  #ifdef PPG_HX3695\r
+  #ifdef SUPORT_PPG_SERVICE\r
   //优先级低不对高优先级处理\r
   if (check < checkstate) {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
@@ -427,11 +423,13 @@ void HeartModel::Heart_Control(HeartState state, HeartCheck check) {
     display_counter_ = 0;\r
     displayheart = 0;\r
     uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;\r
+#ifdef SUPORT_PPG_SERVICE\r
     errcode_t ret = send_ppg_cmd_msg(md);\r
     if(ret != ERRCODE_SUCC)\r
     {\r
         send_ppg_cmd_msg(md);\r
     }\r
+#endif\r
     heartstate = false;\r
     if (checkstate == HeartCheck::CARDCHECK) {\r
       //重置传感器状态\r
@@ -456,8 +454,10 @@ void HeartModel::Heart_Control(HeartState state, HeartCheck check) {
       return;\r
     }\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartState Start");\r
+#ifdef SUPORT_PPG_SERVICE\r
     uint8_t md = PPG_SERVICE_CMD_TYPE_DO_PPG_TEST;\r
     send_ppg_cmd_msg(md);\r
+#endif\r
     heartstate = true;\r
     checkstate = check;\r
 \r
index 3d4e2f8..787d4b8 100644 (file)
@@ -1,3 +1,11 @@
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-05-15 11:27:16
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-20 10:33:14
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230/nativeapp/nativeui/main/src/dial/DialModelCalorie.cpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
 /***
  * @Date: 2024-07-31 18:33:13
  * @LastEditors: Caisking 3449750381@qq.com
@@ -28,7 +36,7 @@ REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_CALORIE,
                    OHOS::DialModelCalorie::GetInstance());
 
 // #include "cywee_hal.h"
-// extern "C" int get_calories_data();
+// extern "C" int cywee_get_calories_data();
 
 namespace OHOS {
 bool DialModelCalorie::GetDialFloatData(DialDataType &type, float &out) {
index 317672c..95e3cf8 100644 (file)
@@ -5,7 +5,7 @@
 REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_DISTANCE, OHOS::DialModelDistance::GetInstance());
 #include "goal/include/goalmodel.h"
 // #include "cywee_hal.h"
-// extern "C" int get_distance_data();
+// extern "C" int cywee_get_distance_data();
 
 namespace OHOS
 {
index 02212ab..c28c6bd 100644 (file)
@@ -269,8 +269,8 @@ public:
 
   // 训练数据相关配置
   #ifdef CYWEE_ACTIVITY_ENABLE
-  void AnalysisData(cywee_activity_result_t *cyweeInfo); /*解析传输过来的数据*/
-  void AnalysisExtraData(cywee_activity_result_extre_info_t *cyweeInfo); /*解析运动额外数据*/
+  void AnalysisData(act_result_t *cyweeInfo); /*解析传输过来的数据*/
+  void AnalysisExtraData(act_ext_result_t *cyweeInfo); /*解析运动额外数据*/
   #endif
 
   void AnalysisHeartData(uint8_t hrs);              /*解析运动心率数据*/
index 299e523..a683e00 100644 (file)
@@ -138,7 +138,7 @@ static void Training_Notify(void *args, const Topic topic, Request *request) {
                         (training_ble *)request->data, request->len);
     if (rets != EOK) {
       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                    "memcpy_s cywee_activity_result_t fail  ret = %d", rets);
+                    "memcpy_s act_result_t fail  ret = %d", rets);
       return;
     }
     // GraphicService::GetInstance()->PostGraphicEvent(
@@ -153,14 +153,14 @@ static void Training_Notify(void *args, const Topic topic, Request *request) {
   }
   //训练基本信息更新
   if (request->msgId == TOPIC_EVENT_ACTIVITY_UPDATE) {
-    cywee_activity_result_t *cyweeInfo = new cywee_activity_result_t();
-    int rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t),
-                        (cywee_activity_result_t *)request->data, request->len);
+    act_result_t *cyweeInfo = new act_result_t();
+    int rets = memcpy_s(cyweeInfo, sizeof(act_result_t),
+                        (act_result_t *)request->data, request->len);
     if (rets != EOK) {
       delete cyweeInfo; // 处理内存分配失败的情况
       cyweeInfo = NULL;
       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                    "memcpy_s cywee_activity_result_t fail ret = %d", rets);
+                    "memcpy_s act_result_t fail ret = %d", rets);
       return;
     }
     TraingModel::GetInstance()->AnalysisData(cyweeInfo);
@@ -170,16 +170,16 @@ static void Training_Notify(void *args, const Topic topic, Request *request) {
   }
   //训练额外信息
   if (request->msgId == TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE) {
-    cywee_activity_result_extre_info_t *cyweeInfo_ext =
-        new cywee_activity_result_extre_info_t();
+    act_ext_result_t *cyweeInfo_ext =
+        new act_ext_result_t();
     int rets = memcpy_s(
-        cyweeInfo_ext, sizeof(cywee_activity_result_extre_info_t),
-        (cywee_activity_result_extre_info_t *)request->data, request->len);
+        cyweeInfo_ext, sizeof(act_ext_result_t),
+        (act_ext_result_t *)request->data, request->len);
     if (rets != EOK) {
       delete cyweeInfo_ext; // 处理内存分配失败的情况
       cyweeInfo_ext = NULL;
       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                    "memcpy_s cywee_activity_result_extre_info_t fail ret = %d",
+                    "memcpy_s act_ext_result_t fail ret = %d",
                     rets);
       return;
     }
@@ -500,7 +500,7 @@ double CalculateAverageHeartRate(const std::vector<int> &heartRates) {
 }
 #ifdef CYWEE_ACTIVITY_ENABLE
 /*分析数据*/
-void TraingModel::AnalysisData(cywee_activity_result_t *cyweeInfo) {
+void TraingModel::AnalysisData(act_result_t *cyweeInfo) {
   // 不同的运动类型解析不同的数据
   // 通用数据
   sportdata->steps = cyweeInfo->steps;
@@ -563,7 +563,7 @@ void TraingModel::AnalysisData(cywee_activity_result_t *cyweeInfo) {
 /*分析activity extra info数据*/
 #ifdef CYWEE_ACTIVITY_ENABLE
 void TraingModel::AnalysisExtraData(
-    cywee_activity_result_extre_info_t *cyweeInfo) {
+    act_ext_result_t *cyweeInfo) {
 
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[apc:%d fpc:%d cdc:%d std:%d]",
                 cyweeInfo->avg_pace, cyweeInfo->max_pace,
index 7a461ac..95b0129 100644 (file)
@@ -48,7 +48,7 @@ typedef enum {
     TOPIC_EVENT_HFP_PHONE_TO_WATCH,\r
     TOPIC_EVENT_HFP_WATCH_TO_PHONE,\r
     TOPIC_EVENT_HFP_HINT,\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+// #ifdef SUPPORT_CYWEE_SERVICE\r
     TOPIC_EVENT_ACTIVITY_UPDATE,\r
     TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE,\r
     TOPIC_EVENT_AR_ALERT_TYPE_UPDATE,\r
@@ -57,7 +57,7 @@ typedef enum {
     TOPIC_EVENT_BLE_TRAINING,\r
     TOPIC_EVENT_BLE_TRANSMIT,\r
     TOPIC_EVENT_GOAL_SHOW_VIEW,\r
-#endif\r
+// #endif\r
 #ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION\r
     TOPIC_EVENT_CHARGE_PLUG,\r
     TOPIC_EVENT_CHARGE_UNPLUG,\r
index 6f45b72..ff36968 100644 (file)
@@ -29,6 +29,8 @@
 #include "touch_screen_def.h"\r
 #include "time.h"\r
 #include "tcxo.h"\r
+#include "rotary_encoder_def.h"\r
+\r
 /* GBL_CTL_M中SOFT_RST_4寄存器 */\r
 #define DISPLAY_LOGIC_CRG_RESET 0x570000c0\r
 /**\r
@@ -160,7 +162,17 @@ static uint32_t action_display_lcd_on()
     NotifyScreenOn(); // Instruct the uikit to start the display operation.\r
 #endif\r
     if ((g_pms_lcd_on_first_flag == false) && (g_pms_dpu_ready == false)) {\r
-        touch_screen_resume(); // open touch\r
+        #if 1\r
+        touch_screen_resume();// open touch/\r
+        #else\r
+        ret = hal_custom_resume_touch(); // 更高优先级处理touch\r
+        if ( ret != 0)\r
+        {\r
+            POWER_DISPLAY_PRINT_ERR(0, "hal_custom_resume_touch  error ret=%x , resume touch in graphic thread\r\n", ret);\r
+            touch_screen_resume();// post_func_to_graphic(touch_screen_resume); // open touch 太耗时,放到GraphicService里延迟执行,加快亮屏速度。\r
+        }\r
+        #endif\r
+        rotary_encoder_resume();\r
     }\r
 #ifdef CONFIG_CLDO1PD_SUPPORT\r
     pmu_control_cldo1_sleep_bypass(TURN_ON);\r
@@ -194,6 +206,7 @@ static uint32_t action_display_lcd_off()
 \r
     osDelay(100);        // Wait 100ms for the uikit to complete display.\r
     touch_screen_suspend(); // close touch\r
+    rotary_encoder_suspend();\r
     ext_errno ret = drv_vau_suspend(NULL);\r
     if (ret != 0) {\r
         POWER_DISPLAY_PRINT_ERR(0, "drv vau suspend error ret=%x\r\n", ret);\r
index 841ca68..90bfe50 100644 (file)
@@ -362,7 +362,6 @@ target = {
             # 'CONFIG_DFX_SUPPORT_DIAG_UP_MACHINE=1',
             #"MEM_CHECK",
             #'ENABLE_WEBSOCKET',
-            'SUPPORT_CYWEE_SERVICE',
             'CYWEE_MAC_ACTIVE',
             'SUPPORT_CAT1_SERVICE',
             #'SUPPORT_TCPIP',                                  
@@ -399,8 +398,8 @@ target = {
                           "custom_config",
                           "rotary_encoder",
                            "nativelauncher",
-                            "ppg_service",
-                            "cywee",
+                            #"ppg_service",
+                            #"cywee_service",
                            "batterry_service",
                            "bleservice",
                            "blemoder",
@@ -410,6 +409,9 @@ target = {
                             "ppg_hal",
                             "mag_hal",
                             "mag_service",
+                            "cywee_dml",
+                            "cywee_hal",
+                            #"cyweeBleService",
                            ],
                'image_analysis': False,
                'fs_image_path':'fd230',
index 42e5ec5..41b5431 100644 (file)
@@ -113,7 +113,7 @@ namespace OHOS
         
         MG_TEST_FALG++;
         gsenson_t t;
-        get_gsonsen_xyz(&t);
+        // get_gsonsen_xyz(&t);
         char buf[124]={0};
         float x_t=t.x;
         float y_t=t.y;
index 6bde9cd..e6364e2 100644 (file)
@@ -100,7 +100,7 @@ namespace OHOS
     static bool button_falg=true;
     void testhrsenson1View:: setgrayvalue(int g,int r,int ir)
     {
-#ifdef PPG_HX3695
+
         if(label_hrsenson_value_vison!=NULL)
         {
 
@@ -109,11 +109,12 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",buf);
             label_hrsenson_value_vison->SetText(buf);
             RootView::GetInstance()->Invalidate();
+#ifdef SUPORT_PPG_SERVICE
             int8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;
             send_ppg_cmd_msg(md);
+#endif
             button_falg=true;
         }
-#endif
     }
     void testhrsenson1View:: setlightvalue(int g,int r,int ir)
     {
@@ -126,8 +127,10 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",buf);
             label_hrsenson_value_vison->SetText(buf);
             RootView::GetInstance()->Invalidate();
+#ifdef SUPORT_PPG_SERVICE
             int8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;
             send_ppg_cmd_msg(md);
+#endif
             button_falg=true;
 #elif defined PPG_VC9202
             //漏光测试
@@ -137,7 +140,9 @@ namespace OHOS
             uint32_t apre_val = 0;
             uint32_t aps_val = 9;
             vc9202_get_leaklight_data(&led_cur,&apre_val,&aps_val);
+#ifdef SUPORT_PPG_SERVICE
             send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);
+#endif
             sprintf(buf,"leaklight:\ngreen:%d\nred:%d\nir:%d",led_cur,apre_val,aps_val);
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",buf);
             label_hrsenson_value_vison->SetText(buf);
@@ -184,8 +189,10 @@ namespace OHOS
     {
         if(button_1!=NULL)
         {
+#ifdef SUPORT_PPG_SERVICE
             int8_t md = PPG_SERVICE_CMD_TYPE_DO_GRAYCARD_TEST;
             send_ppg_cmd_msg(md);
+#endif
             button_falg=false;
         }  
     }
@@ -194,8 +201,10 @@ namespace OHOS
     {
         if(button_2!=NULL)
         {
+#ifdef SUPORT_PPG_SERVICE
             int8_t md = PPG_SERVICE_CMD_TYPE_DO_LEAKLIGHT_TEST;
             send_ppg_cmd_msg(md);
+#endif
              button_falg=false;
 #ifdef PPG_VC9202
             testhrsenson1View::setlightvalue(0,0,0);
@@ -323,10 +332,10 @@ namespace OHOS
 
         testhrsensonScrollView->SetTouchable(true);
         testhrsensonScrollView->SetDraggable(true);
-
+#ifdef SUPORT_PPG_SERVICE
         int8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;
         send_ppg_cmd_msg(md);
-
+#endif
          uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
         if (cnt == 0) {
             uapi_pm_add_sleep_veto(PM_ID_P_TEST);
index 569bfdd..034aad2 100644 (file)
@@ -1,78 +1,4 @@
-#===============================================================================
-# @brief    cmake file
-# Copyright (c) @CompanyNameMagicTag 2022-2023. All rights reserved.
-#===============================================================================
-set(COMPONENT_NAME "cywee")
-
-set(SOURCES ${SOURCES}
-    # ${CMAKE_CURRENT_SOURCE_DIR}/src/main.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/src/main_dml.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/src/test_api.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/src/board_yh601s.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/src/custom_factory_core.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/src/custom_factory_impl.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_service.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_at_cmd.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_hal.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_ble_Service.c
-
-    # ${CMAKE_CURRENT_SOURCE_DIR}/../acc/lis2doc_STdC/examples/lis2doc_read_data_single.c
-    # ${CMAKE_CURRENT_SOURCE_DIR}/../acc/lis2doc_STdC/lis2doc_porting.c
-)
-set(PUBLIC_HEADER
-    ${CMAKE_CURRENT_SOURCE_DIR}/Inc
-)
-if("FD230" IN_LIST DEFINES)
-set(PRIVATE_HEADER
-    ${PRIVATE_HEADER}
-    ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativeui/bluetooth/include
-    ${ROOT_DIR}/application/wearable/fd230/CustomUIComponentTool/uicomponents
-    ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativeui
-    ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativelauncher/include
-    ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativeui/screennotify/include
-)
-else()
-set(PRIVATE_HEADER
-    ${PRIVATE_HEADER}
-    ${ROOT_DIR}/application/wearable/nativeapp/nativeui/bluetooth/include
-    ${ROOT_DIR}/application/wearable/fd230/CustomUIComponentTool/uicomponents
-    ${ROOT_DIR}/application/wearable/nativeapp/nativeui
-    ${ROOT_DIR}/application/wearable/nativeapp/nativelauncher/include
-    ${ROOT_DIR}/application/wearable/nativeapp/nativeui/screennotify/include
-)
-endif()
-set(PRIVATE_DEFINES
-)
-
-set(PUBLIC_DEFINES
-SUPPORT_AT_CYWEE
-)
-
-# use this when you want to add ccflags like -include xxx
-set(COMPONENT_PUBLIC_CCFLAGS
-)
-
-set(COMPONENT_CCFLAGS
-
-)
-
-set(WHOLE_LINK
-    true
-)
-
-set(MAIN_COMPONENT
-    false
-)
-
-if("SUPPORT_CYWEE_SERVICE" IN_LIST DEFINES)
-    find_library(LIB_PATH_CWM_LIB_DML Lib/CWM_LIB_DML_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
-    if("CYWEE_MAC_ACTIVE" IN_LIST DEFINES)
-        find_library(LIB_PATH_CWM_LIB Lib/CWM_LIB_clang_riscv_mac.a ${CMAKE_CURRENT_SOURCE_DIR})
-    else()
-        find_library(LIB_PATH_CWM_LIB Lib/CWM_LIB_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
-    endif()
-    target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_CWM_LIB_DML} ${LIB_PATH_CWM_LIB} PRIVATE -Wl,--whole-archive)
-    #target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive  ${LIB_PATH_CWM_LIB} PRIVATE -Wl,--whole-archive)
-endif()
-
-build_component()
+add_subdirectory_if_exist(service)
+add_subdirectory_if_exist(hal)
+add_subdirectory_if_exist(dml)
+add_subdirectory_if_exist(ble_service)
\ No newline at end of file
diff --git a/code/sdk/zhihui/drivers/cywee/ble_service/CMakeLists.txt b/code/sdk/zhihui/drivers/cywee/ble_service/CMakeLists.txt
new file mode 100644 (file)
index 0000000..cd9a535
--- /dev/null
@@ -0,0 +1,46 @@
+#===============================================================================
+# @brief    cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
+#===============================================================================
+
+set(COMPONENT_NAME "cyweeBleService")
+
+set(PUBLIC_HEADER
+${CMAKE_CURRENT_SOURCE_DIR}
+)
+if("FD230" IN_LIST DEFINES)
+set(PRIVATE_HEADER
+    ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativeui/bluetooth/include
+)
+else()
+set(PRIVATE_HEADER
+    ${ROOT_DIR}/application/wearable/nativeapp/nativeui/bluetooth/include
+)
+endif()
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/cywee_ble_service.c
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+
+)
+
+set(WHOLE_LINK
+    true
+)
+
+set(MAIN_COMPONENT
+    false
+)
+
+set(PUBLIC_DEFINES
+SUPPORT_CYWEE_BLE_SERVICE
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
 #define BLE_CYWEE_SERVER_H
 
 
-#define CWM_HISTORY_DATA_PATH "/user/userdata/goal/step/step_"
-
-#define CWM_HISTORY_DATA_CALORIES_PATH "/user/userdata/goal/calories/calories_"
-
-#define CWM_HISTORY_DATA_DISTANCE_PATH "/user/userdata/goal/distance/distance_"
-
-#define CWM_HISTORY_STAND_DATA_PATH "/user/userdata/goal/stand/stand_"
-
-#define CWM_HISTORY_DATA_FAT_PATH "/user/userdata/goal/fat/fat_"
-
-#define GOAL_DATA_CONFIG_DIR "/user/userdata/goal"
-
-
-#define GOAL_DATA_CONFIG_DIR_STEP "/user/userdata/goal/step"
-
-#define GOAL_DATA_CONFIG_DIR_DISTANCE "/user/userdata/goal/distance"
-
-#define GOAL_DATA_CONFIG_DIR_STAND "/user/userdata/goal/stand"
-
-#define GOAL_DATA_CONFIG_DIR_FAT "/user/userdata/goal/fat"
-
-#define GOAL_DATA_CONFIG_DIR_CALORIES "/user/userdata/goal/calories"
-
-
 #include "errcode.h"
 
 #ifdef __cplusplus
diff --git a/code/sdk/zhihui/drivers/cywee/ble_service/cywee_ble_service.c b/code/sdk/zhihui/drivers/cywee/ble_service/cywee_ble_service.c
new file mode 100644 (file)
index 0000000..f4569b9
--- /dev/null
@@ -0,0 +1,591 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2022. All rights reserved.
+ * Description: BT HID Service Server Module.
+ */
+
+#include "cywee_ble_service.h"
+
+#ifdef SUPPORT_BLE_SERVICE
+#include "bleService.h"
+#include "bts_gatt_stru.h"
+#include "bts_gatt_server.h"
+#endif
+#include "securec.h"
+#include "wearable_log.h"
+#ifdef SUPPORT_OHOSFWK
+#include "BluetoothWrapper.h"
+#endif
+
+/* HID gatt notification flag, do not need confirm */
+#define GATT_NOTIFICATION_FLAG 0
+/* HID gatt indication flag, need confirm */
+#define GATT_INDICATION_FLAG 1
+#define INVALID_SERVER_ID 0
+/* Client Characteristic Configuration UUID */
+#define BLE_UUID_CLIENT_CHARACTERISTIC_CONF 0x2902
+/*user Characteristic Configuration UUID*/
+#define BLE_UUID_USER_CHARACTERISTIC_CONF 0x2901
+/* gatt server ID */
+static uint8_t g_server_id = INVALID_SERVER_ID;
+// RX定为Notify属性,TX为Write属性
+enum {
+    /* HID input report characteristic properties */
+    FACTORYTEST_INPUT_REPORT_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_NOTIFY|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP|GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_READ,
+    /* HID output report characteristic properties */
+    FACTORYTEST_OUTPUT_REPORT_PROPERTIES =  GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,
+};
+    
+#define uint16_to_byte(n) ((uint8_t)(n)), ((uint8_t)((n) >> 8))
+
+/* hid input report att handle */
+uint32_t g_cywee_notify_report_att_hdl = 0;
+uint32_t cywee_ate_write_handl = 0;
+
+/* 创建服务 */
+static void ble_cywee_add_service(uint8_t server_id)
+{
+    bt_uuid_t cywee_service_uuid = {0};
+    bts_data_to_uuid_len2(BLE_UUID_CYWEE_REPORT_SERVICE, &cywee_service_uuid);
+    //只有一个服务,永远是1
+   errcode_t ret = 0;
+#ifndef SUPPORT_OHOSFWK
+    ret = gatts_add_service(server_id, &cywee_service_uuid, true);
+    printf("ble_cywee_add_service gatts_add_service ret: 0x%x serverId = 0x%x uuid.uuid_len:%d\n", ret, server_id,cywee_service_uuid.uuid_len);
+#else
+    ret = wrapper_gatts_add_service(server_id, &cywee_service_uuid, true);
+    printf("ble_cywee_add_service wrapper_gatts_add_service ret: 0x%x serverId = 0x%x uuid.uuid_len:%d\n", ret, server_id,cywee_service_uuid.uuid_len);
+#endif
+
+}
+static void ble_cywee_add_descriptor_report_reference(uint8_t server_id, uint16_t srvc_handle, bool is_notify_report)
+{
+    /* HID input report reference value for test  [report id 1, input] */
+    static uint8_t report_reference_val_input[] = {0, 0};
+    gatts_add_desc_info_t descriptor;
+    if (is_notify_report)
+    {
+        bts_data_to_uuid_len2(BLE_UUID_CLIENT_CHARACTERISTIC_CONF, &descriptor.desc_uuid);
+        descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE ;
+    }else{
+        bts_data_to_uuid_len2(BLE_UUID_USER_CHARACTERISTIC_CONF, &descriptor.desc_uuid);
+        descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ ;
+        
+    }
+    descriptor.value = report_reference_val_input;
+    descriptor.value_len = (uint16_t)sizeof(report_reference_val_input);
+
+    gatts_add_descriptor(server_id, srvc_handle, &descriptor);
+}
+
+/* 添加特征:HID information */
+static void ble_cywee_add_character_and_information(uint8_t server_id, uint16_t srvc_handle)
+{
+    /* HID information value for test */
+    gatts_add_chara_info_t character={0};
+
+    memset_s(&character,sizeof(gatts_add_chara_info_t),0,sizeof(gatts_add_chara_info_t));
+    bts_data_to_uuid_len2(BLE_UUID_CYWEE_RX, &character.chara_uuid);
+    character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;
+    character.properties = FACTORYTEST_INPUT_REPORT_PROPERTIES;
+    character.value_len = 0;//(uint16_t)sizeof(hid_information_val);
+    character.value = NULL;//hid_information_val;
+    gatts_add_characteristic(server_id, srvc_handle, &character);
+    ble_cywee_add_descriptor_report_reference(server_id,srvc_handle,true);
+    ble_cywee_add_descriptor_report_reference(server_id,srvc_handle,false);    
+    
+}
+
+/* device向host发送数据:input report */
+errcode_t ble_cywee_server_send_input_report(const uint8_t *data, uint8_t len)
+{
+    // printf("ble_hid_server_send_input_report:%d %d %d",data[0],data[1],len);
+    if (g_cywee_notify_report_att_hdl==0) 
+        return ERRCODE_BT_FAIL;
+
+    gatts_ntf_ind_t param = {0};
+    param.attr_handle = (uint16_t)g_cywee_notify_report_att_hdl;
+    param.value_len = len;
+    param.value = bt_os_new(len);
+    if (param.value == NULL) {
+        printf(  "[cywee][ERROR]send input report new fail\r\n");
+        return ERRCODE_BT_MALLOC_FAIL;
+    }
+    if (memcpy_s(param.value, param.value_len, data, len) != EOK) {
+        printf( "[cywee][ERROR]send input report memcpy fail\r\n");
+        bt_os_free(param.value);
+        return ERRCODE_BT_FAIL;
+    }
+    errcode_t ret = 0;
+    ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &param);
+    printf("ble_cywee_server_send_input_report: 0x%x g_ble_conn_id:%d g_cywee_notify_report_att_hdl:%d\r\n",ret,g_ble_conn_id,g_cywee_notify_report_att_hdl);
+    bt_os_free(param.value);
+    return ERRCODE_BT_SUCCESS;
+}
+
+
+void ble_cywee_store_report_handle(uint16_t srvc_handle)
+{
+    printf("g_cywee_notify_report_att_hdl: 0x%X\r\n",srvc_handle);
+    if(g_cywee_notify_report_att_hdl == 0){
+        g_cywee_notify_report_att_hdl = srvc_handle;
+    }
+}
+void ble_cywee_store_recv_handle(uint16_t srvc_handle)
+{
+    printf("cywee_ate_write_handl : 0x%X\r\n",srvc_handle);
+    if(cywee_ate_write_handl == 0)
+    {
+        cywee_ate_write_handl = srvc_handle;
+    }
+    
+}
+
+uint32_t get_cywee_ate_write_handl(void)
+{
+    return cywee_ate_write_handl;
+}
+
+
+void ble_cywee_add_characters_and_descriptors(uint8_t server_id, uint16_t srvc_handle)
+{
+    ble_cywee_add_character_and_information(server_id, srvc_handle);
+}
+
+void ble_cywee_server_init(uint8_t server_id)
+{
+    ble_cywee_add_service(server_id);
+}
+
+
+//协议接收client下发的数据接口
+void cywee_recv_cmd_data(uint8_t *buf, uint16_t event_size,uint16_t handle)
+{
+    if(buf != NULL)
+        printf("cywee_recv_cmd_data len %d , handle 0x%X ,*buf 0x%02X\r\n",event_size,handle,*buf);
+    /****此处为接收指令,处理后反馈结果的参考**/
+    // cywee_log_switch(*buf);
+    /*****参考结束****/
+}
+
+
+void CWM_OS_saveData_history(void* new_data,void *history ,uint32_t len,uint8_t type,uint32_t time)
+{
+#ifdef SUPPORT_CYWEE_BLE_SERVICE
+    struct stat info;
+
+    if (stat(GOAL_DATA_CONFIG_DIR, &info) != 0)
+    {
+        if (mkdir(GOAL_DATA_CONFIG_DIR, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+        {
+            return ; // Failed to create folder
+        }
+    }
+
+    if (stat(GOAL_DATA_CONFIG_DIR_STEP, &info) != 0)
+    {
+        if (mkdir(GOAL_DATA_CONFIG_DIR_STEP, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+        {
+            return ; // Failed to create folder
+        }
+    }
+
+    if (stat(GOAL_DATA_CONFIG_DIR_DISTANCE, &info) != 0)
+    {
+        if (mkdir(GOAL_DATA_CONFIG_DIR_DISTANCE, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+        {
+            return ; // Failed to create folder
+        }
+    }
+
+    if (stat(GOAL_DATA_CONFIG_DIR_STAND, &info) != 0)
+    {
+        if (mkdir(GOAL_DATA_CONFIG_DIR_STAND, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+        {
+            return ; // Failed to create folder
+        }
+    }
+
+    if (stat(GOAL_DATA_CONFIG_DIR_FAT, &info) != 0)
+    {
+        if (mkdir(GOAL_DATA_CONFIG_DIR_FAT, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+        {
+            return ; // Failed to create folder
+        }
+    }
+
+    if (stat(GOAL_DATA_CONFIG_DIR_CALORIES, &info) != 0)
+    {
+        if (mkdir(GOAL_DATA_CONFIG_DIR_CALORIES, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+        {
+            return ; // Failed to create folder
+        }
+    }
+
+
+
+    char path_[64]={0};
+    char timeday[12] = {0};
+    uapi_get_TIME_STR(time,timeday, '_','\0',DATE_Y_M_D);
+
+    int i_data=0;
+    float f_data=0;
+    int16_t i_data_16=0;
+
+    switch (type)
+    {
+    case CYWEE_DATA_CALORIES:
+        sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_CALORIES_PATH,timeday);
+
+        f_data=*(float*)new_data-*(float*)history;
+
+        break;
+    case CYWEE_DATA_STEP:
+       sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_PATH,timeday);
+
+        i_data= *(int*)new_data-*(int*)history;//新数据减去旧数据,作为这一个小时的值
+        // {   
+        //     FILE *fp= fopen("/user/userdata/i_data_test.txt","ab+");
+        //     fwrite("x",1,1,fp);
+        //     fclose(fp);
+        // }
+       
+
+        break;
+    case CYWEE_DATA_DISTANCE:
+       sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_DISTANCE_PATH,timeday);
+       f_data=*(float*)new_data-*(float*)history;
+
+        break;
+    case CYWEE_DATA_FAT:
+       sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_FAT_PATH,timeday);
+        i_data_16= *(int16_t*)new_data-*(int16_t*)history;//新数据减去旧数据,作为这一个小时的值
+        
+        break;
+
+    default:
+        break;
+    }
+   
+    CWM_OS_dbgPrintf(" save path %s \n",path_);
+
+    if(i_data<0 || f_data<0 ||i_data_16<0)
+    {
+        i_data=0;
+        f_data=0;
+        *(int*)history=0;
+        return;
+    }
+
+    if(type==CYWEE_DATA_STEP && i_data!=0)
+    {
+        #ifdef GOAL_DATA_AMEND
+        time_and_32_date_t array[25]={0};
+
+        for(int i=0;i<25;i++)
+        {
+            array[i].data=0;
+            array[i].time=0;
+        }
+       
+
+        if(time_is_repetition(time,&i_data,path_,array,0))
+        {
+
+
+            FILE * fp = fopen(path_,"wb+");
+            if(fp==NULL)
+            {
+                CWM_OS_dbgPrintf("open fail\n");
+                return;
+            }
+
+            for(int i=0;i<25;i++)
+            {
+                if(array[i].time && array[i].data)
+                {
+                    fwrite(&array[i].time,sizeof(array[i].time),1,fp);
+                    fwrite(&array[i].data,sizeof(array[i].data),1,fp);
+                }
+
+            }
+            fclose(fp);
+
+        }
+        else
+        #endif
+        {
+       
+            FILE * fp = fopen(path_,"ab+");
+            if(fp)
+            {
+                uint32_t creationTime;
+                creationTime=time;//当前值计入上小时
+
+                int ret =fwrite(&creationTime,1,4,fp);
+                if(ret==0)
+                {
+                    CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+                }
+                if(i_data)
+                ret =fwrite(&i_data,1,sizeof(i_data),fp);
+                fclose(fp);
+            }
+            else
+            {
+                msleep(5);
+                FILE * fp = fopen(path_,"ab+");
+                uint32_t creationTime;
+                creationTime=time;//当前值计入上小时
+
+                int ret =fwrite(&creationTime,1,4,fp);
+                if(ret==0)
+                {
+                    CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+                }
+                if(i_data)
+                ret =fwrite(&i_data,1,sizeof(i_data),fp);
+                fclose(fp);
+            }
+
+            
+
+     
+        }
+
+    }
+    if((type==CYWEE_DATA_CALORIES|| type==CYWEE_DATA_DISTANCE) && f_data!=0)
+    {
+
+        #ifdef GOAL_DATA_AMEND
+         time_and_float_date_t array[25]={0};
+
+        for(int i=0;i<25;i++)
+        {
+            array[i].data=0;
+            array[i].time=0;
+        }
+       
+        if(time_is_repetition(time,&i_data,path_,array,1))
+        {
+
+            FILE * fp = fopen(path_,"wb+");
+            if(fp==NULL)
+            {
+                CWM_OS_dbgPrintf("open fail\n");
+                return;
+            }
+
+            for(int i=0;i<25;i++)
+            {
+                if(array[i].time && array[i].data)
+                {
+                    fwrite(&array[i].time,sizeof(array[i].time),1,fp);
+                    fwrite(&array[i].data,sizeof(array[i].data),1,fp);
+                }
+
+            }
+            fclose(fp);
+
+        }
+        else
+        #endif
+        {
+        
+            FILE * fp = fopen(path_,"ab+");
+            if(fp)
+            {
+                uint32_t creationTime;
+                creationTime=time;//当前值计入上小时
+
+                int ret =fwrite(&creationTime,1,4,fp);
+                if(ret==0)
+                {
+                    CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+                }
+                if(f_data)
+                ret =fwrite(&f_data,1,sizeof(f_data),fp);
+
+                fclose(fp);
+
+            }        
+        }
+    }
+
+    if((type==CYWEE_DATA_FAT) && i_data_16!=0)
+    {
+
+        #ifdef GOAL_DATA_AMEND
+         time_and_16_date_t array[25]={0};
+
+        for(int i=0;i<25;i++)
+        {
+            array[i].data=0;
+            array[i].time=0;
+        }
+       
+        if(time_is_repetition(time,&i_data,path_,array,2))
+        {
+
+            FILE * fp = fopen(path_,"wb+");
+            if(fp==NULL)
+            {
+                CWM_OS_dbgPrintf("open fail\n");
+                return;
+            }
+
+            for(int i=0;i<25;i++)
+            {
+                if(array[i].time && array[i].data)
+                {
+                    fwrite(&array[i].time,sizeof(array[i].time),1,fp);
+                    fwrite(&array[i].data,sizeof(array[i].data),1,fp);
+                }
+
+            }
+            fclose(fp);
+
+        }
+        else
+        #endif
+
+        {
+            FILE * fp = fopen(path_,"ab+");
+            if(fp)
+            {
+                uint32_t creationTime;
+                creationTime=time;//当前值计入上小时
+
+                int ret =fwrite(&creationTime,1,4,fp);
+                if(ret==0)
+                {
+                    CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+                }
+                if(i_data_16)
+                ret =fwrite(&i_data_16,1,sizeof(i_data_16),fp);
+
+                fclose(fp);
+
+            }        
+        }
+    }
+    
+
+     if(i_data)
+    *(int*)history=*(int*)new_data;
+     else if(i_data_16)
+    *(int16_t*)history=*(int16_t*)new_data;
+    else if(f_data)
+    *(float*)history=*(float*)new_data;
+#endif
+   
+}
+
+void CWM_OS_saveData_STAND_history(uint8_t *falg,uint32_t len,uint32_t time)
+{
+#ifdef SUPPORT_CYWEE_BLE_SERVICE
+    if(*falg)
+    {
+        struct stat info;
+
+        if (stat(GOAL_DATA_CONFIG_DIR, &info) != 0)
+        {
+            if (mkdir(GOAL_DATA_CONFIG_DIR, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+            {
+                return ; // Failed to create folder
+            }
+        }
+        
+        if (stat(GOAL_DATA_CONFIG_DIR_STAND, &info) != 0)
+        {
+            if (mkdir(GOAL_DATA_CONFIG_DIR_STAND, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+            {
+                return ; // Failed to create folder
+            }
+        }
+
+        char path_[64]={0};
+        char timeday[12] = {0};
+        uapi_get_TIME_STR(time,timeday, '_','\0',DATE_Y_M_D);
+
+
+        sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_STAND_DATA_PATH,timeday);
+        CWM_OS_dbgPrintf(" save path %s \n",path_);
+
+        FILE * fp = fopen(path_,"ab+");
+        if(fp==NULL)
+        {
+            CWM_OS_dbgPrintf("open fail\n");
+            return;
+        }
+        uint32_t ret;
+
+        uint32_t creationTime;
+        creationTime=time;//当前值计入上小时
+
+        CWM_OS_dbgPrintf("uapi_get_timestampe_ss %d\n",ret);
+    
+        ret =fwrite(&creationTime,1,len,fp);
+        if(ret==0)
+        {
+            CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+        }
+
+         fclose(fp);
+
+        *falg=0;
+    }
+    else
+    {
+        return;
+    }
+#endif
+}
+  // calories 数据存储
+
+uint8_t get_stand_count(void)
+{
+    char path_[64]={0};
+    char timeday[12] = {0};
+    uapi_get_YYMMDD_Time(timeday, '_');
+
+
+    sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_STAND_DATA_PATH,timeday);
+    CWM_OS_dbgPrintf(" save path %s \n",path_);
+
+    FILE * fp = fopen(path_,"rb+");
+    if(fp==NULL)
+    {
+        CWM_OS_dbgPrintf("open fail\n");
+        return 0;
+    }
+    fseek(fp, 0, SEEK_END);
+    uint8_t size = ftell(fp);
+    fseek(fp, 0, SEEK_SET);
+
+    uint32_t array[25]={0};
+    uint8_t read_size=0;
+    fread(array,sizeof(uint32_t),size/4,fp);
+    uint8_t is_repetition=0;
+    for(int x=0;x<size/4;x++)
+    {
+        if(array[x])
+        {
+            for(int y=0;y<size/4;y++)
+            {
+                if(array[y]==array[x] && y!=x)
+                {
+                   is_repetition++;
+                }
+            }
+        }
+       
+    }
+    
+    
+
+    fclose(fp);
+    return size/4-is_repetition;
+
+}
+
+
diff --git a/code/sdk/zhihui/drivers/cywee/dml/CMakeLists.txt b/code/sdk/zhihui/drivers/cywee/dml/CMakeLists.txt
new file mode 100644 (file)
index 0000000..1e01c62
--- /dev/null
@@ -0,0 +1,53 @@
+#===============================================================================
+# @brief    cmake file
+# Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved.
+#===============================================================================
+set(COMPONENT_NAME "cywee_dml")
+
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/main_dml.c
+${CMAKE_CURRENT_SOURCE_DIR}/test_api.c
+${CMAKE_CURRENT_SOURCE_DIR}/board_yh601s.c
+${CMAKE_CURRENT_SOURCE_DIR}/custom_factory_core.c
+${CMAKE_CURRENT_SOURCE_DIR}/custom_factory_impl.c
+)
+set(PUBLIC_HEADER
+    ${CMAKE_CURRENT_SOURCE_DIR}
+)
+set(PUBLIC_DEFINES
+    CYWEE_DML
+)
+
+set(PRIVATE_HEADER
+)
+
+set(PRIVATE_DEFINES
+)
+
+# use this when you want to add ccflags like -include xxx
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+    -Wno-incompatible-function-pointer-types
+    -Wno-unused-function
+)
+
+set(WHOLE_LINK
+    true
+)
+
+set(MAIN_COMPONENT
+    false
+)
+
+find_library(LIB_PATH_CWM_LIB_DML CWM_LIB_DML_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
+if("CYWEE_MAC_ACTIVE" IN_LIST DEFINES)
+    find_library(LIB_PATH_CWM_LIB CWM_LIB_clang_riscv_mac.a ${CMAKE_CURRENT_SOURCE_DIR})
+else()
+    find_library(LIB_PATH_CWM_LIB CWM_LIB_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
+target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_CWM_LIB_DML} ${LIB_PATH_CWM_LIB} PRIVATE -Wl,--whole-archive)
+#target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive  ${LIB_PATH_CWM_LIB} PRIVATE -Wl,--whole-archive)
+
+build_component()
\ No newline at end of file
diff --git a/code/sdk/zhihui/drivers/cywee/dml/board_yh601s.c b/code/sdk/zhihui/drivers/cywee/dml/board_yh601s.c
new file mode 100644 (file)
index 0000000..ae489a0
--- /dev/null
@@ -0,0 +1,274 @@
+/*********************/
+/*** Include Files ***/
+/*********************/
+#include <stdarg.h>
+
+#include <stdio.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "osal_timer.h"
+#include "osal_mutex.h"
+#include "pinctrl.h"
+#include "chip_io.h"
+#include "time.h"
+#include "i2c.h"
+#include "gpio.h"
+#include "hal_gpio.h"
+#include "hal_i2c.h"
+#include "soc_osal.h"
+#include "tcxo.h"
+#include "debug_print.h"
+#include "platform_core.h"
+#include "los_tick.h"
+
+#include "cwm_lib.h"
+#include "los_typedef.h"
+#include "config.h"
+#include "OsApi.h"
+#include "los_printf.h"
+#ifdef SUPPORT_CYWEE_BLE_SERVICE
+#include "cywee_ble_service.h"
+#endif
+#include "custom_utils.h"
+
+/*********************/
+/*** Macro Defines ***/
+/*********************/
+
+#define CYWEE_I2C_BUS I2C_BUS_2
+#define CYWEE_I2C_RETRY_TIME_MAX 3
+#define G_INT1_PIN S_AGPIO_L11
+#define G_INT2_PIN S_AGPIO_L19
+
+/*************************/
+/*** Variables Defines ***/
+/*************************/
+
+static uint8_t g_cywee_installed = 0;
+
+extern uint8_t cywee_ble_service_flag;
+
+/************************/
+/*** Function Defines ***/
+/************************/
+int CWM_OS_dbgPrintf(const char * format,...);
+
+
+/********************************/
+/*** Function Implementations ***/
+/********************************/
+
+
+
+/*初始化GPIO*/
+int gpio_int_pin_init(void)
+{
+   if ((uapi_pin_set_mode(G_INT1_PIN, (pin_mode_t)HAL_PIO_FUNC_GPIO) != ERRCODE_SUCC) ||
+        (uapi_pin_set_pull(G_INT1_PIN, (pin_pull_t)HAL_PIO_PULL_UP) != ERRCODE_SUCC) ||
+        (uapi_gpio_set_dir(G_INT1_PIN, GPIO_DIRECTION_INPUT) != ERRCODE_SUCC)) {
+        CWM_OS_dbgPrintf("gpio G_INT1_PIN config failed\r\n");
+        return ERRCODE_FAIL;
+   }
+  if ((uapi_pin_set_mode(G_INT2_PIN, (pin_mode_t)HAL_PIO_FUNC_GPIO) != ERRCODE_SUCC) ||
+        (uapi_pin_set_pull(G_INT2_PIN, (pin_pull_t)HAL_PIO_PULL_UP) != ERRCODE_SUCC) ||
+        (uapi_gpio_set_dir(G_INT2_PIN, GPIO_DIRECTION_INPUT) != ERRCODE_SUCC)) {
+        CWM_OS_dbgPrintf("gpio G_INT2_PIN config failed\r\n");
+        return ERRCODE_FAIL;
+   }
+   return ERRCODE_SUCC;
+}
+
+
+// int CWM_setGpio(uint16_t sensortype, uint16_t sensorPin, uint16_t pintype)
+// {
+
+//     return ERRCODE_SUCC;
+// }
+
+// int CWM_securityCodeWrite(uint32_t sensortype, uint8_t* data, uint32_t len)
+// {
+//     return ERRCODE_SUCC;
+// }
+   
+// int CWM_enableGpioIRQ(uint16_t sensorType, uint16_t sensorPin, PFN_IRQHANDLE callback)
+// {
+//     CWM_OS_dbgPrintf("CWM_enableGpioIRQ sensorType %d, sensorPin %d, callback 0x%X\n",sensorType,sensorPin,callback);
+   
+//     return ERRCODE_SUCC;
+// }
+
+// int CWM_disableGpioIRQ(uint16_t sensorType, uint16_t sensorPin)
+// {
+//     CWM_OS_dbgPrintf("CWM_disableGpioIRQ sensorType %d, sensorPin %d\n",sensorType,sensorPin);
+//     return ERRCODE_SUCC;
+// }
+
+
+
+// int CWM_OS_i2cWrite(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex)
+// {
+//     errcode_t ret;
+//     uint32_t retry;
+//     i2c_data_t data;
+//     uint8_t *write_data = NULL;
+//     uint16_t send_len;
+//     uint8_t *data_buf=writeData;
+//     uint16_t data_len=writeDataSize;
+    
+//     cywee_i2c_init();
+//     send_len = data_len + regLength;
+//     write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
+//     if (write_data == NULL) {
+//         CWM_OS_dbgPrintf("cywee CWM_OS_i2cWrite send buff malloc fail %d!\n",send_len);
+//         goto error;
+//     }
+
+//     if( regLength == 2)
+//     {
+//         write_data[0] = ((uint8_t*)&reg)[0];
+//         write_data[1] = ((uint8_t*)&reg)[1];
+//     }else{
+//         write_data[0] = (uint8_t)reg;
+//     }
+//     ret = (uint32_t)memcpy_s(write_data + regLength, send_len - regLength, data_buf, data_len);
+//     if (ret != EOK) {
+//         CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
+//         goto free_mem;
+//     }
+
+//     data.send_buf = write_data;
+//     data.send_len = send_len;
+//     data.receive_buf = NULL;
+//     data.receive_len = 0;
+
+//     for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
+//         ret = uapi_i2c_master_write(CYWEE_I2C_BUS, slaveAddr, &data);
+//         if (ret == ERRCODE_SUCC) {
+//             break;
+//         }
+//     }
+//     if (ret != ERRCODE_SUCC) {
+//         CWM_OS_dbgPrintf("CWM_OS_i2cWrite cywee data write fail! ret=0x%x\n", ret);
+//     }
+// free_mem:
+//     osal_kfree(write_data);
+// error:
+//     return (ret>0) ? ret*-1: ret;
+// }
+
+// int CWM_OS_i2cTransfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex)
+// {
+//     errcode_t ret;
+//     uint32_t retry;
+//     i2c_data_t data;
+//     uint8_t *write_data = NULL;
+//     int16_t write_len = 0;
+
+//     cywee_i2c_init();
+//     write_len = regLength + writeDataSize;
+//     write_data = (uint8_t *)osal_kmalloc(write_len, OSAL_GFP_KERNEL);
+//     if (write_data == NULL) {
+//         PRINT_ERR("cywee send buff malloc fail!");
+//         goto error;
+//     }
+
+//     if( regLength == 2)
+//     {
+//         write_data[0] = ((uint8_t*)&reg)[0];
+//         write_data[1] = ((uint8_t*)&reg)[1];
+//     }else{
+//         write_data[0] = (uint8_t)reg;
+//     }
+
+//     ret = (uint32_t)memcpy_s(write_data + regLength, writeDataSize, writeData, writeDataSize);
+//     if (ret != EOK) {
+//         CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
+//         goto free_mem;
+//     }
+//     data.send_buf = write_data;
+//     data.send_len = write_len;
+//     data.receive_buf = readData;
+//     data.receive_len = readDataSize;
+
+//     for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
+//         ret = uapi_i2c_master_writeread(CYWEE_I2C_BUS, slaveAddr, &data);
+//         if (ret == ERRCODE_SUCC) {
+//             break;
+//         }
+//     }
+//     if (ret != ERRCODE_SUCC) {
+//         CWM_OS_dbgPrintf("CWM_OS_i2cTransfer cywee data read fail! ret=0x%x\n", ret);
+//     }
+
+// free_mem:
+//     osal_kfree(write_data);
+// error:
+//     return (ret>0) ? ret*-1: ret;
+// }
+
+//实际精度只能到1ms
+void CWM_OS_uSleep(uint32_t time)
+{
+
+    HalDelayUs(time);
+    // uint32_t ms = time / 1000;
+    // if (ms == 0)  ms = 1;
+    // osDelay(ms);    
+}
+
+uint64_t CWM_OS_GetTimeNs(void)
+{
+    uint64_t timeNowNs;
+    timeNowNs = LOS_CurrNanosec();
+    return timeNowNs;
+}
+
+void* CWM_OS_malloc(int size)
+{
+    if (size == 0)
+        size = 1;
+    return malloc(size);
+}
+
+void CWM_OS_free(void *ptr)
+{
+    if (ptr == NULL)
+        return;
+
+    free(ptr);
+}
+
+int CWM_OS_dbgOutput(const char * format)
+{
+    PRINT("%s", format); 
+#ifdef SUPPORT_CYWEE_BLE_SERVICE
+    if(cywee_ble_service_flag == 1)
+        ble_cywee_server_send_input_report((uint8_t *)format,strlen(format));
+#endif
+    return 0;
+}
+
+int CWM_OS_dbgOutput_checkLog(const char * format)
+{
+    static int s_sn = 0;
+    PRINT("#_#|%d|%s", s_sn, format);
+    s_sn ++;
+    return 0;
+}
+
+int CWM_OS_dbgPrintf(const char * format,...)
+{
+    char InputBuff[255];
+    va_list    args;
+
+    va_start(args, format);
+
+    vsprintf(InputBuff, format, args);
+
+    va_end(args);
+    CWM_OS_dbgOutput(InputBuff);
+    return 0;
+}
@@ -1,3 +1,11 @@
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-05-19 14:25:40
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-20 10:56:40
+ * @FilePath: /FD230/code/sdk/zhihui/drivers/cywee/dml/cywee_dml.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
 /**
  * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
  *
@@ -7,8 +15,8 @@
  * 2022-08-16, Create file. \n
  */
 
-#ifndef CYWEE_HAL_H__
-#define CYWEE_HAL_H__
+#ifndef CYWEE_DML_H__
+#define CYWEE_DML_H__
 
 #ifdef __cplusplus
 #if __cplusplus
@@ -18,8 +26,7 @@ extern "C" {
 
 #include "stdint.h"
 #include "errcode.h"
-
-
+#include "cywee_hal.h"
 
 extern uint64_t CWM_OS_GetTimeNs(void);
 extern int CWM_OS_dbgOutput(const char * format);
@@ -135,12 +142,6 @@ typedef struct
     int sub_mode_number;// int[2] = sub_mode_number (預設: 0) 
 }set_activity_mode_t;
 
-typedef struct {
-    float x;
-    float y;
-    float z;
-} gsenson_t;
-
 #if  1
 
 /**
@@ -447,34 +448,6 @@ typedef struct
 }input_sensor_config_t;
 
 #pragma pack(1)
-typedef struct 
-{
-    int activity_mode;//模式
-    int steps;//步数
-    int distance;//距离
-    int calories;//卡路里
-    int step_frequency;//步频
-    float step_length;//步幅
-    int pace;//配速
-    int BMR_calories;//基础卡路里
-    // int hrs;//心率
-    int duration;//持续时间
-    int MHR_zone;//心率区间
-}cywee_activity_result_t;
-
-typedef struct 
-{
-    int avg_step_freq;//平均步频
-    float avg_step_len;//平均步长
-    int avg_pace;//平均配速
-    int max_step_freq;//最大步频
-    int max_pace;//最大配速
-    int activity_zone;//活动程度区间 0低度 1中度 2高度
-    int ativity_zone_moderate_duration;//中度活动时间
-    int ativity_zone_high_duration;//高度活动时间
-    int MHR_zone;//心率区间
-    int distance_motion;//体感距离
-}cywee_activity_result_extre_info_t;
 
 typedef struct 
 {
@@ -504,102 +477,87 @@ typedef struct
 
 } SLEEP_STAT_T;
 
-#pragma pack()
-typedef enum{
-    CYWEE_MSG_TYPE_ACTIVITY_UPDATE,
-    CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,
-    CYWEE_MSG_TYPE_INACTIVITY_UPDATE,
-    CYWEE_MSG_TYPE_INACTIVITY_ACCUMULATE_TIME_UPDATE,
-} cywee_msg_type_t;
-
-extern void get_gsonsen_xyz(gsenson_t *t);
-void gsensor_get_n_data(uint8_t cnt,gsenson_t t[]);
-
-typedef void (*cywee_msg_callback_t)(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen);
-uint32_t cywee_register_msg_callback(cywee_msg_callback_t func);
-cywee_msg_callback_t cywee_get_send_msg_callback_func(void);
-
-void activity_mode_setstatus(int cmd);
-void cywee_oncharging_update(int oncharging_status);
-void cywee_wearstatus_update(int wearstatus);
-void cywee_hrs_update(void);
-void cywee_set_user_info(void);
-void cywee_get_sleep_data(int cmd);
-void cywee_reset_daily_data(void);
-void cywee_inactivity_mode_change(int mode);
-void cywee_activity_mode_change(int mode);
-void cywee_time_sync(void);
-void cywee_hand_updown_switch(int cmd);
-void cywee_ar_alert_switch(int cmd);
-
-void step_history_save(uint32_t);
-uint32_t get_step_data(void);
-void set_step_data(uint32_t data);
-
-void stand_history_save(uint32_t);
-void calories_history_save(uint32_t);
-void distances_history_save(uint32_t);
-void fat_history_save(uint32_t);
-int32_t get_now_hour_data(void*value, uint8_t type);
-
-void cywee_goal_history_save(void);
-
-
-void set_stand_falg(void);
-uint8_t get_stand_falg(void);
-uint8_t get_now_stand_count(void);
-void set_calories_data(uint32_t data);
-int get_calories_data(void);
-
-void set_distance_data(uint32_t data);
-int get_distance_data(void );
-
-void set_fat_time_data(int time);
-int get_fat_time_data(void);
-
-void cywee_get_chipinfo(char *databuf,uint8_t len);
-void cywee_set_sedentary_interval(int interval);
-void cywee_set_sedentary_switch(int cmd);
-void cywee_get_acc_switch(int cmd);
-void cywee_stop(void);
-uint8_t cywee_get_active_state(void);
-uint8_t cywee_get_static_state(void);
-void cywee_restart_acc(void);
-void cywee_log_switch(int cmd);
-void cywee_get_version(char *databuf,uint8_t len);
-void cywee_save_data(void);
-
-void cywee_save_sleep_stat_data(void);
-
-void cywee_custom_save_sleep_data(void);
-void cywee_custom_save_nap_data(void);
-void cywee_reset_history_daily_data(void);
-void cywee_check_acc(void);
-
-void cywee_custom_save_wear_data(void);
-#pragma pack()
+typedef struct
+{
+    uint32_t fall_asleep_timestamp; // 入睡
+    uint32_t wake_up_timestamp;     // 出睡
+    uint16_t total_time;            // 总时长
+} NAP_T;
 
+typedef struct
+{
+    uint32_t fall_asleep_timestamp; // 入睡
+    uint32_t wake_up_timestamp;     // 出睡
+    uint16_t total_time;            // 总时长
+} SLEEP_T;
 
+#pragma pack()
 
 
+void cywee_dml_get_gsensor_data(uint8_t cnt,gsenson_t t[]);
 
+void cywee_dml_activity_mode_setstatus(int cmd);
+void cywee_dml_oncharging_update(int oncharging_status);
+void cywee_dml_wearstatus_update(int wearstatus);
+void cywee_hrs_update(void);
+void cywee_dml_set_user_info(void);
+void cywee_dml_get_sleep_data(int cmd);
+void cywee_dml_reset_daily_data(void);
+void cywee_inactivity_mode_change(int mode);
+void cywee_dml_activity_mode_change(int mode);
+void cywee_dml_time_sync(void);
+void cywee_dml_hand_updown_switch(int cmd);
+void cywee_dml_ar_alert_switch(int cmd);
+
+void cywee_dml_step_history_save(uint32_t time);
+uint32_t cywee_dml_get_step_data(void);
+void cywee_dml_set_step_data(uint32_t data);
+
+void cywee_dml_stand_history_save(uint32_t time);
+void cywee_dml_calories_history_save(uint32_t time);
+void cywee_dml_distances_history_save(uint32_t time);
+void cywee_dml_fat_history_save(uint32_t time);
+int32_t cywee_dml_get_now_hour_data(void*value, uint8_t type);
+
+void cywee_dml_set_stand_falg(void);
+uint8_t cywee_dml_get_stand_falg(void);
+uint8_t cywee_dml_get_now_stand_count(void);
+void cywee_dml_set_calories_data(uint32_t data);
+int cywee_dml_get_calories_data(void);
+
+void cywee_dml_set_distance_data(uint32_t data);
+int cywee_dml_get_distance_data(void );
+
+void cywee_dml_set_fat_time_data(int time);
+int cywee_dml_get_fat_time_data(void);
+
+void cywee_dml_get_chipinfo(char *databuf,uint8_t len);
+void cywee_dml_set_sedentary_interval(int interval);
+void cywee_dml_set_sedentary_switch(int cmd);
+// void cywee_get_acc_switch(int cmd);
+void cywee_sensor_stop(void);
+uint8_t cywee_dml_get_active_state(void);
+uint8_t cywee_dml_get_static_state(void);
+void cywee_dml_restart_acc(void);
+void cywee_dml_log_switch(int cmd);
+void cywee_dml_get_version(char *databuf,uint8_t len);
+void cywee_dml_save_data(void);
+void cywee_dml_save_sleep_data(void);
+void cywee_dml_save_nap_data(void);
+void cywee_dml_reset_history_daily_data(void);
+void cywee_dml_check_acc(void);
 
+void cywee_custom_save_wear_data(void);
+#pragma pack()
 
 /********************CYWEE  DML*********************/
 
 
-
-
-
-
-
-
-
 int cywee_main_dml(void);
-void cywee_int_handler(void);
-
-
+void cywee_dml_int_handler(void);
 
+act_result_t cywee_dml_get_act_data(void);
+act_ext_result_t cywee_dml_get_act_ext_data(void);
 
 #ifdef __cplusplus
 #if __cplusplus
similarity index 85%
rename from code/sdk/zhihui/drivers/cywee/src/main_dml.c
rename to code/sdk/zhihui/drivers/cywee/dml/main_dml.c
index 87fee83..02348bf 100644 (file)
@@ -10,7 +10,6 @@
 #include "cmsis_os2.h"
 #include "osal_msgqueue.h"
 #include "osal_mutex.h" 
-#include "ppg_service.h"
 #include "custom_utils.h"
 #include "sys/time.h"
 #include "time.h"
 #include "time.h"
 #include "ConfigModelC.h"
 #include "battery_hal.h"
-#ifdef FD230
-#include "sleep/include/SleepModelC.h"
-#endif
+
 #include "custom_save_runtime.h"
 
+#include <sys/stat.h>
+
 #ifdef SUPPORT_GNSS
 #include "gnss_ctl.h"
 #include "NMEA0183.h"
 
 #ifdef SUPPORT_PPG_SERVICE
 #include "ppg_hal.h"
+#include "ppg_service.h"
 #endif
 
-#ifdef SUPPORT_BLE_SERVICE
-#include "bleInstruct.h"
-#endif
+#include "cywee_dml.h"
+
+#include "cywee_hal.h"
 
 
 #define AP_ENABLE_DML_SDO_LISTEN
 
 #define GSENSON_MSG_COUNT   64
 
-#define SLEEP_TIME_PATH "/user/userdata/sleep/%s/sleep_time.bin"
-#define SLEEP_STATUS_PATH "/user/userdata/sleep/%s/sleep_status.bin"
-
-#define NAP_PATH "/user/userdata/sleep/%s/nap.bin"
-#define SLEEP_DIR_PATH "/user/userdata/sleep/%s"
-
-#define SLEEP_DATA_DIR "/user/userdata/sleep/"
-
 #define SLEEP_STATUS_LENGTH 50
 
 #define WEAR_FILE_COUNT 50
 
 
-static gsenson_t gxyz_t;
 static uint8_t gsenson_falg=0;
 
 static uint16 num_falg=0;
@@ -144,8 +135,24 @@ static uint8_t wake_up_flag = 0;
 
 static osTimerId_t g_sport_timer = NULL;
 static bool g_sport_stat = false;
+
+static act_result_t c_activity_result_t = {0};
+static cywee_inactivity_result_t c_inactivity_result_t = {0};
+static cywee_inactivity_accumulate_time_t c_inactivity_accumulate_time_t = {0};
+static act_ext_result_t c_activity_result_extre_info_t = {0};
+
 #define SPORT_CHECK_MS 1000
 
+
+#ifdef CYWEE_MAC_ACTIVE
+int cm__hs1__mac_c1_init(void);
+int cm__hs1__deinit(void);
+
+#else 
+int cm__hs1__init(void);
+int cm__hs1__deinit(void);
+#endif
+
 void cywee_gnss_update(void)
 {
 #ifdef SUPPORT_GNSS
@@ -174,7 +181,6 @@ void cywee_gnss_update(void)
 #endif
 }
 
-
 void cywee_hrs_update(void)
 {
     uint8_t hrs_data = 0;
@@ -220,17 +226,7 @@ static void cywee_sport_timer_stop_check(void)
     }
 }
 
-
-#ifdef CYWEE_MAC_ACTIVE
-int cm__hs1__mac_c1_init(void);
-int cm__hs1__deinit(void);
-
-#else 
-int cm__hs1__init(void);
-int cm__hs1__deinit(void);
-#endif
-
-void get_sleep_file_day(char *day)
+static void get_sleep_file_day(char *day)
 {
     uint32_t sleep_time = get_sleep_time_from_config_model();
     uint32_t wake_up_time = get_wake_up_time_from_config_model();
@@ -258,11 +254,11 @@ void get_sleep_file_day(char *day)
         uapi_get_YYMMDD_Time_extend(day, '\0', 0);
 }
 
-void cywee_check_acc(void)
+void cywee_dml_check_acc(void)
 {
     if(!timeout)
     {
-        cywee_restart_acc();
+        cywee_dml_restart_acc();
     }
     else
     {
@@ -345,7 +341,7 @@ void cywee_save_nap_data(cywee_inactivity_accumulate_time_t c_inactivity_accumul
     update_nap_data(fall_asleep_timestamp,wake_up_timestamp,total_time);
 }
 
-void cywee_set_sleep_time_data(cywee_inactivity_accumulate_time_t *sleep_data)
+static void cywee_set_sleep_time_data(cywee_inactivity_accumulate_time_t *sleep_data)
 {
     memset(&sleep_time, 0, sizeof(cywee_inactivity_accumulate_time_t));
     memcpy_s(&sleep_time, sizeof(cywee_inactivity_accumulate_time_t), sleep_data, sizeof(cywee_inactivity_accumulate_time_t));
@@ -433,11 +429,11 @@ void cywee_save_sleep_time_data(cywee_inactivity_accumulate_time_t sleep_time)
     // CWM_OS_dbgPrintf("total_time[%d], total_deep_sleep_time[%d], total_mild_sleep_time[%d], total_rem_sleep_time[%d], total_wake_time[%d] \n",
     // total_time,total_deep_sleep_time,total_mild_sleep_time,total_rem_sleep_time,total_wake_time);
 
-    update_sleep_data(fall_asleep_timestamp,wake_up_timestamp,total_time);
+    // update_sleep_data(fall_asleep_timestamp,wake_up_timestamp,total_time);
 
 }
 
-void cywee_save_sleep_stat_data(void)
+static void cywee_save_sleep_stat_data(void)
 {
     memset(status_file_path, 0, sizeof(status_file_path));
     char day[12] = {0};
@@ -521,7 +517,7 @@ void cywee_set_sleep_stat_data(cywee_inactivity_result_t c_inactivity_result_t)
     }
 }
 
-void cywee_set_abs_static(void)
+static void cywee_set_abs_static(void)
 {
     //int time = get_config_heart_from_config_model();
     memset(&scl, 0, sizeof(scl));
@@ -530,7 +526,7 @@ void cywee_set_abs_static(void)
     CWM_SettingControl(SCL_ABS_STATIC_CONFIG, &scl);
 }
 
-void cywee_log_switch(int cmd)
+void cywee_dml_log_switch(int cmd)
 {
     if(cmd)
     {
@@ -552,7 +548,7 @@ void cywee_log_switch(int cmd)
 }
 
 
-void cywee_restart_acc(void)
+void cywee_dml_restart_acc(void)
 {
     uint32_t tm = 0;
     uapi_get_timestampe_ss(&tm);
@@ -569,17 +565,17 @@ void cywee_restart_acc(void)
     CWM_SettingControl(SCL_DML_DRV_ENABLE, &scl);
 }
 
-uint8_t cywee_get_static_state(void)
+uint8_t cywee_dml_get_static_state(void)
 {
     return is_static_state;
 }
 
-uint8_t cywee_get_active_state(void)
+uint8_t cywee_dml_get_active_state(void)
 {
     return cywee_is_active;
 }
 
-void cywee_stop(void)
+void cywee_sensor_stop(void)
 {
     // cywee_switch = 0;
     memset(&scl, 0, sizeof(scl));
@@ -589,11 +585,7 @@ void cywee_stop(void)
     CWM_SettingControl(SCL_DML_DRV_ENABLE, &scl);
 }
 
-void cywee_get_acc_switch(int cmd)
-{
-}
-
-void cywee_set_sedentary_switch(int cmd)
+void cywee_dml_set_sedentary_switch(int cmd)
 {
     // CWM_OS_dbgPrintf("cywee_set_sedentary_switch : %d \n",cmd);
     //设置久坐 0关,1开
@@ -603,22 +595,22 @@ void cywee_set_sedentary_switch(int cmd)
     CWM_SettingControl(SCL_SEDENTARY, &scl);
 }
 
-void cywee_set_sedentary_interval(int interval)
+void cywee_dml_set_sedentary_interval(int interval)
 {
     sedentary_interval = interval;
 }
 
-void cywee_get_chipinfo(char *databuf,uint8_t len)
+void cywee_dml_get_chipinfo(char *databuf,uint8_t len)
 {
     memcpy_s(databuf,len,chipInfo,strlen(chipInfo));
 }
 
-void cywee_get_version(char *databuf,uint8_t len)
+void cywee_dml_get_version(char *databuf,uint8_t len)
 {
     memcpy_s(databuf,len,cywee_version,strlen(cywee_version));
 }
 
-void cywee_save_data(void)
+void cywee_dml_save_data(void)
 {
     if(uapi_dev_runtime_get_goal_storage_status())
     {
@@ -627,7 +619,6 @@ void cywee_save_data(void)
     }
     uapi_dev_runtime_set_goal_storage_status(1);
     
-#ifdef SUPPORT_BLE_SERVICE
     int step=history_step+stepcount;
     CWM_OS_saveData(&step,sizeof(int),CYWEE_SAVE_DATA_STEP);
     CWM_OS_OneHourAgo_saveData(&history_step_,sizeof(int),CYWEE_SAVE_DATA_STEP);
@@ -644,13 +635,12 @@ void cywee_save_data(void)
     int fat=history_fat+new_fat;
     CWM_OS_saveData(&fat,sizeof(int),CYWEE_SAVE_DATA_FAT);
     CWM_OS_OneHourAgo_saveData(&history_fat_,sizeof(uint16_t),CYWEE_SAVE_DATA_FAT);
-#endif
+
     uapi_dev_runtime_set_goal_storage_status(0);
 }
 
-void cywee_restoreData(void)
+static void cywee_restoreData(void)
 {
-#ifdef SUPPORT_BLE_SERVICE
     CWM_OS_restoreData(&history_step,sizeof(int),CYWEE_SAVE_DATA_STEP);
     CWM_OS_OneHourAgo_restoreData(&history_step_,sizeof(int),CYWEE_SAVE_DATA_STEP);
 
@@ -664,146 +654,94 @@ void cywee_restoreData(void)
     CWM_OS_restoreData(&history_fat,sizeof(int),CYWEE_SAVE_DATA_FAT);
     CWM_OS_OneHourAgo_restoreData(&history_fat_,sizeof(uint16_t),CYWEE_SAVE_DATA_FAT);
    
-#endif
-    //WM_OS_restoreData(int* data, uint32_t len,uint8_t type)(int* data, uint32_t len,uint8_t type);
+
+    //CWM_OS_restoreData(int* data, uint32_t len,uint8_t type)(int* data, uint32_t len,uint8_t type);
 }
 
-void set_step_data(uint32_t data)
+void cywee_dml_set_step_data(uint32_t data)
 {
     stepcount=data;
 }
 
-
-uint32_t get_step_data(void)
+uint32_t cywee_dml_get_step_data(void)
 {
-   
     return stepcount+history_step;
 }
 
-
-
-int get_calories_data(void)
+int cywee_dml_get_calories_data(void)
 {
     return new_calories+history_calories;
 }
-void set_calories_data(uint32_t data)
+void cywee_dml_set_calories_data(uint32_t data)
 {
     new_calories=data;
 }
 
 
-void set_distance_data(uint32_t data)
+void cywee_dml_set_distance_data(uint32_t data)
 {
     new_distance=data;
 }
 
-int get_distance_data(void )
+int cywee_dml_get_distance_data(void )
 {
     return new_distance+history_distances;
 }
 
-void set_fat_time_data(int time)
+void cywee_dml_set_fat_time_data(int time)
 {
     new_fat += time;
 }
 
-int get_fat_time_data(void)
+int cywee_dml_get_fat_time_data(void)
 {
     return new_fat+history_fat;
 }
 
-
-
-void set_stand_falg(void)
+void cywee_dml_set_stand_falg(void)
 {
     stand_falg=1;
 }
 
-uint8_t get_stand_falg(void)
+uint8_t cywee_dml_get_stand_falg(void)
 {
     return stand_falg;
 }
 
-uint8_t get_now_stand_count(void)
+uint8_t cywee_dml_get_now_stand_count(void)
 {
     return get_stand_count();
 }
-void stand_history_save(uint32_t time) {
+void cywee_dml_stand_history_save(uint32_t time) {
     // CWM_OS_dbgPrintf("stand_history is saving\n");
     CWM_OS_saveData_STAND_history(&stand_falg,sizeof(int),time);
 }
 
-void step_history_save(uint32_t time)
-{
-#ifdef SUPPORT_BLE_SERVICE
-    int data = get_step_data();
-    // CWM_OS_dbgPrintf("step_history is saving\n");
-    CWM_OS_saveData_history(&data,&history_step_,sizeof(int),CYWEE_SAVE_DATA_STEP,time);
-#endif
-}
-
-
-void calories_history_save(uint32_t time)
-{
-#ifdef SUPPORT_BLE_SERVICE
-    int data= get_calories_data();
-    float history_calories = (float)data;
-    // CWM_OS_dbgPrintf("history_calories is saving\n");
-    CWM_OS_saveData_history(&history_calories,&history_calories_,sizeof(float),CYWEE_SAVE_DATA_CALORIES,time);
-#endif
-}
-
-void distances_history_save(uint32_t time)
-{
-#ifdef SUPPORT_BLE_SERVICE
-    int data= get_distance_data();
-    float history_distances_now = (float)data / 1000.0;
-    // CWM_OS_dbgPrintf("history_distances is saving\n");
-    CWM_OS_saveData_history(&history_distances_now,&history_distances_,sizeof(float),CYWEE_SAVE_DATA_DISTANCE,time);
-#endif
-}
-
-void fat_history_save(uint32_t time)
-{
-#ifdef SUPPORT_BLE_SERVICE
-    int data= get_fat_time_data();
-    int16_t temp_data=0;
-    temp_data = data / 60;
-    // CWM_OS_dbgPrintf("history_fat is saving\n");
-    if(temp_data-history_fat_>60 || temp_data-history_fat_<0)
-    {   
-        history_fat_=0;
-        return;
-    }
-    CWM_OS_saveData_history(&temp_data,&history_fat_,sizeof(uint16_t),CYWEE_SAVE_DATA_FAT,time);
-#endif
-}
 
-int32_t get_now_hour_data(void*value, uint8_t type)
+int32_t cywee_dml_get_now_hour_data(void*value, uint8_t type)
 {   
     int data;
     float f_data;
     int16_t data_;
     switch (type)
     {
-#ifdef SUPPORT_BLE_SERVICE
         case CYWEE_SAVE_DATA_STEP:
           
-            data= get_step_data()-history_step_;
+            data = cywee_dml_get_step_data()-history_step_;
             if(data<0)
             return 0;
             memcpy_s(value,4,&data,4);
             return 1;
 
         case CYWEE_SAVE_DATA_CALORIES:
-            data =get_calories_data();
+            data = cywee_dml_get_calories_data();
             f_data=(float)data-history_calories_;
             if(f_data<0)
             return 0;
             memcpy_s(value,4,&f_data,4);
             return 1;
         case CYWEE_SAVE_DATA_DISTANCE:
-            data= get_distance_data();
+            data= cywee_dml_get_distance_data();
             f_data=(float)data/1000.0-history_distances_;
             if(f_data<0)
             return 0;
@@ -811,31 +749,58 @@ int32_t get_now_hour_data(void*value, uint8_t type)
             return 1;
 
         case CYWEE_SAVE_DATA_FAT:
-            data= get_fat_time_data();
+            data= cywee_dml_get_fat_time_data();
             data_=data/60-history_fat_;
             if(data_<0 || data_>60)
             return 0;
             memcpy_s(value,2,&data_,2);
             return 1;
-#endif
     default:
         break;
     }
     return 0;
 }
 
-void cywee_goal_history_save(void)
+
+void cywee_dml_step_history_save(uint32_t time)
 {
-    // stand_history_save();
-    // calories_history_save();
-    // fat_history_save();
-    // distances_history_save();
-    // step_history_save();
+    int data = get_step_data();
+    // CWM_OS_dbgPrintf("step_history is saving\n");
+    CWM_OS_saveData_history(&data,&history_step_,sizeof(int),CYWEE_SAVE_DATA_STEP,time);
 }
 
 
+void cywee_dml_calories_history_save(uint32_t time)
+{
+    int data = cywee_dml_get_calories_data();
+    float history_calories = (float)data;
+    // CWM_OS_dbgPrintf("history_calories is saving\n");
+    CWM_OS_saveData_history(&history_calories,&history_calories_,sizeof(float),CYWEE_SAVE_DATA_CALORIES,time);
+}
+
+void cywee_dml_distances_history_save(uint32_t time)
+{
+    int data= cywee_dml_get_distance_data();
+    float history_distances_now = (float)data / 1000.0;
+    // CWM_OS_dbgPrintf("history_distances is saving\n");
+    CWM_OS_saveData_history(&history_distances_now,&history_distances_,sizeof(float),CYWEE_SAVE_DATA_DISTANCE,time);
+}
 
-void cywee_ar_alert_switch(int cmd)
+void cywee_dml_fat_history_save(uint32_t time)
+{
+    int data= cywee_dml_get_fat_time_data();
+    int16_t temp_data=0;
+    temp_data = data / 60;
+    // CWM_OS_dbgPrintf("history_fat is saving\n");
+    if(temp_data-history_fat_>60 || temp_data-history_fat_<0)
+    {   
+        history_fat_=0;
+        return;
+    }
+    CWM_OS_saveData_history(&temp_data,&history_fat_,sizeof(uint16_t),CYWEE_SAVE_DATA_FAT,time);
+}
+
+void cywee_dml_ar_alert_switch(int cmd)
 {
     memset(&scl, 0, sizeof(scl));
     scl.iData[0] = 1;
@@ -843,7 +808,7 @@ void cywee_ar_alert_switch(int cmd)
     CWM_SettingControl(SCL_AR_ALERT_CONFIG, &scl);
 }
 
-void cywee_hand_updown_switch(int cmd)
+void cywee_dml_hand_updown_switch(int cmd)
 {
     if(cmd == 1)
         CWM_Sensor_Enable(IDX_ALGO_WATCH_HANDUP);
@@ -851,7 +816,7 @@ void cywee_hand_updown_switch(int cmd)
         CWM_Sensor_Disable(IDX_ALGO_WATCH_HANDUP);
 }
 
-void cywee_reset_history_daily_data(void)
+void cywee_dml_reset_history_daily_data(void)
 {
     stepcount=0;
     new_distance=0;
@@ -870,7 +835,7 @@ void cywee_reset_history_daily_data(void)
     // new_fat = 0; //当前燃脂数据
 }
 
-void cywee_reset_daily_data(void)
+void cywee_dml_reset_daily_data(void)
 {
     memset(&scl, 0, sizeof(scl));
     CWM_SettingControl(SCL_RESET_DAILY_INFO, &scl);
@@ -882,7 +847,7 @@ void cywee_reset_daily_data(void)
 }
 
 //INT[1] : 0 立即输出,但不中止睡眠。 1 立即输出且中止睡眠
-void cywee_get_sleep_data(int cmd)
+void cywee_dml_get_sleep_data(int cmd)
 {
     // CWM_OS_dbgPrintf("cywee_get_sleep_data\n");
     memset(&scl, 0, sizeof(scl));
@@ -892,7 +857,7 @@ void cywee_get_sleep_data(int cmd)
 }
 
 //1.age 2.sex 3.weight 4.height 5.method
-void cywee_set_user_info(void)
+void cywee_dml_set_user_info(void)
 {
     int user_info[5] = {0};
     get_user_info_from_config_model(user_info);
@@ -916,7 +881,7 @@ void cywee_set_user_info(void)
     int minute;// int[5] = minute (0 - 59)
     int second;// int[6] = second (0 - 59)
 */
-void cywee_time_sync(void)
+void cywee_dml_time_sync(void)
 {
     time_t rawtime;
     struct tm* timeinfo;
@@ -947,7 +912,7 @@ void cywee_time_sync(void)
     uapi_create_folder(dir_path);
 }
 
-void cywee_oncharging_update(int oncharging_status)
+void cywee_dml_oncharging_update(int oncharging_status)
 {
     // CWM_OS_dbgPrintf("oncharging : %d\r\n",oncharging_status);
     memset(&csd, 0, sizeof(CUSTOM_ON_CHARGING));
@@ -956,7 +921,7 @@ void cywee_oncharging_update(int oncharging_status)
     CWM_CustomSensorInput(&csd);
 }
 
-void cywee_wearstatus_update(int wearstatus)
+void cywee_dml_wearstatus_update(int wearstatus)
 {
 #if 1
     uapi_dev_runtime_set_wear_status(wearstatus);
@@ -967,13 +932,11 @@ void cywee_wearstatus_update(int wearstatus)
     CWM_CustomSensorInput(&csd);
     // CWM_OS_dbgPrintf("111wearstatus : %d\r\n",wearstatus);
 
-    do_custom_fileoperate_service_check_msg(  
-            CUSTOM_FILEOPERATE_MSG_TYPE_WEAR_DATA_SAVE, NULL, 0);  
 #endif
 }
 
 //0:resume , 1:pause
-void activity_mode_setstatus(int cmd)
+void cywee_dml_activity_mode_setstatus(int cmd)
 {
     memset(&scl, 0, sizeof(scl));
     scl.iData[0] = 1;
@@ -982,19 +945,23 @@ void activity_mode_setstatus(int cmd)
 
     if(hrs_mode_state == 0)
     {
+#ifdef SUPORT_PPG_SERVICE
         send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_TEST);
+#endif
         hrs_mode_state = 1;
         uapi_save_runtime_log(RUNTIME_LOG_HEART_SPORT_MEASURE);
     }
     else
     {
+#ifdef SUPORT_PPG_SERVICE
         send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);
+#endif
         hrs_mode_state = 0;
         uapi_save_runtime_log(RUNTIME_LOG_OXYGEN_SPORT_MEASURE_END);
     }
 }
 
-void cywee_inactivity_mode_change(int mode)
+void cywee_dml_inactivity_mode_change(int mode)
 {
     // cywee_time_sync();
     clean_sleep_data();
@@ -1065,7 +1032,7 @@ void cywee_inactivity_mode_change(int mode)
     }
 }
 
-void cywee_activity_mode_change(int mode)
+void cywee_dml_activity_mode_change(int mode)
 {
     if(mode != SPORT_ACTIVE_MODE_NORMAL)
         cywee_sport_timer_start_check(SPORT_CHECK_MS);
@@ -1132,21 +1099,11 @@ void cywee_activity_mode_change(int mode)
     }
 }
 
-void get_gsonsen_xyz(gsenson_t *t)
+void cywee_dml_get_gsensor_data(uint8_t cnt,gsenson_t t[])
 {
-        // if(osal_mutex_trylock(&mutex_gsenson_queue)==0)
-        // {
-        //     CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
-        //     return;
-        // }
-        t->x = gxyz_t.x;
-        t->y = gxyz_t.y;
-        t->z = gxyz_t.z;
-        //osal_mutex_unlock(&mutex_gsenson_queue);
-}
+    if(t == NULL)
+        return;
 
-void gsensor_get_n_data(uint8_t cnt,gsenson_t t[])
-{
     for(int i=0;i<cnt;i++)
     {
         // if(osal_mutex_trylock(&mutex_gsenson_queue)==0)
@@ -1178,16 +1135,9 @@ void gsensor_get_n_data(uint8_t cnt,gsenson_t t[])
 //static int flag=32;
 void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
     // cywee_msg_callback_t cywee_func;
-    cywee_activity_result_t c_activity_result_t;
-    cywee_inactivity_result_t c_inactivity_result_t;
-    cywee_inactivity_accumulate_time_t c_inactivity_accumulate_time_t;
-    cywee_activity_result_extre_info_t c_activity_result_extre_info_t;
     uint32_t tm = 0;
     switch (sensorEVT->sensorType) {
         case IDX_ACCEL:
-        gxyz_t.x = sensorEVT->fData[0];
-        gxyz_t.y = sensorEVT->fData[1];
-        gxyz_t.z = sensorEVT->fData[2];
 
         CWM_OS_dbgPrintf("acc: x=%.3f, y=%.3f, z=%.3f\n",
                                                    sensorEVT->fData[0],
@@ -1297,14 +1247,18 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 CWM_OS_dbgPrintf("CUSTOM_HEARTRATE !!! \r\n");
                 if((int)sensorEVT->fData[2] == 1)
                 {
+#ifdef SUPORT_PPG_SERVICE
                     send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_TEST);
+#endif
                     hrs_mode_state = 1;
                     uapi_save_runtime_log(RUNTIME_LOG_HEART_SPORT_MEASURE);
                     // hrs = 0;//运动开始,清零心率
                 }
                 else
                 {
+#ifdef SUPORT_PPG_SERVICE
                     send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);
+#endif
                     hrs_mode_state = 0;
                     uapi_save_runtime_log(RUNTIME_LOG_OXYGEN_SPORT_MEASURE_END);
                 }
@@ -1477,7 +1431,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
             // cywee_func = cywee_get_send_msg_callback_func();
             if((int)sensorEVT->fData[0] == 100)
             {
-                memset(&c_activity_result_extre_info_t,0,sizeof(cywee_activity_result_extre_info_t));
+                memset(&c_activity_result_extre_info_t,0,sizeof(act_ext_result_t));
 
                 c_activity_result_extre_info_t.avg_step_freq = (int)sensorEVT->fData[1];
                 c_activity_result_extre_info_t.avg_step_len = (float)sensorEVT->fData[2];
@@ -1490,12 +1444,12 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_activity_result_extre_info_t.MHR_zone = (int)sensorEVT->fData[13];
                 c_activity_result_extre_info_t.distance_motion = (int)sensorEVT->fData[14];
 
-                // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,&c_activity_result_extre_info_t,sizeof(cywee_activity_result_extre_info_t));
-                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(cywee_activity_result_extre_info_t));
+                // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,&c_activity_result_extre_info_t,sizeof(act_ext_result_t));
+                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(act_ext_result_t));
 
             }else if((int)sensorEVT->fData[0] == 5001)
             {
-                memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t));
+                memset(&c_activity_result_t,0,sizeof(act_result_t));
 
                 c_activity_result_t.activity_mode = (int)sensorEVT->fData[0];
                 c_activity_result_t.calories = (int)sensorEVT->fData[1];
@@ -1503,8 +1457,8 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_activity_result_t.MHR_zone = (int)sensorEVT->fData[6];
                 // c_activity_result_t.hrs = hrs;
                 // hrs = 0; //每次上报完 清除心率值
-                // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+                // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(act_result_t));
+                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
 
             }else if((int)sensorEVT->fData[0] == 102)
             {
@@ -1515,7 +1469,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 
             }else{
                 stepcount = (int)sensorEVT->fData[1];
-                memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t));
+                memset(&c_activity_result_t,0,sizeof(act_result_t));
                 c_activity_result_t.activity_mode = (int)sensorEVT->fData[0];
                 c_activity_result_t.steps = stepcount;
                 c_activity_result_t.distance = (int)sensorEVT->fData[2];
@@ -1525,8 +1479,8 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_activity_result_t.pace = (int)(sensorEVT->fData[7] * 60);
                 // c_activity_result_t.hrs = hrs;
                 // hrs = 0; //每次上报完 清除心率值
-                // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+                // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(act_result_t));
+                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
                 //CustomEventPublish(TOPIC_EVENT_STEPDATA_UPDATE,&stepcount,sizeof(int)); 
             }
             break;
@@ -1556,13 +1510,13 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                     // sleep_flag_t.timestamp = abs_static_timestampe;
                     // uapi_save_sleep_flag(&sleep_flag_t,sizeof(SLEEP_FLAG_T));
                     uapi_dev_runtime_set_absolute_static_status(1);
-                    cywee_get_sleep_data(1);
+                    cywee_dml_get_sleep_data(1);
                 }  
                 else
                 {
-                    cywee_inactivity_mode_change(INACTIVITY_MODE_NOTHING);
+                    cywee_dml_inactivity_mode_change(INACTIVITY_MODE_NOTHING);
                     LOS_Msleep(50);
-                    cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
+                    cywee_dml_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
                 }
             }
 
@@ -1629,11 +1583,6 @@ void CWM_AP_dmlSensorDataOutput_listen(const dml_sensorData_t * pSdo)
             rawdata[AccdataCount].acc_y = pSdo->acc_data[1];
             rawdata[AccdataCount].acc_z = pSdo->acc_data[2];
 
-            gxyz_t.x = pSdo->acc_data[0];
-            gxyz_t.y = pSdo->acc_data[1];
-            gxyz_t.z = pSdo->acc_data[2];
-
-  
             if(num_falg==GSENSON_MSG_COUNT)
             {
                 left_falg++;
@@ -1941,7 +1890,7 @@ int cywee_main_dml(void)
     CWM_SettingControl(SCL_INACTIVITY_CONFIG, &scl);
 
     //设置运动识别
-    cywee_ar_alert_switch(get_motion_recognition_from_config_model());
+    cywee_dml_ar_alert_switch(get_motion_recognition_from_config_model());
 
     //设置绝对静止
     cywee_set_abs_static();
@@ -1974,11 +1923,11 @@ int cywee_main_dml(void)
     //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
     cywee_restoreData();
 
-    cywee_set_user_info();
+    cywee_dml_set_user_info();
 
-    cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
+    cywee_dml_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
 
-    cywee_oncharging_update(get_charge_stat()); //初始化时检查充电状态
+    cywee_dml_oncharging_update(get_charge_stat()); //初始化时检查充电状态
 
     g_sport_timer = osTimerNew((osTimerFunc_t)cywee_service_check_timer_callback, osTimerPeriodic, NULL, NULL);
     //cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP);
@@ -2016,7 +1965,7 @@ int cwm_lib_process(void)   //运行算法
 
 #endif
 
-void cywee_int_handler(void)
+void cywee_dml_int_handler(void)
 {
     timeout = 1;
     // if(cywee_switch == 1)
@@ -2030,7 +1979,7 @@ void cywee_int_handler(void)
 
 }
 
-void cywee_custom_save_sleep_data(void)
+void cywee_dml_save_sleep_data(void)
 {
     uapi_dev_runtime_set_sleep_storage_status(1);
     cywee_save_sleep_time_data(sleep_time);
@@ -2038,14 +1987,14 @@ void cywee_custom_save_sleep_data(void)
     uapi_dev_runtime_set_sleep_storage_status(0);
 }
 
-void cywee_custom_save_nap_data(void)
+void cywee_dml_save_nap_data(void)
 {
     uapi_dev_runtime_set_sleep_storage_status(1);
     cywee_save_nap_data(sleep_time);
     uapi_dev_runtime_set_sleep_storage_status(0);
 }
 
-void wear_file_check(SLEEP_STAT_T newStruct, const char *filename) 
+void static wear_file_check(SLEEP_STAT_T newStruct, const char *filename) 
 {
     FILE *fp;
     uint16_t count = 0;
@@ -2084,7 +2033,6 @@ void wear_file_check(SLEEP_STAT_T newStruct, const char *filename)
     fclose(fp);
 }
 
-
 void cywee_custom_save_wear_data(void)
 {
     // int len = uapi_get_file_size("user/userdata/wear.bin");
@@ -2102,5 +2050,255 @@ void cywee_custom_save_wear_data(void)
     wear_file_check(data,"user/userdata/wear.bin");
 }
 
-uint8_t cywee_dml_get_steps(void)
-{return 0;}
+act_result_t cywee_dml_get_act_data(void)
+{
+    act_result_t data = {0};
+    memcpy_s(&data,sizeof(act_result_t),&c_activity_result_t,sizeof(act_result_t));
+    return data;
+}
+
+act_ext_result_t cywee_dml_get_act_ext_data(void)
+{
+    act_ext_result_t data = {0};
+    memcpy_s(&data,sizeof(act_ext_result_t),&c_activity_result_t,sizeof(act_ext_result_t));
+    return data;
+}
+
+void CWM_OS_restoreData(int* data, uint32_t len,uint8_t type)
+{
+    FILE * fp=NULL;
+    switch (type)
+    {
+    case CYWEE_SAVE_DATA_CALORIES:
+        fp  = fopen(CWM_CALORIES_DATA_PATH,"rb");
+        break;
+    case CYWEE_SAVE_DATA_STEP:
+        fp  = fopen(CWM_STEP_DATA_PATH,"rb");
+        break;
+    case CYWEE_SAVE_DATA_DISTANCE:
+        fp  = fopen(CWM_DISTANCE_DATA_PATH,"rb");
+        break;
+    case CYWEE_SAVE_DATA_FAT:
+        fp  = fopen(CWM_FAT_DATA_PATH,"rb");
+        break;
+    default:
+        break;
+    }
+
+
+    if(fp==NULL)
+    {
+        CWM_OS_dbgPrintf("%s open fail\n",CWM_HISTORY_DATA_PATH);;
+        return;
+    }
+    int ret =fread(data,1,len,fp);
+   
+    //CWM_OS_dbgPrintf("CWM_OS_restoreData fread failed %d %d\n",ret,*data);
+    
+    fclose(fp);
+}
+
+void CWM_OS_OneHourAgo_restoreData(void* data, uint32_t len,uint8_t type){
+
+
+    FILE * fp=NULL;
+    switch (type)
+    {
+    case CYWEE_SAVE_DATA_CALORIES:
+        fp  = fopen(CWM_CALORIES_DATA_PATH_AGO,"rb");
+        break;
+    case CYWEE_SAVE_DATA_STEP:
+        fp  = fopen(CWM_STEP_DATA_PATH_AGO,"rb");
+        break;
+    case CYWEE_SAVE_DATA_DISTANCE:
+        fp  = fopen(CWM_DISTANCE_DATA_PATH_AGO,"rb");
+        break;
+    case CYWEE_SAVE_DATA_FAT:
+        fp  = fopen(CWM_FAT_DATA_PATH_AGO,"rb");
+        break;
+    default:
+        break;
+    }
+
+
+    if(fp==NULL)
+    {
+        CWM_OS_dbgPrintf("%s open fail\n",CWM_HISTORY_DATA_PATH);;
+        return;
+    }
+    int ret =fread(data,1,len,fp);
+   
+    //CWM_OS_dbgPrintf("CWM_OS_restoreData fread failed %d %d\n",ret,*(int*)data);
+    
+    fclose(fp);
+}
+
+void CWM_OS_saveData(int* data, uint32_t len,uint8_t type){
+    
+     struct stat info;
+
+    if (stat(CWM_DATA_DIR_PATH, &info) != 0)
+    {
+        if (mkdir(CWM_DATA_DIR_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+        {
+            return ; // Failed to create folder
+        }
+    }
+    FILE * fp=NULL;
+    switch (type)
+    {
+    case CYWEE_SAVE_DATA_CALORIES:
+        fp  = fopen(CWM_CALORIES_DATA_PATH,"wb");
+        break;
+    case CYWEE_SAVE_DATA_STEP:
+        fp  = fopen(CWM_STEP_DATA_PATH,"wb");
+        break;
+    case CYWEE_SAVE_DATA_DISTANCE:
+        fp  = fopen(CWM_DISTANCE_DATA_PATH,"wb");
+        break;
+    case CYWEE_SAVE_DATA_FAT:
+        fp  = fopen(CWM_FAT_DATA_PATH,"wb");
+        break;
+
+    default:
+        break;
+    }
+    
+  
+
+    if(fp==NULL)
+    {
+        CWM_OS_dbgPrintf("%s open fail\n",CWM_STEP_DATA_PATH);
+        return;
+    }
+    int ret =fwrite(data,1,len,fp);
+   
+    CWM_OS_dbgPrintf("CWM_OS_saveData fwrite failed %d %d\n",ret,*data);
+    
+    fclose(fp);
+}
+
+
+void CWM_OS_OneHourAgo_saveData(void* data, uint32_t len,uint8_t type){
+    
+     struct stat info;
+
+    if (stat(CWM_DATA_DIR_PATH, &info) != 0)
+    {
+        if (mkdir(CWM_DATA_DIR_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+        {
+            return ; // Failed to create folder
+        }
+    }
+    FILE * fp=NULL;
+    switch (type)
+    {
+    case CYWEE_SAVE_DATA_CALORIES:
+        fp  = fopen(CWM_CALORIES_DATA_PATH_AGO ,"wb");
+        break;
+    case CYWEE_SAVE_DATA_STEP:
+        fp  = fopen(CWM_STEP_DATA_PATH_AGO ,"wb");
+        break;
+    case CYWEE_SAVE_DATA_DISTANCE:
+        fp  = fopen(CWM_DISTANCE_DATA_PATH_AGO ,"wb");
+        break;
+    case CYWEE_SAVE_DATA_FAT:
+        fp  = fopen(CWM_FAT_DATA_PATH_AGO ,"wb");
+        break;
+
+    default:
+        break;
+    }
+    
+    if(fp==NULL)
+    {
+        CWM_OS_dbgPrintf("%s open fail\n",CWM_STEP_DATA_PATH_AGO );
+        return;
+    }
+    int ret =fwrite(data,1,len,fp);
+   
+    //CWM_OS_dbgPrintf("CWM_OS_saveData fwrite failed %d %d\n",ret,*(int *)data);
+    
+    fclose(fp);
+}
+
+uint8_t time_is_repetition(uint32_t time,void *data,char *path,void *data_array,uint8_t type)
+{
+    uint8_t is_repetition=0;
+
+    if(type==0)
+    {
+        time_and_32_date_t * p= (time_and_32_date_t*)data_array;
+        FILE *fp=fopen(path,"rb+");
+        if (fp == NULL) return 0;
+
+        fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+        uint32_t size = ftell(fp);       // 获取当前文件指针位置,即文件大小
+        fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+      
+        for(int i=0;i<size/8;i++)
+        {
+            fread(&p[i].time,sizeof(uint32_t),1,fp);
+            fread(&p[i].data,sizeof(uint32_t),1,fp);
+            if(p[i].time==time)
+            {
+                is_repetition++;
+                uint32_t _32_data=*(uint32_t *)data;
+                p[i].data+=_32_data;
+            }
+        }
+        fclose(fp);
+        
+    }
+    else if(type==1)
+    {
+
+        time_and_float_date_t * p= (time_and_float_date_t*)data_array;
+        FILE *fp=fopen(path,"rb+");
+        if (fp == NULL) return 0;
+
+        fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+        uint32_t size = ftell(fp);       // 获取当前文件指针位置,即文件大小
+        fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+      
+        for(int i=0;i<size/8;i++)
+        {
+            fread(&p[i].time,sizeof(uint32_t),1,fp);
+            fread(&p[i].data,sizeof(float),1,fp);
+            if(p[i].time==time)
+            {
+                is_repetition++;
+                float _float_data=*(float *)data;
+                p[i].data+=_float_data;
+            }
+        }
+        fclose(fp);
+    }
+     else if(type==2)
+    {
+
+        time_and_16_date_t * p= (time_and_16_date_t*)data_array;
+        FILE *fp=fopen(path,"rb+");
+        if (fp == NULL) return 0;
+
+        fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+        uint32_t size = ftell(fp);       // 获取当前文件指针位置,即文件大小
+        fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+      
+        for(int i=0;i<size/6;i++)
+        {
+            fread(&p[i].time,sizeof(uint32_t),1,fp);
+            fread(&p[i].data,sizeof(uint16_t),1,fp);
+            if(p[i].time==time)
+            {
+                is_repetition++;
+                 uint16_t _16_data=*(uint16_t *)data;
+                p[i].data+=_16_data;
+            }
+        }
+        fclose(fp);
+    }
+
+    return is_repetition;
+}
+
diff --git a/code/sdk/zhihui/drivers/cywee/hal/CMakeLists.txt b/code/sdk/zhihui/drivers/cywee/hal/CMakeLists.txt
new file mode 100644 (file)
index 0000000..8e04ed0
--- /dev/null
@@ -0,0 +1,37 @@
+#===============================================================================
+# @brief    cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
+#===============================================================================
+
+set(COMPONENT_NAME "cywee_hal")
+
+set(PUBLIC_HEADER
+${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/cywee_hal.c
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+
+)
+
+set(WHOLE_LINK
+    true
+)
+
+set(MAIN_COMPONENT
+    false
+)
+
+set(PUBLIC_DEFINES
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
diff --git a/code/sdk/zhihui/drivers/cywee/hal/cywee_hal.c b/code/sdk/zhihui/drivers/cywee/hal/cywee_hal.c
new file mode 100644 (file)
index 0000000..b4f83e8
--- /dev/null
@@ -0,0 +1,370 @@
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-04-08 14:53:31
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-20 10:45:25
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/service/cywee_hal.c
+ * @Description: 
+ * 
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. 
+ */
+
+#include <stdio.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include "cywee_hal.h"
+
+#include "custom_utils.h"
+
+#ifdef CYWEE_DML
+#include "cywee_dml.h"
+#endif
+
+// cywee_msg_callback_t g_cywee_send_msg_toUI = NULL;
+
+// uint32_t cywee_register_msg_callback(cywee_msg_callback_t cywee_func)
+// {
+//     g_cywee_send_msg_toUI = cywee_func;
+//     return 0;
+// }
+
+// cywee_msg_callback_t cywee_get_send_msg_callback_func(void)
+// {
+//     return g_cywee_send_msg_toUI;
+// }
+
+void cywee_start(void)
+{
+#ifdef CYWEE_DML
+    cywee_main_dml();
+#endif
+}
+
+void cywee_stop(void)
+{
+#ifdef CYWEE_DML
+    cywee_sensor_stop();
+#endif
+}
+
+void cywee_int_handler(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_int_handler();
+#endif
+}
+
+act_result_t cywee_get_act_data(void)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_act_data();
+#endif
+}
+act_ext_result_t cywee_get_act_ext_data(void)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_act_ext_data();
+#endif
+}
+
+void cywee_activity_mode_change(int mode)
+{
+#ifdef CYWEE_DML
+    cywee_dml_activity_mode_change(mode);
+#endif
+}
+
+void cywee_inactivity_mode_change(int mode)
+{
+#ifdef CYWEE_DML
+    cywee_dml_inactivity_mode_change(mode);
+#endif
+}
+
+void cywee_activity_mode_setstatus(int mode)
+{
+#ifdef CYWEE_DML
+    cywee_dml_activity_mode_setstatus(mode);
+#endif
+}
+
+void cywee_get_gsensor_data(uint8_t cnt,gsenson_t *data)
+{
+#ifdef CYWEE_DML
+    cywee_dml_get_gsensor_data(cnt,data);
+#endif
+}
+
+void cywee_wearstatus_update(int wearstatus)
+{
+#ifdef CYWEE_DML
+
+    cywee_dml_wearstatus_update(wearstatus);
+
+    do_custom_fileoperate_service_check_msg(  
+            CUSTOM_FILEOPERATE_MSG_TYPE_WEAR_DATA_SAVE, NULL, 0);  
+#endif
+}
+
+void cywee_oncharging_update(int oncharging_status)
+{
+#ifdef CYWEE_DML
+    cywee_dml_oncharging_update(oncharging_status);
+#endif
+}
+
+void cywee_time_sync(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_time_sync();
+#endif
+}
+
+void cywee_reset_daily_data(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_reset_daily_data();
+#endif   
+}
+
+void cywee_hand_updown_switch(int cmd)
+{
+#ifdef CYWEE_DML
+    cywee_dml_hand_updown_switch(cmd);
+#endif       
+}
+
+void cywee_get_sleep_data(int cmd)
+{
+#ifdef CYWEE_DML
+    cywee_dml_get_sleep_data(cmd);
+#endif
+}
+
+void cywee_ar_alert_switch(int cmd)
+{
+#ifdef CYWEE_DML
+    cywee_dml_ar_alert_switch(cmd);
+#endif   
+}
+
+void cywee_check_acc(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_check_acc();
+#endif      
+}
+
+void cywee_log_switch(int cmd)
+{
+#ifdef CYWEE_DML
+    cywee_dml_log_switch(cmd);
+#endif        
+}
+
+uint8_t cywee_get_static_state(void)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_static_state();
+#endif   
+    return 0;
+}
+
+void cywee_set_sedentary_switch(int cmd)
+{
+#ifdef CYWEE_DML
+    cywee_dml_set_sedentary_switch(cmd);
+#endif   
+}
+
+void cywee_set_sedentary_interval(int interval)
+{
+#ifdef CYWEE_DML
+    cywee_dml_set_sedentary_interval(interval);
+#endif    
+}
+
+void cywee_get_version(char *databuf,uint8_t len)
+{
+#ifdef CYWEE_DML
+    cywee_dml_get_version(databuf,len);
+#endif      
+}
+
+void cywee_get_chipinfo(char *databuf,uint8_t len)
+{
+#ifdef CYWEE_DML
+    cywee_dml_get_chipinfo(databuf,len);
+#endif    
+}
+
+uint8_t cywee_get_active_state(void)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_active_state();
+#endif   
+    return 0;
+}
+
+void cywee_restart_acc(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_restart_acc();
+#endif           
+}
+
+void cywee_custom_save_sleep_data(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_save_sleep_data();
+#endif      
+}
+
+void cywee_custom_save_nap_data(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_save_nap_data();
+#endif   
+}
+
+void cywee_reset_history_daily_data(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_reset_history_daily_data();
+#endif       
+}
+
+void cywee_set_user_info(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_set_user_info();
+#endif       
+}
+
+void cywee_fat_history_save(uint32_t time)
+{
+#ifdef CYWEE_DML
+    cywee_dml_fat_history_save(time);
+#endif  
+}
+
+void cywee_step_history_save(uint32_t time)
+{
+#ifdef CYWEE_DML
+    cywee_dml_step_history_save(time);
+#endif  
+}
+
+uint32_t cywee_get_step_data(void)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_step_data();
+#endif  
+}
+
+void cywee_set_step_data(uint32_t data)
+{
+#ifdef CYWEE_DML
+    cywee_dml_set_step_data(data);
+#endif  
+}
+
+void cywee_stand_history_save(uint32_t time)
+{
+#ifdef CYWEE_DML
+    cywee_dml_stand_history_save(time);
+#endif  
+}
+
+void cywee_calories_history_save(uint32_t time)
+{
+#ifdef CYWEE_DML
+    cywee_dml_calories_history_save(time);
+#endif  
+}
+
+void cywee_distances_history_save(uint32_t time)
+{
+#ifdef CYWEE_DML
+    cywee_dml_distances_history_save(time);
+#endif  
+}
+
+int32_t cywee_get_now_hour_data(void*value, uint8_t type)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_now_hour_data(value,type);
+#endif     
+}
+
+void cywee_set_stand_falg(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_set_stand_falg();
+#endif     
+}
+
+uint8_t cywee_get_stand_falg(void)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_stand_falg();
+#endif  
+}
+
+uint8_t cywee_get_now_stand_count(void)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_now_stand_count();
+#endif     
+}
+
+void cywee_set_calories_data(uint32_t data)
+{
+#ifdef CYWEE_DML
+    cywee_dml_set_calories_data(data);
+#endif  
+}
+
+int cywee_get_calories_data(void)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_calories_data();
+#endif  
+}
+
+void cywee_set_distance_data(uint32_t data)
+{
+#ifdef CYWEE_DML
+    cywee_dml_set_distance_data(data);
+#endif  
+}
+
+int cywee_get_distance_data(void)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_distance_data();
+#endif  
+}
+
+void cywee_set_fat_time_data(int time)
+{
+#ifdef CYWEE_DML
+    cywee_dml_set_fat_time_data(time);
+#endif
+}
+
+int cywee_get_fat_time_data(void)
+{
+#ifdef CYWEE_DML
+    return cywee_dml_get_fat_time_data();
+#endif
+}
+
+void cywee_save_data(void)
+{
+#ifdef CYWEE_DML
+    cywee_dml_save_data();
+#endif
+}
\ No newline at end of file
diff --git a/code/sdk/zhihui/drivers/cywee/hal/cywee_hal.h b/code/sdk/zhihui/drivers/cywee/hal/cywee_hal.h
new file mode 100644 (file)
index 0000000..fa6f934
--- /dev/null
@@ -0,0 +1,202 @@
+/**
+ * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
+ *
+ * Description: Test adc header \n
+ * Author: @CompanyNameTag \n
+ * History: \n
+ * 2022-08-16, Create file. \n
+ */
+
+#ifndef CYWEE_HAL_H__
+#define CYWEE_HAL_H__
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#include "stdint.h"
+#include "errcode.h"
+
+
+
+#define SLEEP_TIME_PATH "/user/userdata/sleep/%s/sleep_time.bin"
+#define SLEEP_STATUS_PATH "/user/userdata/sleep/%s/sleep_status.bin"
+#define NAP_PATH "/user/userdata/sleep/%s/nap.bin"
+#define SLEEP_DIR_PATH "/user/userdata/sleep/%s"
+#define SLEEP_DATA_DIR "/user/userdata/sleep/"
+
+#define CWM_STEP_DATA_PATH_AGO "/user/userdata/sport/stepcount_ago.bin"
+#define CWM_CALORIES_DATA_PATH_AGO "/user/userdata/sport/caloriescount_ago.bin"
+#define CWM_DISTANCE_DATA_PATH_AGO "/user/userdata/sport/distancecount_ago.bin"
+#define CWM_FAT_DATA_PATH_AGO "/user/userdata/sport/fatcount_ago.bin"
+
+#define CWM_STEP_DATA_PATH "/user/userdata/sport/stepcount.bin"
+#define CWM_CALORIES_DATA_PATH "/user/userdata/sport/caloriescount.bin"
+#define CWM_DISTANCE_DATA_PATH "/user/userdata/sport/distancecount.bin"
+#define CWM_FAT_DATA_PATH "/user/userdata/sport/fatcount.bin"
+
+
+
+#define CWM_HISTORY_DATA_PATH "/user/userdata/goal/step/step_"
+#define CWM_HISTORY_DATA_CALORIES_PATH "/user/userdata/goal/calories/calories_"
+#define CWM_HISTORY_DATA_DISTANCE_PATH "/user/userdata/goal/distance/distance_"
+#define CWM_HISTORY_STAND_DATA_PATH "/user/userdata/goal/stand/stand_"
+#define CWM_HISTORY_DATA_FAT_PATH "/user/userdata/goal/fat/fat_"
+#define GOAL_DATA_CONFIG_DIR "/user/userdata/goal"
+#define GOAL_DATA_CONFIG_DIR_STEP "/user/userdata/goal/step"
+#define GOAL_DATA_CONFIG_DIR_DISTANCE "/user/userdata/goal/distance"
+#define GOAL_DATA_CONFIG_DIR_STAND "/user/userdata/goal/stand"
+#define GOAL_DATA_CONFIG_DIR_FAT "/user/userdata/goal/fat"
+#define GOAL_DATA_CONFIG_DIR_CALORIES "/user/userdata/goal/calories"
+#define CWM_DATA_DIR_PATH "/user/userdata/sport"
+
+typedef struct {
+    float x;
+    float y;
+    float z;
+} gsenson_t;
+
+typedef enum {
+    CYWEE_SAVE_DATA_STEP,
+    CYWEE_SAVE_DATA_DISTANCE,
+    CYWEE_SAVE_DATA_CALORIES,
+    CYWEE_SAVE_DATA_FAT,
+} CYWEE_SAVE_DATA_TYPE;
+
+
+typedef struct time_and_32_date
+{
+   uint32_t time;
+   uint32_t data;
+
+}time_and_32_date_t;
+
+
+typedef struct time_and_float_date
+{
+   uint32_t time;
+   float data;
+
+}time_and_float_date_t;
+
+typedef struct time_and_16_date
+{
+   uint16_t time;
+   float data;
+
+}time_and_16_date_t;
+
+
+#pragma pack(1)
+
+typedef struct 
+{
+    int activity_mode;//模式
+    int steps;//步数
+    int distance;//距离
+    int calories;//卡路里
+    int step_frequency;//步频
+    float step_length;//步幅
+    int pace;//配速
+    int BMR_calories;//基础卡路里
+    // int hrs;//心率
+    int duration;//持续时间
+    int MHR_zone;//心率区间
+}act_result_t;
+
+typedef struct 
+{
+    int avg_step_freq;//平均步频
+    float avg_step_len;//平均步长
+    int avg_pace;//平均配速
+    int max_step_freq;//最大步频
+    int max_pace;//最大配速
+    int activity_zone;//活动程度区间 0低度 1中度 2高度
+    int ativity_zone_moderate_duration;//中度活动时间
+    int ativity_zone_high_duration;//高度活动时间
+    int MHR_zone;//心率区间
+    int distance_motion;//体感距离
+}act_ext_result_t;
+
+#pragma pack()
+
+void cywee_activity_mode_setstatus(int cmd);
+void cywee_oncharging_update(int oncharging_status);
+void cywee_wearstatus_update(int wearstatus);
+void cywee_hrs_update(void);
+void cywee_set_user_info(void);
+void cywee_get_sleep_data(int cmd);
+void cywee_reset_daily_data(void);
+void cywee_inactivity_mode_change(int mode);
+void cywee_activity_mode_change(int mode);
+void cywee_time_sync(void);
+void cywee_hand_updown_switch(int cmd);
+void cywee_ar_alert_switch(int cmd);
+
+void cywee_step_history_save(uint32_t time);
+uint32_t cywee_get_step_data(void);
+void cywee_set_step_data(uint32_t data);
+
+void cywee_stand_history_save(uint32_t time);
+void cywee_calories_history_save(uint32_t time);
+void cywee_distances_history_save(uint32_t time);
+void cywee_fat_history_save(uint32_t time);
+int32_t cywee_get_now_hour_data(void*value, uint8_t type);
+
+void cywee_set_stand_falg(void);
+uint8_t cywee_get_stand_falg(void);
+uint8_t cywee_get_now_stand_count(void);
+void cywee_set_calories_data(uint32_t data);
+int cywee_get_calories_data(void);
+
+void cywee_set_distance_data(uint32_t data);
+int cywee_get_distance_data(void );
+
+void cywee_set_fat_time_data(int time);
+int cywee_get_fat_time_data(void);
+
+void cywee_get_chipinfo(char *databuf,uint8_t len);
+void cywee_set_sedentary_interval(int interval);
+void cywee_set_sedentary_switch(int cmd);
+// void cywee_get_acc_switch(int cmd);
+void cywee_sensor_stop(void);
+uint8_t cywee_get_active_state(void);
+uint8_t cywee_get_static_state(void);
+void cywee_restart_acc(void);
+void cywee_log_switch(int cmd);
+void cywee_get_version(char *databuf,uint8_t len);
+void cywee_save_data(void);
+
+void cywee_custom_save_sleep_data(void);
+void cywee_custom_save_nap_data(void);
+void cywee_reset_history_daily_data(void);
+void cywee_check_acc(void);
+
+void cywee_custom_save_wear_data(void);
+#pragma pack()
+
+
+
+
+
+
+
+/********************CYWEE  DML*********************/
+
+
+int cywee_main_dml(void);
+void cywee_dml_int_handler(void);
+
+act_result_t cywee_get_act_data(void);
+act_ext_result_t cywee_get_act_ext_data(void);
+
+void cywee_get_gsensor_data(uint8_t cnt,gsenson_t *data);
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#endif
\ No newline at end of file
diff --git a/code/sdk/zhihui/drivers/cywee/service/CMakeLists.txt b/code/sdk/zhihui/drivers/cywee/service/CMakeLists.txt
new file mode 100644 (file)
index 0000000..8bf223d
--- /dev/null
@@ -0,0 +1,41 @@
+#===============================================================================
+# @brief    cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
+#===============================================================================
+
+set(COMPONENT_NAME "cywee_service")
+
+set(PUBLIC_HEADER
+${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/cywee_at_cmd.c
+${CMAKE_CURRENT_SOURCE_DIR}/cywee_service.c
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+-Wno-incompatible-function-pointer-types
+-Wno-unused-function
+)
+
+set(WHOLE_LINK
+    true
+)
+
+set(MAIN_COMPONENT
+    false
+)
+
+set(PUBLIC_DEFINES
+    SUPPORT_CYWEE_SERVICE
+    SUPPORT_AT_CYWEE
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
diff --git a/code/sdk/zhihui/drivers/cywee/service/cywee_ble_Service.c b/code/sdk/zhihui/drivers/cywee/service/cywee_ble_Service.c
deleted file mode 100644 (file)
index fade5b0..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (c) @CompanyNameMagicTag 2022. All rights reserved.
- * Description: BT HID Service Server Module.
- */
-#ifdef SUPPORT_BLE_SERVICE
-#include "cywee_ble_Service.h"
-#include "bleService.h"
-#include "bts_gatt_stru.h"
-#include "bts_gatt_server.h"
-#include "securec.h"
-#include "wearable_log.h"
-#ifdef SUPPORT_OHOSFWK
-#include "BluetoothWrapper.h"
-#endif
-
-/* HID gatt notification flag, do not need confirm */
-#define GATT_NOTIFICATION_FLAG 0
-/* HID gatt indication flag, need confirm */
-#define GATT_INDICATION_FLAG 1
-#define INVALID_SERVER_ID 0
-/* Client Characteristic Configuration UUID */
-#define BLE_UUID_CLIENT_CHARACTERISTIC_CONF 0x2902
-/*user Characteristic Configuration UUID*/
-#define BLE_UUID_USER_CHARACTERISTIC_CONF 0x2901
-/* gatt server ID */
-static uint8_t g_server_id = INVALID_SERVER_ID;
-// RX定为Notify属性,TX为Write属性
-enum {
-    /* HID input report characteristic properties */
-    FACTORYTEST_INPUT_REPORT_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_NOTIFY|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP|GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_READ,
-    /* HID output report characteristic properties */
-    FACTORYTEST_OUTPUT_REPORT_PROPERTIES =  GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,
-};
-    
-#define uint16_to_byte(n) ((uint8_t)(n)), ((uint8_t)((n) >> 8))
-
-/* hid input report att handle */
-uint32_t g_cywee_notify_report_att_hdl = 0;
-uint32_t cywee_ate_write_handl = 0;
-
-/* 创建服务 */
-static void ble_cywee_add_service(uint8_t server_id)
-{
-    bt_uuid_t cywee_service_uuid = {0};
-    bts_data_to_uuid_len2(BLE_UUID_CYWEE_REPORT_SERVICE, &cywee_service_uuid);
-    //只有一个服务,永远是1
-   errcode_t ret = 0;
-#ifndef SUPPORT_OHOSFWK
-    ret = gatts_add_service(server_id, &cywee_service_uuid, true);
-    printf("ble_cywee_add_service gatts_add_service ret: 0x%x serverId = 0x%x uuid.uuid_len:%d\n", ret, server_id,cywee_service_uuid.uuid_len);
-#else
-    ret = wrapper_gatts_add_service(server_id, &cywee_service_uuid, true);
-    printf("ble_cywee_add_service wrapper_gatts_add_service ret: 0x%x serverId = 0x%x uuid.uuid_len:%d\n", ret, server_id,cywee_service_uuid.uuid_len);
-#endif
-
-}
-static void ble_cywee_add_descriptor_report_reference(uint8_t server_id, uint16_t srvc_handle, bool is_notify_report)
-{
-    /* HID input report reference value for test  [report id 1, input] */
-    static uint8_t report_reference_val_input[] = {0, 0};
-    gatts_add_desc_info_t descriptor;
-    if (is_notify_report)
-    {
-        bts_data_to_uuid_len2(BLE_UUID_CLIENT_CHARACTERISTIC_CONF, &descriptor.desc_uuid);
-        descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE ;
-    }else{
-        bts_data_to_uuid_len2(BLE_UUID_USER_CHARACTERISTIC_CONF, &descriptor.desc_uuid);
-        descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ ;
-        
-    }
-    descriptor.value = report_reference_val_input;
-    descriptor.value_len = (uint16_t)sizeof(report_reference_val_input);
-
-    gatts_add_descriptor(server_id, srvc_handle, &descriptor);
-}
-
-/* 添加特征:HID information */
-static void ble_cywee_add_character_and_information(uint8_t server_id, uint16_t srvc_handle)
-{
-    /* HID information value for test */
-    gatts_add_chara_info_t character={0};
-
-    memset_s(&character,sizeof(gatts_add_chara_info_t),0,sizeof(gatts_add_chara_info_t));
-    bts_data_to_uuid_len2(BLE_UUID_CYWEE_RX, &character.chara_uuid);
-    character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;
-    character.properties = FACTORYTEST_INPUT_REPORT_PROPERTIES;
-    character.value_len = 0;//(uint16_t)sizeof(hid_information_val);
-    character.value = NULL;//hid_information_val;
-    gatts_add_characteristic(server_id, srvc_handle, &character);
-    ble_cywee_add_descriptor_report_reference(server_id,srvc_handle,true);
-    ble_cywee_add_descriptor_report_reference(server_id,srvc_handle,false);    
-    
-}
-
-/* device向host发送数据:input report */
-errcode_t ble_cywee_server_send_input_report(const uint8_t *data, uint8_t len)
-{
-    // printf("ble_hid_server_send_input_report:%d %d %d",data[0],data[1],len);
-    if (g_cywee_notify_report_att_hdl==0) 
-        return ERRCODE_BT_FAIL;
-
-    gatts_ntf_ind_t param = {0};
-    param.attr_handle = (uint16_t)g_cywee_notify_report_att_hdl;
-    param.value_len = len;
-    param.value = bt_os_new(len);
-    if (param.value == NULL) {
-        printf(  "[cywee][ERROR]send input report new fail\r\n");
-        return ERRCODE_BT_MALLOC_FAIL;
-    }
-    if (memcpy_s(param.value, param.value_len, data, len) != EOK) {
-        printf( "[cywee][ERROR]send input report memcpy fail\r\n");
-        bt_os_free(param.value);
-        return ERRCODE_BT_FAIL;
-    }
-    errcode_t ret = 0;
-    ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &param);
-    printf("ble_cywee_server_send_input_report: 0x%x g_ble_conn_id:%d g_cywee_notify_report_att_hdl:%d\r\n",ret,g_ble_conn_id,g_cywee_notify_report_att_hdl);
-    bt_os_free(param.value);
-    return ERRCODE_BT_SUCCESS;
-}
-
-
-void ble_cywee_store_report_handle(uint16_t srvc_handle)
-{
-    printf("g_cywee_notify_report_att_hdl: 0x%X\r\n",srvc_handle);
-    if(g_cywee_notify_report_att_hdl == 0){
-        g_cywee_notify_report_att_hdl = srvc_handle;
-    }
-}
-void ble_cywee_store_recv_handle(uint16_t srvc_handle)
-{
-    printf("cywee_ate_write_handl : 0x%X\r\n",srvc_handle);
-    if(cywee_ate_write_handl == 0)
-    {
-        cywee_ate_write_handl = srvc_handle;
-    }
-    
-}
-
-uint32_t get_cywee_ate_write_handl(void)
-{
-    return cywee_ate_write_handl;
-}
-
-
-void ble_cywee_add_characters_and_descriptors(uint8_t server_id, uint16_t srvc_handle)
-{
-    ble_cywee_add_character_and_information(server_id, srvc_handle);
-}
-
-void ble_cywee_server_init(uint8_t server_id)
-{
-    ble_cywee_add_service(server_id);
-}
-
-
-//协议接收client下发的数据接口
-void cywee_recv_cmd_data(uint8_t *buf, uint16_t event_size,uint16_t handle)
-{
-    if(buf != NULL)
-        printf("cywee_recv_cmd_data len %d , handle 0x%X ,*buf 0x%02X\r\n",event_size,handle,*buf);
-    /****此处为接收指令,处理后反馈结果的参考**/
-    cywee_log_switch(*buf);
-    /*****参考结束****/
-}
-
-#endif
-
diff --git a/code/sdk/zhihui/drivers/cywee/service/cywee_hal.c b/code/sdk/zhihui/drivers/cywee/service/cywee_hal.c
deleted file mode 100644 (file)
index 0898893..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * @Author: penglei 1624952103@qq.com
- * @Date: 2024-04-08 14:53:31
- * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-04-08 17:53:40
- * @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/service/cywee_hal.c
- * @Description: 
- * 
- * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. 
- */
-
-#include <stdio.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdlib.h>
-
-#include "cywee_hal.h"
-
-cywee_msg_callback_t g_cywee_send_msg_toUI = NULL;
-
-uint32_t cywee_register_msg_callback(cywee_msg_callback_t cywee_func)
-{
-    g_cywee_send_msg_toUI = cywee_func;
-    return 0;
-}
-
-cywee_msg_callback_t cywee_get_send_msg_callback_func(void)
-{
-    return g_cywee_send_msg_toUI;
-}
-
-
index e524886..fbe1d1a 100644 (file)
@@ -59,57 +59,58 @@ static void cywee_service_check_timer_callback(void *data);
 
 void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen)
 {
+#if 0
     // PRINT("cywee_msg_callback\r\n");
-    cywee_activity_result_t c_activity_result_t;
+    act_result_t c_activity_result_t;
     cywee_inactivity_result_t c_inactivity_result_t;
-    cywee_activity_result_extre_info_t c_activity_result_extre_info_t;
+    act_ext_result_t c_activity_result_extre_info_t;
     cywee_inactivity_accumulate_time_t c_inactivity_accumulate_time_t;
 
     if (msg_type == CYWEE_MSG_TYPE_ACTIVITY_UPDATE)
     {
-        memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+        memcpy(&c_activity_result_t, msg_data, sizeof(act_result_t));
         switch (c_activity_result_t.activity_mode)
         {
             case SPORT_ACTIVE_MODE_NORMAL:
                 // PRINT("normal mode activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
                 //     c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories, 
                 //     c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
-                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
                 break;
             case SPORT_ACTIVE_MODE_TREADMILL:
                 // PRINT("CYWEE_MSG_TYPE_TREADMILL_UPDATE\r\n");
                 // PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
                 //     c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories, 
                 //     c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
-                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
                 break;
             case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
                 // PRINT("CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE\r\n");
                 // PRINT("outdoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
                 //     c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories, 
                 //     c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
-                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
                 break;
             case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
                 // PRINT("CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE\r\n");
                 // PRINT("indoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
                 //     c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories, 
                 //     c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
-                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
                 break;
             case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
                 // PRINT("CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE\r\n");
                 // PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%d]\n",
                 //     c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories, 
                 //     c_activity_result_t.step_frequency,c_activity_result_t.step_length, c_activity_result_t.pace);
-                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
                 break;
 
             case SPORT_ACTIVE_MODE_FREE_TRAINING:
                 // PRINT("CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE\r\n");
                 // PRINT("free training activit_mode[%d], calories[%d],MHR_zone[%d]\n",
                 //     c_activity_result_t.activity_mode, c_activity_result_t.calories, c_activity_result_t.MHR_zone);
-                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+                //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
                 break;
             default:
                 break;
@@ -118,7 +119,7 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
     else if (msg_type == CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE)
     {
         // PRINT("CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE\r\n");
-        memcpy(&c_activity_result_extre_info_t, msg_data, sizeof(cywee_activity_result_extre_info_t));
+        memcpy(&c_activity_result_extre_info_t, msg_data, sizeof(act_ext_result_t));
         // PRINT("avg_step_freq[%d],avg_step_len[%.2f],avg_pace[%d],max_step_freq[%d],max_pace[%d],activity_zone[%d],ativity_zone_moderate_duration[%d],ativity_zone_high_duration[%d],MHR_zone[%d],distance_motion[%d]\n",
         //     c_activity_result_extre_info_t.avg_step_freq, c_activity_result_extre_info_t.avg_step_len,
         //     c_activity_result_extre_info_t.avg_pace,c_activity_result_extre_info_t.max_step_freq,
@@ -127,7 +128,7 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
         //     c_activity_result_extre_info_t.ativity_zone_high_duration,
         //     c_activity_result_extre_info_t.MHR_zone,
         //     c_activity_result_extre_info_t.distance_motion);
-        //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(cywee_activity_result_extre_info_t));
+        //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(act_ext_result_t));
 
     } 
     else if (msg_type == CYWEE_MSG_TYPE_INACTIVITY_UPDATE)
@@ -174,7 +175,7 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
     }
     else
         PRINT("Unknown sensor message type");
-
+#endif
 }
 
 static void cywee_service_timer_start_check(uint32_t rtc_ms)
@@ -274,42 +275,42 @@ static void cywee_service_check_task(void const *arg)
 
             case CYWEE_SERVICE_CMD_NORMAL_MODE:
                 // PRINT("普通运动模式\r\n");
-                cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
+                // cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
             break;
 
             case CYWEE_SERVICE_CMD_TREADMILL_MODE:
-                cywee_activity_mode_change(SPORT_ACTIVE_MODE_TREADMILL);
+                // cywee_activity_mode_change(SPORT_ACTIVE_MODE_TREADMILL);
             break;
 
             case CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE:
                 // PRINT("室外跑步模式\r\n");
-                cywee_activity_mode_change(SPORT_ACTIVE_MODE_OUTDOOR_RUNNING);
+                // cywee_activity_mode_change(SPORT_ACTIVE_MODE_OUTDOOR_RUNNING);
             break;
 
             case CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE:
                 // PRINT("室内跑步模式\r\n");
-                cywee_activity_mode_change(SPORT_ACTIVE_MODE_INDOOR_RUNNING);
+                // cywee_activity_mode_change(SPORT_ACTIVE_MODE_INDOOR_RUNNING);
             break;
 
             case CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE:
-                cywee_activity_mode_change(SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR);
+                // cywee_activity_mode_change(SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR);
             break;
 
             case CYWEE_SERVICE_CMD_FREE_TRAINING_MODE:
                 // PRINT("自由训练模式\r\n");
-                cywee_activity_mode_change(SPORT_ACTIVE_MODE_FREE_TRAINING);
+                // cywee_activity_mode_change(SPORT_ACTIVE_MODE_FREE_TRAINING);
             break;
 
             case CYWEE_SERVICE_CMD_AR_ALERT_MODE:
-                cywee_activity_mode_change(SPORT_ACTIVE_MODE_AR_ALERT);
+                // cywee_activity_mode_change(SPORT_ACTIVE_MODE_AR_ALERT);
             break;
 
             case CYWEE_SERVICE_CMD_PAUSE:
-                activity_mode_setstatus(1);
+                cywee_activity_mode_setstatus(1);
             break;
 
             case CYWEE_SERVICE_CMD_RESUME:
-                activity_mode_setstatus(0);
+                cywee_activity_mode_setstatus(0);
             break;
 
             case CYWEE_SERVICE_CMD_ONCHARGING_CHANGE:
@@ -325,18 +326,18 @@ static void cywee_service_check_task(void const *arg)
             break;
 
             case CYWEE_SERVICE_CMD_SEDENTARY_MODE:
-                cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY);
+                // cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY);
             break;
 
             case CYWEE_SERVICE_CMD_NAP_MODE:
-                cywee_inactivity_mode_change(INACTIVITY_MODE_NAP);
+                // cywee_inactivity_mode_change(INACTIVITY_MODE_NAP);
                 
             case CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE:
-                cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP);
+                // cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP);
             break;
             
             case CYWEE_SERVICE_CMD_SLEEPING_MODE:
-                cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
+                // cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
             break;
 
             case CYWEE_SERVICE_CMD_OPEN_HAND_UPDOWN:
@@ -380,15 +381,15 @@ static void cywee_service_check_task(void const *arg)
             break;
 
             case CYWEE_SERVICE_CMD_OPEN_GET_ACC:
-                cywee_get_acc_switch(1);
+                // cywee_get_acc_switch(1);
             break;
 
             case CYWEE_SERVICE_CMD_CLOSE_GET_ACC:
-                cywee_get_acc_switch(0);
+                // cywee_get_acc_switch(0);
             break;
 
             case CYWEE_SERVICE_CMD_STOP_ACC:
-                cywee_stop();
+                cywee_sensor_stop();
             break;
 
             case CYWEE_SERVICE_CMD_OPEN_SEDENTARY:
@@ -454,7 +455,7 @@ errcode_t uapi_cywee_service_init(void)
 
     //g_cywee_service_timer = osTimerNew((osTimerFunc_t)cywee_service_check_timer_callback, osTimerPeriodic, NULL, NULL);
 
-    cywee_register_msg_callback(cywee_msg_callback);
+    // cywee_register_msg_callback(cywee_msg_callback);
     do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_CHECK, NULL);
     
     return ERRCODE_SUCC;
diff --git a/code/sdk/zhihui/drivers/cywee/src/board_yh601s.c b/code/sdk/zhihui/drivers/cywee/src/board_yh601s.c
deleted file mode 100644 (file)
index 1531f52..0000000
+++ /dev/null
@@ -1,976 +0,0 @@
-/*********************/
-/*** Include Files ***/
-/*********************/
-#include <stdarg.h>
-
-#include <stdio.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <math.h>
-
-#include "osal_timer.h"
-#include "osal_mutex.h"
-#include "pinctrl.h"
-#include "chip_io.h"
-#include "time.h"
-#include "i2c.h"
-#include "gpio.h"
-#include "hal_gpio.h"
-#include "hal_i2c.h"
-#include "soc_osal.h"
-#include "tcxo.h"
-#include "debug_print.h"
-#include "platform_core.h"
-#include "los_tick.h"
-
-#include "cwm_lib.h"
-#include "los_typedef.h"
-#include "config.h"
-#include "OsApi.h"
-#include "los_printf.h"
-#include "cywee_ble_Service.h"
-#include "custom_utils.h"
-
-/*********************/
-/*** Macro Defines ***/
-/*********************/
-
-#define CYWEE_I2C_BUS I2C_BUS_2
-#define CYWEE_I2C_RETRY_TIME_MAX 3
-#define G_INT1_PIN S_AGPIO_L11
-#define G_INT2_PIN S_AGPIO_L19
-
-/*************************/
-/*** Variables Defines ***/
-/*************************/
-
-static uint8_t g_cywee_installed = 0;
-
-extern uint8_t cywee_ble_service_flag;
-
-/************************/
-/*** Function Defines ***/
-/************************/
-int CWM_OS_dbgPrintf(const char * format,...);
-
-
-/********************************/
-/*** Function Implementations ***/
-/********************************/
-
-
-
-/*初始化GPIO*/
-int gpio_int_pin_init(void)
-{
-   if ((uapi_pin_set_mode(G_INT1_PIN, (pin_mode_t)HAL_PIO_FUNC_GPIO) != ERRCODE_SUCC) ||
-        (uapi_pin_set_pull(G_INT1_PIN, (pin_pull_t)HAL_PIO_PULL_UP) != ERRCODE_SUCC) ||
-        (uapi_gpio_set_dir(G_INT1_PIN, GPIO_DIRECTION_INPUT) != ERRCODE_SUCC)) {
-        CWM_OS_dbgPrintf("gpio G_INT1_PIN config failed\r\n");
-        return ERRCODE_FAIL;
-   }
-  if ((uapi_pin_set_mode(G_INT2_PIN, (pin_mode_t)HAL_PIO_FUNC_GPIO) != ERRCODE_SUCC) ||
-        (uapi_pin_set_pull(G_INT2_PIN, (pin_pull_t)HAL_PIO_PULL_UP) != ERRCODE_SUCC) ||
-        (uapi_gpio_set_dir(G_INT2_PIN, GPIO_DIRECTION_INPUT) != ERRCODE_SUCC)) {
-        CWM_OS_dbgPrintf("gpio G_INT2_PIN config failed\r\n");
-        return ERRCODE_FAIL;
-   }
-   return ERRCODE_SUCC;
-}
-
-
-// int CWM_setGpio(uint16_t sensortype, uint16_t sensorPin, uint16_t pintype)
-// {
-
-//     return ERRCODE_SUCC;
-// }
-
-// int CWM_securityCodeWrite(uint32_t sensortype, uint8_t* data, uint32_t len)
-// {
-//     return ERRCODE_SUCC;
-// }
-   
-// int CWM_enableGpioIRQ(uint16_t sensorType, uint16_t sensorPin, PFN_IRQHANDLE callback)
-// {
-//     CWM_OS_dbgPrintf("CWM_enableGpioIRQ sensorType %d, sensorPin %d, callback 0x%X\n",sensorType,sensorPin,callback);
-   
-//     return ERRCODE_SUCC;
-// }
-
-// int CWM_disableGpioIRQ(uint16_t sensorType, uint16_t sensorPin)
-// {
-//     CWM_OS_dbgPrintf("CWM_disableGpioIRQ sensorType %d, sensorPin %d\n",sensorType,sensorPin);
-//     return ERRCODE_SUCC;
-// }
-
-
-
-// int CWM_OS_i2cWrite(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex)
-// {
-//     errcode_t ret;
-//     uint32_t retry;
-//     i2c_data_t data;
-//     uint8_t *write_data = NULL;
-//     uint16_t send_len;
-//     uint8_t *data_buf=writeData;
-//     uint16_t data_len=writeDataSize;
-    
-//     cywee_i2c_init();
-//     send_len = data_len + regLength;
-//     write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
-//     if (write_data == NULL) {
-//         CWM_OS_dbgPrintf("cywee CWM_OS_i2cWrite send buff malloc fail %d!\n",send_len);
-//         goto error;
-//     }
-
-//     if( regLength == 2)
-//     {
-//         write_data[0] = ((uint8_t*)&reg)[0];
-//         write_data[1] = ((uint8_t*)&reg)[1];
-//     }else{
-//         write_data[0] = (uint8_t)reg;
-//     }
-//     ret = (uint32_t)memcpy_s(write_data + regLength, send_len - regLength, data_buf, data_len);
-//     if (ret != EOK) {
-//         CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
-//         goto free_mem;
-//     }
-
-//     data.send_buf = write_data;
-//     data.send_len = send_len;
-//     data.receive_buf = NULL;
-//     data.receive_len = 0;
-
-//     for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
-//         ret = uapi_i2c_master_write(CYWEE_I2C_BUS, slaveAddr, &data);
-//         if (ret == ERRCODE_SUCC) {
-//             break;
-//         }
-//     }
-//     if (ret != ERRCODE_SUCC) {
-//         CWM_OS_dbgPrintf("CWM_OS_i2cWrite cywee data write fail! ret=0x%x\n", ret);
-//     }
-// free_mem:
-//     osal_kfree(write_data);
-// error:
-//     return (ret>0) ? ret*-1: ret;
-// }
-
-// int CWM_OS_i2cTransfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex)
-// {
-//     errcode_t ret;
-//     uint32_t retry;
-//     i2c_data_t data;
-//     uint8_t *write_data = NULL;
-//     int16_t write_len = 0;
-
-//     cywee_i2c_init();
-//     write_len = regLength + writeDataSize;
-//     write_data = (uint8_t *)osal_kmalloc(write_len, OSAL_GFP_KERNEL);
-//     if (write_data == NULL) {
-//         PRINT_ERR("cywee send buff malloc fail!");
-//         goto error;
-//     }
-
-//     if( regLength == 2)
-//     {
-//         write_data[0] = ((uint8_t*)&reg)[0];
-//         write_data[1] = ((uint8_t*)&reg)[1];
-//     }else{
-//         write_data[0] = (uint8_t)reg;
-//     }
-
-//     ret = (uint32_t)memcpy_s(write_data + regLength, writeDataSize, writeData, writeDataSize);
-//     if (ret != EOK) {
-//         CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
-//         goto free_mem;
-//     }
-//     data.send_buf = write_data;
-//     data.send_len = write_len;
-//     data.receive_buf = readData;
-//     data.receive_len = readDataSize;
-
-//     for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
-//         ret = uapi_i2c_master_writeread(CYWEE_I2C_BUS, slaveAddr, &data);
-//         if (ret == ERRCODE_SUCC) {
-//             break;
-//         }
-//     }
-//     if (ret != ERRCODE_SUCC) {
-//         CWM_OS_dbgPrintf("CWM_OS_i2cTransfer cywee data read fail! ret=0x%x\n", ret);
-//     }
-
-// free_mem:
-//     osal_kfree(write_data);
-// error:
-//     return (ret>0) ? ret*-1: ret;
-// }
-
-//实际精度只能到1ms
-void CWM_OS_uSleep(uint32_t time)
-{
-
-    HalDelayUs(time);
-    // uint32_t ms = time / 1000;
-    // if (ms == 0)  ms = 1;
-    // osDelay(ms);    
-}
-
-uint64_t CWM_OS_GetTimeNs(void)
-{
-    uint64_t timeNowNs;
-    timeNowNs = LOS_CurrNanosec();
-    return timeNowNs;
-}
-
-void* CWM_OS_malloc(int size)
-{
-    if (size == 0)
-        size = 1;
-    return malloc(size);
-}
-
-void CWM_OS_free(void *ptr)
-{
-    if (ptr == NULL)
-        return;
-
-    free(ptr);
-}
-
-int CWM_OS_dbgOutput(const char * format)
-{
-    PRINT("%s", format); 
-#ifdef SUPPORT_BLE_SERVICE
-    if(cywee_ble_service_flag == 1)
-        ble_cywee_server_send_input_report((uint8_t *)format,strlen(format));
-#endif
-    return 0;
-}
-
-int CWM_OS_dbgOutput_checkLog(const char * format)
-{
-    static int s_sn = 0;
-    PRINT("#_#|%d|%s", s_sn, format);
-    s_sn ++;
-    return 0;
-}
-
-int CWM_OS_dbgPrintf(const char * format,...)
-{
-    char InputBuff[255];
-    va_list    args;
-
-    va_start(args, format);
-
-    vsprintf(InputBuff, format, args);
-
-    va_end(args);
-    CWM_OS_dbgOutput(InputBuff);
-    return 0;
-}
-typedef enum {
-    CYWEE_DATA_STEP,
-    CYWEE_DATA_DISTANCE,
-    CYWEE_DATA_CALORIES,
-    CYWEE_DATA_FAT,
-} CYWEE_SAVE_DATA_TYPE;
-
-#define CWM_STEP_DATA_PATH "/user/userdata/sport/stepcount.bin"
-#define CWM_CALORIES_DATA_PATH "/user/userdata/sport/caloriescount.bin"
-#define CWM_DISTANCE_DATA_PATH "/user/userdata/sport/distancecount.bin"
-#define CWM_FAT_DATA_PATH "/user/userdata/sport/fatcount.bin"
-
-#define CWM_STEP_DATA_PATH_AGO "/user/userdata/sport/stepcount_ago.bin"
-#define CWM_CALORIES_DATA_PATH_AGO "/user/userdata/sport/caloriescount_ago.bin"
-#define CWM_DISTANCE_DATA_PATH_AGO "/user/userdata/sport/distancecount_ago.bin"
-#define CWM_FAT_DATA_PATH_AGO "/user/userdata/sport/fatcount_ago.bin"
-
-
-#define CWM_DATA_DIR_PATH "/user/userdata/sport"
-#include <sys/stat.h>
-void CWM_OS_saveData(int* data, uint32_t len,uint8_t type){
-    
-     struct stat info;
-
-    if (stat(CWM_DATA_DIR_PATH, &info) != 0)
-    {
-        if (mkdir(CWM_DATA_DIR_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
-        {
-            return ; // Failed to create folder
-        }
-    }
-    FILE * fp=NULL;
-    switch (type)
-    {
-    case CYWEE_DATA_CALORIES:
-        fp  = fopen(CWM_CALORIES_DATA_PATH,"wb");
-        break;
-    case CYWEE_DATA_STEP:
-        fp  = fopen(CWM_STEP_DATA_PATH,"wb");
-        break;
-    case CYWEE_DATA_DISTANCE:
-        fp  = fopen(CWM_DISTANCE_DATA_PATH,"wb");
-        break;
-    case CYWEE_DATA_FAT:
-        fp  = fopen(CWM_FAT_DATA_PATH,"wb");
-        break;
-
-    default:
-        break;
-    }
-    
-  
-
-    if(fp==NULL)
-    {
-        CWM_OS_dbgPrintf("%s open fail\n",CWM_STEP_DATA_PATH);
-        return;
-    }
-    int ret =fwrite(data,1,len,fp);
-   
-    CWM_OS_dbgPrintf("CWM_OS_saveData fwrite failed %d %d\n",ret,*data);
-    
-    fclose(fp);
-}
-
-
-void CWM_OS_OneHourAgo_saveData(void* data, uint32_t len,uint8_t type){
-    
-     struct stat info;
-
-    if (stat(CWM_DATA_DIR_PATH, &info) != 0)
-    {
-        if (mkdir(CWM_DATA_DIR_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
-        {
-            return ; // Failed to create folder
-        }
-    }
-    FILE * fp=NULL;
-    switch (type)
-    {
-    case CYWEE_DATA_CALORIES:
-        fp  = fopen(CWM_CALORIES_DATA_PATH_AGO ,"wb");
-        break;
-    case CYWEE_DATA_STEP:
-        fp  = fopen(CWM_STEP_DATA_PATH_AGO ,"wb");
-        break;
-    case CYWEE_DATA_DISTANCE:
-        fp  = fopen(CWM_DISTANCE_DATA_PATH_AGO ,"wb");
-        break;
-    case CYWEE_DATA_FAT:
-        fp  = fopen(CWM_FAT_DATA_PATH_AGO ,"wb");
-        break;
-
-    default:
-        break;
-    }
-    
-    if(fp==NULL)
-    {
-        CWM_OS_dbgPrintf("%s open fail\n",CWM_STEP_DATA_PATH_AGO );
-        return;
-    }
-    int ret =fwrite(data,1,len,fp);
-   
-    //CWM_OS_dbgPrintf("CWM_OS_saveData fwrite failed %d %d\n",ret,*(int *)data);
-    
-    fclose(fp);
-}
-
-typedef struct time_and_32_date
-{
-   uint32_t time;
-   uint32_t data;
-
-}time_and_32_date_t;
-
-
-typedef struct time_and_float_date
-{
-   uint32_t time;
-   float data;
-
-}time_and_float_date_t;
-
-typedef struct time_and_16_date
-{
-   uint16_t time;
-   float data;
-
-}time_and_16_date_t;
-
-
-
-uint8_t time_is_repetition(uint32_t time,void *data,char *path,void *data_array,uint8_t type)
-{
-    uint8_t is_repetition=0;
-
-    if(type==0)
-    {
-        time_and_32_date_t * p= (time_and_32_date_t*)data_array;
-        FILE *fp=fopen(path,"rb+");
-        if (fp == NULL) return 0;
-
-        fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-        uint32_t size = ftell(fp);       // 获取当前文件指针位置,即文件大小
-        fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-      
-        for(int i=0;i<size/8;i++)
-        {
-            fread(&p[i].time,sizeof(uint32_t),1,fp);
-            fread(&p[i].data,sizeof(uint32_t),1,fp);
-            if(p[i].time==time)
-            {
-                is_repetition++;
-                uint32_t _32_data=*(uint32_t *)data;
-                p[i].data+=_32_data;
-            }
-        }
-        fclose(fp);
-        
-    }
-    else if(type==1)
-    {
-
-        time_and_float_date_t * p= (time_and_float_date_t*)data_array;
-        FILE *fp=fopen(path,"rb+");
-        if (fp == NULL) return 0;
-
-        fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-        uint32_t size = ftell(fp);       // 获取当前文件指针位置,即文件大小
-        fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-      
-        for(int i=0;i<size/8;i++)
-        {
-            fread(&p[i].time,sizeof(uint32_t),1,fp);
-            fread(&p[i].data,sizeof(float),1,fp);
-            if(p[i].time==time)
-            {
-                is_repetition++;
-                float _float_data=*(float *)data;
-                p[i].data+=_float_data;
-            }
-        }
-        fclose(fp);
-    }
-     else if(type==2)
-    {
-
-        time_and_16_date_t * p= (time_and_16_date_t*)data_array;
-        FILE *fp=fopen(path,"rb+");
-        if (fp == NULL) return 0;
-
-        fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-        uint32_t size = ftell(fp);       // 获取当前文件指针位置,即文件大小
-        fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-      
-        for(int i=0;i<size/6;i++)
-        {
-            fread(&p[i].time,sizeof(uint32_t),1,fp);
-            fread(&p[i].data,sizeof(uint16_t),1,fp);
-            if(p[i].time==time)
-            {
-                is_repetition++;
-                 uint16_t _16_data=*(uint16_t *)data;
-                p[i].data+=_16_data;
-            }
-        }
-        fclose(fp);
-    }
-
-    return is_repetition;
-}
-
-
-
-
-void CWM_OS_saveData_history(void* new_data,void *history ,uint32_t len,uint8_t type,uint32_t time){
-
-    struct stat info;
-
-    if (stat(GOAL_DATA_CONFIG_DIR, &info) != 0)
-    {
-        if (mkdir(GOAL_DATA_CONFIG_DIR, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
-        {
-            return ; // Failed to create folder
-        }
-    }
-
-    if (stat(GOAL_DATA_CONFIG_DIR_STEP, &info) != 0)
-    {
-        if (mkdir(GOAL_DATA_CONFIG_DIR_STEP, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
-        {
-            return ; // Failed to create folder
-        }
-    }
-
-    if (stat(GOAL_DATA_CONFIG_DIR_DISTANCE, &info) != 0)
-    {
-        if (mkdir(GOAL_DATA_CONFIG_DIR_DISTANCE, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
-        {
-            return ; // Failed to create folder
-        }
-    }
-
-    if (stat(GOAL_DATA_CONFIG_DIR_STAND, &info) != 0)
-    {
-        if (mkdir(GOAL_DATA_CONFIG_DIR_STAND, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
-        {
-            return ; // Failed to create folder
-        }
-    }
-
-    if (stat(GOAL_DATA_CONFIG_DIR_FAT, &info) != 0)
-    {
-        if (mkdir(GOAL_DATA_CONFIG_DIR_FAT, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
-        {
-            return ; // Failed to create folder
-        }
-    }
-
-    if (stat(GOAL_DATA_CONFIG_DIR_CALORIES, &info) != 0)
-    {
-        if (mkdir(GOAL_DATA_CONFIG_DIR_CALORIES, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
-        {
-            return ; // Failed to create folder
-        }
-    }
-
-
-
-    char path_[64]={0};
-    char timeday[12] = {0};
-    uapi_get_TIME_STR(time,timeday, '_','\0',DATE_Y_M_D);
-
-    int i_data=0;
-    float f_data=0;
-    int16_t i_data_16=0;
-
-    switch (type)
-    {
-    case CYWEE_DATA_CALORIES:
-        sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_CALORIES_PATH,timeday);
-
-        f_data=*(float*)new_data-*(float*)history;
-
-        break;
-    case CYWEE_DATA_STEP:
-       sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_PATH,timeday);
-
-        i_data= *(int*)new_data-*(int*)history;//新数据减去旧数据,作为这一个小时的值
-        // {   
-        //     FILE *fp= fopen("/user/userdata/i_data_test.txt","ab+");
-        //     fwrite("x",1,1,fp);
-        //     fclose(fp);
-        // }
-       
-
-        break;
-    case CYWEE_DATA_DISTANCE:
-       sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_DISTANCE_PATH,timeday);
-       f_data=*(float*)new_data-*(float*)history;
-
-        break;
-    case CYWEE_DATA_FAT:
-       sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_FAT_PATH,timeday);
-        i_data_16= *(int16_t*)new_data-*(int16_t*)history;//新数据减去旧数据,作为这一个小时的值
-        
-        break;
-
-    default:
-        break;
-    }
-   
-    CWM_OS_dbgPrintf(" save path %s \n",path_);
-
-    if(i_data<0 || f_data<0 ||i_data_16<0)
-    {
-        i_data=0;
-        f_data=0;
-        *(int*)history=0;
-        return;
-    }
-
-    if(type==CYWEE_DATA_STEP && i_data!=0)
-    {
-        #ifdef GOAL_DATA_AMEND
-        time_and_32_date_t array[25]={0};
-
-        for(int i=0;i<25;i++)
-        {
-            array[i].data=0;
-            array[i].time=0;
-        }
-       
-
-        if(time_is_repetition(time,&i_data,path_,array,0))
-        {
-
-
-            FILE * fp = fopen(path_,"wb+");
-            if(fp==NULL)
-            {
-                CWM_OS_dbgPrintf("open fail\n");
-                return;
-            }
-
-            for(int i=0;i<25;i++)
-            {
-                if(array[i].time && array[i].data)
-                {
-                    fwrite(&array[i].time,sizeof(array[i].time),1,fp);
-                    fwrite(&array[i].data,sizeof(array[i].data),1,fp);
-                }
-
-            }
-            fclose(fp);
-
-        }
-        else
-        #endif
-        {
-       
-            FILE * fp = fopen(path_,"ab+");
-            if(fp)
-            {
-                uint32_t creationTime;
-                creationTime=time;//当前值计入上小时
-
-                int ret =fwrite(&creationTime,1,4,fp);
-                if(ret==0)
-                {
-                    CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
-                }
-                if(i_data)
-                ret =fwrite(&i_data,1,sizeof(i_data),fp);
-                fclose(fp);
-            }
-            else
-            {
-                msleep(5);
-                FILE * fp = fopen(path_,"ab+");
-                uint32_t creationTime;
-                creationTime=time;//当前值计入上小时
-
-                int ret =fwrite(&creationTime,1,4,fp);
-                if(ret==0)
-                {
-                    CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
-                }
-                if(i_data)
-                ret =fwrite(&i_data,1,sizeof(i_data),fp);
-                fclose(fp);
-            }
-
-            
-
-     
-        }
-
-    }
-    if((type==CYWEE_DATA_CALORIES|| type==CYWEE_DATA_DISTANCE) && f_data!=0)
-    {
-
-        #ifdef GOAL_DATA_AMEND
-         time_and_float_date_t array[25]={0};
-
-        for(int i=0;i<25;i++)
-        {
-            array[i].data=0;
-            array[i].time=0;
-        }
-       
-        if(time_is_repetition(time,&i_data,path_,array,1))
-        {
-
-            FILE * fp = fopen(path_,"wb+");
-            if(fp==NULL)
-            {
-                CWM_OS_dbgPrintf("open fail\n");
-                return;
-            }
-
-            for(int i=0;i<25;i++)
-            {
-                if(array[i].time && array[i].data)
-                {
-                    fwrite(&array[i].time,sizeof(array[i].time),1,fp);
-                    fwrite(&array[i].data,sizeof(array[i].data),1,fp);
-                }
-
-            }
-            fclose(fp);
-
-        }
-        else
-        #endif
-        {
-        
-            FILE * fp = fopen(path_,"ab+");
-            if(fp)
-            {
-                uint32_t creationTime;
-                creationTime=time;//当前值计入上小时
-
-                int ret =fwrite(&creationTime,1,4,fp);
-                if(ret==0)
-                {
-                    CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
-                }
-                if(f_data)
-                ret =fwrite(&f_data,1,sizeof(f_data),fp);
-
-                fclose(fp);
-
-            }        
-        }
-    }
-
-    if((type==CYWEE_DATA_FAT) && i_data_16!=0)
-    {
-
-        #ifdef GOAL_DATA_AMEND
-         time_and_16_date_t array[25]={0};
-
-        for(int i=0;i<25;i++)
-        {
-            array[i].data=0;
-            array[i].time=0;
-        }
-       
-        if(time_is_repetition(time,&i_data,path_,array,2))
-        {
-
-            FILE * fp = fopen(path_,"wb+");
-            if(fp==NULL)
-            {
-                CWM_OS_dbgPrintf("open fail\n");
-                return;
-            }
-
-            for(int i=0;i<25;i++)
-            {
-                if(array[i].time && array[i].data)
-                {
-                    fwrite(&array[i].time,sizeof(array[i].time),1,fp);
-                    fwrite(&array[i].data,sizeof(array[i].data),1,fp);
-                }
-
-            }
-            fclose(fp);
-
-        }
-        else
-        #endif
-
-        {
-            FILE * fp = fopen(path_,"ab+");
-            if(fp)
-            {
-                uint32_t creationTime;
-                creationTime=time;//当前值计入上小时
-
-                int ret =fwrite(&creationTime,1,4,fp);
-                if(ret==0)
-                {
-                    CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
-                }
-                if(i_data_16)
-                ret =fwrite(&i_data_16,1,sizeof(i_data_16),fp);
-
-                fclose(fp);
-
-            }        
-        }
-    }
-    
-
-     if(i_data)
-    *(int*)history=*(int*)new_data;
-     else if(i_data_16)
-    *(int16_t*)history=*(int16_t*)new_data;
-    else if(f_data)
-    *(float*)history=*(float*)new_data;
-
-   
-}
-
-void CWM_OS_saveData_STAND_history(uint8_t *falg,uint32_t len,uint32_t time){
-    if(*falg)
-    {
-        struct stat info;
-
-        if (stat(GOAL_DATA_CONFIG_DIR, &info) != 0)
-        {
-            if (mkdir(GOAL_DATA_CONFIG_DIR, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
-            {
-                return ; // Failed to create folder
-            }
-        }
-        
-        if (stat(GOAL_DATA_CONFIG_DIR_STAND, &info) != 0)
-        {
-            if (mkdir(GOAL_DATA_CONFIG_DIR_STAND, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
-            {
-                return ; // Failed to create folder
-            }
-        }
-
-        char path_[64]={0};
-        char timeday[12] = {0};
-        uapi_get_TIME_STR(time,timeday, '_','\0',DATE_Y_M_D);
-
-
-        sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_STAND_DATA_PATH,timeday);
-        CWM_OS_dbgPrintf(" save path %s \n",path_);
-
-        FILE * fp = fopen(path_,"ab+");
-        if(fp==NULL)
-        {
-            CWM_OS_dbgPrintf("open fail\n");
-            return;
-        }
-        uint32_t ret;
-
-        uint32_t creationTime;
-        creationTime=time;//当前值计入上小时
-
-        CWM_OS_dbgPrintf("uapi_get_timestampe_ss %d\n",ret);
-    
-        ret =fwrite(&creationTime,1,len,fp);
-        if(ret==0)
-        {
-            CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
-        }
-
-         fclose(fp);
-
-        *falg=0;
-    }
-    else
-    {
-        return;
-    }
-
-}
-  // calories 数据存储
-
-uint8_t get_stand_count(void)
-{
-    char path_[64]={0};
-    char timeday[12] = {0};
-    uapi_get_YYMMDD_Time(timeday, '_');
-
-
-    sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_STAND_DATA_PATH,timeday);
-    CWM_OS_dbgPrintf(" save path %s \n",path_);
-
-    FILE * fp = fopen(path_,"rb+");
-    if(fp==NULL)
-    {
-        CWM_OS_dbgPrintf("open fail\n");
-        return 0;
-    }
-    fseek(fp, 0, SEEK_END);
-    uint8_t size = ftell(fp);
-    fseek(fp, 0, SEEK_SET);
-
-    uint32_t array[25]={0};
-    uint8_t read_size=0;
-    fread(array,sizeof(uint32_t),size/4,fp);
-    uint8_t is_repetition=0;
-    for(int x=0;x<size/4;x++)
-    {
-        if(array[x])
-        {
-            for(int y=0;y<size/4;y++)
-            {
-                if(array[y]==array[x] && y!=x)
-                {
-                   is_repetition++;
-                }
-            }
-        }
-       
-    }
-    
-    
-
-    fclose(fp);
-    return size/4-is_repetition;
-
-}
-
-
-
-void CWM_OS_restoreData(int* data, uint32_t len,uint8_t type){
-
-
-    FILE * fp=NULL;
-    switch (type)
-    {
-    case CYWEE_DATA_CALORIES:
-        fp  = fopen(CWM_CALORIES_DATA_PATH,"rb");
-        break;
-    case CYWEE_DATA_STEP:
-        fp  = fopen(CWM_STEP_DATA_PATH,"rb");
-        break;
-    case CYWEE_DATA_DISTANCE:
-        fp  = fopen(CWM_DISTANCE_DATA_PATH,"rb");
-        break;
-    case CYWEE_DATA_FAT:
-        fp  = fopen(CWM_FAT_DATA_PATH,"rb");
-        break;
-    default:
-        break;
-    }
-
-
-    if(fp==NULL)
-    {
-        CWM_OS_dbgPrintf("%s open fail\n",CWM_HISTORY_DATA_PATH);;
-        return;
-    }
-    int ret =fread(data,1,len,fp);
-   
-    //CWM_OS_dbgPrintf("CWM_OS_restoreData fread failed %d %d\n",ret,*data);
-    
-    fclose(fp);
-}
-
-void CWM_OS_OneHourAgo_restoreData(void* data, uint32_t len,uint8_t type){
-
-
-    FILE * fp=NULL;
-    switch (type)
-    {
-    case CYWEE_DATA_CALORIES:
-        fp  = fopen(CWM_CALORIES_DATA_PATH_AGO,"rb");
-        break;
-    case CYWEE_DATA_STEP:
-        fp  = fopen(CWM_STEP_DATA_PATH_AGO,"rb");
-        break;
-    case CYWEE_DATA_DISTANCE:
-        fp  = fopen(CWM_DISTANCE_DATA_PATH_AGO,"rb");
-        break;
-    case CYWEE_DATA_FAT:
-        fp  = fopen(CWM_FAT_DATA_PATH_AGO,"rb");
-        break;
-    default:
-        break;
-    }
-
-
-    if(fp==NULL)
-    {
-        CWM_OS_dbgPrintf("%s open fail\n",CWM_HISTORY_DATA_PATH);;
-        return;
-    }
-    int ret =fread(data,1,len,fp);
-   
-    //CWM_OS_dbgPrintf("CWM_OS_restoreData fread failed %d %d\n",ret,*(int*)data);
-    
-    fclose(fp);
-}
\ No newline at end of file
index 7ae4135..84ab854 100644 (file)
@@ -2871,7 +2871,7 @@ void hx3695_hrs_ppg_Int_handle(void)
   #ifdef SUPPORT_CYWEE_SERVICE\r
     memset(gsensordata,0.0f,sizeof(gsenson_t) * *count);\r
 \r
-    gsensor_get_n_data(*count,gsensordata);  \r
+    cywee_get_gsensor_data(*count,gsensordata);  \r
 \r
     for(ii=0; ii<*count; ii++)\r
     {\r
@@ -2903,7 +2903,7 @@ void hx3695_hrs_ppg_Int_handle(void)
           gsen_fifo_z_send[ii] = gsensordata[ii].z * 4096 / 10;\r
       }\r
 \r
-    // gsensor_get_n_data(8,gsensordata);  \r
+    // cywee_get_gsensor_data(8,gsensordata);  \r
     // for(ii=0; ii<*count; ii++)\r
     // {\r
     //   if(gsensordata[ii].x == 0.0f && gsensordata[ii].y == 0.0f && gsensordata[ii].z == 0.0f)\r
@@ -3440,7 +3440,7 @@ void hx3695_spo2_ppg_Int_handle(void)
     {\r
         return;\r
     }\r
-    //gsensor_get_n_data(8,gsensordata);\r
+    //cywee_get_gsensor_data(8,gsensordata);\r
     for(ii=0; ii<*count; ii++)\r
     {\r
 \r
index 5b86f23..2347c70 100644 (file)
@@ -35,9 +35,9 @@ void tyhx_delay_ms(uint32_t ms)
     LOS_Mdelay(ms);
 }
 
-
-
+#ifdef SUPPORT_PPG_SERVICE
 #include "ppg_service.h"
+#endif
 #include "cmsis_os2.h"
 #define BUTTON_APP_TIMER_INTERVAL 20
 osTimerId_t g_timer40_timer = NULL;
@@ -47,19 +47,25 @@ static uint8_t g_hx3695_timer_installed = 0;
 
 static void timer40_func(void)
 {
+#ifdef SUPPORT_PPG_SERVICE
     send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_40TIMER_CALLBACK);
+#endif
     // agc_timeout_handler(NULL);
 }
 
 static void timer320_func(void)
 {
+#ifdef SUPPORT_PPG_SERVICE
     send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_320TIMER_CALLBACK);
+#endif
     // heart_rate_meas_timeout_handler(NULL);
 }
 
 static void timer5000_func(void)
 {
+#ifdef SUPPORT_PPG_SERVICE
     send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_5000TIMER_CALLBACK);
+#endif
     // heart_rate_meas_timeout_handler(NULL);
 }
 bool tyhx_timer_init(void)
index 35f21cc..8f435b8 100644 (file)
@@ -387,7 +387,7 @@ void install_Register_dial( char * name,uint16_t id)
 
 }
 
-// #include "cywee_ble_Service.h"
+// #include "cywee_ble_service.h"
 
 void delete_before_file(uint8_t type)
 {
@@ -606,7 +606,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
         {
             case 0x43: //同步步数历史数据
 
-                if( get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
+                if( cywee_get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
                 {
                     if(value>0)
                     {
@@ -619,7 +619,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
               
                 break;
             case 0x44://同步燃脂时间数据
-                if(get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
+                if(cywee_get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
                 {
                      if(value_16>0)
                     {
@@ -634,7 +634,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
                 break;
             case 0x45://同步站立历史数据
 
-                // if(get_stand_falg())
+                // if(cywee_get_stand_falg())
                 // {
                 //     memcpy(buf+size,&creationTime,4);
                     //     size+=4;
@@ -642,7 +642,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
                
                 break;
             case 0x46://同步卡路里历史数据
-                if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
+                if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
                 {   
                     if(f_value>0)
                     {
@@ -655,7 +655,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
               
                 break;
             case 0x47://同步距离历史数据
-                if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
+                if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
                 {
                     if(f_value>0)
                     {
index e60fcac..36f43aa 100644 (file)
@@ -107,14 +107,6 @@ typedef struct
 }msg_drink_info_t;
 
 
-typedef enum {
-    CYWEE_SAVE_DATA_STEP,
-    CYWEE_SAVE_DATA_DISTANCE,
-    CYWEE_SAVE_DATA_CALORIES,
-    CYWEE_SAVE_DATA_FAT,
-} CYWEE_SAVE_DATA_TYPE;
-
-
 void read_message_data(void);//读内存信息数据开机读一次
 void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight);
 
index 986e421..cf779b8 100644 (file)
@@ -1109,7 +1109,7 @@ void install_Register_dial( char * name,uint16_t id)
 
 }
 
-#include "cywee_ble_Service.h"
+#include "cywee_ble_service.h"
 
 void delete_before_file(uint8_t type)
 {
@@ -1326,7 +1326,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
         {
             case 0x43: //同步步数历史数据
 
-                if( get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
+                if( cywee_get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
                 {
                     if(value>0)
                     {
@@ -1339,7 +1339,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
               
                 break;
             case 0x44://同步燃脂时间数据
-                if(get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
+                if(cywee_get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
                 {
                      if(value_16>0)
                     {
@@ -1354,7 +1354,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
                 break;
             case 0x45://同步站立历史数据
 
-                // if(get_stand_falg())
+                // if(cywee_get_stand_falg())
                 // {
                 //     memcpy(buf+size,&creationTime,4);
                     //     size+=4;
@@ -1362,7 +1362,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
                
                 break;
             case 0x46://同步卡路里历史数据
-                if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
+                if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
                 {   
                     if(f_value>0)
                     {
@@ -1375,7 +1375,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
               
                 break;
             case 0x47://同步距离历史数据
-                if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
+                if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
                 {
                     if(f_value>0)
                     {
@@ -2990,7 +2990,7 @@ void install_Register_dial( char * name,uint16_t id)
 
 }
 
-#include "cywee_ble_Service.h"
+#include "cywee_ble_service.h"
 
 void delete_before_file(uint8_t type)
 {
@@ -3207,7 +3207,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
         {
             case 0x43: //同步步数历史数据
 
-                if( get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
+                if( cywee_get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
                 {
                     if(value>0)
                     {
@@ -3220,7 +3220,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
               
                 break;
             case 0x44://同步燃脂时间数据
-                if(get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
+                if(cywee_get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
                 {
                      if(value_16>0)
                     {
@@ -3235,7 +3235,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
                 break;
             case 0x45://同步站立历史数据
 
-                // if(get_stand_falg())
+                // if(cywee_get_stand_falg())
                 // {
                 //     memcpy(buf+size,&creationTime,4);
                     //     size+=4;
@@ -3243,7 +3243,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
                
                 break;
             case 0x46://同步卡路里历史数据
-                if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
+                if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
                 {   
                     if(f_value>0)
                     {
@@ -3256,7 +3256,7 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
               
                 break;
             case 0x47://同步距离历史数据
-                if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
+                if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
                 {
                     if(f_value>0)
                     {
index d745430..586d289 100644 (file)
@@ -4124,11 +4124,11 @@ void GetCurDataCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,ui
     //     }\r
     //     else if(i==2)\r
     //     {\r
-    //         // value=get_step_data();\r
+    //         // value=cywee_get_step_data();\r
     //     }\r
     //     else if(i==3)\r
     //     {\r
-    //         value=get_fat_time_data();\r
+    //         value=cywee_get_fat_time_data();\r
     //     }\r
     //     else if(i==4)\r
     //     {\r
@@ -4136,11 +4136,11 @@ void GetCurDataCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,ui
     //     }\r
     //     else if(i==5)\r
     //     {\r
-    //         value=get_calories_data();\r
+    //         value=cywee_get_calories_data();\r
     //     }\r
     //     else if(i==6)\r
     //     {\r
-    //         value=get_distance_data();\r
+    //         value=cywee_get_distance_data();\r
     //     }\r
 \r
 \r
index 4b7f6bc..3d9e22e 100644 (file)
@@ -51,8 +51,8 @@ extern "C" {
 #endif\r
 \r
 #include "ConfigModelC.h"\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
-#include "cywee_ble_Service.h"\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
+#include "cywee_ble_service.h"\r
 #endif\r
 #ifdef SUPPORT_OHOSFWK\r
 #include "BluetoothWrapper.h"\r
@@ -1252,7 +1252,7 @@ static void svr_ble_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid,
         || uuid_tmp == BLE_UUID_PPG_BLE_SERVICE \r
         //|| uuid_tmp == ALIPAYY_SERVICE_ID\r
 #endif\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
         || uuid_tmp == BLE_UUID_CYWEE_REPORT_SERVICE\r
 #endif\r
          ) \r
@@ -1289,7 +1289,7 @@ static void svr_ble_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid,
 #endif\r
 \r
 \r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
 \r
     bt_uuid_t cywee_ble_service_uuid = {0};\r
     bts_data_to_uuid_len2(BLE_UUID_CYWEE_REPORT_SERVICE, &cywee_ble_service_uuid);\r
@@ -1346,7 +1346,7 @@ static void svr_ble_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid,
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ppg ble service svr_ble_bt_gatts_service_add_cb ret:%d\r\n",ret);\r
     }\r
 #endif\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
     if (ble_gatts_cmp_uuid(uuid, &cywee_ble_service_uuid) == true){\r
         ble_cywee_add_characters_and_descriptors(server_id,srv_handle);\r
         ret = gatts_start_service(server_id, srv_handle);\r
@@ -1570,7 +1570,7 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
         ble_ppgtest_store_report_handle(result->value_handle);\r
     }\r
 #endif\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
     bt_uuid_t cywee_report_uuid = {0};\r
     bts_data_to_uuid_len2(BLE_UUID_CYWEE_RX, &cywee_report_uuid);\r
 \r
@@ -2074,7 +2074,7 @@ void svr_ble_bluetooth_init(void)
     \r
     // ble_ppgtest_server_init(g_ble_server_id);\r
 \r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
     ble_cywee_server_init(g_ble_server_id);\r
 #endif\r
     gattc_reg_id();\r
@@ -2251,7 +2251,7 @@ static void blesrv_service_check_task(void const *arg)
         //     factory_recv_ota_data(p_msgbuf,msg_len,server_handle);\r
         // }\r
 \r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
         else if (server_handle == get_cywee_ate_write_handl())\r
         {\r
             cywee_recv_cmd_data(p_msgbuf,msg_len,server_handle);\r
index 14a98d4..c9a4737 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com\r
  * @Date: 2024-06-17 14:31:08\r
  * @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2025-02-20 18:34:13\r
+ * @LastEditTime: 2025-05-20 11:31:30\r
  * @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
  * @Description: \r
  * \r
@@ -402,12 +402,16 @@ void aging_task(void)
                 return;\r
             }\r
             uapi_get_timestampe_ss(&current_time);\r
+#ifdef SUPORT_PPG_SERVICE\r
             send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_SINGLE_CHECK_MODE_TEST);\r
+#endif\r
             LOS_Msleep(200);\r
             #ifdef PPG_HX3695\r
             FT_RESULTS_t ft_result = hx3695_factroy_test(SINGLE_CHECK_TEST);\r
             #endif\r
+#ifdef SUPORT_PPG_SERVICE\r
             send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);\r
+#endif\r
             #ifdef PPG_HX3695\r
             PRINT("ft_result.gr_data_final : %d , ft_result.red_data_final : %d , ft_result.ir_data_final : %d\r\n",ft_result.gr_data_final,ft_result.red_data_final,ft_result.ir_data_final);\r
             if(!(ft_result.gr_data_final && ft_result.red_data_final && ft_result.ir_data_final))\r
@@ -437,7 +441,7 @@ void aging_task(void)
                 return;\r
             }\r
             uapi_get_timestampe_ss(&current_time);\r
-            get_gsonsen_xyz(&g);\r
+            cywee_get_gsensor_data(1,&g);\r
             if(g.x == 0 && g.y == 0 && g.z == 0)\r
             {\r
                 aging_t.gsensor_error++;\r
index ed546ad..5ee0b8c 100644 (file)
@@ -78,7 +78,6 @@
 #include "custom_utils.h"
 #include "custom_save_runtime.h"
 #ifdef FD230_650
-#include "cywee_service.h"
 #include "microtar.h"
 #include "mag_service.h"
 #include "ppg_service.h"
 #include "bleEvent.h"
 #endif
 
+#ifdef SUPPORT_CYWEE_SERVICE
+#include "cywee_hal.h"
+#include "cywee_service.h"
+#endif
 
 #ifdef SUPORT_MAG_SERVICE
 #include "mag_hal.h"
@@ -540,9 +543,9 @@ void startup_post_init_task(void)
 
     PRINT("startup_post_init_task !\r\n");
 
-    #ifdef FD230_650
+#ifdef SUPPORT_CYWEE_SERVICE
     do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIME_SYNC,NULL);
-    #endif
+#endif
     if(!cm_custom_ble_service_on_flag())
     {
         stop_custom_ble_service();
@@ -2031,9 +2034,9 @@ void flash_erase(void)
 
 
 void get_gsensor_single(uint8_t *databuf) {
-    #ifdef FD230_650
+    #ifdef SUPORT_CYWEE_SERVICE
     gsenson_t t;
-    get_gsonsen_xyz(&t);
+    cywee_get_gsensor_data(1,&t);
     int16_t x, y, z;
     x = t.x * 2048;
     y = t.y * 2048;
@@ -2056,7 +2059,7 @@ void get_gsensor_single(uint8_t *databuf) {
 #ifdef FD230_650
 void gsensor_get_single_data(gsenson_t *t)
 {
-    get_gsonsen_xyz(t);
+    cywee_get_gsensor_data(1,&t);
 }
 #endif
 
@@ -2441,8 +2444,8 @@ uint32_t uapi_calendar_recover_date(void)
 
 void uapi_ppg_get_id(uint8_t *chip_id)
 {
-#ifdef PPG_HX3695
-    hx3695_get_id(chip_id);
+#ifdef SUPORT_PPG_SERVICE
+    *chip_id = ppg_get_chip_id();
 #endif
 #ifdef PPG_VC9202
     uint8_t id = 0;
@@ -2863,14 +2866,6 @@ void uapi_cywee_reset_daily_data(void)
     #endif
 }
 
-//cywee时间更新
-void uapi_cywee_time_sync(void)
-{
-    #ifdef FD230_650
-    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIME_SYNC,NULL);
-    #endif
-}
-
 void uapi_cywee_get_id(uint8_t *id)
 {
     custom_i2c_read_regs(0x19,0x0FU,1,id,1,I2C_BUS_2);
@@ -2886,9 +2881,9 @@ void uapi_cywee_get_chipinfo(char *databuf,uint8_t len)
 
 void uapi_cywee_get_version(char *databuf,uint8_t len)
 {
-    #ifdef FD230_650
+#ifdef SUPPORT_CYWEE_SERVICE
     cywee_get_version(databuf,len);
-    #endif
+#endif
 }
 
 #ifdef SUPPORT_ALIPAY_SEC
@@ -3060,7 +3055,7 @@ void uapi_gei_btmac_and_chipinfo(void)
 
 uint8_t uapi_get_cywee_active_state(void)
 {
-    #ifdef FD230_650
+    #ifdef SUPPORT_CYWEE_SERVICE
     return cywee_get_active_state();
     #endif
     return 0;
@@ -3178,10 +3173,11 @@ void uapi_aging_test(uint32_t test_time)
         uapi_check_spk(1);
         LOS_Msleep(6000);
         uapi_check_spk(0);
-
+#ifdef SUPORT_PPG_SERVICE
         send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_TEST);
         LOS_Msleep(6000);
         send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);
+#endif
         uapi_ppg_get_id(&ppg_id);
         //if(ft_result.gr_data_final < 10000 || ft_result.red_data_final < 10000 || ft_result.ir_data_final < 10000)
         if(ppg_id != 0x65)
@@ -4317,5 +4313,4 @@ void uapi_cat1_add_cat1_vote(void)
     }
     // WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"\r\nCAT1 SERVICE MCU WAKEUP SUCCESS\r\n");
 #endif
-}
-    
\ No newline at end of file
+}
\ No newline at end of file
index fda5e75..980acb7 100644 (file)
 #include "PhoneServiceC.h"
 
 #include "battery_hal.h"
-#include "cywee_hal.h"
+
 #include "Bluetooyhpabpserver.h"
 
 #include "dial_sos_c.h"
 #include "battery_service.h"
-#include "cywee_hal.h"
 #endif
 // #include "msg_center_customerC.h"
 #ifdef SUPPORT_A5133_SERVICE
 #include "service/a5133_service.h"
 #endif
+
+#ifdef SUPPORT_CYWEE_SERVICE
+#include "cywee_hal.h"
+#include "cywee_service.h"
+#endif
+
 #define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0]))
 #define CUSTOM_UTILS_MAX_ARGC            8
 #define CUSTOM_UTILS_MAX_ARGV_LEN        256
@@ -405,7 +410,9 @@ static uint32_t custom_cywee_time_sync(uint8_t *para, uint32_t paraLen, char *st
 
     UNUSED(strCommonCmd);
 
-    uapi_cywee_time_sync();
+#ifdef SUPPORT_CYWEE_SERVICE
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIME_SYNC,NULL);
+#endif
 
     return ERRCODE_SUCC;
 }
@@ -1000,7 +1007,7 @@ static uint32_t BLE_TEST(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
         low_power_play_toUI(atoi( (char *)argv[1]));
         break;
     case 12:
-        set_step_data(atoi( (char *)argv[1]));
+        cywee_set_step_data(atoi( (char *)argv[1]));
         break;
     case 13:
         CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,(uint8_t *)&type_2,1);