Skip to content

Bump submodules: cFS-compliant F Prime command uplink and telemetry downlink - #4

Open
devin-ai-integration[bot] wants to merge 5 commits into
develfrom
devin/1785453300-cfs-command-format
Open

devin-ai-integration[bot] wants to merge 5 commits into
develfrom
devin/1785453300-cfs-command-format

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Jul 30, 2026 •

Copy link
Copy Markdown

Describe the contribution
Bumps the libs/fprime_cfs, apps/fprime_gds, and apps/fprime_app submodule pointers so F Prime commands uplinked through the F Prime GDS traverse the cFS Software Bus as valid cFS command packets.

Packet on the SB changes from:

[6-byte CCSDS primary header (sec-hdr flag clear)][F Prime descriptor + opcode + args]

to:

[6-byte CCSDS primary header (sec-hdr flag set, length +2)][FunctionCode=0][cFS XOR checksum][F Prime descriptor + opcode + args]

Component PRs (upstream):

Note: the submodule pointers currently reference the PR fork branches so the end-to-end demo builds; they must be re-bumped to upstream devel commits after the three upstream PRs merge.

Telemetry/downlink framing is unchanged; the existing CfsRouter strips the 2-byte command secondary header using the deframer-provided hasSecHdr context.

Testing performed

  1. libs/fprime_cfs unit tests: fprime-util generate --ut && fprime-util build --ut && ctest — 100% passed (121 tests, including 6 wrap tests).
  2. Full native build: make SIMULATION=native prep && make && make install (re-verified after rebasing fprime_app onto latest devel).
  3. End-to-end: ran core-cpu1 and the F Prime GDS, sent cmdDisp.CMD_NO_OP; observed OpCodeDispatched, NoOpReceived, OpCodeCompleted in the GDS Events tab.

GDS Events tab showing NO_OP events

Expected behavior changes

  • API Change: CfsBridge::configure gains an optional wrapFprimeCommands parameter (default false).
  • Behavior Change: F Prime command packets are transmitted on the SB with the secondary-header flag set and a 2-byte cFS command secondary header (function code 0, valid checksum). Telemetry/downlink unchanged.

System(s) tested on

  • Hardware: PC (x86_64)
  • OS: Ubuntu 22.04
  • Versions: cFS bundle at this repo's pinned submodules (SIMULATION=native)

Additional context
All three component PRs were reviewed by the F Prime multi-agent review with zero outstanding must-fix findings (CI safety Go, merge readiness Go).

Contributor Info - All information REQUIRED for consideration of pull request
Devin (Cognition AI) on behalf of Michael Starch, NASA JPL

Link to Devin session: https://nasa-jpl-demo.devinenterprise.com/sessions/c3026c19935746cd9eec36dce75afb8b


Update: cFS telemetry secondary header framing (downlink)

Submodules bumped again to make downlinked telemetry cFS-compliant. Telemetry on the SB changes from:

[6-byte CCSDS primary header (sec-hdr flag clear)][F Prime telemetry payload]

to:

[6-byte CCSDS primary header (sec-hdr flag set, length +6)][6-byte cFS tlm secondary header: 4-byte seconds, 2-byte subseconds (2^-16 s), big endian][F Prime telemetry payload unchanged]
  • fprime_cfs: new FPrimeCfs.CfsTlmFramer / FPrimeCfs.CfsTlmDeframer components and CfsTlmFraming subtopology (Framing / Deframing), with SDDs and 13 new unit tests.
  • fprime_app: CfsTlmFraming.Framing inserted between ComCcsds.SpacePacketFraming and the cFS bridge on the downlink path.
  • fprime_gds: CfsTlmFraming.Deframing strips the secondary header before TM framing; downlink subscriptions now use subscribeCfs(..., TELEMETRY) message IDs.

Additional testing: all 131 libs/fprime_cfs unit tests pass; full native rebuild; all 5 local integration tests pass end-to-end through the GDS (commands, events, and telemetry through the new framing/deframing stages).

devin-ai-integration Bot and others added 2 commits July 30, 2026 23:14
…mand packets

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
@devin-ai-integration

Copy link
Copy Markdown
Author
Original prompt from Devin Bot

# Task: Make F Prime uplink commands cFS-compliant in fprime_cfs_reference

#``# Context

Repository: JPL-Devin/fprime_cfs_reference (branch devel, clone with --recurse-submodules). It is a cFS system hosting two F Prime-built cFS apps:

  • apps/fprime_gds (submodule of fprime-community/fprime_gds): a bridge app hosting an F´ GdsBridge topology — Drv.TcpServer (port 15010) ↔ ComCcsdsNoRouter subtopology (TC deframer / TM framer) ↔ FPrimeCfs.CfsBridge, which transmits/receives whole CCSDS space packets on the cFS Software Bus (SB). See apps/fprime_gds/GdsBridge/Top/topology.fpp.
  • apps/fprime_app (submodule of fprime-community/fprime_app): the demo app; its topology uses FPrimeCfs.CfsRouter in place of Svc.FprimeRouter (see apps/fprime_app/fprime_config/config/ComCcsdsRouterConfig.fpp and FPrimeDeployment/Top/topology.fpp); Main.cpp subscribes its CfsBridge to ComCfg::Apid::FW_PACKET_COMMAND.
  • libs/fprime_cfs (submodule of fprime-community/fprime_cfs): contains FPrimeCfs/CfsBridge and FPrimeCfs/CfsRouter (read both components' docs/sdd.md).

Current uplink behavior: the F´ GDS sends TC frames; the GdsBridge deframes them into raw F´ command space packets (6-byte CCSDS primary header, then F´ packet descriptor + opcode + serialized args — NO CCSDS/cFS secondary header) and CfsBridge transmits them on the SB unchanged. This is not a valid cFS command packet: cFS command packets must have the secondary-header flag set in the primary header and carry the 2-byte cFS command secondary header {U8 FunctionCode, U8 Checksum} ahead of the payload.

#``# Goal (scope: command/uplink format ONLY — do not change telemetry/downlink formats)

Make F´ commands traverse the SB as valid, cFS-compliant command packets:

  1. GdsBridge app (apps/fprime_gds) writes the new format: uplinked F´ command space packets must be transmitted on the SB as valid cFS command packets — secondary-header flag set in the CCSDS primary header, and t... (3646 chars truncated...)

@devin-ai-integration

Copy link
Copy Markdown
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

devin-ai-integration Bot and others added 3 commits August 4, 2026 02:46
… change)

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
…sts pass locally)

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

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
@devin-ai-integration devin-ai-integration Bot changed the title Bump submodules: F Prime uplink commands transmitted as valid cFS command packets Bump submodules: cFS-compliant F Prime command uplink and telemetry downlink Aug 4, 2026
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.

0 participants