Накидал библиотеку шаблонных классов на основе списка типов для определения дескрипторов USB. Код и примеры тут.
Что мы получаем по сравнению обычным и/или макросным подходом: 1. Всё поля типизированы. Нарушить формат дескрипторов проблематично. 2. Автоматическое вычисления размеров, количества интерфейсов и т.д. 3. Автоматически заполняемые и вычисляемые поля скрыты, что улучшает восприятие данных. 4. Проверки на корректность данных, дублирование интерфейсов и конечных точек, диапазон значений параметров и т.д. 5. Из дескрипторов легко "вытащить" на этапе компиляции список интерфейсов или конечных точек. Это можно использовать при инициализации USB-модулей контроллера.
Работающие примеры можно посмотреть в Compiler Explorer для С++17 или C++20
Тут приведу пример дескриптора конфигурации составного устройства из двух CDC. Спойлер
INTERFACE // Interface - CDC Communication < bInterfaceNumber<first_if>, bAlternateSetting<0>, bInterfaceClass<2>, // Communications and CDC Control bInterfaceSubClass<2>, // Abstract Control Model bInterfaceProtocol<1>, // AT Commands defined by ITU-T V.250 etc iInterface<iString>,
Круто. Иногда, глядя на такое, я уж грешным делом подумываю: а не начать ли изучать С++? Но потом, вспомнив, насколько это сложный ЯП, передумываю!
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
И? Писанина ради писанины, графомания от нефик делать. Обычно, тот кто сам пишет дескриптор, тот понимает, какие поля чего должны содержать, а ошибки допускает только невнимательный.
Цитата:
насколько это сложный ЯП,
Да ничего там слишком сложного нет. Просто применять его надо более достойно, чем графомания с дескрипторами. Есть '10' типа людей - которые не используют возможности ++ где надо, и те, кто сует графоманию там, где не нужно.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
А то, GPIO - нельзя. Любой джедай должен в 3 ночи проснуться и на память все биты регистров 100500 разных контроллеров выдать.
USB дескрипторы - тоже нельзя. Будь добр сотни байт врукопашную пахать. И только попробуй быть невнимательным и ошибись - сразу из страны розовых пони выгонят.
Давай сразу весь список, где ещё недостойно, а то мы ведь не знаем.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Да потому что это должно быть оформлено в виде приложения-утилиты с GUI, а на выходе должен быть уже короткий готовый список дескрипторов, без лишней воды. Вот тогда будет толк, потому что это уже по-взрослому. Твою бы энергию да в правильное русло. А то графомания какаято без дела.
Где-то я это уже слышал. У каждого клона по графическому конфигуратору на каждый чих, только он их никому не покажет.
Только вот как дескриптор в виде массива мёртвых байт использовать в программе? Тут же есть живые интерфейсы и конечные точки - бери да используй их по назначению.
Да потому что это должно быть оформлено в виде приложения-утилиты с GUI
Это ещё зачем? Достаточно указать требования к версии компилятора(ов), составу и версиям библиотек, необходимых для сборки, плюс примеры использования. И не забыть о списке МК, на которых это всё должно работать и список МК, на которых проверено. ИМХО, этого достаточно для осознанного использования. А всякие генераторы и ГУИ- нафиг. Цени и уважай время разработчиков, и не требуй лишнего. Пусть они его потратят на что-нибудь ещё, что может оказаться полезным окружающим.
Такое может говорить лишь человек, вообще не имеющий понятия, что такое С++!!! Видел я "знатоков С++", которые писали на С, но файлы обзывали cpp и компилировали их g++… Чтобы нормально на С++ писать, нужно не только минимум лет 5 на его изучение потратить, но и регулярно читать о новинках и применять их. Мне такое нафиг не нужно. А еще меня бесит, что пять страничек кода на С++ может собираться аж 10 секунд — у меня столько времени даже под 100тыс строк на С не собирается!
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения