From: hcj_ <1224667075@qq.com> Date: Mon, 6 May 2024 06:51:34 +0000 (+0800) Subject: 增加蓝牙设置闹钟和获取闹钟 X-Git-Tag: release_V1.2.70_20241020_135402~1113^2~18^2~3^2~3 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=refs%2Fchanges%2F126%2F1;p=mirrors%2FFD230.git 增加蓝牙设置闹钟和获取闹钟 --- diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/CMakeLists.txt b/code/sdk/application/wearable/service/ble_service/blemoder/CMakeLists.txt index 8d6455e38..93db44219 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/CMakeLists.txt +++ b/code/sdk/application/wearable/service/ble_service/blemoder/CMakeLists.txt @@ -20,6 +20,9 @@ ${ROOT_DIR}/application/wearable/fd230app/nativeui/language ${ROOT_DIR}/application/wearable/fd230app/nativeui/traing/training_card/include ${ROOT_DIR}/application/wearable/fd230app/nativeui/config/include ${ROOT_DIR}/application/wearable/fd230app/nativeui/traing/include +#${ROOT_DIR}/application/wearable/fd230app/nativeui/alarm/include +${ROOT_DIR}/application/wearable/fd230app/nativeui/alarmclockmanage/include +${ROOT_DIR}/application/wearable/fd230app/nativeui/alarmclocktimerconfig/include ) diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp index 05014b1b2..e06066441 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -22,6 +22,11 @@ // #include "TraingCardPresenter.h" #include "TraingModel.h" +#include "AlmmgrAlarmClockManage.h" +#include "AlarmClockManage.h" + + +//#include "AlarmClockModel.h" #ifdef __cplusplus #if __cplusplus extern "C" { @@ -52,6 +57,146 @@ extern "C" { #include "bleService.h" #include "bletest.h" +// 闹钟数据: +// { +//     //"code":1, +// "alarms": +// [ +//         { +//             "id":0, +//             "repeat":[0], +//             "hour":10, +//             "minute":0, +//             "enable":1 +static const char *alarmName[6] = {"clock1", "clock2", "clock3", "clock4", "clock5", "clock6"}; // 闹钟名字的最大个数为6 + +void ble_delet_all_AlarmInfo(void) +{ + AlarmClockManagement data; + if( 0==AlmmgrGetManagement(&data)) + { + + for(int i=0;i= AlmmgrGetEventAlarmCnt()) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek new time!"); + int ret = AlmmgrAddAlarmClock(&eventAlarmInfo); + } else { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek modify time!"); + AlmmgrUpdataAlarmClock(&eventAlarmInfo); + } +} + + +char * struct_to_json_buf_malloc_Alarm(void) +{ + AlarmClockManagement data; + cJSON *dataJSON = cJSON_CreateObject(); + cJSON* data_arryJSON = cJSON_CreateArray(); + + if( 0==AlmmgrGetManagement(&data)) + { + + for(int i=0;i> 16; // 闹钟存储小时位需要右移16位 + + uint8_t refreshMin = data.eventAlarmInfo[i].alarmTime & 0x00FF; // 得出闹钟时间的分钟位需要将左置位16位清零 + + cJSON_AddNumberToObject(itemJSON,"hour",refreshHour); + + cJSON_AddNumberToObject(itemJSON,"minute",refreshMin); + + cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON); + + //cJSON_AddNumberToObject(itemJSON,"src",data->src); + } + + // printf("闹钟数据:%d\r\n",data.alarmTime); + // printf("闹钟数据:%d\r\n",data.repeatPeriod); + // printf("闹钟数据:%d\r\n",data.alarmClockEnable); + // i++; + } + else + { + + printf("获取闹钟失败\r\n"); + } + + cJSON_AddItemToObject(dataJSON,"alarms",data_arryJSON); + + char *json_format = cJSON_PrintUnformatted(dataJSON); + cJSON_Delete(dataJSON); + int pSize = cJSON_GetArraySize(dataJSON); + printf("闹钟数据 :%s\r\n",json_format); + return json_format; + +} char * struct_to_json_buf_malloc_(void) { @@ -85,6 +230,7 @@ char * struct_to_json_buf_malloc_(void) cJSON_AddNumberToObject(itemJSON,"stp",data->stp); cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON); free(data); + data=NULL; } else{ break; diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h index 72ea3a236..ccac4d349 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h @@ -134,6 +134,16 @@ void set_traning_updata_freq(uint8_t freq); /*设置训练最高心率*/ void set_traning_heart_max(uint8_t data); +char* struct_to_json_buf_malloc_(void); + +char * struct_to_json_buf_malloc_Alarm(void); + + +void ble_SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_t week,uint8_t id,uint8_t enable); + + +void ble_delet_all_AlarmInfo(void); + #ifdef __cplusplus #if __cplusplus } diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c index 9de5c8936..9fa98f363 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -1374,16 +1374,53 @@ static void jsonCheck_alarm(uint8_t *buf)//json 解析闹钟数据 uint8_t *json; json = buf; cJSON* root = cJSON_Parse((const char *)json); + if (root == NULL) { printf("闹钟 JSON解析错误\n"); return; } + else + { + printf("闹钟 %s\r\n",json); + } + ble_delet_all_AlarmInfo(); + cJSON* alarms = cJSON_GetObjectItem(root, "alarms"); int alarmCount = cJSON_GetArraySize(alarms); + + for(int i=0;ivalueint; + cJSON* repeat=cJSON_GetObjectItem(data,"repeat"); + int array_size = cJSON_GetArraySize(repeat); + for(int j=0;jvalueint; + if(day==7) + { + week|=0b00000001; + } + else + { + week|=0b00000001<<(day); + } + + } + int hour=cJSON_GetObjectItem(data,"hour")->valueint; + int minute=cJSON_GetObjectItem(data,"minute")->valueint; + int enable=cJSON_GetObjectItem(data,"enable")->valueint; + ble_SetAlarmInfo(hour, minute,week,i,enable); + + } + cJSON_Delete(root); printf("alarmCount %d\n",alarmCount); + } -void GetAlarmDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//获取app下发的屏幕参数 +void SetAlarmDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//获取app下发的屏幕参数 { uint32_t tmp = 1; uint16_t tmp_data = 1; @@ -1781,7 +1818,7 @@ uint8_t jsonCheck_weather(uint8_t *buf)//json 格式解析 天气数据 int tempMin=cJSON_GetObjectItem(data,"tempMin")->valueint; int iconDay=cJSON_GetObjectItem(data,"iconDay")->valueint; int fxDate=cJSON_GetObjectItem(data,"fxDate")->valueint; - char * textDay=cJSON_GetObjectItem(data,"textDay")->valueint; + char * textDay=cJSON_GetObjectItem(data,"textDay")->valuestring; int tempMax=cJSON_GetObjectItem(data,"tempMax")->valueint; set_weather_one_data(tempMin,iconDay,fxDate,tempMax,textDay,i); } @@ -2009,7 +2046,7 @@ void type2AE4Data(uint8_t *buf_cmd,uint8_t *data,uint16_t datalen,uint8_t *total getAPPaddressbook(typeID,data,datalen,totalData,crcvalue); break; case SET_ALARM_DATA_CMD: - GetAlarmDataCmd(typeID,data,datalen,totalData,crcvalue); + SetAlarmDataCmd(typeID,data,datalen,totalData,crcvalue); printf("alarm infor !!!!!!!!!!\r\n"); break; case DELETE_FILE_CMD: @@ -2076,7 +2113,7 @@ static void switchDialCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *tot } //获取闹钟数据 -static void SetAlarmDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue) +static void GetAlarmDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue) { uint32_t tmp = 1; @@ -3555,13 +3592,25 @@ static void disDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totald } } //同步基础训练历史数据 training history data -static void trainiHistoryDataCmd(uint16_t pack_size) +static void Send_json_Data_Cmd(uint16_t pack_size,uint8_t id) { - char *json_format = struct_to_json_buf_malloc_(); + char *json_format = NULL; + switch (id) + { + case 0x49: + json_format=struct_to_json_buf_malloc_(); + break; + case 0x01: + json_format=struct_to_json_buf_malloc_Alarm(); + break; + default: + break; + } + + uint32_t data_len = strlen(json_format); - char *data=(char *)malloc(pack_size+17); uint32_t surplus_len=data_len; uint32_t pack; if(data_len%pack_size==0) @@ -3579,14 +3628,14 @@ static void trainiHistoryDataCmd(uint16_t pack_size) if(surplus_len>=pack_size) { surplus_len=surplus_len-pack_size; - send_big_data(1,json_format+offset,pack_size,data_len,pack_id,pack,0x49,1); + send_big_data(1,json_format+offset,pack_size,data_len,pack_id,pack,id,1); offset+=pack_size; } else { printf("%d %d %d %d\r\n",data_len,surplus_len,pack_id,pack); - send_big_data(1,json_format+offset,surplus_len,data_len,pack_id,pack,0x49,1); + send_big_data(1,json_format+offset,surplus_len,data_len,pack_id,pack,id,1); break; } pack_id++; @@ -3795,9 +3844,6 @@ void type2AE3Data(uint16_t cmd ,uint8_t *data,uint16_t datalen,uint8_t *totaldat case SEND_UPPAIR_CMD://清除配对指令 clearPaireCmd(cmd,data,datalen,totaldata,crcvalue); break; - case ALARM_CMD: - SetAlarmDataCmd(cmd,data,datalen,totaldata,crcvalue); - break; case SWITCH_DIAL_CMD://表盘切换 switchDialCmd(cmd,data,datalen,totaldata,crcvalue); break; @@ -3923,6 +3969,7 @@ void type2AE3Data(uint16_t cmd ,uint8_t *data,uint16_t datalen,uint8_t *totaldat case SYN_DIS_HISTORY_DATA_CMD://同步距离历史数据 case SYN_BASIC_TRANIN_HISTORY_DATA_CMD://同步基础训练历史数据 case SYN_SLEEP_HISTORY_DATA_CMD://睡眠历史数据 + case ALARM_CMD://获取手表闹钟//同步闹钟 readDevDataBle(totaldata,datalen+18,crcvalue); break; @@ -4161,7 +4208,16 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue) { num=482; } - trainiHistoryDataCmd(200); + Send_json_Data_Cmd(num,0x49); + break; + case 0x01://同步闹钟 + EACH_DATA_LEN = DIS_DATA_LEN; + num=(ble_nus_max_data_len-18); + if(num>482) + { + num=482; + } + Send_json_Data_Cmd(num,0x01); break; case 0x4b://睡眠历史数据 EACH_DATA_LEN = DIS_DATA_LEN;