# ARPIST

![Rust](https://img.shields.io/badge/rust-%23000000.svg?style=for-the-badge&logo=rust&logoColor=white)
![C++](https://img.shields.io/badge/c++-%2300599C.svg?style=for-the-badge&logo=c%2B%2B&logoColor=white)

**ARPIST** is an acronym for **A**utonomous **R**ocket **P**ointer **I**nteractive **S**imulation of **T**elemetry (**ARPIST** in short).

In brief, ARPIST is a tool for simulating the transmission of telemetry data from a local device connected via serial port to a board with a radio module equipped, in order to test ARP response to data in a testing environment.


## Getting started

### Prerequisites

- **Rust**: Rust need to be installed on the machine where you want to build and run ARPIST. You can find the installation instructions [here](https://www.rust-lang.org/tools/install).

### Installation

If you want to install ARPIST on your machine, you can do it with the following command:

```bash
cargo install --git ssh://git@git.skywarder.eu/federico.lolli/arpist.git
```

### Developing

If you want to develop ARPIST, you can clone the repository and build it with the following commands:

```bash
git clone git@git.skywarder.eu:federico.lolli/arpist.git
cd arpist
cargo build --release
```

The executable will be located in the `target/release` folder.

## Usage

ARPIST needs a board with a radio module connected to a serial port to work. The board must have a specific entrypoint flashed, which can be found on the [Boardcore repo](https://git.skywarder.eu/avn/swd/skyward-boardcore), [here](https://git.skywarder.eu/avn/swd/skyward-boardcore/-/blob/nokia-tm-dev/src/entrypoints/sx1278-mav-raw.cpp) precisely.

Once the board has the correct entrypoint flashed, is connected to the serial port and the serial port, you can run ARPIST with the following command:

```bash
arpist --port <serial_port> <telemetry_file>
```

Where `<serial_port>` is the serial port where the board is connected and `<telemetry_file>` is the file containing the telemetry data to send to the board.

**NOTE**: if a single STM32 compatible board is connected to the serial port, ARPIST will automatically detect it and use it, so you can omit the `--port <serial_port>` option.