hd44780 0 29 ноября, 2016 Опубликовано 29 ноября, 2016 · Жалоба Работает больше года в 24\7 . Проблемы отваливания решил отслеживанием ошибки и повторной энумерацией, как это сделано в винде. Ну реенумерацию (реинит хоста) я запущу, эти механизмы у меня уже есть, запускается автоматически по спец флажку, но как отловить отваливание? Вставить в тот if какой-то флажок? Кусок if ( p_hid_data -> start_toggle == 1 ) /* handle data once */ { p_hid_data -> start_toggle = 0; p_hid_data -> HID_Machine.cb->Decode ( p_hid_data -> HID_Machine.buff ); } вызывается только когда мышу двигают. Я вроде не замечал, чтобы у меня про сдыхании мыши вызывался обработчик USBH_USR_DeviceDisconnected (устройство отключилось от хоста). Иначе бы хост реинитился бы. Он вызывается только если я мышу вообще выдёргиваю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 30 ноября, 2016 Опубликовано 30 ноября, 2016 (изменено) · Жалоба вызывается только когда мышу двигают. Конкретно здесь не подскажу, у меня контроллер EHCI, но по сути, мышь работает в режиме interrupt, скорость запроса репортов определяется хостом, у меня 5 мсек, причем не зависит от того, что я с мышью делаю, когда отваливается, контроллер дает ошибку обмена или запроса, ее отлавливаю и на обработчик... ЗЫ. Можете проверить свою мышь usb luzerом, у меня, в зависимости от мыши, происходили отвалы раз в час, а может и чаще, и сравните с контроллером, если винда работает без отвалов, ищите ошибку у себя... ЗЫЫ. На практике, проводные мыши у меня вообще не отваливались (правда, они были не совсем уж говно logitech и defender), а вот радио - почем зря, особенно rapoo и smartbay... Изменено 30 ноября, 2016 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 30 ноября, 2016 Опубликовано 30 ноября, 2016 · Жалоба угу. спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 3 декабря, 2016 Опубликовано 3 декабря, 2016 · Жалоба Нашёл я, как это отловить, добавил туда свой флажок. В итоге курсор мыши при отвале лишь замирает менее чем на полсекунды (пока реинит хост не пройдёт), после чего нормальная работа возобновляется. Самое интересное, что USB ядро такие случаи отрабатывает абсолютно корректно, а в USB HID драйвер просто забыли добавить обработку этого случая. Хотя может забыли вполне сознательно, т.к. у них даже при простом выдёргивании девайса хост тупо виснет и не перезапускается. Пока проблема решена, понаблюдаю за стабильностью. mantech , спасибо за наводку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться