use crate::interface::G29Interface;
use std::{
sync::{Arc, Mutex},
thread::{self, JoinHandle},
};
#[derive(Debug)]
pub struct Controller {
pub g29: Arc<Mutex<G29Interface>>,
reading_thread: Option<JoinHandle<()>>,
}
impl Controller {
pub fn new() -> Self {
Self {
g29: Arc::new(Mutex::new(G29Interface::new())),
reading_thread: None,
}
}
pub fn start_pumping(&mut self) {
let local_g29 = self.g29.clone();
self.reading_thread = Some(thread::spawn(move || {
local_g29.lock().unwrap().read_loop();
}));
println!("thread_start_spawn");
}
pub fn stop_pumping(&mut self) {
if let Some(handle) = self.reading_thread.take() {
handle.join().unwrap();
} else {
println!("No Thread spawned");
}
}
}