APIs for interacting with Ultra-Wideband vendor drivers.
PROTOCOLS
Device
Defined in fuchsia.hardware.uwb/vendor.fidl
OpenUci
Opens a UCI channel to the UWB controller. This will power on the
device. The device will be powered off when the uci channel is closed
(either by the client or by calling Uci.PowerOff()).
Request
| Name | Type |
|---|---|
payload |
DeviceOpenUciRequest
|
Snoop
Defined in fuchsia.hardware.uwb/vendor.fidl
The Snoop protocol is an output-only channel for monitoring UCI traffic. The snoop channel contains messages that are sent from the Host to the Controller (e.g. control packets, data packets). The snoop channel also contains responses sent from the Controller to the Host (e.g. response packets, notification packets, data packets).
WatchPacket
A hanging-get method that returns when packets have been transmitted or received. The server is allowed to drop packets if the client takes too long to call WatchPacket().
Request
<EMPTY>
Response
| Name | Type |
|---|---|
payload |
Snoop_WatchPacket_Result
|
Uci
Defined in fuchsia.hardware.uwb/vendor.fidl
The UCI protocol is the way the UWB HAL interfaces with the vendor chip via the Driver.
OnInitialized
Sent by the server when the UWB Controller has been initialized. The
status indicates whether initialization was successful. If status is
ZX_OK, the controller is ready to receive UCI packets. The client
should wait for this event before sending data to ensure the controller
is in a known ready state, though the Driver may buffer a limited number
of packets sent before initialization is complete.
Response
| Name | Type |
|---|---|
payload |
UciOnInitializedRequest
|
PowerOff
Request the UWB Controller to power off and close the UCI channel. The server will close the channel after the device has been powered off.
Request
<EMPTY>
Send
Send serialized UCI packets to the UWB Controller via the Driver. The server isn't responsible for performing any packet segmentation or reassembly. Bytes will be sent to the UWB Controller as is.
NOTE: The UWB spec requires the host to wait for a response to a sent
command before sending another (FiRa UWB UCI Generic Specification
Version 3.0.0 Section 4.3.1). The client should wait for a response
before sending another command. One Send() may be queued by the Driver
if called before OnInitialized() is received, which will be answered
once initialization is complete.
NOTE: This method and SessionInit are mutually exclusive. The client
must ensure that only one of these operations is active at a time.
Request
| Name | Type |
|---|---|
payload |
UciSendRequest
|
Response
| Name | Type |
|---|---|
payload |
Uci_Send_Result
|
SessionInit
Perform vendor specific session initialization for a given session id.
Session initialization is done via the Session Init UCI command (FiRa UWB UCI Generic Specification Version 3.0.0 Section 7.2.1). This command is normally sent by the upper layers of the stack via Send(...). However, some Controllers may require vendor specific configuration during session initialization. This command instructs the Driver to perform that vendor specific initialization, inserting the necessary bytes into the UCI data stream.
NOTE: The client should wait for a response before sending another
command. One command may be queued by the Driver if SessionInit() is
called before OnInitialized() is received, which will be answered once
initialization is complete.
NOTE: This method and Send are mutually exclusive. The client must
ensure that only one of these operations is active at a time.
Request
| Name | Type |
|---|---|
payload |
UciSessionInitRequest
|
Response
| Name | Type |
|---|---|
payload |
Uci_SessionInit_Result
|
WatchReceive
Watch for UCI packets from the UWB Controller. The server isn't responsible for performing any packet segmentation or reassembly. Bytes will be sent to the UWB Host as is.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
payload |
Uci_WatchReceive_Result
|
STRUCTS
Uci_Send_Response
Defined in fuchsia.hardware.uwb/vendor.fidl
<EMPTY>
Uci_SessionInit_Response
Defined in fuchsia.hardware.uwb/vendor.fidl
<EMPTY>
TABLES
DeviceOpenUciRequest resource
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
uci |
server_end:Uci
|
Packet
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
data |
vector<uint8>:65500
|
Snoop_WatchPacket_Response
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
packets |
vector<SnoopPacket>
|
|
2 |
dropped_sent |
uint32
|
The number of outbound packets dropped since the last response to
WatchPacket(). These packets are excluded from |
3 |
dropped_received |
uint32
|
The number of inbound packets dropped since the last response to
WatchPacket(). These packets are excluded from |
UciOnInitializedRequest
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
status |
zx/Status
|
UciSendRequest
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
packets |
vector<Packet>
|
UciSessionInitRequest
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
session_id |
uint32
|
Uci_WatchReceive_Response
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
packets |
vector<Packet>
|
UNIONS
SnoopPacket flexible
Defined in fuchsia.hardware.uwb/vendor.fidl
The full packet sent between the controller and the host, including packet headers.
Note: if the host or controller performed packet segmentation, the bytes represented here won't be reassembled and will be in segmented form. See FiRa UWB UCI Generic Specification Version 3.0.0 Section 4.4 for more information on segmentation and reassembly.
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
to_controller_data |
Packet
|
|
2 |
from_controller_data |
Packet
|
|
3 |
command |
Packet
|
|
4 |
response |
Packet
|
|
5 |
notification |
Packet
|
Snoop_WatchPacket_Result strict
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Snoop_WatchPacket_Response
|
|
3 |
framework_err |
internal
|
Uci_Send_Result strict
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Uci_Send_Response
|
|
3 |
framework_err |
internal
|
Uci_SessionInit_Result strict
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Uci_SessionInit_Response
|
|
3 |
framework_err |
internal
|
Uci_WatchReceive_Result strict
Defined in fuchsia.hardware.uwb/vendor.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Uci_WatchReceive_Response
|
|
3 |
framework_err |
internal
|
CONSTANTS
| Name | Value | Type | Description |
|---|---|---|---|
| MAX_PACKET_SIZE |
65500
|
uint32 |
SERVICES
Vendor
Defined in fuchsia.hardware.uwb/vendor.fidl
| Name | Type | Transport |
|---|---|---|
| device |
fuchsia.hardware.uwb/Device
|
Channel |
| snoop |
fuchsia.hardware.uwb/Snoop
|
Channel |