This commit is contained in:
Martino Ferrari
2026-05-15 17:42:14 +02:00
commit e3389f932b
40 changed files with 7622 additions and 0 deletions
+93
View File
@@ -0,0 +1,93 @@
# 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