Ошибка чтения USB с xboxdrv 0.8.7

Я использую xboxdrv в версии 0.8.7 и контроллер XBox 360 Wireless на raspberrypi 3 (4.9.13-v7 +).

Работает иногда день, иногда несколько минут. Но я всегда получаю

[ОШИБКА] USBController :: on_read_data (): Ошибка чтения USB: 32:
LIBUSB_TRANSFER_ERROR

Общие предложения на форуме не помогли мне, и я думаю, что некоторые люди все еще борются с этим.

Я пытался связаться с автором, но пока не получил ответа.
Программное обеспечение работает под GPL-3.0, поэтому я посмотрел в исходном коде.

Проект на GitHub:
https://github.com/xboxdrv/xboxdrv

Я определил, где происходит сбой (src / usb_controller.cpp, строка 277 и ниже). Это последний раздел в коде ниже. Начиная с log_error («Ошибка чтения USB:

    void
USBController::on_read_data(libusb_transfer* transfer)
{
assert(transfer);

if (transfer->status == LIBUSB_TRANSFER_COMPLETED)
{
// process data
XboxGenericMsg msg;
if (parse(transfer->buffer, transfer->actual_length, &msg))
{
submit_msg(msg);
}

int ret;
ret = libusb_submit_transfer(transfer);
if (ret != LIBUSB_SUCCESS) // could also check for LIBUSB_ERROR_NO_DEVICE
{
log_error("failed to resubmit USB transfer: " << usb_strerror(ret));
m_transfers.erase(transfer);
libusb_free_transfer(transfer);
send_disconnect();
}
}
else if (transfer->status == LIBUSB_TRANSFER_CANCELLED)
{
m_transfers.erase(transfer);
libusb_free_transfer(transfer);
}
else if (transfer->status == LIBUSB_TRANSFER_NO_DEVICE)
{
m_transfers.erase(transfer);
libusb_free_transfer(transfer);
send_disconnect();
}
else
{
log_error("USB read failure: " << transfer->length << ": " << usb_transfer_strerror(transfer->status));
m_transfers.erase(transfer);
libusb_free_transfer(transfer);
}
}

Мои знания C ++ плохие, кроме того, у меня нет опыта работы с libusb. Не могли бы вы сделать предложение, как я могу это исправить для меня.

Проблема в том, что как только упомянутая ошибка возникает, xboxdrv останавливается и больше не будет обрабатывать ввод с беспроводного контроллера XBOX 360.

Следует просто игнорировать этот неправильный пакет и ждать нового. Но только не прекращай работать.

Спасибо

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]