Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 775c82b

Browse files
committed
SAM: add iSerial USB field
1 parent b945df9 commit 775c82b

File tree

6 files changed

+34
-2
lines changed

6 files changed

+34
-2
lines changed

‎hardware/arduino/sam/cores/arduino/USB/PluggableUSB.cpp‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ int PluggableUSB_::getDescriptor(USBSetup& setup)
5252
return 0;
5353
}
5454

55+
void PluggableUSB_::getShortName(char *iSerialNum)
56+
{
57+
PluggableUSBModule* node;
58+
for (node = rootNode; node; node = node->next) {
59+
iSerialNum += node->getShortName(iSerialNum);
60+
}
61+
*iSerialNum = 0;
62+
}
63+
5564
bool PluggableUSB_::setup(USBSetup& setup)
5665
{
5766
PluggableUSBModule* node;

‎hardware/arduino/sam/cores/arduino/USB/PluggableUSB.h‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class PluggableUSBModule {
3535
virtual bool setup(USBSetup& setup) = 0;
3636
virtual int getInterface(uint8_t* interfaceCount) = 0;
3737
virtual int getDescriptor(USBSetup& setup) = 0;
38+
virtual uint8_t getShortName(char *name) { name[0] = 'A'+pluggedInterface; return 1; }
3839

3940
uint8_t pluggedInterface;
4041
uint8_t pluggedEndpoint;
@@ -55,6 +56,7 @@ class PluggableUSB_ {
5556
int getInterface(uint8_t* interfaceCount);
5657
int getDescriptor(USBSetup& setup);
5758
bool setup(USBSetup& setup);
59+
void getShortName(char *iSerialNum);
5860

5961
private:
6062
uint8_t lastIf;

‎hardware/arduino/sam/cores/arduino/USB/USBCore.cpp‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,10 @@ const uint8_t STRING_MANUFACTURER[12] = USB_MANUFACTURER;
9696

9797
// DEVICE DESCRIPTOR
9898
const DeviceDescriptor USB_DeviceDescriptor =
99-
D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1);
99+
D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,ISERIAL,1);
100100

101101
const DeviceDescriptor USB_DeviceDescriptorA =
102-
D_DEVICE(0xEF,0x02,0x01,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1);
102+
D_DEVICE(0xEF,0x02,0x01,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,ISERIAL,1);
103103

104104
const QualifierDescriptor USB_DeviceQualifier =
105105
D_QUALIFIER(0x00,0x00,0x00,64,1);
@@ -429,6 +429,13 @@ static bool USBD_SendDescriptor(USBSetup& setup)
429429
else if (setup.wValueL == IMANUFACTURER) {
430430
return USB_SendStringDescriptor(STRING_MANUFACTURER, setup.wLength);
431431
}
432+
else if (setup.wValueL == ISERIAL) {
433+
#ifdef PLUGGABLE_USB_ENABLED
434+
char name[ISERIAL_MAX_LEN];
435+
PluggableUSB().getShortName(name);
436+
return USB_SendStringDescriptor((uint8_t*)name, setup.wLength);
437+
#endif
438+
}
432439
else {
433440
return false;
434441
}

‎hardware/arduino/sam/cores/arduino/USB/USBDesc.h‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@
4242
#define CDC_TX CDC_ENDPOINT_IN
4343
#endif
4444

45+
#define ISERIAL_MAX_LEN 20
46+
4547
#define IMANUFACTURER 1
4648
#define IPRODUCT 2
49+
#define ISERIAL 3
4750

4851
#endif /* __USBDESC_H__ */

‎hardware/arduino/sam/libraries/HID/HID.cpp‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,16 @@ int HID_::getDescriptor(USBSetup& setup)
5757
return total;
5858
}
5959

60+
uint8_t HID_::getShortName(char *name)
61+
{
62+
name[0] = 'H';
63+
name[1] = 'I';
64+
name[2] = 'D';
65+
name[3] = 'A' + (descriptorSize & 0x0F);
66+
name[4] = 'A' + ((descriptorSize >> 4) & 0x0F);
67+
return 5;
68+
}
69+
6070
void HID_::AppendDescriptor(HIDSubDescriptor *node)
6171
{
6272
if (!rootNode) {

‎hardware/arduino/sam/libraries/HID/HID.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ class HID_ : public PluggableUSBModule
9696
int getInterface(uint8_t* interfaceCount);
9797
int getDescriptor(USBSetup& setup);
9898
bool setup(USBSetup& setup);
99+
uint8_t getShortName(char* name);
99100

100101
private:
101102
uint32_t epType[1];

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /