usbhidusage 0.1.3

A general purpose library for working with usb Human Interface Device Descriptors from the HID Usage Tables for Universal Serial Bus (USB) v1.5
Documentation
#[derive(Clone, Copy, PartialEq, PartialOrd, Ord, Eq, Hash, Debug, Default)]
#[non_exhaustive]
#[repr(u16)]
pub enum HapticsUsage {
    #[default]
    Undefined,
    SimpleHapticController,
    Reserved02_0F(u16),
    WaveformList = 16,
    DurationList,
    Reserved12_1F(u16),
    AutoTrigger = 32,
    ManualTrigger,
    AutoTriggerAssociatedControl,
    Intensity,
    RepeatCount,
    RetriggerPeriod,
    WaveformVendorPage,
    WaveformVendorID,
    WaveformCutoffTime,
    Reserved29_1000(u16),
    WaveformNone = 4097,
    WaveformStop,
    WaveformClick,
    WaveformBuzzContinuous,
    WaveformRumbleContinuous,
    WaveformPress,
    WaveformRelease,
    WaveformHover,
    WaveformSuccess,
    WaveformError,
    WaveformInkContinuous,
    WaveformPencilContinuous,
    WaveformMarkerContinuous,
    WaveformChiselMarkerContinuous,
    WaveformBrushContinuous,
    WaveformEraserContinuous,
    WaveformSparkleContinuous,
    Reserved1012_2000(u16),
    ReservedforVendorWaveforms2001_2FFF(u16) = 8193,
    Reserved3000_FFFF(u16) = 12288,
}
impl<T> From<T> for HapticsUsage
where
    T: TryInto<u16>,
{
    fn from(value: T) -> Self {
        let value = value.try_into().unwrap_or(0);
        match value {
            0 => Self::Undefined,
            1 => Self::SimpleHapticController,
            2..16 => Self::Reserved02_0F(value),
            16 => Self::WaveformList,
            17 => Self::DurationList,
            18..32 => Self::Reserved12_1F(value),
            32 => Self::AutoTrigger,
            33 => Self::ManualTrigger,
            34 => Self::AutoTriggerAssociatedControl,
            35 => Self::Intensity,
            36 => Self::RepeatCount,
            37 => Self::RetriggerPeriod,
            38 => Self::WaveformVendorPage,
            39 => Self::WaveformVendorID,
            40 => Self::WaveformCutoffTime,
            41..4097 => Self::Reserved29_1000(value),
            4097 => Self::WaveformNone,
            4098 => Self::WaveformStop,
            4099 => Self::WaveformClick,
            4100 => Self::WaveformBuzzContinuous,
            4101 => Self::WaveformRumbleContinuous,
            4102 => Self::WaveformPress,
            4103 => Self::WaveformRelease,
            4104 => Self::WaveformHover,
            4105 => Self::WaveformSuccess,
            4106 => Self::WaveformError,
            4107 => Self::WaveformInkContinuous,
            4108 => Self::WaveformPencilContinuous,
            4109 => Self::WaveformMarkerContinuous,
            4110 => Self::WaveformChiselMarkerContinuous,
            4111 => Self::WaveformBrushContinuous,
            4112 => Self::WaveformEraserContinuous,
            4113 => Self::WaveformSparkleContinuous,
            4114..8193 => Self::Reserved1012_2000(value),
            8193..12288 => Self::ReservedforVendorWaveforms2001_2FFF(value),
            12288..=65535 => Self::Reserved3000_FFFF(value),
        }
    }
}