Struct devices::usb::host_backend::usb_endpoint::UsbEndpoint
source · pub struct UsbEndpoint {
fail_handle: Arc<dyn FailHandle>,
job_queue: Arc<AsyncJobQueue>,
device: Arc<Mutex<Device>>,
endpoint_number: u8,
direction: EndpointDirection,
ty: EndpointType,
}
Expand description
Isochronous, Bulk or Interrupt endpoint.
Fields§
§fail_handle: Arc<dyn FailHandle>
§job_queue: Arc<AsyncJobQueue>
§device: Arc<Mutex<Device>>
§endpoint_number: u8
§direction: EndpointDirection
§ty: EndpointType
Implementations§
source§impl UsbEndpoint
impl UsbEndpoint
sourcepub fn new(
fail_handle: Arc<dyn FailHandle>,
job_queue: Arc<AsyncJobQueue>,
device: Arc<Mutex<Device>>,
endpoint_number: u8,
direction: EndpointDirection,
ty: EndpointType
) -> UsbEndpoint
pub fn new(
fail_handle: Arc<dyn FailHandle>,
job_queue: Arc<AsyncJobQueue>,
device: Arc<Mutex<Device>>,
endpoint_number: u8,
direction: EndpointDirection,
ty: EndpointType
) -> UsbEndpoint
Create new endpoint. This function will panic if endpoint type is control.
fn ep_addr(&self) -> u8
sourcepub fn match_ep(&self, endpoint_number: u8, dir: TransferDirection) -> bool
pub fn match_ep(&self, endpoint_number: u8, dir: TransferDirection) -> bool
Returns true is this endpoint matches number and direction.
sourcepub fn handle_transfer(&self, transfer: XhciTransfer) -> Result<()>
pub fn handle_transfer(&self, transfer: XhciTransfer) -> Result<()>
Handle a xhci transfer.
fn get_transfer_buffer(&self, buffer: &ScatterGatherBuffer) -> Result<Vec<u8>>
fn handle_bulk_transfer(
&self,
xhci_transfer: XhciTransfer,
buffer: ScatterGatherBuffer
) -> Result<()>
fn handle_interrupt_transfer(
&self,
xhci_transfer: XhciTransfer,
buffer: ScatterGatherBuffer
) -> Result<()>
fn do_handle_transfer(
&self,
xhci_transfer: XhciTransfer,
usb_transfer: Transfer,
buffer: ScatterGatherBuffer
) -> Result<()>
Auto Trait Implementations§
impl !RefUnwindSafe for UsbEndpoint
impl Send for UsbEndpoint
impl Sync for UsbEndpoint
impl Unpin for UsbEndpoint
impl !UnwindSafe for UsbEndpoint
Blanket Implementations§
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.