From 7d84878cb0b30381e5e0a4fd53ab4c3bc14f0208 Mon Sep 17 00:00:00 2001 From: Embedded Innovation Date: Fri, 5 Aug 2016 12:18:24 +0200 Subject: [PATCH 1/2] Correctly initialize MyMessage --- core/MyMessage.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/core/MyMessage.cpp b/core/MyMessage.cpp index 117dfe3..13f3515 100644 --- a/core/MyMessage.cpp +++ b/core/MyMessage.cpp @@ -23,12 +23,21 @@ #include -MyMessage::MyMessage() { - destination = 0; // Gateway is default destination +MyMessage::MyMessage() + : last( 0u ) + , sender( 0u ) + , destination( 0u ) // Gateway is default destination + , version_length( 0u ) + , command_ack_payload( 0u ) + , type( 0u ) + , sensor( 0u ) +{ + (void)memset(data, 0u, sizeof(data)); } -MyMessage::MyMessage(uint8_t _sensor, uint8_t _type) { - destination = 0; // Gateway is default destination +MyMessage::MyMessage(uint8_t _sensor, uint8_t _type) + : MyMessage() +{ sensor = _sensor; type = _type; } From 5d7f2fe38b62b5431db066c59764c1deecb3c9e3 Mon Sep 17 00:00:00 2001 From: Embedded Innovation Date: Fri, 5 Aug 2016 12:41:53 +0200 Subject: [PATCH 2/2] Fix delegating constructor --- core/MyMessage.cpp | 25 +++++++++++++++---------- core/MyMessage.h | 5 +++++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/core/MyMessage.cpp b/core/MyMessage.cpp index 13f3515..027b273 100644 --- a/core/MyMessage.cpp +++ b/core/MyMessage.cpp @@ -24,22 +24,27 @@ MyMessage::MyMessage() - : last( 0u ) - , sender( 0u ) - , destination( 0u ) // Gateway is default destination - , version_length( 0u ) - , command_ack_payload( 0u ) - , type( 0u ) - , sensor( 0u ) { - (void)memset(data, 0u, sizeof(data)); + clear(); } MyMessage::MyMessage(uint8_t _sensor, uint8_t _type) - : MyMessage() { + clear(); sensor = _sensor; - type = _type; + type = _type; +} + +void MyMessage::clear() +{ + last = 0u; + sender = 0u; + destination = 0u; // Gateway is default destination + version_length = 0u; + command_ack_payload = 0u; + type = 0u; + sensor = 0u; + (void)memset(data, 0u, sizeof(data)); } bool MyMessage::isAck() const { diff --git a/core/MyMessage.h b/core/MyMessage.h index 2d37f78..aa84b49 100644 --- a/core/MyMessage.h +++ b/core/MyMessage.h @@ -282,6 +282,11 @@ public: char i2h(uint8_t i) const; + /** + * Clear message contents. + */ + void clear(); + /** * If payload is something else than P_STRING you can have the payload value converted * into string representation by supplying a buffer with the minimum size of