diff --git a/src/bin/main.rs b/src/bin/main.rs index c63c4e3..eb2d24f 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -19,7 +19,7 @@ use esp_hal::{ }; use log::*; -use renderbug_embassy::{logging::RenderbugLogger, tasks::{oled::{OledUI, OledUiSurfacePool, oled_ui}, safetyui::{SafetyUi, safety_ui_main}, ui::UiSurfacePool}}; +use renderbug_embassy::{graphics::display::DisplayControls, logging::RenderbugLogger, tasks::{oled::{OledUI, OledUiSurfacePool, oled_ui}, safetyui::{SafetyUi, safety_ui_main}, ui::UiSurfacePool}}; use renderbug_embassy::events::BusGarage; use static_cell::StaticCell; use esp_backtrace as _; @@ -74,12 +74,15 @@ async fn main(spawner: Spawner) { let mut surfaces = UiSurfacePool::default(); let ui = Ui::new(&mut surfaces); + let display_controls = DisplayControls::default(); + let oled_controls = DisplayControls::default(); + let mut oled_surfaces = OledUiSurfacePool::default(); let oled_uniforms = Default::default(); - let oledui = OledUI::new(&mut oled_surfaces, garage.oled_display.clone(), Arc::clone(&oled_uniforms)); + let oledui = OledUI::new(&mut oled_surfaces, oled_controls.clone(), Arc::clone(&oled_uniforms)); let mut safety_surfaces = UiSurfacePool::default(); - let safety_ui = SafetyUi::new(&mut safety_surfaces, garage.display.clone()); + let safety_ui = SafetyUi::new(&mut safety_surfaces, display_controls.clone()); let mut wdt = timer0.wdt; wdt.set_timeout(esp_hal::timer::timg::MwdtStage::Stage0, esp_hal::time::Duration::from_secs(5)); @@ -88,7 +91,7 @@ async fn main(spawner: Spawner) { let hi_spawn = hi_exec.start(esp_hal::interrupt::Priority::max()); //wdt.enable(); - hi_spawn.must_spawn(renderbug_embassy::tasks::render::render(peripherals.RMT, peripherals.GPIO5.degrade(), surfaces, safety_surfaces, garage.display.clone(), wdt)); + hi_spawn.must_spawn(renderbug_embassy::tasks::render::render(peripherals.RMT, peripherals.GPIO5.degrade(), surfaces, safety_surfaces, display_controls, wdt)); #[cfg(feature="motion")] { @@ -119,7 +122,7 @@ async fn main(spawner: Spawner) { peripherals.I2C0, Config::default().with_frequency(Rate::from_khz(400)) ).unwrap().with_scl(peripherals.GPIO18).with_sda(peripherals.GPIO17).into_async(); - let output = SsdOutput::new(i2c, rst, garage.oled_display.clone()).await; + let output = SsdOutput::new(i2c, rst, oled_controls).await; spawner.must_spawn(renderbug_embassy::tasks::oled_render::oled_render(output, oled_surfaces, oled_uniforms)); } @@ -132,7 +135,7 @@ async fn main(spawner: Spawner) { let partitions = esp_bootloader_esp_idf::partitions::read_partition_table(&mut storage, &mut buf).unwrap(); for sim_data in SimDataTable::open(storage, partitions).expect("Could not find partition for sim data!") { info!("Found simulation data for {:?}", sim_data.srcid()); - if spawner.spawn(renderbug_embassy::tasks::simulation::simulation_task(sim_data, measurements.dyn_sender())).is_err() { + if spawner.spawn(renderbug_embassy::tasks::simulation::simulation_task(sim_data, garage.motion.dyn_sender())).is_err() { error!("Unable to spawn simulation task! Increase the task pool size."); } } diff --git a/src/events.rs b/src/events.rs index dd6feca..e6051c0 100644 --- a/src/events.rs +++ b/src/events.rs @@ -117,9 +117,7 @@ pub struct BusGarage { pub motion: Channel, pub notify: PubSubChannel, pub predict: Channel, - pub telemetry: PubSubChannel, - pub display: DisplayControls, - pub oled_display: DisplayControls + pub telemetry: PubSubChannel } impl Default for BusGarage { @@ -128,9 +126,7 @@ impl Default for BusGarage { motion: Channel::new(), notify: PubSubChannel::new(), predict: Channel::new(), - telemetry: PubSubChannel::new(), - display: Default::default(), - oled_display: Default::default() + telemetry: PubSubChannel::new() } } } \ No newline at end of file