RTE RBC 2oo2 Reference Application 0.1.0 build 0006685
SIL 4 2oo2 Dual-Site Fault-Tolerant ERTMS Radio Block Centre Reference Architecture
Loading...
Searching...
No Matches
ab_gp_channel_dual.h File Reference

Everything related to this channel's own "dual transfer" state: the single-mode degradation reaction when the A<->B peer stops answering at all, and this site's role-byte formatting helper. This site's live ONLINE/STANDBY/FAULTED role itself is now in-memory state (ctx->is_online/ctx->own_faulted), driven by the inter-site negotiate step in ab_gp_channel.c - see that file's own doc. Distinct from (and a legacy, hand-rolled precedent for) safeAPIFreamwork's own rte_dual framework module (ADR-020) - see that module's ADR for the reusable, generalized version of this same idea; this file is application-specific glue that predates it and is not retrofitted to use it in this pass (see ADR-020 section 4's own non-goals). More...

#include <stdint.h>
#include "ab_gp_channel_types.h"
Include dependency graph for ab_gp_channel_dual.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void ab_gp_channel_dual_on_transfer_lost (void *context)
const char * ab_gp_channel_dual_role_byte_to_string (uint8_t role_byte)

Detailed Description

Everything related to this channel's own "dual transfer" state: the single-mode degradation reaction when the A<->B peer stops answering at all, and this site's role-byte formatting helper. This site's live ONLINE/STANDBY/FAULTED role itself is now in-memory state (ctx->is_online/ctx->own_faulted), driven by the inter-site negotiate step in ab_gp_channel.c - see that file's own doc. Distinct from (and a legacy, hand-rolled precedent for) safeAPIFreamwork's own rte_dual framework module (ADR-020) - see that module's ADR for the reusable, generalized version of this same idea; this file is application-specific glue that predates it and is not retrofitted to use it in this pass (see ADR-020 section 4's own non-goals).

Definition in file ab_gp_channel_dual.h.

Function Documentation

◆ ab_gp_channel_dual_on_transfer_lost()

void ab_gp_channel_dual_on_transfer_lost ( void * context)

rte_watchdog FAILOVER callback (config.custom_action) for ctx->dual_transfer_watchdog: fires when this channel has received no fresh sample AT ALL from its A<->B peer within RTE_EXAMPLE_AB_DUAL_TRANSFER_TIMEOUT_MS - see this function's own definition for the full reasoning on why this degrades to SINGLE mode rather than rebooting.

Local makros Local types declarations Local variables declarations Global variables declarations Local function declarations Global functions

Definition at line 25 of file ab_gp_channel_dual.c.

◆ ab_gp_channel_dual_role_byte_to_string()

const char * ab_gp_channel_dual_role_byte_to_string ( uint8_t role_byte)
Returns
"ONLINE"/"STANDBY"/"FAULTED" for a known role byte value, "UNKNOWN" for anything else.

Definition at line 39 of file ab_gp_channel_dual.c.