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§
sourcetype EndpointOut: EndpointOut + 'a
type EndpointOut: EndpointOut + 'a
Type of the OUT endpoints for this driver.
sourcetype EndpointIn: EndpointIn + 'a
type EndpointIn: EndpointIn + 'a
Type of the IN endpoints for this driver.
sourcetype ControlPipe: ControlPipe + 'a
type ControlPipe: ControlPipe + 'a
Type of the control pipe for this driver.
Required Methods§
sourcefn 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>
sourcefn 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>
sourcefn 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.