Уменьшить количество ошибок отключения BLE, выполненных через Instant Passed (0x28) - PullRequest
0 голосов
/ 29 февраля 2020

Я разрабатываю приложение для модуля STM32 SPBTLE-1S (BLE 4.2). Модуль подключается к Raspberry Pi.

При низком качестве соединения иногда происходит отключение с кодом ошибки 0x28 (причина: мгновенное прохождение) до истечения времени ожидания соединения.

Ток настройки соединения:

Conn_Interval_Min: 10

Conn_Interval_Max: 20

Slave_latency: 5

Timeout_Multiplier: 3200

Подробнее об этом Тип ошибки, это происходит, когда «LMP PDU или LL PDU, которые включают момент, не могут быть выполнены, потому что момент, когда это произошло бы, прошел». Эти пакеты обычно используются для скачкообразной перестройки частоты или для обновления соединения. В моем случае, они должны быть пакетами с частотным ожиданием.

Есть идеи, как предотвратить эти отключения, вызванные ошибками "Instant Passed"? Или они просто следствие технологии BLE?

1 Ответ

0 голосов
/ 01 марта 2020

Ваш вопрос звучит похоже на этот

В двух словах, есть только два возможных запроса канального уровня, которые могут привести к этому типу разъединения (именуемый LL_CONNECTION_UPDATE_IND & LL_CHANNEL_MAP_IND в последней v5.2 Bluetooth Core Spe c)

Если у вас есть доступ к низкоуровневой прошивке для стека Bluetooth на встроенном устройстве, то, что я сделал в прошлом это увеличение количества слотов, в будущем переключатель «Instant» находится в таком положении, чтобы у пакета было больше времени для go сквозного в шумной среде.

В противном случае лучшее, что вы можете сделать, это попробовать ограничить количество раз, когда вы изменяете параметры соединения, чтобы уменьшить вероятность такого разрыва соединения. (Разъединение могло все еще быть вызвано изменением карты канала, но я не видел, чтобы много стеков BLE выставляли много конфигурации, когда они имеют место.)

...