v4.2.0 Released #4940
LeStarch
announced in
Announcements
v4.2.0 Released
#4940
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
This is F Prime v4.2.0!
Highlighted New Features
These are the key features released in
v4.2.0.Advanced Telemetry Management
Svc::TlmPacketizerhas 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::FileWorkerSvc::FileWorkeris 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::TlmPacketizerSvc::TlmPacketizerhas 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 theSvc::TlmPacketizerSDD.Users with custom configuration for
Svc::TlmPacketizermust 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.txtlike such: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::TlmPacketizerUsers With Custom ConfigurationUsers 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.TlmPacketizerCfg.fppto size output ports, sections, max groups, etc.See TlmPacketizerCfg.hpp
Caution
The maximum
groupfor a telemetry packet is now limited toNUM_CONFIGURABLE_TLMPACKETIZER_GROUPSfound inTlmPacketizerCfg.fppNote
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
2. Update
Utils::Hash::final()toUtils::Hash::finalize()In order to deconflict with the C++
finalkeyword,Utils::Hash::final()was renamed toUtils::Hash::finalize().Utils::HashUsersUsers must rename their uses of the
.finalmethod.Changes Affecting Platform Developers
These changes affect developers providing platform packages in the F Prime environment.
Add
teardowntoOs::QueueSince
Os::Queueis allowed to allocate resources on a call tocreate, a mirrorteardownmethod is needed to allow teardown.For Platform Developers
At minimum, developers of
Os::Queueimplementations must define a teardown function.Use
const Fw::TimeInterval& intervalas Argument toOs::TaskInterface::_delay()Os::TaskInterfaceuses aconstReference for the interval to prevent a copy when passing by value.For Platform Developers
Implementers of
Os::Taskmust switch to takingconst TimeInterval& intervalas input on their implementation of_delay.sscanfImplementationF Prime now provides an
sscanfimplementation selection (like was previously available forprintf). 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.
CHOOSES_IMPLEMENTATIONS ... + Fw_StringScan_sscanfWhat's Changed
Svc::FileDownlinkby @LeStarch in Remove Timeout fromSvc::FileDownlink#4555fprime-system-referencefrom CI by @thomas-bc in Removefprime-system-referencefrom CI #4558ground-interface.mdand purge oldFramingProtocolby @thomas-bc in Updateground-interface.mdand purge oldFramingProtocol#4547data-products.mdfor website by @thomas-bc in Fix formatting ofdata-products.mdfor website #4571Fw::ArrayMapby @vsoulgard in Refactor Ccsds.ApidManager to useFw::ArrayMap#4833Os::QueueInterface::teardown()pure virtual by @vsoulgard in MakeOs::QueueInterface::teardown()pure virtual #4824operator=forExternalSerializeBufferWithMemberCopyby @bocchino in Fix tooperator=forExternalSerializeBufferWithMemberCopy#4855Fw::Timeby @vsoulgard in Add floating point operations forFw::Time#4842New Contributors
Full Changelog: v4.1.1...v4.2.0
This discussion was created from the release v4.2.0: Advanced Telemetry Management.
Beta Was this translation helpful? Give feedback.
All reactions