From 6aae7ec18cc0289ba9c44f24469a29d73dd318f3 Mon Sep 17 00:00:00 2001 From: SnickerSun Date: Mon, 17 Jun 2024 20:34:25 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=AD=A3=20BT=20Scan=20=E5=8F=82?= =?utf8?q?=E6=95=B0,=E8=A7=A3=E5=86=B3=E4=BA=A7=E6=B5=8B=E6=89=AB=E6=8F=8F?= =?utf8?q?=E4=B8=8D=E5=87=BA=E8=AE=BE=E5=A4=87=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/bluetooth/src/BluetoothModel.cpp | 18 ++- .../nativeui/producttest/src/testbt.cpp | 122 ++++-------------- .../ble_service/bleservice/bleService.c | 66 +++++++++- .../ble_service/bleservice/bleService.h | 4 + .../at_service/bt/bt_manager_at_process.c | 2 +- .../bt/host/bt/bts/bt_sample/bt_srv_shell.c | 3 + 6 files changed, 106 insertions(+), 109 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 7e6bac81d..a28693f58 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp @@ -527,11 +527,11 @@ void BluetoothModel::BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr) unsigned char nameLen = BD_NAME_LEN; bool getNameRet = gap_get_device_name(&bdAddr, caseInfo.deviceName, &nameLen); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback getNameRet(bool): %d nameLen: %d name:%s", + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback getNameRet(bool): %d nameLen: %d name:%s", getNameRet, nameLen, caseInfo.deviceName); if (nameLen == 0) { // 过滤未扫描到名字的设备 - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "nameLen == 0 return"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nameLen == 0 return"); return; } // 去重操作 @@ -540,7 +540,7 @@ void BluetoothModel::BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr) BluetoothModel::GetInstance()->AddCase(caseInfo); // 增加扫描设备信息 } bool ret = gap_read_remote_rssi_value(&bdAddr); // 获取rssi - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_read_remote_rssi_value ret = %d", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_read_remote_rssi_value ret = %d", ret); BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance(); if (bluetoothEarPhoneView == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr"); @@ -561,7 +561,7 @@ void BluetoothModel::BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr) } // 刷新 bluetoothEarListView->GetScanUIList()->RefreshList(); } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryResultCallback end"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryResultCallback end"); } void BtGapPairStatusChangedCallback(const bd_addr_t *bdAddr, int status) @@ -1117,6 +1117,16 @@ void BtA2dpInit(void) /* a2dp sink */ a2dp_snk_register_callbacks(&g_a2dp_snk_callbacks); } + +void BtA2dpDeInit(void) +{ + + + + a2dp_src_deregister_callbacks(&g_a2dpSrcCallbacks); + a2dp_snk_deregister_callbacks(&g_a2dp_snk_callbacks); + +} void BtInitCallBacks(void) { g_btGapCallBacks.discovery_result_callback = BtGapDiscoveryResultCallback; diff --git a/code/sdk/application/wearable/fd230app/nativeui/producttest/src/testbt.cpp b/code/sdk/application/wearable/fd230app/nativeui/producttest/src/testbt.cpp index 9a9912eb1..cc3543720 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/producttest/src/testbt.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/producttest/src/testbt.cpp @@ -10,10 +10,10 @@ #include "custom_runtime.h" #include "bts_br_gap.h" #include "bts_le_gap.h" - +#include "bleService.h" namespace OHOS { - + // #define BLE_scan static testBTView *g_pSystemAboutTheWatchView{nullptr}; testBTView::testBTView() @@ -148,54 +148,31 @@ namespace OHOS bool reT_gap; if(discovery_falg==false) { - // reT_gap = gap_br_start_discovery(); - #if BLE_scan - reT_gap=gap_ble_start_scan(); - #else - reT_gap = gap_br_start_discovery(); - #endif - #if BLE_scan - if(reT_gap==ERRCODE_SUCC) - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_start_scan %d !",reT_gap); - else - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_start_scan fail %d !",reT_gap); + #ifdef BLE_scan + srv_ble_start_scan(); #else - if(reT_gap==true) - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_br_start_scan %d !",reT_gap); - else - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_br_start_scan fail %d !",reT_gap); + uint32_t device_classes = DEVICE_MAJOR_CLASS_AUDIO_VIDEO|DEVICE_MAJOR_CLASS_PHONE|SERVICE_AUDIO; + // errcode_t err = gap_br_set_inquiry_paramters(device_classes, 5); + errcode_t err = gap_br_set_inquiry_paramters(0,20); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap_br_set_inquiry_paramters errcode_t %d!\n",err); + bool ret = gap_br_start_discovery(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap_br_start_discovery bool %d!\n",ret); #endif - - + discovery_falg=true; } else { - //reT_gap = gap_br_cancel_discovery(); - #if BLE_scan - reT_gap=gap_ble_stop_scan(); + #ifdef BLE_scan + srv_ble_stop_scan(); #else - reT_gap = gap_br_cancel_discovery(); - #endif - - - #if BLE_scan - if(reT_gap==ERRCODE_SUCC) - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan %d !",reT_gap); - else - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan fail %d !",reT_gap); - #else - if(reT_gap==true) - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_br_cancel_discovery %d !",reT_gap); - else - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_br_cancel_discovery fail %d !",reT_gap); - - - #endif - - discovery_falg=false; + bool ret = gap_br_cancel_discovery(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap_br_cancel_discovery bool %d!\n",ret); + + #endif + discovery_falg=false; } } @@ -267,45 +244,9 @@ namespace OHOS else { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "no bt_discovering %d",number); - } - - unsigned int connedDevicesNum = 0; - - bool ret = gap_get_paired_devices_num(&connedDevicesNum); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Setup GetPariedDevicesNum ret = %d, num = %d", ret, connedDevicesNum); - - if (connedDevicesNum != 0) - { - gap_paired_device_info_t *devInfo = (gap_paired_device_info_t *)malloc(sizeof(gap_paired_device_info_t) * connedDevicesNum); - if (devInfo == NULL) - { - return; - } - - ret = gap_get_paired_devices_list(devInfo, (int *)&connedDevicesNum); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RemovePair gap_get_paired_devices_list ret = %d", ret); - - - for (int i = 0; i < static_cast(connedDevicesNum); ++i) - { - - memcpy_s(device_name_buf,64,devInfo[i].device_name,strlen((const char*)devInfo[i].device_name)); - testBTView:: GetInstance()->set_BR_connect(device_name_buf); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RemovePair gap_get_paired_devices_list ret = %s", devInfo[i].device_name); - } - free(devInfo); - } - - - } - - static void sample_gap_ble_set_scan_param_cbk(errcode_t status) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sample_gap_ble_set_scan_param_cbk%d", status); + } } - - - + bool testBTView::testBTScrollViewcrollViewinit(void) { @@ -345,20 +286,6 @@ namespace OHOS memcpy(bd_addr.addr,addr,6); - //enable_bt_stack(); - - static gap_call_backs_t cb = - { - .discovery_state_changed_callback=sample_gap_discovery_state_changed_callback, - .discovery_result_callback= sample_gap_discovery_result_callback, - }; - //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_GENERAL_DISCOVERABLE,60); - // gap_ble_register_callbacks() - - //int ret = gap_ble_register_callbacks(&cb); - - int ret= gap_register_callbacks(&cb); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, ":: %x !",ret); // gap_ble_scan_params_t scan_param = { 0 }; // scan_param.scan_interval = 1; // scan_param.scan_window = 5; @@ -367,13 +294,12 @@ namespace OHOS // scan_param.scan_filter_policy = GAP_BLE_ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY; // ret = gap_ble_set_scan_parameters(&scan_param); //bts_sample_log("gap ble set scan parameters ret(errcode_t): %x\n", ret); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, ":: %x !",ret); + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, ":: %x !",ret); // bts_sample_log("gap reg cbk ret %x\n", ret); + - gap_br_set_inquiry_paramters(1, 5); - - //清楚配对 - gap_remove_all_pairs(); + // //清楚配对 + // gap_remove_all_pairs(); ButtonConfig_ext_t buttonconfig; buttonconfig.x = 100; 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 160e56aa0..aef644db4 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -1020,13 +1020,60 @@ static void svr_ble_mtu_exchange(uint8_t server_id, uint16_t conn_id, uint16_t m static void svr_gap_ble_connect_param_update_callback(uint16_t conn_id, errcode_t status,const gap_ble_conn_param_update_t *param) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_connect_param_update_callback %d %d %d\r\n",param->interval,param->latency,param->timeout); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"connect param changed conn_id:%u status:%u", conn_id, status); + if (param != NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP," interval:%u latency:%u timeout:%u\r\n", param->interval, param->latency, param->timeout); + } } static void svr_gap_ble_auth_complete_callback(uint16_t conn_id, const bd_addr_t *addr, errcode_t status,ble_auth_info_evt_t* evt) { sendParieSuccess(1,&phone_addr); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_gap_ble_auth_complete_callback %x %x %x %x %x %x\r\n",addr->addr[0],addr->addr[1],addr->addr[2],addr->addr[3],addr->addr[4],addr->addr[5]); } + +static void sample_gap_ble_set_scan_param_cbk(errcode_t status) +{ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetScanParameterCallback status: %u\n", status); +} + +static void sample_gap_ble_scan_result_cbk(const gap_scan_result_data_t *scan_result_data) +{ + if (scan_result_data == NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scan_result_data is null \n"); + return; + } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr_type: %u addr:0x%02x:**:**:**:%02x:%02x rssi %u.\r\n", scan_result_data->addr.type, + scan_result_data->addr.addr[0], scan_result_data->addr.addr[4], + scan_result_data->addr.addr[5], scan_result_data->rssi ); +} +void srv_ble_start_scan(void) +{ + gap_ble_scan_params_t scan_param = { 0 }; + scan_param.scan_interval = 0x0050; + scan_param.scan_window = 0x0030; + scan_param.scan_type = GAP_BLE_SCAN_TYPE_ACTIVE; + scan_param.scan_phy = GAP_BLE_PHY_NO_PACKET; + scan_param.scan_filter_policy = GAP_BLE_ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY; + errcode_t ret = gap_ble_set_scan_parameters(&scan_param); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble set scan parameters ret(errcode_t): %x\n", ret); + + errcode_t reT_gap=gap_ble_start_scan(); + if(reT_gap==ERRCODE_SUCC) + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_start_scan %d !",reT_gap); + else + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_start_scan fail %d !",reT_gap); + +} + +void srv_ble_stop_scan(void) +{ + errcode_t reT_gap=gap_ble_stop_scan(); + if(reT_gap==ERRCODE_SUCC) + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan %d !",reT_gap); + else + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan fail %d !",reT_gap); +} + void svr_ble_btcallback_reg(void)//ble基础通讯服务注册回调函数 { @@ -1038,14 +1085,21 @@ void svr_ble_btcallback_reg(void)//ble基础通讯服务注册回调函数 errcode_t ret = gap_ble_set_sec_param(&sec_params);//设置配对参数 发起配对弹窗 - - g_ble_gapble_cbs.conn_state_change_cb = svr_ble_connstate_change_cb; + g_ble_gapble_cbs.ble_enable_cb = NULL; + g_ble_gapble_cbs.ble_disable_cb = NULL; + g_ble_gapble_cbs.set_adv_data_cb = svr_ble_set_adv_data_cb; + g_ble_gapble_cbs.set_adv_param_cb = NULL; + g_ble_gapble_cbs.set_scan_param_cb = sample_gap_ble_set_scan_param_cbk; g_ble_gapble_cbs.start_adv_cb = svr_ble_adv_start_cb; g_ble_gapble_cbs.stop_adv_cb = svr_ble_adv_stop_cb; - g_ble_gapble_cbs.set_adv_data_cb = svr_ble_set_adv_data_cb; + g_ble_gapble_cbs.scan_result_cb = sample_gap_ble_scan_result_cbk; + g_ble_gapble_cbs.conn_state_change_cb = svr_ble_connstate_change_cb; g_ble_gapble_cbs.pair_result_cb = svr_pair_result_cbt_cb; - g_ble_gapble_cbs.conn_param_update_cb = svr_gap_ble_connect_param_update_callback; + g_ble_gapble_cbs.read_rssi_cb = NULL; + g_ble_gapble_cbs.terminate_adv_cb = NULL; g_ble_gapble_cbs.auth_complete_cb = svr_gap_ble_auth_complete_callback; + g_ble_gapble_cbs.conn_param_update_cb = svr_gap_ble_connect_param_update_callback; + gap_ble_register_callbacks(&g_ble_gapble_cbs); srv_ble_server_register_gatt_callbacks(); @@ -1132,7 +1186,7 @@ void svr_bluetooth_init(void) bool ret = enable_bt_stack(); // bool ret = enable_ble(); if (ret != ERRCODE_SUCC) { - // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "svr_bluetooth_init enable_bt_stack ret:%u.\r\n", ret); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_bluetooth_init enable_bt_stack ret:%u.\r\n", ret); } // osDelay(100); svr_ble_btcallback_reg(); 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 8ae66ecee..d1ce8ca2a 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.h @@ -39,6 +39,10 @@ void svr_ble_adv_start(void); void svr_ble_adv_stop(void); void ble_avd_mode_change(uint8_t mode); // + +void srv_ble_start_scan(void); +void srv_ble_stop_scan(void); + void blesrv_service_recv_msg_handler(uint16_t srv_handle, uint8_t * msg_data, uint32_t msg_len); errcode_t uapi_blesrv_service_init(void); #ifdef __cplusplus diff --git a/code/sdk/application/wstp/at_service/bt/bt_manager_at_process.c b/code/sdk/application/wstp/at_service/bt/bt_manager_at_process.c index 4071d4a49..1f53e4236 100755 --- a/code/sdk/application/wstp/at_service/bt/bt_manager_at_process.c +++ b/code/sdk/application/wstp/at_service/bt/bt_manager_at_process.c @@ -1099,7 +1099,7 @@ uint32_t btsrv_wstp_at_get_local_addr(const bt_manager_commu_inter_info_t *at_pa char str[64] = "^PHYNUM:MACBT,"; strcat_s(str, strlen(str) + strlen((char*)addr), (char*)addr); wstp_print("%s\r\n", &str[0]); - wstp_print("local_addr : ******%02x%02x%02x\n", addr[3], addr[4], addr[5]); + wstp_print("local_addr : %02x*****%02x%02x%02x\n",addr[5], addr[2], addr[1], addr[0]); return ERRCODE_SUCC; } else { wstp_print("bluetooth_get_local_addr err\r\n"); diff --git a/code/sdk/protocol/bt/host/bt/bts/bt_sample/bt_srv_shell.c b/code/sdk/protocol/bt/host/bt/bts/bt_sample/bt_srv_shell.c index 745461c3f..57c54eb95 100755 --- a/code/sdk/protocol/bt/host/bt/bts/bt_sample/bt_srv_shell.c +++ b/code/sdk/protocol/bt/host/bt/bts/bt_sample/bt_srv_shell.c @@ -121,6 +121,9 @@ static void ble_service_sample_cmd(int32_t module_id, int32_t cmd_id, char **par /* 蓝牙服务测试命令总入口 */ int bt_service_sample_cmd(int argc, char *argv[]) { + //临时开启日志 + // g_bth_log_type_level = 0x100 | 0x200 | 0x400 | 0x800 |0x10 | 0x20 | 0x40 | 0x80 ; + bts_sample_log("bt_service_sample_cmd: "); if (argc < BT_SRV_SAMPLE_CMD_ARGC_MIN || argv == NULL) { goto help; -- 2.17.1