diff options
| author | Matt Johnston <[email protected]> | 2025-08-11 15:18:31 +0800 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2025-09-05 16:35:54 +0200 |
| commit | bc448985d50827bd5c6211739563817795f925ab (patch) | |
| tree | 3146772687b2d45b28043d386c8f7d59ef65222b | |
| parent | 4ac4452c16e1b75bcf70814a9530b7724cc16e7d (diff) | |
otg: Simplify chunks_exact for tx
The last chunk doesn't need to be created first, instead borrow the
iterator so it can be used later for the remainder.
| -rw-r--r-- | embassy-usb-synopsys-otg/src/lib.rs | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/embassy-usb-synopsys-otg/src/lib.rs b/embassy-usb-synopsys-otg/src/lib.rs index 9d74c046d..b226bc8af 100644 --- a/embassy-usb-synopsys-otg/src/lib.rs +++ b/embassy-usb-synopsys-otg/src/lib.rs | |||
| @@ -1229,23 +1229,19 @@ impl<'d> embassy_usb_driver::EndpointIn for Endpoint<'d, In> { | |||
| 1229 | }); | 1229 | }); |
| 1230 | 1230 | ||
| 1231 | // Write data to FIFO | 1231 | // Write data to FIFO |
| 1232 | let chunks = buf.chunks_exact(4); | ||
| 1233 | // Stash the last partial chunk | ||
| 1234 | let rem = chunks.remainder(); | ||
| 1235 | let last_chunk = (!rem.is_empty()).then(|| { | ||
| 1236 | let mut tmp = [0u8; 4]; | ||
| 1237 | tmp[0..rem.len()].copy_from_slice(rem); | ||
| 1238 | u32::from_ne_bytes(tmp) | ||
| 1239 | }); | ||
| 1240 | |||
| 1241 | let fifo = self.regs.fifo(index); | 1232 | let fifo = self.regs.fifo(index); |
| 1242 | for chunk in chunks { | 1233 | let mut chunks = buf.chunks_exact(4); |
| 1234 | for chunk in &mut chunks { | ||
| 1243 | let val = u32::from_ne_bytes(chunk.try_into().unwrap()); | 1235 | let val = u32::from_ne_bytes(chunk.try_into().unwrap()); |
| 1244 | fifo.write_value(regs::Fifo(val)); | 1236 | fifo.write_value(regs::Fifo(val)); |
| 1245 | } | 1237 | } |
| 1246 | // Write any last chunk | 1238 | // Write any last chunk |
| 1247 | if let Some(val) = last_chunk { | 1239 | let rem = chunks.remainder(); |
| 1248 | fifo.write_value(regs::Fifo(val)); | 1240 | if !rem.is_empty() { |
| 1241 | let mut tmp = [0u8; 4]; | ||
| 1242 | tmp[0..rem.len()].copy_from_slice(rem); | ||
| 1243 | let tmp = u32::from_ne_bytes(tmp); | ||
| 1244 | fifo.write_value(regs::Fifo(tmp)); | ||
| 1249 | } | 1245 | } |
| 1250 | }); | 1246 | }); |
| 1251 | 1247 | ||
