适配一键双联功能 454/1 454/head 458/target/1
authorSnickerSun <snickersun@163.com>
Thu, 4 Jul 2024 12:12:43 +0000 (20:12 +0800)
committerSnickerSun <snickersun@163.com>
Thu, 4 Jul 2024 12:12:43 +0000 (20:12 +0800)
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c

index 94b6b4d..5d0ac7a 100644 (file)
@@ -110,7 +110,7 @@ void InitBluetoothInfo(void)
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt SetLocalName %s ", watchName);\r
         }else{\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt SetLocalName %s ret = 0x%x", watchName,ret);\r
-        }        \r
+        }\r
     }    \r
 }\r
 \r
@@ -121,7 +121,6 @@ static int bluetooth_init_all(void)
     if (g_bluetooth_initialled == 1) return 1;\r
 #ifndef SUPPORT_AUTO_OTA\r
     errcode_t ret;\r
-\r
     // 设置自动回连,ios一键双连依赖此配置\r
     bts_feature_t bts_feature = { 0 };\r
     bts_feature.bt_auto_reconnect_closed = 0;\r
@@ -132,16 +131,16 @@ static int bluetooth_init_all(void)
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %u", ret);\r
 \r
     // 设置安全连接\r
-    gap_ble_sec_params_t sec_params = {0};\r
-    sec_params.bondable = 0x01;\r
-    sec_params.io_capability = GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT;//最好选择没有输入输出IO能力\r
-    sec_params.sc_enable = 0x00;\r
-    sec_params.sc_mode = GAP_BLE_GAP_SECURITY_MODE1_LEVEL2;\r
-    ret = gap_ble_set_sec_param(&sec_params);//设置配对参数 发起配对弹窗\r
-\r
-    // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 };\r
+    // gap_ble_sec_params_t sec_params = {0};\r
+    // sec_params.bondable = 0x01;\r
+    // sec_params.io_capability = GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT;//最好选择没有输入输出IO能力\r
+    // sec_params.sc_enable = 0x00;\r
+    // sec_params.sc_mode = GAP_BLE_GAP_SECURITY_MODE1_LEVEL2;\r
+    // ret = gap_ble_set_sec_param(&sec_params);//设置配对参数 发起配对弹窗\r
+\r
+    gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 };\r
     // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 0, GAP_BLE_GAP_SECURITY_MODE1_LEVEL2 };\r
-    // ret = gap_ble_set_sec_param(&sec_param);\r
+    ret = gap_ble_set_sec_param(&sec_param);\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret);\r
 \r
     InitBluetoothInfo();\r
@@ -179,6 +178,17 @@ void bluetooth_enable_all(void)
     //初始化过的则直接开启扫描即可\r
     if (bluetooth_init_all() == 1)\r
     {\r
+\r
+        errcode_t ret;\r
+        // 设置自动回连,ios一键双连依赖此配置\r
+        bts_feature_t bts_feature = { 0 };\r
+        bts_feature.bt_auto_reconnect_closed = 0;\r
+        ret = bts_set_features(&bts_feature);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt bts_set_features ret = %u", ret);\r
+    // gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 };\r
+        gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 0, GAP_BLE_GAP_SECURITY_MODE1_LEVEL2 };\r
+        ret = gap_ble_set_sec_param(&sec_param);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret);\r
         /**开始ble广播*/\r
         custom_ble_service_start();\r
     }\r
@@ -1032,7 +1042,7 @@ static void BleConnStateChangeCallback(unsigned short connId, bd_addr_t *addr, g
         SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
         (void)memcpy_s(&g_bd_addr, sizeof(bd_addr_t), addr, sizeof(bd_addr_t));\r
     }\r
-}\r
+    }\r
 \r
 static void BleAdvStartCallback(uint8_t advId, adv_status_t status)\r
 {\r
@@ -1376,8 +1386,8 @@ void BtInitCallBacksEx()
     g_gapBleCallbacks.conn_state_change_cb = BleConnStateChangeCallback;\r
     g_gapBleCallbacks.start_adv_cb = BleAdvStartCallback;\r
     g_gapBleCallbacks.stop_adv_cb = BleAdvStopCallback;\r
-    g_gapBleCallbacks.terminate_adv_cb = BleAdvTerminateCallback;\r
-    wrapper_gap_ble_register_callbacks(&g_gapBleCallbacks);\r
+        g_gapBleCallbacks.terminate_adv_cb = BleAdvTerminateCallback;\r
+        wrapper_gap_ble_register_callbacks(&g_gapBleCallbacks);\r
 \r
     g_btGattsCallbacks.add_service_cb = BtGattsServiceAddCallback;\r
     g_btGattsCallbacks.add_characteristic_cb = BtGattsCharacteristicAddCallback;\r
index 02f3628..a739c32 100644 (file)
@@ -561,7 +561,10 @@ void comfirmPaire(uint8_t flag)
     {\r
         first_bond = 1;\r
         // printf("gap_ble_pair_remote_device 333333333 %x-%x-%x-%x-%x-%x\r\n",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5]);\r
-\r
+        // 一键双连使能(依赖安全连接参数配置)\r
+        errcode_t ret = gap_ble_set_ctkd_enable(true);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret);\r
+        \r
         errcode_t code = gap_ble_pair_remote_device(&phone_addr);\r
         if(code!=ERRCODE_SUCC)\r
         {\r
@@ -951,10 +954,14 @@ void sendBindInfor(uint8_t *data)
             int result = memcmp(copare_mac,save_mac,6);\r
             if(result == 0)\r
             {\r
-                printf("phone_addr:%02x-%02x-%02x-%02x-%02x-%02x type:%d",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],\r
+                printf("phone_addr:%02x-%02x-%02x-%02x-%02x-%02x type:%d ",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],\r
                 phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5],phone_addr.type);\r
+\r
+                ret = gap_ble_set_ctkd_enable(true);\r
+                printf("gap_ble_set_ctkd_enable ret = %x ", ret);\r
+\r
                 ret = gap_ble_pair_remote_device(&phone_addr);\r
-                printf("ret:%d",ret);\r
+                printf("gap_ble_pair_remote_device ret:%x ",ret);\r
                 bond = 0x02;//手表与该手机绑定过\r
                 value[17] = bond;//\r
                 value[18] = Calculate_CRC(value,18);\r
index dd3f195..2a19d96 100644 (file)
@@ -1093,15 +1093,15 @@ void svr_gap_ble_auth_complete_callback(uint16_t conn_id, const bd_addr_t *addr,
 //     else\r
 //         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_ble_stop_scan fail %d !",reT_gap);\r
 // }\r
-\r
+static void srv_BleAdvTerminateCallback(uint8_t advId, adv_status_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "srv_BleAdvTerminateCallback advId: %d, status:%d\n", advId, status);\r
+}\r
 void srv_ble_server_register_gap_ble_callbacks(void)//ble基础通讯服务注册回调函数\r
 {\r
-    \r
-\r
-  \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
-\r
+    g_ble_gapble_cbs.terminate_adv_cb =  srv_BleAdvTerminateCallback;\r
     g_ble_gapble_cbs.auth_complete_cb = svr_gap_ble_auth_complete_callback;\r
    \r
 #ifndef SUPPORT_AT_OHOSFWK\r
@@ -1232,6 +1232,11 @@ void custom_ble_service_stop(void)
     if(Bleconnect == GAP_BLE_STATE_CONNECTED){//设备连接需要断开\r
         ret = gap_ble_disconnect_remote_device((const bd_addr_t *)&phone_addr);//与固定的mac设置地址进行断开连接\r
     }\r
+\r
+    // 一键双连去使能\r
+    ret = gap_ble_set_ctkd_enable(false);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_disable ret = %u", ret);\r
+    \r
     svr_ble_adv_stop();//停止广播 不发送广播数据 就是app搜索不到该设备了\r
     free_ble_data(); //删除所有协议缓存数据\r
 }\r