Skip to content

Commit e7416db

Browse files
committed
Fix USBCDC_ECM descriptors
Replace static arrays used for iMAC and config descriptor with class members Minor coding style fixes
1 parent 4e4653b commit e7416db

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

usb/device/USBCDC_ECM/USBCDC_ECM.cpp

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ void USBCDC_ECM::callback_state_change(DeviceState new_state)
301301
const uint8_t *USBCDC_ECM::device_desc()
302302
{
303303
uint8_t ep0_size = endpoint_max_packet_size(0x00);
304-
uint8_t deviceDescriptorTemp[] = {
304+
uint8_t device_descriptor_temp[] = {
305305
DEVICE_DESCRIPTOR_LENGTH, // bLength
306306
DEVICE_DESCRIPTOR, // bDescriptorType
307307
0x00, 0x02, // bcdUSB 2.0
@@ -320,9 +320,9 @@ const uint8_t *USBCDC_ECM::device_desc()
320320
STRING_OFFSET_ISERIAL, // iSerialNumber
321321
0x01 // bNumConfigurations
322322
};
323-
MBED_ASSERT(sizeof(deviceDescriptorTemp) == sizeof(deviceDescriptor));
324-
memcpy(deviceDescriptor, deviceDescriptorTemp, sizeof(deviceDescriptor));
325-
return deviceDescriptor;
323+
MBED_ASSERT(sizeof(device_descriptor_temp) == sizeof(device_descriptor));
324+
memcpy(device_descriptor, device_descriptor_temp, sizeof(device_descriptor));
325+
return device_descriptor;
326326
}
327327

328328
const uint8_t *USBCDC_ECM::string_iproduct_desc()
@@ -337,22 +337,25 @@ const uint8_t *USBCDC_ECM::string_iproduct_desc()
337337

338338
const uint8_t *USBCDC_ECM::string_iconfiguration_desc()
339339
{
340-
static uint8_t string_imac_addr[26] = {0};
340+
uint8_t string_imac_addr_temp[26] = {0};
341341
const char unicodes[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
342342
'A', 'B', 'C', 'D', 'E', 'F'
343343
};
344344
char mac[6];
345345

346346
mbed_mac_address(mac);
347347

348-
string_imac_addr[0] = 26;
349-
string_imac_addr[1] = STRING_DESCRIPTOR;
348+
string_imac_addr_temp[0] = 26;
349+
string_imac_addr_temp[1] = STRING_DESCRIPTOR;
350350
/* Convert MAC address to USB CDC string format */
351351
for (int i = 0; i < 6; i++) {
352-
string_imac_addr[i * 4 + 2] = unicodes[mac[i] >> 4];
353-
string_imac_addr[i * 4 + 4] = unicodes[mac[i] & 0xF];
352+
string_imac_addr_temp[i * 4 + 2] = unicodes[mac[i] >> 4];
353+
string_imac_addr_temp[i * 4 + 4] = unicodes[mac[i] & 0xF];
354354
}
355-
return string_imac_addr;
355+
356+
MBED_ASSERT(sizeof(string_imac_addr_temp) == sizeof(_string_imac_addr));
357+
memcpy(_string_imac_addr, string_imac_addr_temp, sizeof(string_imac_addr_temp));
358+
return _string_imac_addr;
356359
}
357360

358361
const uint8_t *USBCDC_ECM::string_iserial_desc()
@@ -373,7 +376,7 @@ const uint8_t *USBCDC_ECM::configuration_desc(uint8_t index)
373376
return NULL;
374377
}
375378

376-
static const uint8_t configDescriptor[] = {
379+
uint8_t config_descriptor_temp[] = {
377380
// configuration descriptor, USB spec 9.6.3, page 264-265, Table 9-10
378381
0x09, // bLength
379382
CONFIGURATION_DESCRIPTOR, // bDescriptorType
@@ -469,7 +472,10 @@ const uint8_t *USBCDC_ECM::configuration_desc(uint8_t index)
469472
(uint8_t) MSB(MAX_PACKET_SIZE_BULK), // wMaxPacketSize (MSB)
470473
0 // bInterval
471474
};
472-
return configDescriptor;
475+
476+
MBED_ASSERT(sizeof(config_descriptor_temp) == sizeof(_config_descriptor));
477+
memcpy(_config_descriptor, config_descriptor_temp, sizeof(config_descriptor_temp));
478+
return _config_descriptor;
473479
}
474480

475481
void USBCDC_ECM::_int_callback()

usb/device/USBCDC_ECM/USBCDC_ECM.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,17 @@ class USBCDC_ECM: public USBDevice {
183183
*/
184184
virtual void callback_reset();
185185

186-
uint8_t deviceDescriptor[18];
186+
uint8_t device_descriptor[18];
187187

188188
private:
189189

190190
usb_ep_t _int_in;
191191
usb_ep_t _bulk_in;
192192
usb_ep_t _bulk_out;
193193

194+
uint8_t _config_descriptor[80];
195+
uint8_t _string_imac_addr[26];
196+
194197
uint8_t _bulk_buf[MAX_PACKET_SIZE_BULK];
195198
uint32_t _bulk_buf_size;
196199

0 commit comments

Comments
 (0)