用於與超寬頻供應商驅動程式互動的 API。
通訊協定
裝置
定義於 fuchsia.hardware.uwb/vendor.fidl
OpenUci
開啟 UWB 控制器的 UCI 管道。裝置就會開機。當 uci 管道關閉時 (由用戶端關閉或呼叫 Uci.PowerOff()),裝置就會關機。
要求
| 名稱 | 類型 |
|---|---|
payload |
DeviceOpenUciRequest
|
窺探
定義於 fuchsia.hardware.uwb/vendor.fidl
Snoop 通訊協定是僅限輸出的管道,用於監控 UCI 流量。監聽管道包含從主機傳送至控制器的訊息 (例如控制封包、資料封包)。監聽管道也包含從控制器傳送至主機的回應 (例如回應封包、通知封包、資料封包)。
WatchPacket
在傳輸或接收封包時傳回的 hanging-get 方法。如果用戶端呼叫 WatchPacket() 的時間過長,伺服器可以捨棄封包。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Snoop_WatchPacket_Result
|
Uci
定義於 fuchsia.hardware.uwb/vendor.fidl
UCI 通訊協定是 UWB HAL 透過驅動程式與供應商晶片互動的方式。
OnInitialized
UWB 控制器初始化後,由伺服器傳送。status 會指出初始化是否成功。如果 status 為 ZX_OK,表示控制器已準備好接收 UCI 封包。用戶端應等待這個事件,再傳送資料,確保控制器處於已知的就緒狀態,但驅動程式可能會在初始化完成前,緩衝處理有限數量的封包。
回應
| 名稱 | 類型 |
|---|---|
payload |
UciOnInitializedRequest
|
PowerOff
要求 UWB 控制器關機並關閉 UCI 管道。裝置關機後,伺服器會關閉管道。
要求
<EMPTY>
傳送
透過驅動程式將序列化的 UCI 封包傳送至 UWB 控制器。伺服器不負責執行任何封包分割或重組作業。位元組會直接傳送至 UWB 控制器。
注意:根據 UWB 規格,主機必須等待傳送的指令收到回應後,才能傳送其他指令 (FiRa UWB UCI Generic Specification 3.0.0 版第 4.3.1 節)。用戶端應等待回應,再傳送其他指令。如果在收到 OnInitialized() 前呼叫,驅動程式可能會將一個 Send() 排入佇列,並在初始化完成後回覆。
注意:這個方法和 SessionInit 互斥。用戶端必須確保一次只執行其中一項作業。
要求
| 名稱 | 類型 |
|---|---|
payload |
UciSendRequest
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Uci_Send_Result
|
SessionInit
針對指定的工作階段 ID,執行供應商專屬的工作階段初始化作業。
工作階段初始化是透過工作階段初始化 UCI 指令完成 (FiRa UWB UCI 一般規格 3.0.0 版第 7.2.1 節)。這個指令通常由堆疊的上層透過 Send(...) 傳送。不過,某些控制器可能需要在工作階段初始化期間進行供應商專屬設定。這個指令會指示驅動程式執行該供應商專屬的初始化作業,並將必要的位元組插入 UCI 資料串流。
注意:用戶端應等待回應,再傳送其他指令。如果在收到 OnInitialized() 之前呼叫 SessionInit(),驅動程式可能會將一個指令排入佇列,並在初始化完成後回覆。
注意:這個方法和 Send 互斥。用戶端必須確保一次只執行其中一項作業。
要求
| 名稱 | 類型 |
|---|---|
payload |
UciSessionInitRequest
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Uci_SessionInit_Result
|
WatchReceive
監控 UWB 控制器傳送的 UCI 封包。伺服器不負責執行任何封包分割或重組作業。位元組會依原樣傳送至 UWB 主機。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Uci_WatchReceive_Result
|
STRUCTS
Uci_Send_Response
定義於 fuchsia.hardware.uwb/vendor.fidl
<EMPTY>
Uci_SessionInit_Response
定義於 fuchsia.hardware.uwb/vendor.fidl
<EMPTY>
TABLES
DeviceOpenUciRequest 資源
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
uci |
server_end:Uci
|
封包
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
data |
vector<uint8>:65500
|
Snoop_WatchPacket_Response
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
packets |
vector<SnoopPacket>
|
|
2 |
dropped_sent |
uint32
|
上次回應 WatchPacket() 後,遭捨棄的傳出封包數量。這些封包不計入 |
3 |
dropped_received |
uint32
|
自上次回應 WatchPacket() 後,捨棄的傳入封包數量。這些封包不計入 |
UciOnInitializedRequest
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
status |
zx/Result
|
UciSendRequest
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
packets |
vector<Packet>
|
UciSessionInitRequest
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
session_id |
uint32
|
Uci_WatchReceive_Response
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
packets |
vector<Packet>
|
UNIONS
SnoopPacket 彈性
定義於 fuchsia.hardware.uwb/vendor.fidl
控制器和主機之間傳送的完整封包,包括封包標頭。
注意:如果主機或控制器執行封包分段,這裡代表的位元組不會重新組合,而是以分段形式呈現。如要進一步瞭解分段和重組,請參閱 FiRa UWB UCI 一般規格 3.0.0 版第 4.4 節。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
to_controller_data |
Packet
|
|
2 |
from_controller_data |
Packet
|
|
3 |
command |
Packet
|
|
4 |
response |
Packet
|
|
5 |
notification |
Packet
|
Snoop_WatchPacket_Result strict
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Snoop_WatchPacket_Response
|
|
3 |
framework_err |
internal
|
Uci_Send_Result strict
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Uci_Send_Response
|
|
3 |
framework_err |
internal
|
Uci_SessionInit_Result strict
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Uci_SessionInit_Response
|
|
3 |
framework_err |
internal
|
Uci_WatchReceive_Result strict
定義於 fuchsia.hardware.uwb/vendor.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Uci_WatchReceive_Response
|
|
3 |
framework_err |
internal
|
常數
| 名稱 | 值 | 類型 | 說明 |
|---|---|---|---|
| MAX_PACKET_SIZE |
65500
|
uint32 |
服務
供應商
定義於 fuchsia.hardware.uwb/vendor.fidl
| 名稱 | 類型 | 傳輸 |
|---|---|---|
| device |
fuchsia.hardware.uwb/Device
|
版本 |
| snoop |
fuchsia.hardware.uwb/Snoop
|
版本 |