mirror of https://github.com/arendst/Tasmota.git
Removed logging and changed maximum number of coils/inputs
This commit is contained in:
parent
f57acac48b
commit
728c108294
|
@ -25,6 +25,7 @@
|
||||||
extern void AddLog(uint32_t loglevel, PGM_P formatP, ...);
|
extern void AddLog(uint32_t loglevel, PGM_P formatP, ...);
|
||||||
enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE};
|
enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE};
|
||||||
|
|
||||||
|
//#define TASMOTAMODBUSDEBUG
|
||||||
|
|
||||||
TasmotaModbus::TasmotaModbus(int receive_pin, int transmit_pin) : TasmotaSerial(receive_pin, transmit_pin, 1)
|
TasmotaModbus::TasmotaModbus(int receive_pin, int transmit_pin) : TasmotaSerial(receive_pin, transmit_pin, 1)
|
||||||
{
|
{
|
||||||
|
@ -134,7 +135,8 @@ uint8_t TasmotaModbus::Send(uint8_t device_address, uint8_t function_code, uint1
|
||||||
uint16_t crc = CalculateCRC(frame, framepointer);
|
uint16_t crc = CalculateCRC(frame, framepointer);
|
||||||
frame[framepointer++] = (uint8_t)(crc);
|
frame[framepointer++] = (uint8_t)(crc);
|
||||||
frame[framepointer++] = (uint8_t)(crc >> 8);
|
frame[framepointer++] = (uint8_t)(crc >> 8);
|
||||||
|
|
||||||
|
#ifdef TASMOTAMODBUSDEBUG
|
||||||
uint8_t *buf;
|
uint8_t *buf;
|
||||||
uint16_t bufsize=(framepointer + 1) * 3;
|
uint16_t bufsize=(framepointer + 1) * 3;
|
||||||
buf = (uint8_t *)malloc(bufsize);
|
buf = (uint8_t *)malloc(bufsize);
|
||||||
|
@ -144,6 +146,7 @@ uint8_t TasmotaModbus::Send(uint8_t device_address, uint8_t function_code, uint1
|
||||||
snprintf((char *)&buf[i*3], (bufsize-i*3), "%02X ",frame[i]);
|
snprintf((char *)&buf[i*3], (bufsize-i*3), "%02X ",frame[i]);
|
||||||
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("MBS: Serial Send: %s"), buf);
|
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("MBS: Serial Send: %s"), buf);
|
||||||
free(buf);
|
free(buf);
|
||||||
|
#endif
|
||||||
|
|
||||||
flush();
|
flush();
|
||||||
write(frame, framepointer);
|
write(frame, framepointer);
|
||||||
|
@ -181,6 +184,7 @@ uint8_t TasmotaModbus::ReceiveBuffer(uint8_t *buffer, uint8_t register_count, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef TASMOTAMODBUSDEBUG
|
||||||
// RX Logging
|
// RX Logging
|
||||||
uint8_t *buf;
|
uint8_t *buf;
|
||||||
uint16_t bufsize=(mb_len + 1) * 3;
|
uint16_t bufsize=(mb_len + 1) * 3;
|
||||||
|
@ -191,6 +195,7 @@ uint8_t TasmotaModbus::ReceiveBuffer(uint8_t *buffer, uint8_t register_count, ui
|
||||||
snprintf((char *)&buf[i*3], (bufsize-i*3), "%02X ",buffer[i]);
|
snprintf((char *)&buf[i*3], (bufsize-i*3), "%02X ",buffer[i]);
|
||||||
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("MBS: Serial Received: %s"), buf);
|
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("MBS: Serial Received: %s"), buf);
|
||||||
free(buf);
|
free(buf);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (buffer[1] & 0x80)
|
if (buffer[1] & 0x80)
|
||||||
{ // 01 84 02 f2 f1
|
{ // 01 84 02 f2 f1
|
||||||
|
|
|
@ -317,6 +317,7 @@ void ModbusBridgeHandle(void)
|
||||||
|
|
||||||
modbusBridge.byteCount = 0;
|
modbusBridge.byteCount = 0;
|
||||||
ModbusBridgeError errorcode = ModbusBridgeError::noerror;
|
ModbusBridgeError errorcode = ModbusBridgeError::noerror;
|
||||||
|
|
||||||
if (modbusBridge.deviceAddress == 0)
|
if (modbusBridge.deviceAddress == 0)
|
||||||
{
|
{
|
||||||
#ifdef USE_MODBUS_BRIDGE_TCP
|
#ifdef USE_MODBUS_BRIDGE_TCP
|
||||||
|
@ -682,12 +683,10 @@ void ModbusTCPHandle(void)
|
||||||
if (dataPointer % 2 == 0)
|
if (dataPointer % 2 == 0)
|
||||||
{
|
{
|
||||||
writeData[dataPointer / 2] = (uint16_t)(((uint16_t)modbusBridgeTCP.tcp_buf[dataStartByte + dataPointer]) << 8);
|
writeData[dataPointer / 2] = (uint16_t)(((uint16_t)modbusBridgeTCP.tcp_buf[dataStartByte + dataPointer]) << 8);
|
||||||
AddLog(LOG_LEVEL_DEBUG_MORE, "%d=%04X", dataPointer/2, writeData[dataPointer/2]);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
writeData[dataPointer / 2] |= ((uint16_t)modbusBridgeTCP.tcp_buf[dataStartByte + dataPointer]);
|
writeData[dataPointer / 2] |= ((uint16_t)modbusBridgeTCP.tcp_buf[dataStartByte + dataPointer]);
|
||||||
AddLog(LOG_LEVEL_DEBUG_MORE, "%d=%04X", dataPointer/2, writeData[dataPointer/2]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -806,7 +805,10 @@ void CmndModbusBridgeSend(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prevent buffer overflow due to usage of to many registers
|
// Prevent buffer overflow due to usage of to many registers
|
||||||
if (modbusBridge.dataCount > MBR_MAX_REGISTERS)
|
if ((!bitMode) && (modbusBridge.dataCount > MBR_MAX_REGISTERS))
|
||||||
|
errorcode = ModbusBridgeError::wrongcount;
|
||||||
|
|
||||||
|
if ((bitMode) && (modbusBridge.dataCount > MBR_MAX_REGISTERS * 8))
|
||||||
errorcode = ModbusBridgeError::wrongcount;
|
errorcode = ModbusBridgeError::wrongcount;
|
||||||
|
|
||||||
// Get Json data for writing
|
// Get Json data for writing
|
||||||
|
|
Loading…
Reference in New Issue