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 fff8541

Browse files
committed
remove static iSerial buffers
1 parent 8d01a44 commit fff8541

File tree

6 files changed

+15
-15
lines changed

6 files changed

+15
-15
lines changed

‎hardware/arduino/avr/cores/arduino/PluggableUSB.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,15 @@ int PluggableUSB_::getDescriptor(USBSetup& setup)
5050
return 0;
5151
}
5252

53-
char* PluggableUSB_::getShortName(void)
53+
uint8_t PluggableUSB_::getShortName(char* _iSerialNum, uint8_t max_len)
5454
{
55-
char* ret = 0;
56-
memset(_iSerialNum, 0, sizeof(_iSerialNum));
55+
uint8_t ret = 0;
56+
memset(_iSerialNum, 0, max_len);
5757
PluggableUSBModule* node;
58-
for (node = rootNode; node; node = node->next) {
59-
ret = node->getShortName();
60-
memcpy(&_iSerialNum[strlen(_iSerialNum)], ret, strlen(ret));
58+
for (node = rootNode; node && ret < max_len; node = node->next) {
59+
ret += node->getShortName(&_iSerialNum[ret]);
6160
}
62-
return _iSerialNum;
61+
return ret;
6362
}
6463

6564
bool PluggableUSB_::setup(USBSetup& setup)

‎hardware/arduino/avr/cores/arduino/PluggableUSB.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +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 char* getShortName(void) = 0;
38+
virtual uint8_t getShortName(char* name) { name[0] = 'A'+pluggedInterface; return1; }
3939

4040
uint8_t pluggedInterface;
4141
uint8_t pluggedEndpoint;
@@ -56,12 +56,11 @@ class PluggableUSB_ {
5656
int getInterface(uint8_t* interfaceCount);
5757
int getDescriptor(USBSetup& setup);
5858
bool setup(USBSetup& setup);
59-
char* getShortName(void);
59+
uint8_t getShortName(char* _iSerialNum, uint8_t max_len);
6060

6161
private:
6262
uint8_t lastIf;
6363
uint8_t lastEp;
64-
char _iSerialNum[20] = {0};
6564
PluggableUSBModule* rootNode;
6665
};
6766

‎hardware/arduino/avr/cores/arduino/USBCore.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,8 @@ bool SendDescriptor(USBSetup& setup)
504504
}
505505
else if (setup.wValueL == ISERIAL) {
506506
#ifdef PLUGGABLE_USB_ENABLED
507-
char* name = PluggableUSB().getShortName();
507+
char name[ISERIAL_MAX_LEN];
508+
PluggableUSB().getShortName(name, sizeof(name));
508509
return USB_SendStringDescriptor((uint8_t*)name, strlen(name), 0);
509510
#endif
510511
}

‎hardware/arduino/avr/cores/arduino/USBDesc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
#define USB_ENDPOINTS 5 // AtMegaxxU2
2525
#endif
2626

27+
#define ISERIAL_MAX_LEN 20
28+
2729
#define CDC_INTERFACE_COUNT 2
2830
#define CDC_ENPOINT_COUNT 3
2931

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,13 @@ int HID_::getDescriptor(USBSetup& setup)
5757
return total;
5858
}
5959

60-
char* HID_::getShortName()
60+
uint8_t HID_::getShortName(char* name)
6161
{
62-
static char name[7] = {0};
6362
char num[3];
6463
memcpy(name, "HID", 3);
6564
itoa(descriptorSize, num, 10);
6665
memcpy(&name[3], num, 3);
67-
return name;
66+
return strlen(name);
6867
}
6968

7069
void HID_::AppendDescriptor(HIDSubDescriptor *node)

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

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

101101
private:
102102
uint8_t epType[1];

0 commit comments

Comments
(0)

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