This commit is contained in:
Wolfgang Hottgenroth 2020-11-17 11:28:43 +01:00
parent 6b593988ec
commit ccf6982b62
Signed by: wn
GPG Key ID: 6C1E5E531E0D5D7F

View File

@ -66,27 +66,37 @@ static void flashGreenLed(void *handle) {
static int innerLogMsg(const char *pre, const char *post, bool syslogToo, const char *format, va_list vl) { static int innerLogMsg(const char *pre, const char *post, bool syslogToo, const char *format, va_list vl) {
const static char SYSLOG_HEADER[] = "<133>1 "; const static char SYSLOG_HEADER[] = "<133>1 ";
#define MAX_PREFIX_SIZE 20
int res = -1; int res = -1;
int offset = 0; int offset = 0;
char msgBuffer[MSGBUFFER_SIZE+20]; char msgBuffer[MSGBUFFER_SIZE+MAX_PREFIX_SIZE];
memset(msgBuffer, 0, MSGBUFFER_SIZE+20); char *bufferStart;
memset(msgBuffer, 0, MSGBUFFER_SIZE+MAX_PREFIX_SIZE);
uint16_t syslogHeaderSize = strlen(SYSLOG_HEADER);
strcpy(msgBuffer, SYSLOG_HEADER); uint16_t preSize = (pre) ? strlen(pre) : 0;
offset += strlen(SYSLOG_HEADER); uint16_t prefixSize = (syslogHeaderSize > preSize) ? syslogHeaderSize : preSize;
if (pre) { if (prefixSize > MAX_PREFIX_SIZE) {
strcpy(msgBuffer+offset, pre); return -1;
offset += strlen(pre);
} }
int vcnt = vsnprintf(msgBuffer+offset, MSGBUFFER_SIZE, format, vl); bufferStart = msgBuffer + prefixSize;
int vcnt = vsnprintf(bufferStart, MSGBUFFER_SIZE, format, vl);
if (vcnt < MSGBUFFER_SIZE) { if (vcnt < MSGBUFFER_SIZE) {
if (true || syslogToo) {
memcpy(bufferStart - syslogHeaderSize, SYSLOG_HEADER, syslogHeaderSize);
syslog(bufferStart - syslogHeaderSize);
}
if (pre) {
memcpy(bufferStart - preSize, pre, preSize);
}
if (post) { if (post) {
strcat(msgBuffer, post); strcat(bufferStart - preSize, post);
} }
HAL_NVIC_DisableIRQ(UART4_IRQn); HAL_NVIC_DisableIRQ(UART4_IRQn);
res = ringbufferPut(&logBuffer, (uint8_t*) msgBuffer, strlen(msgBuffer)); res = ringbufferPut(&logBuffer, (uint8_t*) (bufferStart - preSize), strlen(bufferStart - preSize));
HAL_NVIC_EnableIRQ(UART4_IRQn); HAL_NVIC_EnableIRQ(UART4_IRQn);
if (-1 == res) { if (-1 == res) {
@ -95,11 +105,8 @@ static int innerLogMsg(const char *pre, const char *post, bool syslogToo, const
schAdd(flashGreenLed, NULL, 100, 0); schAdd(flashGreenLed, NULL, 100, 0);
} }
debugTxCpltCallback(NULL); debugTxCpltCallback(NULL);
if (true) {
syslog(msgBuffer);
}
} }
return res; return res;
} }