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¶
Screenshots¶
Map Layers¶
The BMS supports multiple map tile providers:
Satellite¶
ESRI World Imagery satellite view.

Topographic¶
ESRI World Topographic map with elevation contours.

Street¶
OpenStreetMap street map view.

Weather Overlay¶
Real-time weather radar overlay showing precipitation.

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¶

Without Note¶

Connection States¶
Waiting for External Application¶
When the HMI is waiting for the BMS application to connect:

Dial Move Not Displayed¶
Radial menu in hidden state during map navigation:

Running the BMS¶
Prerequisites¶
- GVA HMI must be running
- Registry service must be running
- Network connectivity on DDS domain 0
Command Line 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:
HMI Integration Mode¶
Run the BMS as a third-party application for the GVA HMI:
The BMS will:
- Register with the Registry service to obtain a Resource ID
- Publish its Third Party Session to the HMI
- Configure bezel button labels (F1-F12) for map controls
- 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:
Accessing from HMI¶
- Start the HMI and BMS as shown above
- Press F28 (BMS) on the HMI function select bar
- The HMI control area will display "Waiting for external application..."
- 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:

| 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:

- 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

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)

Data Sources Panel¶
Enable or disable live data connectors:

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):
ADS-B - Aircraft Tracking¶
Aircraft tracking from OpenSky Network REST API.
- Requirements: Optional OpenSky credentials in
adsb_config.jsonfor higher rate limits - Data: Callsign, position, altitude, velocity, heading
- Symbols: Rendered as MIL-STD-2525D air symbols
Configuration (adsb_config.json):
NMEA GPS¶
NMEA 0183 GPS data from serial port or network socket.
- Serial:
/dev/ttyUSB0at 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¶
Configuration¶
Map Tile Cache¶
Map tiles are cached locally in:
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:
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¶
- Check Registry service is running
- Verify DDS domain ID matches (default: 0)
- Check BMS obtained a Resource ID in console output
- Ensure HMI is on BMS screen (F28)
Map Tiles Not Loading¶
- Check internet connectivity
- Verify tile cache directory is writable
- Try a different map layer (some may have rate limits)
Button Presses Not Working¶
- Ensure BMS is the active application
- Check HMI is forwarding button events
- Verify DDS connectivity between HMI and BMS
AIS Vessels Not Appearing¶
- Verify
ais_config.jsonexists in the executable directory - Check API key is valid (get from aisstream.io)
- Ensure AIS connector is enabled in Data Sources panel
- Check console for WebSocket connection status
ADS-B Aircraft Not Appearing¶
- Verify OpenSky Network is accessible
- Check
adsb_config.jsonfor authentication (optional but recommended) - Ensure ADS-B connector is enabled in Data Sources panel
- Note: Unauthenticated requests have strict rate limits
Weather Overlay Not Showing¶
- Enable Rain/Precipitation or Clouds/Satellite in Map Layers panel
- Weather data requires internet connectivity
- RainViewer API may have temporary outages
- Check zoom level - weather tiles only available at certain zoom levels
Popup Panels Not Responding to Clicks¶
- Drag the panel by its title bar only
- Ensure you're clicking on the toggle/dropdown, not the panel background
- Check if panel is fully visible within window bounds