diff --git a/src/ebusd/bushandler.cpp b/src/ebusd/bushandler.cpp index b9b2aa57..32663c7b 100644 --- a/src/ebusd/bushandler.cpp +++ b/src/ebusd/bushandler.cpp @@ -1145,6 +1145,6 @@ void BusHandler::setScanConfigLoaded(unsigned char address, string file) { m_seenAddresses[address] |= LOAD_INIT; if (!file.empty()) { m_seenAddresses[address] |= LOAD_DONE; - m_messages->addLoadedFile(address, file); + m_messages->addLoadedFile(address, file, ""); } } diff --git a/src/lib/ebus/message.cpp b/src/lib/ebus/message.cpp index d5699963..cb66abb6 100644 --- a/src/lib/ebus/message.cpp +++ b/src/lib/ebus/message.cpp @@ -1454,7 +1454,7 @@ string Instruction::getDestination() } -result_t LoadInstruction::execute(MessageMap* messages, ostringstream& log) { +result_t LoadInstruction::execute(MessageMap* messages, ostringstream& log, Condition* condition) { result_t result = messages->readFromFile(m_filename, false, m_defaultDest, m_defaultCircuit, m_defaultSuffix); if (log.tellp()>0) { log << ", "; @@ -1475,7 +1475,13 @@ result_t LoadInstruction::execute(MessageMap* messages, ostringstream& log) { } else { filename = m_filename.substr(pos+1); } - messages->addLoadedFile(address, filename); + string comment; + if (condition) { + ostringstream out; + condition->dump(out); + comment = out.str(); + } + messages->addLoadedFile(address, filename, comment); } } return result; @@ -1780,7 +1786,7 @@ result_t MessageMap::executeInstructions(ostringstream& log, void (*readMessageF if (instruction->isSingleton()) { removeSingletons = true; } - result_t result = instruction->execute(this, log); + result_t result = instruction->execute(this, log, condition); if (result!=RESULT_OK) { overallResult = result; } @@ -1813,13 +1819,19 @@ result_t MessageMap::executeInstructions(ostringstream& log, void (*readMessageF return overallResult; } -void MessageMap::addLoadedFile(unsigned char address, string file) +void MessageMap::addLoadedFile(unsigned char address, string file, string comment) { - if (file.empty()) return; - if (m_loadedFiles.find(address)==m_loadedFiles.end()) - m_loadedFiles[address] = "\""+file+"\""; - else - m_loadedFiles[address] += ", \""+file+"\""; + if (!file.empty()) { + string fileComment = "\""+file+"\""; + if (!comment.empty()) { + fileComment += " ("+comment+")"; + } + if (m_loadedFiles.find(address)==m_loadedFiles.end()) { + m_loadedFiles[address] = fileComment; + } else { + m_loadedFiles[address] += fileComment; + } + } } string MessageMap::getLoadedFiles(unsigned char address) diff --git a/src/lib/ebus/message.h b/src/lib/ebus/message.h index 28113e15..90737abd 100644 --- a/src/lib/ebus/message.h +++ b/src/lib/ebus/message.h @@ -1041,9 +1041,10 @@ public: * Execute the instruction. * @param messages the @a MessageMap. * @param log the @a ostringstream to log success messages to (if necessary). + * @param condition the @a Condition that was successfully evaluated for execution, or NULL. * @return @a RESULT_OK on success, or an error code. */ - virtual result_t execute(MessageMap* messages, ostringstream& log) = 0; + virtual result_t execute(MessageMap* messages, ostringstream& log, Condition* condition) = 0; private: @@ -1092,7 +1093,7 @@ public: virtual ~LoadInstruction() { } // @copydoc - virtual result_t execute(MessageMap* messages, ostringstream& log); + virtual result_t execute(MessageMap* messages, ostringstream& log, Condition* condition); private: @@ -1190,8 +1191,9 @@ public: * Add a loaded file to a participant. * @param address the slave address. * @param file the name of the file from which a configuration part was loaded for the participant. + * @param comment an optional comment. */ - void addLoadedFile(unsigned char address, string file); + void addLoadedFile(unsigned char address, string file, string comment); /** * Get the loaded files for a participant.