Я хочу иметь 2 двухстороннюю (входную и выходную) HID-связь между leonardo и планшетом Android (выступающим в качестве хоста). На leonardo я использую Nicohood HID project. Мне удалось успешно заставить код работать на Linux, Windows и MacOs, так что это возможно.
Используя чистую реализацию Android, я могу только получать данные от леонардо, но не отправлять ему...
Из того, что я видел в дескрипторе, данные отправляются с устройства (направление IN) с использованием определенной конечной точки. Для другого пути (OUT, к устройству) мы должны использовать конечную точку управления.
Тем не менее, это не работает на андроиде. Вот код, который я использовал:
UsbDeviceConnection mUsbConnection = mUsbManager.openDevice(myDevice);
byte data[] = {7, 11, 13, 17};
int resOut = mUsbConnection.controlTransfer(0x21, 9, 200, 2, data, data.length, 50);
// => resOut value is always -1 (didn't succeed to communicate)
Для параметров я использовал ответы на этот вопрос: Использование Android для связи с USB HID-устройством и посмотрел примеры связи libusb/nicohood hid на linux...
К счастью, я попытался изменить значение с «200» на «0» или индекс с 0 на 1 или 2, но я действительно не знаю, что они означают, и это не очень помогло...
Как я могу отправить данные на устройство, используя конечную точку управления с Android?
PS: я могу читать HID-сообщения с устройства, так что это не проблема разрешения.