DDS Middleware

The GVA product line uses the Data Distribution Service (DDS) standard for all publish/subscribe communication between vehicle subsystems. DDS provides real-time, scalable, and decentralised data distribution — ideal for safety-critical military vehicle architectures where reliability and deterministic latency matter.

AstuteDDS

Astute Systems AstuteDDS

AstuteDDS is the DDS middleware used across the GVA product line — every ATLAS, TALOS, and HERMES binary ships with it built in. Developed by Astute Systems, it is purpose-built for GVA deployments and provides:

  • Tight GVA integration — tested and validated against all LDM IDL topic definitions
  • Lightweight footprint — optimised for embedded and resource-constrained platforms (ARM64 i.MX, single-board computers)
  • Defence-grade quality — developed with military vehicle deployment in mind
  • First-class support — direct engineering support from Astute Systems
  • Open documentation — full API reference at astute-systems.github.io/astutedds-cxx

There is nothing to install or configure separately — AstuteDDS is bundled with every ATLAS/TALOS/HERMES package and with the ldm-sdk runtime.

AstuteDDS Documentation

Full API documentation, configuration guides, and examples are available at:
astute-systems.github.io/astutedds-cxx

Architecture

DDS sits between the application layer and the network, handling discovery, serialisation, and reliable delivery:

graph TB subgraph "GVA Applications" HMI[gva-hmi] REG[gva-registry] ALM[gva-alarms] BMS[gva-app-bms] EXT[External Apps] end subgraph "LDM SDK Layer" IDL[IDL-Generated Types] QT[Qt Wrapper Pub/Sub] end subgraph "DDS Middleware" DDS[AstuteDDS] end subgraph "Network" NET[UDP Multicast / Shared Memory] end HMI --> QT REG --> QT ALM --> QT BMS --> QT EXT --> QT QT --> IDL IDL --> DDS DDS --> NET

DDS Configuration

Domain ID

All applications on the same vehicle must use the same DDS domain ID:

# Default domain
gva-registry --domain=0
gva-hmi --domain=0

# Separate domain for testing
gva-registry --domain=1
gva-hmi --domain=1

Discovery Configuration

Shared AstuteDDS discovery settings live in /etc/gva/astutedds/discovery-wired.json, installed by the gva-dds-config package (a dependency of every ATLAS/TALOS service and app package). It's read at startup by every GVA DDS binary — most deployments never need to edit it.

Writing Your Own DDS Client

If you're integrating a third-party or external application with the GVA network rather than running the shipped product-line binaries, see the LDM SDK Reference — it covers the IDL headers, the Qt wrapper pub/sub layer, and source examples for building your own GVA-compliant DDS client against AstuteDDS.

See Also