виндовом драйвере USB CDC (usbser.sys), которая заключается в том, что при обновлении состояния RTS драйвер не отправляет в USB-устройство команду set_control_line_state? То есть, при обновлении состояния DTR - отправляется set_control_line_state c правильными стейтами для DTR и RTS, а при обновлении одного только RTS не происходит вообще ничего… Интересен workaround именно на уровне прошивки USB устройства.
Отвечаю сам себе: нет :) Я дизассемблировал usbser.sys на Windows 10 и посмотрел в чем там дело. Благо у MS есть отладочные символы для этого драйвера, поэтому разобраться что там где - тривиально. Так вот, надежды нет: если посмотреть на функции SetBreak или SetClrDtr, то там в какой-то момент происходит "call ClassVendorCommand" и это та функция, которая шлет нужный нам SetControlLineState. А вот пара функций SetRts и ClrRts такого вызова внутри себя просто не содержит. То есть, выглядит все так, что просто забыли дописать вызов функции и все. Такая вот типичная и банальная бага, никакой магии.
Обсуждают сегодня