Tal*_*uck 6 c linux bluetooth bluez
通过查看代码示例,它看起来hci_get_route(NULL)通常用于获取本地计算机上蓝牙设备的设备 ID。很好,我能理解。我想,我的困惑仅在具有多个蓝牙设备且参数为非hci_get_route()NULL 的系统上才有意义。hci.c的源代码显示了以下实现:
int hci_get_route(bdaddr_t *bdaddr)
{
int dev_id;
dev_id = hci_for_each_dev(HCI_UP, __other_bdaddr,
(long) (bdaddr ? bdaddr : BDADDR_ANY));
if (dev_id < 0)
dev_id = hci_for_each_dev(HCI_UP, __same_bdaddr,
(long) (bdaddr ? bdaddr : BDADDR_ANY));
return dev_id;
}
Run Code Online (Sandbox Code Playgroud)
我不会在这里复制hci_for_each_dev()、__other_bdaddr()、 或的整个代码__same_bdaddr(),但简而言之,如果提供非 NULL ,该函数将首先尝试查找地址与所提供的地址不bdaddr_t*匹配的设备,然后,仅失败后,选择地址匹配的设备。我回顾了引入这个函数的提交,它略有不同,但仍然使用:__other_bdaddr
int hci_get_route(bdaddr_t *bdaddr)
{
if (bdaddr)
return hci_for_each_dev(HCI_UP, __other_bdaddr, (long) bdaddr);
else
return hci_for_each_dev(HCI_UP, NULL, 0);
}
Run Code Online (Sandbox Code Playgroud)
即使这个初始版本的出现,也是有意为之,做同样的事情,它只是不包括使用__same_bdaddr.
鉴于没有这个函数的文档(我可以找到),似乎这个库的新手用户会期望使用参数bdaddr_t*来选择设备,所以我的问题是,为什么它会做完全相反的事情,在选择具有匹配地址的设备之前更喜欢任何其他设备?
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |