关于bond_db_store函数有问题吗?

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
4个职位/ 0个新
最后发表
cgha
离线
最后看到:6个月2周之前
加入:2016-03-23 13:05
关于bond_db_store函数有问题吗?

当比较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;} }

设备:
PM_Dialog
离线
最后看到:8小时1分钟前
工作人员
加入:2018-02-08 11:03
嗨cgha,

嗨cgha,

我假设您正在使用SDK5.0.4的ble_app_sleepmode示例。我的理解正确吗?如果是,根据bond_db_store API的实现,如果没有足够的slot级别来添加新的master的bonding信息,将会擦除最老的bonding数据。在函数过程中,如果有一个空槽位(由idx_emtpy_slot_found表示),无论是否有地址匹配,bond信息都将被放入新的槽位。

谢谢,PM_Dialog

cgha
离线
最后看到:6个月2周之前
加入:2016-03-23 13:05
你指的是比较吗

你的意思是irk和mac_addr的比较是冗余吗?因为无论是否匹配irk或mac_addr, idx_found都会被重新分配。

PM_Dialog
离线
最后看到:8小时1分钟前
工作人员
加入:2018-02-08 11:03
嗨cgha,

嗨cgha,

如果没有足够的槽位级别来添加新的主节点的绑定信息,那么最老的绑定数据将被删除。在idx_emtpy_slot_found的情况下,无论是否存在地址匹配,bond信息都将被放入新的槽位。

谢谢,PM_Dialog