GVA HMI - Human Machine Interface

The GVA HMI (gva-qt6-hmi) is the core display rendering application for DEF STAN 23-009 compliant military vehicle Human Machine Interfaces. It provides a fully functional display with all eight functional areas, DDS integration, and support for third-party external applications.

GVA HMI Quad Camera View

Overview

The GVA HMI application provides:

  • DEF STAN 23-009 Compliance: Full implementation of GVA display layout and functional areas
  • Eight Functional Areas: SA, WPN, DEF, SYS, DRV, STR, COM, BMS with dedicated screens
  • DDS Integration: Real-time alarm display, registration services, and device management
  • External App Support: Third-party applications can render to WPN, STR, and BMS screens
  • Video Playback: Camera/video stream display on SA (Situational Awareness) screen
  • Widget Rendering: Custom Qt widgets for PPI, vehicle status, speedometer, and more

Functional Areas

The HMI implements all eight GVA functional areas accessible via the control buttons:

Area Key Description
SA F1 Situational Awareness - Video/camera feed with PPI overlay
WPN F2 Weapons - Extensible screen for weapon systems
DEF F3 Defensive Aids - Countermeasures and threat display
SYS F4 System - 3D vehicle status and configuration
DRV F5 Driver - Speedometer, RPM, and camera feed
STR F6 Set To Role - Vehicle-specific role configuration
COM F7 Communications - Radio and comms management
BMS F8 Battlespace Management System - Tactical mapping and situational awareness

Functional Area State Machine

All eight functional areas are fully interconnected — the crew can switch directly between any screen. Threats and Alarms overlays are accessible from any active screen.

stateDiagram-v2 direction LR [*] --> SA : Power On state "Functional Areas" as FA { SA : F1 - Situational Awareness WPN : F2 - Weapons DEF : F3 - Defensive Aids SYS : F4 - Systems DRV : F5 - Driver STR : F6 - Set To Role COM : F7 - Communications BMS : F8 - Battlespace Management SA --> WPN : F2 SA --> DEF : F3 SA --> SYS : F4 SA --> DRV : F5 SA --> STR : F6 SA --> COM : F7 SA --> BMS : F8 WPN --> SA : F1 WPN --> DEF : F3 WPN --> SYS : F4 WPN --> DRV : F5 WPN --> STR : F6 WPN --> COM : F7 WPN --> BMS : F8 DEF --> SA : F1 DEF --> WPN : F2 DEF --> SYS : F4 DEF --> DRV : F5 DEF --> STR : F6 DEF --> COM : F7 DEF --> BMS : F8 SYS --> SA : F1 SYS --> WPN : F2 SYS --> DEF : F3 SYS --> DRV : F5 SYS --> STR : F6 SYS --> COM : F7 SYS --> BMS : F8 DRV --> SA : F1 DRV --> WPN : F2 DRV --> DEF : F3 DRV --> SYS : F4 DRV --> STR : F6 DRV --> COM : F7 DRV --> BMS : F8 STR --> SA : F1 STR --> WPN : F2 STR --> DEF : F3 STR --> SYS : F4 STR --> DRV : F5 STR --> COM : F7 STR --> BMS : F8 COM --> SA : F1 COM --> WPN : F2 COM --> DEF : F3 COM --> SYS : F4 COM --> DRV : F5 COM --> STR : F6 COM --> BMS : F8 BMS --> SA : F1 BMS --> WPN : F2 BMS --> DEF : F3 BMS --> SYS : F4 BMS --> DRV : F5 BMS --> STR : F6 BMS --> COM : F7 } state "Global Overlays (accessible from any screen)" as GO { Threats : Threat Warning Display Alarms : Alarm / Caution / Advisory } FA --> Threats : Threat Detected Threats --> FA : Dismiss / Timeout FA --> Alarms : Alarm Raised Alarms --> FA : Acknowledge

Running the HMI

Basic Usage

# Start the HMI on default SA screen
./build/bin/gva-qt6-hmi

# Start on a specific functional area
./build/bin/gva-qt6-hmi --area=4    # Start on SYS screen
./build/bin/gva-qt6-hmi -a 5        # Start on DRV screen

# Play video on SA screen
./build/bin/gva-qt6-hmi /path/to/video.mp4

Command Line Options

Option Description
-a, --area <N> Start in functional area (1=SA, 2=WPN, 3=DEF, 4=SYS, 5=DRV, 6=STR, 7=COM, 8=BMS)
<video> Video file to play on SA screen (positional argument)
-h, --help Display help information
--version Display version information

Keyboard Controls

Global Controls

Key Action
F1-F8 Switch to functional area (SA, WPN, DEF, SYS, DRV, STR, COM, BMS)
F11 Toggle fullscreen mode
L Toggle label visibility
Escape Exit fullscreen / Close alarms view

Alarms View Controls

Key Action
A Show/hide alarms table
F1 Toggle sort by Time/Category
F2 Toggle sort Ascending/Descending
Up/Down Navigate alarm list
Enter Acknowledge selected alarm

DRV Screen Controls

Key Action
F12 Toggle RPM gauge mode (Full/Compact)

External Applications

The HMI supports third-party external applications on three extensible screens:

  • WPN (F2) - Weapon system applications
  • STR (F6) - Set To Role applications
  • BMS (F8) - Battlespace management / mapping applications

When no external application is connected, these screens display "Waiting for External Application".

Running with BMS

# Terminal 1: Start the registry service
./build/bin/gva-qt6-registry --domain=0 &

# Terminal 2: Start the HMI
./build/bin/gva-qt6-hmi --area=8

# Terminal 3: Start the BMS application
./build/bin/gva-qt6-app-bms --domain=0

See the BMS Application documentation for more details.

Running with Shield Protocol

# Terminal 1: Start the registry service
./build/bin/gva-qt6-registry --domain=0 &

# Terminal 2: Start the HMI on WPN screen
./build/bin/gva-qt6-hmi --area=2

# Terminal 3: Start the Shield Protocol game
./build/bin/gva-qt6-app-shield-protocol --domain=0

See the Shield Protocol documentation for more details.

DDS Integration

The HMI integrates with the GVA DDS services for:

Architecture

┌─────────────────────────────────────────────────────────────┐
│                      GVA HMI Window                         │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────────────────────────────────────────────┐   │
│  │              Main Display Area                       │   │
│  │  ┌─────────────────────────────────────────────┐    │   │
│  │  │  Functional Area Content                     │    │   │
│  │  │  - SA: Video + PPI Widget                    │    │   │
│  │  │  - SYS: 3D Vehicle + Wheels Widget           │    │   │
│  │  │  - DRV: Camera + Speed/RPM Widgets           │    │   │
│  │  │  - BMS/WPN/STR: External App Frame           │    │   │
│  │  └─────────────────────────────────────────────┘    │   │
│  └─────────────────────────────────────────────────────┘   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  Status Bar: DTG | Grid Ref | Heading | Alarms      │   │
│  └─────────────────────────────────────────────────────┘   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  Function Keys (Bezel Buttons): F1-F20               │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

Building

cd build
cmake ..
make gva-qt6-hmi -j$(nproc)

Build Options

CMake Option Description
HAS_MULTIMEDIA Enable Qt Multimedia for video playback
HAS_OPENGL_VEHICLE Enable 3D vehicle rendering on SYS screen
HAS_DDS_ALARMS Enable DDS alarm and registration integration
LICENCE_CHECK_ENABLED Enable runtime licence validation