From 58c48584acbbfe9a6137f09704311224c5e1f56c Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 19 Jul 2024 18:40:24 +0200 Subject: [PATCH] fetch next telegram part for different offset --- src/emsesp.cpp | 2 +- src/telegram.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 18ff6ac2e..00cd93e1a 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -1489,7 +1489,7 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { // if telegram is longer read next part with offset +25 for ems+ or +27 for ems1.0 // not for response to raw send commands without read_id set - if ((response_id_ == 0 || read_id_ > 0) && (length >= 31) && (txservice_.read_next_tx(data[3], length) == read_id_)) { + if ((response_id_ == 0 || read_id_ > 0) && (txservice_.read_next_tx(data[3], length) == read_id_)) { read_next_ = true; txservice_.send(); } else { diff --git a/src/telegram.cpp b/src/telegram.cpp index fc2183c94..3872afc64 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -642,7 +642,8 @@ uint16_t TxService::read_next_tx(const uint8_t offset, const uint8_t length) { uint8_t message_data = (UINT8_MAX - next_offset) >= next_length ? next_length : UINT8_MAX - next_offset; // check telegram, offset and overflow // some telegrams only reply with one byte less, but have higher offsets (0x10) - if (old_length >= (next_length - 1) && telegram_last_->offset == offset) { + // some reply with higher offset than requestes and have not_set values intermediate (0xEA) + if (old_length >= (next_length - 1) || telegram_last_->offset < offset) { add(Telegram::Operation::TX_READ, telegram_last_->dest, telegram_last_->type_id, next_offset, &message_data, 1, 0, true); return telegram_last_->type_id; }