Android 16 導入了測距模組。這項通訊協定和酬載規格定義了訊息序列,以及用於交換測距設定的頻外 (OOB) 通訊酬載,並定義了啟動器和回應器裝置之間啟動及停止測距的程序。
這個頁面的主要目標是協助非 Android 裝置供應商實作這項規格,讓他們的裝置能與 Android 裝置相容,並進行測距。
訊息和訊息序列
本節說明訊息和訊息交換順序。
下表顯示 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
。而是偵測到廣告後,在啟動 (初始掃描器) 裝置準備就緒時,以廣告 Ranging Configuration
做為第一則訊息來回應,如圖 2 所示:
圖 2. 使用以廣告為基礎的通訊方式交換 OOB 訊息。
在這兩種情況下,其餘的訊息交換程序都相同。回應器裝置收到 Ranging Configuration
訊息後,會立即開始測距。回應裝置收到或偵測到 Stop
Ranging
訊息後,就會停止測距。
在連線式流程中,回應端裝置只會填入 Ranging Capability Request
訊息中要求的測距技術功能,而在廣告流程中,回應端裝置必須列出所有功能,因為沒有先前的功能要求訊息。
發起端裝置會假設傳送的任何要求訊息只會收到一個回應。回應裝置不得做出任何這類假設,才能依任何順序回應任何要求。這可確保回應者裝置能回應來自發起者裝置的多則連續 Ranging Capability Request
訊息,或任何其他順序錯亂的訊息。
測距技術 ID
下表列出測距技術的 ID:
測距技術 | ID |
---|---|
UWB | 0x0 |
CS | 0x1 |
Wi-Fi NAN RTT | 0x2 |
RSSI | 0x3 |
RFU | 0x4 - 0xFF |
在需要測距技術 ID 的下列表格中,會使用這些 ID。如果是包含測距技術 bitfield 的欄位,當該技術納入 bitfield 時,系統會設定與技術 ID 索引相應的位元。
舉例來說,RSSI 的 ID 值為 3,但如果 RSSI 包含在測距技術位元欄位中,則 ID (3) 位置的位元必須開啟 (第一個位元位於位置 0),這會使位元欄位的結果值為 0x8。如果同時包含 UWB 和 RSSI,則位元欄位的值為 0x0A (位元 0 和 3 都已開啟)。
郵件格式
每則訊息都包含標頭和酬載。
圖 3. 訊息格式。
標頭
大小:2 個位元組
說明:標頭是所有郵件的共同部分,也是郵件的第一個部分。標頭包含版本和郵件類型 ID。version 欄位會指定訊息內容所符合的規格版本。本規格的目前版本為 1
。如要進一步瞭解不同版本裝置間的版本管理方式,請參閱「版本管理」。標頭在不同版本之間保持回溯相容性,因此使用案例一律可以剖析標頭,判斷訊息的版本和 ID。
標頭摘要如下表所示:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 版本 | 0x1 - 目前版本 |
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 | 位元組陣列 | 測距技術功能位元組。 | 根據技術定義的重複結構體區塊。 |
下表摘要說明 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 0 MSB == channel 31 |
8 | uint8*4 | 支援的前序索引位元欄位 | 支援的前序索引位元欄位。位元設為 0 表示不支援,設為 1 表示支援。位元 0 對應於前置信號索引 1。LSB == preamble index 1 MSB == 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 功能位元組的大小 (包括「技術 ID」和「大小」欄位),以位元組為單位。 |
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 是指手機與周邊裝置之間測距工作階段的專屬 ID。 |
8 | uint8 | 選取的設定 ID | 以整數形式選取設定 ID 號碼。設定 ID 會指定 UWB 測距工作階段必須使用的時間參數和安全類型。 |
9 | uint8 | 選取的頻道 | UWB 測距工作階段的選定通道 |
10 | uint8 | 選取前言索引 | UWB 測距工作階段選取的序文索引 |
11 | uint8*2 | 選取的測距間隔 | 選取的測距間隔率 (以毫秒為單位)。允許的值 (以毫秒為單位):
|
13 | uint8 | 選取的時段長度 | 所選時段的長度 (以毫秒為單位)。允許的值 (以毫秒為單位):
|
14 | uint8 | 工作階段金鑰長度 | 工作階段金鑰長度 (以位元組為單位) |
15 | 位元組陣列 | 工作階段金鑰 | 工作階段金鑰。如果使用 S-STS,前兩個位元組是供應商 ID,後六個位元組是靜態 STS IV。如果使用 P-STS,則為 16 位元組或 32 位元組的工作階段金鑰。使用的安全性類型取決於設定 ID。 |
非固定 | uint8*2 | 國家/地區代碼 | ISO 3166-1 alpha-2 國家/地區代碼,以兩個 ASCII 字元表示 |
非固定 | uint8 | 所選裝置角色 |
|
非固定 | uint8 | 選取的裝置模式 |
|
下表匯總了 BLE CS Ranging Configuration
訊息的酬載:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 測距技術 ID | 0x1 - BLE CS |
1 | uint8 | 大小 | BLE CS 設定的大小 (包括「技術 ID」和「大小」欄位),以位元組為單位 |
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 | 服務名稱長度 | 服務名稱欄位的長度 (以位元組為單位)。請參閱 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 | 已成功設定測距技術位元欄位 | 已成功設定的測距技術位元欄位。如果已要求並成功設定技術,位元欄位會將測距技術位元設為 1,否則設為 0。
|
停止傳送測距訊息酬載
大小 (不含標頭大小):2 個位元組
說明:當指定測距技術的測距作業即將停止時,發起端裝置會傳送這則訊息。
下表摘要說明 Stop Ranging
訊息酬載:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8*2 | 停止位元欄位的測距技術 | 必須停止測距的測距技術位元欄位。位元設為 1 表示測距技術必須停止測距,設為 0 則表示測距技術原本就未測距,或必須繼續測距 (如果原本就在測距)。對於某些測距技術 (例如 CS),這項作業不會執行任何動作,因為測距作業只會在發起端啟動和停止。
|
停止測距回應訊息酬載
大小 (不含標頭大小):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
訊息酬載的結尾,且不得修改任何現有欄位。剖析設定時,如果指出的大小大於預期,任何只能瞭解舊版規格的裝置都必須忽略其他欄位。
片段化
這項規格與通訊管道無關,因此不會定義如何將訊息酬載片段化,以免單一訊息過大,無法放入所用通訊管道的傳輸封包。Ranging 模組預期會收到完整形式的每則訊息。OOB 通訊管道的實作者有責任處理片段化問題。
Ranging-technology-specifics
本節包含測距技術的詳細資料。
超寬頻 (UWB) 規格
本節說明超寬頻的詳細資訊。
設定 ID
為 UWB 交換的 OOB 設定資料不包含 UWB 啟動 UWB 測距工作階段所需的完整可設定參數。這是因為所選設定 ID 會隱含選取部分參數。
每個設定 ID 都是一組預先定義的 UWB 設定參數,詳情請參閱UwbRangingParams
。回應端裝置會傳送支援的所有設定 ID 清單,做為功能回應訊息的一部分,而啟動端會選取其中一個支援的設定 ID。這樣一來,OOB 期間交換的設定參數集就會比較小。這也限制了可搭配 UWB 測距的參數組合數量,因此只能測試允許的參數組合。
在每個 UWB 工作階段後要求功能
停止現有 UWB 工作階段後,發起端裝置必須先要求回應端裝置的功能,然後才能啟動新的 UWB 工作階段,並再次設定設定參數,因為目前的測距工作階段一結束,UWB 位址就會輪替。
BLE 頻道探測 (CS) 具體細節
本節將說明通道探測的具體詳細資料。
裝置間必須建立連結
如要使用通道探測進行測距,發起端和回應端裝置之間必須有現存的繫結。這項規格並未提供在裝置間建立繫結的方法。Ranging API 的使用者必須在裝置之間建立此連結。
CS 回覆者必須採取行動
在 UWB 中,兩部裝置都必須明確呼叫 UWB 開始測距和停止測距 API。相較之下,對於 CS,只需要啟動裝置呼叫藍牙 (BT) 堆疊,即可開始 CS 測距。回應端其餘的初始化作業會透過 BT 頻帶內進行。也就是說,如果已啟用 BT,回應端收到 CS 的 Ranging Configuration
或 Stop Ranging
訊息時,不需要採取任何動作。回應端裝置可以使用這些訊息做為觸發條件,更新 UI 或閃爍裝置 LED 等。