use crate::devices::Device;
use crate::utils::State;
pub mod analog;
pub mod button;
pub mod digital;
#[cfg_attr(feature = "serde", typetag::serde(tag = "type"))]
pub trait Input: Device {
fn get_state(&self) -> State;
}
dyn_clone::clone_trait_object!(Input);
pub enum InputEvent {
OnChange,
OnPress,
OnRelease,
OnHigh,
OnLow,
}
impl From<InputEvent> for String {
fn from(value: InputEvent) -> Self {
let event = match value {
InputEvent::OnChange => "change",
InputEvent::OnPress => "press",
InputEvent::OnRelease => "release",
InputEvent::OnHigh => "high",
InputEvent::OnLow => "low",
};
event.into()
}
}