From 365e5dce1a180df3bfb6bf56f35d28625bae91b3 Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Thu, 17 Oct 2024 15:47:40 +0800 Subject: [PATCH] =?utf8?q?ble=E5=A2=9E=E5=8A=A0=E5=B9=BF=E6=92=AD=E6=A3=80?= =?utf8?q?=E6=B5=8B=EF=BC=8C3s=E6=A3=80=E6=B5=8B=E4=B8=80=E6=AC=A1?= =?utf8?q?=E5=B9=BF=E6=92=AD=E7=8A=B6=E6=80=81=E6=98=AF=E5=90=A6=E6=AD=A3?= =?utf8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../src/AlarmClockTimerConfig.cpp | 5 + .../nativeui/bluetooth/src/BluetoothModel.cpp | 15 +- .../service/ble_service/bleservice/bleEvent.c | 328 +++++++++--------- .../service/ble_service/bleservice/bleEvent.h | 10 +- .../ble_service/bleservice/bleService.c | 65 ++-- .../ble_service/bleservice/bleService.h | 2 + .../peripheral/utils/custom_cmd_service.c | 2 + .../drivers/peripheral/utils/custom_utils.h | 3 + 8 files changed, 228 insertions(+), 202 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp b/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp index 9b582e7a9..8e9adfc5f 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp @@ -348,6 +348,9 @@ extern "C" void AlarmScan(void *arg) { + + + struct tm curTime; int32_t ret = AlarmGetCurrentTimeInfo(&curTime); if (ret != ERRCODE_SUCC) @@ -355,6 +358,8 @@ extern "C" WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get current time info, error code: %d", ret); return; } + if(curTime.tm_sec%3==0) + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_BLE_ADV_CHECK, nullptr, 0); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Scanning alarms - Current time: %02d:%02d:%02d", curTime.tm_hour, curTime.tm_min, curTime.tm_sec); diff --git a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp index 6db203f18..ddf86afd5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp @@ -801,9 +801,9 @@ void BtGapPairStatusChangedCallback(const bd_addr_t *bdAddr, int status) if(cm_custom_ble_service_on_flag() && !get_ble_pair()&& (status == GAP_PAIR_PAIRED)) { send_pair_succ((bd_addr_t*)bdAddr); + hand_watch_first_time_Paired(); - //svr_ble_adv_stop(); - //uapi_reconnect(); + set_br_pair(1); } @@ -1101,17 +1101,6 @@ void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state, uapi_set_ACL_br_address(bdAddr); - if(GAP_PAIR_PAIRED==gap_get_pair_state(bdAddr)) - { - if(!get_br_is_pair()) - { - send_pair_succ((bd_addr_t*)bdAddr); - hand_watch_first_time_Paired(); - set_br_pair(1); - } - - } - gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_SCAN_MODE_NONE"); 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 755dadde4..5ba992094 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -100,7 +100,7 @@ bool sendbigDataBufState = false;//发送大数据表示不要被其他指令打 bool recvBigDataBufState = false;//接收大数据标志 static bool muiltFlag = 0;//多包数据flag static bool ANCSBigBufFlag = 0;//ANCS多包数据flag -static uint16_t data_len = 0; +// static uint16_t data_len = 0; ble_recv_data_info_t ble_recv_data; static uint8_t TRANSMIT_DATA; static osTimerId_t BR_TRANSFER_timer=NULL; @@ -1108,6 +1108,7 @@ void sendBindInfor(uint8_t *data) bool gap_get_paired =gap_get_paired_devices_num(&paired_devices_num); if(gap_get_paired!=true ||paired_devices_num!=0 ) { + printf("sendBindInfor!!!!!!!!!:gap_remove_all_pairs \r\n"); gap_remove_all_pairs(); } } @@ -1178,17 +1179,7 @@ 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); - - // if(strcmp("iPhone",devname)==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(true); - // } + if(get_ble_pair()) { set_ctkd_flag(true); @@ -2336,9 +2327,9 @@ void SYN_train_heart_datatCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *t uint32_t pack=1; if(file_size%num==0) - pack=data_len/num; + pack=file_size/num; else - pack=data_len/num+1; + pack=file_size/num+1; uint32_t pack_id=1; uint32_t read_size=0; @@ -2412,9 +2403,9 @@ void SYN_train_speed_datatCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *t uint32_t pack=1; if(file_size%num==0) - pack=data_len/num; + pack=file_size/num; else - pack=data_len/num+1; + pack=file_size/num+1; uint32_t pack_id=1; uint32_t read_size=0; do @@ -6032,9 +6023,9 @@ bool Read_Health_BIN_file_buf_send_bin_Data(uint8_t day, uint16_t num,uint16_t i uint32_t pack=1; if(file_size%num==0) - pack=data_len/num; + pack=file_size/num; else - pack=data_len/num+1; + pack=file_size/num+1; uint32_t pack_id=1; uint32_t read_size=0; do @@ -6782,71 +6773,149 @@ uint8_t OTA_FILE_value=0; errcode_t decode_ota_data(ble_read_data *buffer_handle,uint8_t *data,uint16_t datalen,uint8_t crcvalue) { - uint32_t package_id=0; - memcpy_s(&package_id,4,&data[11],4); - printf("package_id: %d \r\n",package_id); + if(datalencmdtype!=0x06) { - - if(package_id==0) + return ERRCODE_FAIL; + } + + uint8_t* data_=data+sizeof(msg_header_t); + //datalen-=18; + datalen=header->package_len; + + if(header->cmdid==0x0B) + { + //取消文件传输 + if(Check_CRC(data_,datalen,crcvalue)) { - last_package_id=package_id; - if((buffer_handle->file_recv_stat.recv_file_stat <= 0) && buffer_handle->file_recv_stat.file == NULL ) + cancel_recv_file(); + uint8_t replydata= 1; + ble_reply_msgarr(6,0x0B,&replydata,1); + } + else { - buffer_handle->file_recv_stat.lrcvalue = 0; - if (buffer_handle->file_recv_stat.file_type == 1) - { - buffer_handle->file_recv_stat.file = fopen("/update/update.fwpkg","w+"); - printf("create file /update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file); + cancel_recv_file(); + uint8_t replydata= 0; + ble_reply_msgarr(6,0x0B,&replydata,1); + } - } - else if (buffer_handle->file_recv_stat.file_type == 2) - { - char musicpath[64]={0}; - get_music_path(musicpath,64); - //"/user/userdata/music" - char filepath[256]={0}; - create_mp3_name(filepath,musicpath,buffer_handle->file_recv_stat.file_name); + } + else if(header->cmdid==0x02) + { - buffer_handle->file_recv_stat.file = fopen(filepath,"w+"); - printf("filepath %s\r\n",filepath); - } - else + uint32_t package_id=header->package_index; + printf("package_id: %d \r\n",package_id); + if(Check_CRC(data_,datalen,crcvalue)) + { + + if(package_id==0) + { + last_package_id=package_id; + if((buffer_handle->file_recv_stat.recv_file_stat <= 0) && buffer_handle->file_recv_stat.file == NULL ) { - char filepath[128]={0}; - if (get_file_recv_file_path(buffer_handle->file_recv_stat.file_name,strlen(buffer_handle->file_recv_stat.file_name),filepath,sizeof(filepath)) == ERRCODE_SUCC) + buffer_handle->file_recv_stat.lrcvalue = 0; + if (buffer_handle->file_recv_stat.file_type == 1) { + buffer_handle->file_recv_stat.file = fopen("/update/update.fwpkg","w+"); + printf("create file /update/update.fwpkg %X\n",buffer_handle->file_recv_stat.file); + + } + else if (buffer_handle->file_recv_stat.file_type == 2) + { + char musicpath[64]={0}; + get_music_path(musicpath,64); + //"/user/userdata/music" + char filepath[256]={0}; + create_mp3_name(filepath,musicpath,buffer_handle->file_recv_stat.file_name); + buffer_handle->file_recv_stat.file = fopen(filepath,"w+"); - printf("create file %s %X\n",filepath,buffer_handle->file_recv_stat.file); + printf("filepath %s\r\n",filepath); + } + else + { + char filepath[128]={0}; + if (get_file_recv_file_path(buffer_handle->file_recv_stat.file_name,strlen(buffer_handle->file_recv_stat.file_name),filepath,sizeof(filepath)) == ERRCODE_SUCC) + { + buffer_handle->file_recv_stat.file = fopen(filepath,"w+"); + printf("create file %s %X\n",filepath,buffer_handle->file_recv_stat.file); + }else{ + printf("create file %s error %X\n",buffer_handle->file_recv_stat.file_name,buffer_handle->file_recv_stat.file); + } + } + + + + if (buffer_handle->file_recv_stat.file == NULL) + { + printf("6185 buffer_handle->file_recv_stat.file \n"); + return ERRCODE_FAIL; + } + size_t writtensize = fwrite(data_,1,datalen,buffer_handle->file_recv_stat.file); + if(writtensize == datalen) + { + timer_flie_flag=10; + + buffer_handle->file_recv_stat.lrcvalue = calculate_lrc(data_,datalen,buffer_handle->file_recv_stat.lrcvalue); + buffer_handle->file_recv_stat.received_size += datalen; + printf("handle_recv_file received_size %d\n",buffer_handle->file_recv_stat.received_size); + OTA_FILE_value= ((float) buffer_handle->file_recv_stat.received_size / (float)buffer_handle->file_recv_stat.file_size) *100; + + }else{ - printf("create file %s error %X\n",buffer_handle->file_recv_stat.file_name,buffer_handle->file_recv_stat.file); - } - } + printf("handle_recv_file write file failed! ret %d != %d\n",writtensize,datalen); + return ERRCODE_FAIL; + } + buffer_handle->file_recv_stat.recv_file_stat = 1; + ////////////////创建文件传输超时定时器////////////////// + uint32_t tick; + osStatus_t retTimer; + if(BR_TRANSFER_timer!=NULL) + { + osTimerDelete(BR_TRANSFER_timer); + BR_TRANSFER_timer = NULL; + } + timer_flie_type=buffer_handle->file_recv_stat.file_type; + ble_read_timer_p=buffer_handle; + timer_flie_flag=10; + BR_TRANSFER_timer = osTimerNew((osTimerFunc_t)ble_transfer_Timer_CallBack, osTimerPeriodic, NULL, NULL); + tick =1000;// osMs2Tick(1000); + retTimer = osTimerStart(BR_TRANSFER_timer, tick); + if (retTimer != osOK && BR_TRANSFER_timer != NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer); + osTimerDelete(BR_TRANSFER_timer); + BR_TRANSFER_timer = NULL; + return ERRCODE_FAIL; + } + } + /////////////////////////////////////////////////////////// + } + else if ((last_package_id+1)==package_id) + { + last_package_id=package_id; if (buffer_handle->file_recv_stat.file == NULL) { - printf("6185 buffer_handle->file_recv_stat.file \n"); + printf("6194 buffer_handle->file_recv_stat.file \n"); return ERRCODE_FAIL; } - size_t writtensize = fwrite(data,1,datalen,buffer_handle->file_recv_stat.file); + //写入文件 + size_t writtensize = fwrite(data_,1,datalen,buffer_handle->file_recv_stat.file); if(writtensize == datalen) { timer_flie_flag=10; - buffer_handle->file_recv_stat.lrcvalue = calculate_lrc(data,datalen,buffer_handle->file_recv_stat.lrcvalue); + buffer_handle->file_recv_stat.lrcvalue = calculate_lrc(data_,datalen,buffer_handle->file_recv_stat.lrcvalue); buffer_handle->file_recv_stat.received_size += datalen; printf("handle_recv_file received_size %d\n",buffer_handle->file_recv_stat.received_size); + OTA_FILE_value= ((float) buffer_handle->file_recv_stat.received_size / (float)buffer_handle->file_recv_stat.file_size) *100; @@ -6855,102 +6924,53 @@ errcode_t decode_ota_data(ble_read_data *buffer_handle,uint8_t *data,uint16_t da return ERRCODE_FAIL; } - - buffer_handle->file_recv_stat.recv_file_stat = 1; - ////////////////创建文件传输超时定时器////////////////// - uint32_t tick; - osStatus_t retTimer; - if(BR_TRANSFER_timer!=NULL) + //检查文件是否写完 + if(buffer_handle->file_recv_stat.file_size == buffer_handle->file_recv_stat.received_size) { - osTimerDelete(BR_TRANSFER_timer); - BR_TRANSFER_timer = NULL; - } - timer_flie_type=buffer_handle->file_recv_stat.file_type; - ble_read_timer_p=buffer_handle; - timer_flie_flag=10; - - BR_TRANSFER_timer = osTimerNew((osTimerFunc_t)ble_transfer_Timer_CallBack, osTimerPeriodic, NULL, NULL); - tick =1000;// osMs2Tick(1000); - retTimer = osTimerStart(BR_TRANSFER_timer, tick); - if (retTimer != osOK && BR_TRANSFER_timer != NULL) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer); - osTimerDelete(BR_TRANSFER_timer); - BR_TRANSFER_timer = NULL; - return ERRCODE_FAIL; - } - } - /////////////////////////////////////////////////////////// - } - else if ((last_package_id+1)==package_id) - { - last_package_id=package_id; - if (buffer_handle->file_recv_stat.file == NULL) - { - printf("6194 buffer_handle->file_recv_stat.file \n"); - return ERRCODE_FAIL; - } - //写入文件 - size_t writtensize = fwrite(data,1,datalen,buffer_handle->file_recv_stat.file); - if(writtensize == datalen) - { - timer_flie_flag=10; - - buffer_handle->file_recv_stat.lrcvalue = calculate_lrc(data,datalen,buffer_handle->file_recv_stat.lrcvalue); - buffer_handle->file_recv_stat.received_size += datalen; - printf("handle_recv_file received_size %d\n",buffer_handle->file_recv_stat.received_size); - OTA_FILE_value= ((float) buffer_handle->file_recv_stat.received_size / (float)buffer_handle->file_recv_stat.file_size) *100; + if (buffer_handle->file_recv_stat.file!=NULL) + { + fclose(buffer_handle->file_recv_stat.file); + buffer_handle->file_recv_stat.file = NULL; + } + if (buffer_handle->file_recv_stat.file_name != NULL) + { + free(buffer_handle->file_recv_stat.file_name); + buffer_handle->file_recv_stat.file_name=NULL; + } + buffer_handle->file_recv_stat.recv_file_stat = 2; + buffer_handle->receive_file_flag = 0; + printf("handle_recv_file received success \n"); + if(BR_TRANSFER_timer) + { + osTimerStop(BR_TRANSFER_timer); + osTimerDelete(BR_TRANSFER_timer); + BR_TRANSFER_timer = NULL; + } - }else{ - printf("handle_recv_file write file failed! ret %d != %d\n",writtensize,datalen); - return ERRCODE_FAIL; - } + ble_reply_cmd(OTA_FILE_SUCC_CMD,1);//接收成功 + } - //检查文件是否写完 - if(buffer_handle->file_recv_stat.file_size == buffer_handle->file_recv_stat.received_size) - { - if (buffer_handle->file_recv_stat.file!=NULL) - { - fclose(buffer_handle->file_recv_stat.file); - buffer_handle->file_recv_stat.file = NULL; } - if (buffer_handle->file_recv_stat.file_name != NULL) + else if (last_package_id==package_id) { - free(buffer_handle->file_recv_stat.file_name); - buffer_handle->file_recv_stat.file_name=NULL; + uint32_t replydata=0xffffffff; + printf("包重复\r\n"); + //ble_reply_msgarr(6,4,&replydata,4); } - buffer_handle->file_recv_stat.recv_file_stat = 2; - buffer_handle->receive_file_flag = 0; - printf("handle_recv_file received success \n"); - - if(BR_TRANSFER_timer) + else if (last_package_id!=package_id) { - osTimerStop(BR_TRANSFER_timer); - osTimerDelete(BR_TRANSFER_timer); - BR_TRANSFER_timer = NULL; + uint32_t replydata= last_package_id+1; + ble_reply_msgarr(6,4,&replydata,4); } - - ble_reply_cmd(OTA_FILE_SUCC_CMD,1);//接收成功 - } - - } - else if (last_package_id==package_id) - { - uint32_t replydata=0xffffffff; - printf("包重复\r\n"); - //ble_reply_msgarr(6,4,&replydata,4); + return ERRCODE_SUCC; } - else if (last_package_id!=package_id) + else { - uint32_t replydata= last_package_id+1; - ble_reply_msgarr(6,4,&replydata,4); + return ERRCODE_FAIL; } - return ERRCODE_SUCC; - } - else - { - return ERRCODE_FAIL; } + return ERRCODE_FAIL; } @@ -7466,7 +7486,9 @@ void decode_file_checksum_2AE6(ble_read_data *buffer_handle) { case 1: //ota do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_STARTOTA,NULL,0); - + + ble_reply_cmd(FILE_SUCC_TRANSFER,1); + TRANSMIT_DATA=TRANS_OTA_SUCC; CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); @@ -7476,7 +7498,7 @@ void decode_file_checksum_2AE6(ble_read_data *buffer_handle) TRANSMIT_DATA=TRANS_MP3_SUCC; CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); - ble_reply_cmd(DIAL_INSTALL_REPY_CMD,1); + ble_reply_cmd(FILE_SUCC_TRANSFER,1); ble_mp3_list_update(); break; @@ -7491,7 +7513,7 @@ void decode_file_checksum_2AE6(ble_read_data *buffer_handle) TRANSMIT_DATA= TRANS_DIAL_SUCC; CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); //0504 - ble_reply_cmd(DIAL_INSTALL_REPY_CMD,1); + ble_reply_cmd(DIAL_SUCC_INSTALL,1); } @@ -7504,7 +7526,7 @@ void decode_file_checksum_2AE6(ble_read_data *buffer_handle) TRANSMIT_DATA= TRANS_DIAL_FAIL; CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); - ble_reply_cmd(DIAL_INSTALL_REPY_CMD,0); + ble_reply_cmd(DIAL_SUCC_INSTALL,0); } break; @@ -7907,16 +7929,6 @@ errcode_t cancel_recv_file(void) osTimerDelete(BR_TRANSFER_timer); BR_TRANSFER_timer = NULL; } - - // if(timer_flie_type==1) - // { - // TRANSMIT_DATA=TRANS_OTA_FAIL; - // } - // else if (timer_flie_type==3) - // { - // TRANSMIT_DATA=TRANS_DIAL_FAIL; - // } - // else { TRANSMIT_DATA=TRANS_FREE; } @@ -8504,8 +8516,8 @@ void cancel_AI_cur_chat_(void) { printf("取消当前AI对话\r\n"); uint8_t data=1; - ble_data_type type_={0x05,0x07,data_len,1,1}; - send_big_data(type_,(char *)&data,data_len); + ble_data_type type_={0x05,0x07,1,1,1}; + send_big_data(type_,(char *)&data,1); AI_is_end_state=0; } 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 941a10393..12066d9b0 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h @@ -846,10 +846,14 @@ void reply_APP_OpenSportModeCmd(bool falg); #define OTA_FILE_FAIL_CMD 0x0604 ///////////// -#define DIAL_COLLECT_FILE_CMD 0x0605 -#define DIAL_SINGEL_FILE_CMD 0x0606 -#define MP3_FILE_CMD 0x0607 +#define DIAL_COLLECT_FILE_CMD 0x0605 +#define DIAL_SINGEL_FILE_CMD 0x0606 +#define MP3_FILE_CMD 0x0607 #define FILE_CHECKSUM_RECV_CMD_ZHIHUI 0x0608 +#define DIAL_SUCC_INSTALL 0x0609 +#define FILE_SUCC_TRANSFER 0x060A +#define FILE_CANCEL_TRANSFER 0x060B + #ifdef __cplusplus } #endif diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c index ac462e628..40369d3d0 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -113,8 +113,8 @@ static uint8_t scan_data[BLE_SCAN_DATA_LENTH] = {0}; uint8_t phone_mac_data[6]={0}; #define ble_add_max_num 10 -static bd_addr_t phone_addr[ble_add_max_num]; -static uint16_t ble_conn_id[ble_add_max_num]; +static bd_addr_t phone_addr[ble_add_max_num]={0}; +static uint16_t ble_conn_id[ble_add_max_num]={0}; bd_addr_t disconect_addr;//断开连接地址不需要反序 @@ -393,10 +393,6 @@ void svr_ble_adv_start_param(void) gap_ble_adv_params_t adv_para; memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t)); - // adv_para.min_interval = 0x30; - // adv_para.max_interval = 0x60; - // adv_para.min_interval = 140 * 32; - // adv_para.max_interval = 160 * 32; adv_para.min_interval = 0x640; adv_para.max_interval = 0x640; adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR; @@ -428,7 +424,10 @@ void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_bl clean_phone_info(conn_id); - if(conn_id==g_ble_conn_id) + //如果ble连接全部断连,则需要重新开启广播 + //可能因ble连接不够稳定,快速断开ble连接,无法将连接判定为app连接导致断连的时候没有正确重新开启广播 + + if(conn_id==g_ble_conn_id || !get_ble_connect()) { free_ble_data(); @@ -444,25 +443,9 @@ void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_bl ble_ancs_client_clear(conn_id); } - } - - //如果ble连接全部断连,则需要重新开启广播 - //可能因ble连接不够稳定,快速断开ble连接,无法将连接判定为app连接导致断连的时候没有正确重新开启广播 - if(!get_ble_connect()) - { svr_ble_adv_start(); - Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开 - ble_disconnect_ok(); - - free_ble_data(); - - if(get_ble_pair()) - { - ble_ancs_client_clear(conn_id); - } } - - if(ble_is_Alipay_bind()==true) + else if (ble_is_Alipay_bind()==true) { //如果当前页面处于支付宝界面,则重新开广播 svr_ble_adv_start(); @@ -510,10 +493,10 @@ void uapi_ble_connect_param_update(uint16_t data) { gap_conn_param_update_t conn_param = { 0 }; conn_param.conn_handle = g_ble_conn_id; /* param 0: conn_handle */ - conn_param.interval_min =data; /* param 1: interval_min 10ms */ + conn_param.interval_min =data; /* param 1: interval_min 1.25ms */ conn_param.interval_max = data; /* param 2: interval_max */ conn_param.slave_latency = 6; /* param 3: slave_latency */ - conn_param.timeout_multiplier = 700; /* param 4: timeout_multiplier */ + conn_param.timeout_multiplier = 700; /* param 4: timeout_multiplier 10ms */ int ret = gap_ble_connect_param_update(&conn_param); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble update connection parameters %d ret: %X\n",data,ret); } @@ -566,7 +549,7 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s } } // uint16_t interval; /*!< @if Eng interval - // @else 链路调度间隔,单位slot @endif */ + // @else 链路调度间隔,单位slot 1.25ms@endif */ // uint16_t latency; /*!< @if Eng latency // @else 延迟周期,单位slot @endif */ // uint16_t timeout; /*!< @if Eng timeout @@ -577,7 +560,10 @@ static uint16_t ble_interval=50; uint16_t get_ble_interval(void) { - return ble_interval; + float temp_data =(float)ble_interval*1.25f; + + return (uint16_t)temp_data; + } void srv_gap_ble_connect_param_update_callback(uint16_t conn_id, errcode_t status, @@ -1937,12 +1923,35 @@ errcode_t uapi_blesrv_service_init(void) return ERRCODE_SUCC; } + void send_pair_succ(bd_addr_t *addr) { sendParieSuccess(1,addr); } +void Check_ble_adv_status(void) +{ + + if(get_ble_connect()) + { + return; + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"get_ble_adv_status %s \n", get_ble_adv_status()?"true":"fales"); + if(get_ble_adv_status()==0) + { + if(AdverFlag) + { + svr_ble_adv_start_param(); + } + + } + } + return; +} + #ifdef __cplusplus } diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h index 2b3705bea..1a0f42923 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h @@ -91,6 +91,8 @@ errcode_t svr_ble_bt_gatts_noyify_zhihui(uint8_t *data, uint16_t data_len); uint16_t get_ble_interval(void); +void Check_ble_adv_status(void); + #ifdef __cplusplus } diff --git a/code/sdk/drivers/peripheral/utils/custom_cmd_service.c b/code/sdk/drivers/peripheral/utils/custom_cmd_service.c index c312ca557..8282fde29 100644 --- a/code/sdk/drivers/peripheral/utils/custom_cmd_service.c +++ b/code/sdk/drivers/peripheral/utils/custom_cmd_service.c @@ -267,6 +267,8 @@ static void custom_cmd_service_check_task(void const *arg) case CUSTOM_CMD_MSG_DOWNLOAD_RES: repair_file_start(); break; + case CUSTOM_CMD_MSG_BLE_ADV_CHECK: + Check_ble_adv_status(); default: PRINT("Unknown CUSTOM_CMD_MSG cmd 0x%02X \r\n", mail.cmd); break; diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index 67a51a20d..5d2481362 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -219,6 +219,9 @@ uint32_t uapi_calendar_store_date(void); #define CUSTOM_CMD_MSG_DOWNLOAD_RES 0x0E #define CUSTOM_CMD_MSG_TYPE_TOUCH_RESUME 0x0F + +#define CUSTOM_CMD_MSG_BLE_ADV_CHECK 0x10 + typedef enum { BR_HFP_CONNECT=1, BR_HFP_DISCONNECT, -- 2.17.1