feat(ringbuf): stabilize data streaming for ringbuffer
This commit is contained in:
parent
3e0b1a8451
commit
fee9ff945f
|
@ -9,6 +9,8 @@ use crate::{
|
|||
|
||||
#[cfg(feature = "ring-buf")]
|
||||
pub mod ring_buf {
|
||||
use crate::CorruptedData;
|
||||
|
||||
use super::*;
|
||||
use ring_buffer::RingBuffer;
|
||||
|
||||
|
@ -16,7 +18,7 @@ pub mod ring_buf {
|
|||
where
|
||||
P: PinOps + StaticPinOps,
|
||||
{
|
||||
#[inline(never)]
|
||||
#[inline(always)]
|
||||
fn write_bytes(&self, transmit_data: &mut RingBuffer<N>) {
|
||||
self.write_byte(transmit_data.len() as u8);
|
||||
|
||||
|
@ -24,6 +26,8 @@ pub mod ring_buf {
|
|||
self.sync_transmitter();
|
||||
self.write_byte(byte);
|
||||
}
|
||||
|
||||
self.sync_transmitter();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,19 +35,18 @@ pub mod ring_buf {
|
|||
where
|
||||
P: PinOps + StaticPinOps,
|
||||
{
|
||||
#[inline(never)]
|
||||
fn read_bytes(&self, recieve_data: &mut RingBuffer<N>) {
|
||||
let byte = self.read_byte();
|
||||
#[inline(always)]
|
||||
fn read_bytes(&self, recieve_data: &mut RingBuffer<N>) -> Result<(), CorruptedData> {
|
||||
let len = self.read_byte()?;
|
||||
|
||||
if let Ok(len) = byte {
|
||||
for _ in 0..len {
|
||||
self.sync_reciever();
|
||||
recieve_data.push(self.read_byte()?);
|
||||
}
|
||||
|
||||
if let Ok(byte) = self.read_byte() {
|
||||
recieve_data.push(byte);
|
||||
}
|
||||
}
|
||||
}
|
||||
self.sync_reciever();
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue