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 ``` ### Testing ```sh cargo test ``` ## Commanding Infrastructure Commanding of the `ops-sat-rs` application is possible by different means. Networking and Commanding Structure ### Using the `pyclient` and `pyserver` applications You can find both commanding application inside the `pytmtc` folder. You can also find a `requirements.txt` file there to install all required Python dependencies. 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.