diff --git a/src/ebusd/mainloop.cpp b/src/ebusd/mainloop.cpp index 55cf8697..e36d6c52 100755 --- a/src/ebusd/mainloop.cpp +++ b/src/ebusd/mainloop.cpp @@ -165,7 +165,7 @@ MainLoop::MainLoop(const struct options& opt, Device *device, MessageMap* messag } else { logError(lf_main, "error registering data handlers"); } - m_newlyDefinedMessages = opt.enableDefine ? new MessageMap(true) : NULL; + m_newlyDefinedMessages = opt.enableDefine ? new MessageMap(true, "", false) : NULL; } MainLoop::~MainLoop() { diff --git a/src/lib/ebus/message.cpp b/src/lib/ebus/message.cpp index 3bf81e6c..1878fb43 100755 --- a/src/lib/ebus/message.cpp +++ b/src/lib/ebus/message.cpp @@ -474,8 +474,8 @@ result_t Message::create(const string& filename, const DataFieldTemplates* templ return RESULT_OK; } -Message* Message::createScanMessage(bool broadcast) { - return new Message("scan", "", "", 0x07, 0x04, broadcast, DataFieldSet::getIdentFields(), !broadcast); +Message* Message::createScanMessage(bool broadcast, bool deleteData) { + return new Message("scan", "", "", 0x07, 0x04, broadcast, DataFieldSet::getIdentFields(), deleteData); } bool Message::extractFieldNames(const string& str, bool checkAbbreviated, vector* fields) { diff --git a/src/lib/ebus/message.h b/src/lib/ebus/message.h index 39fceb2e..b614970a 100755 --- a/src/lib/ebus/message.h +++ b/src/lib/ebus/message.h @@ -197,7 +197,7 @@ class Message : public AttributedItem { * @param broadcast true for broadcast scan message, false for scan message to be sent to a slave address. * @return the new scan @a Message instance. */ - static Message* createScanMessage(bool broadcast = false); + static Message* createScanMessage(bool broadcast = false, bool deleteData = true); /** * Extract the known field names from the input string. @@ -1218,12 +1218,12 @@ class MessageMap : public MappedFileReader { * @param addAll whether to add all messages, even if duplicate. * @param preferLanguage the preferred language to use, or empty. */ - explicit MessageMap(bool addAll = false, const string& preferLanguage = "") + explicit MessageMap(bool addAll = false, const string& preferLanguage = "", bool deleteData = true) : MappedFileReader::MappedFileReader(true), m_addAll(addAll), m_additionalScanMessages(false), m_maxIdLength(0), m_maxBroadcastIdLength(0), m_messageCount(0), m_conditionalMessageCount(0), m_passiveMessageCount(0) { - m_scanMessage = Message::createScanMessage(); - m_broadcastScanMessage = Message::createScanMessage(true); + m_scanMessage = Message::createScanMessage(false, deleteData); + m_broadcastScanMessage = Message::createScanMessage(true, false); } /**