text: 
  class DESCRIPTOR_TYPE:
      # source: http://www.usb.org/developers/docs/usb_31_120516.zip, 2017-01-07
      # and: http://www.usb.org/developers/docs/usb20_docs/usb_20_120516.zip, 2017-01-07
      DEVICE = 1
      CONFIGURATION = 2
      STRING = 3
      INTERFACE = 4
      ENDPOINT = 5
      DEVICE_QUALIFIER = 6
      OTHER_SPEED_CONFIGURATION = 7
      INTERFACE_POWER = 8
      OTG = 9
      DEBUG = 10
      INTERFACE_ASSOCIATION = 11
      BOS = 15
      DEVICE_CAPABILITY = 16
  
      CLASS_SPECIFIC_UNDEFINED = 0x20
      CLASS_SPECIFIC_DEVICE = 0x21
      CLASS_SPECIFIC_CONFIGURATION = 0x22
      CLASS_SPECIFIC_STRING = 0x23
      CLASS_SPECIFIC_INTERFACE = 0x24
      CLASS_SPECIFIC_ENDPOINT = 0x25
  
      SUPERSPEED_USB_ENDPOINT_COMPANION = 48
      SUPERSPEEDPLUS_ISOCHRONOUS_ENDPOINT_COMPANION = 49
  
  
  class LANGUAGE_IDENTIFIER:
      # source: http://www.usb.org/developers/docs/USB_LANGIDs.pdf, 2017-01-07
      AFRIKAANS = 0x0436
      ALBANIAN = 0x041C
      ARABIC_SA = 0x0401
      ARABIC_IQ = 0x0801
      ARABIC_EG = 0x0C01
      ARABIC_LY = 0x1001
      ARABIC_DZ = 0x1401
      ARABIC_MA = 0x1801
      ARABIC_TN = 0x1C01
      ARABIC_OM = 0x2001
      ARABIC_YE = 0x2401
      ARABIC_SY = 0x2801
      ARABIC_JO = 0x2C01
      ARABIC_LB = 0x3001
      ARABIC_KW = 0x3401
      ARABIC_AE = 0x3801
      ARABIC_BH = 0x3C01
      ARABIC_QA = 0x4001
      ARMENIAN = 0x042B
      ASSAMESE = 0x044D
      AZERI_LATIN = 0x042C
      AZERI_CYRILLIC = 0x082C
      BASQUE = 0x042D
      BELARUSSIAN = 0x0423
      BENGALI = 0x0445
      BULGARIAN = 0x0402
      BURMESE = 0x0455
      CATALAN = 0x0403
      CHINESE_TW = 0x0404
      CHINESE_PRC = 0x0804
      CHINESE_HK = 0x0C04
      CHINESE_SG = 0x1004
      CHINESE_MO = 0x1404
      CROATIAN = 0x041A
      CZECH = 0x0405
      DANISH = 0x0406
      DUTCH_NL = 0x0413
      DUTCH_BE = 0x0813
      ENGLISH_US = 0x0409
      ENGLISH_UK = 0x0809
      ENGLISH_AU = 0x0C09
      ENGLISH_CA = 0x1009
      ENGLISH_NZ = 0x1409
      ENGLISH_IE = 0x1809
      ENGLISH_ZA = 0x1C09
      ENGLISH_JM = 0x2009
      ENGLISH_CARIBBEAN = 0x2409
      ENGLISH_BZ = 0x2809
      ENGLISH_TT = 0x2c09
      ENGLISH_ZW = 0x3009
      ENGLISH_PH = 0x3409
      ESTONIAN = 0x0425
      FAEROESE = 0x0438
      FARSI = 0x0429
      FINNISH = 0x040B
      FRENCH = 0x040C
      FRENCH_BE = 0x080C
      FRENCH_CA = 0x0C0C
      FRENCH_CH = 0x100C
      FRENCH_LU = 0x140C
      FRENCH_MC = 0x180C
      GEORGIAN = 0x0437
      GERMAN = 0x0407
      GERMAN_CH = 0x0807
      GERMAN_AT = 0x0C07
      GERMAN_LU = 0x1007
      GERMAN_LI = 0x1407
      GREEK = 0x0408
      GUJARATI = 0x0447
      HEBREW = 0x040D
      HINDI = 0x0439
      HUNGARIAN = 0x040E
      ICELANDIC = 0x040F
      INDONESIAN = 0x0421
      ITALIAN = 0x0410
      ITALIAN_CH = 0x0810
      JAPANESE = 0x0411
      KANNADA = 0x044B
      KASHMIRI = 0x0860
      KAZAKH = 0x043F
      KONKANI = 0x0457
      KOREAN = 0x0412
      KOREAN_JOHAB = 0x0812
      LATVIAN = 0x0426
      LITHUANIAN = 0x0427
      LITHUANIAN_CLASSIC = 0x0827
      MACEDONIAN = 0x042F
      MALAY_MY = 0x043E
      MALAY_BN = 0x083E
      MALAYALAM = 0x044C
      MANIPURI = 0x0458
      MARATHI = 0x044E
      NEPALI = 0x0861
      NORWEGIAN_BOKMAL = 0x0414
      NORWEGIAN_NYNORSK = 0x0814
      ORIYA = 0x0448
      POLISH = 0x0415
      PORTUGUESE_BR = 0x0416
      PORTUGUESE = 0x0816
      PUNJABI = 0x0446
      ROMANIAN = 0x0418
      RUSSIAN = 0x0419
      SANSKRIT = 0x044F
      SERBIAN_CYRILLIC = 0x0C1A
      SERBIAN_LATIN = 0x081A
      SINDHI = 0x0459
      SLOVAK = 0x041B
      SLOVENIAN = 0x0424
      SPANISH_TRADITIONAL = 0x040A
      SPANISH_MX = 0x080A
      SPANISH_MODERN = 0x0C0A
      SPANISH_GT = 0x100A
      SPANISH_CR = 0x140A
      SPANISH_PA = 0x180A
      SPANISH_DO = 0x1C0A
      SPANISH_VE = 0x200A
      SPANISH_CO = 0x240A
      SPANISH_PE = 0x280A
      SPANISH_AR = 0x2C0A
      SPANISH_EC = 0x300A
      SPANISH_CL = 0x340A
      SPANISH_UY = 0x380A
      SPANISH_PY = 0x3C0A
      SPANISH_BO = 0x400A
      SPANISH_SV = 0x440A
      SPANISH_HN = 0x480A
      SPANISH_NI = 0x4C0A
      SPANISH_PR = 0x500A
      SUTU = 0x0430
      SWAHILI = 0x0441
      SWEDISH = 0x041D
      SWEDISH_FI = 0x081D
      TAMIL = 0x0449
      TATAR = 0x0444
      TELUGU = 0x044A
      THAI = 0x041E
      TURKISH = 0x041F
      UKRAINIAN = 0x0422
      URDU_PK = 0x0420
      URDU_IN = 0x0820
      UZBEK_LATIN = 0x0443
      UZBEK_CYRILLIC = 0x0843
      VIETNAMESE = 0x042A
  
      HID_USAGE_DATA_DESCRIPTOR = 0x04FF
      HID_VENDOR_DEFINED_1 = 0xF0FF
      HID_VENDOR_DEFINED_2 = 0xF4FF
      HID_VENDOR_DEFINED_3 = 0xF8FF
      HID_VENDOR_DEFINED_4 = 0xFCFF
  
  
  class DEVICE_CAPABILITY_TYPE:
      # source: http://www.usb.org/developers/docs/usb_31_120516.zip, 2017-01-07
      WIRELESS_USB = 0x01
      USB_20_EXTENSION = 0x02
      SUPERSPEED_USB = 0x03
      CONTAINER_ID = 0x04
      PLATFORM = 0x05
      POWER_DELIVERY_CAPABILITY = 0x06
      BATTERY_INFO_CAPABILITY = 0x07
      PD_CONSUMER_PORT_CAPABILITY = 0x08
      PD_PROVIDER_PORT_CAPABILITY = 0x09
      SUPERSPEED_PLUS = 0x0A
      PRECISION_TIME_MEASUREMENT = 0x0B
      WIRELESS_USB_EXT = 0x0C
  
  
  class BESL:
      # source: http://www.usb.org/developers/docs/usb20_docs/usb_20_120516.zip, 2017-01-07
      BESL_125 = 0
      BESL_150 = 1
      BESL_200 = 2
      BESL_300 = 3
      BESL_400 = 4
      BESL_500 = 5
      BESL_1000 = 6
      BESL_2000 = 7
      BESL_3000 = 8
      BESL_4000 = 9
      BESL_5000 = 10
      BESL_6000 = 11
      BESL_7000 = 12
      BESL_8000 = 13
      BESL_9000 = 14
      BESL_10000 = 15
  
  
  class CLASS:
      # source: http://www.usb.org/developers/defined_class, 2017-01-08
      USE_INTERFACE_CLASS = 0x00
      AUDIO = 0x01
      COMMUNICATION = 0x02
      HID = 0x03
      PHYSICAL = 0x05
      IMAGE = 0x06
      PRINTER = 0x07
      MASS_STORAGE = 0x08
      HUB = 0x09
      CDC_DATA = 0x0A
      SMART_CARD = 0x0B
      CONTENT_SECURITY = 0x0D
      VIDEO = 0x0E
      PERSONAL_HEALTHCARE = 0x0F
      AUDIO_VIDEO = 0x10
      BILLBOARD = 0x11
      USB_TYPEC_BRIDGE = 0x12
      DIAGNOSTIC_DEVICE = 0xDC
      WIRELESS_CONTROLLER = 0xE0
      MISCELLANEOUS = 0xEF
      APPLICATION_SPECIFIC = 0xFE
      VENDOR_SPECIFIC = 0xFF
  
  
  class SUBCLASS:
      INTERFACE_ASSOCIATION_DESCRIPTOR = 0x02
  
  
  class PROTOCOL:
      INTERFACE_ASSOCIATION_DESCRIPTOR = 0x01
  
  
  class ENDPOINT:
      # source: http://www.usb.org/developers/docs/usb_31_120516.zip, 2017-01-08
      TRANSFER_TYPE_CONTROL = 0
      TRANSFER_TYPE_ISOCHRONOUS = 1
      TRANSFER_TYPE_BULK = 2
      TRANSFER_TYPE_INTERRUPT = 3
  
      USAGE_TYPE_INTERRUPT_PERIODIC = 0
      USAGE_TYPE_INTERRUPT_NOTIFICATION = 1
  
      USAGE_TYPE_ISOCHRONOUS_DATA = 0
      USAGE_TYPE_ISOCHRONOUS_FEEDBACK = 1
      USAGE_TYPE_ISOCHRONOUS_IMPLICIT_FEEDBACK_DATA = 2
  
      SYNCHRONIZATION_TYPE_NONE = 0
      SYNCHRONIZATION_TYPE_ASYNCHRONOUS = 1
      SYNCHRONIZATION_TYPE_ADAPTIVE = 2
      SYNCHRONIZATION_TYPE_SYNCHRONOUS = 3
  