Fix LED Devices (Lightpack, Atmo/Karate, Hue) (#1337)

* Fix that lighpack cores when lack of permissions

* Atmo/Karate - Fix LedCount constraint handling

* Hue updates - Have EntertainmentAPI as default, disable hardwareledcount as cacultated

* Have Gamma per default 2.2
This commit is contained in:
LordGrey 2021-09-30 18:06:23 +02:00 committed by GitHub
parent af24e6d623
commit f269268def
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 38 additions and 27 deletions

View File

@ -750,6 +750,8 @@ $(document).ready(function () {
break;
case "philipshue":
conf_editor.getEditor("root.generalOptions").disable();
var lights = conf_editor.getEditor("root.specificOptions.lightIds").getValue();
hwLedCountDefault = lights.length;
colorOrderDefault = "rgb";
@ -757,6 +759,7 @@ $(document).ready(function () {
case "yeelight":
conf_editor.getEditor("root.generalOptions").disable();
var lights = conf_editor.getEditor("root.specificOptions.lights").getValue();
hwLedCountDefault = lights.length;
colorOrderDefault = "rgb";
@ -1070,6 +1073,13 @@ $(document).ready(function () {
hwLedCount.setValue(lights.length);
}
});
//Handle Hardware Led Count constraint list
conf_editor.watch('root.generalOptions.hardwareLedCountList', () => {
var hwLedCountSelected = conf_editor.getEditor("root.generalOptions.hardwareLedCountList").getValue();
conf_editor.getEditor("root.generalOptions.hardwareLedCount").setValue(Number(hwLedCountSelected));
});
});
//philipshueentertainment backward fix
@ -1648,7 +1658,9 @@ function updateElements(ledType, key) {
if (ledProperties && ledProperties.ledCount) {
if (ledProperties.ledCount.length > 0) {
var configuredLedCount = window.serverConfig.device.hardwareLedCount;
updateJsonEditorSelection(conf_editor, 'root.generalOptions', "hardwareLedCount", {}, ledProperties.ledCount, [], configuredLedCount);
showInputOptionForItem(conf_editor, 'generalOptions', "hardwareLedCount", false);
updateJsonEditorSelection(conf_editor, 'root.generalOptions', "hardwareLedCountList", {"title": "edt_dev_general_hardwareLedCount_title"},
ledProperties.ledCount.map(String), [], configuredLedCount);
}
}
break;

View File

@ -37,9 +37,9 @@
"cyan" : [0,255,255],
"magenta" : [255,0,255],
"yellow" : [255,255,0],
"gammaRed" : 1.5,
"gammaGreen" : 1.5,
"gammaBlue" : 1.5,
"gammaRed" : 2.2,
"gammaGreen" : 2.2,
"gammaBlue" : 2.2,
"backlightThreshold" : 0,
"backlightColored" : false,
"brightness" : 100,

View File

@ -206,7 +206,7 @@
"required" : true,
"minimum" : 0.1,
"maximum": 100.0,
"default" : 1.5,
"default" : 2.2,
"step" : 0.1,
"propertyOrder" : 15
},
@ -217,7 +217,7 @@
"required" : true,
"minimum" : 0.1,
"maximum": 100.0,
"default" : 1.5,
"default" : 2.2,
"step" : 0.1,
"propertyOrder" : 16
},
@ -228,7 +228,7 @@
"required" : true,
"minimum" : 0.1,
"maximum": 100.0,
"default" : 1.5,
"default" : 2.2,
"step" : 0.1,
"propertyOrder" : 17
}

View File

@ -118,11 +118,11 @@ bool LedDeviceLightpack::init(const QJsonObject &deviceConfig)
QString errortext;
if (_serialNumber.isEmpty())
{
errortext = QString ("No Lightpack devices were found");
errortext = QString ("No working Lightpack devices were found");
}
else
{
errortext = QString ("No Lightpack device found with serial %1").arg( _serialNumber);
errortext = QString ("No working Lightpack device found with serial %1").arg( _serialNumber);
}
this->setInError( errortext );
}
@ -197,9 +197,6 @@ bool LedDeviceLightpack::searchDevice(libusb_device * device, const QString & re
return false;
}
#define UNO_VENDOR_ID 0x2341
#define UNO_PRODUCT_ID 0x43
if ((deviceDescriptor.idVendor == USB_VENDOR_ID && deviceDescriptor.idProduct == USB_PRODUCT_ID) ||
(deviceDescriptor.idVendor == USB_OLD_VENDOR_ID && deviceDescriptor.idProduct == USB_OLD_PRODUCT_ID))
{
@ -375,28 +372,30 @@ int LedDeviceLightpack::openDevice(libusb_device *device, libusb_device_handle *
Error(_log, "unable to open device(%d): %s", error, libusb_error_name(error));
rc = -1;
}
// detach kernel driver if it is active
if (libusb_kernel_driver_active(handle, LIGHTPACK_INTERFACE) == 1)
else
{
error = libusb_detach_kernel_driver(handle, LIGHTPACK_INTERFACE);
// detach kernel driver if it is active
if (libusb_kernel_driver_active(handle, LIGHTPACK_INTERFACE) == 1)
{
error = libusb_detach_kernel_driver(handle, LIGHTPACK_INTERFACE);
if (error != LIBUSB_SUCCESS)
{
Error(_log, "unable to detach kernel driver(%d): %s", error, libusb_error_name(error));
libusb_close(handle);
rc = -1;
}
}
error = libusb_claim_interface(handle, LIGHTPACK_INTERFACE);
if (error != LIBUSB_SUCCESS)
{
Error(_log, "unable to detach kernel driver(%d): %s", error, libusb_error_name(error));
Error(_log, "unable to claim interface(%d): %s", error, libusb_error_name(error));
libusb_attach_kernel_driver(handle, LIGHTPACK_INTERFACE);
libusb_close(handle);
rc = -1;
}
}
error = libusb_claim_interface(handle, LIGHTPACK_INTERFACE);
if (error != LIBUSB_SUCCESS)
{
Error(_log, "unable to claim interface(%d): %s", error, libusb_error_name(error));
libusb_attach_kernel_driver(handle, LIGHTPACK_INTERFACE);
libusb_close(handle);
rc = -1;
}
*deviceHandle = handle;
return rc;
}

View File

@ -28,7 +28,7 @@
"useEntertainmentAPI": {
"type": "boolean",
"title": "edt_dev_spec_useEntertainmentAPI_title",
"default": false,
"default": true,
"propertyOrder": 4
},
"transitiontime": {