aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorChristian Cunningham <cc@localhost>2022-08-26 17:25:34 -0700
committerChristian Cunningham <cc@localhost>2022-08-26 17:25:34 -0700
commita04cf2dbb8d2e890405fbf0a1022aaad3015b1e8 (patch)
tree381892074d13c059d50cb88caa41f8a8722c07ce /src/lib
parent7f3d7d9ce9818078b6a4616b4c31a28e2868397b (diff)
Modularize
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/console.rs57
-rw-r--r--src/lib/fifo_queue.rs2
-rw-r--r--src/lib/lifo_queue.rs2
-rw-r--r--src/lib/mod.rs6
-rw-r--r--src/lib/node.rs1
-rw-r--r--src/lib/queue.rs1
-rw-r--r--src/lib/sync.rs1
7 files changed, 70 insertions, 0 deletions
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::*;