• v6.0.0 e73b9ff72c

    v6.0.0 Stable

    mohr released this 2023-02-23 13:46:50 +01:00 | 0 commits to master since this release


    • Mode Service: Add allowed subservice
      PR: #739
    • CService200ModeManagement: Various bugfixes which lead to now execution complete being generated
      on mode announcements, duplicate mode reply generated on announce commands, and the mode read
      subservice not working properly.
      PR: #736
    • Memory leak fixes for the TCP/IP TMTC bridge.
      PR: #737
    • Service9TimeManagement: Fix the time dump at the SET_TIME subservice: Include clock timeval
      seconds instead of uptime.
      PR: #726
    • HAL MGM3100 Handler: Use axis specific gain/scaling factors. Previously,
      only the X scaling factor was used.
      PR: #724
    • HAL MGM3100 Handler: Z value was previously calculated with bytes of the X value.
      PR: #733
    • DHB setNormalDatapoolEntriesInvalid: The default implementation did not set the validity
      to false correctly because the read and write calls were missing.
      PR: #728
    • PUS TMTC creator module: Sequence flags were set to continuation segment (0b00) instead
      of the correct unsegmented flags (0b11) as specified in the standard.
      PR: #727
    • TC Scheduler Service 11: Add size and CRC check for contained TC.
      Bug: #719
      PR: #720
    • Only delete health table entry in HealthHelper destructor if
      health table was set.
      PR: #710
    • I2C Bugfixes: Do not keep iterator as member and fix some incorrect handling with the iterator.
      Also properly reset the reply size for successfull transfers and erroneous transfers.
      PR: #700
    • Bugfix for Serial Buffer Stream: Setting doActive to false now
      actually fully disables printing.
      PR: #680
    • TcpTmTcServer.cpp: The server was actually not able to handle
      CCSDS packets which were clumped together. This has been fixed now.
      PR: #673
    • CServiceHealthCommanding: Add announce all health info implementation
      PR: #725
    • various fixes related to linux Unittests and memory leaks
      PR: #715
    • small fix to allow teardown handling
      PR: #713
    • fix compiler warning for fixed array list copy ctor
      PR: #704
    • missing include
      PR: #703
    • defaultconfig did not build anymore
      PR: #702
    • hotfix
      PR: #699
    • small fix for helper
      PR: #698
    • missing retval conv
      PR: #697
    • DHB Countdown Bug
      PR: #693
    • doc corrections
      PR: #687
    • better error printout
      PR: #686
    • include correction
      PR: #683
    • better warning for missing include paths
      PR: #676
    • Service 11 regression
      PR: #670


    • Empty constructor for CdsShortTimeStamper which does not do an object manager registration.
      PR: #730
    • Service9TimeManagement: Add DUMP_TIME (129) subservice.
    • TcpTmTcServer: Allow setting the SO_REUSEADDR and SO_REUSEPORT
      option on the TCP server. CTOR prototype has changed and expects an explicit
      TCP configuration struct to be passed.
      PR: #722
    • DleParser helper class to parse DLE encoded packets from a byte stream.
      PR: #711
    • UioMapper is able to resolve symlinks now.
      PR: #709
    • Add new UnsignedByteField class
      PR: #660
    • publish documentation for development and master branch
      PR: #681
    • Add Linux HAL options
      PR: #663
    • Expand SerializeIF
      PR: #656
    • PUS Service 11: Additional Safety Check
      PR: #666
    • improvements for auto-formatter script
      PR: #665
    • provide a weak print char impl
      PR: #674


    • now that doc server is up, remove markdown files
      PR: #688
    • remove bsp specific code
      PR: #679


    • CService201HealthCommanding renamed to CServiceHealthCommanding,
      service ID customizable now. CServiceHealthCommanding expects configuration struct
      HealthServiceCfg now
      PR: #725
    • AcceptsTelemetryIF: getReportReceptionQueue is const now
      PR: #712
    • Moved some container returnvalues to dedicated header and namespace
      so they can be used without template specification.
      PR: #707
    • Remove default secondary header argument for
      uint16_t getTcSpacePacketIdFromApid(uint16_t apid, bool secondaryHeaderFlag) and
      uint16_t getTmSpacePacketIdFromApid(uint16_t apid, bool secondaryHeaderFlag)
      PR: #689
    • Removed HasReturnvaluesIF class in favor of returnvalue namespace with OK and FAILED
      PR: #659
    • Overhaul of the TMTC stack, including various changes and improvements
      for other modules
      PR: #655
      which also includes a migration guide
    • Bump Catch2 dependency to regular version v3.1.0
      PR: #678
    • SerialBufferAdapter: Rename setBuffer to setConstBuffer and update
      API to expect const uint8_t* accordingly.
      PR: #677
    • Remove the following user includes from fsfw/events/Event.h and
      • #include "events/subsystemIdRanges.h"
      • #include "returnvalues/classIds.h"
        The user has to include those themselves now
        PR: #675
    • DeviceHandlerBase: Set command sender before calling buildCommandFromCommand.
      This allows finishing action commands immediately inside the function.
      PR: #672
    • DeviceHandlerBase: New signature of handleDeviceTm which expects
      a const SerializeIF& and additional helper variant which expects const uint8_t*
      PR: #671
    • Improvements for AcceptsTelemetryIF and AcceptsTelecommandsIF:
      • Make functions const where it makes sense
      • Add const char* getName const abstract function
        PR: #684
    • Generic TMTC Bridge Update
      PR: #734
    • comment tweak to event parser can read everything
      PR: #732
    • CMakeLists file updates
      PR: #731
    • improve srv20 error messages
      PR: #723
    • I2C Linux: remove duplicate printout
      PR: #718
    • printout handling improvements
      PR: #717
    • vec getter, reset for content
      PR: #716
    • updates for source sequence counter
      PR: #714
    • SP reader getPacketData is const now
      PR: #708
    • refactoring of serial drivers for linux
      PR: #705
    • Local Pool Update Remove Add Data Ignore Fault Argument
      PR: #701
    • Switch to new documentation server
      PR: #694
    • Windows Tweaks
      PR: #691
    • Refactor Local Pool API
      PR: #667
    • group MGM data in local pool vectors
      PR: #664


    • Refactoring of CFDP stack which was done during implementation of the CFDP source and destination
      • New filesystem module, changes for filesystem abstraction HasFileSystemIF to better
        fit requirements of CFDP
      • New HostFilesystem implementation of the HasFileSystemIF
      • New cfdp::UserBase class which is the abstraction for the CFDP user in an OBSW context.
      • mib module for the CFDP stack
      • PDU classes renamed from ...Serializer/...Deserializer to ...Creator/...Reader
      • Renamed TcDistributor to TcDistributorBase to prevent confusion
      • Refactored TcDisitributorBase to be more flexible and usable for CFDP distribution
      • Renamed CCSDSDistributor to CcsdsDistributor and add feature which allows it
        to remove the CCSDS header when routing a packet. This allows CCSDS agnostic receiver
        implementation without an extra component
        PR: #682
  • v5.0.0 f11433e50f

    v5.0.0 Stable

    gaisser released this 2022-07-25 15:08:46 +02:00 | 669 commits to master since this release


    • 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 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


    • 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
    • FSFW Tests are now build with -DFSFW_BUILD_TESTS instead of -DFSFW_BUILD_UNITTESTS

    Known bugs

    • Clock does not compile on Windows: timgm is not compatible with windows
      Issue: #603
    • Mistake in README.md: fsfw-tests can be build with -DFSFW_BUILD_TESTS instead of -DFSFW_BUILD_UNITTESTS
  • v4.0.0 a274d6598e

    v4.0.0 Stable

    mohr released this 2022-02-14 16:51:47 +01:00 | 1248 commits to master since this release


    • CFDP Packet Stack and related tests added. It also refactors the existing TMTC infastructure to
      allow sending of CFDP packets to the CCSDS handlers.
      PR: #528
    • added virtual function to print datasets
      PR: #544
    • doSendRead Hook
      PR: #545
    • Dockumentation for DHB
      PR: #551

    HAL additions

    • Linux Command Executor, which can execute shell commands in blocking and non-blocking mode
      PR: #536
    • uio Mapper
      PR: #543


    • Applied the clang-format auto-formatter to all source code
      PR: #534
    • Updated Catch2 to v3.0.0-preview4
      PR: #538
    • Changed CI to use prebuilt docker image
      PR: #549


    • CMake fixes in PR #533 , was problematic
      if the uppermost user CMakeLists.txt did not have the include paths set up properly, which
      could lead to compile errors that #include "fsfw/FSFW.h" was not found.
    • Fix for build regression in Catch2 v3.0.0-preview4
      PR: #548
    • Fix in unittest which failed on CI
      PR: #552
    • Fix in helper script
      PR: #553

    API Changes

    • Aforementioned changes to existing TMTC stack

    Known bugs

  • v3.0.1 620841a9e5

    v3.0.1 Stable

    mohr released this 2022-02-04 13:24:55 +01:00 | 1344 commits to master since this release

    API Changes


    • Version number was not updated in v3.0.0

    Known bugs

    All Pull Requests:

    Milestone: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/milestone/30

  • v3.0.0 2a268e14d1

    v3.0.0 Stable

    mohr released this 2022-01-10 14:54:08 +01:00 | 1347 commits to master since this release

    Milestone for next FSFW subversion

    API Changes

    TCP Socket Changes
    • Keep Open TCP Implementation #496
      • The socket will now kept open after disconnect. This allows reconnecting.
      • Only one connection is allowed
      • No internal influence but clients need to change their Code.


    • Add feature to open GPIO by line name #506


    • Unittests for Op Divider and Bitutility #510

    Filesystem IF changed

    • Filesystem Base Interface: Use IF instead of void pointer #511


    • STM32 SPI Updates #518


    • Small bugfix for LIS3 handler #504
    • Spelling fixed for function names #509
    • CMakeLists fixes #517
    • Out of bound reads and writes in unittests #519
    • Bug in TmPacketStoredPusC (#478)
    • Windows ifdef fixed #529


    • FSFW.h.in more default values #491
    • Minor updates for PUS services #498
    • HasReturnvaluesIF naming for parameter #499
    • Tests can now be built as part of FSFW and versioning moved to CMake #500
    • Added integration test code #508
    • More printouts for rejected TC packets #505
    • Arrayprinter format improvements #514
    • Adding code for CI with docker and jenkins #520
    • Added new function in SerializeAdapter #513
      • Enables simple deSerialize if you keep track of the buffer position yourself
      • static ReturnValue_t deSerialize(T *object, const uint8_t* buffer, size_t* deserSize, SerializeIF::Endianness streamEndianness)
    • Unittest helper scripts has a new Parameter to open the coverage html in the webrowser #525
      • '-o', '--open', Open coverage data in webbrowser
    • Documentation updated. Sphinx Documentation can now be build with python script #526

    Known bugs

    • Version Number in CMakeList is wrong (2.0.0), should be (3.0.0), fixed in #542

    All Pull Requests:

    Milestone: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/milestone/19

  • v2.0.1 e6a7108614

    v2.0.1 Stable

    muellerr released this 2021-10-11 18:07:06 +02:00 | 1499 commits to master since this release


    • Use correct version number 2 for PUS C now (1 was used before) (#502)
    • Increase robustness of the TM stack against nullpointer exceptions in case the TM store runs full (#501)

    API Change

    • PR #502 changes a protected API in TcPacketPus.cpp, so subclasses might need to change

    Corresponding Milestone

  • v2.0.0 ab906fa534

    v2.0.0 Stable

    mohr released this 2021-10-04 14:53:01 +02:00 | 1509 commits to master since this release

    API Changes

    File Structure changed to fit more common structure
    • See pull request (#445)
      • HAL is now part of the main project
      • See Instructions below:
    Instruction how to update existing / user code
    • Changes in #include:

      • Rename internalError in includes to internalerror
      • Rename fsfw/hal to fsfw_hal
      • Rename fsfw/tests to fsfw_tests
      • Rename osal/FreeRTOS to osal/freertos
    • Changes in CMakeLists.txt:

      • Rename OS_FSFW to FSFW_OSAL
    • Changes in DleEncoder.cpp

      • Create an instance of the DleEncoder first before calling the encode and decode functions
    Removed osal/linux/Timer (#486)
    • Was redundant to timemanager/Countdown
    Instruction how to update existing / user code
    • Use timemanager/Countdown instead


    TM Stack

    • Increased TM stack robustness by introducing nullptr checks and more printouts (#483)
    Host OSAL / FreeRTOS
    • QueueMapManager Bugfix (NO_QUEUE was used as MessageQueueId) (#444)
    • Event output is now consistent (#447)
    DLE Encoder
    • Fixed possible out of bounds access in DLE Encoder (#492)


    • HAL as major new feature, also includes three MEMS devicehandlers as part of #481
    • Linux HAL updates (#456)
    • FreeRTOS Header cleaning update and Cmake tweaks (#442)
    • Printer updates (#453)
    • New returnvalue for for empty PST (#485)
    • TMTC Bridge: Increase limit of packets stored (#484)

    Known bugs

    • Bug in TmPacketStoredPusC (#478)

    All Pull Requests:

    Milestone: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/milestone/5

  • ASTP_1.1.0 b00bfe4bda

    gaisser released this 2021-06-29 14:12:20 +02:00 | 1738 commits to master since this release

    API Changes


    • Added ability to sent PUS_C Packets. (#414)
      Can be configured with:
    	#define FSFW_USE_PUS_C_TELEMETRY    1
    • SUBSYSTEM_IDs added for PUS Services (#422)

    • Added new Parameter which must be defined in config (#432):

    namespace fsfwconfig {
    static constexpr size_t FSFW_MAX_TM_PACKET_SIZE = 2048;
    • tmtcpacket/pus/ was divided in tmtcpacket/pus/tc and tmtcpacket/pus/tm
      • It is advised to include tmtcpacket/pus/tc.h instead of the single files
    • ObjectManager is now a singelton! (#424) Change the init to:
    ObjectManager::instance()->setObjectFactoryFunction(factoryFunction, factoryArguments);

    And change every usage to:



    • timemanager/TimeStamperIF.h: Timestamp config was not used correctly, leading to different timestamp sizes than configured in fsfwconfig::FSFW_MISSION_TIMESTAMP_SIZE (#418)

    • TCP server fixes (#421)


    PUS C Packets

    • See API Changes. (#414)

    Event Manager

    • Printf support added (#420)

    FreeRTOS QueueHandles

    • Fixed an internal issue how FreeRTOS MessageQueues were handled (#423)
    Linux OSAL
    • Better printf error messages (#424)
    • Check for C++11 as mininimum required Version (#430)
    Debug Output
    • Changed Warning color to magenta (#430)

    All Pull Requets:

    See Milestone: https://egit.irs.uni-stuttgart.de/fsfw/fsfw/milestone/3

  • ASTP_1.0.0 2f511523cb

    gaisser released this 2021-04-27 14:21:31 +02:00 | 2004 commits to master since this release

    The Local Pool Update

    This release includes a major change to the design of the exchange of data between components. While the former Global DataPool was unclear of in data owernship, this was resolved by the new Local Pools. Components can now have an local pool which can be used to save the latest values.

    The Pools allow for interessting features:

    • Create periodic HK Messages
    • Sent update Messages to other components
    • Sent snapshot Messages of the current values to other components
    • A thread safe read access to the values for time critical components

    Examples are included in the new fsfw example project.

    In addition to the local pools, this update contains:

    API Changes:

    • ActionMessage::setCompletionReply now expects the success as dedicated bool
    Local Pools:
    • Introduction of Local Pools. **See documentation in the repo under fsfw/doc/README-localpools.md **
    • DHB has an additional PST Step. This has to be added to your Polling Sequence but gives more control over the DH (#281)
    • Typo for UNKNOWN_DEVICE_REPLY fixed (#320)
    • getTransitionDelayMs is now an abstract method (#320)
    • setNormalDatapoolEntriesInvalid is not an abstract method and a default implementation was provided
    • Changes in eventId generation (#288)
      • The spelling of the namespaces "EVENT" and "SEVERITY" changed to "event" and "severity"
      • The function to generate a EventId (makeEvent(..)) is more explicit now with the Id as new parameter. This should be preferred over the macro. Event.cpp source file removed, functions now
        defined in header directly. Namespaces renamed.

    File System Interface

    • A new interfaces specifies the functions for a software object which exposes the file system of
      a given hardware to use message based file handling (e.g. PUS commanding)

    Internal Error Reporter

    • The new internal error reporter uses the local data pools. The pool IDs for
      the exisiting three error values and the new error set will be hardcoded for
      now, the the constructor for the internal error reporter just takes an object
      ID for now.
    • MutexHelper is now MutexGuard (#383)
    • The API of the parameter service has been changed to prevent inconsistencies
      between documentation and actual code and to clarify usage.
    • The parameter ID now consists of:
      1. Domain ID (1 byte)
      2. Unique Identifier (1 byte)
      3. Linear Index (2 bytes)
        The linear index can be used for arrays as well as matrices.
        The parameter load command now explicitly expects the ECSS PTC and PFC
        information as well as the rows and column number. Rows and column will
        default to one, which is equivalent to one scalar parameter (the most
        important use-case)
    • The HasParameterIF has changed, ParameterId is now a uint8_t and the name is uniqueIdentifier (#365)
    Pool Managers
    • New way of initializing the Storage Pools:

    Old pool config:

    	    const uint8_t numberOfIpcPools = 4;
    	    uint16_t numberOfElements[numberOfIpcPools] = {100, 30, 20, 10};
    	    uint16_t sizeofElements[numberOfIpcPools] = {32, 64, 128, 265};
    	    new PoolManager<numberOfIpcPools>(objects::IPC_STORE,sizeofElements,

    New pool config:

    	const LocalPool::LocalPoolConfig poolConfig = {
    			{100, 32}, {30, 64}, {20, 128}, {10, 265}
    	new PoolManager(objects::IPC_STORE, poolConfig);
    	new PoolManager(objects::TM_STORE, poolConfig);
    	new PoolManager(objects::TC_STORE, poolConfig);
    Pus Sercices:
    • Service 5 and Service 1 queue depths need to be given as constructor elements (#283)
      • This allows mission code to select how many events/verification messages can be processed
    • All Commanding Service Base instances had a 3 command wide fifo, this can now be changed to any size by changing the new config value: (#319)
    	static constexpr uint8_t FSFW_CSB_FIFO_DEPTH = 6;
    • VerificationCodes namespace TC_VERIFY is now tc_verification (#309)

    Service Interface

    • Proper printf support contained in ServiceInterfacePrinter.h
    • CPP ostream support now optional (can reduce executable size by 150 - 250 kB)
    • Amalagated header which determines automatically which service interface to use depending on FSFWConfig.h configuration.
      Users can just use #include <fsfw/serviceinterface/ServiceInterface.h>
    • If CPP streams are excluded, sif:: calls won't work anymore and need to be replaced by their printf counterparts.
      For the fsfw, this can be done by checking the processor define FSFW_CPP_OSTREAM_ENABLED from FSFWConfig.h.
      For mission code, developers need to replace sif:: calls by the printf counterparts, but only if the CPP stream are excluded.
      If this is not the case, everything should work as usual.


    • Reworked Temperature Sensor for local pools (#402)


    • extern "C" void vRequestContextSwitchFromISR(); marked extern C so it can be implemented in a C file. (#263)
    • RTEMS OSAL Updated after tests (#363)
    • Real-time scheduler can be disabled to run without privileges (#406, Issue #404)
      ** FSFW_USE_REALTIME_FOR_LINUX needs to be defined with either 0 or 1. (1 is still the Default)
    • CCSDSTime.cpp now uses size_t for sizes (#315)
    • FSFWConfig: USE_MODESTORE for storage of on-the-fly modes is replaced with FSFW_USE_MODESTORE == 1 from FSFWConfig.h (#306)


    Pus Sercices:
    • Added Health Service (#282)
    • Added Hk service (#311)
    • Pus Service 20 (Parameter Service) added (#365)
    • FSFW Provides cmake files now (#298)
    • A developer can overwrite the expected reply length for a command with multiple replies (#416)
    • ExtendedController: Controller with HasActionIF has HasLocalDatapoolIF. (#276)
    • DeviceHandlerIF: Command_t NO_COMMAND_ID in DeviceHandlerIF can be used to set a invalid command (#263)
    • Default CFG: Update of Default CFG (#274)
    • PeriodicOperationDivider: Op divider additional features (#286)
    • unittest: Includes for unittest folder relative (#285)
    • objectmanager: objectmanager/frameworkObjects.h new ID added TIME_STAMPER = 0x53500010 (#328)

    Bug Fixes:


    • Bugfixes discovered during coverity checks (#398)


    • Host OSAL MessageQueue Hotfix (#297)
    • Host OSAL bugfixes (#289)
    • Clock::getDateAndTime conversion corrected (#344)
    • Important Bug fix in MesseQueue.cpp (#395)
    • Important Bug fix in MesseQueue.cpp (#394)

    See Milestone for all pull requests:

  • ASTP_0.0.1 64b6edab6f

    gaisser released this 2020-12-01 14:14:52 +01:00 | 4352 commits to master since this release

    As requested by users, this release will be the only one with the global pools.

    This release can be seen as a legacy release. Therefore, it should not be used by the users on a long term. The intention is the creation of a baseline for further API changes.

    The next release will contain the local pools which will introduce API changes for every user.

    The name remembers the relation to the Flying Laptop Flight Software which uses numbers of Apollo Mission as major Software release names.