File tree Expand file tree Collapse file tree 6 files changed +15
-15
lines changed
Expand file tree Collapse file tree 6 files changed +15
-15
lines changed Original file line number Diff line number Diff 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
6564bool PluggableUSB_::setup (USBSetup& setup)
Original file line number Diff line number Diff 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; return 1 ; }
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
6161private:
6262 uint8_t lastIf;
6363 uint8_t lastEp;
64- char _iSerialNum[20 ] = {0 };
6564 PluggableUSBModule* rootNode;
6665};
6766
Original file line number Diff line number Diff 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 }
Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff 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
7069void HID_::AppendDescriptor (HIDSubDescriptor *node)
Original file line number Diff line number Diff 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
101101private:
102102 uint8_t epType[1 ];
You can’t perform that action at this time.
0 commit comments