use std::sync::Arc;
use std::sync::atomic::AtomicBool;
use tokio::sync::{Mutex, broadcast, mpsc, watch};
use crate::models::{DeviceConfig, LogMode, OutputMode};
#[derive(Clone)]
pub struct AppState {
pub port_path: Arc<Mutex<String>>,
pub serial_connected: Arc<AtomicBool>,
pub collection_running: Arc<AtomicBool>,
pub cmd_tx: mpsc::Sender<String>,
pub csi_tx: broadcast::Sender<Vec<u8>>,
pub log_mode_tx: Arc<watch::Sender<LogMode>>,
pub output_mode_tx: Arc<watch::Sender<OutputMode>>,
pub session_file_tx: Arc<watch::Sender<Option<String>>>,
pub config: Arc<Mutex<DeviceConfig>>,
}