Update docs structure for website versioning improvements (#3150)
--------- Co-authored-by: ashleynilo <ashley.k.santiago@jpl.nasa.gov>
5
.gitignore
vendored
@ -84,5 +84,6 @@ depend
|
||||
/venv/
|
||||
|
||||
Packet-Views
|
||||
docs/documentation/reference/api/cpp
|
||||
docs/documentation/reference/api/cmake
|
||||
docs/reference/api/cpp
|
||||
docs/reference/api/cmake
|
||||
temp_dir/
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
This build module defines FPP ports and C++ classes that support
|
||||
the collection and storage of data products.
|
||||
For more information on data products and records, see the
|
||||
[data products documentation](../../../../../user-manual/design/data-products.md).
|
||||
[data products documentation](../../../docs/user-manual/design/data-products.md).
|
||||
|
||||
## 2. Configuration
|
||||
|
||||
@ -81,7 +81,7 @@ The header hash has the following format.
|
||||
|
||||
|Field Name|Serialized Size|Description|
|
||||
|----------|---------------|-----------|
|
||||
|`Header Hash`|[`HASH_DIGEST_LENGTH`](../../../../api/cpp/html/index.html)|The hash value guarding the header.|
|
||||
|`Header Hash`|[`HASH_DIGEST_LENGTH`](../../../Utils/Hash/README.md)|The hash value guarding the header.|
|
||||
|
||||
#### 5.1.3. Data
|
||||
|
||||
@ -118,7 +118,7 @@ The data hash has the following format.
|
||||
|
||||
|Field Name|Serialized Size|Description|
|
||||
|----------|---------------|-----------|
|
||||
|`Data Hash`|[`HASH_DIGEST_LENGTH`](../../../../api/cpp/html/index.html)|The hash value guarding the data.|
|
||||
|`Data Hash`|[`HASH_DIGEST_LENGTH`](../../../Utils/Hash/README.md)|The hash value guarding the data.|
|
||||
|
||||
### 5.2. Further Information
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
#
|
||||
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://nasa.github.io/fprime/projects.html). 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.gov/latest](https://fprime.jpl.nasa.gov/latest/) for more information.
|
||||
**Please Visit the F´ Website:** [https://fprime.jpl.gov/](https://fprime.jpl.nasa.gov/) for more information.
|
||||
|
||||
|
||||
## What does F´ provide
|
||||
@ -17,7 +17,7 @@ F´ (F Prime) is a component-driven framework that enables rapid development and
|
||||
- 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/latest/).
|
||||
Learn more about [F´ key features](https://fprime.jpl.nasa.gov/).
|
||||
|
||||
|
||||
## System Requirements
|
||||
|
||||
@ -52,7 +52,7 @@ sudo apt update && sudo apt install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnu
|
||||
|
||||
**Crosscompiling using CMake:**
|
||||
|
||||
The following commands are described at length in the [HelloWorld tutorial](../docs/documentation/tutorials/). These commands will
|
||||
The following commands are described at length in the [HelloWorld tutorial](../docs/tutorials/index.md). These commands will
|
||||
go to the RPI directory and generate a build directory for the RPI example. This step generates a CMake Cache, sets the toolchain use to build the
|
||||
code and does an initial scan of the source tree. Since the RPI example sets a default F´ toolchain file in its CMakeLists.txt, we do not need to
|
||||
supply one on the command line when generating the build. This only needs to be done once to prepare for the build because CMake will detect
|
||||
|
||||
@ -63,5 +63,5 @@ cd fprime/Ref/build-artifacts/<platform>/bin/
|
||||
- The F´ utility's build command can build individual components too.
|
||||
- The 'generate' command can take a toolchain argument for quickly generating a cross-compile `fprime-util generate raspberrypi` for example.
|
||||
|
||||
Further work with the F´ utility can be found in the [HelloWorld tutorial](../docs/documentation/tutorials/) tutorial.
|
||||
Further work with the F´ utility can be found in the [HelloWorld tutorial](../docs/tutorials/index.md) tutorial.
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
Please refer to the F´ website: https://fprime.jpl.nasa.gov/latest/getting-started/
|
||||
Please refer to the F´ website: https://fprime.jpl.nasa.gov/
|
||||
|
||||
@ -1,39 +0,0 @@
|
||||
# Documentation
|
||||
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
- <span class="card-title">__Tutorials__</span> *Learning-oriented*
|
||||
|
||||
---
|
||||
|
||||
Tutorials walk through the essentials of F Prime development, starting with the canonical HelloWorld example and progressing to cross-compiling and deploying on hardware.
|
||||
|
||||
[Visit Tutorials](tutorials/index.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__User Manual__</span> *Understanding-oriented*
|
||||
|
||||
---
|
||||
|
||||
The User Manual dives into F Prime design philosophy and architectural principles, providing a deep understanding of how the framework operates.
|
||||
|
||||
[Visit User Manual](user-manual/index.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__How To__</span> *Task-oriented*
|
||||
|
||||
---
|
||||
|
||||
How-To guides offer step-by-step instructions for specific development tasks in F Prime.
|
||||
|
||||
[Visit How Tos](how-to/index.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__Reference__</span> *Information-oriented*
|
||||
|
||||
---
|
||||
|
||||
Technical reference for the F Prime C++ API, CMake API, FPP language specification and more.
|
||||
|
||||
[Visit Reference](reference/index.md){ .md-button .md-button--primary }
|
||||
|
||||
|
||||
</div>
|
||||
@ -1,10 +0,0 @@
|
||||
# F´ Modeling: FPP User Guide
|
||||
|
||||
F´ v3 introduced a new way of modeling with F´, the FPP (F Prime Prime) modeling language. The [MathComponent Tutorial](../../tutorials-math-component/docs/math-component) is a good introduction to FPP.
|
||||
|
||||
To go into more detail, the full FPP documentation can be found here: [FPP Wiki](https://github.com/fprime-community/fpp/wiki).
|
||||
|
||||
**Quick links:**
|
||||
|
||||
- [FPP User Guide](https://nasa.github.io/fpp/fpp-users-guide.html)
|
||||
- [FPP Language Specification](https://nasa.github.io/fpp/fpp-spec.html)
|
||||
@ -1,5 +0,0 @@
|
||||
# F´ Software Design Documents
|
||||
|
||||
Software Design Documents are intended to capture the design of an F´ component or module. These are located in the source tree of the framework.
|
||||
|
||||
### Index
|
||||
@ -67,7 +67,7 @@ PROJECT_LOGO = ./docs/doxygen/small-logo.png
|
||||
# entered, it will be relative to the location where doxygen was started. If
|
||||
# left blank the current directory will be used.
|
||||
|
||||
OUTPUT_DIRECTORY = ./docs/documentation/reference/api/cpp
|
||||
OUTPUT_DIRECTORY = ./docs/reference/api/cpp
|
||||
|
||||
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
|
||||
# directories (in 2 levels) under the output directory of each output format and
|
||||
@ -906,8 +906,8 @@ RECURSIVE = YES
|
||||
# run.
|
||||
|
||||
# ./docs need to be excluded individually because ./docs/doxygen/mainpage.md needs to be included
|
||||
EXCLUDE = ./docs/documentation ./docs/events ./docs/getting-started \
|
||||
./docs/overview ./docs/support \
|
||||
EXCLUDE = ./docs/how-to ./docs/reference ./docs/tutorials ./docs/user-manual \
|
||||
./docs/events ./docs/getting-started ./docs/overview ./docs/support \
|
||||
*CMakeFiles/* ./Autocoders ./cmake ./gtest ./Ref ./RPI ./FppTest \
|
||||
STest ./mk ./README.md ./CONTRIBUTORS.md ./CONTRIBUTING.md ./SECURITY.md \
|
||||
./googletest/ ./CODE_OF_CONDUCT.md ./LICENSE.md ./docs/INSTALL.md
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
SOURCE_DIR=`dirname $BASH_SOURCE`
|
||||
|
||||
FPRIME=`cd ${SOURCE_DIR}/../../; pwd`
|
||||
APIDOCS="${FPRIME}/docs/documentation/reference/api"
|
||||
APIDOCS="${FPRIME}/docs/reference/api"
|
||||
|
||||
DOXY_OUTPUT="${APIDOCS}/cpp"
|
||||
CMAKE_OUTPUT="${APIDOCS}/cmake"
|
||||
|
||||
@ -1,15 +1,14 @@
|
||||
import os
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
|
||||
SDD_DIR = "./docs/documentation/reference/sdd"
|
||||
os.makedirs(SDD_DIR, exist_ok=True)
|
||||
SDD_INDEX_FILE = "./docs/reference/sdd.md"
|
||||
|
||||
# Append the new file path to index.md
|
||||
with open(Path(SDD_DIR) / 'index.md', 'a') as index_file:
|
||||
with open(Path(SDD_INDEX_FILE), 'a') as index_file:
|
||||
|
||||
# Find all sdd.md files and process them
|
||||
for file in list(Path('.').rglob('*/docs/sdd.md')):
|
||||
# Sort them for convenience, but also can't use the rglob generator since
|
||||
# it would start matching generated files, so using sorted to create a list
|
||||
for file in sorted(Path('.').rglob('*/docs/sdd.md')):
|
||||
# Get module name and parent directory name
|
||||
second_parent = file.parents[1].name
|
||||
third_parent = file.parents[2].name
|
||||
@ -17,10 +16,4 @@ with open(Path(SDD_DIR) / 'index.md', 'a') as index_file:
|
||||
if third_parent in ["", ".", "fprime", "Ref"] or third_parent.startswith("cookiecutter-"):
|
||||
continue
|
||||
|
||||
source_dir = file.parents[1] / 'docs'
|
||||
dest_dir = Path(SDD_DIR) / third_parent / second_parent / 'docs'
|
||||
|
||||
os.makedirs(dest_dir, exist_ok=True)
|
||||
shutil.copytree(source_dir, dest_dir, dirs_exist_ok=True)
|
||||
|
||||
index_file.write(f"- [{third_parent}::{second_parent}](./{third_parent}/{second_parent}/docs/sdd.md)\n")
|
||||
index_file.write(f"- [{third_parent}::{second_parent}](../../{third_parent}/{second_parent}/docs/sdd.md)\n")
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Event Request
|
||||
template: event-request.html
|
||||
---
|
||||
|
||||
[View the F Prime Event Request page here](https://fprime.jpl.nasa.gov/latest/events/event-request)
|
||||
@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Events
|
||||
template: events.html
|
||||
---
|
||||
|
||||
[View the F Prime Events page here](https://fprime.jpl.nasa.gov/latest/events/)
|
||||
@ -17,13 +17,13 @@ F´ has the following features:
|
||||
|
||||
## Hello, World!
|
||||
|
||||
New users should start with the [Hello World tutorial](../tutorials-hello-world/docs/hello-world//). This tutorial walks through the F´ installation process, how to create a new project and how to design, implement, and test a basic F Prime application.
|
||||
New users should start with the [Hello World tutorial](../../tutorials-hello-world/docs/hello-world.md). This tutorial walks through the F´ installation process, how to create a new project and how to design, implement, and test a basic F Prime application.
|
||||
|
||||
|
||||
## Further References
|
||||
|
||||
Here are some additional references to continue learning about F´:
|
||||
|
||||
- [More tutorials](../documentation/tutorials/)
|
||||
- [F´ User Manual](../documentation/user-manual/)
|
||||
- [More tutorials](../tutorials/index.md)
|
||||
- [F´ User Manual](../user-manual/index.md)
|
||||
- [Installation and Troubleshooting](./installing-fprime.md)
|
||||
|
||||
@ -1,6 +1,39 @@
|
||||
---
|
||||
Title: Home
|
||||
template: home.html
|
||||
# Documentation
|
||||
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
- <span class="card-title">__Tutorials__</span> *Learning-oriented*
|
||||
|
||||
---
|
||||
|
||||
[View the F Prime Website here](https://fprime.jpl.nasa.gov/latest/)
|
||||
Tutorials walk through the essentials of F Prime development, starting with the canonical HelloWorld example and progressing to cross-compiling and deploying on hardware.
|
||||
|
||||
[Visit Tutorials](tutorials/index.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__User Manual__</span> *Understanding-oriented*
|
||||
|
||||
---
|
||||
|
||||
The User Manual dives into F Prime design philosophy and architectural principles, providing a deep understanding of how the framework operates.
|
||||
|
||||
[Visit User Manual](user-manual/index.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__How To__</span> *Task-oriented*
|
||||
|
||||
---
|
||||
|
||||
How-To guides offer step-by-step instructions for specific development tasks in F Prime.
|
||||
|
||||
[Visit How Tos](how-to/index.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__Reference__</span> *Information-oriented*
|
||||
|
||||
---
|
||||
|
||||
Technical reference for the F Prime C++ API, CMake API, FPP language specification and more.
|
||||
|
||||
[Visit Reference](reference/index.md){ .md-button .md-button--primary }
|
||||
|
||||
|
||||
</div>
|
||||
249
docs/mkdocs.yml
@ -2,13 +2,16 @@ site_name: F Prime
|
||||
site_url: https://fprime.jpl.nasa.gov/
|
||||
repo_url: https://github.com/nasa/fprime
|
||||
repo_name: nasa/fprime
|
||||
docs_dir: .. # using ./fprime/ as the root directory to host all source files in the website
|
||||
site_dir: ../../site
|
||||
edit_uri: edit/devel/ # for "Edit Source" button (see content.action.edit)
|
||||
|
||||
theme:
|
||||
name: material # enables the material theme, DO NOT CHANGE
|
||||
language: en
|
||||
logo: assets/images/logo-fprime-jpl.svg
|
||||
favicon: assets/images/favicon.svg
|
||||
custom_dir: overrides
|
||||
custom_dir: ../../overrides # external directory
|
||||
icon:
|
||||
annotation: material/information-slab-circle # custom icon for annotations
|
||||
|
||||
@ -25,6 +28,7 @@ theme:
|
||||
- content.code.annotate # enable code annotations for all code blocks
|
||||
- content.tooltips # replaces the browser's rendering logic for title attribute with tooltips (for content, header, navigation)
|
||||
- content.tabs.link # all content tabs across the whole documentation site will be linked and switch to the same label when the user clicks on a tab
|
||||
- content.action.edit # display a "Edit Source" button on the top right of the page
|
||||
|
||||
palette:
|
||||
|
||||
@ -51,127 +55,7 @@ extra:
|
||||
provider: mike
|
||||
alias: true
|
||||
generator: false # removes "Made with Material for Mkdocs"
|
||||
analytics:
|
||||
provider: custom
|
||||
# Event Values
|
||||
events:
|
||||
# Event 1 Information
|
||||
- date: 'OCT 13-15 2025'
|
||||
name: 'Flight Software Development Workshop'
|
||||
location: 'Jet Propulsion Laboratory in Pasadena, California'
|
||||
description: 'Check back in early 2025 for details and to request an invitation.'
|
||||
button_text: Request an Invitation (coming soon)
|
||||
button_link: '#'
|
||||
category: 'Tutorial'
|
||||
category_class: event-category-tutorial # Make sure class matches inputted category
|
||||
image: '#'
|
||||
alt: ''
|
||||
# Project Values
|
||||
projects:
|
||||
# ISS-RapidScat
|
||||
- bg_image: '../../assets/images/projects/iss-rapidscat.png'
|
||||
bg_position: 50% 50%
|
||||
name: 'ISS-RapidScat (International Space Station Rapid Scatterometer)'
|
||||
type: 'Instrument'
|
||||
nasa_center_company: 'NASA JPL'
|
||||
os: '-'
|
||||
hw_platform: '-'
|
||||
start_date: 'Sep. 21, 2014'
|
||||
end_date: 'Nov. 18, 2018'
|
||||
target: 'Earth'
|
||||
link: 'https://www.jpl.nasa.gov/missions/international-space-station-rapid-scatterometer-iss-rapidscat'
|
||||
image_credit: 'JSC'
|
||||
# ASTERIA
|
||||
- bg_image: '../../assets/images/projects/asteria.png'
|
||||
bg_position: 50% 75%
|
||||
name: 'ASTERIA (Arcsecond Space Telescope Enabling Research in Astrophysics)'
|
||||
type: 'Technology Demonstration, CubeSat/SmallSat'
|
||||
nasa_center_company: 'NASA JPL'
|
||||
os: 'Linux'
|
||||
hw_platform: 'PowerPC'
|
||||
start_date: 'Aug. 14, 2017'
|
||||
end_date: 'End of Feb. 2020'
|
||||
target: 'Exoplanets'
|
||||
link: 'https://www.jpl.nasa.gov/missions/arcsecond-space-telescope-enabling-research-in-astrophysics-asteria'
|
||||
image_credit: 'NASA/JPL-Caltech'
|
||||
# Mars Ingenuity
|
||||
- bg_image: '../../assets/images/projects/ingenuity.png'
|
||||
bg_position: 50% 50%
|
||||
name: 'Mars Helicopter (Ingenuity)'
|
||||
type: 'Airborne'
|
||||
nasa_center_company: 'NASA JPL'
|
||||
os: 'Linux'
|
||||
hw_platform: 'Qualcomm’s Snapdragon 801'
|
||||
start_date: 'Jul. 30, 2020'
|
||||
end_date: 'Ongoing'
|
||||
target: 'Mars'
|
||||
link: 'https://mars.nasa.gov/technology/helicopter/'
|
||||
image_credit: 'NASA/JPL-Caltech'
|
||||
# Lunar Flashlight
|
||||
- bg_image: '../../assets/images/projects/lunar-flashlight.png'
|
||||
bg_position: 50% 50%
|
||||
name: 'Lunar Flashlight CubeSat'
|
||||
type: 'Technology Demonstration, CubeSat/SmallSat'
|
||||
nasa_center_company: 'NASA JPL'
|
||||
os: 'VxWorks'
|
||||
hw_platform: 'Sphinx (GR712 - LEON3FT SPARC)'
|
||||
start_date: 'Dec. 11, 2022'
|
||||
end_date: 'Ongoing'
|
||||
target: "Earth's Moon"
|
||||
link: 'https://www.jpl.nasa.gov/missions/lunar-flashlight'
|
||||
image_credit: 'NASA/JPL-Caltech'
|
||||
# NEA Scout
|
||||
- bg_image: '../../assets/images/projects/nea-scout.png'
|
||||
bg_position: 50% 50%
|
||||
name: 'Near Earth Asteroid Scout CubeSat'
|
||||
type: 'Technology Demonstration, CubeSat/SmallSat'
|
||||
nasa_center_company: 'NASA JPL'
|
||||
os: 'VxWorks'
|
||||
hw_platform: 'Sphinx (GR712 - LEON3FT SPARC)'
|
||||
start_date: 'Nov. 16, 2022'
|
||||
end_date: 'Ongoing'
|
||||
target: 'Asteroids and Comets'
|
||||
link: 'https://www.jpl.nasa.gov/missions/near-earth-asteroid-scout-neascout'
|
||||
image_credit: 'MSFC, EMMETT GIVEN'
|
||||
# OWLS
|
||||
- bg_image: '../../assets/images/projects/owls.png'
|
||||
bg_position: 50% 25%
|
||||
name: 'OWLS (Ocean Worlds Life Surveyor instrument)'
|
||||
type: 'Instrument'
|
||||
nasa_center_company: 'NASA JPL'
|
||||
os: '-'
|
||||
hw_platform: '-'
|
||||
start_date: '-'
|
||||
end_date: '-'
|
||||
target: 'Ocean Worlds'
|
||||
link: 'https://www.jpl.nasa.gov/go/owls'
|
||||
image_credit: 'NASA/JPL-Caltech'
|
||||
# CADRE
|
||||
- bg_image: '../../assets/images/projects/cadre.png'
|
||||
bg_position: 50% 15%
|
||||
name: 'CADRE (Cooperative Autonomous Distributed Robotic Explorers)'
|
||||
type: 'Rover, Technology Demonstration'
|
||||
nasa_center_company: 'NASA JPL'
|
||||
os: 'Linux'
|
||||
hw_platform: 'Snapdragon 821'
|
||||
start_date: '2025'
|
||||
end_date: '-'
|
||||
target: "Earth's Moon"
|
||||
link: 'https://www.jpl.nasa.gov/missions/cadre'
|
||||
image_credit: 'NASA/JPL-Caltech'
|
||||
- bg_image: '../../assets/images/projects/coldarm.png'
|
||||
bg_position: 50% 50%
|
||||
name: 'COLDArm (Cold Operable Lunar Deployable Arm)'
|
||||
type: 'Robotic arm'
|
||||
nasa_center_company: 'NASA JPL'
|
||||
os: '-'
|
||||
hw_platform: '-'
|
||||
start_date: '-'
|
||||
end_date: '-'
|
||||
target: 'N/A'
|
||||
link: 'https://www.nasa.gov/feature/cold-operable-lunar-deployable-arm-coldarm/'
|
||||
image_credit: 'NASA/JPL-Caltech'
|
||||
|
||||
homepage: https://fprime.jpl.nasa.gov/ # Forces homepage link not to include versioning info
|
||||
|
||||
|
||||
|
||||
@ -183,9 +67,9 @@ extra_css:
|
||||
plugins:
|
||||
- search # enables search
|
||||
- mike:
|
||||
# symlink are not allowed in our usage of GH Pages so we have to use copy
|
||||
# symlink are not allowed in GH Pages so if website needs to be deployed on GH Pages, use `copy` instead
|
||||
# see https://github.blog/changelog/2023-02-21-github-pages-deprecating-symlinks-in-non-actions-builds/
|
||||
alias_type: copy
|
||||
alias_type: symlink
|
||||
canonical_version: latest
|
||||
- open-in-new-tab
|
||||
- multirepo:
|
||||
@ -258,83 +142,74 @@ markdown_extensions:
|
||||
|
||||
# Custom navigation
|
||||
nav:
|
||||
- Home: 'index.md'
|
||||
- Overview:
|
||||
- overview/index.md
|
||||
- 'Powerful Software Architecture': overview/powerful-swa.md
|
||||
- 'Streamline Software Development': overview/streamline-sd.md
|
||||
- 'F´ Projects': overview/projects.md
|
||||
- Home: '../'
|
||||
- Overview: '../overview'
|
||||
- Getting Started:
|
||||
- getting-started/index.md
|
||||
- 'Installation and Troubleshooting': getting-started/installing-fprime.md
|
||||
- docs/getting-started/index.md
|
||||
- 'Installation and Troubleshooting': docs/getting-started/installing-fprime.md
|
||||
- Documentation:
|
||||
- documentation/index.md
|
||||
- docs/index.md
|
||||
- Tutorials:
|
||||
- 'Tutorials Overview': documentation/tutorials/index.md
|
||||
- 'Tutorials Overview': docs/tutorials/index.md
|
||||
- 'Hello World': tutorials-hello-world/docs/hello-world.md
|
||||
- 'LED Blinker': tutorials-led-blinker/docs/led-blinker.md
|
||||
- 'MathComponent': tutorials-math-component/docs/math-component.md
|
||||
- 'Cross-Compilation Setup': documentation/tutorials/cross-compilation.md
|
||||
- 'Cross-Compilation Setup': docs/tutorials/cross-compilation.md
|
||||
- 'Arduino LED Blinker': tutorials-arduino-led-blinker/docs/arduino-led-blinker.md
|
||||
- User Manual:
|
||||
- documentation/user-manual/index.md
|
||||
- docs/user-manual/index.md
|
||||
- Overview:
|
||||
- 'Introduction to F´': documentation/user-manual/overview/full-intro.md
|
||||
- 'The F´ Ground Data System': documentation/user-manual/overview/gds-introduction.md
|
||||
- 'F´ Development Process': documentation/user-manual/overview/development-practice.md
|
||||
- 'A Tour of the Source Tree': documentation/user-manual/overview/source-tree.md
|
||||
- 'Projects and Deployments': documentation/user-manual/overview/proj-dep.md
|
||||
- 'Core Constructs: Ports, Components, and Topologies': documentation/user-manual/overview/port-comp-top.md
|
||||
- 'Data Constructs': documentation/user-manual/overview/cmd-evt-chn-prm.md
|
||||
- 'Data Types and Data Structures': documentation/user-manual/overview/enum-arr-ser.md
|
||||
- 'Unit Testing F´ Components': documentation/user-manual/overview/unit-testing.md
|
||||
- 'Introduction to F´': docs/user-manual/overview/full-intro.md
|
||||
- 'The F´ Ground Data System': docs/user-manual/overview/gds-introduction.md
|
||||
- 'F´ Development Process': docs/user-manual/overview/development-practice.md
|
||||
- 'A Tour of the Source Tree': docs/user-manual/overview/source-tree.md
|
||||
- 'Projects and Deployments': docs/user-manual/overview/proj-dep.md
|
||||
- 'Core Constructs: Ports, Components, and Topologies': docs/user-manual/overview/port-comp-top.md
|
||||
- 'Data Constructs': docs/user-manual/overview/cmd-evt-chn-prm.md
|
||||
- 'Data Types and Data Structures': docs/user-manual/overview/enum-arr-ser.md
|
||||
- 'Unit Testing F´ Components': docs/user-manual/overview/unit-testing.md
|
||||
- Framework:
|
||||
- 'Configuring F´': documentation/user-manual/framework/configuring-fprime.md
|
||||
- 'Autocoded Functions': documentation/user-manual/framework/autocoded-functions.md
|
||||
- 'Constructing the F´ Topology': documentation/user-manual/framework/building-topology.md
|
||||
- 'Asserts in F´': documentation/user-manual/framework/assert.md
|
||||
- 'F´ On Baremetal and Multi-Core Systems': documentation/user-manual/framework/baremetal-multicore.md
|
||||
- 'Application, Manager, Driver Pattern': documentation/user-manual/framework/app-man-drv.md
|
||||
- 'Ground Interface': documentation/user-manual/framework/ground-interface.md
|
||||
- 'Dynamic Memory and Buffer Management': documentation/user-manual/framework/dynamic-memory.md
|
||||
- 'The Hub Pattern': documentation/user-manual/framework/hub-pattern.md
|
||||
- 'settings.ini: Build Settings Configuration': documentation/user-manual/framework/settings.md
|
||||
- 'The F´ CMake Build System': documentation/user-manual/cmake/cmake-intro.md
|
||||
- 'Configuring F´': docs/user-manual/framework/configuring-fprime.md
|
||||
- 'Autocoded Functions': docs/user-manual/framework/autocoded-functions.md
|
||||
- 'Constructing the F´ Topology': docs/user-manual/framework/building-topology.md
|
||||
- 'Asserts in F´': docs/user-manual/framework/assert.md
|
||||
- 'F´ On Baremetal and Multi-Core Systems': docs/user-manual/framework/baremetal-multicore.md
|
||||
- 'Application, Manager, Driver Pattern': docs/user-manual/framework/app-man-drv.md
|
||||
- 'Ground Interface': docs/user-manual/framework/ground-interface.md
|
||||
- 'Dynamic Memory and Buffer Management': docs/user-manual/framework/dynamic-memory.md
|
||||
- 'The Hub Pattern': docs/user-manual/framework/hub-pattern.md
|
||||
- 'settings.ini: Build Settings Configuration': docs/user-manual/framework/settings.md
|
||||
- 'The F´ CMake Build System': docs/user-manual/cmake/cmake-intro.md
|
||||
- 'FPP': 'https://nasa.github.io/fpp/fpp-users-guide.html'
|
||||
- GDS:
|
||||
- "The GDS CLI": documentation/user-manual/gds/gds-cli.md
|
||||
- 'The GDS Dashboard': documentation/user-manual/gds/gds-custom-dashboards.md
|
||||
- 'GDS Dashboard Reference': documentation/user-manual/gds/gds-dashboard-reference.md
|
||||
- 'Integration Test API': documentation/user-manual/gds/gds-test-api-guide.md
|
||||
- 'Sequencing in F´': documentation/user-manual/gds/seqgen.md
|
||||
- "The GDS CLI": docs/user-manual/gds/gds-cli.md
|
||||
- 'The GDS Dashboard': docs/user-manual/gds/gds-custom-dashboards.md
|
||||
- 'GDS Dashboard Reference': docs/user-manual/gds/gds-dashboard-reference.md
|
||||
- 'Integration Test API': docs/user-manual/gds/gds-test-api-guide.md
|
||||
- 'Sequencing in F´': docs/user-manual/gds/seqgen.md
|
||||
- Security:
|
||||
- 'Software Bill of Materials Generation': documentation/user-manual/security/software-bill-of-materials.md
|
||||
- 'Software Bill of Materials': docs/user-manual/security/software-bill-of-materials.md
|
||||
- Design:
|
||||
- 'F´ Software Architecture': documentation/user-manual/design/fprime-architecture.md
|
||||
- 'Numerical Types Design': documentation/user-manual/design/numerical-types.md
|
||||
- 'Communication Adapter Interface': documentation/user-manual/design/communication-adapter-interface.md
|
||||
- 'Package Implementations': documentation/user-manual/design/package-implementations.md
|
||||
- 'FPP JSON Dictionary Specification': documentation/user-manual/design/fpp-json-dict.md
|
||||
- 'Rate Groups and Timeliness': documentation/user-manual/design/rate-group.md
|
||||
- 'F´ Data Products': documentation/user-manual/design/data-products.md
|
||||
- 'State Machines': documentation/user-manual/design/state-machines.md
|
||||
- 'F´ Software Architecture': docs/user-manual/design/fprime-architecture.md
|
||||
- 'Numerical Types Design': docs/user-manual/design/numerical-types.md
|
||||
- 'Communication Adapter Interface': docs/user-manual/design/communication-adapter-interface.md
|
||||
- 'Package Implementations': docs/user-manual/design/package-implementations.md
|
||||
- 'FPP JSON Dictionary Specification': docs/user-manual/design/fpp-json-dict.md
|
||||
- 'Rate Groups and Timeliness': docs/user-manual/design/rate-group.md
|
||||
- 'F´ Data Products': docs/user-manual/design/data-products.md
|
||||
- 'State Machines': docs/user-manual/design/state-machines.md
|
||||
- How To:
|
||||
- documentation/how-to/index.md
|
||||
- 'F´ Library Development': documentation/how-to/develop-fprime-libraries.md
|
||||
- 'F´ Subtopology Development': documentation/how-to/develop-subtopologies.md
|
||||
- 'F´ GDS Plugin Development': documentation/how-to/develop-gds-plugins.md
|
||||
- 'Porting F´ To a New Platform': documentation/how-to/porting-guide.md
|
||||
- docs/how-to/index.md
|
||||
- 'F´ Library Development': docs/how-to/develop-fprime-libraries.md
|
||||
- 'F´ Subtopology Development': docs/how-to/develop-subtopologies.md
|
||||
- 'F´ GDS Plugin Development': docs/how-to/develop-gds-plugins.md
|
||||
- 'Porting F´ To a New Platform': docs/how-to/porting-guide.md
|
||||
- Reference:
|
||||
- documentation/reference/index.md
|
||||
- 'C++ Documentation': 'documentation/reference/api/cpp/html/index.html'
|
||||
- 'Software Design Documents': 'documentation/reference/sdd/index.md'
|
||||
- docs/reference/index.md
|
||||
- 'C++ Documentation': docs/reference/api/cpp/html/index.html
|
||||
- 'F´ Components SDDs': docs/reference/sdd.md
|
||||
- 'FPP Language Specification': https://nasa.github.io/fpp/fpp-spec.html
|
||||
- 'CMake User API': 'documentation/user-manual/cmake/cmake-api.md'
|
||||
- 'GDS Developers Guide': documentation/reference/gds-cli-dev.md
|
||||
- Support:
|
||||
- support/index.md
|
||||
- 'Publications': support/publications.md
|
||||
- Events:
|
||||
- events/index.md
|
||||
- events/event-request.md
|
||||
|
||||
- 'CMake User API': docs/user-manual/cmake/cmake-api.md
|
||||
- 'GDS Developers Guide': docs/reference/gds-cli-dev.md
|
||||
- Support: '../support'
|
||||
- Events: '../events'
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
---
|
||||
title: F Prime Overview
|
||||
template: overview.html
|
||||
---
|
||||
|
||||
[View the F Prime Overview page here](https://fprime.jpl.nasa.gov/latest/overview/)
|
||||
@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Powerful Software Architecture
|
||||
template: powerful-swa.html
|
||||
---
|
||||
|
||||
[Learn more about F Prime's Powerful Software Architecture here](https://fprime.jpl.nasa.gov/latest/overview/powerful-swa)
|
||||
@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Projects
|
||||
template: projects.html
|
||||
---
|
||||
|
||||
[View the F Prime Projects page here](https://fprime.jpl.nasa.gov/latest/overview/projects/)
|
||||
@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Streamline Software Development
|
||||
template: streamline-sd.html
|
||||
---
|
||||
|
||||
[Learn more about how to streamline software development with F Prime here](https://fprime.jpl.nasa.gov/latest/overview/streamline-sd)
|
||||
@ -42,7 +42,7 @@ This guide is for programmers who intend to maintain and develop code for the Gr
|
||||
|
||||
### Intended
|
||||
|
||||

|
||||

|
||||
|
||||
The intended architecture for the CLI is:
|
||||
|
||||
@ -56,7 +56,7 @@ The CLI will interact with the GDS through an appropriate API, which the CLI mod
|
||||
|
||||
Not including imports used only for type hints, or dependencies for modules not part of the GDS CLI source code (generated using [pydeps](https://pydeps.readthedocs.io/en/latest/):
|
||||
|
||||

|
||||

|
||||
|
||||
> [!NOTE]
|
||||
> The above graph has arrows pointing **to** the module that does the importing and away from the dependency, and does not include Python standard library imports.
|
||||
@ -67,7 +67,7 @@ Not including imports used only for type hints, or dependencies for modules not
|
||||
|
||||
### Dataflow
|
||||
|
||||

|
||||

|
||||
|
||||
### Dependencies
|
||||
|
||||
@ -18,13 +18,21 @@ Technical reference for the F Prime C++ API, CMake API, FPP language specificati
|
||||
|
||||
[View C++ Documentation](./api/cpp/html/index.html){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__FPP Documentation__</span>
|
||||
- <span class="card-title">__F´ Components SDDs__</span>
|
||||
|
||||
---
|
||||
|
||||
Software Design Documents (SDD) capture the design of the F´ core components.
|
||||
|
||||
[View F´ Components SDDs](sdd.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__FPP Language Specification__</span>
|
||||
|
||||
---
|
||||
|
||||
This document describes F Prime Prime, also known as FPP or F Double Prime.
|
||||
|
||||
[View FPP Documentation](fpp-user-guide.md){ .md-button .md-button--primary }
|
||||
[View FPP Language Spec](https://nasa.github.io/fpp/fpp-spec.html){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__CMake User API__</span>
|
||||
|
||||
@ -34,13 +42,5 @@ Technical reference for the F Prime C++ API, CMake API, FPP language specificati
|
||||
|
||||
[View CMake User API Documentation](../user-manual/cmake/cmake-api.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__GDS CLI Design__</span>
|
||||
|
||||
---
|
||||
|
||||
This guide is for programmers who intend to maintain and develop code for the Ground Data System's command-line interface suite.
|
||||
|
||||
[View GDS CLI - Developer's Guide](gds-cli-dev.md){ .md-button .md-button--primary }
|
||||
|
||||
|
||||
</div>
|
||||
6
docs/reference/sdd.md
Normal file
@ -0,0 +1,6 @@
|
||||
# F´ Components SDDs
|
||||
|
||||
Software Design Documents (SDD) are intended to capture the design of an F´ component or module. These are located in the source tree of the framework.
|
||||
|
||||
### Index
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Support
|
||||
template: support.html
|
||||
---
|
||||
|
||||
[View the F Prime Support page here](https://fprime.jpl.nasa.gov/latest/support/)
|
||||
@ -1,4 +0,0 @@
|
||||
# Publications
|
||||
|
||||
- [F Prime: An Open-Source Framework for Small-Scale Flight Software Systems](https://digitalcommons.usu.edu/smallsat/2018/all2018/328/)
|
||||
- [FPP: A Modeling Language for F Prime](https://dataverse.jpl.nasa.gov/dataset.xhtml?persistentId=hdl:2014/55048)
|
||||
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
@ -15,7 +15,7 @@ Tutorials walk through the essentials of F Prime development, starting with the
|
||||
|
||||
The Hello World tutorial shows how to create an F Prime project and how to design, implement, and test a basic F Prime component. We recommend that new users of F Prime start with this tutorial.
|
||||
|
||||
[View Hello World Tutorial](../../tutorials-hello-world/docs/hello-world/){ .md-button .md-button--primary }
|
||||
[View Hello World Tutorial](../../tutorials-hello-world/docs/hello-world.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__LED Blinker__</span>
|
||||
|
||||
@ -26,7 +26,7 @@ Tutorials walk through the essentials of F Prime development, starting with the
|
||||
> [!NOTE]
|
||||
> This tutorial can be run without hardware with the exception of section 6 “Running on Hardware”.
|
||||
|
||||
[View LED Blinker Tutorial](../../tutorials-led-blinker/docs/led-blinker/){ .md-button .md-button--primary }
|
||||
[View LED Blinker Tutorial](../../tutorials-led-blinker/docs/led-blinker.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__Math Component__</span>
|
||||
|
||||
@ -34,7 +34,7 @@ Tutorials walk through the essentials of F Prime development, starting with the
|
||||
|
||||
The Math Component tutorial shows how to construct an F Prime application with user-defined ports and data types. It covers more advanced uses of events, telemetry, commands, and parameters. It also covers unit testing of F Prime components.
|
||||
|
||||
[View Math Component Tutorial](../../tutorials-math-component/docs/math-component/){ .md-button .md-button--primary }
|
||||
[View Math Component Tutorial](../../tutorials-math-component/docs/math-component.md){ .md-button .md-button--primary }
|
||||
|
||||
- <span class="card-title">__Cross-Compilation Setup Tutorial__</span>
|
||||
|
||||
@ -50,7 +50,7 @@ Tutorials walk through the essentials of F Prime development, starting with the
|
||||
|
||||
This project is an implementation of the F´ LED Blinker ARM Linux Tutorial which will allow you to test on Arduino-based microcontrollers using the `fprime-arduino` toolchain instead of `fprime-arm-linux`.
|
||||
|
||||
[View Arduino LED Blinker Tutorial](../../tutorials-arduino-led-blinker/docs/arduino-led-blinker/){ .md-button .md-button--primary }
|
||||
[View Arduino LED Blinker Tutorial](../../tutorials-arduino-led-blinker/docs/arduino-led-blinker.md){ .md-button .md-button--primary }
|
||||
|
||||
|
||||
</div>
|
||||
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
@ -6,7 +6,7 @@ to operate with the standard F´ uplink and downlink components.
|
||||
|
||||
Implementors of this interface are referred to as *Communication Adapters*.
|
||||
|
||||

|
||||

|
||||
|
||||
The communication adapter interface protocol is designed to work alongside the framer status protocol and the com queue
|
||||
protocol to ensure that data messages do not overload a communication interface. These protocols are discussed below.
|
||||
@ -56,17 +56,17 @@ components:
|
||||
1. A **data product manager**.
|
||||
This component allocates memory for empty containers.
|
||||
It also forwards filled containers to the data product writer.
|
||||
See [`Svc::DpManager`](../../reference/sdd/Svc/DpManager/docs/sdd.md).
|
||||
See [`Svc::DpManager`](../../../Svc/DpManager/docs/sdd.md).
|
||||
|
||||
1. A **data product writer**.
|
||||
This component receives filled containers from data product
|
||||
producers. It writes the contents of the containers to non-volatile
|
||||
storage. See [`Svc::DpWriter`](../../reference/sdd/Svc/DpWriter/docs/sdd.md).
|
||||
storage. See [`Svc::DpWriter`](../../../Svc/DpWriter/docs/sdd.md).
|
||||
|
||||
1. A **data product catalog**.
|
||||
This component maintains a database of available data
|
||||
products. By command, it downlinks and deletes data products.
|
||||
See [`Svc::DpCatalog`](../../reference/sdd/Svc/DpCatalog/docs/sdd.md).
|
||||
See [`Svc::DpCatalog`](../../../Svc/DpCatalog/docs/sdd.md).
|
||||
|
||||
1. A **data product processor**.
|
||||
This component is not yet developed.
|
||||
@ -111,7 +111,7 @@ and [_The FPP Language Specification_](https://nasa.github.io/fpp/fpp-spec.html)
|
||||
|
||||
FPP provides the following special ports for managing data products:
|
||||
|
||||
1. A **product get port** of type [`Fw::DpGet`](../../reference/sdd/Fw/Dp/docs/sdd.md).
|
||||
1. A **product get port** of type [`Fw::DpGet`](../../../Fw/Dp/docs/sdd.md).
|
||||
This is an output port for synchronously requesting
|
||||
memory from a buffer manager.
|
||||
The request is served on the thread that invokes the port
|
||||
@ -121,7 +121,7 @@ FPP provides the following special ports for managing data products:
|
||||
product get port productGetOut
|
||||
```
|
||||
|
||||
1. A **product request port** of type [`Fw::DpRequest`](../../reference/sdd/Fw/Dp/docs/sdd.md).
|
||||
1. A **product request port** of type [`Fw::DpRequest`](../../../Fw/Dp/docs/sdd.md).
|
||||
This is an output port for asynchronously requesting memory
|
||||
from a data product manager.
|
||||
The request is served on the thread of the data product manager.
|
||||
@ -132,14 +132,14 @@ FPP provides the following special ports for managing data products:
|
||||
product request port productRequestOut
|
||||
```
|
||||
|
||||
1. A **product receive port** of type [`Fw::DpResponse`](../../reference/sdd/Fw/Dp/docs/sdd.md).
|
||||
1. A **product receive port** of type [`Fw::DpResponse`](../../../Fw/Dp/docs/sdd.md).
|
||||
This is an input port for receiving an empty container in response
|
||||
to an asynchronous request. Example syntax:
|
||||
```
|
||||
async product recv port productRecvIn
|
||||
```
|
||||
|
||||
1. A **product send port** of type [`Fw::DpSend`](../../reference/sdd/Fw/Dp/docs/sdd.md).
|
||||
1. A **product send port** of type [`Fw::DpSend`](../../../Fw/Dp/docs/sdd.md).
|
||||
This is an output port for sending a filled container
|
||||
to a data product writer. Example syntax:
|
||||
```
|
||||
@ -213,7 +213,7 @@ the following API elements:
|
||||
priorities, and record IDs.
|
||||
|
||||
1. A member class _C_ `::DpContainer`. This class is derived from
|
||||
[`Fw::DpContainer`](../../reference/sdd/Fw/Dp/docs/sdd.md) and represents a container
|
||||
[`Fw::DpContainer`](../../../Fw/Dp/docs/sdd.md) and represents a container
|
||||
specialized to the data products defined in _C_.
|
||||
Each instance of _C_ `::DpContainer` is a wrapper for an `Fw::Buffer` _B_,
|
||||
which points to allocated memory.
|
||||
@ -222,7 +222,7 @@ defined in _C_ into the memory pointed to by _B_.
|
||||
There is one operation _C_ `::DpContainer::serialize_` _R_
|
||||
for each record _R_ defined in _C_.
|
||||
For the serialized format of each record, see the documentation
|
||||
for [`Fw::DpContainer`](../../reference/sdd/Fw/Dp/docs/sdd.md).
|
||||
for [`Fw::DpContainer`](../../../Fw/Dp/docs/sdd.md).
|
||||
|
||||
1. If _C_ has a `product` `get` port, a member function `dpGet_`
|
||||
_c_ for each container _c_ defined in _C_.
|
||||
@ -452,19 +452,19 @@ data products.
|
||||
|
||||
**Requesting and sending data products:**
|
||||
See the example uses in the documentation for
|
||||
[`Svc::DpManager`](../../reference/sdd/Svc/DpManager/docs/sdd.md).
|
||||
[`Svc::DpManager`](../../../Svc/DpManager/docs/sdd.md).
|
||||
The component referred to as `producer` in that document
|
||||
is a data product producer.
|
||||
|
||||
**Writing data products to non-volatile storage:**
|
||||
See the example uses in the documentation for
|
||||
[`Svc::DpWriter`](../../reference/sdd/Svc/DpWriter/docs/sdd.md).
|
||||
[`Svc::DpWriter`](../../../Svc/DpWriter/docs/sdd.md).
|
||||
The component referred to as `producer` in that document
|
||||
is a data product producer.
|
||||
|
||||
**Cataloging and downlinking data products:**
|
||||
For a preliminary implementation of the data product catalog,
|
||||
see [`Svc::DpCatalog`](../../reference/sdd/Svc/DpCatalog/docs/sdd.md).
|
||||
see [`Svc::DpCatalog`](../../../Svc/DpCatalog/docs/sdd.md).
|
||||
|
||||
**Processing data products:**
|
||||
TODO
|
||||
@ -7,7 +7,7 @@ groups". The `ActiveRateGroup` component contains multiple output `Sched` ports
|
||||
rate. Thus, components having an input `Sched` port can run a repeated action at this rate. Rate groups are driven by a
|
||||
central rate group driver and achieve their rates by dividing the incoming signal from the rate group driver.
|
||||
|
||||

|
||||

|
||||
|
||||
## Rate Group Driver
|
||||
|
||||
@ -223,7 +223,7 @@ class for _M_](#sm-base-class).
|
||||
The following class diagram shows these properties, for a state
|
||||
machine `A.B.M` instantiated in a component `C`:
|
||||
|
||||

|
||||

|
||||
|
||||
Each state machine implementation class has the following
|
||||
elements in its interface.
|
||||
@ -40,7 +40,7 @@ are typically three layers to this design pattern:
|
||||
These layers are further discussed below using the example shown in Figure 1. Each layer defines components for only
|
||||
that layer’s functionality.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 1.** The three layers to a component model as shown in an example that drives a robotic arm using four servos
|
||||
attached to an I2C bus.
|
||||
@ -113,7 +113,7 @@ This component is designed for simplicity of implementation. System memory usage
|
||||
multiplied by the size of the memory regions. This memory is allocated as a large array on the stack. Valid memory
|
||||
allocations will always be returned or a software error will be tripped.
|
||||
|
||||
[Svc.StaticMemory is described in more detail](../../reference/sdd/Svc/StaticMemory/docs/sdd.md).
|
||||
[Svc.StaticMemory is described in more detail](../../../Svc/StaticMemory/docs/sdd.md).
|
||||
|
||||
**When To Use Svc.StaticMemory**
|
||||
|
||||
@ -161,7 +161,7 @@ size larger than the request for an available buffer, which it then marks as use
|
||||
|
||||
There is no restriction on the ordering of calls for allocation and deallocation. Clients may have multiple outstanding allocations and thus asynchronous usage of these allocations is supported.
|
||||
|
||||
For more details, see the [Svc.BufferManager SDD](../../reference/sdd/Svc/BufferManager/docs/sdd.md).
|
||||
For more details, see the [Svc.BufferManager SDD](../../../Svc/BufferManager/docs/sdd.md).
|
||||
|
||||
**When To Use Svc.BufferManager**
|
||||
|
||||
@ -12,7 +12,7 @@ have two layers: framing and driver. Uplink handles data coming from the remote
|
||||
data going to the remote interface, framing handles serializing and deserializing data to and from byte buffers, and the
|
||||
driver layer handles writing data to and from the hardware.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
Also of note is the framing protocol, which breaks out the handling of the byte serialization for quick adaptation. Each
|
||||
@ -84,7 +84,7 @@ nothing to retry.
|
||||
|
||||
Uplink handles received data, unpacks F´ data types, and routes these to the greater F´ system. In a typical formation,
|
||||
these com buffers are sent to the command dispatcher and raw buffers are sent to the file uplink. Uplink is implemented with
|
||||
the [Svc.Deframer](../../reference/sdd/Svc/Deframer/docs/sdd.md) component. This component may be rate group driven in which case
|
||||
the [Svc.Deframer](../../../Svc/Deframer/docs/sdd.md) component. This component may be rate group driven in which case
|
||||
it polls for data or it may be driven by a driver's receive output port in which case it handles the data on that
|
||||
incoming port call. Svc.Deframer implements the
|
||||
[DeframingProtocolInterface](../../reference/api/cpp/html/class_svc_1_1_deframing_protocol_interface.html).
|
||||
@ -99,7 +99,7 @@ complete. This buffer is updated with the latest data and then processed for mes
|
||||
### Downlink
|
||||
|
||||
Downlink takes in F´ data and wraps the data with bytes supporting the necessary protocol. This assembled data is then
|
||||
sent to the driver for handling. Downlink is implemented with the [Svc.Framer](../../reference/sdd/Svc/Framer/docs/sdd.md)
|
||||
sent to the driver for handling. Downlink is implemented with the [Svc.Framer](../../../Svc/Framer/docs/sdd.md)
|
||||
component, which implements the [FramingProtocolInterface](../../reference/api/cpp/html/class_svc_1_1_framing_protocol_interface.html).
|
||||
|
||||
Svc.Framer packs F´ data using a [Svc::FramingProtocol](../../reference/api/cpp/html/class_svc_1_1_framing_protocol.html), which
|
||||
@ -8,7 +8,7 @@ connected to the Hub's serialization ports. These ports allow any inputs which s
|
||||
across the divide. On the other side of the divide, the Hub unwraps the calls back into the typed ports. In this way,
|
||||
typed ports are connected to typed ports using the Hub as an intermediary to get across the divide.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 9. Hub pattern.** Each hub instance is responsible for connecting to a remote node. Input port calls are
|
||||
repeated to corresponding output ports on a remote hub. These hubs have been demonstrated on Sockets,
|
||||
@ -16,5 +16,5 @@ ARINC 653 Channels, High-speed hardware buses between nodes, and UARTs between n
|
||||
|
||||
## Generic Hub
|
||||
|
||||
There is now a standard implementation of the hub pattern. The [GenericHub](../../reference/sdd/Svc/GenericHub/docs/sdd.md) is an
|
||||
There is now a standard implementation of the hub pattern. The [GenericHub](../../../Svc/GenericHub/docs/sdd.md) is an
|
||||
implementation of the hub pattern that passes through F´ ports and `Fw::Buffer`s.
|
||||
@ -21,7 +21,7 @@ in more environments.
|
||||
- [events](#events)
|
||||
- [Conclusion](#conclusion)
|
||||
|
||||

|
||||

|
||||
|
||||
## What is `fprime-cli`?
|
||||
|
||||
@ -46,7 +46,7 @@ Let's see how you can use these for yourself!
|
||||
|
||||
`fprime-cli` is automatically installed when installing F´. In order to use it, make sure that your virtual environment
|
||||
has been activated. To ensure the tool is ready, run `fprime-cli -h` and you should see the help usage. If an error is
|
||||
received, ensure F´ is properly installed via [the installation guide](../../../getting-started/installing-fprime.md) and that your virtual
|
||||
received, ensure F´ is properly installed via [the installation guide](../../getting-started/installing-fprime.md) and that your virtual
|
||||
environment has been activated.
|
||||
|
||||
`fprime-cli` connects to the `fprime-gds` ground system layer. Should the user wish to run `fprime-cli` make sure to
|
||||
@ -23,7 +23,7 @@ A more complete reference is available here: [GDS Dashboard Reference](gds-dashb
|
||||
- [An Example Dashboard Configuration](#an-example-dashboard-configuration)
|
||||
- [Conclusion](#conclusion)
|
||||
|
||||

|
||||

|
||||
|
||||
## How to Use the Dashboard
|
||||
|
||||
@ -114,7 +114,7 @@ This section will provide an example dashboard configuration file. It shows how
|
||||
structural components as well as examples of using the existing F´ display components. The dashboard we will explore
|
||||
will be rendered into the following display.
|
||||
|
||||

|
||||

|
||||
|
||||
This view was rendered from the following XML. It is designed to be somewhat self-descriptive and should act as a good
|
||||
starting point for building your own dashboards.
|
||||
@ -529,7 +529,7 @@ The `start` argument specifies the Current Search Scope in an existing history.
|
||||
|
||||
The `timeout` argument specifies the Future Search Scope (FSS) in seconds. FSS is how long a search should await until the search criteria is met. Searches that await a yet-to-be-received item can only specify how long in seconds. A `timeout` of zero seconds will skip awaiting at all.
|
||||
|
||||

|
||||

|
||||
|
||||
All search methods can either be configured with CSS, FSS, or both.
|
||||
|
||||
@ -592,7 +592,7 @@ There are four columns in this file. They are summarized in the table below:
|
||||
| Message| A string message recording test behavior.
|
||||
|
||||
The following image is an excerpt from an API log generated by the Ref App integration tests.
|
||||

|
||||

|
||||
|
||||
The following table summarizes the color meanings from API-generated messages.
|
||||
|
||||
@ -52,7 +52,7 @@ When commands are defined for a component, the autocoder automatically adds port
|
||||
commands, and reporting an execution status when finished. Each component that handles commands should be hooked up to
|
||||
the command dispatcher connecting the registration, dispatch, and response ports in parallel.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 4. Command dispatcher.** The command dispatcher receives the raw buffer containing the command and arguments.
|
||||
The command opcode is extracted, and a lookup table is used to find the handling component. The argument buffer is then
|
||||
@ -65,7 +65,7 @@ to the command dispatcher through the command sequencer is an alternate path to
|
||||
|
||||
### Command Sequencing
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 5. Command sequence.** The command sequencer loads a sequence file from the file system, sends the command,
|
||||
and waits for the response for each command in the sequence. A failed response terminates the sequence,
|
||||
@ -112,7 +112,7 @@ Events first acquire a time tag to represent when they occurred and then are typ
|
||||
component on their way to be sent down to the ground. This logger component both processes the event and also recognizes
|
||||
and begins responses for FATAL severity events.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 6. Event log.** The component implementation calls a function to generate the event. The base class retrieves the
|
||||
time tag from the time source component. The component sends the event to the event log component, which reads it from
|
||||
@ -140,7 +140,7 @@ The telemetry database acts as a double-buffered store for telemetry values. Com
|
||||
any time; however, the current value will be read from the telemetry database and sent to the ground at a set rate.
|
||||
Components using this service should hook up the telemetry port to the telemetry database (`Svc::TlmChan`).
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 7. Telemetry database.** The telemetry database has a double-buffered array of telemetry buffers. The base
|
||||
class function retrieves the time tag from the time source component and then writes the updated value to the telemetry
|
||||
@ -169,7 +169,7 @@ implementation class can retrieve the value whenever the parameter value is need
|
||||
The framework provides the ability to store these parameters in the parameter database (`Svc::PrmDb`). This component
|
||||
provides ports to get and set parameters, which are stored in a file to persist across reboots.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 8. Parameter manager.** The parameter manager or database loads the file containing parameters from the file
|
||||
system during initialization. The initialization subsequently calls *loadParameters()* on components with parameters.
|
||||
@ -25,7 +25,7 @@ will give you a quick introduction to what the F´ GDS is and how you can use it
|
||||
- [Dashboard](#dashboard)
|
||||
- [Conclusion](#conclusion)
|
||||
|
||||

|
||||

|
||||
|
||||
## What is the GDS?
|
||||
|
||||
@ -46,7 +46,7 @@ project too!
|
||||
## Getting Started
|
||||
|
||||
The F´ GDS is a minimal amount of Python code and JavaScript that is automatically installed when you run the F´
|
||||
installation instructions in the [installation guide](../../../getting-started/installing-fprime.md). This guide will walk the user through running
|
||||
installation instructions in the [installation guide](../../getting-started/installing-fprime.md). This guide will walk the user through running
|
||||
the GDS, setting options, and letting the user loose to run the system.
|
||||
|
||||
|
||||
@ -194,7 +194,7 @@ optional arguments:
|
||||
When running the GDS using the default UI, the GDS should launch a browser tab that looks similar to the following. In
|
||||
general, the available tabs are listed across the top and each view can be selected by clicking on those tabs.
|
||||
|
||||

|
||||

|
||||
|
||||
Across the top of the screen is a series of tabs: "Commanding", "Events", etc. Each of those tabs represents a piece of
|
||||
the GDS's functionality. Each view opens when you click on it. Next, we'll go through each tab's functions in more
|
||||
@ -225,7 +225,7 @@ arguments through the GDS and to the embedded system, while "Clear Arguments" wi
|
||||
to their default values. Should an error occur in the GDS, it will be shown below the inputs. The commanding tab is
|
||||
shown below. See: [Commands](cmd-evt-chn-prm.md#commands)
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
Below the command input is the "Command History" table. This records all the commands sent with their associated
|
||||
@ -240,7 +240,7 @@ sending component and is useful to retry the transmission of a command.
|
||||
The Events tab will display a table of all the "Events" that have happened on the embedded system and been received by
|
||||
the GDS. See: [Events](cmd-evt-chn-prm.md#events). The Events tab is shown below.
|
||||
|
||||

|
||||

|
||||
|
||||
Each event is color-coded based on its "Event Severity;" there are 7 different kinds of severities:
|
||||
|
||||
@ -266,7 +266,7 @@ embedded system. These represent the latest values and, by default, only telemet
|
||||
by the GDS are shown. Channels with no received value are not displayed but can be configured (described below). Only
|
||||
the most recently received value for each channel is shown. This view can be seen below.
|
||||
|
||||

|
||||

|
||||
|
||||
If you want to view a full list of all available channels, set a view to watch specific channels, or monitor all
|
||||
channels even those which have not arrived, you can click on the "Edit View". This will show all available channels
|
||||
@ -275,7 +275,7 @@ To apply the view, click the "Done". Import and Export allow downloading and up
|
||||
views such that they may be saved. The "Edit View" is shown below.
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
Just like the other tables, you can sort or filter these channel items.
|
||||
@ -289,7 +289,7 @@ before committing to an uplink. Finally, the user should press the "Submit Uplin
|
||||
add them to the outgoing queue, and start the uplink. Uplink progress can be monitored and the queue can be paused to
|
||||
temporarily stop the uplink. Files are limited to no more than 32Mb.
|
||||
|
||||

|
||||

|
||||
|
||||
### Downlink
|
||||
|
||||
@ -297,7 +297,7 @@ The downlink tab monitors the downlink of files into the GDS. Any files that hav
|
||||
`fileDownlink.FileDownlink_SendFile` command will be tracked in this tab once the packets arrive in the F´ GDS. The
|
||||
progress of this download is tracked, and once the file has been downlinked, the user has the ability to download the files.
|
||||
|
||||

|
||||

|
||||
|
||||
### Logs
|
||||
|
||||
@ -305,7 +305,7 @@ The logs tab allows the user to monitor logs produced on-disk by the GDS. This i
|
||||
see those without going to the GDS server's ground system. Select a log from the list to see its contents, which update
|
||||
in real time.
|
||||
|
||||

|
||||

|
||||
|
||||
There are several standard logs that appear:
|
||||
- `ThreadedTCP.log`: log from the GDS middleware server linking comm to the GDS actual
|
||||
@ -322,7 +322,7 @@ The dashboard lets users combine the tools from the other tabs onto a single scr
|
||||
interface for working with the GDS. You can learn more about how this works in the
|
||||
[Dashboard guide](../gds/gds-custom-dashboards.md). An example is shown below:
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## Conclusion
|
||||
@ -43,7 +43,7 @@ synchronous nature of the port along with the directionality is combined in the
|
||||
Finally, a port can be defined as "guarded", which means invocations into the port are limited to a single invocation
|
||||
at a time by a component-wide mutex. This is also combined into the "kind" attribute.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 1. Port connectivity.** Ports are connected to ports of the same type. When used by a *component*, the ports
|
||||
can define directionality. Using *serialized ports* (see below), serializes the call and passes it to a data buffer
|
||||
@ -68,7 +68,7 @@ design and is known as the "kind" of port's instantiation.
|
||||
> [!NOTE]
|
||||
> A port's type (aka data_type) is dependent on the design and usage in the deployment.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 2. Port Kinds Used on a Component.** For the *synchronous port*, the call directly invokes derived functions
|
||||
without the use of a queue. For a *guarded port*, the call directly invokes derived functions, but only after locking a
|
||||
@ -106,7 +106,7 @@ ports with return types. These ports allow serialized data to be passed around b
|
||||
the type contained. The [Hub pattern](../framework/hub-pattern.md) often uses serialized ports such that data can be routed
|
||||
across an address-space gap in a generic fashion.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 3. Serialization ports.** Input ports input the serialized buffer, while the output ports output
|
||||
the serialized buffer.
|
||||
@ -124,7 +124,7 @@ The F′ architecture is based on decomposing the system into modules called com
|
||||
a discrete portion of the system's logic (Figure 10); The component architecture implies usage patterns, as well as
|
||||
usage constraints.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 10. Example of F′ component architecture pattern.**
|
||||
|
||||
@ -133,7 +133,7 @@ specific interactions with other components using ports. There should be no non-
|
||||
Components are responsible for handling the invocations of ports used in the component. They may also define and handle
|
||||
commands as well as emit telemetry and events.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 11. Encapsulation of Behavior** The component handles the port behaviors as well as executes the commands and
|
||||
then produces the telemetry. It does not directly interact with other components.
|
||||
@ -178,7 +178,7 @@ class and contains only the user-specific implementation for the component.
|
||||
|
||||
These are shown in Figure 12.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 12. Example of component class hierarchy.**
|
||||
|
||||
@ -218,7 +218,7 @@ software. There should be no code dependencies between the components, only depe
|
||||
component's ability to communicate with other components is enabled through the interconnections specified in the
|
||||
topology. Alternate implementations can therefore easily be swapped, for example with simulation versions.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 13. Example of a topology.**
|
||||
|
||||
@ -15,7 +15,7 @@ explanation of projects and deployments and how they differ is explained in this
|
||||
To illustrate this, the Mars Helicopter project is an excellent example. Mars Helicopter uses one project that defines
|
||||
two deployments: one for a base station, and one for the mobile helicopter. This is shown in Figure 1.
|
||||
|
||||

|
||||

|
||||
**Figure 1. Mars Helicopter flight software components.**
|
||||
|
||||
## Projects
|
||||
@ -17,7 +17,7 @@ early and system-level issues only appear during integration.
|
||||
F′ provides the support for unit testing at the component level. The
|
||||
overall framework for unit testing is shown in Figure 1.
|
||||
|
||||

|
||||

|
||||
|
||||
**Figure 1.** Unit testing framework overview.
|
||||
|
||||