mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 08:49:52 +03:00
respond all telegram parts if request length >= 32
This commit is contained in:
@@ -854,6 +854,9 @@ bool EMSESP::process_telegram(std::shared_ptr<const Telegram> telegram) {
|
|||||||
if (telegram->type_id == response_id_) {
|
if (telegram->type_id == response_id_) {
|
||||||
publish_response(telegram);
|
publish_response(telegram);
|
||||||
response_id_ = 0;
|
response_id_ = 0;
|
||||||
|
if (!read_next_) {
|
||||||
|
response_id_ = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// check if read is finished or gives more parts
|
// check if read is finished or gives more parts
|
||||||
if (!read_next_) {
|
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
|
// if telegram is longer read next part with offset +25 for ems+ or +27 for ems1.0
|
||||||
// not for response to raw send commands
|
// 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;
|
read_next_ = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -513,6 +513,11 @@ void TxService::add(uint8_t operation, const uint8_t * data, const uint8_t lengt
|
|||||||
} else if (dest & 0x80) {
|
} else if (dest & 0x80) {
|
||||||
operation = Telegram::Operation::TX_READ;
|
operation = Telegram::Operation::TX_READ;
|
||||||
EMSESP::set_response_id(type_id);
|
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 {
|
} else {
|
||||||
operation = Telegram::Operation::TX_WRITE;
|
operation = Telegram::Operation::TX_WRITE;
|
||||||
validate_id = type_id;
|
validate_id = type_id;
|
||||||
|
|||||||
Reference in New Issue
Block a user