refactor: move implementation to mod.rs
This commit is contained in:
parent
2e1bb877c6
commit
3e0b1a8451
|
@ -1 +1,49 @@
|
||||||
pub mod ring_buffer;
|
use arduino_hal::port::PinOps;
|
||||||
|
|
||||||
|
use static_pins::StaticPinOps;
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
HalfDuplexSerial, SoftSerialByteReader, SoftSerialByteWriter, SoftSerialReader,
|
||||||
|
SoftSerialWriter,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[cfg(feature = "ring-buf")]
|
||||||
|
pub mod ring_buf {
|
||||||
|
use super::*;
|
||||||
|
use ring_buffer::RingBuffer;
|
||||||
|
|
||||||
|
impl<const N: usize, P> SoftSerialWriter<P, &mut RingBuffer<N>> for HalfDuplexSerial<P>
|
||||||
|
where
|
||||||
|
P: PinOps + StaticPinOps,
|
||||||
|
{
|
||||||
|
#[inline(never)]
|
||||||
|
fn write_bytes(&self, transmit_data: &mut RingBuffer<N>) {
|
||||||
|
self.write_byte(transmit_data.len() as u8);
|
||||||
|
|
||||||
|
for byte in transmit_data {
|
||||||
|
self.sync_transmitter();
|
||||||
|
self.write_byte(byte);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<const N: usize, P> SoftSerialReader<P, &mut RingBuffer<N>> for HalfDuplexSerial<P>
|
||||||
|
where
|
||||||
|
P: PinOps + StaticPinOps,
|
||||||
|
{
|
||||||
|
#[inline(never)]
|
||||||
|
fn read_bytes(&self, recieve_data: &mut RingBuffer<N>) {
|
||||||
|
let byte = self.read_byte();
|
||||||
|
|
||||||
|
if let Ok(len) = byte {
|
||||||
|
for _ in 0..len {
|
||||||
|
self.sync_reciever();
|
||||||
|
|
||||||
|
if let Ok(byte) = self.read_byte() {
|
||||||
|
recieve_data.push(byte);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
// Thanks to Low Byte Productions, I like this channel.
|
|
||||||
// Youtube: https://www.youtube.com/watch?v=uIJnATS9j_0
|
|
||||||
|
|
||||||
use arduino_hal::port::PinOps;
|
|
||||||
use ring_buffer::RingBuffer;
|
|
||||||
use static_pins::StaticPinOps;
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
HalfDuplexSerial, SoftSerialByteReader, SoftSerialByteWriter, SoftSerialReader,
|
|
||||||
SoftSerialWriter,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[cfg(feature = "ring-buf")]
|
|
||||||
impl<const N: usize, P> SoftSerialWriter<P, &mut RingBuffer<N>> for HalfDuplexSerial<P>
|
|
||||||
where
|
|
||||||
P: PinOps + StaticPinOps,
|
|
||||||
{
|
|
||||||
#[inline(never)]
|
|
||||||
fn write_bytes(&self, transmit_data: &mut RingBuffer<N>) {
|
|
||||||
self.write_byte(transmit_data.len() as u8);
|
|
||||||
|
|
||||||
for byte in transmit_data {
|
|
||||||
self.sync_transmitter();
|
|
||||||
self.write_byte(byte);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "ring-buf")]
|
|
||||||
impl<const N: usize, P> SoftSerialReader<P, &mut RingBuffer<N>> for HalfDuplexSerial<P>
|
|
||||||
where
|
|
||||||
P: PinOps + StaticPinOps,
|
|
||||||
{
|
|
||||||
#[inline(never)]
|
|
||||||
fn read_bytes(&self, recieve_data: &mut RingBuffer<N>) {
|
|
||||||
let byte = self.read_byte();
|
|
||||||
|
|
||||||
if let Ok(len) = byte {
|
|
||||||
for _ in 0..len {
|
|
||||||
self.sync_reciever();
|
|
||||||
|
|
||||||
if let Ok(byte) = self.read_byte() {
|
|
||||||
recieve_data.push(byte);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue