diff options
| author | Dario Nieuwenhuis <[email protected]> | 2022-03-30 02:01:09 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2022-04-06 05:38:11 +0200 |
| commit | a435d78cf78deb1a93682d9ff2632706eaa1b951 (patch) | |
| tree | 580f4ac3aba6ede0a3021982c9725a6d3055b251 /embassy-usb-serial/src | |
| parent | 60d3d111972f462c1f38d1d4fd27e89713974fc6 (diff) | |
usb: cleanup and simplify error handling.
Diffstat (limited to 'embassy-usb-serial/src')
| -rw-r--r-- | embassy-usb-serial/src/lib.rs | 117 |
1 files changed, 48 insertions, 69 deletions
diff --git a/embassy-usb-serial/src/lib.rs b/embassy-usb-serial/src/lib.rs index ce1fb4775..a30cdd678 100644 --- a/embassy-usb-serial/src/lib.rs +++ b/embassy-usb-serial/src/lib.rs | |||
| @@ -184,78 +184,57 @@ impl<'d, D: Driver<'d>> CdcAcmClass<'d, D> { | |||
| 184 | let read_ep = builder.alloc_bulk_endpoint_out(max_packet_size); | 184 | let read_ep = builder.alloc_bulk_endpoint_out(max_packet_size); |
| 185 | let write_ep = builder.alloc_bulk_endpoint_in(max_packet_size); | 185 | let write_ep = builder.alloc_bulk_endpoint_in(max_packet_size); |
| 186 | 186 | ||
| 187 | builder | 187 | builder.config_descriptor.iad( |
| 188 | .config_descriptor | 188 | comm_if, |
| 189 | .iad( | 189 | 2, |
| 190 | comm_if, | 190 | USB_CLASS_CDC, |
| 191 | 2, | 191 | CDC_SUBCLASS_ACM, |
| 192 | USB_CLASS_CDC, | 192 | CDC_PROTOCOL_NONE, |
| 193 | CDC_SUBCLASS_ACM, | 193 | ); |
| 194 | CDC_PROTOCOL_NONE, | 194 | builder.config_descriptor.interface( |
| 195 | ) | 195 | comm_if, |
| 196 | .unwrap(); | 196 | USB_CLASS_CDC, |
| 197 | 197 | CDC_SUBCLASS_ACM, | |
| 198 | builder | 198 | CDC_PROTOCOL_NONE, |
| 199 | .config_descriptor | 199 | ); |
| 200 | .interface(comm_if, USB_CLASS_CDC, CDC_SUBCLASS_ACM, CDC_PROTOCOL_NONE) | 200 | builder.config_descriptor.write( |
| 201 | .unwrap(); | 201 | CS_INTERFACE, |
| 202 | 202 | &[ | |
| 203 | builder | 203 | CDC_TYPE_HEADER, // bDescriptorSubtype |
| 204 | .config_descriptor | 204 | 0x10, |
| 205 | .write( | 205 | 0x01, // bcdCDC (1.10) |
| 206 | CS_INTERFACE, | 206 | ], |
| 207 | &[ | 207 | ); |
| 208 | CDC_TYPE_HEADER, // bDescriptorSubtype | 208 | builder.config_descriptor.write( |
| 209 | 0x10, | 209 | CS_INTERFACE, |
| 210 | 0x01, // bcdCDC (1.10) | 210 | &[ |
| 211 | ], | 211 | CDC_TYPE_ACM, // bDescriptorSubtype |
| 212 | ) | 212 | 0x00, // bmCapabilities |
| 213 | .unwrap(); | 213 | ], |
| 214 | 214 | ); | |
| 215 | builder | 215 | builder.config_descriptor.write( |
| 216 | .config_descriptor | 216 | CS_INTERFACE, |
| 217 | .write( | 217 | &[ |
| 218 | CS_INTERFACE, | 218 | CDC_TYPE_UNION, // bDescriptorSubtype |
| 219 | &[ | 219 | comm_if.into(), // bControlInterface |
| 220 | CDC_TYPE_ACM, // bDescriptorSubtype | 220 | data_if.into(), // bSubordinateInterface |
| 221 | 0x00, // bmCapabilities | 221 | ], |
| 222 | ], | 222 | ); |
| 223 | ) | 223 | builder.config_descriptor.write( |
| 224 | .unwrap(); | 224 | CS_INTERFACE, |
| 225 | 225 | &[ | |
| 226 | builder | 226 | CDC_TYPE_CALL_MANAGEMENT, // bDescriptorSubtype |
| 227 | .config_descriptor | 227 | 0x00, // bmCapabilities |
| 228 | .write( | 228 | data_if.into(), // bDataInterface |
| 229 | CS_INTERFACE, | 229 | ], |
| 230 | &[ | 230 | ); |
| 231 | CDC_TYPE_UNION, // bDescriptorSubtype | 231 | builder.config_descriptor.endpoint(comm_ep.info()); |
| 232 | comm_if.into(), // bControlInterface | ||
| 233 | data_if.into(), // bSubordinateInterface | ||
| 234 | ], | ||
| 235 | ) | ||
| 236 | .unwrap(); | ||
| 237 | 232 | ||
| 238 | builder | 233 | builder |
| 239 | .config_descriptor | 234 | .config_descriptor |
| 240 | .write( | 235 | .interface(data_if, USB_CLASS_CDC_DATA, 0x00, 0x00); |
| 241 | CS_INTERFACE, | 236 | builder.config_descriptor.endpoint(write_ep.info()); |
| 242 | &[ | 237 | builder.config_descriptor.endpoint(read_ep.info()); |
| 243 | CDC_TYPE_CALL_MANAGEMENT, // bDescriptorSubtype | ||
| 244 | 0x00, // bmCapabilities | ||
| 245 | data_if.into(), // bDataInterface | ||
| 246 | ], | ||
| 247 | ) | ||
| 248 | .unwrap(); | ||
| 249 | |||
| 250 | builder.config_descriptor.endpoint(comm_ep.info()).unwrap(); | ||
| 251 | |||
| 252 | builder | ||
| 253 | .config_descriptor | ||
| 254 | .interface(data_if, USB_CLASS_CDC_DATA, 0x00, 0x00) | ||
| 255 | .unwrap(); | ||
| 256 | |||
| 257 | builder.config_descriptor.endpoint(write_ep.info()).unwrap(); | ||
| 258 | builder.config_descriptor.endpoint(read_ep.info()).unwrap(); | ||
| 259 | 238 | ||
| 260 | CdcAcmClass { | 239 | CdcAcmClass { |
| 261 | comm_ep, | 240 | comm_ep, |
