Releases: nasa/fprime
v4.0.0a1 (Alpha 1)
F Prime v4 Alpha Release 1 🎉
This is the first alpha release of F Prime v4. This release comes with the following amazing features:
- Conditional Sequencing (
Svc/FpySequencer
) - Fixed-Width Numerical Types
- Better GDS plugin support (
GdsStandardApp
,DataHandlerPlugin
) - Improved CMake structure
- Formalized configuration modules
- External Parameter Handling Support
- FPP moduling for Packets
- FPP v3
- Design pattern documentation
- Uplink/Downlink upgrades
Breaking Changes
Typing Changes
F Prime is removing the NATIVE_INT_TYPE
, PlatformIntType
, etc. Additionally, F Prime has begun ensuring that configurable types (e.g. FwIndexType
) are configured to fixed-width values. The requirements (signed, minimum sizes) can be found in the numerical types document.
Users needing non-default values for configurable types should set them as type aliases in FPP using the new configuration system.
FwIndexType Required as Port Indices
Users of older F Prime code may still have NATIVE_INT_TYPE
used as port indices. This is now required to be FwIndexType
. Other uses of NATIVE_INT_TYPE
must also be replaced.
Before:
const NATIVE_INT_TYPE portNum
After:
const FwIndexType portNum
Rate Group Contexts
Rate group context has been changed to the fixed-width type U32
.
Before
NATIVE_INT_TYPE rateGroup1Context[Svc::ActiveRateGroup::CONNECTION_COUNT_MAX] = {};
NATIVE_INT_TYPE rateGroup2Context[Svc::ActiveRateGroup::CONNECTION_COUNT_MAX] = {};
NATIVE_INT_TYPE rateGroup3Context[Svc::ActiveRateGroup::CONNECTION_COUNT_MAX] = {};
After:
U32 rateGroup1Context[Svc::ActiveRateGroup::CONNECTION_COUNT_MAX] = {};
U32 rateGroup2Context[Svc::ActiveRateGroup::CONNECTION_COUNT_MAX] = {};
U32 rateGroup3Context[Svc::ActiveRateGroup::CONNECTION_COUNT_MAX] = {};
Unit Test Constant Changes
In the same capacity as above, unit test constants of NATIVE_INT_TYPE
are not supported
Before:
static const NATIVE_INT_TYPE MAX_HISTORY_SIZE = 10;
// Instance ID supplied to the component instance under test
static const NATIVE_INT_TYPE TEST_INSTANCE_ID = 0;
// Queue depth supplied to the component instance under test
static const NATIVE_INT_TYPE TEST_INSTANCE_QUEUE_DEPTH = 10;
After:
// Maximum size of histories storing events, telemetry, and port outputs
static const U32 MAX_HISTORY_SIZE = 10;
// Instance ID supplied to the component instance under test
static const FwEnumStoreType TEST_INSTANCE_ID = 0;
// Queue depth supplied to the component instance under test
static const FwSizeType TEST_INSTANCE_QUEUE_DEPTH = 10;
New CMake Module Structure
The old module registration structure in F Prime had one primary limitation: SOURCE_FILES and MOD_DEPS were variables and thus could bleed into other module registrations if not unset. This pollution of CMake's variable namespace, high chance for user error, and poor choice of the name "MOD_DEPS" led to a need to refactor how modules are done. To fit in with modern CMake practices, all module inputs are arguments to the registration calls with individual variables specified by directive arguments (e.g. SOURCES, DEPENDS).
Tip
register_fprime_module
, register_fprime_deployment
and register_fprime_ut
still support MOD_DEPS
, SOURCE_FILES
, UT_MOD_DEPS
, UT_SOURCE_FILES
. Updating to the new structure is only required for register_fprime_configuration
calls. However, new features will only be supported with the new structure and as such, users are encouraged to update when needed.
The new register_fprime_*
calls are provided arguments lists separated by argument directives to specify sources (SOURCES
), dependencies (DEPENDS
) etc.
The first argument is an optional explicit module name followed by directives and their argument lists.
Before:
set(SOURCE_FILES
"${CMAKE_CURRENT_LIST_DIR}/source1.cpp"
"${CMAKE_CURRENT_LIST_DIR}/source2.cpp"
"${CMAKE_CURRENT_LIST_DIR}/source1.fpp"
"${CMAKE_CURRENT_LIST_DIR}/source2.fpp"
)
set(HEADER_FILES
"${CMAKE_CURRENT_LIST_DIR}/header1.hpp"
"${CMAKE_CURRENT_LIST_DIR}/header2.hpp"
)
set(MOD_DEPS Fw_Types)
register_fprime_module(MyModule)
After:
register_fprime_module(
SOURCES
"${CMAKE_CURRENT_LIST_DIR}/source1.cpp"
"${CMAKE_CURRENT_LIST_DIR}/source2.cpp"
HEADERS
"${CMAKE_CURRENT_LIST_DIR}/header1.hpp"
"${CMAKE_CURRENT_LIST_DIR}/header2.hpp"
AUTOCODER_INPUTS
"${CMAKE_CURRENT_LIST_DIR}/source1.fpp"
"${CMAKE_CURRENT_LIST_DIR}/source2.fpp"
DEPENDS
Fw_Types
)
Tip
Notice that autocoder inputs are now specifically called out separately from compiled source files.
Warning
Do not specify an explicit module name when autocoding FPP.
Old variable usage can be translated to new directives using the following table:
Old Structure's Variable | Directive | Purpose |
---|---|---|
SOURCE_FILES | SOURCES | Source files supplied to cc , c++ , or other compiler |
SOURCE_FILES | AUTOCODER_INPUTS | Autocoder input files used to generate file |
MOD_DEPS | DEPENDS | Module build target dependencies |
HEADER_FILES | HEADERS | Header files supplied by the module |
UT_SOURCE_FILES (built) | SOURCES | Unit test source files to supplied to compiler |
UT_SOURCE_FILES (autocode inputs) | AUTOCODER_INPUTS | Unit test autocoder input files |
UT_MOD_DEPS | DEPENDS | Unit test module dependencies |
UT_HEADER_FILES | HEADERS | Unit test headers |
Deployment Ordering
Since deployments in F Prime do recursive detection of items like unit tests, etc, deployments now check for the existence of F Prime modules that support them. This means F Prime deployments must be defined last in the CMake structure.
Before:
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Components/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/MathDeployment/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Types/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Ports/")
After:
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Components/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Types/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Ports/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/MathDeployment/")
Project Configuration Changes
One of the flaws of historical F Prime is that configuration was an all-or-nothing copy. It meant that projects, libraries, etc could not just override what was changed. This presented projects with a maintenance issue: owning unchanged code provided by F Prime while tracking their own minor changes.
With v4.0.0
projects choose to override specific files and the rest are inherited from underlying configuration modules.
Additionally, each configuration is specified as a module. Use the CONFIGURATION_OVERRIDES
directive to override existing config. User SOURCES
, HEADERS
, and AUTOCODER_INPUTS
as usual to specify new configuration (i.e. new configuration for your library). Modules specifying only CONFIGURATION_OVERRIDES
must also use the INTERFACE
specifier.
To specify a new configuration module, ensure that some directory added to the project with add_fprime_subdirectory
contains a CMakeLists.txt
including a register_fprime_config
call.
See changes in cmake module structure to understand the format of the register_fprime_config
call.
CMakeLists.txt
register_fprime_config(
CONFIGURATION_OVERRIDES
"${CMAKE_CURRENT_LIST_DIRECTORY}/FpConfig.fpp"
"${CMAKE_CURRENT_LIST_DIRECTORY}/IpCfg.hpp"
)
This example shows how to override just FpConifg.fpp
and IpCfg.hpp
from fprime.
Tip
Configurations are overridden by filename, so remember to keep your filenames consistent with the file you wish to override.
Tip
Default F Prime configuration lives at fprime/default/config
projects will use these settings unless the filename is included in a projects configuration module via CONFIGURATION_OVERRIDES
.
Warning
F Prime only has the notion of a single configuration per project (i.e. build). You still may not specify different configurations for different modules built by the same project.
Component Configuration Usage Changes
All configuration headers used from the F Prime configuration directory default/config
, a library configuration directory, or a project configuration directory must specify the path including the parent folder.
Before:
#include "IpCfg.hpp"
After:
#include "config/IpCfg.hpp"
Additionally, components wanting to depend on and use core F Prime configured types must depend on Fw_Types
and include Fw/FPrimeBasicTypes.h
or Fw/FPrimeBasicTypes.hpp
.
Before: C++
#include "FpConfig.hpp"
After: C++
#include "Fw/FPrimeBasicTypes.hpp
Before: CMakeLists.txt
set(MOD_DEPS
SomeDependency
)
After: CMakeLists.txt
set(MOD_DEPS
Fw...
v3.6.3
Release Notes
This release brings in a fix for autocoding of FPP arrays that could cause a very lengthy (if not infinite) build time when compiling with -g
should the user have defined a very large array type (~10,000's of elements).
Warning
The v3.6.X series will be the last F Prime releases to support XML autocoding using the Ai.xml and Packets.xml structures.
What's Changed
- Fixing how CI builds remote properties by @LeStarch in #3582
- CI Test of v2.3.1a1 by @LeStarch in #3581
- Bumping FPP to v2.3.1 by @LeStarch in #3572
Full Changelog: v3.6.2...v3.6.3
v3.6.2 - Hotfix 2
This is a follow-up hot-fix release to support fprime-vxworks (v0.2.0). It includes the following bug fixes:
- Removes
priority
from ActiveLogger to prevent health failure when alive and processing many events - Added
NOT_SUPPORTED
to OSAL statuses.
Full Changelog: v3.6.1...v3.6.2
Release v3.6.1
This is a fix release for v3.6.0, which fixes the following issues:
fprime-gds
failing to handlefalse
tokens in JSONfpp-to-layout
not included inrequirements.txt
- Python dependency security updates
- Website content rearranging
Full Changelog: v3.6.0...v3.6.1
Release v3.6.0
Major Features
- State Machine modeling is now available in FPP, see the FPP User's Guide: Defining State Machines
- SBOM generation is integrated into the build process, using Syft. More documentation here: F´ SBOM Generation
Breaking Changes
Os::ConditionVariable usage
Os::ConditionVariable::wait()
will no longer lock on behalf of the user. Callers of thewait()
API must have previously locked the Mutex. Failing to do so will result in an assertion error as it is illegal to wait without holding a lock.
Changes to the Os::ConditionVariable implementations
- Implementors of the
Os::ConditionVariable
interface must now implementpend()
instead ofwait()
, returning aConditionVariable::Status
instead of asserting.
IPv4 Driver Changes
Users of the Drv::TcpClient, Drv::TcpServer and Drv::Udp should not supply the reconnect
flag to the start()
call of these components anymore. It is also recommended to move the configure
call to the configuration section of the topology start up sequence.
+ if (state.hostname != nullptr && state.port != 0) {
+ comm.configure(state.hostname, state.port);
+ }
if (state.hostname != nullptr && state.port != 0) {
Os::TaskString name("ReceiveTask");
// Uplink is configured for receive so a socket task is started
- comm.configure(state.hostname, state.port);
- comm.start(name, true, COMM_PRIORITY, Default::STACK_SIZE);
+ comm.start(name, COMM_PRIORITY, Default::STACK_SIZE);
}
}
Users of Drv::Udp
must now call configureSend()
/ configureRecv()
explicitly. It is now illegal to call configure()
and will result in an assertion failure.
What's Changed
- Check spelling 0.0.24 by @jsoref in #3051
- Pull in fprime-gds ordering fix by @LeStarch in #3087
- Do not ASSERT when notifying StubConditionVariable by @celskeggs in #3088
- Fix LinuxGpioDriver build w/ disabled object names by @celskeggs in #3103
- Update README.md by @matt392code in #3097
- FPP v2.3.0a1 by @bocchino in #3066
- Remove local_time from ActiveTextLogger. Fixes: #2815 by @AlesKus in #3104
- Fixing missing python packages. Fixes: #3101, #3102 by @LeStarch in #3110
- Adding in a ROSES issue template by @LeStarch in #3122
- Add os supplied cmake wrapper by @kevin-f-ortega in #3117
- Switch bootstrap tests to project lib structure by @thomas-bc in #3130
- Fixing conflation between user guide and reference by @LeStarch in #3133
- LinuxGpioDriver: fix static_assert's for FwSizeType. Possible fix for #3030 by @AlesKus in #3118
- Add SDD aggregation into the core website by @thomas-bc in #3139
- Fix format string specifiers for queue and task names by @celskeggs in #3146
- Fix Os/Posix/Task.cpp compilation with musl by @celskeggs in #3145
- Integrating SBOM generation into CMake by @LeStarch in #3138
- Update docs structure for website versioning improvements by @thomas-bc in #3150
- Fix typo in markdown warning in SBOM docs by @thomas-bc in #3152
- Fix outdated links and cross-reference docs locally by @thomas-bc in #3153
- Removing DEBUG_PRINT like statements. Part of: #1708 by @LeStarch in #3140
- Update mutex and condition-variable interface by @kevin-f-ortega in #3158
- Removing printf family from Ref, Drv, RPI, OS, Utils by @LeStarch in #3141
- UDP does not bind on send only port. Fixes: #3127 by @LeStarch in #3143
- [Docs] Correct small typos by @SiboVG in #3165
- Stop ignoring real buffers shrunk to 0 size by @celskeggs in #3157
- Removing printf from Svc. Partially Fixed #1708 by @LeStarch in #3170
- fixed #3089. change timeout value to 3 by @chuynh4duarte in #3171
- Adding additional SCALAR types testing by @LeStarch in #3189
- Fix memory sanitizer to be on by default by @kevin-f-ortega in #3183
- FPP v2.3.0 by @bocchino in #3181
- Work/dp catalog review updates by @timcanham in #3191
- Fixes #1708 by Completing the work In
Fw
by @LeStarch in #3173 - Use mkdocs search boosting instructions for website pages by @thomas-bc in #3212
- Bump Tools and GDS to v3.6.0 by @LeStarch in #3215
- Remove Doxygen instructions from markdown by @thomas-bc in #3218
- PriorityQueue Send mark as unsafe for ISR by @kevin-f-ortega in #3216
New Contributors
- @matt392code made their first contribution in #3097
- @AlesKus made their first contribution in #3104
- @chuynh4duarte made their first contribution in #3171
Full Changelog: v3.5.1...v3.6.0
Release v3.5.1
This release includes minor fixes to support the fprime-vxworks package. This fixes refine the Posix OSAL layer for use with VxWork's posix support.
Breaking Changes
Svc::DpCatalog
configuration must be updated to include #define DP_EXT ".fdp"
. This file located in user configuration and is named DpCfg.hpp
What's Changed
- removed sudo as it's no longer needed by @kevin-f-ortega in #2957
- Farewell, pirate logo! by @thomas-bc in #2958
- Remove prescan by @LeStarch in #2956
- Fix the bad dependency by @LeStarch in #2961
- Fix arm tut by @kevin-f-ortega in #2962
- Restoring HAS_F64 functionality by @LeStarch in #2967
- Fix Two Minor Issues With New Tools (CMake 3.31RC2; Python 3.13) by @LeStarch in #2978
- Add priority to Os::Task by @LeStarch in #2984
- Fix Logger in baremetal FatalHandler component implementation by @ethancheez in #2986
- Reworking prevent_prescan in subbuild context by @LeStarch in #2991
- Place
SyntheticFileSystem
underBUILD_TESTING
condition by @pcrosemurgy in #2993 - Fix posix Task for cases where _SC_PAGESIZE is undefined by @LeStarch in #2995
- Fix error printing during Ninja sub-build by @thomas-bc in #3006
- #2074 Parameterize buffer size in UDP and TCP Server. by @bdshenker in #2998
- Os file vxworks by @kevin-f-ortega in #3009
- Created I2cDriver Interface by @jsilveira1409 in #3015
- Created ComInterface.fppi by @jsilveira1409 in #3017
- Fix FileUplink packet sequence repeat and CRC #1378 by @DJKessler in #3007
- Update fpp version to v2.2.1a1 by @bocchino in #3027
- Bugfix/empty seq by @jsilveira1409 in #3025
- moved Drv ports to a Ports directory by @kevin-f-ortega in #3008
- Fix comments in TcpServer. Fixes: #3029 by @LeStarch in #3031
- Clarify buffer ownership for ByteStreamDriverModel by @celskeggs in #3040
- Adding restrict_platform support for FPRIME_HAS_XYZ flags by @LeStarch in #3037
- FPP v2.2.1a2 by @bocchino in #3042
- Default sanitizers to ON when BUILD_TESTING by @LeStarch in #3045
- Remove old RTEMS5 link from docs by @thomas-bc in #3044
- Dup to fcntl by @kevin-f-ortega in #3047
- Add in Svc::ChronoTime for C++11 std::chrono implementation by @LeStarch in #3049
- Document priority queue, max heap. Fixes: #2901 by @LeStarch in #3046
- Fix packet deployment by @timcanham in #3035
- Add Validate Templates (#2387) by @rlcheng in #2990
- Update FPP version to v2.2.1 by @bocchino in #3057
- Removing autodocs runs by @LeStarch in #3059
- Restructure docs for new website by @ashleynilo in #3036
- Clean up getting started guide by @thomas-bc in #3061
- Fix old XML docs to FPP and remove deprecated docs by @thomas-bc in #3062
- Remove "system preference" website theme selection by @thomas-bc in #3065
- Default website theme to light and minor format updates by @thomas-bc in #3067
- Remove accidental files from LinuxTimer by @zimri-leisher in #3069
- Casts for PosixRawTime. Fixes: #3070 by @LeStarch in #3071
- Work/dp catalog by @timcanham in #2713
- Fix CMake CI and update workflow triggers by @thomas-bc in #3073
- Fix SignalGen commands in integration tests by @thomas-bc in #3075
- Update requirements.txt for v3.5.1 release by @thomas-bc in #3077
New Contributors
- @jsilveira1409 made their first contribution in #3015
- @celskeggs made their first contribution in #3040
Full Changelog: v3.5.0...v3.5.1
Release v3.5.0
The release v3.5.0 contains a number of improvements. Primarily, the Operating System Abstraction Layer (OSAL) has been refactored to make integration with new operating systems easier. It also ensures that the OSAL selection for each subsystem is independent, and selected per-executable rather than the entire project.
State machine autocoding has been integrated into F Prime, and a plug-in system has been introduced to the GDS to allow for customized integrations and use-cases.
Breaking Changes
There are a number of breaking changes in this release. Users will need to fix these issues when upgrading from v3.4.3
.
Configuration Changes
Configuration has been substantially changed. Users should migrate to the new FpConfig.h
available in fprime/config
and adjust settings accordingly.
General OSAL Changes
Users are encouraged to call Os::init()
in the main function of their deployment. While not strictly necessary, this initializes OS singletons at a deterministic time.
Fw::Logger::log
calls that precede this call will not be output.
#include <Os/Os.hpp>
...
int main(...) {
Os::init();
...
}
Failing to do so will result in singletons self-initializing on first usage resulting in a very small delay on first usage. Fw::Logger::log
messages will not use the Os::Console
output until Os::init()
is called.
OSAL functions names have been updated to match better naming standards. Please consult the OSAL layer APIs for the new names.
Fw::Logger and Os::Log
Os::Log
has been renamed Os::Console
to differentiate it from "Fw Log (Log Events)". Most users should be using the Fw::Logger
interface anyway.
Fw::Logger::logMsg
has been renamed to Fw::Logger::log
and now supports printf
style substitutions!
Fw::Obj.m_objName is Now an Fw::ObjectName String Type
Direct uses of m_objName
should note that the type has changed to a string class. The accessor method still returns a char*
type.
FPP Changes
FPP has introduced new keywords to support integrated state machines! This means users who chose those names will need to escape them. Commonly, state
is used and should be escaped as $state
- event SetBlinkingState(state: Fw.On) ...
+ event SetBlinkingState($state: Fw.On) ...
PRM_SET
/SAVE
commands are PARAM_SET
/SAVE
. This will be revised in a future release as was an unintentional rename.
Task Changes
Most components have standardized on start
, stop
, and join
calls to manage internal tasks. To start these tasks users should switch to the new start
, stop
, and join
methods.
- comm.startSocketTask(name, true, COMM_PRIORITY, Default::STACK_SIZE);
+ comm.start(name, true, COMM_PRIORITY, Default::STACK_SIZE);
...
- comm.stopSocketTask();
- (void)comm.joinSocketTask(nullptr);
+ comm.stop();
+ comm.join();
Fully Qualified Instance Names
Instances in F Prime dictionaries and typologies are now fully-qualified. This means that the instances are prepended with the module names. To restore the global-instance functionality of older deployments, please remove modules definitions from around instances.
- module Ref {
...
instance blockDrv: Drv.BlockDriver base id 0x0100 \
queue size Default.QUEUE_SIZE \
stack size Default.STACK_SIZE \
priority 140
...
- }
StringUtils Changes
Users of StringUtils functions should now supply a FwSizeType
and may no longer use U32
as arguments.
StringBase Constructor are now Explicit
Conversion from const char*
to some Fw::StringBase
types requires explicit use of the single argument constructor.
Linux GPIO driver
Users of the LinuxGpioDriver now should exepct a return value of Drv::GpioStatus
from read and write calls. Additionally, the open call now expects a chip argument.
- bool gpio_success = gpioDriver.open(13, Drv::LinuxGpioDriver::GpioDirection::GPIO_OUT);
+ Os::File::Status gpio_success = gpioDriver.open("/dev/gpiochip0", 13, Drv::LinuxGpioDriver::GpioConfiguration::GPIO_OUTPUT);
Time and Interval Changes
Users should now supply a Fw::TimeInterval(seconds, microseconds)
to calls to Os::Task::delay
. Svc.TimeVal
has been replaced by Os::RawTime
.
GDS Changes
The GDS now defaults to ZeroMQ as a transport layer instead of our home-grown solution.
The GDS now expects dictionaries in the new JSON format.
Full List of Changes
- Fixed UT by @SMorettini in #2543
- Issue 2457 by @LeStarch in #2502
- Address comments from #2485 by @bocchino in #2542
- Update File.cpp by @LeStarch in #2555
- Add shadow variable and pedantic warnings by @JohanBertrand in #2544
- Add DpManager by @bocchino in #2546
- Update troubleshooting by @thomas-bc in #2561
- Fixed documentation of U32 (Swapped signed and unsigned int) by @tsha-256 in #2559
- Resolve string_copy static analysis warnings by @thomas-bc in #2556
- Add Fw::ObjectName to hold Fw::ObjBase name by @thomas-bc in #2497
- Remove FPP dependencies on native int types by @bocchino in #2548
- Force pip to upgrade during setup action by @thomas-bc in #2565
- Explicity add test dependencies to Os_ut_exe by @LeStarch in #2569
- Fix data product array record size by @bocchino in #2568
- Adding GDS development guide by @LeStarch in #2577
- Update dictionary JSON spec field names and examples by @jwest115 in #2574
- Fix crosscompiler path in tutorial by @thomas-bc in #2599
- Fix broken links in INSTALL.md by @thomas-bc in #2610
- Fixes #2602; bumps required version to 3.16 by @LeStarch in #2617
- Update
Svc/PolyDb
to use configurable FPP enumeration as index by @timcanham in #2587 - Disambiguate fpp error messages. Fixes: #2618 by @LeStarch in #2620
- Add Java requirement to install guide by @LeStarch in #2621
- Produce error on restricted targets. Fixes: #2486 by @LeStarch in #2633
- Fix missing fpp_depend build. Fixes: #2576 by @LeStarch in #2631
- Removing GroundInterface component. Fixes: #2037 by @LeStarch in #2632
- Split CMake tests and run with minimum cmake by @LeStarch in #2619
- Add DpWriter by @bocchino in #2593
- Fix INI newline processing. Fixes #2630 by @LeStarch in #2637
- Correcting rate group documentation. Fixes #1719 by @LeStarch in #2638
- Issue 1604 by @LeStarch in #2625
- Fixing Documentation Generation fo macOS by @LeStarch in #2655
- Adding start apps and arguments by @LeStarch in #2616
- Initial documentation of fprime libraries by @LeStarch in #2665
- More GDS plugin guide improvements by @LeStarch in #2670
- Revise types in generated C++ code by @bocchino in #2668
- Add CODE_OF_CONDUCT.md by @LeStarch in #2629
- Update JSON Dictionary spec by @thomas-bc in #2663
- Format cpp and hpp files in Fw/Types by @bocchino in #2677
- FPP v2.1.0a7 by @bocchino in #2676
- Revising integration test api. Fixes: #1902 by @LeStarch in #2652
- trouble-shooting-guide-2500 by @rlcheng in #2684
- Trouble shooting guide 2500 by @rlcheng in #2698
- Improve error display on failure by @JohanBertrand in #2696
- feat(ci): add markdown link checker by @SauravMaheshkar in #2651
- code clean up for POSIX. by @kevin-f-ortega in #2700
- Add JSON dictionary generation to CMake system by @thomas-bc in #2598
- Add Fw::ExternalString and revise string implementations by @bocchino in #2679
- Data Product Catalog prototype by @timcanham in #2667
- Fix string records for data products by @bocchino in #2697
- Add log on TCP/UDP UT failure and fix UDP UT by @JohanBertrand in #2705
- Fixed conversion warnings on framework tests by @JohanBertrand in #2606
- Create TickDriver interface by @chownw in #2708
- Make single-argument string constructors explicit by @bocchino in #2707
- Fix copying of data product containers by @bocchino in #2711
- Update of clang tidy checks by @JohanBertrand in #2710
- Fix Typo by @inferenceus in #2716
- Re...
Release v3.4.3
Hotfix release correcting a bug in the deployment templates (fprime-util new --deployment
).
What's Changed
- Release v3.4.3 (hotfix), adding [email protected] by @thomas-bc in #2535
Full Changelog: v3.4.2...v3.4.3
Release v3.4.2
Quarterly release including bug fixes, improvements and a few minor breaking changes.
Breaking Changes
- In
Fw/FilePacket
, thelength
andvalue
member variables are now private and should instead be accessed with thegetLength
andgetValue
methods. - In
Svc/FileDownlink
, thesourceName
,destName
,osFile
andsize
member variables are now private and should be accessed with theirget*
methods. send
is now a reserved keyword in FPP. FPP objects that are namedsend
, such as ports, need to be either renamed or escaped with a $ character (see reference on escape characters in FPP)- The following only applies to projects that pull the
config/
folder out offprime/
to configure and own it in their project.
Modifications are required in the following files (links show content to add):
Improvements
- The Ninja build tool is now officially supported by F´ Tools. Generate a Ninja-based build cache with
fprime-util generate --ninja
. fprime-util new --project
is being deprecated in favor of a new package:fprime-bootstrap
. This is to fix installation issues as well as improve user experience with a new recommended approach to using virtual environments within an F´ project. See the Install Guide for more information.- Improvements to the F´ GDS and F´ Tools packages.
All PRs
- Add FPRIME_PROJECT_ROOT to CMAKE_MODULE_PATH. Fixes #2443 by @LeStarch in #2444
- Fix pedantic warning on assert macro by @JohanBertrand in #2436
- Fix/enum representation types by @JackNWhite in #2419
- Fix typo in fpp.cmake by @eltociear in #2459
- Updating framework for FPP post-v2.0.1 by @LeStarch in #2454
- Fix MacOS CI by @thomas-bc in #2466
- Correcting NO_ASSERT handling and safety. Fixes #1706, #2447 by @LeStarch in #2448
- Fix pedantic warnings by @JohanBertrand in #2441
- (#2465) use u8 instead of char by @japrozs in #2471
- Switching to absolute paths in CMake. Fixes #2449 by @LeStarch in #2451
- Generalize UT of RateGroupDriver by @SMorettini in #2472
- Add version-check to bug-report template (#2407) by @0x48piraj in #2490
- Fix
Baremetal/FileSystem
readDirectory()
impl by @kbotteon in #2489 - Fix issues in FppTest by @bocchino in #2494
- Update
ActiveTextLogger
naming to match build system naming expectations by @kbotteon in #2509 - Remove AcConstants.ini by @thomas-bc in #2496
- Fix shadow variables by @JohanBertrand in #2482
- Update demo to show member array support gds by @SMorettini in #2517
- Fixes FIFO buffer after fix-shadow-variables by @LeStarch in #2524
- Removed a_ prefix on arguments by @JohanBertrand in #2513
- Update install guide to use fprime-bootstrap by @thomas-bc in #2512
- Data product framework support by @bocchino in #2485
- Release v3.4.2 by @thomas-bc in #2531
New Contributors
- @JackNWhite made their first contribution in #2419
- @japrozs made their first contribution in #2471
- @0x48piraj made their first contribution in #2490
- @kbotteon made their first contribution in #2489
Full Changelog: v3.4.1...v3.4.2
Release v3.4.1
This release addresses a number of issues with the v3.4.0 release. Most notably, we've corrected a number of issues with the various tool packages that support F´.
What's Changed
- CMake Implementation Selection by @LeStarch in #2384
- Library UTs correctly added with messaging. Fixes #2392 by @LeStarch in #2393
- Update PR template by @thomas-bc in #2402
- Add FPP JSON dictionary spec by @jwest115 in #2403
- Prettify error message if googletest is missing by @thomas-bc in #2408
- Fixing Two Minor CMake Bugs by @LeStarch in #2412
- Add CI on release branches by @thomas-bc in #2417
- Fixes #2420 by removing impl and testimpl targets by @LeStarch in #2425
- Fix check targets name mismatch by @thomas-bc in #2430
- Add recommended pip versions to INSTALL.md by @thomas-bc in #2431
- Attempt to fix #2383 with cleaner code refactoring by @LeStarch in #2434
- Update FPP version to 2.0.2 by @bocchino in #2433
- Fixes #2432 removing extra pointer qualifier by @LeStarch in #2435
- Tame CI to use fewer parallel jobs by @LeStarch in #2437
- Changes for v3.4.1 by @LeStarch in #2438
Full Changelog: v3.4.0...v3.4.1