aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-usb-logger/src/lib.rs17
1 files changed, 12 insertions, 5 deletions
diff --git a/embassy-usb-logger/src/lib.rs b/embassy-usb-logger/src/lib.rs
index 6e50c40ba..9178dd6dd 100644
--- a/embassy-usb-logger/src/lib.rs
+++ b/embassy-usb-logger/src/lib.rs
@@ -77,22 +77,29 @@ impl<const N: usize> UsbLogger<N> {
77 ); 77 );
78 78
79 // Create classes on the builder. 79 // Create classes on the builder.
80 let mut class = CdcAcmClass::new(&mut builder, &mut state.state, MAX_PACKET_SIZE as u16); 80 let class = CdcAcmClass::new(&mut builder, &mut state.state, MAX_PACKET_SIZE as u16);
81 let (mut sender, mut receiver) = class.split();
81 82
82 // Build the builder. 83 // Build the builder.
83 let mut device = builder.build(); 84 let mut device = builder.build();
84
85 loop { 85 loop {
86 let run_fut = device.run(); 86 let run_fut = device.run();
87 let log_fut = async { 87 let log_fut = async {
88 let mut rx: [u8; MAX_PACKET_SIZE as usize] = [0; MAX_PACKET_SIZE as usize]; 88 let mut rx: [u8; MAX_PACKET_SIZE as usize] = [0; MAX_PACKET_SIZE as usize];
89 class.wait_connection().await; 89 sender.wait_connection().await;
90 loop { 90 loop {
91 let len = self.buffer.read(&mut rx[..]).await; 91 let len = self.buffer.read(&mut rx[..]).await;
92 let _ = class.write_packet(&rx[..len]).await; 92 let _ = sender.write_packet(&rx[..len]).await;
93 }
94 };
95 let discard_fut = async {
96 let mut discard_buf: [u8; MAX_PACKET_SIZE as usize] = [0; MAX_PACKET_SIZE as usize];
97 receiver.wait_connection().await;
98 loop {
99 let _ = receiver.read_packet(&mut discard_buf).await;
93 } 100 }
94 }; 101 };
95 join(run_fut, log_fut).await; 102 join(run_fut, join(log_fut, discard_fut)).await;
96 } 103 }
97 } 104 }
98} 105}