use crate::LightspeedError;
use std::sync::mpsc::SyncSender;
use uuid::Uuid;
pub enum DeviceType {
Ccd,
Mount,
Focuser,
FilterWheel,
PowerBox,
Dome, Weather, AuxBox, }
pub trait LightspeedDevice: Send + 'static {
fn id(&self) -> Uuid;
fn name(&self) -> &str;
fn dev_type(&self) -> DeviceType;
fn uuid_namespace(&self) -> Uuid {
Uuid::parse_str("9e0c8dda-d62f-4cd0-a747-38b890496dbf").unwrap()
}
fn command_topics(&self) -> &[&str];
fn state_json(&self) -> String;
fn dispatcher(&self) -> Box<dyn Fn(&str, &[u8]) -> Result<(), LightspeedError> + Send + Sync>;
fn tick(&mut self, state_tx: &SyncSender<(Uuid, String)>);
fn close(&mut self);
}