From 7a5f13bcade9833f7cf32e9d75a8f07736edc6f2 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 15 Jul 2023 12:27:48 +0200 Subject: [PATCH] respond all telegram parts if request length >= 32 --- src/emsesp.cpp | 5 ++++- src/telegram.cpp | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 21d44155d..400a7d7a1 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -854,6 +854,9 @@ bool EMSESP::process_telegram(std::shared_ptr telegram) { if (telegram->type_id == response_id_) { publish_response(telegram); response_id_ = 0; + if (!read_next_) { + response_id_ = 0; + } } // check if read is finished or gives more parts if (!read_next_) { @@ -1317,7 +1320,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 - if ((response_id_ == 0) && (length >= 31) && (txservice_.read_next_tx(data[3], length) == read_id_)) { + if ((response_id_ == 0 || read_id_ > 0) && (length >= 31) && (txservice_.read_next_tx(data[3], length) == read_id_)) { read_next_ = true; } } diff --git a/src/telegram.cpp b/src/telegram.cpp index 77ba27dd0..2a89cff71 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -513,6 +513,11 @@ void TxService::add(uint8_t operation, const uint8_t * data, const uint8_t lengt } else if (dest & 0x80) { operation = Telegram::Operation::TX_READ; EMSESP::set_response_id(type_id); + // trigger read of all parts of telegram if requested length is more than 32 + // compatibility to earlier versions + if (message_data[0] >= 32) { + EMSESP::set_read_id(type_id); + } } else { operation = Telegram::Operation::TX_WRITE; validate_id = type_id;