Skip to content

About

A library to support development of cFS applications using the F Prime framwork as the implementation architecture of the cFS application

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

fprime_cfs

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.

Design

flowchart LR
    fp(("F Prime App")) --- Bus[cFS Messaging Bus]
    cfs1(("cFS App")) --- Bus
    cfs2(("cFS App")) --- Bus
    cfs3(("...")) --- Bus
Loading

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]
Loading

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.

Components

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

Subtopologies

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

Integration and Usage

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.

Ground Tooling

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.

Work To Go

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:

  1. Cross-compilation to other F Prime platforms

About

A library to support development of cFS applications using the F Prime framwork as the implementation architecture of the cFS application

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages