use async_hid::{Device as AsyncHidDevice, DeviceInfo as AsyncHidDeviceInfo};
pub type HidDeviceInfo = AsyncHidDeviceInfo;
pub type HidDevice = AsyncHidDevice;
#[derive(Eq, PartialEq, Hash, Debug)]
pub enum DeviceLifecycleEvent {
Connected(HidDeviceInfo),
Disconnected(HidDeviceInfo),
}
#[derive(Clone, Debug)]
pub enum DeviceInput {
NoData,
ButtonStateChange(Vec<bool>),
EncoderStateChange(Vec<bool>),
EncoderTwist(Vec<i8>),
}
impl DeviceInput {
pub fn is_empty(&self) -> bool {
matches!(self, DeviceInput::NoData)
}
}
#[derive(Copy, Clone, Debug, Hash)]
pub struct ImageFormat {
pub mode: ImageMode,
pub size: (usize, usize),
pub rotation: ImageRotation,
pub mirror: ImageMirroring,
}
impl Default for ImageFormat {
fn default() -> Self {
Self {
mode: ImageMode::None,
size: (0, 0),
rotation: ImageRotation::Rot0,
mirror: ImageMirroring::None,
}
}
}
#[derive(Copy, Clone, Debug, Hash)]
pub enum ImageRotation {
Rot0,
Rot90,
Rot180,
Rot270,
}
#[derive(Copy, Clone, Debug, Hash)]
pub enum ImageMirroring {
None,
X,
Y,
Both,
}
#[derive(Copy, Clone, Debug, Hash)]
pub enum ImageMode {
None,
BMP,
JPEG,
}