36#ifndef PROTOCORE_HOTSWAP_H
37#define PROTOCORE_HOTSWAP_H
41#if PROTOCORE_ENABLE_HOTSWAP
52 STORAGE_STATE_ABSENT = 0,
53 STORAGE_STATE_READY = 1,
54 STORAGE_STATE_FAULTED = 2,
62 uint8_t fail_threshold;
63 uint32_t probe_interval_ms;
64 uint32_t last_probe_ms;
70typedef proto_bool (*protocore_hotswap_mount)(
void *ctx);
73typedef void (*protocore_hotswap_unmount)(
void *ctx);
76typedef proto_bool (*protocore_hotswap_present)(
void *ctx);
79typedef void (*protocore_hotswap_event)(StorageState from, StorageState to,
void *ctx);
87 uint32_t probe_interval_ms;
101 const HotswapCore *c;
112} HotswapCoreProbeArgs;
117 protocore_hotswap_mount mount;
118 protocore_hotswap_unmount unmount;
119 protocore_hotswap_present present;
126 protocore_hotswap_event cb;
127} HotswapSetEventCbArgs;
145} HotswapStateNameArgs;
199 HotswapCoreInitArgs core_init_args;
200 HotswapCoreIoArgs core_io_args;
201 HotswapCoreDueArgs core_due_args;
202 HotswapCoreProbeArgs core_probe_args;
203 HotswapBeginArgs begin_args;
204 HotswapSetEventCbArgs set_event_cb_args;
205 HotswapPollAtArgs poll_at_args;
206 HotswapIoArgs io_args;
207 HotswapStateNameArgs state_name_args;
208 HotswapJsonArgs json_args;
216extern HotswapVars HotswapV;
221 void (*
const core_init)(uint8_t *work);
222 void (*
const core_io)(uint8_t *work);
223 void (*
const core_due)(uint8_t *work);
224 void (*
const core_probe)(uint8_t *work);
225 void (*
const begin)(uint8_t *work);
226 void (*
const set_event_cb)(uint8_t *work);
227 void (*
const poll)(uint8_t *work);
228 void (*
const poll_at)(uint8_t *work);
229 void (*
const ready)(uint8_t *work);
230 void (*
const io)(uint8_t *work);
231 void (*
const state)(uint8_t *work);
232 void (*
const state_name)(uint8_t *work);
233 void (*
const json)(uint8_t *work);
238void protocore_hotswap_core_init(uint8_t *work);
239void protocore_hotswap_core_io(uint8_t *work);
240void protocore_hotswap_core_due(uint8_t *work);
241void protocore_hotswap_core_probe(uint8_t *work);
242void protocore_hotswap_begin(uint8_t *work);
243void protocore_hotswap_set_event_cb(uint8_t *work);
244void protocore_hotswap_poll(uint8_t *work);
245void protocore_hotswap_poll_at(uint8_t *work);
246void protocore_hotswap_ready(uint8_t *work);
247void protocore_hotswap_io(uint8_t *work);
248void protocore_hotswap_state(uint8_t *work);
249void protocore_hotswap_state_name(uint8_t *work);
250void protocore_hotswap_json(uint8_t *work);
256static const HotswapNs Hotswap __attribute__((unused)) = {
257 .core_init = protocore_hotswap_core_init,
258 .core_io = protocore_hotswap_core_io,
259 .core_due = protocore_hotswap_core_due,
260 .core_probe = protocore_hotswap_core_probe,
261 .begin = protocore_hotswap_begin,
262 .set_event_cb = protocore_hotswap_set_event_cb,
263 .poll = protocore_hotswap_poll,
264 .poll_at = protocore_hotswap_poll_at,
265 .ready = protocore_hotswap_ready,
266 .io = protocore_hotswap_io,
267 .state = protocore_hotswap_state,
268 .state_name = protocore_hotswap_state_name,
269 .json = protocore_hotswap_json,
281uint8_t *protocore_hotswap_span(
void);
PROTO_ENUM_PACKED
Application protocol spoken on a listener port or connection slot.
#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