use num_enum::{IntoPrimitive, TryFromPrimitive};
use crate::Ident;
#[expect(missing_docs)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive, IntoPrimitive)]
#[repr(u16)]
pub enum KnownUsage {
Undefined = 0x00,
SimpleHapticController = 0x01,
WaveformList = 0x10,
DurationList = 0x11,
AutoTrigger = 0x20,
ManualTrigger = 0x21,
AutoTriggerAssociatedControl = 0x22,
Intensity = 0x23,
RepeatCount = 0x24,
RetriggerPeriod = 0x25,
WaveformVendorPage = 0x26,
WaveformVendorId = 0x27,
WaveformCutoffTime = 0x28,
WaveformNone = 0x1001,
WaveformStop = 0x1002,
WaveformClick = 0x1003,
WaveformBuzzContinuous = 0x1004,
WaveformRumbleContinuous = 0x1005,
WaveformPress = 0x1006,
WaveformRelease = 0x1007,
WaveformHover = 0x1008,
WaveformSuccess = 0x1009,
WaveformError = 0x100A,
WaveformInkContinuous = 0x100B,
WaveformPencilContinuous = 0x100C,
WaveformMarkerContinuous = 0x100D,
WaveformChiselMarkerContinuous = 0x100E,
WaveformBrushContinuous = 0x100F,
WaveformEraserContinuous = 0x1010,
WaveformSparkleContinuous = 0x1011,
}
pub type Usage = Ident<KnownUsage, u16>;