|
RTE RBC 2oo2 Reference Application 0.1.0 build 0006685
SIL 4 2oo2 Dual-Site Fault-Tolerant ERTMS Radio Block Centre Reference Architecture
|
Product: RBC_GP, the Generic Platform of the reference RBC (repository RBC_GP). Layer: Generic Platform, above Platform_RTE and below RBC_GA. Language: C99 (vital A/B paths), C and C++ for role C. Assessment unit: Generic Product (RBC), see ../../docs/safety/CERTIFICATION_PLAN.dox.
The RBC executable that hosts the railway logic on the Safe Computing Platform:
It does not own signalling adaptation logic (RBC_GA), site topology data (RBC_SA), the OS or transport OSAdapters (Platform_OS_POSIX, Platform_Protocol_*), or voting and safe-state mechanisms (Platform_RTE).
Processes: rte_example <A|B> <WEST|EAST> (A/B, a thin launcher over librte_gp) and rte_gateway_c_{train,il,ctc,status} <WEST|EAST> (role C). The IL and CTC gateway binaries are built by RBC_GA and installed next to the others.
| Interface | Form | Consumed by | Notes |
|---|---|---|---|
| GA interface src/application/AB/GP/ga_interface/ga_interface.h | C header: one init call declared for GA, callback registration, route and train context snapshots and pulls, validated setters | RBC_GA | The assessed GP/GA boundary; versioned |
| Site contract include/ab_siteGP.h | Full RailML-aligned topology header | RBC_SA implements it as sa::site::gp | |
| RBC wire protocol src/application/AB/common/rbc_wire_types.h (rbc_envelope_t, 512 bytes; one copy, shared by roles A/B and C) | Byte layout, encoded per domain | RBC_Test_Sim_*, RBC_Test_CommServer, RBC_GA | Python mirror in RBC_Test_Sim_Core/rbc_wire.py; update both together |
| Interface control documents | interfaces/rbc_train_interface.dox, rbc_il_interface.dox, ctc_rbc_interface.dox | Integrators, simulators | Target ERTMS specification versus the simplified testbed protocol |
| Logical channels | ab-peer, ab-crosscompare, ab-relay-{train,il,ctc,util} | Configuration | Bound to transports by configuration. Exception: the inter-site link is opened by rte_site_role on the compiled ports RTE_EXAMPLE_{A,B}_NEGOTIATION_PORT; the ab-negotiate entry in the JSON files is not used to open it |
| Configuration | etc/config/*.conf, etc/config/*.json, RTE_CONFIG_FILE and RTE_REDUNDANCY_CONFIG_FILE (fallback etc/config/redundancy.json), RTE_RBC_LOG_LEVEL, RTE_EXAMPLE_* environment variables | Deployment, RBC_Test_Env | Ports in .conf files must match common_config.h; see ISSUES.dox |
| Binaries and libraries | dist/<platform>/bin, lib/librte_gp, lib/librte_rbc2oo2_ga | RBC_SA installers | GA and GP libraries must be installed together |
| Needs | From | How |
|---|---|---|
| Flow, app manager, voter, cross-comparator, checkpoint, site-role service and dual negotiator, state transfer, redundancy config, safe state | Platform_RTE | rte::* targets |
| OSAdapter registration | Platform_OS_POSIX | Composition root only |
| Flow OSAdapter | Platform_Protocol_DDS (stub) | Registered in ab_gp_channel.c |
| Site tables | RBC_SA | sa::site::gp |
| Signalling logic | RBC_GA | Shared library, add_subdirectory() by default |
The full stack (Docker Compose, Robot Framework, simulators) is built and run from test/RBC_Test_Env.