Quick Start¶
Get up and running with the GVA LDM SDK in minutes.
Prerequisites¶
Ensure you have:
- [x] Installed the SDK packages (Installation Guide)
- [x] Configured your licence (Licensing Guide)
- [x] Qt6 development environment
Running the GVA HMI¶
The quickest way to see the SDK in action is to run the demonstration 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:
2. Alarms Service¶
The alarms service handles alarm management:
3. UACM Service¶
Usage and Condition Monitoring service:
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¶
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¶
Fun Example - Drone Invaders¶
A space invaders clone that demonstrates full GVA integration:
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