| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-04-01 | 24.2 kB | |
| v4.2.0 source code.tar.gz | 2026-04-01 | 19.8 MB | |
| v4.2.0 source code.zip | 2026-04-01 | 21.0 MB | |
| Totals: 3 Items | 40.8 MB | 0 | |
This is F Prime v4.2.0!
Highlighted New Features
These are the key features released in v4.2.0.
Advanced Telemetry Management
Svc::TlmPacketizer has been significantly enhanced to give projects fine-grained control over how telemetry is managed and downlinked.
Configurable output streams: Telemetry can now be routed to multiple configurable named sections (e.g. REALTIME for live downlink, RECORDED for store-and-forward). Each section is independently configurable and can be enabled or disabled at runtime.
Per-group rate control: Each section/group pair now has its own rate logic. Telemetry packets can be sent on-change with a configurable minimum tick interval (rate limiting), at a guaranteed maximum tick interval (heartbeat), or both. This replaces the previous all-or-nothing output on changemodel.
Configurable output port mapping: A 2D configuration table maps each section/group pair to a specific output port index, enabling flexible routing of telemetry streams to different downstream consumers.
All rate and stream settings are backed by a parameter, so defaults can be set at build time and overridden at runtime without a reboot.
To pair with this, Svc::ComQueuehas been extended with richer per-queue configuration:
Drop policy: Each queue can be configured to drop the newest (incoming) or oldest (head-of-queue) message on overflow, allowing projects to tune for freshness vs. in-order delivery. Queues can operate in FIFO or LIFO mode per-port. Per-queue priority controls which data is serviced first; queues sharing a priority are balanced via round-robin.
Topology Ports (Modeling)
FPP now supports topology ports — named I/O ports declared directly on a topology (subtopology). This allows a subtopology to be treated as a black-box module with well-defined connection points.
Outer topologies connect to a subtopology through its named ports without needing to reference internal component instances, improving encapsulation and reusability. All F Prime core subtopologies (Svc.CdhCore, Svc.ComCcsds, Svc.ComFprime, Svc.DataProducts, Svc.FileHandling) have been updated to expose topology ports.
New Component: Svc::FileWorker
Svc::FileWorker is a new active component that offloads slow file I/O operations from time-critical components. It provides asynchronous interfaces for reading, writing, and CRC-verifying files, with cancel support and state-based flow control (IDLE → READING/WRITING). Components that previously had to block on filesystem operations can now delegate to FileWorker and receive a completion signal when the operation is done.
Changes Affecting Users
These two changes affect users of F Prime.
1. Configuration Updates For Svc::TlmPacketizer
Svc::TlmPacketizer has been changed to allow for greater control over packet output rates. It now allows users to configure output groups, and sections to produce telemetry at specified rates. These changes are documented in the Svc::TlmPacketizer SDD.
Users with custom configuration for Svc::TlmPacketizer must update their configuration.
Build Configuration
Users including the TlmPacketizer autocoding (e.g. by including an FPP Packet Set in their topology) without using the TlmPacketizer itself now need to explicitly depend on the Config module in their Deployment/Top/CMakeLists.txt like such:
:::diff
register_fprime_module(
AUTOCODER_INPUTS
"${CMAKE_CURRENT_LIST_DIR}/instances.fpp"
"${CMAKE_CURRENT_LIST_DIR}/topology.fpp"
SOURCES
"${CMAKE_CURRENT_LIST_DIR}/RefTopology.cpp"
DEPENDS
+ Svc_TlmPacketizer_config_TlmPacketizerConfig # Supports packet autocoding w/o TlmPacketizer
)
Svc::TlmPacketizer Users With Custom Configuration
Users with custom configuration must make the following changes:
TLMPACKETIZER_HASH_BUCKETSmust be renamed toMAX_PACKETIZER_CHANNELS.TLMPACKETIZER_NUM_TLM_HASH_SLOTS,TLMPACKETIZER_HASH_MOD_VALUE,PacketUpdateModemust be deleted.- (Optional) Tune
TlmPacketizerCfg.fppto size output ports, sections, max groups, etc.
See TlmPacketizerCfg.hpp (github.com)
[!CAUTION] The maximum
groupfor a telemetry packet is now limited toNUM_CONFIGURABLE_TLMPACKETIZER_GROUPSfound inTlmPacketizerCfg.fpp[!NOTE] The stock
TlmPacketizerCfg.fppis designed to work with an output port for each of two sections. If left unconnected, the behavior will mimicSvc::TlmPacketizerof v4.2.0. See TlmPacketizerCfg.hpp (github.com)
2. Update Utils::Hash::final() to Utils::Hash::finalize()
In order to deconflict with the C++ final keyword, Utils::Hash::final() was renamed to Utils::Hash::finalize().
Utils::Hash Users
Users must rename their uses of the .final method.
:::diff
- hash.final(crc_output);
+ hash.finalize(crc_output);
Changes Affecting Platform Developers
These changes affect developers providing platform packages in the F Prime environment.
Add teardown to Os::Queue
Since Os::Queue is allowed to allocate resources on a call to create, a mirror teardown method is needed to allow teardown.
For Platform Developers
At minimum, developers of Os::Queue implementations must define a teardown function.
:::diff
+ void MyQueue ::teardown() {
+ ...
+ }
Use const Fw::TimeInterval& interval as Argument to Os::TaskInterface::_delay()
Os::TaskInterface uses a const Reference for the interval to prevent a copy when passing by value.
For Platform Developers
Implementers of Os::Task must switch to taking const TimeInterval& interval as input on their implementation of _delay.
:::diff
- Os::Task::Status PosixTask::_delay(Fw::TimeInterval interval) {
+ Os::Task::Status PosixTask::_delay(const Fw::TimeInterval& interval) {
sscanf Implementation
F Prime now provides an sscanf implementation selection (like was previously available for printf). This was done to allow users to entirely bypass the format-function in the C library by providing their own implementations.
For Platform Developers
Platform developers, at minimum, should add a new implementation selection to their platform CMake.
:::diff
CHOOSES_IMPLEMENTATIONS
...
+ Fw_StringScan_sscanf
What's Changed
- Uplink file announce by @timcanham in https://github.com/nasa/fprime/pull/4529
- Remove virtual methods from final classes by @Kronos3 in https://github.com/nasa/fprime/pull/4544
- Specify aggregator's priority by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4545
- Prevent divide-by-zero in PosixFileSystem::_getFreeSpace by @heathdutton in https://github.com/nasa/fprime/pull/4548
- Add missing status for invalid priority by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4541
- Remove Timeout from
Svc::FileDownlinkby @LeStarch in https://github.com/nasa/fprime/pull/4555 - Fix minor typos found during familiarization by @djbyrne17 in https://github.com/nasa/fprime/pull/4556
- Remove
fprime-system-referencefrom CI by @thomas-bc in https://github.com/nasa/fprime/pull/4558 - Update
ground-interface.mdand purge oldFramingProtocolby @thomas-bc in https://github.com/nasa/fprime/pull/4547 - Add queue flush commands to com queue by @LeStarch in https://github.com/nasa/fprime/pull/4559
- Enclose macros iss4375 by @djbyrne17 in https://github.com/nasa/fprime/pull/4568
- Fix/missing priority by @LeStarch in https://github.com/nasa/fprime/pull/4570
- Fix object slicing and modernize types in Version.cpp by @JuanPS999 in https://github.com/nasa/fprime/pull/4563
- Fix formatting of
data-products.mdfor website by @thomas-bc in https://github.com/nasa/fprime/pull/4571 - Prevent infinite loop in FileTest unique filename generation by @heathdutton in https://github.com/nasa/fprime/pull/4566
- Make timevalue and timeintervalvalue dict types by @zimri-leisher in https://github.com/nasa/fprime/pull/4575
- Switch to FPP enum for time comparisons by @zimri-leisher in https://github.com/nasa/fprime/pull/4561
- Add Drv.AsyncByteStreamBufferAdapter (async) by @mshahabn in https://github.com/nasa/fprime/pull/4557
- FpySequencer add function calling directives by @zimri-leisher in https://github.com/nasa/fprime/pull/4534
- Add Drv.ByteStreamBufferAdapter (sync) by @mshahabn in https://github.com/nasa/fprime/pull/4546
- Document Memory Management patterns by @thomas-bc in https://github.com/nasa/fprime/pull/4507
- Fix/weak strong by @LeStarch in https://github.com/nasa/fprime/pull/4579
- DataProduct Catalog Runtime Insertion by @Willmac16 in https://github.com/nasa/fprime/pull/4083
- Fix DpCatalog UT Memory Leak by @LeStarch in https://github.com/nasa/fprime/pull/4589
- Enclose macros by @djbyrne17 in https://github.com/nasa/fprime/pull/4582
- Correct TmFramer size assertion math by @Willmac16 in https://github.com/nasa/fprime/pull/4592
- Telemeter params on startup for FpySeq by @Willmac16 in https://github.com/nasa/fprime/pull/4603
- Clear invalid context in ComAggregator doClear action by @heathdutton in https://github.com/nasa/fprime/pull/4597
- Use FPP constant for FileDownlink filename length by @heathdutton in https://github.com/nasa/fprime/pull/4594
- Enhance TDD guide with detailed explanations and tips by @LeStarch in https://github.com/nasa/fprime/pull/4583
- Add new Svc::ComRetry component by @valdaarhun in https://github.com/nasa/fprime/pull/4367
- Add Svc.FileDispatcher component by @timcanham in https://github.com/nasa/fprime/pull/4552
- Add File Dispatcher port to CmdSequencer by @timcanham in https://github.com/nasa/fprime/pull/4553
- Fix student review feedback for [#4101] by @LeStarch in https://github.com/nasa/fprime/pull/4584
- Update GDS App Plugin documentation by @LeStarch in https://github.com/nasa/fprime/pull/4585
- Bump werkzeug from 3.1.4 to 3.1.5 by @dependabot[bot] in https://github.com/nasa/fprime/pull/4608
- Bump urllib3 from 2.6.0 to 2.6.3 by @dependabot[bot] in https://github.com/nasa/fprime/pull/4607
- Calculate Data Product checksum in the DpWriter component by @kubiak-jpl in https://github.com/nasa/fprime/pull/4622
- Fix invalid start parameter in gds-test-api-guide examples by @heathdutton in https://github.com/nasa/fprime/pull/4639
- Add dict specifier to FpySequencer consts by @zimri-leisher in https://github.com/nasa/fprime/pull/4638
- Suppress duplicate library warning on macos by @Willmac16 in https://github.com/nasa/fprime/pull/4628
- Update dictionary spec to require FW_FIXED_LENGTH_STRING_SIZE by @jwest115 in https://github.com/nasa/fprime/pull/4667
- Add data product how-to by @LeStarch in https://github.com/nasa/fprime/pull/4664
- Update Data Products integration tests and bump fprime-gds by @thomas-bc in https://github.com/nasa/fprime/pull/4671
- Expose default file create permissions through a new OsCfg.fpp config file by @kubiak-jpl in https://github.com/nasa/fprime/pull/4613
- Address workshop feedback for data products How-To by @thomas-bc in https://github.com/nasa/fprime/pull/4682
- Add CRC checks to Svc.PrmDb by @odacindy-fprime in https://github.com/nasa/fprime/pull/4586
- Update requirements.txt to work with Python 3.14 by @thomas-bc in https://github.com/nasa/fprime/pull/4616
- Fix static analysis issues in Serializable.cpp by @Sarah5567 in https://github.com/nasa/fprime/pull/4634
- Correct isConnected check in FpySequencer for seqStartOut by @Willmac16 in https://github.com/nasa/fprime/pull/4647
- Fix PolyType Static Analysis Issues by @youio in https://github.com/nasa/fprime/pull/4649
- Initialize variables to fix static analysis warnings by @Jashan66 in https://github.com/nasa/fprime/pull/4672
- Add methods to convert from Fw::Time to Fw::TimeValue by @LeStarch in https://github.com/nasa/fprime/pull/4658
- Updated default file creation mode to a+rw equivalent by @kubiak-jpl in https://github.com/nasa/fprime/pull/4679
- Update hello-world namespaces in CI by @thomas-bc in https://github.com/nasa/fprime/pull/4692
- Revise FppTest by @bocchino in https://github.com/nasa/fprime/pull/4659
- Revise modeling and code gen for default string sizes by @bocchino in https://github.com/nasa/fprime/pull/4673
- Add Fw.DataProduct FPP interface by @thomas-bc in https://github.com/nasa/fprime/pull/4669
- Add baremetal and multi-core documentation by @thomas-bc in https://github.com/nasa/fprime/pull/4680
- Update README with team roles and maintainers by @LeStarch in https://github.com/nasa/fprime/pull/4722
- FpySequencer push FW_SERIALIZE_TRUE/FALSE for boolean ops by @zimri-leisher in https://github.com/nasa/fprime/pull/4712
- Update governance roles and privileges by @LeStarch in https://github.com/nasa/fprime/pull/4718
- Add verification steps for system requirements by @djbyrne17 in https://github.com/nasa/fprime/pull/4710
- Add kevin-f-ortega as Community Manager by @LeStarch in https://github.com/nasa/fprime/pull/4725
- Fix markdown formatting across documentation by @thomas-bc in https://github.com/nasa/fprime/pull/4709
- Update vulnerability reporting instructions by @LeStarch in https://github.com/nasa/fprime/pull/4736
- Implement Os::Queue::setRegistry by @jsmith212 in https://github.com/nasa/fprime/pull/4648
- Os static analysis findings by @Sarah5567 in https://github.com/nasa/fprime/pull/4665
- Replace global assert hook with static class member by @Gregox273 in https://github.com/nasa/fprime/pull/4701
- Clean up DpCatalog test artifacts in destructor by @heathdutton in https://github.com/nasa/fprime/pull/4714
- ComQueue queue ordering, drop mode, & command to reprioritize by @Willmac16 in https://github.com/nasa/fprime/pull/4674
- Fix: Clean up generated files in ComLoggerTester by @Sarah5567 in https://github.com/nasa/fprime/pull/4735
- Fixed broken CCSDS links by @Brian-Campuzano in https://github.com/nasa/fprime/pull/4743
- Fix FILE_NAME_ARG definition by @thomas-bc in https://github.com/nasa/fprime/pull/4754
- Increase FpySequencer UT coverage to 87% by @zimri-leisher in https://github.com/nasa/fprime/pull/4747
- TlmPacketizer Group Level Control Improvements by @Lex-ari in https://github.com/nasa/fprime/pull/4668
- Add checks to TC deframing stack to prevent underflows by @thomas-bc in https://github.com/nasa/fprime/pull/4763
- Add How-To Implement a Radio Manager by @thomas-bc in https://github.com/nasa/fprime/pull/4738
- S_ISVTX is part of XSI, which is an optional set of interfaces and ex… by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4768
- Add configure section/group port to TlmPacketizer by @LeStarch in https://github.com/nasa/fprime/pull/4766
- Modify Os::Task::delay to pass in interval by const reference by @Gregox273 in https://github.com/nasa/fprime/pull/4751
- Use GH Actions inputs through environment variables by @thomas-bc in https://github.com/nasa/fprime/pull/4764
- Bump werkzeug from 3.1.5 to 3.1.6 by @dependabot[bot] in https://github.com/nasa/fprime/pull/4778
- Bump flask from 3.0.3 to 3.1.3 by @dependabot[bot] in https://github.com/nasa/fprime/pull/4777
- Add CCSDS AOS Framer by @Willmac16 in https://github.com/nasa/fprime/pull/4630
- Topology connection unit tests by @Kronos3 in https://github.com/nasa/fprime/pull/4765
- Modify circular buffer overflow test to handle zero-length random input by @Gregox273 in https://github.com/nasa/fprime/pull/4752
- Use FPP enum for state machine state by @bocchino in https://github.com/nasa/fprime/pull/4803
- Add required fixes for F Prime to have deinit triggered by autocode by @LeStarch in https://github.com/nasa/fprime/pull/4800
- Warn on zero-size downlink. Fixes: [#2756] by @LeStarch in https://github.com/nasa/fprime/pull/4802
- Remove doOtherChecks from health. Fixes: [#4404] by @LeStarch in https://github.com/nasa/fprime/pull/4801
- Add README explaining tutorial directory structure by @ryanhasmanners in https://github.com/nasa/fprime/pull/4812
- Resolve Utils/Hash static analysis findings by @vsoulgard in https://github.com/nasa/fprime/pull/4799
- Topology Ports in FPP by @Kronos3 in https://github.com/nasa/fprime/pull/4805
- Fixed corner case in shadow write when writing 0 bytes in append mode by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4821
- FpySequencer use FwTimeBaseStoreType instead of U16 by @zimri-leisher in https://github.com/nasa/fprime/pull/4820
- Allow bypassing ignore list by @LeStarch in https://github.com/nasa/fprime/pull/4771
- Add System Functional Documentation - Dictionary by @swanchr in https://github.com/nasa/fprime/pull/4780
- Fix static analysis warning in Posix ConditionVariable.cpp by @thomas-bc in https://github.com/nasa/fprime/pull/4814
- Fix RawTime serializability concerns by @thomas-bc in https://github.com/nasa/fprime/pull/4811
- Fix String type in FileDownlink by @vsoulgard in https://github.com/nasa/fprime/pull/4823
- Update dictionary spec value description by @jwest115 in https://github.com/nasa/fprime/pull/4827
- Update License by @Lex-ari in https://github.com/nasa/fprime/pull/4828
- Remove priority from ActiveTextLogger by @timcanham in https://github.com/nasa/fprime/pull/4798
- Use Java FPP for fpp-to-json by @Kronos3 in https://github.com/nasa/fprime/pull/4829
- Bump markdown from 3.7 to 3.8.1 by @dependabot[bot] in https://github.com/nasa/fprime/pull/4832
- Data product async interface by @Sarah5567 in https://github.com/nasa/fprime/pull/4727
- Add deinit function for passive components by @LeStarch in https://github.com/nasa/fprime/pull/4831
- Refactor Ccsds.ApidManager to use
Fw::ArrayMapby @vsoulgard in https://github.com/nasa/fprime/pull/4833 - Make
Os::QueueInterface::teardown()pure virtual by @vsoulgard in https://github.com/nasa/fprime/pull/4824 - Fix CI from discarding errors in UTs by @LeStarch in https://github.com/nasa/fprime/pull/4853
- Fix CI scripts FPUTIL_TARGETS by @thomas-bc in https://github.com/nasa/fprime/pull/4856
- Fix to
operator=forExternalSerializeBufferWithMemberCopyby @bocchino in https://github.com/nasa/fprime/pull/4855 - Clarify instructions that caused problems for new users by @djbyrne17 in https://github.com/nasa/fprime/pull/4849
- Issue 4790 generic hub command ports by @mshahabn in https://github.com/nasa/fprime/pull/4793
- Add System Functional Documentation - Sequencing by @swanchr in https://github.com/nasa/fprime/pull/4781
- Add OS Abstraction Layer SDD and How-To guide by @thomas-bc in https://github.com/nasa/fprime/pull/4840
- Add PassThroughRouter component by @DJKessler in https://github.com/nasa/fprime/pull/4825
- TlmPacketizer: Remove Double-Buffering by @Sarah5567 in https://github.com/nasa/fprime/pull/4822
- Add floating point operations for
Fw::Timeby @vsoulgard in https://github.com/nasa/fprime/pull/4842 - Add PR auto-reply when Formatting CI fails by @Copilot in https://github.com/nasa/fprime/pull/4870
- Switching inline hash map and slots with r/b tree by @LeStarch in https://github.com/nasa/fprime/pull/4871
- FileWorker by @rjtsao in https://github.com/nasa/fprime/pull/4810
- Refactor PrmDb to use Fw::ArrayMap by @Kronos3 in https://github.com/nasa/fprime/pull/4881
- Replace cmd dispatch table with map by @LeStarch in https://github.com/nasa/fprime/pull/4883
- Update fprime-fpl-layout and fprime-fpl-write-pic versions to 1.0.4 by @LeStarch in https://github.com/nasa/fprime/pull/4886
- Fix TlmPacketizer large entry copy by @LeStarch in https://github.com/nasa/fprime/pull/4878
- Remove test output files for FileWorker by @bocchino in https://github.com/nasa/fprime/pull/4895
- Remove erroneous include in PassThroughRouterTester by @thomas-bc in https://github.com/nasa/fprime/pull/4901
- Update FpConstants to use sizeof, add sizeof tests to FppTest by @jwest115 in https://github.com/nasa/fprime/pull/4859
- Fix PosixFile UT random failures by @LeStarch in https://github.com/nasa/fprime/pull/4905
- Add FppTest tests for empty structs by @bocchino in https://github.com/nasa/fprime/pull/4908
- Adding sscanf replacement implementation, and tests by @LeStarch in https://github.com/nasa/fprime/pull/4872
- Replace command sequence table with map by @LeStarch in https://github.com/nasa/fprime/pull/4888
- FPP Framework Testing by @Kronos3 in https://github.com/nasa/fprime/pull/4890
- Add in function to dispatch all available messages by @LeStarch in https://github.com/nasa/fprime/pull/4911
- FPP v3.2.0 by @bocchino in https://github.com/nasa/fprime/pull/4912
- Add option to force assertions to always abort by @celskeggs in https://github.com/nasa/fprime/pull/4677
- Bump pygments from 2.18.0 to 2.20.0 by @dependabot[bot] in https://github.com/nasa/fprime/pull/4916
- Add topology ports to subtopologies by @Sarah5567 in https://github.com/nasa/fprime/pull/4907
- Improve data copying efficiency in TlmPacketizer by @Sarah5567 in https://github.com/nasa/fprime/pull/4868
- Update MmapAllocator by @kubiak-jpl in https://github.com/nasa/fprime/pull/4892
- refactor: replace FW_MIN/FW_MAX macros with std::min/std::max by @dcpagotto in https://github.com/nasa/fprime/pull/4865
- docs: fix double word and formatting in introduction by @aliden1z in https://github.com/nasa/fprime/pull/4924
- Omega by @LeStarch in https://github.com/nasa/fprime/pull/4919
- Making TlmPacketizer configuration tables driven from parameter by @LeStarch in https://github.com/nasa/fprime/pull/4830
- Remove legacy Cheetah3 dependency by @thomas-bc in https://github.com/nasa/fprime/pull/4927
- Update fprime-gds and fprime-tools versions for v4.2.0 by @LeStarch in https://github.com/nasa/fprime/pull/4930
- Fix hard-asserts in GenericHub deserialization by @LeStarch in https://github.com/nasa/fprime/pull/4929
- Add an agent that reviews standard norms for F Prime by @LeStarch in https://github.com/nasa/fprime/pull/4935
- Update PR review instructions for agent availability by @LeStarch in https://github.com/nasa/fprime/pull/4937
- Remove non-functional PR comment workflow by @thomas-bc in https://github.com/nasa/fprime/pull/4933
New Contributors
- @heathdutton made their first contribution in https://github.com/nasa/fprime/pull/4548
- @JuanPS999 made their first contribution in https://github.com/nasa/fprime/pull/4563
- @odacindy-fprime made their first contribution in https://github.com/nasa/fprime/pull/4586
- @Sarah5567 made their first contribution in https://github.com/nasa/fprime/pull/4634
- @youio made their first contribution in https://github.com/nasa/fprime/pull/4649
- @Jashan66 made their first contribution in https://github.com/nasa/fprime/pull/4672
- @jsmith212 made their first contribution in https://github.com/nasa/fprime/pull/4648
- @Gregox273 made their first contribution in https://github.com/nasa/fprime/pull/4701
- @ryanhasmanners made their first contribution in https://github.com/nasa/fprime/pull/4812
- @vsoulgard made their first contribution in https://github.com/nasa/fprime/pull/4799
- @swanchr made their first contribution in https://github.com/nasa/fprime/pull/4780
- @rjtsao made their first contribution in https://github.com/nasa/fprime/pull/4810
- @dcpagotto made their first contribution in https://github.com/nasa/fprime/pull/4865
- @aliden1z made their first contribution in https://github.com/nasa/fprime/pull/4924
Full Changelog: https://github.com/nasa/fprime/compare/v4.1.1...v4.2.0