Introduction
Overview
The goal of this framework is to make it as easy to send telecommands (TCs) to the On-Board Software (OBSW) running on an external On-Board Computer (OBC) and to analyse the telemetry (TMs) coming back. The following graph shows two possible ways to use the TMTC commander
The first way assumes that the OBSW can be run on a host computer and starts a TPC/IP server internally. The TMTC commander can then be used to send telecommands via the TCP/IP interface. The second way assumes that the OBSW is run on an external microcontroller. Here, the serial interface is used to send telecommands. Other ways like sending TMTCs via Ethernet to a microcontroller running a TCP/IP server are possible as well.
Features
Generic communication interface abstraction in form of the
tmtccmd.com.ComInterface
. This abstraction could also be used without the other components of the library if the goal is to separate the packet logic from the communication interface. The Communication Abstraction chapter contains a more information and examples.Special support for Packet Utilisation Standard (PUS) packets and CCSDS Space Packets. This library uses the spacepackets library for most packet implementations.
Support for both CLI and GUI usage.
Flexibility in the way to specify telecommands to send and how to handle incoming telemetry. This is done by requiring the user to specify callbacks for both TC specification and TM handling.
One-Queue Mode for simple command sequences and Multi-Queue for more complex command sequences.
Listener mode to only listen to incoming telemetry.
Some components are tailored towards usage with the Flight Software Framework (FSFW) and the sat-rs library.
This framework also has a communication interface abstraction which allows to exchange TMTC through different channels. The framework currently supports (among others) the following communication interfaces:
TCP/IP with the
tmtccmd.com.udp.UdpClient
andtmtccmd.com.tcp.TcpSpacepacketsClient
.Serial Communication with COBS encoded packets by using the
tmtccmd.com.serial_cobs.SerialCobsComIF
.
It is also possible to supply custom interfaces.