fprime/README.md
Thomas Boyer-Chammard 728a022e9c
Add support for CCSDS TC/TM and SpacePacket protocols (#3684)
* First pass at Svc + TcpClient implementation

* Tmp work

* Revert FileUplink changes

* Add copy (with allocation/deallocation) to FprimeRouter to simplify buffer management

* Update FprimeRouter UTs

* Update FprimeDeframer UTs

* Update FrameAccumulator UTs

* Update ComStub UTs

* Update missing Drv and UTs

* Update ComInterface to use ComDataWithContext on output

* Update Ref/RPI topology

* Fix spelling

* Fix test typo

* Update Udp component and UTs

* Rename data ports and standardize "Return" naming pattern

* Fix variable name

* Adapt UTs

* Update Communication Adapter Interface docs

* Full SDD updates

* Spelling &  nits and details

* Put formatting back to original

* Added SpacePacket, TC and TM framers/deframers + Ref topology. Working with GDS wohooo

* TODOs and code cleanup

* Add APID enum to ComCfg.fpp and route based on received APID

* Increment counts per frame/apid

* Remove duplicate files

* Document and implement services/functions provided by the TCDeframer

* Add events, todos and notes

* fill TM frame with idle packet

* Add ApidMapper component and map APID - FwPacketDescriptor

* Refactor to new CMake API

* Update Types and Add TCDeframer tests

* Update type usage namespacing

* Finish TCDeframer UTs

* Add TMFramer tests and refine VcId handling

* Tests and code cleanup

* Define ComPacketType in FPP

* Map FW_PACKET_FILE to downlink specific APID

* Remove sequence number check

* Add packet loss notification to space packet

* Tests WIP

* WIP

* Use SpacePacket header type in TMFramer idle packet

* SpacePacketDeframer tests and untracked APID detection

* Add APID (=PacketDescriptor) extraction to FprimeDeframer

* Use ApidManager on uplink to validate seq count (is central authority for APID - SeqCount)

* Code cleanup

* Much cleaner ApidManager as a service, not in the middle of framing

* Even better ApidManager

* Add SpacePacketFramer UTs

* Set up rule based testing for ApidManager

* Code cleanup and fix TMFramer UT

* First pass at SDDs and stuff

* SDD fixes

* ApidManager Rule-based testing

* Improve TMFramer code coverage, docs and comments

* Types cleanup

* Add CRC check to CcsdsTCFrameDetector

* Add unit tests for CcsdsTCFrameDetector

* Fix Ref topology

* Fix old PacketType usage

* Fix ComQueue UTs

* Fix CI warnings

* Add test for CRC corruption in frame detector

* Spelling

* Remove ApidDemo component from topology

* Fix more static analysis

* Clean up ApidManager tests and fix static analysis warnings

* Fix UTs on RHEL8

* Fix SDD links

* Fix more static analysis on UTs

* More spelling fixes

* Improve SDDs and comments

* Update metadata

check-spelling run (pull_request_target) for ccsds-protocols

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>

* More SDD updates

* Attempt UT fixes

* First pass of review comments

* Fix length token is minus 1 inconsistency

* Review recs: static assert frame size, docs, TM buffer asserts

* Add fprime-gds.yml to Ref for GDS with framing selection

* Update requirements.txt for GDS 4.0.0a3 (CCSDS protocols)

* Update UTs to reflect last update

* Drop Python 3.8 support

* Update FprimeRouter UTs for new APID routing

* Fix spelling and RHEL8 cast warnings

* Fix spelling again...

* Deserialize APID in FprimeDeframer only if it is valid

* Fix googletest warning??

* static casting that u8 yall

* Use width FPP constants

* Add SDD links

* Switch TMFramer/TCDeframer capitalization to TmFramer/TcDeframer

* Use git mv to rename files and directory

* oops forgot rename a test file

* review changes: add annotations on all FPP ports

---------

Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Thomas Boyer-Chammard <thomas-bc@users.noreply.github.com>
2025-06-11 11:04:38 -07:00

69 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h2 align="center">A Flight-Proven, Multi-Platform, Open-Source Flight Software Framework</h2>
<p align="center"><br/>
<img width="200em" src="docs/img/fprime-logo.svg"><br/>
</p>
#
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](https://www.jpl.nasa.gov/), F´ has been successfully deployed on [several space applications](https://fprime.jpl.nasa.gov/overview/projects/). It is tailored but not limited to small-scale spaceflight systems such as CubeSats, SmallSats, and instruments.
**Please Visit the F´ Website:** [https://fprime.jpl.nasa.gov](https://fprime.jpl.nasa.gov/) for more information.
## What does F´ provide
- 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.
Learn more about [F´ key features](https://fprime.jpl.nasa.gov/overview).
## System Requirements
1. Linux, Windows with WSL, or macOS operating system
2. [git](https://git-scm.com/)
3. [Clang](https://clang.llvm.org/) or [GNU C and C++ compilers](https://gcc.gnu.org/) (e.g. gcc and g++)
4. [Python 3.9+](https://www.python.org/downloads/), [virtual environments](https://docs.python.org/3/library/venv.html), and [PIP](https://pypi.org/project/pip/)
## Getting Started
To get started with F´, install the F´ bootstrapping tool with:
```
pip install fprime-bootstrap
```
Then, create a new project with:
```
fprime-bootstrap project
```
See the [HelloWorld Tutorial](https://fprime.jpl.nasa.gov/latest/tutorials-hello-world/docs/hello-world/) to guide you through all the steps of developing an F´ project.
New users are encouraged to read through the [User Manual](https://fprime.jpl.nasa.gov/latest/docs/user-manual/) and explore the [other tutorials](https://fprime.jpl.nasa.gov/latest/docs/tutorials/).
## Getting Help
### Discussions
To ask questions, discuss improvements, and ask for help please use the project's [GitHub Discussions](https://github.com/nasa/fprime/discussions).
### Bug reports
To report bugs and issues, [open an issue here](https://github.com/nasa/fprime/issues).
### Community
The [F´ Community](https://github.com/fprime-community) GitHub Organization contains third party contributions, more documentation of flight software development, and additional resources.
## Resources
- [User Manual](https://fprime.jpl.nasa.gov/latest/docs/user-manual/)
- [Tutorials](https://fprime.jpl.nasa.gov/latest/docs/tutorials/)
- [Discussions](https://github.com/nasa/fprime/discussions)
- [Submit an Issue](https://github.com/nasa/fprime/issues)
- [F´ Community](https://github.com/fprime-community)
## Release Notes
The version history and artifacts associated with the project can be found at [Releases](https://github.com/nasa/fprime/releases).