class UsbCdcFunction

Defined at line 60 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 72 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.h

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

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

bool online ()

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

bool configured ()

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

bool IntrEpRequestsFull ()

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

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

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

size_t GetInFlightInterruptCountForTesting ()

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

uint8_t BulkInAddress ()

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

uint8_t BulkOutAddress ()

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

uint8_t InterruptAddress ()

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

inspect::ComponentInspector & inspector ()

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

usb_inspect::ThroughputTracker & GetThroughputTrackerForTesting ()

Defined at line 154 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 1178 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void Stop (fdf::StopCompleter completer)

Defined at line 1383 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 1543 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

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

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

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

Defined at line 1574 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 1581 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 1598 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 1709 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 1753 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 1762 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 1771 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

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

Defined at line 1793 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 1797 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

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

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

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

Defined at line 1806 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 1808 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

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

Defined at line 1814 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 1823 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 497 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

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

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

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

Defined at line 1093 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 1171 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

zx_status_t cdc_generate_mac_address ()

Defined at line 93 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 196 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

void CdcSendNotifications ()

Defined at line 210 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 320 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 449 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 333 of file ../../src/connectivity/ethernet/drivers/usb-cdc-function/usb-cdc-function.cc

bool HasPendingRxCompletions ()

test helpers.

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