Skip to content

Add fprime-cfs ground tooling for the cFS GroundSystem GDS - #22

Merged
LeStarch merged 10 commits into
fprime-community:develfrom
JPL-Devin:devin/1785969003-cfs-gds-tool
Aug 6, 2026
Merged

LeStarch merged 10 commits into
fprime-community:develfrom
JPL-Devin:devin/1785969003-cfs-gds-tool

Conversation

@lestarch-autobot

@lestarch-autobot lestarch-autobot commented Aug 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds the fprime-cfs Python package: ground tooling that lets the cFS GroundSystem act as the GDS for an F Prime deployment integrated through fprime_cfs, and moves the F Prime passthrough command function code into FPP configuration as a dictionary constant.

The GroundSystem talks directly to the cFS software bus over UDP through the standard lab apps: commands go to CI_LAB (:1234) and telemetry arrives from TO_LAB (:2234). No frame bridge is involved; the fprime_gds GdsBridge TCP server remains solely the F Prime GDS integration path.

Python tooling (python/)

  • fprime-cfs-config — reads the F Prime JSON dictionary and generates cFS GroundSystem configuration:
    • tlmGUI: one telemetry page for the single fixed telemetry packet (errors unless exactly one packet is defined), with big-endian struct formats and offsets past the space packet primary header / cFS telemetry secondary header / descriptor / Fw.Time. Page stream id is 0x0800 | FW_PACKET_PACKETIZED_TLM (0x0804), matching the CfsTlmFramer output forwarded by TO_LAB.
    • cmdGui: one command page per dictionary (message id 0x1800, CI_LAB's UDP endpoint). Every command carries the framing descriptor and the F Prime opcode prepended ahead of its arguments, and all commands share the single ComCfg.FprimeCommandFunctionCode function code from the dictionary. Commands with non-primitive arguments (strings/arrays) are skipped with a warning. A second Telemetry Output page and an Enable Tlm quick button (stock TO_LAB definitions) are generated for managing TO_LAB from the GUI.
  • fprime-cfs — fprime-gds-style runner: generates the configuration (into a temporary copy of the cFS-GroundSystem checkout by default), optionally launches the cFS application (--app, -n/--no-app), runs the GroundSystem GUI, and sends the TO_LAB enable-output command so telemetry flows immediately (--no-enable-telemetry / --telemetry-destination to override).

FPP / C++

  • config/FPrimeCfsConfig/ComCfg.fpp: new dictionary constant FprimeCommandFunctionCode = 0.
  • CfsBridge now consumes ComCfg::FprimeCommandFunctionCode (with a static_assert range guard) instead of a local constant; SDD updated.

CI

  • New python-tests job running the package's pytest suite (11 tests).

Testing

  • Unit tests: telemetry/command generation, packet-count errors, enum/float/bool handling, opcode-first parameters, port plumbing, TO_LAB enable-output packet framing.
  • End-to-end against fprime_cfs_reference with restored ci_lab/to_lab (Restore ci_lab/to_lab for direct cFS GroundSystem commanding and telemetry fprime_cfs_reference#18): built deployment, ran fprime-cfs with --app, verified Health telemetry page (0x804) decodes via TO_LAB and CMD_NO_OP sent through CI_LAB increments CommandsDispatched.

Companion PRs: fprime-community/fprime_app#13 (ComCfg override adding the constant), fprime-community/fprime_cfs_reference#18 (ci_lab/to_lab restoration + TO_LAB subscription).

devin-ai-integration Bot and others added 6 commits August 5, 2026 22:36
…onary constant

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
… module

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
…dd CI and tests

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
devin-ai-integration Bot and others added 2 commits August 5, 2026 23:43
…a/fprime#5445)

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
… GDS frame bridge

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
devin-ai-integration Bot and others added 2 commits August 6, 2026 01:52
…nd, document GUI limits

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
…ry topic overlap

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
@LeStarch
LeStarch merged commit d696701 into fprime-community:devel Aug 6, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants