From bc448985d50827bd5c6211739563817795f925ab Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Mon, 11 Aug 2025 15:18:31 +0800 Subject: 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. --- embassy-usb-synopsys-otg/src/lib.rs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'embassy-usb-synopsys-otg') 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> { }); // Write data to FIFO - let chunks = buf.chunks_exact(4); - // Stash the last partial chunk - let rem = chunks.remainder(); - let last_chunk = (!rem.is_empty()).then(|| { - let mut tmp = [0u8; 4]; - tmp[0..rem.len()].copy_from_slice(rem); - u32::from_ne_bytes(tmp) - }); - let fifo = self.regs.fifo(index); - for chunk in chunks { + let mut chunks = buf.chunks_exact(4); + for chunk in &mut chunks { let val = u32::from_ne_bytes(chunk.try_into().unwrap()); fifo.write_value(regs::Fifo(val)); } // Write any last chunk - if let Some(val) = last_chunk { - fifo.write_value(regs::Fifo(val)); + let rem = chunks.remainder(); + if !rem.is_empty() { + let mut tmp = [0u8; 4]; + tmp[0..rem.len()].copy_from_slice(rem); + let tmp = u32::from_ne_bytes(tmp); + fifo.write_value(regs::Fifo(tmp)); } }); -- cgit