docs/reference/system-functional/system-services.md
System services provide utility functions that support overall system operation: resource monitoring, version reporting, assertion handling, and a general-purpose value database. These components are typically present in every F Prime deployment but do not interact with each other as a subsystem — each provides an independent supporting function.
The System Resources component periodically downlinks information about the health of the running system, including:
This telemetry is used by operators to monitor the overall state of the flight processor and detect resource trends.
The Version component tracks and reports version information for the framework, project, libraries, and user-defined project-specific identifiers. Version information can be configured to report automatically at system startup. This allows ground operators to confirm which software version is running on the spacecraft.
The Assert Fatal Adapter intercepts framework-level assertions (FW_ASSERT calls) and converts them into FATAL events within the event system. This bridges the C++ assertion mechanism with the F Prime event architecture, ensuring that assertion failures are captured, logged, and handled through the standard fatal event path.
The Fatal Handler component receives fatal event announcements and performs the platform-specific response to unrecoverable errors. The default implementation may log a message and halt. Deployments typically override this with project-specific behavior such as:
The fatal handling path is: assertion or fatal event → Event Manager fatal announcement → Fatal Handler.
The Polymorphic Database (PolyDb) provides a general-purpose in-memory store for named values of varying types. Components can write values to the database and other components can read them. Values are stored using a polymorphic type that can hold any primitive type. This is useful for sharing computed values, calibration data, or algorithm state between components without requiring dedicated ports for each value.