From 48ee9b7f2c9ac0675799ee94c1aba0ce7ac7f009 Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Wed, 16 Oct 2024 20:14:35 +0800 Subject: [PATCH] =?utf8?q?=E8=93=9D=E7=89=99=E4=BF=AE=E6=94=B9=EF=BC=8C?= =?utf8?q?=E6=A0=B9=E6=8D=AE=E9=9C=80=E6=B1=82=E9=87=87=E5=8F=96=EF=BC=8C?= =?utf8?q?=E5=AE=9E=E6=97=B6=E6=9B=B4=E6=96=B0=E8=BF=9E=E6=8E=A5=E9=97=B4?= =?utf8?q?=E9=9A=94=EF=BC=8CBR=E9=85=8D=E5=AF=B9=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/bluetooth/src/BluetoothModel.cpp | 24 +- .../service/ble_service/bleservice/bleEvent.c | 278 +++++++++++++++--- .../service/ble_service/bleservice/bleEvent.h | 4 +- .../ble_service/bleservice/bleService.c | 154 +++++++++- .../ble_service/bleservice/bleService.h | 12 + .../debug_output_notification.cpp | 4 + .../src/notify/makephone_notification.cpp | 2 + 7 files changed, 415 insertions(+), 63 deletions(-) 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 65a49770d..bcee8c39d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp @@ -802,14 +802,15 @@ void BtGapPairStatusChangedCallback(const bd_addr_t *bdAddr, int status) { send_pair_succ((bd_addr_t*)bdAddr); hand_watch_first_time_Paired(); - svr_ble_adv_stop(); + //svr_ble_adv_stop(); //uapi_reconnect(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_a2dp_snk_connect"); - } - if(status == GAP_PAIR_PAIRED) - { - set_br_pair(); + set_br_pair(1); + } + // if( && status == GAP_PAIR_NONE ) + // { + // set_br_pair(0); + // } } @@ -1100,6 +1101,17 @@ 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 9abf63730..1b6a32a82 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -53,6 +53,8 @@ extern "C" { #define AI_TXT_BUF_MAX_LEN 1024*3 //json解析失败 + + uint32_t packdataLen = 0; uint32_t totalDataLen = 0; uint8_t totalpack = 0; @@ -107,6 +109,40 @@ static uint32_t timer_flie_flag=0; ble_read_data* ble_read_timer_p=NULL; +//MP3文件重命名 +static errcode_t create_mp3_name(char* path,char*dir_path ,char* file_name) +{ + + sprintf_s(path,256,"%s/",dir_path); + uint16_t path_len=strlen(path); + + + if(strstr(file_name,".mp3")) + { + //"光-陈粒.128.mp3" + printf("%s\r\n",file_name); + int len=strlen(file_name)-strlen(".mp3"); + for(int i=0;i=2) { - msleep(10);//多包数据发送增加延迟 + msleep(get_ble_interval()+5);//多包数据发送增加延迟 } // 设置消息头部信息 buf[0] = 0x72; // 消息头 @@ -398,8 +459,15 @@ void send_big_data(ble_data_type type,char *data, uint16 datalen) printf("end\r\n"); // 根据标志位选择发送数据的方式 - + if(type.type==6) + { + send_Data_Now_zh(buf, 17 + datalen + 1); + } + else + { sendDataNow(buf, 17 + datalen + 1); // 判断是否在传输或接收多包数据 +} + ym_free(buf); // 释放内存空间 @@ -538,7 +606,7 @@ errcode_t UnbindSucessCmd(uint8_t flag)//发送解绑指令,解绑界面调用 value[17] = flag; value[18] = Calculate_CRC(value,18); sendok = sendBleData(value,19); - msleep(50);//增加延时,确保可以成功发送解除绑定 + msleep(3*get_ble_interval());//增加延时,确保可以成功发送解除绑定 bd_addr_t addr={0}; get_phone_addr(&addr,g_ble_conn_id); @@ -1450,7 +1518,7 @@ void SetUTCtime(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8 sendBuf[17] = set_ok; sendBuf[18] = Calculate_CRC(sendBuf,18); sendBleData(sendBuf,19); - uapi_ble_connect_param_update(50); + } else { @@ -5308,10 +5376,8 @@ static void GetAiRecordCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *tota ble_data_type type_={0x01,0x34,file_size,pack,pack_id}; send_big_data(type_,data,read_size); } - - //send_big_data(1,data,read_size,file_size,pack_id,pack,0x34,1); pack_id++; - msleep(SEND_AIVOICE_PACKAGE_DELAY); + } while (read_size==num); free(data); @@ -5435,6 +5501,9 @@ static void GetSynDataEndCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *to value[17] = 1;// value[18] = Calculate_CRC(value,18); sendBleData(value,19); + + uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW); + }else { value[17] = 0; @@ -5526,6 +5595,9 @@ static void synEndDataCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *total value[17] = 1; value[18] = Calculate_CRC(value,18); sendBleData(value,19); + + uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW); + }else { value[17] = 0; @@ -6586,7 +6658,17 @@ errcode_t ble_reply_msgarr(uint8_t msg_cmdtype,uint8_t msg_cmdid,uint8_t *replyd memcpy_s(replybuf+sizeof(msg_header_t),replydata_len,replydata,replydata_len); uint8_t crc_value = Calculate_CRC( replybuf, replybuflen - 1); replybuf[ replybuflen - 1 ] = crc_value ; //CRC - errcode_t ret = sendBleData(replybuf,replybuflen); + errcode_t ret=0; + if(msg_cmdtype==6) + { + ret=sendBleData_zhihui(replybuf,replybuflen); + + }else + { + ret= sendBleData(replybuf,replybuflen); + } + + printf("ble_reply_msgarr cmdtype %02X cmdid %02X package %d/%d , len %d,total len %d , data[0] %02X crc %02X\n", reply_cmd_header->cmdtype, reply_cmd_header->cmdid, @@ -6706,7 +6788,20 @@ errcode_t decode_ota_data(ble_read_data *buffer_handle,uint8_t *data,uint16_t da 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{ + } + 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("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) { @@ -6716,6 +6811,9 @@ errcode_t decode_ota_data(ble_read_data *buffer_handle,uint8_t *data,uint16_t da 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"); @@ -6923,6 +7021,7 @@ errcode_t decode_ota_json(ble_read_data *buffer_handle) buffer_handle->file_recv_stat.received_size = 0; buffer_handle->file_recv_stat.lrcvalue = 0; buffer_handle->receive_file_flag = 1; + uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH); //进入特殊UI TRANSMIT_DATA=TRANS_OTA_TRANSMITTING; CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); @@ -6939,7 +7038,7 @@ errcode_t decode_mp3_json(ble_read_data *buffer_handle) { uint8_t *data = buffer_handle->data+sizeof(msg_header_t); uint16_t datalen = buffer_handle->totalDataLen; - printf("ota_json_file_save %s\n",data); + printf("MP3_file_save %s\n",data); /** MP3文件信息格式 @@ -6994,6 +7093,7 @@ errcode_t decode_mp3_json(ble_read_data *buffer_handle) buffer_handle->file_recv_stat.received_size = 0; buffer_handle->file_recv_stat.lrcvalue = 0; buffer_handle->receive_file_flag = 1; + uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH); TRANSMIT_DATA=TRANS_MP3_TRANSMITTING; CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); @@ -7159,6 +7259,7 @@ errcode_t decode_single_dial_info(ble_read_data *buffer_handle) buffer_handle->file_recv_stat.received_size = 0; buffer_handle->file_recv_stat.lrcvalue = 0; buffer_handle->receive_file_flag = 1; + uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH); return ERRCODE_SUCC; @@ -7292,7 +7393,7 @@ bool Read_tar_file_buf_send_Data(uint16_t pack_size,uint8_t id) //send_big_data(1,data,read_size,file_size,pack_id,pack,id,5); pack_id++; - msleep(50); + } while (read_size==pack_size); free(data); fclose(fp); @@ -7323,9 +7424,123 @@ bool read_dir_send_json() } } +void decode_file_checksum_2AE6(ble_read_data *buffer_handle) +{ + uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW); + + uint8_t msg_crc = get_crc_from_lrc(buffer_handle->lrcvalue); + if ((msg_crc == buffer_handle->crcvalue) + || (buffer_handle->cmd_header.direction == MSG_DIRECTION_RECV_ANDROID )) + { + uint8_t file_crc = get_crc_from_lrc(buffer_handle->file_recv_stat.lrcvalue); + uint8_t crc_recv = buffer_handle->data[sizeof(msg_header_t)]; +#if 1 + if ((file_crc == crc_recv) || + (buffer_handle->cmd_header.direction == MSG_DIRECTION_RECV_ANDROID)) +#else + if (file_crc == crc_recv) +#endif + { + ble_reply_cmd(FILE_CHECKSUM_RECV_CMD_ZHIHUI,1); + switch(buffer_handle->file_recv_stat.file_type) + { + case 1: //ota + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_STARTOTA,NULL,0); + + TRANSMIT_DATA=TRANS_OTA_SUCC; + CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + + + break; + case 2://mp3 + TRANSMIT_DATA=TRANS_MP3_SUCC; + CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + + ble_reply_cmd(DIAL_INSTALL_REPY_CMD,1); + ble_mp3_list_update(); + + break; + case 3://dial + //TODO: 设置成当前下载的表盘 + if (install_dial() == ERRCODE_SUCC) + { + //ble_set_dial_by_id(ble_dial_uid); + + if(ble_dial_uid>5 || ble_dial_file_index==ble_dial_file_count) + { + 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(GET_TRANS_END_CMD,1); + + } + else + { + TRANSMIT_DATA= TRANS_DIAL_FAIL; + CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + + ble_reply_cmd(DIAL_INSTALL_REPY_CMD,0); + + } + break; + default: + break; + } + }else{ + ble_reply_cmd(FILE_CHECKSUM_RECV_CMD_ZHIHUI,2); + switch (buffer_handle->file_recv_stat.file_type) + { + case 1: //ota + TRANSMIT_DATA=TRANS_OTA_FAIL; + CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + break; + case 2://mp3 + TRANSMIT_DATA=TRANS_MP3_FAIL; + CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + + break; + case 3://dial + TRANSMIT_DATA= TRANS_DIAL_FAIL; + CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + + break; + default: + break; + } + + } + }else{ + ble_reply_cmd(FILE_CHECKSUM_RECV_CMD_ZHIHUI,0); + switch (buffer_handle->file_recv_stat.file_type) + { + case 1: //ota + TRANSMIT_DATA=TRANS_OTA_FAIL; + CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + break; + case 2://mp3 + TRANSMIT_DATA=TRANS_MP3_FAIL; + CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + + break; + case 3://dial + TRANSMIT_DATA= TRANS_DIAL_FAIL; + CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); + break; + default: + break; + } + } + buffer_handle->file_recv_stat.recv_file_stat=0; +} void decode_file_checksum(ble_read_data *buffer_handle) { + uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW); uint8_t msg_crc = get_crc_from_lrc(buffer_handle->lrcvalue); if ((msg_crc == buffer_handle->crcvalue) @@ -7615,11 +7830,9 @@ void type2AE6Data(ble_read_data *buffer_handle,uint8_t *cmd_buf ,uint8_t *data,u // } // } - case OTA_FILE_SUCC_CMD : - { - decode_file_checksum(buffer_handle); + case FILE_CHECKSUM_RECV_CMD_ZHIHUI : + decode_file_checksum_2AE6(buffer_handle); break; - } case OTA_FILE_FAIL_CMD : break; @@ -7763,40 +7976,7 @@ static errcode_t check_package_same(uint8_t* lastdata,uint8_t *newdata , uint16_ return ERRCODE_FAIL; } } -//MP3文件重命名 -static errcode_t create_mp3_name(char* path,char*dir_path ,char* file_name) -{ - - sprintf_s(path,256,"%s/",dir_path); - uint16_t path_len=strlen(path); - - if(strstr(file_name,".mp3")) - { - //"光-陈粒.128.mp3" - printf("%s\r\n",file_name); - int len=strlen(file_name)-strlen(".mp3"); - for(int i=0;i> 8))) @@ -128,6 +131,8 @@ uint16_t data2ae2Cmd = 0;//read uint16_t data2ae1Cmd = 0;//安卓消息来电 uint16_t data2ae0Cmd = 0;//OTA uint16_t data2ae6Cmd = 0;//自定义OTA +uint16_t data2ae7Cmd = 0;//自定义OTA + #define handle_max_len 40 @@ -218,6 +223,8 @@ enum{ BLE_CHARACTERISTIC_SNED_ANDRIOD_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP, BLE_CHARACTERISTIC_READ_BATTERY_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_READ|GATT_CHARACTER_PROPERTY_BIT_NOTIFY, BLE_ZHIHUI_OTA_ID_ID_PROPERTIES=GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP, + + BLE_ZHIHUI_OTA_REPLY_ID_PROPERTIES=GATT_CHARACTER_PROPERTY_BIT_NOTIFY|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP|GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_READ, }; static uint8_t ble_adv_falg = 0; static bool g_custom_ble_init_flag = false; @@ -508,7 +515,7 @@ void uapi_ble_connect_param_update(uint16_t data) conn_param.slave_latency = 6; /* param 3: slave_latency */ conn_param.timeout_multiplier = 700; /* param 4: timeout_multiplier */ int ret = gap_ble_connect_param_update(&conn_param); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble update connection parameters ret: %X\n", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble update connection parameters %d ret: %X\n",data,ret); } void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t status) { @@ -564,9 +571,19 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s // @else 延迟周期,单位slot @endif */ // uint16_t timeout; /*!< @if Eng timeout // @else 超时时间,单位10ms @endif */ +//发送连续数据参考此数值进行速度调整 +//2*slot +static uint16_t ble_interval=50; + +uint16_t get_ble_interval(void) +{ + return ble_interval; +} + void srv_gap_ble_connect_param_update_callback(uint16_t conn_id, errcode_t status, const gap_ble_conn_param_update_t *param) { + ble_interval=param->interval; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "conn_id %d status %d gap_ble_conn_param_update_t interval %d latency%d timeout %d ",conn_id,status,param->interval,param->latency,param->timeout); } @@ -819,6 +836,46 @@ static void srv_ble_add_chart_decr_recv_cmd(uint8_t server_id,uint16_t srv_handl } } + +static void srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(uint8_t server_id,uint16_t srv_handle) +{ + errcode_t ret = 0; + static uint8_t battery_point_val[] = {0x00, 0x00}; + gatts_add_chara_info_t character; + gatts_add_desc_info_t descriptor; + + bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_REPLY_ID, &character.chara_uuid); + character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE; + character.properties = BLE_ZHIHUI_OTA_REPLY_ID_PROPERTIES; + character.value_len = (uint16_t)sizeof(battery_point_val); + character.value = battery_point_val; + + ret = gatts_add_characteristic(server_id, srv_handle, &character); + if (ret != ERRCODE_SUCC) { + // ALIPAY_PRINT_ERR(0, "gatts_add_characteristic fail, ret:%u.\r\n", ret); + } + bts_data_to_uuid_len2(BLE_UUID_CLIENT_CHARACTERISTIC_CONF, &descriptor.desc_uuid); + descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE; + descriptor.value_len = (uint16_t)sizeof(battery_point_val); + descriptor.value = battery_point_val; + + ret = gatts_add_descriptor(server_id, srv_handle, &descriptor); + if (ret != ERRCODE_SUCC) { + // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret); + } + + bts_data_to_uuid_len2(BLE_UUID_USER_CHARACTERISTIC_CONF, &descriptor.desc_uuid); + descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ;; + descriptor.value_len = (uint16_t)sizeof(battery_point_val); + descriptor.value = battery_point_val; + + ret = gatts_add_descriptor(server_id, srv_handle, &descriptor); + if (ret != ERRCODE_SUCC) { + // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret); + } +} + + static uint8_t g_alipay_character_buf[256] = {0}; static void alipay_add_chart_decr_recv_cmd1(uint8_t server_id,uint16_t srv_handle) { @@ -974,7 +1031,7 @@ static void svr_ble_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid, srv_ble_add_chart_decr_long_cmd(server_id,srv_handle); srv_ble_add_chart_decr_recv_cmd(server_id,srv_handle); srv_ble_add_chart_decr_Zhihui_ota(server_id,srv_handle); - +srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(server_id,srv_handle); gatts_start_service(server_id, srv_handle); } if (ble_gatts_cmp_uuid(uuid, &hid_service_uuid) == true){ @@ -1026,6 +1083,7 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t bt_uuid_t chara_uuid_data_2ae5 = {0}; bts_data_to_uuid_len2(BLE_CHARACTERISTIC_RECV_ID, &chara_uuid_data_2ae5); + bt_uuid_t chara_uuid_data_2ae3 = {0}; bts_data_to_uuid_len2(BLE_CHARACTERISTIC_SNED_SHORT_ID, &chara_uuid_data_2ae3); bt_uuid_t chara_uuid_data_2ae4 = {0}; @@ -1041,6 +1099,19 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t bt_uuid_t hid_report_uuid_2ae6 = {0}; bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_ID, &hid_report_uuid_2ae6); +bt_uuid_t chara_uuid_data_2ae7 = {0}; + bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_REPLY_ID, &chara_uuid_data_2ae7); + + if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data_2ae7)) + { + if(data2ae7Cmd==0) + { + data2ae7Cmd=result->value_handle; + } + Is_value_handle[handle_num]=result->value_handle; + handle_num++; + } + if(ble_gatts_cmp_uuid(uuid, &hid_report_uuid_2ae6)) { @@ -1224,16 +1295,37 @@ errcode_t svr_ble_bt_gatts_noyify(uint8_t *data, uint16_t data_len)//这里是 if(ret!=ERRCODE_SUCC) { - msleep(200); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id, + g_ble_conn_id, g_ble_server_handle,data_len); + ble_set_ai_Answer_str("BLE NOTIF ERROR",5); + } + + } + } + return ret; +} + + +errcode_t svr_ble_bt_gatts_noyify_zhihui(uint8_t *data, uint16_t data_len)//这里是设备数据上报给app手机端 +{ + gatts_ntf_ind_t data_info; + data_info.attr_handle = data2ae7Cmd; + data_info.value = data; + data_info.value_len = data_len; + errcode_t ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info); + if(ret!=ERRCODE_SUCC) + { + msleep(50); ret=gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info); if(ret!=ERRCODE_SUCC) { + msleep(100); + ret=gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info); + + if(ret!=ERRCODE_SUCC) WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id, g_ble_conn_id, g_ble_server_handle,data_len); - ble_set_ai_Answer_str("BLE NOTIF ERROR",5); - } - } - } + } } return ret; } @@ -1288,6 +1380,54 @@ errcode_t svr_ble_read_data_value_updata_noyify(void)//2ae2 return ret; } +errcode_t svr_ble_read_data_value_updata_noyify_test(uint8_t test)//2ae2 +{ + gatts_ntf_ind_t data_info; + data_info.attr_handle = data2ae2Cmd; + static uint8_t battery_point_val[20] = {0}; + + battery_point_val[0] =test;//power ;//power;//电量90 + + uint16_t dial = ble_get_dial_id(); + memcpy_s(&battery_point_val[1],2,&dial,2); + + uint8_t _major,_mid,_minor; + uapi_get_fw_version(&_major,&_mid,&_minor); + + battery_point_val[3] = _major;//固件版本号 + battery_point_val[4] = _mid; + battery_point_val[5] = _minor; + + bd_addr_t addr_info; + errcode_t ret = gap_ble_get_local_addr(&addr_info); + battery_point_val[6] = addr_info.addr[5]; + battery_point_val[7] = addr_info.addr[4]; + battery_point_val[8] = addr_info.addr[3]; + battery_point_val[9] = addr_info.addr[2]; + battery_point_val[10] = addr_info.addr[1]; + battery_point_val[11] = addr_info.addr[0]; + + battery_point_val[12] = 0;//消息推送开关 默认是关闭 0 + battery_point_val[13] = 0;//多媒体开关 + battery_point_val[14] = 5;//客户编号 + battery_point_val[15] = 5;//产品编号 + + battery_point_val[16] = 0;//硬件版本号 + battery_point_val[17] = 1; + + battery_point_val[18] = 0;//ble版本号 + battery_point_val[19] = 1; + + + data_info.value = battery_point_val; + data_info.value_len = 20; + ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id, + g_ble_conn_id, g_ble_server_handle,20); + + return ret; +} + static uint8_t flag=1; static void svr_ble_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, gatts_req_read_cb_t *read_cb_para, errcode_t status) 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 893a5c115..2b3705bea 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h @@ -9,6 +9,11 @@ extern "C" { #include "stdbool.h" #include "bts_def.h" #include "errcode.h" + +#define BLE_CONNECT_INTERVAL_SLOW 50 +#define BLE_CONNECT_INTERVAL_HIGH 10 + + extern uint16_t g_ble_conn_id; extern uint16_t g_ble_server_id; extern bd_addr_t disconect_addr;//断开连接地址不需要反序 @@ -79,6 +84,13 @@ void uapi_ble_connect_param_update(uint16_t data); bool get_Alipay_ble_connect(void); +errcode_t svr_ble_read_data_value_updata_noyify_test(uint8_t test); + +errcode_t svr_ble_bt_gatts_noyify_zhihui(uint8_t *data, uint16_t data_len); + +uint16_t get_ble_interval(void); + + #ifdef __cplusplus } diff --git a/code/sdk/application/wearable/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp b/code/sdk/application/wearable/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp index 0a7c191df..e13b3f421 100644 --- a/code/sdk/application/wearable/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp @@ -119,6 +119,7 @@ namespace OHOS char *buf_btaddr = (char *)malloc(32); if (buf_btaddr == NULL) return ""; + memset_s(buf_btaddr,32,0,32); uint8_t ret = uapi_get_btaddr((uint8_t *)buf_btaddr, &len); std::string str = std::string(buf_btaddr); printf("%s | %s \n", buf_btaddr, str.c_str()); @@ -130,10 +131,13 @@ namespace OHOS { uint32_t len = 64; char *buf_advdata = (char *)malloc(len); + if (buf_advdata == NULL) return ""; + memset_s(buf_advdata,64,0,64); get_adv_data(buf_advdata); + std::string str = std::string(buf_advdata); printf("%s | %s \n", buf_advdata, str.c_str()); diff --git a/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp b/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp index c4e6446a2..704f39a82 100755 --- a/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp @@ -495,6 +495,8 @@ static void DialingHandle(void) CallerLogModel::GetInstance()->SetDialingStatus("正在拨号"); CallerLogModel::GetInstance()->SetMakePhoneStatus(true); + InitCallingTimer(); + StartCallTimer(CallTimerType::NOTIFY_PHONE_DIAL_DISPLAY, (int32_t)NOTIFY_ONE_SECOND); -- 2.17.1