hci_get_route()的目的是什么
查看代码示例,它看起来像hci_get_route()的目的是什么,c,linux,bluetooth,bluez,C,Linux,Bluetooth,Bluez,查看代码示例,它看起来像hci\u get\u route(NULL)通常用于获取本地机器上蓝牙设备的设备id。那很好,我能理解。我想,我的困惑只会影响到一个有多个蓝牙设备的系统,并且hci\u get\u route()的参数是非空的。的源代码显示了以下实现: int hci_get_route(bdaddr_t *bdaddr) { int dev_id; dev_id = hci_for_each_dev(HCI_UP, __other_bdaddr,
hci\u get\u route(NULL)
通常用于获取本地机器上蓝牙设备的设备id。那很好,我能理解。我想,我的困惑只会影响到一个有多个蓝牙设备的系统,并且hci\u get\u route()
的参数是非空的。的源代码显示了以下实现:
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;
}
即使是这个初始版本看起来也是非常有意地做同样的事情,它只是不包括使用\uuusame\ubdaddr
的备份检查
由于没有关于这个函数的文档(我可以找到),这个库的新手用户似乎希望使用bdaddr\u t*
参数来选择设备,所以我的问题是,为什么它会做完全相反的事情,在选择具有匹配地址的设备之前,更喜欢任何其他设备
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);
}