Android 10 L2CAP-соединение IOException тайм-аут Wii Balance Board - PullRequest
1 голос
/ 31 января 2020

Фон

Долгое время go Мне было поручено создать приложение android для Wii Balance Board, после некоторого перебора я обнаружил, что android больше не поддерживает L2CAP. Более исследование привело к пониманию того, что оно было добавлено в Android 10. С Android 10 я пытался дать ему трещину.

Проблема

Итак, моя простая цель на данный момент - создать соединение с Wii Balance Board.

Мой подход к соединению:

  • Запустить обнаружение

  • Добавить обнаруженные устройства Bluetooth в список

  • Когда вы нажимаете на устройство, оно пытается открыть сокет следующим образом:

    bluetoothSocket = btDevice.createInsecureL2capChannel(port);

  • Как уже упоминалось на сайте WiiBrew , я использую значение psm 0x13 для ввода и 0x11 для вывода.

  • Затем я использую bluetoothSocket.connect и продолжаю получать IOException (ошибка тайм-аута)

  • Я также пытался использовать как createL2capChannel, так и createInsecureL2capChannel с одинаковыми результатами

  • Мне удалось успешно выполнить сопряжение с устройством, используя btDevice.createBond(), а затем использовать телефонный адрес БТ в обратном направлении для .setpin() и Wii Balance Board si. mply действует как «тупое» устройство ввода. (не уверен, что требуется сопряжение / хорошая идея)

Выше приведен упрощенный способ подключения. Я также пытался использовать BalanceBoard.java из репо Пола Бертона fitscales repo, обновляя весь старый код Bluetooth, снова я все еще получаю тайм-аут.

1 Ответ

0 голосов
/ 05 апреля 2020

Вы смотрели журналы bt_stack?

Вот мое попытка открыть сокет с помощью wiimote:

04-05 12:25:04.949 E/bt_stack(4895): [ERROR:btif_sock_l2cap.cc(244)] SOCK_LIST: free(id = 4) - NO app_fd!
04-05 12:25:04.949 I/bt_stack(4895): [INFO:btsnoop.cc(323)] clear_l2cap_whitelist: Clearing whitelist from l2cap channel. conn_handle=65535 cid=65:0
04-05 12:25:04.949 E/bt_l2cap(4895): L2CA_FreeLePSM: Invalid PSM=19 value!
04-05 12:25:40.141 I/bt_stack(4895): [INFO:btsnoop.cc(323)] clear_l2cap_whitelist: Clearing whitelist from l2cap channel. conn_handle=1 cid=66:64
04-05 12:25:55.736 I/bt_stack(4895): [INFO:btsnoop.cc(323)] clear_l2cap_whitelist: Clearing whitelist from l2cap channel. conn_handle=2 cid=67:65

Я считаю, что именно в этом проблема, я только новичок, поэтому я не уверен, что с этим можно сделать. Я знаю, что старые способы соединения передавали fd в качестве параметра конструктору сокета Bluetooth, но я не думаю, что это возможно больше

...