Reduce generic log buffer to 128 chars

This commit is contained in:
Theo Arends 2021-01-02 14:59:02 +01:00
parent 78ce7b142d
commit 708d231c9c
2 changed files with 31 additions and 10 deletions

View File

@ -2172,12 +2172,22 @@ void AddLogData(uint32_t loglevel, const char* log_data) {
void AddLog_P(uint32_t loglevel, PGM_P formatP, ...) void AddLog_P(uint32_t loglevel, PGM_P formatP, ...)
{ {
char log_data[LOGSZ]; char log_data[132];
va_list arg; va_list arg;
va_start(arg, formatP); va_start(arg, formatP);
vsnprintf_P(log_data, sizeof(log_data), formatP, arg); uint32_t len = vsnprintf_P(log_data, 129, formatP, arg);
va_end(arg); va_end(arg);
if (len > 128) { strcat(log_data, "..."); } // Actual data is more
#ifdef DEBUG_TASMOTA_CORE
// Profile max_len
static uint32_t max_len = 0;
if (len > max_len) {
max_len = len;
Serial.printf("PRF: AddLog_P %d\n", max_len);
}
#endif
AddLogData(loglevel, log_data); AddLogData(loglevel, log_data);
} }
@ -2188,9 +2198,18 @@ void AddLog_Debug(PGM_P formatP, ...)
va_list arg; va_list arg;
va_start(arg, formatP); va_start(arg, formatP);
vsnprintf_P(log_data, sizeof(log_data), formatP, arg); uint32_t len = vsnprintf_P(log_data, sizeof(log_data), formatP, arg);
va_end(arg); va_end(arg);
#ifdef DEBUG_TASMOTA_CORE
// Profile max_len
static uint32_t max_len = 0;
if (len > max_len) {
max_len = len;
Serial.printf("PRF: AddLog_Debug %d\n", max_len);
}
#endif
AddLogData(LOG_LEVEL_DEBUG, log_data); AddLogData(LOG_LEVEL_DEBUG, log_data);
} }
@ -2211,13 +2230,13 @@ void AddLogMissed(const char *sensor, uint32_t misses)
} }
void AddLogBufferSize(uint32_t loglevel, uint8_t *buffer, uint32_t count, uint32_t size) { void AddLogBufferSize(uint32_t loglevel, uint8_t *buffer, uint32_t count, uint32_t size) {
char log_data[LOGSZ]; char log_data[4 + (count * size * 3)];
snprintf_P(log_data, sizeof(log_data), PSTR("DMP:")); snprintf_P(log_data, sizeof(log_data), PSTR("DMP:"));
for (uint32_t i = 0; i < count; i++) { for (uint32_t i = 0; i < count; i++) {
if (1 == size) { // uint8_t if (1 == size) { // uint8_t
snprintf_P(log_data, sizeof(log_data), PSTR("%s %02X"), log_data, *(buffer)); snprintf_P(log_data, sizeof(log_data), PSTR("%s %02X"), log_data, *(buffer));
} else { // uint16_t } else { // uint16_t
snprintf_P(log_data, sizeof(log_data), PSTR("%s %02X%02X"), log_data, *(buffer +1), *(buffer)); snprintf_P(log_data, sizeof(log_data), PSTR("%s %02X%02X"), log_data, *(buffer +1), *(buffer));
} }
buffer += size; buffer += size;

View File

@ -218,11 +218,13 @@ bool MqttPublishLib(const char* topic, bool retained) {
return result; return result;
} }
#ifdef DEBUG_TASMOTA_CORE
void MqttDumpData(char* topic, char* data, uint32_t data_len) { void MqttDumpData(char* topic, char* data, uint32_t data_len) {
char dump_data[data_len +1]; char dump_data[data_len +1];
memcpy(dump_data, data, sizeof(dump_data)); // Make another copy for removing optional control characters memcpy(dump_data, data, sizeof(dump_data)); // Make another copy for removing optional control characters
AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_MQTT D_DATA_SIZE " %d, \"%s %s\""), data_len, topic, RemoveControlCharacter(dump_data)); DEBUG_CORE_LOG(PSTR(D_LOG_MQTT "Size %d, \"%s %s\""), data_len, topic, RemoveControlCharacter(dump_data));
} }
#endif
void MqttDataHandler(char* mqtt_topic, uint8_t* mqtt_data, unsigned int data_len) { void MqttDataHandler(char* mqtt_topic, uint8_t* mqtt_data, unsigned int data_len) {
#ifdef USE_DEBUG_DRIVER #ifdef USE_DEBUG_DRIVER
@ -248,9 +250,9 @@ void MqttDataHandler(char* mqtt_topic, uint8_t* mqtt_data, unsigned int data_len
char data[data_len +1]; char data[data_len +1];
memcpy(data, mqtt_data, sizeof(data)); memcpy(data, mqtt_data, sizeof(data));
// AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_MQTT D_DATA_SIZE " %d, \"%s %s\""), data_len, topic, data); #ifdef DEBUG_TASMOTA_CORE
// if (LOG_LEVEL_DEBUG_MORE <= TasmotaGlobal.seriallog_level) { Serial.println(data); }
MqttDumpData(topic, data, data_len); // Use a function to save stack space used by dump_data MqttDumpData(topic, data, data_len); // Use a function to save stack space used by dump_data
#endif
// MQTT pre-processing // MQTT pre-processing
XdrvMailbox.index = strlen(topic); XdrvMailbox.index = strlen(topic);