TMTC Commander Core
Project description
TMTC Commander
Overview
This is a small Python framework targeted towards the testing of remote systems like satellites and rovers. It simplifies sending and receiving TMTCs (Telemetry and Telecommands) and testing via different communication interfaces. This tool can be used either as a command line tool or as a GUI tool. The GUI features require a PyQt5 installation. This package also has dedicated support to send and receive ECSS PUS packets or other generic CCSDS packets.
Features
-
Generic communication interface abstraction which can also be used without the other components of the library if the goal is to separate the packet logic from the communication interface. The dedicated documentation 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.
-
High level CFDP components which allow to build CFDP standard conformant CFDP handlers.
-
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
-
Basic logger components which can be used to store sent Telecommands and incoming Telemetry in files
-
Some components are tailored towards usage with the Flight Software Framework (FSFW)
The framework currently supports the following communication interfaces:
- TCP/IP with UDP and TCP. The TCP interface currently only supports sending CCSDS space packets and is able to parse those packets from the received data stream.
- Serial Communication with a transport layer using either COBS encoded packets or DLE as a simple ASCII based transport layer.
- QEMU, using a virtual serial interface
It is also possible to supply custom interfaces.
Examples
The examples
folder contains a simple
example using a dummy communication interface. It sends a PUS ping telecommand and then reads the
ping reply and the verification replies back from the dummy interface. Assuming, the package was
installed in a virtual environment like shown in the installation chapter, it can be
run like this for the CLI mode:
cd examples
./tmtcc.py
or like this for the GUI mode:
cd examples
./tmtcc.py -g
The EIVE and SOURCE project implementation of the TMTC commander provide more complex implementations.
Tests
To run the tests, install the test requirements first with the following command, assuming a virtual environment:
pip install .[gui,test]
All tests are provided in the src/test
folder and can be run with coverage information
by running
coverage run -m pytest
provided that pytest
and coverage
were installed with
pip install coverage pytest
Installation
It is recommended to use a virtual environment when installing this library. The steps here assume you have set up and activated the environment.
To install the full version with GUI support, run the following command to install from the cloned source code
pip install .[gui]
You can omit [gui]
for a CLI only installation. Alternatively you can also install the package
from PyPI with pip install -e tmtccmd[gui]
.
Documentation
The documentation is built with Sphinx
Install the required dependencies first:
pip install -r docs/requirements.txt
Then the documentation can be built with
cd docs
make html
The doctests can be run with the following command
cd docs
make doctest
Using PyCharm
When using PyCharm and running the application from PyCharm, it is recommended to set
the Emulate terminal in output console
option. This is because packages like prompt-toolkit
require a complete terminal for features like auto-complete to work.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.