当比较irk或mac_addr匹配时,idx_found不是-1,但是当idx_emtpy_slot_found == -1时,idx_found会被更新,所以这里为什么不只是替换现有的bond信息如果idx_found != -1 ?
If (-1 != idx_emtpy_slot_found) {idx_found = idx_emtpy_slot_found;} else {if(idx_found != -1){//我应该在这里添加这行?//没有发现空槽位-删除最老的绑定数据槽位idx_found = bdb.next_slot++;bdb。next_slot = bdb。next_slot % APP_BOND_DB_MAX_BONDED_PEERS;} }
设备:
嗨cgha,
我假设您正在使用SDK5.0.4的ble_app_sleepmode示例。我的理解正确吗?如果是,根据bond_db_store API的实现,如果没有足够的slot级别来添加新的master的bonding信息,将会擦除最老的bonding数据。在函数过程中,如果有一个空槽位(由idx_emtpy_slot_found表示),无论是否有地址匹配,bond信息都将被放入新的槽位。
谢谢,PM_Dialog
你的意思是irk和mac_addr的比较是冗余吗?因为无论是否匹配irk或mac_addr, idx_found都会被重新分配。
嗨cgha,
如果没有足够的槽位级别来添加新的主节点的绑定信息,那么最老的绑定数据将被删除。在idx_emtpy_slot_found的情况下,无论是否存在地址匹配,bond信息都将被放入新的槽位。
谢谢,PM_Dialog