Android 16 では、測距モジュールが導入されました。このプロトコルとペイロードの仕様は、測距に関与するイニシエータ デバイスとレスポンダ デバイスの間で、測距構成の交換、測距の開始と停止に使用される帯域外(OOB)通信のメッセージ シーケンスとペイロードを定義します。Android 16 QPR3 では、この仕様のバージョン 2 が導入されています。
このページの主な目的は、Android 以外のデバイス プロバイダがこの仕様を実装して、デバイスを Android デバイスとの距離測定に対応できるようにすることです。
Google の Packet Description Language(PDL)でのこの仕様の実装は、GitHub で入手できます。この実装から、PDL コンパイラは、この仕様で定義されたメッセージのシリアル化コードと逆シリアル化コードを生成できます。C++、Rust、Java など、さまざまなターゲット言語をサポートしています。
バージョン 2 の新機能
OOB 仕様のバージョン 2 では、次の変更が導入されています。
- テクノロジーの切り替え: アクティブなセッション中に、データ ストリームを中断することなく、測距テクノロジーを動的に切り替えることができます。
- 測距機能のレスポンス
- メイクビフォーブレイク技術の移行のサポートを示す新しい
Supported technology transitioningフィールドが含まれます。 - イニシエータがデバイス間の消費電力を最適化するために使用する新しい
Device typeフィールドが含まれます。
- メイクビフォーブレイク技術の移行のサポートを示す新しい
エンディアン
特に指定がない限り、メッセージ内のマルチバイト数値フィールドはすべてリトル エンディアン順です。
メッセージとメッセージ シーケンス
このセクションでは、メッセージとメッセージ交換のシーケンスについて説明します。
次の表に、OOB 交換に存在するすべてのメッセージを示します。
| メッセージ | メッセージ ID |
|---|---|
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 を送信することから始まります。レスポンダー デバイスは、図 1 に示すように Ranging
Capability Response を送信して応答します。
図 1. 接続ベースの通信チャネルを使用した OOB メッセージ交換。
広告ベースの通信チャネルの場合、レスポンダー デバイスはまず Ranging Capability をアドバタイズします。この場合、Ranging Capability Request は開始デバイスから送信されません。代わりに、アドバタイジングを検出した後、開始側(初期スキャナ)デバイスの準備が整うと、図 2 に示すように、最初のメッセージとして Ranging Configuration をアドバタイジングすることで応答します。
図 2. アドバタイズメント ベースの通信を使用した OOB メッセージ交換。
残りのメッセージ交換はどちらの場合も同じです。レスポンダー デバイスは、Ranging Configuration メッセージを受信するとすぐに距離測定を開始します。レスポンダー デバイスは、Stop
Ranging メッセージを受信または検出すると、測距を停止します。
接続ベースのフローでは、レスポンダー デバイスは Ranging Capability Request メッセージでリクエストされた測距テクノロジーの機能のみを入力しますが、アドバタイズ フローでは、先行する機能リクエスト メッセージがないため、レスポンダー デバイスはすべての機能をリストする必要があります。
イニシエータ デバイスは、送信するリクエスト メッセージに対するレスポンスを 1 つだけ受信することを想定しています。レスポンダー デバイスは、任意の順序で任意のリクエストに応答できるように、そのような想定をしてはなりません。これにより、レスポンダー デバイスがイニシエーター デバイスからの複数の連続した Ranging Capability Request メッセージや、順序が異なるメッセージに応答できることが検証されます。
テクノロジーの移行
OOB バージョン 2 仕様では、テクノロジー移行の明示的なサポートが導入されています。これにより、デバイスはセッション中にさまざまな測距テクノロジーを動的に切り替えることができます。この処理を容易にするため、イニシエータは次の操作を行うことができます。
- 複数の
Ranging Configurationメッセージを送信して、新しいテクノロジーを開始します。 - 複数の
Stop Rangingメッセージを送信して、アクティブなテクノロジーを停止します。
これらのメッセージの順序は、レスポンダがサポートする移行スキームによって異なります。
- ブレーク ビフォー メイク: イニシエータは、
Stop Rangingメッセージで最初のテクノロジーを停止してから、Ranging Configurationメッセージで 2 番目のテクノロジーを開始することによってのみ、新しいテクノロジーに移行できます。 - make-before-break: イニシエータは、
Stop Rangingメッセージで既存のテクノロジーを停止する前に、Ranging Configurationメッセージを使用して新しいテクノロジーを開始できます。
レスポンダーは、Capability Response の supported technology transitioning フィールドの値に従って、これらの移行スキームのいずれかのサポートを実装する必要があります。
測距テクノロジー ID
測距テクノロジーの ID を次の表に示します。
| 測距テクノロジー | ID |
|---|---|
| UWB | 0x0 |
| CS | 0x1 |
| Wi-Fi NAN RTT | 0x2 |
| RSSI | 0x3 |
| RFU | 0x4 - 0xFF |
これらの ID は、測距テクノロジー ID が必要な次の表で使用されます。測距テクノロジーのビットフィールドを含むフィールドの場合、そのテクノロジーがビットフィールドに含まれると、テクノロジーの ID のインデックスに対応するビットが設定されます。
たとえば、RSSI の ID 値は 3 ですが、RSSI が測距テクノロジーのビットフィールドに含まれている場合、ID(3)の位置にあるビットをオンにする必要があります(最初のビットは位置 0 にあります)。これにより、ビットフィールドの結果の値は 0x8 になります。UWB と RSSI の両方が含まれている場合、ビットフィールドの値は 0x0A(ビット 0 と 3 の両方がオン)になります。
メッセージの形式
各メッセージはヘッダーとペイロードで構成されます。
図 3. メッセージ形式。
ヘッダー
サイズ: 2 バイト
説明: すべてのメッセージに共通するヘッダーは、メッセージの最初の部分です。ヘッダーには、バージョンとメッセージ タイプの ID が含まれます。バージョン フィールドには、メッセージの内容が準拠するこの仕様のバージョンを指定します。この仕様の現在のバージョンは 2 です。異なるバージョンのデバイス間でバージョニングがどのように使用されるかについて詳しくは、バージョニングをご覧ください。ヘッダーはさまざまなバージョン間で下位互換性が維持されるため、ユースケースは常にヘッダーを解析して、メッセージのバージョンと ID を特定できます。
ヘッダーの概要は次の表のとおりです。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8 | バージョン |
|
| 1 | unit8 | メッセージ ID |
|
ペイロード
サイズ: 可変(メッセージの種類によって異なる)
説明: ペイロードは、メッセージの最後の部分で、ヘッダーの後に続きます。ペイロードはメッセージのタイプによって異なります。各メッセージ タイプのペイロードの形式は、次のセクションで定義されています。
距離測定機能リクエスト メッセージ ペイロード
サイズ(ヘッダー サイズは含まれません): 2 バイト
説明: メッセージ交換を開始するためにイニシエータ デバイスから送信されます。通信チャネルが広告に基づく場合、このメッセージは省略可能です。この場合、レスポンダー デバイスは最初のステップとして Ranging
Capability メッセージをアドバタイズする必要があります。イニシエータ デバイス(最初のスキャナ)はアドバタイズメントを読み取り、Ranging Capability メッセージで直接応答するため、このメッセージは不要になります。
次の表に、Ranging Capability Request メッセージ ペイロードの概要を示します。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8*2 | リクエストされた距離測定テクノロジーのビットフィールド |
|
Ranging Capability Response メッセージ ペイロード
サイズ(ヘッダー サイズは含まれません): 可変(共通部分 2 バイト + 含まれる各測距テクノロジー バイトのサイズ)
説明: Ranging Capability
Request メッセージへのレスポンスとしてレスポンダーによって送信されます。このメッセージ ペイロードは、次の表に示すように、共通部分と測距テクノロジー固有の部分(BLE CS、Wi-Fi NAN RTT、BLE RSSI)で構成されています。各測距技術固有の部分は、その測距技術がレスポンダ デバイスでサポートされ、Ranging Capability Request メッセージでリクエストされている場合にのみ追加する必要があります。広告通信チャネルの場合、サポートされているすべての測距技術を含める必要があります。
一般的な Ranging Capability Response メッセージ ペイロードを次の表にまとめます。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8*2 | サポートされている測距テクノロジーのビットフィールド。ペイロードの残りの部分で続く測距テクノロジーの機能のセットを示します。 |
|
| 2 | バイト配列 | 測距テクノロジー機能のバイト数。 | テクノロジーごとに定義された構造体の繰り返しブロック。 |
| 場合によって異なる | uint8 | テクノロジーの移行のサポートを示します。 |
|
| 場合によって異なる | uint16 | レスポンダー デバイスのタイプを示します。 |
|
UWB Ranging Capability Response メッセージ ペイロードを次の表にまとめます。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8 | 測距テクノロジー ID | 0x0 - UWB |
| 1 | uint8 | サイズ | UWB 機能のサイズ(テクノロジー ID フィールドとサイズ フィールドを含む)(バイト単位)。 |
| 2 | uint8*2 | UWB アドレス | 2 バイトのデバイス UWB アドレス。 |
| 4 | uint8*4 | サポートされるチャネルのビットフィールド | サポートされているチャネルのビットフィールド。ビットが 0 に設定されている場合は対象外であることを示し、1 に設定されている場合はサポートされていることを示します。ビット 0 はチャンネル 0 に対応します。LSB == channel 0MSB == channel 31 |
| 8 | uint8*4 | サポートされているプリアンブル インデックス ビットフィールド | サポートされているプリアンブル インデックスのビットフィールド。ビットが 0 に設定されている場合は対象外であることを示し、1 に設定されている場合はサポートされていることを示します。ビット 0 はプリアンブル インデックス 1 に対応します。LSB == preamble index 1MSB == preamble index 32 |
| 12 | uint8*4 | サポートされている構成 ID のビットフィールド | サポートされている UWB 構成 ID のビットフィールド。ビットが 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 | 測距テクノロジー ID | 0x1 - BLE CS |
| 1 | uint8 | サイズ | BLE CS 機能のサイズ(バイト単位)(Technology ID フィールドと Size フィールドを含む)。 |
| 2 | uint8 | サポートされているセキュリティ タイプのビットフィールド | BLE CS でサポートされているセキュリティ タイプのビットフィールド。
|
| 3 | uint8*6 | デバイスの住所 | BLE CS に使用されるデバイスのアドレス(ビッグ エンディアン順)。 |
Wi-Fi NAN RTT Ranging Capability Response メッセージ ペイロードの概要を次の表に示します。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8 | 測距テクノロジー ID | 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 | 測距テクノロジー ID | 0x3 - BLE RSSI |
| 1 | uint8 | サイズ | BLE RSSI 機能のサイズ(テクノロジー ID フィールドとサイズ フィールドを含む)(バイト単位) |
| 2 | uint8*6 | デバイスの住所 | BLE RSSI に使用されるデバイスのアドレス(ビッグ エンディアン順) |
Ranging Configuration メッセージ ペイロード
サイズ(ヘッダー サイズは含まれません): 可変(共通部分 4 バイトと、含まれる各測距テクノロジーのバイト数の合計)。
説明: このメッセージはイニシエータによって送信され、各測距テクノロジーが測距を開始できる構成が含まれています。レスポンダー デバイスは、このメッセージを受信すると、示された各測距テクノロジーで測距を開始しようとしなければなりません。このメッセージ ペイロードは、次の表に示すように、共通部分と測距テクノロジー固有の部分(UWB、BLE CS、Wi-Fi NAN RTT、BLE RSSI)で構成されます。
一般的な Ranging Configuration メッセージ ペイロードを次の表にまとめます。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8*2 | 距離測定テクノロジーの構成セットのビットフィールド | このメッセージに構成データが含まれており、構成パラメータを設定する必要があるレンジング テクノロジーのビットフィールド。
|
| 2 | uint8*2 | ビットフィールド | RFU。測距技術の構成セット ビットフィールド フィールドと同じ値に設定する必要があります。 |
| 4 | バイト配列 | 距離測定技術の構成バイト | テクノロジーごとに定義された構造体の繰り返しブロック |
次の表に、UWB Ranging Configuration メッセージ ペイロードの概要を示します。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8 | 測距テクノロジー ID | 0x0 - UWB |
| 1 | uint8 | サイズ | UWB 構成のサイズ(テクノロジー ID フィールドとサイズ フィールドを含む)(バイト単位) |
| 2 | uint8*2 | UWB アドレス | 2 バイトのデバイス UWB アドレス |
| 4 | uint8*4 | セッション ID | 生成されたセッション ID。セッション ID は、スマートフォンと周辺機器間の測距セッションの一意の識別子です。 |
| 8 | uint8 | 選択した構成 ID | 選択した構成 ID 番号(整数)。構成 ID は、UWB 距離測定セッションで使用する必要があるタイミング パラメータとセキュリティ タイプを指定します。 |
| 9 | uint8 | 選択したチャンネル | UWB 測距セッション用に選択されたチャネル |
| 10 | uint8 | 選択された前文のインデックス | UWB 距離測定セッション用に選択されたプリアンブル インデックス |
| 11 | uint8*2 | 選択した測距間隔 | 選択された測距間隔のレート(ミリ秒単位)。使用できる値(ミリ秒単位):
|
| 13 | uint8 | 選択した時間枠の長さ | 選択したスロットの再生時間(ミリ秒単位)。使用できる値(ミリ秒単位):
|
| 14 | uint8 | セッション キーの長さ | セッションキーの長さ(バイト単位) |
| 15 | バイト配列 | セッションキー | セッションキー。S-STS が使用されている場合、最初の 2 バイトはベンダー ID で、次の 6 バイトは静的 STS IV です。P-STS が使用されている場合、これは 16 バイトまたは 32 バイトのセッション キーです。使用されるセキュリティのタイプは、構成 ID によって決まります。 |
| 端末によって異なります。 | uint8*2 | 国コード | ISO 3166-1 alpha-2 の国コード。2 つの ASCII 文字で表されます。 |
| 端末によって異なります。 | uint8 | 選択したデバイスの役割 |
|
| 端末によって異なります。 | uint8 | 選択したデバイスモード |
|
BLE CS Ranging Configuration メッセージ ペイロードの概要を次の表に示します。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8 | 測距テクノロジー ID | 0x1 - BLE CS |
| 1 | uint8 | サイズ | BLE CS 構成のサイズ(Technology ID フィールドと Size フィールドを含む)(バイト単位) |
| 2 | uint8 | 選択したセキュリティ タイプ | 選択されたセキュリティ タイプ。使用できる値:
|
| 3 | uint8*6 | デバイスの住所 | BLE CS に使用されるデバイスのアドレス(ビッグ エンディアン順) |
Wi-Fi NAN RTT Ranging Configuration メッセージ ペイロードの概要を次の表に示します。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8 | 測距テクノロジー ID | 0x2 - Wi-Fi NAN RTT |
| 1 | uint8 | サイズ | Wi-Fi NAN RTT 構成のサイズ(テクノロジー ID フィールドとサイズ フィールドを含む)(バイト単位) |
| 2 | uint8 | サービス名の長さ | [Service name] フィールドの長さ(バイト単位)。Wi-Fi Aware 仕様 v4.0 セクション 1.3.3 表 1 を参照してください。定義。 |
| 3 | バイト配列 | サービス名 | サービス名。Wi-Fi Aware 仕様 v4.0 セクション 1.3.3 表 1 を参照してください。定義。 |
| 端末によって異なります。 | uint8 | デバイスの役割 |
|
| 端末によって異なります。 | uint8 | 定期的な測距を使用する |
|
BLE RSSI Ranging Configuration メッセージ ペイロードの概要を次の表に示します。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8 | 測距テクノロジー ID | 0x3 - BLE RSSI |
| 1 | uint8 | サイズ | BLE RSSI 構成のサイズ(テクノロジー ID フィールドとサイズ フィールドを含む)(バイト単位) |
| 2 | uint8*6 | デバイスの住所 | BLE RSSI に使用されるデバイスのアドレス(ビッグ エンディアン順) |
Ranging Configuration Response メッセージ ペイロード
サイズ(ヘッダー サイズは含まれません): 2 バイト
説明: このメッセージは、Ranging Configuration メッセージへのレスポンスとしてレスポンダーによって送信されます。このメッセージは省略可能です。使用するコミュニケーション チャネルでリクエストごとに明示的なレスポンスが必要な場合にのみ必要です。
Ranging Configuration Response メッセージ ペイロードの概要を次の表に示します。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8*2 | Ranging technologies configuration set successfully bitfield(Ranging テクノロジーの構成が正常に設定されたビットフィールド) | 正常に設定された測距テクノロジーのビットフィールド。ビットフィールドは、テクノロジーがリクエストされ、正常に設定された場合、レンジング テクノロジー ビットを 1 に設定し、それ以外の場合は 0 に設定します。
|
Stop Ranging メッセージ ペイロード
サイズ(ヘッダー サイズは含まれません): 2 バイト
説明: このメッセージは、指定された測距テクノロジーによる測距を停止するタイミングになったときに、イニシエータ デバイスによって送信されます。
次の表に、Stop Ranging メッセージ ペイロードの概要を示します。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8*2 | ビットフィールドを停止する測距テクノロジー | レンジングを停止する必要があるレンジング テクノロジーのビットフィールド。ビットが 1 に設定されている場合は、測距テクノロジーが測距を停止する必要があることを示します。0 に設定されている場合は、測距テクノロジーがそもそも測距していなかったか、すでに測距している場合は測距を継続する必要があることを示します。一部の測距テクノロジー(CS など)では、測距はイニシエータ側でのみ開始および停止されるため、これは no-op です。
|
Stop Ranging Response メッセージ ペイロード
サイズ(ヘッダー サイズは含まれません): 2 バイト
説明: このメッセージは、Stop Ranging メッセージへのレスポンスとしてレスポンダーによって送信されます。このメッセージは省略可能です。使用するコミュニケーション チャネルでリクエストごとに明示的なレスポンスが必要な場合にのみ必要です。
次の表に、Stop Ranging Response メッセージ ペイロードの概要を示します。
| オクテット | データ型 | 説明 | 値 |
|---|---|---|---|
| 0 | uint8*2 | Ranging technologies stopped successfully bitfield | 測距が正常に停止した測距テクノロジーのビットフィールド。このビットフィールドは、停止がリクエストされ、停止が正常に完了した場合に、測距テクノロジー ビットを 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 メッセージ ペイロードでこの仕様の次のバージョンに追加される新しいフィールドは、ペイロードの末尾に追加する必要があります。既存のフィールドは変更できません。構成を解析する際、示されたサイズが想定よりも大きい場合、古いバージョンの仕様しか理解できないデバイスは追加のフィールドを無視しなければなりません。
断片化
この仕様は通信チャネルに依存しないため、1 つのメッセージが大きすぎて使用する通信チャネルの転送パケットに収まらない場合に、メッセージ ペイロードをどのように分割するかは定義していません。Ranging モジュールは、各メッセージを完全な形式で受信することを想定しています。フラグメンテーションの責任は、OOB 通信チャネルの実装者にあります。
Ranging-technology-specifics
このセクションでは、測距テクノロジーに固有の詳細について説明します。
超広帯域無線(UWB)の詳細
このセクションでは、超広帯域無線に関する詳細について説明します。
構成 ID
UWB 用に交換される OOB 構成データには、UWB 測距セッションを開始するために UWB が必要とする構成可能なパラメータの完全なセットが含まれていません。これは、選択した構成 ID によって一部のパラメータが暗黙的に選択されるためです。
各 config ID は、UwbRangingParams に記載されている事前定義済みの UWB 構成パラメータのセットです。レスポンダー デバイスは、サポートするすべての構成 ID のリストをケーパビリティ レスポンス メッセージの一部として送信し、イニシエーターは使用するサポート対象の構成 ID の 1 つを選択します。これにより、OOB 中に交換される構成パラメータのセットが小さくなります。また、UWB での距離測定に使用できるパラメータの組み合わせの数も制限されるため、許可されたパラメータの組み合わせのみをテストできます。
各 UWB セッション後にケーパビリティをリクエストする
既存の UWB セッションを停止した後、新しい UWB セッションを開始する前に、イニシエータ デバイスはレスポンダ デバイスの機能をリクエストし、構成パラメータを再度設定する必要があります。これは、現在の測距セッションが終了するとすぐに UWB アドレスがローテーションされる可能性があるためです。
BLE チャネル サウンディング(CS)の詳細
このセクションでは、チャンネル サウンディングの具体的な詳細について説明します。
デバイス間のペア設定が必要
チャネル サウンディングを使用した測距を機能させるには、イニシエータとレスポンダ デバイス間の既存のボンドが必要です。この仕様では、デバイス間のペア設定を作成する方法は規定されていません。Ranging API のユーザーは、デバイス間でこの接続を確立する必要があります。
CS の回答者側で必要な対応
UWB では、両方のデバイスが UWB の距離測定の開始と停止の API を明示的に呼び出す必要があります。一方、CS では、Bluetooth(BT)スタックを呼び出して CS 測距を開始するために、イニシエータ デバイスのみが必要です。レスポンダー側の残りの初期化は、BT を介して帯域内で行われます。つまり、レスポンダー側は、CS の Ranging Configuration メッセージまたは Stop Ranging メッセージを受信したときに、BT が有効になっていれば何もする必要はありません。レスポンダー デバイスは、これらのメッセージをトリガーとして使用して、UI を更新したり、デバイスの LED を点滅させたりできます。