1、实验环境
硬件平台:nordic Nrf2832官方开发板
sdk版本:nRF5_SDK_12.1.0_0d23e2a
实验例程:ble_app_hids_keyboard
2、实现现象
直接运行官方demo,手机或者pc可扫描到hid设备并且可以成功连接,通过按键实现hello的发送,但是取消配对后,再次连接发现不能连接成功。重启开发板也不行,重新烧录应用文件也不行,只有全部擦除flash,重新烧录softdevice和应用程序,才可以重新连接。
3、问题分析
分析源码,发现源码中使用了绑定和白名单,首次绑定设备后,会将绑定信息写入flash中,下次广播将执行白名单,导致其它设备不能扫描连接。
4、解决方案
4.1、通过开机擦除绑定信息,可以在每次重启设备后,能被其它主机连接一次。擦除绑定信息所需修改初始化代码,如下:
int main(void)
{
bool erase_bonds;
uint32_t err_code;
err_code = NRF_LOG_INIT(NULL);
APP_ERROR_CHECK(err_code);
timers_init();
buttons_leds_init(&erase_bonds);
ble_stack_init();
scheduler_init();
erase_bonds = true;
peer_manager_init(erase_bonds);
if (erase_bonds == true)
{
NRF_LOG_INFO("Bonds erased!\r\n");
}
……
}