Quick Start

Get up and running with the GVA LDM SDK in minutes.

Prerequisites

Ensure you have:

Running the GVA HMI

The quickest way to see the SDK in action is to run the demonstration HMI:

cd /path/to/ldm/build
./bin/gva-qt6-hmi

This launches a full GVA-compliant Human Machine Interface demonstrating:

  • PPI (Plan Position Indicator) display
  • Vehicle status widgets
  • Alarm annunciation
  • Function key navigation

Starting the Services

For a complete GVA environment, start the core services:

1. Registry Service

The registry manages system registration and discovery:

./bin/gva-qt6-registry &

2. Alarms Service

The alarms service handles alarm management:

./bin/gva-qt6-alarms &

3. UACM Service

Usage and Condition Monitoring service:

./bin/gva-qt6-uacm &

Your First Application

Here's a minimal example that registers with the GVA system:

#include <ldm10/Registration.hpp>
#include <dds/dds.hpp>

int main() {
    // Create DDS participant
    dds::domain::DomainParticipant participant(0);

    // Create Registration topic publisher
    dds::topic::Topic<GVA::Registration> topic(participant, "Registration");
    dds::pub::Publisher publisher(participant);
    dds::pub::DataWriter<GVA::Registration> writer(publisher, topic);

    // Create registration message
    GVA::Registration reg;
    reg.systemId("MY_APP_001");
    reg.systemName("My First GVA App");
    reg.systemType(GVA::SystemType::APPLICATION);
    reg.status(GVA::RegistrationStatus::ONLINE);

    // Publish registration
    writer.write(reg);

    std::cout << "Registered with GVA system!" << std::endl;

    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(my_gva_app)

find_package(CycloneDDS REQUIRED)
find_package(CycloneDDS-CXX REQUIRED)
find_package(ldm10 REQUIRED)

add_executable(my_gva_app main.cpp)
target_link_libraries(my_gva_app 
    ldm10::ldm10
    CycloneDDS-CXX::ddscxx
)

Build and Run

mkdir build && cd build
cmake ..
make
./my_gva_app

Running Examples

The SDK includes several example applications:

Registration Examples

# Simple registration
./bin/gva-qt6-registration-simple

# Multi-system registration
./bin/gva-qt6-registration-multi

Alarm Examples

# Alarm generator
./bin/gva-qt6-alarms-multi

Fun Example - Drone Invaders

A space invaders clone that demonstrates full GVA integration:

./bin/gva-qt6-app-drone-invaders

See Drone Invaders for details.

DDS Configuration

The SDK uses DDS Domain 0 by default. To change:

# Set via environment variable
export CYCLONEDDS_URI=file:///path/to/cyclonedds.xml

# Or in code
dds::domain::DomainParticipant participant(42);  // Domain 42

Next Steps