Martino Ferrari ed5d381d32 UDPStreamer: poll data semaphore first, then non-blocking command poll
Reorder Execute() main stage so the background thread waits on dataSem
(sleeping until the RT thread posts) before doing the socket select().
The socket poll is now non-blocking (timeout=0) since command latency
bounded by UDPS_DATA_WAIT_MS is acceptable for CONNECT/DISCONNECT.

Also force-remove old udpstreamer-webui binary in run.sh before rebuild
so stale embedded assets are never served.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 23:51:11 +02:00
2026-05-15 17:42:14 +02:00
2026-05-15 17:42:36 +02:00
2026-05-15 17:42:14 +02:00
2026-05-15 17:42:14 +02:00
2026-05-15 17:42:14 +02:00
2026-05-15 17:42:14 +02:00
2026-05-15 17:42:14 +02:00
2026-05-15 17:42:14 +02:00

MARTe IO Components

A collection of I/O components for the MARTe2 real-time framework, together with a Go-based web visualisation client.

Components

Component Type Description
UDPStreamer DataSource Streams MARTe2 signals to a single UDP client in real time
SineArrayGAM GAM Generates continuous sinusoidal burst arrays (testing / demo)

Client Tools

Tool Description
WebUI Browser-based real-time plotter — connects to UDPStreamer via UDP, exposes data over WebSocket

Quick Start

# 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 for a step-by-step walkthrough.

Building

UDPStreamer library

source marte_env.sh
make -f Makefile.gcc TARGET=x86-linux

Unit tests

source marte_env.sh
make -f Makefile.gcc TARGET=x86-linux test
./Build/x86-linux/Tests/GTest/MainGTest.ex --gtest_filter="UDPStreamer*"

WebUI client

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

License

EUPL v1.1

S
Description
No description provided
Readme 12 MiB
Languages
Makefile 58.6%
C++ 28.6%
JavaScript 5.5%
CMake 2.8%
Go 2.3%
Other 2.2%