diff options
-rw-r--r-- | hcid/device.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/hcid/device.c b/hcid/device.c index 987fa0c0..01262f0c 100644 --- a/hcid/device.c +++ b/hcid/device.c @@ -71,6 +71,8 @@ struct hci_conn { }; struct hci_dev { + int ignore; + bdaddr_t bdaddr; uint8_t features[8]; uint8_t lmp_ver; @@ -105,8 +107,15 @@ int add_device(uint16_t dev_id) dev = &devices[dev_id]; - if (hci_devinfo(dev_id, &di) < 0) + if (hci_devinfo(dev_id, &di) < 0) { + dev->ignore = 1; return -errno; + } + + if (hci_test_bit(HCI_RAW, &di.flags)) { + info("Device hci%d is using raw mode", dev_id); + dev->ignore = 1; + } bacpy(&dev->bdaddr, &di.bdaddr); memcpy(dev->features, di.features, 8); @@ -157,6 +166,9 @@ int start_device(uint16_t dev_id) dev = &devices[dev_id]; + if (dev->ignore) + return 0; + dd = hci_open_dev(dev_id); if (dd < 0) { error("Can't open device hci%d", |