測距:頻外訊息序列和酬載規格

Android 16 推出了測距模組。此協定和酬載規格定義了訊息序列和酬載,用於在啟動端和參與測距的回應端裝置之間,交換測距設定,以及開始和停止測距。

本頁的主要目標是讓非 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 傳送至回應端裝置開始。回應裝置會傳送 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 訊息,或任何其他順序錯誤的訊息。

測距技術 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 位置的位元 (位於第 0 個位元),這會使位元欄位的最終值為 0x8。如果同時包含 UWB 和 RSSI,則位元欄的值為 0x0A (位元 0 和 3 都已開啟)。

郵件格式

每則訊息都包含標頭和酬載。

郵件格式

圖 3. 訊息格式。

大小:2 個位元組

說明:標頭是所有訊息中的第一個部分,標頭包含版本和郵件類型的 ID。版本欄位會指定訊息內容所遵循的規格版本。此規格的目前版本為 1。如要進一步瞭解如何在不同版本的裝置之間使用版本管理功能,請參閱「版本管理」。標頭在不同版本之間仍可向後相容,這表示用途一律可以剖析標頭,以判斷訊息的版本和 ID。

標頭摘要如下:

Octet 資料類型 說明
0 uint8 版本 0x1 - 目前版本
1 unit8 訊息 ID
  • 0x0 - Ranging Capability Request 訊息
  • 0x1 - Ranging Capability Response 訊息
  • 0x2 - Ranging Configuration 訊息
  • 0x3 - Ranging Configuration Response 訊息 (選用)
  • 0x6 - Stop Ranging 訊息
  • 0x7 - Stop Ranging Response 訊息 (選用)
  • 0x4-0x5, 0x8 - 0xFF RFU

酬載

大小:依訊息類型而定

說明:酬載是訊息的最後一部分,位於標頭之後。酬載取決於訊息類型。下列各節會定義每種個別訊息類型的酬載格式。

測距功能要求訊息酬載

大小 (不含標頭大小):2 個位元組

說明:由啟動裝置傳送,用於啟動訊息交換。如果通訊管道是透過廣告,則可選擇傳送此訊息,在這種情況下,回應裝置必須在第一步驟中廣告 Ranging Capability 訊息。發起端裝置 (初始掃描器) 會讀取廣告,並直接回覆 Ranging Capability 訊息,因此不需要這項訊息。

下表匯總了 Ranging Capability Request 訊息酬載:

Octet 資料類型 說明
0 uint8*2 要求的測距技術位元欄位
  • 0x01 - UWB
  • 0x02 - BLE 通道發出聲響
  • 0x04 - Wi-Fi NAN RTT
  • 0x08 - BLE RSSI
  • RFU

測距功能回應訊息酬載

大小 (不含標頭大小):會有所不同 (常見部分 2 個位元組加上每個納入的範圍技術位元組的大小)

說明:回覆者傳送,用於回覆 Ranging Capability Request 訊息。此訊息酬載包含一般部分和特定測距技術的部分 (BLE CS、Wi-Fi NAN RTT CS、BLE RSSI),如下表所示。只有在回應裝置支援該測距技術,且在 Ranging Capability Request 訊息中要求時,才需要新增各個測距技術專屬的部分。如果是廣告通訊管道,則必須納入所有支援的測距技術。

下表匯總了常見的 Ranging Capability Response 訊息酬載:

Octet 資料類型 說明
0 uint8*2 支援的測距技術位元欄位。指出後續酬載中其他部分的測距技術功能集。
  • 0x01 - UWB
  • 0x02 - BLE 通道發出聲響
  • 0x04 - Wi-Fi NAN RTT
  • 0x08 - BLE RSSI
  • RFU
2 位元組陣列 測距技術能力位元組。 每個技術定義的結構體重複區塊。

下表摘要說明 UWB Ranging Capability Response 訊息酬載:

Octet 資料類型 說明
0 uint8 測距技術 ID 0x0 - UWB
1 uint8 大小 UWB 功能位元組的大小 (包括 Technology IDSize 欄位),以位元組為單位。
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 支援的最低測距間隔 以毫秒為單位,表示支援的最快速度測量間隔。允許的值 (以毫秒為單位):
  • 96
  • 120
  • 240
  • 600
18 uint8 支援的廣告插播時間最短長度 以毫秒為單位,表示支援的最短時段長度。舉例來說,如果裝置傳回 1 毫秒,系統就會假設裝置也支援 2 毫秒以上的時段長度。允許的值 (以毫秒為單位):
  • 1
  • 2
19 支援的 UWB 裝置角色位元欄 支援的 UWB 角色位元欄位。舉例來說,如果兩者都支援,最終欄位值為 0x3。
  • 0x1 - 支援啟動者角色
  • 0x2 - 支援回應者角色

下表總結了 BLE CS Ranging Capability Request 訊息酬載:

Octet 資料類型 說明
0 uint8 測距技術 ID 0x1 - BLE CS
1 uint8 大小 BLE CS 功能位元組大小 (包括 Technology IDSize 欄位),以位元組為單位。
2 uint8 支援的安全性類型位元欄 BLE CS 支援的安全性類型位元欄位。
  • 0x01 - CS_SECURITY_LEVEL_UNKNOWN
  • 0x02 - CS_SECURITY_LEVEL_ONE
  • 0x04 - CS_SECURITY_LEVEL_TWO
  • 0x08 - CS_SECURITY_LEVEL_THREE
  • 0x10 - CS_SECURITY_LEVEL_FOUR
3 uint8*6 裝置地址 用於 BLE CS 的裝置位址,採用大端序順序。

下表摘要說明 Wi-Fi NAN RTT CS Ranging Capability Request 訊息酬載:

Octet 資料類型 說明
0 uint8 測距技術 ID 0x2 - Wi-Fi NAN RTT
1 uint8 大小 BLE RSSI 功能的大小 (以位元組為單位),包括 Technology IDSize 欄位。
2 uint8 支援功能位元遮罩 支援功能的位元欄位。
  • 0x01 - 支援 11mc
  • 0x02 - 支援 11az
3 uint8 支援定期測距
  • 0x0 - 不支援定期測距
  • 0x1 - 支援期間範圍
4 uint8 支援的頻寬 這項資訊有助於透過 Wi-Fi NAN 取得可行的測距精確度,並可協助應用程式判斷是否要使用 UWB、BLE CS、BLE RSSI 或 Wi-Fi NAN 進行測距。
  • 0x00 - 20 MHz
  • 0x01 - 40 MHz
  • 0x02 - 80 MHz
  • 0x03 - 160 MHz
  • 0x04 - 80+80 MHz
  • 0x05 - 320 MHz
  • RFU
5 uint8 支援的接收鏈結數量 這項資訊有助於透過 Wi-Fi NAN 取得可行的測距精確度,並可協助應用程式判斷是否要使用 UWB、BLE CS、BLE RSSI 或 Wi-Fi NAN 進行測距。
  • 0x00 - 未定義
  • 0x01 - 1 個 RX 鏈結
  • 0x02 - 2 個 RX 鏈結
  • 0x03 - 3 個 RX 鏈結
  • 0x04 - 4 個 RX 鏈結

下表摘要說明 BLE RSSI Ranging Capability Request 訊息酬載:

Octet 資料類型 說明
0 uint8 測距技術 ID 0x3 - BLE CS
1 uint8 大小 BLE RSSI 功能位元組大小 (包括 Technology IDSize 欄位),以位元組為單位
2 uint8*6 裝置地址 用於 BLE RSSI 的裝置地址,以大端序排序

測距設定訊息酬載

大小 (不含標頭大小):會有所不同 (常見部分 4 個位元組,加上每個所含範圍技術位元組的大小)。

說明:這則訊息由啟動端傳送,其中包含各個測距技術可用來啟動測距的設定。接收器裝置必須在收到此訊息時,嘗試使用每種指定的測距技術來測距。此訊息酬載包含通用部分和特定測距技術的部分 (UWB、BLE CS、Wi-Fi NAN RTT、BLE RSSI),如下表所示。

下表匯總了常見的 Ranging Configuration 訊息酬載:

Octet 資料類型 說明
0 uint8*2 測距技術設定組合位元欄 這個訊息包含設定資料的距離測量技術位元欄位,且必須設定相關設定參數。
  • 0x01 - UWB
  • 0x02 - BLE 通道發出聲響
  • 0x04 - Wi-Fi NAN RTT
  • 0x08 - BLE RSSI
  • RFU
2 uint8*2 Bitfield RFU。必須設為與 Ranging technologies configuration set bitfield 欄位相同的值。
4 位元組陣列 測距技術設定位元組 每項技術定義的結構體重複區塊

下表匯總了 UWB Ranging Configuration 訊息酬載:

Octet 資料類型 說明
0 uint8 測距技術 ID 0x0 - UWB
1 uint8 大小 UWB 設定大小 (包括 Technology IDSize 欄位),以位元組為單位
2 uint8*2 UWB 位址 2 個位元組的裝置 UWB 位址
4 uint8*4 工作階段 ID 產生的會話 ID。工作階段 ID 是手機和周邊裝置之間測距工作階段的專屬 ID。
8 uint8 所選設定 ID 已選取的 config ID 數字,以整數表示。設定 ID 會指定 UWB 測距工作階段必須使用的時間參數和安全性類型。
9 uint8 所選頻道 UWB 測距工作階段所選的通道
10 uint8 已選取的開頭索引 UWB 測距工作階段的所選前置字串索引
11 uint8*2 所選範圍間隔 所選的區間間隔率 (以毫秒為單位)。允許的值 (以毫秒為單位):
  • 96
  • 120
  • 240
  • 600
13 uint8 所選時段長度 所選時段的時間長度 (以毫秒為單位)。允許的值 (以毫秒為單位):
  • 1
  • 2
14 uint8 工作階段金鑰長度 工作階段鍵的長度 (以位元組為單位)
15 位元組陣列 工作階段金鑰 工作階段金鑰。如果使用 S-STS,則前兩個位元組為供應商 ID,後六個位元組為 STATIC STS IV。如果使用 P-STS,則這會是 16 位元組或 32 位元組的工作階段金鑰。系統會根據設定 ID 決定要使用的安全性類型。
非固定 uint8*2 國家/地區代碼 ISO 3166-1 alpha-2 國家/地區代碼,由兩個 ASCII 字元組成
非固定 uint8 所選裝置角色
  • 0x01 - 發起者
  • 0x02 - 回應者
非固定 uint8 已選取的裝置模式
  • 0x01 - 控制器
  • 0x02 - Controlee

下表總結了 BLE CS Ranging Configuration 訊息酬載:

Octet 資料類型 說明
0 uint8 測距技術 ID 0x1 - BLE CS
1 uint8 大小 BLE CS 設定大小 (包括 Technology IDSize 欄位),以位元組為單位
2 uint8 所選安全性類型 所選安全性類型。允許的值:
  • 0x0 - CS_SECURITY_LEVEL_UNKNOWN
  • 0x1 - CS_SECURITY_LEVEL_ONE
  • 0x2 - CS_SECURITY_LEVEL_TWO
  • 0x3 - CS_SECURITY_LEVEL_THREE
  • 0x4 - CS_SECURITY_LEVEL_FOUR
3 uint8*6 裝置地址 用於 BLE CS 的裝置位址,以大端序順序排列

下表匯總了 Wi-Fi NAN RTT Ranging Configuration 訊息酬載:

Octet 資料類型 說明
0 uint8 測距技術 ID 0x2 - Wi-Fi NAN RTT
1 uint8 大小 Wi-Fi NAN RTT 設定的大小 (包括 Technology IDSize 欄位),以位元組為單位
2 uint8 服務名稱長度 服務名稱欄位的長度 (以位元組為單位)。請參閱 Wi-Fi Aware 規格第 4.0 版第 1.3.3 節表 1。定義。
3 位元組陣列 服務名稱 服務名稱。請參閱 Wi-Fi Aware 規格第 4.0 版第 1.3.3 節表 1。定義。
非固定 uint8 裝置角色
  • 0x0 - 回應者 (NAN 服務發布者)
  • 0x1 - 發起者 (NAN 服務訂閱者)
非固定 uint8 使用定期測距
  • 0x0 - 已停用週期性測距
  • 0x1 - 已啟用定期測距

下表摘要說明 BLE RSSI Ranging Configuration 訊息酬載:

Octet 資料類型 說明
0 uint8 測距技術 ID 0x3 - BLE RSSI
1 uint8 大小 BLE RSSI 設定的大小 (包括 Technology IDSize 欄位),以位元組為單位
2 uint8*6 裝置地址 用於 BLE RSSI 的裝置地址,以大端序排序

測距設定回應訊息酬載

大小 (不含標頭大小):2 個位元組

說明:這是作答者傳送的訊息,用來回覆 Ranging Configuration 訊息。這則訊息為選用,只有在使用的通訊管道需要針對每項要求提供明確回應時才需要。

下表總結了 Ranging Configuration Response 訊息酬載:

Octet 資料類型 說明
0 uint8*2 已成功設定測距技術設定的位元欄 已成功設定的測距技術位元欄位。如果技術已成功要求及設定,位元欄會將測距技術位元設為 1,否則設為 0。
  • 0x01 - UWB
  • 0x02 - BLE 通道發出聲響
  • 0x04 - Wi-Fi NAN RTT
  • 0x08 - BLE RSSI
  • RFU

停止測量訊息酬載

大小 (不含標頭大小):2 個位元組

說明:當需要停止使用指定的測距技術時,發起端裝置會傳送這則訊息。

下表總結了 Stop Ranging 訊息酬載:

Octet 資料類型 說明
0 uint8*2 停止位元欄位的測距技術 必須停止測距的測距技術位元欄位。位元設為 1 表示測距技術必須停止測距,而 0 則表示測距技術一開始並未測距,或是如果已測距,則必須繼續測距。對於某些測距技術 (例如 CS),這項操作不會執行,因為測距作業只會在發起端啟動及停止。
  • 0x01 - UWB
  • 0x02 - BLE 通道發出聲響
  • 0x04 - Wi-Fi NAN RTT
  • 0x08 - BLE RSSI
  • RFU

Stop Ranging Response 訊息酬載

大小 (不含標頭大小):2 個位元組

說明:這是作答者傳送的訊息,用來回覆 Stop Ranging 訊息。這則訊息為選用,只有在所用通訊管道需要針對每個要求提供明確回應時,才需要這則訊息。

下表匯總了 Stop Ranging Response 訊息酬載:

Octet 資料類型 說明
0 uint8*2 已成功停止測距技術位元欄 已成功停止測距的測距技術位元欄位。如果系統要求停止使用某項技術,且該技術已成功停止,位元組會將測距技術位元設為 1,否則設為 0。
  • 0x01 - UWB
  • 0x02 - BLE 通道發出聲響
  • 0x04 - Wi-Fi NAN RTT
  • 0x08 - BLE RSSI
  • RFU

版本管理

每封郵件的標頭都會包含規格版本。本節定義當其中一個裝置 (發起端或回應端) 的版本較另一個裝置舊時,如何進行通訊。

案例 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) 的具體資訊

本節將說明超寬頻的特定細節。

設定 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,回應端在收到 Ranging Configuration 訊息或 CS 的 Stop Ranging 訊息後,就不需要採取任何動作。回應裝置可以使用這些訊息做為觸發條件,以便更新 UI,或例如閃爍裝置 LED。