From 2e7a9487e0b7e273e963fe9f1450a1cb73356983 Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Fri, 19 Jul 2024 16:37:44 +0800 Subject: [PATCH] =?utf8?q?ble=20=E5=8F=96=E6=B6=88=E4=B8=8B=E8=BD=BD?= =?utf8?q?=E5=8F=8A=E8=A1=80=E6=B0=A7bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../service/ble_service/blemoder/bletest.cpp | 7 ++- .../service/ble_service/bleservice/bleEvent.c | 57 +++++++++++++++---- .../service/ble_service/bleservice/bleEvent.h | 2 + .../peripheral/config/include/ConfigModel.h | 13 +++-- 4 files changed, 63 insertions(+), 16 deletions(-) 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 45f840c6a..e04eaa64c 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -1482,7 +1482,9 @@ void Set_heart_cmd(msg_get_heart_set_param_info_t *data) p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_REMIND,data->remind_on); if(data->remind_on) { - p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN,data->max_min); + printf("set_condigData_Int data->max_min %d\r\n",data->max_min); + + p_ConfigModel->set_condigData_Bool(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN,data->max_min); p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE,data->heart); } @@ -1495,7 +1497,8 @@ void Get_heart_cmd(msg_get_heart_set_param_info_t *data) data->frequence = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED); data->remind_on = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_REMIND); - data->max_min= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN); + data->max_min= p_ConfigModel->get_configData_bool(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN); + printf("Get_heart_cmd data->max_min %d\r\n",data->max_min); data->heart = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE); } 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 660da7cac..8a11c87d1 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -575,8 +575,7 @@ void comfirmPaire(uint8_t flag) first_bond = 1; // printf("gap_ble_pair_remote_device 333333333 %x-%x-%x-%x-%x-%x\r\n",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5]); // 一键双连使能(依赖安全连接参数配置) - errcode_t ret = gap_ble_set_ctkd_enable(true); - WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret); + errcode_t code = gap_ble_pair_remote_device(&phone_addr); if(code!=ERRCODE_SUCC) @@ -880,6 +879,16 @@ void cleanUnbindInfor(uint8_t flag)//和旧手机解绑清除配对信息 uapi_reboot_device(); } } +static bool ctkd_flag_ble=false; + +void set_ctkd_flag(bool flag) +{ + ctkd_flag_ble=flag; +} +bool get_ctkd_flag(void) +{ + return true;//ctkd_flag_ble; +} void sendBindInfor(uint8_t *data) { uint8_t value[19]; @@ -914,6 +923,13 @@ void sendBindInfor(uint8_t *data) if(save_mac[0] == 0 && save_mac[1] == 0 && save_mac[2] == 0 && save_mac[3] == 0 && save_mac[4] == 0 && save_mac[5] == 0)//只要手表本地存储没有mac地址就走连接流程重新绑定 { bond = 0x01;//手表未和任何手机绑定过 + //未配过使能一键双联 + errcode_t ret = gap_ble_set_ctkd_enable(true); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret); + set_ctkd_flag(true); + + + value[17] = bond;// value[18] = Calculate_CRC(value,18); sendBleData(value,19); @@ -967,11 +983,14 @@ void sendBindInfor(uint8_t *data) int result = memcmp(copare_mac,save_mac,6); if(result == 0) { + //已经配对就关闭一键双连 + errcode_t ret = gap_ble_set_ctkd_enable(true); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret); + set_ctkd_flag(false); + printf("phone_addr:%02x-%02x-%02x-%02x-%02x-%02x type:%d ",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2], phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5],phone_addr.type); - ret = gap_ble_set_ctkd_enable(true); - printf("gap_ble_set_ctkd_enable ret = %x ", ret); ret = gap_ble_pair_remote_device(&phone_addr); printf("gap_ble_pair_remote_device ret:%x ",ret); @@ -1687,10 +1706,12 @@ void GetHrSetParamCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData if(Check_CRC(data,len,crcvalue)) { msg_get_heart_set_param_info_t set_data; + set_data.frequence = data[0]; set_data.remind_on=data[1]; set_data.max_min=data[2]; set_data.heart=data[3]; + Set_heart_cmd(&set_data); sendBuf[17] = 1; sendBuf[18] = Calculate_CRC(sendBuf,18); @@ -2930,8 +2951,8 @@ static void RemoveFileCmd(ble_read_data *buffer_handle,uint16_t cmd,uint8_t *dat { uint8_t file_type= data[0];//1 ota 2 MP3 - TRANSMIT_DATA=TRANS_FREE; - CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + // TRANSMIT_DATA=TRANS_FREE; + // CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); value[17] = 1; // value[18] = Calculate_CRC(value,18); @@ -3516,6 +3537,9 @@ static void GetHrGetParamCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *to value[18] = heart_param.remind_on;// value[19] = heart_param.max_min;// value[20] = heart_param.heart;// + + printf("%d %d %d %d ",value[17],value[18],value[19],value[20]); + value[21] = Calculate_CRC(value,21); sendBleData(value,22); }else @@ -4942,7 +4966,7 @@ void Read_BIN_file_buf_send_bin_Data(uint8_t day,uint32_t pack_size,uint16_t id) if(data==NULL) { send_big_data(1,NULL,0,0,1,1,id,1); - sendbigDataBufState = false;//分包同步数据不允许打断 + printf("Read_BIN_file_buf_send_bin_Data is NULL"); return; } @@ -6127,6 +6151,10 @@ errcode_t check_header(msg_header_t *header ) return ERRCODE_FAIL; } } +static uint8_t timer_flie_type=0; +static uint32_t timer_flie_flag=0; +ble_read_data* ble_read_timer_p=NULL; + errcode_t cancel_recv_file(ble_read_data *buffer_handle) { @@ -6147,14 +6175,17 @@ errcode_t cancel_recv_file(ble_read_data *buffer_handle) } buffer_handle->file_recv_stat.recv_file_stat = -1; + if(BR_TRANSFER_timer) + { + timer_flie_flag=1; + } + ble_reply_cmd(FILE_RECV_REPLY_STAT_CMD,0);//接收失败 } return ERRCODE_SUCC; } -static uint8_t timer_flie_type=0; -static uint32_t timer_flie_flag=0; -ble_read_data* ble_read_timer_p=NULL; + static void ble_transfer_Timer_CallBack(int data) { timer_flie_flag--; @@ -6173,6 +6204,9 @@ static void ble_transfer_Timer_CallBack(int data) { TRANSMIT_DATA=TRANS_FREE; } + + ble_read_timer_p->receive_file_flag = 0; + if (ble_read_timer_p->file_recv_stat.recv_file_stat != 2) //已经下载完毕的文件,没有必要cancel了。 { @@ -6188,9 +6222,12 @@ static void ble_transfer_Timer_CallBack(int data) } ble_read_timer_p->file_recv_stat.recv_file_stat = -1; + ble_read_timer_p=NULL; + ble_reply_cmd(FILE_RECV_REPLY_STAT_CMD,0);//接收失败 } CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + if(BR_TRANSFER_timer) { osTimerStop(BR_TRANSFER_timer); diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h index 8b9097e16..c97a4a6e9 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h @@ -784,6 +784,8 @@ void send_AI_is_ready(uint8_t type); void GetCurDataCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue); +bool get_ctkd_flag(void); + #ifdef __cplusplus } #endif diff --git a/code/sdk/drivers/peripheral/config/include/ConfigModel.h b/code/sdk/drivers/peripheral/config/include/ConfigModel.h index 48c2c02b8..7d71a528d 100644 --- a/code/sdk/drivers/peripheral/config/include/ConfigModel.h +++ b/code/sdk/drivers/peripheral/config/include/ConfigModel.h @@ -83,8 +83,8 @@ namespace OHOS //心率相关 CONFIGMODEL_ITEM_HEARTRATE_DETECTED,//心率周期频率 0(关闭) 1 5 10 CONFIGMODEL_ITEM_HEARTRATE_REMIND,//提醒开关 - CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN,//高于低于 CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE,//阈值 + CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN,//高于低于 //血氧相关 CONFIGMODEL_ITEM_OXYGEN_DETECTED,//频率 CONFIGMODEL_ITEM_OXYGEN_REMIND,//开关 @@ -318,13 +318,18 @@ namespace OHOS {ConfigDataType::DATATYPE_INT, "traningfreq", "10" },// CONFIGMODEL_ITEM_TRANING_FREQ //训练实时数据上传频率//单位秒 {ConfigDataType::DATATYPE_INT, "traningauto", "0" },//CONFIGMODEL_ITEM_TRANING_AUTO,//开启关闭自动获取实时数据 {ConfigDataType::DATATYPE_INT, "traningheart", "190" },//CONFIGMODEL_ITEM_TRAINING_HEART_MAX//训练最高心率 + //心率相关 {ConfigDataType::DATATYPE_INT, "heartrate_freq", "0" },// CONFIGMODEL_ITEM_HEARTRATE_DETECTED//心率周期检测频率 - {ConfigDataType::DATATYPE_INT, "heartrate_remind", "0" },// CONFIGMODEL_ITEM_HEARTRATE_REMIND//提醒开关 - {ConfigDataType::DATATYPE_INT, "MAX_MIN", "0" },// CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN//最大值还是最小值 - {ConfigDataType::DATATYPE_INT, "heartrate_threshold_value", "0" },// CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE// + {ConfigDataType::DATATYPE_INT, "heartrate_remind", "0"},// CONFIGMODEL_ITEM_HEARTRATE_REMIND//提醒开关 + + {ConfigDataType::DATATYPE_INT, "heartrate_threshold_value", "0"},// CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE// + {ConfigDataType::DATATYPE_BOOL, "heart_max_min", "0"},// CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN//最大值还是最小值 + + {ConfigDataType::DATATYPE_INT, "oxygen_freq", "0" },// CONFIGMODEL_ITEM_OXYGEN_DETECTED,//频率 {ConfigDataType::DATATYPE_INT, "oxygen_remind", "0" },//CONFIGMODEL_ITEM_OXYGEN_REMIND,//开关 {ConfigDataType::DATATYPE_INT, "oxygen_threshold_value", "0" },//CONFIGMODEL_ITEM_OXYGEN_THRESHOLD_VALUE,//阈值 + {ConfigDataType::DATATYPE_INT, "notify", "0" },// CONFIGMODEL_ITEM_NOTIFY//消息通知开关 {ConfigDataType::DATATYPE_INT, "quick_auxil_parameter", "0" },// CONFIGMODEL_ITEM_QUICK_AUXILIARY_PARAMETERS//快捷辅助功能参数 {ConfigDataType::DATATYPE_INT, "drink", "0" },// CONFIGMODEL_ITEM_DRINK,//开关 0 关闭 1开始 2间隔提醒 -- 2.17.1