embassy-usb-host

Crates

git

Versions

default

Flavors

SetupPacket

Struct SetupPacket 

Source
pub struct SetupPacket {
    pub request_type: RequestType,
    pub request: u8,
    pub value: u16,
    pub index: u16,
    pub length: u16,
}
Expand description

USB Control Setup Packet.

Convenience type for building SETUP packets; serialize with SetupPacket::to_bytes before passing to a USB driver.

Setup data format is described in USB spec Table 9-2.

Fields§

§request_type: RequestType

bmRequestType - Request characteristics: direction, type, recipient.

See RequestType for details.

§request: u8

bRequest - Request code.

See Table 9-3 of USB spec for standard ones.

§value: u16

wValue - Use depending on request field.

§index: u16

wIndex - Use depending on request field.

§length: u16

wLength - Number of bytes to transfer in data stage if there is one.

Implementations§

Source§

impl SetupPacket

Source

pub const fn to_bytes(self) -> [u8; 8]

Serialize this SETUP packet to its 8-byte wire format.

Multi-byte fields are emitted in little-endian order, as required by USB 2.0 spec §8.1.

Source

pub const fn from_bytes(wire: [u8; 8]) -> Self

Deserialize a wire format SETUP packet.

Multi-byte fields are interpreted in little-endian order, as required by USB 2.0 spec §8.1.

Source

pub const fn get_descriptor( class: bool, desc_type: u8, index: u8, max_len: u16, ) -> Self

Build a GET_DESCRIPTOR SETUP packet delivered to the Device recipient.

class selects Standard (false) vs Class (true) request type.

Source

pub const fn get_device_descriptor(max_len: u16) -> Self

Build a GET_DESCRIPTOR(Device) SETUP packet.

Source

pub const fn get_config_descriptor(index: u8, max_len: u16) -> Self

Build a GET_DESCRIPTOR(Configuration) SETUP packet.

Source

pub const fn get_interface_descriptor( desc_type: u8, interface: u16, max_len: u16, ) -> Self

Build a standard GET_DESCRIPTOR SETUP packet delivered to an Interface recipient.

Used for interface-owned descriptors such as the HID Report Descriptor.

Source

pub const fn get_hid_report_descriptor(interface: u8, len: u16) -> Self

Build a GET_DESCRIPTOR(HID Report Descriptor) SETUP packet.

interface is the HID interface number; len is from HidInfo::report_descriptor_len.

Source

pub const fn set_address(address: u8) -> Self

Build a SET_ADDRESS SETUP packet.

Source

pub const fn set_configuration(config_value: u8) -> Self

Build a SET_CONFIGURATION SETUP packet.

Source

pub const fn get_configuration() -> Self

Build a GET_CONFIGURATION SETUP packet.

Source

pub const fn class_interface_out( request: u8, value: u16, interface: u16, length: u16, ) -> Self

Build a class-specific interface request SETUP packet, host-to-device.

Pass length = 0 for requests with no data stage.

Source

pub const fn class_interface_in( request: u8, value: u16, interface: u16, length: u16, ) -> Self

Build a class-specific interface request SETUP packet, device-to-host.

Source

pub const fn vendor_interface_out( request: u8, value: u16, interface: u16, length: u16, ) -> Self

Build a vendor-specific interface request SETUP packet, host-to-device.

Source

pub const fn vendor_interface_in( request: u8, value: u16, interface: u16, length: u16, ) -> Self

Build a vendor-specific interface request SETUP packet, device-to-host.

Trait Implementations§

Source§

impl Clone for SetupPacket

Source§

fn clone(&self) -> SetupPacket

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SetupPacket

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Format for SetupPacket

Source§

fn format(&self, f: Formatter<'_>)

Writes the defmt representation of self to fmt.
Source§

impl PartialEq for SetupPacket

Source§

fn eq(&self, other: &SetupPacket) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for SetupPacket

Source§

impl Eq for SetupPacket

Source§

impl StructuralPartialEq for SetupPacket

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.