Merge #1151
1151: USB: allow setting the interface string for interface alt settings r=Dirbaio a=mattico This is a breaking change to embassy-usb's API. Co-authored-by: Matt Ickstadt <matt@beckenterprises.com>
This commit is contained in:
commit
465e4c8b19
4 changed files with 21 additions and 10 deletions
|
@ -306,14 +306,25 @@ impl<'a, 'd, D: Driver<'d>> InterfaceBuilder<'a, 'd, D> {
|
||||||
/// Alternate setting numbers are guaranteed to be allocated consecutively, starting from 0.
|
/// Alternate setting numbers are guaranteed to be allocated consecutively, starting from 0.
|
||||||
///
|
///
|
||||||
/// The first alternate setting, with number 0, is the default one.
|
/// The first alternate setting, with number 0, is the default one.
|
||||||
pub fn alt_setting(&mut self, class: u8, subclass: u8, protocol: u8) -> InterfaceAltBuilder<'_, 'd, D> {
|
pub fn alt_setting(
|
||||||
|
&mut self,
|
||||||
|
class: u8,
|
||||||
|
subclass: u8,
|
||||||
|
protocol: u8,
|
||||||
|
interface_string: Option<StringIndex>,
|
||||||
|
) -> InterfaceAltBuilder<'_, 'd, D> {
|
||||||
let number = self.next_alt_setting_number;
|
let number = self.next_alt_setting_number;
|
||||||
self.next_alt_setting_number += 1;
|
self.next_alt_setting_number += 1;
|
||||||
self.builder.interfaces[self.interface_number.0 as usize].num_alt_settings += 1;
|
self.builder.interfaces[self.interface_number.0 as usize].num_alt_settings += 1;
|
||||||
|
|
||||||
self.builder
|
self.builder.config_descriptor.interface_alt(
|
||||||
.config_descriptor
|
self.interface_number,
|
||||||
.interface_alt(self.interface_number, number, class, subclass, protocol, None);
|
number,
|
||||||
|
class,
|
||||||
|
subclass,
|
||||||
|
protocol,
|
||||||
|
interface_string,
|
||||||
|
);
|
||||||
|
|
||||||
InterfaceAltBuilder {
|
InterfaceAltBuilder {
|
||||||
builder: self.builder,
|
builder: self.builder,
|
||||||
|
|
|
@ -175,7 +175,7 @@ impl<'d, D: Driver<'d>> CdcAcmClass<'d, D> {
|
||||||
iface.handler(control);
|
iface.handler(control);
|
||||||
let comm_if = iface.interface_number();
|
let comm_if = iface.interface_number();
|
||||||
let data_if = u8::from(comm_if) + 1;
|
let data_if = u8::from(comm_if) + 1;
|
||||||
let mut alt = iface.alt_setting(USB_CLASS_CDC, CDC_SUBCLASS_ACM, CDC_PROTOCOL_NONE);
|
let mut alt = iface.alt_setting(USB_CLASS_CDC, CDC_SUBCLASS_ACM, CDC_PROTOCOL_NONE, None);
|
||||||
|
|
||||||
alt.descriptor(
|
alt.descriptor(
|
||||||
CS_INTERFACE,
|
CS_INTERFACE,
|
||||||
|
@ -209,7 +209,7 @@ impl<'d, D: Driver<'d>> CdcAcmClass<'d, D> {
|
||||||
// Data interface
|
// Data interface
|
||||||
let mut iface = func.interface();
|
let mut iface = func.interface();
|
||||||
let data_if = iface.interface_number();
|
let data_if = iface.interface_number();
|
||||||
let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NONE);
|
let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NONE, None);
|
||||||
let read_ep = alt.endpoint_bulk_out(max_packet_size);
|
let read_ep = alt.endpoint_bulk_out(max_packet_size);
|
||||||
let write_ep = alt.endpoint_bulk_in(max_packet_size);
|
let write_ep = alt.endpoint_bulk_in(max_packet_size);
|
||||||
|
|
||||||
|
|
|
@ -259,7 +259,7 @@ impl<'d, D: Driver<'d>> CdcNcmClass<'d, D> {
|
||||||
mac_addr_str: [0; 12],
|
mac_addr_str: [0; 12],
|
||||||
}));
|
}));
|
||||||
let comm_if = iface.interface_number();
|
let comm_if = iface.interface_number();
|
||||||
let mut alt = iface.alt_setting(USB_CLASS_CDC, CDC_SUBCLASS_NCM, CDC_PROTOCOL_NONE);
|
let mut alt = iface.alt_setting(USB_CLASS_CDC, CDC_SUBCLASS_NCM, CDC_PROTOCOL_NONE, None);
|
||||||
|
|
||||||
alt.descriptor(
|
alt.descriptor(
|
||||||
CS_INTERFACE,
|
CS_INTERFACE,
|
||||||
|
@ -309,8 +309,8 @@ impl<'d, D: Driver<'d>> CdcNcmClass<'d, D> {
|
||||||
let mut iface = func.interface();
|
let mut iface = func.interface();
|
||||||
iface.handler(state.data_control.write(DataControl {}));
|
iface.handler(state.data_control.write(DataControl {}));
|
||||||
let data_if = iface.interface_number();
|
let data_if = iface.interface_number();
|
||||||
let _alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB);
|
let _alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB, None);
|
||||||
let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB);
|
let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB, None);
|
||||||
let read_ep = alt.endpoint_bulk_out(max_packet_size);
|
let read_ep = alt.endpoint_bulk_out(max_packet_size);
|
||||||
let write_ep = alt.endpoint_bulk_in(max_packet_size);
|
let write_ep = alt.endpoint_bulk_in(max_packet_size);
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,7 @@ fn build<'d, D: Driver<'d>>(
|
||||||
let mut func = builder.function(USB_CLASS_HID, USB_SUBCLASS_NONE, USB_PROTOCOL_NONE);
|
let mut func = builder.function(USB_CLASS_HID, USB_SUBCLASS_NONE, USB_PROTOCOL_NONE);
|
||||||
let mut iface = func.interface();
|
let mut iface = func.interface();
|
||||||
iface.handler(control);
|
iface.handler(control);
|
||||||
let mut alt = iface.alt_setting(USB_CLASS_HID, USB_SUBCLASS_NONE, USB_PROTOCOL_NONE);
|
let mut alt = iface.alt_setting(USB_CLASS_HID, USB_SUBCLASS_NONE, USB_PROTOCOL_NONE, None);
|
||||||
|
|
||||||
// HID descriptor
|
// HID descriptor
|
||||||
alt.descriptor(
|
alt.descriptor(
|
||||||
|
|
Loading…
Reference in a new issue