Skip to content
Snippets Groups Projects
Forked from an inaccessible project.
user avatar
Robin.Mueller authored
c6fff8d9
History

TMTC Client

Cloning the repository

It is recommended to fork this repository for new missions. The tmtc_core folder contains most generic software components while this repository is based on the SOURCE mission. However, this repostiory is a good starting point and example implementation.

Fork the repository or clone it with following command:

git clone https://git.ksat-stuttgart.de/source/tmtc.git

Initiate the core components by initiating and updating the submodules

git submodule init
git submodule sync
git submoduke update

Install all require packages by running

pip install -r requirements.txt

Now the script can be tested by running

python3 obsw_tmtc_client.py -h

It is recommended to use and setup PyCharm to also use the preconfigured run configurations.

Prerequisites

Runs with Python 3.8. Don't use Python 2.x! Manual installation of crcmod and pyserial might be needed. It is recommended to install use PyCharm to run this client. Students of the Uni Stuttgart usually have access to PyCharm Professional.

  1. Install pip for used Python distribution if it is not installed yet
  2. Install crcmod and all other required packages if using system python compiler. If using the local venv as the compiler, these packages should be installed.
    Command:
pip install -r requirements.txt

Alternatively:

python<version> -m pip<version> install crcmod

or use IDE (interpreter settings -> pip in PyCharm)

  1. Install python-tk on Linux.
sudo apt-get install python-tk

On Windows, the package should be included.

How To Use

The script can be used by specifying command line parameters. Please run this script with the -h flag or without any command line parameters to display options. The client can be used to send via Ethernet or serial port.

GUI is work-in-progress. It might be necessary to set board or PC IP address if using ethernet communication. Default values should work normally though.

Examples

Example command to test service 17, assuming no set client IP (set manually to PC IP Address if necessary). IP Address or port numbers have to be set manually in the global configuration file (IP address can be passed as a command line argument):

obsw_tmtc_client.py -m 3 -s 17

Example to run Unit Test:

obsw_tmtc_client.py -m 5

Example to test service 3 with serial communication, printing all housekeeping packets, COM port needs to be typed in manually (or set with --COM <COM PORT>):

obsw_tmtc_client.py -m 3 -s 3 --hk -c 

Modes

There are different modes. Run the client with the -h flag to display the modes.

Ethernet Communication

Port needs to be specified manually for now, IP adresses can be set in command line.

Issues

If there are problems receiving packets, use the tool Wireshark to track ethernet communication for UDP echo packets (requests and response). If the packets appear, there might be a problematic firewall setting. Please ensure that python.exe UDP packets are not blocked in advanced firewall settings and create a rule to allow packets from port 2008.

Serial Communication

Serial communication was implemented and is tested for Windwos 10 and Ubuntu 20.04. It requires the PySerial package installed. It should be noted that there are several modes for the serial communication. There is a fixed frame mode and a mode based on a simple DLE transport layer. When using the DLE transport layer, sent packets are encoded with DLE while received packets need to be DLE encoded.

Module Test

Includes a moduel tester which sends TCs in a queue and automatically analyzes the replies. This is the best way to test the functionality of the software right now as a software internal TC injector has not been implemented yet for the FSFW. Some more information will follow on how to write Unit Tests.

Developers Information

Code Style: PEP8.

Can be enforced/checked by using Pylint as an external program in PyCharm. Install it with pip and then install and set-up the Pylint plugin in PyCharm.

There are a lot of features which would be nice, for example a GUI. The architecture of the program should allow extension like that without too many issues, as the sending and telemetry listening are decoupled.

Import run configurations in PyCharm

The PyCharm IDE can be used to comfortably manage a set of run configuations (for example tests for different services). These configurations were shared through the version control system git and should be imported automatically. If these configurations dont show up, try to open the tmtc folder as a new PyCharm project in a new window.

To add new configurations, go to Edit Configurations... at the top right corner in the drop-down menu. Specify the new run configurations and set a tick at Share through VCS.