add debug_memory_log_buffer.c
This commit is contained in:
52
lib_logging/lib_logging/src/debug_memory_log_buffer.c
Normal file
52
lib_logging/lib_logging/src/debug_memory_log_buffer.c
Normal file
@@ -0,0 +1,52 @@
|
||||
//#define DEBUG_MEMORY_LOG_ENABLED 1
|
||||
#if DEBUG_MEMORY_LOG_ENABLED
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
unsigned long get_reference_time();
|
||||
int itoa(unsigned n, char *buf, unsigned base, int fill);
|
||||
unsigned int debug_memory_log_buffer_index = 0;
|
||||
#define DEBUG_MEMORY_LOG_BUFFER_SIZE 4048
|
||||
unsigned char debug_memory_log_buffer[DEBUG_MEMORY_LOG_BUFFER_SIZE];
|
||||
|
||||
// Override the weak symbol used for print messages
|
||||
int _write(int fd, const unsigned char *data, size_t len) {
|
||||
#ifndef NO_LOG_TIMESTAPS
|
||||
unsigned t = get_reference_time();
|
||||
char ch_time[8];
|
||||
|
||||
itoa(t, ch_time, 10, 0);
|
||||
|
||||
if ((debug_memory_log_buffer_index + 9 + 1) > DEBUG_MEMORY_LOG_BUFFER_SIZE)
|
||||
debug_memory_log_buffer_index = 0;
|
||||
|
||||
for(unsigned int i = 0; i < 8; i++) {
|
||||
debug_memory_log_buffer[debug_memory_log_buffer_index] = ch_time[i];
|
||||
debug_memory_log_buffer_index++;
|
||||
}
|
||||
|
||||
debug_memory_log_buffer[debug_memory_log_buffer_index] = ' ';
|
||||
debug_memory_log_buffer_index++;
|
||||
#endif
|
||||
|
||||
// Check for wrap of the circular buffer
|
||||
if ((debug_memory_log_buffer_index + len + 1) > DEBUG_MEMORY_LOG_BUFFER_SIZE)
|
||||
debug_memory_log_buffer_index = 0;
|
||||
|
||||
// Copy write message into log buffer
|
||||
for(unsigned int i = 0; i < len; i++) {
|
||||
debug_memory_log_buffer[debug_memory_log_buffer_index] = data[i];
|
||||
debug_memory_log_buffer_index++;
|
||||
}
|
||||
|
||||
// Terminate the whole buffer after the current message
|
||||
debug_memory_log_buffer[debug_memory_log_buffer_index] = '\0';
|
||||
|
||||
#if UART_DEBUG
|
||||
print_uart(data, len);
|
||||
#endif
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user