Update docs structure for website versioning improvements (#3150)

---------

Co-authored-by: ashleynilo <ashley.k.santiago@jpl.nasa.gov>
This commit is contained in:
Thomas Boyer-Chammard 2025-01-21 14:32:52 -08:00 committed by GitHub
parent b4cfcafb7d
commit 6f1369bbcf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
83 changed files with 201 additions and 393 deletions

5
.gitignore vendored
View File

@ -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/

View File

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

View File

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

View File

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

View File

@ -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.

View File

@ -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/

View File

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

View File

@ -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)

View File

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

View File

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

View File

@ -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"

View File

@ -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")

View File

@ -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)

View File

@ -1,6 +0,0 @@
---
title: Events
template: events.html
---
[View the F Prime Events page here](https://fprime.jpl.nasa.gov/latest/events/)

View File

@ -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)

View File

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

View File

@ -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: 'Qualcomms 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'

View File

@ -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/)

View File

@ -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)

View File

@ -1,6 +0,0 @@
---
title: Projects
template: projects.html
---
[View the F Prime Projects page here](https://fprime.jpl.nasa.gov/latest/overview/projects/)

View File

@ -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)

View File

@ -42,7 +42,7 @@ This guide is for programmers who intend to maintain and develop code for the Gr
### Intended
![](../../img/proposed_architecture.png)
![](../img/proposed_architecture.png)
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/):
![](../../img/overall_dependencies_edited.png)
![](../img/overall_dependencies_edited.png)
> [!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
![](../../img/cli_data_flow.svg)
![](../img/cli_data_flow.svg)
### Dependencies

View File

@ -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
View 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

View File

@ -1,6 +0,0 @@
---
title: Support
template: support.html
---
[View the F Prime Support page here](https://fprime.jpl.nasa.gov/latest/support/)

View File

@ -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)

View File

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

View File

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

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -6,7 +6,7 @@ to operate with the standard F´ uplink and downlink components.
Implementors of this interface are referred to as *Communication Adapters*.
![Communication Adapter Interface](../../../img/com-adapter.png)
![Communication Adapter Interface](../../img/com-adapter.png)
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.

View File

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

View File

@ -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 Groups](../../../img/rate_group.png)
![Rate Groups](../../img/rate_group.png)
## Rate Group Driver

View File

@ -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`:
![State Machine Implementation Class Diagram](../../../img/sm-impl-class-diagram.png)
![State Machine Implementation Class Diagram](../../img/sm-impl-class-diagram.png)
Each state machine implementation class has the following
elements in its interface.

View File

@ -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 layers functionality.
![Application Manager Driver](../../../img/app_man_drv1.png)
![Application Manager Driver](../../img/app_man_drv1.png)
**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.

View File

@ -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**

View File

@ -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.
![Ground Interface Block Diagram](../../../img/ground-interface.jpg)
![Ground Interface Block Diagram](../../img/ground-interface.jpg)
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

View File

@ -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.
![Hub Pattern](../../../img/data_model6.png)
![Hub Pattern](../../img/data_model6.png)
**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.

View File

@ -21,7 +21,7 @@ in more environments.
- [events](#events)
- [Conclusion](#conclusion)
![Landing Image](../../../img/gds_cli_user_guide_cover.png)
![Landing Image](../../img/gds_cli_user_guide_cover.png)
## 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

View File

@ -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)
![Dashboard Intro](../../../img/dashboard_header.png)
![Dashboard Intro](../../img/dashboard_header.png)
## 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.
![Example ](../../../img/example_dashboard.png)
![Example ](../../img/example_dashboard.png)
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.

View File

@ -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.
![Search Scope diagram](../../../img/APISearchScope.png)
![Search Scope diagram](../../img/APISearchScope.png)
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.
![Test Log Example](../../../img/TestLogExample.png)
![Test Log Example](../../img/TestLogExample.png)
The following table summarizes the color meanings from API-generated messages.

View File

@ -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.
![Command Dispatcher](../../../img/data_model1.png)
![Command Dispatcher](../../img/data_model1.png)
**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
![Command Sequencer](../../../img/data_model2.png)
![Command Sequencer](../../img/data_model2.png)
**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.
![Active Logger](../../../img/data_model3.png)
![Active Logger](../../img/data_model3.png)
**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`).
![Telemetry Database](../../../img/data_model4.png)
![Telemetry Database](../../img/data_model4.png)
**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.
![Parameter Database](../../../img/data_model5.png)
![Parameter Database](../../img/data_model5.png)
**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.

View File

@ -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)
![GDS Image](../../../img/gds_gui_events.png)
![GDS Image](../../img/gds_gui_events.png)
## 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.
![Launched Browser Window](../../../img/gds_gui_commanding.png)
![Launched Browser Window](../../img/gds_gui_commanding.png)
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)
![Commanding Tab](../../../img/gds_gui_commanding.png)
![Commanding Tab](../../img/gds_gui_commanding.png)
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.
![Events Tab](../../../img/gds_gui_events.png)
![Events Tab](../../img/gds_gui_events.png)
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.
![Channel GUIs](../../../img/gds_gui_channels.png)
![Channel GUIs](../../img/gds_gui_channels.png)
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.
![Channel Edit GUIs](../../../img/gds_gui_channels_edit.png)
![Channel Edit GUIs](../../img/gds_gui_channels_edit.png)
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.
![Uplink Tab](../../../img/gds_gui_uplink.png)
![Uplink Tab](../../img/gds_gui_uplink.png)
### 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.
![Downlink](../../../img/gds_gui_downlink.png)
![Downlink](../../img/gds_gui_downlink.png)
### 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.
![Logs](../../../img/gds_gui_logs.png)
![Logs](../../img/gds_gui_logs.png)
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:
![Dashboard](../../../img/dashboard_header.png)
![Dashboard](../../img/dashboard_header.png)
## Conclusion

View File

@ -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.
![Port Image](../../../img/core1.png)
![Port Image](../../img/core1.png)
**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.
![Port Instance Kinds](../../../img/core2.png)
![Port Instance Kinds](../../img/core2.png)
**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.
![Serialization Ports](../../../img/core3.png)
![Serialization Ports](../../img/core3.png)
**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.
![Component Architecture](../../../img/core10.png)
![Component Architecture](../../img/core10.png)
**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.
![Example Component](../../../img/core11.png)
![Example Component](../../img/core11.png)
**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.
![Component Class Hierarchy](../../../img/core12.png)
![Component Class Hierarchy](../../img/core12.png)
**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.
![Example Topology](../../../img/core13.png)
![Example Topology](../../img/core13.png)
**Figure 13. Example of a topology.**

View File

@ -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.
![Mars Helicopter](../../../img/proj_dep1.png)
![Mars Helicopter](../../img/proj_dep1.png)
**Figure 1. Mars Helicopter flight software components.**
## Projects

View File

@ -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.
![Test](../../../img/test1.png)
![Test](../../img/test1.png)
**Figure 1.** Unit testing framework overview.