环境:
我必须说,HCI BlueZ C API ( lib.h )文档很少,也就是说,是否存在控制主机可发现状态的C hci_* API?类似于启用可发现性控制的"hci_write_simple_pairing_mode“吗?
发布于 2016-06-10 23:55:53
下面的hci命令使适配器可以被发现
hciconfig hci0 piscan下面是来自hciconfig图的对应代码
if (!strcmp(opt, "pscan"))
dr.dev_opt = SCAN_PAGE;
else if (!strcmp(opt, "piscan"))
dr.dev_opt = SCAN_PAGE | SCAN_INQUIRY;
if (ioctl(ctl, HCISETSCAN, (unsigned long) &dr) < 0) {这里是从ctl得到的:
if ((ctl = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0) 发布于 2015-05-06 06:44:33
解决方案可以在hciconfig.c中找到,具体在'cmd_scan‘实现(具有opt = "piscan“),派生如下
HRESULT BluZbridge::SetDiscoverable(IN BOOL bVisible) {
if (0 == m_fdHCI)
return HRESULT_FROM_WIN32(ERROR_NOT_READY);
hci_dev_req req = { DEFAULT_HCI_ADAPTER_ID, ((TRUE == bVisible) ? (SCAN_PAGE | SCAN_INQUIRY) : SCAN_DISABLED) };
if (ioctl(m_fdHCI, HCISETSCAN, (unsigned long)&req) < 0) {
perror("Can't set scan mode on hci0");
return HRESULT_GET_ERRNO();
}
return S_OK;
}https://stackoverflow.com/questions/30058715
复制相似问题