1

Я пытаюсь свести к минимуму общее соединение + время записи устройства BLE. Модуль BLE разрабатывается компанией, над которой я работаю, поэтому я уже знаю все сервисы и характеристики устройства.Пропуск обнаружения службы BLE

До сих пор время соединения + время обнаружения службы слишком велико (это около 800 мс, где требование должно составлять 500 мс). Я попытался пропустить обнаружение службы, и для этого я создал характеристики и службы вручную в коде (используйте рефлексию для установки защищенных свойств и т. Д.), И я могу «технически» пройти обследование службы.

Проблема заключается в том, что если я это сделаю, первый пакет занимает около 300 мс, где при обнаружении службы обнаружение занимает около 280 мс, а первый пакет занимает 20 мс, поэтому кажется, что обнаружение службы независимо от того, что, только позже, даже если я не назову это напрямую - это мое предположение правильно? Если да, есть ли способ обойти открытие вообще?

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

ответ

2

Android делает сервисное открытие, даже если вы его не скажете.

У вас есть три варианта:

  1. Бонд устройства. Тогда андроид вообще не будет выполнять никаких сервисных открытий (кроме первого подключения).
  2. Оптимизируйте свой бит GATT. Отбросьте характеристики и дескрипторы, которые вам не нужны, и если у вас есть пользовательские сервисы, попробуйте объединить как можно больше характеристик и т. Д.
  3. Оптимизируйте уровень ссылок, если у вас есть оборудование, где это возможно, в том виде, в котором вы отвечаете каждый запрос GATT в том же событии соединения (в пределах 150 us) вместо ответа в следующем событии соединения. Теоретически это должно повысить скорость в 2 раза. Примером, где это возможно, является nrf52 Nordic Semiconductor.
+0

GATT оптимизирован (требуется только необходимая услуга и характеристики), до этого оптимизируйте его до 550 мс, чтобы выполнить обнаружение службы. Отметьте команду прошивки/оборудования на уровне ссылки и сообщите результаты. Спасибо –

+0

Еще одна вещь, которую вы можете попробовать: Увеличьте MTU до более высокого значения, чем значение по умолчанию 23 (например, 512). Таким образом, большее количество сервисов/характеристик может вписываться в каждый ответ, уменьшая количество событий соединения. – Emil

Смежные вопросы