Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Loading...
Searching...
No Matches
sapi_dual_state_frame_t Struct Reference

SAPI_DUAL_FRAME_KIND_STATE payload - sapi_dual_negotiator_t's own periodic beacon. More...

#include <sapi_dual_frames.h>

Collaboration diagram for sapi_dual_state_frame_t:
[legend]

Data Fields

sapi_dual_frame_header_t header
uint8_t state
uint8_t channel_degraded
uint16_t reserved
uint64_t timestamp_ms

Detailed Description

SAPI_DUAL_FRAME_KIND_STATE payload - sapi_dual_negotiator_t's own periodic beacon.

Definition at line 85 of file sapi_dual_frames.h.

Field Documentation

◆ header

sapi_dual_frame_header_t sapi_dual_state_frame_t::header

Definition at line 87 of file sapi_dual_frames.h.

◆ state

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.

◆ channel_degraded

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.

◆ reserved

uint16_t sapi_dual_state_frame_t::reserved

Definition at line 97 of file sapi_dual_frames.h.

◆ timestamp_ms

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.


The documentation for this struct was generated from the following file: