//------------------------------------------------------------------------bool MW::acquireAdapter() { struct usb_bus *usbBus; struct usb_device *usbDev; usb_init();// usb_set_debug(0); unsigned int vendor, product; if(usb_find_busses() < 0) { QMessageBox::critical(this, "!!!", trUtf8("Ошибка!\n%1 ").arg(trUtf8(usb_strerror()))); return false; } if(usb_find_devices() < 0) { QMessageBox::critical(this, "!!!", trUtf8("Ошибка!\n%1 ").arg(trUtf8(usb_strerror()))); return false; } usbBus = usb_get_busses(); if (usbBus == NULL) { QMessageBox::critical(this, "!!!", trUtf8("Ошибка!\n%1 ").arg(trUtf8(usb_strerror()))); return false; } for (; usbBus != NULL; usbBus = usbBus->next) { for (usbDev = usbBus->devices; usbDev != NULL; usbDev = usbDev->next) { vendor = usbDev->descriptor.idVendor; product = usbDev->descriptor.idProduct; qDebug()<<"---vendor--->"<<vendor<<"----prod---->"<<product<<"--desc--->"<<usbDev->descriptor.iProduct; if(vendor == DALLAS && product == DS2490) { sysLog(trUtf8("Найден адаптер ds2490.")); if((usbHandle = usb_open(usbDev)) == NULL) { QMessageBox::critical(this, "!!!", trUtf8("Ошибка!\n%1 ").arg(trUtf8(usb_strerror()))); return false; // Устройство ременно недоступно } if(usb_set_configuration(usbHandle, 1)) {// Всегда заваливается сюда// Если тут сделать дополнительный qDebug()<<"---conf--->"<<usb_set_configuration(usbHandle, 1)// Всегда возвращает -16 QMessageBox::critical(this, "!!!", trUtf8("Ошибка!\n%1 ").arg(trUtf8(usb_strerror()))); return false; // Устройство или ресурс занято } return true; } } } QMessageBox::critical(this, trUtf8("Внимание!"), trUtf8("Ошибка! Адаптер ds9490 не обнаружен.\n"), trUtf8("Ok")); sysLog(trUtf8("")); return false;}
open("/dev/bus/usb/004/004", O_RDWR) = 14write(12, "\1", 1) = 1read(11, "\1", 1) = 1ioctl(14, USBDEVFS_SETCONFIGURATION, 0xbfcc2ad4) = -1 EBUSY (Device or resource busy)
qDebug()<<"---bus--->"<<usbBus->dirname<<"---dev--->"<<usbDev->filename; qDebug()<<usb_detach_kernel_driver_np(usbHandle, usbDev->config->interface->altsetting->bInterfaceNumber); if(usb_set_configuration(usbHandle, 1) < 0) { QMessageBox::critical(this, "!!!", trUtf8("Ошибка!\n%1 ").arg(trUtf8(usb_strerror()))); sysLog(trUtf8(usb_strerror())); return false; // Устройство или ресурс занято } sysLog(trUtf8("Все пучком!"));