This library supports the use of the F Prime framework as a mechanism for building cFS applications. This library contains the necessary helper components to expedite the development of cFS applications using the F Prime framework.
Warning
This code is currently a functional prototype. Some adjustments may be required for your specific project.
flowchart LR
fp(("F Prime App")) --- Bus[cFS Messaging Bus]
cfs1(("cFS App")) --- Bus
cfs2(("cFS App")) --- Bus
cfs3(("...")) --- Bus
The fprime_cfs library is designed to allow F Prime implementations of cFS applications that attach to the cFS messaging bus just like any other cFS application.
flowchart LR
subgraph fprime["F Prime App"]
custom["Custom Component(s)"] <--> ccsds["ComCfs Subtopology"]
cdh["CfsCore Subtopology"] <--> ccsds
fpcomp["F Prime Component(s)"] <--> cdh
custom <--> cdh
ccsds <--> cfs((CfsBridge))
end
cfs --- Bus[cFS Messaging Bus]
The reusable components and topologies provided by F Prime can be used to construct the internals of the cFS app. The CfsBridge component provided by this library bridges F Prime to the cFS bus allowing for the production and consumption of cFS messages.
| Component | Purpose | SDD Link |
|---|---|---|
| CfsBridge | Expose access to the cFS messaging bus as an F Prime Component. | CfsBridge |
| CfsAppBridge | Route F Prime com data toward a destination cFS application's APID. | CfsAppBridge |
| CfsCmdFramer | Secondary framer applying the cFS command secondary header. | CfsCmdFramer |
| CfsTlmFramer | Secondary framer applying the cFS telemetry secondary header. | CfsTlmFramer |
| CfsRouter | Verify command checksums, then route deframed space packets by (APID, function code) for commands and by APID for telemetry and files. | CfsRouter |
| EvsMirror | Text logger replacement publishing F Prime events to cFS Event Services (EVS). | EvsMirror |
| SchAppDriver | Drive F Prime rate groups from cFS scheduler (SCH) messages. | SchAppDriver |
| CfsSystemTime | Time component backed by cFS time services (CFE_TIME). | CfsSystemTime |
| PollingTimer | Rate group timer that is polled by the main program loop. | PollingTimer |
| Subtopology | Purpose | SDD Link |
|---|---|---|
| ComCfs | Full cFS communications stack: app bridges, cFS secondary framers, space packet framing, cFS-aware routing, and the CfsBridge. | ComCfs |
| CfsCore | Core command and data handling with cFS choices: EvsMirror text logging, TlmPacketizer telemetry, CfsSystemTime time, SchAppDriver rate groups, EventManager event downlink. | CfsCore |
In order to use this library, you will need to add fprime and this library as librarues in your cFS targets.cmake:
list(APPEND MISSION_GLOBAL_APPLIST fprime fprime_cfs ...)This will integrate the library into the cFS build and make the targets available for the F Prime build as well.
The python/ directory provides the fprime-cfs Python package: F Prime GDS plugins (fprime-gds --communication-selection cfs-lab --framing-selection cfs) that connect the F Prime GDS to a cFS system through CI_LAB/TO_LAB, plus tools that generate cFS GroundSystem configuration from the F Prime dictionary and run the cFS GroundSystem as the GDS for an F Prime deployment. See python/README.md.
Subscribing to and routing native cFS commands and telemetry (by APID and function code) is demonstrated by the raw echo applications in fprime_cfs_reference.
Unsupported features:
- Cross-compilation to other F Prime platforms