Many FpConfig.h's constants were needed in the model and have been moved into .fpp model files FpConfig.fpp, FpConstants.fpp, and PlatformCfg.fpp.
[!WARNING]
Users shipping custom FpConfig.h as of v4.0.0 must update to these new files.
New Configuration Files
config/MemoryAllocation.hpp
config/ActiveTextLoggerCfg.hpp
config/FileManagerConfig.hpp
config/PassiveTextLoggerCfg.hpp
config/MemoryAllocation.hpp
We've added configuration for a new default memory allocator. This is used by clients of Fw::MemAllocatorRegistry calling getAnAllocator() when no appropriate allocator has been defined.
Queued and Active components now have a deinit() function used to clean-up memory/resource allocation. Unit Tests run under leak checking will produce memory leak warnings. To fix this, add this->component.deinit() to the Tester destructor.
The former SPI interface did not support returning a status, which meant that the calling component was blind to problems arising within SPI. The interface now specifies a new WriteRead port that includes a status. Implementers of SPI components must add this port to their components.
//! Handler implementation for SpiWriteRead
//!
SpiStatus SpiWriteRead_handler(const FwIndexType portNum, /*!< The port number*/
Fw::Buffer& WriteBuffer,
Fw::Buffer& readBuffer);
We recommend deprecating the old void function as well.
Misc Interface Changes
There are a few changes to misc interfaces in F Prime. Developers to those interfaces must update:
Developers of custom Fw::MemAllocator objects must now support the alignment parameter. Alignment communicates the minimum Byte alignment for the object being allocated. Returned void* allocations must guarantee this alignment.
F Prime now supports a mode flag to serialization that communicates the desired endianness. This was done to better support external libraries, technologies, and products that use little endian format. Hand-coded serializables should update to accept this new parameter.
This affects both the serializeTo and deserializeFrom function.
Subtopology and Ref priorities have been updated to better reflect Linux priority space. Users should consider their own priorities and ajust accordingly.
serialize and deserialize Deprecated
serialize and deserialize methods were renamed in v4.0.0 to serializeTo, serializeFrom, deserializeTo, and deserializeFrom. We have now DEPRECATED these serialize and deserialize functions. Users should update as these will now produce compiler warnings and will be removed in future releases.
Feature Descriptions
FPP dictionary Specifiers
FPP now supports the dictionary specifier, allowing developers to annotate model elements for inclusion in generated JSON dictionaries. This feature allows developers to extend flight/ground tooling.
Shared Flight/Ground Configuration
F´ introduces unified configuration between flight and ground (fprime-gds). This significantly reduces duplication, improves consistency, and centralizes configuration.
Aligned Memory Support in Fw::MemAllocator
Fw::MemAllocator now supports aligned allocation, allowing components and platform adapters to request memory with specific alignment boundaries.
Time-Limited Event Throttling
A new throttling policy allows events to be rate-limited over a configurable time window. Rather than suppressing events indefinitely, the system now restores visibility after the throttle period elapses.
Little-Endian Serialization Interfaces
F´ adds explicit support for little-endian serialization paths. This allows users to leverage F Prime serialization for external interfaces.
Upgrade to C++14
The framework, libraries, and autocoders now require and fully support C++14. This enables safer and more expressive language features for more reliable software.
Secondary-File Loading for the Parameter Database
Svc::PrmDb now supports loading parameters from a secondary file.
Commits
Add static_cast to ambiguous serialize call in FpySequencer by @ethancheez in https://github.com/nasa/fprime/pull/4008
FpySequencer stack based architecture by @zimri-leisher in https://github.com/nasa/fprime/pull/3975
Fix AI Policy link in PR template by @thomas-bc in https://github.com/nasa/fprime/pull/4019
Remove notice by @LeStarch in https://github.com/nasa/fprime/pull/4045
Format FppTest by @bocchino in https://github.com/nasa/fprime/pull/4048
Update Drv IP stack to use FwSizeType instead of U32 by @thomas-bc in https://github.com/nasa/fprime/pull/4013
Basic data structure library, phase 1 by @bocchino in https://github.com/nasa/fprime/pull/3927
FpySequencer arithmetic by @zimri-leisher in https://github.com/nasa/fprime/pull/4025
Update supported platforms by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4071
Add ground derived channels how-to guide by @LeStarch in https://github.com/nasa/fprime/pull/4074
Add venv requirements for running framework tests by @pjromano in https://github.com/nasa/fprime/pull/4078
Add logic for assert failure short circuiting in AssertFatalAdapter by @kyleajones in https://github.com/nasa/fprime/pull/4042
Add subtopology documentation by @thomas-bc in https://github.com/nasa/fprime/pull/4072
Add event ID filters to text logger components by @ianbrault in https://github.com/nasa/fprime/pull/4028
Bump GDS to v4.0.2a3 by @LeStarch in https://github.com/nasa/fprime/pull/4079
Allow FPP arrays of arbitrary size by @bocchino in https://github.com/nasa/fprime/pull/4073
Update project structure in cookiecutters CI by @LeStarch in https://github.com/nasa/fprime/pull/3991
Update troubleshooting guide by @LeStarch in https://github.com/nasa/fprime/pull/4086
Add test driven development how-to by @LeStarch in https://github.com/nasa/fprime/pull/4090
Add reusable InT test scripts by @chuynh4duarte in https://github.com/nasa/fprime/pull/3923
Modify LinuxTimer interface for consistency by @LeStarch in https://github.com/nasa/fprime/pull/4087
FpySequencer U32 stack size + some error telemetry by @zimri-leisher in https://github.com/nasa/fprime/pull/4065
Add Framing subtopologies and use them within Com subtopologies by @thomas-bc in https://github.com/nasa/fprime/pull/4113
Incorporate student feedback for ground derived channels by @LeStarch in https://github.com/nasa/fprime/pull/4117
Update fprime-gds version to 4.0.2a4 by @LeStarch in https://github.com/nasa/fprime/pull/4118
Revise subtopology development documentation by @LeStarch in https://github.com/nasa/fprime/pull/4119
Create SDD for ComCcsds subtopology by @LeStarch in https://github.com/nasa/fprime/pull/4128
Create SDD for CdhCore subtopology by @LeStarch in https://github.com/nasa/fprime/pull/4121
Feedback updates on common port patters, health, and worker by @LeStarch in https://github.com/nasa/fprime/pull/4115
Add Software Design Document for FileHandling subtopology by @LeStarch in https://github.com/nasa/fprime/pull/4125
Add FPP state machine How-To by @LeStarch in https://github.com/nasa/fprime/pull/4096
Add Software Design Document for ComFprime subtopology by @LeStarch in https://github.com/nasa/fprime/pull/4127
Enhancement: Added file size and subdirectory support to FileManager directory listing feature by @Isaac-G5900 in https://github.com/nasa/fprime/pull/4041
Revise Communication Adapter Interface documentation by @LeStarch in https://github.com/nasa/fprime/pull/4133
Add Active Phaser to Svc by @lsk567 in https://github.com/nasa/fprime/pull/3974
Format all top-level source folders by @thomas-bc in https://github.com/nasa/fprime/pull/4134
Fix test logic for TcDeframer CRC check by @thomas-bc in https://github.com/nasa/fprime/pull/4138
Fixing LinuxSpiDriver issues; Adding function argument check and completing read-after-write checks by @vincewoo in https://github.com/nasa/fprime/pull/4137
Revise install instructions with latest project structure by @thomas-bc in https://github.com/nasa/fprime/pull/4139
Add SDD documentation for LinuxUartDriver component by @Copilot in https://github.com/nasa/fprime/pull/4124
Bump requirements ahead of v4.0.1a1 by @thomas-bc in https://github.com/nasa/fprime/pull/4142
Call destructors when ExternalArray releases memory for which it has called constructors by @bocchino in https://github.com/nasa/fprime/pull/4143
Update custom framing How-To guide by @thomas-bc in https://github.com/nasa/fprime/pull/4144
Make APID and FwPacketDescriptorType the same width by @thomas-bc in https://github.com/nasa/fprime/pull/4076
Add Fw::Buffer allocation interface by @LeStarch in https://github.com/nasa/fprime/pull/4148
Supported platforms by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4152
FPP 3.1.0a1 by @Kronos3 in https://github.com/nasa/fprime/pull/4161
Fix grammatical error in F' introduction by @RobRoyce in https://github.com/nasa/fprime/pull/4174
Add Fw::TimeInterval constructor for computing delta between start/en… by @Kronos3 in https://github.com/nasa/fprime/pull/4172
Add support to set socket options for IP sockets by @m-aleem in https://github.com/nasa/fprime/pull/4146
Mark legacy serialize and deserialize methods as DEPRECATED. Upgrade remaining references to legacy methods. by @vincewoo in https://github.com/nasa/fprime/pull/4145
add system resources integration test by @japrozs in https://github.com/nasa/fprime/pull/4126
Socket automatic reconnections in dedicated thread by @m-aleem in https://github.com/nasa/fprime/pull/4136
Update Int to match PR4079 and clean-up Int Misc by @chuynh4duarte in https://github.com/nasa/fprime/pull/4111
Fix Intermittent UT failure in FprimeDeframer by @thomas-bc in https://github.com/nasa/fprime/pull/4177
regex is a bit wrong. It never would work with 'Os/File.hpp' by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4193
Ci zephyr by @LeStarch in https://github.com/nasa/fprime/pull/4141
Add improvements to ComQueue by @LeStarch in https://github.com/nasa/fprime/pull/4190
[Rate Groups and Timeliness] RateGroups Docs Enhancements by @pavly-gerges in https://github.com/nasa/fprime/pull/4196
Add nomenclature document by @thomas-bc in https://github.com/nasa/fprime/pull/4200
bump gds version to latest by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4236
Fix inconsistencies in Drv.LinuxUartDriver SDD by @ianbrault in https://github.com/nasa/fprime/pull/4237
CWE 453 cmd buffer assert by @bitWarrior in https://github.com/nasa/fprime/pull/4198
FpySequencer Add push tlm val and time dir by @zimri-leisher in https://github.com/nasa/fprime/pull/4230
Update CI to use latest macOS intel runners by @thomas-bc in https://github.com/nasa/fprime/pull/4251
Clear up encoding and newline errors by @celskeggs in https://github.com/nasa/fprime/pull/4252
must be explicit when using unions otherwise size mispatch could occur by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4256
Fix for PosixFileTest UT failure by @ianbrault in https://github.com/nasa/fprime/pull/4254
Bump FPP to 3.1.0a2 by @Kronos3 in https://github.com/nasa/fprime/pull/4263
Make GenericHub EXCLUDE_FROM_ALL by @LeStarch in https://github.com/nasa/fprime/pull/4178
Data structure library, phase 2 by @bocchino in https://github.com/nasa/fprime/pull/4062
Switch to U64 Logger Tests by @Willmac16 in https://github.com/nasa/fprime/pull/4262
Add STEP command to FpySequencer by @zimri-leisher in https://github.com/nasa/fprime/pull/4239
Add PUSH_TIME directive by @zimri-leisher in https://github.com/nasa/fprime/pull/4275
Add ErrorNotify port to CCSDS deframers by @thomas-bc in https://github.com/nasa/fprime/pull/4267
Bump C++ to 14 by @LeStarch in https://github.com/nasa/fprime/pull/4278
Add option for installing static libs by @LeStarch in https://github.com/nasa/fprime/pull/4277
Add FPRIME_CMAKE_QUIET option by @LeStarch in https://github.com/nasa/fprime/pull/4276
Fix typos in cross-compiling docs by @Angelina-2007 in https://github.com/nasa/fprime/pull/4280
Bump FPP with unified tool by @Kronos3 in https://github.com/nasa/fprime/pull/4287
NonASCII characters removed by @djbyrne17 in https://github.com/nasa/fprime/pull/4298
Bump fprime-gds to 4.0.2a8 in requirements.txt by @Willmac16 in https://github.com/nasa/fprime/pull/4299
Little Endian Serialization by @Willmac16 in https://github.com/nasa/fprime/pull/4294
Add Communication Aggregator Component by @LeStarch in https://github.com/nasa/fprime/pull/4264
Mark SwAssert declarations as noinline by @celskeggs in https://github.com/nasa/fprime/pull/4304
Provide ability to update parameters via a file by @m-aleem in https://github.com/nasa/fprime/pull/4165
FpySequencer flag system by @zimri-leisher in https://github.com/nasa/fprime/pull/4259
Update contribution guidelines for clarity and process by @LeStarch in https://github.com/nasa/fprime/pull/4312
Enhance Fpy docs with state machine diagram by @LeStarch in https://github.com/nasa/fprime/pull/4315
Address student feedback for How-To Framing protocol by @thomas-bc in https://github.com/nasa/fprime/pull/4314
Add News page to nav.yml by @thomas-bc in https://github.com/nasa/fprime/pull/4317
Fix O_SYNC on systems without the definition by @LeStarch in https://github.com/nasa/fprime/pull/4322
Add alignment to memory allocator by @LeStarch in https://github.com/nasa/fprime/pull/4319
Update RawTime UTs to require a platform-specific helper by @thomas-bc in https://github.com/nasa/fprime/pull/4323
Fix RawTime UT oversight on initialization by @thomas-bc in https://github.com/nasa/fprime/pull/4330
Time Limited Event Throttle by @Kronos3 in https://github.com/nasa/fprime/pull/4306
Refactor FrameAccumulator not to assert on incorrect size_out by @thomas-bc in https://github.com/nasa/fprime/pull/4340
Change FPP enums to smallest representation by @pjromano in https://github.com/nasa/fprime/pull/4342
Adjust task priorities to fit within supported platforms' priority ranges by @pjromano in https://github.com/nasa/fprime/pull/4337
Fix macOS CI intermittent failure by @thomas-bc in https://github.com/nasa/fprime/pull/4347
Update CI for top-level namespace structure by @thomas-bc in https://github.com/nasa/fprime/pull/4353
Document sequencer requirements and directives by @LeStarch in https://github.com/nasa/fprime/pull/4373
Clarify float operation behavior in documentation by @LeStarch in https://github.com/nasa/fprime/pull/4328
Add more error checking to arithmetic directives by @LeStarch in https://github.com/nasa/fprime/pull/4331
Fix uplink w/ fprime-gds version 4.0.2a9 by @LeStarch in https://github.com/nasa/fprime/pull/4382
Allow bypass of posix_fallocate by @LeStarch in https://github.com/nasa/fprime/pull/4380
Add Configuration section to BufferManager SDD by @Copilot in https://github.com/nasa/fprime/pull/4355
FpySequencer new directives for loops by @zimri-leisher in https://github.com/nasa/fprime/pull/4356
Add How-To implement a Device Manager (device driver 1 of 2) by @thomas-bc in https://github.com/nasa/fprime/pull/4378
fix(.clang-tidy): Checks is supposed to be a comma separated list by @Saransh-cpp in https://github.com/nasa/fprime/pull/4379
FpySequencer Add DUMP_STACK_TO_FILE command by @zimri-leisher in https://github.com/nasa/fprime/pull/4384
Update directives documentation with requirements by @LeStarch in https://github.com/nasa/fprime/pull/4385
Created new SerialBufferBase as a parent of SerializeBufferBase (now renamed LinearBufferBase). by @vincewoo in https://github.com/nasa/fprime/pull/4288
Replace FpConfig.h header with FPP model elements by @thomas-bc in https://github.com/nasa/fprime/pull/4393
Add How-To Implement a Bus Driver guide (device driver 2 of 2) by @thomas-bc in https://github.com/nasa/fprime/pull/4398
Bump brotli from 1.1.0 to 1.2.0 by @dependabot[bot] in https://github.com/nasa/fprime/pull/4400
Add new Fw::StringBase type for strings backed by immutable string literals by @ianbrault in https://github.com/nasa/fprime/pull/4269
Fix compiler options in Ref build by @bocchino in https://github.com/nasa/fprime/pull/4409
Fix FppTest by @bocchino in https://github.com/nasa/fprime/pull/4410
Clean up FpySequencer directives by @zimri-leisher in https://github.com/nasa/fprime/pull/4395
ComAggregator updates by @LeStarch in https://github.com/nasa/fprime/pull/4402
Add fpp-to-json to FPP model subbuild by @LeStarch in https://github.com/nasa/fprime/pull/4268
Update FPP to v3.1.0a10 by @bocchino in https://github.com/nasa/fprime/pull/4418
Update obsolete link and screenshots by @djbyrne17 in https://github.com/nasa/fprime/pull/4423
Update fprime-gds version to 4.0.2a10 by @knockout101 in https://github.com/nasa/fprime/pull/4433
Remove redundant line from ActiveRateGroup SDD by @jdperez in https://github.com/nasa/fprime/pull/4435
Add undef to fix collission problem. by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4424
Add convienence functions to MemoryAllocator by @LeStarch in https://github.com/nasa/fprime/pull/4439
Restrict core C and DH when turning off text loggers by @LeStarch in https://github.com/nasa/fprime/pull/4438
Print the task name when socket open/recv fails by @Willmac16 in https://github.com/nasa/fprime/pull/4434
Make fpp-to-json opt-in by default by @LeStarch in https://github.com/nasa/fprime/pull/4449
Specify dictionary types as required by GDS by @thomas-bc in https://github.com/nasa/fprime/pull/4442
Update UT guidelines in Contributing guide by @djbyrne17 in https://github.com/nasa/fprime/pull/4421
Add missing argument description to Os::RawTime by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4461
missing more comments by @kevin-f-ortega in https://github.com/nasa/fprime/pull/4463
Add best practice to CONTRIBUTING.md by @thomas-bc in https://github.com/nasa/fprime/pull/4464
Add component send only (configSend, open) test by @LeStarch in https://github.com/nasa/fprime/pull/4465
FPP v3.1.0a12 by @bocchino in https://github.com/nasa/fprime/pull/4474
Set the Name of Fprime Tasks on Linux by @Willmac16 in https://github.com/nasa/fprime/pull/4428
Add one more ifdef to allow POSIX_THREAD_ENABLE_NAMES off to compile by @Willmac16 in https://github.com/nasa/fprime/pull/4482
Fix improper file dependencies. Fixes #4372 by @LeStarch in https://github.com/nasa/fprime/pull/4479
Update Spi component to return a status on device access by @djbyrne17 in https://github.com/nasa/fprime/pull/4452
Add missing cstring includes by @bevinduckett in https://github.com/nasa/fprime/pull/4486
Bump werkzeug from 3.0.6 to 3.1.4 by @dependabot[bot] in https://github.com/nasa/fprime/pull/4480
Make Os::Queues use Fw::MemAllocator pattern for memory by @LeStarch in https://github.com/nasa/fprime/pull/4451
Add missing implementation of GenericHub by @mshahabn in https://github.com/nasa/fprime/pull/4420
FPP v3.1.0 by @bocchino in https://github.com/nasa/fprime/pull/4483
Fix FPrimeRouter potential usage of invalid buffer by @LeStarch in https://github.com/nasa/fprime/pull/4493
Bump requirements.txt ahead of v4.1.0 release by @thomas-bc in https://github.com/nasa/fprime/pull/4488
New Contributors
@pjromano made their first contribution in https://github.com/nasa/fprime/pull/4078
@Isaac-G5900 made their first contribution in https://github.com/nasa/fprime/pull/4041
@lsk567 made their first contribution in https://github.com/nasa/fprime/pull/3974
@Copilot made their first contribution in https://github.com/nasa/fprime/pull/4124
@RobRoyce made their first contribution in https://github.com/nasa/fprime/pull/4174
@pavly-gerges made their first contribution in https://github.com/nasa/fprime/pull/4196
@bitWarrior made their first contribution in https://github.com/nasa/fprime/pull/4198
@Willmac16 made their first contribution in https://github.com/nasa/fprime/pull/4262
@Angelina-2007 made their first contribution in https://github.com/nasa/fprime/pull/4280
@djbyrne17 made their first contribution in https://github.com/nasa/fprime/pull/4298
@Saransh-cpp made their first contribution in https://github.com/nasa/fprime/pull/4379
@knockout101 made their first contribution in https://github.com/nasa/fprime/pull/4433
@jdperez made their first contribution in https://github.com/nasa/fprime/pull/4435
@bevinduckett made their first contribution in https://github.com/nasa/fprime/pull/4486
@mshahabn made their first contribution in https://github.com/nasa/fprime/pull/4420
Full Changelog: https://github.com/nasa/fprime/compare/v4.0.0...v4.1.0