diff --git a/libraries/MySensors/MyMessage.cpp b/libraries/MySensors/MyMessage.cpp index 9bf6a76..7143e9c 100755 --- a/libraries/MySensors/MyMessage.cpp +++ b/libraries/MySensors/MyMessage.cpp @@ -13,12 +13,10 @@ MyMessage::MyMessage(uint8_t _sensor, uint8_t _type) { type = _type; } - bool MyMessage::isAck() const { return miGetAck(); } - /* Getters for payload converted to desired form */ void* MyMessage::getCustom() const { return (void *)data; @@ -42,16 +40,20 @@ char MyMessage::i2h(uint8_t i) const { return 'A' + k - 10; } +char* MyMessage::getCustomString(char *buffer) const { + for (uint8_t i = 0; i < miGetLength(); i++) + { + buffer[i * 2] = i2h(data[i] >> 4); + buffer[(i * 2) + 1] = i2h(data[i]); + } + buffer[miGetLength() * 2] = '\0'; + return buffer; +} + char* MyMessage::getStream(char *buffer) const { uint8_t cmd = miGetCommand(); if ((cmd == C_STREAM) && (buffer != NULL)) { - for (uint8_t i = 0; i < miGetLength(); i++) - { - buffer[i * 2] = i2h(data[i] >> 4); - buffer[(i * 2) + 1] = i2h(data[i]); - } - buffer[miGetLength() * 2] = '\0'; - return buffer; + return getCustomString(buffer); } else { return NULL; } @@ -73,12 +75,11 @@ char* MyMessage::getString(char *buffer) const { } else if (payloadType == P_LONG32) { ltoa(lValue, buffer, 10); } else if (payloadType == P_ULONG32) { - ultoa(ulValue, buffer, 10); } else if (payloadType == P_FLOAT32) { dtostrf(fValue,2,fPrecision,buffer); } else if (payloadType == P_CUSTOM) { - return getStream(buffer); + return getCustomString(buffer); } return buffer; } else { @@ -151,7 +152,6 @@ unsigned int MyMessage::getUInt() const { } - MyMessage& MyMessage::setType(uint8_t _type) { type = _type; return *this; @@ -175,7 +175,6 @@ MyMessage& MyMessage::set(void* value, uint8_t length) { return *this; } - MyMessage& MyMessage::set(const char* value) { uint8_t length = min(strlen(value), MAX_PAYLOAD); miSetLength(length); @@ -191,7 +190,6 @@ MyMessage& MyMessage::set(uint8_t value) { return *this; } - MyMessage& MyMessage::set(float value, uint8_t decimals) { miSetLength(5); // 32 bit float + persi miSetPayloadType(P_FLOAT32); @@ -227,5 +225,3 @@ MyMessage& MyMessage::set(int value) { iValue = value; return *this; } - - diff --git a/libraries/MySensors/MyMessage.h b/libraries/MySensors/MyMessage.h index 1cacaaf..643bdb2 100644 --- a/libraries/MySensors/MyMessage.h +++ b/libraries/MySensors/MyMessage.h @@ -122,6 +122,9 @@ typedef enum { #ifdef __cplusplus class MyMessage { +private: + char* getCustomString(char *buffer) const; + public: // Constructors MyMessage();