Динамический USB HID дискриптор
- Войдите на сайт для отправки комментариев
Добрый день всем, уважаемые! В данный момент работаю на базе Ардуино и возник такой нестандартный вопрос - возможна ли в принципе реализация Динамического USB HID дискриптора устройства на базе Arduino (например Leonardo)? Что натолкнуло на мысль - увидел в просторах интернета следующий код - выдержка из .cpp где стандартно описывается HID дискриптор:
0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x30, // USAGE (X) 0x09, 0x31, // USAGE (Y) 0x09, 0x38, // USAGE (Wheel) #ifdef ABSOLUTE_MOUSE_MODE 0x15, 0x01, // LOGICAL_MINIMUM (1) <<<< This allows us to talk to any display resolution 0x25, 0x64, // LOGICAL_MAXIMUM (100) <<<< as though it was 100x100 pixels 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x03, // REPORT_COUNT (3) 0x81, 0x02, // INPUT (Data,Var,Abs) <<<< This allows us to moveTo absolute positions #else 0x15, 0x81, // LOGICAL_MINIMUM (-127) 0x25, 0x7f, // LOGICAL_MAXIMUM (127) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x03, // REPORT_COUNT (3) 0x81, 0x06, // INPUT (Data,Var,Rel) #endif 0xc0, // END_COLLECTION 0xc0, // END_COLLECTION
, где в зависимости от ABSOLUTE_MOUSE_MODE дискриптор будет разным. Однако, хотелось бы понять, каким образом из вне можно дать понять Ардуино, какую часть дискриптора грузить при следующем ребуте девайса. Самым простым решением было бы следить за каким-либо ПИНом и его замыканием и, в зависимости от этого, уже применять условие. Хотелось бы спросить у знающих людей, возможно ли такое реализовать в принципе. Также уточню, что триггером может выступать не обязательно ПИН платы, главное, чтоб это мог задать сам пользователь. Спасибо!
Возможно. Есть такая волшебная конструкция в программировании - оператор if. Воспользуйся им.
Спасибо. Могу ли я опрашивать состояние пинов вне стандартного скетча (.ino), прописывая опрос непосредственно в исходниках?
Можете
Благодарю, буду пробовать!
А что использовать EEPROM и хранить там дискриптор(ы) запретили уже ?
А что использовать EEPROM и хранить там дискриптор(ы) запретили уже ?
Спасибо. Я думаю обязательно рассмотрю вариант хранения, например, 2 различных дескриптора в EEPROM, но в данный момент пытаюсь отработать вариант считывания ПИНА из исходника соответствующей библиотеки (.cpp) и в зависимоти от результата выбора дескриптора. Этот вариант наиболее удобен, на мой взгляд.
Вы же нас не посвятили в суть своей разработки ...
Вы же нас не посвятили в суть своей разработки ...
Суть проста. Есть мышь на Леонардо, задача предоставить пользователю возможность путем замыкания ПИна самостоятельно выбирать режим работы USB HID мыши после ребута (относительная/абсолютная система смещения координат). По факту задача свелась в выборе по джамперу того или иного USB HID дескриптора.