NTURT Zephyr v0.0.1
NTURT common library for Zephyr RTOS
Loading...
Searching...
No Matches
Error

Error passing and handling support. More...

+ Collaboration diagram for Error:

Topics

 Error Codes
 Common error code definitions.
 

Data Structures

struct  err
 Error. More...
 
struct  err_filter
 Error filter for error callbacks. More...
 
struct  err_callback
 Error callback. More...
 

Macros

#define ERR_FLAG_DISABLED   BIT(3)
 Flag indicating the error is disabled, meaning setting or clearing the error will not have any effect.
 
#define ERR_FLAG_SET   BIT(4)
 Flag indicating the error is set. Can also be used in ERR_DEFINE to define an error that will be set after initialization.
 
#define ERR_FLAG_SEV_MASK   (ERR_SEV_INFO | ERR_SEV_WARN | ERR_SEV_FATAL)
 Flag mask indicating the severity of the error.
 
#define ERR_DEFINE(_name, _errcode, _serverity, _desc, ...)
 Define an error.
 
#define ERR_FILTER_CODE(...)
 Error filter for error codes.
 
#define ERR_FILTER_SEV(...)
 Error filter for severities.
 
#define ERR_CALLBACK_DEFINE_NAMED(_name, _handler, _user_data, ...)
 Same as ERR_CALLBACK_DEFINE, but with a custom name for the callback.
 
#define ERR_CALLBACK_DEFINE(handler, user_data, ...)
 Define an error callback.
 
#define ERR_FOREACH_SET(item)
 Iterate over all set errors.
 

Typedefs

typedef void(* err_handler_t) (uint32_t errcode, bool set, void *user_data)
 Error handler type.
 

Enumerations

enum  err_sev { ERR_SEV_INFO = BIT(0) , ERR_SEV_WARN = BIT(1) , ERR_SEV_FATAL = BIT(2) }
 Error severity. More...
 
enum  err_filter_type { ERR_FILTER_TYPE_INVALID = 0 , ERR_FILTER_TYPE_CODE = 1 , ERR_FILTER_TYPE_SEV = 2 }
 Error filter type. More...
 

Functions

void err_report (uint32_t errcode, bool set)
 Set or clear error.
 
bool err_is_set (uint32_t errcode)
 Check if the error is set.
 

Detailed Description

Error passing and handling support.

Macro Definition Documentation

◆ ERR_CALLBACK_DEFINE

#define ERR_CALLBACK_DEFINE ( handler,
user_data,
... )

#include <nturt/err/err.h>

Value:
ERR_CALLBACK_DEFINE_NAMED(CONCAT(__err_handler_, handler), handler, \
user_data, __VA_ARGS__)
#define ERR_CALLBACK_DEFINE_NAMED(_name, _handler, _user_data,...)
Same as ERR_CALLBACK_DEFINE, but with a custom name for the callback.
Definition err.h:96

Define an error callback.

Parameters
[in]handlerHandler of the error.
[in]user_dataPointer to custom data for the callback.
[in]...Optional filters for the error callback. If multiple filters are specified, they are applied in the "and" manner.
Note
Since the name of the callback is derived from the name of handler , if the same handler is used for multiple callbacks, ERR_CALLBACK_DEFINE_NAMED can be used instead to prevent linker errors.

◆ ERR_CALLBACK_DEFINE_NAMED

#define ERR_CALLBACK_DEFINE_NAMED ( _name,
_handler,
_user_data,
... )

#include <nturt/err/err.h>

Value:
static const STRUCT_SECTION_ITERABLE(err_callback, _name) = { \
.handler = _handler, \
.user_data = _user_data, \
.filters = (struct err_filter[]){COND_CODE_1( \
__VA_OPT__(1), (__VA_ARGS__, _ERR_FILTER_LAST), \
(_ERR_FILTER_LAST))}, \
}
Error callback.
Definition err.h:201
Error filter for error callbacks.
Definition err.h:184

Same as ERR_CALLBACK_DEFINE, but with a custom name for the callback.

◆ ERR_DEFINE

#define ERR_DEFINE ( _name,
_errcode,
_serverity,
_desc,
... )

#include <nturt/err/err.h>

Value:
static STRUCT_SECTION_ITERABLE(err, CONCAT(__err_, _name)) = { \
.errcode = _errcode, \
.flags = _serverity | COND_CODE_1(__VA_OPT__(1), (__VA_ARGS__), (0)), \
.name = STRINGIFY(_name), \
.desc = _desc, \
}
Error.
Definition err.h:166

Define an error.

Parameters
[in]_nameName of the error.
[in]_errcodeCode of the error.
[in]_serverityServerity of the error, must be one of err_sev.
[in]_descDescription of the error.
[in]...Optional flags of the error, multiple flags can be specified by using the bitwise OR operator (|).

◆ ERR_FILTER_CODE

#define ERR_FILTER_CODE ( ...)

#include <nturt/err/err.h>

Value:
{ \
.size = NUM_VA_ARGS(__VA_ARGS__), \
.errcodes = (uint32_t[]){__VA_ARGS__}, \
}
@ ERR_FILTER_TYPE_CODE
Definition err.h:159

Error filter for error codes.

Parameters
[in]...Error codes to filter.

◆ ERR_FILTER_SEV

#define ERR_FILTER_SEV ( ...)

#include <nturt/err/err.h>

Value:
{ \
.size = NUM_VA_ARGS(__VA_ARGS__), \
.serverities = (uint32_t[]){__VA_ARGS__}, \
}
@ ERR_FILTER_TYPE_SEV
Definition err.h:162

Error filter for severities.

Parameters
[in]...Severities to filter.

◆ ERR_FLAG_DISABLED

#define ERR_FLAG_DISABLED   BIT(3)

#include <nturt/err/err.h>

Flag indicating the error is disabled, meaning setting or clearing the error will not have any effect.

◆ ERR_FLAG_SET

#define ERR_FLAG_SET   BIT(4)

#include <nturt/err/err.h>

Flag indicating the error is set. Can also be used in ERR_DEFINE to define an error that will be set after initialization.

◆ ERR_FLAG_SEV_MASK

#define ERR_FLAG_SEV_MASK   (ERR_SEV_INFO | ERR_SEV_WARN | ERR_SEV_FATAL)

#include <nturt/err/err.h>

Flag mask indicating the severity of the error.

◆ ERR_FOREACH_SET

#define ERR_FOREACH_SET ( item)

#include <nturt/err/err.h>

Value:
TAILQ_FOREACH(item, __err_errors, next)

Iterate over all set errors.

Parameters
[out]itemError pointer to the set errors, NULL if the loop exits normally or no errors are set.

Typedef Documentation

◆ err_handler_t

typedef void(* err_handler_t) (uint32_t errcode, bool set, void *user_data)

#include <nturt/err/err.h>

Error handler type.

Parameters
[in]errcodeCode of the error.
[in]setTrue if the error is set, false if the error is cleared.
[in,out]user_dataPointer to custom user data for the callback provided by ERR_CALLBACK_DEFINE.

Enumeration Type Documentation

◆ err_filter_type

#include <nturt/err/err.h>

Error filter type.

Enumerator
ERR_FILTER_TYPE_INVALID 

Invalid filter, internal use only.

ERR_FILTER_TYPE_CODE 

Filter for error codes.

ERR_FILTER_TYPE_SEV 

Filter for severities.

◆ err_sev

enum err_sev

#include <nturt/err/err.h>

Error severity.

Enumerator
ERR_SEV_INFO 

Info serverity, the system operates normally.

ERR_SEV_WARN 

Warning serverity, the system may continue running.

ERR_SEV_FATAL 

Fatal serverity, the system must stop.

Function Documentation

◆ err_is_set()

bool err_is_set ( uint32_t errcode)

#include <nturt/err/err.h>

Check if the error is set.

Parameters
[in]errcodeError code to check.
Returns
true if the error is set, false otherwise.

◆ err_report()

void err_report ( uint32_t errcode,
bool set )

#include <nturt/err/err.h>

Set or clear error.

Parameters
[in]errcodeError code to set or clear.
[in]setTrue to set error, false to clear error.