Запись команды HCI на USB BT Dongle

Мой небольшой проект состоит в том, чтобы писать команды HCI на USB-ключ Bluetooth и получать ответ на команды HCI.

Я мог бы распечатать все адреса конечных точек моего USB-ключа Bluetooth, как показано ниже (используя libusb). В соответствии со спецификацией интерфейса управления хостом системы Bluetooth [транспортный уровень] (раздел 2.1) адрес конечной точки 0x00 используется для записи команд HCI. Но мне не удалось найти адрес конечной точки 0x00 в моем ключе Bluetooth.

config[0]->interface[0]->altsetting[0]->endpoint[0]->bEndpointAddress=0x81 packetsize=16
config[0]->interface[0]->altsetting[0]->endpoint[1]->bEndpointAddress=0x02 packetsize=64
config[0]->interface[0]->altsetting[0]->endpoint[2]->bEndpointAddress=0x82 packetsize=64
config[0]->interface[1]->altsetting[0]->endpoint[0]->bEndpointAddress=0x03 packetsize=0
config[0]->interface[1]->altsetting[0]->endpoint[1]->bEndpointAddress=0x83 packetsize=0
config[0]->interface[1]->altsetting[1]->endpoint[0]->bEndpointAddress=0x03 packetsize=9
config[0]->interface[1]->altsetting[1]->endpoint[1]->bEndpointAddress=0x83 packetsize=9
config[0]->interface[1]->altsetting[2]->endpoint[0]->bEndpointAddress=0x03 packetsize=17
config[0]->interface[1]->altsetting[2]->endpoint[1]->bEndpointAddress=0x83 packetsize=17
config[0]->interface[1]->altsetting[3]->endpoint[0]->bEndpointAddress=0x03 packetsize=25
config[0]->interface[1]->altsetting[3]->endpoint[1]->bEndpointAddress=0x83 packetsize=25
config[0]->interface[1]->altsetting[4]->endpoint[0]->bEndpointAddress=0x03 packetsize=33
config[0]->interface[1]->altsetting[4]->endpoint[1]->bEndpointAddress=0x83 packetsize=33
config[0]->interface[1]->altsetting[5]->endpoint[0]->bEndpointAddress=0x03 packetsize=49
config[0]->interface[1]->altsetting[5]->endpoint[1]->bEndpointAddress=0x83 packetsize=49
  1. Означает ли это, что мой ключ Bluetooth не поддерживает отправку команд HCI?
  2. Если да, есть ли альтернативный способ отправки команд HCI на мой Bluetooth-ключ?

person Sandy    schedule 22.06.2016    source источник


Ответы (1)


Конечная точка 0x00 «зарезервирована» для передачи управления между хостом и устройством, и поскольку каждое устройство должно иметь эту конечную точку, у нее нет дескриптора конечной точки. Несмотря на то, что ваш хост использует эту конечную точку для перечисления и настройки вашего устройства, у вас все еще есть возможность использовать ее для связи. Все, что вам нужно сделать, это запустить передачу управления в конечной точке 0x00. Вам не нужно настраивать устройство или запрашивать интерфейс для этого, но я рекомендую вам сделать это в любом случае (может иметь определенные преимущества для скорости и тому подобного).

person dryman    schedule 24.06.2016
comment
Спасибо за информацию. Я попробовал с конечной точкой 0x00, и теперь я могу записывать данные (команды HCI) на подключенное устройство. - person Sandy; 28.06.2016