Skip to content

Commit 6a626f1

Browse files
committed
PluggableUSB: modules modify bcdDevice value
This should solve driver mismatch in Windows when a different USBDevice functionality is added/removed. Based on this suggestion: arduino-libraries/Keyboard#41 (comment)
1 parent 208508e commit 6a626f1

File tree

4 files changed

+14
-0
lines changed

4 files changed

+14
-0
lines changed

cores/arduino/USB/PluggableUSBDevice.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ bool arduino::PluggableUSBDevice::plug(internal::PluggableUSBModule*node)
9595

9696
node->pluggedInterface = lastIf;
9797
lastIf += node->numInterfaces;
98+
product_release += node->getProductVersion();
9899
return true;
99100
}
100101

cores/arduino/USB/PluggableUSBDevice.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class PluggableUSBModule {
5858
virtual void callback_set_interface(uint16_t interface, uint8_t alternate);
5959
virtual void init(EndpointResolver& resolver);
6060
virtual const uint8_t *string_iinterface_desc();
61+
virtual uint8_t getProductVersion();
6162

6263
uint8_t pluggedInterface;
6364

cores/arduino/USB/USBCDC.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,11 @@ const uint8_t *USBCDC::string_iinterface_desc()
489489
return (const uint8_t *)extraDescriptor;
490490
}
491491

492+
uint8_t USBCDC::getProductVersion()
493+
{
494+
return 1;
495+
}
496+
492497
const uint8_t *USBCDC::string_iproduct_desc()
493498
{
494499
static const uint8_t stringIproductDescriptor[] = {

cores/arduino/USB/USBCDC.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,13 @@ class USBCDC: public internal::PluggableUSBModule{
144144
*/
145145
virtual const uint8_t *string_iproduct_desc();
146146

147+
/*
148+
* Get string product version
149+
*
150+
* Every module must declare a different number
151+
*/
152+
virtual uint8_t getProductVersion();
153+
147154
/*
148155
* Get string interface descriptor
149156
*

0 commit comments

Comments
 (0)