Libusb обнаружил недействительное устройство после события «мягкое отключение» - PullRequest
0 голосов
/ 29 октября 2019

У меня есть устройство, с которым я могу общаться с помощью libusb без проблем. Проблема заключается в том, что у этого устройства есть пути кода, которые при отправке определенных пакетов данных приводят к повторному перечислению устройства на шине.

После такого события я обнаружил, что libusb неправильно обрабатываетв этом случае, или, возможно, I неправильно обрабатывает его. Наблюдаемое поведение состоит в том, что на шине будет N + 1 устройств, где N было числом устройств до отправки пакета сброса. Два экземпляра в списке устройств будут указывать на одно и то же устройство, но только на одноиз них будут действительны;Я пытался просто использовать libusb_reset_device, но также возвращает неверный дескриптор (обратите внимание, что не возвращает LIBUSB_ERROR_NOT_FOUND, как указано в документах .

В той степени, в которой это актуально, я думаю, устройство выдает только событие "мягкого отключения". Я не знаком с близостью USB, это можно обнаружить в программном обеспечении?

Какие у меня есть варианты с libusb, кроме полного разрыва и повторной инициализации (например, libusb_exit/libusb_init - это DOES работает). Я пытался убедиться, что текущее устройство было undef'd достаточно, ноэто не похоже на работу.

...