编译 W801 的固件代码 (没记错是 wm_sdk_w80x_20211115. zip) , 然后烧录固件到 W801.
在串口调试助手输入:
t-bt-on
t-ble-adv (1)
蓝牙启动成功, 并正常发送广播报文
手机打开蓝牙并扫描到 W801. 点击配对成功.
然后, 手机端将配对好的 W801 设备删除, 板子也重新上电 (排除干扰) .
串口助手丽依次输入 t-bt-on, t-ble-adv (1) , 手机端还是能扫描到 W801 设备. 但是
点击配对时却失败, 串口终端内容是这样的:
[WM_I] "0: 00: 01. 288" adapter status = bt_state_on
[WM_I] "0: 00: 01. 294" init base application
[WM_I] "0: 00: 06. 968" ### tls_ble_demo_adv type=1
[WM_I] "0: 00: 06. 974" Starting advertising
GAP procedure initiated: advertise; disc_mode=2 direct_addr_type=0 direct_addr=00: 00: 00: 00: 00: 00 adv_channel_map=0 own_addr_type=0 adv_filter_policy=0 adv_itvl_min=64 adv_itvl_max=64
[WM_I] "0: 00: 11. 806" gap_event, [BLE_GAP_EVENT_CONNECT]
[WM_I] "0: 00: 12. 068" gap_event, [BLE_GAP_EVENT_REPEAT_PAIRING]
[WM_I] "0: 00: 45. 070" gap_event, [BLE_GAP_EVENT_DISCONNECT]
是不是这个 BLE_GAP_EVENT_REPEAT_PAIRING 没处理好? 源码没有改动, 只是编译后烧录到板子上.
OK, 我们做个记录
https: //github. com/h2zero/NimBLE-Arduino/issues/116
case BLE_GAP_EVENT_REPEAT_PAIRING:
/* We already have a bond with the peer, but it is attempting to
* establish a new secure link. This app sacrifices security for
* convenience: just throw away the old bond and accept the new link.
*/
/* Delete the old bond. */
rc = ble_gap_conn_find (event-" repeat_pairing. conn_handle, &desc) ;
assert (rc == 0) ;
ble_store_util_delete_peer (&desc. peer_id_addr) ;
TLS_BT_APPL_TRACE_DEBUG ("! ! ! BLE_GAP_EVENT_REPEAT_PAIRING\r\n") ;
return BLE_GAP_REPEAT_PAIRING_RETRY;
搜索后发现, 原来是要删除原来的配对信息 (持久化存储) . 然后再 wm_ble_server_api_demo. c 里是有个 case 处理的. 但是 wm_ble_gap. c 里没有. 所以发送广播时就酱紫.