fuchsia.hardware.uwb

用于与超宽带供应商驱动程序交互的 API。

Added: 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 通用规范版本 3.0.0 第 4.3.1 节)。客户端应先等待响应,然后再发送其他命令。如果 Send() 在收到 OnInitialized() 之前被调用,则可能会被驱动程序排入队列,并在初始化完成后得到响应。

注意:此方法和 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 flexible

在 fuchsia.hardware.uwb/vendor.fidl 中定义

在控制器和主机之间发送的完整数据包,包括数据包标头。

注意:如果主机或控制器执行了数据包分段,则此处表示的字节不会重新组合,而是采用分段形式。如需详细了解分段和重组,请参阅 FiRa UWB UCI 通用规范 3.0.0 版第 4.4 节。

序数变体类型说明
to_controller_data Packet
from_controller_data Packet
command Packet
response Packet
notification Packet

Snoop_WatchPacket_Result strict

在 fuchsia.hardware.uwb/vendor.fidl 中定义

序数变体类型说明
response Snoop_WatchPacket_Response
framework_err internal

Uci_Send_Result strict

在 fuchsia.hardware.uwb/vendor.fidl 中定义

序数变体类型说明
response Uci_Send_Response
framework_err internal

Uci_SessionInit_Result strict

在 fuchsia.hardware.uwb/vendor.fidl 中定义

序数变体类型说明
response Uci_SessionInit_Response
framework_err internal

Uci_WatchReceive_Result strict

在 fuchsia.hardware.uwb/vendor.fidl 中定义

序数变体类型说明
response Uci_WatchReceive_Response
framework_err internal

常量

名称值类型说明
MAX_PACKET_SIZE 65500 uint32

服务

供应商

在 fuchsia.hardware.uwb/vendor.fidl 中定义

名称类型传输
设备 fuchsia.hardware.uwb/Device 渠道
snoop fuchsia.hardware.uwb/Snoop 渠道