rs-dht-pio/example/simple_buffer.rs
Jonathan BAUDIN 84f57e00e8 Add example
2023-09-21 18:45:47 +02:00

46 lines
971 B
Rust

use alloc::{collections::VecDeque, vec::Vec};
use crate::serial_buffer::SerialBuffer;
pub struct SimpleBuffer{
buf: VecDeque<u8>,
}
#[allow(unused)]
impl SerialBuffer for SimpleBuffer {
fn new(buffer_size: usize) -> Self {
assert!(buffer_size > 0);
Self {
buf: VecDeque::with_capacity(buffer_size),
}
}
fn write(&mut self, value: u8) -> (){
if self.buf.len() < self.buf.capacity(){
self.buf.push_back(value);
}
}
fn read(&mut self) -> Option<u8> {
self.buf.pop_front()
}
fn read_all(&mut self) -> Vec<u8>{
let mut data = Vec::<u8>::with_capacity(self.available_to_read());
for _ in 0..self.buf.len(){
data.push(self.buf.pop_front().unwrap_or(0));
}
return data;
}
fn reset(&mut self) -> (){
self.buf.clear();
}
fn available_to_read(&self) -> usize {
return self.buf.len();
}
}