sat-rs Example Application
The sat-rs library includes a monolithic example application which can be found inside
the satrs-example
subdirectory of the repository. The primary purpose of this example application is to show how
the various components of the sat-rs framework could be used as part of a larger on-board
software application.
Structure of the example project
The example project contains components which could also be expected to be part of a production On-Board Software. A structural diagram of the example application is given to provide a brief high-level view of the components used inside the example application:
flowchart TD
subgraph TMTC[TMTC Infrastructure]
subgraph TMTCRow1[ ]
direction LR
Udp[UDP Server]
Tcp[TCP Server]
end
subgraph TMTCRow2[ ]
direction LR
Source[TC Source]
Sink[TM Sink]
end
end
subgraph AOCS[AOCS Stack]
subgraph AOCSRow1[ ]
direction LR
Mgm0[MGM 0 Handler]
Mgm1[MGM 1 Handler]
Assy[MGM Assembly]
end
subgraph AOCSRow2[ ]
direction LR
AcsCtrl[ACS Controller]
Mgt[MGT Handler]
AcsSub[ACS Subsystem]
end
end
subgraph EPS[EPS Stack]
Pcdu[PCDU Handler]
end
subgraph Core[Core]
direction LR
Ctrl[Core Controller]
Evt[Event Manager]
end
Sim[Sim Client]:::optional
TMTC ~~~ EPS
AOCS ~~~ Core
Core ~~~ Sim
classDef optional stroke-dasharray: 5 5;
classDef invisible fill:none,stroke:none;
class TMTCRow1,TMTCRow2,AOCSRow1,AOCSRow2 invisible;
The dotted lines are used to denote optional components. In this case, the simulation client is optional because a dummy interface can be used instead to run the example without the simulator. Some additional explanation is provided for the various components.
TCP/IP server components
The example includes a UDP and TCP server to receive telecommands and poll telemetry from. This might be an optional component for an OBSW which is only used during the development phase on ground. The UDP server is strongly based on the UDP TC server. This server component is wrapped by a TMTC server which handles all telemetry to the last connected client.
The TCP server is based on the TCP Spacepacket Server class. It parses space packets by using the CCSDS space packet ID as the packet start delimiter. All available telemetry will be sent back to a client after having read all telecommands from the client.
TMTC Infrastructure
The most important components of the TMTC infrastructure include the following components:
- A TC source component which demultiplexes and routes telecommands based on parameters like packet APID and a target ID which is part of the packet payload.
- A TM sink sink component which is the target of all sent telemetry and sends it to downlink handlers like the UDP and TCP server.
You can read the Communications chapter for more background information on the chosen TMTC infrastructure approach.
Dataflow
TMTC component group
This group is the primary interface for clients to communicate with the on-board software
using the combination of CCSDS space packets and serde serialized payloads.
In the future, this might be extended with the
CCSDS File Delivery Protocol.
A client can connect to the UDP or TCP server to send telecommands to the on-board software. These servers forward all telecommands to a centralized TC source component, which demultiplexes them and routes each one to its target component.
All telemetry generated by the on-board software is sent to a centralized TM sink. The core controller also forwards events to the event manager, which converts them into telemetry and sends it to the TM sink as well. The TM sink performs a demultiplexing step to forward all telemetry to the relevant recipients, which in the example case are the last connected UDP client and any connected TCP client.
Application Group
The application group contain some components you might also find in a real satellite software. This includes an AOCS stack with various device handlers and system level objects.