bool JaRuleFactory::DeviceAdded( WidgetObserver *observer, libusb_device *usb_device, const struct libusb_device_descriptor &descriptor) { if (descriptor.idVendor != VENDOR_ID || descriptor.idProduct != PRODUCT_ID || HasDevice(usb_device)) { return false; } OLA_INFO << "Found a new Ja Rule device"; LibUsbAdaptor::DeviceInformation info; if (!m_adaptor->GetDeviceInfo(usb_device, descriptor, &info)) { return false; } // TODO(simon): Support multiple widgets. if (DeviceCount() > 0) { OLA_WARN << "Only a single Ja Rule device is supported"; return false; } if (FLAGS_use_async_libusb) { return AddWidget(observer, usb_device, new JaRuleWidget(m_ss, m_adaptor, usb_device, m_uid)); } else { OLA_WARN << "Ja Rule devices are not supported in Synchronous mode"; return false; } }
bool AnymauDMXFactory::DeviceAdded( WidgetObserver *observer, libusb_device *usb_device, const struct libusb_device_descriptor &descriptor) { if (descriptor.idVendor != VENDOR_ID || descriptor.idProduct != PRODUCT_ID || HasDevice(usb_device)) { return false; } OLA_INFO << "Found a new Anyma device"; LibUsbAdaptor::DeviceInformation info; if (!m_adaptor->GetDeviceInfo(usb_device, descriptor, &info)) { return false; } if (!m_adaptor->CheckManufacturer(EXPECTED_MANUFACTURER, info)) { return false; } if (!m_adaptor->CheckProduct(EXPECTED_PRODUCT, info)) { return false; } // Some Anyma devices don't have serial numbers. Since there isn't another // good way to uniquely identify a USB device, we only support one of these // types of devices per host. if (info.serial.empty()) { if (m_missing_serial_number) { OLA_WARN << "Failed to read serial number or serial number empty. " << "We can only support one device without a serial number."; return false; } else { OLA_WARN << "Failed to read serial number from " << info.manufacturer << " : " << info.product << " the device probably doesn't have one"; m_missing_serial_number = true; } } AnymauDMX *widget = NULL; if (FLAGS_use_async_libusb) { widget = new AsynchronousAnymauDMX(m_adaptor, usb_device, info.serial); } else { widget = new SynchronousAnymauDMX(m_adaptor, usb_device, info.serial); } return AddWidget(observer, usb_device, widget); }
bool JaRuleFactory::DeviceAdded( WidgetObserver *observer, libusb_device *usb_device, const struct libusb_device_descriptor &descriptor) { if (descriptor.idVendor != VENDOR_ID || descriptor.idProduct != PRODUCT_ID || HasDevice(usb_device)) { return false; } if (!FLAGS_use_async_libusb) { OLA_WARN << "Ja Rule devices are not supported in Synchronous mode"; return false; } OLA_INFO << "Found a new Ja Rule device"; std::auto_ptr<ola::usb::JaRuleWidget> widget( new ola::usb::JaRuleWidget(m_ss, m_adaptor, usb_device)); return AddWidget(observer, usb_device, widget.release()); }