RBC_Template 0.1.0 build 5fb9afb
Workspace master specification — safety-related railway software around an ERTMS Radio Block Centre (RBC), CENELEC EN 50128 / SIL 4
Loading...
Searching...
No Matches
RBC_Template

RBC_Template is a workspace of independently versioned C/C++ and Python products for building safety-related railway software around an ERTMS/ETCS Radio Block Centre (RBC), targeting CENELEC EN 50128 / SIL 4. It follows the Reference CCS Architecture (RCA): application logic is written against a platform-independent API, and the Safe Computing Platform owns redundancy, voting, communication and safe-state handling. Each product is its own git repository; this root ties them together as a reproducible whole.

Start here

I want to... Read
Understand the overall architecture, products and interfaces docs/architecture/OVERVIEW.dox
Understand how safety and quality are approached docs/safety/SAFETY_AND_QUALITY_PLAN.dox
See the assessment units, ISA and NoBo roadmap docs/safety/CERTIFICATION_PLAN.dox
See how RBC_Template maps onto RCA / OCORA docs/rca/RCA_CONCEPT.dox
Model the system in Capella architecture/capella/Capella-Setup-Guide.dox
Install the tools REQUIREMENTS.dox
Work as an AI agent in this workspace CLAUDE.md
Track planned work and defects TODO.dox, ISSUES.dox
Work on one product that product's README (table below)

Getting the code

  • One product on its own: git clone git@github.com:bula173/<repository>.git. It works as if this root did not exist.
  • The whole workspace, pinned to reproducible commits: git clone --recurse-submodules git@github.com:bula173/RBC_Template.git, or git submodule update --init --recursive in an existing clone.
  • Always the latest branch tips (for active cross-repository development): ./bootstrapWorkspace.sh.

Then install the tools (REQUIREMENTS.dox) with ./installDependencies.sh.

Products

The tree follows the Reference CCS Architecture (RCA) layers. Folder name, product name and GitHub repository name are all the same now (each product's repo was renamed to match, 2026-09-22); older text may still use a product's old repository name — see the table in CLAUDE.md.

A submodule folder itself only shows as a link to its own separate repo on GitHub's web UI. To read a product's documentation directly in this repo instead, see docs/products/ — a mirrored snapshot of every product's README, CLAUDE.md and docs, regenerated by syncProductDocs.sh. For the always-current, generated-HTML version, see the published docs site: https://sapi.docs.mksystemdesign.org.

Folder links go to that product's own GitHub repo; Product links go to its mirrored documentation in this repo. Both are full URLs on purpose — the generated docs site can't build docs/products/ itself (100+ mirrored files across every product is too much for one build) or a submodule's source, so a plain relative link to either would be a dead link there even though it works fine on GitHub itself.

Folder Product RCA role
platform/Platform_RTE Platform_RTE Safe Computing Platform core / RTE: timers, IPC, memory, redundancy/voting, safe state, OSAdapter and ProtocolAdapter contracts.
platform/os_adapters/Platform_OS_POSIX Platform_OS_POSIX OSAdapter for POSIX/Linux (OS primitives, real-time setup, raw sockets).
platform/protocol_adapters/Platform_Protocol_DDS Platform_Protocol_DDS ProtocolAdapter / Flow OSAdapter for DDS (stub today, delegates to rte_netlink).
platform/protocol_adapters/Platform_Protocol_SafeComm Platform_Protocol_SafeComm Safe communication (Subset-037 EuroRadio, Subset-098 RBC/RBC). Skeleton, see its ADR-003.
platform/protocol_adapters/Platform_Protocol_JRU Platform_Protocol_JRU JRU / diagnostic external event sink (RFC 5424 syslog), implements rte_osadapter_log_t. Runs on Gateway; not UNISIG-conformant, not yet wired to a caller.
platform/toolchains/Platform_Toolchain_MacOS Platform_Toolchain_MacOS Native macOS (Xcode/Homebrew) toolchain pin.
platform/toolchains/Platform_Toolchain_Linux Platform_Toolchain_Linux Cross-compiling to Linux ARM/x86 from macOS.
platform/toolchains/Platform_Toolchain_QNX Platform_Toolchain_QNX QNX cross-compilation scaffold (needs a licensed SDP).
platform/toolchains/Platform_Toolchain_FreeRTOS Platform_Toolchain_FreeRTOS Bare-metal ARM (Cortex-M) toolchain + vendored FreeRTOS kernel.
application/RBC_GP RBC_GP Generic Platform: multi-process 2oo2 redundant RBC pair (roles A/B/C/SITE x WEST/EAST) built on the RTE.
application/RBC_GA RBC_GA Generic Application: IL/CTC route logic, linked into GP as a shared library.
application/RBC_SA RBC_SA Specific Application: installer packaging and site-data libraries for GP/GA.
application/Platform_Protocol_KM114 Platform_Protocol_KM114 Subset-114 KMC-ETCS Entity Off-line Key Management FIS (KMC-to-entity).
application/Platform_Protocol_KM038 Platform_Protocol_KM038 Subset-038 Off-line Key Management FIS (KMC-KMC interworking).
application/RBC_Maintenance_Web RBC_Maintenance_Web Read-only RBC status dashboard over HTTP, embedded in RBC_GP's Gateway.
services/RBC_TrainCommServer RBC_TrainCommServer Placeholder - train-facing GSM-R ISDN / FRMCS comm server, not yet scoped.
services/RBC_AI_Diagnostic_Server RBC_AI_Diagnostic_Server Placeholder - AI-based log analysis server, not yet scoped.
test/RBC_Test_Env RBC_Test_Env End-to-end Robot Framework suite and Docker Compose stack.
test/RBC_Test_CommServer RBC_Test_CommServer Non-vital customer-network access point stub (train-facing TCP relay).
test/simulators/RBC_Test_Sim_Core RBC_Test_Sim_Core Shared Python transport plumbing for the sims.
test/simulators/RBC_Test_Sim_Train RBC_Test_Sim_Train Train (EVC) simulator.
test/simulators/RBC_Test_Sim_IL RBC_Test_Sim_IL Interlocking simulator.
test/simulators/RBC_Test_Sim_CTC RBC_Test_Sim_CTC CTC simulator.
architecture/capella Capella_Model MBSE model scripts and guides (not a submodule).
docs/safety Safety_Case Certification and assessment plan.

All except architecture/ and docs/ are git submodules (.gitmodules). Inside a project, build files locate their dependencies by this layout (for example application/RBC_GP finds platform/Platform_RTE); a flat sibling checkout of the old repository names still works as a fallback in most projects. Docker builds use the workspace root as build context and keep the same layout inside the image.

Documentation site

Every product is documented with Doxygen; this root publishes all of it as one GitHub Pages site at https://bula173.github.io/RBC_Template/, with each product under its own path.

Start from the pages listed under Related Pages on the site, or read the sources directly: