Skip to content

Commit

Permalink
Fix UI and add more logging (#61)
Browse files Browse the repository at this point in the history
* add some more logging

* WIP attempt to fix async on update_ui

* fix async for update_ui
  • Loading branch information
cooperq authored Oct 3, 2024
1 parent ca4f49b commit c59fb7c
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 17 deletions.
23 changes: 14 additions & 9 deletions bin/src/daemon.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ async fn run_server(
ui_update_tx: Sender<framebuffer::DisplayState>,
diag_device_sender: Sender<DiagDeviceCtrlMessage>
) -> JoinHandle<()> {
info!("spinning up server");
let state = Arc::new(ServerState {
qmdl_store_lock,
diag_device_ctrl_sender: diag_device_sender,
Expand Down Expand Up @@ -125,7 +126,7 @@ fn run_ctrl_c_thread(
})
}

async fn update_ui(task_tracker: &TaskTracker, config: &config::Config, mut ui_shutdown_rx: oneshot::Receiver<()>, mut ui_update_rx: Receiver<framebuffer::DisplayState>){
fn update_ui(task_tracker: &TaskTracker, config: &config::Config, mut ui_shutdown_rx: oneshot::Receiver<()>, mut ui_update_rx: Receiver<framebuffer::DisplayState>) -> JoinHandle<()> {
static IMAGE_DIR: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/static/images/");
let display_level = config.ui_level;
if display_level == 0 {
Expand All @@ -150,15 +151,15 @@ async fn update_ui(task_tracker: &TaskTracker, config: &config::Config, mut ui_
break;
},
Err(TryRecvError::Empty) => {},
Err(e) => panic!("error receiving shutdown message: {e}")
Err(e) => error!("error receiving shutdown message: {e}")

}
match ui_update_rx.try_recv() {
Ok(state) => {
display_color = Framebuffer::get_color_from_state(state);
display_color = state.into();
},
Err(tokio::sync::mpsc::error::TryRecvError::Empty) => {},
Err(e) => panic!("error receiving framebuffer update message: {e}")
Err(e) => error!("error receiving framebuffer update message: {e}")
}

match display_level {
Expand All @@ -179,10 +180,9 @@ async fn update_ui(task_tracker: &TaskTracker, config: &config::Config, mut ui_
fb.draw_line(display_color, 2);
},
};
sleep(Duration::from_millis(100));
sleep(Duration::from_millis(1000));
}
}).await.unwrap();

})
}

#[tokio::main]
Expand All @@ -195,26 +195,31 @@ async fn main() -> Result<(), RayhunterError> {
// TaskTrackers give us an interface to spawn tokio threads, and then
// eventually await all of them ending
let task_tracker = TaskTracker::new();
println!("R A Y H U N T E R 🐳");

let qmdl_store_lock = Arc::new(RwLock::new(init_qmdl_store(&config).await?));
let (tx, rx) = mpsc::channel::<DiagDeviceCtrlMessage>(1);
let (ui_update_tx, ui_update_rx) = mpsc::channel::<framebuffer::DisplayState>(1);
let (ui_shutdown_tx, ui_shutdown_rx) = oneshot::channel();
if !config.readonly_mode {
let mut dev = DiagDevice::new().await
.map_err(RayhunterError::DiagInitError)?;
dev.config_logs().await
.map_err(RayhunterError::DiagInitError)?;

info!("Starting Diag Thread");
run_diag_read_thread(&task_tracker, dev, rx, ui_update_tx.clone(), qmdl_store_lock.clone());
info!("Starting UI");
update_ui(&task_tracker, &config, ui_shutdown_rx, ui_update_rx);
}
let (ui_shutdown_tx, ui_shutdown_rx) = oneshot::channel();
let (server_shutdown_tx, server_shutdown_rx) = oneshot::channel::<()>();
info!("create shutdown thread");
run_ctrl_c_thread(&task_tracker, tx.clone(), server_shutdown_tx, ui_shutdown_tx, qmdl_store_lock.clone());
run_server(&task_tracker, &config, qmdl_store_lock.clone(), server_shutdown_rx, ui_update_tx, tx).await;
update_ui(&task_tracker, &config, ui_shutdown_rx, ui_update_rx).await;

task_tracker.close();
task_tracker.wait().await;

info!("see you space cowboy...");
Ok(())
}
18 changes: 10 additions & 8 deletions bin/src/framebuffer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,16 @@ pub enum DisplayState {
WarningDetected,
}

impl From<DisplayState> for Color565 {
fn from(state: DisplayState) -> Self {
match state {
DisplayState::Paused => Color565::White,
DisplayState::Recording => Color565::Green,
DisplayState::WarningDetected => Color565::Red,
}
}
}

#[derive(Copy, Clone)]
pub struct Framebuffer<'a> {
dimensions: Dimensions,
Expand All @@ -43,14 +53,6 @@ impl Framebuffer<'_>{
}
}

pub fn get_color_from_state(state: DisplayState) -> Color565 {
match state {
DisplayState::Paused => Color565::White,
DisplayState::Recording => Color565::Green,
DisplayState::WarningDetected => Color565::Red,
}
}

fn write(&mut self, img: DynamicImage) {
let mut width = img.width();
let mut height = img.height();
Expand Down

0 comments on commit c59fb7c

Please sign in to comment.