From 873567a999534ee7015b87d736e0877d2c23f99a Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 1 Mar 2023 09:01:27 +0100 Subject: [PATCH] fix some errors (#18077) fix some checksum errors in standard mode fix format error counting for DATE field --- lib/lib_div/LibTeleinfo/src/LibTeleinfo.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/lib_div/LibTeleinfo/src/LibTeleinfo.cpp b/lib/lib_div/LibTeleinfo/src/LibTeleinfo.cpp index de9d3ef21..7bec941b8 100644 --- a/lib/lib_div/LibTeleinfo/src/LibTeleinfo.cpp +++ b/lib/lib_div/LibTeleinfo/src/LibTeleinfo.cpp @@ -247,6 +247,8 @@ ValueList * TInfo::valueAdd(char * name, char * value, uint8_t checksum, uint8_t // Time stamped field? if (horodate && *horodate) { ts = horodate2Timestamp(horodate); + // We don't check horodate (not used) on storage so re calculate checksum without this one + checksum = calcChecksum(name,value) ; } // Loop thru the node @@ -275,8 +277,7 @@ ValueList * TInfo::valueAdd(char * name, char * value, uint8_t checksum, uint8_t if (strlen(me->value) >= lgvalue ) { // Copy it strlcpy(me->value, value , lgvalue + 1 ); - // store checksum for future check without horodate - me->checksum = ts ? calcChecksum(name,value) : checksum ; + me->checksum = checksum ; // That's all return (me); } else { @@ -939,8 +940,11 @@ ValueList * TInfo::checkLine(char * pline) } else { - _frameformaterror++; - AddLog(1, PSTR("LibTeleinfo::checkLine frame format error, total=%d"), _frameformaterror); + // Specific field not formated has others, don't set as an error + if ( strcmp(ptok, "DATE") ) { + _frameformaterror++; + AddLog(1, PSTR("LibTeleinfo::checkLine frame format error total=%d"), _frameformaterror); + } } } // Next char