From bd1587e1c96aee902750efb07fbe0ea6cd394b1e Mon Sep 17 00:00:00 2001 From: john30 Date: Sat, 6 Feb 2016 11:28:23 +0100 Subject: [PATCH] corrected termination of NTS --- src/lib/ebus/data.cpp | 5 ++++- src/lib/ebus/test/test_data.cpp | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/ebus/data.cpp b/src/lib/ebus/data.cpp index 43f79c7b..929d277d 100644 --- a/src/lib/ebus/data.cpp +++ b/src/lib/ebus/data.cpp @@ -645,6 +645,7 @@ result_t StringDataField::readSymbols(SymbolString& input, const unsigned char b size_t start = 0, count = m_length; int incr = 1; unsigned char ch, last = 0, hour = 0; + bool terminated = false; if (count==REMAIN_LEN && input.size()>baseOffset) { count = input.size()-baseOffset; } else if (baseOffset + count > input.size()) { @@ -725,7 +726,9 @@ result_t StringDataField::readSymbols(SymbolString& input, const unsigned char b default: if (ch < 0x20) ch = (unsigned char)m_dataType.replacement; - if (ch != 0x00) + if (ch == 0x00) + terminated = true; + else if (!terminated) output << setw(0) << dec << static_cast(ch); break; } diff --git a/src/lib/ebus/test/test_data.cpp b/src/lib/ebus/test/test_data.cpp index deff2d76..0c3550b8 100644 --- a/src/lib/ebus/test/test_data.cpp +++ b/src/lib/ebus/test/test_data.cpp @@ -62,6 +62,7 @@ int main() {"x,,nts:10", "Hallo, Du", "10fe07000a48616c6c6f2c20447500", "00", ""}, {"x,,nts:10", " ", "10fe07000a20202020202020202020", "00", ""}, {"x,,nts:10", "", "10fe07000a00000000000000000000", "00", ""}, + {"x,,nts:10", "abc", "10fe07000a6162630065666768696a", "00", "W"}, {"x,,nts:11", "", "10fe07000a20202020202020202020", "00", "rW"}, {"x,,nts:24", "abcdefghijklmnopqrstuvwx", "10fe0700186162636465666768696a6b6c6d6e6f707172737475767778", "00", ""}, {"x,,nts:*", "abcde", "10fe0700056162636465", "00", "W"},