# MARTe IO Components A collection of I/O components for the [MARTe2](https://vcis.f4e.europa.eu/marte2-docs/) real-time framework, together with a Go-based web visualisation client. ## Components | Component | Type | Description | |-----------|------|-------------| | [UDPStreamer](Docs/UDPStreamer.md) | DataSource | Streams MARTe2 signals to a single UDP client in real time | | [SineArrayGAM](Docs/SineArrayGAM.md) | GAM | Generates continuous sinusoidal burst arrays (testing / demo) | ## Client Tools | Tool | Description | |------|-------------| | [WebUI](Docs/WebUI.md) | Browser-based real-time plotter — connects to UDPStreamer via UDP, exposes data over WebSocket | ## Quick Start ```bash # 1. Configure environment (edit paths to point at your MARTe2 builds) source marte_env.sh # 2. Build everything and run the demo application with the browser UI cd Test/MARTeApp ./run.sh --webui # 3. Open http://localhost:8080 in a browser # Drag signals from the sidebar onto a plot panel to visualise them. ``` See the [Tutorial](Docs/Tutorial.md) for a step-by-step walkthrough. ## Building ### UDPStreamer library ```bash source marte_env.sh make -f Makefile.gcc TARGET=x86-linux ``` ### Unit tests ```bash source marte_env.sh make -f Makefile.gcc TARGET=x86-linux test ./Build/x86-linux/Tests/GTest/MainGTest.ex --gtest_filter="UDPStreamer*" ``` ### WebUI client ```bash cd Client/WebUI go build -o udpstreamer-webui ./... ``` ## Repository Layout ``` . ├── Source/Components/DataSources/UDPStreamer/ # UDPStreamer DataSource + SineArrayGAM ├── Test/ │ ├── Components/DataSources/UDPStreamer/ # GTest unit tests │ ├── GTest/ # GTest main entry point │ └── MARTeApp/ # Demo MARTe2 application (cfg + run.sh) ├── Client/WebUI/ # Go WebSocket relay + browser UI ├── Docs/ # Reference documentation and tutorial ├── marte_env.sh # Environment setup (MARTe2_DIR, LD_LIBRARY_PATH) └── Makefile.gcc / Makefile.inc # Top-level build system ``` ## Prerequisites | Dependency | Notes | |------------|-------| | MARTe2 | Must be built; path configured via `MARTe2_DIR` in `marte_env.sh` | | MARTe2-components | IOGAM, LinuxTimer, WaveformGAM must be built | | GCC ≥ 7 | C++98 mode (`-std=c++98`) | | Go ≥ 1.21 | For the WebUI client only | ## Documentation - [UDPStreamer DataSource reference](Docs/UDPStreamer.md) - [SineArrayGAM reference](Docs/SineArrayGAM.md) - [WebUI client reference](Docs/WebUI.md) - [Wire protocol specification](Docs/Protocol.md) - [Tutorial: streaming your first signals](Docs/Tutorial.md) ## License EUPL v1.1