diff options
| author | Raul Alimbekov <[email protected]> | 2025-12-16 09:05:22 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-12-16 09:05:22 +0300 |
| commit | c9a04b4b732b7a3b696eb8223664c1a7942b1875 (patch) | |
| tree | 6dbe5c02e66eed8d8762f13f95afd24f8db2b38c /embassy-usb-logger/src/lib.rs | |
| parent | cde24a3ef1117653ba5ed4184102b33f745782fb (diff) | |
| parent | 5ae6e060ec1c90561719aabdc29d5b6e7b8b0a82 (diff) | |
Merge branch 'main' into main
Diffstat (limited to 'embassy-usb-logger/src/lib.rs')
| -rw-r--r-- | embassy-usb-logger/src/lib.rs | 20 |
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; | |||
| 8 | use embassy_futures::join::join; | 8 | use embassy_futures::join::join; |
| 9 | use embassy_sync::pipe::Pipe; | 9 | use embassy_sync::pipe::Pipe; |
| 10 | use embassy_usb::class::cdc_acm::{CdcAcmClass, Receiver, Sender, State}; | 10 | use embassy_usb::class::cdc_acm::{CdcAcmClass, Receiver, Sender, State}; |
| 11 | use embassy_usb::driver::Driver; | 11 | use embassy_usb::driver::{Driver, EndpointError}; |
| 12 | use embassy_usb::{Builder, Config}; | 12 | use embassy_usb::{Builder, Config}; |
| 13 | use log::{Metadata, Record}; | 13 | use 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]; |
