prinThor 0.0.3

The highly reliable but not necessarily functional 3D Printer firmware
use crate::hwa;
use embassy_time;
use printhor_hwa_common::EventBusRef;
use crate::display::ui::MainUI;

#[embassy_executor::task(pool_size=1)]
pub async fn display_task(display_dev: hwa::display::DisplayDevice, event_bus: EventBusRef) -> ! {

    hwa::info!("Display task started");
    let t0 = embassy_time::Instant::now();
    let main_ui = MainUI::new(event_bus.clone()).await;
    let mut tft = hwa::device::DisplayScreen::new(display_dev, main_ui).await;
    hwa::info!("D; display init done in {} ms ", t0.elapsed().as_millis());

    let mut ticker = embassy_time::Ticker::every(embassy_time::Duration::from_millis(1000));
    #[cfg(feature = "with-lvgl")]
    let mut ticks = tft.ticks();
    let mut _t1 = embassy_time::Instant::now();
    loop {
        hwa::debug!("D; lvgl display refresh last: {}", t0.elapsed().as_millis());
        #[cfg(feature = "with-lvgl")]
        ticks.inc(_t1.elapsed().as_millis() as u32);
        _t1 = embassy_time::Instant::now();
        tft.update().await;
        ticker.next().await;
    }
}