Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
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
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
55
63typedef 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
93 const char *file,
94 int32_t line,
95 const char *message);
96
112
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_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...
uint16_t sapi_safestate_reason_t
Diagnostic reason code accompanying a safe-state transition.
sapi_safestate_level_t
Safe-state severity levels (ADR-004 section 2.1).
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...
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.
@ SAPI_SAFESTATE_LEVEL_REBOOT
@ SAPI_SAFESTATE_LEVEL_SAFE
@ SAPI_SAFESTATE_LEVEL_DEGRADED
sapi_status_t
Common result/status codes.
Definition sapi_status.h:27
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
Common fixed-width types and the caller-owned-storage handle pattern used by every OAL service (see A...