diff options
| author | Dario Nieuwenhuis <[email protected]> | 2022-03-28 03:34:24 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2022-04-06 05:38:11 +0200 |
| commit | e99a3a1da42649bb9ad9a64508d14d6461be331d (patch) | |
| tree | eb28a76b0d0d08710ce1a44de58fd9a92209fee6 /embassy-usb/src/lib.rs | |
| parent | bfce731982af1f053b1b727e49e920fc496a9546 (diff) | |
usb: simplify buffer handling for Control IN transfers.
Diffstat (limited to 'embassy-usb/src/lib.rs')
| -rw-r--r-- | embassy-usb/src/lib.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/embassy-usb/src/lib.rs b/embassy-usb/src/lib.rs index 8d2024026..9ac55db78 100644 --- a/embassy-usb/src/lib.rs +++ b/embassy-usb/src/lib.rs | |||
| @@ -278,7 +278,6 @@ impl<'d, D: Driver<'d>> UsbDevice<'d, D> { | |||
| 278 | _ => self.control.reject(), | 278 | _ => self.control.reject(), |
| 279 | }, | 279 | }, |
| 280 | (RequestType::Class, Recipient::Interface) => { | 280 | (RequestType::Class, Recipient::Interface) => { |
| 281 | let mut buf = [0; 128]; | ||
| 282 | let handler = self | 281 | let handler = self |
| 283 | .interfaces | 282 | .interfaces |
| 284 | .iter_mut() | 283 | .iter_mut() |
| @@ -286,10 +285,10 @@ impl<'d, D: Driver<'d>> UsbDevice<'d, D> { | |||
| 286 | .map(|(_, h)| h); | 285 | .map(|(_, h)| h); |
| 287 | match handler { | 286 | match handler { |
| 288 | Some(handler) => { | 287 | Some(handler) => { |
| 289 | let resp = handler.control_in(req, ControlIn::new(&mut buf)); | 288 | let mut buf = [0; 128]; |
| 290 | match resp.response { | 289 | match handler.control_in(req, &mut buf) { |
| 291 | OutResponse::Accepted => self.control.accept_in(resp.data).await, | 290 | InResponse::Accepted(len) => self.control.accept_in(&buf[..len]).await, |
| 292 | OutResponse::Rejected => self.control.reject(), | 291 | InResponse::Rejected => self.control.reject(), |
| 293 | } | 292 | } |
| 294 | } | 293 | } |
| 295 | None => self.control.reject(), | 294 | None => self.control.reject(), |
