从机例程,在Peripheral_LinkEstablished
连接时只增加一次白名单,LL_AddWhiteListDevice(0,event->devAddr);?
下次上电时,不再执行LL_AddWhiteListDevice,发现是连不上主机的,请问,LL_AddWhiteListDevice这个函数增加后不是将数据保存到dataflash吗?难道是每次上电都要重复增加一次白名单?
static void Peripheral_LinkEstablished(gapRoleEvent_t *pEvent)
{
。。。
? ? ? ? // Start read rssi
? ? ? ? tmos_start_task(Peripheral_TaskID, SBP_READ_RSSI_EVT, SBP_READ_RSSI_EVT_PERIOD);
? ? ? ? if(light_get_master_mac_flag() == 0xFF) {
? ? ? ? ? ? int ret = LL_AddWhiteListDevice(0,event->devAddr); //
? ? ? ? ? ? if(ret == SUCCESS) {
? ? ? ? ? ? ? ? light_set_master_mac_flag(0x00);
? ? ? ? ? ? ? ? uint8_t filter_policy = GAP_FILTER_POLICY_WHITE;
? ? ? ? ? ? ? ? GAPRole_SetParameter(GAPROLE_ADV_FILTER_POLICY, sizeof( uint8 ), &filter_policy);
? ? ? ? ? ? }
? ? ? ? ? ? PRINT("ret:%d\n", ret);
? ? }
}
上电程序会初始化从头运行,本身就会运行到白名单初始化的地方。需要用白名单功能就将白名单的MAC添加到白名单函数并调用。
白名单没有操作dataflash,绑定会操作dataflash。573作为从机连接手机使用白名单功能用到dataflash,是因为必须要绑定获取静态地址。
蓝牙BLE从机Peripheral讲解四(白名单/BLE_WhiteList) - SweetTea_lllpc - 博客园 (cnblogs.com)
要实现长按后执行禁用白名单,在按键里执行
LL_ClearWhiteList();
uint8_t filter_policy = GAP_FILTER_POLICY_ALL;
initial_advertising_enable = FALSE;
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initial_advertising_enable);
GAPRole_SetParameter(GAPROLE_ADV_FILTER_POLICY, sizeof( uint8 ), &filter_policy);
initial_advertising_enable = TRUE;
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initial_advertising_enable);
不起作用,其它主机还是无法连接,重新上电,执行一下上面函数,才能连接,请帮忙分析一下是什么原因,谢谢
关闭白名单功能函数调用后,可以复位,或者尝试广播重新使能。