|
RTE RBC 2oo2 Reference Application 0.1.0 build 0006685
SIL 4 2oo2 Dual-Site Fault-Tolerant ERTMS Radio Block Centre Reference Architecture
|
rte_appmanager_operations_t::post_execute for the AB channel. More...
#include "ab_gp_channel_cycle_hooks.h"#include <stdbool.h>#include <stdint.h>#include "rte/app/appmanager/rte_appmanager.h"#include "rte/oal/log/rte_log.h"#include "rte/redundancy/watchdog/rte_watchdog.h"#include "../../common/common_config.h"#include "../../common/site_config.h"#include "../com/ab_gp_channel.h"#include "../com/ab_gp_channel_negotiate.h"#include "../com/ab_gp_site_status.h"#include "../com/ab_gp_channel_stage.h"#include "../com/ab_gp_channel_types.h"#include "../com/ab_gp_channel_payload.h"#include "../com/ab_gp_status.h"#include "../train/ab_gp_train.h"#include "ab_gp_ga_hooks.h"Go to the source code of this file.
Functions | |
| static void | stage_peer_sample_if_online (ab_gp_channel_context_t *ctx, ab_gp_channel_handle_t handle, uint32_t cycle) |
| Step 1: stage this cycle's dual-transfer sample for the peer, if online. | |
| static void | send_il_keepalive_if_online (ab_gp_channel_context_t *ctx, ab_gp_channel_handle_t handle) |
| Step 2: send IL keepalives if online - link-liveness traffic, not this cycle's own decision output, so it stays immediate (not staged); see step 3's own comment. | |
| static void | build_and_stage_outputs_to_c (ab_gp_channel_context_t *ctx, ab_gp_channel_handle_t handle, uint32_t cycle) |
| Step 3: build this cycle's train/CTC/IL outputs and, if agreed (or single mode), stage them to C. | |
| static void | send_site_state (ab_gp_channel_context_t *ctx, ab_gp_channel_handle_t handle) |
| Step 4: send site state - protocol/negotiation-level state echo, not this cycle's own decision output, so it stays immediate (not staged), same as the IL keepalives (step 2) and the CHECKPOINT_REPLY reply in ab_gp_channel_pre_execute() - see ab_gp_channel_types.h's own doc on ab_gp_staged_send_t for why. | |
| rte_status_t | ab_gp_channel_post_execute (void *context) |
| rte_status_t | ab_gp_channel_on_checkpoint_result (void *context, bool committed) |
| rte_appmanager_operations_t::on_checkpoint_result for the AB channel (ADR-034) - flushes or discards this cycle's staged output (see ab_gp_channel_stage.h) once the checkpoint stage (the cyclic executive's LAST stage this cycle) has confirmed, or failed to confirm, that both A/B channels took the same program path this cycle. | |
rte_appmanager_operations_t::post_execute for the AB channel.
Builds application outputs and dispatches them across the peer and relay transport channels, conforming to Single Responsibility Principle (SRP) and CENELEC EN 50128 SIL 4.
Definition in file post_execute.c.
|
static |
Step 1: stage this cycle's dual-transfer sample for the peer, if online.
ADR-034: this cycle's own decision output, gated on the checkpoint (driven by ab_gp_channel_on_checkpoint_result()) confirming both channels took the same program path this cycle. Not sent immediately.
Definition at line 37 of file post_execute.c.
|
static |
Step 2: send IL keepalives if online - link-liveness traffic, not this cycle's own decision output, so it stays immediate (not staged); see step 3's own comment.
Definition at line 65 of file post_execute.c.
|
static |
Step 3: build this cycle's train/CTC/IL outputs and, if agreed (or single mode), stage them to C.
ADR-034: this cycle's own decision output (train/CTC/IL messages built from this cycle's own ma_logic result), gated on the checkpoint. RCA/OCORA PI-API: Replicas are symmetric - both A and B stage outputs to the Gateway Service Unit, which forwards the first arrival.
Definition at line 85 of file post_execute.c.
|
static |
Step 4: send site state - protocol/negotiation-level state echo, not this cycle's own decision output, so it stays immediate (not staged), same as the IL keepalives (step 2) and the CHECKPOINT_REPLY reply in ab_gp_channel_pre_execute() - see ab_gp_channel_types.h's own doc on ab_gp_staged_send_t for why.
Definition at line 197 of file post_execute.c.
| rte_status_t ab_gp_channel_post_execute | ( | void * | context | ) |
rte_appmanager_operations_t::post_execute - see post_execute.c.
Definition at line 208 of file post_execute.c.
| rte_status_t ab_gp_channel_on_checkpoint_result | ( | void * | context, |
| bool | committed ) |
rte_appmanager_operations_t::on_checkpoint_result for the AB channel (ADR-034) - flushes or discards this cycle's staged output (see ab_gp_channel_stage.h) once the checkpoint stage (the cyclic executive's LAST stage this cycle) has confirmed, or failed to confirm, that both A/B channels took the same program path this cycle.
rte_appmanager_operations_t::on_checkpoint_result (ADR-034) - see post_execute.c.
Definition at line 252 of file post_execute.c.