Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Track Eurolite MK2 by actual serial number where available #1932

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions plugins/usbdmx/AVLdiyD512Factory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@ bool AVLdiyD512Factory::DeviceAdded(
// Some AVLdiy 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.
// TODO(Peter): We could instead use the device & bus number (like the
// Eurolite plugin). You could use more than one device, but the patch
// wouldn't follow if you plugged it into a different port
if (info.serial.empty()) {
if (m_missing_serial_number) {
OLA_WARN << "Failed to read serial number or serial number empty. "
Expand Down
3 changes: 3 additions & 0 deletions plugins/usbdmx/AnymauDMXFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@ bool AnymauDMXFactory::DeviceAdded(
// 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.
// TODO(Peter): We could instead use the device & bus number (like the
// Eurolite plugin). You could use more than one device, but the patch
// wouldn't follow if you plugged it into a different port
if (info.serial.empty()) {
if (m_missing_serial_number) {
OLA_WARN << "Failed to read serial number or serial number empty. "
Expand Down
3 changes: 3 additions & 0 deletions plugins/usbdmx/DMXCreator512BasicFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ bool DMXCreator512BasicFactory::DeviceAdded(
// vendor and product ids. Also, since DMXCreator 512 Basic devices don't have
// serial numbers and there is no other good way to uniquely identify a USB
// device, we only support one of these types of devices per host.
// TODO(Peter): We could instead use the device & bus number (like the
// Eurolite plugin). You could use more than one device, but the patch
// wouldn't follow if you plugged it into a different port
if (info.serial.empty()) {
if (m_missing_serial_number) {
OLA_WARN << "We can only support one device without a serial number.";
Expand Down
21 changes: 12 additions & 9 deletions plugins/usbdmx/EuroliteProFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,11 @@ bool EuroliteProFactory::DeviceAdded(
libusb_device *usb_device,
const struct libusb_device_descriptor &descriptor) {
bool is_mk2 = false;
LibUsbAdaptor::DeviceInformation info;

// Eurolite USB-DMX512-PRO?
if (descriptor.idVendor == VENDOR_ID && descriptor.idProduct == PRODUCT_ID) {
OLA_INFO << "Found a new Eurolite USB-DMX512-PRO device";
LibUsbAdaptor::DeviceInformation info;
if (!m_adaptor->GetDeviceInfo(usb_device, descriptor, &info)) {
return false;
}
Expand All @@ -112,7 +112,6 @@ bool EuroliteProFactory::DeviceAdded(
// Eurolite USB-DMX512-PRO MK2?
} else if (descriptor.idVendor == VENDOR_ID_MK2 &&
descriptor.idProduct == PRODUCT_ID_MK2) {
LibUsbAdaptor::DeviceInformation info;
if (!m_adaptor->GetDeviceInfo(usb_device, descriptor, &info)) {
return false;
}
Expand Down Expand Up @@ -150,17 +149,21 @@ bool EuroliteProFactory::DeviceAdded(
return false;
}

// The Eurolite doesn't have a serial number, so instead we use the device &
// bus number.
// The original Eurolite doesn't have a serial number, so instead we use the
// device & bus number. The MK2 does, so we use that where available.
// TODO(simon): check if this supports the SERIAL NUMBER label and use that
// instead.

// There is no Serialnumber--> work around: bus+device number
int bus_number = libusb_get_bus_number(usb_device);
int device_address = libusb_get_device_address(usb_device);

std::ostringstream serial_str;
serial_str << bus_number << "-" << device_address;
if (is_mk2 && !info.serial.empty()) {
serial_str << info.serial;
} else {
// Original, there is no Serialnumber--> work around: bus+device number
int bus_number = libusb_get_bus_number(usb_device);
int device_address = libusb_get_device_address(usb_device);

serial_str << bus_number << "-" << device_address;
}

EurolitePro *widget = NULL;
if (FLAGS_use_async_libusb) {
Expand Down
3 changes: 3 additions & 0 deletions plugins/usbdmx/ScanlimeFadecandyFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ bool ScanlimeFadecandyFactory::DeviceAdded(
// Fadecandy devices may be missing 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.
// TODO(Peter): We could instead use the device & bus number (like the
// Eurolite plugin). You could use more than one device, but the patch
// wouldn't follow if you plugged it into a different port
if (info.serial.empty()) {
if (m_missing_serial_number) {
OLA_WARN << "Failed to read serial number or serial number empty. "
Expand Down
Loading