蓝牙设置获取实时训练频率 110/2
authorCaisking <3449750381@qq.com>
Sun, 28 Apr 2024 13:07:03 +0000 (21:07 +0800)
committerCaisking <3449750381@qq.com>
Sun, 28 Apr 2024 13:07:03 +0000 (21:07 +0800)
code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.h
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 9778300..7a8ffad 100644 (file)
@@ -73,11 +73,11 @@ namespace OHOS
 
             CONFIGMODEL_ITEM_TRANING_FREQ,//训练实时数据上传频率
             CONFIGMODEL_ITEM_TRANING_AUTO,//开启关闭自动获取实时数据
+            CONFIGMODEL_ITEM_TRAINING_HEART_MAX,//训练最高心率
 
             CONFIFMOFEL_ITEM_HEARTRATE_DETECTED,//心率周期频率  0(关闭) 1 5 10
             CONFIFMOFEL_ITEM_HEARTRATE_MAX,//最大心率
             CONFIFMOFEL_ITEM_HEARTRATE_MIN,//最小心率
-            CONFIGMODEL_ITEM_TRAINING_HEART_MAX,//训练最高心率
             CONFIGMODEL_ITEM_MAX,
         } ;
 
index d9eec53..6760261 100644 (file)
@@ -171,7 +171,6 @@ namespace OHOS
     TraingModel ::TraingModel()
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::TraingModel()");
-        freq = ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRANING_FREQ);
         // sportdata->Initialize(); // 初始化结构体
     }
     TraingModel ::~TraingModel()
@@ -709,6 +708,8 @@ namespace OHOS
             /*判断是否开启自动获取*/
             if (ConfigModel::GetInstance()->get_configData_bool(ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO))
             {
+                freq = ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRANING_FREQ);
+                PRINT("freq%d\r\n", freq); // 获取实时数据频率
                 if (sportdata->duration % freq == 0)
                 {
                     PRINT("SendLiveData\r\n");
index e78cc37..44fd89f 100644 (file)
@@ -292,13 +292,6 @@ namespace OHOS
             TraingModel::GetInstance()->SendLiveData(); // 发送实时数据 [单指令,执行后退出]\r
             PRINT("SendLiveData is succeed!\r\n");\r
             return true;\r
-\r
-        case SETAUTO:\r
-            // 设置开启关闭获取实时数据 [单指令,执行后退出]\r
-            ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO, cmd->controlauto);\r
-            PRINT("SendTrainingAuto is succeed!\r\n");\r
-            return true;\r
-\r
         default:\r
             break;\r
         }\r
index cee04da..edcf149 100644 (file)
@@ -173,7 +173,15 @@ void set_SilentMode(uint8_t falg)
     p_ConfigModel->SetSilentMode(falg);
     return;
 }
+/*设置自动获取实时数据开关*/
+void set_traning_updata_auto(uint8_t traingauto)
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO,traingauto);
+    return;
+}
 
+/*设置获取实时数据频率*/
 void set_traning_updata_freq(uint8_t freq)
 {
     OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
index fbac848..92b5385 100644 (file)
@@ -27,90 +27,83 @@ extern "C"
 #include "errcode.h"
 #include "bleEvent.h"
 
-struct ancs_data_info_t
-{
-    int uid;//uid 消息唯一编号
-    int appid;//消息类型:1:微信 2:QQ 3:短信 4:其他
-    char title[256];//消息发送者
-    char msg[300];//消息内容
-    char time[20];//时间戳"20240417T102400" 用T分隔日期和时间,显示需要注意
-    int hasCode;//消息hash code
-};
-
-enum PAIRING
-{
-    DEVICEBIND = 0,//
-    DEVICEUNBIND,//设备解绑通知
-    DeviceUnBindingRequest,//设备解绑请求(与新设备连接)通知
-    REBOOT,
-    SHUTDOWN
-};
-//  enum class ExerciseState
-//     {
-//         Start = 0,
-//         End,
-//         Pause,
-//         Continue,
-//         General,
-//     };
-
-/*
-0:结束
-1:开始
-2:暂停
-3:恢复
-*/
-enum TRANING
-{
-    END=0,
-    START,
-    STOP,
-    RECOVER,
-    SETGOAL,//设置训练目标
-    SENDDATA,//获取实时训练数据
-    SETAUTO,//开启关闭自动获取实时数据
-};
-
-typedef struct
-{
-    uint8_t sportType;    //训练项目
-    uint8_t sportTagType; //训练目标类型
-    uint32_t sportTag;     //训练目标
-    uint8_t controlauto;  //开启关闭自动获取实时数据
-    uint8_t controlmd;    //训练控制md
-} training_ble;
-
-void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight);
-
-void set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon);
-void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int x);
-
-uint8_t ble_is_ready(void);
-void set_ble_falg(bool falg);
-uint8_t ble_is_connect_ready(void);
-char *addressbook(void);
-void addressbookToRead(char*);
-void  addressbookTowrite(void);
-const char *get_health_data_path(void);
-void add_addressbookToRead(char *data);
-
-void set_user_data(msg_user_info_t data);
-
-int get_goal_stepcount(void);
-
-int get_vibrationremiander(void);
-
-int get_SilentMode(void);
-
-void set_goal_stepcount(uint32_t step);
-
-void set_vibrationremiander(uint8_t falg);
-
-void set_SilentMode(uint8_t falg);
-
-void set_traning_updata_freq(uint8_t freq);
+    struct ancs_data_info_t
+    {
+        int uid;         // uid 消息唯一编号
+        int appid;       // 消息类型:1:微信 2:QQ 3:短信 4:其他
+        char title[256]; // 消息发送者
+        char msg[300];   // 消息内容
+        char time[20];   // 时间戳"20240417T102400" 用T分隔日期和时间,显示需要注意
+        int hasCode;     // 消息hash code
+    };
+
+    enum PAIRING
+    {
+        DEVICEBIND = 0,
+        DEVICEUNBIND,           // 设备解绑通知
+        DeviceUnBindingRequest, // 设备解绑请求(与新设备连接)通知
+        REBOOT,
+        SHUTDOWN
+    };
+
+    /*
+    0:结束
+    1:开始
+    2:暂停
+    3:恢复
+    */
+    enum TRANING
+    {
+        END = 0,  // 结束训练
+        START,    // 开始训练
+        STOP,     // 暂停训练
+        RECOVER,  // 恢复训练
+        SETGOAL,  // 设置训练目标
+        SENDDATA, // 获取实时训练数据
+    };
+
+    typedef struct
+    {
+        uint8_t sportType;    // 训练项目
+        uint8_t sportTagType; // 训练目标类型
+        uint32_t sportTag;    // 训练目标
+        uint8_t controlmd;    // 训练控制md
+    } training_ble;
+
+    void set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight);
+
+    void set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon);
+    void set_weather_one_data(int tempMin, int iconDay, int fxDate, int tempMax, char *textDay, int x);
+
+    uint8_t ble_is_ready(void);
+    void set_ble_falg(bool falg);
+    uint8_t ble_is_connect_ready(void);
+    char *addressbook(void);
+    void addressbookToRead(char *);
+    void addressbookTowrite(void);
+    const char *get_health_data_path(void);
+    void add_addressbookToRead(char *data);
+
+    void set_user_data(msg_user_info_t data);
+
+    int get_goal_stepcount(void);
+
+    int get_vibrationremiander(void);
+
+    int get_SilentMode(void);
+
+    void set_goal_stepcount(uint32_t step);
+
+    void set_vibrationremiander(uint8_t falg);
+
+    void set_SilentMode(uint8_t falg);
+    /*设置自动获取实时数据开关*/
+    void set_traning_updata_auto(uint8_t traingauto);
+    /*设置获取实时训练数据频率*/
+    void set_traning_updata_freq(uint8_t freq);
+    /*设置训练最高心率*/
+    void set_traning_heart_max(uint8_t data);
 
-void set_traning_heart_max(uint8_t data);
 #ifdef __cplusplus
 #if __cplusplus
 }
index 21786e4..10a2246 100644 (file)
@@ -2528,14 +2528,13 @@ static void SetRealTimeDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t
     if(Check_CRC(crcnum,len,crcvalue))\r
     {\r
         uint8_t autoSportData = crcnum[0];//开关 1开启 0关闭\r
+         /*进行开启关闭操作*/\r
+        printf("进行开启关闭操作 %d\r\n", autoSportData);\r
+        set_traning_updata_auto( autoSportData);\r
+\r
         value[17] = 1; //1 操作成功 2 操作失败\r
         value[18] = Calculate_CRC(value,18);\r
         sendBleData(value,19);\r
-        /*进行开启关闭操作*/\r
-        training_ble_data.controlmd = SETAUTO;\r
-        training_ble_data.controlauto = autoSportData;\r
-        printf("开启自动获取 %d\r\n", training_ble_data.controlauto);\r
-        CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,sizeof(training_ble));\r
     }else\r
     {\r
         value[17] = 0;\r
@@ -2543,7 +2542,7 @@ static void SetRealTimeDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t
         sendBleData(value,19);\r
     }\r
 }\r
-//设置训练试试数据采集频率\r
+//设置训练数据采集频率\r
 static void SetRTDataFreCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
 {\r
     uint8_t value[19];\r
@@ -2560,11 +2559,13 @@ static void SetRTDataFreCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *t
     if(Check_CRC(crcnum,len,crcvalue))\r
     {\r
         uint8_t Frequence = crcnum[0];//频率单位是s\r
+        /*设置获取频率*/\r
+        printf("设置获取频率 %d\r\n", Frequence);\r
         set_traning_updata_freq(Frequence);\r
+\r
         value[17] = 1; //1 操作成功 2 操作失败\r
         value[18] = Calculate_CRC(value,18);\r
         sendBleData(value,19);\r
-        /*设置获取频率*/\r
     }else\r
     {\r
         value[17] = 0;\r
@@ -3951,21 +3952,26 @@ uint32_t EACH_DATA_LEN=0;//每种数据类型的的长度
 \r
 \r
 \r
-void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len,char *data_item)\r
+void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,char *data_item)\r
 {\r
     sendbigDataBufState = true;//分包同步数据不允许打断\r
     char *buf=(char *)malloc(sizeof(char)*512);\r
     const char *path=NULL;\r
+    uint8_t timeBit = 4;//默认是4个字节的时间戳\r
+    uint8_t dataBit = 1;//默认是1个字节的数据\r
     switch (id)\r
     {\r
         case 0x40://同步心率历史数据\r
             path=get_health_data_path();\r
+            dataBit = 1;//心率数据字节1个字节 uint8_t\r
             break;\r
         case 0x41://同步血氧历史数据\r
             path=NULL;\r
+            dataBit = 1;//血氧数据字节1个字节 uint8_t\r
             break;\r
         case 0x43: //同步步数历史数据\r
             path=NULL;\r
+            dataBit = 4;//心率数据字节4个字节 uint32_t\r
             break;\r
         case 0x44://同步燃脂时间数据\r
             path=NULL;\r
@@ -4036,13 +4042,14 @@ void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len
     {\r
         cJSON * heart_data_item=cJSON_GetArrayItem(heart_data_list,i);\r
         uint32 timestamp=cJSON_GetObjectItem(heart_data_item,"timestamp")->valueint;\r
-        uint8_t value=cJSON_GetObjectItem(heart_data_item,"heart_value")->valueint;\r
-        printf("heart_value :%d\r\n",value);\r
+        uint32_t value=cJSON_GetObjectItem(heart_data_item,"heart_value")->valueint;\r
+       // value =450;\r
+        printf("value :%d\r\n",value);\r
         printf("timestamp :%d\r\n",timestamp);\r
-        memcpy(send_buf+send_len,&timestamp,4);\r
-        send_len+=4;\r
-        memcpy(send_buf+send_len,&value,1);\r
-        send_len+=1;\r
+        memcpy(send_buf+send_len,&timestamp,timeBit);\r
+        send_len+=timeBit;\r
+        memcpy(send_buf+send_len,&value,dataBit);\r
+        send_len+=dataBit;\r
         \r
         if(((i+1)%num==0 && i!=0) || (item_num-1==i))\r
         {\r
@@ -4083,49 +4090,49 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue)
                 EACH_DATA_LEN = HEART_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18)/HEART_DATA_LEN;\r
                 printf("同步心率数据,每包最多:%d 条数据\r\n",num);\r
-                Read_file_buf_send_bin_Data(num,0x40,EACH_DATA_LEN,"heart_data_list");\r
+                Read_file_buf_send_bin_Data(num,0x40,"heart_data_list");\r
                 break;\r
             case 0x41://同步血氧历史数据\r
                 printf("同步血氧数据\r\n");\r
                 EACH_DATA_LEN = SPO2_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
-                Read_file_buf_send_bin_Data(num,0x41,EACH_DATA_LEN,"heart_data_list");\r
+                Read_file_buf_send_bin_Data(num,0x41,"heart_data_list");\r
                 break;\r
             case 0x43: //同步步数历史数据\r
                 EACH_DATA_LEN = STEP_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
-                 Read_file_buf_send_bin_Data(num,0x43,EACH_DATA_LEN,"heart_data_list");\r
+                 Read_file_buf_send_bin_Data(num,0x43,"heart_data_list");\r
 \r
                 break;\r
             case 0x44://同步燃脂时间数据\r
                 EACH_DATA_LEN = FATTIME_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
-                Read_file_buf_send_bin_Data(num,0x44,EACH_DATA_LEN,"heart_data_list");\r
+                Read_file_buf_send_bin_Data(num,0x44,"heart_data_list");\r
                 break;\r
             case 0x45://同步站立历史数据\r
                 EACH_DATA_LEN = STAND_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
-                 Read_file_buf_send_bin_Data(num,0x45,EACH_DATA_LEN,"heart_data_list");\r
+                 Read_file_buf_send_bin_Data(num,0x45,"heart_data_list");\r
                 break;\r
             case 0x46://同步卡路里历史数据\r
                 EACH_DATA_LEN = KCAL_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
-                Read_file_buf_send_bin_Data(num,0x46,EACH_DATA_LEN,"heart_data_list");\r
+                Read_file_buf_send_bin_Data(num,0x46,"heart_data_list");\r
                 break;\r
             case 0x47://同步距离历史数据\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
-                Read_file_buf_send_bin_Data(num,0x47,EACH_DATA_LEN,"heart_data_list");\r
+                Read_file_buf_send_bin_Data(num,0x47,"heart_data_list");\r
                 break;\r
             case 0x49://同步基础训练历史数据\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
-                Read_file_buf_send_bin_Data(num,0x49,EACH_DATA_LEN,"heart_data_list");\r
+                Read_file_buf_send_bin_Data(num,0x49,"heart_data_list");\r
                 break;\r
             case 0x4b://睡眠历史数据\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
-                Read_file_buf_send_bin_Data(num,0x4b,EACH_DATA_LEN,"heart_data_list");\r
+                Read_file_buf_send_bin_Data(num,0x4b,"heart_data_list");\r
 \r
                 break;\r
             default:\r