aboutsummaryrefslogtreecommitdiff
path: root/embassy-usb-serial/src
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2022-03-30 02:01:09 +0200
committerDario Nieuwenhuis <[email protected]>2022-04-06 05:38:11 +0200
commita435d78cf78deb1a93682d9ff2632706eaa1b951 (patch)
tree580f4ac3aba6ede0a3021982c9725a6d3055b251 /embassy-usb-serial/src
parent60d3d111972f462c1f38d1d4fd27e89713974fc6 (diff)
usb: cleanup and simplify error handling.
Diffstat (limited to 'embassy-usb-serial/src')
-rw-r--r--embassy-usb-serial/src/lib.rs117
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,