Ну так мой CDC предназначен для организации "общения" с МК.
В таком случае вам ни RTS/CTS/DTR биты не нужны, ни interrupt endpoint. Но они не нужны ВАМ. Не надо говорить, что они не нужны никому и никогда.
Ну и опять же переходник на COM-порт может быть побочной фичей типа "ноги свободные остались, почему бы и нет".
Я даже не CDC использую, т.к. мне не нравится /dev/ttyACMx в именовании + на мастдайках вроде бубунты по дефолту запущен modemd, который ACM пытается перехватить на себя и занимает порт.
На Debian тоже какая-то гадость его занимает. Но я вылечил это проще: выставил class/subclass/protocol в 2/2/0 вместо 2/2/1. Оно все равно отображается как /dev/ttyACM, но посторонние программы не лезут.
Хотя ваш вариант тоже интересный, надо будет его поковырять.
Вообще не представляю себе, зачем кому-то может понадобится HID, если только он не изготавливает кастомные клавы-мыши-джойстики.
Я тут недавно читал на него документацию, так там чего только нет! Ладно клавомыши, это все привыкли. Но там есть джойстик для танка и подводной лодки, есть индикатор активности жесткого диска и фиг поймешь чего еще. В общем-то всем рекомендую ознакомиться если не для практического использования, то хотя бы для поднятия настроения.
Ну и не стоит забывать про совсем нестандартные устройства, которым много данных не надо, но и писать ядерный драйвер лень. Я, например, пару лет назад делал таким способом переходник с научного вольтметра е-24 (он по COM-порту работает, да еще довольно заковыристым способом) на USB. Правда, делал на ATmega8. Почему бы и нет: скорости там нулевые, а кроссплатформенный драйвер писать все еще лень. А так оно работает себе потихоньку, никому не мешает.
Я же за ночь добился того, что можно с хоста (через HID Demonstrator пробовал) управлять светодиодом. Код получается вполне компактным, как и прошивка (2116Кб).
Хм, а у меня 2308 кБ для f103 и 2792 кБ для L151. Отсюда два вопроса: что в моем коде занимает столько места? И почему в коде для L151 оно занимает места еще больше? Хотя, конечно, сейчас я это ковырять не буду.