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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
#[non_exhaustive]
#[derive(Clone, Copy, PartialEq, PartialOrd, Ord, Eq, Hash, Debug, Default)]
#[repr(u16)]
pub enum BarcodeScannerUsage {
    #[default]
    Undefined,
    BarcodeBadgeReader,
    BarcodeScanner,
    DumbBarCodeScanner,
    CordlessScannerBase,
    BarCodeScannerCradle,
    Reserved06_0F,
    AttributeReport = 16,
    SettingsReport,
    ScannedDataReport,
    RawScannedDataReport,
    TriggerReport,
    StatusReport,
    UPC_EANControlReport,
    EAN2_3LabelControlReport,
    Code39ControlReport,
    Interleaved2of5ControlReport,
    Standard2of5ControlReport,
    MSIPlesseyControlReport,
    CodabarControlReport,
    Code128ControlReport,
    Misc1DControlReport,
    _2DControlReport,
    Reserved20_2F,
    Aiming_PointerMode = 48,
    BarCodePresentSensor,
    Class1ALaser,
    Class2Laser,
    HeaterPresent,
    ContactScanner,
    ElectronicArticleSurveillanceNotification,
    ConstantElectronicArticleSurveillance,
    ErrorIndication,
    FixedBeeper,
    GoodDecodeIndication,
    HandsFreeScanning,
    IntrinsicallySafe,
    KlasseEinsLaser,
    LongRangeScanner,
    MirrorSpeedControl,
    NotOnFileIndication,
    ProgrammableBeeper,
    Triggerless,
    Wand,
    WaterResistant,
    Multi_RangeScanner,
    ProximitySensor,
    Reserved47_4C,
    FragmentDecoding = 77,
    ScannerReadConfidence,
    DataPrefix,
    PrefixAIMI,
    PrefixNone,
    PrefixProprietary,
    Reserved53_54,
    ActiveTime = 84,
    AimingLaserPattern,
    BarCodePresent,
    BeeperState,
    LaserOnTime,
    LaserState,
    LockoutTime,
    MotorState,
    MotorTimeout,
    PowerOnResetScanner,
    PreventReadofBarcodes,
    InitiateBarcodeRead,
    TriggerState,
    TriggerMode,
    TriggerModeBlinkingLaserOn,
    TriggerModeContinuousLaserOn,
    TriggerModeLaseronwhilePulled,
    TriggerModeLaserstaysonafterrelease,
    Reserved67_6C,
    CommitParameterstoNVM = 109,
    ParameterScanning,
    ParametersChanged,
    Setparameterdefaultvalues,
    Reserved71_74,
    ScannerInCradle = 116,
    ScannerInRange,
    Reserved77_79,
    AimDuration = 122,
    GoodReadLampDuration,
    GoodReadLampIntensity,
    GoodReadLED,
    GoodReadToneFrequency,
    GoodReadToneLength,
    GoodReadToneVolume,
    Reserved81,
    NoReadMessage,
    NotonFileVolume,
    PowerupBeep,
    SoundErrorBeep,
    SoundGoodReadBeep,
    SoundNotOnFileBeep,
    GoodReadWhentoWrite,
    GRWTIAfterDecode,
    GRWTIBeep_Lampaftertransmit,
    GRWTINoBeep_Lampuseatall,
    Reserved8C_90,
    BooklandEAN = 145,
    ConvertEAN8to13Type,
    ConvertUPCAtoEAN_13,
    ConvertUPC_EtoA,
    EAN_13,
    EAN_8,
    EAN_99128Mandatory,
    EAN_99P5_128Optional,
    EnableEANTwoLabel,
    UPC_EAN,
    UPC_EANCouponCode,
    UPC_EANPeriodicals,
    UPC_A,
    UPC_Awith128Mandatory,
    UPC_Awith128Optional,
    UPC_AwithP5Optional,
    UPC_E,
    UPC_E1,
    ReservedA3_A8,
    Periodical = 169,
    PeriodicalAuto_Discriminate_plus2,
    PeriodicalOnlyDecodewith_plus2,
    PeriodicalIgnore_plus2,
    PeriodicalAuto_Discriminate_plus5,
    PeriodicalOnlyDecodewith_plus5,
    PeriodicalIgnore_plus5,
    Check,
    CheckDisablePrice,
    CheckEnable4digitPrice,
    CheckEnable5digitPrice,
    CheckEnableEuropean4digitPrice,
    CheckEnableEuropean5digitPrice,
    ReservedB6,
    EANTwoLabel,
    EANThreeLabel,
    EAN8FlagDigit1,
    EAN8FlagDigit2,
    EAN8FlagDigit3,
    EAN13FlagDigit1,
    EAN13FlagDigit2,
    EAN13FlagDigit3,
    AddEAN2_3LabelDefinition,
    ClearallEAN2_3LabelDefinitions,
    ReservedC1_C2,
    Codabar = 195,
    Code128,
    ReservedC5_C6,
    Code39 = 199,
    Code93,
    FullASCIIConversion,
    Interleaved2of5,
    ItalianPharmacyCode,
    MSI_Plessey,
    Standard2of5IATA,
    Standard2of5,
    ReservedCF_D2,
    TransmitStart_Stop = 211,
    Tri_Optic,
    UCC_EAN_128,
    CheckDigit,
    CheckDigitDisable,
    CheckDigitEnableInterleaved2of5OPCC,
    CheckDigitEnableInterleaved2of5USS,
    CheckDigitEnableStandard2of5OPCC,
    CheckDigitEnableStandard2of5USS,
    CheckDigitEnableOneMSIPlessey,
    CheckDigitEnableTwoMSIPlessey,
    CheckDigitCodabarEnable,
    CheckDigitCode39Enable,
    ReservedE0_EF,
    TransmitCheckDigit = 240,
    DisableCheckDigitTransmit,
    EnableCheckDigitTransmit,
    ReservedF3_FA,
    SymbologyIdentifier1 = 251,
    SymbologyIdentifier2,
    SymbologyIdentifier3,
    DecodedData,
    DecodeDataContinued,
    BarSpaceData,
    ScannerDataAccuracy,
    RawDataPolarity,
    PolarityInvertedBarCode,
    PolarityNormalBarCode,
    Reserved105,
    MinimumLengthtoDecode,
    MaximumLengthtoDecode,
    DiscreteLengthtoDecode1,
    DiscreteLengthtoDecode2,
    DataLengthMethod,
    DLMethodReadany,
    DLMethodCheckinRange,
    DLMethodCheckforDiscrete,
    Reserved10E_10F,
    AztecCode = 272,
    BC412,
    ChannelCode,
    Code16,
    Code32,
    Code49,
    CodeOne,
    Colorcode,
    DataMatrix,
    MaxiCode,
    MicroPDF,
    PDF_417,
    PosiCode,
    QRCode,
    SuperCode,
    UltraCode,
    USD_5_SlugCode,
    VeriCode,
    Reserved122_FFFF,
}
impl<T> From<T> for BarcodeScannerUsage
where
    T: TryInto<u16>,
{
    fn from(value: T) -> Self {
        let value: u16 = value.try_into().unwrap_or(0);
        match value {
            0 => Self::Undefined,
            1 => Self::BarcodeBadgeReader,
            2 => Self::BarcodeScanner,
            3 => Self::DumbBarCodeScanner,
            4 => Self::CordlessScannerBase,
            5 => Self::BarCodeScannerCradle,
            6..16 => Self::Reserved06_0F,
            16 => Self::AttributeReport,
            17 => Self::SettingsReport,
            18 => Self::ScannedDataReport,
            19 => Self::RawScannedDataReport,
            20 => Self::TriggerReport,
            21 => Self::StatusReport,
            22 => Self::UPC_EANControlReport,
            23 => Self::EAN2_3LabelControlReport,
            24 => Self::Code39ControlReport,
            25 => Self::Interleaved2of5ControlReport,
            26 => Self::Standard2of5ControlReport,
            27 => Self::MSIPlesseyControlReport,
            28 => Self::CodabarControlReport,
            29 => Self::Code128ControlReport,
            30 => Self::Misc1DControlReport,
            31 => Self::_2DControlReport,
            32..48 => Self::Reserved20_2F,
            48 => Self::Aiming_PointerMode,
            49 => Self::BarCodePresentSensor,
            50 => Self::Class1ALaser,
            51 => Self::Class2Laser,
            52 => Self::HeaterPresent,
            53 => Self::ContactScanner,
            54 => Self::ElectronicArticleSurveillanceNotification,
            55 => Self::ConstantElectronicArticleSurveillance,
            56 => Self::ErrorIndication,
            57 => Self::FixedBeeper,
            58 => Self::GoodDecodeIndication,
            59 => Self::HandsFreeScanning,
            60 => Self::IntrinsicallySafe,
            61 => Self::KlasseEinsLaser,
            62 => Self::LongRangeScanner,
            63 => Self::MirrorSpeedControl,
            64 => Self::NotOnFileIndication,
            65 => Self::ProgrammableBeeper,
            66 => Self::Triggerless,
            67 => Self::Wand,
            68 => Self::WaterResistant,
            69 => Self::Multi_RangeScanner,
            70 => Self::ProximitySensor,
            71..77 => Self::Reserved47_4C,
            77 => Self::FragmentDecoding,
            78 => Self::ScannerReadConfidence,
            79 => Self::DataPrefix,
            80 => Self::PrefixAIMI,
            81 => Self::PrefixNone,
            82 => Self::PrefixProprietary,
            83..84 => Self::Reserved53_54,
            84 => Self::ActiveTime,
            85 => Self::AimingLaserPattern,
            86 => Self::BarCodePresent,
            87 => Self::BeeperState,
            88 => Self::LaserOnTime,
            89 => Self::LaserState,
            90 => Self::LockoutTime,
            91 => Self::MotorState,
            92 => Self::MotorTimeout,
            93 => Self::PowerOnResetScanner,
            94 => Self::PreventReadofBarcodes,
            95 => Self::InitiateBarcodeRead,
            96 => Self::TriggerState,
            97 => Self::TriggerMode,
            98 => Self::TriggerModeBlinkingLaserOn,
            99 => Self::TriggerModeContinuousLaserOn,
            100 => Self::TriggerModeLaseronwhilePulled,
            101 => Self::TriggerModeLaserstaysonafterrelease,
            102..109 => Self::Reserved67_6C,
            109 => Self::CommitParameterstoNVM,
            110 => Self::ParameterScanning,
            111 => Self::ParametersChanged,
            112 => Self::Setparameterdefaultvalues,
            113..116 => Self::Reserved71_74,
            116 => Self::ScannerInCradle,
            117 => Self::ScannerInRange,
            118..122 => Self::Reserved77_79,
            122 => Self::AimDuration,
            123 => Self::GoodReadLampDuration,
            124 => Self::GoodReadLampIntensity,
            125 => Self::GoodReadLED,
            126 => Self::GoodReadToneFrequency,
            127 => Self::GoodReadToneLength,
            128 => Self::GoodReadToneVolume,
            129 => Self::Reserved81,
            130 => Self::NoReadMessage,
            131 => Self::NotonFileVolume,
            132 => Self::PowerupBeep,
            133 => Self::SoundErrorBeep,
            134 => Self::SoundGoodReadBeep,
            135 => Self::SoundNotOnFileBeep,
            136 => Self::GoodReadWhentoWrite,
            137 => Self::GRWTIAfterDecode,
            138 => Self::GRWTIBeep_Lampaftertransmit,
            139 => Self::GRWTINoBeep_Lampuseatall,
            140..145 => Self::Reserved8C_90,
            145 => Self::BooklandEAN,
            146 => Self::ConvertEAN8to13Type,
            147 => Self::ConvertUPCAtoEAN_13,
            148 => Self::ConvertUPC_EtoA,
            149 => Self::EAN_13,
            150 => Self::EAN_8,
            151 => Self::EAN_99128Mandatory,
            152 => Self::EAN_99P5_128Optional,
            153 => Self::EnableEANTwoLabel,
            154 => Self::UPC_EAN,
            155 => Self::UPC_EANCouponCode,
            156 => Self::UPC_EANPeriodicals,
            157 => Self::UPC_A,
            158 => Self::UPC_Awith128Mandatory,
            159 => Self::UPC_Awith128Optional,
            160 => Self::UPC_AwithP5Optional,
            161 => Self::UPC_E,
            162 => Self::UPC_E1,
            163..169 => Self::ReservedA3_A8,
            169 => Self::Periodical,
            170 => Self::PeriodicalAuto_Discriminate_plus2,
            171 => Self::PeriodicalOnlyDecodewith_plus2,
            172 => Self::PeriodicalIgnore_plus2,
            173 => Self::PeriodicalAuto_Discriminate_plus5,
            174 => Self::PeriodicalOnlyDecodewith_plus5,
            175 => Self::PeriodicalIgnore_plus5,
            176 => Self::Check,
            177 => Self::CheckDisablePrice,
            178 => Self::CheckEnable4digitPrice,
            179 => Self::CheckEnable5digitPrice,
            180 => Self::CheckEnableEuropean4digitPrice,
            181 => Self::CheckEnableEuropean5digitPrice,
            182 => Self::ReservedB6,
            183 => Self::EANTwoLabel,
            184 => Self::EANThreeLabel,
            185 => Self::EAN8FlagDigit1,
            186 => Self::EAN8FlagDigit2,
            187 => Self::EAN8FlagDigit3,
            188 => Self::EAN13FlagDigit1,
            189 => Self::EAN13FlagDigit2,
            190 => Self::EAN13FlagDigit3,
            191 => Self::AddEAN2_3LabelDefinition,
            192 => Self::ClearallEAN2_3LabelDefinitions,
            193..195 => Self::ReservedC1_C2,
            195 => Self::Codabar,
            196 => Self::Code128,
            197..199 => Self::ReservedC5_C6,
            199 => Self::Code39,
            200 => Self::Code93,
            201 => Self::FullASCIIConversion,
            202 => Self::Interleaved2of5,
            203 => Self::ItalianPharmacyCode,
            204 => Self::MSI_Plessey,
            205 => Self::Standard2of5IATA,
            206 => Self::Standard2of5,
            207..211 => Self::ReservedCF_D2,
            211 => Self::TransmitStart_Stop,
            212 => Self::Tri_Optic,
            213 => Self::UCC_EAN_128,
            214 => Self::CheckDigit,
            215 => Self::CheckDigitDisable,
            216 => Self::CheckDigitEnableInterleaved2of5OPCC,
            217 => Self::CheckDigitEnableInterleaved2of5USS,
            218 => Self::CheckDigitEnableStandard2of5OPCC,
            219 => Self::CheckDigitEnableStandard2of5USS,
            220 => Self::CheckDigitEnableOneMSIPlessey,
            221 => Self::CheckDigitEnableTwoMSIPlessey,
            222 => Self::CheckDigitCodabarEnable,
            223 => Self::CheckDigitCode39Enable,
            224..240 => Self::ReservedE0_EF,
            240 => Self::TransmitCheckDigit,
            241 => Self::DisableCheckDigitTransmit,
            242 => Self::EnableCheckDigitTransmit,
            243..251 => Self::ReservedF3_FA,
            251 => Self::SymbologyIdentifier1,
            252 => Self::SymbologyIdentifier2,
            253 => Self::SymbologyIdentifier3,
            254 => Self::DecodedData,
            255 => Self::DecodeDataContinued,
            256 => Self::BarSpaceData,
            257 => Self::ScannerDataAccuracy,
            258 => Self::RawDataPolarity,
            259 => Self::PolarityInvertedBarCode,
            260 => Self::PolarityNormalBarCode,
            261 => Self::Reserved105,
            262 => Self::MinimumLengthtoDecode,
            263 => Self::MaximumLengthtoDecode,
            264 => Self::DiscreteLengthtoDecode1,
            265 => Self::DiscreteLengthtoDecode2,
            266 => Self::DataLengthMethod,
            267 => Self::DLMethodReadany,
            268 => Self::DLMethodCheckinRange,
            269 => Self::DLMethodCheckforDiscrete,
            270..272 => Self::Reserved10E_10F,
            272 => Self::AztecCode,
            273 => Self::BC412,
            274 => Self::ChannelCode,
            275 => Self::Code16,
            276 => Self::Code32,
            277 => Self::Code49,
            278 => Self::CodeOne,
            279 => Self::Colorcode,
            280 => Self::DataMatrix,
            281 => Self::MaxiCode,
            282 => Self::MicroPDF,
            283 => Self::PDF_417,
            284 => Self::PosiCode,
            285 => Self::QRCode,
            286 => Self::SuperCode,
            287 => Self::UltraCode,
            288 => Self::USD_5_SlugCode,
            289 => Self::VeriCode,
            290..=65535 => Self::Reserved122_FFFF,
        }
    }
}