diff --git a/.nav.yml b/.nav.yml index eae26346d34..7134d8ca6fd 100644 --- a/.nav.yml +++ b/.nav.yml @@ -28,7 +28,12 @@ nav: - Design Patterns: docs/user-manual/design-patterns/ - Build System: docs/user-manual/build-system/ - Security: docs/user-manual/security/ - - How To: docs/how-to + - How-To: + - How-To Index: docs/how-to/index.md + - Develop your Project: docs/how-to/develop-your-project/ + - Test your Project: docs/how-to/test-your-project/ + - Integrate Libraries and Platforms: docs/how-to/integrate-libraries-and-platforms/ + - GDS and Operations: docs/how-to/gds-and-operations/ - Reference: - docs/reference/index.md - APIs: diff --git a/docs/how-to/data-products.md b/docs/how-to/dev/data-products.md similarity index 99% rename from docs/how-to/data-products.md rename to docs/how-to/dev/data-products.md index 35dd6b97414..6041a40dfe6 100644 --- a/docs/how-to/data-products.md +++ b/docs/how-to/dev/data-products.md @@ -1,4 +1,4 @@ -# How-To: Generate Data Products +# Generate Data Products This How-To describes **when to use data products**, **how to generate them in flight software**, **how to test them**, and provides guidance for **topology integration** and **ground decoding**. It is intended for engineers who are comfortable with F Prime components and want to add structured, store-and-forward mission data to their system. diff --git a/docs/how-to/define-state-machines.md b/docs/how-to/dev/define-state-machines.md similarity index 99% rename from docs/how-to/define-state-machines.md rename to docs/how-to/dev/define-state-machines.md index 00febacb6f4..a2c0df5e82b 100644 --- a/docs/how-to/define-state-machines.md +++ b/docs/how-to/dev/define-state-machines.md @@ -1,4 +1,4 @@ -# How-To: Define State Machines in F Prime +# Define State Machines in F Prime This guide shows how to define and use state machines in F Prime using the F Prime Modeling Language (FPP). State machines help capture component behavior by modeling modes (states) and transitions explicitly, making complex logic easier to implement, test, and maintain. FPP provides autocoding capabilities to allow users to quickly implement state-defined behavior. diff --git a/docs/how-to/develop-device-driver.md b/docs/how-to/dev/develop-device-driver.md similarity index 100% rename from docs/how-to/develop-device-driver.md rename to docs/how-to/dev/develop-device-driver.md diff --git a/docs/how-to/develop-fprime-libraries.md b/docs/how-to/dev/develop-fprime-libraries.md similarity index 100% rename from docs/how-to/develop-fprime-libraries.md rename to docs/how-to/dev/develop-fprime-libraries.md diff --git a/docs/how-to/develop-subtopologies.md b/docs/how-to/dev/develop-subtopologies.md similarity index 100% rename from docs/how-to/develop-subtopologies.md rename to docs/how-to/dev/develop-subtopologies.md diff --git a/docs/how-to/implement-radio-manager.md b/docs/how-to/dev/implement-radio-manager.md similarity index 99% rename from docs/how-to/implement-radio-manager.md rename to docs/how-to/dev/implement-radio-manager.md index 1da1e3a3db5..da3d88ccd71 100644 --- a/docs/how-to/implement-radio-manager.md +++ b/docs/how-to/dev/implement-radio-manager.md @@ -1,4 +1,4 @@ -# How-To: Implement a Radio Manager Component +# Implement a Radio Manager Component This guide provides step-by-step instructions for implementing a radio manager component using the [Svc.Com Communications Adapter Interface](../reference/communication-adapter-interface.md). A radio manager handles communication with radio hardware, managing both outgoing transmissions (downlink) and incoming receptions (uplink). diff --git a/docs/how-to/python-development.md b/docs/how-to/dev/python-development.md similarity index 99% rename from docs/how-to/python-development.md rename to docs/how-to/dev/python-development.md index 900a7b05d95..157e1021e75 100644 --- a/docs/how-to/python-development.md +++ b/docs/how-to/dev/python-development.md @@ -1,4 +1,4 @@ -# How-To: Develop Components in Python +# Develop Components in Python This guide is a starting point for developing Python-based F Prime applications by constructing select components using Python. diff --git a/docs/how-to/index.md b/docs/how-to/index.md index 356433ee950..6f4ec929966 100644 --- a/docs/how-to/index.md +++ b/docs/how-to/index.md @@ -16,7 +16,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide will walk you through the process of developing GDS plugins. - [View Develop F´ GDS Plugins](develop-gds-plugins.md){ .md-button .md-button--primary } + [View Develop F´ GDS Plugins](ops/develop-gds-plugins.md){ .md-button .md-button--primary } - __F´ Library Development__ @@ -24,7 +24,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This how to will walk you through the structure and best practices in developing an F´ library. - [View Develop F´ Libraries](develop-fprime-libraries.md){ .md-button .md-button--primary } + [View Develop F´ Libraries](dev/develop-fprime-libraries.md){ .md-button .md-button--primary } - __Integrating Third-Party Libraries__ @@ -33,7 +33,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This how to will walk you through how to integrate non-F´ libraries into your F´ project. It will cover multiple approaches based on examples with [OpenCV](https://github.com/opencv/opencv), [OpenSSL](https://github.com/openssl/openssl) and [ETL](https://github.com/etlcpp/etl). - [View Integrating Third-Party Libraries](integrate-external-libraries.md){ .md-button .md-button--primary } + [View Integrating Third-Party Libraries](integrate/integrate-external-libraries.md){ .md-button .md-button--primary } - __Porting F´ To a New Platform__ @@ -41,7 +41,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This how to will walk you through porting F´ to a new platform. - [View Porting Guide](porting-guide.md){ .md-button .md-button--primary } + [View Porting Guide](integrate/implement-osal.md){ .md-button .md-button--primary } - __Implement a Framing Protocol__ @@ -50,7 +50,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you how to implement a custom framing protocol in F Prime flight software and integrate it with the F Prime GDS. - [View Implement a Framing Protocol](custom-framing.md){ .md-button .md-button--primary } + [View Implement a Framing Protocol](integrate/custom-framing.md){ .md-button .md-button--primary } - __Generate Data Products__ @@ -58,7 +58,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you when to use data products, how to generate them, how to test them, and how to integrate them into your topology and ground system. - [View Generate Data Products](data-products.md){ .md-button .md-button--primary } + [View Generate Data Products](dev/data-products.md){ .md-button .md-button--primary } - __Define State Machines__ @@ -66,7 +66,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you how to define and use state machines in F Prime with FPP so complex component behavior is explicit, testable, and maintainable. - [View Define State Machines](define-state-machines.md){ .md-button .md-button--primary } + [View Define State Machines](dev/define-state-machines.md){ .md-button .md-button--primary } - __Create Ground-Derived Channels__ @@ -74,7 +74,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you how to compute telemetry-derived values on the ground and publish them through the F Prime GDS plugin system. - [View Create Ground-Derived Channels](derive-channels-on-ground.md){ .md-button .md-button--primary } + [View Create Ground-Derived Channels](ops/derive-channels-on-ground.md){ .md-button .md-button--primary } - __Develop a Device Driver__ @@ -82,7 +82,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you how to build a new device driver in F Prime using the application-manager-driver pattern. - [View Develop a Device Driver](develop-device-driver.md){ .md-button .md-button--primary } + [View Develop a Device Driver](dev/develop-device-driver.md){ .md-button .md-button--primary } - __Develop a Subtopology__ @@ -90,7 +90,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you how to organize reusable topology architecture into subtopologies that can be imported into deployments. - [View Develop a Subtopology](develop-subtopologies.md){ .md-button .md-button--primary } + [View Develop a Subtopology](dev/develop-subtopologies.md){ .md-button .md-button--primary } - __Implement an OS Abstraction Layer__ @@ -98,7 +98,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you how to implement a new OS Abstraction Layer for F´ so the framework can run on another operating system. - [View Implement an OS Abstraction Layer](implement-osal.md){ .md-button .md-button--primary } + [View Implement an OS Abstraction Layer](integrate/implement-osal.md){ .md-button .md-button--primary } - __Implement a Radio Manager Component__ @@ -106,7 +106,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you how to implement a radio manager component using the communications adapter interface. - [View Implement a Radio Manager Component](implement-radio-manager.md){ .md-button .md-button--primary } + [View Implement a Radio Manager Component](dev/implement-radio-manager.md){ .md-button .md-button--primary } - __Develop Components in Python__ @@ -114,7 +114,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you how to develop Python-based F Prime applications and integrate Python components into a larger system. - [View Develop Components in Python](python-development.md){ .md-button .md-button--primary } + [View Develop Components in Python](dev/python-development.md){ .md-button .md-button--primary } - __Write Rule-Based Tests__ @@ -122,7 +122,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you how to write rule-based unit tests for F Prime components using the RuleDemo example component. - [View Write Rule-Based Tests](rule-based-testing.md){ .md-button .md-button--primary } + [View Write Rule-Based Tests](test/rule-based-testing.md){ .md-button .md-button--primary } - __Test-Driven Development__ @@ -130,7 +130,7 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide shows you a practical test-driven development loop for building an F´ component from model to implementation. - [View Test-Driven Development](test-driven-development.md){ .md-button .md-button--primary } + [View Test-Driven Development](test/test-driven-development.md){ .md-button .md-button--primary } - __Import Parameters in Batch__ @@ -138,6 +138,6 @@ How-To guides offer step-by-step instructions for specific development tasks in This guide covers two methods of updating parameters: through a `.dat` file that PrmDb loads directly, or by generating a command sequence (`.seq` file) to dispatch a series of commands. - [View Import Parameters in Batch](prm-write-how-to.md){ .md-button .md-button--primary } + [View Import Parameters in Batch](ops/prm-write-how-to.md){ .md-button .md-button--primary } \ No newline at end of file diff --git a/docs/how-to/custom-framing.md b/docs/how-to/integrate/custom-framing.md similarity index 100% rename from docs/how-to/custom-framing.md rename to docs/how-to/integrate/custom-framing.md diff --git a/docs/how-to/implement-osal.md b/docs/how-to/integrate/implement-osal.md similarity index 99% rename from docs/how-to/implement-osal.md rename to docs/how-to/integrate/implement-osal.md index 0f47a672f0b..8a252d34c7f 100644 --- a/docs/how-to/implement-osal.md +++ b/docs/how-to/integrate/implement-osal.md @@ -1,4 +1,4 @@ -# How-To: Implement an OS Abstraction Layer +# Implement an OS Abstraction Layer This guide provides step-by-step instructions for implementing a new OS Abstraction Layer (OSAL) for F´. The F´ OSAL provides a uniform interface to operating system services, allowing F´ to run on multiple operating systems without modification to the source code. For more information on the architecture and design of the OSAL, refer to the [OSAL Software Design Document](../../Os/docs/sdd.md). diff --git a/docs/how-to/integrate-external-libraries.md b/docs/how-to/integrate/integrate-external-libraries.md similarity index 100% rename from docs/how-to/integrate-external-libraries.md rename to docs/how-to/integrate/integrate-external-libraries.md diff --git a/docs/how-to/porting-guide.md b/docs/how-to/integrate/porting-guide.md similarity index 100% rename from docs/how-to/porting-guide.md rename to docs/how-to/integrate/porting-guide.md diff --git a/docs/how-to/derive-channels-on-ground.md b/docs/how-to/ops/derive-channels-on-ground.md similarity index 100% rename from docs/how-to/derive-channels-on-ground.md rename to docs/how-to/ops/derive-channels-on-ground.md diff --git a/docs/how-to/develop-gds-plugins.md b/docs/how-to/ops/develop-gds-plugins.md similarity index 100% rename from docs/how-to/develop-gds-plugins.md rename to docs/how-to/ops/develop-gds-plugins.md diff --git a/docs/how-to/prm-write-how-to.md b/docs/how-to/ops/prm-write-how-to.md similarity index 88% rename from docs/how-to/prm-write-how-to.md rename to docs/how-to/ops/prm-write-how-to.md index 2b1e3e02527..8fceb74996a 100644 --- a/docs/how-to/prm-write-how-to.md +++ b/docs/how-to/ops/prm-write-how-to.md @@ -1,4 +1,4 @@ -# How-To: Load Parameters in Batch +# Load Parameters in Batch ## Overview @@ -198,16 +198,16 @@ This creates `params.seq` in the same directory as your JSON file. ```bash grep -E "CS_Sequence" ``` - | Event | Status | Description | - |-------|--------|-------------| - | `CS_SequenceLoaded` | ✓ | Sequence file loaded successfully | - | `CS_CommandComplete` | ✓ | Each command in sequence completed | - | `CS_SequenceComplete` | ✓ | Entire sequence finished successfully | - | `CS_FileNotFound` | ✗ | .bin file not found | - | `CS_FileReadError` | ✗ | Error reading the file | - | `CS_FileInvalid` | ✗ | Invalid file format or structure | - | `CS_FileCrcFailure` | ✗ | CRC checksum mismatch | - | `CS_CommandError` | ✗ | A command in the sequence failed | +| Event | Status | Description | +|-------|--------|-------------| +| `CS_SequenceLoaded` | ✓ | Sequence file loaded successfully | +| `CS_CommandComplete` | ✓ | Each command in sequence completed | +| `CS_SequenceComplete` | ✓ | Entire sequence finished successfully | +| `CS_FileNotFound` | ✗ | .bin file not found | +| `CS_FileReadError` | ✗ | Error reading the file | +| `CS_FileInvalid` | ✗ | Invalid file format or structure | +| `CS_FileCrcFailure` | ✗ | CRC checksum mismatch | +| `CS_CommandError` | ✗ | A command in the sequence failed | For more details, follow the standard [F´ sequencing workflow](https://fprime.jpl.nasa.gov/devel/docs/user-manual/gds/seqgen/). diff --git a/docs/how-to/rule-based-testing.md b/docs/how-to/test/rule-based-testing.md similarity index 99% rename from docs/how-to/rule-based-testing.md rename to docs/how-to/test/rule-based-testing.md index 144515230bc..89843a140e1 100644 --- a/docs/how-to/rule-based-testing.md +++ b/docs/how-to/test/rule-based-testing.md @@ -1,4 +1,4 @@ -# How-To: Write Rule-Based Tests for F Prime Components +# Write Rule-Based Tests for F Prime Components This guide shows how to write Rule-Based Testing (RBT) unit tests for an F Prime component. diff --git a/docs/how-to/test-driven-development.md b/docs/how-to/test/test-driven-development.md similarity index 99% rename from docs/how-to/test-driven-development.md rename to docs/how-to/test/test-driven-development.md index 2f71ad067df..16d15f4db59 100644 --- a/docs/how-to/test-driven-development.md +++ b/docs/how-to/test/test-driven-development.md @@ -1,4 +1,4 @@ -# How-To: Test-Driven Development in F Prime (F´) +# Test-Driven Development in F Prime (F´) This guide shows a practical, repeatable test-driven development loop for building an F´ component. You’ll model behavior first in FPP, stub the implementation, write tests that fail, then implement the component until the tests pass—iterating as needed. diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 47e4c86a63b..24533536416 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -72,6 +72,9 @@ extra_css: plugins: - search # enables search - awesome-nav + - gen-files: + scripts: + - how-to/scripts/gen_how_to.py - mike: # 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/