Изменение возможностей во время выполнения

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

Имя группы сообщений Ценить
Информационное событие об устройстве 0x03
Кодовое имя сообщения Ценить
Версия прошивки 0x09

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

Мы также разрешаем поставщику напрямую передавать возможности Искателю без предварительного запроса, поскольку мы предполагаем, что в будущем более сложные устройства (возможно, на базе Android) будут выполнять динамическую настройку на основе флагов для одной и той же версии прошивки.

Поэтому мы добавляем ниже новую группу сообщений и коды сообщений.

Имя группы сообщений Ценить
Событие синхронизации возможностей устройства 0x06
Кодовое имя сообщения Ценить
Запросить обновление возможностей (отправлено от Seeker) 0x01
FMDN-отслеживание 0x03

Получив 0x0601 ,

  • если провайдер включил поддержку отслеживания FMDN, он должен ответить, как показано ниже:
Октет Тип данных Описание Ценить
0 uint8 Событие синхронизации возможностей устройства 0x06
1 uint8 FMDN-отслеживание 0x03
2–3 uint16 Дополнительная длина данных 0x0007
4 uint8 Состояние подготовки FMDN 0x00, если не подготовлено; 0x01, если предоставлено любой учетной записью
5–10 uint8[] Текущий MAC-адрес BLE устройства. варьируется