|
Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
|
| Application Manager | Init/execute/shutdown lifecycle entry point for applications |
| Clock Synchronization (diagnostic/timeout-sizing only) | |
| Inter-Process Communication | Bounded message queues between safety tasks (ADR-001) |
| Logging and Diagnostics | Non-safety-related black-box/event-recorder logging (ADR-001) |
| Static Memory Reservation | Fixed-size memory pools reserved at initialization (ADR-001) |
| Safe Pointer Wrapper | Bounds + NULL + corruption-canary checked pointer access |
| Mutex Service | Non-recursive blocking mutual exclusion (ADR-033) |
| Point-to-Point Network Link | Connection-oriented link between independent processes (ADR-001) |
| Non-Volatile Memory | Persistent storage with mandatory integrity checking on read (ADR-001) |
| Real-Time Platform Configuration | Backend-defined one-shot real-time bring-up (ADR-035) |
| Controlled Reboot | Backend-defined controlled system restart (ADR-004 section 3) |
| Task/Thread Scheduling | Periodic/cyclic safety task creation with fixed priorities (ADR-001) |
| Timer Service | One-shot and periodic timers with millisecond resolution (ADR-001) |
| Channel Link (single redundant link) | |
| Checkpoint Rendezvous | Bounded cross-channel synchronization for distributed vital channels |
| Checksum & CRC Utilities | Data integrity verification for redundant communication |
| Cross-Comparator (2-way channel comparison) | |
| Dual-Transfer State Negotiation | Which of two redundant instances is active, and how well-backed is the standby one (ADR-020) |
| Unified Channel Factory | App-facing channel open/send/receive/close, transport hidden (ADR-022) |
| Voter (N-way channel voting) | |
| Watchdog Mechanism | Detect hung systems/tasks and trigger recovery |
| Cross-Layer Data Buffer | Caller-owned, bounds-checked view over static storage (ADR-002) |
| Checked Integer Casting | Bounds-checked conversion between fixed-width types (ADR-003) |
| Application Setup-Phase Lock | Process-wide INIT/RUN boundary enforcement (ADR-026) |
| Registered-Callback List Storage Shape | Fixed-capacity {callback, context} list shape (ADR-030) |
| Safe-State Transitions and Checked Assertions | Layer-agnostic fault-reaction facility (ADR-004) |
| Safety Primitive Violation Notification | Opt-in handler for safe-pointer/checked-cast/bounds-check violations |
| Common Status and Error Codes | Shared result codes returned by every framework function |
| Bounded String Manipulation | Checked replacements for strcpy/strcat/sprintf-style operations (ADR-006) |
| Common Types | Fixed-width types and the caller-owned-storage handle pattern |
| Clock Synchronization - Backend Adaptation | Backend vtable and registration for clock sync (ADR-005) |
| Inter-Process Communication - Backend Adaptation | Backend vtable and registration for the IPC service (ADR-005) |
| Logging and Diagnostics - Backend Adaptation | Backend vtable and registration for the logging service (ADR-005) |
| Static Memory Reservation - Backend Adaptation | Backend vtable and registration for the memory pool service (ADR-005) |
| Mutex Service - Backend Adaptation | Backend vtable and registration for the Mutex service (ADR-033) |
| Point-to-Point Network Link - Backend Adaptation | Backend vtable and registration for the netlink service (ADR-005) |
| NVM Service - Backend Adaptation | Backend vtable and registration for the NVM service (ADR-005) |
| Real-Time Platform Configuration - Backend Adaptation | Backend vtable and registration for the platform service (ADR-005) |
| Controlled Reboot - Backend Adaptation | Backend vtable and registration for the reboot service (ADR-005) |
| Task/Thread Scheduling - Backend Adaptation | Backend vtable and registration for the task service (ADR-005) |
| Timer Service - Backend Adaptation | Backend vtable and registration for the Timer service (ADR-005) |