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) {
const static char SYSLOG_HEADER[] = "<133>1 ";
#define MAX_PREFIX_SIZE 20
int res = -1;
int offset = 0;
char msgBuffer[MSGBUFFER_SIZE+20];
memset(msgBuffer, 0, MSGBUFFER_SIZE+20);
char msgBuffer[MSGBUFFER_SIZE+MAX_PREFIX_SIZE];
char *bufferStart;
memset(msgBuffer, 0, MSGBUFFER_SIZE+MAX_PREFIX_SIZE);
strcpy(msgBuffer, SYSLOG_HEADER);
offset += strlen(SYSLOG_HEADER);
if (pre) {
strcpy(msgBuffer+offset, pre);
offset += strlen(pre);
uint16_t syslogHeaderSize = strlen(SYSLOG_HEADER);
uint16_t preSize = (pre) ? strlen(pre) : 0;
uint16_t prefixSize = (syslogHeaderSize > preSize) ? syslogHeaderSize : preSize;
if (prefixSize > MAX_PREFIX_SIZE) {
return -1;
}
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 (true || syslogToo) {
memcpy(bufferStart - syslogHeaderSize, SYSLOG_HEADER, syslogHeaderSize);
syslog(bufferStart - syslogHeaderSize);
}
if (pre) {
memcpy(bufferStart - preSize, pre, preSize);
}
if (post) {
strcat(msgBuffer, post);
strcat(bufferStart - preSize, post);
}
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);
if (-1 == res) {
@ -95,11 +105,8 @@ static int innerLogMsg(const char *pre, const char *post, bool syslogToo, const
schAdd(flashGreenLed, NULL, 100, 0);
}
debugTxCpltCallback(NULL);
if (true) {
syslog(msgBuffer);
}
}
return res;
}