Struct devices::usb::xhci::device_slot::DeviceSlots
source · pub struct DeviceSlots {
fail_handle: Arc<dyn FailHandle>,
hub: Arc<UsbHub>,
slots: Vec<Arc<DeviceSlot>>,
}
Fields§
§fail_handle: Arc<dyn FailHandle>
§hub: Arc<UsbHub>
§slots: Vec<Arc<DeviceSlot>>
Implementations§
source§impl DeviceSlots
impl DeviceSlots
pub fn new( fail_handle: Arc<dyn FailHandle>, dcbaap: Register<u64>, hub: Arc<UsbHub>, interrupter: Arc<Mutex<Interrupter>>, event_loop: Arc<EventLoop>, mem: GuestMemory ) -> DeviceSlots
sourcepub fn slot(&self, slot_id: u8) -> Option<Arc<DeviceSlot>>
pub fn slot(&self, slot_id: u8) -> Option<Arc<DeviceSlot>>
Note that slot id starts from 1. Slot index start from 0.
sourcepub fn reset_port(&self, port_id: u8) -> Result<(), Error>
pub fn reset_port(&self, port_id: u8) -> Result<(), Error>
Reset the device connected to a specific port.
sourcepub fn stop_all_and_reset<C: FnMut() + 'static + Send>(&self, callback: C)
pub fn stop_all_and_reset<C: FnMut() + 'static + Send>(&self, callback: C)
Stop all device slots and reset them.
sourcepub fn stop_all(&self, auto_callback: RingBufferStopCallback)
pub fn stop_all(&self, auto_callback: RingBufferStopCallback)
Stop all devices. The auto callback will be executed when all trc is stopped. It could happen asynchronously, if there are any pending transfers.
sourcepub fn disable_slot<C: FnMut(TrbCompletionCode) -> Result<(), ()> + 'static + Send>(
&self,
slot_id: u8,
cb: C
) -> Result<(), Error>
pub fn disable_slot<C: FnMut(TrbCompletionCode) -> Result<(), ()> + 'static + Send>( &self, slot_id: u8, cb: C ) -> Result<(), Error>
Disable a slot. This might happen asynchronously, if there is any pending transfers. The callback will be invoked when slot is actually disabled.
sourcepub fn reset_slot<C: FnMut(TrbCompletionCode) -> Result<(), ()> + 'static + Send>(
&self,
slot_id: u8,
cb: C
) -> Result<(), Error>
pub fn reset_slot<C: FnMut(TrbCompletionCode) -> Result<(), ()> + 'static + Send>( &self, slot_id: u8, cb: C ) -> Result<(), Error>
Reset a slot. This is a shortcut call for DeviceSlot::reset_slot.
pub fn stop_endpoint<C: FnMut(TrbCompletionCode) -> Result<(), ()> + 'static + Send>( &self, slot_id: u8, endpoint_id: u8, cb: C ) -> Result<(), Error>
pub fn reset_endpoint<C: FnMut(TrbCompletionCode) -> Result<(), ()> + 'static + Send>( &self, slot_id: u8, endpoint_id: u8, cb: C ) -> Result<(), Error>
Trait Implementations§
source§impl Clone for DeviceSlots
impl Clone for DeviceSlots
source§fn clone(&self) -> DeviceSlots
fn clone(&self) -> DeviceSlots
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for DeviceSlots
impl Send for DeviceSlots
impl Sync for DeviceSlots
impl Unpin for DeviceSlots
impl !UnwindSafe for DeviceSlots
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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.