From 18e3033296a0cbca96bfef8670d4071444ec766f Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Wed, 25 Sep 2024 19:13:38 +0800 Subject: [PATCH] =?utf8?q?ble=E5=B9=BF=E6=92=AD=E5=B0=86=E4=B8=8D=E5=9C=A8?= =?utf8?q?=E9=9A=8F=E5=BC=80=E5=85=B3=E6=8E=A7=E5=88=B6=EF=BC=8C=E5=A2=9E?= =?utf8?q?=E5=8A=A0JSON=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/bluetooth/src/BluetoothModel.cpp | 17 +- .../service/ble_service/bleservice/bleEvent.c | 256 +++++------------- .../ble_service/bleservice/bleService.c | 132 +-------- 3 files changed, 95 insertions(+), 310 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 c553830d1..922cea15b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp @@ -213,12 +213,15 @@ void bluetooth_enable_all(void) // bts_feature.bt_auto_reconnect_closed = 0; // ret = bts_set_features(&bts_feature); // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt bts_set_features ret = %u", ret); - gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 }; - // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 0, GAP_BLE_GAP_SECURITY_MODE1_LEVEL2 }; - ret = gap_ble_set_sec_param(&sec_param); - WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret); + // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 }; + // // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 0, GAP_BLE_GAP_SECURITY_MODE1_LEVEL2 }; + // ret = gap_ble_set_sec_param(&sec_param); + // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret); + + ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_br_set_bt_scan_mode ret = %u", ret); /**开始ble广播*/ - custom_ble_service_start(); + // custom_ble_service_start(); } } @@ -227,10 +230,12 @@ void bluetooth_close_all(void) errcode_t ret; /**停止Ble广播,断开链接,清除协议缓存*/ - custom_ble_service_stop(); + // custom_ble_service_stop(); /** 停止BR广播 */ + ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_close_all gap_br_set_bt_scan_mode ret = %u", ret); /**TODO: 停止BR扫描**/ 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 df18cbe78..2c98ad172 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -707,12 +707,16 @@ void getPhoneNameLen(uint8_t *data,uint8_t *datalen,uint8_t *type)//获取手机 if(root != NULL) { cJSON* pn = cJSON_GetObjectItem(root, "pn"); - if (cJSON_IsString(pn)) { + if (pn && cJSON_IsString(pn)) { len = strlen(pn->valuestring)+1; printf("设备名称: %s len:%d\n", pn->valuestring,len); } cJSON* tp = cJSON_GetObjectItem(root, "tp"); - *type=tp->valueint; + if(tp && cJSON_IsNumber(pn)) + { + *type=tp->valueint; + } + cJSON* bond=cJSON_GetObjectItem(root, "bond"); if(bond) { @@ -734,7 +738,7 @@ static uint8_t *getPhoneName(uint8_t *data)//获取手机设备名称 if(root != NULL) { cJSON* pn = cJSON_GetObjectItem(root, "pn"); - if (cJSON_IsString(pn)) { + if (pn && cJSON_IsString(pn)) { uint8_t datalen = strlen(pn->valuestring)+1; if(datalen > PHONE_NAME_MAX_LEN) // { @@ -775,7 +779,7 @@ void getPhoneMac(uint8_t *data,uint8_t *phoneMac)//获取手机设备mac这个 if(root != NULL) { cJSON* mac = cJSON_GetObjectItem(root, "mac"); - if (cJSON_IsArray(mac)) { + if (mac && cJSON_IsArray(mac)) { printf("MAC地址: "); cJSON* macElement = NULL; cJSON_ArrayForEach(macElement, mac) { @@ -1244,8 +1248,16 @@ void sendParieSuccess(uint8_t flag,bd_addr_t *addr)//发送配对成功指令to if(flag == 1)//配对成功 { cJSON *dataJSON = cJSON_CreateObject(); + if(dataJSON==NULL) + { + return; + } cJSON* arrayJSON = cJSON_CreateArray(); + if(arrayJSON==NULL) + { + return; + } for(uint8_t id = 0;id<6;id++) { cJSON_AddNumberToObject(arrayJSON,"id",addr->addr[id]); @@ -1359,48 +1371,48 @@ static uint8_t jsonCheck_time(uint8_t *buf)//json 格式解析 uint8_t second = 0; uint32_t timestamp; cJSON* time = cJSON_GetObjectItem(root, "time"); - if (cJSON_IsNumber(time)) { + if (time && cJSON_IsNumber(time)) { printf("time: %d\n", time->valueint); timestamp = time->valueint; // printf("time: %d\n", time->valueint); } cJSON* jsweek = cJSON_GetObjectItem(root, "week"); - if (cJSON_IsNumber(jsweek)) { + if (jsweek && cJSON_IsNumber(jsweek)) { printf("week: %d\n", jsweek->valueint); week = jsweek->valueint; } cJSON* jsyear = cJSON_GetObjectItem(root, "year"); - if (cJSON_IsNumber(jsyear)) { + if (jsyear && cJSON_IsNumber(jsyear)) { printf("year: %d\n", jsyear->valueint); year = jsyear->valueint; } cJSON* jsmonth = cJSON_GetObjectItem(root, "month"); - if (cJSON_IsNumber(jsmonth)) { + if (jsmonth && cJSON_IsNumber(jsmonth)) { printf("month: %d\n", jsmonth->valueint); month = jsmonth->valueint; } cJSON* jsday = cJSON_GetObjectItem(root, "day"); - if (cJSON_IsNumber(jsday)) { + if (jsday && cJSON_IsNumber(jsday)) { printf("day: %d\n", jsday->valueint); day = jsday->valueint; } cJSON* jshour = cJSON_GetObjectItem(root, "hour"); - if (cJSON_IsNumber(jshour)) { + if (jshour && cJSON_IsNumber(jshour)) { printf("hour: %d\n", jshour->valueint); hour = jshour->valueint; } cJSON* jsminute = cJSON_GetObjectItem(root, "minute"); - if (cJSON_IsNumber(jsminute)) { + if (jsminute && cJSON_IsNumber(jsminute)) { printf("minute: %d\n", jsminute->valueint); minute = jsminute->valueint; } cJSON* jssecond = cJSON_GetObjectItem(root, "second"); - if (cJSON_IsNumber(jssecond)) { + if (jssecond && cJSON_IsNumber(jssecond)) { printf("second: %d\n", jssecond->valueint); second = jssecond->valueint; } cJSON* location = cJSON_GetObjectItem(root, "location"); - if (cJSON_IsString(location)) { + if (location && cJSON_IsString(location)) { printf("location: %s\n", location->valuestring); locations = location->valuestring; } @@ -1613,15 +1625,30 @@ static void jsonCheck_alarm(uint8_t *buf)//json 解析闹钟数据 ble_delet_all_AlarmInfo(); cJSON* alarms = cJSON_GetObjectItem(root, "alarms"); + if(alarms==NULL) + { + return; + } int alarmCount = cJSON_GetArraySize(alarms); for(int i=0;ivalueint; - int id=cJSON_GetObjectItem(data,"id")->valueint; cJSON* repeat=cJSON_GetObjectItem(data,"repeat"); + if(repeat==NULL) + return; + int array_size = cJSON_GetArraySize(repeat); for(int j=0;jvalueint; - int minute=cJSON_GetObjectItem(data,"minute")->valueint; - int enable=cJSON_GetObjectItem(data,"enable")->valueint; - ble_SetAlarmInfo(hour, minute,week,i,enable); + + cJSON* hour_data=cJSON_GetObjectItem(data,"hour"); + if(hour_data==NULL) + { + return; + } + int hour=hour_data->valueint; + cJSON* minute_data=cJSON_GetObjectItem(data,"minute"); + if(minute_data==NULL) + { + return; + } + int minute=minute_data ->valueint; + cJSON* enable_data=cJSON_GetObjectItem(data,"enable"); + if(enable_data==NULL) + { + return; + } + int enable=enable_data ->valueint; + + ble_SetAlarmInfo(hour, minute,week,i,enable); } cJSON_Delete(root); @@ -3345,89 +3389,6 @@ static void switchDialCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *total } } -//获取闹钟数据 -static void GetAlarmDataCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue) -{ - - uint32_t tmp = 1; - uint32_t data_len = 1; - uint16_t tmp_data = 1; - if(Check_CRC(data,len,crcvalue)) - { - - cJSON *dataJSON = cJSON_CreateObject(); - cJSON* data_arryJSON = cJSON_CreateArray(); - cJSON_AddNumberToObject(dataJSON,"code",1); - - for(uint8_t i =0;i<2;i++) - { - cJSON* itemJSON = cJSON_CreateObject(); - cJSON* arrayJSON = cJSON_CreateArray(); - for(uint8_t id = 0;id<7;id++) - { - cJSON_AddNumberToObject(arrayJSON,"id",id); - } - - cJSON_AddNumberToObject(itemJSON,"id",i); - cJSON_AddItemToObject(itemJSON,"repeat",arrayJSON); - cJSON_AddNumberToObject(itemJSON,"hour",2+20*i); - cJSON_AddNumberToObject(itemJSON,"minute",30+i*0); - cJSON_AddNumberToObject(itemJSON,"enable",1); - cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON); - } - cJSON_AddItemToObject(dataJSON,"alarms",data_arryJSON); - - char *json_format = cJSON_PrintUnformatted(dataJSON); - printf("%d\n",strlen(json_format)); - cJSON_Delete(dataJSON); - printf("phone %s",json_format); - char *new_json; - - uint32_t len = strlen(json_format); - uint8_t value[len+17+1]; - memset(value,0,len+17+1); - value[0] = 0x72; - value[1] = 0x01; - value[2] = 0x01; - data_len = len; - tmp_data = len; - memcpy(value+3,&tmp,4); - memcpy(value+7,&data_len,4); - memcpy(value+11,&tmp,4); - memcpy(value+15,&tmp_data,2); - if((data_len+18) > ble_nus_max_data_len && data_len > 0) - { - - }else{ - if(data_len != 0){ - memcpy(value+17,json_format,data_len); - cJSON_free(json_format); - } - - } - value[data_len+17] = Calculate_CRC(value,data_len+17); - sendBleData(value,data_len+17+1); - - }else - { - uint8_t value[19]; - memset(value,0,19); - value[0] = 0x72; - value[1] = 0x01; - value[2] = 0x01; - uint32_t tmp = 1; - uint16_t tmp_data = 1; - memcpy(value+3,&tmp,4); - memcpy(value+7,&tmp,4); - memcpy(value+11,&tmp,4); - memcpy(value+15,&tmp_data,2); - value[17] = 0;//校验失败 - value[18] = Calculate_CRC(value,18); - sendBleData(value,19); - } -} - - //关于本机内容 static void aboutDeviceCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue) @@ -3602,6 +3563,10 @@ void GetCurDataCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,ui for(uint8_t i = 0;i<7;i++) { cJSON* data_arryJSON = cJSON_CreateObject(); + if(data_arryJSON==NULL) + { + return; + } uint32_t value=0; if(i==0) { @@ -6131,79 +6096,6 @@ void readDevDataBle(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,u } - - -void getPhoneInfo_test(void) -{ - /* - cJSON *dataJSON = cJSON_CreateObject(); - cJSON* data_arryJSON = cJSON_CreateArray(); - cJSON_AddNumberToObject(dataJSON,"code",1); - - for(uint8_t i =0;i<3;i++) - { - cJSON* itemJSON = cJSON_CreateObject(); - cJSON* arrayJSON = cJSON_CreateArray(); - for(uint8_t id = 0;id<7;id++) - { - cJSON_AddNumberToObject(arrayJSON,"id",id); - } - - cJSON_AddNumberToObject(itemJSON,"id",i); - cJSON_AddItemToObject(itemJSON,"repeat",arrayJSON); - cJSON_AddNumberToObject(itemJSON,"hour",2+20*i); - cJSON_AddNumberToObject(itemJSON,"minute",30+i*0); - cJSON_AddNumberToObject(itemJSON,"enable",1); - cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON); - } - cJSON_AddItemToObject(dataJSON,"alarm",data_arryJSON); - - char *json_format = cJSON_PrintUnformatted(dataJSON); - printf("%d\n",strlen(json_format)); - cJSON_Delete(dataJSON); - printf("%s\n",json_format); - uint32_t data_len = strlen(json_format); - uint8_t value[data_len+18]; - uint32_t tmp = 1; - uint16_t tmp_data = 1; - value[0] = 0x72; - value[1] = 0x01; - value[2] = 0x01; - memcpy(value+3,&tmp,4); - memcpy(value+7,&tmp,4); - memcpy(value+11,&tmp,4); - memcpy(value+15,&tmp_data,2); - memcpy(value+17,(uint8_t *)json_format,data_len); - unsigned char lrc = Calculate_CRC(value,data_len+17); - printf("lrc:%d",lrc); - value[data_len+18] = lrc; - sendBleData(value,data_len+18); - */ - - // uint8_t value[128]; - // memset(value,0,128); - - // value[0] = 0x72; - // value[1] = 0x01; - // value[2] = 0x0f; - // char buf[128]; - // memset(buf,0,128); - // getSportData(&buf); - // uint32_t tmp = 1; - // uint32_t datalen = 1; - // uint16_t tmp_data = 1; - // datalen = strlen(buf); - // tmp_data = datalen; - // memcpy(value+3,&tmp,4); - // memcpy(value+7,&datalen,4); - // memcpy(value+11,&tmp,4); - // memcpy(value+15,&tmp_data,2); - // memcpy(&value[17],buf,strlen(buf)); - - // comfirmPaire(0); - -} - bool creatMessageDir(void)//创建消息文件夹 { struct stat info; @@ -6304,17 +6196,17 @@ uint8_t jscheck_ancs(uint8_t *data) memset(titleBuf,0,TITLE_BUF_LEN); memset(msgBuf,0,MSG_BUF_LEN); cJSON* uid = cJSON_GetObjectItem(root, "uid"); - if (cJSON_IsNumber(uid)) { + if (uid && cJSON_IsNumber(uid)) { printf("uid_t: %d\n", uid->valueint); uid_t = uid->valueint; } cJSON* appid = cJSON_GetObjectItem(root, "appid"); - if (cJSON_IsNumber(appid)) { + if (appid && cJSON_IsNumber(appid)) { printf("appid_t: %d\n", appid->valueint); appid_t = appid->valueint; } cJSON* title_c = cJSON_GetObjectItem(root, "title"); - if (cJSON_IsString(title_c)) { + if (title_c && cJSON_IsString(title_c)) { printf("titleBuf: %s\n", title_c->valuestring); int len = strlen(title_c->valuestring); if(len >= TITLE_BUF_LEN){ @@ -6327,7 +6219,7 @@ uint8_t jscheck_ancs(uint8_t *data) memcpy(titleBuf,(uint8_t *)title_c->valuestring,len); } cJSON* msg = cJSON_GetObjectItem(root, "msg"); - if (cJSON_IsString(msg)) { + if (msg && cJSON_IsString(msg)) { int len = strlen(msg->valuestring); if(len >= MSG_BUF_LEN-4){ len = uft8_check(msg->valuestring,MSG_BUF_LEN-4); @@ -6340,12 +6232,12 @@ uint8_t jscheck_ancs(uint8_t *data) printf("msgBuf: %s\n",msgBuf); } cJSON* time = cJSON_GetObjectItem(root, "time"); - if (cJSON_IsString(time)) { + if (time && cJSON_IsString(time)) { printf("time: %s\n", time->valuestring); // timeBuf = time->valueint; } cJSON* hasCode = cJSON_GetObjectItem(root, "hasCode"); - if (cJSON_IsNumber(hasCode)) { + if (hasCode && cJSON_IsNumber(hasCode)) { printf("hasCode_t: %d\n", hasCode->valueint); hasCode_t = hasCode->valueint; } @@ -7015,8 +6907,8 @@ errcode_t decode_single_dial_info(ble_read_data *buffer_handle) uapi_dev_runtime_set_dialname(filename); //存表盘id ble_dial_uid = dialinfo.dial_uid; - if(ble_dial_uid<=4) - ble_dial_uid++; + // if(ble_dial_uid<=4) + // ble_dial_uid++; 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 d0a0e2d57..f00e31764 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -326,7 +326,7 @@ void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_bl // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! svr_alipay_get_adv_start_state %d alipay_get_binding_status:%d\r\n",svr_alipay_get_adv_start_state(),alipay_get_binding_status()); // if(AdverFlag == true){ free_ble_data(); - if(uapi_dev_runtime_get_bt_powerstat()) + //if(uapi_dev_runtime_get_bt_powerstat()) { svr_ble_adv_start(); //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0); @@ -337,7 +337,7 @@ void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_bl devpair_state = 0;// WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "exit_alipay_gui !!! %d",exit_alipay_gui); - if(!exit_alipay_gui)//如果进入了绑定二维码界面 正在连接app 不需要停止广播数据 + //if(!exit_alipay_gui)//如果进入了绑定二维码界面 正在连接app 不需要停止广播数据 { svr_ble_adv_stop(); } @@ -366,11 +366,9 @@ void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_bl void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t status) { devpair_state = 1;//代表配对成功了 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_pair_result_cbt_cb!!! addr 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x status:0x%x\r\n",addr->addr[0],addr->addr[1], addr->addr[2],addr->addr[3],addr->addr[4],addr->addr[5],status); - //if(get_notify_switch()) if(status==ERRCODE_SUCC) { if(get_ble_pair()) @@ -379,15 +377,11 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s if(get_ctkd_flag() && uapi_dev_runtime_get_bt_powerstat()) { gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 20); - if(get_ble_pair()&&( cm_get_A2DP_switch() || cm_get_HFP_switch())) { int ret=gap_reconnect_media_device(&phone_addr); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_reconnect_media_device!!! %X\r\n",ret); - //uapi_a2dp_snk_connect(); - - - }else{ + }else{ if(get_br_is_pair()) { @@ -400,10 +394,7 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s int ret=gap_reconnect_media_device(&bdaddr); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_reconnect_media_device!!! %X\r\n",ret); } - // if(cm_get_A2DP_switch() || cm_get_HFP_switch()) - // uapi_a2dp_snk_connect(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_reconnect_media_device!!! \r\n"); - + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_reconnect_media_device!!! \r\n"); } else { @@ -411,16 +402,10 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s uapi_a2dp_snk_connect(); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_a2dp_snk_connect!!! \r\n"); } - } - int ret = gap_connect_remote_device(addr); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_connect_remote_device!!! %X\r\n",ret); - - - } - //uapi_a2dp_snk_connect(); - + } } hand_watch_first_time_Paired(); svr_ble_adv_stop(); @@ -434,11 +419,6 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s errcode_t ret = gap_ble_connect_param_update(&conn_param); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble update connection parameters ret: %u\n", ret); } - - - //if(!uapi_a2dp_snk_get_device_connect_state() || !uapi_hfp_connect_state()) - - } //添加ota特征值 @@ -776,64 +756,8 @@ void alipay_add_chart_decr_cb(uint8_t server_id,uint16_t srv_handle) if (ret != ERRCODE_SUCC) { // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret); } - // errcode_t ret = 0; - // // uint16_t id = ALIPAYY_CHARACTERISTIC_ID; - // gatts_add_chara_info_t character; - // uint16_t value = 0; - // bt_uuid_t alipay_service_uuid = {0}; - // bts_data_to_uuid_len2(0x4a02, &alipay_service_uuid); - // memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t)); - // // character.chara_uuid.uuid_len = sizeof(id); - // // memcpy_s(character.chara_uuid.uuid, sizeof (character.chara_uuid.uuid), (char *)&id, sizeof(id)); - // character.chara_uuid = alipay_service_uuid; - // character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE; - // character.properties = - // GATT_CHARACTER_PROPERTY_BIT_READ | GATT_CHARACTER_PROPERTY_BIT_WRITE | GATT_CHARACTER_PROPERTY_BIT_NOTIFY; - // character.value_len = 256; - // character.value = g_alipay_character_buf; - - // 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); - // } - - // uint8_t bas_ccc_val[] = { - // 0x01, - // 0x00 - // }; - // bt_uuid_t ccc_uuid = { 0 }; - // bts_data_to_uuid_len2(0x2902, &ccc_uuid); - // // bts_data_to_uuid_len2(0x2902, &ccc_uuid); - // gatts_add_desc_info_t descriptor; - // descriptor.desc_uuid = ccc_uuid; - // descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE; - // descriptor.value_len = (uint16_t)sizeof(bas_ccc_val); - // descriptor.value = bas_ccc_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); - // } - // bd_addr_t addr_info; - // gatts_add_desc_info_t descriptor_ap; - // gap_ble_get_local_addr(&addr_info); - // bts_data_to_uuid_len2(0x4b02, &ccc_uuid); - // descriptor_ap.desc_uuid = ccc_uuid; - // descriptor_ap.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE; - // descriptor_ap.value_len = BD_ADDR_LEN; - // uint8_t ble_data_mac_switch[BD_ADDR_LEN] = {0}; - // int k = BD_ADDR_LEN; - // for (int i = 0; i < BD_ADDR_LEN; i++) { - // ble_data_mac_switch[--k] = addr_info.addr[i]; - // } - // descriptor_ap.value = ble_data_mac_switch; - // ret = gatts_add_descriptor(server_id, srv_handle, &descriptor_ap); - // if (ret != ERRCODE_SUCC) { - // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor second fail, ret:%u.\r\n", ret); - // } - + } -} //这个回调函数添加新的服务UUID static void svr_ble_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle, errcode_t status) @@ -1202,24 +1126,8 @@ static void svr_ble_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, ga WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "svr_ble_bt_gatts_req_read_cb ret:is_long:%d",read_cb_para->is_long); //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_bt_gatts_req_read_cb ret:is_long:%d 2ae2 %d read_cb_para->handle :%d",read_cb_para->is_long,data2ae2Cmd,read_cb_para->handle); - if(read_cb_para->handle!=data2ae2Cmd) - return; - - // if(flag==0) - // ble_ancs_client_cmd_setup_and_subscribe(g_ble_conn_id); - // else if(flag==1) - // a2dp_snk_connect(&disconect_addr);//ble_ancs_client_subscribe_notify(g_ble_conn_id,1); - // else if(flag==2) - // ble_ancs_client_subscribe_data(g_ble_conn_id,1); - // else if (flag==3) - // ble_ancs_client_subscribe_notify(g_ble_conn_id,0); - - // flag++; - // if(flag==4) - // { - // flag=1; - // } - + if(read_cb_para->handle==data2ae2Cmd) + { static uint8_t battery_point_val[20] = {0}; // 获取电池电压值 float voltage = 0.0F; @@ -1263,6 +1171,7 @@ static void svr_ble_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, ga //read_cb_para->need_rsp=0; gatts_notify_indicate(server_id,conn_id,&gatts_ntf_ind); } +} static uint8_t falg = 0; @@ -1435,21 +1344,7 @@ void ble_unregist_server(void) void svr_ble_bluetooth_init(void) { memset(&phone_addr,0,sizeof(bd_addr_t)); - // bool ret = enable_bt_stack(); - // // bool ret = enable_ble(); - // if (ret != ERRCODE_SUCC) { - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_bluetooth_init enable_bt_stack ret:%u.\r\n", ret); - // } - - // if (g_custom_ble_init_flag) - // { - // return ; - // } - - //清除上次内容r - - - // osDelay(100); + srv_ble_server_register_gap_ble_callbacks(); srv_ble_server_register_gatt_callbacks(); @@ -1470,8 +1365,6 @@ void svr_ble_bluetooth_init(void) #endif gattc_reg_id(); - - g_custom_ble_init_flag = true; return; } @@ -1502,13 +1395,8 @@ void uapi_ble_disconnect_device() //开启蓝牙 void custom_ble_service_start(void) { - AdverFlag = true; svr_ble_adv_start_param(); - gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0); - // gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, 0); - //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0); - } void custom_ble_service_start_(uint8_t data) -- 2.17.1