Skip to content

Upgrade to Fprime v4.1.1 - #27

Closed
ethancheez wants to merge 2 commits into
mainfrom
upgrade/fprimev4.1.1
Closed

ethancheez wants to merge 2 commits into
mainfrom
upgrade/fprimev4.1.1

Conversation

@ethancheez

@ethancheez ethancheez commented Feb 13, 2026 •

Copy link
Copy Markdown
Collaborator

CCSDS sometimes works, sometimes doesn't work. I wasn't able to figure it out. Though I didn't spend too much time to debug. Switched over to ComFprime for now which I confirmed works consistently.

@nathancheek

Copy link
Copy Markdown
Contributor

Hi @ethancheez, I dug into the CCSDS problem while working on #29. It looks like there were 3 problems causing this:

First, ComQueue depth of 3. The LED sends an LedState event at 10 Hz, and EventManager pushes events straight into ComQueue, causing a 3-deep queue to fill up. With ComFprime, events are dropped silently (my testing showed 5 of 22 OpCodeCompleted events dropped in 5d9fc78). With ComCcsds, a full queue makes comStatusIn assert, which could make the board run for a few seconds and then stop. I haven't seen any drops or asserts at depth 10, with either ComFprime or ComCcsds.

Second, a TaskRunner::addTask insertion-sort bug, fixed later in fprime-community/fprime-baremetal#42. It looked like comQueue could fall out of the task table and never run, meaning nothing downlinking.

Third, the ComCcsds aggregator timeout wasn't connected. Since fprime 4.1, ComCcsds aggregates packets into 1 KB frames and only sends one when it fills, unless aggregator.timeout is called. Without this connection, downlink lagged or stalled when traffic was light.

#29 covers the same upgrade (4.0.0 sync -> 4.1.1 -> v4 project layout -> 4.4.0), updated in lockstep with fprime-community/fprime-arduino-deployment-cookiecutter#12, and includes fixes for all three issues. It uses CCSDS from 4.4.0 onwards. 4.1.1 stays on F' framing because its fprime-baremetal pin doesn't have the fprime-community/fprime-baremetal#42 fix. I tested it on Pi Pico and Teensy 4.0. I also included two things from your branch: the v4 project layout (with a matching deployment_namespace option in the cookiecutter) and removing the stale InvalidBlinkArgument line from the docs.

Once the submodules in #29 have been approved (so that we can point to the approved commit hashes), would you be okay with merging #29 (and fprime-community/fprime-arduino-deployment-cookiecutter#12) and closing this one and fprime-community/fprime-arduino-deployment-cookiecutter#11?

@ethancheez

Copy link
Copy Markdown
Collaborator Author

Closing because #29 has been merged to main.

@ethancheez ethancheez closed this Nov 1, 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.

2 participants