mirror of https://github.com/ARMmbed/mbed-os.git
Fix USBCDC_ECM descriptors
Replace static arrays used for iMAC and config descriptor with class members Minor coding style fixespull/9443/head
parent
4e4653b7d4
commit
e7416db621
|
|
@ -301,7 +301,7 @@ void USBCDC_ECM::callback_state_change(DeviceState new_state)
|
||||||
const uint8_t *USBCDC_ECM::device_desc()
|
const uint8_t *USBCDC_ECM::device_desc()
|
||||||
{
|
{
|
||||||
uint8_t ep0_size = endpoint_max_packet_size(0x00);
|
uint8_t ep0_size = endpoint_max_packet_size(0x00);
|
||||||
uint8_t deviceDescriptorTemp[] = {
|
uint8_t device_descriptor_temp[] = {
|
||||||
DEVICE_DESCRIPTOR_LENGTH, // bLength
|
DEVICE_DESCRIPTOR_LENGTH, // bLength
|
||||||
DEVICE_DESCRIPTOR, // bDescriptorType
|
DEVICE_DESCRIPTOR, // bDescriptorType
|
||||||
0x00, 0x02, // bcdUSB 2.0
|
0x00, 0x02, // bcdUSB 2.0
|
||||||
|
|
@ -320,9 +320,9 @@ const uint8_t *USBCDC_ECM::device_desc()
|
||||||
STRING_OFFSET_ISERIAL, // iSerialNumber
|
STRING_OFFSET_ISERIAL, // iSerialNumber
|
||||||
0x01 // bNumConfigurations
|
0x01 // bNumConfigurations
|
||||||
};
|
};
|
||||||
MBED_ASSERT(sizeof(deviceDescriptorTemp) == sizeof(deviceDescriptor));
|
MBED_ASSERT(sizeof(device_descriptor_temp) == sizeof(device_descriptor));
|
||||||
memcpy(deviceDescriptor, deviceDescriptorTemp, sizeof(deviceDescriptor));
|
memcpy(device_descriptor, device_descriptor_temp, sizeof(device_descriptor));
|
||||||
return deviceDescriptor;
|
return device_descriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8_t *USBCDC_ECM::string_iproduct_desc()
|
const uint8_t *USBCDC_ECM::string_iproduct_desc()
|
||||||
|
|
@ -337,7 +337,7 @@ const uint8_t *USBCDC_ECM::string_iproduct_desc()
|
||||||
|
|
||||||
const uint8_t *USBCDC_ECM::string_iconfiguration_desc()
|
const uint8_t *USBCDC_ECM::string_iconfiguration_desc()
|
||||||
{
|
{
|
||||||
static uint8_t string_imac_addr[26] = {0};
|
uint8_t string_imac_addr_temp[26] = {0};
|
||||||
const char unicodes[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
const char unicodes[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
||||||
'A', 'B', 'C', 'D', 'E', 'F'
|
'A', 'B', 'C', 'D', 'E', 'F'
|
||||||
};
|
};
|
||||||
|
|
@ -345,14 +345,17 @@ const uint8_t *USBCDC_ECM::string_iconfiguration_desc()
|
||||||
|
|
||||||
mbed_mac_address(mac);
|
mbed_mac_address(mac);
|
||||||
|
|
||||||
string_imac_addr[0] = 26;
|
string_imac_addr_temp[0] = 26;
|
||||||
string_imac_addr[1] = STRING_DESCRIPTOR;
|
string_imac_addr_temp[1] = STRING_DESCRIPTOR;
|
||||||
/* Convert MAC address to USB CDC string format */
|
/* Convert MAC address to USB CDC string format */
|
||||||
for (int i = 0; i < 6; i++) {
|
for (int i = 0; i < 6; i++) {
|
||||||
string_imac_addr[i * 4 + 2] = unicodes[mac[i] >> 4];
|
string_imac_addr_temp[i * 4 + 2] = unicodes[mac[i] >> 4];
|
||||||
string_imac_addr[i * 4 + 4] = unicodes[mac[i] & 0xF];
|
string_imac_addr_temp[i * 4 + 4] = unicodes[mac[i] & 0xF];
|
||||||
}
|
}
|
||||||
return string_imac_addr;
|
|
||||||
|
MBED_ASSERT(sizeof(string_imac_addr_temp) == sizeof(_string_imac_addr));
|
||||||
|
memcpy(_string_imac_addr, string_imac_addr_temp, sizeof(string_imac_addr_temp));
|
||||||
|
return _string_imac_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8_t *USBCDC_ECM::string_iserial_desc()
|
const uint8_t *USBCDC_ECM::string_iserial_desc()
|
||||||
|
|
@ -373,7 +376,7 @@ const uint8_t *USBCDC_ECM::configuration_desc(uint8_t index)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const uint8_t configDescriptor[] = {
|
uint8_t config_descriptor_temp[] = {
|
||||||
// configuration descriptor, USB spec 9.6.3, page 264-265, Table 9-10
|
// configuration descriptor, USB spec 9.6.3, page 264-265, Table 9-10
|
||||||
0x09, // bLength
|
0x09, // bLength
|
||||||
CONFIGURATION_DESCRIPTOR, // bDescriptorType
|
CONFIGURATION_DESCRIPTOR, // bDescriptorType
|
||||||
|
|
@ -469,7 +472,10 @@ const uint8_t *USBCDC_ECM::configuration_desc(uint8_t index)
|
||||||
(uint8_t) MSB(MAX_PACKET_SIZE_BULK), // wMaxPacketSize (MSB)
|
(uint8_t) MSB(MAX_PACKET_SIZE_BULK), // wMaxPacketSize (MSB)
|
||||||
0 // bInterval
|
0 // bInterval
|
||||||
};
|
};
|
||||||
return configDescriptor;
|
|
||||||
|
MBED_ASSERT(sizeof(config_descriptor_temp) == sizeof(_config_descriptor));
|
||||||
|
memcpy(_config_descriptor, config_descriptor_temp, sizeof(config_descriptor_temp));
|
||||||
|
return _config_descriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
void USBCDC_ECM::_int_callback()
|
void USBCDC_ECM::_int_callback()
|
||||||
|
|
|
||||||
|
|
@ -183,7 +183,7 @@ protected:
|
||||||
*/
|
*/
|
||||||
virtual void callback_reset();
|
virtual void callback_reset();
|
||||||
|
|
||||||
uint8_t deviceDescriptor[18];
|
uint8_t device_descriptor[18];
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
@ -191,6 +191,9 @@ private:
|
||||||
usb_ep_t _bulk_in;
|
usb_ep_t _bulk_in;
|
||||||
usb_ep_t _bulk_out;
|
usb_ep_t _bulk_out;
|
||||||
|
|
||||||
|
uint8_t _config_descriptor[80];
|
||||||
|
uint8_t _string_imac_addr[26];
|
||||||
|
|
||||||
uint8_t _bulk_buf[MAX_PACKET_SIZE_BULK];
|
uint8_t _bulk_buf[MAX_PACKET_SIZE_BULK];
|
||||||
uint32_t _bulk_buf_size;
|
uint32_t _bulk_buf_size;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue