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
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
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
//初始化过的则直接开启扫描即可\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
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
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
{\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
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
// 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
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