APIs for interacting with Ultra-Wideband vendor drivers.
PROTOCOLS
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.
Send
Send serialized UCI packets to the UWB Controller via the Driver. The UWB HAL or driver aren'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). This method can be called multiple times to queue up data to be sent to the UWB Controller (e.g. when sending a segmented packet). However, it's the Host's responsibility to ensure only a single command is sent.
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.
Request
Name | Type |
---|---|
payload |
UciSessionInitRequest
|
Response
Name | Type |
---|---|
payload |
Uci_SessionInit_Result
|
WatchReceive
Watch for UCI packets from the UWB Controller. The UWB HAL or driver 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
Packet
Defined in fuchsia.hardware.uwb/vendor.fidl
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
data |
vector<uint8>:65540
|
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 |
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 |
65540
|
uint32 |
SERVICES
Vendor
Defined in fuchsia.hardware.uwb/vendor.fidl
Name | Type | Transport |
---|---|---|
uci |
fuchsia.hardware.uwb/Uci
|
Channel |
snoop |
fuchsia.hardware.uwb/Snoop
|
Channel |