raw send priority, don't retry rejected telegrams

This commit is contained in:
MichaelDvP
2024-11-14 07:48:28 +01:00
parent 9e8faaab64
commit d899b58284

View File

@@ -971,7 +971,12 @@ void EMSESP::process_deviceName(std::shared_ptr<const Telegram> telegram) {
char name[16];
uint8_t len = telegram->offset + telegram->message_length - 27;
strlcpy(name, (const char *)&telegram->message_data[27 - telegram->offset], len < 16 ? len : 16);
if (strlen(name)) {
char * c = name;
while (isprint(*c)) {
c++;
};
*c = '\0';
if (strlen(name) > 2) { // https://github.com/emsesp/EMS-ESP32/issues/2166#issuecomment-2454488657
LOG_DEBUG("Model name received for device 0x%02X: %s", telegram->src, name);
for (const auto & emsdevice : emsdevices) {
if (emsdevice->is_device_id(telegram->src)) {
@@ -1462,6 +1467,11 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) {
} else if (first_value == TxService::TX_WRITE_FAIL) {
LOG_ERROR("Last Tx write rejected by host");
txservice_.send_poll(); // close the bus
txservice_.reset_retry_count();
tx_successful = true; // no retries
} else {
txservice_.send_poll(); // close the bus
LOG_ERROR("Last Tx write host reply: 0x%02X", first_value);
}
} else if (tx_state == Telegram::Operation::TX_READ && length == 1) {
EMSbus::tx_state(Telegram::Operation::TX_READ); // reset Tx wait state
@@ -1528,9 +1538,11 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) {
// check for poll to us, if so send top message from Tx queue immediately and quit
if (poll_id == txservice_.get_send_id()) {
txservice_.send();
} else {
// send remote room temperature if active
Roomctrl::send(poll_id);
}
// send remote room temperature if active
Roomctrl::send(poll_id);
return;
} else {
#ifdef EMSESP_UART_DEBUG