refactor: move implementation to mod.rs

This commit is contained in:
doryan 2025-08-10 21:32:20 +04:00
parent 2e1bb877c6
commit 3e0b1a8451
2 changed files with 49 additions and 49 deletions

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}