increase buffer size for USB strings, check string length
This commit is contained in:
parent
5995f84822
commit
0232893611
@ -821,12 +821,16 @@ void USBD_CtlError( USBD_HandleTypeDef *pdev ,
|
|||||||
* @param len : descriptor length
|
* @param len : descriptor length
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len)
|
void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t unicode_size, uint16_t *len)
|
||||||
{
|
{
|
||||||
uint8_t idx = 0U;
|
uint8_t idx = 0U;
|
||||||
|
|
||||||
if (desc != NULL)
|
if (desc != NULL)
|
||||||
{
|
{
|
||||||
|
if ((idx + 4) >= unicode_size)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
*len = (uint16_t)USBD_GetLen(desc) * 2U + 2U;
|
*len = (uint16_t)USBD_GetLen(desc) * 2U + 2U;
|
||||||
unicode[idx++] = *(uint8_t *)(void *)len;
|
unicode[idx++] = *(uint8_t *)(void *)len;
|
||||||
unicode[idx++] = USB_DESC_TYPE_STRING;
|
unicode[idx++] = USB_DESC_TYPE_STRING;
|
||||||
|
@ -108,7 +108,7 @@ void USBD_CtlError (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
|||||||
|
|
||||||
void USBD_ParseSetupRequest (USBD_SetupReqTypedef *req, uint8_t *pdata);
|
void USBD_ParseSetupRequest (USBD_SetupReqTypedef *req, uint8_t *pdata);
|
||||||
|
|
||||||
void USBD_GetString (uint8_t *desc, uint8_t *unicode, uint16_t *len);
|
void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t unicode_size, uint16_t *len);
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -108,7 +108,7 @@ const uint8_t USBD_LangIDDesc[USB_LEN_LANGID_STR_DESC]=
|
|||||||
HIBYTE(USBD_LANGID_STRING),
|
HIBYTE(USBD_LANGID_STRING),
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t USBD_StrDesc[32];
|
uint8_t USBD_StrDesc[48];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Returns the device descriptor.
|
* @brief Returns the device descriptor.
|
||||||
@ -142,7 +142,7 @@ uint8_t *USBD_HID_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
|
|||||||
*/
|
*/
|
||||||
uint8_t *USBD_HID_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
|
uint8_t *USBD_HID_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
|
||||||
{
|
{
|
||||||
USBD_GetString((uint8_t *)USBD_PRODUCT_FS_STRING, USBD_StrDesc, length);
|
USBD_GetString((uint8_t *)USBD_PRODUCT_FS_STRING, USBD_StrDesc, sizeof(USBD_StrDesc), length);
|
||||||
return USBD_StrDesc;
|
return USBD_StrDesc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,7 +154,7 @@ uint8_t *USBD_HID_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length
|
|||||||
*/
|
*/
|
||||||
uint8_t *USBD_HID_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
|
uint8_t *USBD_HID_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
|
||||||
{
|
{
|
||||||
USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length);
|
USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, sizeof(USBD_StrDesc), length);
|
||||||
return USBD_StrDesc;
|
return USBD_StrDesc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,6 +192,6 @@ uint8_t *USBD_HID_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
USBD_GetString((uint8_t *)uuid_str, USBD_StrDesc, length);
|
USBD_GetString((uint8_t *)uuid_str, USBD_StrDesc, sizeof(USBD_StrDesc), length);
|
||||||
return USBD_StrDesc;
|
return USBD_StrDesc;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user