20#ifndef PROTOCORE_FAILSAFE_H
21#define PROTOCORE_FAILSAFE_H
25#if PROTOCORE_ENABLE_FAILSAFE
34 uint32_t last_feed_ms;
40typedef void (*protocore_failsafe_cb)(
int id,
const char *name,
void *arg);
52static inline proto_bool protocore_lifeline_overdue(uint32_t now, uint32_t last_feed_ms, uint32_t deadline_ms)
54 return (uint32_t)(now - last_feed_ms) > deadline_ms;
73 protocore_failsafe_cb cb;
104 FailsafeOutArgs out_args;
112extern FailsafeVars FailsafeV;
117 void (*
const reset)(uint8_t *work);
118 void (*
const add)(uint8_t *work);
119 void (*
const feed)(uint8_t *work);
120 void (*
const on_breach)(uint8_t *work);
121 void (*
const check)(uint8_t *work);
122 void (*
const json)(uint8_t *work);
127void protocore_failsafe_reset(uint8_t *work);
128void protocore_failsafe_add(uint8_t *work);
129void protocore_failsafe_feed(uint8_t *work);
130void protocore_failsafe_on_breach(uint8_t *work);
131void protocore_failsafe_check(uint8_t *work);
132void protocore_failsafe_json(uint8_t *work);
138static const FailsafeNs Failsafe __attribute__((unused)) = {
139 .reset = protocore_failsafe_reset,
140 .add = protocore_failsafe_add,
141 .feed = protocore_failsafe_feed,
142 .on_breach = protocore_failsafe_on_breach,
143 .check = protocore_failsafe_check,
144 .json = protocore_failsafe_json,
156uint8_t *protocore_failsafe_span(
void);
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS