125 lines
3.4 KiB
Markdown
125 lines
3.4 KiB
Markdown
ESA OPS-SAT Rust experiment
|
|
========
|
|
|
|
This is the primary repository for the ESA OPS-SAT experiment.
|
|
The primary repository to generate packages for ESOC can be found [here](https://egit.irs.uni-stuttgart.de/rust/ops-sat-experiment).
|
|
You can also find some more general documentation about OPS-SAT there.
|
|
|
|
## Pre-Requisites
|
|
|
|
- Containerization provider like [docker](https://www.docker.com/) or
|
|
[podman](https://podman.io/) installed
|
|
- [`cross`](https://github.com/cross-rs/cross) package installed
|
|
|
|
## Build for Target Hardware
|
|
|
|
You might need to set the [`CROSS_CONTAINER_ENGINE`](https://github.com/cross-rs/cross/wiki/FAQ#explicitly-choose-the-container-engine)
|
|
and [`CROSS_ROOTLESS_CONTAINER_ENGINE`](https://github.com/cross-rs/cross/blob/main/docs/environment_variables.md#configuring-cross-with-environment-variables)
|
|
variables manually before calling cross.
|
|
|
|
### Debug Build
|
|
|
|
```sh
|
|
cross build
|
|
```
|
|
|
|
### Release Build
|
|
|
|
```sh
|
|
cross build --release
|
|
```
|
|
|
|
## Build for Host
|
|
|
|
The software was designed to be runnable and testable on a host computer.
|
|
You can use the regular cargo workflow for this.
|
|
|
|
### Running
|
|
|
|
```sh
|
|
cargo run --features host
|
|
```
|
|
|
|
### Testing
|
|
|
|
```sh
|
|
cargo test
|
|
```
|
|
|
|
## Commanding Infrastructure
|
|
|
|
Commanding of the `ops-sat-rs` application is possible by different means.
|
|
|
|
<img src="docs/networking-structure.png" alt="Networking and Commanding Structure" width="500"/>
|
|
|
|
### Using the `pyclient` and `pyserver` applications
|
|
|
|
You can find both commanding application inside the `pytmtc` folder.
|
|
It is recommended to set up a virtual environment first, for example by running the following
|
|
code inside the `pytmtc` folder:
|
|
|
|
```sh
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
```
|
|
|
|
After that, you can install all requirements for both the client and server application
|
|
interactively using
|
|
|
|
```sh
|
|
pip install -e .
|
|
```
|
|
|
|
If you want to command the satellite using the OPS-SAT infrastrucute, start the `pyserver.py`
|
|
as a background application first, for example by simply running `pyserver.py` inside a
|
|
new terminal window.
|
|
|
|
After that, you can run `pyclient.py -p /test/ping -l` to send a ping telecommand and then
|
|
go into listener mode using the following `tmtc_conf.json` file:
|
|
|
|
```json
|
|
{
|
|
"com_if": "tcp",
|
|
"tcpip_tcp_ip_addr": "127.0.0.1",
|
|
"tcpip_tcp_port": 4097
|
|
}
|
|
```
|
|
|
|
You can command the TCP server in the OPS-SAT software directly by running the commands with
|
|
the following configuration:
|
|
|
|
```json
|
|
{
|
|
"com_if": "tcp",
|
|
"tcpip_tcp_ip_addr": "127.0.0.1",
|
|
"tcpip_tcp_port": 7031
|
|
}
|
|
```
|
|
|
|
You can run `pyclient.py -T` or `pyclient.py -h` for more information on the client application.
|
|
|
|
## Knowledge Base
|
|
|
|
### Home Path Handling
|
|
|
|
The OPS-SAT software filesystem handling will determine a home path at the start of the software.
|
|
This home path is used for various mechanisms inside the OPS-SAT infrastructure.
|
|
|
|
Currently, there are 3 possible configurations:
|
|
|
|
1. If the software is built with the `host` feature, the HOME path will be the current path the
|
|
software is run at.
|
|
2. If the `host` feature is not set and the `/home/exp278` folder exists, that folder will be
|
|
the home directory.
|
|
3. Otherwise, the default OS home directory will be the home directory.
|
|
|
|
### Application Shutdown Handling
|
|
|
|
The application can be stopped by creating a `stop-experiment` file either in the home path
|
|
specified in the previous section, or inside the temporary folder. There is also an action command
|
|
available to stop the application.
|
|
|
|
### Camera Handling
|
|
|
|
TODO
|