From fddf7af95424231d157dbd61e45f07c7bb2ec330 Mon Sep 17 00:00:00 2001 From: Matthias Prinke <83612361+matthias-bs@users.noreply.github.com> Date: Sat, 8 Oct 2022 20:37:16 +0200 Subject: [PATCH 1/2] Added getLength() --- src/LoraEncoder.cpp | 41 +++++++++++++++++++++++------------------ src/LoraEncoder.h | 2 ++ 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/LoraEncoder.cpp b/src/LoraEncoder.cpp index 9eeb78e..991d412 100644 --- a/src/LoraEncoder.cpp +++ b/src/LoraEncoder.cpp @@ -32,6 +32,7 @@ LoraEncoder::LoraEncoder(byte *buffer) { _buffer = buffer; + _offset = 0; } void LoraEncoder::_intToBytes(byte *buf, int32_t i, uint8_t byteSize) { @@ -41,38 +42,38 @@ void LoraEncoder::_intToBytes(byte *buf, int32_t i, uint8_t byteSize) { } void LoraEncoder::writeUnixtime(uint32_t unixtime) { - _intToBytes(_buffer, unixtime, 4); - _buffer += 4; + _intToBytes(_buffer + _offset, unixtime, 4); + _offset += 4; } void LoraEncoder::writeLatLng(double latitude, double longitude) { int32_t lat = latitude * 1e6; int32_t lng = longitude * 1e6; - _intToBytes(_buffer, lat, 4); - _intToBytes(_buffer + 4, lng, 4); - _buffer += 8; + _intToBytes(_buffer + _offset, lat, 4); + _intToBytes(_buffer + _offset + 4, lng, 4); + _offset += 8; } void LoraEncoder::writeUint32(uint32_t i) { - _intToBytes(_buffer, i, 4); - _buffer += 4; + _intToBytes(_buffer + _offset, i, 4); + _offset += 4; } void LoraEncoder::writeUint16(uint16_t i) { - _intToBytes(_buffer, i, 2); - _buffer += 2; + _intToBytes(_buffer + _offset, i, 2); + _offset += 2; } void LoraEncoder::writeUint8(uint8_t i) { - _intToBytes(_buffer, i, 1); - _buffer += 1; + _intToBytes(_buffer + _offset, i, 1); + _offset += 1; } void LoraEncoder::writeHumidity(float humidity) { int16_t h = (int16_t) (humidity * 100); - _intToBytes(_buffer, h, 2); - _buffer += 2; + _intToBytes(_buffer + _offset, h, 2); + _offset += 2; } /** @@ -85,9 +86,9 @@ void LoraEncoder::writeTemperature(float temperature) { t = ~-t; t = t + 1; } - _buffer[0] = (byte) ((t >> 8) & 0xFF); - _buffer[1] = (byte) t & 0xFF; - _buffer += 2; + _buffer[_offset ] = (byte) ((t >> 8) & 0xFF); + _buffer[_offset+1] = (byte) t & 0xFF; + _offset += 2; } void LoraEncoder::writeBitmap(bool a, bool b, bool c, bool d, bool e, bool f, bool g, bool h) { @@ -106,6 +107,10 @@ void LoraEncoder::writeBitmap(bool a, bool b, bool c, bool d, bool e, bool f, bo void LoraEncoder::writeRawFloat(float value) { uint32_t asbytes=*(reinterpret_cast(&value)); - _intToBytes(_buffer, asbytes, 4); - _buffer += 4; + _intToBytes(_buffer + _offset, asbytes, 4); + _offset += 4; +} + +int LoraEncoder::getLength(void) { + return _offset; } diff --git a/src/LoraEncoder.h b/src/LoraEncoder.h index 9adaf5d..a1254ea 100644 --- a/src/LoraEncoder.h +++ b/src/LoraEncoder.h @@ -47,8 +47,10 @@ class LoraEncoder { void writeHumidity(float humidity); void writeBitmap(bool a, bool b, bool c, bool d, bool e, bool f, bool g, bool h); void writeRawFloat(float value); + int getLength(void); private: byte* _buffer; + int _offset; void _intToBytes(byte *buf, int32_t i, uint8_t byteSize); }; From 06b54bd6dd30c932580275bd39e6e5d97da46727 Mon Sep 17 00:00:00 2001 From: Matthias Prinke <83612361+matthias-bs@users.noreply.github.com> Date: Sun, 9 Oct 2022 08:37:20 +0200 Subject: [PATCH 2/2] writeLatLng(): improved readability --- src/LoraEncoder.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/LoraEncoder.cpp b/src/LoraEncoder.cpp index 991d412..4a2439e 100644 --- a/src/LoraEncoder.cpp +++ b/src/LoraEncoder.cpp @@ -51,8 +51,9 @@ void LoraEncoder::writeLatLng(double latitude, double longitude) { int32_t lng = longitude * 1e6; _intToBytes(_buffer + _offset, lat, 4); - _intToBytes(_buffer + _offset + 4, lng, 4); - _offset += 8; + _offset += 4; + _intToBytes(_buffer + _offset, lng, 4); + _offset += 4; } void LoraEncoder::writeUint32(uint32_t i) {