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 Freeze for DeviceSlots
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§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.