prepare Outputs type

This commit is contained in:
2026-08-23 10:54:21 +02:00
parent 38e1617bdd
commit 889da2e62c
8 changed files with 56 additions and 32 deletions
+5 -4
View File
@@ -1,7 +1,7 @@
use crate::card::model::Card;
use crate::display::shared_bus::DualPrimaryDisplay;
use crate::navigation::inputs::ButtonAction;
use crate::navigation::inputs::Inputs;
use crate::navigation::outputs::Outputs;
use crate::navigation::state::NavigationState;
use crate::views::view::View;
@@ -33,15 +33,16 @@ pub trait Navigable {
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 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 DualPrimaryDisplay<'static>) {
pub async fn run(mut inputs: Inputs, mut outputs: Outputs) {
log::info!("starting navigation");
let mut state = NavigationState::new();
state.screens.last().unwrap().display(display).await;
state.screens.last().unwrap().display(&mut outputs.primary_display).await;
loop {
let selection = select(
@@ -87,7 +88,7 @@ pub async fn run(mut inputs: Inputs, display: &'static mut DualPrimaryDisplay<'s
state.screens.push(new_state.view);
if action != Action::Timer || new_state.redraw {
state.screens.last().unwrap().display(display).await;
state.screens.last().unwrap().display(&mut outputs.primary_display).await;
}
Timer::after(Duration::from_millis(DEBOUNCE_DURATION_MILLIS)).await;