|
Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
|
SAPI_DUAL_FRAME_KIND_STATE payload - sapi_dual_negotiator_t's own periodic beacon. More...
#include <sapi_dual_frames.h>
Data Fields | |
| sapi_dual_frame_header_t | header |
| uint8_t | state |
| uint8_t | channel_degraded |
| uint16_t | reserved |
| uint64_t | timestamp_ms |
SAPI_DUAL_FRAME_KIND_STATE payload - sapi_dual_negotiator_t's own periodic beacon.
Definition at line 85 of file sapi_dual_frames.h.
| sapi_dual_frame_header_t sapi_dual_state_frame_t::header |
Definition at line 87 of file sapi_dual_frames.h.
| uint8_t sapi_dual_state_frame_t::state |
Sender's own sapi_dual_state_t, stored as uint8_t for a stable wire size.
Definition at line 90 of file sapi_dual_frames.h.
| uint8_t sapi_dual_state_frame_t::channel_degraded |
Sender's own DualChannel aggregate status at beacon time: 0 = SAPI_DUAL_CHANNEL_STATUS_FULL, 1 = SAPI_DUAL_CHANNEL_STATUS_DEGRADED or SAPI_DUAL_CHANNEL_STATUS_DOWN. This is what lets the peer distinguish HOTSTANDBY from COLDSTANDBY for itself - see ADR-020 section 3.
Definition at line 96 of file sapi_dual_frames.h.
| uint16_t sapi_dual_state_frame_t::reserved |
Definition at line 97 of file sapi_dual_frames.h.
| uint64_t sapi_dual_state_frame_t::timestamp_ms |
Sender's own fixed value, captured ONCE (typically at sapi_dual_negotiator_init() time) and repeated unchanged on every beacon this instance ever sends - NOT a live "now" refreshed each send. Used for the same older-timestamp-wins startup tie-break safeAPIRBC2oo2's site.c uses today (decide_online()): both sides must keep sending the same value across repeated beacons for that comparison to stay stable and reproducible rather than racing by whatever margin two live clocks happened to differ by on a given cycle. Not a cross-site clock synchronization claim either way (see sapi_clocksync.h's own file-level note: never assume zero jitter).
Definition at line 109 of file sapi_dual_frames.h.