修正 BT Scan 参数,解决产测扫描不出设备的问题 306/1 306/head 307/target/1
authorSnickerSun <snickersun@163.com>
Mon, 17 Jun 2024 12:34:25 +0000 (20:34 +0800)
committerSnickerSun <snickersun@163.com>
Mon, 17 Jun 2024 12:35:18 +0000 (20:35 +0800)
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/fd230app/nativeui/producttest/src/testbt.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.h
code/sdk/application/wstp/at_service/bt/bt_manager_at_process.c
code/sdk/protocol/bt/host/bt/bts/bt_sample/bt_srv_shell.c

index 7e6bac8..a28693f 100644 (file)
@@ -527,11 +527,11 @@ void BluetoothModel::BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr)
 \r
     unsigned char nameLen = BD_NAME_LEN;\r
     bool getNameRet = gap_get_device_name(&bdAddr, caseInfo.deviceName, &nameLen);\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback getNameRet(bool): %d nameLen: %d name:%s",\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback getNameRet(bool): %d nameLen: %d name:%s",\r
                   getNameRet, nameLen, caseInfo.deviceName);\r
 \r
     if (nameLen == 0) { // 过滤未扫描到名字的设备\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "nameLen == 0 return");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nameLen == 0 return");\r
         return;\r
     }\r
     // 去重操作\r
@@ -540,7 +540,7 @@ void BluetoothModel::BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr)
         BluetoothModel::GetInstance()->AddCase(caseInfo); // 增加扫描设备信息\r
     }\r
     bool ret = gap_read_remote_rssi_value(&bdAddr); // 获取rssi\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_read_remote_rssi_value ret = %d", ret);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_read_remote_rssi_value ret = %d", ret);\r
     BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
     if (bluetoothEarPhoneView == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
@@ -561,7 +561,7 @@ void BluetoothModel::BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr)
         } // 刷新\r
         bluetoothEarListView->GetScanUIList()->RefreshList();\r
     }\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryResultCallback end");\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryResultCallback end");\r
 }\r
 \r
 void BtGapPairStatusChangedCallback(const bd_addr_t *bdAddr, int status)\r
@@ -1117,6 +1117,16 @@ void BtA2dpInit(void)
     /* a2dp sink */\r
     a2dp_snk_register_callbacks(&g_a2dp_snk_callbacks);\r
 }\r
+\r
+void BtA2dpDeInit(void)\r
+{\r
+\r
+    \r
+    \r
+    a2dp_src_deregister_callbacks(&g_a2dpSrcCallbacks);\r
+    a2dp_snk_deregister_callbacks(&g_a2dp_snk_callbacks);\r
+\r
+}\r
 void BtInitCallBacks(void)\r
 {\r
     g_btGapCallBacks.discovery_result_callback = BtGapDiscoveryResultCallback;\r
index 9a9912e..cc35437 100644 (file)
 #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<int>(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;
index 160e56a..aef644d 100644 (file)
@@ -1020,13 +1020,60 @@ static void svr_ble_mtu_exchange(uint8_t server_id, uint16_t conn_id, uint16_t m
 \r
 static void svr_gap_ble_connect_param_update_callback(uint16_t conn_id, errcode_t status,const gap_ble_conn_param_update_t *param)\r
 {\r
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_connect_param_update_callback %d %d %d\r\n",param->interval,param->latency,param->timeout);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"connect param changed conn_id:%u status:%u", conn_id, status);\r
+    if (param != NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP," interval:%u latency:%u timeout:%u\r\n", param->interval, param->latency, param->timeout);\r
+    }\r
 }\r
 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)\r
 {\r
     sendParieSuccess(1,&phone_addr);\r
     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]);\r
 }\r
+\r
+static void sample_gap_ble_set_scan_param_cbk(errcode_t status)\r
+{\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetScanParameterCallback status: %u\n", status);\r
+}\r
+\r
+static void sample_gap_ble_scan_result_cbk(const gap_scan_result_data_t *scan_result_data)\r
+{\r
+    if (scan_result_data == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scan_result_data is null \n");\r
+        return;\r
+    }\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr_type: %u addr:0x%02x:**:**:**:%02x:%02x  rssi %u.\r\n", scan_result_data->addr.type,\r
+        scan_result_data->addr.addr[0], scan_result_data->addr.addr[4],\r
+        scan_result_data->addr.addr[5], scan_result_data->rssi );\r
+}\r
+void srv_ble_start_scan(void)\r
+{\r
+    gap_ble_scan_params_t scan_param = { 0 };\r
+    scan_param.scan_interval = 0x0050;\r
+    scan_param.scan_window = 0x0030;\r
+    scan_param.scan_type = GAP_BLE_SCAN_TYPE_ACTIVE;\r
+    scan_param.scan_phy = GAP_BLE_PHY_NO_PACKET;\r
+    scan_param.scan_filter_policy = GAP_BLE_ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY;\r
+    errcode_t ret = gap_ble_set_scan_parameters(&scan_param);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"gap ble set scan parameters ret(errcode_t): %x\n", ret);\r
+\r
+    errcode_t reT_gap=gap_ble_start_scan();\r
+    if(reT_gap==ERRCODE_SUCC)\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_start_scan %d !",reT_gap);\r
+    else\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_start_scan fail %d !",reT_gap);\r
+    \r
+}\r
+\r
+void srv_ble_stop_scan(void)\r
+{\r
+    errcode_t reT_gap=gap_ble_stop_scan();\r
+    if(reT_gap==ERRCODE_SUCC)\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan %d !",reT_gap);\r
+    else\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan fail %d !",reT_gap);\r
+}\r
+\r
 void svr_ble_btcallback_reg(void)//ble基础通讯服务注册回调函数\r
 {\r
     \r
@@ -1038,14 +1085,21 @@ void svr_ble_btcallback_reg(void)//ble基础通讯服务注册回调函数
     errcode_t ret = gap_ble_set_sec_param(&sec_params);//设置配对参数 发起配对弹窗\r
 \r
 \r
-\r
-    g_ble_gapble_cbs.conn_state_change_cb = svr_ble_connstate_change_cb;\r
+    g_ble_gapble_cbs.ble_enable_cb = NULL;\r
+    g_ble_gapble_cbs.ble_disable_cb = NULL;\r
+    g_ble_gapble_cbs.set_adv_data_cb = svr_ble_set_adv_data_cb;\r
+    g_ble_gapble_cbs.set_adv_param_cb = NULL;\r
+    g_ble_gapble_cbs.set_scan_param_cb = sample_gap_ble_set_scan_param_cbk;\r
     g_ble_gapble_cbs.start_adv_cb = svr_ble_adv_start_cb;\r
     g_ble_gapble_cbs.stop_adv_cb = svr_ble_adv_stop_cb;\r
-    g_ble_gapble_cbs.set_adv_data_cb = svr_ble_set_adv_data_cb;\r
+    g_ble_gapble_cbs.scan_result_cb = sample_gap_ble_scan_result_cbk;\r
+    g_ble_gapble_cbs.conn_state_change_cb = svr_ble_connstate_change_cb;\r
     g_ble_gapble_cbs.pair_result_cb = svr_pair_result_cbt_cb;\r
-    g_ble_gapble_cbs.conn_param_update_cb = svr_gap_ble_connect_param_update_callback;\r
+    g_ble_gapble_cbs.read_rssi_cb = NULL;\r
+    g_ble_gapble_cbs.terminate_adv_cb = NULL;\r
     g_ble_gapble_cbs.auth_complete_cb = svr_gap_ble_auth_complete_callback;\r
+    g_ble_gapble_cbs.conn_param_update_cb = svr_gap_ble_connect_param_update_callback;\r
+   \r
     gap_ble_register_callbacks(&g_ble_gapble_cbs);\r
 \r
     srv_ble_server_register_gatt_callbacks();\r
@@ -1132,7 +1186,7 @@ void svr_bluetooth_init(void)
     bool ret = enable_bt_stack();\r
     // bool ret = enable_ble();\r
     if (ret != ERRCODE_SUCC) {\r
-        // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "svr_bluetooth_init enable_bt_stack ret:%u.\r\n", ret);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_bluetooth_init enable_bt_stack ret:%u.\r\n", ret);\r
     }\r
     // osDelay(100);\r
     svr_ble_btcallback_reg();\r
index 8ae66ec..d1ce8ca 100644 (file)
@@ -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
index 4071d4a..1f53e42 100755 (executable)
@@ -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,";\r
         strcat_s(str, strlen(str) + strlen((char*)addr), (char*)addr);\r
         wstp_print("%s\r\n", &str[0]);\r
-        wstp_print("local_addr : ******%02x%02x%02x\n", addr[3], addr[4], addr[5]);\r
+        wstp_print("local_addr : %02x*****%02x%02x%02x\n",addr[5], addr[2], addr[1], addr[0]);\r
         return ERRCODE_SUCC;\r
     } else {\r
         wstp_print("bluetooth_get_local_addr err\r\n");\r
index 745461c..57c54eb 100755 (executable)
@@ -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;