simpleos 0.6.3

A Simple OS use for MCU, that implements single-threaded asynchronous runtime.
use crate::driver::Driver;

pub trait TtyDriver: Driver {
    fn tty_getc(&mut self) -> Option<u8>;
    fn tty_putc(&mut self, byte: u8);
    fn tty_flush(&mut self);
    fn tty_get_break(&mut self) -> bool;

    #[allow(unused)]
    fn tty_clear_rx(&mut self) {
        while self.tty_getc().is_some() {}
        while self.tty_get_break() {}
    }
    #[allow(unused)]
    fn tty_read(&mut self, buffer: &mut [u8]) -> usize {
        let mut count = 0;
        for byte in buffer.iter_mut() {
            if let Some(b) = self.tty_getc() {
                *byte = b;
                count += 1;
            } else {
                break;
            }
        }
        count
    }
    #[allow(unused)]
    fn tty_write(&mut self, data: &[u8]) {
        for byte in data.iter() {
            if *byte == b'\n' {
                self.tty_putc(b'\r');
            }
            self.tty_putc(*byte);
        }
    }
}