hid-types 0.1.1

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

use num_enum::{IntoPrimitive, TryFromPrimitive};

use crate::Ident;

/// Well-known Usage ID values from the Scales Usage Page.
///
/// See [HID Usage Tables for Universal Serial Bus](https://www.usb.org/document-library/hid-usage-tables-17),
/// section 33.
#[expect(missing_docs)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive, IntoPrimitive)]
#[repr(u16)]
pub enum KnownUsage {
    Undefined = 0,
    Scales = 0x01,
    // 0x02-0x1F reserved
    ScaleDevice = 0x20,
    ScaleClass = 0x21,
    ScaleClassIMetric = 0x22,
    ScaleClassIiMetric = 0x23,
    ScaleClassIiiMetric = 0x24,
    ScaleClassIiilMetric = 0x25,
    ScaleClassIvMetric = 0x26,
    ScaleClassIiiEnglish = 0x27,
    ScaleClassIiilEnglish = 0x28,
    ScaleClassIvEnglish = 0x29,
    ScaleClassGeneric = 0x2A,
    // 0x2B-0x2F reserved
    ScaleAttributeReport = 0x30,
    ScaleControlReport = 0x31,
    ScaleDataReport = 0x32,
    ScaleStatusReport = 0x33,
    ScaleWeightLimitReport = 0x34,
    ScaleStatisticsReport = 0x35,
    // 0x36-0x3F reserved
    DataWeight = 0x40,
    DataScaling = 0x41,
    // 0x42-0x4F reserved
    WeightUnit = 0x50,
    WeightUnitMilligram = 0x51,
    WeightUnitGram = 0x52,
    WeightUnitKilogram = 0x53,
    WeightUnitCarats = 0x54,
    WeightUnitTaels = 0x55,
    WeightUnitGrains = 0x56,
    WeightUnitPennyweights = 0x57,
    WeightUnitMetricTon = 0x58,
    WeightUnitAvoirTon = 0x59,
    WeightUnitTroyOunce = 0x5A,
    WeightUnitOunce = 0x5B,
    WeightUnitPound = 0x5C,
    // 0x5D-0x5F reserved
    CalibrationCount = 0x60,
    ReZeroCount = 0x61,
    // 0x62-0x6F reserved
    ScaleStatus = 0x70,
    ScaleStatusFault = 0x71,
    ScaleStatusStableAtCenterOfZero = 0x72,
    ScaleStatusInMotion = 0x73,
    ScaleStatusWeightStable = 0x74,
    ScaleStatusUnderZero = 0x75,
    ScaleStatusOverWeightLimit = 0x76,
    ScaleStatusRequiresCalibration = 0x77,
    ScaleStatusRequiresRezeroing = 0x78,
    // 0x79-0x7F reserved
    ZeroScale = 0x80,
    EnforcedZeroReturn = 0x81,
    // 0x82-0xFFFF reserved
}

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