# TMTC Commander EIVE

This application can be used to test the EIVE On-Board Software. Furthermore, it can
also be used to retrieve all sorts of telemetry data like housekeeping data.

It is recommended to use this application with a virtual environment.
The [virtual environemnt](#venv) chapter describes how to set one up. The [requirements](#reqs)
describes how to install all required packages.

The configuration file can currently be found at `tmtc_conf.json`. It caches settings
like the default communication interface or parameters like the TCP port when using the TCP
communication interface.

# Examples

Assuming you are running in a [virtual environment](#venv) and all [package requirements](#reqs)
were installed properly.

Run CLI mode

```sh
./tmtcc.py
```

Run GUI mode

```sh
./tmtcc.py -g
```

# <a id="venv"></a> Set up virtual environment

## Linux

1. Create virtual environment

   ```sh
   python3 -m venv venv
   ```

2. Activate virtual environment

   ```sh
   . venv/bin/activate
   ```

## Windows

1. Create virtual environment

   ```sh
   py -m venv venv
   ```

2. Activate virtual environment

   ```sh
   venv\Scripts\activate.bat
   ```

# <a id="reqs"></a> Install requirements

There are two ways to install the requirements. One is to install the primary dependency
`tmtccmd` interactively. This is the recommended way

Assuming you are running in a virtual environment:

1. Install `tmtccmd` for virtual environment. `-e` for interactive installation.

   ```sh
   cd deps/tmtccmd
   pip install -e .[gui]
   ```

Alternatively you can also install the packages from PyPI completely, but the risk of
incompatibilities will be high there

```sh
pip install -r requirements.txt
```

# Run Linter

Can be used to quickly check validity of script. Install `flake8` first

```sh
python3 -m pip install flake8
```

or on Windows

```sh
py -m pip install flake8
```

and then run the `lint.py` script

```sh
./lint.py
```

# Run Auto-Formatter

This repo is auto-formatted using `black`. Assuming `black` is installed, you can simply run

```sh
black .
```