Firmware
Macros | Functions | Variables
px4_log.h File Reference

Platform dependant logging/debug implementation. More...

#include <inttypes.h>
#include <stdint.h>
#include <sys/cdefs.h>
#include <stdio.h>
#include <stdarg.h>
#include <px4_defines.h>

Go to the source code of this file.

Macros

#define _PX4_LOG_LEVEL_DEBUG   0
 
#define _PX4_LOG_LEVEL_INFO   1
 
#define _PX4_LOG_LEVEL_WARN   2
 
#define _PX4_LOG_LEVEL_ERROR   3
 
#define _PX4_LOG_LEVEL_PANIC   4
 
#define __px4_log_omit(level, FMT, ...)   do_nothing(level, ##__VA_ARGS__)
 
#define PX4_BACKTRACE()   px4_backtrace()
 
#define __px4__log_printcond(cond, ...)   if (cond) printf(__VA_ARGS__)
 
#define __px4__log_printline(level, ...)   printf(__VA_ARGS__)
 
#define __px4__log_timestamp_fmt   "%-10" PRIu64 " "
 
#define __px4__log_timestamp_arg   ,hrt_absolute_time()
 
#define __px4__log_level_fmt   "%-5s "
 
#define __px4__log_level_arg(level)   ,__px4_log_level_str[level]
 
#define __px4__log_thread_fmt   "%#X "
 
#define __px4__log_thread_arg   ,(unsigned int)pthread_self()
 
#define __px4__log_modulename_fmt   "%-10s "
 
#define __px4__log_modulename_pfmt   "[%s] "
 
#define __px4__log_modulename_arg   ,"[" MODULE_NAME "]"
 
#define __px4__log_file_and_line_fmt   " (file %s line %u)"
 
#define __px4__log_file_and_line_arg   , __FILE__, __LINE__
 
#define __px4__log_end_fmt   "\n"
 
#define PX4_ANSI_COLOR_RED   "\x1b[31m"
 
#define PX4_ANSI_COLOR_GREEN   "\x1b[32m"
 
#define PX4_ANSI_COLOR_YELLOW   "\x1b[33m"
 
#define PX4_ANSI_COLOR_BLUE   "\x1b[34m"
 
#define PX4_ANSI_COLOR_MAGENTA   "\x1b[35m"
 
#define PX4_ANSI_COLOR_CYAN   "\x1b[36m"
 
#define PX4_ANSI_COLOR_GRAY   "\x1B[37m"
 
#define PX4_ANSI_COLOR_RESET   "\x1b[0m"
 
#define __px4_log_named_cond(name, cond, FMT, ...)
 
#define __px4_log(level, FMT, ...)
 
#define __px4_log_modulename(level, fmt, ...)
 
#define __px4_log_raw(level, fmt, ...)
 
#define __px4_log_timestamp(level, FMT, ...)
 
#define __px4_log_timestamp_thread(level, FMT, ...)
 
#define __px4_log_file_and_line(level, FMT, ...)
 
#define __px4_log_timestamp_file_and_line(level, FMT, ...)
 
#define __px4_log_thread_file_and_line(level, FMT, ...)
 
#define __px4_log_timestamp_thread_file_and_line(level, FMT, ...)
 
#define PX4_INFO(FMT, ...)   __px4_log_modulename(_PX4_LOG_LEVEL_INFO, FMT, ##__VA_ARGS__)
 
#define PX4_INFO_RAW(FMT, ...)   __px4_log_raw(_PX4_LOG_LEVEL_INFO, FMT, ##__VA_ARGS__)
 
#define PX4_PANIC(FMT, ...)   __px4_log_modulename(_PX4_LOG_LEVEL_PANIC, FMT, ##__VA_ARGS__)
 
#define PX4_ERR(FMT, ...)   __px4_log_modulename(_PX4_LOG_LEVEL_ERROR, FMT, ##__VA_ARGS__)
 
#define PX4_WARN(FMT, ...)   __px4_log_modulename(_PX4_LOG_LEVEL_WARN, FMT, ##__VA_ARGS__)
 
#define PX4_DEBUG(FMT, ...)   __px4_log_omit(_PX4_LOG_LEVEL_DEBUG, FMT, ##__VA_ARGS__)
 
#define PX4_LOG_NAMED(name, FMT, ...)   __px4_log_named_cond(name, true, FMT, ##__VA_ARGS__)
 
#define PX4_LOG_NAMED_COND(name, cond, FMT, ...)   __px4_log_named_cond(name, cond, FMT, ##__VA_ARGS__)
 

Functions

__BEGIN_DECLS __EXPORT void px4_log_initialize (void)
 initialize the orb logging. More...
 
__EXPORT void px4_backtrace (void)
 
__EXPORT void px4_log_modulename (int level, const char *moduleName, const char *fmt,...) __attribute__((format(printf
 
__EXPORT void __EXPORT void px4_log_raw (int level, const char *fmt,...) __attribute__((format(printf
 

Variables

__BEGIN_DECLS __EXPORT const char * __px4_log_level_str [_PX4_LOG_LEVEL_PANIC+1]
 
__EXPORT const char * __px4_log_level_color [_PX4_LOG_LEVEL_PANIC+1]
 

Detailed Description

Platform dependant logging/debug implementation.

Macro Definition Documentation

§ __px4_log

#define __px4_log (   level,
  FMT,
  ... 
)
Value:
__px4__log_printline(level,\
__px4__log_level_fmt \
FMT\
__px4__log_end_fmt \
__px4__log_level_arg(level), ##__VA_ARGS__\
)

§ __px4_log_file_and_line

#define __px4_log_file_and_line (   level,
  FMT,
  ... 
)
Value:
__px4__log_printline(level,\
__px4__log_level_fmt\
__px4__log_timestamp_fmt\
FMT\
__px4__log_file_and_line_fmt\
__px4__log_end_fmt\
__px4__log_level_arg(level)\
__px4__log_timestamp_arg\
, ##__VA_ARGS__\
__px4__log_file_and_line_arg\
)

§ __px4_log_modulename

#define __px4_log_modulename (   level,
  fmt,
  ... 
)
Value:
do { \
px4_log_modulename(level, MODULE_NAME, fmt, ##__VA_ARGS__); \
} while(0)

§ __px4_log_named_cond

#define __px4_log_named_cond (   name,
  cond,
  FMT,
  ... 
)
Value:
__px4__log_printcond(cond,\
"%s " \
FMT\
__px4__log_end_fmt \
,name, ##__VA_ARGS__\
)

§ __px4_log_raw

#define __px4_log_raw (   level,
  fmt,
  ... 
)
Value:
do { \
px4_log_raw(level, fmt, ##__VA_ARGS__); \
} while(0)

§ __px4_log_thread_file_and_line

#define __px4_log_thread_file_and_line (   level,
  FMT,
  ... 
)
Value:
__px4__log_printline(level,\
__px4__log_level_fmt\
__px4__log_thread_fmt\
FMT\
__px4__log_file_and_line_fmt\
__px4__log_end_fmt\
__px4__log_level_arg(level)\
__px4__log_thread_arg\
, ##__VA_ARGS__\
__px4__log_file_and_line_arg\
)

§ __px4_log_timestamp

#define __px4_log_timestamp (   level,
  FMT,
  ... 
)
Value:
__px4__log_printline(level,\
__px4__log_level_fmt\
__px4__log_timestamp_fmt\
FMT\
__px4__log_end_fmt\
__px4__log_level_arg(level)\
__px4__log_timestamp_arg\
, ##__VA_ARGS__\
)

§ __px4_log_timestamp_file_and_line

#define __px4_log_timestamp_file_and_line (   level,
  FMT,
  ... 
)
Value:
__px4__log_printline(level,\
__px4__log_level_fmt\
__px4__log_timestamp_fmt\
FMT\
__px4__log_file_and_line_fmt\
__px4__log_end_fmt\
__px4__log_level_arg(level)\
__px4__log_timestamp_arg\
, ##__VA_ARGS__\
__px4__log_file_and_line_arg\
)

§ __px4_log_timestamp_thread

#define __px4_log_timestamp_thread (   level,
  FMT,
  ... 
)
Value:
__px4__log_printline(level,\
__px4__log_level_fmt\
__px4__log_timestamp_fmt\
__px4__log_thread_fmt\
FMT\
__px4__log_end_fmt\
__px4__log_level_arg(level)\
__px4__log_timestamp_arg\
__px4__log_thread_arg\
, ##__VA_ARGS__\
)

§ __px4_log_timestamp_thread_file_and_line

#define __px4_log_timestamp_thread_file_and_line (   level,
  FMT,
  ... 
)
Value:
__px4__log_printline(level,\
__px4__log_level_fmt\
__px4__log_timestamp_fmt\
__px4__log_thread_fmt\
FMT\
__px4__log_file_and_line_fmt\
__px4__log_end_fmt\
__px4__log_level_arg(level)\
__px4__log_timestamp_arg\
__px4__log_thread_arg\
, ##__VA_ARGS__\
__px4__log_file_and_line_arg\
)

Function Documentation

§ px4_log_initialize()

__BEGIN_DECLS __EXPORT void px4_log_initialize ( void  )

initialize the orb logging.

Logging to console still works without or before calling this.