Ejemplo n.º 1
0
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;
    }
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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());
}