diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2023-02-01 00:36:22 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-02-01 00:36:22 +0000 |
| commit | 465e4c8b1940762cee6c75912a5289b70d34deca (patch) | |
| tree | 152e3b3635a4ebe450868d3fc097ab85504d7623 | |
| parent | 594969f2811b53741d1c5e477350dbf5b1b24a9d (diff) | |
| parent | 7ecb05ff77ba8cd87d87c1c6bc3b8c1a1624ad15 (diff) | |
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 <[email protected]>
| -rw-r--r-- | embassy-usb/src/builder.rs | 19 | ||||
| -rw-r--r-- | embassy-usb/src/class/cdc_acm.rs | 4 | ||||
| -rw-r--r-- | embassy-usb/src/class/cdc_ncm/mod.rs | 6 | ||||
| -rw-r--r-- | embassy-usb/src/class/hid.rs | 2 |
4 files changed, 21 insertions, 10 deletions
diff --git a/embassy-usb/src/builder.rs b/embassy-usb/src/builder.rs index 484989949..41b24fecf 100644 --- a/embassy-usb/src/builder.rs +++ b/embassy-usb/src/builder.rs | |||
| @@ -306,14 +306,25 @@ impl<'a, 'd, D: Driver<'d>> InterfaceBuilder<'a, 'd, D> { | |||
| 306 | /// Alternate setting numbers are guaranteed to be allocated consecutively, starting from 0. | 306 | /// Alternate setting numbers are guaranteed to be allocated consecutively, starting from 0. |
| 307 | /// | 307 | /// |
| 308 | /// The first alternate setting, with number 0, is the default one. | 308 | /// The first alternate setting, with number 0, is the default one. |
| 309 | pub fn alt_setting(&mut self, class: u8, subclass: u8, protocol: u8) -> InterfaceAltBuilder<'_, 'd, D> { | 309 | pub fn alt_setting( |
| 310 | &mut self, | ||
| 311 | class: u8, | ||
| 312 | subclass: u8, | ||
| 313 | protocol: u8, | ||
| 314 | interface_string: Option<StringIndex>, | ||
| 315 | ) -> InterfaceAltBuilder<'_, 'd, D> { | ||
| 310 | let number = self.next_alt_setting_number; | 316 | let number = self.next_alt_setting_number; |
| 311 | self.next_alt_setting_number += 1; | 317 | self.next_alt_setting_number += 1; |
| 312 | self.builder.interfaces[self.interface_number.0 as usize].num_alt_settings += 1; | 318 | self.builder.interfaces[self.interface_number.0 as usize].num_alt_settings += 1; |
| 313 | 319 | ||
| 314 | self.builder | 320 | self.builder.config_descriptor.interface_alt( |
| 315 | .config_descriptor | 321 | self.interface_number, |
| 316 | .interface_alt(self.interface_number, number, class, subclass, protocol, None); | 322 | number, |
| 323 | class, | ||
| 324 | subclass, | ||
| 325 | protocol, | ||
| 326 | interface_string, | ||
| 327 | ); | ||
| 317 | 328 | ||
| 318 | InterfaceAltBuilder { | 329 | InterfaceAltBuilder { |
| 319 | builder: self.builder, | 330 | builder: self.builder, |
diff --git a/embassy-usb/src/class/cdc_acm.rs b/embassy-usb/src/class/cdc_acm.rs index 09f17456c..fb9eaeca7 100644 --- a/embassy-usb/src/class/cdc_acm.rs +++ b/embassy-usb/src/class/cdc_acm.rs | |||
| @@ -175,7 +175,7 @@ impl<'d, D: Driver<'d>> CdcAcmClass<'d, D> { | |||
| 175 | iface.handler(control); | 175 | iface.handler(control); |
| 176 | let comm_if = iface.interface_number(); | 176 | let comm_if = iface.interface_number(); |
| 177 | let data_if = u8::from(comm_if) + 1; | 177 | let data_if = u8::from(comm_if) + 1; |
| 178 | let mut alt = iface.alt_setting(USB_CLASS_CDC, CDC_SUBCLASS_ACM, CDC_PROTOCOL_NONE); | 178 | let mut alt = iface.alt_setting(USB_CLASS_CDC, CDC_SUBCLASS_ACM, CDC_PROTOCOL_NONE, None); |
| 179 | 179 | ||
| 180 | alt.descriptor( | 180 | alt.descriptor( |
| 181 | CS_INTERFACE, | 181 | CS_INTERFACE, |
| @@ -209,7 +209,7 @@ impl<'d, D: Driver<'d>> CdcAcmClass<'d, D> { | |||
| 209 | // Data interface | 209 | // Data interface |
| 210 | let mut iface = func.interface(); | 210 | let mut iface = func.interface(); |
| 211 | let data_if = iface.interface_number(); | 211 | let data_if = iface.interface_number(); |
| 212 | let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NONE); | 212 | let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NONE, None); |
| 213 | let read_ep = alt.endpoint_bulk_out(max_packet_size); | 213 | let read_ep = alt.endpoint_bulk_out(max_packet_size); |
| 214 | let write_ep = alt.endpoint_bulk_in(max_packet_size); | 214 | let write_ep = alt.endpoint_bulk_in(max_packet_size); |
| 215 | 215 | ||
diff --git a/embassy-usb/src/class/cdc_ncm/mod.rs b/embassy-usb/src/class/cdc_ncm/mod.rs index 5e59b72fe..d6c7d37e6 100644 --- a/embassy-usb/src/class/cdc_ncm/mod.rs +++ b/embassy-usb/src/class/cdc_ncm/mod.rs | |||
| @@ -259,7 +259,7 @@ impl<'d, D: Driver<'d>> CdcNcmClass<'d, D> { | |||
| 259 | mac_addr_str: [0; 12], | 259 | mac_addr_str: [0; 12], |
| 260 | })); | 260 | })); |
| 261 | let comm_if = iface.interface_number(); | 261 | let comm_if = iface.interface_number(); |
| 262 | let mut alt = iface.alt_setting(USB_CLASS_CDC, CDC_SUBCLASS_NCM, CDC_PROTOCOL_NONE); | 262 | let mut alt = iface.alt_setting(USB_CLASS_CDC, CDC_SUBCLASS_NCM, CDC_PROTOCOL_NONE, None); |
| 263 | 263 | ||
| 264 | alt.descriptor( | 264 | alt.descriptor( |
| 265 | CS_INTERFACE, | 265 | CS_INTERFACE, |
| @@ -309,8 +309,8 @@ impl<'d, D: Driver<'d>> CdcNcmClass<'d, D> { | |||
| 309 | let mut iface = func.interface(); | 309 | let mut iface = func.interface(); |
| 310 | iface.handler(state.data_control.write(DataControl {})); | 310 | iface.handler(state.data_control.write(DataControl {})); |
| 311 | let data_if = iface.interface_number(); | 311 | let data_if = iface.interface_number(); |
| 312 | let _alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB); | 312 | let _alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB, None); |
| 313 | let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB); | 313 | let mut alt = iface.alt_setting(USB_CLASS_CDC_DATA, 0x00, CDC_PROTOCOL_NTB, None); |
| 314 | let read_ep = alt.endpoint_bulk_out(max_packet_size); | 314 | let read_ep = alt.endpoint_bulk_out(max_packet_size); |
| 315 | let write_ep = alt.endpoint_bulk_in(max_packet_size); | 315 | let write_ep = alt.endpoint_bulk_in(max_packet_size); |
| 316 | 316 | ||
diff --git a/embassy-usb/src/class/hid.rs b/embassy-usb/src/class/hid.rs index 2493061b0..0283c1124 100644 --- a/embassy-usb/src/class/hid.rs +++ b/embassy-usb/src/class/hid.rs | |||
| @@ -111,7 +111,7 @@ fn build<'d, D: Driver<'d>>( | |||
| 111 | let mut func = builder.function(USB_CLASS_HID, USB_SUBCLASS_NONE, USB_PROTOCOL_NONE); | 111 | let mut func = builder.function(USB_CLASS_HID, USB_SUBCLASS_NONE, USB_PROTOCOL_NONE); |
| 112 | let mut iface = func.interface(); | 112 | let mut iface = func.interface(); |
| 113 | iface.handler(control); | 113 | iface.handler(control); |
| 114 | let mut alt = iface.alt_setting(USB_CLASS_HID, USB_SUBCLASS_NONE, USB_PROTOCOL_NONE); | 114 | let mut alt = iface.alt_setting(USB_CLASS_HID, USB_SUBCLASS_NONE, USB_PROTOCOL_NONE, None); |
| 115 | 115 | ||
| 116 | // HID descriptor | 116 | // HID descriptor |
| 117 | alt.descriptor( | 117 | alt.descriptor( |
