pub struct DescriptorWriter<'a> { /* private fields */ }
Expand description

A writer for USB descriptors.

Implementations

Gets the current position in the buffer, i.e. the number of bytes written so far.

Writes an arbitrary (usually class-specific) descriptor.

Writes an arbitrary (usually class-specific) descriptor by using a callback function.

The callback function gets a reference to the remaining buffer space, and it should write the descriptor into it and return the number of bytes written. If the descriptor doesn’t fit, the function should return Err(UsbError::BufferOverflow). That and any error returned by it will be propagated up.

Writes a interface association descriptor. Call from UsbClass::get_configuration_descriptors before writing the USB class or function’s interface descriptors if your class has more than one interface and wants to play nicely with composite devices on Windows. If the USB device hosting the class was not configured as composite with IADs enabled, calling this function does nothing, so it is safe to call from libraries.

Arguments
  • first_interface - Number of the function’s first interface, previously allocated with UsbBusAllocator::interface.
  • interface_count - Number of interfaces in the function.
  • function_class - Class code assigned by USB.org. Use 0xff for vendor-specific devices that do not conform to any class.
  • function_sub_class - Sub-class code. Depends on class.
  • function_protocol - Protocol code. Depends on class and sub-class.

Writes a interface descriptor.

Arguments
  • number - Interface number previously allocated with UsbBusAllocator::interface.
  • interface_class - Class code assigned by USB.org. Use 0xff for vendor-specific devices that do not conform to any class.
  • interface_sub_class - Sub-class code. Depends on class.
  • interface_protocol - Protocol code. Depends on class and sub-class.

Writes a interface descriptor with a specific alternate setting and interface string identifier.

Arguments
  • number - Interface number previously allocated with UsbBusAllocator::interface.
  • alternate_setting - Number of the alternate setting
  • interface_class - Class code assigned by USB.org. Use 0xff for vendor-specific devices that do not conform to any class.
  • interface_sub_class - Sub-class code. Depends on class.
  • interface_protocol - Protocol code. Depends on class and sub-class.
  • interface_string - Index of string descriptor describing this interface

Writes an endpoint descriptor.

Arguments

Writes an endpoint descriptor with extra trailing data.

This is rarely needed and shouldn’t be used except for compatibility with standard USB classes that require it. Extra data is normally written in a separate class specific descriptor.

Arguments
  • endpoint - Endpoint previously allocated with UsbBusAllocator.
  • f - Callback for the extra data. See write_with for more information.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.