From a04cf2dbb8d2e890405fbf0a1022aaad3015b1e8 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Fri, 26 Aug 2022 17:25:34 -0700 Subject: Modularize --- src/lib/console.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib/fifo_queue.rs | 2 ++ src/lib/lifo_queue.rs | 2 ++ src/lib/mod.rs | 6 ++++++ src/lib/node.rs | 1 + src/lib/queue.rs | 1 + src/lib/sync.rs | 1 + 7 files changed, 70 insertions(+) create mode 100644 src/lib/console.rs create mode 100644 src/lib/fifo_queue.rs create mode 100644 src/lib/lifo_queue.rs create mode 100644 src/lib/mod.rs create mode 100644 src/lib/node.rs create mode 100644 src/lib/queue.rs create mode 100644 src/lib/sync.rs (limited to 'src/lib') diff --git a/src/lib/console.rs b/src/lib/console.rs new file mode 100644 index 0000000..4ff1579 --- /dev/null +++ b/src/lib/console.rs @@ -0,0 +1,57 @@ +//! # UART Console module +//! +//! ## Encapsulates base trait for any console. +//! ## Wraps the UART console. + +/// # Interface module +/// +/// ## Provides trait for consoles. +pub mod interface { + use core::fmt; + /// # Write Trait + /// + /// Structure must provide ways to: + /// - Write individual characters + /// - Write formatted strings + /// - Flush write queue + pub trait Write { + /// # Write Character + /// + /// Writes an individual character to a console + fn write_char(&self, c: char); + /// # Write Format + /// + /// Writes a formatted string to a console + fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; + /// # Flush + /// + /// Flush console write queue + fn flush(&self); + } + + /// # Statistics Trait + /// + /// Structure must provide a way to: + /// - Get how many characters have been written + pub trait Statistics { + /// # Get Written Chars + /// + /// Gets the statistic associated with how many + /// characters have been written to a console. + fn chars_written(&self) -> usize { + 0 + } + } + + /// # All Trait + /// + /// Structure must provide both Write + Statistics + pub trait All: Write + Statistics {} +} + +/// # UART console +/// +/// Returns a borrow for the UART writer +pub fn console() -> &'static crate::bsp::drivers::uart::Uart { + &crate::bsp::drivers::uart::UART_WRITER +} diff --git a/src/lib/fifo_queue.rs b/src/lib/fifo_queue.rs new file mode 100644 index 0000000..a35f15f --- /dev/null +++ b/src/lib/fifo_queue.rs @@ -0,0 +1,2 @@ +pub use os_pic::init_fifo_queue; +pub use os_pic::util::fifo_queue::FifoQueue; diff --git a/src/lib/lifo_queue.rs b/src/lib/lifo_queue.rs new file mode 100644 index 0000000..dfc3973 --- /dev/null +++ b/src/lib/lifo_queue.rs @@ -0,0 +1,2 @@ +pub use os_pic::init_lifo_queue; +pub use os_pic::util::lifo_queue::LifoQueue; diff --git a/src/lib/mod.rs b/src/lib/mod.rs new file mode 100644 index 0000000..66c4b37 --- /dev/null +++ b/src/lib/mod.rs @@ -0,0 +1,6 @@ +pub mod console; +pub mod fifo_queue; +pub mod lifo_queue; +pub mod node; +pub mod queue; +pub mod sync; diff --git a/src/lib/node.rs b/src/lib/node.rs new file mode 100644 index 0000000..df69fba --- /dev/null +++ b/src/lib/node.rs @@ -0,0 +1 @@ +pub use os_pic::util::node::Node; diff --git a/src/lib/queue.rs b/src/lib/queue.rs new file mode 100644 index 0000000..7092100 --- /dev/null +++ b/src/lib/queue.rs @@ -0,0 +1 @@ +pub use os_pic::util::queue::Queue; diff --git a/src/lib/sync.rs b/src/lib/sync.rs new file mode 100644 index 0000000..373e8f8 --- /dev/null +++ b/src/lib/sync.rs @@ -0,0 +1 @@ +pub use os_pic::sync::*; -- cgit v1.2.1