diff --git a/src/lib/ebus/data.cpp b/src/lib/ebus/data.cpp index 7578d6c7..c7113d25 100644 --- a/src/lib/ebus/data.cpp +++ b/src/lib/ebus/data.cpp @@ -165,9 +165,9 @@ void printErrorPos(vector::iterator begin, const vector::iterato result_t DataField::create(vector::iterator& it, const vector::iterator end, - DataFieldTemplates* templates, - DataField*& returnField, const bool isWriteMessage, - const unsigned char dstAddress) + DataFieldTemplates* templates, DataField*& returnField, + const bool isWriteMessage, + const bool isTemplate, const bool isBroadcastOrMasterDestination) { vector fields; string firstName, firstComment; @@ -179,7 +179,6 @@ result_t DataField::create(vector::iterator& it, string unit, comment; PartType partType; int divisor = 0; - const bool isTemplate = dstAddress == SYN; bool hasPartStr = false; string token; @@ -199,7 +198,7 @@ result_t DataField::create(vector::iterator& it, result = RESULT_ERR_MISSING_TYPE; break; } - if (dstAddress == BROADCAST || isMaster(dstAddress) + if (isBroadcastOrMasterDestination || (isWriteMessage && !hasPartStr) || strcasecmp(partStr, "M") == 0) { // master data partType = pt_masterData; diff --git a/src/lib/ebus/data.h b/src/lib/ebus/data.h index 6ddb6b3e..948142e2 100644 --- a/src/lib/ebus/data.h +++ b/src/lib/ebus/data.h @@ -160,7 +160,8 @@ public: */ static result_t create(vector::iterator& it, const vector::iterator end, DataFieldTemplates* templates, DataField*& returnField, - const bool isWriteMessage=false, const unsigned char dstAddress=SYN); + const bool isWriteMessage=false, + const bool isTemplate=true, const bool isBroadcastOrMasterDestination=false); /** * Dump the @a string optionally embedded in @a TEXT_SEPARATOR to the output.