Logo
Explore Help
Register Sign In
nasa/fprime
1
0
Fork 0
You've already forked fprime
mirror of https://github.com/nasa/fprime.git synced 2025-12-10 00:44:37 -06:00
Code Issues Packages Projects Releases 34 Wiki Activity

34 Releases 41 Tags

RSS Feed
  • v4.0.0 abb09e4a68

    v4.0.0 Stable

    giteasync released this 2025-08-06 19:42:06 -05:00 | 154 commits to devel since this release

    Summary

    We are excited to release F Prime v4.0! This release is a major upgrade from the latest v3 series and includes numerous improvements, new features, and breaking changes that enhance the framework's capabilities and maintainability.

    This release comes with the following amazing features:

    1. Conditional Sequencing (Svc/FpySequencer)
    2. Improved CMake architecture
    3. Support for CCSDS communication protocols (TC, TM and Space Packet)
    4. FPP v3, including:
      • Telemetry packet definitions (allowing removal of all XML dependencies)
      • Type aliases
      • Externally managed parameters
      • Exporting of type configurations to GDS dictionary
      • Improved code generation for strings
      • Code generation supporting improvements in F Prime
      • FPP Interfaces
    5. Better subtopology support and addition of core subtopologies in Svc.Subtopologies
    6. Better GDS plugin support (GdsStandardApp, DataHandlerPlugin)
    7. Fixed-Width Numerical Types
    8. Formalized configuration modules
    9. Design pattern documentation
    10. Code Consistency Improvements

    Release v4.0 is a significant upgrade and comes with multiple breaking changes that were introduced in order to consolidate design patterns and bring them in line with our coding standards. Below is a list of breaking changes as well as instructions on how to upgrade a v3.6.x project to v4.

    Table of Contents

    These changes are broken down into the following categories:

    • Typing Changes 🚨
      • Port Indicies and NATIVE_INT_TYPE and NATIVE_UINT_TYPE FwIndexType Removal 🚨
      • Rate Group Contexts 🚨
      • Unit Test Constant Changes 🚨
      • Fw::Buffer size type 🚨
      • Struct Member Access 🚨
    • Component Changes
      • Removal of PRIVATE, PROTECTED, and STATIC 🚨
      • Component Configuration Usage Changes 🚨
      • Built-In Component Changes 🚨
    • Deployment Changes
      • Pre-built subtopologies
      • Communications component stack 🚨
    • Build System Changes
      • New CMake Module Structure
      • Deployment Ordering 🚨
      • Project Configuration Changes 🚨
    • Platform Changes 🚨
      • Platform Types 🚨
      • Platform Definitions 🚨
    • Other breaking changes 🚨
    • Deprecations
    • Other Significant Changes
      • Subtopologies
      • FPP v3
      • Miscellaneous
    • What's Changed
    • New Contributors

    Tip

    Some changes are required and others are optional. The 🚨 symbol designates a breaking change that may apply to projects wishing to migrate to v4.

    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.

    Warning

    All Typing changes are required for upgrade to v4.0.0.

    Port Indicies and NATIVE_INT_TYPE and NATIVE_UINT_TYPE FwIndexType Removal

    NATIVE_INT_TYPE must be replaced with FwIndexType in port indices. Other uses of NATIVE_INT_TYPE and NATIVE_UINT_TYPE must also be replaced as these violate the fixed-width type standard.

    For other configurable type options, see numerical types design.

    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 to meet compliance with fixed-with types usage.

    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

    Use of NATIVE_INT_TYPE has been removed in unit tests.

    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;
    

    Fw::Buffer size type

    The Fw::Buffer size type has been changed to FwSizeType (previously U32). This allows for configuration and better integration with other types. Switch to using FwSizeType when reading / setting Fw::Buffer sizes.

    Struct Member Access

    C++ getters and setters for fields of FPP structs are now autocoded in the form get_<field>() and set_<field>() (used to be get<field>() and set<field>()). C++ code using those getters and setters must be updated.

    Component Changes

    Component implementations in v4.0.0 have also changed.

    Removal of PRIVATE, PROTECTED, and STATIC

    Macro definitions PRIVATE, PROTECTED, and STATIC were as close to redefining a language feature as one could get without technically redefining a language feature. Users must switch to friend classes for white-box unit tests.

    Warning

    This change is required.

    Unittest base classes are automatically and a tester classes are automatically added as friends to the component's base class to enable unit testing. Users may implement test-access to the base class through their tester class (e.g. SignalGenTester).

    Users needing access to the component implementation class should add a friendship statement by hand.

    Component Configuration Usage Changes

    Configuration headers have been placed in the name-spacing folder config. This is to reduce the possibility of collision with project and external headers. Configuration paths must be updated. FpConfig.hpp/FpConfig.h has been updated to Fw/FPrimeBasicTypes.hpp/Fw/FPrimeBasicTypes.h and a dependency on Fw_Types is now explicitly required.

    Warning

    These changes are required and affects configuration headers and autocoded configuration headers.

    Before:

    #include "IpCfg.hpp"
    

    After:

    #include "config/IpCfg.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_Types
        SomeDependency
    )
    

    Tip

    Fw_Types is auto-detected for FPP-based modules. Add this dependency when not using FPP autocoding on your module.

    Built-In Component Changes

    • FileUplink and FileDownlink now prepend the buffers (file packets) they send out with the appropriate FW_PACKET_FILE marker, as it is expected for all F´ data packets.

    • ComQueue has been updated to handle buffer management according the "Data Return" pattern mentioned above.

    • Svc.ActiveLogger has been renamed to Svc.EventManager

    • Drv.BlockDriver has been removed. Users can use a timer component to tick the RateGroupDriver instead, such as Svc.LinuxTimer. An example of such a changeset can be found here: fprime-tutorial-hello-world#46

    • The Drv.ByteStreamDriver interface has been slightly modified and the Drv.AsyncByteStreamDriver has been introduced. The Svc.ComStub component has been updated to work with either of those interfaces.

    • <interface>.fppi style interfaces have been replaced with format FPP interface/import. Examples can be found in Svc/Interfaces/ and Drv/Interfaces/

    Deployment Changes

    Deployments in v4.0.0 have substantially changed, and F´ now ships subtopologies to help construct deployments with minimal copy-and-paste from F´ into users topologies.

    Tip

    It may be easiest to reconstruct a deployment using fprime-util new --deployment as it will stamp-out a basic subtopology-powered deployment. Users would need to re-add their custom component instances and connections.

    Pre-built subtopologies

    F Prime now ships with the following subtopologies that users can use to reduce the size and complexity of their topology.

    Tip

    This change is not required but can help adopting required changes more easily.

    Subtopology Description
    CdhCore - Command dispatching and event management
    - Event logging and telemetry collection
    - Health monitoring system
    - Fatal error handling
    ComCcsds - CCSDS protocol implementation
    - Frame processing and routing
    ComFprime - F Prime protocol implementation
    - Frame processing and routing
    FileHandling - File upload and download services
    - Parameter database management
    - File system operations
    DataProducts - Data product cataloging
    - Storage and retrieval capabilities
    - Product metadata management

    Before:

    instance cmdDisp: Svc.CommandDispatcher base id CdhCoreConfig.BASE_ID + 0x00000 \
    [...]
    
    topology MyTopology {
        #Active Components
        instance cmdDisp
    [...]
    }
    
    connections FaultProtection {
        events.FatalAnnounce -> fatalHandler.FatalReceive
    }
    [...]
    

    After:

    import CdhCore.Subtopology
    

    Communications component stack

    The Uplink and Downlink components have been updated for better modularity and to allow for easy support of other communication protocols.

    Tip

    Rather than making all these changes by hand, users can instead import the Comms subtopologies.

    Example Change Set

    If using a standard Uplink/Downlink stack as generated by fprime-util new --deployment, the full change-set that users need to apply to their topology is shown in the LedBlinker change log

    Click to Expand changes to a topology.fpp

    Before (topology.fpp)

    connections Uplink {
          comDriver.allocate -> bufferManager.bufferGetCallee
          comDriver.$recv -> comStub.drvDataIn
          comStub.comDataOut -> deframer.framedIn
          deframer.framedDeallocate -> bufferManager.bufferSendIn
          deframer.comOut -> cmdDisp.seqCmdBuff
          cmdDisp.seqCmdStatus -> deframer.cmdResponseIn
          deframer.bufferAllocate -> bufferManager.bufferGetCallee
          deframer.bufferOut -> fileUplink.bufferSendIn
          deframer.bufferDeallocate -> bufferManager.bufferSendIn
          fileUplink.bufferSendOut -> bufferManager.bufferSendIn
    }
    connections Downlink {
        eventLogger.PktSend -> comQueue.comQueueIn[0]
        tlmSend.PktSend -> comQueue.comQueueIn[1]
        fileDownlink.bufferSendOut -> comQueue.buffQueueIn[0]
        comQueue.comQueueSend -> framer.comIn
        comQueue.buffQueueSend -> framer.bufferIn
        framer.framedAllocate -> bufferManager.bufferGetCallee
        framer.framedOut -> comStub.comDataIn
        framer.bufferDeallocate -> fileDownlink.bufferReturn
        comDriver.deallocate -> bufferManager.bufferSendIn
        comDriver.ready -> comStub.drvConnected
        comStub.comStatus -> framer.comStatusIn
        framer.comStatusOut -> comQueue.comStatusIn
        comStub.drvDataOut -> comDriver.$send
    }
    

    After (topology.fpp)

    enum Ports_ComPacketQueue {
        EVENTS,
        TELEMETRY
    }
    
    enum Ports_ComBufferQueue {
        FILE_DOWNLINK
    }
    
    connections Uplink {
          # ComDriver buffer allocations
          comDriver.allocate      -> bufferManager.bufferGetCallee
          comDriver.deallocate    -> bufferManager.bufferSendIn
          # ComDriver <-> ComStub
          comDriver.$recv             -> comStub.drvReceiveIn
          comStub.drvReceiveReturnOut -> comDriver.recvReturnIn
          # ComStub <-> FrameAccumulator
          comStub.dataOut                -> frameAccumulator.dataIn
          frameAccumulator.dataReturnOut -> comStub.dataReturnIn
          # FrameAccumulator buffer allocations
          frameAccumulator.bufferDeallocate -> bufferManager.bufferSendIn
          frameAccumulator.bufferAllocate   -> bufferManager.bufferGetCallee
          # FrameAccumulator <-> Deframer
          frameAccumulator.dataOut -> deframer.dataIn
          deframer.dataReturnOut   -> frameAccumulator.dataReturnIn
          # Deframer <-> Router
          deframer.dataOut           -> fprimeRouter.dataIn
          fprimeRouter.dataReturnOut -> deframer.dataReturnIn
          # Router buffer allocations
          fprimeRouter.bufferAllocate   -> bufferManager.bufferGetCallee
          fprimeRouter.bufferDeallocate -> bufferManager.bufferSendIn
          # Router <-> CmdDispatcher/FileUplink
          fprimeRouter.commandOut  -> cmdDisp.seqCmdBuff
          cmdDisp.seqCmdStatus     -> fprimeRouter.cmdResponseIn
          fprimeRouter.fileOut     -> fileUplink.bufferSendIn
          fileUplink.bufferSendOut -> fprimeRouter.fileBufferReturnIn
    }
    
    connections Downlink {
        # Inputs to ComQueue (events, telemetry, file)
        eventLogger.PktSend        -> comQueue.comPacketQueueIn[Ports_ComPacketQueue.EVENTS]
        tlmSend.PktSend            -> comQueue.comPacketQueueIn[Ports_ComPacketQueue.TELEMETRY]
        fileDownlink.bufferSendOut -> comQueue.bufferQueueIn[Ports_ComBufferQueue.FILE_DOWNLINK]
        comQueue.bufferReturnOut[Ports_ComBufferQueue.FILE_DOWNLINK] -> fileDownlink.bufferReturn
        # ComQueue <-> Framer
        comQueue.dataOut           -> fprimeFramer.dataIn
        fprimeFramer.dataReturnOut -> comQueue.dataReturnIn
        # Buffer Management for Framer
        fprimeFramer.bufferAllocate   -> commsBufferManager.bufferGetCallee
        fprimeFramer.bufferDeallocate -> commsBufferManager.bufferSendIn
        # Framer <-> ComStub
        fprimeFramer.dataOut  -> comStub.dataIn
        comStub.dataReturnOut -> fprimeFramer.dataReturnIn
        # ComStub <-> ComDriver
        comStub.drvSendOut      -> comDriver.$send
        comDriver.sendReturnOut -> comStub.drvSendReturnIn
        comDriver.ready         -> comStub.drvConnected
        # ComStatus
        comStub.comStatusOut       -> fprimeFramer.comStatusIn
        fprimeFramer.comStatusOut  -> comQueue.comStatusIn
    }
    
    Click to Expand changes to a instances.fpp

    Diff (instances.fpp)

    # Note: Make sure to adjust the base IDs to fit in your deployment
    - instance framer: Svc.Framer base id 0x4100
    + instance framer: Svc.FprimeFramer base id 0x4100
    
    - instance deframer: Svc.Deframer base id 0x4900
    + instance deframer: Svc.FprimeDeframer base id 0x4900
    
    + instance frameAccumulator: Svc.FrameAccumulator base id 0x4D00
    + instance fprimeRouter: Svc.FprimeRouter base id 0x4E00
    
    Click to Expand changes to a Topology.cpp

    The following removes the old framing/deframing protocols, and introduces the new FprimeFrameDetector.

    Diff (Topology.cpp)

    - #include <Svc/FramingProtocol/FprimeProtocol.hpp>
    + #include <Svc/FrameAccumulator/FrameDetector/FprimeFrameDetector.hpp>
    
    - Svc::FprimeFraming framing;
    - Svc::FprimeDeframing deframing;
    + Svc::FrameDetectors::FprimeFrameDetector frameDetector;
    [...]
    - framer.setup(framing);
    - deframer.setup(deframing);
    + frameAccumulator.configure(frameDetector, 1, mallocator, 2048);
    

    Uplink Changes

    The old Svc.Deframer was performing 3 functionalities: (1) accumulating bytes in a circular buffer until it detects a full frame, (2) validating the frame and extracting the payload data, and (3) routing payload data to its destination.

    In the new Uplink stack, these 3 functionalities have been split into 3 distinct components: (1) Svc.FrameAccumulator, (2) Svc.FprimeDeframer, and (3) Svc.FprimeRouter. To learn more about these components, please check out their SDDs on the website!

    Each component implements an FPP Interface (in Svc/Interfaces/) so that they can be swapped with project-specific components, allowing for custom Deframing / Routing.

    Memory Management

    Memory management in the Uplink/Downlink stack has been updated so that a buffer coming out of a component on dataOut shall come back on dataReturnIn. This allows for components to allocate/deallocate memory as they see fit, and for the Topology Engineer not to have to track down memory management of each component to make sure they are wired correctly with the appropriate BufferManagers.

    Downlink Changes

    In the Downlink stack, the port connections have been modified to fit the new memory management pattern. The Framer now implements the FramerInterface.fppi to allow projects to implement custom Framing easily.

    Build System Changes

    These changes affect how the CMake system is used.

    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.

    Warning

    These changes are required.

    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.

    Warning

    These changes are required.

    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.

    Platform Changes

    Platforms have had several major changes in v4.0.0:

    1. Platform types have been moved into FPP as type aliases
    2. Platform types are expected to use fixed-with types
    3. Platform setup should now be a configuration module via register_fprime_config

    Warning

    All changes in this section are required.

    Platform Types

    Platform types were previously defined as header typedefs, however; this meant these types (which flow into configurable types) are not available to FPP models. These types are now aliases within FPP.

    Before (PlatformTypes.h)

    typedef uint64_t PlatformSizeType;
    ...
    

    After (PlatformTypes.fpp)

    @ The unsigned type of larger sizes internal to the software,
    @ e.g., memory buffer sizes, file sizes. Must be unsigned.
    @ Supplied by platform, overridable by project.
    type PlatformSizeType = U64
    ...
    

    Warning

    Since PlatfromPointerCast should not be used in the model, it is kept in PlatformTypes.h

    The requirements on these types, and the complete list are found in the numerical types documentation.

    Platform Definitions

    Platform definitions are defined in cmake/platform/<name-of-platform>.cmake. This file must now define an fprime configuration module that performs the autocoding for the new PlatformTypes.fpp

    Before

    include_directories(SYSTEM "${CMAKE_CURRENT_LIST_DIR}/types")
    

    After

    register_fprime_config(
        AUTOCODER_INPUTS
            "${CMAKE_CURRENT_LIST_DIR}/PlatformTypes.fpp"
        HEADERS
            "${CMAKE_CURRENT_LIST_DIR}/PlatformTypes.h"
        INTERFACE # No buildable files generated
    )
    

    Other breaking changes 🚨

    • The OSAL method Os::FileSystem::getPathType() is now implementation-specific. OSAL implementations should implement this method if they wish to use it in their project.
    • XML is no longer supported as a modeling language or intermediary output. Users should switch to the FPP features.
    • CMake Implementations have been updated. Please refer to CMake Implementations Guide

    Deprecations

    • Fw::Buffer::getSerializeRepr() has been deprecated in favor of two simpler-to-use methods for serialization and deserialization: Fw::Buffer::getSerializer() and Fw::Buffer::getDeserializer(). Example changesets are found nasa/fprime#3431.
    • The [de]serialization function variants [de]serialize(U8* buff, Serializable::SizeType& length, bool noLength) are deprecated as they do not adhere to coding guidelines. Users should switch to the [de]serialize(U8* buff, FwSizeType& length, Serialization::t mode) variants instead.
    • The serialization methods [de]serialize() will soon be deprecated. Users are recommended to switch to the serializeTo() and deserializeFrom() methods.

    Other Significant Changes

    These changes should not affect user developed code.

    Subtopologies

    F Prime v4 introduces better support for subtopologies (specification, configuration, etc.), which allow for better modularity and organization of components within a topology. Subtopologies can be used to group related components together, making it easier to manage complex systems. Core subtopologies are also available in Svc.Subtopologies. New deployment generation has been switched to use these subtopologies.

    FPP v3

    F Prime v4 ships with many significant new features to FPP (from FPP v3 release notes):

    • Telemetry packet definitions
    • Type aliases
    • Externally managed parameters
    • Exporting of type configurations to GDS dictionary
    • Improved code generation for strings
    • Code generation supporting improvements in F Prime
    • Bug fixes

    Miscellaneous

    • Use of Os::StubMutex will now only cause an error in the case that there should have been mutex contention. In cases where the lock is uncontested, no error will result.
    • The CMake system has been switched to use Ninja by default instead of Makefiles. This comes with no changes to the user experience as Ninja can be shipped with the core pip requirements.txt. Build time should be improved.
    • The code base has been formatted for better readability and consistency.
    • Many, many, many bug fixes, minor improvements, and documentation updates have been made. See the full list of changes below for more details.
    • fprime-gds now defaults to using the CCSDS protocols. Users who want to retain the F´ protocol should use fprime-gds --framing-selection fprime 🚨

    What's Changed

    Click to Expand Full list of changes
    • Restructure user manual for holding design patterns by @thomas-bc in https://github.com/nasa/fprime/pull/3222
    • Port patterns by @LeStarch in https://github.com/nasa/fprime/pull/3132
    • NATIVE_INT_TYPE portNum to FwIndexType portNum by @LeStarch in https://github.com/nasa/fprime/pull/3236
    • Converting NATIVE_INT_TYPE in assert casts by @LeStarch in https://github.com/nasa/fprime/pull/3238
    • Fixing UT constants to use correct types by @LeStarch in https://github.com/nasa/fprime/pull/3237
    • NUM_PORTS -> FwIndexType by @LeStarch in https://github.com/nasa/fprime/pull/3239
    • Remove include of internal glibc header by @celskeggs in https://github.com/nasa/fprime/pull/3248
    • Adding manager-worker pattern documentation by @LeStarch in https://github.com/nasa/fprime/pull/3227
    • Improve BufferManager assertion context args by @celskeggs in https://github.com/nasa/fprime/pull/3223
    • Adding health checking pattern documentation by @LeStarch in https://github.com/nasa/fprime/pull/3228
    • Applying GDS Hotfix v3.6.1 by @LeStarch in https://github.com/nasa/fprime/pull/3265
    • Add type aliases to JSON dictionary spec by @jwest115 in https://github.com/nasa/fprime/pull/3254
    • Fixing fprime-tools to v3.6.1 hotsting release by @LeStarch in https://github.com/nasa/fprime/pull/3269
    • Adding fpp-to-layout now that base is fixed by @LeStarch in https://github.com/nasa/fprime/pull/3270
    • Remove ActiveLogger Priority by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3268
    • Add telemetry packets to JSON dictionary spec by @jwest115 in https://github.com/nasa/fprime/pull/3221
    • Add CI check for fprime-examples repo by @thomas-bc in https://github.com/nasa/fprime/pull/3234
    • Fix depend-a-bot vulnerabilities by @LeStarch in https://github.com/nasa/fprime/pull/3271
    • Updates calculateCrc documentation for file pointer. Fixes #3259 by @LeStarch in https://github.com/nasa/fprime/pull/3279
    • Add NOT_SUPPORTED to OS' statues by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3281
    • Update fprime-examples CI to use nasa repo by @thomas-bc in https://github.com/nasa/fprime/pull/3284
    • Add new Fw.Ready port for coordinating startup by @celskeggs in https://github.com/nasa/fprime/pull/3261
    • Add F Prime terminology translation guide by @matt392code in https://github.com/nasa/fprime/pull/3260
    • Improve error checking in mutex stub by @celskeggs in https://github.com/nasa/fprime/pull/3167
    • Draft of ROSES pattern form by @LeStarch in https://github.com/nasa/fprime/pull/3291
    • Add final to component implementation classes by @jwest115 in https://github.com/nasa/fprime/pull/3292
    • Rename PATTERN-SUGGESTION.yml to pattern_request.yml by @LeStarch in https://github.com/nasa/fprime/pull/3294
    • Fixing template for pattern request by @LeStarch in https://github.com/nasa/fprime/pull/3295
    • Roses/clarity by @LeStarch in https://github.com/nasa/fprime/pull/3296
    • Roses/clarity by @LeStarch in https://github.com/nasa/fprime/pull/3297
    • Removes NATIVE_INT_TYPE, NATIVE_UINT_TYPE, and POINTER_CAST from Fw by @LeStarch in https://github.com/nasa/fprime/pull/3286
    • Bump jinja2 from 3.1.5 to 3.1.6 by @dependabot[bot] in https://github.com/nasa/fprime/pull/3342
    • Improve warning flags in builds by @bocchino in https://github.com/nasa/fprime/pull/3319
    • Split Deframer into FrameAccumulator Deframer and Router by @thomas-bc in https://github.com/nasa/fprime/pull/3250
    • Adding format specifier aliases for primitives. Updating documentation. (#3199) by @vincewoo in https://github.com/nasa/fprime/pull/3375
    • Adding warning about the use of PlatformPointerCast. Fixes: #251 by @LeStarch in https://github.com/nasa/fprime/pull/3381
    • Assert numerical type invariants. Fixes: #3207 by @LeStarch in https://github.com/nasa/fprime/pull/3382
    • Fixes #3204 by removing NATIVE_ and POINTER_CAST from Drv by @LeStarch in https://github.com/nasa/fprime/pull/3380
    • Removing NATIVE_ and POINTER_CAST from FppTest, Utils, cmake, config,… by @LeStarch in https://github.com/nasa/fprime/pull/3378
    • Remove NATIVE_INT_TYPE, NATIVE_UINT_TYPE, and POINTER_CAST from Svc by @LeStarch in https://github.com/nasa/fprime/pull/3374
    • Fix UT_MOD_DEPS usage in Fw by @thomas-bc in https://github.com/nasa/fprime/pull/3392
    • Clarify dependency for FW_ENABLE_TEXT_LOGGING by @celskeggs in https://github.com/nasa/fprime/pull/3391
    • FPP v3.0.0a3 by @bocchino in https://github.com/nasa/fprime/pull/3393
    • Add apt-get update call to all workflows using apt-get by @thomas-bc in https://github.com/nasa/fprime/pull/3415
    • Ref Application README.md update by @tylerrussin in https://github.com/nasa/fprime/pull/3423
    • Testing with configured fixed-size types by @LeStarch in https://github.com/nasa/fprime/pull/3409
    • Fixing compilation error for FW_RELATIVE_PATH_ASSERT and FW_FILE_ID_ASSERT assert levels when ASSERT_RELATIVE_PATH or FW_FILE_ID are not defined. by @vincewoo in https://github.com/nasa/fprime/pull/3418
    • Issue 3285 reducing signed size type in os file by @LeStarch in https://github.com/nasa/fprime/pull/3402
    • Fix warnings in FppTest build by @bocchino in https://github.com/nasa/fprime/pull/3434
    • Add workflow for running fpp-to-json on Ref by @jwest115 in https://github.com/nasa/fprime/pull/3430
    • Return cmd repsonse for LOG_STATUS in SeqDispatcher by @zimri-leisher in https://github.com/nasa/fprime/pull/3438
    • Update Ref to use FPP telemetry packets by @bocchino in https://github.com/nasa/fprime/pull/3440
    • Refactored type organization by @LeStarch in https://github.com/nasa/fprime/pull/3422
    • File typo by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3464
    • Fix uart baudrates by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3469
    • Add System Reference to CI by @jwest115 in https://github.com/nasa/fprime/pull/3466
    • Deprecate Fw::Buffer::getSerializeRepr in favor of 'getSerializer' and 'getDeserializer' by @vincewoo in https://github.com/nasa/fprime/pull/3431
    • Add FW_PACKET_FILE descriptor to FileDownlink and FileUplink logic by @thomas-bc in https://github.com/nasa/fprime/pull/3488
    • Fix FileDownlink conversion warning by @thomas-bc in https://github.com/nasa/fprime/pull/3493
    • Add OsTime component by @kubiak-jpl in https://github.com/nasa/fprime/pull/3355
    • Config blank slate by @LeStarch in https://github.com/nasa/fprime/pull/3487
    • Fix installation of ALIAS targets in CMake by @thomas-bc in https://github.com/nasa/fprime/pull/3514
    • FpySequencer 0.1 by @zimri-leisher in https://github.com/nasa/fprime/pull/3334
    • FppTest: Type Alias by @Kronos3 in https://github.com/nasa/fprime/pull/3470
    • Auto-generate nav with mkdocs-awesome-nav by @ashleynilo in https://github.com/nasa/fprime/pull/3460
    • Fixing timing issue in TcpServer UTs by @vincewoo in https://github.com/nasa/fprime/pull/3528
    • Revise array allocation in Frame Accumulator by @bocchino in https://github.com/nasa/fprime/pull/3525
    • Add Framer FPP interface, implement FprimeFramer and adapt ComQueue by @thomas-bc in https://github.com/nasa/fprime/pull/3486
    • Add upper-bound limit to for loop in Os::FileSystem by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3535
    • Fix hashes.txt generation by getting build_root by @thomas-bc in https://github.com/nasa/fprime/pull/3523
    • Fix sign-compare warning in Os::Posix::File, Svc::ComQueue, and Svc::… by @AlesKus in https://github.com/nasa/fprime/pull/3515
    • Add initial list of supported and future supported platforms by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3348
    • Add docs for driver interfaces by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3542
    • Remove old help-text from GDS guide by @thomas-bc in https://github.com/nasa/fprime/pull/3541
    • Add ByteStreamDriverInterface docs section by @thomas-bc in https://github.com/nasa/fprime/pull/3549
    • Fix ComStub UTs type warnings by @thomas-bc in https://github.com/nasa/fprime/pull/3550
    • Added nav for tutorials back to mkdocs.yml by @ashleynilo in https://github.com/nasa/fprime/pull/3556
    • Update docs link to match line numbers by @thomas-bc in https://github.com/nasa/fprime/pull/3560
    • Use data return pattern on Uplink and standardize port names by @thomas-bc in https://github.com/nasa/fprime/pull/3546
    • Add How To guide for integrating third-party libraries by @thomas-bc in https://github.com/nasa/fprime/pull/3489
    • Fix project-builder by checking out submodules by @thomas-bc in https://github.com/nasa/fprime/pull/3570
    • Clarify allocation failure error by @celskeggs in https://github.com/nasa/fprime/pull/3566
    • Clean up User Manual index docs by @ashleynilo in https://github.com/nasa/fprime/pull/3573
    • Improve GDS plugin documentation by @LeStarch in https://github.com/nasa/fprime/pull/3551
    • Clarify invocation of seqCmdStatus port in CmdDispatcher by @AlesKus in https://github.com/nasa/fprime/pull/3557
    • Improve one possible error on Svc.TlmChan bucket exhaustion by @celskeggs in https://github.com/nasa/fprime/pull/3567
    • Removing CMake from installation guide. Fixes #3501 by @LeStarch in https://github.com/nasa/fprime/pull/3574
    • Add file status by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3569
    • Resolve Source Paths in CMake by @LeStarch in https://github.com/nasa/fprime/pull/3576
    • Prefixing variables to prevent shadowing. Fixes: #3370 by @LeStarch in https://github.com/nasa/fprime/pull/3585
    • Fix cookiecutter test workflow by @thomas-bc in https://github.com/nasa/fprime/pull/3583
    • Add Several CMake Tests to Prove Previous Fixes by @LeStarch in https://github.com/nasa/fprime/pull/3579
    • Allow new configuration for F Prime by @LeStarch in https://github.com/nasa/fprime/pull/3563
    • Fix ISR handler invocation in Drv::BlockDriver by @AlesKus in https://github.com/nasa/fprime/pull/3586
    • Fix version check error message by @celskeggs in https://github.com/nasa/fprime/pull/3596
    • Update FPP version by @bocchino in https://github.com/nasa/fprime/pull/3595
    • Fix memory leak in ComStub when reads fail by @celskeggs in https://github.com/nasa/fprime/pull/3600
    • Removing regneration from AC files that are themselves regenerated by @LeStarch in https://github.com/nasa/fprime/pull/3602
    • Remove unused property by @LeStarch in https://github.com/nasa/fprime/pull/3606
    • FpySequencer 0.2 by @zimri-leisher in https://github.com/nasa/fprime/pull/3552
    • Add GOVERNANCE Document by @LeStarch in https://github.com/nasa/fprime/pull/3609
    • Add command to OsTime to set the current time by @celskeggs in https://github.com/nasa/fprime/pull/3607
    • Making configuration files trigger configure by @LeStarch in https://github.com/nasa/fprime/pull/3620
    • Extern params by @Brian-Campuzano in https://github.com/nasa/fprime/pull/3608
    • Update Os File UTs by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3619
    • Update requirements.txt for release v4.0.0a1 by @thomas-bc in https://github.com/nasa/fprime/pull/3623
    • Array toString() delimited with comma by @Kronos3 in https://github.com/nasa/fprime/pull/3626
    • Switch the type of the Task priority to FwTaskPriorityType by @m-aleem in https://github.com/nasa/fprime/pull/3617
    • Add UT_AUTO_HELPERS control word to new CMake API by @thomas-bc in https://github.com/nasa/fprime/pull/3648
    • Add Ninja to Requirements.txt by @rmzmrnn in https://github.com/nasa/fprime/pull/3627
    • Initial refactor to allow implementations as object libraries by @LeStarch in https://github.com/nasa/fprime/pull/3642
    • PRIVATE->private and PROTECTED->protected updates in Svc/File* (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3659
    • PRIVATE->private and PROTECTED->protected updates in Svc/Fprime* and Svc/Frame* (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3660
    • PRIVATE->private and PROTECTED->protected updates in Drv (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3658
    • PRIVATE->private updates in CFDP (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3657
    • Display cmake target on error by @emmanuel-ferdman in https://github.com/nasa/fprime/pull/3654
    • Moving snprintf to platform such that platforms may override it by @LeStarch in https://github.com/nasa/fprime/pull/3655
    • Add How-To Implement a Custom Framing Protocol guide by @thomas-bc in https://github.com/nasa/fprime/pull/3635
    • PRIVATE->private and PROTECTED->protected updates in Svc/ComLogger (#… by @m-aleem in https://github.com/nasa/fprime/pull/3661
    • PRIVATE->private and PROTECTED->protected updates in multiple Svc subdirectories (nasa#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3669
    • Adding aarch64-linux workflow by @moisesmata in https://github.com/nasa/fprime/pull/3671
    • PRIVATE->private and PROTECTED->protected updates in multiple Fw subdirectories by @m-aleem in https://github.com/nasa/fprime/pull/3672
    • Add seqRunIn port to FpySequencer by @zimri-leisher in https://github.com/nasa/fprime/pull/3680
    • PRIVATE->private and PROTECTED->protected updates in Ref (nasa#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3681
    • Bump setuptools from 75.3.0 to 78.1.1 by @dependabot[bot] in https://github.com/nasa/fprime/pull/3630
    • PRIVATE->private and PROTECTED->protected updates in Os, partial by @m-aleem in https://github.com/nasa/fprime/pull/3682
    • PRIVATE->private and PROTECTED->protected updates in RPI (nasa#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3683
    • PRIVATE->private and PROTECTED->protected updates in FppTest/component (nasa#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3686
    • PRIVATE->private and PROTECTED->protected updates in FppTest/state_machine (nasa#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3687
    • The PR: XML purge - Wahoo! by @LeStarch in https://github.com/nasa/fprime/pull/3685
    • PRIVATE->private and PROTECTED->protected updates in Svc/BufferLogger by @m-aleem in https://github.com/nasa/fprime/pull/3690
    • Move BlockDriver to Ref example by @timcanham in https://github.com/nasa/fprime/pull/3651
    • PRIVATE->private and PROTECTED->protected updates in Svc/CmdSequencer by @m-aleem in https://github.com/nasa/fprime/pull/3695
    • PRIVATE->private and PROTECTED->protected updates in Svc/BufferAccumulator by @m-aleem in https://github.com/nasa/fprime/pull/3696
    • Adding note about explicitly identifying ports that need priority in SDD by @vincewoo in https://github.com/nasa/fprime/pull/3697
    • GDS Alpha 2 by @LeStarch in https://github.com/nasa/fprime/pull/3699
    • fixed copy paste error by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3705
    • Bump requests from 2.32.3 to 2.32.4 by @dependabot[bot] in https://github.com/nasa/fprime/pull/3711
    • Fix ambiguous error for .serialize() overloads by @ethancheez in https://github.com/nasa/fprime/pull/3707
    • Adding support for UDP ephemeral ports by @vincewoo in https://github.com/nasa/fprime/pull/3691
    • PRIVATE->private and PROTECTED->protected updates in Os/File.hpp (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3701
    • Add support for CCSDS TC/TM and SpacePacket protocols by @thomas-bc in https://github.com/nasa/fprime/pull/3684
    • Scrubbing XML by @LeStarch in https://github.com/nasa/fprime/pull/3718
    • Fix miscellaneous items following #3684 by @thomas-bc in https://github.com/nasa/fprime/pull/3726
    • Add CI build for RHEL8 environment by @thomas-bc in https://github.com/nasa/fprime/pull/3731
    • Fix directory detection bug in Os::FileSystem::getPathType by @vincewoo in https://github.com/nasa/fprime/pull/3727
    • Add Core Subtopologies: CDHCore by @moisesmata in https://github.com/nasa/fprime/pull/3720
    • Support non-default Fw type config (ie: U16, U64) by @jwest115 in https://github.com/nasa/fprime/pull/3714
    • Update supported platforms by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3710
    • Add constants to dictionary spec by @jwest115 in https://github.com/nasa/fprime/pull/3692
    • Purge PlatformIntType and PlatformUIntType by @LeStarch in https://github.com/nasa/fprime/pull/3719
    • CMake Refactor: Explicity Setting Autocoder Outputs by @LeStarch in https://github.com/nasa/fprime/pull/3735
    • PRIVATE->private and PROTECTED->protected updates in Svc/FpySequencer by @m-aleem in https://github.com/nasa/fprime/pull/3737
    • Fix subtopology dictionary installation and redundant installation by @LeStarch in https://github.com/nasa/fprime/pull/3744
    • PRIVATE -> private for Fw/Buffer by @m-aleem in https://github.com/nasa/fprime/pull/3754
    • PRIVATE -> private for Os/Task.hpp by @m-aleem in https://github.com/nasa/fprime/pull/3752
    • Fix compilation when FW_QUEUE_REGISTRATION == 0 by @celskeggs in https://github.com/nasa/fprime/pull/3746
    • PRIVATE -> private for Svc/DpCatalog by @m-aleem in https://github.com/nasa/fprime/pull/3742
    • Bugfixes and updates to requirements.txt by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3757
    • PRIVATE -> private for Fw/FilePacket by @m-aleem in https://github.com/nasa/fprime/pull/3756
    • PRIVATE -> private for Fw/Time by @m-aleem in https://github.com/nasa/fprime/pull/3755
    • PRIVATE -> private for Utils/Types/CircularBuffer.hpp by @m-aleem in https://github.com/nasa/fprime/pull/3743
    • CDHCore Subtopology improvements by @moisesmata in https://github.com/nasa/fprime/pull/3751
    • feat: use config header for CRC filename size by @0xb-s in https://github.com/nasa/fprime/pull/3708
    • PRIVATE -> private and PROTECTED -> protected in last remaining UTs by @m-aleem in https://github.com/nasa/fprime/pull/3765
    • PRIVATE -> private for Fw/Dp by @m-aleem in https://github.com/nasa/fprime/pull/3753
    • Rename CCSDS to Ccsds following PascalCase conventions by @moisesmata in https://github.com/nasa/fprime/pull/3788
    • Interfaces by @Kronos3 in https://github.com/nasa/fprime/pull/3709
    • Designate base config from non-base config by @LeStarch in https://github.com/nasa/fprime/pull/3787
    • Add code formatting check to CI by @thomas-bc in https://github.com/nasa/fprime/pull/3778
    • Use concurrency groups in CI to prevent overfilling the queue by @thomas-bc in https://github.com/nasa/fprime/pull/3794
    • Bump urllib3 from 1.26.20 to 2.5.0 by @dependabot[bot] in https://github.com/nasa/fprime/pull/3767
    • Updates for Svc/PrmDb corresponding to UT cmake update for protected/private (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3772
    • Updates for Svc/ActiveLogger corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3773
    • Updates for Svc/Health corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3797
    • Updates for Svc/CmdSequencer corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3798
    • Updates for Svc/ActiveRateGroup corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3779
    • Updates for Svc/BufferAccumulator corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3786
    • Updates for Svc/DpWriter corresponding to UT cmake udpate for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3800
    • Updates for Svc/CmdDispatcher corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3795
    • Updates for Svc/PassiveRateGroup corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3796
    • Updates for Svc/DpManager corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3799
    • Fixing a bug in the shared setup_helper to make the wait_on_started ASSERT configurable by the calling test by @vincewoo in https://github.com/nasa/fprime/pull/3806
    • Switch Fw::Buffer size to FwSizeType instead of U32 by @thomas-bc in https://github.com/nasa/fprime/pull/3802
    • Refactor Drv::Ip::UdpSocket to clean up state members and remove dependency on dynamic memory by @vincewoo in https://github.com/nasa/fprime/pull/3728
    • FpySequencer V0.3 by @zimri-leisher in https://github.com/nasa/fprime/pull/3702
    • [ROSES] Update CMake Library integration guide based on student review by @thomas-bc in https://github.com/nasa/fprime/pull/3804
    • Format Svc/Ccsds package and add to CI by @thomas-bc in https://github.com/nasa/fprime/pull/3811
    • Add Core Subtopologies: ComFprime, ComCcsds, DataProducts, FileHandling by @moisesmata in https://github.com/nasa/fprime/pull/3768
    • STATIC -> static by @m-aleem in https://github.com/nasa/fprime/pull/3814
    • Update hello world link by @tylerrussin in https://github.com/nasa/fprime/pull/3823
    • Updates for Svc/FpySquencer corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3812
    • Fix queue size regression by @LeStarch in https://github.com/nasa/fprime/pull/3827
    • CMake: Copy hashes.txt to build-artifact by @valdaarhun in https://github.com/nasa/fprime/pull/3771
    • Deprecated 'bool noLength' versions of serialize and deserialize. by @vincewoo in https://github.com/nasa/fprime/pull/3819
    • Update requirements to include fpp v3.0.0a13 and fprime-gds v4.0.0a7 by @jwest115 in https://github.com/nasa/fprime/pull/3813
    • Fix EXIT not handled in dispatchDirective by @zimri-leisher in https://github.com/nasa/fprime/pull/3837
    • Rename STATEMENT_TIMEOUT_SECS telemetry not to conflict with parameter by @zimri-leisher in https://github.com/nasa/fprime/pull/3836
    • Add seqstart/done ports to FpySequencer by @zimri-leisher in https://github.com/nasa/fprime/pull/3826
    • FpySequencer floating point comparisons by @zimri-leisher in https://github.com/nasa/fprime/pull/3820
    • Make Fw::TimeInterval an FPP Struct by @m-aleem in https://github.com/nasa/fprime/pull/3834
    • Add fpext, fptrunc directives by @zimri-leisher in https://github.com/nasa/fprime/pull/3845
    • Fix JSON dict formatting by @jwest115 in https://github.com/nasa/fprime/pull/3858
    • Clean up supported platforms documentation by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3873
    • Add float to int conversion directives, some misc changes by @zimri-leisher in https://github.com/nasa/fprime/pull/3847
    • Bump to fprime-tools v4.0.0a6 (Fix CI) by @LeStarch in https://github.com/nasa/fprime/pull/3863
    • Fix framework UT shutoff regression by @celskeggs in https://github.com/nasa/fprime/pull/3883
    • Update supported platforms by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3881
    • Updates for FPPTest corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3810
    • Fixed invalid FW_ASSERT in LinuxUartDriver. Replaced with FW_ASSERT_NO_OVERFLOW. by @vincewoo in https://github.com/nasa/fprime/pull/3894
    • Add CMake package file for F Prime by @LeStarch in https://github.com/nasa/fprime/pull/3898
    • Linux should not default to stubbed drivers by @LeStarch in https://github.com/nasa/fprime/pull/3840
    • Update clang-format dependency for ARM32 support by @thomas-bc in https://github.com/nasa/fprime/pull/3901
    • Adding FW_CASSERT_1 macro for C by @vincewoo in https://github.com/nasa/fprime/pull/3896
    • Add a repository dirtiness indicator to the auto-generated version information by @ianbrault in https://github.com/nasa/fprime/pull/3899
    • Issue 3745 by @LeStarch in https://github.com/nasa/fprime/pull/3843
    • Make Os.RawTime comparable for equality by @celskeggs in https://github.com/nasa/fprime/pull/3902
    • Update F' Time handling with FPP struct and clean up TIME flags, and remove Time Context comparison by @m-aleem in https://github.com/nasa/fprime/pull/3844
    • Add ComLoggerTee Core Subtopology by @moisesmata in https://github.com/nasa/fprime/pull/3867
    • Restrict TCP subtopologies to supported platforms by @celskeggs in https://github.com/nasa/fprime/pull/3903
    • Reset PROTECTED/PRIVATE/STATIC override flags by @m-aleem in https://github.com/nasa/fprime/pull/3815
    • Remove RPI project in lieu of the LED workshop by @LeStarch in https://github.com/nasa/fprime/pull/3908
    • Added config needed to run InT scripts by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3915
    • Rework fpp test by @m-aleem in https://github.com/nasa/fprime/pull/3912
    • Rename ActiveLogger to EventManager by @thomas-bc in https://github.com/nasa/fprime/pull/3920
    • Remove PRIVATE PROTECTED and STATIC access overrides by @m-aleem in https://github.com/nasa/fprime/pull/3821
    • Replace struct get/set with get_/set_ by @LeStarch in https://github.com/nasa/fprime/pull/3917
    • Stub std::atomic implementation by @m-aleem in https://github.com/nasa/fprime/pull/3909
    • Generate dictionaries in deployment targets by @celskeggs in https://github.com/nasa/fprime/pull/3910
    • Add lightweight SpscQueue class by @celskeggs in https://github.com/nasa/fprime/pull/3871
    • Adds calls to cmdResponse_out for both OK and EXECUTION_ERROR conditions Fixes #3897 by @MikeMcPherson in https://github.com/nasa/fprime/pull/3926
    • Make .fppi changes trigger re-generation by @LeStarch in https://github.com/nasa/fprime/pull/3933
    • Renaming serialize/deserialize methods to serializeTo/serializeFrom and deserializeTo/deserializeFrom by @vincewoo in https://github.com/nasa/fprime/pull/3880
    • Revert "Stub std::atomic implementation" by @LeStarch in https://github.com/nasa/fprime/pull/3934
    • Compile-time asserts for string-vs.-buffer max sizes do not account for serialized string lengths by @ianbrault in https://github.com/nasa/fprime/pull/3937
    • Restructure core subtopologies and add Svc_Subtopologies target by @moisesmata in https://github.com/nasa/fprime/pull/3904
    • Update GDS and Tools requirements for v4.0.0a2 by @thomas-bc in https://github.com/nasa/fprime/pull/3953
    • Updates Types.fpp to use optimized sizes for enumerations by @kyleajones in https://github.com/nasa/fprime/pull/3956
    • Format Os Module by @thomas-bc in https://github.com/nasa/fprime/pull/3959
    • Format Drv module by @thomas-bc in https://github.com/nasa/fprime/pull/3960
    • Update data types doc by @jwest115 in https://github.com/nasa/fprime/pull/3957
    • Bump GDS to latest release by @aborjigin in https://github.com/nasa/fprime/pull/3964
    • Improve backward compatibility [de]serialize[From/To] fallback on Fw::Serializable and Fw::Buffer by @Kronos3 in https://github.com/nasa/fprime/pull/3962
    • Remove XML dependencies from requirements by @thomas-bc in https://github.com/nasa/fprime/pull/3961
    • Clang 20.1 UT Errors by @m-aleem in https://github.com/nasa/fprime/pull/3949
    • Format Fw and add to CI by @thomas-bc in https://github.com/nasa/fprime/pull/3976
    • Fix/uart bytes by @LeStarch in https://github.com/nasa/fprime/pull/3948
    • Bump fprime-tools version by @LeStarch in https://github.com/nasa/fprime/pull/3972
    • Update Cross Compilation Tutorial by @aborjigin in https://github.com/nasa/fprime/pull/3979
    • Format Svc and add to CI by @thomas-bc in https://github.com/nasa/fprime/pull/3978
    • Rate drive sent/receive telemetry by @LeStarch in https://github.com/nasa/fprime/pull/3980
    • Add DP Demo for testing DPs and fprime-dp-writer by @jwest115 in https://github.com/nasa/fprime/pull/3951
    • CMake documentation refactor by @LeStarch in https://github.com/nasa/fprime/pull/3981
    • Fix F Prime location in LedBlinker CI by @thomas-bc in https://github.com/nasa/fprime/pull/3988
    • Removed sock fd assert on IpSocket by @jsilveira1409 in https://github.com/nasa/fprime/pull/3973
    • Update teardown ordering by @LeStarch in https://github.com/nasa/fprime/pull/3990
    • Differentiate sync/async ByteStreamDriver and update ComStub to work with both by @thomas-bc in https://github.com/nasa/fprime/pull/3987
    • (De)Serialization clean up of temporary workarounds by @vincewoo in https://github.com/nasa/fprime/pull/3971
    • Update to FPP v3.0.0, Tools v4.0.0, and GDS v4.0.0 by @LeStarch in https://github.com/nasa/fprime/pull/3995
    • Generative AI documentation Added by @aborjigin in https://github.com/nasa/fprime/pull/3932
    • Fix HelloWorld CI following update to v4.0 by @thomas-bc in https://github.com/nasa/fprime/pull/3997
    • PR 4000: Bump Tools and GDS by @thomas-bc in https://github.com/nasa/fprime/pull/4000

    New Contributors

    • @vincewoo made their first contribution in https://github.com/nasa/fprime/pull/3375
    • @tylerrussin made their first contribution in https://github.com/nasa/fprime/pull/3423
    • @Brian-Campuzano made their first contribution in https://github.com/nasa/fprime/pull/3608
    • @emmanuel-ferdman made their first contribution in https://github.com/nasa/fprime/pull/3654
    • @0xb-s made their first contribution in https://github.com/nasa/fprime/pull/3708
    • @valdaarhun made their first contribution in https://github.com/nasa/fprime/pull/3771
    • @ianbrault made their first contribution in https://github.com/nasa/fprime/pull/3899
    • @MikeMcPherson made their first contribution in https://github.com/nasa/fprime/pull/3926
    • @kyleajones made their first contribution in https://github.com/nasa/fprime/pull/3956
    • @aborjigin made their first contribution in https://github.com/nasa/fprime/pull/3964

    Full Changelog: https://github.com/nasa/fprime/compare/v3.6.3...v4.0.0

    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v4.0.0a3 abb09e4a68

    v4.0.0a3: Hold Your Breath... Pre-Release

    giteasync released this 2025-08-06 19:42:06 -05:00 | 154 commits to devel since this release

    One last check before PR-4000 (v4.0.0).

    What's Changed

    • Updates Types.fpp to use optimized sizes for enumerations by @kyleajones in https://github.com/nasa/fprime/pull/3956
    • Format Os Module by @thomas-bc in https://github.com/nasa/fprime/pull/3959
    • Format Drv module by @thomas-bc in https://github.com/nasa/fprime/pull/3960
    • Update data types doc by @jwest115 in https://github.com/nasa/fprime/pull/3957
    • Bump GDS to latest release by @aborjigin in https://github.com/nasa/fprime/pull/3964
    • Improve backward compatibility [de]serialize[From/To] fallback on Fw::Serializable and Fw::Buffer by @Kronos3 in https://github.com/nasa/fprime/pull/3962
    • Remove XML dependencies from requirements by @thomas-bc in https://github.com/nasa/fprime/pull/3961
    • Clang 20.1 UT Errors by @m-aleem in https://github.com/nasa/fprime/pull/3949
    • Format Fw and add to CI by @thomas-bc in https://github.com/nasa/fprime/pull/3976
    • Fix/uart bytes by @LeStarch in https://github.com/nasa/fprime/pull/3948
    • Bump fprime-tools version by @LeStarch in https://github.com/nasa/fprime/pull/3972
    • Update Cross Compilation Tutorial by @aborjigin in https://github.com/nasa/fprime/pull/3979
    • Format Svc and add to CI by @thomas-bc in https://github.com/nasa/fprime/pull/3978
    • Rate drive sent/receive telemetry by @LeStarch in https://github.com/nasa/fprime/pull/3980
    • Add DP Demo for testing DPs and fprime-dp-writer by @jwest115 in https://github.com/nasa/fprime/pull/3951
    • CMake documentation refactor by @LeStarch in https://github.com/nasa/fprime/pull/3981
    • Fix F Prime location in LedBlinker CI by @thomas-bc in https://github.com/nasa/fprime/pull/3988
    • Removed sock fd assert on IpSocket by @jsilveira1409 in https://github.com/nasa/fprime/pull/3973
    • Update teardown ordering by @LeStarch in https://github.com/nasa/fprime/pull/3990
    • Differentiate sync/async ByteStreamDriver and update ComStub to work with both by @thomas-bc in https://github.com/nasa/fprime/pull/3987
    • (De)Serialization clean up of temporary workarounds by @vincewoo in https://github.com/nasa/fprime/pull/3971
    • Update to FPP v3.0.0, Tools v4.0.0, and GDS v4.0.0 by @LeStarch in https://github.com/nasa/fprime/pull/3995
    • Generative AI documentation Added by @aborjigin in https://github.com/nasa/fprime/pull/3932
    • Fix HelloWorld CI following update to v4.0 by @thomas-bc in https://github.com/nasa/fprime/pull/3997
    • PR 4000: Bump Tools and GDS by @thomas-bc in https://github.com/nasa/fprime/pull/4000

    New Contributors

    • @kyleajones made their first contribution in https://github.com/nasa/fprime/pull/3956
    • @aborjigin made their first contribution in https://github.com/nasa/fprime/pull/3964

    Full Changelog: https://github.com/nasa/fprime/compare/v4.0.0a2...v4.0.0a3

    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v4.0.0a2 3dc73f9d72

    v4.0.0a2 (Alpha 2) Pre-Release

    giteasync released this 2025-07-30 14:01:14 -05:00 | 179 commits to devel since this release

    What's Changed

    • Array toString() delimited with comma by @Kronos3 in https://github.com/nasa/fprime/pull/3626
    • Switch the type of the Task priority to FwTaskPriorityType by @m-aleem in https://github.com/nasa/fprime/pull/3617
    • Add UT_AUTO_HELPERS control word to new CMake API by @thomas-bc in https://github.com/nasa/fprime/pull/3648
    • Add Ninja to Requirements.txt by @rmzmrnn in https://github.com/nasa/fprime/pull/3627
    • Initial refactor to allow implementations as object libraries by @LeStarch in https://github.com/nasa/fprime/pull/3642
    • PRIVATE->private and PROTECTED->protected updates in Svc/File* (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3659
    • PRIVATE->private and PROTECTED->protected updates in Svc/Fprime* and Svc/Frame* (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3660
    • PRIVATE->private and PROTECTED->protected updates in Drv (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3658
    • PRIVATE->private updates in CFDP (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3657
    • Display cmake target on error by @emmanuel-ferdman in https://github.com/nasa/fprime/pull/3654
    • Moving snprintf to platform such that platforms may override it by @LeStarch in https://github.com/nasa/fprime/pull/3655
    • Add How-To Implement a Custom Framing Protocol guide by @thomas-bc in https://github.com/nasa/fprime/pull/3635
    • PRIVATE->private and PROTECTED->protected updates in Svc/ComLogger (#… by @m-aleem in https://github.com/nasa/fprime/pull/3661
    • PRIVATE->private and PROTECTED->protected updates in multiple Svc subdirectories (nasa#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3669
    • Adding aarch64-linux workflow by @moisesmata in https://github.com/nasa/fprime/pull/3671
    • PRIVATE->private and PROTECTED->protected updates in multiple Fw subdirectories by @m-aleem in https://github.com/nasa/fprime/pull/3672
    • Add seqRunIn port to FpySequencer by @zimri-leisher in https://github.com/nasa/fprime/pull/3680
    • PRIVATE->private and PROTECTED->protected updates in Ref (nasa#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3681
    • Bump setuptools from 75.3.0 to 78.1.1 by @dependabot[bot] in https://github.com/nasa/fprime/pull/3630
    • PRIVATE->private and PROTECTED->protected updates in Os, partial by @m-aleem in https://github.com/nasa/fprime/pull/3682
    • PRIVATE->private and PROTECTED->protected updates in RPI (nasa#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3683
    • PRIVATE->private and PROTECTED->protected updates in FppTest/component (nasa#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3686
    • PRIVATE->private and PROTECTED->protected updates in FppTest/state_machine (nasa#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3687
    • The PR: XML purge - Wahoo! by @LeStarch in https://github.com/nasa/fprime/pull/3685
    • PRIVATE->private and PROTECTED->protected updates in Svc/BufferLogger by @m-aleem in https://github.com/nasa/fprime/pull/3690
    • Move BlockDriver to Ref example by @timcanham in https://github.com/nasa/fprime/pull/3651
    • PRIVATE->private and PROTECTED->protected updates in Svc/CmdSequencer by @m-aleem in https://github.com/nasa/fprime/pull/3695
    • PRIVATE->private and PROTECTED->protected updates in Svc/BufferAccumulator by @m-aleem in https://github.com/nasa/fprime/pull/3696
    • Adding note about explicitly identifying ports that need priority in SDD by @vincewoo in https://github.com/nasa/fprime/pull/3697
    • GDS Alpha 2 by @LeStarch in https://github.com/nasa/fprime/pull/3699
    • fixed copy paste error by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3705
    • Bump requests from 2.32.3 to 2.32.4 by @dependabot[bot] in https://github.com/nasa/fprime/pull/3711
    • Fix ambiguous error for .serialize() overloads by @ethancheez in https://github.com/nasa/fprime/pull/3707
    • Adding support for UDP ephemeral ports by @vincewoo in https://github.com/nasa/fprime/pull/3691
    • PRIVATE->private and PROTECTED->protected updates in Os/File.hpp (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3701
    • Add support for CCSDS TC/TM and SpacePacket protocols by @thomas-bc in https://github.com/nasa/fprime/pull/3684
    • Scrubbing XML by @LeStarch in https://github.com/nasa/fprime/pull/3718
    • Fix miscellaneous items following #3684 by @thomas-bc in https://github.com/nasa/fprime/pull/3726
    • Add CI build for RHEL8 environment by @thomas-bc in https://github.com/nasa/fprime/pull/3731
    • Fix directory detection bug in Os::FileSystem::getPathType by @vincewoo in https://github.com/nasa/fprime/pull/3727
    • Add Core Subtopologies: CDHCore by @moisesmata in https://github.com/nasa/fprime/pull/3720
    • Support non-default Fw type config (ie: U16, U64) by @jwest115 in https://github.com/nasa/fprime/pull/3714
    • Update supported platforms by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3710
    • Add constants to dictionary spec by @jwest115 in https://github.com/nasa/fprime/pull/3692
    • Purge PlatformIntType and PlatformUIntType by @LeStarch in https://github.com/nasa/fprime/pull/3719
    • CMake Refactor: Explicity Setting Autocoder Outputs by @LeStarch in https://github.com/nasa/fprime/pull/3735
    • PRIVATE->private and PROTECTED->protected updates in Svc/FpySequencer by @m-aleem in https://github.com/nasa/fprime/pull/3737
    • Fix subtopology dictionary installation and redundant installation by @LeStarch in https://github.com/nasa/fprime/pull/3744
    • PRIVATE -> private for Fw/Buffer by @m-aleem in https://github.com/nasa/fprime/pull/3754
    • PRIVATE -> private for Os/Task.hpp by @m-aleem in https://github.com/nasa/fprime/pull/3752
    • Fix compilation when FW_QUEUE_REGISTRATION == 0 by @celskeggs in https://github.com/nasa/fprime/pull/3746
    • PRIVATE -> private for Svc/DpCatalog by @m-aleem in https://github.com/nasa/fprime/pull/3742
    • Bugfixes and updates to requirements.txt by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3757
    • PRIVATE -> private for Fw/FilePacket by @m-aleem in https://github.com/nasa/fprime/pull/3756
    • PRIVATE -> private for Fw/Time by @m-aleem in https://github.com/nasa/fprime/pull/3755
    • PRIVATE -> private for Utils/Types/CircularBuffer.hpp by @m-aleem in https://github.com/nasa/fprime/pull/3743
    • CDHCore Subtopology improvements by @moisesmata in https://github.com/nasa/fprime/pull/3751
    • feat: use config header for CRC filename size by @0xb-s in https://github.com/nasa/fprime/pull/3708
    • PRIVATE -> private and PROTECTED -> protected in last remaining UTs by @m-aleem in https://github.com/nasa/fprime/pull/3765
    • PRIVATE -> private for Fw/Dp by @m-aleem in https://github.com/nasa/fprime/pull/3753
    • Rename CCSDS to Ccsds following PascalCase conventions by @moisesmata in https://github.com/nasa/fprime/pull/3788
    • Interfaces by @Kronos3 in https://github.com/nasa/fprime/pull/3709
    • Designate base config from non-base config by @LeStarch in https://github.com/nasa/fprime/pull/3787
    • Add code formatting check to CI by @thomas-bc in https://github.com/nasa/fprime/pull/3778
    • Use concurrency groups in CI to prevent overfilling the queue by @thomas-bc in https://github.com/nasa/fprime/pull/3794
    • Bump urllib3 from 1.26.20 to 2.5.0 by @dependabot[bot] in https://github.com/nasa/fprime/pull/3767
    • Updates for Svc/PrmDb corresponding to UT cmake update for protected/private (#3446) by @m-aleem in https://github.com/nasa/fprime/pull/3772
    • Updates for Svc/ActiveLogger corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3773
    • Updates for Svc/Health corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3797
    • Updates for Svc/CmdSequencer corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3798
    • Updates for Svc/ActiveRateGroup corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3779
    • Updates for Svc/BufferAccumulator corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3786
    • Updates for Svc/DpWriter corresponding to UT cmake udpate for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3800
    • Updates for Svc/CmdDispatcher corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3795
    • Updates for Svc/PassiveRateGroup corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3796
    • Updates for Svc/DpManager corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3799
    • Fixing a bug in the shared setup_helper to make the wait_on_started ASSERT configurable by the calling test by @vincewoo in https://github.com/nasa/fprime/pull/3806
    • Switch Fw::Buffer size to FwSizeType instead of U32 by @thomas-bc in https://github.com/nasa/fprime/pull/3802
    • Refactor Drv::Ip::UdpSocket to clean up state members and remove dependency on dynamic memory by @vincewoo in https://github.com/nasa/fprime/pull/3728
    • FpySequencer V0.3 by @zimri-leisher in https://github.com/nasa/fprime/pull/3702
    • [ROSES] Update CMake Library integration guide based on student review by @thomas-bc in https://github.com/nasa/fprime/pull/3804
    • Format Svc/Ccsds package and add to CI by @thomas-bc in https://github.com/nasa/fprime/pull/3811
    • Add Core Subtopologies: ComFprime, ComCcsds, DataProducts, FileHandling by @moisesmata in https://github.com/nasa/fprime/pull/3768
    • STATIC -> static by @m-aleem in https://github.com/nasa/fprime/pull/3814
    • Update hello world link by @tylerrussin in https://github.com/nasa/fprime/pull/3823
    • Updates for Svc/FpySquencer corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3812
    • Fix queue size regression by @LeStarch in https://github.com/nasa/fprime/pull/3827
    • CMake: Copy hashes.txt to build-artifact by @valdaarhun in https://github.com/nasa/fprime/pull/3771
    • Deprecated 'bool noLength' versions of serialize and deserialize. by @vincewoo in https://github.com/nasa/fprime/pull/3819
    • Update requirements to include fpp v3.0.0a13 and fprime-gds v4.0.0a7 by @jwest115 in https://github.com/nasa/fprime/pull/3813
    • Fix EXIT not handled in dispatchDirective by @zimri-leisher in https://github.com/nasa/fprime/pull/3837
    • Rename STATEMENT_TIMEOUT_SECS telemetry not to conflict with parameter by @zimri-leisher in https://github.com/nasa/fprime/pull/3836
    • Add seqstart/done ports to FpySequencer by @zimri-leisher in https://github.com/nasa/fprime/pull/3826
    • FpySequencer floating point comparisons by @zimri-leisher in https://github.com/nasa/fprime/pull/3820
    • Make Fw::TimeInterval an FPP Struct by @m-aleem in https://github.com/nasa/fprime/pull/3834
    • Add fpext, fptrunc directives by @zimri-leisher in https://github.com/nasa/fprime/pull/3845
    • Fix JSON dict formatting by @jwest115 in https://github.com/nasa/fprime/pull/3858
    • Clean up supported platforms documentation by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3873
    • Add float to int conversion directives, some misc changes by @zimri-leisher in https://github.com/nasa/fprime/pull/3847
    • Bump to fprime-tools v4.0.0a6 (Fix CI) by @LeStarch in https://github.com/nasa/fprime/pull/3863
    • Fix framework UT shutoff regression by @celskeggs in https://github.com/nasa/fprime/pull/3883
    • Update supported platforms by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3881
    • Updates for FPPTest corresponding to UT cmake update for protected/private by @m-aleem in https://github.com/nasa/fprime/pull/3810
    • Fixed invalid FW_ASSERT in LinuxUartDriver. Replaced with FW_ASSERT_NO_OVERFLOW. by @vincewoo in https://github.com/nasa/fprime/pull/3894
    • Add CMake package file for F Prime by @LeStarch in https://github.com/nasa/fprime/pull/3898
    • Linux should not default to stubbed drivers by @LeStarch in https://github.com/nasa/fprime/pull/3840
    • Update clang-format dependency for ARM32 support by @thomas-bc in https://github.com/nasa/fprime/pull/3901
    • Adding FW_CASSERT_1 macro for C by @vincewoo in https://github.com/nasa/fprime/pull/3896
    • Add a repository dirtiness indicator to the auto-generated version information by @ianbrault in https://github.com/nasa/fprime/pull/3899
    • Issue 3745 by @LeStarch in https://github.com/nasa/fprime/pull/3843
    • Make Os.RawTime comparable for equality by @celskeggs in https://github.com/nasa/fprime/pull/3902
    • Update F' Time handling with FPP struct and clean up TIME flags, and remove Time Context comparison by @m-aleem in https://github.com/nasa/fprime/pull/3844
    • Add ComLoggerTee Core Subtopology by @moisesmata in https://github.com/nasa/fprime/pull/3867
    • Restrict TCP subtopologies to supported platforms by @celskeggs in https://github.com/nasa/fprime/pull/3903
    • Reset PROTECTED/PRIVATE/STATIC override flags by @m-aleem in https://github.com/nasa/fprime/pull/3815
    • Remove RPI project in lieu of the LED workshop by @LeStarch in https://github.com/nasa/fprime/pull/3908
    • Added config needed to run InT scripts by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3915
    • Rework fpp test by @m-aleem in https://github.com/nasa/fprime/pull/3912
    • Rename ActiveLogger to EventManager by @thomas-bc in https://github.com/nasa/fprime/pull/3920
    • Remove PRIVATE PROTECTED and STATIC access overrides by @m-aleem in https://github.com/nasa/fprime/pull/3821
    • Replace struct get/set with get_/set_ by @LeStarch in https://github.com/nasa/fprime/pull/3917
    • Stub std::atomic implementation by @m-aleem in https://github.com/nasa/fprime/pull/3909
    • Generate dictionaries in deployment targets by @celskeggs in https://github.com/nasa/fprime/pull/3910
    • Add lightweight SpscQueue class by @celskeggs in https://github.com/nasa/fprime/pull/3871
    • Adds calls to cmdResponse_out for both OK and EXECUTION_ERROR conditions Fixes #3897 by @MikeMcPherson in https://github.com/nasa/fprime/pull/3926
    • Make .fppi changes trigger re-generation by @LeStarch in https://github.com/nasa/fprime/pull/3933
    • Renaming serialize/deserialize methods to serializeTo/serializeFrom and deserializeTo/deserializeFrom by @vincewoo in https://github.com/nasa/fprime/pull/3880
    • Revert "Stub std::atomic implementation" by @LeStarch in https://github.com/nasa/fprime/pull/3934
    • Compile-time asserts for string-vs.-buffer max sizes do not account for serialized string lengths by @ianbrault in https://github.com/nasa/fprime/pull/3937
    • Restructure core subtopologies and add Svc_Subtopologies target by @moisesmata in https://github.com/nasa/fprime/pull/3904
    • Update GDS and Tools requirements for v4.0.0a2 by @thomas-bc in https://github.com/nasa/fprime/pull/3953

    New Contributors

    • @emmanuel-ferdman made their first contribution in https://github.com/nasa/fprime/pull/3654
    • @0xb-s made their first contribution in https://github.com/nasa/fprime/pull/3708
    • @valdaarhun made their first contribution in https://github.com/nasa/fprime/pull/3771
    • @ianbrault made their first contribution in https://github.com/nasa/fprime/pull/3899
    • @MikeMcPherson made their first contribution in https://github.com/nasa/fprime/pull/3926

    Full Changelog: https://github.com/nasa/fprime/compare/v4.0.0a1...v4.0.0a2

    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v4.0.0a1 952e7cf5ef

    v4.0.0a1 (Alpha 1) Pre-Release

    giteasync released this 2025-05-15 14:03:11 -05:00 | 310 commits to devel since this release

    F Prime v4 Alpha Release 1 🎉

    This is the first alpha release of F Prime v4. This release comes with the following amazing features:

    1. Conditional Sequencing (Svc/FpySequencer)
    2. Fixed-Width Numerical Types
    3. Better GDS plugin support (GdsStandardApp, DataHandlerPlugin)
    4. Improved CMake structure
    5. Formalized configuration modules
    6. External Parameter Handling Support
    7. FPP moduling for Packets
    8. FPP v3
    9. Design pattern documentation
    10. 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_modules(
        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_Types
        SomeDependency
    )
    

    Tip

    Fw_Types is auto-detected for FPP-based modules. Add this dependency when not using FPP autocoding on your module.

    Platform Changes

    Platforms have had several major changes in v4.0.0:

    1. Platform types have been moved into FPP as type aliases
    2. Platform types are expected to use fixed-with types
    3. Platform setup should now be a configuration module via register_fprime_config

    Platform Types

    Platform types were previously defined as header typedefs, however; this meant these types (which flow into configurable types) are not available to FPP models. These types are now aliases within FPP.

    Before (PlatformTypes.h)

    typedef uint64_t PlatformSizeType;
    ...
    

    After (PlatformTypes.fpp)

    @ The unsigned type of larger sizes internal to the software,
    @ e.g., memory buffer sizes, file sizes. Must be unsigned.
    @ Supplied by platform, overridable by project.
    type PlatformSizeType = U64
    ...
    

    Warning

    Since PlatfromPointerCast should not be used in the model, it is kept in PlatformTypes.h

    The requirements on these types, and the complete list are found in the numerical types documentation.

    Platform Definitions

    Platform definitions are defined in cmake/platform/<name-of-platform>.cmake. This file must now define an fprime configuration module that performs the autocoding for the new PlatformTypes.fpp

    Before

    include_directories(SYSTEM "${CMAKE_CURRENT_LIST_DIR}/types")
    

    After

    register_fprime_config(
        AUTOCODER_INPUTS
            "${CMAKE_CURRENT_LIST_DIR}/PlatformTypes.fpp"
        HEADERS
            "${CMAKE_CURRENT_LIST_DIR}/PlatformTypes.h"
        INTERFACE # No buildable files generated
    )
    

    Uplink/Downlink Changes

    The Uplink and Downlink components have been updated for better modularity and to allow for easy support of other communication protocols.

    Example Change Set

    If using a standard Uplink/Downlink stack as generated by fprime-util new --deployment, the full change-set that users need to apply to their topology is shown in the LedBlinker change log

    Click to Expand changes to a topology.fpp

    Before (topology.fpp)

    connections Uplink {
          comDriver.allocate -> bufferManager.bufferGetCallee
          comDriver.$recv -> comStub.drvDataIn
          comStub.comDataOut -> deframer.framedIn
          deframer.framedDeallocate -> bufferManager.bufferSendIn
          deframer.comOut -> cmdDisp.seqCmdBuff
          cmdDisp.seqCmdStatus -> deframer.cmdResponseIn
          deframer.bufferAllocate -> bufferManager.bufferGetCallee
          deframer.bufferOut -> fileUplink.bufferSendIn
          deframer.bufferDeallocate -> bufferManager.bufferSendIn
          fileUplink.bufferSendOut -> bufferManager.bufferSendIn
    }
    connections Downlink {
        eventLogger.PktSend -> comQueue.comQueueIn[0]
        tlmSend.PktSend -> comQueue.comQueueIn[1]
        fileDownlink.bufferSendOut -> comQueue.buffQueueIn[0]
        comQueue.comQueueSend -> framer.comIn
        comQueue.buffQueueSend -> framer.bufferIn
        framer.framedAllocate -> bufferManager.bufferGetCallee
        framer.framedOut -> comStub.comDataIn
        framer.bufferDeallocate -> fileDownlink.bufferReturn
        comDriver.deallocate -> bufferManager.bufferSendIn
        comDriver.ready -> comStub.drvConnected
        comStub.comStatus -> framer.comStatusIn
        framer.comStatusOut -> comQueue.comStatusIn
        comStub.drvDataOut -> comDriver.$send
    }
    

    After (topology.fpp)

    enum Ports_ComPacketQueue {
        EVENTS,
        TELEMETRY
    }
    
    enum Ports_ComBufferQueue {
        FILE_DOWNLINK
    }
    
    connections Uplink {
          # ComDriver buffer allocations
          comDriver.allocate      -> bufferManager.bufferGetCallee
          comDriver.deallocate    -> bufferManager.bufferSendIn
          # ComDriver <-> ComStub
          comDriver.$recv             -> comStub.drvReceiveIn
          comStub.drvReceiveReturnOut -> comDriver.recvReturnIn
          # ComStub <-> FrameAccumulator
          comStub.dataOut                -> frameAccumulator.dataIn
          frameAccumulator.dataReturnOut -> comStub.dataReturnIn
          # FrameAccumulator buffer allocations
          frameAccumulator.bufferDeallocate -> bufferManager.bufferSendIn
          frameAccumulator.bufferAllocate   -> bufferManager.bufferGetCallee
          # FrameAccumulator <-> Deframer
          frameAccumulator.dataOut -> deframer.dataIn
          deframer.dataReturnOut   -> frameAccumulator.dataReturnIn
          # Deframer <-> Router
          deframer.dataOut           -> fprimeRouter.dataIn
          fprimeRouter.dataReturnOut -> deframer.dataReturnIn
          # Router buffer allocations
          fprimeRouter.bufferAllocate   -> bufferManager.bufferGetCallee
          fprimeRouter.bufferDeallocate -> bufferManager.bufferSendIn
          # Router <-> CmdDispatcher/FileUplink
          fprimeRouter.commandOut  -> cmdDisp.seqCmdBuff
          cmdDisp.seqCmdStatus     -> fprimeRouter.cmdResponseIn
          fprimeRouter.fileOut     -> fileUplink.bufferSendIn
          fileUplink.bufferSendOut -> fprimeRouter.fileBufferReturnIn
    }
    
    connections Downlink {
        # Inputs to ComQueue (events, telemetry, file)
        eventLogger.PktSend        -> comQueue.comPacketQueueIn[Ports_ComPacketQueue.EVENTS]
        tlmSend.PktSend            -> comQueue.comPacketQueueIn[Ports_ComPacketQueue.TELEMETRY]
        fileDownlink.bufferSendOut -> comQueue.bufferQueueIn[Ports_ComBufferQueue.FILE_DOWNLINK]
        comQueue.bufferReturnOut[Ports_ComBufferQueue.FILE_DOWNLINK] -> fileDownlink.bufferReturn
        # ComQueue <-> Framer
        comQueue.dataOut           -> fprimeFramer.dataIn
        fprimeFramer.dataReturnOut -> comQueue.dataReturnIn
        # Buffer Management for Framer
        fprimeFramer.bufferAllocate   -> commsBufferManager.bufferGetCallee
        fprimeFramer.bufferDeallocate -> commsBufferManager.bufferSendIn
        # Framer <-> ComStub
        fprimeFramer.dataOut  -> comStub.dataIn
        comStub.dataReturnOut -> fprimeFramer.dataReturnIn
        # ComStub <-> ComDriver
        comStub.drvSendOut      -> comDriver.$send
        comDriver.sendReturnOut -> comStub.drvSendReturnIn
        comDriver.ready         -> comStub.drvConnected
        # ComStatus
        comStub.comStatusOut       -> fprimeFramer.comStatusIn
        fprimeFramer.comStatusOut  -> comQueue.comStatusIn
    }
    
    Click to Expand changes to a instances.fpp

    Diff (instances.fpp)

    # Note: Make sure to adjust the base IDs to fit in your deployment
    - instance framer: Svc.Framer base id 0x4100
    + instance framer: Svc.FprimeFramer base id 0x4100
    
    - instance deframer: Svc.Deframer base id 0x4900
    + instance deframer: Svc.FprimeDeframer base id 0x4900
    
    + instance frameAccumulator: Svc.FrameAccumulator base id 0x4D00
    + instance fprimeRouter: Svc.FprimeRouter base id 0x4E00
    
    Click to Expand changes to a Topology.cpp

    The following removes the old framing/deframing protocols, and introduces the new FprimeFrameDetector.

    Diff (Topology.cpp)

    - #include <Svc/FramingProtocol/FprimeProtocol.hpp>
    + #include <Svc/FrameAccumulator/FrameDetector/FprimeFrameDetector.hpp>
    
    - Svc::FprimeFraming framing;
    - Svc::FprimeDeframing deframing;
    + Svc::FrameDetectors::FprimeFrameDetector frameDetector;
    [...]
    - framer.setup(framing);
    - deframer.setup(deframing);
    + frameAccumulator.configure(frameDetector, 1, mallocator, 2048);
    

    Uplink Changes

    The old Svc.Deframer was performing 3 functionalities: (1) accumulating bytes in a circular buffer until it detects a full frame, (2) validating the frame and extracting the payload data, and (3) routing payload data to its destination.

    In the new Uplink stack, these 3 functionalities have been split into 3 distinct components: (1) Svc.FrameAccumulator, (2) Svc.FprimeDeframer, and (3) Svc.FprimeRouter. To learn more about these components, please check out their SDDs on the website!

    Each component implements an FPP Interface (in Svc/Interfaces/) so that they can be swapped with project-specific components, allowing for custom Deframing / Routing.

    Memory Management

    Memory management in the Uplink/Downlink stack has been updated so that a buffer coming out of a component on dataOut shall come back on dataReturnIn. This allows for components to allocate/deallocate memory as they see fit, and for the Topology Engineer not to have to track down memory management of each component to make sure they are wired correctly with the appropriate BufferManagers.

    Downlink Changes

    In the Downlink stack, the port connections have been modified to fit the new memory management pattern. The Framer now implements the FramerInterface.fppi to allow projects to implement custom Framing easily.

    Other Components

    FileUplink and FileDownlink now prepend the buffers (file packets) they send out with the appropriate FW_PACKET_FILE marker, as it is expected for all F´ data packets.

    ComQueue has been updated to handle buffer management according the "Data Return" pattern mentioned above.

    A Full List of What's Changed

    • Restructure user manual for holding design patterns by @thomas-bc in https://github.com/nasa/fprime/pull/3222
    • Port patterns by @LeStarch in https://github.com/nasa/fprime/pull/3132
    • NATIVE_INT_TYPE portNum to FwIndexType portNum by @LeStarch in https://github.com/nasa/fprime/pull/3236
    • Converting NATIVE_INT_TYPE in assert casts by @LeStarch in https://github.com/nasa/fprime/pull/3238
    • Fixing UT constants to use correct types by @LeStarch in https://github.com/nasa/fprime/pull/3237
    • NUM_PORTS -> FwIndexType by @LeStarch in https://github.com/nasa/fprime/pull/3239
    • Remove include of internal glibc header by @celskeggs in https://github.com/nasa/fprime/pull/3248
    • Adding manager-worker pattern documentation by @LeStarch in https://github.com/nasa/fprime/pull/3227
    • Improve BufferManager assertion context args by @celskeggs in https://github.com/nasa/fprime/pull/3223
    • Adding health checking pattern documentation by @LeStarch in https://github.com/nasa/fprime/pull/3228
    • Applying GDS Hotfix v3.6.1 by @LeStarch in https://github.com/nasa/fprime/pull/3265
    • Add type aliases to JSON dictionary spec by @jwest115 in https://github.com/nasa/fprime/pull/3254
    • Fixing fprime-tools to v3.6.1 hotsting release by @LeStarch in https://github.com/nasa/fprime/pull/3269
    • Adding fpp-to-layout now that base is fixed by @LeStarch in https://github.com/nasa/fprime/pull/3270
    • Remove ActiveLogger Priority by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3268
    • Add telemetry packets to JSON dictionary spec by @jwest115 in https://github.com/nasa/fprime/pull/3221
    • Add CI check for fprime-examples repo by @thomas-bc in https://github.com/nasa/fprime/pull/3234
    • Fix depend-a-bot vulnerabilities by @LeStarch in https://github.com/nasa/fprime/pull/3271
    • Updates calculateCrc documentation for file pointer. Fixes #3259 by @LeStarch in https://github.com/nasa/fprime/pull/3279
    • Add NOT_SUPPORTED to OS' statues by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3281
    • Update fprime-examples CI to use nasa repo by @thomas-bc in https://github.com/nasa/fprime/pull/3284
    • Add new Fw.Ready port for coordinating startup by @celskeggs in https://github.com/nasa/fprime/pull/3261
    • Add F Prime terminology translation guide by @matt392code in https://github.com/nasa/fprime/pull/3260
    • Improve error checking in mutex stub by @celskeggs in https://github.com/nasa/fprime/pull/3167
    • Draft of ROSES pattern form by @LeStarch in https://github.com/nasa/fprime/pull/3291
    • Add final to component implementation classes by @jwest115 in https://github.com/nasa/fprime/pull/3292
    • Rename PATTERN-SUGGESTION.yml to pattern_request.yml by @LeStarch in https://github.com/nasa/fprime/pull/3294
    • Fixing template for pattern request by @LeStarch in https://github.com/nasa/fprime/pull/3295
    • Roses/clarity by @LeStarch in https://github.com/nasa/fprime/pull/3296
    • Roses/clarity by @LeStarch in https://github.com/nasa/fprime/pull/3297
    • Removes NATIVE_INT_TYPE, NATIVE_UINT_TYPE, and POINTER_CAST from Fw by @LeStarch in https://github.com/nasa/fprime/pull/3286
    • Bump jinja2 from 3.1.5 to 3.1.6 by @dependabot in https://github.com/nasa/fprime/pull/3342
    • Improve warning flags in builds by @bocchino in https://github.com/nasa/fprime/pull/3319
    • Split Deframer into FrameAccumulator Deframer and Router by @thomas-bc in https://github.com/nasa/fprime/pull/3250
    • Adding format specifier aliases for primitives. Updating documentation. (#3199) by @vincewoo in https://github.com/nasa/fprime/pull/3375
    • Adding warning about the use of PlatformPointerCast. Fixes: #251 by @LeStarch in https://github.com/nasa/fprime/pull/3381
    • Assert numerical type invariants. Fixes: #3207 by @LeStarch in https://github.com/nasa/fprime/pull/3382
    • Fixes #3204 by removing NATIVE_ and POINTER_CAST from Drv by @LeStarch in https://github.com/nasa/fprime/pull/3380
    • Removing NATIVE_ and POINTER_CAST from FppTest, Utils, cmake, config,… by @LeStarch in https://github.com/nasa/fprime/pull/3378
    • Remove NATIVE_INT_TYPE, NATIVE_UINT_TYPE, and POINTER_CAST from Svc by @LeStarch in https://github.com/nasa/fprime/pull/3374
    • Fix UT_MOD_DEPS usage in Fw by @thomas-bc in https://github.com/nasa/fprime/pull/3392
    • Clarify dependency for FW_ENABLE_TEXT_LOGGING by @celskeggs in https://github.com/nasa/fprime/pull/3391
    • FPP v3.0.0a3 by @bocchino in https://github.com/nasa/fprime/pull/3393
    • Add apt-get update call to all workflows using apt-get by @thomas-bc in https://github.com/nasa/fprime/pull/3415
    • Ref Application README.md update by @tylerrussin in https://github.com/nasa/fprime/pull/3423
    • Testing with configured fixed-size types by @LeStarch in https://github.com/nasa/fprime/pull/3409
    • Fixing compilation error for FW_RELATIVE_PATH_ASSERT and FW_FILE_ID_ASSERT assert levels when ASSERT_RELATIVE_PATH or FW_FILE_ID are not defined. by @vincewoo in https://github.com/nasa/fprime/pull/3418
    • Issue 3285 reducing signed size type in os file by @LeStarch in https://github.com/nasa/fprime/pull/3402
    • Fix warnings in FppTest build by @bocchino in https://github.com/nasa/fprime/pull/3434
    • Add workflow for running fpp-to-json on Ref by @jwest115 in https://github.com/nasa/fprime/pull/3430
    • Return cmd repsonse for LOG_STATUS in SeqDispatcher by @zimri-leisher in https://github.com/nasa/fprime/pull/3438
    • Update Ref to use FPP telemetry packets by @bocchino in https://github.com/nasa/fprime/pull/3440
    • Refactored type organization by @LeStarch in https://github.com/nasa/fprime/pull/3422
    • File typo by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3464
    • Fix uart baudrates by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3469
    • Add System Reference to CI by @jwest115 in https://github.com/nasa/fprime/pull/3466
    • Deprecate Fw::Buffer::getSerializeRepr in favor of 'getSerializer' and 'getDeserializer' by @vincewoo in https://github.com/nasa/fprime/pull/3431
    • Add FW_PACKET_FILE descriptor to FileDownlink and FileUplink logic by @thomas-bc in https://github.com/nasa/fprime/pull/3488
    • Fix FileDownlink conversion warning by @thomas-bc in https://github.com/nasa/fprime/pull/3493
    • Add OsTime component by @kubiak-jpl in https://github.com/nasa/fprime/pull/3355
    • Config blank slate by @LeStarch in https://github.com/nasa/fprime/pull/3487
    • Fix installation of ALIAS targets in CMake by @thomas-bc in https://github.com/nasa/fprime/pull/3514
    • FpySequencer 0.1 by @zimri-leisher in https://github.com/nasa/fprime/pull/3334
    • FppTest: Type Alias by @Kronos3 in https://github.com/nasa/fprime/pull/3470
    • Auto-generate nav with mkdocs-awesome-nav by @ashleynilo in https://github.com/nasa/fprime/pull/3460
    • Fixing timing issue in TcpServer UTs by @vincewoo in https://github.com/nasa/fprime/pull/3528
    • Revise array allocation in Frame Accumulator by @bocchino in https://github.com/nasa/fprime/pull/3525
    • Add Framer FPP interface, implement FprimeFramer and adapt ComQueue by @thomas-bc in https://github.com/nasa/fprime/pull/3486
    • Add upper-bound limit to for loop in Os::FileSystem by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3535
    • Fix hashes.txt generation by getting build_root by @thomas-bc in https://github.com/nasa/fprime/pull/3523
    • Fix sign-compare warning in Os::Posix::File, Svc::ComQueue, and Svc::… by @AlesKus in https://github.com/nasa/fprime/pull/3515
    • Add initial list of supported and future supported platforms by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3348
    • Add docs for driver interfaces by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3542
    • Remove old help-text from GDS guide by @thomas-bc in https://github.com/nasa/fprime/pull/3541
    • Add ByteStreamDriverInterface docs section by @thomas-bc in https://github.com/nasa/fprime/pull/3549
    • Fix ComStub UTs type warnings by @thomas-bc in https://github.com/nasa/fprime/pull/3550
    • Added nav for tutorials back to mkdocs.yml by @ashleynilo in https://github.com/nasa/fprime/pull/3556
    • Update docs link to match line numbers by @thomas-bc in https://github.com/nasa/fprime/pull/3560
    • Use data return pattern on Uplink and standardize port names by @thomas-bc in https://github.com/nasa/fprime/pull/3546
    • Add How To guide for integrating third-party libraries by @thomas-bc in https://github.com/nasa/fprime/pull/3489
    • Fix project-builder by checking out submodules by @thomas-bc in https://github.com/nasa/fprime/pull/3570
    • Clarify allocation failure error by @celskeggs in https://github.com/nasa/fprime/pull/3566
    • Clean up User Manual index docs by @ashleynilo in https://github.com/nasa/fprime/pull/3573
    • Improve GDS plugin documentation by @LeStarch in https://github.com/nasa/fprime/pull/3551
    • Clarify invocation of seqCmdStatus port in CmdDispatcher by @AlesKus in https://github.com/nasa/fprime/pull/3557
    • Improve one possible error on Svc.TlmChan bucket exhaustion by @celskeggs in https://github.com/nasa/fprime/pull/3567
    • Removing CMake from installation guide. Fixes #3501 by @LeStarch in https://github.com/nasa/fprime/pull/3574
    • Add file status by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3569
    • Resolve Source Paths in CMake by @LeStarch in https://github.com/nasa/fprime/pull/3576
    • Prefixing variables to prevent shadowing. Fixes: #3370 by @LeStarch in https://github.com/nasa/fprime/pull/3585
    • Fix cookiecutter test workflow by @thomas-bc in https://github.com/nasa/fprime/pull/3583
    • Add Several CMake Tests to Prove Previous Fixes by @LeStarch in https://github.com/nasa/fprime/pull/3579
    • Allow new configuration for F Prime by @LeStarch in https://github.com/nasa/fprime/pull/3563
    • Fix ISR handler invocation in Drv::BlockDriver by @AlesKus in https://github.com/nasa/fprime/pull/3586
    • Fix version check error message by @celskeggs in https://github.com/nasa/fprime/pull/3596
    • Update FPP version by @bocchino in https://github.com/nasa/fprime/pull/3595
    • Fix memory leak in ComStub when reads fail by @celskeggs in https://github.com/nasa/fprime/pull/3600
    • Removing regneration from AC files that are themselves regenerated by @LeStarch in https://github.com/nasa/fprime/pull/3602
    • Remove unused property by @LeStarch in https://github.com/nasa/fprime/pull/3606
    • FpySequencer 0.2 by @zimri-leisher in https://github.com/nasa/fprime/pull/3552
    • Add GOVERNANCE Document by @LeStarch in https://github.com/nasa/fprime/pull/3609
    • Add command to OsTime to set the current time by @celskeggs in https://github.com/nasa/fprime/pull/3607
    • Making configuration files trigger configure by @LeStarch in https://github.com/nasa/fprime/pull/3620
    • Extern params by @Brian-Campuzano in https://github.com/nasa/fprime/pull/3608
    • Update Os File UTs by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3619
    • Update requirements.txt for release v4.0.0a1 by @thomas-bc in https://github.com/nasa/fprime/pull/3623

    New Contributors

    • @dependabot made their first contribution in https://github.com/nasa/fprime/pull/3342
    • @vincewoo made their first contribution in https://github.com/nasa/fprime/pull/3375
    • @tylerrussin made their first contribution in https://github.com/nasa/fprime/pull/3423
    • @Brian-Campuzano made their first contribution in https://github.com/nasa/fprime/pull/3608

    Full Changelog: https://github.com/nasa/fprime/compare/v3.6.3...v4.0.0a1

    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v3.6.3 5a3b873854

    v3.6.3 Stable

    giteasync released this 2025-05-11 11:50:08 -05:00 | 405 commits to devel since this release

    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 https://github.com/nasa/fprime/pull/3582
    • CI Test of v2.3.1a1 by @LeStarch in https://github.com/nasa/fprime/pull/3581
    • Bumping FPP to v2.3.1 by @LeStarch in https://github.com/nasa/fprime/pull/3572

    Full Changelog: https://github.com/nasa/fprime/compare/v3.6.2...v3.6.3

    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v3.6.2 78b109e7b6

    v3.6.2 - Hotfix 2 Stable

    giteasync released this 2025-02-26 18:00:05 -06:00 | 408 commits to devel since this release

    This is a follow-up hot-fix release to support fprime-vxworks (v0.2.0). It includes the following bug fixes:

    1. Removes priority from ActiveLogger to prevent health failure when alive and processing many events
    2. Added NOT_SUPPORTED to OSAL statuses.

    Full Changelog: https://github.com/nasa/fprime/compare/v3.6.1...v3.6.2

    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v3.6.1 947c2b3891

    Release v3.6.1 Stable

    giteasync released this 2025-02-25 19:43:10 -06:00 | 410 commits to devel since this release

    This is a fix release for v3.6.0, which fixes the following issues:

    1. fprime-gds failing to handle false tokens in JSON
    2. fpp-to-layout not included in requirements.txt
    3. Python dependency security updates
    4. Website content rearranging

    Full Changelog: https://github.com/nasa/fprime/compare/v3.6.0...v3.6.1

    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v3.6.0 a2a0f39e99

    Release v3.6.0 Stable

    giteasync released this 2025-02-12 17:32:54 -06:00 | 416 commits to devel since this release

    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 the wait() 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 implement pend() instead of wait(), returning a ConditionVariable::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 https://github.com/nasa/fprime/pull/3051
    • Pull in fprime-gds ordering fix by @LeStarch in https://github.com/nasa/fprime/pull/3087
    • Do not ASSERT when notifying StubConditionVariable by @celskeggs in https://github.com/nasa/fprime/pull/3088
    • Fix LinuxGpioDriver build w/ disabled object names by @celskeggs in https://github.com/nasa/fprime/pull/3103
    • Update README.md by @matt392code in https://github.com/nasa/fprime/pull/3097
    • FPP v2.3.0a1 by @bocchino in https://github.com/nasa/fprime/pull/3066
    • Remove local_time from ActiveTextLogger. Fixes: #2815 by @AlesKus in https://github.com/nasa/fprime/pull/3104
    • Fixing missing python packages. Fixes: #3101, #3102 by @LeStarch in https://github.com/nasa/fprime/pull/3110
    • Adding in a ROSES issue template by @LeStarch in https://github.com/nasa/fprime/pull/3122
    • Add os supplied cmake wrapper by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3117
    • Switch bootstrap tests to project lib structure by @thomas-bc in https://github.com/nasa/fprime/pull/3130
    • Fixing conflation between user guide and reference by @LeStarch in https://github.com/nasa/fprime/pull/3133
    • LinuxGpioDriver: fix static_assert's for FwSizeType. Possible fix for #3030 by @AlesKus in https://github.com/nasa/fprime/pull/3118
    • Add SDD aggregation into the core website by @thomas-bc in https://github.com/nasa/fprime/pull/3139
    • Fix format string specifiers for queue and task names by @celskeggs in https://github.com/nasa/fprime/pull/3146
    • Fix Os/Posix/Task.cpp compilation with musl by @celskeggs in https://github.com/nasa/fprime/pull/3145
    • Integrating SBOM generation into CMake by @LeStarch in https://github.com/nasa/fprime/pull/3138
    • Update docs structure for website versioning improvements by @thomas-bc in https://github.com/nasa/fprime/pull/3150
    • Fix typo in markdown warning in SBOM docs by @thomas-bc in https://github.com/nasa/fprime/pull/3152
    • Fix outdated links and cross-reference docs locally by @thomas-bc in https://github.com/nasa/fprime/pull/3153
    • Removing DEBUG_PRINT like statements. Part of: #1708 by @LeStarch in https://github.com/nasa/fprime/pull/3140
    • Update mutex and condition-variable interface by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3158
    • Removing printf family from Ref, Drv, RPI, OS, Utils by @LeStarch in https://github.com/nasa/fprime/pull/3141
    • UDP does not bind on send only port. Fixes: #3127 by @LeStarch in https://github.com/nasa/fprime/pull/3143
    • [Docs] Correct small typos by @SiboVG in https://github.com/nasa/fprime/pull/3165
    • Stop ignoring real buffers shrunk to 0 size by @celskeggs in https://github.com/nasa/fprime/pull/3157
    • Removing printf from Svc. Partially Fixed #1708 by @LeStarch in https://github.com/nasa/fprime/pull/3170
    • fixed #3089. change timeout value to 3 by @chuynh4duarte in https://github.com/nasa/fprime/pull/3171
    • Adding additional SCALAR types testing by @LeStarch in https://github.com/nasa/fprime/pull/3189
    • Fix memory sanitizer to be on by default by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3183
    • FPP v2.3.0 by @bocchino in https://github.com/nasa/fprime/pull/3181
    • Work/dp catalog review updates by @timcanham in https://github.com/nasa/fprime/pull/3191
    • Fixes #1708 by Completing the work In Fw by @LeStarch in https://github.com/nasa/fprime/pull/3173
    • Use mkdocs search boosting instructions for website pages by @thomas-bc in https://github.com/nasa/fprime/pull/3212
    • Bump Tools and GDS to v3.6.0 by @LeStarch in https://github.com/nasa/fprime/pull/3215
    • Remove Doxygen instructions from markdown by @thomas-bc in https://github.com/nasa/fprime/pull/3218
    • PriorityQueue Send mark as unsafe for ISR by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3216

    New Contributors

    • @matt392code made their first contribution in https://github.com/nasa/fprime/pull/3097
    • @AlesKus made their first contribution in https://github.com/nasa/fprime/pull/3104
    • @chuynh4duarte made their first contribution in https://github.com/nasa/fprime/pull/3171

    Full Changelog: https://github.com/nasa/fprime/compare/v3.5.1...v3.6.0

    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v3.5.1 9f6b4a325c

    Release v3.5.1 Stable

    giteasync released this 2024-12-11 17:28:05 -06:00 | 453 commits to devel since this release

    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 https://github.com/nasa/fprime/pull/2957
    • Farewell, pirate logo! by @thomas-bc in https://github.com/nasa/fprime/pull/2958
    • Remove prescan by @LeStarch in https://github.com/nasa/fprime/pull/2956
    • Fix the bad dependency by @LeStarch in https://github.com/nasa/fprime/pull/2961
    • Fix arm tut by @kevin-f-ortega in https://github.com/nasa/fprime/pull/2962
    • Restoring HAS_F64 functionality by @LeStarch in https://github.com/nasa/fprime/pull/2967
    • Fix Two Minor Issues With New Tools (CMake 3.31RC2; Python 3.13) by @LeStarch in https://github.com/nasa/fprime/pull/2978
    • Add priority to Os::Task by @LeStarch in https://github.com/nasa/fprime/pull/2984
    • Fix Logger in baremetal FatalHandler component implementation by @ethancheez in https://github.com/nasa/fprime/pull/2986
    • Reworking prevent_prescan in subbuild context by @LeStarch in https://github.com/nasa/fprime/pull/2991
    • Place SyntheticFileSystem under BUILD_TESTING condition by @pcrosemurgy in https://github.com/nasa/fprime/pull/2993
    • Fix posix Task for cases where _SC_PAGESIZE is undefined by @LeStarch in https://github.com/nasa/fprime/pull/2995
    • Fix error printing during Ninja sub-build by @thomas-bc in https://github.com/nasa/fprime/pull/3006
    • #2074 Parameterize buffer size in UDP and TCP Server. by @bdshenker in https://github.com/nasa/fprime/pull/2998
    • Os file vxworks by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3009
    • Created I2cDriver Interface by @jsilveira1409 in https://github.com/nasa/fprime/pull/3015
    • Created ComInterface.fppi by @jsilveira1409 in https://github.com/nasa/fprime/pull/3017
    • Fix FileUplink packet sequence repeat and CRC #1378 by @DJKessler in https://github.com/nasa/fprime/pull/3007
    • Update fpp version to v2.2.1a1 by @bocchino in https://github.com/nasa/fprime/pull/3027
    • Bugfix/empty seq by @jsilveira1409 in https://github.com/nasa/fprime/pull/3025
    • moved Drv ports to a Ports directory by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3008
    • Fix comments in TcpServer. Fixes: #3029 by @LeStarch in https://github.com/nasa/fprime/pull/3031
    • Clarify buffer ownership for ByteStreamDriverModel by @celskeggs in https://github.com/nasa/fprime/pull/3040
    • Adding restrict_platform support for FPRIME_HAS_XYZ flags by @LeStarch in https://github.com/nasa/fprime/pull/3037
    • FPP v2.2.1a2 by @bocchino in https://github.com/nasa/fprime/pull/3042
    • Default sanitizers to ON when BUILD_TESTING by @LeStarch in https://github.com/nasa/fprime/pull/3045
    • Remove old RTEMS5 link from docs by @thomas-bc in https://github.com/nasa/fprime/pull/3044
    • Dup to fcntl by @kevin-f-ortega in https://github.com/nasa/fprime/pull/3047
    • Add in Svc::ChronoTime for C++11 std::chrono implementation by @LeStarch in https://github.com/nasa/fprime/pull/3049
    • Document priority queue, max heap. Fixes: #2901 by @LeStarch in https://github.com/nasa/fprime/pull/3046
    • Fix packet deployment by @timcanham in https://github.com/nasa/fprime/pull/3035
    • Add Validate Templates (#2387) by @rlcheng in https://github.com/nasa/fprime/pull/2990
    • Update FPP version to v2.2.1 by @bocchino in https://github.com/nasa/fprime/pull/3057
    • Removing autodocs runs by @LeStarch in https://github.com/nasa/fprime/pull/3059
    • Restructure docs for new website by @ashleynilo in https://github.com/nasa/fprime/pull/3036
    • Clean up getting started guide by @thomas-bc in https://github.com/nasa/fprime/pull/3061
    • Fix old XML docs to FPP and remove deprecated docs by @thomas-bc in https://github.com/nasa/fprime/pull/3062
    • Remove "system preference" website theme selection by @thomas-bc in https://github.com/nasa/fprime/pull/3065
    • Default website theme to light and minor format updates by @thomas-bc in https://github.com/nasa/fprime/pull/3067
    • Remove accidental files from LinuxTimer by @zimri-leisher in https://github.com/nasa/fprime/pull/3069
    • Casts for PosixRawTime. Fixes: #3070 by @LeStarch in https://github.com/nasa/fprime/pull/3071
    • Work/dp catalog by @timcanham in https://github.com/nasa/fprime/pull/2713
    • Fix CMake CI and update workflow triggers by @thomas-bc in https://github.com/nasa/fprime/pull/3073
    • Fix SignalGen commands in integration tests by @thomas-bc in https://github.com/nasa/fprime/pull/3075
    • Update requirements.txt for v3.5.1 release by @thomas-bc in https://github.com/nasa/fprime/pull/3077

    New Contributors

    • @jsilveira1409 made their first contribution in https://github.com/nasa/fprime/pull/3015
    • @celskeggs made their first contribution in https://github.com/nasa/fprime/pull/3040

    Full Changelog: https://github.com/nasa/fprime/compare/v3.5.0...v3.5.1

    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
  • v3.5.0 c548b53a93

    Release v3.5.0 Stable

    giteasync released this 2024-10-16 13:11:04 -05:00 | 498 commits to devel since this release

    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 https://github.com/nasa/fprime/pull/2543
    • Issue 2457 by @LeStarch in https://github.com/nasa/fprime/pull/2502
    • Address comments from #2485 by @bocchino in https://github.com/nasa/fprime/pull/2542
    • Update File.cpp by @LeStarch in https://github.com/nasa/fprime/pull/2555
    • Add shadow variable and pedantic warnings by @JohanBertrand in https://github.com/nasa/fprime/pull/2544
    • Add DpManager by @bocchino in https://github.com/nasa/fprime/pull/2546
    • Update troubleshooting by @thomas-bc in https://github.com/nasa/fprime/pull/2561
    • Fixed documentation of U32 (Swapped signed and unsigned int) by @tsha-256 in https://github.com/nasa/fprime/pull/2559
    • Resolve string_copy static analysis warnings by @thomas-bc in https://github.com/nasa/fprime/pull/2556
    • Add Fw::ObjectName to hold Fw::ObjBase name by @thomas-bc in https://github.com/nasa/fprime/pull/2497
    • Remove FPP dependencies on native int types by @bocchino in https://github.com/nasa/fprime/pull/2548
    • Force pip to upgrade during setup action by @thomas-bc in https://github.com/nasa/fprime/pull/2565
    • Explicity add test dependencies to Os_ut_exe by @LeStarch in https://github.com/nasa/fprime/pull/2569
    • Fix data product array record size by @bocchino in https://github.com/nasa/fprime/pull/2568
    • Adding GDS development guide by @LeStarch in https://github.com/nasa/fprime/pull/2577
    • Update dictionary JSON spec field names and examples by @jwest115 in https://github.com/nasa/fprime/pull/2574
    • Fix crosscompiler path in tutorial by @thomas-bc in https://github.com/nasa/fprime/pull/2599
    • Fix broken links in INSTALL.md by @thomas-bc in https://github.com/nasa/fprime/pull/2610
    • Fixes #2602; bumps required version to 3.16 by @LeStarch in https://github.com/nasa/fprime/pull/2617
    • Update Svc/PolyDb to use configurable FPP enumeration as index by @timcanham in https://github.com/nasa/fprime/pull/2587
    • Disambiguate fpp error messages. Fixes: #2618 by @LeStarch in https://github.com/nasa/fprime/pull/2620
    • Add Java requirement to install guide by @LeStarch in https://github.com/nasa/fprime/pull/2621
    • Produce error on restricted targets. Fixes: #2486 by @LeStarch in https://github.com/nasa/fprime/pull/2633
    • Fix missing fpp_depend build. Fixes: #2576 by @LeStarch in https://github.com/nasa/fprime/pull/2631
    • Removing GroundInterface component. Fixes: #2037 by @LeStarch in https://github.com/nasa/fprime/pull/2632
    • Split CMake tests and run with minimum cmake by @LeStarch in https://github.com/nasa/fprime/pull/2619
    • Add DpWriter by @bocchino in https://github.com/nasa/fprime/pull/2593
    • Fix INI newline processing. Fixes #2630 by @LeStarch in https://github.com/nasa/fprime/pull/2637
    • Correcting rate group documentation. Fixes #1719 by @LeStarch in https://github.com/nasa/fprime/pull/2638
    • Issue 1604 by @LeStarch in https://github.com/nasa/fprime/pull/2625
    • Fixing Documentation Generation fo macOS by @LeStarch in https://github.com/nasa/fprime/pull/2655
    • Adding start apps and arguments by @LeStarch in https://github.com/nasa/fprime/pull/2616
    • Initial documentation of fprime libraries by @LeStarch in https://github.com/nasa/fprime/pull/2665
    • More GDS plugin guide improvements by @LeStarch in https://github.com/nasa/fprime/pull/2670
    • Revise types in generated C++ code by @bocchino in https://github.com/nasa/fprime/pull/2668
    • Add CODE_OF_CONDUCT.md by @LeStarch in https://github.com/nasa/fprime/pull/2629
    • Update JSON Dictionary spec by @thomas-bc in https://github.com/nasa/fprime/pull/2663
    • Format cpp and hpp files in Fw/Types by @bocchino in https://github.com/nasa/fprime/pull/2677
    • FPP v2.1.0a7 by @bocchino in https://github.com/nasa/fprime/pull/2676
    • Revising integration test api. Fixes: #1902 by @LeStarch in https://github.com/nasa/fprime/pull/2652
    • trouble-shooting-guide-2500 by @rlcheng in https://github.com/nasa/fprime/pull/2684
    • Trouble shooting guide 2500 by @rlcheng in https://github.com/nasa/fprime/pull/2698
    • Improve error display on failure by @JohanBertrand in https://github.com/nasa/fprime/pull/2696
    • feat(ci): add markdown link checker by @SauravMaheshkar in https://github.com/nasa/fprime/pull/2651
    • code clean up for POSIX. by @kevin-f-ortega in https://github.com/nasa/fprime/pull/2700
    • Add JSON dictionary generation to CMake system by @thomas-bc in https://github.com/nasa/fprime/pull/2598
    • Add Fw::ExternalString and revise string implementations by @bocchino in https://github.com/nasa/fprime/pull/2679
    • Data Product Catalog prototype by @timcanham in https://github.com/nasa/fprime/pull/2667
    • Fix string records for data products by @bocchino in https://github.com/nasa/fprime/pull/2697
    • Add log on TCP/UDP UT failure and fix UDP UT by @JohanBertrand in https://github.com/nasa/fprime/pull/2705
    • Fixed conversion warnings on framework tests by @JohanBertrand in https://github.com/nasa/fprime/pull/2606
    • Create TickDriver interface by @chownw in https://github.com/nasa/fprime/pull/2708
    • Make single-argument string constructors explicit by @bocchino in https://github.com/nasa/fprime/pull/2707
    • Fix copying of data product containers by @bocchino in https://github.com/nasa/fprime/pull/2711
    • Update of clang tidy checks by @JohanBertrand in https://github.com/nasa/fprime/pull/2710
    • Fix Typo by @inferenceus in https://github.com/nasa/fprime/pull/2716
    • Renamed Time Interface File and fixed where it's included by @CombustableLem0n in https://github.com/nasa/fprime/pull/2728
    • Add contributing tips by @JohanBertrand in https://github.com/nasa/fprime/pull/2704
    • fixed typo by @konerzajakub in https://github.com/nasa/fprime/pull/2736
    • Add -Wno-format-truncation to root project by @thomas-bc in https://github.com/nasa/fprime/pull/2719
    • Os task refactor issue 2526 by @LeStarch in https://github.com/nasa/fprime/pull/2672
    • Fixing port selection in TCP UTs by @LeStarch in https://github.com/nasa/fprime/pull/2739
    • Work/string search by @timcanham in https://github.com/nasa/fprime/pull/2720
    • Remove dead link to kitware blog by @LeStarch in https://github.com/nasa/fprime/pull/2746
    • Fix CI bash script for macOS by @JohanBertrand in https://github.com/nasa/fprime/pull/2742
    • Create Command Interface by @rmzmrnn in https://github.com/nasa/fprime/pull/2753
    • Add Events FPP interface by @menaman123 in https://github.com/nasa/fprime/pull/2749
    • refactored FW_OBJ_NAME, FW_QUEUE_NAME, and FW_TASK_NAME. by @rldettloff in https://github.com/nasa/fprime/pull/2751
    • Update FPP to v2.1.0a11 by @bocchino in https://github.com/nasa/fprime/pull/2745
    • Interface from LinuxSpiDriver by @menaman123 in https://github.com/nasa/fprime/pull/2762
    • modified: Drv/TcpClient/TcpClientComponentImpl.cpp by @menaman123 in https://github.com/nasa/fprime/pull/2759
    • Added Channel Interface for Telemetry by @menaman123 in https://github.com/nasa/fprime/pull/2757
    • Fixed copy-paste typos. Should be UDP and not TCP. by @kevin-f-ortega in https://github.com/nasa/fprime/pull/2778
    • feat: Add prepend flag to autocode register macro by @mosa11aei in https://github.com/nasa/fprime/pull/2777
    • Update upcoming events by @LeStarch in https://github.com/nasa/fprime/pull/2767
    • Add hyperlinks to Upcoming Events by @thomas-bc in https://github.com/nasa/fprime/pull/2787
    • Change TCPServer backlog to 1 by @Lex-ari in https://github.com/nasa/fprime/pull/2785
    • Add capability for removing sources after an autocoder by @mosa11aei in https://github.com/nasa/fprime/pull/2786
    • Diatixis Method Reorginization for Documentation by @GavinKnudsen in https://github.com/nasa/fprime/pull/2717
    • Add SmallSat Tutorial to upcoming events by @thomas-bc in https://github.com/nasa/fprime/pull/2789
    • Ignore all HTTP links in Markdown link check by @thomas-bc in https://github.com/nasa/fprime/pull/2793
    • Rename EventsInterface to EventInterface by @thomas-bc in https://github.com/nasa/fprime/pull/2792
    • FPP v2.1.0a12 by @bocchino in https://github.com/nasa/fprime/pull/2795
    • Match markdown of Channels with that of Events by @SiboVG in https://github.com/nasa/fprime/pull/2804
    • Add Svc.Version component by @Shivaly-Reddy in https://github.com/nasa/fprime/pull/2747
    • Add Hub-Pattern Documentation by @Lex-ari in https://github.com/nasa/fprime/pull/2791
    • Revise file name string sizes in AssertFatalAdapter events by @bocchino in https://github.com/nasa/fprime/pull/2796
    • Make _fprime_packages a folder where all libraries can live by @mosa11aei in https://github.com/nasa/fprime/pull/2812
    • Add phase config code to Ref. #2820 by @LeStarch in https://github.com/nasa/fprime/pull/2821
    • Delete RPI legacy Topology.cpp and Components.hpp by @LeStarch in https://github.com/nasa/fprime/pull/2822
    • docs: Add AC pre-processor pattern to docs by @mosa11aei in https://github.com/nasa/fprime/pull/2808
    • docs: Add documentation for F' subtopologies by @mosa11aei in https://github.com/nasa/fprime/pull/2743
    • Refactor OS::Mutex in CMake selection by @thomas-bc in https://github.com/nasa/fprime/pull/2790
    • FPP v2.1.0 by @bocchino in https://github.com/nasa/fprime/pull/2811
    • Implements #2723: Adds Os::Console to replace Os::Log by @LeStarch in https://github.com/nasa/fprime/pull/2831
    • Fix double-promotion in fprime codebase by @JohanBertrand in https://github.com/nasa/fprime/pull/2818
    • Updated troubleshooting md by @mprather in https://github.com/nasa/fprime/pull/2843
    • Update CI to use Json dictionaries by @Lex-ari in https://github.com/nasa/fprime/pull/2806
    • Adding fflush call to posix console by @LeStarch in https://github.com/nasa/fprime/pull/2857
    • Fix Random UT Failure: PosixFile (#2835) by @rlcheng in https://github.com/nasa/fprime/pull/2860
    • Update Ref and RPI for compatibility with FPP #349 (fully qualified component instance names) by @jwest115 in https://github.com/nasa/fprime/pull/2823
    • Add sequence dispatcher component by @zimri-leisher in https://github.com/nasa/fprime/pull/2731
    • Remove versions from SystemResources and updates to Version component by @Shivaly-Reddy in https://github.com/nasa/fprime/pull/2866
    • Improvement of Doxycomments in the CCSDS FDP checksum class by @JackNWhite in https://github.com/nasa/fprime/pull/2855
    • Fix ComQueue Does Not Deallocate Buffers on Overflow by @DJKessler in https://github.com/nasa/fprime/pull/2853
    • Fix random UT failures on PosixFile by @rlcheng in https://github.com/nasa/fprime/pull/2862
    • Phase 1 state machines by @garthwatney in https://github.com/nasa/fprime/pull/2829
    • Adding FppTest for overflow: drop, assert, hook by @LeStarch in https://github.com/nasa/fprime/pull/2842
    • Fix paths in Cross Compiling Tutorial by @kevin-f-ortega in https://github.com/nasa/fprime/pull/2885
    • Upgrade GitHub Actions ahead of NodeJS deprecation by @thomas-bc in https://github.com/nasa/fprime/pull/2890
    • Removing component init() functions where unneeded by @LeStarch in https://github.com/nasa/fprime/pull/2893
    • Fixing string_utils types to FwSizeType by @LeStarch in https://github.com/nasa/fprime/pull/2884
    • Add Open Port Request on Sending Side of IpSocket by @csmith608 in https://github.com/nasa/fprime/pull/2683
    • Fix Os::Console singleton to be heapless by @LeStarch in https://github.com/nasa/fprime/pull/2896
    • Refactor Os::FileSystem and Os::Directory by @thomas-bc in https://github.com/nasa/fprime/pull/2871
    • Refactor Os::Queue into CMake selection by @LeStarch in https://github.com/nasa/fprime/pull/2895
    • FP-2784: define trace id type by @Shivaly-Reddy in https://github.com/nasa/fprime/pull/2917
    • Fix warnings in tcp/udp UT by @JohanBertrand in https://github.com/nasa/fprime/pull/2744
    • Set assert size constant by @DJKessler in https://github.com/nasa/fprime/pull/2921
    • Issue #2727: Refactor System Resources OSAL Implmentation by @LeStarch in https://github.com/nasa/fprime/pull/2922
    • Update FPP version to v2.2.0 by @bocchino in https://github.com/nasa/fprime/pull/2932
    • OSAL clean-up by @LeStarch in https://github.com/nasa/fprime/pull/2933
    • Make CI fast again! by @LeStarch in https://github.com/nasa/fprime/pull/2937
    • Fixed F' C header files to be C++ compliant. by @bdshenker in https://github.com/nasa/fprime/pull/2936
    • Random UT Failure: PosixFile by @rlcheng in https://github.com/nasa/fprime/pull/2939
    • Fix issues with DpContainer and ExternalSerializeBuffer by @bocchino in https://github.com/nasa/fprime/pull/2941
    • Add Os::RawTime OSAL implementation, refactor Os::IntervalTimer by @thomas-bc in https://github.com/nasa/fprime/pull/2923
    • Improved Linux GPIO Driver Using Chardev by @LeStarch in https://github.com/nasa/fprime/pull/2943
    • Add OSAL singleton initialization to Os::init() by @thomas-bc in https://github.com/nasa/fprime/pull/2947
    • Add Os::Queue FPP models by @thomas-bc in https://github.com/nasa/fprime/pull/2948
    • Bump Tools and GDS requirements to v3.5.0a1 by @thomas-bc in https://github.com/nasa/fprime/pull/2949
    • Fix Jekyll docs build error from curly braces interpretation by @thomas-bc in https://github.com/nasa/fprime/pull/2951
    • Update requirements.txt for release v3.5.0 by @thomas-bc in https://github.com/nasa/fprime/pull/2952
    • Correcting shutdown/close usage; refactoring TcpServer by @LeStarch in https://github.com/nasa/fprime/pull/2950
    • Making Os::Task::delay use the singleton pattern by @LeStarch in https://github.com/nasa/fprime/pull/2954

    New Contributors

    • @tsha-256 made their first contribution in https://github.com/nasa/fprime/pull/2559
    • @rlcheng made their first contribution in https://github.com/nasa/fprime/pull/2684
    • @SauravMaheshkar made their first contribution in https://github.com/nasa/fprime/pull/2651
    • @chownw made their first contribution in https://github.com/nasa/fprime/pull/2708
    • @inferenceus made their first contribution in https://github.com/nasa/fprime/pull/2716
    • @CombustableLem0n made their first contribution in https://github.com/nasa/fprime/pull/2728
    • @konerzajakub made their first contribution in https://github.com/nasa/fprime/pull/2736
    • @rmzmrnn made their first contribution in https://github.com/nasa/fprime/pull/2753
    • @menaman123 made their first contribution in https://github.com/nasa/fprime/pull/2749
    • @rldettloff made their first contribution in https://github.com/nasa/fprime/pull/2751
    • @mosa11aei made their first contribution in https://github.com/nasa/fprime/pull/2777
    • @Lex-ari made their first contribution in https://github.com/nasa/fprime/pull/2785
    • @GavinKnudsen made their first contribution in https://github.com/nasa/fprime/pull/2717
    • @SiboVG made their first contribution in https://github.com/nasa/fprime/pull/2804
    • @Shivaly-Reddy made their first contribution in https://github.com/nasa/fprime/pull/2747
    • @mprather made their first contribution in https://github.com/nasa/fprime/pull/2843
    • @zimri-leisher made their first contribution in https://github.com/nasa/fprime/pull/2731
    • @DJKessler made their first contribution in https://github.com/nasa/fprime/pull/2853
    • @garthwatney made their first contribution in https://github.com/nasa/fprime/pull/2829
    • @bdshenker made their first contribution in https://github.com/nasa/fprime/pull/2936

    Full Changelog: https://github.com/nasa/fprime/compare/v3.4.3...v3.5.0

    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
First Previous 1 2 3 4 Next Last
Powered by Gitea Version: 1.23.7 Page: 1057ms Template: 4ms
English
Bahasa Indonesia Deutsch English Español Français Gaeilge Italiano Latviešu Magyar nyelv Nederlands Polski Português de Portugal Português do Brasil Suomi Svenska Türkçe Čeština Ελληνικά Български Русский Українська فارسی മലയാളം 日本語 简体中文 繁體中文(台灣) 繁體中文(香港) 한국어
Licenses API