From c6499e09bd18672e5283106feb72cd899e6ad3c4 Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Fri, 15 Jul 2022 22:37:42 +0200 Subject: [PATCH] Ignore fragment number zero. Should fix #29 It seems that some inverters send packages with fragment number zero and a valid CRC. Must ignore such packets! --- lib/Hoymiles/src/inverters/InverterAbstract.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/Hoymiles/src/inverters/InverterAbstract.cpp b/lib/Hoymiles/src/inverters/InverterAbstract.cpp index ffc1355a..8c7c93e2 100644 --- a/lib/Hoymiles/src/inverters/InverterAbstract.cpp +++ b/lib/Hoymiles/src/inverters/InverterAbstract.cpp @@ -66,6 +66,11 @@ void InverterAbstract::addRxFragment(uint8_t fragment[], uint8_t len) } uint8_t fragmentCount = fragment[9]; + if (fragmentCount == 0) { + Serial.println("ERROR: fragment number zero received and ignored"); + return; + } + if ((fragmentCount & 0b01111111) < MAX_RF_FRAGMENT_COUNT) { // Packets with 0x81 will be seen as 1 memcpy(_rxFragmentBuffer[(fragmentCount & 0b01111111) - 1].fragment, &fragment[10], len - 11);