В 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. Обмен внеполосными сообщениями с использованием рекламной коммуникации.
Остальная часть обмена сообщениями в обоих случаях одинакова. Устройство-ответчик начинает измерение дальности сразу после получения сообщения Ranging Configuration
. Устройство-ответчик прекращает измерение дальности после получения или обнаружения сообщения Stop Ranging
.
В потоке, основанном на соединении, устройство-ответчик заполняет возможности только технологий определения дальности, запрошенных в сообщении Ranging Capability Request
, тогда как в потоке объявлений устройство-ответчик должно перечислить все свои возможности, поскольку предшествующее сообщение о запросе возможностей отсутствует.
Устройство-инициатор предполагает, что получит только один ответ на любое отправленное им сообщение-запрос. Устройство-ответчик не должно делать подобных предположений, чтобы иметь возможность отвечать на любые запросы в любом порядке. Это гарантирует, что устройство-ответчик сможет ответить на несколько последовательных запросов Ranging Capability Request
или на любые другие неупорядоченные сообщения от устройства-инициатора.
Идентификаторы технологий ранжирования
Идентификаторы технологий измерения дальности приведены в следующей таблице:
Технология измерения дальности | ИДЕНТИФИКАТОР |
---|---|
СШП | 0x0 |
CS | 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, BLE RSSI), как показано в таблицах ниже. Каждая часть, относящаяся к конкретной технологии определения дальности, должна быть добавлена только в том случае, если данная технология поддерживается устройством-ответчиком и запрошена в сообщении Ranging Capability Request
. В случае использования информационного канала связи должны быть включены все поддерживаемые технологии определения дальности.
Общая полезная нагрузка сообщения Ranging Capability Response
представлена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8*2 | Битовое поле «Поддерживаемые технологии измерения дальности». Указывает набор возможностей технологий измерения дальности, которые перечислены далее в полезной нагрузке. |
|
2 | байтовый массив | Байты возможностей технологии ранжирования. | Повторяющиеся блоки структур, определенные для каждой технологии. |
Полезная нагрузка сообщения Ranging Capability Response
UWB обобщена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор технологии ранжирования | 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 Response
представлена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор технологии ранжирования | 0x1 - BLE CS |
1 | uint8 | Размер | Размер байтов возможностей BLE CS (включая поля «Идентификатор технологии» и «Размер» ) в байтах. |
2 | uint8 | Поддерживаемый тип безопасности битовое поле | Битовое поле поддерживаемых типов безопасности для BLE CS.
|
3 | uint8*6 | Адрес устройства | Адрес устройства, используемого для BLE CS; в порядке от старшего к младшему. |
Ranging Capability Response
Wi-Fi NAN RTT обобщена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор технологии ранжирования | 0x2 - Wi-Fi NAN RTT |
1 | uint8 | Размер | Размер байтов возможностей BLE RSSI (включая поля «ID технологии» и «Размер ») в байтах. |
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 Response
представлена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор технологии ранжирования | 0x3 - BLE RSSI |
1 | uint8 | Размер | Размер байтов возможностей BLE RSSI (включая поля «ID технологии» и «Размер ») в байтах |
2 | uint8*6 | Адрес устройства | Адрес устройства, используемого для BLE RSSI; в порядке от старшего к младшему |
Полезная нагрузка сообщения конфигурации дальности
Размер (без учета размера заголовка): варьируется (общая часть 4 байта плюс размер каждого включенного байта технологии ранжирования).
Описание: Это сообщение отправляется инициатором и содержит конфигурации, с которыми каждая технология измерения дальности может начать измерение дальности. Устройство-ответчик должно попытаться начать измерение дальности с использованием каждой указанной технологии измерения дальности после получения этого сообщения. Полезная нагрузка сообщения состоит из общей части и частей, специфичных для конкретной технологии измерения дальности (UWB, BLE CS, Wi-Fi NAN RTT, BLE RSSI), как показано в следующих таблицах.
Общая Ranging Configuration
дальности представлена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8*2 | Битовое поле набора конфигураций технологий ранжирования | Битовое поле ранжирования технологий, для которых это сообщение содержит данные конфигурации и для которых должны быть установлены параметры конфигурации.
|
2 | uint8*2 | Битфилд | Запрос на доступ (RFU). Должно быть установлено то же значение, что и в битовом поле набора конфигурации технологий ранжирования . |
4 | байтовый массив | Байты конфигураций технологий ранжирования | Повторяющиеся блоки структур, определенные для каждой технологии |
Полезная нагрузка сообщения Ranging Configuration
UWB обобщена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор технологии ранжирования | 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), а следующие шесть байтов — статический STS IV. При использовании P-STS это сеансовый ключ длиной 16 или 32 байта. Тип используемой защиты определяется идентификатором конфигурации. |
варьируется | uint8*2 | Код страны | Код страны ISO 3166-1 alpha-2, представленный двумя символами ASCII |
варьируется | uint8 | Выбранная роль устройства |
|
варьируется | uint8 | Выбранный режим устройства |
|
Полезная нагрузка сообщения Ranging Configuration
BLE CS обобщена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор технологии ранжирования | 0x1 - BLE CS |
1 | uint8 | Размер | Размер конфигурации BLE CS (включая поля «Идентификатор технологии» и «Размер» ) в байтах |
2 | uint8 | Выбранный тип безопасности | Выбранный тип безопасности. Допустимые значения:
|
3 | uint8*6 | Адрес устройства | Адрес устройства, используемого для BLE CS; в порядке от старшего к младшему |
Полезная нагрузка сообщения Ranging Configuration
Wi-Fi NAN RTT обобщена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор технологии ранжирования | 0x2 - Wi-Fi NAN RTT |
1 | uint8 | Размер | Размер конфигурации Wi-Fi NAN RTT (включая поля «Идентификатор технологии» и «Размер ») в байтах |
2 | uint8 | Длина имени сервиса | Длина поля «Имя сервиса» в байтах. См. спецификацию Wi-Fi Aware версии 4.0, раздел 1.3.3, таблица 1. Определения. |
3 | байтовый массив | Название услуги | Имя сервиса. См. спецификацию Wi-Fi Aware версии 4.0, раздел 1.3.3, таблица 1. Определения. |
варьируется | uint8 | Роль устройства |
|
варьируется | uint8 | Использовать периодическое ранжирование |
|
Полезная нагрузка сообщения Ranging Configuration
BLE RSSI обобщена в следующей таблице:
Октет | Тип данных | Описание | Ценить |
---|---|---|---|
0 | uint8 | Идентификатор технологии ранжирования | 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, не содержат полного набора доступных настраиваемых параметров, необходимых UWB для запуска сеанса измерения дальности UWB. Это связано с тем, что некоторые параметры неявно выбираются выбранным идентификатором конфигурации.
Каждый идентификатор конфигурации представляет собой набор предопределённых параметров конфигурации UWB, описанных в UwbRangingParams
. Устройство-ответчик отправляет список всех поддерживаемых им идентификаторов конфигурации в составе сообщения-ответа о возможностях, а инициатор выбирает один из поддерживаемых идентификаторов конфигурации для использования. Это позволяет сократить набор параметров конфигурации для обмена во время OOB. Это также ограничивает количество возможных комбинаций параметров, которые можно использовать для дальномерности с помощью UWB, что делает возможным тестирование только разрешённых комбинаций параметров.
Запрос возможностей после каждого сеанса UWB
После остановки текущего сеанса UWB и перед началом нового сеанса UWB устройство-инициатор должно запросить возможности устройства-ответчика и заново установить параметры конфигурации, поскольку адрес UWB может измениться сразу после завершения текущего сеанса измерения дальности.
Особенности зондирования каналов BLE (CS)
В этом разделе описываются особенности зондирования каналов.
Требуемая связь между устройствами
Для работы функции измерения дальности с использованием зондирования каналов требуется существующее соединение между инициатором и устройством-ответчиком. Данная спецификация не предусматривает создание соединения между устройствами. Пользователь API измерения дальности должен установить это соединение между устройствами.
Требуются действия со стороны ответчика для CS
В UWB оба устройства должны явно вызывать API UWB для начала и завершения измерения дальности. В отличие от этого, в CS для начала измерения дальности CS требуется только устройство-инициатор, вызывающее стек Bluetooth (BT). Остальная инициализация на стороне ответчика происходит в полосе пропускания через Bluetooth. Это означает, что после получения сообщения Ranging Configuration
или сообщения Stop Ranging
для CS ответчику не нужно ничего делать, если Bluetooth включен. Устройство-ответчик может использовать эти сообщения в качестве триггера для обновления пользовательского интерфейса или, например, для мигания светодиодов устройства.