Paparazzi UAS  v5.10_stable-5-g83a0da5-dirty
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
sdLog.c File Reference
#include <string.h>
#include <stdlib.h>
#include <ch.h>
#include <hal.h>
#include <ff.h>
#include "modules/loggers/sdlog_chibios/sdLog.h"
#include "printf.h"
#include "mcu_periph/sdio.h"
#include <ctype.h>
+ Include dependency graph for sdLog.c:

Go to the source code of this file.

Macros

#define likely(x)   __builtin_expect(!!(x), 1)
 
#define unlikely(x)   __builtin_expect(!!(x), 0)
 
#define MIN(x, y)   (((x) < (y)) ? (x) : (y))
 
#define MAX(x, y)   (((x) > (y)) ? (x) : (y))
 
#define SDLOG_NUM_BUFFER   2
 
#define SDLOG_WRITE_BUFFER_SIZE   (SDLOG_ALL_BUFFERS_SIZE/SDLOG_NUM_BUFFER)
 

Functions

static int32_t uiGetIndexOfLogFile (const char *prefix, const char *fileName)
 
static SdioError flushWriteByteBuffer (const FileDes fd)
 
SdioError sdLogInit (uint32_t *freeSpaceInKo)
 initialise sdLog More...
 
SdioError sdLogFinish (void)
 unmount filesystem More...
 
SdioError getFileName (const char *prefix, const char *directoryName, char *nextFileName, const size_t nameLength, const int indexOffset)
 get last used name for a pattern, then add offset and return valid filename More...
 
SdioError removeEmptyLogs (const char *directoryName, const char *prefix, const size_t sizeConsideredEmpty)
 remove spurious log file left on sd More...
 

Variables

static FATFS fatfs
 

Macro Definition Documentation

#define likely (   x)    __builtin_expect(!!(x), 1)

Definition at line 39 of file sdLog.c.

#define MAX (   x,
 
)    (((x) > (y)) ? (x) : (y))

Definition at line 43 of file sdLog.c.

Referenced by getFileName().

#define MIN (   x,
 
)    (((x) < (y)) ? (x) : (y))

Definition at line 42 of file sdLog.c.

Referenced by getFileName().

#define SDLOG_NUM_BUFFER   2

Definition at line 56 of file sdLog.c.

Referenced by sdLogInit().

#define SDLOG_WRITE_BUFFER_SIZE   (SDLOG_ALL_BUFFERS_SIZE/SDLOG_NUM_BUFFER)

Definition at line 63 of file sdLog.c.

#define unlikely (   x)    __builtin_expect(!!(x), 0)

Definition at line 40 of file sdLog.c.

Function Documentation

static SdioError flushWriteByteBuffer ( const FileDes  fd)
inlinestatic
SdioError getFileName ( const char *  prefix,
const char *  directoryName,
char *  nextFileName,
const size_t  nameLength,
const int  indexOffset 
)

get last used name for a pattern, then add offset and return valid filename

for log file, you often have a pattern and a version. To retreive last file for reading, call function with indexOffset=0. To get next available file for writing, call function with indexOffset=1 This function is available even without thread login facility : even if SDLOG_XXX macro are zeroed

Parameters
[in]prefix: the pattern for the file : example LOG_
[in]directoryName: root directory where to find file
[out]nextFileName: file with path ready to be used for f_open system call
[in]nameLength: length of previous buffer
[in]indexOffset: use 0 to retrieve last existent filename, 1 for next filename
Returns
status (always check status)

Definition at line 640 of file sdLog.c.

References _MAX_LFN, chsnprintf(), MAX, MIN, NUMBERFMF, NUMBERMAX, SDLOG_FATFS_ERROR, SDLOG_LOGNUM_ERROR, SDLOG_OK, and uiGetIndexOfLogFile().

+ Here is the call graph for this function:

SdioError removeEmptyLogs ( const char *  directoryName,
const char *  prefix,
const size_t  sizeConsideredEmpty 
)

remove spurious log file left on sd

when tuning firmware, log files are created at each tries, and we consider that empty or nearly empty log are of no value this function remove log file whose size is less than a given value

Parameters
[in]prefix: the pattern for the file : example LOG_
[in]directoryName: root directory where to find file
[in]sizeConsideredEmpty: file whose size is less or equal to that value will be removed
Returns
status (always check status)

Definition at line 708 of file sdLog.c.

References _MAX_LFN, SDLOG_FATFS_ERROR, SDLOG_FATFS_NOENT, and SDLOG_OK.

Referenced by thd_startlog().

+ Here is the caller graph for this function:

SdioError sdLogFinish ( void  )

unmount filesystem

unmount filesystem, free sdio peripheral This function is available even without thread login facility : even if SDLOG_XXX macro are zeroed

Returns
status (always check status)

Definition at line 224 of file sdLog.c.

References SDLOG_FATFS_ERROR, and SDLOG_OK.

Referenced by sdlog_chibios_finish().

+ Here is the caller graph for this function:

SdioError sdLogInit ( uint32_t freeSpaceInKo)

initialise sdLog

init sdio peripheral, verify sdCard is inserted, check and mount filesystem, launch worker thread This function is available even without thread login facility : even if SDLOG_XXX macro are zeroed

Parameters
[out]freeSpaceInKo: if pointer in nonnull, return free space on filesystem
Returns
status (always check status)

Definition at line 166 of file sdLog.c.

References HEAP_DEFAULT, msgqueue_init(), sdio_connect(), sdio_disconnect(), SDLOG_FATFS_ERROR, SDLOG_NOCARD, SDLOG_NUM_BUFFER, SDLOG_OK, SDLOG_QUEUE_BUCKETS, and SDLOG_WAS_LAUNCHED.

Referenced by thd_startlog().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int32_t uiGetIndexOfLogFile ( const char *  prefix,
const char *  fileName 
)
static

Definition at line 777 of file sdLog.c.

Referenced by getFileName().

+ Here is the caller graph for this function:

Variable Documentation

FATFS fatfs
static

Definition at line 142 of file sdLog.c.