class UsbCdcFunction

Defined at line 58 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

UsbCdcFunction implements the USB CDC (Ethernet Control Model) peripheral function driver.

Threading

&

Dispatcher Architecture:

All protocol servers (fuchsia.hardware.usb.function/UsbFunctionInterface,

fuchsia.hardware.network.driver/NetworkDeviceImpl), endpoint event callbacks,

and asynchronous teardown/reconfiguration tasks run on the driver's default

synchronized dispatcher (`dispatcher()`).

Internal driver state (e.g. `online_`, `configured_`, buffer queues, and endpoint

clients) is managed exclusively within this single dispatch loop, guaranteeing

serialized execution without requiring explicit mutex locking.

Public Members

static basic_string_view kDriverName
static const uint8_t kPortId
static const size_t kTxDepth
static const size_t kRxDepth
static const fdf_arena_tag_t kArenaTag

Public Methods

void UsbCdcFunction ()

Defined at line 70 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

const std::shared_ptr<fdf::Namespace> & incoming ()

Defined at line 89 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

bool online ()

Defined at line 141 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

bool configured ()

Defined at line 142 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

bool IntrEpRequestsFull ()

Defined at line 143 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

const std::array<uint8_t, 6> & mac_addr ()

Defined at line 144 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

size_t GetInFlightInterruptCountForTesting ()

Defined at line 145 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

uint8_t BulkInAddress ()

Defined at line 147 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

uint8_t BulkOutAddress ()

Defined at line 148 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

uint8_t InterruptAddress ()

Defined at line 149 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

inspect::ComponentInspector & inspector ()

Defined at line 151 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

usb_inspect::ThroughputTracker & GetThroughputTrackerForTesting ()

Defined at line 152 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

zx::result<> Start (fdf::DriverContext context)

fdf::DriverBase2 implementation.

Defined at line 1169 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void Stop (fdf::StopCompleter completer)

Defined at line 1374 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void Init (fnetdev::wire::NetworkDeviceImplInitRequest * request, fdf::Arena & arena, InitCompleter::Sync & completer)

NetworkDeviceImpl protocol:

Defined at line 1533 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void Start (fdf::Arena & arena, StartCompleter::Sync & completer)

Defined at line 1558 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void Stop (fdf::Arena & arena, StopCompleter::Sync & completer)

Defined at line 1563 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void GetInfo (fdf::Arena & arena, fdf::WireServer<fnetdev::NetworkDeviceImpl>::GetInfoCompleter::Sync & completer)

Defined at line 1569 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void QueueTx (fnetdev::wire::NetworkDeviceImplQueueTxRequest * request, fdf::Arena & arena, QueueTxCompleter::Sync & completer)

Defined at line 1586 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void QueueRxSpace (fnetdev::wire::NetworkDeviceImplQueueRxSpaceRequest * request, fdf::Arena & arena, QueueRxSpaceCompleter::Sync & completer)

Defined at line 1697 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void PrepareVmo (fnetdev::wire::NetworkDeviceImplPrepareVmoRequest * request, fdf::Arena & arena, PrepareVmoCompleter::Sync & completer)

Defined at line 1741 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void ReleaseVmo (fnetdev::wire::NetworkDeviceImplReleaseVmoRequest * request, fdf::Arena & arena, ReleaseVmoCompleter::Sync & completer)

Defined at line 1750 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void GetInfo (fdf::Arena & arena, fdf::WireServer<fnetdev::NetworkPort>::GetInfoCompleter::Sync & completer)

NetworkPort protocol:

Defined at line 1759 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void GetStatus (fdf::Arena & arena, GetStatusCompleter::Sync & completer)

Defined at line 1781 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void SetActive (fnetdev::wire::NetworkPortSetActiveRequest * request, fdf::Arena & arena, SetActiveCompleter::Sync & completer)

Defined at line 1785 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void GetMac (fdf::Arena & arena, GetMacCompleter::Sync & completer)

Defined at line 1788 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void Removed (fdf::Arena & arena, RemovedCompleter::Sync & completer)

Defined at line 1794 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void GetAddress (fdf::Arena & arena, GetAddressCompleter::Sync & completer)

MacAddr protocol:

Defined at line 1796 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void GetFeatures (fdf::Arena & arena, GetFeaturesCompleter::Sync & completer)

Defined at line 1802 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void SetMode (fnetdev::wire::MacAddrSetModeRequest * request, fdf::Arena & arena, SetModeCompleter::Sync & completer)

Defined at line 1811 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void Control (ControlRequest & request, ControlCompleter::Sync & completer)

UsbFunctionInterface methods.

Defined at line 485 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void SetConfigured (SetConfiguredRequest & request, SetConfiguredCompleter::Sync & completer)

Defined at line 655 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void SetInterface (SetInterfaceRequest & request, SetInterfaceCompleter::Sync & completer)

Defined at line 1084 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void handle_unknown_method (fidl::UnknownMethodMetadata<fuchsia_hardware_usb_function::UsbFunctionInterface> metadata, fidl::UnknownMethodCompleter::Sync & completer)

Defined at line 1162 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

zx_status_t cdc_generate_mac_address ()

Defined at line 92 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void CdcIntrComplete (std::vector<fuchsia_hardware_usb_endpoint::Completion> completion)

Defined at line 190 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void CdcSendNotifications ()

Defined at line 204 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void CdcRxComplete (std::vector<fuchsia_hardware_usb_endpoint::Completion> completions)

Defined at line 313 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void CdcTxComplete (std::vector<fuchsia_hardware_usb_endpoint::Completion> completions)

Defined at line 442 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void ProcessRxCompletions (std::vector<fuchsia_hardware_usb_endpoint::Completion> completions)

Defined at line 326 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

bool HasPendingRxCompletions ()

test helpers.

Defined at line 1839 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc