|
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
|
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.
| 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) |
Then install the tools (REQUIREMENTS.dox) with ./installDependencies.sh.
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.
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: