Невозможно отключиться от подключенного устройства BLE - PullRequest
0 голосов
/ 05 июня 2018

Я создаю приложение на Android, где мне нужно поговорить с модулем Microchip RN4020 Bluetooth Low Energy.Я должен создать связь с этим модулем, чтобы обмениваться данными, и все работало нормально несколько дней назад.

Теперь вчера из ниоткуда я заметил, что если я намеренно потерял соединение или намеренно прервал соединение с RN4020, я не смог бы подключиться к нему заново.потому что для повторного подключения в моем приложении я должен сначала прослушать прямую рекламу, которая происходит, только если устройство не подключено в данный момент.Я проверил с помощью UART, какую информацию мне дает мой RN4020.Если я не связывал устройства и подключался / отключался несколько раз, UART дал мне

Подключено

Конец подключения

Подключен

Конец подключения

Подключено

Конец подключения

...

Теперь, если я подключу устройства, тот же код даст мне только

Подключено

Несмотря на то, что вкладка Android Monitor в Android Studio подтвердила, что отключение и закрытие BluetoothGatt выполнено, мой RN4020 не согласился с этим.

Я также скачал другое бесплатное приложение из Play Store, которое может подключаться к устройствам BLE и читать / записывать характеристики.То же самое произошло там.Если связь с RN4020 не создана, я могу подключаться и отключаться столько раз, сколько захочу, без проблем, но когда связь установлена, мой телефон просто остается подключенным к RN4020, пока я полностью не выключу Bluetooth.Затем, после его включения, я могу поймать его прямую рекламу, но при подключении я снова не могу отключиться.

Может кто-нибудь подсказать мне, что происходит?


РЕДАКТИРОВАТЬ: Еще одна вещь - Когда я захожу на Application Manager на моем телефоне (Galaxy S4 active / Lolipop), нажимаю «Выполнение» -> Bluetooth, я вижу, что это вроде состояний 1 процесс и 11 служб запущены.Одной из этих услуг является BleAutoConnectService.Но в любом случае это ничего не изменит, если я выключу его.


РЕДАКТИРОВАТЬ № 2: Когда я вчера тестировал его с моими друзьями Sony Xperia (кажется, это было Z) это произошло: при создании новой связи с RN4020 я получил следующие сообщения по UART

Подключено
ConnParam: 0006,0000,07D0
Связано
ConnParam: 0027,0000, 07D0
ConnParam: 0006,0000,07D0
ConnParam: 0027,0000,07D0
Конец подключения

, так что по крайней мере этот телефон был отключен после соединения.Это то, что в паспорте говорится о ConnParam:

Когда соединение и параметры соединения обновляются одноранговым устройством, сообщение «ConnParam» отправляется в UART.Сообщение «ConnParam» имеет три 16-битных параметра: интервал соединения, задержка ведомого и время ожидания наблюдения соответственно.

и когда я отправил команду 'D' на RN4020 для отображениякритическую информацию об этом, он дал мне

Bonded = FFFFFFFFFFFF, 1 // 1 означает частный / случайный MAC-адрес

, но с моим устройством Я только что получил

Подключен
Связан

и 'D' команда дала мне

Bonded = FFFFFFFFFFFF, 0 // 0 обозначает публичный MAC-адрес

Поэтому вчера я решил спать на нем, но сегодня все работает простохорошо.Я могу подключаться и отключаться независимо от того, подключены ли устройства к моему собственному телефону или нет, сколько раз я хочу. Я понятия не имею, почему это происходит и что делать с этим случайным поведением.

...