file_logger.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdbool.h>
#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"
#include "file_logger.h"
#include "lpc_sys.h"
#include "rtc.h"
#include "ff.h"
Include dependency graph for file_logger.c:

Functions

void logger_send_flush_request (void)
 
uint32_t logger_get_logged_call_count (logger_msg_t severity)
 
uint16_t logger_get_blocked_call_count (void)
 
uint16_t logger_get_highest_file_write_time_ms (void)
 
uint16_t logger_get_num_buffers_watermark (void)
 
void logger_init (uint8_t logger_priority)
 
void logger_set_printf (logger_msg_t type, bool enable)
 
void logger_log (logger_msg_t type, const char *filename, const char *func_name, unsigned line_num, const char *msg,...)
 
void logger_log_raw (const char *msg,...)
 

Function Documentation

uint16_t logger_get_blocked_call_count ( void  )
Returns
the number of logging calls that ended up blocking or sleeping the task waiting for a logger buffer to be available.

If the number is greater than zero, it indicates that you either need to slow down logger calls, or increase the number of log buffers.

uint16_t logger_get_highest_file_write_time_ms ( void  )
Returns
the highest time that was spend writing the logger buffer to file. This can be useful to assess how many FILE_LOGGER_NUM_BUFFERS we need because we only need enough buffers available while the file buffer is being written.
uint32_t logger_get_logged_call_count ( logger_msg_t  severity)
Returns
the number of logged messages for the given severity.
Parameters
[in]severityThe severity for which to get the number of calls.
uint16_t logger_get_num_buffers_watermark ( void  )
Returns
the highest watermark of the number of buffers available to the logger This can be useful to assess how many FILE_LOGGER_NUM_BUFFERS we need in the worst case.
void logger_init ( uint8_t  logger_priority)

Initializes the logger; this must be done before further logging calls are used.

Parameters
[in]logger_priorityThe priority at which logger should buffer user data and then write to file.
void logger_log ( logger_msg_t  type,
const char *  filename,
const char *  func_name,
unsigned  line_num,
const char *  msg,
  ... 
)

Logs a message. You should not use this directly, the macros pass the arguments to this function.

void logger_log_raw ( const char *  msg,
  ... 
)
See also
LOG_RAW_MSG() You should not use this directly, the macros pass the arguments to this function.
void logger_send_flush_request ( void  )

Flushes the cached log data to the file

Postcondition
This will send a special request on the logger queue to flush the data, so the actual flushing will finish by the logger task at a later time.
Note
Flushing is not needed when the OS is running.
void logger_set_printf ( logger_msg_t  type,
bool  enable 
)

Enables the given logging severity call to be also printed on printf()

Parameters
[in]typeThe severity for which the logging call will be printed
[in]enableIf true, the severity level will also get printed to the screen

Note that if a lot of data is being printed, the logger call may take a while until the stdio printf() returns back.