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 () { $('#btn_submit_cec_events').off().on('click', function () {
const saveOptions = conf_editor_cecEvents.getValue(); 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(); saveOptions.cecEvents.actions = conf_editor_cecEvents.getEditor("root.cecEvents.actions").getValue();
requestWriteConfig(saveOptions); 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()); Debug( _logger, "config: [%s]", QString(QJsonDocument(config).toJson(QJsonDocument::Compact)).toUtf8().constData());
if (_isInitialised)
{
const QJsonObject& obj = config.object(); const QJsonObject& obj = config.object();
_isEnabled = obj["enable"].toBool(false); _isEnabled = obj["enable"].toBool(false);
Debug(_logger, "CEC Event handling is %s", _isEnabled? "enabled" : "disabled"); Debug(_logger, "CEC Event handling is %s", _isEnabled? "enabled" : "disabled");
if (_isEnabled)
{
_buttonReleaseDelayMs = obj["buttonReleaseDelayMs"].toInt(CEC_BUTTON_TIMEOUT); _buttonReleaseDelayMs = obj["buttonReleaseDelayMs"].toInt(CEC_BUTTON_TIMEOUT);
_buttonRepeatRateMs = obj["buttonRepeatRateMs"].toInt(0); _buttonRepeatRateMs = obj["buttonRepeatRateMs"].toInt(0);
_doubleTapTimeoutMs = obj["doubleTapTimeoutMs"].toInt(CEC_DOUBLE_TAP_TIMEOUT_MS); _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 release time : %dms",_buttonReleaseDelayMs);
Debug(_logger, "Remote button press repeat rate : %dms",_buttonRepeatRateMs); Debug(_logger, "Remote button press repeat rate : %dms",_buttonRepeatRateMs);
Debug(_logger, "Remote button press delay before repeating : %dms",_doubleTapTimeoutMs); Debug(_logger, "Remote button press delay before repeating : %dms",_doubleTapTimeoutMs);
}
else _cecConfig.iButtonReleaseDelayMs = static_cast<uint32_t>(_buttonReleaseDelayMs);
{ _cecConfig.iButtonRepeatRateMs = static_cast<uint32_t>(_buttonRepeatRateMs);
Error(_logger, "Failed setting remote button press timing parameters"); _cecConfig.iDoubleTapTimeoutMs = static_cast<uint32_t>(_doubleTapTimeoutMs);
}
_cecEventActionMap.clear(); _cecEventActionMap.clear();
const QJsonArray actionItems = obj["actions"].toArray(); 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()) if (!_cecEventActionMap.isEmpty())
{ {
enable(); enable();
@ -106,9 +101,6 @@ bool CECHandler::start()
_isInitialised = false; _isInitialised = false;
if (_cecAdapter == nullptr) 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); _cecAdapter = LibCecInitialise(&_cecConfig);
if(_cecAdapter == nullptr) if(_cecAdapter == nullptr)
{ {
@ -172,6 +164,10 @@ bool CECHandler::enable()
} }
else else
{ {
if (!_cecAdapter->SetConfiguration(&_cecConfig))
{
Error(_logger, "Failed setting remote button press timing parameters");
}
QObject::connect(this, &CECHandler::signalEvent, EventHandler::getInstance(), &EventHandler::handleEvent); QObject::connect(this, &CECHandler::signalEvent, EventHandler::getInstance(), &EventHandler::handleEvent);
Info(_logger, "CEC handler started"); Info(_logger, "CEC handler started");
} }
@ -181,7 +177,7 @@ bool CECHandler::enable()
void CECHandler::disable() void CECHandler::disable()
{ {
if (_cecAdapter != nullptr) if (_isInitialised)
{ {
Info(_logger, "Stopping CEC handler"); Info(_logger, "Stopping CEC handler");
@ -199,7 +195,6 @@ CECConfig CECHandler::getConfig() const
name.copy(configuration.strDeviceName, std::min(name.size(), sizeof(configuration.strDeviceName))); name.copy(configuration.strDeviceName, std::min(name.size(), sizeof(configuration.strDeviceName)));
configuration.deviceTypes.Add(CEC::CEC_DEVICE_TYPE_RECORDING_DEVICE); configuration.deviceTypes.Add(CEC::CEC_DEVICE_TYPE_RECORDING_DEVICE);
configuration.clientVersion = CEC::LIBCEC_VERSION_CURRENT; configuration.clientVersion = CEC::LIBCEC_VERSION_CURRENT;
configuration.bActivateSource = 0;
return configuration; return configuration;
} }
@ -246,15 +241,24 @@ bool CECHandler::openAdapter(const CECAdapterDescriptor & descriptor)
void CECHandler::printAdapter(const CECAdapterDescriptor & descriptor) const void CECHandler::printAdapter(const CECAdapterDescriptor & descriptor) const
{ {
Info(_logger, "CEC Adapter:"); Debug(_logger, "CEC Adapter:");
Info(_logger, "\tName : %s", descriptor.strComName); Debug(_logger, "\tName : %s", descriptor.strComName);
Info(_logger, "\tPath : %s", descriptor.strComPath); Debug(_logger, "\tPath : %s", descriptor.strComPath);
Info(_logger, "\tVendor id: %04x", descriptor.iVendorId); if (descriptor.iVendorId != 0)
Info(_logger, "\tProduct id: %04x", descriptor.iProductId); {
Info(_logger, "\tFirmware id: %d", descriptor.iFirmwareVersion); 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) 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, "step": 50,
"default": 0, "default": 0,
"required": false, "required": false,
"access": "advanced", "access": "expert",
"propertyOrder": 2 "propertyOrder": 2
}, },
"buttonRepeatRateMs": { "buttonRepeatRateMs": {
@ -33,7 +33,7 @@
"step": 10, "step": 10,
"default": 0, "default": 0,
"required": false, "required": false,
"access": "advanced", "access": "expert",
"propertyOrder": 3 "propertyOrder": 3
}, },
"doubleTapTimeoutMs": { "doubleTapTimeoutMs": {
@ -46,7 +46,7 @@
"step": 50, "step": 50,
"default": 200, "default": 200,
"required": false, "required": false,
"access": "advanced", "access": "expert",
"propertyOrder": 4 "propertyOrder": 4
}, },
"actions": { "actions": {