working on main menu
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
use crate::navigation::inputs::Inputs;
|
||||
|
||||
pub async fn show(_inputs: &mut Inputs) {}
|
||||
pub const MAX_SELECTED: i8 = 3;
|
||||
|
||||
pub struct MainMenu {
|
||||
pub selected: i8,
|
||||
}
|
||||
|
||||
impl MainMenu {
|
||||
pub async fn display(self: &Self) {}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,35 @@
|
||||
use crate::navigation::inputs::Inputs;
|
||||
use crate::navigation::main_menu::{MAX_SELECTED, MainMenu};
|
||||
|
||||
use embassy_futures::select::Either6;
|
||||
use embassy_futures::select::select6;
|
||||
|
||||
#[embassy_executor::task]
|
||||
pub async fn run(mut inputs: Inputs) {
|
||||
let mut state = MainMenu { selected: 0 };
|
||||
|
||||
loop {
|
||||
crate::navigation::main_menu::show(&mut inputs).await
|
||||
let selection = select6(
|
||||
inputs.up.wait_for_low(),
|
||||
inputs.down.wait_for_low(),
|
||||
inputs.left.wait_for_low(),
|
||||
inputs.right.wait_for_low(),
|
||||
inputs.ok.wait_for_low(),
|
||||
inputs.back.wait_for_low(),
|
||||
)
|
||||
.await;
|
||||
|
||||
let value = match selection {
|
||||
Either6::First(_) => (state.selected.wrapping_sub(1)) % MAX_SELECTED,
|
||||
Either6::Second(_) => (state.selected.wrapping_add(1)) % MAX_SELECTED,
|
||||
_ => continue, // Either6::Third(_) => ,
|
||||
// Either6::Fourth(_) => (),
|
||||
// Either6::Fifth(_) => (),
|
||||
// Either6::Sixth(_) => (),
|
||||
};
|
||||
|
||||
state.selected = value;
|
||||
|
||||
state.display().await
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user