F´ - A flight software and embedded systems framework
Hotfix release correcting a bug in the deployment templates (fprime-util new --deployment
).
Full Changelog: https://github.com/nasa/fprime/compare/v3.4.2...v3.4.3
Quarterly release including bug fixes, improvements and a few minor breaking changes.
Fw/FilePacket
, the length
and value
member variables are now private and should instead be accessed with the getLength
and getValue
methods.Svc/FileDownlink
, the sourceName
, destName
, osFile
and size
member variables are now private and should be accessed with their get*
methods.send
is now a reserved keyword in FPP. FPP objects that are named send
, such as ports, need to be either renamed or escaped with a $ character (see reference on escape characters in FPP)config/
folder out of fprime/
to configure and own it in their project.
Modifications are required in the following files (links show content to add):
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.Baremetal/FileSystem
readDirectory()
impl by @kbotteon in https://github.com/nasa/fprime/pull/2489
ActiveTextLogger
naming to match build system naming expectations by @kbotteon in https://github.com/nasa/fprime/pull/2509
Full Changelog: https://github.com/nasa/fprime/compare/v3.4.1...v3.4.2
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´.
Full Changelog: https://github.com/nasa/fprime/compare/v3.4.0...v3.4.1
This release of F´, v3.4.0, introduces several major features:
.fppi
files that break out standard bits of functionality. This allows others to use that functionality in a new component by including that file. The new component may then drop-in for any other component implementing the interface. This means that the days of multiple components using the same model are over!This section will designate the breaking changes for this release. Users should study each subsection when upgrading to v3.4.0.
For a full example of all changes described, see: https://github.com/fprime-community/fprime-tutorial-math-component/compare/5ffca10...4b89b9d
Python 3.7 has reached end-of-life and as such our support of Python 3.7 has been discontinued. Users must upgrade their python installations to use Python 3.8 - Python 3.11. Python 3.12 support is being worked on but is unavailable for this release due to significant changes to the python packaging setup.
The Google Test framework has been made into a submodule. Users of existing projects now need to initialize sub repositories recursively.
git submodule update --init --recursive
Users who have not initialized the repository with the above command will see an error similar to the following during unit test generation. The above command will fix the problem.
-- Configuring incomplete, errors occurred! The source directory .../fprime/googletest does not contain a CMakeLists.txt file. Call Stack (most recent call first): .../fprime/cmake/FPrime-Code.cmake:15 (fprime_setup_included_code) CMakeLists.txt:12 (include)
Svc.LinuxTime
Replaced By Svc.PosixTime
Svc.LinuxTime
was always implementing time services for posix operating systems despite the misnomer. It has been renamed Svc.PosixTime
and implements the new Svc.Time
interface! To upgrade, replace the following in your topology instance definitions:
instance linuxTime: Svc.Time base id 0x4500 \
type "Svc::LinuxTime" \
at "../../Svc/LinuxTime/LinuxTime.hpp"
With the new more streamlined definition:
instance posixTime: Svc.PosixTime base id 0x4500
Usages of
linuxTime
in your C++ code will also need to be renamed toposixTime
.
Implementers of the
Svc.Time
model must switch to using theSvc.Time
interface. This is done by:
- Creating a new FPP model
- Including the
Svc.Time
fppi file- Ensuring the port interfaces are implemented in C++
With the upgrade to FPP v2.0 and the new C++ generation back-end, users must update their unit tests include statements as all files are now fully named (no longer generic names like "GTestBase.hpp").
Here is a sample update. The old include names:
#include "GTestBase.hpp"
Must be replaced with the new names:
#include "SignalGenGTestBase.hpp"
Additionally, useages of the Tester
class must be renamed to the qualified class. i.e. Tester
-> SignalGenTester
.
Users may choose to update the filenames as well, although this is not strictly required.
Drv.TcpServer
startup and shutdown methods are now optional, and will be called automatically within the read thread. Users are encouraged to remove explicit calls to these methods, but are not required to do so.
Drv.ByteStreamDriverModel
Has Been Made Into an InterfaceThe byte stream driver model has been refined into an interface. This means that users need not instantiate it with a "type" defined somewhere else, but instead instantiate a real type that "drops in" to support a byte steam driver.
To upgrade, replace the following in your topology instance definitions:
instance comm: Drv.ByteStreamDriverModel base id 0x4000 \
type "Drv::TcpClient" \ # type specified to select implementor of ByteStreamDriverModel
at "../../Drv/TcpClient/TcpClient.hpp" # location of above implementor must also be specified
With the new more streamlined definition:
instance comm: Drv.TcpClient base id 0x4500
This applies to the
TcpServer
as well.
Implementers of the
Drv.ByteStreamDriverModel
model must switch to using theDrv.ByteStreamDriverModel
interface. This is done by:
- Creating a new FPP model
- Including the
Drv.ByteStreamDriverModel
fppi file- Ensuring the port interfaces are implemented in C++
Svc.RateGroupDriver
Now Accepts OffsetsThe rate group driver component had a flaw where all rate groups would be invoked on the same cycle. This causes spikes in system load when all rate groups lined up. We added the ability to specify an offset such that these may be mitigated if a user chooses. However, this means the configuration block for the component has changed.
Replace the older configuration:
NATIVE_INT_TYPE rateGroupDivisors[Svc::RateGroupDriver::DIVIDER_SIZE] = {1, 2, 4};
...
rateGroupDriverComp.configure(rateGroupDivisors, FW_NUM_ARRAY_ELEMENTS(rateGroupDivisors));
With the new configuration:
Svc::RateGroupDriver::DividerSet rateGroupDivisorsSet{{{1, 0}, {2, 0}, {4, 0}}};
...
rateGroupDriverComp.configure(rateGroupDivisorsSet);
In the above example all offsets are set to
0
to maintain the old behavior only with the new configuration interface.
Full Changelog: https://github.com/nasa/fprime/compare/v3.3.2...v3.4.0
This release fixes an issue where deployments created with fprime-util new --deployment
choosing to use TcpServer
as a communication driver did not call .shutdown()
.
Full Changelog: https://github.com/nasa/fprime/compare/v3.3.1...v3.3.2
new --deployment
now allows for selection of the comDriver type between TcpClient, TcpServer and LinuxUART.Full Changelog: https://github.com/nasa/fprime/compare/v3.3.0...v3.3.1
Latest: https://github.com/nasa/fprime/releases/tag/v3.3.2 fixes issues with
fprime-util new --deployment
and using theTcpServer
component for uplink and downlink.
fprime-util new --project
fprime-util visualize
: visualize an F´ topology with a single commandFull Changelog: https://github.com/nasa/fprime/compare/v3.2.0...v3.3.0
-P
argument by @pcrosemurgy in https://github.com/nasa/fprime/pull/2031
Framer.comStatusIn
port sync
, avoid mutual exclusion locking by @pcrosemurgy in https://github.com/nasa/fprime/pull/2045
Full Changelog: https://github.com/nasa/fprime/compare/v3.2.0...v3.3.0-RC1
F´ v.3.2.0 comes with FPP, Tooling and GDS improvements. The underlying typing system has been improved to allow logical types.
fprime-util new
now supports generating new projects (as well as deployments and components). Users are recommended to use this new functionality moving forward.fprime-util new
functionality.Full Changelog: https://github.com/nasa/fprime/compare/v3.1.1...v3.2.0
Updated fprime-tools to allow external configuration and update fprime-gds to run without arguments and match the new fprime-tools version!
Full Changelog: https://github.com/nasa/fprime/compare/v3.1.0...v3.1.1