pub struct UsbFunctionInterfaceProxy { /* private fields */ }Implementations§
Source§impl UsbFunctionInterfaceProxy
impl UsbFunctionInterfaceProxy
Sourcepub fn new(channel: AsyncChannel) -> Self
pub fn new(channel: AsyncChannel) -> Self
Create a new Proxy for fuchsia.hardware.usb.function/UsbFunctionInterface.
Sourcepub fn take_event_stream(&self) -> UsbFunctionInterfaceEventStream
pub fn take_event_stream(&self) -> UsbFunctionInterfaceEventStream
Get a Stream of events from the remote end of the protocol.
§Panics
Panics if the event stream was already taken.
Sourcepub fn control(
&self,
setup: &UsbSetup,
write: &[u8],
) -> QueryResponseFut<UsbFunctionInterfaceControlResult, DefaultFuchsiaResourceDialect> ⓘ
pub fn control( &self, setup: &UsbSetup, write: &[u8], ) -> QueryResponseFut<UsbFunctionInterfaceControlResult, DefaultFuchsiaResourceDialect> ⓘ
Callback for handling EP0 class/vendor-specific control requests targeting the interface(s) owned by this function.
This is called when the host sends a control request to the device. The protocol server (of
[UsbFunctionInterface]) should process the request and return the result.
The host expects a response within a strict timeout period defined by the USB specification Section 9.2.6 (50ms for requests without data, and 500ms for read data stages). Because of these hardware-enforced limits, the implementation must reply as quickly as possible and avoid blocking the dispatcher.
setup is the control request metadata (setup packet). write contains the raw bytes sent
by the host in the Data Stage of a host-to-device (OUT) control transfer. It is empty for
device-to-host (IN) transfers. read in the response payload contains the raw bytes
returned to the host in the Data Stage of a device-to-host (IN) control transfer. It must
be empty for host-to-device (OUT) transfers.
Any error returned by this method (including ZX_ERR_NOT_SUPPORTED) causes the
peripheral controller to stall Endpoint 0, signaling a “Request Error” to the host.
- error:
ZX_ERR_NOT_SUPPORTEDif the request is not supported by the protocol server.ZX_ERR_INVALID_ARGSif the setup packet or data is invalid.ZX_ERR_IO_NOT_PRESENTif the device was disconnected while processing the request.
Sourcepub fn set_configured(
&self,
configured: bool,
speed: UsbSpeed,
) -> QueryResponseFut<UsbFunctionInterfaceSetConfiguredResult, DefaultFuchsiaResourceDialect> ⓘ
pub fn set_configured( &self, configured: bool, speed: UsbSpeed, ) -> QueryResponseFut<UsbFunctionInterfaceSetConfiguredResult, DefaultFuchsiaResourceDialect> ⓘ
Inform the protocol server (of [UsbFunctionInterface]) when the USB device configured
state changes.
Called with configured == true in response to a SET_CONFIGURATION control request that
selects a configuration that contains this function. In this case, the protocol server
should use [UsbFunction.ConfigureEndpoint] to configure its endpoints.
Per USB 2.0 Specification Section 9.4.7, receiving a SET_CONFIGURATION request when the
function is already configured is valid and should reset/re-initialize the function state
rather than returning an error.
Called with configured == false when configuration is disabled or USB is disconnected.
The protocol server should then use [UsbFunction.DisableEndpoint] to disable its
endpoints.
The protocol server must perform all endpoint configuration/disabling and wait for those
calls to complete before replying to this method. This ensures that the protocol client can
report success/failure back to the host (by ACK’ing or STALL’ing the SET_CONFIGURATION
request).
Any error returned by this method causes the peripheral controller to stall Control
Endpoint 0, signaling a failure to the host (rejecting the SET_CONFIGURATION request).
- error:
ZX_ERR_BAD_STATEif the device or function is in an uninitialized state where configuration transitions are invalid (excluding re-configuring an active state).ZX_ERR_INVALID_ARGSif the speed or configuration parameters are invalid.ZX_ERR_NOT_SUPPORTEDif the requested speed or configuration is unsupported.ZX_ERR_NO_RESOURCESif endpoint allocation or hardware configuration fails.
Sourcepub fn set_interface(
&self,
interface: u8,
alt_setting: u8,
) -> QueryResponseFut<UsbFunctionInterfaceSetInterfaceResult, DefaultFuchsiaResourceDialect> ⓘ
pub fn set_interface( &self, interface: u8, alt_setting: u8, ) -> QueryResponseFut<UsbFunctionInterfaceSetInterfaceResult, DefaultFuchsiaResourceDialect> ⓘ
Called to set an alternate setting for an interface due to a SET_INTERFACE control
request.
The protocol server (of [UsbFunctionInterface]) must use [UsbFunction.ConfigureEndpoint]
and [UsbFunction.DisableEndpoint] to configure or disable the interface’s endpoints as
appropriate for the new alternate setting.
Depending on the alternate setting definition, this transition may require configuring new
endpoints (via ConfigureEndpoint), disabling existing endpoints (via DisableEndpoint),
or doing both. If an alternate setting does not use any endpoints, no endpoint
configuration calls are required.
The protocol server must perform all endpoint configuration/disabling and wait for those
calls to complete before replying to this method. This ensures that the protocol client can
report success/failure back to the host (by ACK’ing or STALL’ing the SET_INTERFACE
request).
Any error returned by this method causes the peripheral controller to stall Control
Endpoint 0, signaling a failure to the host (rejecting the SET_INTERFACE request).
- error:
ZX_ERR_NOT_SUPPORTEDif the alternate setting is not supported.ZX_ERR_INVALID_ARGSif the interface or alt_setting is invalid.- Other errors if the function driver fails to configure or disable endpoints for the new setting.
Trait Implementations§
Source§impl Clone for UsbFunctionInterfaceProxy
impl Clone for UsbFunctionInterfaceProxy
Source§fn clone(&self) -> UsbFunctionInterfaceProxy
fn clone(&self) -> UsbFunctionInterfaceProxy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for UsbFunctionInterfaceProxy
impl Debug for UsbFunctionInterfaceProxy
Source§impl Proxy for UsbFunctionInterfaceProxy
impl Proxy for UsbFunctionInterfaceProxy
Source§type Protocol = UsbFunctionInterfaceMarker
type Protocol = UsbFunctionInterfaceMarker
Proxy controls.