Add SDD aggregation into the core website (#3139)

This commit is contained in:
Thomas Boyer-Chammard 2025-01-15 14:05:46 -08:00 committed by GitHub
parent 5a7452a474
commit 334c525984
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
74 changed files with 93 additions and 282 deletions

View File

@ -11,6 +11,12 @@
}, },
{ {
"pattern": "^\\.\\./tree/HEAD/" "pattern": "^\\.\\./tree/HEAD/"
},
{
"pattern": ".*\\.[chf]pp"
},
{
"pattern": "../../../.."
} }
] ]
} }

View File

@ -100,3 +100,4 @@
^\Qdocs/Tutorials/FullSystemTutorial/Tutorial.md\E$ ^\Qdocs/Tutorials/FullSystemTutorial/Tutorial.md\E$
^\QSvc/FileUplink/test/ut/dest.bin\E$ ^\QSvc/FileUplink/test/ut/dest.bin\E$
ignore$ ignore$
mlc-config.json

View File

@ -1,4 +1,3 @@
\page DrvBlockDriverComponent Drv::BlockDriver Component
# Drv::BlockDriver Component # Drv::BlockDriver Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page DrvByteStreamDriverModel Drv::ByteStreamDriverModel Byte Stream Driver Model
# Drv::ByteStreamDriverModel Byte Stream Driver Model # Drv::ByteStreamDriverModel Byte Stream Driver Model
The byte stream driver is a generic model for drivers implementing a "stream of bytes" interface. Typically these The byte stream driver is a generic model for drivers implementing a "stream of bytes" interface. Typically these

View File

@ -1,4 +1,3 @@
\page DrvIp Drv::Ip IPv4 Socket Implementations
# Drv::Ip IPv4 Socket Implementations # Drv::Ip IPv4 Socket Implementations
This package contains utility classes to help interact with standard IPv4 (Berkeley) sockets. These classes implement the This package contains utility classes to help interact with standard IPv4 (Berkeley) sockets. These classes implement the

View File

@ -1,4 +1,3 @@
\page DrvStreamCrossover Drv::StreamCrossover Stream Crossover Component
# Drv::StreamCrossover Stream Crossover Component # Drv::StreamCrossover Stream Crossover Component
The Stream Crossover component allows a connection of byte stream driver model ports of type ByteStreamRecv and The Stream Crossover component allows a connection of byte stream driver model ports of type ByteStreamRecv and

View File

@ -1,4 +1,3 @@
\page DrvTcpClient Drv::TcpClient Component
# Drv::TcpClient TCP Client Component # Drv::TcpClient TCP Client Component
The TCP client component bridges the byte stream driver model interface to a remote TCP server to which this tcp client The TCP client component bridges the byte stream driver model interface to a remote TCP server to which this tcp client

View File

@ -1,4 +1,3 @@
\page DrvTcpServer Drv::TcpServer Component
# Drv::TcpServer Tcp Server Component # Drv::TcpServer Tcp Server Component
The TCP server component bridges the byte stream driver model interface to a remote TCP client to which this tcp server The TCP server component bridges the byte stream driver model interface to a remote TCP client to which this tcp server

View File

@ -1,4 +1,3 @@
\page DrvUdp Drv::Udp Component
# Drv::Udp UDP Component # Drv::Udp UDP Component
The UDP client component bridges the byte stream driver model interface to a remote UDP port to which this udp component The UDP client component bridges the byte stream driver model interface to a remote UDP port to which this udp component

View File

@ -1,4 +1,3 @@
\page FwBufferSerializableBufferGetBufferSend Fw::Buffer Serializable / Fw::BufferGet Port / Fw::BufferSend Port
# Fw::Buffer Serializable / Fw::BufferGet Port / Fw::BufferSend Port # Fw::Buffer Serializable / Fw::BufferGet Port / Fw::BufferSend Port
## 1 Introduction ## 1 Introduction

View File

@ -1,4 +1,3 @@
\page FwCmdFwCmdResponseFwCmdReg Fw::Cmd / Fw::CmdResponse / Fw::CmdReg Ports
# Fw::Cmd / Fw::CmdResponse / Fw::CmdReg Ports # Fw::Cmd / Fw::CmdResponse / Fw::CmdReg Ports
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page FwComPort Fw::Com Port
# Fw::Com Port # Fw::Com Port
## 1. Introduction ## 1. Introduction

View File

@ -1,12 +1,11 @@
\page FwDp Framework Support for Data Products # Fw::Dp Framework Support for Data Products
# Framework Support for Data Products
## 1. Introduction ## 1. Introduction
This build module defines FPP ports and C++ classes that support This build module defines FPP ports and C++ classes that support
the collection and storage of data products. the collection and storage of data products.
For more information on data products and records, see the For more information on data products and records, see the
[data products documentation](../../../docs/documentation/user-manual/design/data-products.md). [data products documentation](../../../../../user-manual/design/data-products.md).
## 2. Configuration ## 2. Configuration
@ -82,7 +81,7 @@ The header hash has the following format.
|Field Name|Serialized Size|Description| |Field Name|Serialized Size|Description|
|----------|---------------|-----------| |----------|---------------|-----------|
|`Header Hash`|[`HASH_DIGEST_LENGTH`](../../../Utils/Hash/README.md)|The hash value guarding the header.| |`Header Hash`|[`HASH_DIGEST_LENGTH`](../../../../api/cpp/html/index.html)|The hash value guarding the header.|
#### 5.1.3. Data #### 5.1.3. Data
@ -119,7 +118,7 @@ The data hash has the following format.
|Field Name|Serialized Size|Description| |Field Name|Serialized Size|Description|
|----------|---------------|-----------| |----------|---------------|-----------|
|`Data Hash`|[`HASH_DIGEST_LENGTH`](../../../Utils/Hash/README.md)|The hash value guarding the data.| |`Data Hash`|[`HASH_DIGEST_LENGTH`](../../../../api/cpp/html/index.html)|The hash value guarding the data.|
### 5.2. Further Information ### 5.2. Further Information

View File

@ -1,4 +1,3 @@
\page FwFilePacketClasses Fw::FilePacket Classes
# Fw::FilePacket Classes # Fw::FilePacket Classes
## 1 Introduction ## 1 Introduction

View File

@ -1,4 +1,3 @@
\page FwLogLogText Fw::Log, Fw::LogText Ports
# Fw::Log / Fw::LogText Ports # Fw::Log / Fw::LogText Ports
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page FwObjClasses Fw::Obj Classes
# Fw::Obj Classes # Fw::Obj Classes
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page FwPortClasses Fw::Port Classes
# Fw::Port Classes # Fw::Port Classes
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page FwPrmGetPrmSet Fw::PrmGet / PrmSet Ports
# Fw::PrmGet / PrmSet Ports # Fw::PrmGet / PrmSet Ports
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page FwTimePort Fw::Time Port
# Fw::Time Port # Fw::Time Port
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page FwTlmPort Fw::Tlm Port
# Fw::Tlm Port # Fw::Tlm Port
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page FwTypeClasses Fw::Type Classes and Types
# Fw::Type Classes and Types # Fw::Type Classes and Types
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page RefPingReceiverComponent Ref::PingReceiver Component
# Ref::PingReceiver Component # Ref::PingReceiver Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page RefRecvBuffAppComponent Ref::RecvBuffApp Component
# Ref::RecvBuffApp Component # Ref::RecvBuffApp Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page RefSendBuffAppComponent Ref::SendBuffApp Component
# Ref::SendBuffApp Component # Ref::SendBuffApp Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page RefSignalGenComponent Ref::SignalGen Component
# Ref::SignalGen Component # Ref::SignalGen Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcActiveLoggerComponent Svc::ActiveLogger Component
# Svc::ActiveLogger Component # Svc::ActiveLogger Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcActiveRateGroupComponent Svc::ActiveRateGroup Component
# Svc::ActiveRateGroup Component # Svc::ActiveRateGroup Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcActiveTextLoggerComponent Svc::ActiveTextLogger Component
# Svc::ActiveTextLogger Component # Svc::ActiveTextLogger Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcAssertFatalAdapterComponent Svc::AssertFatalAdapter Component
# Svc::AssertFatalAdapter Component # Svc::AssertFatalAdapter Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcBufferAccumulatorComponent Svc::BufferAccumulator Component
# BufferAccumulator Component Dictionary # BufferAccumulator Component Dictionary

View File

@ -1,4 +1,3 @@
\page SvcBufferManagerComponent Svc::BufferManager Component
# Svc::BufferManager # Svc::BufferManager
## 1 Introduction ## 1 Introduction

View File

@ -1,4 +1,3 @@
\page SvcBufferRepeaterComponent Svc::BufferRepeater Component
# Svc::BufferRepeater: Buffer Repeater (Passive Component) # Svc::BufferRepeater: Buffer Repeater (Passive Component)
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcCmdDispatcherComponent Svc::CmdDispatcher Component
# Svc::CmdDispatcher Component # Svc::CmdDispatcher Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcCmdSequencerComponent Svc::CmdSequencer Component
# Svc::CmdSequencer Component # Svc::CmdSequencer Component
## 1 Introduction ## 1 Introduction

View File

@ -1,4 +1,3 @@
\page SvcCmdSplitter Svc::CmdSplitter Component
# Svc::CmdSplitter Component # Svc::CmdSplitter Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcComQueueComponent Svc::ComQueue Component
# Svc::ComQueue (Active Component) # Svc::ComQueue (Active Component)
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcComStubComponent Svc::ComStub Component
# Svc::ComStub (Passive Component) # Svc::ComStub (Passive Component)
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcDeframerComponent Svc::Deframer Component
# Svc::Deframer (Passive Component) # Svc::Deframer (Passive Component)
## 1. Introduction ## 1. Introduction
@ -95,9 +94,7 @@ SVC-DEFRAMER-011 | `Svc::Deframer` shall operate nominally when its port for sen
The diagram below shows the `Deframer` component. The diagram below shows the `Deframer` component.
<div> ![Deframer](img/Deframer.png)
<img src="img/Deframer.png" width=700/>
</div>
### 4.2. Ports ### 4.2. Ports
@ -349,24 +346,18 @@ optional.
**Topology 1a: Buffers containing framed data (active byte stream driver):** **Topology 1a: Buffers containing framed data (active byte stream driver):**
<div> ![active](img/top/framed-active.png)
<img src="img/top/framed-active.png" width=1000/>
</div>
**Topology 1b: Buffers containing framed data (passive byte stream driver):** **Topology 1b: Buffers containing framed data (passive byte stream driver):**
<div> ![passive](img/top/framed-passive.png)
<img src="img/top/framed-passive.png" width=1000/>
</div>
Revise the port number of `rateGroup.RateGroupMemberOut` as Revise the port number of `rateGroup.RateGroupMemberOut` as
appropriate for your application. appropriate for your application.
**Topology 2: Command packets and command responses:** **Topology 2: Command packets and command responses:**
<div> ![cmd](img/top/cmd.png)
<img src="img/top/cmd.png" width=800/>
</div>
Revise the port numbers of `cmdDisp.seqCmdBuff` and Revise the port numbers of `cmdDisp.seqCmdBuff` and
`cmdDisp.compCmdStat` as appropriate for your application. `cmdDisp.compCmdStat` as appropriate for your application.
@ -375,9 +366,7 @@ assign these numbers.
**Topology 3: Buffers containing packet data:** **Topology 3: Buffers containing packet data:**
<div> ![file](img/top/deframer-file.png)
<img src="img/top/deframer-file.png" width=1000/>
</div>
### 6.2. Sequence Diagrams ### 6.2. Sequence Diagrams
@ -507,17 +496,13 @@ instance `hub` of type `Svc::GenericHub`.
**Topology 2: Command packets** **Topology 2: Command packets**
<div> ![hub-cmd](img/top/hub-cmd.png)
<img src="img/top/hub-cmd.png" width=800/>
</div>
Revise the port number of `hub.portIn` as appropriate for your application. Revise the port number of `hub.portIn` as appropriate for your application.
**Topology 3: Buffers containing packet data** **Topology 3: Buffers containing packet data**
<div> ![file](img/top/hub-file.png)
<img src="img/top/hub-file.png" width=1000/>
</div>
Revise the port number of `hub.buffersIn` as appropriate for your application. Revise the port number of `hub.buffersIn` as appropriate for your application.
When `hub` receives a buffer on `buffersIn`, it copies the data across When `hub` receives a buffer on `buffersIn`, it copies the data across

View File

@ -1,4 +1,3 @@
\page SvcDpCatalogComponent Svc::DpCatalog Component
# Svc::DpCatalog Component # Svc::DpCatalog Component
## 1 Introduction ## 1 Introduction

View File

@ -1,4 +1,3 @@
\page SvcDpManagerComponent Svc::DpManager Component
# Svc::DpManager (Active Component) # Svc::DpManager (Active Component)
## 1. Introduction ## 1. Introduction
@ -22,7 +21,7 @@ It does the following:
client components. client components.
Upon receiving a buffer, send the buffer out on a port. Upon receiving a buffer, send the buffer out on a port.
Another component such as Another component such as
[`Svc::BufferAccumulator`](../../BufferAccumulator/docs/BufferAccumulator.md) [`Svc::BufferAccumulator`](../../BufferAccumulator/docs/sdd.md)
or [`Svc::DpWriter`](../../DpWriter/docs/sdd.md) or [`Svc::DpWriter`](../../DpWriter/docs/sdd.md)
will process the buffer and then send it back to the buffer manager will process the buffer and then send it back to the buffer manager
for deallocation. for deallocation.
@ -42,9 +41,7 @@ SVC-DPMANAGER-004 | `Svc::DpManager` shall provide telemetry that reports the nu
The diagram below shows the `DpManager` component. The diagram below shows the `DpManager` component.
<div> ![DpManager](img/DpManager.png)
<img src="img/DpManager.png" width=700/>
</div>
### 3.2. Ports ### 3.2. Ports
@ -197,21 +194,16 @@ connections.
#### 5.1.1. Synchronously Getting Data Product Buffers #### 5.1.1. Synchronously Getting Data Product Buffers
<div> ![Buffer Get](img/top/buffer-get.png)
<img src="img/top/buffer-get.png" width=800/>
</div>
#### 5.1.2. Asynchronously Requesting Data Product Buffers #### 5.1.2. Asynchronously Requesting Data Product Buffers
<div> ![Buffer Request](img/top/buffer-request.png)
<img src="img/top/buffer-request.png" width=800/>
</div>
#### 5.1.3. Sending Data Products #### 5.1.3. Sending Data Products
<div> ![Product Send](img/top/product-send.png)
<img src="img/top/product-send.png" width=1000/>
</div>
### 5.2. Sequence Diagrams ### 5.2. Sequence Diagrams

View File

@ -1,4 +1,3 @@
\page SvcDpWriterComponent Svc::DpWriter Component
# Svc::DpWriter (Active Component) # Svc::DpWriter (Active Component)
## 1. Introduction ## 1. Introduction
@ -12,7 +11,7 @@ data products.
They typically pass through an instance of They typically pass through an instance of
[`Svc::DpManager`](../../DpManager/docs/sdd.md), and possibly through [`Svc::DpManager`](../../DpManager/docs/sdd.md), and possibly through
an instance of an instance of
[`Svc::BufferAccumulator`](../../BufferAccumulator/docs/BufferAccumulator.md), [`Svc::BufferAccumulator`](../../BufferAccumulator/docs/sdd.md),
before reaching `DpWriter`. before reaching `DpWriter`.
1. For each buffer _B_ received in step 1: 1. For each buffer _B_ received in step 1:
@ -43,9 +42,7 @@ SVC-DPWRITER-006 | `Svc::DpManager` shall provide telemetry that reports the num
The diagram below shows the `DpWriter` component. The diagram below shows the `DpWriter` component.
<div> ![DpWriter](img/DpWriter.png)
<img src="img/DpWriter.png" width=700/>
</div>
### 3.2. Ports ### 3.2. Ports
@ -206,9 +203,7 @@ The diagrams use the following instances:
* `producer`: A component that produces data products. * `producer`: A component that produces data products.
<div> ![product-write](./img/top/product-write.png)
<img src="img/top/product-write.png" width=800/>
</div>
### 6.2. Sequence Diagrams ### 6.2. Sequence Diagrams

View File

@ -1,4 +1,3 @@
\page SvcFatalPort Svc::Fatal Port
# Svc::Fatal Port # Svc::Fatal Port
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcFatalHandlerComponent Svc::FatalHandler Component
# Svc::FatalHandler Component # Svc::FatalHandler Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcFileDownlinkComponent Svc::FileDownlink Component
# Svc::FileDownlink Component # Svc::FileDownlink Component
## 1 Introduction ## 1 Introduction

View File

@ -1,4 +1,3 @@
\page SvcFileManagerComponent Svc::FileManager Component
# Svc::FileManager Component # Svc::FileManager Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcFileUplinkComponent Svc::FileUplink Component
# Svc::FileUplink Component # Svc::FileUplink Component
## 1 Introduction ## 1 Introduction

View File

@ -1,4 +1,3 @@
\page SvcFramerComponent Svc::Framer Component
# Svc::Framer (Passive Component) # Svc::Framer (Passive Component)
## 1. Introduction ## 1. Introduction
@ -193,25 +192,19 @@ The diagrams use the following instances:
**Topology 1: Telemetry packets:** **Topology 1: Telemetry packets:**
<div> ![tlm](img/top/tlm.png)
<img src="img/top/tlm.png" width=1000/>
</div>
The `chanTlm` instance sends telemetry packets to the `framer` instance. The `chanTlm` instance sends telemetry packets to the `framer` instance.
**Topology 2: Event packets:** **Topology 2: Event packets:**
<div> ![event](img/top/event.png)
<img src="img/top/event.png" width=1000/>
</div>
The `eventLogger` instance sends event packets to the `framer` instance. The `eventLogger` instance sends event packets to the `framer` instance.
**Topology 3: File packets:** **Topology 3: File packets:**
<div> ![file](img/top/framer-file.png)
<img src="img/top/framer-file.png" width=1000/>
</div>
The `fileDownlink` instance sends a sequence of file packets, The `fileDownlink` instance sends a sequence of file packets,
representing a complete file, to the `framer` instance. representing a complete file, to the `framer` instance.
@ -232,9 +225,7 @@ can handle the packets.
**Topology 4: Framed data:** **Topology 4: Framed data:**
<div> ![framed](img/top/framed.png)
<img src="img/top/framed.png" width=1000/>
</div>
`framer` allocates frame buffers from `buffMgr`. `framer` allocates frame buffers from `buffMgr`.
It sends buffers containing frames to `comm`. It sends buffers containing frames to `comm`.

View File

@ -1,4 +1,3 @@
\page SvcFramingProtocol Svc::FramingProtocol Protocol
# Svc::FramingProtocol Library # Svc::FramingProtocol Library
The `FramingProtocol` library defines the interfaces to the The `FramingProtocol` library defines the interfaces to the

View File

@ -1,4 +1,3 @@
\page SvcGenericHubComponent Svc::GenericHub Component
# Svc::GenericHub Generic Hub Component # Svc::GenericHub Generic Hub Component
The Generic Hub component is an implementation of the F´ [hub pattern](https://nasa.github.io/fprime/UsersGuide/best/hub-pattern.html). The Generic Hub component is an implementation of the F´ [hub pattern](https://nasa.github.io/fprime/UsersGuide/best/hub-pattern.html).

View File

@ -1,4 +1,3 @@
\page SvcHealthComponent Svc::Health Component
# Svc::Health Component # Svc::Health Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcPassiveConsoleTextLoggerComponent Svc::PassiveConsoleTextLogger Component
# Svc::PassiveConsoleTextLogger Component # Svc::PassiveConsoleTextLogger Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcPassiveRateGroupComponent Svc::PassiveRateGroup Component
# RateGroupDriver Component # RateGroupDriver Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcPingPort Svc::Ping Port
# Svc::Ping Port # Svc::Ping Port
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcPolyDbComponent Svc::PolyDb Component
# Svc::PolyDb Component # Svc::PolyDb Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcPolyPort Svc::Poly Port
# Svc::Poly Port # Svc::Poly Port
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcPosixTime Svc::PosixTime Component
# Svc::PosixTime Component # Svc::PosixTime Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcPrmDbComponent Svc::PrmDb Component
# Svc::PrmDb Component # Svc::PrmDb Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcRateGroupDriverComponent Svc::RateGroupDriver Component
# Svc::RateGroupDriver Component # Svc::RateGroupDriver Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcSchedPort Svc::Sched Port
# Svc::Sched Port # Svc::Sched Port
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcStaticMemoryComponent Svc::StaticMemory Component
# Svc::StaticMemory Component # Svc::StaticMemory Component
The StaticMemory component is a drop in replacement for Svc::BufferManager that allocates memory out of a static pool of The StaticMemory component is a drop in replacement for Svc::BufferManager that allocates memory out of a static pool of

View File

@ -1,4 +1,3 @@
\page SvcSystemResourcesComponent Svc::SystemResources Component
# SystemResources Component # SystemResources Component
The system resources component downlinks information about the running F´ system. This information includes: The system resources component downlinks information about the running F´ system. This information includes:

View File

@ -1,4 +1,3 @@
\page SvcTlmChanComponent Svc::TlmChan Component
# Svc::TlmChan Component # Svc::TlmChan Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcTlmPacketizerComponent Svc::TlmPacketizer Component
# Svc::TlmPacketizer Component # Svc::TlmPacketizer Component
## 1. Introduction ## 1. Introduction

View File

@ -1,4 +1,3 @@
\page SvcWatchDogPort Svc::WatchDog Port
# Svc::WatchDog Port # Svc::WatchDog Port
## 1. Introduction ## 1. Introduction

View File

@ -0,0 +1,5 @@
# 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

@ -56,17 +56,17 @@ components:
1. A **data product manager**. 1. A **data product manager**.
This component allocates memory for empty containers. This component allocates memory for empty containers.
It also forwards filled containers to the data product writer. It also forwards filled containers to the data product writer.
See [`Svc::DpManager`](../../reference/api/cpp/html/_svc_dp_manager_component.html). See [`Svc::DpManager`](../../reference/sdd/Svc/DpManager/docs/sdd.md).
1. A **data product writer**. 1. A **data product writer**.
This component receives filled containers from data product This component receives filled containers from data product
producers. It writes the contents of the containers to non-volatile producers. It writes the contents of the containers to non-volatile
storage. See [`Svc::DpWriter`](../../reference/api/cpp/html/_svc_dp_writer_component.html). storage. See [`Svc::DpWriter`](../../reference/sdd/Svc/DpWriter/docs/sdd.md).
1. A **data product catalog**. 1. A **data product catalog**.
This component maintains a database of available data This component maintains a database of available data
products. By command, it downlinks and deletes data products. products. By command, it downlinks and deletes data products.
See [`Svc::DpCatalog`](../../reference/api/cpp/html/_svc_dp_catalog_component.html). See [`Svc::DpCatalog`](../../reference/sdd/Svc/DpCatalog/docs/sdd.md).
1. A **data product processor**. 1. A **data product processor**.
This component is not yet developed. 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: FPP provides the following special ports for managing data products:
1. A **product get port** of type [`Fw::DpGet`](../../reference/api/cpp/html/_fw_dp.html). 1. A **product get port** of type [`Fw::DpGet`](../../reference/sdd/Fw/Dp/docs/sdd.md).
This is an output port for synchronously requesting This is an output port for synchronously requesting
memory from a buffer manager. memory from a buffer manager.
The request is served on the thread that invokes the port 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 product get port productGetOut
``` ```
1. A **product request port** of type [`Fw::DpRequest`](../../reference/api/cpp/html/_fw_dp.html). 1. A **product request port** of type [`Fw::DpRequest`](../../reference/sdd/Fw/Dp/docs/sdd.md).
This is an output port for asynchronously requesting memory This is an output port for asynchronously requesting memory
from a data product manager. from a data product manager.
The request is served on the thread of the 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 product request port productRequestOut
``` ```
1. A **product receive port** of type [`Fw::DpResponse`](../../reference/api/cpp/html/_fw_dp.html). 1. A **product receive port** of type [`Fw::DpResponse`](../../reference/sdd/Fw/Dp/docs/sdd.md).
This is an input port for receiving an empty container in response This is an input port for receiving an empty container in response
to an asynchronous request. Example syntax: to an asynchronous request. Example syntax:
``` ```
async product recv port productRecvIn async product recv port productRecvIn
``` ```
1. A **product send port** of type [`Fw::DpSend`](../../reference/api/cpp/html/_fw_dp.html). 1. A **product send port** of type [`Fw::DpSend`](../../reference/sdd/Fw/Dp/docs/sdd.md).
This is an output port for sending a filled container This is an output port for sending a filled container
to a data product writer. Example syntax: to a data product writer. Example syntax:
``` ```
@ -213,7 +213,7 @@ the following API elements:
priorities, and record IDs. priorities, and record IDs.
1. A member class _C_ `::DpContainer`. This class is derived from 1. A member class _C_ `::DpContainer`. This class is derived from
[`Fw::DpContainer`](../../reference/api/cpp/html/_fw_dp.html) and represents a container [`Fw::DpContainer`](../../reference/sdd/Fw/Dp/docs/sdd.md) and represents a container
specialized to the data products defined in _C_. specialized to the data products defined in _C_.
Each instance of _C_ `::DpContainer` is a wrapper for an `Fw::Buffer` _B_, Each instance of _C_ `::DpContainer` is a wrapper for an `Fw::Buffer` _B_,
which points to allocated memory. 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_ There is one operation _C_ `::DpContainer::serialize_` _R_
for each record _R_ defined in _C_. for each record _R_ defined in _C_.
For the serialized format of each record, see the documentation For the serialized format of each record, see the documentation
for [`Fw::DpContainer`](../../reference/api/cpp/html/_fw_dp.html). for [`Fw::DpContainer`](../../reference/sdd/Fw/Dp/docs/sdd.md).
1. If _C_ has a `product` `get` port, a member function `dpGet_` 1. If _C_ has a `product` `get` port, a member function `dpGet_`
_c_ for each container _c_ defined in _C_. _c_ for each container _c_ defined in _C_.
@ -452,19 +452,19 @@ data products.
**Requesting and sending data products:** **Requesting and sending data products:**
See the example uses in the documentation for See the example uses in the documentation for
[`Svc::DpManager`](../../reference/api/cpp/html/_svc_dp_manager_component.html). [`Svc::DpManager`](../../reference/sdd/Svc/DpManager/docs/sdd.md).
The component referred to as `producer` in that document The component referred to as `producer` in that document
is a data product producer. is a data product producer.
**Writing data products to non-volatile storage:** **Writing data products to non-volatile storage:**
See the example uses in the documentation for See the example uses in the documentation for
[`Svc::DpWriter`](../../reference/api/cpp/html/_svc_dp_writer_component.html). [`Svc::DpWriter`](../../reference/sdd/Svc/DpWriter/docs/sdd.md).
The component referred to as `producer` in that document The component referred to as `producer` in that document
is a data product producer. is a data product producer.
**Cataloging and downlinking data products:** **Cataloging and downlinking data products:**
For a preliminary implementation of the data product catalog, For a preliminary implementation of the data product catalog,
see [`Svc::DpCatalog`](../../reference/api/cpp/html/_svc_dp_catalog_component.html). see [`Svc::DpCatalog`](../../reference/sdd/Svc/DpCatalog/docs/sdd.md).
**Processing data products:** **Processing data products:**
TODO TODO

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 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. allocations will always be returned or a software error will be tripped.
[Svc.StaticMemory is described in more detail](../../reference/api/cpp/html/_svc_static_memory_component.html). [Svc.StaticMemory is described in more detail](../../reference/sdd/Svc/StaticMemory/docs/sdd.md).
**When To Use Svc.StaticMemory** **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. 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 Doxygen documentation](../../reference/api/cpp/html/_svc_buffer_manager_component.html). For more details, see the [Svc.BufferManager SDD](../../reference/sdd/Svc/BufferManager/docs/sdd.md).
**When To Use Svc.BufferManager** **When To Use Svc.BufferManager**

View File

@ -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, 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 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/api/cpp/html/_svc_deframer_component.html) component. This component may be rate group driven in which case the [Svc.Deframer](../../reference/sdd/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 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 incoming port call. Svc.Deframer implements the
[DeframingProtocolInterface](../../reference/api/cpp/html/class_svc_1_1_deframing_protocol_interface.html). [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
Downlink takes in F´ data and wraps the data with bytes supporting the necessary protocol. This assembled data is then 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/api/cpp/html/_svc_framer_component.html) sent to the driver for handling. Downlink is implemented with the [Svc.Framer](../../reference/sdd/Svc/Framer/docs/sdd.md)
component, which implements the [FramingProtocolInterface](../../reference/api/cpp/html/class_svc_1_1_framing_protocol_interface.html). 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 Svc.Framer packs F´ data using a [Svc::FramingProtocol](../../reference/api/cpp/html/class_svc_1_1_framing_protocol.html), which

View File

@ -16,5 +16,5 @@ ARINC 653 Channels, High-speed hardware buses between nodes, and UARTs between n
## Generic Hub ## Generic Hub
There is now a standard implementation of the hub pattern. The [GenericHub](../../reference/api/cpp/html/_svc_generic_hub_component.html) is an There is now a standard implementation of the hub pattern. The [GenericHub](../../reference/sdd/Svc/GenericHub/docs/sdd.md) is an
implementation of the hub pattern that passes through F´ ports and `Fw::Buffer`s. implementation of the hub pattern that passes through F´ ports and `Fw::Buffer`s.

View File

@ -910,7 +910,7 @@ EXCLUDE = ./docs/documentation ./docs/events ./docs/getting-start
./docs/overview ./docs/support \ ./docs/overview ./docs/support \
*CMakeFiles/* ./Autocoders ./cmake ./gtest ./Ref ./RPI ./FppTest \ *CMakeFiles/* ./Autocoders ./cmake ./gtest ./Ref ./RPI ./FppTest \
STest ./mk ./README.md ./CONTRIBUTORS.md ./CONTRIBUTING.md ./SECURITY.md \ STest ./mk ./README.md ./CONTRIBUTORS.md ./CONTRIBUTING.md ./SECURITY.md \
./googletest/ ./googletest/ ./CODE_OF_CONDUCT.md ./LICENSE.md ./docs/INSTALL.md
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded # directories that are symbolic links (a Unix file system feature) are excluded
@ -926,7 +926,7 @@ EXCLUDE_SYMLINKS = NO
# Note that the wildcards are matched against the file with absolute path, so to # Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/* # exclude all test directories for example use the pattern */test/*
EXCLUDE_PATTERNS = */test/* */GTest/* */build-*/* */cmake/* */docs/v*.* */docs/_* EXCLUDE_PATTERNS = */test/* */GTest/* */build-*/* */cmake/* */docs/v*.* */docs/_* */sdd.md */index.md */docs/*.md */README.md
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the # (namespaces, classes, functions, etc.) that should be excluded from the

View File

@ -75,3 +75,7 @@ for image in $(find "${FPRIME}/Fw" "${FPRIME}/Svc" "${FPRIME}/Drv" \( -name '*.j
do do
cp "${image}" "${IMG_DIR}" cp "${image}" "${IMG_DIR}"
done done
# Aggregate and index SDDs so they are rendered in the website
python3 "${FPRIME}/docs/doxygen/sdd_processing.py"

View File

@ -1,169 +1,28 @@
\mainpage \mainpage
This is the F´ automatically generated documentation. This is the F´ automatically generated C++ documentation.
The sidebar links point to the software description documentation (SDD) for the F´ components.
The Namespace and Classes sections link to the documentation of the C++ code. The Namespace and Classes sections link to the documentation of the C++ code.
Software Design Documents (SDDs) for each component can be found in the Reference part of the documentation at https://fprime.jpl.nasa.gov/
\page Fw Fw Components, Ports, and Classes
The Fw package provides the core classes, components, and ports to support F´. These classes allow The Fw package provides the core classes, components, and ports to support F´. These classes allow
for the core framework operation. In addition, these include the base classes on which components for the core framework operation. In addition, these include the base classes on which components
are built. Finally, of specific interest is Fw::Types providing the cored types in the system. are built. Finally, of specific interest is Fw::Types providing the cored types in the system.
\subpage FwBufferSerializableBufferGetBufferSend
\subpage FwCmdFwCmdResponseFwCmdReg
\subpage FwComPort
\subpage FwFilePacketClasses
\subpage FwLogLogText
\subpage FwObjClasses
\subpage FwPortClasses
\subpage FwPrmGetPrmSet
\subpage FwTimePort
\subpage FwTlmPort
\subpage FwTypeClasses
\page Os Os Components Ports and Classes
The Os package is an operating system abstraction layer. It provides basic Os system functions to The Os package is an operating system abstraction layer. It provides basic Os system functions to
F´. This includes things like Mutexes, Queues, Tasks, and a File System. F´. This includes things like Mutexes, Queues, Tasks, and a File System.
\subpage OsQueue
\page Svc Svc Components, Ports, and Classes
The Svc package provides standard components to support greater F´ applications. This includes The Svc package provides standard components to support greater F´ applications. This includes
command and data handling components used for more complete applications. command and data handling components used for more complete applications.
\subpage SvcAMPCSSequenceClass
\subpage SvcActiveLoggerComponent
\subpage SvcActiveRateGroupComponent
\subpage SvcActiveTextLoggerComponent
\subpage SvcAssertFatalAdapterComponent
\subpage SvcBufferAccumulatorComponent
\subpage SvcBufferManagerComponent
\subpage SvcBufferRepeaterComponent
\subpage SvcCmdDispatcherComponent
\subpage SvcCmdSequencerComponent
\subpage SvcCmdSequencerFormats
\subpage SvcCmdSplitter
\subpage SvcComLoggerComponent
\subpage SvcComQueueComponent
\subpage SvcComSplitterComponent
\subpage SvcComStubComponent
\subpage SvcDeframerComponent
\subpage SvcFatalHandlerComponent
\subpage SvcFatalPort
\subpage SvcFileDownlinkComponent
\subpage SvcFileManagerComponent
\subpage SvcFileUplinkComponent
\subpage SvcFramerComponent
\subpage SvcFramingProtocol
\subpage SvcGenericHubComponent
\subpage SvcHealthComponent
\subpage SvcPassiveConsoleTextLoggerComponent
\subpage SvcPingPort
\subpage SvcPolyDbComponent
\subpage SvcPolyPort
\subpage SvcPosixTime
\subpage SvcPrmDbComponent
\subpage SvcPassiveRateGroupComponent
\subpage SvcRateGroupDriverComponent
\subpage SvcSchedPort
\subpage SvcStaticMemoryComponent
\subpage SvcSystemResourcesComponent
\subpage SvcTlmChanComponent
\subpage SvcTlmPacketizerComponent
\subpage SvcTlmPacketizerComponentDictionary
\subpage SvcWatchDogPort
\page Drv Drv Components and Classes
The Drv package provides drivers to support various hardware functions for F´. These drivers The Drv package provides drivers to support various hardware functions for F´. These drivers
include a sample block driver component as well a various drivers that support Linux hardware include a sample block driver component as well a various drivers that support Linux hardware
functions. functions.
\subpage DrvBlockDriverComponent
\subpage DrvByteStreamDriverModel
\subpage DrvIp
\subpage DrvStreamCrossover
\subpage DrvTcpClient
\subpage DrvTcpServer
\subpage DrvUdp
\page Utils Utils Classes
The Utils package provides classes for general applications in F´ projects. These classes are for The Utils package provides classes for general applications in F´ projects. These classes are for
a variety of purposes. a variety of purposes.
\subpage UtilsHashClass
\subpage UtilsLockGuardClass
\subpage UtilsRateLimiterClass
\subpage UtilsTokenBucketClass
\subpage UtilsTypesLibrary

View File

@ -0,0 +1,26 @@
import os
import shutil
from pathlib import Path
SDD_DIR = "./docs/documentation/reference/sdd"
os.makedirs(SDD_DIR, exist_ok=True)
# Append the new file path to index.md
with open(Path(SDD_DIR) / 'index.md', 'a') as index_file:
# Find all sdd.md files and process them
for file in list(Path('.').rglob('*/docs/sdd.md')):
# Get module name and parent directory name
second_parent = file.parents[1].name
third_parent = file.parents[2].name
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")

View File

@ -229,7 +229,11 @@ markdown_extensions:
line_spans: __span line_spans: __span
pygments_lang_class: true pygments_lang_class: true
- pymdownx.inlinehilite - pymdownx.inlinehilite
- pymdownx.superfences - pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
# adds support for admonitions/call-outs # adds support for admonitions/call-outs
- admonition - admonition
- pymdownx.details - pymdownx.details
@ -321,6 +325,7 @@ nav:
- Reference: - Reference:
- documentation/reference/index.md - documentation/reference/index.md
- 'C++ Documentation': 'documentation/reference/api/cpp/html/index.html' - 'C++ Documentation': 'documentation/reference/api/cpp/html/index.html'
- 'Software Design Documents': 'documentation/reference/sdd/index.md'
- 'FPP Language Specification': https://nasa.github.io/fpp/fpp-spec.html - 'FPP Language Specification': https://nasa.github.io/fpp/fpp-spec.html
- 'CMake User API': 'documentation/user-manual/cmake/cmake-api.md' - 'CMake User API': 'documentation/user-manual/cmake/cmake-api.md'
- 'GDS Developers Guide': documentation/reference/gds-cli-dev.md - 'GDS Developers Guide': documentation/reference/gds-cli-dev.md