Поиск

Допиливание «эмулятора» PL2303


Почти добил нормальный USB CDC на STM32F0x2. Решил проблему с отправкой слишком большого потока данных, «причесал» код (заменил уйму if/else if на switch). Вот только вылезла непонятная ошибка: если в обработчике linecoding_handler сразу выводить show_new_lc() (отображение новых параметров), то появляется ругань на vendor_write:

pl2303 ttyUSB1: pl2303_vendor_write - failed to write [0000]: -32

но если же я делаю, как сейчас (т.е. вывожу эти данные вне прерывания USB), появляется другая ругань:

pl2303 ttyUSB1: pl2303_set_line_request - failed: -32

Однако, ioctl на смену режима работы не возвращает ошибку. Долго втыкал в код модуля pl2303.c, но так и не понял, каким образом небольшая задержка может в одном случае возвращать ошибку на vendor_write, а в другом случае — на set_line_request!
Ну да ладно, если кто подскажет, как это исправить — хорошо. Нет — все равно оно превосходно работает, и занимает сравнительно немного места. Остается лишь на STM32F103 портировать.
На игровых приставках не проверял, все равно я с их прошивками не работаю. Возможно, будет даже на них работать. eddy_em.livejournal.com

Добавить комментарий