diff --git a/cores/arduino/Adafruit_TinyUSB_Core/Adafruit_USBD_Device.cpp b/cores/arduino/Adafruit_TinyUSB_Core/Adafruit_USBD_Device.cpp index fe4734f5f..88525e2cb 100644 --- a/cores/arduino/Adafruit_TinyUSB_Core/Adafruit_USBD_Device.cpp +++ b/cores/arduino/Adafruit_TinyUSB_Core/Adafruit_USBD_Device.cpp @@ -34,6 +34,10 @@ #define USB_PRODUCT "Unknown" #endif +#ifndef USB_LANGUAGE + #define USB_LANGUAGE 0x0409 // default is English +#endif + #ifndef USB_CONFIG_POWER #define USB_CONFIG_POWER 100 #endif @@ -90,6 +94,7 @@ Adafruit_USBD_Device::Adafruit_USBD_Device(void) _itf_count = 0; _epin_count = _epout_count = 1; + _language_id = USB_LANGUAGE; _manufacturer = USB_MANUFACTURER; _product = USB_PRODUCT; } @@ -152,12 +157,18 @@ void Adafruit_USBD_Device::setVersion(uint16_t bcd) _desc_device.bcdUSB = bcd; } -void Adafruit_USBD_Device::setManufacturer(const char *s) + +void Adafruit_USBD_Device::setLanguageDescriptor (uint16_t language_id) +{ + _language_id = language_id; +} + +void Adafruit_USBD_Device::setManufacturerDescriptor(const char *s) { _manufacturer = s; } -void Adafruit_USBD_Device::setProduct(const char *s) +void Adafruit_USBD_Device::setProductDescriptor(const char *s) { _product = s; } @@ -276,17 +287,16 @@ uint16_t const* tud_descriptor_string_cb(uint8_t index) switch (index) { case 0: - // language = English - _desc_str[1] = 0x0409; + _desc_str[1] = USBDevice.getLanguageDescriptor(); chr_count = 1; break; case 1: - chr_count = strcpy_uni16(USBDevice.getManufacturer(), _desc_str + 1, 32); + chr_count = strcpy_uni16(USBDevice.getManufacturerDescriptor(), _desc_str + 1, 32); break; case 2: - chr_count = strcpy_uni16(USBDevice.getProduct(), _desc_str + 1, 32); + chr_count = strcpy_uni16(USBDevice.getProductDescriptor(), _desc_str + 1, 32); break; case 3: diff --git a/cores/arduino/Adafruit_TinyUSB_Core/Adafruit_USBD_Device.h b/cores/arduino/Adafruit_TinyUSB_Core/Adafruit_USBD_Device.h index 9fc4e73b2..4ea442077 100644 --- a/cores/arduino/Adafruit_TinyUSB_Core/Adafruit_USBD_Device.h +++ b/cores/arduino/Adafruit_TinyUSB_Core/Adafruit_USBD_Device.h @@ -48,6 +48,7 @@ class Adafruit_USBD_Device uint8_t _epin_count; uint8_t _epout_count; + uint16_t _language_id; const char *_manufacturer; const char *_product; @@ -60,10 +61,13 @@ class Adafruit_USBD_Device void setID(uint16_t vid, uint16_t pid); void setVersion(uint16_t bcd); - const char *getManufacturer(void) { return _manufacturer; } - void setManufacturer(const char *s); - const char *getProduct(void) { return _product; } - void setProduct(const char *s); + void setLanguageDescriptor(uint16_t language_id); + void setManufacturerDescriptor(const char *s); + void setProductDescriptor(const char *s); + + uint16_t getLanguageDescriptor (void) { return _language_id; } + const char *getManufacturerDescriptor (void) { return _manufacturer; } + const char *getProductDescriptor (void) { return _product; } bool begin(void);