mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
update adalight sketch (#299)
* rename platform rpi-pwm to rpi. remove original rpi platform install symlink to bin folder create effects folder for custom effects * fix osx jobs evaluation * - add rewrite time to serial leds - rework adalight sketch * add analog output * adalight: add analog mode: last led * tune adalight sketch to final state move refresh code to leddevice base class, so every leddevice can use it
This commit is contained in:
@@ -17,9 +17,14 @@ LedDevice::LedDevice()
|
||||
, _log(Logger::getInstance("LedDevice"))
|
||||
, _ledBuffer(0)
|
||||
, _deviceReady(true)
|
||||
|
||||
, _refresh_timer()
|
||||
{
|
||||
LedDevice::getLedDeviceSchemas();
|
||||
|
||||
// setup timer
|
||||
_refresh_timer.setSingleShot(false);
|
||||
_refresh_timer.setInterval(0);
|
||||
connect(&_refresh_timer, SIGNAL(timeout()), this, SLOT(rewriteLeds()));
|
||||
}
|
||||
|
||||
// dummy implemention
|
||||
@@ -103,7 +108,17 @@ QJsonObject LedDevice::getLedDeviceSchemas()
|
||||
|
||||
int LedDevice::setLedValues(const std::vector<ColorRgb>& ledValues)
|
||||
{
|
||||
return _deviceReady ? write(ledValues) : -1;
|
||||
if (!_deviceReady)
|
||||
return -1;
|
||||
|
||||
_ledValues = ledValues;
|
||||
|
||||
// restart the timer
|
||||
if (_refresh_timer.interval() > 0)
|
||||
{
|
||||
_refresh_timer.start();
|
||||
}
|
||||
return write(ledValues);
|
||||
}
|
||||
|
||||
int LedDevice::switchOff()
|
||||
@@ -118,3 +133,8 @@ void LedDevice::setLedCount(int ledCount)
|
||||
_ledRGBCount = _ledCount * sizeof(ColorRgb);
|
||||
_ledRGBWCount = _ledCount * sizeof(ColorRgbw);
|
||||
}
|
||||
|
||||
int LedDevice::rewriteLeds()
|
||||
{
|
||||
return write(_ledValues);
|
||||
}
|
||||
|
@@ -2,7 +2,6 @@
|
||||
|
||||
LedDeviceAdalight::LedDeviceAdalight(const QJsonObject &deviceConfig)
|
||||
: ProviderRs232()
|
||||
|
||||
{
|
||||
_deviceReady = init(deviceConfig);
|
||||
}
|
||||
|
@@ -17,16 +17,7 @@ ProviderRs232::ProviderRs232()
|
||||
, _bytesWritten(0)
|
||||
, _frameDropCounter(0)
|
||||
, _lastError(QSerialPort::NoError)
|
||||
, _timer()
|
||||
{
|
||||
// setup timer
|
||||
_timer.setSingleShot(false);
|
||||
_timer.setInterval(1000);
|
||||
connect(&_timer, SIGNAL(timeout()), this, SLOT(rewriteLeds()));
|
||||
|
||||
// start the timer
|
||||
_timer.start();
|
||||
|
||||
connect(&_rs232Port, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(error(QSerialPort::SerialPortError)));
|
||||
connect(&_rs232Port, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWritten(qint64)));
|
||||
connect(&_rs232Port, SIGNAL(readyRead()), this, SLOT(readyRead()));
|
||||
@@ -38,7 +29,7 @@ bool ProviderRs232::init(const QJsonObject &deviceConfig)
|
||||
_deviceName = deviceConfig["output"].toString().toStdString();
|
||||
_baudRate_Hz = deviceConfig["rate"].toInt();
|
||||
_delayAfterConnect_ms = deviceConfig["delayAfterConnect"].toInt(250);
|
||||
_timer.setInterval ( deviceConfig["rewriteTime"].toInt(5000) );
|
||||
_refresh_timer.setInterval( deviceConfig["rewriteTime"].toInt(5000) );
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -157,8 +148,6 @@ bool ProviderRs232::tryOpen(const int delayAfterConnect_ms)
|
||||
|
||||
int ProviderRs232::writeBytes(const qint64 size, const uint8_t * data)
|
||||
{
|
||||
// restart the timer
|
||||
_timer.start();
|
||||
if (! _blockedForDelay)
|
||||
{
|
||||
if (!_rs232Port.isOpen())
|
||||
|
@@ -46,15 +46,12 @@ protected:
|
||||
* @param[in[ size The length of the data
|
||||
* @param[in] data The data
|
||||
*
|
||||
* @return Zero on succes else negative
|
||||
* @return Zero on success else negative
|
||||
*/
|
||||
int writeBytes(const qint64 size, const uint8_t *data);
|
||||
|
||||
void closeDevice();
|
||||
|
||||
/// The RS232 serial-device
|
||||
QSerialPort _rs232Port;
|
||||
|
||||
private slots:
|
||||
/// Write the last data to the leds again
|
||||
int rewriteLeds();
|
||||
@@ -79,7 +76,7 @@ protected:
|
||||
int _delayAfterConnect_ms;
|
||||
|
||||
/// The RS232 serial-device
|
||||
// QSerialPort _rs232Port;
|
||||
QSerialPort _rs232Port;
|
||||
|
||||
bool _blockedForDelay;
|
||||
|
||||
@@ -89,9 +86,4 @@ protected:
|
||||
qint64 _bytesWritten;
|
||||
qint64 _frameDropCounter;
|
||||
QSerialPort::SerialPortError _lastError;
|
||||
|
||||
/// Timer object which makes sure that led data is written at a minimum rate
|
||||
/// e.g. Adalight device will switch off when it does not receive data at least
|
||||
/// every 15 seconds
|
||||
QTimer _timer;
|
||||
};
|
||||
|
@@ -19,6 +19,13 @@
|
||||
"default": 250,
|
||||
"append" : "ms",
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"rewriteTime": {
|
||||
"type": "integer",
|
||||
"title":"refresh time",
|
||||
"default": 5000,
|
||||
"append" : "ms",
|
||||
"propertyOrder" : 4
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
|
@@ -19,6 +19,13 @@
|
||||
"default": 250,
|
||||
"append" : "ms",
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"rewriteTime": {
|
||||
"type": "integer",
|
||||
"title":"refresh time",
|
||||
"default": 5000,
|
||||
"append" : "ms",
|
||||
"propertyOrder" : 4
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
|
@@ -19,6 +19,13 @@
|
||||
"default": 250,
|
||||
"append" : "ms",
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"rewriteTime": {
|
||||
"type": "integer",
|
||||
"title":"refresh time",
|
||||
"default": 5000,
|
||||
"append" : "ms",
|
||||
"propertyOrder" : 4
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
|
@@ -23,6 +23,13 @@
|
||||
"title":"Delay after connect",
|
||||
"default": 250,
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"rewriteTime": {
|
||||
"type": "integer",
|
||||
"title":"refresh time",
|
||||
"default": 5000,
|
||||
"append" : "ms",
|
||||
"propertyOrder" : 4
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
|
@@ -18,6 +18,13 @@
|
||||
"title":"Delay after connect",
|
||||
"default": 250,
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"rewriteTime": {
|
||||
"type": "integer",
|
||||
"title":"refresh time",
|
||||
"default": 5000,
|
||||
"append" : "ms",
|
||||
"propertyOrder" : 4
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
|
@@ -18,6 +18,13 @@
|
||||
"title":"Delay after connect",
|
||||
"default": 250,
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"rewriteTime": {
|
||||
"type": "integer",
|
||||
"title":"refresh time",
|
||||
"default": 5000,
|
||||
"append" : "ms",
|
||||
"propertyOrder" : 4
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
|
Reference in New Issue
Block a user