class UsbFunction

Defined at line 30 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.h

This class represents a USB function in the peripheral role configurations.

USB function drivers bind to this.

Public Methods

zx::result<> AddChild (fidl::UnownedClientEnd<fuchsia_driver_framework::Node> parent, const std::shared_ptr<fdf::Namespace> & incoming, const std::shared_ptr<fdf::OutgoingDirectory> & outgoing)

Defined at line 23 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void UsbFunction (size_t index, UsbPeripheral * peripheral, fuchsia_hardware_usb_peripheral::wire::FunctionDescriptor desc, uint8_t configuration, async_dispatcher_t * dispatcher)

Defined at line 34 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.h

size_t function_index ()

Defined at line 66 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.h

std::string name ()

Defined at line 67 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.h

uint8_t configuration ()

Defined at line 69 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.h

const usb_descriptor_header_t * GetDescriptors (size_t * out_length)

Defined at line 73 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.h

const fuchsia_hardware_usb_peripheral::wire::FunctionDescriptor & GetFunctionDescriptor ()

Defined at line 78 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.h

uint8_t GetNumInterfaces ()

Defined at line 83 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.h

bool registered ()

Defined at line 106 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.h

void ~UsbFunction ()

Defined at line 128 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

zx_status_t UsbFunctionSetInterface (const usb_function_interface_protocol_t * interface)

UsbFunctionProtocol implementation.

Defined at line 173 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

zx_status_t UsbFunctionAllocInterface (uint8_t * out_intf_num)

Defined at line 223 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

zx_status_t UsbFunctionAllocEp (uint8_t direction, uint8_t * out_address)

Defined at line 233 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

zx_status_t UsbFunctionConfigEp (const usb_endpoint_descriptor_t * ep_desc, const usb_ss_ep_comp_descriptor_t * ss_comp_desc)

Defined at line 257 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

zx_status_t UsbFunctionDisableEp (uint8_t address)

Defined at line 282 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

zx_status_t UsbFunctionAllocStringDesc (const char * str, uint8_t * out_index)

Defined at line 301 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void UsbFunctionRequestQueue (usb_request_t * usb_request, const usb_request_complete_callback_t * complete_cb)

Defined at line 312 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

zx_status_t UsbFunctionEpSetStall (uint8_t ep_address)

Defined at line 318 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

zx_status_t UsbFunctionEpClearStall (uint8_t ep_address)

Defined at line 323 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

size_t UsbFunctionGetRequestSize ()

Defined at line 328 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void SetConfigured (bool configured, usb_speed_t speed, fit::callback<void (zx_status_t)> completer)

Defined at line 538 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void SetInterface (uint8_t interface, uint8_t alt_setting, fit::callback<void (zx_status_t)> completer)

Defined at line 574 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

zx::result<std::vector<uint8_t>> Control (const fuchsia_hardware_usb_descriptor::wire::UsbSetup & setup, cpp20::span<uint8_t> write_buffer)

TODO(https://fxbug.dev/493657863): This call should be async like

SetConfigured and SetInterface once we can guarantee a single-dispatch of

USB_RECIP_DEVICE requests to bound functions.

Defined at line 611 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void RequestRemoval ()

Defined at line 505 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void OnNodeControllerUnbound (fidl::UnbindInfo info)

Defined at line 524 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

zx_status_t UsbFunctionCancelAll (uint8_t ep_address)

Defined at line 218 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void ConnectToEndpoint (ConnectToEndpointRequest & request, ConnectToEndpointCompleter::Sync & completer)

fuchsia_hardware_usb_function.UsbFunction protocol implementation.

Defined at line 333 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void Configure (ConfigureRequest & request, ConfigureCompleter::Sync & completer)

Defined at line 408 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void AllocResources (AllocResourcesRequest & request, AllocResourcesCompleter::Sync & completer)

Defined at line 344 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void EndpointSetStall (EndpointSetStallRequest & request, EndpointSetStallCompleter::Sync & completer)

Defined at line 363 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void EndpointClearStall (EndpointClearStallRequest & request, EndpointClearStallCompleter::Sync & completer)

Defined at line 374 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void ConfigureEndpoint (ConfigureEndpointRequest & request, ConfigureEndpointCompleter::Sync & completer)

Defined at line 385 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void DisableEndpoint (DisableEndpointRequest & request, DisableEndpointCompleter::Sync & completer)

Defined at line 397 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc

void Deconfigure (DeconfigureCompleter::Sync & completer)

Defined at line 452 of file ../../src/devices/usb/drivers/usb-peripheral/usb-function.cc