Corrections

This commit is contained in:
LordGrey 2023-11-15 20:53:28 +01:00
parent 7116970fc2
commit 12e92f5bdd
3 changed files with 59 additions and 54 deletions

View File

@ -100,7 +100,8 @@ $(document).ready(function () {
$('#btn_submit_cec_events').off().on('click', function () {
const saveOptions = conf_editor_cecEvents.getValue();
// Workaround, as otherwise actions array is empty
// Workaround, as otherwise values are not reflected correctly
saveOptions.cecEvents.enable = conf_editor_cecEvents.getEditor("root.cecEvents.enable").getValue();
saveOptions.cecEvents.actions = conf_editor_cecEvents.getEditor("root.cecEvents.actions").getValue();
requestWriteConfig(saveOptions);
});

View File

@ -45,27 +45,26 @@ void CECHandler::handleSettingsUpdate(settings::type type, const QJsonDocument&
{
Debug( _logger, "config: [%s]", QString(QJsonDocument(config).toJson(QJsonDocument::Compact)).toUtf8().constData());
if (_isInitialised)
{
const QJsonObject& obj = config.object();
_isEnabled = obj["enable"].toBool(false);
Debug(_logger, "CEC Event handling is %s", _isEnabled? "enabled" : "disabled");
if (_isEnabled)
{
_buttonReleaseDelayMs = obj["buttonReleaseDelayMs"].toInt(CEC_BUTTON_TIMEOUT);
_buttonRepeatRateMs = obj["buttonRepeatRateMs"].toInt(0);
_doubleTapTimeoutMs = obj["doubleTapTimeoutMs"].toInt(CEC_DOUBLE_TAP_TIMEOUT_MS);
_cecConfig.iButtonReleaseDelayMs = static_cast<uint32_t>(_buttonReleaseDelayMs);
_cecConfig.iButtonRepeatRateMs = static_cast<uint32_t>(_buttonRepeatRateMs);
_cecConfig.iDoubleTapTimeoutMs = static_cast<uint32_t>(_doubleTapTimeoutMs);
if (_cecAdapter->SetConfiguration(&_cecConfig))
{
Debug(_logger, "Remote button press release time : %dms",_buttonReleaseDelayMs);
Debug(_logger, "Remote button press repeat rate : %dms",_buttonRepeatRateMs);
Debug(_logger, "Remote button press delay before repeating : %dms",_doubleTapTimeoutMs);
}
else
{
Error(_logger, "Failed setting remote button press timing parameters");
}
_cecConfig.iButtonReleaseDelayMs = static_cast<uint32_t>(_buttonReleaseDelayMs);
_cecConfig.iButtonRepeatRateMs = static_cast<uint32_t>(_buttonRepeatRateMs);
_cecConfig.iDoubleTapTimeoutMs = static_cast<uint32_t>(_doubleTapTimeoutMs);
_cecEventActionMap.clear();
const QJsonArray actionItems = obj["actions"].toArray();
@ -80,10 +79,6 @@ void CECHandler::handleSettingsUpdate(settings::type type, const QJsonDocument&
}
}
if (_isInitialised)
{
if (_isEnabled)
{
if (!_cecEventActionMap.isEmpty())
{
enable();
@ -106,9 +101,6 @@ bool CECHandler::start()
_isInitialised = false;
if (_cecAdapter == nullptr)
{
// std::string library = std::string("" CEC_LIBRARY);
// _cecAdapter = LibCecInitialise(&_cecConfig, QFile::exists(QString::fromStdString(library)) ? library.c_str() : nullptr);
_cecAdapter = LibCecInitialise(&_cecConfig);
if(_cecAdapter == nullptr)
{
@ -172,6 +164,10 @@ bool CECHandler::enable()
}
else
{
if (!_cecAdapter->SetConfiguration(&_cecConfig))
{
Error(_logger, "Failed setting remote button press timing parameters");
}
QObject::connect(this, &CECHandler::signalEvent, EventHandler::getInstance(), &EventHandler::handleEvent);
Info(_logger, "CEC handler started");
}
@ -181,7 +177,7 @@ bool CECHandler::enable()
void CECHandler::disable()
{
if (_cecAdapter != nullptr)
if (_isInitialised)
{
Info(_logger, "Stopping CEC handler");
@ -199,7 +195,6 @@ CECConfig CECHandler::getConfig() const
name.copy(configuration.strDeviceName, std::min(name.size(), sizeof(configuration.strDeviceName)));
configuration.deviceTypes.Add(CEC::CEC_DEVICE_TYPE_RECORDING_DEVICE);
configuration.clientVersion = CEC::LIBCEC_VERSION_CURRENT;
configuration.bActivateSource = 0;
return configuration;
}
@ -246,15 +241,24 @@ bool CECHandler::openAdapter(const CECAdapterDescriptor & descriptor)
void CECHandler::printAdapter(const CECAdapterDescriptor & descriptor) const
{
Info(_logger, "CEC Adapter:");
Info(_logger, "\tName : %s", descriptor.strComName);
Info(_logger, "\tPath : %s", descriptor.strComPath);
Info(_logger, "\tVendor id: %04x", descriptor.iVendorId);
Info(_logger, "\tProduct id: %04x", descriptor.iProductId);
Info(_logger, "\tFirmware id: %d", descriptor.iFirmwareVersion);
Debug(_logger, "CEC Adapter:");
Debug(_logger, "\tName : %s", descriptor.strComName);
Debug(_logger, "\tPath : %s", descriptor.strComPath);
if (descriptor.iVendorId != 0)
{
Debug(_logger, "\tVendor id: %04x", descriptor.iVendorId);
}
if (descriptor.iProductId != 0)
{
Debug(_logger, "\tProduct id: %04x", descriptor.iProductId);
}
if (descriptor.iFirmwareVersion != 0)
{
Debug(_logger, "\tFirmware id: %d", descriptor.iFirmwareVersion);
}
if (descriptor.adapterType != CEC::ADAPTERTYPE_UNKNOWN)
{
Info(_logger, "\tType : %s", _cecAdapter->ToString(descriptor.adapterType));
Debug(_logger, "\tType : %s", _cecAdapter->ToString(descriptor.adapterType));
}
}

View File

@ -20,7 +20,7 @@
"step": 50,
"default": 0,
"required": false,
"access": "advanced",
"access": "expert",
"propertyOrder": 2
},
"buttonRepeatRateMs": {
@ -33,7 +33,7 @@
"step": 10,
"default": 0,
"required": false,
"access": "advanced",
"access": "expert",
"propertyOrder": 3
},
"doubleTapTimeoutMs": {
@ -46,7 +46,7 @@
"step": 50,
"default": 200,
"required": false,
"access": "advanced",
"access": "expert",
"propertyOrder": 4
},
"actions": {