hid-types 0.1.1

Rust types for working with USB HID report descriptors
Documentation
//! Well-known Usage ID values from the Power Usage Page.

use num_enum::{IntoPrimitive, TryFromPrimitive};

use crate::Ident;

/// Well-known Usage ID values from the Power Usage Page.
///
/// See [HID Usage Tables for Universal Serial Bus](https://www.usb.org/document-library/hid-usage-tables-17),
/// section 30.
#[expect(missing_docs)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive, IntoPrimitive)]
#[repr(u16)]
pub enum KnownUsage {
    Undefined = 0,
    IName = 0x01,
    PresentStatus = 0x02,
    ChangedStatus = 0x03,
    Ups = 0x04,
    PowerSupply = 0x05,
    // 0x06-0x0F reserved
    BatterySystem = 0x10,
    BatterySystemId = 0x11,
    Battery = 0x12,
    BatteryId = 0x13,
    Charger = 0x14,
    ChargerId = 0x15,
    PowerConverter = 0x16,
    PowerConverterId = 0x17,
    OutletSystem = 0x18,
    OutletSystemId = 0x19,
    Input = 0x1A,
    InputId = 0x1B,
    Output = 0x1C,
    OutputId = 0x1D,
    Flow = 0x1E,
    FlowId = 0x1F,
    Outlet = 0x20,
    OutletId = 0x21,
    Gang = 0x22,
    GangId = 0x23,
    PowerSummary = 0x24,
    PowerSummaryId = 0x25,
    // 0x26-0x2F reserved
    Voltage = 0x30,
    Current = 0x31,
    Frequency = 0x32,
    ApparentPower = 0x33,
    ActivePower = 0x34,
    PercentLoad = 0x35,
    Temperature = 0x36,
    Humidity = 0x37,
    BadCount = 0x38,
    // 0x39-0x3F reserved
    ConfigVoltage = 0x40,
    ConfigCurrent = 0x41,
    ConfigFrequency = 0x42,
    ConfigApparentPower = 0x43,
    ConfigActivePower = 0x44,
    ConfigPercentLoad = 0x45,
    ConfigTemperature = 0x46,
    ConfigHumidity = 0x47,
    // 0x48-0x4F reserved
    SwitchOnControl = 0x50,
    SwitchOffControl = 0x51,
    ToggleControl = 0x52,
    LowVoltageTransfer = 0x53,
    HighVoltageTransfer = 0x54,
    DelayBeforeReboot = 0x55,
    DelayBeforeStartup = 0x56,
    DelayBeforeShutdown = 0x57,
    Test = 0x58,
    ModuleReset = 0x59,
    AudibleAlarmControl = 0x5A,
    // 0x5B-0x5F reserved
    Present = 0x60,
    Good = 0x61,
    InternalFailure = 0x62,
    VoltageOutOfRange = 0x63,
    FrequencyOutOfRange = 0x64,
    Overload = 0x65,
    OverCharged = 0x66,
    OverTemperature = 0x67,
    ShutdownRequested = 0x68,
    ShutdownImminent = 0x69,
    // 0x6A reserved
    SwitchOnOff = 0x6B,
    Switchable = 0x6C,
    Used = 0x6D,
    Boost = 0x6E,
    Buck = 0x6F,
    Initialized = 0x70,
    Tested = 0x71,
    AwaitingPower = 0x72,
    CommunicationLost = 0x73,
    // 0x74-0xFC reserved
    IManufacturer = 0xFD,
    IProduct = 0xFE,
    ISerialNumber = 0xFF,
    // 0x0100-0xFFFF reserved
}

/// A __Usage ID__ value.
pub type Usage = Ident<KnownUsage, u16>;