|
RTE RBC 2oo2 Reference Application 0.1.0 build 0006685
SIL 4 2oo2 Dual-Site Fault-Tolerant ERTMS Radio Block Centre Reference Architecture
|
Files | |
| ab_gp_channel_cycle_hooks.h | |
| Shared declarations for the four rte_appmanager_operations_t cyclic-executive hooks this component's main.c registers - ab_gp_channel_pre_execute()/ab_gp_channel_execute()/ab_gp_channel_post_execute()/ ab_gp_channel_on_checkpoint_result() (ADR-034), each defined in its own file (pre_execute.c/execute.c/post_execute.c - the last hook lives in post_execute.c too, since it flushes/discards the very output post_execute() itself stages) as a short orchestrator over the named, single-purpose step functions AB/GP/com/ab_gp_channel.c exposes (see that file's own doc for the full phase breakdown). Declared here, not in AB/GP/com/ab_gp_channel.h, since these are implemented in this component's own main/ - not com/ - even though they take the same opaque ab_gp_channel_handle_t (cast from the rte_appmanager hook's own void *context) every other com/-facing call here does. | |
| ab_gp_ga_hooks.c | |
| See ab_gp_ga_hooks.h and ga_interface.h's own "functions GP
calls into GA with" section. | |
| ab_gp_ga_hooks.h | |
| GP's own dispatch side of the "GP calls into GA" surface - see ga_interface.h's own "functions GP calls into GA with" section for the registration functions GA calls (ab_gp_register_il_envelope_handler()/_il_output_producer()/ _ctc_output_producer()) and the real storage/dispatch behind them (ab_gp_ga_hooks.c). The three functions below are what AB/GP/main/pre_execute.c and post_execute.c call INSTEAD of the old bare ab_ga_il_apply_envelope()/ab_ga_il_build_outputs()/ ab_ga_ctc_build_outputs() calls - each is a thin "is a handler
registered? if so, call it; if not, no-op" wrapper, so a channel whose GA setup hasn't run yet (or failed) degrades to doing nothing here rather than crashing on a NULL function pointer. | |
| execute.c | |
| rte_appmanager_operations_t::execute for the AB channel. | |
| launcher_main.c | |
| The rte_example EXECUTABLE target's own, entire body - a thin launcher over librte_gp (this project's own shared library, rte_gp_run() - see that function's own header, rte_gp_run.h). Exists so rte_example is a real shared-library dependent, not a monolithic executable - GP's own real logic became a .so/.dylib specifically so safeAPIRBC2oo2GA can link against it with genuinely bare C function calls both directions (symmetric dummy-then-real linking - see safeAPIRBC2oo2GA/CLAUDE.md's own doc for the full design and why the interface-pointer struct this project used before was replaced). | |
| main.c | |
| safeAPIRBC2oo2: channel A/B binary, started as role A or B, for site WEST or EAST. C is a separate binary (C/main_c.c) - see app_main_common.c for the runtime setup shared by both. This file is the whole AB channel's own composition root: it owns both how the process starts up and how its cyclic executive is wired - deliberately kept that way so a reader can open just this file and see the whole story, rather than having to also read AB/GP/com/ab_gp_channel.c to find out how the process comes up or what each cycle does. AB/GP/com/ab_gp_channel.c is the channel factory and the real per-cycle implementation this file wires onto - see that file's own header for the mechanism; this one is the narrative. | |
| post_execute.c | |
| rte_appmanager_operations_t::post_execute for the AB channel. | |
| pre_execute.c | |
| rte_appmanager_operations_t::pre_execute for the AB channel. | |
| rte_gp_run.h | |
| The one function librte_gp (this project's own shared library, see CMakeLists.txt's own doc on why rte_example is now a thin launcher over this library) exports - the old plain int main(int argc, char **argv) body, renamed and exported so launcher_main.c can call it. See main.c's own doc for what it actually does. | |