Use Outputs type in Navigable trait

This commit is contained in:
2026-08-23 11:35:15 +02:00
parent 889da2e62c
commit dbbc93b528
10 changed files with 114 additions and 119 deletions
+3 -9
View File
@@ -8,8 +8,6 @@ use crate::views::view::View;
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>;
@@ -29,11 +27,7 @@ pub struct NewState {
}
pub trait Navigable {
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 display<D>(&self, outputs: &mut Outputs) -> impl core::future::Future<Output = ()> + Send;
fn display(&self, outputs: &mut Outputs) -> impl core::future::Future<Output = ()> + Send;
fn handle_input(&self, input: Action) -> impl core::future::Future<Output = NewState> + Send;
}
@@ -42,7 +36,7 @@ pub async fn run(mut inputs: Inputs, mut outputs: Outputs) {
log::info!("starting navigation");
let mut state = NavigationState::new();
state.screens.last().unwrap().display(&mut outputs.primary_display).await;
state.screens.last().unwrap().display(&mut outputs).await;
loop {
let selection = select(
@@ -88,7 +82,7 @@ pub async fn run(mut inputs: Inputs, mut outputs: Outputs) {
state.screens.push(new_state.view);
if action != Action::Timer || new_state.redraw {
state.screens.last().unwrap().display(&mut outputs.primary_display).await;
state.screens.last().unwrap().display(&mut outputs).await;
}
Timer::after(Duration::from_millis(DEBOUNCE_DURATION_MILLIS)).await;