Skip to main content

hid_types/id/usage/
power.rs

1//! Usage ID values from the Power Usage Page.
2
3use num_enum::{IntoPrimitive, TryFromPrimitive};
4
5use crate::Ident;
6
7/// Usage ID values from the Power Usage Page.
8///
9/// See [HID Usage Tables for Universal Serial Bus](https://www.usb.org/document-library/hid-usage-tables-17),
10/// section 30.
11/// See also [Usage Tables for HID Power Devices](https://www.usb.org/document-library/usage-tables-hid-power-devices-11).
12///
13#[expect(missing_docs)]
14#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive, IntoPrimitive)]
15#[repr(u16)]
16#[non_exhaustive]
17pub enum KnownUsage {
18    Undefined = 0,
19    IName = 0x01,
20    PresentStatus = 0x02,
21    ChangedStatus = 0x03,
22    Ups = 0x04,
23    PowerSupply = 0x05,
24    // 0x06-0x0F reserved
25    BatterySystem = 0x10,
26    BatterySystemId = 0x11,
27    Battery = 0x12,
28    BatteryId = 0x13,
29    Charger = 0x14,
30    ChargerId = 0x15,
31    PowerConverter = 0x16,
32    PowerConverterId = 0x17,
33    OutletSystem = 0x18,
34    OutletSystemId = 0x19,
35    Input = 0x1A,
36    InputId = 0x1B,
37    Output = 0x1C,
38    OutputId = 0x1D,
39    Flow = 0x1E,
40    FlowId = 0x1F,
41    Outlet = 0x20,
42    OutletId = 0x21,
43    Gang = 0x22,
44    GangId = 0x23,
45    PowerSummary = 0x24,
46    PowerSummaryId = 0x25,
47    // 0x26-0x2F reserved
48    Voltage = 0x30,
49    Current = 0x31,
50    Frequency = 0x32,
51    ApparentPower = 0x33,
52    ActivePower = 0x34,
53    PercentLoad = 0x35,
54    Temperature = 0x36,
55    Humidity = 0x37,
56    BadCount = 0x38,
57    // 0x39-0x3F reserved
58    ConfigVoltage = 0x40,
59    ConfigCurrent = 0x41,
60    ConfigFrequency = 0x42,
61    ConfigApparentPower = 0x43,
62    ConfigActivePower = 0x44,
63    ConfigPercentLoad = 0x45,
64    ConfigTemperature = 0x46,
65    ConfigHumidity = 0x47,
66    // 0x48-0x4F reserved
67    SwitchOnControl = 0x50,
68    SwitchOffControl = 0x51,
69    ToggleControl = 0x52,
70    LowVoltageTransfer = 0x53,
71    HighVoltageTransfer = 0x54,
72    DelayBeforeReboot = 0x55,
73    DelayBeforeStartup = 0x56,
74    DelayBeforeShutdown = 0x57,
75    Test = 0x58,
76    ModuleReset = 0x59,
77    AudibleAlarmControl = 0x5A,
78    // 0x5B-0x5F reserved
79    Present = 0x60,
80    Good = 0x61,
81    InternalFailure = 0x62,
82    VoltageOutOfRange = 0x63,
83    FrequencyOutOfRange = 0x64,
84    Overload = 0x65,
85    OverCharged = 0x66,
86    OverTemperature = 0x67,
87    ShutdownRequested = 0x68,
88    ShutdownImminent = 0x69,
89    // 0x6A reserved
90    SwitchOnOff = 0x6B,
91    Switchable = 0x6C,
92    Used = 0x6D,
93    Boost = 0x6E,
94    Buck = 0x6F,
95    Initialized = 0x70,
96    Tested = 0x71,
97    AwaitingPower = 0x72,
98    CommunicationLost = 0x73,
99    // 0x74-0xFC reserved
100    IManufacturer = 0xFD,
101    IProduct = 0xFE,
102    ISerialNumber = 0xFF,
103    // 0x0100-0xFFFF reserved
104}
105
106/// A __Usage ID__ value.
107pub type Usage = Ident<KnownUsage, u16>;