Safe API Framework
0.1.0 build 384e6ae
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Toggle main menu visibility
Loading...
Searching...
No Matches
rte_safestate.h
Go to the documentation of this file.
1
28
#ifndef RTE_COMMON_SAFESTATE_H
29
#define RTE_COMMON_SAFESTATE_H
30
31
#include "
rte/utils/status/rte_status.h
"
32
#include "
rte/utils/types/rte_types.h
"
33
34
#ifdef __cplusplus
35
extern
"C"
{
36
#endif
37
41
typedef
enum
rte_safestate_level_e
42
{
45
RTE_SAFESTATE_LEVEL_DEGRADED
= 0,
46
49
RTE_SAFESTATE_LEVEL_SAFE
= 1,
50
53
RTE_SAFESTATE_LEVEL_REBOOT
= 2
54
}
rte_safestate_level_t
;
55
63
typedef
uint16_t
rte_safestate_reason_t
;
64
66
#define RTE_SAFESTATE_REASON_UNSPECIFIED ((rte_safestate_reason_t)0U)
68
#define RTE_SAFESTATE_REASON_ASSERT_FAILED ((rte_safestate_reason_t)1U)
71
#define RTE_SAFESTATE_REASON_CHECKPOINT_TIMEOUT ((rte_safestate_reason_t)2U)
75
#define RTE_SAFESTATE_REASON_SETUP_AFTER_INIT ((rte_safestate_reason_t)3U)
78
#define RTE_SAFESTATE_REASON_OSA_RT_ATTRIBUTE ((rte_safestate_reason_t)4U)
82
#define RTE_SAFESTATE_REASON_CLOCK_FAILED ((rte_safestate_reason_t)5U)
84
#define RTE_SAFESTATE_REASON_APPLICATION_BASE ((rte_safestate_reason_t)4096U)
85
102
typedef
void (*
rte_safestate_handler_t
)(
rte_safestate_level_t
level,
103
rte_safestate_reason_t
reason,
104
const
char
*file,
105
int32_t line,
106
const
char
*message);
107
121
rte_status_t
rte_safestate_register_handler
(
rte_safestate_level_t
level,
122
rte_safestate_handler_t
handler);
123
142
void
rte_safestate_enter
(
rte_safestate_level_t
level,
143
rte_safestate_reason_t
reason,
144
const
char
*file,
145
int32_t line,
146
const
char
*message);
147
156
#define RTE_ASSERT(cond) \
157
do \
158
{ \
159
if (!(cond)) \
160
{ \
161
rte_safestate_enter(RTE_SAFESTATE_LEVEL_SAFE, \
162
RTE_SAFESTATE_REASON_ASSERT_FAILED, \
163
__FILE__, (int32_t)__LINE__, #cond); \
164
} \
165
} while (0)
166
172
#define RTE_SAFESTATE(level, reason) \
173
rte_safestate_enter((level), (reason), __FILE__, (int32_t)__LINE__, NULL)
174
180
#define RTE_REBOOT(reason) \
181
rte_safestate_enter(RTE_SAFESTATE_LEVEL_REBOOT, (reason), __FILE__, (int32_t)__LINE__, NULL)
182
183
#ifdef __cplusplus
184
}
185
#endif
186
187
#endif
/* RTE_COMMON_SAFESTATE_H */
188
/* SAFESTATE */
rte_safestate_level_t
rte_safestate_level_t
Safe-state severity levels (ADR-004 section 2.1).
Definition
rte_safestate.h:42
rte_safestate_register_handler
rte_status_t rte_safestate_register_handler(rte_safestate_level_t level, rte_safestate_handler_t handler)
Registers the reaction handler for one safe-state level. This is how an integrator supplies their own...
Definition
rte_safestate.c:31
rte_safestate_reason_t
uint16_t rte_safestate_reason_t
Diagnostic reason code accompanying a safe-state transition.
Definition
rte_safestate.h:63
rte_safestate_enter
void rte_safestate_enter(rte_safestate_level_t level, rte_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 RTE_SAFESTATE_LEVEL_SAF...
Definition
rte_safestate.c:52
rte_safestate_handler_t
void(*) rte_safestate_handler_t(rte_safestate_level_t level, rte_safestate_reason_t reason, const char *file, int32_t line, const char *message)
Application-supplied reaction for one safe-state level.
Definition
rte_safestate.h:102
RTE_SAFESTATE_LEVEL_REBOOT
@ RTE_SAFESTATE_LEVEL_REBOOT
Definition
rte_safestate.h:53
RTE_SAFESTATE_LEVEL_DEGRADED
@ RTE_SAFESTATE_LEVEL_DEGRADED
Definition
rte_safestate.h:45
RTE_SAFESTATE_LEVEL_SAFE
@ RTE_SAFESTATE_LEVEL_SAFE
Definition
rte_safestate.h:49
rte_status_t
rte_status_t
Common result/status codes.
Definition
rte_status.h:27
rte_status.h
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
rte_types.h
Common fixed-width types and the caller-owned-storage handle pattern used by every OAL service (see A...
include
rte
utils
safestate
rte_safestate.h
Generated by
1.18.0