fuchsia.hardware.uwb

用於與超寬頻供應商驅動程式互動的 API。

新增:HEAD

通訊協定

裝置

定義於 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

序數欄位類型說明
uci server_end:Uci

封包

定義於 fuchsia.hardware.uwb/vendor.fidl

序數欄位類型說明
data vector<uint8>:65500

Snoop_WatchPacket_Response

定義於 fuchsia.hardware.uwb/vendor.fidl

序數欄位類型說明
packets vector<SnoopPacket>
dropped_sent uint32

上次回應 WatchPacket() 後,遭捨棄的傳出封包數量。這些封包不計入 packets。只有在 WatchPacket() 輪詢速度緩慢時,這個值才會是非零值。

dropped_received uint32

自上次回應 WatchPacket() 後,捨棄的傳入封包數量。這些封包不計入 packets。只有在 WatchPacket() 輪詢速度緩慢時,這個值才會是非零值。

UciOnInitializedRequest

定義於 fuchsia.hardware.uwb/vendor.fidl

序數欄位類型說明
status zx/Result

UciSendRequest

定義於 fuchsia.hardware.uwb/vendor.fidl

序數欄位類型說明
packets vector<Packet>

UciSessionInitRequest

定義於 fuchsia.hardware.uwb/vendor.fidl

序數欄位類型說明
session_id uint32

Uci_WatchReceive_Response

定義於 fuchsia.hardware.uwb/vendor.fidl

序數欄位類型說明
packets vector<Packet>

UNIONS

SnoopPacket 彈性

定義於 fuchsia.hardware.uwb/vendor.fidl

控制器和主機之間傳送的完整封包,包括封包標頭。

注意:如果主機或控制器執行封包分段,這裡代表的位元組不會重新組合,而是以分段形式呈現。如要進一步瞭解分段和重組,請參閱 FiRa UWB UCI 一般規格 3.0.0 版第 4.4 節。

序數Variant類型說明
to_controller_data Packet
from_controller_data Packet
command Packet
response Packet
notification Packet

Snoop_WatchPacket_Result strict

定義於 fuchsia.hardware.uwb/vendor.fidl

序數Variant類型說明
response Snoop_WatchPacket_Response
framework_err internal

Uci_Send_Result strict

定義於 fuchsia.hardware.uwb/vendor.fidl

序數Variant類型說明
response Uci_Send_Response
framework_err internal

Uci_SessionInit_Result strict

定義於 fuchsia.hardware.uwb/vendor.fidl

序數Variant類型說明
response Uci_SessionInit_Response
framework_err internal

Uci_WatchReceive_Result strict

定義於 fuchsia.hardware.uwb/vendor.fidl

序數Variant類型說明
response Uci_WatchReceive_Response
framework_err internal

常數

名稱值類型說明
MAX_PACKET_SIZE 65500 uint32

服務

供應商

定義於 fuchsia.hardware.uwb/vendor.fidl

名稱類型傳輸
device fuchsia.hardware.uwb/Device 版本
snoop fuchsia.hardware.uwb/Snoop 版本