mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 08:49:52 +03:00
fix showing data len on send and also show CRC with raw (minor cosmetic changes)
This commit is contained in:
22
src/ems.cpp
22
src/ems.cpp
@@ -543,7 +543,7 @@ void _debugPrintTelegram(const char * prefix, _EMS_RxTelegram * EMS_RxTelegram,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (raw) {
|
if (raw) {
|
||||||
strlcat(output_str, _hextoa(data[length - 1], buffer), sizeof(output_str));
|
strlcat(output_str, _hextoa(data[length - 1], buffer), sizeof(output_str)); // CRC
|
||||||
} else {
|
} else {
|
||||||
strlcat(output_str, "(CRC=", sizeof(output_str));
|
strlcat(output_str, "(CRC=", sizeof(output_str));
|
||||||
strlcat(output_str, _hextoa(data[length - 1], buffer), sizeof(output_str));
|
strlcat(output_str, _hextoa(data[length - 1], buffer), sizeof(output_str));
|
||||||
@@ -592,6 +592,8 @@ void _ems_sendTelegram() {
|
|||||||
|
|
||||||
// if we're in raw mode just fire and forget
|
// if we're in raw mode just fire and forget
|
||||||
if (EMS_TxTelegram.action == EMS_TX_TELEGRAM_RAW) {
|
if (EMS_TxTelegram.action == EMS_TX_TELEGRAM_RAW) {
|
||||||
|
EMS_TxTelegram.data[EMS_TxTelegram.length - 1] = _crcCalculator(EMS_TxTelegram.data, EMS_TxTelegram.length); // add the CRC
|
||||||
|
|
||||||
if (EMS_Sys_Status.emsLogging != EMS_SYS_LOGGING_NONE) {
|
if (EMS_Sys_Status.emsLogging != EMS_SYS_LOGGING_NONE) {
|
||||||
_EMS_RxTelegram EMS_RxTelegram; // create new Rx object
|
_EMS_RxTelegram EMS_RxTelegram; // create new Rx object
|
||||||
EMS_RxTelegram.length = EMS_TxTelegram.length; // full length of telegram
|
EMS_RxTelegram.length = EMS_TxTelegram.length; // full length of telegram
|
||||||
@@ -600,8 +602,7 @@ void _ems_sendTelegram() {
|
|||||||
_debugPrintTelegram("Sending raw: ", &EMS_RxTelegram, COLOR_CYAN, true);
|
_debugPrintTelegram("Sending raw: ", &EMS_RxTelegram, COLOR_CYAN, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
EMS_TxTelegram.data[EMS_TxTelegram.length - 1] = _crcCalculator(EMS_TxTelegram.data, EMS_TxTelegram.length); // add the CRC
|
_EMS_TX_STATUS _txStatus = emsuart_tx_buffer(EMS_TxTelegram.data, EMS_TxTelegram.length); // send the telegram to the UART Tx
|
||||||
_EMS_TX_STATUS _txStatus = emsuart_tx_buffer(EMS_TxTelegram.data, EMS_TxTelegram.length); // send the telegram to the UART Tx
|
|
||||||
if (EMS_TX_BRK_DETECT == _txStatus || EMS_TX_WTD_TIMEOUT == _txStatus) {
|
if (EMS_TX_BRK_DETECT == _txStatus || EMS_TX_WTD_TIMEOUT == _txStatus) {
|
||||||
// Tx Error!
|
// Tx Error!
|
||||||
if (EMS_Sys_Status.emsLogging == EMS_SYS_LOGGING_VERBOSE) {
|
if (EMS_Sys_Status.emsLogging == EMS_SYS_LOGGING_VERBOSE) {
|
||||||
@@ -657,9 +658,10 @@ void _ems_sendTelegram() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_EMS_RxTelegram EMS_RxTelegram;
|
_EMS_RxTelegram EMS_RxTelegram;
|
||||||
EMS_RxTelegram.length = EMS_TxTelegram.length; // complete length of telegram
|
EMS_RxTelegram.length = EMS_TxTelegram.length; // complete length of telegram incl CRC
|
||||||
EMS_RxTelegram.telegram = EMS_TxTelegram.data;
|
EMS_RxTelegram.data_length = (EMS_TxTelegram.length - 5); // note EMS+ will be 2 bytes more
|
||||||
EMS_RxTelegram.timestamp = millis(); // now
|
EMS_RxTelegram.telegram = EMS_TxTelegram.data;
|
||||||
|
EMS_RxTelegram.timestamp = millis(); // now
|
||||||
_debugPrintTelegram(s, &EMS_RxTelegram, COLOR_CYAN);
|
_debugPrintTelegram(s, &EMS_RxTelegram, COLOR_CYAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1173,6 +1175,9 @@ void _processType(_EMS_RxTelegram * EMS_RxTelegram) {
|
|||||||
|
|
||||||
if (EMS_TxTelegram.action == EMS_TX_TELEGRAM_VALIDATE) {
|
if (EMS_TxTelegram.action == EMS_TX_TELEGRAM_VALIDATE) {
|
||||||
// this is a read telegram which we use to validate the last write
|
// this is a read telegram which we use to validate the last write
|
||||||
|
|
||||||
|
// TODO fix for EMS+ as data will be in a different address. See https://github.com/proddy/EMS-ESP/issues/145
|
||||||
|
|
||||||
uint8_t * data = telegram + 4; // data block starts at position 5
|
uint8_t * data = telegram + 4; // data block starts at position 5
|
||||||
uint8_t dataReceived = data[0]; // only a single byte is returned after a read
|
uint8_t dataReceived = data[0]; // only a single byte is returned after a read
|
||||||
if (EMS_TxTelegram.comparisonValue == dataReceived) {
|
if (EMS_TxTelegram.comparisonValue == dataReceived) {
|
||||||
@@ -2391,10 +2396,6 @@ void ems_sendRawTelegram(char * telegram) {
|
|||||||
char * p;
|
char * p;
|
||||||
char value[10] = {0};
|
char value[10] = {0};
|
||||||
|
|
||||||
if (ems_getTxDisabled()) {
|
|
||||||
return; // user has disabled all Tx
|
|
||||||
}
|
|
||||||
|
|
||||||
_EMS_TxTelegram EMS_TxTelegram = EMS_TX_TELEGRAM_NEW; // create new Tx
|
_EMS_TxTelegram EMS_TxTelegram = EMS_TX_TELEGRAM_NEW; // create new Tx
|
||||||
EMS_TxTelegram.timestamp = millis(); // set timestamp
|
EMS_TxTelegram.timestamp = millis(); // set timestamp
|
||||||
EMS_Sys_Status.txRetryCount = 0; // reset retry counter
|
EMS_Sys_Status.txRetryCount = 0; // reset retry counter
|
||||||
@@ -2424,7 +2425,6 @@ void ems_sendRawTelegram(char * telegram) {
|
|||||||
return; // nothing to send
|
return; // nothing to send
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate length including header and CRC
|
|
||||||
EMS_TxTelegram.length = count + 2;
|
EMS_TxTelegram.length = count + 2;
|
||||||
EMS_TxTelegram.type_validate = EMS_ID_NONE;
|
EMS_TxTelegram.type_validate = EMS_ID_NONE;
|
||||||
EMS_TxTelegram.action = EMS_TX_TELEGRAM_RAW;
|
EMS_TxTelegram.action = EMS_TX_TELEGRAM_RAW;
|
||||||
|
|||||||
Reference in New Issue
Block a user