aboutsummaryrefslogtreecommitdiff
path: root/embassy-usb-logger/src/lib.rs
diff options
context:
space:
mode:
authorRaul Alimbekov <[email protected]>2025-12-16 09:05:22 +0300
committerGitHub <[email protected]>2025-12-16 09:05:22 +0300
commitc9a04b4b732b7a3b696eb8223664c1a7942b1875 (patch)
tree6dbe5c02e66eed8d8762f13f95afd24f8db2b38c /embassy-usb-logger/src/lib.rs
parentcde24a3ef1117653ba5ed4184102b33f745782fb (diff)
parent5ae6e060ec1c90561719aabdc29d5b6e7b8b0a82 (diff)
Merge branch 'main' into main
Diffstat (limited to 'embassy-usb-logger/src/lib.rs')
-rw-r--r--embassy-usb-logger/src/lib.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/embassy-usb-logger/src/lib.rs b/embassy-usb-logger/src/lib.rs
index de25abce1..7c3c5e709 100644
--- a/embassy-usb-logger/src/lib.rs
+++ b/embassy-usb-logger/src/lib.rs
@@ -8,7 +8,7 @@ use core::future::Future;
8use embassy_futures::join::join; 8use embassy_futures::join::join;
9use embassy_sync::pipe::Pipe; 9use embassy_sync::pipe::Pipe;
10use embassy_usb::class::cdc_acm::{CdcAcmClass, Receiver, Sender, State}; 10use embassy_usb::class::cdc_acm::{CdcAcmClass, Receiver, Sender, State};
11use embassy_usb::driver::Driver; 11use embassy_usb::driver::{Driver, EndpointError};
12use embassy_usb::{Builder, Config}; 12use embassy_usb::{Builder, Config};
13use log::{Metadata, Record}; 13use log::{Metadata, Record};
14 14
@@ -133,17 +133,25 @@ impl<const N: usize, T: ReceiverHandler + Send + Sync> UsbLogger<N, T> {
133 sender.wait_connection().await; 133 sender.wait_connection().await;
134 loop { 134 loop {
135 let len = self.buffer.read(&mut rx[..]).await; 135 let len = self.buffer.read(&mut rx[..]).await;
136 let _ = sender.write_packet(&rx[..len]).await; 136 if Err(EndpointError::Disabled) == sender.write_packet(&rx[..len]).await
137 if len as u8 == MAX_PACKET_SIZE { 137 || len as u8 == MAX_PACKET_SIZE && Err(EndpointError::Disabled) == sender.write_packet(&[]).await
138 let _ = sender.write_packet(&[]).await; 138 {
139 } 139 sender.wait_connection().await;
140 };
140 } 141 }
141 }; 142 };
142 let reciever_fut = async { 143 let reciever_fut = async {
143 let mut reciever_buf: [u8; MAX_PACKET_SIZE as usize] = [0; MAX_PACKET_SIZE as usize]; 144 let mut reciever_buf: [u8; MAX_PACKET_SIZE as usize] = [0; MAX_PACKET_SIZE as usize];
144 receiver.wait_connection().await; 145 receiver.wait_connection().await;
145 loop { 146 loop {
146 let n = receiver.read_packet(&mut reciever_buf).await.unwrap(); 147 let n = match receiver.read_packet(&mut reciever_buf).await {
148 Err(EndpointError::Disabled) => {
149 receiver.wait_connection().await;
150 continue;
151 }
152 Err(_) => continue,
153 Ok(n) => n,
154 };
147 match &self.recieve_handler { 155 match &self.recieve_handler {
148 Some(handler) => { 156 Some(handler) => {
149 let data = &reciever_buf[..n]; 157 let data = &reciever_buf[..n];