
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