Соединение Android 10 L2CAP Тайм-аут IOException Wii Balance Board

Фон

Давным-давно мне поручили сделать 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(), а затем использовать обратный адрес BT телефона для .setpin(), а Wii Balance Board просто действует как тупое устройство ввода. (не уверен, что необходимо сопряжение/хорошая идея)

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


person Jameson    schedule 30.01.2020    source источник


Ответы (1)


Вы смотрели логи 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, но я не думаю, что это возможно.

person user154    schedule 05.04.2020
comment
К вашему сведению, в этом файле генерируется ошибка недопустимого значения PSM: android.googlesource.com/platform/system/bt/+/master/stack/, а диапазон PSM ограничен от 0x80 до 0xFF. Константы диапазона находятся в этом файле: android.googlesource.com/platform/system/bt/+/refs/heads/master/, вы можете видеть, что они определены как LE_DYNAMIC_PSM_START и LE_DYNAMIC_PSM_END. - person lion; 13.04.2020