v5.0.0

Additions

  • Unit test for Internal Error Reporter
    PR: #563
  • Additional build flags for FSFW have been added
    PR: #568
  • The current FSFW Version can now be read with fsfw::FSFW_VERSION. For comparison with User required Version is possible withfsfw::Version(UserRequiredMajor,UserRequiredMinor,UserRequiredRevision)>=fsfw::FSFW_VERSION
    PR: #575
  • FSFW_DISABLE_PRINTOUT will now be defined default to 0, if it was not defined
    PR: #576
    -Cooldown will now be initialized in the constructor by calling:Countdown::setTimeout
    PR: #577
  • Events: Introduced UniqueEventId_t which can be found by generators
    PR: #578
  • Added function to add component to a periodic task by pointer
    PR: #591
  • Added ETL dependency and improved library dependency management
    PR: #592
  • LTO support: Allow using LTO/IPO by setting FSFW_ENABLE_LTO=1. CMake is able to detect whether
    the user compiler supports IPO/LPO. LTO is on by default now. Most modern compilers support it,
    can make good use of it and it usually makes the code faster and/or smaller.
    After some more research:
    Enabling LTO will actually cause the compiler to only produce thin LTO by adding
    -flto -fno-fat-lto-objects to the compiler options. I am not sure this is an ideal choice
    because if an application linking against the FSFW does not use LTO, there can be compile
    issues (e.g. observed when compiling the FSFW tests without LTO). This is a known issue as
    can be seen in the multiple CMake issues for it:
  • Added generic PUS TC Scheduler Service 11. It depends on the new added Emebeded Template Library
    (ETL) dependency.
    PR: #594
  • Added options for CI/CD builds: FSFW_CICD_BUILD. This allows the source code to know
    whether it is running in CI/CD
    PR: #623
  • Basic clion support: Update .gitignore and add some basic run configurations
    PR: #625

HAL additions

  • Linux HAL: Add I2C wiretapping option. It is now possible to define FSFW_HAL_I2C_WIRETAPPING to 1 and have a printout of all Data received over I2C
    PR: #559
  • HAL GPIO: Direction, GpioOperation and Levels are enum classes now, which prevents
    name clashes with Windows defines.
    PR: #572
  • HAL GPIO: Improved error checking in LinuxLibgpioIF::configureGpios(...). If a GPIO
    configuration fails, the function will exit prematurely with a dedicated error code
    PR: #602
  • New CMake option FSFW_HAL_LINUX_ADD_LIBGPIOD to specifically exclude gpiod code.
    PR: #572
  • HAL Linux SPI: Set the Clock Default State when setting new SPI speed
    and mode
    PR: #573

Changes

  • Changes in Integration Tests for tests/src/fsfw_tests/integration/task/TestTask.h
    PR: #560

  • Small Tweaks of printouts in LocalPoolObjectBase.cpp
    PR: #582

  • IPC Message Queue Handling: Allow passing an optional MqArgs argument into the MessageQueue
    creation call. It allows passing context information and an arbitrary user argument into
    the message queue. Also streamlined and simplified MessageQueue implementation for all OSALs
    PR: #583

  • Add a DummyPowerSwitcher module which can be useful for test setups when no PCDU is available
    PR: #590

  • Renamed auto-formatting script to auto-formatter.sh and made it more robust. If cmake-format is installed, it will also auto-format the CMakeLists.txt files now. PR: #625 PR: #626

  • Bump C++ required version to C++17. Every project which uses the FSFW and every modern
    compiler supports it
    PR: #622

  • Major update for version handling, using git describe to fetch version information with git.
    PR: #601

    • Add helper functions provided by cmake-modules
      manually now. Those should not change too often and only a small subset is needed
    • Separate folder for easier update and for distinction
    • LICENSE file included
    • use int for version numbers to allow unset or uninitialized version
    • Initialize Version object with numbers set to -1
    • Instead of hardcoding the git hash, it is now retrieved from git
    • Version now allows specifying additional version information like the git SHA1 hash and the
      versions since the last tag
    • Additional information is set to the last part of the git describe output for FSFW_VERSION now.
    • Version still need to be hand-updated if the FSFW is not included as a submodule for now.
  • Internal API change: Moved the fsfw_hal to the src folder and integration and internal
    tests part of fsfw_tests to src. Unittests are now in a dedicated folder called unittests
    PR: #653

Task Module Refactoring

PR: #636

Refactoring general task code

  • There was a lot of duplicate/boilerplate code inside the individual task IF OSAL implementations.
    Remove it by introducing base classes PeriodicTaskBase and FixedTimeslotTaskBase.

Refactor PeriodicTaskIF

  • Convert virtual ReturnValue_t addComponent(object_id_t object) to
    virtual ReturnValue_t addComponent(object_id_t object, uint8_t opCode = 0), allowing to pass
    the operation code passed to performOperation. Updated API taking
    an ExecutableObjectIF accordingly

Refactor FixedTimeslotTaskIF

  • Add additional addSlot function which takes an ExecutableObjectIF pointer and its Object ID

Refactor FixedSequenceSlot

  • Introduce typedef CustomCheckFunc for ReturnValue_t (*customCheckFunction)(const SlotList&).
  • Convert ReturnValue_t (*customCheckFunction)(const SlotList&) to
    ReturnValue_t (*customCheckFunction)(const SlotList&, void*), allowing arbitrary user arguments
    for the custom checker

Linux Task Module

  • Use composition instead of inheritance for the PeriodicPosixTask and make the PosixTask a
    member of the class

Bugfix

  • A small error in the README.md was fixed
    PR: #562
  • Updated TestDeviceHandler to use FSFW_VERBOSE_LEVEL
    PR: #571
  • Bugfix in LocalDataPoolManager::generateSetStructurePacket. Missing return values and storage deletion added.
    PR: #597
  • Small bugfix in STM32 HAL for SPI
    PR: #599
  • Potential Bug with nullptrs in HybridIterator and fixed some compiler warnings
    PR: #598
  • Bugfix in SpacePacket::addWholeData
    PR: #607
  • Bugfix for MacOS (clang):
    PR: #611
  • Move some CMake directives further up top so they are not ignored
    PR: #621
  • Fix infinite recursion in prepareHealthSetReply of PUS Health Service 201.
    Is not currently used right now but might be used in the future
    PR: #617
  • TCP TMTC Server: MutexGuard was not created properly in
    TcpTmTcServer::handleTmSending(socket_t connSocket, bool& tmSent) call.
    PR: #618
  • CCSDSDistributor::selectDestination() does no longer crash if a packet was not found in the TC Store anymore
    PR: #633

API Changes

  • DeviceHandlerBase::getStorageData parameter changed to size_t and DHB.rawPacketLen changed to size_t
    PR: #570
  • Removed the HkSwitchHelper. This module should not be needed anymore, now that the local datapools have been implemented.
    PR: #557
  • Clock::convertTimeOfDayToTimeval expects UTC as input. Fixed an issue if the system time zone was different for Linux and Host
    PR: #574
  • HAL Linux Uart: Baudrate and bits per word are enums now, avoiding misconfigurations
    PR: #585
  • DeviceHandlerBase::insertInCommandMap has two new optional parameters:
    • bool useAlternativeReply (Default false)
    • DeviceCommandId_t alternativeReplyId (default =0)
      User don't need to change anything. If alternative replies are used, there is no need to overwrite DHB::enableReplyInReplyMapanymore
      PR: #595
  • Time/Clock:
    • Implemented timeval to TimeOfDay_t but moved from CCSDSTime::convertTimevalToTimeOfDay to Clock::convertTimevalToTimeOfDay
    • Added Mutex for gmtime calls: (compare http://www.opengate.at/blog/2020/01/timeless/)
    • Moved the statics used by Clock in ClockCommon.cpp to this file
    • Better check for leap seconds
    • Added Unittests for Clock (only getter)
      PR: #584
  • PowerSwitchIF: Remove const specifier from sendSwitchCommand and sendFuseOnCommand and
    also specify a ReturnValue_t return type
    PR: #590
  • Extend PowerSwitcher module to optionally check current state when calling turnOn or
    turnOff. Tis can be helpful to avoid commanding switches which do not need commanding
    PR: #590 and #593
  • Changed default C++ Version to C++17 (should compile with C++11 as well)
    PR: #622

Known bugs

2022-07-25
100% Completed
Release v5.0.0
All checks were successful
fsfw/fsfw/pipeline/pr-master This commit looks good
fsfw/fsfw/pipeline/head This commit looks good
#657 by gaisser was merged 2022-07-25 15:05:57 +02:00
v5.0.0
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
#654 by muellerr was merged 2022-07-25 14:53:37 +02:00
Move HAL and Tests folder
Some checks are pending
fsfw/fsfw/pipeline/pr-development This commit looks good
fsfw/fsfw/pipeline/head Build queued...
Refactor
#653 by muellerr was merged 2022-07-18 15:05:26 +02:00
printout tweak
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
fsfw/fsfw/pipeline/head This commit looks good
cosmetics
New PoolEntry constructor
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
API Change
remove duplicate CHANGELOG entries
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
Documentation
#649 by muellerr was merged 2022-07-13 16:50:50 +02:00
delete run configs
Some checks are pending
fsfw/fsfw/pipeline/head Build started...
fsfw/fsfw/pipeline/pr-development This commit looks good
build
#646 by muellerr was merged 2022-07-13 15:37:55 +02:00
Fix StorageAccessor move assignment
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
bug
run auto formatters
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
cosmetics
#641 by muellerr was merged 2022-06-13 17:04:12 +02:00
some fixes for TC Map printout function
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
bug
cosmetics
Fix SPI ComIF shadowing warning
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
build
cosmetics
DHB Reply Timeout
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
fsfw/fsfw/pipeline/head This commit looks good
#637 by meierj was merged 2022-07-14 09:17:20 +02:00
Task IF refactoring
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
Refactor
#636 by muellerr was merged 2022-06-20 16:08:03 +02:00
rtems fixes
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
#635 by muellerr was merged 2022-06-08 16:12:53 +02:00
bump etl to 20.28.0
Some checks are pending
fsfw/fsfw/pipeline/head Build started...
fsfw/fsfw/pipeline/pr-development This commit looks good
#634 by muellerr was merged 2022-06-08 11:09:44 +02:00
return end iterator instead of crashing
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
bug
PUS11 TC sched update and bugfixes
All checks were successful
fsfw/fsfw/pipeline/pr-development This commit looks good
bug
hotfix
#632 by muellerr was merged 2022-05-24 17:48:07 +02:00