diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index d76a1800..215d71c0 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -180,6 +180,8 @@ void CConfigManager::configSetValueSafe(const std::string& COMMAND, const std::s CONFIGENTRY = &configValues.at(COMMAND); } + CONFIGENTRY->set = true; + if (CONFIGENTRY->intValue != -1) { try { if (VALUE.find("0x") == 0) { @@ -910,6 +912,15 @@ SConfigValue CConfigManager::getConfigValueSafeDevice(const std::string& dev, co SConfigValue copy = it->second[val]; + // fallback if not set explicitly + if (!copy.set) { + for (auto& cv : configValues) { + if (cv.first.find(val) == cv.first.length() - val.length()) { + copy = cv.second; + } + } + } + return copy; } diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp index 57124ece..bcb2fbe5 100644 --- a/src/config/ConfigManager.hpp +++ b/src/config/ConfigManager.hpp @@ -20,6 +20,8 @@ struct SConfigValue { int64_t intValue = -1; float floatValue = -1; std::string strValue = ""; + + bool set = false; // used for device configs }; struct SMonitorRule {