diff --git a/src/lib/ebus/message.cpp b/src/lib/ebus/message.cpp index 990359e4..cc04747d 100644 --- a/src/lib/ebus/message.cpp +++ b/src/lib/ebus/message.cpp @@ -859,19 +859,18 @@ result_t MessageMap::add(Message* message, bool storeByName) else if (m_addAll || (conditional && first->isConditional())) m_messagesByName[nameKey].push_back(message); // store further messages only if both are conditional or if storing everything } + m_messageCount++; + if (conditional) + m_conditionalMessageCount++; + if (isPassive) + m_passiveMessageCount++; + addPollMessage(message); } - m_messageCount++; - if (conditional) - m_conditionalMessageCount++; - if (isPassive) - m_passiveMessageCount++; unsigned char idLength = (unsigned char)(message->getId().size() - 2); if (idLength > m_maxIdLength) m_maxIdLength = idLength; m_messagesByKey[key].push_back(message); - addPollMessage(message); - return RESULT_OK; } @@ -1258,14 +1257,27 @@ void MessageMap::dump(ostream& output) for (map >::iterator it = m_messagesByName.begin(); it != m_messagesByName.end(); it++) { if (it->first[0] == '-') // skip instances stored multiple times (key starting with "-") continue; - Message* message = getFirstAvailable(it->second); - if (!message) - continue; - if (first) - first = false; - else - output << endl; - message->dump(output); + if (m_addAll) { + for (vector::iterator mit = it->second.begin(); mit != it->second.end(); mit++) { + Message* message = *mit; + if (!message) + continue; + if (first) + first = false; + else + output << endl; + message->dump(output); + } + } else { + Message* message = getFirstAvailable(it->second); + if (!message) + continue; + if (first) + first = false; + else + output << endl; + message->dump(output); + } } if (!first) output << endl;