F' - A flight software and embedded systems framework

Overview

F´: A Flight-Proven, Multi-Platform, Open-Source Flight Software Framework

Language grade: C++ Language grade: Python Language grade: JavaScript

F´ (F Prime) is a component-driven framework that enables rapid development and deployment of spaceflight and other embedded software applications. Originally developed at the Jet Propulsion Laboratory, F´ has been successfully deployed on several space applications. It is tailored but not limited to small-scale spaceflight systems such as CubeSats, SmallSats, and instruments.

F´ comprises several elements:

  • An architecture that decomposes flight software into discrete components with well-defined interfaces
  • A C++ framework that provides core capabilities such as message queues and threads
  • Modeling tools for specifying components and connections and automatically generating code
  • A growing collection of ready-to-use components
  • Testing tools for testing flight software at the unit and integration levels.

Quick Installation Guide

The following utilities are prerequisites to installing F´:

  • cmake
  • git
  • Python 3.5+ with pip

Once these utilities are installed, you can install F´ Python dependencies. Installing dependencies in a Python virtual environment prevents issues at the system level, but installing in a virtual environment is not required.

To install F´ quickly, enter:

git clone https://github.com/nasa/fprime.git
cd fprime
pip install --upgrade wheel setuptools pip
pip install Fw/Python Gds/

For full installation instructions, including virtual environment creation and installation verification, see INSTALL.md.

Example Deployments

F´ comes with two example deployments. The deployments represent working F´ applications to help you understand F´. You can use these examples for reference, or clone them to start a new project.

The next section links to more step-by-step tutorials, but it's a good idea to build and run at least the first example deployment to ensure that F´ is installed correctly.

Example one: Ref

The standard reference application demonstrates how most of the system components should be wired together. The reference application can build on Linux or Mac OSX, allowing you to get started immediately without the need for embedded hardware.

Example two: RPI

This Raspberry PI application shows how to run F´ in an embedded context by running on the Raspberry PI (a $35 embedded Linux computer). This application shows you how to get started on embedded projects with cross-compiling, drivers, and more. The Raspberry Pi was chosen because it is commercially available for a low price and runs Linux.

Tutorials

F´ provides several tutorials in order to help understand and develop within the framework. These tutorials cover basic component creation, system and topology design, tooling, and more. These tutorials are available at docs/Tutorials/README.md.

Getting Help with F´

As F´ becomes a community centered product line, there are more items available from the community at large.

You can join the mailing list at https://groups.google.com/d/forum/fprime-community.

The F´ community GitHub Organization contains third party contributions, more documentation of flight software development, and more! https://github.com/fprime-community.

You can open issues with this repository at: https://github.com/nasa/fprime/issues

F´ Features

F´ has the following key features that enable robust embedded system design.

Reusability

F´'s component-based architecture enables a high degree of modularity and software reuse.

Rapid Deployment

F´ provides a complete development ecosystem, including modeling tools, testing tools, and a ground data system. Developers use the modeling tools to write high-level specifications, automatically generate implementations in C++, and fill in the implementations with domain-specific code. The framework and the code generators provide all the boilerplate code required in an F´ deployment, including code for thread management, code for communication between components, and code for handling commands, telemetry, and parameters. The testing tools and the ground data system simplify software testing, both on workstations and on flight hardware in the lab.

Portability

F´ runs on a wide range of processors, from microcontrollers to multicore computers, and on several operating systems. Porting F´ to new operating systems is straightforward.

High Performance

F´ utilizes a point-to-point architecture. The architecture minimizes the use of computational resources and is well suited for smaller processors.

Adaptability

F´ is tailored to the level of complexity required for small missions. This makes F´ accessible and easy to use while still supporting a wide variety of missions.

Analyzability

The typed port connections provide strong compile-time guarantees of correctness.

F´ Release Notes

Release 1.0:

  • This is the initial release of the software to open source. See the license file for terms of use.

Release 1.01

  • Updated contributor list. No code changes.

Release 1.1

  • Created a Raspberry Pi demo. Read about it here
  • Added a tutorial here
  • Updated Svc/BufferManager with bug fix
  • Fixed a bunch of shell permissions

Release 1.2

  • Better MagicDraw Plugin
  • Prototype CMake build system. See: CMake Documentation
  • Mars Helicopter Project fixes migrated in
  • Python 3 support added
  • Gse refactored and renamed to Gds
  • Wx frontend to Gds
  • UdpSender and UdpReceiver components added
  • Purged inaccurate ITAR and Copyright notices
  • Misc. bug fixes

Release 1.3

  • New prototype HTML GUI
  • Python packages Fw/Python and Gds
  • Refined CMake and fprime-util helper script
  • Better ground interface component
  • Integration test API
  • Baremetal components

Release 1.4

  • Ref app no longer hangs on Linux exit
  • GDS improvements:
    • File Uplink and Downlink implemented
    • GDS supports multiple active windows
    • Usability improvements for EVRs and commands
  • CMake improvements:
    • Baremetal compilation supported
    • Random rebuilding fixed
    • Missing Cheetah templates properly rebuild
    • Separate projects supported without additional tweaks
  • Updated MemAllocator to have:
    • "recoverable" flag to indicate if memory was recoverable across boots
    • size variable is now modifiable by allocator to indicate actual size
    • This will break existing code that uses MemAllocator
  • Updated CmdSequencer
    • Uses new MemAllocator interface

Release 1.5

  • Documentation improvements
  • F´ Project restructuring
  • Refactored fprim-util
    • Replaced redundant targets with flags e.g. build-ut is now build --ut
    • Added info command
    • Bug and usability fixes
  • GDS Improvements
    • Prototype GDS CLI tool
    • Project custom dashboard support
  • Array, Enum type support and examples
  • Code linting and bug fixes
Issues
  • Errors Issue

    Errors Issue

    I am working on the testing section of my CLEMOps component, and I get this error when I try to run make ut. I haven't started working on the tests themselves, but I think I have everything setup, including the blank testing functions. https://github.com/brhs17/fprime/tree/MOpAgg makeUTCLEMOps

    opened by brhs17 37
  • make impl Command Not Recognized

    make impl Command Not Recognized

    My name is Benjamin and I am a new member on Cornell Cislunar Explorers. I have been working thorough the math component tutorial, and at step 2.4.1 I cannot get the make impl command to create any stubs.

    I run the command in the Ref/MathSender directory, and get the result:

    make: *** No rule to make target 'impl'. Stop.

    I built the component without any problems, and have failed to find anything like misnamed files.

    opened by brhs17 33
  • RPI Demo ./runBoth.sh

    RPI Demo ./runBoth.sh

    I am having an issue running the runBoth.sh file after compiling the RPI demo.

    I have made the RPI demo successfully, and am now trying to run the script runBoth.sh in the RPI directory. However, this is giving me the following error:

    ./scripts/run_pi.sh: 31: ./scripts/run_pi.sh: Syntax error: end of file unexpected (expected "fi")

    And then the program just hangs and does not terminate. I looked at the run_pi.sh file and could not find the problem. Any ideas what I should do to fix the script or if I may have installed something incorrectly setting up?

    opened by aaronbuchwald 32
  • lestarch: installing dependencies where necessary, checking for other…

    lestarch: installing dependencies where necessary, checking for other…

    … dependencies

    | | | |:---|:---| |Originating Project/Creator| | |Affected Component| | |Affected Architectures(s)| | |Related Issue(s)| | |Has Unit Tests (y/n)| | |Builds Without Errors (y/n)| | |Unit Tests Pass (y/n)| | |Documentation Included (y/n)| |


    Change Description

    Installs:

    1. SBT, when needing to build fpp

    Checks for (existing installation:

    1. fprime-util (for autocoder dependencies)
    2. python3
    3. java
    opened by LeStarch 27
  • lestarch: integrate FPP and CMake

    lestarch: integrate FPP and CMake

    | | | |:---|:---| |Originating Project/Creator| | |Affected Component| | |Affected Architectures(s)| | |Related Issue(s)| | |Has Unit Tests (y/n)| | |Builds Without Errors (y/n)| | |Unit Tests Pass (y/n)| | |Documentation Included (y/n)| |


    Change Description

    Initial CMake + FPP refactor. CMake cleanup. Autocoder subsystem drafted.

    Rationale

    FPP for the win.

    Testing/Review Recommendations

    Only the build works, other functions will come soon!

    Future Work

    impl testimpl dict ... ...

    opened by LeStarch 19
  • Import/tlm packetizer

    Import/tlm packetizer

    | | | |:---|:---| |Originating Project/Creator| @timcanham | |Affected Component| Svc/TlmPacketizer | |Affected Architectures(s)| All | |Related Issue(s)| | |Has Unit Tests (y/n)| y | |Builds Without Errors (y/n)| y | |Unit Tests Pass (y/n)| y | |Documentation Included (y/n)| y |


    Change Description

    This PR contains the Svc/TlmPacketizer component and updates to the autocoder scripts to support generating packet C++ code. It is not the final delivery; there are some dependency issues to sort out, and the packetizer script isn't fully complete. This is meant to deliver the component and scripts to avoid diverging too much.

    Rationale

    This is a useful alternative to Svc/TlmChan if fixed packets make more sense.

    Testing/Review Recommendations

    The Ref application is tested to show it runs normally. You can exercise the SET_LEVEL command with a 0 argument and see the LevelSet evr and SendLevel channel.

    Future Work

    The dependency issues discovered during development need to be fixed, and the full end-to-end testing would need to be completed.

    opened by timcanham 17
  • fixed handling of redefined messages field types in Gds and GroundInterface

    fixed handling of redefined messages field types in Gds and GroundInterface

    | | | |:---|:---| |Originating Project/Creator|GT1/Georgia Tech | |Affected Component| Svc/GroundInterface | |Affected Architectures(s)| None | |Related Issue(s)| None | |Has Unit Tests (y/n)| N | |Builds Without Errors (y/n)| Y | |Unit Tests Pass (y/n)| Y | |Documentation Included (y/n)| Y |


    Change Description

    Edited the GroundInterface component to use the compilation flags defining the Packet Descriptor. Edited the Gds to use the configuration manager's types when encoding and decoding commands, events, telemetry, parameters, and packet headers.

    Rationale

    Fixes bug where configuring message fields in deployments causes the Gds to be unable to communicate with the deployment. The compilation flags for configuring message fields are necessary on certain platforms with limited memory to reduce memory usage.

    Testing/Review Recommendations

    A deployment should be made that edits the (compilation flag, config manager field) pairs described in the included Gds/docs/README.md file are changed. This deployment should be able to have successful exchanges of commands, events, parameters, and telemetry. There should also be builds containing individual changes to each flag to ensure that all fields are set correctly.

    Future Work

    The FwEnumStoreType flag is confirmed to break the communications with the Gds when it is changed from an I32. I do not know how to change the way this type is serialized since it is defined in the fprime/common/models/serialize/enum_type.py file which I don't believe has access to the configuration manager from the Gds.

    There may be additional fields that can be configured with compilation flags, but will still cause issues with encoding and decoding that will need to be handled correctly to avoid broken communications.

    opened by AaronMcDaniel 16
  • MagicDraw18 SP6 on Windows velocity runtime failure

    MagicDraw18 SP6 on Windows velocity runtime failure

    Hello,

    We are running the fprime magicDraw plugin on MagicDraw18 SP6 Windows. We installed the JPL plugin and got the Component Autocoder to appear on toolbar. However when pressing Auto Generate Component/Port/Topology XML we get the following error:

    screen shot 2019-02-02 at 1 12 37 pm

    All of the XML files in AutoXML are generated but empty. Have you seen this issue before? What do you suggest we do next?

    Any help is greatly appreciated. Thank you!

    opened by Shurtado2019 16
  • lestarch: refactored IPv4 drivers

    lestarch: refactored IPv4 drivers

    | | | |:---|:---| |Originating Project/Creator| Infrastructure | |Affected Component| Drv | |Affected Architectures(s)| N/A | |Related Issue(s)| | |Has Unit Tests (y/n)| y | |Builds Without Errors (y/n)| y | |Unit Tests Pass (y/n)| y | |Documentation Included (y/n)|y |


    Change Description

    Refactors SocketIpDriver into 3 specific drivers TcpClient, TcpServer, and Udp.

    Rationale

    More reusability.

    Testing/Review Recommendations

    Future Work

    Need to fix re-connection code.

    opened by LeStarch 15
  • Installation Guide Clarifications (Virtual Env Troubleshooting, Werkzeug Import Error)

    Installation Guide Clarifications (Virtual Env Troubleshooting, Werkzeug Import Error)

    A couple clarifications/additions I thought might be helpful after running through the installation guide myself (I don't think any of these changes are urgent):

    Possible Clarifications

    • Changing cd <path/to/fprime/checkout> to cd <path to fprime checkout>, to be clear that there isn't a folder called fprime/checkout
      • This should already be clear to most Git users but IMO would be slightly clearer if changed

    Errors Encountered (Add to Troubleshooting?)

    I ran the tutorial on a Ubuntu 18.04 VM (run via Vagrant/VirtualBox on a Windows 10 machine). The VM was run in headless mode (i.e. without a GUI, used via SSH).

    • While installing F', I ran into an error when trying to create the virtual environment via python3 -m venv ./fprime-venv in a shared folder. The error read as follows:

      Error: [Errno 71] Protocol error: 'lib' -> '/vagrant_data/<...folder path...>/fprime-venv/lib64'
      

      I eventually solved this by following this StackOverflow post and moving to the (non-shared) home directory; I'm not sure if this error is Vagrant-specific or not, but creating the virtual environment folder in a non-shared folder fixed the error.

      It might be worth noting to not try running this command in a shared folder if problems arise.

    • While testing the installation by running fprime-gds -g html -d <path/to/fprime/checkout>/Ref after a successful build, I encountered the following error:

      Error: While importing "fprime_gds.flask.app", an ImportError was raised:
      
      Traceback (most recent call last):
      File "/home/vagrant/fPrimeTut/fprime-venv/lib/python3.6/site-packages/flask/cli.py", line 240, in locate_app
      __import__(module_name)
      File "/home/vagrant/fPrimeTut/fprime-venv/lib/python3.6/site-packages/fprime_gds/flask/app.py", line 12, in <module>
      import flask_uploads
      File "/home/vagrant/fPrimeTut/fprime-venv/lib/python3.6/site-packages/flask_uploads.py", line 26, in <module> from werkzeug import secure_filename, FileStorage
      ImportError: cannot import name 'secure_filename'
      
      [ERROR] Failed to run application: python3 -u -m flask run. Error: python3 stopped with code 2 sooner than 2 seconds.
      

      I'm still not sure what the solution to this is (updating requirements.txt didn't fix it).

    High Priority 
    opened by JHDeerin 15
  • Segmentation fault when running RPI demo

    Segmentation fault when running RPI demo

    After completing the RPI demo step by step: https://github.com/nasa/fprime/blob/master/RPI/README.md

    I get an immediate segmentation fault error when running the RPI binary on the raspberry pi. Ground station is running successfully when I do this and does not register any messages/telemetry from the RPI. Here is the output:

    Screen Shot 2020-01-30 at 4 55 20 PM
    opened by aaronbuchwald 15
  • Refactor Integration Tests

    Refactor Integration Tests

    | | | |:---|:---| |F´ Version| | |Affected Component| |

    Problem Description

    Integration tests need the following updates:

    1. Refactor to use new connection_uri connection string
    2. Test complex types via signal gen
    bug High Priority 
    opened by LeStarch 0
  • [ERROR] Dictionary version 3.0.1 is not in supported range: 0.0.0-3.0.0. Please upgrade fprime-gds.

    [ERROR] Dictionary version 3.0.1 is not in supported range: 0.0.0-3.0.0. Please upgrade fprime-gds.

    | | | |:---|:---| |F´ Version| v3.0.0 | |Affected Component| |

    Problem Description

    I'm encountering the following error while attempting to run fprime-gds to connect to my raspberry pi running a cross compiled binary for either Ref or RPI

    [ERROR] Dictionary version 3.0.1 is not in supported range: 0.0.0-3.0.0. Please upgrade fprime-gds.
    [ERROR] Failed to run application: **/fprime/venv/bin/python3 -u -m flask run --host 127.0.0.1 --port 5000. Error: **/fprime/venv/bin/python3 stopped with code 1 sooner than 2 seconds.
    

    Here's a printout of pip freeze from my python virtual environment

    aniso8601==9.0.1
    argcomplete==1.12.3
    arrow==1.2.2
    attrs==21.4.0
    binaryornot==0.4.4
    certifi==2021.10.8
    chardet==4.0.0
    charset-normalizer==2.0.12
    Cheetah3==3.2.6
    click==8.1.3
    cookiecutter==1.7.2
    Flask==1.1.2
    Flask-RESTful==0.3.8
    fprime-fpp==1.0.1
    fprime-gds==3.0.2
    fprime-tools==3.0.1
    idna==3.3
    iniconfig==1.1.1
    itsdangerous==2.0.1
    Jinja2==2.11.3
    jinja2-time==0.2.0
    lxml==4.6.3
    Markdown==3.3.4
    MarkupSafe==1.1.1
    packaging==21.3
    pep517==0.12.0
    pexpect==4.8.0
    pip-tools==6.6.1
    pluggy==0.13.1
    poyo==0.5.0
    ptyprocess==0.7.0
    py==1.11.0
    pyparsing==3.0.9
    pytest==6.2.4
    python-dateutil==2.8.2
    python-slugify==6.1.2
    pytz==2022.1
    requests==2.27.1
    setuptools-scm==6.0.1
    six==1.16.0
    text-unidecode==1.3
    toml==0.10.2
    tomli==2.0.1
    urllib3==1.26.9
    Werkzeug==2.0.1
    

    How to Reproduce

    In a python virtual environment:

    1. build Ref or RPI binary for raspberry pi, follow either Cross Compilation tutorial or RPI Demo Tutorial
    2. run fprime-gds -n --dictionary build-artifacts/raspberrypi/dict/RefTopologyAppDictionary.xml (for Ref) or fprime-gds -n --dictionary build-artifacts/raspberrypi/dict/RPITopologyAppDictionary.xml (for RPI)

    Expected Behavior

    Should open ground station desktop UI

    bug 
    opened by capsulecorplab 9
  • add/generate `requirements.txt` as a

    add/generate `requirements.txt` as a "lockfile" for python packages

    | | | |:---|:---| |F´ Version| | |Affected Component| |

    Feature Description

    Add or generate a requirements.txt, containing pinned versions for all python packages and dependencies. Such a requirements.txt can be generated from setup.py using a tool s.a., pip-compile from pip-tools. requirements.txt files could also be generated for fprime-tools, fprime-gds, and/or fprime-fpp

    Rationale

    A requirements.txt, containing pinned versions for all python packages and dependencies, would provide an optional means to ensure reproducible installation of the working versions of all python packages and dependencies, using pip install -r requirements.txt, essentially functioning akin to a package-lock.json used in NodeJS projects managed with npm.

    enhancement 
    opened by capsulecorplab 3
  • updated fprime types for correct compilation with vxworks and baremetal

    updated fprime types for correct compilation with vxworks and baremetal

    | | | |:---|:---| |Originating Project/Creator|@kevin-f-ortega | |Affected Component| | |Affected Architectures(s)| | |Related Issue(s)| | |Has Unit Tests (y/n)| | |Builds Without Errors (y/n)| y| |Unit Tests Pass (y/n)| | |Documentation Included (y/n)| |


    Change Description

    Fixed bugs founds when compiling for baremetal, added the PLATFORM_*_TYPE macros, updated RateGroupDriver to use the configure pattern.

    Rationale

    Bug fixes. To be more consistent.

    Testing/Review Recommendations

    PLATFORM_*_TYPES should be reviewed

    Future Work

    opened by kevin-f-ortega 8
  • Change variable in Autocoded functions to use _

    Change variable in Autocoded functions to use _

    | | | |:---|:---| |F´ Version| | |Affected Component| |

    Problem Description

    PolyPortAc.cpp:144 serializes the status from the previous response because the variable status is shadowed.

    bug High Priority 
    opened by LeStarch 1
  • build-artifacts dict not being created

    build-artifacts dict not being created

    Discussed in https://github.com/nasa/fprime/discussions/1450

    Originally posted by Adude11 May 11, 2022 Does anyone know why the build-artifacts/Linux/dict directory wouldn't be created? The project happily compiles and I can run the executable, but the dict directory isn't being populated. build-artifacts/Linux only contains bin and lib directories. Without the dict directory fprime-gds fails to run.

    I'm updating an old project to v3 using fpp models, as far as I know it should match up with Ref e.g. calling register_fprime_deployment in the main CMakeLists, although I must be missing something.

    The project isn't located in the fprime directory, and was originally built using the separated project example, could that be causing problems?

    High Priority 
    opened by LeStarch 1
Releases(v3.0.0)
  • v3.0.0(Dec 22, 2021)

    Release 3.0.0: Release and Migration Notes

    Version 3.0.0 of F´ comes with several major enhancements to the framework. This release contains an update to use the FPP modeling language and the C++ standard has been updated to C++11. These are fairly substantial changes and users should consult the version 3 migration guide when adopting F´ version 3.

    Whats included:

    1. FPP modeling integration and build system support
    2. CMake build system refactor
    3. Extended C++11 support

    Note: python3, java and C++11 compliant compiler tools are now required.

    New Contributors

    • @bocchino made their first contribution in https://github.com/nasa/fprime/pull/727
    • @ThibFrgsGmz made their first contribution in https://github.com/nasa/fprime/pull/744
    • @Piphi5 made their first contribution in https://github.com/nasa/fprime/pull/760
    • @AliMuhammadOfficial made their first contribution in https://github.com/nasa/fprime/pull/779
    • @r9-pena made their first contribution in https://github.com/nasa/fprime/pull/809
    • @nabcouwer made their first contribution in https://github.com/nasa/fprime/pull/821
    • @tarampampam made their first contribution in https://github.com/nasa/fprime/pull/765
    • @Emil808 made their first contribution in https://github.com/nasa/fprime/pull/827
    • @IvanReznikov made their first contribution in https://github.com/nasa/fprime/pull/831
    • @astroesteban made their first contribution in https://github.com/nasa/fprime/pull/869
    • @chaolinyi made their first contribution in https://github.com/nasa/fprime/pull/875
    • @zachar1a made their first contribution in https://github.com/nasa/fprime/pull/883
    • @slowy07 made their first contribution in https://github.com/nasa/fprime/pull/927
    • @gkieszkowski made their first contribution in https://github.com/nasa/fprime/pull/935
    • @smir45 made their first contribution in https://github.com/nasa/fprime/pull/958
    • @adityadees made their first contribution in https://github.com/nasa/fprime/pull/959
    • @ugo94490 made their first contribution in https://github.com/nasa/fprime/pull/986
    • @thnkslprpt made their first contribution in https://github.com/nasa/fprime/pull/1033
    • @shubham-shahh made their first contribution in https://github.com/nasa/fprime/pull/1079
    • @gjwatney made their first contribution in https://github.com/nasa/fprime/pull/1111
    • @Blabla51 made their first contribution in https://github.com/nasa/fprime/pull/1089
    • @vietjtnguyen made their first contribution in https://github.com/nasa/fprime/pull/1150
    • @FabrizioSandri made their first contribution in https://github.com/nasa/fprime/pull/1151

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

    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Dec 13, 2021)

    This is the final release of the F´ 2.x series before FPP and v3 are released.

    What's Changed

    • Remove unused const qualifiers by @Joshua-Anderson in https://github.com/nasa/fprime/pull/701
    • Remove TIMSP standard types by @Joshua-Anderson in https://github.com/nasa/fprime/pull/712
    • Make assertion file name const by @Joshua-Anderson in https://github.com/nasa/fprime/pull/711
    • Move string copyBuff from implmentation to string base class by @Joshua-Anderson in https://github.com/nasa/fprime/pull/695
    • Wrap raw task routine with an platform specific wrapper by @Joshua-Anderson in https://github.com/nasa/fprime/pull/700
    • Removed Unnecessary .gcov files by @AdvaitDhingra in https://github.com/nasa/fprime/pull/708
    • Recover/disabled uts by @LeStarch in https://github.com/nasa/fprime/pull/726
    • lestarch: add in ability to override telemetry time by @LeStarch in https://github.com/nasa/fprime/pull/713
    • lestarch: fixing health for UTs by @LeStarch in https://github.com/nasa/fprime/pull/746
    • Fix #743 Redirect to Discussions tab by @ThibFrgsGmz in https://github.com/nasa/fprime/pull/744
    • Make serializable type getters as const functions by @Joshua-Anderson in https://github.com/nasa/fprime/pull/729
    • Mark tlmWrite argument const for user types by @Joshua-Anderson in https://github.com/nasa/fprime/pull/730
    • Compile root cmake project with -Wextra by @Joshua-Anderson in https://github.com/nasa/fprime/pull/745
    • Correct errors in PolyType toString method by @Joshua-Anderson in https://github.com/nasa/fprime/pull/747
    • lestarch: making CI log archive always run by @LeStarch in https://github.com/nasa/fprime/pull/759
    • Add Black Formatting by @Piphi5 in https://github.com/nasa/fprime/pull/760
    • lestarch: fixing defaults for linux drivers (default build) by @LeStarch in https://github.com/nasa/fprime/pull/771
    • Update build-test.yml by @LeStarch in https://github.com/nasa/fprime/pull/776
    • Remove usages of variable length arrays by @Joshua-Anderson in https://github.com/nasa/fprime/pull/758
    • spelling: received by @eltociear in https://github.com/nasa/fprime/pull/766
    • Enable AddressSanitizer on CI builds by @Joshua-Anderson in https://github.com/nasa/fprime/pull/770
    • Enable additional LGTM queries by @Joshua-Anderson in https://github.com/nasa/fprime/pull/799
    • Fix incorrect deserialization status check by @Joshua-Anderson in https://github.com/nasa/fprime/pull/800
    • Serializable type for Enums by @rohandkn in https://github.com/nasa/fprime/pull/793
    • Default values for stuct members and scalar initialization of array members by @rohandkn in https://github.com/nasa/fprime/pull/795
    • Correct LGTM query selection by @Joshua-Anderson in https://github.com/nasa/fprime/pull/804
    • for better readability added f-string for formatting by @AliMuhammadOfficial in https://github.com/nasa/fprime/pull/779
    • Workflow to verify compatibility with GpsApp tutorial by @r9-pena in https://github.com/nasa/fprime/pull/809
    • lestarch: fixing Fw::Time to allow comparisons across different time … by @LeStarch in https://github.com/nasa/fprime/pull/803
    • Update check-spelling by @jsoref in https://github.com/nasa/fprime/pull/819
    • Update tutorial-support.yml by @LeStarch in https://github.com/nasa/fprime/pull/823
    • Dev/abcouwer/cmake baremetal fixes by @nabcouwer in https://github.com/nasa/fprime/pull/821
    • In FprimeProtocol.cpp:deframe(), make buffer no larger than requested… by @nabcouwer in https://github.com/nasa/fprime/pull/822
    • Add missing newlines at ends of files by @nabcouwer in https://github.com/nasa/fprime/pull/826
    • Update .dockerignore by @tarampampam in https://github.com/nasa/fprime/pull/765
    • Update Tutorial.md by @Emil808 in https://github.com/nasa/fprime/pull/827
    • lestarch: adding a ready port to bytestreamdriver and the tcp implementors by @LeStarch in https://github.com/nasa/fprime/pull/853
    • bugfix-830 by @IvanReznikov in https://github.com/nasa/fprime/pull/831
    • bugfix-832 by @IvanReznikov in https://github.com/nasa/fprime/pull/833
    • VxWorks/C++ fixes by @timcanham in https://github.com/nasa/fprime/pull/797
    • docs: Update Incorrect Ref Executable Path by @astroesteban in https://github.com/nasa/fprime/pull/869
    • Split CI workflow jobs by @r9-pena in https://github.com/nasa/fprime/pull/872
    • fix: Autocoders: finishPortH.tmpl, clerical error by @chaolinyi in https://github.com/nasa/fprime/pull/875
    • fix spellcheck: Add bootlin to dictionary by @Joshua-Anderson in https://github.com/nasa/fprime/pull/876
    • Cleanup string classes by @Joshua-Anderson in https://github.com/nasa/fprime/pull/768
    • Bugfix: docs/Architecture related guide materials by @chaolinyi in https://github.com/nasa/fprime/pull/880
    • lestarch: fixes an overzealous string copy assert by @LeStarch in https://github.com/nasa/fprime/pull/890
    • Fix #873, allow nullptr as an input with buffer constructor with an a… by @zachar1a in https://github.com/nasa/fprime/pull/883
    • Bypass master.bash file in CI by @r9-pena in https://github.com/nasa/fprime/pull/889
    • lestarch: reworking docker by @LeStarch in https://github.com/nasa/fprime/pull/894
    • Switched to direct use of Dockerhub fprime image by @r9-pena in https://github.com/nasa/fprime/pull/895
    • Update/cmd sequencer heli by @timcanham in https://github.com/nasa/fprime/pull/882
    • Fix autodocs github action by @Joshua-Anderson in https://github.com/nasa/fprime/pull/914
    • Run cmake tests in CI by @Joshua-Anderson in https://github.com/nasa/fprime/pull/915
    • Import/tlm packetizer by @timcanham in https://github.com/nasa/fprime/pull/878
    • fix: typo spelling grammar by @slowy07 in https://github.com/nasa/fprime/pull/927
    • Switch CI to run in VM instead of docker container by @Joshua-Anderson in https://github.com/nasa/fprime/pull/924
    • Switch autodocs action to use VM instead of container by @Joshua-Anderson in https://github.com/nasa/fprime/pull/938
    • Cookiecutter docs by @aidan-wagner in https://github.com/nasa/fprime/pull/936
    • autodocs: check out entire history to avoid errors merging by @Joshua-Anderson in https://github.com/nasa/fprime/pull/944
    • highlight section order and fix few typos by @gkieszkowski in https://github.com/nasa/fprime/pull/935
    • Backport 80char replacement by @Joshua-Anderson in https://github.com/nasa/fprime/pull/923
    • Removed repeated imports by @smir45 in https://github.com/nasa/fprime/pull/958
    • lestarch: compile options added correctly by @LeStarch in https://github.com/nasa/fprime/pull/956
    • minor link fixes by @gkieszkowski in https://github.com/nasa/fprime/pull/949
    • lestarch: removing -lgcov flag to fix macOs unit tests by @LeStarch in https://github.com/nasa/fprime/pull/965
    • remove unused extraspace and line by @adityadees in https://github.com/nasa/fprime/pull/959
    • fix: wrong comments by @ugo94490 in https://github.com/nasa/fprime/pull/986
    • simplifying index.md file by @gkieszkowski in https://github.com/nasa/fprime/pull/943
    • LinuxSerialDriver: Check for errors when setting interface speed by @Joshua-Anderson in https://github.com/nasa/fprime/pull/996
    • Hotfix to devel by @LeStarch in https://github.com/nasa/fprime/pull/997
    • lestarch: allowing GTest to be disabled in UTs by @LeStarch in https://github.com/nasa/fprime/pull/1004
    • lestarch: adding macOS to CI by @LeStarch in https://github.com/nasa/fprime/pull/1007
    • lestarch: deframer fix by @LeStarch in https://github.com/nasa/fprime/pull/1017
    • Fix minor typos in error message strings and descriptive comments by @thnkslprpt in https://github.com/nasa/fprime/pull/1033
    • docs: Update MathComponent to Reference TestMain by @astroesteban in https://github.com/nasa/fprime/pull/1030
    • lestarch: reworking posix tasks by @LeStarch in https://github.com/nasa/fprime/pull/992
    • Fix fprime typos by @thnkslprpt in https://github.com/nasa/fprime/pull/1043
    • Fix MathComponent Tutorial.md typos by @thnkslprpt in https://github.com/nasa/fprime/pull/1053
    • Allow removal of text loggers from build with CMake variable. by @nabcouwer in https://github.com/nasa/fprime/pull/1071
    • small corrections by @shubham-shahh in https://github.com/nasa/fprime/pull/1079
    • Fixed the override of timebase and context in Time::set() by @metzdigital in https://github.com/nasa/fprime/pull/1104
    • Added sequence join wait command by @saba-ja in https://github.com/nasa/fprime/pull/1084
    • lestarch: command response errors to use COMMAND severity, #1095 by @LeStarch in https://github.com/nasa/fprime/pull/1117
    • System resources by @sfregoso in https://github.com/nasa/fprime/pull/1116
    • Docs: Updates of the Tutorial documentation by @Blabla51 in https://github.com/nasa/fprime/pull/1089
    • lestarch: descriptions for commands, events, parameters, and args fix… by @LeStarch in https://github.com/nasa/fprime/pull/1132
    • Fixed BasicTypes preproc checks for pointer type by @vietjtnguyen in https://github.com/nasa/fprime/pull/1150
    • Remove redundant null terminate by @FabrizioSandri in https://github.com/nasa/fprime/pull/1151
    • Fix snprintf by @FabrizioSandri in https://github.com/nasa/fprime/pull/1156
    • lestarch: update to doxygen file by @LeStarch in https://github.com/nasa/fprime/pull/1158

    New Contributors

    • @ThibFrgsGmz made their first contribution in https://github.com/nasa/fprime/pull/744
    • @Piphi5 made their first contribution in https://github.com/nasa/fprime/pull/760
    • @AliMuhammadOfficial made their first contribution in https://github.com/nasa/fprime/pull/779
    • @r9-pena made their first contribution in https://github.com/nasa/fprime/pull/809
    • @nabcouwer made their first contribution in https://github.com/nasa/fprime/pull/821
    • @tarampampam made their first contribution in https://github.com/nasa/fprime/pull/765
    • @Emil808 made their first contribution in https://github.com/nasa/fprime/pull/827
    • @IvanReznikov made their first contribution in https://github.com/nasa/fprime/pull/831
    • @astroesteban made their first contribution in https://github.com/nasa/fprime/pull/869
    • @chaolinyi made their first contribution in https://github.com/nasa/fprime/pull/875
    • @zachar1a made their first contribution in https://github.com/nasa/fprime/pull/883
    • @slowy07 made their first contribution in https://github.com/nasa/fprime/pull/927
    • @gkieszkowski made their first contribution in https://github.com/nasa/fprime/pull/935
    • @smir45 made their first contribution in https://github.com/nasa/fprime/pull/958
    • @adityadees made their first contribution in https://github.com/nasa/fprime/pull/959
    • @ugo94490 made their first contribution in https://github.com/nasa/fprime/pull/986
    • @thnkslprpt made their first contribution in https://github.com/nasa/fprime/pull/1033
    • @shubham-shahh made their first contribution in https://github.com/nasa/fprime/pull/1079
    • @Blabla51 made their first contribution in https://github.com/nasa/fprime/pull/1089
    • @vietjtnguyen made their first contribution in https://github.com/nasa/fprime/pull/1150
    • @FabrizioSandri made their first contribution in https://github.com/nasa/fprime/pull/1151

    Full Changelog: https://github.com/nasa/fprime/compare/v2.0.1...v2.1.0

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0-RC2(Nov 17, 2021)

    WARNING: this is a pre-release of F´ v3.0.0 for the purposes of F´ team testing. Some stability issues are still being ironed out and issues may be encountered. It is recommended that users outside the F´ team wait for a final release v3.0.0.

    This includes several fixes:

    1. Math tutorial is now updated in this branch
    2. Extra warning flags added to Ref to improve code quality. Revealed bugs fixed.

    See v3.0.0-RC1 for more information on v3.0.0 requirements.

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0-RC1(Nov 5, 2021)

    WARNING: this is a pre-release of F´ v3.0.0 for the purposes of F´ team testing. Some stability issues are still being ironed out and issues may be encountered. It is recommended that users outside the F´ team wait for a final release v3.0.0.

    Whats included:

    1. FPP modeling integration and build system support
    2. CMake build system refactor
    3. Extended C++11 support

    Note: python3, java and C++11 compliant compiler tools are now required.

    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Sep 2, 2021)

    Hot-Fix Release of F´v2.0.1:

    • Correct issue with compilation failing w/ conflicts due to built-in VxWorks definitions

    Note: v2.0.x releases will be the last to support VxWorks 6.7 compilers and the GCC 4 toolchain they use.

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Jun 10, 2021)

    Release 2.0: Release and Migration Notes

    Version 2.0.0 of F´ represents major improvements across the F´ framework. As such, some work may be required to migrate from other versions of F´ to the new functionality. This section will offer recommendations to migrate to version 2.0.0 of F´.

    Features and Functionality:

    • New ground interface change improves stability and flexibility
      • Svc::Framer and Svc::Deframer components may be used in place of Svc::GroundInterface
      • Svc::Framer and Svc::Deframer delegate to a user instantiated framing class allowing use of non-fprime framing protocols
    • Drv::ByteStreamDriverModel allows implementing drivers reading/writing streams of bytes using a single model
    • New IPv4 drivers implement Drv::ByteStreamDriverModel allowing choice or combination of uplink and downlink communications
      • Drv::TcpClient is a tcp client that connects to a remote server
      • Drv::TcpServer is a tcp server that allows connections from remote clients
      • Drv::Udp allows UDP communications
      • Drv::SocketIpDriver may be replaced using a choice of an above component.
    • Svc::FileDownlink now supports a queue of files to downlink and a port to trigger file downlinks
    • Svc::FileDownlink may now be configured to turn off certain errors
    • Svc/GenericHub is a basic instantiation of the hub pattern
    • Bug fixes and stability improvements

    Migration considerations:

    • F´ tooling (fprime-util and fprime-gds) should be installed using pip install fprime-tools fprime-gds
    • Os::File::open with the mode CREATE will now properly respect O_EXCL and error if the file exists. Pass in false as the final argument to override.
    • Revise uses of Fw::Buffer to correct usage of member functions using camel case. E.g. Fw::Buffer::getsize is now Fw::Buffer::getSize
    • The ground interface chain has been refactored. Projects may switch to using Svc::Framer, Svc::Deframer, and any implementor of Drv::ByteStreamDriverModel to supply the data. To continue using the old interface with the GDS run fprime-gds --comm-checksum-type fixed.
    • Svc::BufferManager has been reworked to remove errors. When instantiating it please supply a memory allocator as shown in Ref.
    • Dictionaries, binaries, and other build outputs now are written to a deployments build_artifacts folder.

    Deprecated Functionality: The following features are or will be deprecated soon and may be removed in future releases.

    • Svc::GroundInterface and Drv::SocketIpDriver should be replaced by the new ground system components.
    • Inline enumerations (enumerations defined inside the definition of a command/event/channel) should be replaced by EnumAi.xml implementations
    • fprime-util generate --ut -DFPRIME_ENABLE_FRAMEWORK_UTS=OFF will be removed in favor of future fprime-util check variants
    • Autocoders/MagicDrawCompPlugin will be removed in a near-term release
    Source code(tar.gz)
    Source code(zip)
  • NASA-v1.5.3(Nov 5, 2020)

    This is a release of F´ that corrects a minor issues in the fprme-util to properly pass in environment variables for customers using fprime-util to setup their build environment variables. See releases 1.5.x for full release notes.

    Note:

    • See release 1.5.x for release updates
    • fprime python package version updated to 1.5.3, please reinstall with --upgrade flag
    Source code(tar.gz)
    Source code(zip)
  • NASA-v1.5.2(Oct 27, 2020)

    This is a release of F´ that corrects a minor issues in the CMake system affecting template implementation with custom AcConstants.ini files for unit tests and fixes the -D flags passed to fprime-util generate. See release 1.5.0, 1.5.1 for full release notes.

    Note:

    • See release 1.5.0 for full feature set
    • fprime python package version updated to 1.5.2
    Source code(tar.gz)
    Source code(zip)
  • NASA-v1.5.1(Oct 22, 2020)

    This is a release of F´ that corrects a minor issue in the CMake system affecting template implementation with custom AcConstants.ini files. See release 1.5.0 for full release notes.

    Note:

    • Python package versions not updated as the python code was not changed
    • See release 1.5.0 for full feature set
    Source code(tar.gz)
    Source code(zip)
  • NASA-v1.5.0(Oct 22, 2020)

    This represents the release v1.5.0 of the F´ software framework. This release includes bug fixes, user tool improvement, minor feature development, and lots of code quality improvements. A refactor of the user's guide is also included and is available here: https://nasa.github.io/fprime/UsersGuide/guide.html.

    Notable changes:

    • F´utility (fprime-util) reduced the number of subcommands in favor of flags. i.e. fprime-util build-all is not fprime-util build --all
    • F´ projects can be restructured to include links to the fprime framework and packages of fprime components developed by a third party. An example can be found here: https://github.com/fprime-community/fprime-arduino/tree/master/ArduinoBlink
    Source code(tar.gz)
    Source code(zip)
  • NASA-v1.4(May 26, 2020)

    This is the 1.4 release of the F´ framework. It has the following features:

    1. File Uplink and Downlink has been added to the F´  GDS.
    2. Build Helper and CMake fixes
    3. Baremetal fixes
    Source code(tar.gz)
    Source code(zip)
  • NASA-v1.3.1(Jan 24, 2020)

    This is release 1.3.1 of NASA's F´ framework. It contains a additions to the test GUI based on HTML, minor fixes to the fprime-util helper for helping use CMake during normal development. It also contains revisited documentation that presents a consistent view of how to run and development in F´. Our tutorials section was revisited to ensure the latest information.

    This is a point release that fixes minor bugs and documentation found in NASA-v1.3.

    Source code(tar.gz)
    Source code(zip)
  • NASA-v1.3(Nov 22, 2019)

    This is release 1.3 of NASA's F´ framework. It contains a refactored test GUI based on HTML, a new integration and test framework for automating system level tests, and the fprime-util helper for helping use CMake during normal development. Also included are many bug fixes and improvements.

    Source code(tar.gz)
    Source code(zip)
Owner
NASA
Read about NASA's Open Data initiative here: https://www.nasa.gov/open/ & Members Find Instructions here: http://nasa.github.io/
NASA
Embedded, self-hosted swagger-ui for go servers

swaggerui Embedded, self-hosted Swagger Ui for go servers This module provides swaggerui.Handler, which you can use to serve an embedded copy of Swagg

Andy Walker 35 Apr 13, 2022
Embedded javascript server-side renderer for Golang

v8ssr Embedded javascript server-side renderer for Golang. Useful for static server-side rendering. This does not attempt to polyfill node or browser

null 1 Jan 13, 2022
godesim Simulate complex systems with a simple API.

godesim Simulate complex systems with a simple API. Wrangle non-linear differential equations while writing maintainable, simple code. Why Godesim?

Patricio Whittingslow 19 Mar 5, 2022
Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

The Moby Project Moby is an open-source project created by Docker to enable and accelerate software containerization. It provides a "Lego set" of tool

Moby 63k May 14, 2022
IBus Engine for GoVarnam. An easy way to type Indian languages on GNU/Linux systems.

IBus Engine For GoVarnam An easy way to type Indian languages on GNU/Linux systems. goibus - golang implementation of libibus Thanks to sarim and haun

Varnamproject 10 Feb 10, 2022
Distributed Systems 2021 -- Miniproject 3

Mini_Project3 == A Distributed Auction System == You must implement a distributed auction system using replication: a distributed component which hand

null 0 Dec 1, 2021
A simple tool to send binary data over a serial port. Designed for use with my retro computer systems.

Colin's Transfer Tool This is a really basic tool to transfer firmware files to my retro computer systems over a serial port. This removes the need fo

Colin Maykish 0 Dec 21, 2021
Ghdl - A much more convenient way to download GitHub release binaries on the command line, works on Win & Unix-like systems

ghdl Memorize ghdl as github download ghdl is a fast and simple program (and als

beet 43 Apr 24, 2022
Software of development with Golang

Go-Simple-Rest-Api Description This repository is a Software of Development with Go,Mux,etc Installation Using Go 1.16.3 Server preferably. DataBase U

Daniel Arturo Alejo Alvarez 9 Dec 13, 2021
Core Brightgate Software Stack

Brightgate Product Software Directories Directory Description base/ Resource and Protocol Buffer message definitions build/ Scripts to do with buildin

Brightgate Inc. 2 Sep 25, 2021
software keyboard for TinyGo

tinykb tinykb is a software keyboard for TinyGo. To use tinykb, it is necessary to implement the driver.Displayer interface. It is still an alpha vers

sago35 2 Jan 14, 2022
The Bhojpur BSS is a software-as-a-service product used as an Business Support System based on Bhojpur.NET Platform for application delivery.

Bhojpur BSS - Business Support System The Bhojpur BSS is a software-as-a-service product used as an Business Support System based on Bhojpur.NET Platf

Bhojpur Consulting 0 Dec 30, 2021
Antch, a fast, powerful and extensible web crawling & scraping framework for Go

Antch Antch, inspired by Scrapy. If you're familiar with scrapy, you can quickly get started. Antch is a fast, powerful and extensible web crawling &

null 229 Apr 6, 2022
Entitas-Go is a fast Entity Component System Framework (ECS) Go 1.17 port of Entitas v1.13.0 for C# and Unity.

Entitas-Go Entitas-GO is a fast Entity Component System Framework (ECS) Go 1.17 port of Entitas v1.13.0 for C# and Unity. Code Generator Install the l

Vladislav Fedotov 15 May 12, 2022
Tanzu Framework provides a set of building blocks to build atop of the Tanzu platform and leverages Carvel packaging

Tanzu Framework provides a set of building blocks to build atop of the Tanzu platform and leverages Carvel packaging and plugins to provide users with a much stronger, more integrated experience than the loose coupling and stand-alone commands of the previous generation of tools.

VMware Tanzu 149 May 13, 2022
Highly customizable archive and index framework for EPITA

epitar.gz Highly customizable archive and index framework for EPITA. Get started

Aurèle Oulès 24 Apr 12, 2022
GoC2 - MacOS Post Exploitation C2 Framework

goc2 c2 client/server/paylod GoC2 - MacOS Post Exploitation C2 Framework Custom C2 for bypassing EDR and ease of use.

Brian Stegemoller 33 Jan 14, 2022
The High Code Framework (low-code for devs)

hof - the high code framework The hof tool tries to remove redundent development activities by using high level designs, code generation, and diff3 wh

_Hofstadter 219 May 13, 2022
A toaster component for hogosuru framework

Toaster component for hogosuru Toaster implementation for hogosuru How to use? Create a hogosurutoaster.Toaster or attach it to a hogosuru container a

Manuel BARRAUD 4 Mar 24, 2022