fuchsia.hardware.uwb

APIs for interacting with Ultra-Wideband vendor drivers.

Added: HEAD

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

NameType
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

NameType
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

NameType
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

NameType
payload UciSendRequest

Response

NameType
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

NameType
payload UciSessionInitRequest

Response

NameType
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

NameType
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

OrdinalFieldTypeDescription
uci server_end:Uci

Packet

Defined in fuchsia.hardware.uwb/vendor.fidl

OrdinalFieldTypeDescription
data vector<uint8>:65500

Snoop_WatchPacket_Response

Defined in fuchsia.hardware.uwb/vendor.fidl

OrdinalFieldTypeDescription
packets vector<SnoopPacket>
dropped_sent uint32

The number of outbound packets dropped since the last response to WatchPacket(). These packets are excluded from packets. This is only non-zero when WatchPacket() is slow to poll.

dropped_received uint32

The number of inbound packets dropped since the last response to WatchPacket(). These packets are excluded from packets. This is only non-zero when WatchPacket() is slow to poll.

UciOnInitializedRequest

Defined in fuchsia.hardware.uwb/vendor.fidl

OrdinalFieldTypeDescription
status zx/Status

UciSendRequest

Defined in fuchsia.hardware.uwb/vendor.fidl

OrdinalFieldTypeDescription
packets vector<Packet>

UciSessionInitRequest

Defined in fuchsia.hardware.uwb/vendor.fidl

OrdinalFieldTypeDescription
session_id uint32

Uci_WatchReceive_Response

Defined in fuchsia.hardware.uwb/vendor.fidl

OrdinalFieldTypeDescription
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.

OrdinalVariantTypeDescription
to_controller_data Packet
from_controller_data Packet
command Packet
response Packet
notification Packet

Snoop_WatchPacket_Result strict

Defined in fuchsia.hardware.uwb/vendor.fidl

OrdinalVariantTypeDescription
response Snoop_WatchPacket_Response
framework_err internal

Uci_Send_Result strict

Defined in fuchsia.hardware.uwb/vendor.fidl

OrdinalVariantTypeDescription
response Uci_Send_Response
framework_err internal

Uci_SessionInit_Result strict

Defined in fuchsia.hardware.uwb/vendor.fidl

OrdinalVariantTypeDescription
response Uci_SessionInit_Response
framework_err internal

Uci_WatchReceive_Result strict

Defined in fuchsia.hardware.uwb/vendor.fidl

OrdinalVariantTypeDescription
response Uci_WatchReceive_Response
framework_err internal

CONSTANTS

NameValueTypeDescription
MAX_PACKET_SIZE 65500 uint32

SERVICES

Vendor

Defined in fuchsia.hardware.uwb/vendor.fidl

NameTypeTransport
device fuchsia.hardware.uwb/Device Channel
snoop fuchsia.hardware.uwb/Snoop Channel