HID over GATT: карта отчета неверно интерпретирована - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу использовать HID over GATT на моем ESP32 для управления пультом дистанционного управления: воспроизведение / пауза, сканирование следующего, сканирование предыдущего, отключение звука ... но это не интерпретируется таким же образом в зависимости от используемого телефона.

Карта отчета, которую я использую, очень хорошо работает с:

  • Планшет Huawei

  • Xiaomi Redmi note 5

  • Старый телефон Archos

Он неверно интерпретируется как:

  • Xiaomi MIX 2 (сканирование следующегои при предыдущем сканировании громкость увеличивается и уменьшается)

  • Ноутбук Ubuntu: работает только громкость вверх и вниз

Не работаетвообще с:

  • Windows labtop: HID замечен с ошибкой

Я не тестировал на Iphone

Вот карта отчета, которую я 'm используя:

0x05, 0x0C,   // Usage Pg (Consumer Devices)
0x09, 0x01,   // Usage (Consumer Control)
0xA1, 0x01,   // Collection (Application)
0x85, 0x01,   // Report Id (1)

0x09, 0x02,   //   Usage (Numeric Key Pad)
0xA1, 0x02,   //   Collection (Logical)
0x05, 0x09,   //     Usage Pg (Button)
0x19, 0x01,   //     Usage Min (Button 1)
0x29, 0x0A,   //     Usage Max (Button 10)
0x15, 0x01,   //     Logical Min (1)
0x25, 0x0A,   //     Logical Max (10)
0x75, 0x04,   //     Report Size (4)
0x95, 0x01,   //     Report Count (1)
0x81, 0x00,   //     Input (Data, Ary, Abs)
0xC0,         //     End Collection

0x05, 0x0C,   //   Usage Pg (Consumer Devices)
0x09, 0x86,   //   Usage (Channel)
0x09, 0xE0,   //   Usage (Volume)
0x15, 0xFF,   //   Logical Min (-1)
0x25, 0x01,   //   Logical Max (1)
0x75, 0x02,   //   Report Size (2)
0x95, 0x02,   //   Report Count (2)
0x81, 0x46,   //   Input (Data, Var, Rel, Null)

0x09, 0xE2,   //   Usage (Mute)
0x09, 0x30,   //   Usage (Power)
0x09, 0x83,   //   Usage (Recall Last)
0x09, 0x81,   //   Usage (Assign Selection)
0x09, 0xB0,   //   Usage (Play)
0x09, 0xB1,   //   Usage (Pause)
0x09, 0xB2,   //   Usage (Record)
0x09, 0xB3,   //   Usage (Fast Forward)
0x09, 0xB4,   //   Usage (Rewind)
0x09, 0xB5,   //   Usage (Scan Next)
0x09, 0xB6,   //   Usage (Scan Prev)
0x09, 0xB7,   //   Usage (Stop)
0x15, 0x01,   //   Logical Min (1)
0x25, 0x0C,   //   Logical Max (12)
0x75, 0x04,   //   Report Size (4)
0x95, 0x01,   //   Report Count (1)
0x81, 0x00,   //   Input (Data, Ary, Abs)

0x09, 0x80,   //   Usage (Selection)
0xA1, 0x02,   //   Collection (Logical)
0x05, 0x09,   //     Usage Pg (Button)
0x19, 0x01,   //     Usage Min (Button 1)
0x29, 0x03,   //     Usage Max (Button 3)
0x15, 0x01,   //     Logical Min (1)
0x25, 0x03,   //     Logical Max (3)
0x75, 0x02,   //     Report Size (2)
0x95, 0x01,   //     Report Count (1)
0x81, 0x00,   //     Input (Data, Ary, Abs)
0xC0,         //     End Collection

0x75, 0x02,   //   Report Size (2)
0x95, 0x01,   //   Report Count (1)
0x81, 0x03,   //   Input (Const, Var, Abs)
0xC0,         //   End Collection

Вы видите какую-либо ошибку в этой карте отчетов, она основана на примере проекта HID в esp-idf.Я взглянул на таблицу использования HID: https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf и сравнил с примером, который они приводят в конце, но я не увидел ничего плохого.

Я бы хотел, чтобы мой ESP32 мог работать скак можно больше телефонов, и было бы замечательно, если бы я мог заставить его работать с моим Ubuntu и / или Windows!

Если у вас есть какие-либо идеи по поводу моей проблемы или если вы знаете, как я могу отладить ее, не делайтене стесняйтесь делиться.

С наилучшими пожеланиями,

Аурелиен

...