Я хотел бы добавить строку в мой проект HID (для хранения информации о версии прошивки). Я читал о строковых дескрипторах https://www.beyondlogic.org/usbnutshell/usb5.shtml, и я понимаю, что дескриптор конфигурации или дескриптор отчета перечисляет индекс, который указывает на строку. Строка хранится где-то еще. и затем хост может запросить строку по индексу через запрос «дескриптора» «get» для строки.
Хотя я довольно озадачен реализацией. Я просматривал примеры библиотек STM32F04 (доступные для загрузки из STM или дублированные здесь https://github.com/caozoux/arm/blob/master/stm32/STM32F0x2_USB-FS-Device_Lib%20V1.0.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c) и нашел это:
/* USB DFU device Configuration Descriptor */
const uint8_t usbd_dfu_CfgDesc[USB_DFU_CONFIG_DESC_SIZ] =
{
0x09, /* bLength: Configuration Descriptor size */
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
USB_DFU_CONFIG_DESC_SIZ,
/* wTotalLength: Bytes returned */
0x00,
0x01, /*bNumInterfaces: 1 interface*/
0x01, /*bConfigurationValue: Configuration value*/
0x02, /*iConfiguration: Index of string descriptor describing the configuration*/
0xC0, /*bmAttributes: bus powered and Supports Remote Wakeup */
0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/
/* 09 */
, который дает индекс iConfiguration в 0x02. Затем я искал все файлы другой ссылки на 0x02 или строку конфигурации и ничего не нашел. Я ожидал найти какой-то массив строк, которые можно индексировать индексом 0x02 или хотя бы строкой конфигурации. Возможно, файлы примеров неполные, но, скорее всего, я просто не ищу нужные вещи.
Мои вопросы: во-первых, мое основное предположение о том, как строковые дескрипторы работают правильно? И если да, то как и где обычно хранятся строки? Любые ссылки на примеры реализации также будут очень полезны!