|
Safe API Framework 0.1.0 build 384e6ae
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
|
Bounded checkpoint rendezvous for distributed vital channels (ADR-017). More...
#include <stdint.h>#include "rte/utils/status/rte_status.h"#include "rte/utils/types/rte_types.h"#include "rte/redundancy/voter/rte_voter.h"#include "rte/redundancy/watchdog/rte_watchdog.h"Go to the source code of this file.
Data Structures | |
| struct | rte_checkpoint_config_t |
| Checkpoint configuration. More... | |
Functions | |
| rte_status_t | rte_channel_checkpoint (rte_voter_t *voter, const rte_checkpoint_config_t *config) |
| Performs one bounded checkpoint rendezvous across every channel registered with a voter. | |
Bounded checkpoint rendezvous for distributed vital channels (ADR-017).
Implements rte_channel_checkpoint(), already specified (but never built) in docs/REDUNDANCY_ARCHITECTURE.md: a bounded-time rendezvous that lets channels running on separate machines - possibly in separate geographic locations - agree on "we are both at the same point" without depending on wall-clock agreement. Two channels are considered synchronized not because their clocks match, but because they both confirmed the same checkpoint_id to each other within max_delay_ms; if that confirmation doesn't happen in time, that is itself a fault and is handled exactly like a voting disagreement is elsewhere in this framework - safe-state, not silence.
This module adds no new transport OSAdapter of its own (ADR-017 section 2.2, updated by ADR-025): it reuses a rte_voter_t's own registered rte_channel_t links - each already carrying whatever transport an integrator plugged in (rte_ipc over POSIX/RTOS, or a real network link) - so checkpoint messages travel over the same channels a disagreement vote already would. This is how "pluggable" is achieved here, consistent with ADR-005 rather than inventing a second plug-in point.
The EN 50159-style message envelope (sequence number, sender ID, timestamp, CRC-64) is not reinvented either: every checkpoint-arrival message is a rte_vital_message_t (rte_checksum.h), verified with rte_checksum_vital_message_verify() before it is allowed to count toward quorum.
Definition in file rte_checkpoint.h.