|
Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
|
Layer-2 (DualChannel-owned) frame kind/header definitions for ADR-020 - shared between sapi_dual_channel.h and sapi_dual_negotiator.h so both can refer to the same wire structs without either depending on the other (sapi_dual_channel_t has no knowledge of sapi_dual_negotiator_t at all; the negotiator is the one-directional dependent - see ADR-020 section 3 and this module's own README note on ownership direction). More...
Go to the source code of this file.
Data Structures | |
| struct | sapi_dual_frame_header_t |
| Common 4-byte header prefixing every Layer-2 frame; kept a fixed 4 bytes (not just 1) so the fields that follow in sapi_dual_ack_frame_t/sapi_dual_state_frame_t stay naturally aligned. More... | |
| struct | sapi_dual_ack_frame_t |
| SAPI_DUAL_FRAME_KIND_ACK payload. More... | |
| struct | sapi_dual_state_frame_t |
| SAPI_DUAL_FRAME_KIND_STATE payload - sapi_dual_negotiator_t's own periodic beacon. More... | |
| struct | sapi_dual_heartbeat_frame_t |
| SAPI_DUAL_FRAME_KIND_HEARTBEAT payload - connection maintenance heartbeat. More... | |
Enumerations | |
| enum | sapi_dual_frame_kind_t { SAPI_DUAL_FRAME_KIND_DATA = 0 , SAPI_DUAL_FRAME_KIND_ACK = 1 , SAPI_DUAL_FRAME_KIND_STATE = 2 , SAPI_DUAL_FRAME_KIND_HEARTBEAT = 3 } |
| Which kind of Layer-2 frame a given Layer-1 payload holds. Stored as the first byte of every sapi_dual_channel_t frame so DATA, ACK, and STATE traffic sharing the same redundant links can never be misinterpreted as each other. More... | |
Layer-2 (DualChannel-owned) frame kind/header definitions for ADR-020 - shared between sapi_dual_channel.h and sapi_dual_negotiator.h so both can refer to the same wire structs without either depending on the other (sapi_dual_channel_t has no knowledge of sapi_dual_negotiator_t at all; the negotiator is the one-directional dependent - see ADR-020 section 3 and this module's own README note on ownership direction).
These structs travel inside a Layer-1 sapi_vital_message_t's own 248-byte payload (sapi_dual_msgchannel.h) - i.e. every field here is additional, application/protocol-meaning defense layered on top of Layer 1's transport-integrity defense (sequence/sender/timestamp/CRC), not a replacement for it. See ADR-020 section 1.
Definition in file sapi_dual_frames.h.