В Android 16 появился модуль Ranging . Эта спецификация протокола и полезной нагрузки определяет последовательность сообщений и полезную нагрузку внеполосной (OOB) связи, используемой для обмена конфигурациями ранжирования, а также для запуска и остановки ранжирования между инициатором и устройством-ответчиком, которые участвуют в ранжировании.
Основная цель этой страницы — дать возможность поставщикам устройств, не являющихся устройствами Android, реализовать эту спецификацию, чтобы их устройства могли быть совместимы по дальности с устройствами Android.
Сообщения и последовательность сообщений
В этом разделе описываются сообщения и последовательность обмена сообщениями.
В следующей таблице показаны все сообщения, присутствующие в обмене OOB:
Сообщение | Идентификатор сообщения |
---|---|
Ranging Capability Request | 0x0 |
Ranging Capability Response | 0x1 |
Ranging Configuration | 0x2 |
Ranging Configuration Response (необязательно) | 0x3 |
Stop Ranging | 0x6 |
Stop Ranging Response (опционально) | 0x7 |
Как показано на рисунках 1 и 2, способ запуска обмена сообщениями зависит от канала связи.
Для каналов связи на основе соединения, таких как BLE GATT, обмен сообщениями начинается с того, что устройство-инициатор отправляет Ranging Capability Request
устройству-ответчику. Устройство-ответчик отвечает, отправляя ответ Ranging Capability Response
, как показано на рисунке 1:
Рисунок 1. Обмен сообщениями OOB с использованием канала связи на основе соединения.
Для каналов связи на основе рекламы устройство-ответчик начинает с объявления Ranging Capability
. В этом случае Ranging Capability Request
не отправляется с инициирующего устройства. Вместо этого после обнаружения рекламы, когда инициирующее устройство (начальный сканер) готово, оно отвечает объявлением Ranging Configuration
в качестве своего первого сообщения, как показано на рисунке 2:
Рисунок 2. Обмен сообщениями OOB с использованием коммуникации на основе рекламы.
Остальная часть обмена сообщениями одинакова в обоих случаях. Устройство-ответчик начинает измерение сразу после получения сообщения Ranging Configuration
. Устройство-ответчик прекращает измерение после получения или обнаружения сообщения Stop Ranging
.
В потоке, основанном на соединении, устройство-ответчик заполняет возможности только технологий ранжирования, запрошенных в сообщении Ranging Capability Request
, тогда как в потоке объявлений устройство-ответчик должно перечислить все свои возможности, поскольку предшествующего сообщения запроса возможностей нет.
Устройство-инициатор предполагает, что получит только один ответ на любое отправленное им сообщение-запрос. Устройство-ответчик не должно делать никаких таких предположений, чтобы оно могло отвечать на любой запрос в любом порядке. Это гарантирует, что устройство-ответчик может отвечать на несколько последовательных сообщений Ranging Capability Request
или любые другие сообщения, не соответствующие порядку, от устройства-инициатора.
Ранжирование идентификаторов технологий
Идентификаторы технологий измерения дальности приведены в следующей таблице:
Технология измерения дальности | ИДЕНТИФИКАТОР |
---|---|
СШП | 0x0 |
КС | 0x1 |
Wi-Fi NAN RTT | 0x2 |
RSSI | 0x3 |
РФС | 0x4 - 0xFF |
Эти идентификаторы используются в следующих таблицах, где требуется идентификатор технологии ранжирования. Для полей, содержащих битовое поле технологии ранжирования, бит, соответствующий индексу идентификатора технологии, устанавливается, когда эта технология включена в битовое поле.
Например, RSSI имеет значение идентификатора 3, но если RSSI включен в битовое поле технологии ранжирования, то бит с позицией идентификатора (3) должен быть включен (первый бит находится в позиции 0), что делает результирующее значение битового поля 0x8. Если включены и UWB, и RSSI, то значение битового поля равно 0x0A (оба бита 0 и 3 включены).
Формат сообщения
Каждое сообщение состоит из заголовка и полезной нагрузки.
Рисунок 3. Формат сообщения.
Заголовок
Размер: 2 байта
Описание: Общий для всех сообщений заголовок — это первая часть, которая входит в сообщение. Заголовок содержит версию и идентификатор типа сообщения. Поле версии указывает версию этой спецификации, которой соответствует содержимое сообщения. Текущая версия этой спецификации — 1
. Для получения дополнительной информации о том, как используется управление версиями между устройствами с разными версиями, см. Управление версиями . Заголовок остается обратно совместимым между разными версиями, что означает, что вариант использования всегда может проанализировать его, чтобы определить версию и идентификатор сообщения.
Заголовок обобщен в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Версия | 0x1 - Текущая версия |
1 | блок8 | Идентификатор сообщения |
|
Полезная нагрузка
Размер: варьируется (зависит от типа сообщения)
Описание: Полезная нагрузка — это последняя часть сообщения после заголовка. Полезная нагрузка зависит от типа сообщения. Формат полезной нагрузки каждого отдельного типа сообщения определен в следующих разделах.
Полезная нагрузка сообщения запроса возможностей ранжирования
Размер (без учета размера заголовка): 2 байта
Описание: Отправляется устройством-инициатором для инициирования обмена сообщениями. Это сообщение необязательно, если канал связи основан на рекламе, в этом случае устройство-ответчик должно рекламировать сообщение Ranging Capability
в качестве первого шага. Устройство-инициатор (начальный сканер) считывает рекламу и напрямую отвечает сообщением Ranging Capability
, избегая необходимости в этом сообщении.
Полезная нагрузка сообщения Ranging Capability Request
обобщена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8*2 | Запрошенные технологии ранжирования битовое поле |
|
Полезная нагрузка сообщения с ответом на возможность определения дальности
Размер (размер заголовка не включен): Варьируется (общая часть 2 байта плюс размер каждого включенного байта технологии ранжирования)
Описание: отправляется ответчиком в ответ на сообщение Ranging Capability Request
. Полезная нагрузка этого сообщения состоит из общей части и частей, специфичных для технологии ранжирования (BLE CS, Wi-Fi NAN RTT CS, BLE RSSI), как показано в следующих таблицах. Каждая часть, специфичная для технологии ранжирования, должна быть добавлена только в том случае, если эта технология ранжирования поддерживается устройством-ответчиком и запрошена в сообщении Ranging Capability Request
. В случае канала связи с рекламой должны быть включены все поддерживаемые технологии ранжирования.
Общая полезная нагрузка сообщения Ranging Capability Response
приведена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8*2 | Битовое поле поддерживаемых технологий ранжирования. Указывает набор возможностей технологий ранжирования, которые следуют в остальной части полезной нагрузки. |
|
2 | массив байтов | Байты возможностей технологии ранжирования. | Повторяющиеся блоки структур, определенные для каждой технологии. |
Полезная нагрузка сообщения UWB Ranging Capability Response
приведена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | ID технологии ранжирования | 0x0 - СШП |
1 | uint8 | Размер | Размер байтов возможностей UWB (включая поля «Идентификатор технологии» и «Размер ») в байтах. |
2 | uint8*2 | адрес UWB | 2-байтовый адрес UWB-устройства. |
4 | uint8*4 | Поддерживаемые каналы битового поля | Битовое поле поддерживаемых каналов. Бит, установленный в 0, указывает на то, что не поддерживается, 1 — на то, что поддерживается. Бит 0 соответствует каналу 0.LSB == channel 0 MSB == channel 31 |
8 | uint8*4 | Поддерживаемое битовое поле индекса преамбулы | Битовое поле поддерживаемых индексов преамбулы. Бит, установленный в 0, указывает на то, что не поддерживается, 1 — на то, что поддерживается. Бит 0 соответствует индексу преамбулы 1.LSB == preamble index 1 MSB == preamble index 32 |
12 | uint8*4 | Поддерживаемые битовые поля идентификаторов конфигураций | Битовое поле поддерживаемых идентификаторов конфигурации UWB. Бит, установленный в 0, указывает на то, что не поддерживается, 1 — на то, что поддерживается.LSB == config Id 0 > MSB == config Id 31 |
16 | uint8*2 | Поддерживаемый минимальный интервал измерения | Указывает самый быстрый поддерживаемый интервал ранжирования в миллисекундах. Допустимые значения (в мс):
|
18 | uint8 | Поддерживаемая минимальная длительность слота | Указывает наименьшую поддерживаемую длительность слота в миллисекундах. Например, если устройство возвращает 1 мс, то предполагается, что оно также поддерживает длительность слота 2 мс+. Допустимые значения (в мс):
|
19 | Поддерживаемое битовое поле роли устройства UWB | Битовое поле поддерживаемых ролей UWB. Например, если поддерживаются обе, то конечное значение поля — 0x3.
|
Полезная нагрузка сообщения BLE CS Ranging Capability Request
представлена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | ID технологии ранжирования | 0x1 - BLE-CS |
1 | uint8 | Размер | Размер байтов возможностей BLE CS (включая поля «Идентификатор технологии» и «Размер» ) в байтах. |
2 | uint8 | Поддерживаемый тип безопасности битового поля | Битовое поле поддерживаемых типов безопасности для BLE CS.
|
3 | uint8*6 | Адрес устройства | Адрес устройства, используемого для BLE CS; в порядке от старшего к младшему. |
Ranging Capability Request
Wi-Fi NAN RTT CS приведена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | ID технологии ранжирования | 0x2 - Wi-Fi NAN RTT |
1 | uint8 | Размер | Размер байтов возможностей BLE RSSI (включая поля «Идентификатор технологии» и «Размер ») в байтах. |
2 | uint8 | Поддерживаемые функции битового поля | Битовое поле поддерживаемых функций.
|
3 | uint8 | Поддерживает периодическое ранжирование |
|
4 | uint8 | Поддерживаемая пропускная способность | Эта информация помогает определить достижимую точность измерения дальности с использованием Wi-Fi NAN и может помочь приложениям определить, следует ли использовать UWB, BLE CS, BLE RSSI или Wi-Fi NAN для измерения дальности.
|
5 | uint8 | Поддерживаемое количество цепочек приема | Эта информация помогает определить достижимую точность измерения дальности с использованием Wi-Fi NAN и может помочь приложениям определить, следует ли использовать UWB, BLE CS, BLE RSSI или Wi-Fi NAN для измерения дальности.
|
Полезная нагрузка сообщения BLE RSSI Ranging Capability Request
представлена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | ID технологии ранжирования | 0x3 - BLE-CS |
1 | uint8 | Размер | Размер байтов возможностей BLE RSSI (включая поля «Идентификатор технологии» и «Размер» ) в байтах |
2 | uint8*6 | Адрес устройства | Адрес устройства, используемого для BLE RSSI; в порядке от старшего к младшему |
Полезная нагрузка сообщения конфигурации ранжирования
Размер (без учета размера заголовка): варьируется (общая часть 4 байта плюс размер каждого включенного байта технологии ранжирования).
Описание: Это сообщение отправляется инициатором и содержит конфигурации, с которых каждая технология определения дальности может начать определение дальности. Устройство-ответчик должно попытаться начать определение дальности с каждой указанной технологией определения дальности после получения этого сообщения. Полезная нагрузка этого сообщения состоит из общей части и частей, специфичных для технологии определения дальности (UWB, BLE CS, Wi-Fi NAN RTT, BLE RSSI), как показано в следующих таблицах.
Общая Ranging Configuration
дальности приведена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8*2 | Битовое поле конфигурации набора технологий ранжирования | Битовое поле ранжирования технологий, для которых это сообщение содержит данные конфигурации и для которых должны быть установлены параметры конфигурации.
|
2 | uint8*2 | Битфилд | RFU. Должно быть установлено то же значение, что и поле битового поля конфигурации Ranging technologies . |
4 | массив байтов | Ранжирование технологий конфигурации байтов | Повторяющиеся блоки структур, определенные для каждой технологии |
Полезная нагрузка сообщения Ranging Configuration
UWB приведена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | ID технологии ранжирования | 0x0 - СШП |
1 | uint8 | Размер | Размер конфигурации UWB (включая поля «Идентификатор технологии» и «Размер ») в байтах |
2 | uint8*2 | адрес UWB | 2-байтовый адрес UWB-устройства |
4 | uint8*4 | Идентификатор сеанса | Сгенерированный идентификатор сеанса. Идентификатор сеанса — это уникальный идентификатор сеанса определения дальности между телефоном и периферийным устройством. |
8 | uint8 | Выбранный идентификатор конфигурации | Выбранный номер идентификатора конфигурации в целочисленном виде. Идентификатор конфигурации определяет параметры синхронизации и тип безопасности, которые должны использоваться для сеанса ранжирования UWB. |
9 | uint8 | Выбранный канал | Выбранный канал для сеанса измерения дальности UWB |
10 | uint8 | Выбранный индекс преамбулы | Выбранный индекс преамбулы для сеанса UWB-дальномерования |
11 | uint8*2 | Выбранный интервал ранжирования | Выбранная скорость интервала ранжирования в миллисекундах. Допустимые значения (в мс):
|
13 | uint8 | Длительность выбранного слота | Выбранная длительность слота в миллисекундах. Допустимые значения (в мс):
|
14 | uint8 | Длина сеансового ключа | Длина сеансового ключа в байтах |
15 | массив байтов | Сеансовый ключ | Ключ сеанса. Если используется S-STS, то первые два байта — это VENDOR ID, а следующие шесть байтов — STATIC STS IV. Если используется P-STS, то это либо 16-байтовый, либо 32-байтовый ключ сеанса. Тип используемой безопасности определяется идентификатором конфигурации. |
варьируется | uint8*2 | Код страны | Код страны ISO 3166-1 alpha-2, представленный двумя символами ASCII |
варьируется | uint8 | Выбранная роль устройства |
|
варьируется | uint8 | Выбранный режим устройства |
|
Полезная нагрузка сообщения Ranging Configuration
BLE CS приведена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | ID технологии ранжирования | 0x1 - BLE-CS |
1 | uint8 | Размер | Размер конфигурации BLE CS (включая поля «Идентификатор технологии» и «Размер» ) в байтах |
2 | uint8 | Выбранный тип безопасности | Выбранный тип безопасности. Допустимые значения:
|
3 | uint8*6 | Адрес устройства | Адрес устройства, используемого для BLE CS; в порядке от старшего к младшему |
Полезная нагрузка сообщения Ranging Configuration
Wi-Fi NAN RTT обобщена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | ID технологии ранжирования | 0x2 - Wi-Fi NAN RTT |
1 | uint8 | Размер | Размер конфигурации Wi-Fi NAN RTT (включая поля «Идентификатор технологии» и «Размер ») в байтах |
2 | uint8 | Длина имени услуги | Длина поля «Имя службы» в байтах. См. спецификацию Wi-Fi Aware v4.0, раздел 1.3.3, таблица 1. Определения. |
3 | массив байтов | Название услуги | Имя сервиса. См. спецификацию Wi-Fi Aware v4.0, раздел 1.3.3, таблица 1. Определения. |
варьируется | uint8 | Роль устройства |
|
варьируется | uint8 | Используйте периодическое ранжирование |
|
Полезная нагрузка сообщения Ranging Configuration
BLE RSSI приведена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | ID технологии ранжирования | 0x3 - BLE RSSI |
1 | uint8 | Размер | Размер конфигурации BLE RSSI (включая поля «Идентификатор технологии» и «Размер ») в байтах |
2 | uint8*6 | Адрес устройства | Адрес устройства, используемого для BLE RSSI; в порядке от старшего к младшему |
Полезная нагрузка сообщения-ответа конфигурации ранжирования
Размер (без учета размера заголовка): 2 байта
Описание: Это сообщение отправляется респондентом в ответ на сообщение Ranging Configuration
. Это сообщение необязательно, оно требуется только тогда, когда используемый канал связи требует явного ответа на каждый запрос.
Полезная нагрузка сообщения Ranging Configuration Response
приведена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8*2 | Конфигурация технологий ранжирования успешно установлена. | Битовое поле технологий ранжирования, которые были успешно установлены. Битовое поле устанавливает бит технологии ранжирования в 1, если технология была запрошена и установлена успешно, и в 0 в противном случае.
|
Полезная нагрузка сообщения Stop Ranging
Размер (без учета размера заголовка): 2 байта
Описание: Это сообщение отправляется устройством-инициатором, когда приходит время прекратить измерение дальности с использованием указанной технологии измерения дальности.
Полезная нагрузка сообщения Stop Ranging
обобщена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8*2 | Технологии ранжирования, чтобы остановить битфилд | Битовое поле технологий ранжирования, которые должны прекратить ранжирование. Бит, установленный в 1, указывает, что технология ранжирования должна прекратить ранжирование, а 0 указывает, что технология ранжирования либо не ранжировала изначально, либо должна продолжить ранжирование, если она уже ранжировала. Для некоторых технологий ранжирования (например, CS) это пустая операция, поскольку ранжирование инициируется и останавливается только на стороне инициатора.
|
Полезная нагрузка сообщения Stop Ranging Response
Размер (без учета размера заголовка): 2 байта
Описание: Это сообщение отправляется респондентом в ответ на сообщение Stop Ranging
. Это сообщение необязательно, оно требуется только тогда, когда используемый канал связи требует явного ответа на каждый запрос.
Полезная нагрузка сообщения Stop Ranging Response
приведена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8*2 | Технологии ранжирования успешно остановлены битфилд | Битовое поле технологий ранжирования, которые успешно прекратили ранжирование. Битовое поле устанавливает бит технологии ранжирования в 1, если технология была запрошена на остановку и если она успешно остановилась, и 0 в противном случае.
|
Версионирование
Версия спецификации содержится в заголовке каждого сообщения. Этот раздел определяет, как осуществляется связь, когда одно из устройств (инициатор или ответчик) находится на более старой версии, чем другое устройство.
Случай 1: Канал связи на основе соединения
В этом разделе описываются случаи использования канала связи на основе соединения, где Ranging Capability Request
является первым сообщением, отправленным устройством-инициатором.
Случай 1.a: Инициатор поддерживает более новую версию, ответчик поддерживает более старую версию спецификации.
Устройство-инициатор отправляет сообщение Ranging Capability Request
с новой версией. Устройство-ответчик поддерживает только старую версию, поэтому оно отвечает ею, а затем старая версия ответчика используется для остальной части обмена сообщениями. Это означает, что сообщение Ranging Capability Request
должно быть обратно совместимым.
Случай 1.b: Инициатор поддерживает старую версию, ответчик поддерживает новую версию спецификации.
Устройство-ответчик видит, что устройство-инициатор не может использовать более новую версию, поэтому оно отправляет сообщения только с использованием старой версии, изначально запрошенной устройством-инициатором.
Случай 2: Рекламный канал коммуникации
В этом разделе описываются случаи использования канала связи на основе объявлений, когда устройство-ответчик напрямую объявляет Ranging Capability Request
, без первоначального запроса.
Случай 2.a: Инициатор поддерживает более новую версию, ответчик поддерживает более старую версию спецификации.
Для остальной части коммуникации используется более старая версия, установленная в объявлении Ranging Capability Response
.
Случай 2.b: Инициатор поддерживает старую версию, ответчик поддерживает новую версию спецификации.
Новая версия объявления Ranging Capability Response
должна быть обратно совместимой, чтобы устройство-инициатор могло прочитать сообщение, даже если оно использует более новую версию. Затем устройство-инициатор отправляет сообщение Ranging Configuration
используя более старую версию, которую оно поддерживает. Это версия, которая используется для остальной части коммуникации.
Чтобы обеспечить обратную совместимость Ranging Capability Response
, любые новые поля, которые добавляются в следующую версию этой спецификации в полезной нагрузке сообщения Ranging Capability Response
должны быть добавлены в конец полезной нагрузки, и ни одно из существующих полей не может быть изменено. При разборе конфигурации, если указанный размер больше ожидаемого, дополнительные поля должны игнорироваться любым устройством, которое может понимать только старую версию спецификации.
Фрагментация
Эта спецификация не зависит от канала связи, поэтому она не определяет, как фрагментировать полезную нагрузку сообщения в случаях, когда одно сообщение слишком велико, чтобы поместиться в пакет передачи используемого канала связи. Модуль ранжирования ожидает получения каждого сообщения в его полной форме. Ответственность за фрагментацию лежит на реализаторе канала связи OOB.
Специфика ранжирования-технологии
В этом разделе содержатся сведения, касающиеся технологии измерения дальности.
Особенности сверхширокополосной связи (UWB)
В этом разделе описываются особенности сверхширокополосной связи.
Идентификаторы конфигурации
Данные конфигурации OOB, обмениваемые для UWB, не содержат полный набор доступных настраиваемых параметров, которые требуются UWB для запуска сеанса ранжирования UWB. Это происходит потому, что некоторые параметры неявно выбираются выбранным идентификатором конфигурации.
Каждый идентификатор конфигурации представляет собой набор предопределенных параметров конфигурации UWB, которые документированы в UwbRangingParams
. Устройство-ответчик отправляет список всех идентификаторов конфигурации, которые оно поддерживает, как часть сообщения-ответа о возможностях, а инициатор выбирает один из поддерживаемых идентификаторов конфигурации, который будет использоваться. Это позволяет обмениваться меньшим набором параметров конфигурации во время OOB. Это также ограничивает количество возможных комбинаций параметров, которые могут использоваться для ранжирования с помощью UWB, что делает возможным тестирование только разрешенных комбинаций параметров.
Запрос возможностей после каждого сеанса UWB
После остановки текущего сеанса UWB и перед началом нового сеанса UWB устройство-инициатор должно запросить возможности устройства-ответчика и заново установить параметры конфигурации, поскольку адрес UWB может измениться сразу после завершения текущего сеанса измерения дальности.
Особенности зондирования канала BLE (CS)
В этом разделе описываются конкретные детали зондирования каналов.
Требуемая связь между устройствами
Для работы ранжирования с использованием зондирования каналов требуется существующая связь между инициатором и устройством-ответчиком. Эта спецификация не предоставляет способа создания связи между устройствами. Пользователь API ранжирования должен установить эту связь между устройствами.
Требуются действия со стороны ответчика для CS
В UWB оба устройства должны явно вызывать API начала и остановки измерения UWB. Напротив, для CS требуется только устройство-инициатор для начала измерения CS путем вызова стека Bluetooth (BT). Остальная часть инициализации на стороне ответчика происходит в диапазоне через BT. Это означает, что при получении сообщения Ranging Configuration
или сообщения Stop Ranging
для CS ответчику не нужно ничего делать, если BT включен. Устройство-ответчик может использовать эти сообщения в качестве триггера для обновления пользовательского интерфейса или, например, мигания светодиодов устройства.