From f429adc16dec79d14560dbe91cb6485c2832be4e Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Sun, 29 Sep 2024 11:01:50 +0800 Subject: [PATCH] =?utf8?q?ble=E6=9C=8D=E5=8A=A1=E4=BF=AE=E6=94=B9=E9=80=82?= =?utf8?q?=E9=85=8D=E6=94=AF=E4=BB=98=E5=AE=9D=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../ble_service/bleservice/bleService.c | 112 ++++++++++++++---- 1 file changed, 89 insertions(+), 23 deletions(-) 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 aada71f18..109e5c45b 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -164,7 +164,6 @@ void br_adv_start(uint8_t sec) if(!get_br_is_pair()) { - //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, sec); } } @@ -319,41 +318,71 @@ void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_bl "svr_ble_connstate_change_cb gap_ble_conn_state_t conn_state:%d pair_state:%d disc_reason:%d\r\n", conn_state,pair_state,disc_reason); - - g_ble_conn_id = conn_id; + + if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected - Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! \r\n"); - // 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){ + bd_addr_t addr_; + get_phone_addr(&addr_); + + if((addr_.addr[0]==addr->addr[0] && + addr_.addr[1]==addr->addr[1] && + addr_.addr[2]==addr->addr[2] && + addr_.addr[3]==addr->addr[3] && + addr_.addr[4]==addr->addr[4] && + addr_.addr[5]==addr->addr[5] )) + { + Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开 free_ble_data(); - //if(uapi_dev_runtime_get_bt_powerstat()) { svr_ble_adv_start(); - //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0); + } - ble_disconnect_ok(); - // } + ble_disconnect_ok(); + } + else + { + //地址对不上就仅是支付宝断连,无需处理 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"支付宝绑定断连"); + } + // g_ble_conn_id = conn_id; + } else { devpair_state = 0;// WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "exit_alipay_gui !!! %d",exit_alipay_gui); - //if(!exit_alipay_gui)//如果进入了绑定二维码界面 正在连接app 不需要停止广播数据 + { - svr_ble_adv_stop(); + int ret =svr_ble_adv_stop(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"%x",ret); } - set_phone_info(addr); - - - ble_connect_ok(); - //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0); + + + if(Bleconnect==GAP_BLE_STATE_CONNECTED) + { + bd_addr_t addr_; + get_phone_addr(&addr_); + if(!(addr_.addr[0]==addr->addr[0] && + addr_.addr[1]==addr->addr[1] && + addr_.addr[2]==addr->addr[2] && + addr_.addr[3]==addr->addr[3] && + addr_.addr[4]==addr->addr[4] && + addr_.addr[5]==addr->addr[5] )) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"支付宝连接"); + } + } + else + { + g_ble_conn_id = conn_id; + set_phone_info(addr); + } - //int ret= a2dp_snk_connect(addr); + ble_connect_ok();; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x \n", addr->addr[3], addr->addr[2], addr->addr[1], addr->addr[0]); /* 3 2 1 0 idx */ - //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"state(int): %x\n", ret); - Bleconnect = GAP_BLE_STATE_CONNECTED;//蓝牙已连接 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_CONNECTED!!! 0x%x\r\n",pair_state); @@ -373,7 +402,7 @@ void svr_pair_result_cbt_cb(uint16_t conn_id, const bd_addr_t *addr, errcode_t s if(status==ERRCODE_SUCC) { if(get_ble_pair()) - ble_ancs_client_cmd_setup_and_subscribe(g_ble_conn_id); + ble_ancs_client_cmd_setup_and_subscribe(conn_id); if(get_ctkd_flag() && uapi_dev_runtime_get_bt_powerstat()) { @@ -1129,6 +1158,8 @@ static void svr_ble_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, ga //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) { + g_ble_conn_id=conn_id; + static uint8_t battery_point_val[20] = {0}; // 获取电池电压值 float voltage = 0.0F; @@ -1177,6 +1208,27 @@ static void svr_ble_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, ga static uint8_t falg = 0; + +static bool Is_App_ble_handle(uint16_t handle) +{ + if(handle==data2ae3Cmd || + handle==data2ae4Cmd|| + handle==data2ae5Cmd|| + handle==data2ae2Cmd|| + handle==data2ae1Cmd|| + handle==data2ae0Cmd|| + handle==data2ae6Cmd + ) + { + + return true; + } + else + { + return false; + } +} + static void svr_ble_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, gatts_req_write_cb_t *write_cb_para, errcode_t status) { @@ -1192,14 +1244,28 @@ static void svr_ble_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, g fwrite("x",1,1,fp); fclose(fp); } - + } + if(Is_App_ble_handle(write_cb_para->handle==data2ae0Cmd)) + { + g_ble_conn_id=conn_id; } blesrv_service_recv_msg_handler(write_cb_para->handle,write_cb_para->value,write_cb_para->length); } + +void ble_test_ANCS(void) +{ + ble_ancs_client_cmd_setup_and_subscribe(g_ble_conn_id); +} + + +void ble_test_ANCS_notify(uint8_t type) +{ + ble_ancs_client_subscribe_notify(g_ble_conn_id,type); +} + static void svr_ble_mtu_exchange(uint8_t server_id, uint16_t conn_id, uint16_t mtu_size, errcode_t status) { ble_nus_max_data_len = mtu_size-3; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_mtu_exchange %d %d %d\r\n",server_id,conn_id,mtu_size); } /******************* gap_ble ************************************/ -- 2.17.1