Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Toggle main menu visibility
Loading...
Searching...
No Matches
sapi_safestate.h
Go to the documentation of this file.
1
28
#ifndef SAFEAPI_COMMON_SAFESTATE_H
29
#define SAFEAPI_COMMON_SAFESTATE_H
30
31
#include "
safeapi/utils/status/sapi_status.h
"
32
#include "
safeapi/utils/types/sapi_types.h
"
33
34
#ifdef __cplusplus
35
extern
"C"
{
36
#endif
37
41
typedef
enum
sapi_safestate_level_e
42
{
45
SAPI_SAFESTATE_LEVEL_DEGRADED
= 0,
46
49
SAPI_SAFESTATE_LEVEL_SAFE
= 1,
50
53
SAPI_SAFESTATE_LEVEL_REBOOT
= 2
54
}
sapi_safestate_level_t
;
55
63
typedef
uint16_t
sapi_safestate_reason_t
;
64
66
#define SAPI_SAFESTATE_REASON_UNSPECIFIED ((sapi_safestate_reason_t)0U)
68
#define SAPI_SAFESTATE_REASON_ASSERT_FAILED ((sapi_safestate_reason_t)1U)
71
#define SAPI_SAFESTATE_REASON_CHECKPOINT_TIMEOUT ((sapi_safestate_reason_t)2U)
73
#define SAPI_SAFESTATE_REASON_APPLICATION_BASE ((sapi_safestate_reason_t)4096U)
74
91
typedef
void (*
sapi_safestate_handler_t
)(
sapi_safestate_level_t
level,
92
sapi_safestate_reason_t
reason,
93
const
char
*file,
94
int32_t line,
95
const
char
*message);
96
110
sapi_status_t
sapi_safestate_register_handler
(
sapi_safestate_level_t
level,
111
sapi_safestate_handler_t
handler);
112
131
void
sapi_safestate_enter
(
sapi_safestate_level_t
level,
132
sapi_safestate_reason_t
reason,
133
const
char
*file,
134
int32_t line,
135
const
char
*message);
136
145
#define SAPI_ASSERT(cond) \
146
do \
147
{ \
148
if (!(cond)) \
149
{ \
150
sapi_safestate_enter(SAPI_SAFESTATE_LEVEL_SAFE, \
151
SAPI_SAFESTATE_REASON_ASSERT_FAILED, \
152
__FILE__, (int32_t)__LINE__, #cond); \
153
} \
154
} while (0)
155
161
#define SAPI_SAFESTATE(level, reason) \
162
sapi_safestate_enter((level), (reason), __FILE__, (int32_t)__LINE__, NULL)
163
169
#define SAPI_REBOOT(reason) \
170
sapi_safestate_enter(SAPI_SAFESTATE_LEVEL_REBOOT, (reason), __FILE__, (int32_t)__LINE__, NULL)
171
172
#ifdef __cplusplus
173
}
174
#endif
175
176
#endif
/* SAFEAPI_COMMON_SAFESTATE_H */
177
/* SAFESTATE */
sapi_safestate_register_handler
sapi_status_t sapi_safestate_register_handler(sapi_safestate_level_t level, sapi_safestate_handler_t handler)
Registers the reaction handler for one safe-state level. This is how an integrator supplies their own...
Definition
sapi_safestate.c:31
sapi_safestate_reason_t
uint16_t sapi_safestate_reason_t
Diagnostic reason code accompanying a safe-state transition.
Definition
sapi_safestate.h:63
sapi_safestate_level_t
sapi_safestate_level_t
Safe-state severity levels (ADR-004 section 2.1).
Definition
sapi_safestate.h:42
sapi_safestate_enter
void sapi_safestate_enter(sapi_safestate_level_t level, sapi_safestate_reason_t reason, const char *file, int32_t line, const char *message)
Enters a safe-state level: invokes the registered handler (if any), then, for SAPI_SAFESTATE_LEVEL_SA...
Definition
sapi_safestate.c:52
sapi_safestate_handler_t
void(*) sapi_safestate_handler_t(sapi_safestate_level_t level, sapi_safestate_reason_t reason, const char *file, int32_t line, const char *message)
Application-supplied reaction for one safe-state level.
Definition
sapi_safestate.h:91
SAPI_SAFESTATE_LEVEL_REBOOT
@ SAPI_SAFESTATE_LEVEL_REBOOT
Definition
sapi_safestate.h:53
SAPI_SAFESTATE_LEVEL_SAFE
@ SAPI_SAFESTATE_LEVEL_SAFE
Definition
sapi_safestate.h:49
SAPI_SAFESTATE_LEVEL_DEGRADED
@ SAPI_SAFESTATE_LEVEL_DEGRADED
Definition
sapi_safestate.h:45
sapi_status_t
sapi_status_t
Common result/status codes.
Definition
sapi_status.h:27
sapi_status.h
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
sapi_types.h
Common fixed-width types and the caller-owned-storage handle pattern used by every OAL service (see A...
include
safeapi
utils
safestate
sapi_safestate.h
Generated by
1.18.0