Merge pull request #351 from adafruit/fix-sendStringDescriptor
fix sendStringDescriptor() maxlen uitn8_t to uint32_t
This commit is contained in:
commit
21ac7624c9
2 changed files with 6 additions and 4 deletions
|
|
@ -85,7 +85,7 @@ public:
|
||||||
uint32_t sendControl(int /* ep */, const void *data, uint32_t len) { return sendControl(data, len); }
|
uint32_t sendControl(int /* ep */, const void *data, uint32_t len) { return sendControl(data, len); }
|
||||||
uint32_t recvControl(void *data, uint32_t len);
|
uint32_t recvControl(void *data, uint32_t len);
|
||||||
uint32_t sendConfiguration(uint32_t maxlen);
|
uint32_t sendConfiguration(uint32_t maxlen);
|
||||||
bool sendStringDescriptor(const uint8_t *string, uint8_t maxlen);
|
bool sendStringDescriptor(const uint8_t *string, uint32_t maxlen);
|
||||||
void initControl(int end);
|
void initControl(int end);
|
||||||
uint8_t SendInterfaces(uint32_t* total);
|
uint8_t SendInterfaces(uint32_t* total);
|
||||||
void packMessages(bool val);
|
void packMessages(bool val);
|
||||||
|
|
|
||||||
|
|
@ -110,12 +110,12 @@ static EPHandler *epHandlers[7] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
|
||||||
// Send a USB descriptor string. The string is stored as a
|
// Send a USB descriptor string. The string is stored as a
|
||||||
// plain ASCII string but is sent out as UTF-16 with the
|
// plain ASCII string but is sent out as UTF-16 with the
|
||||||
// correct 2-byte prefix
|
// correct 2-byte prefix
|
||||||
bool USBDeviceClass::sendStringDescriptor(const uint8_t *string, uint8_t maxlen)
|
bool USBDeviceClass::sendStringDescriptor(const uint8_t *string, uint32_t maxlen)
|
||||||
{
|
{
|
||||||
if (maxlen < 2)
|
if (maxlen < 2)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
uint8_t buffer[maxlen];
|
uint8_t* buffer = (uint8_t*)malloc(maxlen);
|
||||||
buffer[0] = strlen((const char*)string) * 2 + 2;
|
buffer[0] = strlen((const char*)string) * 2 + 2;
|
||||||
buffer[1] = 0x03;
|
buffer[1] = 0x03;
|
||||||
|
|
||||||
|
|
@ -126,7 +126,9 @@ bool USBDeviceClass::sendStringDescriptor(const uint8_t *string, uint8_t maxlen)
|
||||||
buffer[i] = 0;
|
buffer[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return USBDevice.sendControl(buffer, i);
|
bool ret = USBDevice.sendControl(buffer, i);
|
||||||
|
free(buffer);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _dry_run = false;
|
bool _dry_run = false;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue