Могу ли я подключиться к периферийному устройству Bluetooth Bonded/Paired, которое не рекламируется?

Я новичок в Bluetooth, но около месяца работал над клиентом Android, который подключается к периферийному устройству BLE для записи данных в характеристику.

Мое периферийное устройство BLE — это устройство nrf52832 (Nordic), и я загрузил BLE_SM (менеджер безопасности), чтобы я мог использовать связывание/сопряжение для безопасной связи.

Мой код Android успешно соединяется/связывается с периферийным устройством, но, насколько я вижу, периферийное устройство теперь перестает рекламировать. Я не уверен, нормально это или потому, что я получил событие gap.onDisconnection типа REMOTE_USER_TERMINATED_CONNECTION.

Независимо от того, что я связан, вы можете подумать, что мне больше не нужно сканировать устройство, и я могу просто позвонить device.connectGatt(), но это не работает, и мой обратный вызов получает событие GATT STATE_DISCONNECTED. Я прочитал в другом посте, который вставил следующее из Nordic (Учебник):

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

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


person MarkW    schedule 17.02.2019    source источник


Ответы (1)


Цитата 100% верная. Настройка подключения не имеет ничего общего с тем, привязано устройство или нет (при условии, что вы не используете направленную рекламу). Если периферийное устройство не подключено и не рекламируется, радио полностью отключено, и поэтому центральный не может подключиться.

Если вы хотите свести к минимуму энергопотребление, убедитесь, что вы не размещаете рекламу, когда вам это не нужно. В зависимости от вашего варианта использования, может ли у вас быть что-то, что запускает рекламу? Например, кнопка или событие датчика?

Если вам нужно показывать рекламу все время, вы можете попробовать использовать более длительный интервал рекламы для экономии заряда батареи, но это увеличит время обнаружения и установки соединения.

person Emil    schedule 18.02.2019
comment
Спасибо за ответ. Есть дополнительный вопрос/обновление. Имеет ли смысл для моего периферийного устройства устанавливать рекламу на 1 секунду после включения и после того, как устройство соединяется / связывается, чтобы сбрасывать рекламу, чтобы говорить один раз в минуту? И всегда ли радио слушает даже при больших рекламных промежутках? - person MarkW; 18.02.2019
comment
к вашему сведению. Я играю с созданием своих собственных умных часов, поэтому на периферийных устройствах (часах) всегда должно быть включено радио. - person MarkW; 18.02.2019