diff --git a/tasmota/include/tasmota_globals.h b/tasmota/include/tasmota_globals.h index 33e719e1f..fce339e63 100644 --- a/tasmota/include/tasmota_globals.h +++ b/tasmota/include/tasmota_globals.h @@ -46,7 +46,7 @@ extern "C" void resetPins(); extern "C" int startWaveformClockCycles(uint8_t pin, uint32_t highCcys, uint32_t lowCcys, uint32_t runTimeCcys, int8_t alignPhase, uint32_t phaseOffsetCcys, bool autoPwm); #ifdef USE_SERIAL_BRIDGE -void SerialBridgeLog(const char *mxtime, const char *log_data = nullptr, const char *log_data_payload = nullptr, const char *log_data_retained = nullptr); +void SerialBridgePrintf(PGM_P formatP, ...); #endif #ifdef USE_INFLUXDB void InfluxDbProcess(bool use_copy = false); diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index c3c82d8b0..e1cd0d19c 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -2593,9 +2593,9 @@ void AddLogData(uint32_t loglevel, const char* log_data, const char* log_data_pa if ((loglevel <= TasmotaGlobal.seriallog_level) && (TasmotaGlobal.masterlog_level <= TasmotaGlobal.seriallog_level)) { - TasConsole.printf("%s%s%s%s\r\n", mxtime, log_data, log_data_payload, log_data_retained); + TasConsole.printf("%s%s%s%s\n", mxtime, log_data, log_data_payload, log_data_retained); #ifdef USE_SERIAL_BRIDGE - SerialBridgeLog(mxtime, log_data, log_data_payload, log_data_retained); + SerialBridgePrintf("%s%s%s%s\n", mxtime, log_data, log_data_payload, log_data_retained); #endif // USE_SERIAL_BRIDGE } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino b/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino index d9fa4c6d2..5bc6bbc23 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino @@ -64,14 +64,17 @@ void SetSSerialConfig(uint32_t serial_config) { } } -void SerialBridgeLog(const char *mxtime, const char *log_data, const char *log_data_payload, const char *log_data_retained) { +void SerialBridgePrintf(PGM_P formatP, ...) { #ifdef USE_SERIAL_BRIDGE_TEE if (Settings->sbflag1.serbridge_console && serial_bridge_buffer) { - char empty[2] = { 0 }; - if (!log_data) { log_data = empty; } - if (!log_data_payload) { log_data_payload = empty; } - if (!log_data_retained) { log_data_retained = empty; } - SerialBridgeSerial->printf("%s%s%s%s\r\n", mxtime, log_data, log_data_payload, log_data_retained); + va_list arg; + va_start(arg, formatP); + char* data = ext_vsnprintf_malloc_P(formatP, arg); + va_end(arg); + if (data == nullptr) { return; } + + SerialBridgeSerial->printf(data); + free(data); } #endif // USE_SERIAL_BRIDGE_TEE } @@ -182,6 +185,7 @@ void SerialBridgeInit(void) { serial_bridge_buffer = (char*)(malloc(SERIAL_BRIDGE_BUFFER_SIZE)); } SerialBridgeSerial->flush(); + SerialBridgePrintf("\n"); } } } @@ -236,7 +240,7 @@ void CmndSSerialSend(void) { #ifdef USE_SERIAL_BRIDGE_TEE if (9 == XdrvMailbox.index) { if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 1)) { - Settings->sbflag1.serbridge_console = XdrvMailbox.payload &1; + Settings->sbflag1.serbridge_console = XdrvMailbox.payload; } ResponseCmndStateText(Settings->sbflag1.serbridge_console); } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino index b08385f06..6fddb151a 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino @@ -638,6 +638,9 @@ extern "C" { va_end(arg); if (len+3 > LOGSZ) { strcat(log_data, "..."); } // Actual data is more TasConsole.printf(log_data); +#ifdef USE_SERIAL_BRIDGE + SerialBridgePrintf(log_data); +#endif // USE_SERIAL_BRIDGE } void berry_log_C(const char * berry_buf, ...) {