OLED driver with shared SPI bus integrated

This commit was merged in pull request #35.
This commit is contained in:
2026-08-22 22:46:09 +02:00
committed by ede1998
parent 71db893551
commit 9cd595acfe
19 changed files with 312 additions and 123 deletions
+9 -6
View File
@@ -1,12 +1,15 @@
use crate::card::model::Card;
use crate::display::shared_bus::DualPrimaryDisplay;
use crate::navigation::inputs::ButtonAction;
use crate::navigation::inputs::Inputs;
use crate::navigation::state::NavigationState;
use crate::views::view::View;
use crate::{display::primary_lcd::PrimaryLcdDisplay, navigation::inputs::Inputs};
use embassy_futures::select::{Either, select};
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
use embassy_time::{Duration, Timer};
use embedded_graphics::draw_target::DrawTarget;
use embedded_graphics::pixelcolor::Rgb565;
pub type Mutex<T> = embassy_sync::mutex::Mutex<CriticalSectionRawMutex, T>;
pub type Signal<T> = embassy_sync::signal::Signal<CriticalSectionRawMutex, T>;
@@ -26,15 +29,15 @@ pub struct NewState {
}
pub trait Navigable {
fn display(
&self,
display: &mut PrimaryLcdDisplay<'static>,
) -> impl core::future::Future<Output = ()> + Send;
fn display<D>(&self, display: &mut D) -> impl core::future::Future<Output = ()> + Send
where
D: DrawTarget<Color = Rgb565> + Send,
D::Error: core::fmt::Debug;
fn handle_input(&self, input: Action) -> impl core::future::Future<Output = NewState> + Send;
}
#[embassy_executor::task]
pub async fn run(mut inputs: Inputs, display: &'static mut PrimaryLcdDisplay<'static>) {
pub async fn run(mut inputs: Inputs, display: &'static mut DualPrimaryDisplay<'static>) {
log::info!("starting navigation");
let mut state = NavigationState::new();
-1
View File
@@ -35,7 +35,6 @@ impl NavigationState {
self.screens.pop();
return self.screens.last().unwrap();
}
}
}
}