v4.3.0 Released #5754
thomas-bc
announced in
Announcements
v4.3.0 Released
#5754
Replies: 1 comment
|
Eyyyyy! Onto more ⚡️🚀🧬 |
0 replies
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.
Full Changelog: v4.2.2...v4.3.0
Highlights
Major Features
Svc::Ccsds::CfdpManagerfor standards-based file transfer, with hardened RX handling of malformed remote PDUs.CmdSeqIn, cancel port,CANCEL_ALL, argument name/type validation,SEQ_BASE_DIRparameter, and new directives (POP_EVENT,PUSH_RAND/SET_SEED,FFLOOR/FABS/IABS).Os::CountingSemaphoremodule;PassiveRateGrouptimer-source selection and per-component duty-cycle metrics; settable time context inSvc::PosixTime.aarch64-clang-linuxcross-compilation toolchain.find_package(FPrime)support, DESTDIR-correct installs, and progress toward fully independent F´ builds.Security Fixes
This release contains a large number of security and robustness fixes, many found via static analysis, CodeQL, and adversarial review — upgrading is strongly recommended:
memcpy, stack push off-by-one, and command/DP buffer size validation.FileUplinkdestination-path validation; boundedOs::File::openinputs.DpCatalog/PrmDbfile validation and corruption fixes.ComQueuebuffer leak on drop, atomic ownership state, andPriorityMemQueuesemaphore credit drift.Breaking Changes
Configuration Changes
PrmDb file name must be supplied by the deployment
The
FileHandlingsubtopology no longer hardcodesPrmDb.dat. Callconfigure()in your topology setup before parameters are read:void configureTopology(const TopologyState& state) { + // FileHandling requires the using topology to supply the parameter database file name + FileHandling::prmDb.configure("PrmDb.dat"); FileHandling::fileUplink.configure(...); }New fields in
ComCfg::FrameContextThe com-config
FrameContextstruct gained fields supporting Space Packet secondary headers and sequence flags, AOS deframing, and SDLS security associations. A newPvn(Packet Version Number) dictionary enum and aFW_PACKET_PARAMAPID were also added. Projects overridingComCfg.fppmust add:struct FrameContext { comQueueIndex: FwIndexType apid: Apid + hasSecHdr: bool @< Secondary header flag for SpacePacketFramer + sequenceFlags: U8 @< 2 bit sequence flags (0b11 = unsegmented) sequenceCount: U16 vcId: U8 + pvn: Pvn @< Packet Version Number - used for AOS deframing sendNow: bool + saIndex: U16 @< Security Association Index - set/read by SDLS components }Socket driver
hostnamerenamed toipv4AddressF´ IP drivers do not perform DNS resolution; the parameter is now named accordingly.
SOCKET_MAX_HOSTNAME_SIZEremains as a deprecated alias ofSOCKET_MAX_IPV4_ADDRESS_SIZE:SO_REUSEADDRenabled by defaultIP_SOCKET_OPTIONSin the IP configuration now enablesSO_REUSEADDRby default; override the config if the previous behavior is required.ComCcsds subtopology owns its includes
Includes for the ComCcsds subtopology moved into the subtopology itself — remove the duplicates from your topology files.
DataProducts subtopology adds a BufferAccumulator
A
Svc::BufferAccumulatorinstance (inDRAINmode) now sits betweenDpManagerandDpWriter. Add its telemetry-packet and health entries to your deployment.CPU affinity configurable for subtopology active instances
Active instances in the core subtopologies expose CPU affinity as overridable configuration alongside priority and stack size.
New
SERIALIZABLE_INLINEoptionFpConfig.hgains aSERIALIZABLE_INLINEoption to control inlining ofserializeFrom/deserializeTofor performance tuning.User Breaking Changes
Fw::Bufferrework: offset, capacity, andadvance()Fw::Buffernow tracks its original allocation pointer, an offset, and a capacity.setData()only accepts pointers within the original allocation — wrapping unrelated memory requires constructing a new buffer. Useadvance()to strip headers:Command handler signatures: non-primitive args by
constreferenceAuto-generated handler functions now pass non-primitive arguments by
constreference. Update your handler overrides:void REGISTER_AES_KEY_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, - ExternalLibs::AesKeyType key) override; + const ExternalLibs::AesKeyType& key) override;FPP system modeling
Deployments must mark their topology with the
deploymentkeyword and add asystem.fppregistered in the build:PrmDb CRC is now endian-independent
The parameter database CRC is now serialized in a platform-independent form. Existing parameter database files will fail CRC validation on load and must be regenerated.
FileUplinkadds aFilesReceivedFailedtelemetry channelCorrupt uplinked files no longer count as received. Add the channel to your telemetry packet definitions:
FileHandling.fileUplink.FilesReceived + FileHandling.fileUplink.FilesReceivedFailed FileHandling.fileUplink.PacketsReceivedDeveloper Breaking Changes
SerializeBufferBaserenamed toLinearBufferBaseThe rename completes the buffer-type naming transition.
getBuffAddr()/getCapacity()are no longer virtual, and the constructor now requires the buffer address and capacity.Revised FPP enum code generation
Constructing an invalid enum value in memory now causes an assertion failure (avoiding C++ undefined behavior). Unit tests must use the new mechanism for generating invalid serialized enums instead of constructing invalid enum objects.
Fw.LogSeverityis now a dictionary enumEvent severity is emitted into dictionaries as a proper enum, affecting ground tooling that parsed the old representation.
configure()method parameters madeconstconfigure()methods across Svc components takeconstparameters — update overrides and derived classes accordingly.Deprecations
.emember is deprecated: code accessing the type-specific.efield of generated FPP enum classes should migrate to using the enum class directly (constructors, assignment, and comparison operators), as.ewill be removed in a future release.Os::Directory::readDirectory(Fw::String filenameArray[], ...): use theFw::ExternalArray<Fw::String>overload instead.Svc::ActiveRateGroup::configure(const U32 contexts[], ...)andSvc::PassiveRateGroup::configure(const U32 contexts[], ...): use theContextArray-basedconfigure()overloads instead.Svc::DpCatalog::configure(Fw::FileNameString directories[], ...): use theFw::ExternalArray<Fw::FileNameString>overload instead.Fw::Buffer::getBuffLength()(usegetSize()) andSOCKET_MAX_HOSTNAME_SIZE(useSOCKET_MAX_IPV4_ADDRESS_SIZE) remain as deprecated aliases.New Contributors
Full Changelog: v4.2.2...v4.3.0
All reactions