From 7bf2ad2cbfc3d3c8fe487a88c055ef03399ea2a2 Mon Sep 17 00:00:00 2001 From: LordGrey Date: Sun, 26 Mar 2023 19:30:32 +0000 Subject: [PATCH] Refactor device identifiers --- assets/webconfig/js/content_leds.js | 9 +++++++-- libsrc/leddevice/dev_ftdi/ProviderFtdi.cpp | 22 ++++++++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/assets/webconfig/js/content_leds.js b/assets/webconfig/js/content_leds.js index 25dde340..2050a0b6 100755 --- a/assets/webconfig/js/content_leds.js +++ b/assets/webconfig/js/content_leds.js @@ -1119,6 +1119,9 @@ $(document).ready(function () { case "karate": case "sedu": case "tpm2": + case "ws2812_ftdi": + case "sk6812_ftdi": + case "apa102_ftdi": if (storedAccess === 'expert') { filter.discoverAll = true; } @@ -1901,7 +1904,7 @@ var updateOutputSelectList = function (ledType, discoveryInfo) { if ($.inArray(ledType, devNET) != -1) { ledTypeGroup = "devNET"; - } else if ($.inArray(ledType, devSerial) != -1) { + } else if ($.inArray(ledType, devSerial) != -1 || ledType.endsWith("_ftdi")) { ledTypeGroup = "devSerial"; } else if ($.inArray(ledType, devRPiSPI) != -1) { ledTypeGroup = "devRPiSPI"; @@ -1998,6 +2001,9 @@ var updateOutputSelectList = function (ledType, discoveryInfo) { case "karate": case "sedu": case "tpm2": + case "ws2812_ftdi": + case "sk6812_ftdi": + case "apa102_ftdi": for (const device of discoveryInfo.devices) { if (device.udev) { enumVals.push(device.systemLocation); @@ -2093,7 +2099,6 @@ var updateOutputSelectList = function (ledType, discoveryInfo) { async function discover_device(ledType, params) { const result = await requestLedDeviceDiscovery(ledType, params); - var discoveryResult = {}; if (result) { if (result.error) { diff --git a/libsrc/leddevice/dev_ftdi/ProviderFtdi.cpp b/libsrc/leddevice/dev_ftdi/ProviderFtdi.cpp index b01a48e7..66192dd2 100644 --- a/libsrc/leddevice/dev_ftdi/ProviderFtdi.cpp +++ b/libsrc/leddevice/dev_ftdi/ProviderFtdi.cpp @@ -181,14 +181,24 @@ QJsonObject ProviderFtdi::discover(const QJsonObject & /*params*/) libusb_device_descriptor desc; libusb_get_device_descriptor(curdev->dev, &desc); - QString value = QString("i:0x%1:0x%2") - .arg(desc.idVendor, 4, 16, QChar{'0'}) - .arg(desc.idProduct, 4, 16, QChar{'0'}); + uint8_t bus_number = libusb_get_bus_number(curdev->dev); + uint8_t device_address = libusb_get_device_address(curdev->dev); + + QString portName = QString("d:%1/%2") + .arg(bus_number, 3, 10, QChar{'0'}) + .arg(device_address, 3, 10, QChar{'0'}); + + QString vendorIdentifier = QString("0x%1").arg(desc.idVendor, 4, 16, QChar{'0'}); + QString productIdentifier = QString("0x%1").arg(desc.idProduct, 4, 16, QChar{'0'}); + - QString name = QString("%1 (%2)").arg(manufacturer, description); deviceList.push_back(QJsonObject{ - {"value", value}, - {"name", name}}); + {"portName", portName}, + {"vendorIdentifier", vendorIdentifier}, + {"productIdentifier", productIdentifier}, + {"manufacturer", manufacturer}, + {"description", description}, + }); curdev = curdev->next; }