喝水及睡眠协议对接 142/1 142/head
authorhcj_ <1224667075@qq.com>
Wed, 8 May 2024 00:41:33 +0000 (08:41 +0800)
committerhcj_ <1224667075@qq.com>
Wed, 8 May 2024 00:41:33 +0000 (08:41 +0800)
code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h
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
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h

index 0e8465a..8e05cdb 100644 (file)
@@ -81,6 +81,19 @@ namespace OHOS
 
             CONFIFMOFEL_ITEM_NOTIFY,//消息通知开关
 
+            //喝水提醒相关
+            CONFIFMOFEL_ITEM_DRINK,//开关 0 关闭 1开始 2间隔提醒
+            CONFIFMOFEL_ITEM_DRINK_GOAL,//目标。ml
+            CONFIFMOFEL_ITEM_DRINK_START,//提醒开始时间 int类型 前16位小时,后16位分钟
+            CONFIFMOFEL_ITEM_DRINK_END,//提醒结束时间 int类型 前16位小时,后16位分钟
+            CONFIGMODEL_ITEM_DRINK_FREQ,//提醒频率 0:30分钟1:1小时2:2小时 3:3小时
+
+            //睡眠提醒相关
+            CONFIFMOFEL_ITEM_SLEEP, //开关
+            CONFIFMOFEL_ITEM_SLEEP_BEDTIME,//就寝时间
+            CONFIFMOFEL_ITEM_SLEEP_GET_UP,//起床时间
+            CONFIFMOFEL_ITEM_SLEEP_REMIND,//提前20分钟提醒开关
+
             CONFIGMODEL_ITEM_MAX,
         } ;
 
@@ -233,6 +246,16 @@ namespace OHOS
             {ConfigDataType::DATATYPE_INT,      "HeartRateDetected",        "0"     },// CONFIFMOFEL_ITEM_HEARTRATE_DETECTED//心率周期检测频率
             {ConfigDataType::DATATYPE_INT,      "HeartRateMax",             "0"     },// CONFIFMOFEL_ITEM_HEARTRATE_MAX//最大心率
             {ConfigDataType::DATATYPE_INT,      "HeartRateMin",             "0"     },// CONFIFMOFEL_ITEM_HEARTRATE_MIN//最小心率
+
+            {ConfigDataType::DATATYPE_BOOL,     "NOTIFY",             "false"     },// CONFIFMOFEL_ITEM_HEARTRATE_MIN//最小心率
+
+            {ConfigDataType::DATATYPE_INT,     "drink",              "0" },// CONFIFMOFEL_ITEM_DRINK,//开关 0 关闭 1开始 2间隔提醒
+            {ConfigDataType::DATATYPE_INT,     "drinkgoal",              "0" },// CONFIFMOFEL_ITEM_DRINK_GOAL,//目标。ml
+            {ConfigDataType::DATATYPE_INT,     "drinkstart",              "0" }, // CONFIFMOFEL_ITEM_DRINK_START,//提醒开始时间 int类型 前16位小时,后16位分钟
+            {ConfigDataType::DATATYPE_INT,     "drinkend",              "0" }, // CONFIFMOFEL_ITEM_DRINK_END,//提醒结束时间 int类型 前16位小时,后16位分钟
+            {ConfigDataType::DATATYPE_INT,     "drinkfreq",              "0" }, // CONFIGMODEL_ITEM_DRINK_FREQ,//提醒频率
+
+
         };
         ConfigModel();                                        // 私有构造函数,确保无法在外部实例化
         ConfigModel(const ConfigModel &) = delete;            // 禁止拷贝构造
index 0a75eb4..1eafb58 100644 (file)
@@ -57,6 +57,97 @@ extern "C" {
 #include "bleService.h"
 #include "bletest.h"
 
+void ble_set_sleep_remind(msg_get_sleep_param_info_t data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    printf("开关:%d\r\n",data.schedule);
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_SLEEP,data.schedule);
+    if(data.schedule)
+    {
+       
+        printf("开始时间:%d\r\n",data.bedtime_hour);
+        printf("开始时间:%d\r\n",data.bedtime_min);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_SLEEP_BEDTIME,data.bedtime_hour<<16|data.bedtime_min);
+       
+        printf("结束时间:%d\r\n",data.waketime_hour);
+        printf("结束时间:%d\r\n",data.waketime_min);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_SLEEP_GET_UP,data.waketime_hour<<16|data.waketime_min);
+
+        printf("睡前提醒 %d\r\n",data.bedtime_alarm);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_SLEEP_REMIND,data.bedtime_alarm);
+
+        
+    }  
+    return;
+}
+
+
+void ble_get_sleep_remind(msg_get_sleep_param_info_t *data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    
+    data->schedule = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_SLEEP);
+    printf("开关:%d\r\n",data->schedule);
+
+    uint32_t bedtime= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_SLEEP_BEDTIME);
+    data->bedtime_hour=bedtime>>16;
+    data->bedtime_min=bedtime&0x00ff;
+    printf("开始时间:%d\r\n",data->bedtime_hour);
+    printf("开始时间:%d\r\n",data->bedtime_min);
+    
+    uint32_t wakettime= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_SLEEP_GET_UP);
+    data->waketime_hour=bedtime>>16;
+    data->waketime_min=bedtime&0x00ff;
+    printf("结束时间:%d\r\n",data->waketime_hour);
+    printf("结束时间:%d\r\n",data->waketime_min);
+       
+    data->bedtime_alarm= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_SLEEP_REMIND);
+
+    printf("睡前提醒 %d\r\n",data->bedtime_alarm);
+       
+    return;
+}
+
+
+
+
+
+void ble_set_drink_remind(msg_drink_info_t data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    printf("开关:%d\r\n",data.drink_on);
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_DRINK,data.drink_on);
+    if(data.drink_on)
+    {
+        printf("目标:%d\r\n",data.goal);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_DRINK_GOAL,(double)data.goal);
+        printf("开始时间:%d\r\n",data.time_start);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_DRINK_START,data.time_start);
+        if(data.drink_on==2)
+        {
+            printf("结束时间:%d\r\n",data.time_end);
+            p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_DRINK_END,data.time_end);
+            printf("频率:%d\r\n",data.freq);
+            p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_FREQ,data.freq);
+
+        }
+    }  
+    return;
+}
+
+void ble_get_drink_remind(msg_drink_info_t *data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    data->drink_on = p_ConfigModel-> get_configData_int(OHOS::ConfigModel::CONFIFMOFEL_ITEM_DRINK);
+    if(data->drink_on)
+    data->drink_on=1;
+    printf("开关:%d\r\n",data->drink_on);
+    
+    return;
+}
+
+
+
 // 闹钟数据:
 // {
 //     //"code":1,
@@ -280,9 +371,8 @@ void add_addressbookToRead(char *data)
 }
 
 void set_languaage(uint32_t id)
-{
-    OHOS:: language language;
-    language.ChangeLanguage(id);
+{//OHOS:: language language;
+    OHOS::language::GetInstance()->ChangeLanguage(id);
 }
 
 char *addressbook(void)//获取通讯录保存文件地址路径
index 6d5cd65..4812dff 100644 (file)
@@ -80,6 +80,16 @@ struct message_infor_t
     struct ancs_data_info_t message_t[MAX_MESSAGE_NUM];
 };
 
+typedef struct
+{
+    //对应数据的指令类型
+    uint32_t drink_on;//0 关闭 1 开启
+    uint32_t goal;
+    uint32_t time_start;
+    uint32_t time_end;
+    uint32_t freq;
+}msg_drink_info_t;
+
 void read_message_data(void);//读内存信息数据开机读一次
 struct message_infor_t *get_message_info(void);
 void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight);
@@ -159,6 +169,14 @@ void ble_SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_t week,uint8_
 
 void ble_delet_all_AlarmInfo(void);
 
+void ble_set_drink_remind(msg_drink_info_t);
+
+void ble_get_drink_remind(msg_drink_info_t *data);
+
+
+void ble_get_sleep_remind(msg_get_sleep_param_info_t *data);
+
+void ble_set_sleep_remind(msg_get_sleep_param_info_t data);
 #ifdef __cplusplus
 #if __cplusplus
 }
index f3ebc1c..15c4053 100644 (file)
@@ -1726,7 +1726,44 @@ void GetSpo2SetParamCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *total
     \r
 }\r
 \r
-void GetDrinkSetParamCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//获取喝水提醒s设置\r
+void SetsleepSetParamCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//设置睡眠\r
+{\r
+    uint32_t tmp = 1;\r
+    uint16_t tmp_data = 1;\r
+    uint8_t sendBuf[19];\r
+    memset(sendBuf,0,19);\r
+    sendBuf[0] = 0x72;\r
+    sendBuf[1] = 0x02;\r
+    sendBuf[2] = 0x15;\r
+    memcpy(sendBuf+3,&tmp,4);\r
+    memcpy(sendBuf+7,&tmp,4);\r
+    memcpy(sendBuf+11,&tmp,4);\r
+    memcpy(sendBuf+15,&tmp_data,2);\r
+\r
+       if(Check_CRC(crcnum,len,crcvalue))\r
+       {\r
+        msg_get_sleep_param_info_t sleep_info;\r
+        sleep_info.schedule = crcnum[0];\r
+        sleep_info.bedtime_hour= crcnum[1];\r
+        sleep_info.bedtime_min= crcnum[2];\r
+        sleep_info.waketime_hour= crcnum[3];\r
+        sleep_info.waketime_min= crcnum[4];\r
+        sleep_info.bedtime_alarm= crcnum[5];\r
+        ble_set_sleep_remind(sleep_info);\r
+\r
+        sendBuf[17] = 1;\r
+        sendBuf[18] = Calculate_CRC(sendBuf,18);\r
+        sendBleData(sendBuf,19);\r
+    }\r
+       else\r
+       {\r
+               sendBuf[17] = 0;\r
+        sendBuf[18] = Calculate_CRC(sendBuf,18);\r
+        sendBleData(sendBuf,19);\r
+    }\r
+}\r
+\r
+void SetDrinkSetParamCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//获取喝水提醒s设置\r
 {\r
     uint32_t tmp = 1;\r
     uint16_t tmp_data = 1;\r
@@ -1742,30 +1779,22 @@ void GetDrinkSetParamCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *tota
 \r
        if(Check_CRC(crcnum,len,crcvalue))\r
        {\r
-        ble_recv_msg_callback_t func =  ble_recv_get_send_msg_callback_func();\r
-        msg_drink_set_param_info_t drink_info;\r
-        if(func != NULL)\r
-        {\r
-            func(READ_FLASH_DATA,SET_DRINK_PARAM_CMD,&drink_info,sizeof(msg_drink_set_param_info_t));\r
-        }//读设备内存\r
-        printf("drink_info:%d %d %d\r\n",drink_info.drink_on,drink_info.alarm_mode,drink_info.start_hour);\r
+        msg_drink_info_t drink_info;\r
         drink_info.drink_on = crcnum[0];\r
-        if(drink_info.drink_on == 0){\r
-            drink_info.drink_on = 0;\r
-        }else{\r
-            drink_info.drink_on = crcnum[0];\r
-            drink_info.alarm_mode = crcnum[1];\r
-            drink_info.target_drink = crcnum[2]+crcnum[3]*256;\r
-            drink_info.start_hour = crcnum[4];\r
-            drink_info.startt_min = crcnum[5];\r
-            drink_info.end_hour = crcnum[6];\r
-            drink_info.end_min = crcnum[7];\r
-            drink_info.frequenc = crcnum[8];\r
+        if(crcnum[1])\r
+        {\r
+            drink_info.drink_on=2;\r
         }\r
-        if(func != NULL)\r
+        // drink_info.drink_on = crcnum[1];\r
+         drink_info.goal = crcnum[2]+crcnum[3]*256;\r
+         drink_info.time_start = crcnum[4]<<16|crcnum[5];\r
+        if(crcnum[1])\r
         {\r
-            func(WRITE_FLASH_DATA,SET_DRINK_PARAM_CMD,&drink_info,sizeof(msg_drink_set_param_info_t));\r
+            drink_info.time_end = crcnum[6]<<16|crcnum[7];\r
+            drink_info.freq = crcnum[8];\r
+           \r
         }\r
+        ble_set_drink_remind(drink_info);\r
         \r
         sendBuf[17] = 1;\r
         sendBuf[18] = Calculate_CRC(sendBuf,18);\r
@@ -2132,7 +2161,10 @@ void type2AE4Data(uint8_t *buf_cmd,uint8_t *data,uint16_t datalen,uint8_t *total
             GetSpo2SetParamCmd(typeID,data,datalen,totalData,crcvalue);\r
             break;\r
         case SET_DRINK_PARAM_CMD://app下发的喝水提醒设置\r
-            GetDrinkSetParamCmd(typeID,data,datalen,totalData,crcvalue);\r
+            SetDrinkSetParamCmd(typeID,data,datalen,totalData,crcvalue);\r
+            break;\r
+        case SET_SLEEP_PARAM_CMD://app下发的喝水提醒设置\r
+            SetsleepSetParamCmd(typeID,data,datalen,totalData,crcvalue);\r
             break;\r
         case SET_STEP_TARGET_CMD://app下发的步数目标设置\r
             SetsteptargetParamCmd(typeID,data,datalen,totalData,crcvalue);\r
@@ -3195,13 +3227,9 @@ static void GetDrinkParamCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *
     memcpy(value+15,&tmp_data,2);\r
     if(1)\r
     {\r
-        msg_drink_param_info_t drink_on_t;\r
-        memset(&drink_on_t,0,sizeof(msg_drink_param_info_t));\r
-        ble_recv_msg_callback_t func =  ble_recv_get_send_msg_callback_func();\r
-        if(func != NULL){\r
-            func(READ_FLASH_DATA,cmd,&drink_on_t,sizeof(msg_drink_param_info_t));\r
-        }\r
-        value[17] = drink_on_t.drink_on;// \r
+        msg_drink_info_t drink_on_;\r
+        ble_get_drink_remind(&drink_on_);\r
+        value[17] = drink_on_.drink_on;// \r
         value[18] = Calculate_CRC(value,18);\r
         sendBleData(value,19);\r
     }\r
@@ -3344,12 +3372,16 @@ static void GetSleepParamCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *
     memcpy(value+15,&tmp_data,2);\r
     if(1)\r
     {\r
-        uint8_t sleepTime = 0;//作息时间设定 0关闭 1开启\r
-        uint8_t bedTimeHour = 0;//就寝时间\r
-        uint8_t bedTimeMin = 0;//就寝时间\r
-        uint8_t wakeTimeHour = 0;//起床时间\r
-        uint8_t wakeTimeMin = 0;//起床时间\r
-        uint8_t bedTimeOn = 0;//就寝前20分钟提醒时间\r
+        msg_get_sleep_param_info_t data;\r
+\r
+        ble_get_sleep_remind(&data);\r
+        uint8_t sleepTime = data.schedule;//作息时间设定 0关闭 1开启\r
+        uint8_t bedTimeHour = data.bedtime_hour;//就寝时间\r
+        uint8_t bedTimeMin = data.bedtime_min;//就寝时间\r
+        uint8_t wakeTimeHour = data.waketime_hour;//起床时间\r
+        uint8_t wakeTimeMin = data.waketime_min;//起床时间\r
+        uint8_t bedTimeOn = data.bedtime_alarm;//就寝前20分钟提醒时间\r
+\r
         value[17] = sleepTime;\r
         value[18] = bedTimeHour;\r
         value[19] = bedTimeMin;\r
@@ -4013,7 +4045,7 @@ void type2AE3Data(uint8_t *cmd_buf ,uint8_t *data,uint16_t datalen,uint8_t *tota
         case KM_MILE_CMD://app设置手表公英制单位\r
             GetMetricCmd(cmd,data,datalen,totaldata,crcvalue);\r
             break;\r
-        case SLEEP_SET_CMD://app获取睡眠设置\r
+        case SLEEP_GET_CMD://app获取睡眠设置\r
             GetSleepParamCmd(cmd,data,datalen,totaldata,crcvalue);\r
             break;\r
         case DELETE_ALL_DILA_CMD://app所有表盘UID\r
index 7a2cb60..1854046 100644 (file)
@@ -73,7 +73,7 @@ void cameram_send_data(void);
 #define RESET_WATCH_CMD 0x0126 //重新启动
 #define POWER_OFF_CMD 0x0127 //关机
 #define KM_MILE_CMD 0x0128 //公英制
-#define SLEEP_SET_CMD 0x0129 //app获取睡眠设置
+#define SLEEP_GET_CMD 0x0129 //app获取睡眠设置
 #define DELETE_ALL_DILA_CMD 0x012A //删除所有表盘
 #define GET_TARGET_STEP_CMD 0x012B //目标步数设置
 #define GET_OTHER_TARGET_CMD 0x012C //其他目标设置
@@ -512,6 +512,7 @@ TYPE:02
 #define SET_WATCH_HR_SET_PARAM_CMD 0x0212 //app发送心率设置参数
 #define SET_WATCH_SPO2_SET_PARAM_CMD 0x0213 //app发送血氧设置参数
 #define SET_DRINK_PARAM_CMD 0x0214 //app发送喝水提醒设置
+#define SET_SLEEP_PARAM_CMD 0x0215 //app发送睡眠设置
 #define SET_STEP_TARGET_CMD 0x0216 //app发送步数目标
 #define SET_OTHER_TARGET_CMD 0x0217 //app发送其他目标
 #define SET_WEATHER_DATA_CMD 0x0220 //发送天气数据
@@ -541,6 +542,7 @@ typedef struct
     uint16_t fat_time;//燃脂时间目标
     uint8_t target_stand;//目标站立
     uint8_t timeformat;//时间制 0 24小时制 1 12小时制
+    
 }msg_user_info_t;//获取用户信息 身高体重 
 
 /******************************************