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 TelephonyDeviceUsage {
    #[default]
    Undefined,
    Phone,
    AnsweringMachine,
    MessageControls,
    Handset,
    Headset,
    TelephonyKeyPad,
    ProgrammableButton,
    Reserved08_1F(u16),
    HookSwitch = 32,
    Flash,
    Feature,
    Hold,
    Redial,
    Transfer,
    Drop,
    Park,
    ForwardCalls,
    AlternateFunction,
    Line,
    SpeakerPhone,
    Conference,
    RingEnable,
    RingSelect,
    PhoneMute,
    CallerID,
    Send,
    Reserved32_4F(u16),
    SpeedDial = 80,
    StoreNumber,
    RecallNumber,
    PhoneDirectory,
    Reserved54_6F(u16),
    VoiceMail = 112,
    ScreenCalls,
    DoNotDisturb,
    Message,
    AnswerOn_Off,
    Reserved75_8F(u16),
    InsideDialTone = 144,
    OutsideDialTone,
    InsideRingTone,
    OutsideRingTone,
    PriorityRingTone,
    InsideRingback,
    PriorityRingback,
    LineBusyTone,
    ReorderTone,
    CallWaitingTone,
    ConfirmationTone1,
    ConfirmationTone2,
    TonesOff,
    OutsideRingback,
    Ringer,
    Reserved9F_AF(u16),
    PhoneKey0 = 176,
    PhoneKey1,
    PhoneKey2,
    PhoneKey3,
    PhoneKey4,
    PhoneKey5,
    PhoneKey6,
    PhoneKey7,
    PhoneKey8,
    PhoneKey9,
    PhoneKeyStar,
    PhoneKeyPound,
    PhoneKeyA,
    PhoneKeyB,
    PhoneKeyC,
    PhoneKeyD,
    PhoneCallHistoryKey,
    PhoneCallerIDKey,
    PhoneSettingsKey,
    ReservedC3_EF(u16),
    HostControl = 240,
    HostAvailable,
    HostCallActive,
    ActivateHandsetAudio,
    RingType,
    Re_dialablePhoneNumber,
    ReservedF6_F7(u16),
    StopRingTone = 248,
    PSTNRingTone,
    HostRingTone,
    AlertSoundError,
    AlertSoundConfirm,
    AlertSoundNotification,
    SilentRing,
    ReservedFF_107(u16),
    EmailMessageWaiting = 264,
    VoicemailMessageWaiting,
    HostHold,
    Reserved10B_10F(u16),
    IncomingCallHistoryCount = 272,
    OutgoingCallHistoryCount,
    IncomingCallHistory,
    OutgoingCallHistory,
    PhoneLocale,
    Reserved115_13F(u16),
    PhoneTimeSecond = 320,
    PhoneTimeMinute,
    PhoneTimeHour,
    PhoneDateDay,
    PhoneDateMonth,
    PhoneDateYear,
    HandsetNickname,
    AddressBookID,
    Reserved148_149(u16),
    CallDuration = 330,
    DualModePhone,
    Reserved14C_FFFF(u16),
}
impl<T> From<T> for TelephonyDeviceUsage
where
    T: TryInto<u16>,
{
    fn from(value: T) -> Self {
        let value = value.try_into().unwrap_or(0);
        match value {
            0 => Self::Undefined,
            1 => Self::Phone,
            2 => Self::AnsweringMachine,
            3 => Self::MessageControls,
            4 => Self::Handset,
            5 => Self::Headset,
            6 => Self::TelephonyKeyPad,
            7 => Self::ProgrammableButton,
            8..32 => Self::Reserved08_1F(value),
            32 => Self::HookSwitch,
            33 => Self::Flash,
            34 => Self::Feature,
            35 => Self::Hold,
            36 => Self::Redial,
            37 => Self::Transfer,
            38 => Self::Drop,
            39 => Self::Park,
            40 => Self::ForwardCalls,
            41 => Self::AlternateFunction,
            42 => Self::Line,
            43 => Self::SpeakerPhone,
            44 => Self::Conference,
            45 => Self::RingEnable,
            46 => Self::RingSelect,
            47 => Self::PhoneMute,
            48 => Self::CallerID,
            49 => Self::Send,
            50..80 => Self::Reserved32_4F(value),
            80 => Self::SpeedDial,
            81 => Self::StoreNumber,
            82 => Self::RecallNumber,
            83 => Self::PhoneDirectory,
            84..112 => Self::Reserved54_6F(value),
            112 => Self::VoiceMail,
            113 => Self::ScreenCalls,
            114 => Self::DoNotDisturb,
            115 => Self::Message,
            116 => Self::AnswerOn_Off,
            117..144 => Self::Reserved75_8F(value),
            144 => Self::InsideDialTone,
            145 => Self::OutsideDialTone,
            146 => Self::InsideRingTone,
            147 => Self::OutsideRingTone,
            148 => Self::PriorityRingTone,
            149 => Self::InsideRingback,
            150 => Self::PriorityRingback,
            151 => Self::LineBusyTone,
            152 => Self::ReorderTone,
            153 => Self::CallWaitingTone,
            154 => Self::ConfirmationTone1,
            155 => Self::ConfirmationTone2,
            156 => Self::TonesOff,
            157 => Self::OutsideRingback,
            158 => Self::Ringer,
            159..176 => Self::Reserved9F_AF(value),
            176 => Self::PhoneKey0,
            177 => Self::PhoneKey1,
            178 => Self::PhoneKey2,
            179 => Self::PhoneKey3,
            180 => Self::PhoneKey4,
            181 => Self::PhoneKey5,
            182 => Self::PhoneKey6,
            183 => Self::PhoneKey7,
            184 => Self::PhoneKey8,
            185 => Self::PhoneKey9,
            186 => Self::PhoneKeyStar,
            187 => Self::PhoneKeyPound,
            188 => Self::PhoneKeyA,
            189 => Self::PhoneKeyB,
            190 => Self::PhoneKeyC,
            191 => Self::PhoneKeyD,
            192 => Self::PhoneCallHistoryKey,
            193 => Self::PhoneCallerIDKey,
            194 => Self::PhoneSettingsKey,
            195..240 => Self::ReservedC3_EF(value),
            240 => Self::HostControl,
            241 => Self::HostAvailable,
            242 => Self::HostCallActive,
            243 => Self::ActivateHandsetAudio,
            244 => Self::RingType,
            245 => Self::Re_dialablePhoneNumber,
            246..248 => Self::ReservedF6_F7(value),
            248 => Self::StopRingTone,
            249 => Self::PSTNRingTone,
            250 => Self::HostRingTone,
            251 => Self::AlertSoundError,
            252 => Self::AlertSoundConfirm,
            253 => Self::AlertSoundNotification,
            254 => Self::SilentRing,
            255..264 => Self::ReservedFF_107(value),
            264 => Self::EmailMessageWaiting,
            265 => Self::VoicemailMessageWaiting,
            266 => Self::HostHold,
            267..272 => Self::Reserved10B_10F(value),
            272 => Self::IncomingCallHistoryCount,
            273 => Self::OutgoingCallHistoryCount,
            274 => Self::IncomingCallHistory,
            275 => Self::OutgoingCallHistory,
            276 => Self::PhoneLocale,
            277..320 => Self::Reserved115_13F(value),
            320 => Self::PhoneTimeSecond,
            321 => Self::PhoneTimeMinute,
            322 => Self::PhoneTimeHour,
            323 => Self::PhoneDateDay,
            324 => Self::PhoneDateMonth,
            325 => Self::PhoneDateYear,
            326 => Self::HandsetNickname,
            327 => Self::AddressBookID,
            328..330 => Self::Reserved148_149(value),
            330 => Self::CallDuration,
            331 => Self::DualModePhone,
            332..=65535 => Self::Reserved14C_FFFF(value),
        }
    }
}