From e057ed3ed767a2c070d0d760dd6e405a8e0f4c4c Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Tue, 12 Jul 2022 21:21:04 +0200 Subject: [PATCH] Fixed issue that no data in live view where shown Happend only for inverters which didn't answer any request --- lib/Hoymiles/src/inverters/InverterAbstract.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/Hoymiles/src/inverters/InverterAbstract.cpp b/lib/Hoymiles/src/inverters/InverterAbstract.cpp index dfe562b..e9e2479 100644 --- a/lib/Hoymiles/src/inverters/InverterAbstract.cpp +++ b/lib/Hoymiles/src/inverters/InverterAbstract.cpp @@ -45,6 +45,12 @@ void InverterAbstract::clearRxFragmentBuffer() _rxFragmentMaxPacketId = 0; _rxFragmentLastPacketId = 0; _rxFragmentRetransmitCnt = 0; + + // This has to be done here because: + // Not possible in constructor --> virtual function + // Not possible in verifyAllFragments --> Because no data if nothing is ever received + // It has to be executed because otherwise the getChannelCount method in stats always returns 0 + _statisticsParser.get()->setByteAssignment(getByteAssignment(), getAssignmentCount()); } void InverterAbstract::addRxFragment(uint8_t fragment[], uint8_t len) @@ -118,7 +124,6 @@ uint8_t InverterAbstract::verifyAllFragments() if (getLastRequest() == RequestType::Stats) { // Move all fragments into target buffer uint8_t offs = 0; - _statisticsParser.get()->setByteAssignment(getByteAssignment(), getAssignmentCount()); _statisticsParser.get()->clearBuffer(); for (uint8_t i = 0; i < _rxFragmentMaxPacketId; i++) { _statisticsParser.get()->appendFragment(offs, _rxFragmentBuffer[i].fragment, _rxFragmentBuffer[i].len);