clean up imports and reorganize the ssd bits into a graphics mod
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
|
||||
use core::ptr::addr_of_mut;
|
||||
|
||||
use alloc::sync::Arc;
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_time::{Instant, Timer};
|
||||
|
||||
@@ -19,7 +20,7 @@ use esp_hal::{
|
||||
|
||||
use esp_hal_embassy::{Executor, InterruptExecutor};
|
||||
use log::*;
|
||||
use renderbug_embassy::{logging::RenderbugLogger, tasks::{safetyui::{safety_ui_main, SafetyUi}, ui::UiSurfacePool}};
|
||||
use renderbug_embassy::{logging::RenderbugLogger, tasks::{oled::{oled_ui, OledUI, OledUiSurfacePool}, safetyui::{safety_ui_main, SafetyUi}, ui::UiSurfacePool}};
|
||||
use renderbug_embassy::events::BusGarage;
|
||||
use static_cell::StaticCell;
|
||||
use esp_backtrace as _;
|
||||
@@ -29,6 +30,8 @@ use renderbug_embassy::tasks::{
|
||||
ui::{Ui, ui_main}
|
||||
};
|
||||
|
||||
use figments_render::output::OutputAsync;
|
||||
|
||||
extern crate alloc;
|
||||
|
||||
// This creates a default app-descriptor required by the esp-idf bootloader.
|
||||
@@ -68,6 +71,11 @@ async fn main(spawner: Spawner) {
|
||||
info!("Setting up rendering pipeline");
|
||||
let mut surfaces = UiSurfacePool::default();
|
||||
let ui = Ui::new(&mut surfaces);
|
||||
|
||||
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 mut safety_surfaces = UiSurfacePool::default();
|
||||
let safety_ui = SafetyUi::new(&mut safety_surfaces, garage.display.clone());
|
||||
|
||||
@@ -102,14 +110,15 @@ async fn main(spawner: Spawner) {
|
||||
#[cfg(feature="oled")]
|
||||
{
|
||||
use esp_hal::i2c::master::{Config, I2c};
|
||||
use renderbug_embassy::graphics::ssd1306::SsdOutput;
|
||||
|
||||
let rst = Output::new(peripherals.GPIO21, esp_hal::gpio::Level::Low, OutputConfig::default());
|
||||
let i2c = I2c::new(
|
||||
peripherals.I2C0,
|
||||
Config::default().with_frequency(Rate::from_khz(400))
|
||||
).unwrap().with_scl(peripherals.GPIO18).with_sda(peripherals.GPIO17).into_async();
|
||||
|
||||
spawner.must_spawn(renderbug_embassy::tasks::oled::oled_task(i2c, rst, garage.telemetry.dyn_subscriber().unwrap()));
|
||||
let output = SsdOutput::new(i2c, rst, garage.oled_display.clone()).await;
|
||||
spawner.must_spawn(renderbug_embassy::tasks::oled_render::oled_render(output, oled_surfaces, oled_uniforms));
|
||||
}
|
||||
|
||||
#[cfg(feature="simulation")]
|
||||
@@ -136,6 +145,8 @@ async fn main(spawner: Spawner) {
|
||||
spawner.must_spawn(safety_ui_main(garage.notify.dyn_subscriber().unwrap(), safety_ui));
|
||||
info!("Launching UI");
|
||||
spawner.must_spawn(ui_main(garage.notify.dyn_subscriber().unwrap(), garage.telemetry.dyn_publisher().unwrap(), ui));
|
||||
info!("Launching OLED UI");
|
||||
spawner.must_spawn(oled_ui(garage.telemetry.dyn_subscriber().unwrap(), oledui));
|
||||
#[cfg(feature="demo")]
|
||||
{
|
||||
warn!("Launching with demo sequencer");
|
||||
|
||||
Reference in New Issue
Block a user