From fdbb9574aad8f6dd9bbff2e79645ffe22d339ff8 Mon Sep 17 00:00:00 2001 From: Jiajie Chen Date: Wed, 24 Dec 2025 23:17:29 +0800 Subject: [PATCH] Fix missing max packet size handling --- src/cdc.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/cdc.rs b/src/cdc.rs index 9b57c4b..7308a28 100644 --- a/src/cdc.rs +++ b/src/cdc.rs @@ -75,9 +75,17 @@ impl UsbInterfaceHandler for UsbCdcAcmHandler { return Ok(vec![]); } else { // bulk in - // TODO: handle max packet size - let resp = self.tx_buffer.clone(); - self.tx_buffer.clear(); + // Handle max packet size - return data in chunks of max_packet_size + let max_packet_size = ep.max_packet_size as usize; + let resp = if self.tx_buffer.len() > max_packet_size { + // Return only the first chunk (max_packet_size bytes) + self.tx_buffer.drain(..max_packet_size).collect::>() + } else { + // Return all data if it fits in one packet + let resp = self.tx_buffer.clone(); + self.tx_buffer.clear(); + resp + }; return Ok(resp); } }