У меня есть устройство HID, и я пытаюсь добавить две части информации для чтения через USB. Во-первых, я хочу иметь возможность прочитать строку версии прошивки, которую я создаю во время компиляции. Во-вторых, я хочу иметь возможность установить роль устройства с помощью двух перемычек и отправить 0,1,2,3. Первая половина каждого из них работает нормально, теперь я застрял в том, где именно я должен разместить эту информацию, чтобы иметь возможность прочитать ее на стороне хоста.
Я рассмотрел возможность добавления ее в качестве данныхНапечатайте как кнопка или подобное, но это кажется очень хакерским. Я также рассмотрел вопрос об изменении PID или строки Product, но они чувствуют, что они должны оставаться постоянными при обновлении прошивки. Сейчас я добавляю пользовательскую строку в дескриптор устройства.
const uint8_t USBD_DeviceDesc[USB_SIZ_DEVICE_DESC] =
{
0x12, /*bLength */
USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
0x00, /*bcdUSB */
0x02,
0x00, /*bDeviceClass*/
0x00, /*bDeviceSubClass*/
0x00, /*bDeviceProtocol*/
USB_MAX_EP0_SIZE, /*bMaxPacketSize*/
LOBYTE(USBD_VID), /*idVendor*/
HIBYTE(USBD_VID), /*idVendor*/
LOBYTE(USBD_PID), /*idProduct*/
HIBYTE(USBD_PID), /*idProduct*/
0x00, /*bcdDevice fw revision */
0x01,
USBD_IDX_MFC_STR, /*Index of manufacturer string*/
USBD_IDX_PRODUCT_STR, /*Index of product string*/
USBD_IDX_SERIAL_STR, /*Index of serial number string*/
USBD_CFG_MAX_NUM /*bNumConfigurations*/
} ; /* USB_DeviceDescriptor */
И тогда я бы добавил что-то вроде:
USBD_IDX_USR_STR /*Index of custom user string*/
Было бы это приемлемо? И если да, как я могу сообщить хосту, что означает этот новый байт в дескрипторе устройства? Существует ли какой-либо мета-дескриптор, определяющий смещение байтов каждого фрагмента дескриптора устройства?
Если это недопустимо, куда я должен поместить строку, например версию или роль прошивки?