MIP_SDK  v3.0.0-425-g6df21bd
MicroStrain Communications Library for embedded systems
Macros | Typedefs | Enumerations | Functions
MicroStrain Logging [C]

Logging functions in C. More...

Macros

#define MICROSTRAIN_LOG_INIT(callback, level, user)   microstrain_logging_init(callback, level, user)
 Helper macro used to initialize the MicroStrain logger. This function does not need to be called unless the user wants logging. More...
 
#define MICROSTRAIN_LOG_LOG(level, ...)   microstrain_logging_log(level, __VA_ARGS__)
 Helper macro used to log data inside the MicroStrain SDK. Prefer specific log level functions like MICROSTRAIN_LOG_INFO, etc. when possible. More...
 
#define MICROSTRAIN_LOG_LOG_V(level, fmt, args)   microstrain_logging_log_v(level, fmt, args)
 
#define MICROSTRAIN_LOGGING_MAX_LEVEL   MICROSTRAIN_LOG_LEVEL_WARN
 
#define MICROSTRAIN_LOG_FATAL(...)   MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_FATAL, __VA_ARGS__)
 Helper macro used to log data inside the MicroStrain SDK at fatal level. More...
 
#define MICROSTRAIN_LOG_FATAL_V(fmt, args)   MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_FATAL, fmt, args)
 
#define MICROSTRAIN_LOG_ERROR(...)   MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_ERROR, __VA_ARGS__)
 Helper macro used to log data inside the MicroStrain SDK at error level. More...
 
#define MICROSTRAIN_LOG_ERROR_V(fmt, args)   MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_ERROR, fmt, args)
 
#define MICROSTRAIN_LOG_WARN(...)   MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_WARN, __VA_ARGS__)
 Helper macro used to log data inside the MicroStrain SDK at warn level. More...
 
#define MICROSTRAIN_LOG_WARN_V(fmt, args)   MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_WARN, fmt, args)
 
#define MICROSTRAIN_LOG_INFO(...)   MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_INFO, __VA_ARGS__)
 Helper macro used to log data inside the MicroStrain SDK at info level. More...
 
#define MICROSTRAIN_LOG_INFO_V(fmt, args)   MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_INFO, fmt, args)
 
#define MICROSTRAIN_LOG_DEBUG(...)   MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_DEBUG, __VA_ARGS__)
 Helper macro used to log data inside the MicroStrain SDK at debug level. More...
 
#define MICROSTRAIN_LOG_DEBUG_V(fmt, args)   MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_DEBUG, fmt, args)
 
#define MICROSTRAIN_LOG_TRACE(...)   MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_TRACE, __VA_ARGS__)
 Helper macro used to log data inside the MicroStrain SDK at trace level. More...
 
#define MICROSTRAIN_LOG_TRACE_V(fmt, args)   MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_TRACE, fmt, args)
 
#define MICROSTRAIN_LOG_BYTES(level, msg, data, length)   microstrain_log_bytes(level, msg, data, length)
 Helper macro used to log bytes as a hex sting. More...
 
#define MICROSTRAIN_LOG_BYTES_TRACE(msg, data, length)   microstrain_log_bytes(MICROSTRAIN_LOG_LEVEL_TRACE, msg, data, length)
 Helper macro used to log bytes as a hex sting at trace level. More...
 
#define MICROSTRAIN_LOG_ERROR_WITH_ERRNO(msg)   MICROSTRAIN_LOG_ERROR(msg ": %d %s\n", errno, strerror(errno))
 Helper macro used to log an error message from a syscall. More...
 
#define MICROSTRAIN_LOG_ERROR_WITH_ERRNO_EX(msg, ...)   MICROSTRAIN_LOG_ERROR(msg ": %d %s\n", __VA_ARGS__, errno, strerror(errno))
 Helper macro used to log an error message from a syscall. More...
 

Typedefs

typedef enum microstrain_log_level microstrain_log_level
 Logging level enum. More...
 
typedef void(* microstrain_log_callback) (void *user, const microstrain_log_level level, const char *fmt, va_list args)
 Callback function typedef for custom logging behavior. More...
 

Enumerations

enum  microstrain_log_level {
  MICROSTRAIN_LOG_LEVEL_OFF = 0, MICROSTRAIN_LOG_LEVEL_FATAL = 1, MICROSTRAIN_LOG_LEVEL_ERROR = 2, MICROSTRAIN_LOG_LEVEL_WARN = 3,
  MICROSTRAIN_LOG_LEVEL_INFO = 4, MICROSTRAIN_LOG_LEVEL_DEBUG = 5, MICROSTRAIN_LOG_LEVEL_TRACE = 6
}
 Logging level enum. More...
 

Functions

void microstrain_logging_init (const microstrain_log_callback callback, const microstrain_log_level level, void *user)
 Initializes the logger with a callback and user data. Call MICROSTRAIN_LOG_INIT instead of using this function directly. This function does not have to be called unless the user wants logging. More...
 
microstrain_log_callback microstrain_logging_callback (void)
 Gets the currently active logging callback. More...
 
microstrain_log_level microstrain_logging_level (void)
 Gets the currently active logging level. More...
 
void * microstrain_logging_user_data (void)
 Gets the currently active logging user data. More...
 
void microstrain_logging_log_v (const microstrain_log_level level, const char *fmt, va_list args)
 Internal log function called by variadic logging macros. Call MICROSTRAIN_LOG_*_V macros instead of using this function directly. More...
 
void microstrain_logging_log (const microstrain_log_level level, const char *fmt,...)
 Internal log function called by logging macros. Call MICROSTRAIN_LOG_* macros instead of using this function directly. More...
 
const char * microstrain_logging_level_name (const microstrain_log_level level)
 Returns a string representing the given log level. More...
 
void microstrain_log_bytes (const microstrain_log_level level, const char *msg, const uint8_t *data, size_t length)
 Print bytes in hex to the log. More...
 

Detailed Description

Logging functions in C.

Macro Definition Documentation

◆ MICROSTRAIN_LOG_BYTES

#define MICROSTRAIN_LOG_BYTES (   level,
  msg,
  data,
  length 
)    microstrain_log_bytes(level, msg, data, length)

Helper macro used to log bytes as a hex sting.

◆ MICROSTRAIN_LOG_BYTES_TRACE

#define MICROSTRAIN_LOG_BYTES_TRACE (   msg,
  data,
  length 
)    microstrain_log_bytes(MICROSTRAIN_LOG_LEVEL_TRACE, msg, data, length)

Helper macro used to log bytes as a hex sting at trace level.

This optimizes out to a NO-OP when MICROSTRAIN_LOGGING_MAX_LEVEL is less than MICROSTRAIN_LOG_LEVEL_TRACE.

◆ MICROSTRAIN_LOG_DEBUG

#define MICROSTRAIN_LOG_DEBUG (   ...)    MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_DEBUG, __VA_ARGS__)

Helper macro used to log data inside the MicroStrain SDK at debug level.

Parameters
contextContext of what called this function. Could be a mip device, serial connection, etc.
fmtprintf style format string
...Variadic args used to populate the fmt string

◆ MICROSTRAIN_LOG_DEBUG_V

#define MICROSTRAIN_LOG_DEBUG_V (   fmt,
  args 
)    MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_DEBUG, fmt, args)

◆ MICROSTRAIN_LOG_ERROR

#define MICROSTRAIN_LOG_ERROR (   ...)    MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_ERROR, __VA_ARGS__)

Helper macro used to log data inside the MicroStrain SDK at error level.

Parameters
contextContext of what called this function. Could be a mip device, serial connection, etc.
fmtprintf style format string
...Variadic args used to populate the fmt string

◆ MICROSTRAIN_LOG_ERROR_V

#define MICROSTRAIN_LOG_ERROR_V (   fmt,
  args 
)    MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_ERROR, fmt, args)

◆ MICROSTRAIN_LOG_ERROR_WITH_ERRNO

#define MICROSTRAIN_LOG_ERROR_WITH_ERRNO (   msg)    MICROSTRAIN_LOG_ERROR(msg ": %d %s\n", errno, strerror(errno))

Helper macro used to log an error message from a syscall.

Parameters
msgA plain C-string without any printf-style formatters. The resulting log message will be "<message here>: <error-code> <error-description>\n".

◆ MICROSTRAIN_LOG_ERROR_WITH_ERRNO_EX

#define MICROSTRAIN_LOG_ERROR_WITH_ERRNO_EX (   msg,
  ... 
)    MICROSTRAIN_LOG_ERROR(msg ": %d %s\n", __VA_ARGS__, errno, strerror(errno))

Helper macro used to log an error message from a syscall.

Parameters
msgA plain C-string which includes one or more printf-style formatters.
...Arguments corresponding to the format codes in msg. The resulting log message will be "<message here>: <error-code> <error-description>\n".

◆ MICROSTRAIN_LOG_FATAL

#define MICROSTRAIN_LOG_FATAL (   ...)    MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_FATAL, __VA_ARGS__)

Helper macro used to log data inside the MicroStrain SDK at fatal level.

Parameters
contextContext of what called this function. Could be a mip device, serial connection, etc.
fmtprintf style format string
...Variadic args used to populate the fmt string

◆ MICROSTRAIN_LOG_FATAL_V

#define MICROSTRAIN_LOG_FATAL_V (   fmt,
  args 
)    MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_FATAL, fmt, args)

◆ MICROSTRAIN_LOG_INFO

#define MICROSTRAIN_LOG_INFO (   ...)    MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_INFO, __VA_ARGS__)

Helper macro used to log data inside the MicroStrain SDK at info level.

Parameters
contextContext of what called this function. Could be a mip device, serial connection, etc.
fmtprintf style format string
...Variadic args used to populate the fmt string

◆ MICROSTRAIN_LOG_INFO_V

#define MICROSTRAIN_LOG_INFO_V (   fmt,
  args 
)    MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_INFO, fmt, args)

◆ MICROSTRAIN_LOG_INIT

#define MICROSTRAIN_LOG_INIT (   callback,
  level,
  user 
)    microstrain_logging_init(callback, level, user)

Helper macro used to initialize the MicroStrain logger. This function does not need to be called unless the user wants logging.

Parameters
callbackThe callback to execute when there is data to log
levelThe level that the MicroStrain SDK should log at
userUser data that will be passed to the callback every time it is executed

◆ MICROSTRAIN_LOG_LOG

#define MICROSTRAIN_LOG_LOG (   level,
  ... 
)    microstrain_logging_log(level, __VA_ARGS__)

Helper macro used to log data inside the MicroStrain SDK. Prefer specific log level functions like MICROSTRAIN_LOG_INFO, etc. when possible.

Parameters
userUser data pointer
levelThe log level that this log should be logged at
fmtprintf style format string
argsVariadic args used to populate the fmt string

◆ MICROSTRAIN_LOG_LOG_V

#define MICROSTRAIN_LOG_LOG_V (   level,
  fmt,
  args 
)    microstrain_logging_log_v(level, fmt, args)

◆ MICROSTRAIN_LOG_TRACE

#define MICROSTRAIN_LOG_TRACE (   ...)    MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_TRACE, __VA_ARGS__)

Helper macro used to log data inside the MicroStrain SDK at trace level.

Parameters
contextContext of what called this function. Could be a mip device, serial connection, etc.
fmtprintf style format string
...Variadic args used to populate the fmt string

◆ MICROSTRAIN_LOG_TRACE_V

#define MICROSTRAIN_LOG_TRACE_V (   fmt,
  args 
)    MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_TRACE, fmt, args)

◆ MICROSTRAIN_LOG_WARN

#define MICROSTRAIN_LOG_WARN (   ...)    MICROSTRAIN_LOG_LOG(MICROSTRAIN_LOG_LEVEL_WARN, __VA_ARGS__)

Helper macro used to log data inside the MicroStrain SDK at warn level.

Parameters
contextContext of what called this function. Could be a mip device, serial connection, etc.
fmtprintf style format string
...Variadic args used to populate the fmt string

◆ MICROSTRAIN_LOG_WARN_V

#define MICROSTRAIN_LOG_WARN_V (   fmt,
  args 
)    MICROSTRAIN_LOG_LOG_V(MICROSTRAIN_LOG_LEVEL_WARN, fmt, args)

◆ MICROSTRAIN_LOGGING_MAX_LEVEL

#define MICROSTRAIN_LOGGING_MAX_LEVEL   MICROSTRAIN_LOG_LEVEL_WARN

Typedef Documentation

◆ microstrain_log_callback

typedef void(* microstrain_log_callback) (void *user, const microstrain_log_level level, const char *fmt, va_list args)

Callback function typedef for custom logging behavior.

Parameters
userUser data pointer
levelThe log level that this log should be logged at
fmtprintf style format string
argsVariadic args used to populate the fmt string

◆ microstrain_log_level

Logging level enum.

Enumeration Type Documentation

◆ microstrain_log_level

Logging level enum.

Enumerator
MICROSTRAIN_LOG_LEVEL_OFF 

Signifies that the log is turned off.

MICROSTRAIN_LOG_LEVEL_FATAL 

Fatal logs are logged when an unrecoverable error occurs.

MICROSTRAIN_LOG_LEVEL_ERROR 

Error logs are logged when an error occurs.

MICROSTRAIN_LOG_LEVEL_WARN 

Warning logs are logged when something concerning happens that may or not be a mistake.

MICROSTRAIN_LOG_LEVEL_INFO 

Info logs are logged when some general info needs to be conveyed to the user.

MICROSTRAIN_LOG_LEVEL_DEBUG 

Debug logs are logged for debug purposes.

MICROSTRAIN_LOG_LEVEL_TRACE 

Trace logs are logged in similar cases to debug logs but can be logged in tight loops.

Function Documentation

◆ microstrain_log_bytes()

void microstrain_log_bytes ( const microstrain_log_level  level,
const char *  msg,
const uint8_t *  data,
size_t  length 
)

Print bytes in hex to the log.

Note
Currently this function is limited to 1024 output characters, or about 400 bytes (5 chars per 2-byte group including a space).
Parameters
levelLogging level. This function does nothing unless the current log level is at least this value.
msgMessage to print immediately before the data. No space is appended. Use an empty string to print just the data.
dataData to be printed in hex.
lengthLength of the data to print.

◆ microstrain_logging_callback()

microstrain_log_callback microstrain_logging_callback ( void  )

Gets the currently active logging callback.

Returns
The currently active logging callback

◆ microstrain_logging_init()

void microstrain_logging_init ( const microstrain_log_callback  callback,
const microstrain_log_level  level,
void *  user 
)

Initializes the logger with a callback and user data. Call MICROSTRAIN_LOG_INIT instead of using this function directly. This function does not have to be called unless the user wants logging.

Parameters
callbackThe callback to execute when there is data to log
levelThe level that the MicroStrain SDK should log at
userUser data that will be passed to the callback every time it is executed

◆ microstrain_logging_level()

microstrain_log_level microstrain_logging_level ( void  )

Gets the currently active logging level.

Returns
The currently active logging level

◆ microstrain_logging_level_name()

const char* microstrain_logging_level_name ( const microstrain_log_level  level)

Returns a string representing the given log level.

Parameters
levelThe returned string is statically-allocated and shall not be freed nor modified. The strings are padded to a uniform length for consistent alignment in log files.

◆ microstrain_logging_log()

void microstrain_logging_log ( const microstrain_log_level  level,
const char *  fmt,
  ... 
)

Internal log function called by logging macros. Call MICROSTRAIN_LOG_* macros instead of using this function directly.

Parameters
userUser data pointer
levelThe log level that this log should be logged at
fmtprintf style format string
argsVariadic args used to populate the fmt string

◆ microstrain_logging_log_v()

void microstrain_logging_log_v ( const microstrain_log_level  level,
const char *  fmt,
va_list  args 
)

Internal log function called by variadic logging macros. Call MICROSTRAIN_LOG_*_V macros instead of using this function directly.

Parameters
userUser data pointer
levelThe log level that this log should be logged at
fmtprintf style format string
argsVariadic args used to populate the fmt string

◆ microstrain_logging_user_data()

void* microstrain_logging_user_data ( void  )

Gets the currently active logging user data.

Returns
The currently active logging user data