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
RBC_GP

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.

Responsibility

The RBC executable that hosts the railway logic on the Safe Computing Platform:

  • ERTMS procedure engine: train sessions, train data, Movement Authority, position reports, shunting, emergency stop, end of mission, temporary speed restrictions, handover, text messages (Subset-026 procedures).
  • Route and train database and the MA logic gate, the only path that connects a route to a train and grants Movement Authority.
  • 2oo2 redundancy of channels A and B: per-cycle cross-compare of the session table, checkpoint stage, staged sends that are committed or discarded by the checkpoint result, and the reaction (reboot) when A and B disagree on the site role.
  • Site redundancy: GP is the Site Role Client of Platform_RTE's site-role service (rte_site_role, ADR-040), which negotiates ONLINE/STANDBY with the other site: GP agrees the startup timestamp between A and B, hands the service its local facts and the sibling's site state, and transfers sessions and database to the promoted site. Redundancy topology and channel definitions come from etc/config/<role>_<site>.json; GP registers the topology it supports.
  • Role C gateways (non-vital): per-domain relay processes (train, IL, CTC, status) between the outside world and A/B.
  • Hosting GA: GP loads RBC_GA and gives it route and train context.

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.

Interfaces exposed to other products

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

Interfaces required

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

Build and test

cmake -S . -B build # finds platform/Platform_RTE and its siblings by the workspace layout
cmake --build build && ctest --test-dir build --output-on-failure
cmake --install build --prefix . # dist/<platform>/{bin,lib}
.claude/skills/run-RBC_GP/smoke.sh 15 # 8-process live scenario: core checks and failover

The full stack (Docker Compose, Robot Framework, simulators) is built and run from test/RBC_Test_Env.

Where to read next