Trait Driver
pub trait Driver<'a> {
type EndpointOut: EndpointOut + 'a;
type EndpointIn: EndpointIn + 'a;
type ControlPipe: ControlPipe + 'a;
type Bus: Bus + 'a;
// Required methods
fn alloc_endpoint_out(
&mut self,
ep_type: EndpointType,
max_packet_size: u16,
interval_ms: u8,
) -> Result<Self::EndpointOut, EndpointAllocError>;
fn alloc_endpoint_in(
&mut self,
ep_type: EndpointType,
max_packet_size: u16,
interval_ms: u8,
) -> Result<Self::EndpointIn, EndpointAllocError>;
fn start(
self,
control_max_packet_size: u16,
) -> (Self::Bus, Self::ControlPipe);
}
Expand description
Main USB driver trait.
Implement this to add support for a new hardware platform.
Required Associated Types§
type EndpointOut: EndpointOut + 'a
type EndpointOut: EndpointOut + 'a
Type of the OUT endpoints for this driver.
type EndpointIn: EndpointIn + 'a
type EndpointIn: EndpointIn + 'a
Type of the IN endpoints for this driver.
type ControlPipe: ControlPipe + 'a
type ControlPipe: ControlPipe + 'a
Type of the control pipe for this driver.
Required Methods§
fn alloc_endpoint_out(
&mut self,
ep_type: EndpointType,
max_packet_size: u16,
interval_ms: u8,
) -> Result<Self::EndpointOut, EndpointAllocError>
fn alloc_endpoint_out( &mut self, ep_type: EndpointType, max_packet_size: u16, interval_ms: u8, ) -> Result<Self::EndpointOut, EndpointAllocError>
fn alloc_endpoint_in(
&mut self,
ep_type: EndpointType,
max_packet_size: u16,
interval_ms: u8,
) -> Result<Self::EndpointIn, EndpointAllocError>
fn alloc_endpoint_in( &mut self, ep_type: EndpointType, max_packet_size: u16, interval_ms: u8, ) -> Result<Self::EndpointIn, EndpointAllocError>
fn start(self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe)
fn start(self, control_max_packet_size: u16) -> (Self::Bus, Self::ControlPipe)
Start operation of the USB device.
This returns the Bus
and ControlPipe
instances that are used to operate
the USB device. Additionally, this makes all the previously allocated endpoints
start operating.
This consumes the Driver
instance, so it’s no longer possible to allocate more
endpoints.