RBC_Test_CommServer 0.1.0 build fe9835b
Non-vital customer-network access point in front of the RBC's role-C gateways
Loading...
Searching...
No Matches
RBC_Test_CommServer

Product: RBC_Test_CommServer, the customer-network access point stub (repository RBC_Test_CommServer). Layer: verification and gateway stand-in. C99. Non-vital, not safety-rated.

Responsibility

Stands in for the box a train reaches to open its safe-communication bearer. The finished product would be an ISDN or FRMCS access point; today the train (EVC or simulator) connects over plain TCP/IP and RBC_Test_CommServer relays the byte stream to the RBC's role C train gateway, dual-homed across WEST and EAST, so a site failover is invisible to the train.

flowchart LR
    TRAIN["Train sim"] -->|"TCP (512-byte RBC envelopes)"| CS["RBC_Test_CommServer"]
    CS -->|rte_netlink UDP| WEST["rte_gateway_c_train (WEST)"]
    CS -->|rte_netlink UDP| EAST["rte_gateway_c_train (EAST)"]

It moves bytes it cannot authenticate or alter undetectably. The vital side (safecomm::safety in channels A and B) authenticates everything it receives, so a fault here can drop or misroute a connection but cannot forge a message.

Stub limits: one train at a time, fixed-size framing (the real SaF PDU framing lands with Platform_Protocol_SafeComm), no ISDN, FRMCS or TLS, no per-train ALE peer routing (single default route).

Interfaces exposed

Interface Form Used by
Train-facing listener TCP, train.listen_host and train.listen_port Train simulator, and later real bearer modules
Configuration One key = value file (etc/commserver.conf.example, commserver.compose.conf) Deployment
Binary dist/<platform>/bin/commserver, image built from Dockerfile RBC_Test_Env

Framing must equal the train-to-gateway envelope size (rbc.message_size = 512); a mismatch fragments every frame.

Interfaces required

Needs From How
OAL, rte_netlink Platform_RTE, Platform_OS_POSIX add_subdirectory() by the workspace layout, or -DCOMMSERVER_USE_INSTALLED=ON
Config loader, ALE peer map Platform_Protocol_SafeComm (safecomm::config, ::ale) Same

Build and run

cmake -S . -B build && cmake --build build
cmake --install build --prefix . # dist/<platform>/bin/commserver
./dist/<platform>/bin/commserver etc/commserver.conf.example

Working notes: CLAUDE.md.