diff --git a/flow3-rs-rt/src/flow3r.rs b/flow3-rs-rt/src/flow3r.rs index e0179e5f3ac2acc95df3c2c82feb722b547c837c..69fb474ee121dc0fe6fc05e9a89971febeead26d 100644 --- a/flow3-rs-rt/src/flow3r.rs +++ b/flow3-rs-rt/src/flow3r.rs @@ -25,7 +25,7 @@ use flow3_rs::{ static CLOCKS: StaticCell<Clocks> = StaticCell::new(); -pub async fn init_flow3r() -> (Flow3r, I2C<'static, I2C0> ) { +pub async fn init_flow3r() -> (Flow3r, InputRunner, CaptouchRunner) { let peripherals = Peripherals::take(); let mut system = peripherals.SYSTEM.split(); let clocks = CLOCKS.init(ClockControl::boot_defaults(system.clock_control).freeze()); @@ -86,7 +86,7 @@ pub async fn init_flow3r() -> (Flow3r, I2C<'static, I2C0> ) { // Create shared I2C Bus - //let i2c_busmanager = shared_bus::new_xtensa!(I2C<'static, I2C0> = i2c).unwrap(); + let i2c_busmanager = shared_bus::new_xtensa!(I2C<'static, I2C0> = i2c).unwrap(); // Init SPI + DMA @@ -162,7 +162,7 @@ pub async fn init_flow3r() -> (Flow3r, I2C<'static, I2C0> ) { let rng = Rng::new(peripherals.RNG); - /*let input_runner = InputRunner::new( + let input_runner = InputRunner::new( i2c_busmanager.acquire_i2c(), io.pins.gpio8, io.pins.gpio0, @@ -174,7 +174,7 @@ pub async fn init_flow3r() -> (Flow3r, I2C<'static, I2C0> ) { i2c_busmanager.acquire_i2c(), io.pins.gpio16, io.pins.gpio15, - );*/ + ); // Init Flow3r components @@ -186,5 +186,5 @@ pub async fn init_flow3r() -> (Flow3r, I2C<'static, I2C0> ) { let flow3r = Flow3r::new(None, Some(captouch), Some(display), None, Some(inputs), Some(leds), Some(uart0), Some(uart1), Some(rng)); - (flow3r, i2c) + (flow3r, input_runner, captouch_runner) } \ No newline at end of file diff --git a/flow3-rs-rt/src/runtime.rs b/flow3-rs-rt/src/runtime.rs index 687a28947e898d61156335baedb3d30a8d7e290b..6c8d67b2a88f9e2bfa5ab8e707d2d00273d60cb1 100644 --- a/flow3-rs-rt/src/runtime.rs +++ b/flow3-rs-rt/src/runtime.rs @@ -23,22 +23,16 @@ pub fn start_runtime<S>(main: fn(Flow3r) -> SpawnToken<S>) -> ! #[embassy_executor::task] async fn init_runtime(main: fn(Flow3r) -> SpawnToken<*mut ()>) { - let (flow3r, mut i2c) = init_flow3r().await; - - let addr = 0x60 | ((true as u8) << 3) | ((true as u8) << 2) | ((true as u8) << 1) | (false as u8); - - let mut buf = [0u8;1]; - i2c.read(addr, &mut buf).unwrap(); - println!("buf {}", buf[0]); + let (flow3r, input_runner, captouch_runner) = init_flow3r().await; // Spawn background tasks let spawner = Spawner::for_current_executor().await; - /*spawner + spawner .spawn(input_task(input_runner)) - .unwrap();*/ - /*spawner + .unwrap(); + spawner .spawn(captouch_task(captouch_runner)) - .unwrap();*/ + .unwrap(); // Hand over to main task spawner.spawn(main(flow3r)).unwrap(); diff --git a/flow3-rs-template/src/ui/main_menu.rs b/flow3-rs-template/src/ui/main_menu.rs index 8f7207d9be51b6d0e8850a688d33e344687e1e7a..b5d327d5fda3a32c512206f46df6a9e1e1ea4f64 100644 --- a/flow3-rs-template/src/ui/main_menu.rs +++ b/flow3-rs-template/src/ui/main_menu.rs @@ -15,7 +15,7 @@ use crate::demo_tasks::{display_demo, imu_demo, captouch_demo}; pub async fn main_menu(mut flow3r: Flow3r) -> ! { let mut inputs = flow3r.take_inputs().split(); let mut display = flow3r.take_display(); - let mut imu = flow3r.take_imu(); + // let mut imu = flow3r.take_imu(); println!("main menu running"); @@ -47,7 +47,7 @@ pub async fn main_menu(mut flow3r: Flow3r) -> ! { .await { Either3::First(_) => { - start_current_app(apps[selected], &mut display, &mut imu).await; + start_current_app(apps[selected], &mut display).await; display .fill_solid(&display.bounding_box(), Rgb565::BLACK) .unwrap(); @@ -111,10 +111,9 @@ async fn play_transition_animation<'a>( } } -async fn start_current_app(app: &str, display: &mut Display, imu: &mut ImuHandler) { +async fn start_current_app(app: &str, display: &mut Display) { match app { "input_test" => display_demo(display).await, - "imu_test" => imu_demo(display, imu).await, "captouch_test" => captouch_demo(display).await, _ => (), } diff --git a/flow3-rs/src/lib.rs b/flow3-rs/src/lib.rs index 545b15af90743f3495d3ed3137b8a6418bd9f978..f0eb5f1c307f3ea6b61ff123ca9fd85bd8d3fa4a 100644 --- a/flow3-rs/src/lib.rs +++ b/flow3-rs/src/lib.rs @@ -63,34 +63,34 @@ impl Flow3r { } pub fn take_captouch(&mut self) -> Captouch { - self.captouch.take().expect("can only take badgelink once!") + self.captouch.take().expect("can only take captouch once!") } pub fn take_display(&mut self) -> Display { - self.display.take().expect("can only take badgelink once!") + self.display.take().expect("can only take display once!") } pub fn take_inputs(&mut self) -> Inputs { - self.inputs.take().expect("can only take badgelink once!") + self.inputs.take().expect("can only take inputs once!") } pub fn take_imu(&mut self) -> ImuHandler { - self.imu.take().expect("can only take badgelink once!") + self.imu.take().expect("can only take imu once!") } pub fn take_leds(&mut self) -> Leds { - self.leds.take().expect("can only take badgelink once!") + self.leds.take().expect("can only take leds once!") } pub fn take_uart_left(&mut self) -> BadgenetUartLeft { - self.uart0.take().expect("can only take badgelink once!") + self.uart0.take().expect("can only take uart left once!") } pub fn take_uart_right(&mut self) -> BadgenetUartRight { - self.uart1.take().expect("can only take badgelink once!") + self.uart1.take().expect("can only take uart right once!") } pub fn take_rng(&mut self) -> Rng { - self.rng.take().expect("can only take badgelink once!") + self.rng.take().expect("can only take uart rng once!") } } \ No newline at end of file