Allow to disable switching LEDs on during startup (#1443)

This commit is contained in:
LordGrey 2022-03-16 09:27:37 +01:00 committed by GitHub
parent c75c98e252
commit 62829d9bf8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 57 additions and 14 deletions

View File

@ -504,6 +504,8 @@
"edt_dev_enum_sub_min_warm_adjust": "Subtract warm white",
"edt_dev_enum_subtract_minimum": "Subtract minimum",
"edt_dev_enum_white_off": "White off",
"edt_dev_general_autostart_title": "Autostart",
"edt_dev_general_autostart_title_info": "The LED device is switched-on during startup or not",
"edt_dev_general_colorOrder_title": "RGB byte order",
"edt_dev_general_colorOrder_title_info": "The device's color order",
"edt_dev_general_hardwareLedCount_title": "Hardware LED count",

View File

@ -820,7 +820,7 @@ $(document).ready(function () {
break;
case "philipshue":
conf_editor.getEditor("root.generalOptions").disable();
disableAutoResolvedGeneralOptions();
var lights = conf_editor.getEditor("root.specificOptions.lightIds").getValue();
hwLedCountDefault = lights.length;
@ -828,7 +828,7 @@ $(document).ready(function () {
break;
case "yeelight":
conf_editor.getEditor("root.generalOptions").disable();
disableAutoResolvedGeneralOptions();
var lights = conf_editor.getEditor("root.specificOptions.lights").getValue();
hwLedCountDefault = lights.length;
@ -836,7 +836,7 @@ $(document).ready(function () {
break;
case "atmoorb":
conf_editor.getEditor("root.generalOptions").disable();
disableAutoResolvedGeneralOptions();
var configruedOrbIds = conf_editor.getEditor("root.specificOptions.orbIds").getValue().trim();
if (configruedOrbIds.length !== 0) {
@ -848,7 +848,7 @@ $(document).ready(function () {
break;
case "razer":
conf_editor.getEditor("root.generalOptions").disable();
disableAutoResolvedGeneralOptions();
hwLedCountDefault = 1;
colorOrderDefault = "bgr";
@ -963,7 +963,7 @@ $(document).ready(function () {
var specOptPath = 'root.specificOptions.';
//Disable General Options, as LED count will be resolved from device itself
conf_editor.getEditor("root.generalOptions").disable();
disableAutoResolvedGeneralOptions();
var hostList = conf_editor.getEditor("root.specificOptions.hostList");
if (hostList) {
@ -1130,7 +1130,7 @@ $(document).ready(function () {
//Yeelight
conf_editor.watch('root.specificOptions.lights', () => {
//Disable General Options, as LED count will be resolved from number of lights configured
conf_editor.getEditor("root.generalOptions").disable();
disableAutoResolvedGeneralOptions();
var hwLedCount = conf_editor.getEditor("root.generalOptions.hardwareLedCount")
if (hwLedCount) {
@ -1142,7 +1142,7 @@ $(document).ready(function () {
//Philips Hue
conf_editor.watch('root.specificOptions.lightIds', () => {
//Disable General Options, as LED count will be resolved from number of lights configured
conf_editor.getEditor("root.generalOptions").disable();
disableAutoResolvedGeneralOptions();
var hwLedCount = conf_editor.getEditor("root.generalOptions.hardwareLedCount")
if (hwLedCount) {
@ -1154,7 +1154,7 @@ $(document).ready(function () {
//Atmo Orb
conf_editor.watch('root.specificOptions.orbIds', () => {
//Disable General Options, as LED count will be resolved from number of lights configured
conf_editor.getEditor("root.generalOptions").disable();
disableAutoResolvedGeneralOptions();
var hwLedCount = conf_editor.getEditor("root.generalOptions.hardwareLedCount")
if (hwLedCount) {
@ -1780,3 +1780,7 @@ function showAllDeviceInputOptions(showForKey, state) {
showInputOptionsForKey(conf_editor, "specificOptions", showForKey, state);
}
function disableAutoResolvedGeneralOptions() {
conf_editor.getEditor("root.generalOptions.hardwareLedCount").disable();
conf_editor.getEditor("root.generalOptions.colorOrder").disable();
}

View File

@ -16,6 +16,7 @@
{
"type" : "file",
"hardwareLedCount" : 1,
"autoStart" : true,
"output" : "/dev/null",
"colorOrder" : "rgb",
"latchTime" : 0,

View File

@ -462,6 +462,9 @@ private:
/// Is last write refreshing enabled?
bool _isRefreshEnabled;
/// Is device to be enabled during start
bool _isAutoStart;
/// Order of Colors supported by the device
/// "RGB", "BGR", "RBG", "BRG", "GBR", "GRB"
QString _colorOrder;

View File

@ -29,6 +29,18 @@
},
"access": "expert",
"propertyOrder": 3
},
"autoStart": {
"type": "boolean",
"format": "checkbox",
"title": "edt_dev_general_autostart_title",
"default": true,
"required": true,
"options": {
"infoText": "edt_dev_general_autostart_title_info"
},
"access": "advanced",
"propertyOrder": 4
}
},
"dependencies": {

View File

@ -16,6 +16,22 @@
#include <sstream>
#include <iomanip>
// Constants
namespace {
// Configuration settings
const char CONFIG_CURRENT_LED_COUNT[] = "currentLedCount";
const char CONFIG_COLOR_ORDER[] = "colorOrder";
const char CONFIG_AUTOSTART[] = "autoStart";
const char CONFIG_LATCH_TIME[] = "latchTime";
const char CONFIG_REWRITE_TIME[] = "rewriteTime";
int DEFAULT_LED_COUNT = 1;
const char DEFAULT_COLOR_ORDER[] = "RGB";
const bool DEFAULT_IS_AUTOSTART = true;
} //End of constants
LedDevice::LedDevice(const QJsonObject& deviceConfig, QObject* parent)
: QObject(parent)
, _devConfig(deviceConfig)
@ -34,6 +50,7 @@ LedDevice::LedDevice(const QJsonObject& deviceConfig, QObject* parent)
, _isInSwitchOff (false)
, _lastWriteTime(QDateTime::currentDateTime())
, _isRefreshEnabled (false)
, _isAutoStart(true)
{
_activeDeviceType = deviceConfig["type"].toString("UNSPECIFIED").toLower();
}
@ -64,9 +81,12 @@ void LedDevice::start()
{
// Everything is OK -> enable device
_isDeviceInitialised = true;
if (_isAutoStart)
{
this->enable();
}
}
}
void LedDevice::stop()
{
@ -147,11 +167,12 @@ bool LedDevice::init(const QJsonObject &deviceConfig)
{
Debug(_log, "deviceConfig: [%s]", QString(QJsonDocument(_devConfig).toJson(QJsonDocument::Compact)).toUtf8().constData() );
_colorOrder = deviceConfig["colorOrder"].toString("RGB");
_colorOrder = deviceConfig[CONFIG_COLOR_ORDER].toString(DEFAULT_COLOR_ORDER);
_isAutoStart = deviceConfig[CONFIG_AUTOSTART].toBool(DEFAULT_IS_AUTOSTART);
setLedCount( deviceConfig["currentLedCount"].toInt(1) ); // property injected to reflect real led count
setLatchTime( deviceConfig["latchTime"].toInt( _latchTime_ms ) );
setRewriteTime ( deviceConfig["rewriteTime"].toInt( _refreshTimerInterval_ms) );
setLedCount( deviceConfig[CONFIG_CURRENT_LED_COUNT].toInt(DEFAULT_LED_COUNT) ); // property injected to reflect real led count
setLatchTime( deviceConfig[CONFIG_LATCH_TIME].toInt( _latchTime_ms ) );
setRewriteTime ( deviceConfig[CONFIG_REWRITE_TIME].toInt( _refreshTimerInterval_ms) );
return true;
}