embassy-usb-driver

Crates

git

Versions

default

Flavors

Skip to main content

EndpointConfig

Struct EndpointConfig 

Source
#[non_exhaustive]
pub struct EndpointConfig { pub addr: Option<EndpointAddress>, pub ep_type: EndpointType, pub max_packet_size: u16, pub interval_ms: u8, pub buffers: u8, pub max_burst: u8, pub max_streams: u8, pub mult: u8, pub bytes_per_interval: u32, }
Expand description

Configuration to allocate an endpoint with.

The driver must allocate an endpoint with exactly the given addr (if any), ep_type, max_packet_size and interval_ms, or fail. The docs of the other fields say whether the driver may deviate from them.

The SuperSpeed fields are those of the endpoint’s SuperSpeed Endpoint Companion descriptor, and 0 for an endpoint that has none.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§addr: Option<EndpointAddress>

Endpoint’s address, or None for the driver to pick one.

§ep_type: EndpointType

Endpoint’s type.

§max_packet_size: u16

Max packet size, in bytes.

§interval_ms: u8

Polling interval, in milliseconds.

§buffers: u8

Number of packets the hardware may buffer for the endpoint.

More buffers let the hardware move the next packet while software is still busy with the previous one, at the cost of more packet memory.

This is just a best-effort hint for the driver. Drivers may use a lower value if there is not enough packet memory, or completely ignore it.

§max_burst: u8

SuperSpeed bMaxBurst: the endpoint bursts up to max_burst + 1 packets.

Drivers may use a lower value, and report it in EndpointInfo::max_burst.

§max_streams: u8

SuperSpeed bulk MaxStreams: the endpoint has 2^max_streams streams, or none when 0.

§mult: u8

SuperSpeed isochronous Mult: the endpoint moves up to mult + 1 bursts per service interval.

§bytes_per_interval: u32

SuperSpeed periodic wBytesPerInterval, or the dwBytesPerInterval of a SuperSpeedPlus isochronous endpoint: the bytes the endpoint moves per service interval.

Implementations§

Source§

impl EndpointConfig

Source

pub const fn new( addr: Option<EndpointAddress>, ep_type: EndpointType, max_packet_size: u16, interval_ms: u8, ) -> Self

An endpoint with one buffer and all SuperSpeed fields 0.

Trait Implementations§

Source§

impl Clone for EndpointConfig

Source§

fn clone(&self) -> EndpointConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for EndpointConfig

Source§

impl Debug for EndpointConfig

Source§

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

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

impl Eq for EndpointConfig

Source§

impl Format for EndpointConfig

Source§

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

Writes the defmt representation of self to fmt.
Source§

impl PartialEq for EndpointConfig

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for EndpointConfig

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 = !

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.