add peripherals module which has shared state of all peripherals

This commit was merged in pull request #47.
This commit is contained in:
2026-08-29 17:57:08 +00:00
parent 282bcd163c
commit a31c818b37
18 changed files with 207 additions and 99 deletions
+6 -1
View File
@@ -1,6 +1,7 @@
use crate::display::sprite::render_sprite_onto_ili9341;
use crate::navigation::navigation::NewState;
use crate::navigation::outputs::Outputs;
use crate::peripherals::Peripherals;
use alloc::format;
use embedded_graphics::mono_font::MonoTextStyle;
use embedded_graphics::mono_font::ascii::FONT_6X10;
@@ -25,7 +26,11 @@ pub struct CardView {
}
impl Navigable for CardView {
fn display(&self, outputs: &mut Outputs) -> impl core::future::Future<Output = ()> + Send {
fn display(
&self,
outputs: &mut Outputs,
_: &Peripherals,
) -> impl core::future::Future<Output = ()> + Send {
async move {
let display = &mut outputs.primary_display;
display.clear(Rgb565::BLACK).unwrap();
+6 -1
View File
@@ -3,6 +3,7 @@ use crate::navigation::navigation::Action;
use crate::navigation::navigation::Navigable;
use crate::navigation::navigation::NewState;
use crate::navigation::outputs::Outputs;
use crate::peripherals::Peripherals;
use crate::views::view::View;
use embedded_graphics::mono_font::MonoTextStyle;
use embedded_graphics::mono_font::ascii::FONT_10X20;
@@ -17,7 +18,11 @@ use embedded_graphics::prelude::Point;
pub struct FlashInfoView {}
impl Navigable for FlashInfoView {
fn display(&self, outputs: &mut Outputs) -> impl core::future::Future<Output = ()> + Send {
fn display(
&self,
outputs: &mut Outputs,
peripherals: &Peripherals,
) -> impl core::future::Future<Output = ()> + Send {
let style = MonoTextStyle::new(&FONT_10X20, Rgb565::WHITE);
Text::new("Flash Initialized: {:?}", Point::new(40, 40), style);
+6 -1
View File
@@ -1,3 +1,4 @@
use crate::peripherals::Peripherals;
use core::future;
use alloc::vec::Vec;
@@ -22,7 +23,11 @@ pub struct JournalView {
}
impl Navigable for JournalView {
fn display(&self, outputs: &mut Outputs) -> impl core::future::Future<Output = ()> + Send {
fn display(
&self,
outputs: &mut Outputs,
_: &Peripherals,
) -> impl core::future::Future<Output = ()> + Send {
async move {
outputs.primary_display.clear(Rgb565::BLACK).unwrap();
}
+6 -1
View File
@@ -1,3 +1,4 @@
use crate::peripherals::Peripherals;
use alloc::vec;
use crate::card::model::Card;
@@ -22,7 +23,11 @@ pub struct MainMenu {
}
impl Navigable for MainMenu {
fn display(&self, outputs: &mut Outputs) -> impl core::future::Future<Output = ()> + Send {
fn display(
&self,
outputs: &mut Outputs,
_: &Peripherals
) -> impl core::future::Future<Output = ()> + Send {
let display = &mut outputs.primary_display;
display.clear(Rgb565::BLACK).unwrap();
+1
View File
@@ -1,3 +1,4 @@
use crate::peripherals::Peripherals;
use embedded_graphics::Drawable;
use embedded_graphics::draw_target::DrawTarget;
use embedded_graphics::mono_font::MonoTextStyle;
+6 -1
View File
@@ -2,6 +2,7 @@ use crate::navigation::inputs::ButtonAction;
use crate::navigation::navigation::CARD_DATA;
use crate::navigation::navigation::NewState;
use crate::navigation::outputs::Outputs;
use crate::peripherals::Peripherals;
use alloc::format;
use embedded_graphics::Drawable;
@@ -33,7 +34,11 @@ pub struct ScanMenu {
}
impl Navigable for ScanMenu {
fn display(&self, outputs: &mut Outputs) -> impl core::future::Future<Output = ()> + Send {
fn display(
&self,
outputs: &mut Outputs,
_: &Peripherals
) -> impl core::future::Future<Output = ()> + Send {
let display = &mut outputs.primary_display;
let style = MonoTextStyle::new(&FONT_10X20, Rgb565::WHITE);
display.clear(Rgb565::BLACK).unwrap();
+6 -1
View File
@@ -1,5 +1,6 @@
use crate::navigation::navigation::{Action, Navigable, NewState};
use crate::navigation::outputs::Outputs;
use crate::peripherals::Peripherals;
use crate::views::{flash_info_view::FlashInfoView, menu_item, view::View};
use crate::navigation::inputs::ButtonAction;
@@ -16,7 +17,11 @@ pub struct SettingsMenu {
}
impl Navigable for SettingsMenu {
fn display(&self, outputs: &mut Outputs) -> impl core::future::Future<Output = ()> + Send {
fn display(
&self,
outputs: &mut Outputs,
_: &Peripherals
) -> impl core::future::Future<Output = ()> + Send {
let display = &mut outputs.primary_display;
display.clear(Rgb565::BLACK).unwrap();
menu_item::show(display, "System Inforation", 0, self.selected);
+14 -7
View File
@@ -1,4 +1,5 @@
use crate::navigation::outputs::Outputs;
use crate::peripherals::Peripherals;
use crate::views::card_view::CardView;
use crate::views::{
flash_info_view::FlashInfoView, journal_view::JournalView, main_menu::MainMenu,
@@ -18,15 +19,21 @@ pub enum View {
}
impl Navigable for View {
fn display(&self, outputs: &mut Outputs) -> impl core::future::Future<Output = ()> + Send {
fn display(
&self,
outputs: &mut Outputs,
peripherals: &Peripherals
) -> impl core::future::Future<Output = ()> + Send {
async move {
match self {
View::Main(main_menu) => main_menu.display(outputs).await,
View::Scan(scan_menu) => scan_menu.display(outputs).await,
View::Settings(settings_menu) => settings_menu.display(outputs).await,
View::Journal(journal_view) => journal_view.display(outputs).await,
View::Card(card_view) => card_view.display(outputs).await,
View::FlashInfo(flash_info_view) => flash_info_view.display(outputs).await,
View::Main(main_menu) => main_menu.display(outputs, peripherals).await,
View::Scan(scan_menu) => scan_menu.display(outputs, peripherals).await,
View::Settings(settings_menu) => settings_menu.display(outputs, peripherals).await,
View::Journal(journal_view) => journal_view.display(outputs, peripherals).await,
View::Card(card_view) => card_view.display(outputs, peripherals).await,
View::FlashInfo(flash_info_view) => {
flash_info_view.display(outputs, peripherals).await
}
}
}
}