BMS - Battlespace Management System

The BMS (Battlespace Management System) is a comprehensive tactical mapping and situational awareness application. It can operate both as a third-party extension to the GVA HMI or as a standalone tactical display application.

Overview

The BMS application provides:

  • Multi-source map tiles - Satellite, topographic, terrain, street, and nautical charts
  • Military symbology - Full MIL-STD-2525D symbol rendering with APP-6D icons
  • Live data connectors - AIS vessel tracking, ADS-B aircraft tracking, NMEA GPS, Cursor-on-Target (CoT)
  • Weather overlays - Real-time rain radar and cloud/satellite imagery from RainViewer
  • Layer management - Toggle visibility of airports, airspaces, navaids, maritime zones, and more
  • Symbol interaction - Radial menu for edit, delete, annotate, and move operations
  • Point dropper - Add tactical symbols with selectable type, affiliation, and SIDC
  • Route visualization - Display planned routes and live tracking breadcrumbs
  • GVA HMI integration - Third-party session with bezel button and touch event support

Standalone Mode

The BMS supports a standalone mode (--standalone) with enhanced features:

  • Floating toolbar - Drawing tools, point dropper, map layer selector, data sources
  • Popup panels - Draggable, semi-transparent panels for settings and options
  • Position memory - Panels remember their last position when reopened
  • Live data toggles - Enable/disable individual data connectors

Running Standalone

cd build/bin
./gva-qt6-app-bms --standalone

Screenshots

Map Layers

The BMS supports multiple map tile providers:

Satellite

ESRI World Imagery satellite view.

BMS Satellite View

Topographic

ESRI World Topographic map with elevation contours.

BMS Topographic View

Street

OpenStreetMap street map view.

BMS Street View

Weather Overlay

Real-time weather radar overlay showing precipitation.

BMS Weather Overlay

Symbol Interaction

The BMS provides a radial menu for interacting with military symbols on the map.

The radial menu provides options to:

  • Delete - Remove the symbol from the map
  • Note - Add or edit a text annotation
  • Waypoint - Set a navigation waypoint
  • Move - Reposition the symbol

Symbol Notes

Symbols can have notes attached that display as tooltips:

With Note

Symbol with Note

Without Note

Symbol without Note

Connection States

Waiting for External Application

When the HMI is waiting for the BMS application to connect:

Waiting for External Application

Dial Move Not Displayed

Radial menu in hidden state during map navigation:

Dial Not Displayed

Running the BMS

Prerequisites

  • GVA HMI must be running
  • Registry service must be running
  • Network connectivity on DDS domain 0

Command Line Options

./gva-qt6-app-bms [options]
Option Description
--standalone Enable standalone mode with floating toolbar and popup panels
-s, --screen <screen> Target HMI screen: BMS (default), WPN, or STR
-h, --help Display help information
-v, --version Display version information

Standalone Mode

Run the BMS in standalone mode for full tactical display:

cd build/bin
./gva-qt6-app-bms --standalone

HMI Integration Mode

Run the BMS as a third-party application for the GVA HMI:

cd build/bin
./gva-qt6-app-bms

The BMS will:

  1. Register with the Registry service to obtain a Resource ID
  2. Publish its Third Party Session to the HMI
  3. Configure bezel button labels (F1-F12) for map controls
  4. Display fullscreen and wait for HMI connection

With HMI Integration

For full integration with the GVA HMI:

cd build/bin

# Start services
./gva-qt6-registry &
./gva-qt6-alarms &

# Start BMS
./gva-qt6-app-bms &

# Start HMI
./gva-qt6-hmi &

Or use the provided script:

./run_gva_bms.sh

Accessing from HMI

  1. Start the HMI and BMS as shown above
  2. Press F28 (BMS) on the HMI function select bar
  3. The HMI control area will display "Waiting for external application..."
  4. Once connected, the BMS map view appears in the HMI

Standalone Toolbar

In standalone mode, a floating toolbar provides quick access to drawing and configuration tools:

Standalone Toolbar

Icon Tool Description
🖱️ Pan/Select Default mode - pan map and select symbols
📍 Point Dropper Add military symbols to the map
🗺️ Map Layers Configure map source and layer visibility
🛣️ Routes Toggle route/track visibility
⚙️ Data Sources Enable/disable live data connectors

Status Bar

The status bar at the bottom of the screen displays real-time information:

Status Bar

  • Cursor Position - Latitude/longitude and MGRS grid reference under cursor
  • Map Scale - Current zoom level and approximate scale
  • Data Source Status - Connection indicators for active connectors

Point Dropper Panel

The point dropper allows adding military symbols with:

  • Battle Dimension - Ground, Air, Sea Surface, Subsurface, Space
  • Affiliation - Friendly, Hostile, Neutral, Unknown
  • Symbol Type - Unit types specific to the selected dimension
  • SIDC Input - Direct entry of 15-character Symbol Identification Code

Point Dropper Panel

Map Layers Panel

Configure the map display:

  • Map Source - Select from available tile providers (Satellite, Topo, Terrain, Street, etc.)
  • Layer Toggles:
    • Military Symbols
    • Routes/Tracks
    • Airports
    • Airspaces
    • Navaids
    • Bullseyes
    • Geofences
    • Cameras
    • Maritime Zones
    • Shipping Lanes
    • Ports
    • Sea Nav Aids
    • Rain/Precipitation (RainViewer radar)
    • Clouds/Satellite (RainViewer infrared)

Map & Layers Panel

Data Sources Panel

Enable or disable live data connectors:

Data Sources Panel

Live Data Connectors

The BMS supports multiple live data sources that can be enabled/disabled via the Data Sources panel:

AIS - Vessel Tracking

Automatic Identification System data from AISStream.io WebSocket API.

  • Requirements: AISStream API key in ais_config.json
  • Data: Vessel name, position, course, speed, type, flag
  • Symbols: Rendered as MIL-STD-2525D sea surface symbols with affiliation based on flag

Configuration (ais_config.json):

{
    "apiKey": "your-aisstream-api-key",
    "boundingBoxes": [
        [[-90, -180], [90, 180]]
    ]
}

ADS-B - Aircraft Tracking

Aircraft tracking from OpenSky Network REST API.

  • Requirements: Optional OpenSky credentials in adsb_config.json for higher rate limits
  • Data: Callsign, position, altitude, velocity, heading
  • Symbols: Rendered as MIL-STD-2525D air symbols

Configuration (adsb_config.json):

{
    "clientId": "your-opensky-username",
    "clientSecret": "your-opensky-password"
}

NMEA GPS

NMEA 0183 GPS data from serial port or network socket.

  • Serial: /dev/ttyUSB0 at 4800/9600 baud
  • Network: TCP or UDP socket
  • Data: Position, altitude, speed, heading

Cursor on Target (CoT)

TAK/ATAK compatible CoT message receiver.

  • Protocols: SA (Situational Awareness), multicast UDP, TCP
  • Data: CoT events with position, type, and metadata

GTFS Transit

General Transit Feed Specification for public transport.

  • Data: Bus, train, tram, ferry positions and routes
  • Sources: Configurable GTFS-realtime feeds

JSON File

Load symbols from static JSON files.

  • Format: Array of symbol objects with SIDC, position, and metadata

Controls

Bezel Buttons (F1-F12)

The BMS configures the side bezel buttons for map navigation:

Button Label Function
F1 Zoom+ Zoom in on map
F2 Zoom- Zoom out
F3 Pan ↑ Pan map north
F4 Pan ↓ Pan map south
F5 Pan ← Pan map west
F6 Pan → Pan map east
F7 Centre Centre on default location
F8 Sat Switch to satellite imagery
F9 Topo Switch to topographic map
F10 Terrain Switch to terrain view
F11 Street Switch to street map
F12 Reset Reset to default view

Mouse/Touch Controls

When the BMS is active in the HMI:

  • Click/Tap - Select symbol or place marker
  • Drag - Pan the map
  • Scroll wheel - Zoom in/out
  • Long press on symbol - Open radial action menu

Architecture

DDS Topics

The BMS uses the following DDS topics:

Topic Direction Purpose
Third_Party_Session Publish Session registration
Hard_Button_Label Publish Button label configuration
Hard_Button_Event Subscribe Button press events
Widget_Interaction_Event Subscribe Mouse/touch events
requestResourceId Publish Resource ID request
supplyResourceId Subscribe Resource ID allocation
setOperatingMode Publish Operating mode changes

Session Flow

sequenceDiagram participant BMS as BMS App participant REG as Registry participant HMI as HMI Note over BMS: Application starts BMS->>REG: requestResourceId (UUID) REG->>BMS: supplyResourceId (ID: 458) BMS->>BMS: setOperatingMode (Operational) BMS->>HMI: Third_Party_Session Note right of BMS: descriptor="BMS|Battlespace..." BMS->>HMI: Hard_Button_Label (F1-F12) Note right of BMS: Zoom, Pan, Layer buttons HMI->>HMI: Display BMS in control area loop User interaction HMI->>BMS: Hard_Button_Event (F1-F12) BMS->>BMS: Handle map control HMI->>BMS: Widget_Interaction_Event Note right of HMI: Mouse position, clicks BMS->>BMS: Handle map interaction end Note over BMS: Application closes BMS->>HMI: setOperatingMode (Off) HMI->>HMI: Remove BMS session

Configuration

Map Tile Cache

Map tiles are cached locally in:

~/.cache/gva-bms/tiles/

Default Location

The BMS defaults to Brisbane, Australia (-27.4698, 153.0251) at zoom level 10. This can be modified in the source code or via command-line arguments.

Military Symbols

Demo symbols are loaded from:

build/bin/demo_symbols.json

The JSON file defines MIL-STD-2525D symbols with positions:

{
    "description": "Demo military symbols for BMS application",
    "symbols": [
        {
            "id": "friendly-infantry-1",
            "sidc": "SFGPUCI----E***",
            "name": "1st Infantry",
            "latitude": -27.4698,
            "longitude": 153.0251,
            "note": "Main force element"
        }
    ]
}

For detailed information about military symbols including affiliation colours, symbol sets, and SIDC codes, see the Military Symbology page.

Troubleshooting

BMS Not Appearing in HMI

  1. Check Registry service is running
  2. Verify DDS domain ID matches (default: 0)
  3. Check BMS obtained a Resource ID in console output
  4. Ensure HMI is on BMS screen (F28)

Map Tiles Not Loading

  1. Check internet connectivity
  2. Verify tile cache directory is writable
  3. Try a different map layer (some may have rate limits)

Button Presses Not Working

  1. Ensure BMS is the active application
  2. Check HMI is forwarding button events
  3. Verify DDS connectivity between HMI and BMS

AIS Vessels Not Appearing

  1. Verify ais_config.json exists in the executable directory
  2. Check API key is valid (get from aisstream.io)
  3. Ensure AIS connector is enabled in Data Sources panel
  4. Check console for WebSocket connection status

ADS-B Aircraft Not Appearing

  1. Verify OpenSky Network is accessible
  2. Check adsb_config.json for authentication (optional but recommended)
  3. Ensure ADS-B connector is enabled in Data Sources panel
  4. Note: Unauthenticated requests have strict rate limits

Weather Overlay Not Showing

  1. Enable Rain/Precipitation or Clouds/Satellite in Map Layers panel
  2. Weather data requires internet connectivity
  3. RainViewer API may have temporary outages
  4. Check zoom level - weather tiles only available at certain zoom levels
  1. Drag the panel by its title bar only
  2. Ensure you're clicking on the toggle/dropdown, not the panel background
  3. Check if panel is fully visible within window bounds