Skip to Content
This documentation is provided with the HEAT environment and describes this HEAT instance.

Message reference

This page is the data dictionary: every message HEAT ProtoLib defines, every field, its type and its unit or meaning where the schema states one. It is generated from the same .proto comments and the same intermediate representation (json-ir/heat_ir.json) that HEAT ProtoLib’s own code generator reads to build the per-language builders, so it stays in step with the schema by construction.

Type names in the tables below are proto message and enum names, not any one language’s generated class name. See Consume the packages for how each language surfaces them.

The simulation frame

SimulationFrame is the root message: a complete snapshot of every entity and every event at one capture moment.

SimulationFrame

FieldTypeDescription
capture_timeTimestampwall-clock UTC capture time
simulation_tickuint64simulation frame number
simulation_time_secondsdoubleelapsed simulation time (sim clock), seconds
entitiesrepeated EntityStateall entity states this frame
eventsrepeated EntityEventevents that occurred this frame. Order within the frame is not guaranteed; consumers sort by timestamp

EntityState — state of a single entity at a point in time.

FieldTypeDescription
entityEntity
timestampTimestamp

Entity — a simulation entity: a stable id, a name, and the components composing it.

FieldTypeDescription
iduint64unique identifier for this entity (truth id; the join key used across events and components)
namestringhuman-readable name for the entity
componentsrepeated Componentcomponents attached to this entity

Component — ECS-style container. oneof data: exactly one of the 53 component types below is set. Field numbers 6 to 12 are reserved (retired LightsComponent, ControlComponent and EngineComponent, superseded by the ground-vehicle and aircraft component families) and must never be reused.

TagFieldComponent
1transformTransformComponent
2biometric_sensorBiometricSensorComponent
3gazeGazeComponent
4spatialSpatialComponent
5linked_entityLinkedEntityComponent
13wheelWheelComponent
14world_positionWorldPositionComponent
15dynamicsDynamicsComponent
16sonobuoy_dataSonobuoyDataComponent
17passive_sonar_detectionPassiveSonarDetectionComponent
18capacity_dataCapacityDataComponent
19wearable_bio_sensorWearableBioSensorComponent
20pupilometryPupillometryDataComponent
21air_dataAirDataComponent
22cloud_dataCloudDataComponent
23health_dataHealthComponent
24target_dataTargetDataComponent
25gv_control_dataGroundVehicleControlComponent
26gv_lighting_dataGroundVehicleLightingComponent
27gv_powertrain_dataGroundVehiclePowertrainComponent
28gv_suspension_dataGroundVehicleSuspensionComponent
29atc_dataATCDataComponent
30aircraft_engine_dataAircraftEngineComponent
31aircraft_landing_gear_dataAircraftLandingGearComponent
32aircraft_lighting_dataAircraftLightingComponent
33aircraft_dataGenericAircraftComponent
34fwa_dataFWADataComponent
35fwa_control_surface_dataFWAControlSurfacesComponent
36fwa_input_dataFWAInputComponent
37rotary_input_dataRotaryInputComponent
38rotary_wing_dataRotaryWingDataComponent
39uas_controls_dataUASControlsComponent
40uas_datalink_dataUASDataLinkComponent
41uas_motor_dataUASMotorComponent
42heat_user_dataHeatUserComponent
43unit_type_dataUnitTypeComponent
44radar_dataRadarComponent
45radio_dataRadioComponent
46aircraft_avionics_dataAircraftAvionicsComponent
47aircraft_display_state_dataAircraftDisplayStateComponent
48resource_stores_dataResourceStoresComponent
50fuel_system_dataFuelSystemComponent
51emission_dataEmissionComponent
52sensor_contacts_dataSensorContactsComponent
53iff_dataIffComponent
54signature_dataSignatureComponent
55weapon_loadout_dataWeaponLoadoutComponent
56datalink_dataDataLinkComponent
57combat_state_dataCombatStateComponent
58rf_environment_dataRfEnvironmentComponent
59receiver_environment_dataReceiverEnvironmentComponent
60receiver_characteristics_dataReceiverCharacteristicsComponent
61stream_dataStreamComponent

EntityEvent — one event that occurred this frame: either a data-bearing event or a payload-free tracking event. oneof event: exactly one of the following.

FieldTypeDescription
data_eventEntityDataEventdata-bearing event
tracking_eventTrackingEventone-shot, payload-free event

TrackingEvent — a one-shot record that something happened to an entity, and when. This is the authoritative countable timeline: every occurrence emits a TrackingEvent, whether or not the source also emits a matching EntityDataEvent carrying the payload. Count occurrences from this path; it stays uniform across mixed-source captures.

FieldTypeDescription
entity_iduint64
typeTrackingEventTypesee Enums
timestampTimestampwall-clock UTC (capture host)
simulation_time_sdoublesimulation clock, seconds; correlates the event to sim time. Absent = not known

EntityDataEvent — a data-bearing event about one entity, carrying a typed payload. oneof event_data: exactly one of the 22 event types in Events.

Emission contract: TrackingEvent is the authoritative countable record for every occurrence and is emitted by every source, whether or not it can produce payload detail. EntityDataEvent is optional enrichment: when a source has payload for an occurrence, it emits this alongside the matching TrackingEvent, with event_type set to the same verb. Count occurrences from the TrackingEvent path (SimulationFrame → events → tracking_event); do not count EntityDataEvent as a separate occurrence.

FieldTypeDescription
entity_iduint64
timestampTimestampwall-clock UTC (capture host)
event_typeTrackingEventTypeverb this payload belongs to, in the TrackingEventType taxonomy. Fill for new sources; may be absent during migration
simulation_time_sdoublecorrelates the event to sim time when it is buffered or re-bundled outside its originating frame. Absent = not known

Common types

Shared value types used across many components and events.

Float2 — Generic 2D vector or point.

FieldTypeDescription
xfloat
yfloat

Float3 — Generic 3D vector or point.

FieldTypeDescription
xfloat
yfloat
zfloat

Quaternion — Rotation. Convention: x, y, z are the vector part, w is the scalar part.

FieldTypeDescription
xfloat
yfloat
zfloat
wfloat

LLAPosition — Geodetic position (WGS84), double precision, for sub-meter accuracy that float32 lat/lon cannot carry. Preferred for any new position field.

FieldTypeDescription
latitudedoubledecimal degrees, positive N / negative S
longitudedoubledecimal degrees, positive E / negative W
altitudedoublemeters above the ellipsoid

ECEFPosition — Earth-Centered, Earth-Fixed cartesian position, meters from Earth’s center.

FieldTypeDescription
xdoublemeters
ydoublemeters
zdoublemeters

Timestamp — A point in time with millisecond precision. Every timestamp on the capture path is wall-clock UTC (capture-host time); simulation time is carried separately as double seconds where needed.

FieldTypeDescription
timestamp_msint64Unix timestamp in milliseconds since epoch (1970-01-01 00:00:00 UTC)
timezone_offset_minutesint32Offset in minutes from UTC (e.g. -300 for EST, +60 for CET). Absent/0 means UTC.

Date — A calendar date without time.

FieldTypeDescription
yearint32e.g. 2025
monthuint321-12, where 1 = January
dayuint321-31

Time — Time of day with millisecond precision.

FieldTypeDescription
houruint320-23
minuteuint320-59
seconduint320-59
milliseconduint320-999

DateTimeDetailed — Date and time as separate human-readable components, for when a raw timestamp is not what’s wanted.

FieldTypeDescription
dateDate
timeTime
timezone_offset_minutesint32optional

KeyValuePair — Generic key/value pair, used for extra data a component’s fixed schema does not carry.

FieldTypeDescription
keystring
valuefloat

Components

An entity’s state is composed from these 53 component types, one Component oneof per attached component. A given component type occurs at most once per entity (the oneof is entity-scoped, not repeated), except WheelComponent, which a vehicle entity attaches once per physical wheel.

Core

TransformComponent — Position, rotation, and scale in 3D space

FieldTypeDescription
positionFloat3Position in world space
rotationQuaternionRotation as quaternion
scaleFloat3Scale factors (default 1,1,1 for uniform scale)

DynamicsComponent — Physics-related dynamics for simulation entities

FieldTypeDescription
velocityFloat3Simulated linear velocity of the entity (meters per second)
angular_velocityFloat3Simulated angular velocity (radians per second)
magnitudefloatMagnitude of the simulated velocity (speed)
accelerationFloat3Acceleration of the simulated object (meters per second squared)
world_forward_directionFloat3World forward direction vector the entity is facing (unit vector)
ground_speedfloatSpeed of an object over the ground
is_groundedboolIf aircraft is it in the air or not

HealthComponent — Entity Health Data

FieldTypeDescription
max_healthfloatSimulated/Abstracted Health of this entity
current_healthfloatCurrent health based on damage to this entity
is_disabledboolIf Entity is damaged enough to be disabled but not destroyed
is_destroyedboolEntity destroyed (mission-killed).

LinkedEntityComponent — Defines parent/child relationships between entities

FieldTypeDescription
parent_entity_iduint64Parent entity ID for hierarchical relationships
child_entity_idsrepeated uint64List of child entity IDs (optional, for bidirectional tracking)
link_typeLinkTypehow this entity relates to parent_entity_id

Identity

HeatUserComponent — The human trainee occupying/operating this entity.

FieldTypeDescription
user_namestringtrainee identifier
rolestringcrew role, e.g. “pilot”, “gunner”
vehicle_callsignstringcallsign of the crewed vehicle

UnitTypeComponent

FieldTypeDescription
type_namestring
kindUnitKind
domainUnitDomain
countryint32
categoryint32
subcategoryint32
specificint32
extraint32

Spatial and navigation

WorldPositionComponent

FieldTypeDescription
latitudefloatDecimal degrees, positive N / negative S. float32 quantizes at ~0.3-1 m depending on magnitude: fine for display and geometry, not for sub-meter track-error analytics (use LLAPosition where that precision is needed).
longitudefloatDecimal degrees, positive E / negative W. Same precision note as latitude.
altitudefloatmeters
headingfloatdegrees
utm_positionUtmPosition
ecef_positionEcefPosition
pitch_degfloatdegrees; absent = not reported
roll_degfloatdegrees; absent = not reported

SpatialComponent — XR/VR spatial tracking for a headset user: head and controller poses, per-eye camera images, and hand tracking.

FieldTypeDescription
poseXrPosefhead pose
left_controller_poseXrPosef
right_controller_poseXrPosef
left_imageRawImageleft-eye passthrough/camera image
right_imageRawImageright-eye passthrough/camera image
left_handHandState
right_handHandState

Biometrics

GazeComponent — Eye tracking and gaze data

FieldTypeDescription
IPDfloatinterpupillary distance, meters
gaze_originFloat3
left_gaze_originFloat3
right_gaze_originFloat3
combined_eye_positionFloat3
left_eye_positionFloat3
right_eye_positionFloat3
gaze_directionFloat3
gaze_direction_qualityfloat
left_gaze_directionFloat3
left_gaze_direction_qualityfloat
right_gaze_directionFloat3
right_gaze_direction_qualityfloat
left_eye_occludedbool
right_eye_occludedbool
has_glassesbool
blinkbool
gaze_pointFloat2Gaze Point based on coordinates from tracker or focus distance
gaze_screen_pointFloat2Normalized screen coordinates: (0,0) = bottom-left, (1,1) = top-right.

PupillometryDataComponent — Pupillometry Component - Tracks pupilometry data from Eye Tracking.

FieldTypeDescription
eyelid_opennessfloat
eyelid_openness_qualityfloatQuality of the measurement [0..1].
left_eyelid_opennessfloatThe distance between the eyelids of the left eye.
left_eyelid_openness_qualityfloatQuality of the measurement [0..1].
right_eyelid_opennessfloatThe distance between the eyelids of the right eye.
right_eyelid_openness_qualityfloatQuality of the measurement [0..1].
pupil_diameterfloat
pupil_diameter_qualityfloatQuality of the measurement [0..1].
left_eye_pupil_diameterfloat
left_eye_pupil_diameter_qualityfloatQuality of the measurement [0..1].
right_eye_pupil_diameterfloat
right_eye_pupil_diameter_qualityfloatQuality of the measurement [0..1].
other_pupil_datarepeated BiometricReadingGeneric biometric readings

BiometricSensorComponent — Tracks biometric data from sensors

FieldTypeDescription
readingsrepeated BiometricReading

WearableBioSensorComponent — Tracks biometric data from a sports watch and smart watch

FieldTypeDescription
heart_rateint32Heart Rate in beats per minute
hr_confidencefloatHeart Rate Confidence level
rr_intervalfloatRespiratory Rate Interval
rri_confidencefloatRespiratory Rate Interval Confidence level
spo2_valuefloatBlood Oxygen Saturation (SpO2) Value
spo2_confidencefloatBlood Oxygen Saturation Confidence level
spo2_stateint32Blood Oxygen Saturation State
skin_contact_stateboolSkin Contact State
sample_countint32Number of biometric samples taken
readingsrepeated BiometricReadingGeneric biometric readings

Ground vehicles

WheelComponent — Individual wheel state and physics Note: A vehicle entity will typically have multiple wheel components (one per wheel)

FieldTypeDescription
radiusfloat
weightfloat
tire_pressurefloat
is_flatbool
wheel_rpmfloat
brake_percentagefloat
slip_ratiofloatlongitudinal slip percentage
slip_anglefloatlateral slip in degrees
angular_velocityfloatangular velocity of wheel in rad/s
is_groundedbool
ground_typestringThe type of ground the wheel is touching (Asphalt, Dirt, Grass, Gravel, Mud, Sand)

GroundVehicleControlComponent — Driver control inputs for a ground vehicle. Pedal/clutch/brake values are normalized 0..1; steering is normalized -1 (full left) .. 1 (full right).

FieldTypeDescription
throttle_valuefloat0..1
brake_valuefloat0..1
clutch_valuefloat0..1
parking_brake_valuefloat0..1 (hardware or simulated)
steering_valuefloat-1..1
steering_value_rangeFloat2Physical steering range of this vehicle in degrees: x = min (left), y = max (right), e.g. (-180, 180). Maps steering_value to a wheel angle. Absent = not reported.

GroundVehiclePowertrainComponent — Powertrain state for a ground vehicle: engine, transmission, and fluids.

FieldTypeDescription
ignition_onbool
engine_onbool
gear_namestringgear label (e.g. “R”, “N”, “3”)
gear_indexint32numeric gear index
rpmfloatengine revolutions per minute
battery_voltagefloatvolts
oil_tempfloatdegrees Celsius
oil_pressurefloatsource-defined pressure unit
coolant_tempfloatdegrees Celsius
boost_pressurefloatturbo/supercharger boost, source-defined unit

GroundVehicleLightingComponent — On/off and mode state of a ground vehicle’s lights.

FieldTypeDescription
headlightsHeadlightMode
fog_lights_front_onbool
fog_lights_rear_onbool
turn_signal_left_onbool
turn_signal_right_onbool
hazard_lights_onbool
interior_lights_onbool
interior_lights_modestringString descriptor of which level of interior lights used.
brake_lights_onbool
reverse_lights_onbool

GroundVehicleSuspensionComponent — Suspension Data for Ground Vehicles

FieldTypeDescription
suspension_travel_rangeFloat2Total min,max values for suspension travel
suspension_compressionfloatcompression in meters
suspension_extensionfloatextension in meters
suspension_velocityfloatvelocity of suspension in m/s
spring_forcefloat
damper_forcefloat
camber_anglefloat
toe_anglefloat
caster_anglefloat

Aircraft

GenericAircraftComponent — Common aircraft flight parameters: altitudes and g-loading.

FieldTypeDescription
aglfloatAltitude above ground level, meters.
barometric_altitudefloatBarometric (pressure-derived) altitude. Original annotation read “hPa”, which is a pressure unit, not an altitude; confirm the unit with the producer before relying on it.
true_altitudefloatTrue altitude above Mean Sea Level (MSL), meters.
vtol_engagedboolVTOL mode active
g_forcefloatCurrent g-force on the aircraft, in g.
g_force_maxfloatMax/min g-force attained, in g.
g_force_minfloat

AircraftEngineComponent — State of one aircraft engine: ignition, throttle, and thrust (forward and reverse). A multi-engine aircraft carries one component per engine.

FieldTypeDescription
ignitionboolignition on
engine_statebooltrue = running
throttlefloatcommanded throttle setting
thrustfloatproduced thrust, newtons
thrust_percentagefloatthrust as percent of maximum
positionFloat3engine mount location on the airframe
reverse_thrust_activebool
reverse_thrustfloatreverse thrust, newtons
reverse_thrust_percentagefloatreverse thrust as percent of maximum
extra_datarepeated KeyValuePairIf any Extra data fields are required you can add them as a Key Value Pair. Requires custom data handling on HEAT Side.

AircraftLandingGearComponent — Landing gear state: wheels, brakes, and extension/lock status.

FieldTypeDescription
wheelsrepeated WheelComponent
allow_steeringboolnosewheel steering available
parking_brake_availablebool
parking_brake_enabledbool
gear_max_airspeedfloatmax airspeed with gear extended (m/s)
hydraulic_pressurefloatgear hydraulic system pressure
extended_percentagefloatdeployment, 0 = up, 100 = fully down
lock_onfloatdown-and-locked indication
is_damagedbool
is_gear_retractableboolfalse = fixed gear
gear_handle_valueboolgear lever position (true = down)
gear_emergency_handle_positionboolemergency extension handle engaged

AircraftLightingComponent — On/off state of the aircraft’s exterior and interior lights.

FieldTypeDescription
navigation_lightsbool
spotlightbool
taxi_lightsbool
anti_collision_lightsboolbeacon/strobe
formation_lightsbool
interior_lightsbool
covert_lightsboolIR/covert lighting for NVG operations

AircraftAvionicsComponent — Autopilot / flight-director / autothrottle engagement and selected targets. active_* modes are currently flying; armed_* modes are captured but not yet active. The *_label strings carry source-specific mode text alongside the normalized enums.

FieldTypeDescription
autopilot_masterboolautopilot engaged
flight_director_masterboolflight director on
autothrottle_masterboolautothrottle engaged
selected_heading_degreesfloat
selected_altitude_metersfloat
selected_indicated_airspeed_meters_per_secondfloat
selected_machfloat
selected_vertical_speed_meters_per_secondfloat
active_lateral_modeAircraftAutopilotLateralMode
active_vertical_modeAircraftAutopilotVerticalMode
armed_lateral_modeAircraftAutopilotLateralMode
armed_vertical_modeAircraftAutopilotVerticalMode
active_lateral_mode_labelstringsource-specific text for active_lateral_mode
active_vertical_mode_labelstring
armed_lateral_mode_labelstring
armed_vertical_mode_labelstring
extra_datarepeated KeyValuePair

AircraftDisplayStateComponent — State of the aircraft’s cockpit displays.

FieldTypeDescription
display_statesrepeated AircraftDisplayStateEntry
soi_display_idstringdisplay holding the sensor-of-interest focus
extra_datarepeated KeyValuePair

ATCDataComponent — Air-traffic-control identity of the aircraft as filed/displayed. String formats follow common flight-sim ATC variables (e.g. squawk as 4-digit octal).

FieldTypeDescription
atc_typestringATC aircraft type designator
atc_modelstringATC aircraft model
atc_idstringtail number / registration
atc_airlinestringairline name; source SDKs cap it at 50 chars (not enforced here).
atc_flight_numberstringflight number; source SDKs cap it at 6 chars (not enforced here).
hsi_station_identstringident of the tuned nav station; source SDKs cap it at 6 chars (not enforced here).
transponder_codestringtransponder code (squawk). BCO16 in the SDK; carried as the 4-digit octal code (e.g. “1200”, “7700”) to preserve leading zeros.

RadarComponent — Deprecated: superseded by EmissionComponent + SensorContactsComponent. Models a single radar and one implicit target; its target_* fields carry no target entity id, so they cannot be joined for analytics. Frozen for backward compatibility; new sources fill the EW components instead and no source fills both.

FieldTypeDescription
device_namestringDevice name
idint32Device id
typestringDevice type
radar_emittingboolIs the radar emitting
emitter_namestringEmitter name
antenna_range_limitFloat2Antenna range limits (azimuth, elevation)
antenna_boresight_offsetFloat3Antena Boresight Offset
beam_range_limitFloat2Beam range limits (azimuth, elevation)
radar_rangefloatMax radar range in meters
radar_effective_rangefloatradar effective range
target_aspectfloatCalculates the target aspect of a target entity.
target_closurefloatCalculates the target closure of a entity
target_antenna_train_anglefloatCalculates the antenna train angle to a target entity
target_rangeangle_rangefloattaget range angles (3D distance in meters along the vector specified by Azimuth/Elevation.)
target_rangeangle_vectorFloat2Azimuth/Elevation vector
target_rangeangle_deltaFloat2Delta vector (horizontal/vertical)
radar_cursorFloat2Radar cursor is the position of the curse in the view panel (X/Y)
target_trackableboolDetermines if the target can be tracked by this device. Factors in the modes EffectiveRange, antenna limits, and beam limits.

FuelSystemComponent — Fuel system state: dumping, transfer, crossfeed, and refuel. Fuel quantities live in ResourceStoresComponent; this carries the flow/plumbing state.

FieldTypeDescription
fuel_dump_activebool
fuel_dump_ratefloatper second, source-defined unit
fuel_total_flow_ratefloattotal engine fuel flow, per second
fuel_transfer_activebool
transfer_pathsrepeated FuelTransferPath
crossfeed_enabledbool
selected_feed_source_store_idstringreferences ResourceStoreEntry.store_id
refuel_activebool
active_dump_source_store_idstringreferences ResourceStoreEntry.store_id
extra_datarepeated KeyValuePair

Fixed-wing aircraft

FWADataComponent — FWADataComponent

FieldTypeDescription
gear_warning_valueint32
anti_skid_brakes_activebool
steer_input_controlfloat
stall_warningbool
overspeed_warningbool
indicated_altitudefloat
kohlsman_settingFloat2Altimeter Pressure Reference Setting (MB/HG)
altitude_indicator_pitch_degreesfloat
altitude_indicator_bank_degreesfloat
altitude_bars_positionfloat
compass_indication_degreesfloat
plane_gyro_heading_degreesfloat
gyro_drift_errorfloat
heading_delta_ratefloat
turn_coordinator_ballfloatSlip/Skid Indicator for coordinated Turn
aoa_indicatorfloat
radio_heightfloat
airspeed_calibratedfloat
airspeed_barber_polefloat
airspeed_machfloat
max_operational_machfloat
barber_pole_machfloat
attitude_cagefloat
extra_datarepeated KeyValuePair

FWAControlSurfacesComponent — Fixed-wing control surface positions and trim. Conventions across fields: *_position = commanded surface position (normalized, sign gives direction); *_deflection = physical deflection in degrees; *_deflection_percentage and *_trim_percentage = percent of available travel; *_trim_value = trim setting.

FieldTypeDescription
aileron_positionfloatcommanded, normalized
elevator_positionfloatcommanded, normalized
rudder_positionfloatcommanded, normalized
aileron_left_deflectionfloatdegrees
aileron_left_deflection_percentagefloatpercent of travel
aileron_right_deflectionfloatdegrees
aileron_right_deflection_percentagefloatpercent of travel
aileron_trim_valuefloat
aileron_trim_percentagefloat
rudder_trim_valuefloat
rudder_trim_percentagefloat
rudder_deflectionfloatdegrees
rudder_deflection_percentagefloatpercent of travel
elevator_trim_valuefloat
elevator_trim_percentagefloat
elevator_deflectionfloatdegrees
elevator_deflection_percentagefloatpercent of travel
current_experienced_g_forcefloatg
spoilers_positionint32commanded detent, 0-based; 0 = retracted, max is aircraft-specific
spoiler_speed_damageboolspoilers deployed above safe speed
flaps_positionint32commanded detent, 0-based; 0 = retracted, max is aircraft-specific
flap_speed_damageboolflaps deployed above safe speed
flaps_position_percentagefloatphysical extension, percent of travel (complements the flaps_position detent)

FWAInputComponent — Pilot control inputs for a fixed-wing aircraft (as commanded by the operator, before control-law processing).

FieldTypeDescription
yoke_valueFloat2Yoke/stick input: x = roll (aileron), y = pitch (elevator).
rudder_valuefloatRudder pedal input, percent of travel.
toe_brakes_leftfloatToe brake input, per pedal (0 = off, 1 = full).
toe_brakes_rightfloat
throttle_lever_positionfloatphysical lever position
commanded_throttlefloatresulting throttle command
autothrottle_activebool
afterburner_activebool
reverse_thrust_activebool

Rotary-wing aircraft

RotaryInputComponent — Pilot control inputs for a rotary-wing (helicopter) aircraft.

FieldTypeDescription
cyclic_stick_limitFloat2max cyclic travel: x = lateral, y = longitudinal
cyclic_stick_positionFloat2current cyclic: x = lateral, y = longitudinal
collective_inputfloatcollective lever, normalized
pedal_inputfloatanti-torque pedal input
minimum_pedal_inputfloat
maximum_pedal_inputfloat
pitch_actuator_positionfloatresulting swashplate/actuator positions
yaw_actuator_positionfloat
roll_actuator_positionfloat
rotor_brake_enabledbool

RotaryWingDataComponent — Rotary-wing drivetrain state: rotor torques and trim.

FieldTypeDescription
main_rotors_torquerepeated floattorque per main rotor
tail_rotor_torquefloat
engine_torque_limitfloatmax allowable torque
rotor_longitudinal_trimfloat
rotor_lateral_trimfloat

UAS

UASControlsComponent — Operator controls and autonomy state for an unmanned aircraft (UAS).

FieldTypeDescription
left_control_stickFloat2operator stick inputs
right_control_stickFloat2
throttlefloat0..1
throttle_trimfloat
landing_gearbooltrue = down
wheel_brakes_enabledbool
gimbalFloat3payload gimbal: x = pitch, y = yaw, z = roll (degrees)
camera_captureboolcapture/record active
camera_triggerboolsingle-shot trigger
distance_from_takeoff_locationfloatmeters
altitude_control_enabledbool
attitude_control_enabledbool
position_hold_enabledbool
auto_hover_enabledbool
auto_takeoffbool
auto_takeoff_abortbool
auto_landingbool
auto_landing_abortbool
rtb_activatedboolreturn-to-base engaged
force_land_enabledbool
geofence_indicationboolgeofence boundary reached
geofence_actionint32action taken on geofence breach (source-defined code)
manual_flight_modebool
following_waypointbool

UASMotorComponent — State of one UAS propulsion motor. A multi-rotor carries one per motor.

FieldTypeDescription
statebooltrue = running
motor_rpmfloatrevolutions per minute
thrust_anglefloattilt/vector angle of the motor, degrees
damagedbool

UASDataLinkComponent — Health of a UAS’s command-and-control links (control, video, telemetry). This is link health, distinct from DataLinkComponent (tactical datalink networks).

FieldTypeDescription
control_data_linkboolcontrol link up
control_signal_strengthfloat
video_transmission_linkboolvideo downlink up
video_signal_strengthfloat
telemetry_data_linkbooltelemetry link up
telemetry_signal_strengthfloat
adsb_emergencyint32ADS-B emergency/squawk code (source-defined)
signal_strength_warningboolany link below safe strength

Electronic warfare and sensors

SignatureComponent — Detectability signatures of the entity: how it presents to radar and IR sensors. Truth values (the entity’s actual signature), distinct from what any observer perceives.

FieldTypeDescription
radar_cross_section_m2floateffective RCS; absent = not modeled
ir_signature_enginefloatIR signatures are source-normalized relative intensities (unitless): comparable within a single capture, not across sources. Absent = not modeled.
ir_signature_barrel_or_launcherfloat
ir_signature_wheels_or_tracksfloat

EmissionComponent — Current emission picture of the entity: every emitter and its active mode. Sampled per frame. Mode transitions (search -> acquisition -> track, a threat-escalation signal) are also emitted as EmissionEvent on change.

FieldTypeDescription
emittersrepeated Emitter

ReceiverCharacteristicsComponent — Design parameters for every receiver on the entity. For detailed detection-model analytics.

FieldTypeDescription
receiversrepeated ReceiverCharacteristics

ReceiverEnvironmentComponent — Per-receiver local conditions for every receiver on the entity.

FieldTypeDescription
receiversrepeated ReceiverEnvironment

RfEnvironmentComponent — Background RF conditions of the battlefield. Attaches to a dedicated environment entity (following the CloudDataComponent convention), not to a combatant. Region polygons change rarely: emit on change only, never per frame.

FieldTypeDescription
ambient_noise_regionsrepeated AmbientNoiseRegion

SensorContactsComponent — All contacts currently held by the owning entity’s sensors, sampled per frame. Complements TargetDataComponent (the target’s own view of being tracked); the two are different perspectives and never share fields.

FieldTypeDescription
contactsrepeated SensorContact

IffComponent — Identification Friend or Foe transponder/interrogator state of the entity. Mirrors the DIS IFF PDU. Per IFF mode, an enabled flag plus (for non-crypto modes) the code currently set.

FieldTypeDescription
system_modeIffSystemMode
aircraft_addressuint32platform address / track number
aircraft_identificationstringcallsign or flight id
mode1_enabledbool
mode1_codestringmission code
mode2_enabledbool
mode2_codestringunit code
mode3a_enabledbool
mode3a_codestringMode 3/A squawk
mode4_enabledboolModes 4 and 5 are crypto modes: carry enabled + valid flags only, never codes or PINs, even simulated ones. The analytic question is whether the interrogation succeeded, not what the code was; this also removes the sensitivity concern entirely.
mode4_validbooltrue = valid crypto reply
mode5_enabledbool
mode5_validbooltrue = valid crypto reply
modec_enabledboolMode C altitude reporting
modes_enabledboolMode S

Sonar

PassiveSonarDetectionComponent — Passive sonar picture: per-beam signal levels against a detection threshold. Single-sonar platforms use the top-level threshold/sonar_beams fields. Multi-sonar platforms fill sonars instead; when sonars is non-empty it carries the whole picture and the top-level fields are left empty.

FieldTypeDescription
thresholdfloatdetection threshold, dB
sonar_beamsrepeated PassiveSonarBeamData
sonarsrepeated PassiveSonar

SonobuoyDataComponent — State of a deployed sonobuoy (itself an entity). Lifetimes and depth plus a deployment lifecycle status.

FieldTypeDescription
total_lifetimefloatdesigned operating life, seconds
lifetime_remainingfloatremaining operating life, seconds
operational_depthfloathydrophone depth, meters
statusSonobuoyStatus

Environment

AirDataComponent — Atmospheric conditions at the entity: temperatures, pressures, wind, and weather.

FieldTypeDescription
ambient_air_temperaturefloatAmbient air temperature (°C)
total_air_temperaturefloatTemperature including Kinetic Heating in high speed conditions (°C)
air_pressurefloatAir pressure (mbar)
sea_level_pressurefloatStandardised Sea Level Pressure (mbar)
densityfloatAir density (slugs/ft³)
wind_velocityfloatWindspeed - Knots(kn/kt)
wind_directionFloat3Direction Vector of Wind in World space
relative_wind_directionFloat3Direction of wind relative to Entities Forward direction.
surface_wind_directionfloatdirection from which the wind is blowing, measured clockwise in degrees from true north (degrees)
surface_wind_speedfloatWind speed near the earth surface (normally 10 meters above ground level) (m/s)
speed_of_soundfloatSpeed of sound (in meters per sec)
absolute_humidityfloatThe mass of water vapor present in a given volume of air (g/m^3)
turbulence_severityTurbulenceSeverityStateTurbulence severity type - 0: smooth, 1: light, 2: Moderate, 3: Severe, 4: extreme
precipitation_altitudefloatthe altitude above Mean Sea Level at which precipitation occurs (meters)

CloudDataComponent — Local visibility and cloud/fog conditions at the entity.

FieldTypeDescription
fog_densityfloatDensity level of Simulated fog
visibilityfloatVisibility Range in Meters
in_cloudboolflag for if object is In Cloud;
cloud_densityfloatPercentage of sky covered by clouds

Combat and tactical

CombatStateComponent — Command-and-control combat posture of the entity: its affiliation, weapons and engagement stance, EMCON policy, and engagement envelope.

FieldTypeDescription
affiliationForceAffiliationtruth affiliation of this entity
weapons_postureWeaponsPosture
engagement_postureEngagementPosture
emission_controlEmissionControl
cleared_hotbooltrue = authorized to fire
max_engagement_range_mfloatweapon envelope; absent = not reported

TargetDataComponent — This entity’s own view of being targeted: whether it is locked, spotted, or visible. Perspective is the target’s; complements SensorContactsComponent (the sensor’s view of what it tracks).

FieldTypeDescription
target_iduint64identifier of the tracking source, if known
target_typestringString identifier for the type of target.
target_lockboolIs there a current active target lock on this entity
can_be_spottedboolDoes this entity have Direct Line of Sight to Sim Users?
is_spottedboolHas this entity been visually spotted

WeaponLoadoutComponent — Full weapon loadout of the entity, one entry per station.

FieldTypeDescription
stationsrepeated WeaponStation

DataLinkComponent — Every tactical datalink network the entity participates in. Distinct from UASDataLinkComponent, which carries link health (signal strength, warnings); no overlap.

FieldTypeDescription
networksrepeated TdlNetwork

RadioComponent — State of one radio/intercom asset as presented to the operator.

FieldTypeDescription
asset_namestring”Radio1”, “Intercom2” etc.
asset_typestringradio / intercom / relay
frequency_txstring”243.000 MHz”
frequency_rxstringonly when dual = true
frequency_dualbool
radio_bandstringHF / VHF / UHF / UHF SATCOM
secure_enabledbool
selectedbooloperator has this asset selected
volumeint320–100
squelch_levelint320 = off, 1–100

Logistics

CapacityDataComponent — CapacityDataComponent Tracks capacity-like data for an entity (ammo, fuel, storage, etc.)

FieldTypeDescription
object_typestringFriendly name of the object type being tracked (e.g., “Ammunition”)
max_valueint32Maximum capacity value
current_valueint32Current value within the capacity

ResourceStoresComponent

FieldTypeDescription
storesrepeated ResourceStoreEntry

Media streaming

StreamComponent — All streams captured from the entity this frame.

FieldTypeDescription
sourcesrepeated StreamSource

Supporting types

Nested message types referenced by the tables above. These are never attached to an entity directly; they only exist inside a component or event field.

BiometricReading — A single named biometric reading, used by BiometricSensorComponent and WearableBioSensorComponent. name scopes the value’s meaning and unit.

FieldTypeDescription
namestring
valuefloat

TdlNetwork — Participation of the entity in one tactical datalink network, used by DataLinkComponent. Networks are named by string (canonical vocabulary) rather than per-network booleans, so new networks need no schema change.

FieldTypeDescription
networkstringcanonical vocabulary: “LINK16”, “LINK11”, “SADL”, …
ppli_enabledboolposition/participant location reporting
track_reporting_enabledboolsurveillance track transmission
command_messages_enabledbool

FuelTransferPath — An active or configured fuel transfer between two stores, used by FuelSystemComponent. source_store_id/destination_store_id reference ResourceStoreEntry.store_id on the same entity.

FieldTypeDescription
source_store_idstring
destination_store_idstring
transfer_ratefloatmass or volume per second, source-defined unit
activebool

AircraftDisplayStateEntry — State of one cockpit display, used by AircraftDisplayStateComponent.

FieldTypeDescription
display_idstringdisplay identifier, entity-scoped
roleAircraftDisplayRole
active_pagestringcurrently shown page/format

WeaponStation — One weapon station (hardpoint) on the entity and what it carries, used by WeaponLoadoutComponent.

FieldTypeDescription
hardpoint_indexuint32station position, entity-scoped
weapon_namestring
weapon_functionstringcanonical vocabulary (e.g. “AAM”, “AGM”, “GUN”)
quantityint32rounds remaining; absent = not tracked; 0 = empty station
selectedbooltrue = currently selected weapon
store_idstringreferences ResourceStoreEntry.store_id on the same entity; optional. When both are present, the resource store is authoritative for quantity

Emitter — A single active emitter mode on the owning entity (radar, jammer, datalink, beacon, etc.), sampled as steady state, used by EmissionComponent. One entity may carry several. Mirrors the DIS Electromagnetic Emission PDU emitter system + beam record.

FieldTypeDescription
emitter_iduint64stable identity of this emitter within the owning entity; scoped to the entity, not global (the global key is the pair entity_id, emitter_id)
namestringhuman-readable emitter label
device_typestringequipment/type designation of the emitter
device_iduint32device ordinal within the entity
mode_iduint32active mode ordinal within the device
mode_namestringsource-specific mode label, e.g. “SEARCH-A”
functionEmitterFunction
is_transmittingbooltrue = actively radiating this frame
effective_radiated_power_dbwfloatabsent = not reported
peak_power_wfloatabsent = not reported
average_power_wfloatabsent = not reported
pulse_repetition_interval_sfloatabsent = unknown; 0 = continuous wave
frequency_min_hzfloatlow edge of tuned range; absent = not reported
frequency_max_hzfloathigh edge of tuned range; absent = not reported
scan_patternScanPattern
antenna_boresight_degFloat2x = azimuth, y = elevation (instantaneous)
beamwidth_degFloat2x = azimuth, y = elevation
antenna_az_limit_degFloat2min/max azimuth slew
antenna_el_limit_degFloat2min/max elevation slew

ReceiverCharacteristics — Static design parameters of one receiver on the owning entity, used by ReceiverCharacteristicsComponent. These are properties of the hardware/mode definition and change only on mode switch; emit on change. Dynamic local conditions live in ReceiverEnvironment; the two share no fields.

FieldTypeDescription
receiver_iduint64stable id, same scoping scheme as emitter_id (entity-scoped)
emitter_iduint64paired emitter/sensor id when receiver is part of a transceiver; 0 if none
frequency_min_hzfloatlow edge of tuned range
frequency_max_hzfloathigh edge of tuned range
bandwidth_hzfloat
sensitivity_dbmfloatminimum detectable signal
mti_min_velocity_mpsfloatmoving-target-indicator velocity gate
clutter_rejection_dbfloat
noise_figure_dbfloat
receiver_loss_dbfloat
required_snr_dbfloatSNR needed for detection
receiver_antenna_gain_dbfloat
pulse_compression_gain_dbfloat

ReceiverEnvironment — Dynamic local RF/terrain conditions at one receiver, sampled per frame, used by ReceiverEnvironmentComponent. Static design parameters live in ReceiverCharacteristics; pairwise link properties (masking to a specific target) live on SensorContact.

FieldTypeDescription
receiver_iduint64joins ReceiverCharacteristics.receiver_id (entity-scoped)
emitter_iduint64paired emitter/sensor id when applicable; 0 if none
ambient_noise_dbwfloatin-band ambient noise at the receiver location
look_down_factorfloatclutter degradation looking down vs up
terrain_elevation_msl_mfloatterrain height under the receiver (0 = sea level, real)
terrain_relative_slope_degfloatlocal terrain slope (0 = flat, real)

AmbientNoiseRegion — A region of background RF noise: a spectral profile applied over a geographic polygon, optionally filtered to a side/domain, used by RfEnvironmentComponent. Global environment state, not tied to any single platform.

FieldTypeDescription
region_iduint64
frequency_min_hzfloatlow edge of the region’s spectrum
frequency_max_hzfloathigh edge of the region’s spectrum
spectral_density_dbw_per_hzrepeated Float2x = frequency_hz, y = noise density
polygon_points_deg_mrepeated Float3boundary vertices: x = lat_deg, y = lon_deg, z = altitude_m
affiliation_filterForceAffiliationside the region applies to; UNSPECIFIED = all
domain_filteruint32domain bitmask if the source distinguishes air/land/maritime; 0 = all

SensorContact — One tracked contact held by a sensor on the owning entity, used by SensorContactsComponent. Sensor-side view of the tactical picture (who this entity detects/tracks/locks).

FieldTypeDescription
target_entity_iduint64truth id of the tracked entity; 0 if unresolved/unknown track
sensor_emitter_iduint64emitter/sensor holding the contact; scoped to the owning (envelope) entity
stateContactState
range_mfloatslant range to target; absent = not measured
bearing_degfloatazimuth to target; absent = not measured
elevation_degfloatelevation to target; absent = not measured
aspect_degfloattarget aspect angle; absent = not computed
closure_mpsfloatrange rate, positive = closing; absent = not computed
qualityfloattrack confidence 0..1 (SNR-derived); absent = not reported
time_last_seenTimestamp
classified_affiliationForceAffiliationperceived affiliation of the contact, not truth
sensed_positionLLAPositionperceived position: where the sensor believes the target is
terrain_maskedboolterrain masking of the sensor-to-target line of sight; absent = not evaluated
recognition_levelRecognitionLevelhow far this contact has been discriminated; absent = source does not report it
asw_classificationAswClassificationperceived ASW classification of a subsurface contact; absent = not a subsurface contact or not classified

XrPosef — A pose: orientation plus position, in tracking space. Used by SpatialComponent.

FieldTypeDescription
orientationQuaternion
positionFloat3

RawImage — A raw image buffer with its dimensions. Used by SpatialComponent.

FieldTypeDescription
widthuint32pixels
heightuint32pixels
bufferbytesraw pixel data

HandState — Hand-tracking state: the tracked joints and which hand. Used by SpatialComponent.

FieldTypeDescription
jointsrepeated HandJointtypically 26 joints
is_trackedbooltrue = hand currently tracked
is_leftbooltrue = left hand, false = right

HandJoint — One tracked hand joint.

FieldTypeDescription
positionFloat3
orientationQuaternion
radiusfloatjoint size, meters

AudioSource — A single audio stream, one variant of StreamSource.

FieldTypeDescription
namestringcanonical stream name; e.g. “audio.cockpit”
volumefloatplayback level, 0..1; absent = not reported (0 = muted, a real value)
sample_rate_hzuint32samples per second, e.g. 48000; absent = not reported
channelsuint32channel count (1 = mono, 2 = stereo); absent = not reported
sample_formatstringsample format of raw PCM audio_data, e.g. S16LE, S24LE, S32LE, F32LE, U8 (append BE for big-endian); absent = not raw PCM / not reported
codecstringencoding of audio_data; empty = raw PCM, otherwise the codec, e.g. “OPUS”, “AAC”, “MP3”, “FLAC”, “VORBIS”
audio_databytesraw PCM when codec is empty, else encoded with codec

VideoSource — A single video stream, one variant of StreamSource.

FieldTypeDescription
namestringcanonical stream name; e.g. “eye.left”
frame_ratefloatframes per second; absent = not reported
widthuint32pixels
heightuint32pixels
pixel_formatstringnative pixel layout of a raw frame, e.g. RGBA, BGRA, ARGB, ABGR, RGB, BGR, RG, R, or with a depth/type suffix (RGBA16, R16F, RGBA32F), or packed video (NV12, YUV420P, YUYV); absent = not a raw buffer / not reported
codecstringencoding of video_data; empty = raw pixels, otherwise the codec, e.g. “H264”, “HEVC”, “VP9”, “AV1”, “MJPEG”, “PNG”
video_databytesraw pixels when codec is empty, else encoded with codec

RawSource — A single opaque data stream, for anything not audio or video. One variant of StreamSource.

FieldTypeDescription
namestringcanonical stream name; e.g. “raw.telemetry”
raw_databytesopaque payload; interpretation is keyed by name

StreamSource — One stream of exactly one kind, held in StreamComponent.sources. oneof source: exactly one of the following.

FieldTypeDescription
audio_sourceAudioSource
video_sourceVideoSource
raw_sourceRawSource

ResourceStoreEntry — One resource store (fuel tank, ammo bin, battery, etc.) on the entity, used by ResourceStoresComponent.

FieldTypeDescription
resource_typeResourceType
resource_type_labelstring
store_idstringstable id of the store, entity-scoped
store_labelstring
current_quantityfloatamount remaining; absent = quantity not tracked; 0 = genuinely empty (a real, analytically distinct value)
max_quantityfloat
unitResourceUnit
unit_labelstring
jettisonablebool
extra_datarepeated KeyValuePair
locationStoreLocation

UTMPosition — UTM (Universal Transverse Mercator) alternative to the geographic position on WorldPositionComponent.

FieldTypeDescription
utm_zonestringe.g. “33T”
utm_eastingsint32meters
utm_northingsint32meters

PassiveSonarBeamData — One passive sonar beam and its current signal level, used by PassiveSonarDetectionComponent and PassiveSonar.

FieldTypeDescription
anglefloatbeam bearing, degrees
operturefloatbeam aperture (width), degrees. Field name misspells “aperture”; frozen for wire compatibility
levelfloatreceived signal level, dB
has_detectionboollevel exceeds threshold

PassiveSonar — One passive sonar on a multi-sonar platform (hull array, towed array, dipping sonar), with its own threshold and beam picture, used by PassiveSonarDetectionComponent.

FieldTypeDescription
sonar_iduint64stable id of this sonar within the owning entity, same entity-scoped scheme as emitter_id/receiver_id
thresholdfloatdetection threshold, dB
beamsrepeated PassiveSonarBeamData

CommandsPositions — A single position referenced by a command (waypoint, target point, etc.), used by CommandsEvent. oneof position: exactly one of the following.

FieldTypeDescription
sim_positionSimulationPosition
lla_positionLLAPosition
ecef_positionECEFPosition

SimulationPosition — A local-frame position, used by CommandsEvent and ReportsEvent. Predates the LLAPosition/ECEFPosition convention.

FieldTypeDescription
positionFloat3

Question — A single questionnaire item with the trainee’s answer and the key, used by QuestionGroup.

FieldTypeDescription
idint32
timestampTimestampwhen answered (wall-clock UTC)
question_textstring
user_answerstringtrainee’s answer
correct_answerstringanswer key
is_correctboolabsent = not graded

QuestionGroup — A named group of questions within a questionnaire, used by QuestionnaireEvent.

FieldTypeDescription
idint32
namestring
timestampTimestampwhen the group was presented/completed
questionsrepeated Question

JsonData — A JSON document carried as a string, used by JsonEventData.

FieldTypeDescription
jsonstring

Events

Two message families carry events. Every occurrence emits a TrackingEvent (the countable timeline; see The simulation frame). A source that has structured detail for the occurrence also emits an EntityDataEvent alongside it, carrying one of the 22 typed payloads below through its event_data oneof.

Each event’s envelope entity_id (on the enclosing EntityDataEvent) is documented per event below, since the perspective changes: for FiredEvent it is the firing entity, for HitEvent the victim, and so on.

BookmarkEvent — A user-authored marker tagging a moment in the capture, e.g. for later review or clipping. Envelope entity_id per EntityDataEvent conventions.

FieldTypeDescription
idint32
namestring
messagestring
modeBookmarkMode
recording_filestringabsent = not known

ButtonPressEvent — A button/control interaction. Envelope entity_id = the acting entity.

FieldTypeDescription
button_namestringcontrol identifier
stateButtonStateabsent = not reported (see enum note)

CollisionEvent — A physical collision. Envelope entity_id = the subject entity. Field 4 is declared first here; declaration order is cosmetic, only field numbers are wire-significant.

FieldTypeDescription
other_entity_iduint64collision partner; 0 for terrain/static
collision_pointFloat3world position of contact
collision_normalFloat3surface normal at contact (unit vector)
impact_forcefloatnewtons, source-normalized; absent = not reported

CommandsEvent — A command/order issued to or by an entity, with any associated positions. Envelope entity_id = the commanded/issuing entity.

FieldTypeDescription
positionsrepeated CommandsPositionspositions the command refers to
typestringCommand type. Use a documented canonical vocabulary rather than free-form values, so commands aggregate across sources.

CommsEvent — A communication transmission. Envelope entity_id = the transmitting entity.

FieldTypeDescription
comms_typeCommsTypeabsent = not reported (see enum note)
frequencystringdisplay string (e.g. “243.000 MHz”); numeric work uses _hz fields elsewhere
targetstringaddressed recipient, if any
contentstringmessage content
securebooltrue = encrypted channel
radio_bandstringband label (e.g. “UHF”, “VHF”)

CountermeasureEvent — Deployment of a defensive expendable (chaff, flare, decoy). Envelope entity_id = the deploying entity. Active jamming is covered by EmissionEvent/JammingEvent, not here.

FieldTypeDescription
countermeasure_namestring
countermeasure_typestringcanonical vocabulary: “CHAFF”, “FLARE”, “DECOY”, “SMOKE”, “DRFM”
quantityint32number dispensed; absent = not reported
threat_entity_iduint64threat being defeated; 0 if unknown

DetonationEvent — A munition detonation. Pairs with the DETONATION / MISSED / HIT tracking verbs and mirrors the DIS Detonation PDU. Envelope entity_id is the munition or firing entity per source convention; munition_entity_id is the authoritative join key. Closes the shot-to-outcome loop: FiredEvent.bullet_entity_id == munition_entity_id == HitEvent.bullet_entity_id.

FieldTypeDescription
munition_entity_iduint64joins FiredEvent.bullet_entity_id
target_entity_iduint64intended target; 0 if none
resultDetonationResult
miss_distance_mfloatstandard training metric; absent = not computed
positionLlaPositiondetonation point (double lat/lon/alt)

EmissionEvent — Emission start/stop or mode transition of an emitter. Pairs with the RADAR_EMISSION_STARTED/STOPPED and MODE_CHANGED tracking verbs. A mode transition is emitted as active = true carrying the new function/mode. Envelope entity_id = the emitting entity.

FieldTypeDescription
emitter_iduint64emitter on the envelope entity; (entity_id, emitter_id) is the global key
functionEmitterFunction
activebooltrue = emission on / mode entered, false = emission off
frequency_hzfloatabsent = not reported
effective_radiated_power_dbwfloatabsent = not reported
mode_iduint32
mode_namestringsource-specific mode label

EsmContactEvent — A passive RF detection by an ESM/RWR receiver. Pairs with the ESM_CONTACT_DETECTED/LOST tracking verbs. Envelope entity_id = the detecting entity (the ESM/RWR owner).

FieldTypeDescription
emitter_entity_iduint64truth id of the emitting entity; 0 if unresolved
bearing_degfloatbearing to the emitter; absent = not measured
frequency_hzfloatdetected frequency; absent = not measured
functionEmitterFunction
emitter_typestringrecognized emitter designation, if any (perceived)
signal_strength_dbmfloatreceived power; absent = not reported (0 dBm is a real value)

FaultEvent — A fault/failure lifecycle event on a system. Envelope entity_id = the affected (subject) entity.

FieldTypeDescription
stateFaultState
fault_typestringfault category, e.g. “engine_failure”, “hydraulic_leak”
fault_namestringhuman-readable name if different from type

FiredEvent — A weapon launch/fire. Envelope entity_id = the firing entity.

FieldTypeDescription
bullet_entity_iduint64Munition entity id. Join key across the engagement chain: == DetonationEvent.munition_entity_id == HitEvent.bullet_entity_id.
weapon_namestring
munition_namestring
target_entity_iduint64assigned target at launch; 0 if none
weapon_functionstringcanonical vocabulary (e.g. “AAM”, “AGM”, “GUN”)
time_of_flight_sfloatabsent = not reported
laser_codeint32designator code the weapon rides; joins LasedEvent.laser_code; absent = none
gps_jammedboolGPS jammed at launch
gps_meaconedboolGPS meaconed (spoofed) at launch

HitEvent — A weapon impact on an entity. Envelope entity_id = the hit (victim) entity; the shooter is recovered by joining bullet_entity_id to FiredEvent.

FieldTypeDescription
bullet_entity_iduint64Munition entity id. Join key: == FiredEvent.bullet_entity_id == DetonationEvent.munition_entity_id.
hit_locationstringimpacted region/part label
damage_amountfloatDamage dealt, source-normalized scale. Absent = damage not modeled; 0 = a real no-damage hit.

IdentificationEvent — Pairs with TRACKING_EVENT_TYPE_IDENTIFIED. Perceived classification at the moment of declaration, not truth. Envelope entity_id = identifying entity. Comparing declared_affiliation against the target’s actual affiliation is the fratricide / ROE-compliance analysis.

FieldTypeDescription
target_entity_iduint64
declared_affiliationForceAffiliation
methodstringcanonical vocabulary: “VISUAL”, “IFF”, “NCTR”, “DATALINK”, “ESM”
declared_typestringrecognized platform type, if any (perceived)

JammingEvent — A jamming effect experienced by a victim receiver. Pairs with the JAMMED tracking verb. Victim-perspective: envelope entity_id = the jammed (victim) entity, which is where the analytic value is (“my radar was degraded by X at time T”). The jammer’s own on/off is covered by EmissionEvent with EMITTER_FUNCTION_JAMMING; there is no jammer-side variant of this event.

FieldTypeDescription
source_entity_iduint64jammer entity truth id; 0 if unresolved
source_emitter_iduint64jammer’s emitter; global key is (source_entity_id, source_emitter_id)
victim_receiver_iduint64which of the victim’s receivers is affected
techniquestringcanonical vocabulary (e.g. “NOISE”, “DECEPTION”, “DRFM”)
bandwidth_hzfloatjammed bandwidth; absent = not reported
jam_to_signal_ratio_dbfloatabsent = not reported
effectivenessfloat0..1; absent = not reported
deniedbooltarget track denied
degradedbooltrack degraded but held
decoyedbooltrack pulled onto a false target
noise_limitedbooloutcome dominated by noise
clutter_limitedbooloutcome dominated by clutter
terrain_maskedboolline of sight terrain-masked

JsonEventData — An escape-hatch event carrying a named JSON payload, for source-specific data that has no typed event. Not aggregation-friendly; prefer a typed event where one exists.

FieldTypeDescription
event_namestringevent identifier
dataJsonDataJSON payload

LasedEvent — A laser designation. Envelope entity_id = the lasing entity.

FieldTypeDescription
target_entity_iduint64lased target; absent if none
distancefloatRange to target, meters (name predates the unit-suffix rule). Absent = not measured; 0 = a real zero-range reading.
laser_codeint32Designator code emitted. Joins FiredEvent.laser_code for designator-to- weapon handoff analysis. Absent = no code / not reported.

MultiStateChangedEvent — A state transition for a multi-state control, carrying the current state and the full set of states it can take. Envelope entity_id = the subject entity.

FieldTypeDescription
statestringcurrent state label
available_statesrepeated stringall possible states

QuestionnaireEvent — A completed training questionnaire. Envelope entity_id = the trainee entity.

FieldTypeDescription
idint32
namestring
question_groupsrepeated QuestionGroup

ReportsEvent — A situation report: a perceived contact’s position, affiliation, and type. Perceived (what the reporter believes), not truth.

FieldTypeDescription
sim_positionSimulationPosition
lla_positionLlaPosition
ecef_positionEcefPosition
typeReportsMarkerTypeperceived affiliation; absent = not reported (see enum note)
unit_typeReportsUnitTypeperceived unit type; absent = not reported (see enum note)

StateChangedEvent — A generic state transition. Envelope entity_id = the entity whose state changed. state is the new state label.

FieldTypeDescription
statestring

TargetTrackingEvent — A detection/lock/release transition against a target. Envelope entity_id = the sensing entity. Payload enrichment for the DETECTED / TARGETLOCKED / TARGETRELEASED tracking verbs: the TrackingEvent is the countable record, this carries the extra state/strength/reason (see the emission contract on EntityDataEvent).

FieldTypeDescription
stateTargetTrackingState
target_entity_iduint64truth id of the tracked entity
sensor_or_lock_typestringe.g. “radar”, “visual”, “missile_lock”
strengthfloatdetection confidence / lock strength, 0..1
reasonstringfor release: e.g. “manual”, “lost_lock”

ThresholdEvent — A monitored value crossing a threshold. Envelope entity_id = the subject entity. value and threshold_value are unitless by design: the threshold_name scopes their meaning.

FieldTypeDescription
threshold_namestringwhat is being monitored (scopes the values)
valuefloatObserved value at the crossing. Absent = value unavailable; 0 = a real crossing at exactly zero.
threshold_valuefloatthe threshold that was crossed

Transport wrappers

Messages that carry an arbitrary payload rather than defining simulation data themselves. Other HEAT products, not ProtoLib, define the transport these travel over; see each product’s own Interface Control Document.

DataPacket — a single captured payload with its origin and capture time.

FieldTypeDescription
timestamp_unix_msint64wall-clock UTC capture time, ms since epoch. Kept as a raw int64 for backward compatibility with existing captures
origin_uuidstringorigin identifier (user/seat/pod); stable per capture session
payloadgoogle.protobuf.Anyarbitrary protobuf payload, typically a SimulationFrame

DataPacketBundle — a batch of packets sharing a bundle-level capture time.

FieldTypeDescription
timestamp_unix_msint64wall-clock UTC, ms since epoch
packetsrepeated DataPacket

PDU — a raw binary payload, for transports (such as DIS) that HEAT ProtoLib does not model as typed messages.

FieldTypeDescription
payloadbytes

FolderUploadData — a file upload wrapper.

FieldTypeDescription
contentbytes

Enums

Every enum referenced by a component, event or supporting type above. _UNSPECIFIED = 0 is the proto3 default; a small number of older enums predate that convention and are flagged in their own description.

AircraftAutopilotLateralMode — Autopilot lateral (roll axis) guidance mode.

ValueNumber
AIRCRAFT_AUTOPILOT_LATERAL_MODE_UNSPECIFIED0
AIRCRAFT_AUTOPILOT_LATERAL_MODE_HEADING_HOLD1
AIRCRAFT_AUTOPILOT_LATERAL_MODE_NAV2
AIRCRAFT_AUTOPILOT_LATERAL_MODE_APPROACH3

AircraftAutopilotVerticalMode — Autopilot vertical (pitch axis) guidance mode. VS = vertical speed.

ValueNumber
AIRCRAFT_AUTOPILOT_VERTICAL_MODE_UNSPECIFIED0
AIRCRAFT_AUTOPILOT_VERTICAL_MODE_ALT_HOLD1
AIRCRAFT_AUTOPILOT_VERTICAL_MODE_VS2
AIRCRAFT_AUTOPILOT_VERTICAL_MODE_GLIDESLOPE3

AircraftDisplayRole — Cockpit display role. MFD = multi-function display, PFD = primary flight display, HUD_REPEATER = head-up display repeated on a panel.

ValueNumber
AIRCRAFT_DISPLAY_ROLE_UNSPECIFIED0
AIRCRAFT_DISPLAY_ROLE_MFD1
AIRCRAFT_DISPLAY_ROLE_PFD2
AIRCRAFT_DISPLAY_ROLE_HUD_REPEATER3

AswClassification — ASW classification of a subsurface contact: the confidence ladder a sonar operator walks from first detection to confirmed submarine. Perceived, not truth. POSSUB grades 1 (lowest) to 4 (highest confidence); PROBSUB covers sources that report a single probable-submarine step instead of grades. DATUM and LOST_CONTACT describe a contact no longer held: DATUM = last known position of a lost submarine contact, kept as an analytic reference point.

ValueNumber
ASW_CLASSIFICATION_UNSPECIFIED0
ASW_CLASSIFICATION_UNCLASSIFIED1
ASW_CLASSIFICATION_NONSUB2
ASW_CLASSIFICATION_POSSUB_13
ASW_CLASSIFICATION_POSSUB_24
ASW_CLASSIFICATION_POSSUB_35
ASW_CLASSIFICATION_POSSUB_46
ASW_CLASSIFICATION_PROBSUB7
ASW_CLASSIFICATION_CERTSUB8
ASW_CLASSIFICATION_LOST_CONTACT9
ASW_CLASSIFICATION_DATUM10

BookmarkMode

ValueNumber
BOOKMARK_MODE_UNSPECIFIED0
BOOKMARK_MODE_RECORD1
BOOKMARK_MODE_REPLAY2

ButtonState — Button interaction state. Note: PRESSED = 0 predates the _UNSPECIFIED convention, so an absent enum value decodes as PRESSED; the state field is optional to distinguish absent from an explicit PRESSED.

ValueNumber
BUTTON_STATE_PRESSED0
BUTTON_STATE_HOLD1
BUTTON_STATE_RELEASED2
BUTTON_STATE_CANCELED3

CommsType — Communication modality. Note: VOICE = 0 predates the _UNSPECIFIED convention, so an absent value decodes as VOICE; the comms_type field is optional to distinguish absent from an explicit VOICE.

ValueNumber
COMMS_TYPE_VOICE0
COMMS_TYPE_TEXT1
COMMS_TYPE_TTS2

ContactState — Steady-state sensor hold on a target. Distinct from the transitional TargetTrackingState used by TargetTrackingEvent: that enum carries transitions such as RELEASED, this one carries steady states such as TRACKING.

ValueNumber
CONTACT_STATE_UNSPECIFIED0
CONTACT_STATE_DETECTED1
CONTACT_STATE_TRACKING2
CONTACT_STATE_LOCKED3

DetonationResult — Outcome of a munition detonation.

ValueNumber
DETONATION_RESULT_UNSPECIFIED0
DETONATION_RESULT_HIT1
DETONATION_RESULT_NEAR_MISS2
DETONATION_RESULT_MISS3
DETONATION_RESULT_SELF_DESTRUCT4
DETONATION_RESULT_GROUND_IMPACT5

EmissionControl — Emission control (EMCON) policy limiting active RF emissions.

ValueNumber
EMISSION_CONTROL_UNSPECIFIED0
EMISSION_CONTROL_NO_RESTRICTIONS1
EMISSION_CONTROL_SILENT2
EMISSION_CONTROL_MINIMAL3
EMISSION_CONTROL_DISRUPTIVE4
EMISSION_CONTROL_AUTO5
EMISSION_CONTROL_MANUAL6

EmitterFunction — Purpose of an emitter mode. Aligned with the DIS Electromagnetic Emission PDU emitter function codes.

ValueNumber
EMITTER_FUNCTION_UNSPECIFIED0
EMITTER_FUNCTION_SEARCH1
EMITTER_FUNCTION_HEIGHT_FINDING2
EMITTER_FUNCTION_ACQUISITION3
EMITTER_FUNCTION_TRACKING4
EMITTER_FUNCTION_ACQUISITION_TRACKING5
EMITTER_FUNCTION_COMMAND_GUIDANCE6
EMITTER_FUNCTION_ILLUMINATION7
EMITTER_FUNCTION_RANGE_ONLY8
EMITTER_FUNCTION_MISSILE_BEACON9
EMITTER_FUNCTION_MISSILE_FUZE10
EMITTER_FUNCTION_ACTIVE_SEEKER11
EMITTER_FUNCTION_JAMMING12
EMITTER_FUNCTION_IFF13
EMITTER_FUNCTION_NAV_WEATHER14
EMITTER_FUNCTION_DATALINK15
EMITTER_FUNCTION_OTHER99

EngagementPosture — Overall engagement stance of the entity toward threats.

ValueNumber
ENGAGEMENT_POSTURE_UNSPECIFIED0
ENGAGEMENT_POSTURE_NORMAL1
ENGAGEMENT_POSTURE_PASSIVE2
ENGAGEMENT_POSTURE_AGGRESSIVE3

FaultState

ValueNumber
FAULTS_STATE_UNSPECIFIED0
FAULTS_STATE_ASSIGNED1
FAULTS_STATE_ACTIVATED2
FAULTS_STATE_RESOLVED3

ForceAffiliation — Allegiance of an entity or contact. Used both for truth affiliation (on an entity) and for perceived/declared affiliation (on a contact or an identification event); the field comment states which in each case. ASSUMED_FRIEND and SUSPECT are provisional identities from the STANAG 1241 ladder: they occur only as perceived affiliation, never as truth.

ValueNumber
FORCE_AFFILIATION_UNSPECIFIED0
FORCE_AFFILIATION_FRIENDLY1
FORCE_AFFILIATION_HOSTILE2
FORCE_AFFILIATION_NEUTRAL3
FORCE_AFFILIATION_UNKNOWN4
FORCE_AFFILIATION_ASSUMED_FRIEND5
FORCE_AFFILIATION_SUSPECT6

HeadlightMode — Headlight setting.

ValueNumber
OFF0
PARKING1
LOW_BEAM2
HIGH_BEAM3
AUTO4

IffSystemMode — Overall operating state of the IFF transponder/interrogator.

ValueNumber
IFF_SYSTEM_MODE_UNSPECIFIED0
IFF_SYSTEM_MODE_OFF1
IFF_SYSTEM_MODE_STANDBY2
IFF_SYSTEM_MODE_NORMAL3
IFF_SYSTEM_MODE_EMERGENCY4

LinkType

ValueNumber
LINK_TYPE_UNSPECIFIED0
LINK_TYPE_FIXED_MOUNT1
LINK_TYPE_ARTICULATED_MOUNT2
LINK_TYPE_TOWED3
LINK_TYPE_CARRIED4
LINK_TYPE_DEPLOYED_BY5

RecognitionLevel — How far a sensor/operator has discriminated a contact, on the NATO target-acquisition ladder (STANAG 3769 / Johnson criteria). Domain-agnostic: applies to air, surface, land, and subsurface contacts alike. Perceived, not truth.

ValueNumber
RECOGNITION_LEVEL_UNSPECIFIED0
RECOGNITION_LEVEL_DETECTED1
RECOGNITION_LEVEL_CLASSIFIED2
RECOGNITION_LEVEL_RECOGNIZED3
RECOGNITION_LEVEL_IDENTIFIED4

ReportsMarkerType — Perceived affiliation of a reported contact. Note: Hostile = 0 predates the _UNSPECIFIED convention, so an absent value decodes as Hostile; the enclosing field is optional to distinguish absent from an explicit Hostile. Value names are unprefixed (grandfathered; renaming would break JSON/source). New messages use ForceAffiliation instead; this enum is frozen for this message.

ValueNumber
Hostile0
Unknown1
Neutral2
Friendly3

ReportsUnitType — Perceived unit type of a reported contact. Note: Infantry = 0 has the same absent-decodes-as-value hazard as ReportsMarkerType; the field is optional. Value names grandfathered (unprefixed); frozen for this message.

ValueNumber
Infantry0
AntiTank1
Armour2
Artillery3
Cavalry4
Supply5
RWAircraft6
FWAircraft7
UAV8

ResourceType

ValueNumber
RESOURCE_TYPE_UNSPECIFIED0
RESOURCE_TYPE_FUEL1
RESOURCE_TYPE_AMMUNITION2
RESOURCE_TYPE_BATTERY3
RESOURCE_TYPE_HYDRAULIC_FLUID4
RESOURCE_TYPE_COOLANT5
RESOURCE_TYPE_OXIDIZER6
RESOURCE_TYPE_GAS7
RESOURCE_TYPE_CONSUMABLE8
RESOURCE_TYPE_FLARES9
RESOURCE_TYPE_CHAFF10
RESOURCE_TYPE_CUSTOM_LABEL11

ResourceUnit

ValueNumber
RESOURCE_UNIT_UNSPECIFIED0
RESOURCE_UNIT_LITERS1
RESOURCE_UNIT_GALLONS2
RESOURCE_UNIT_KILOGRAMS3
RESOURCE_UNIT_POUNDS4
RESOURCE_UNIT_KILOWATT_HOURS5
RESOURCE_UNIT_AMP_HOURS6
RESOURCE_UNIT_ROUNDS7
RESOURCE_UNIT_COUNT8
RESOURCE_UNIT_PERCENT9
RESOURCE_UNIT_CUSTOM_LABEL10

ScanPattern — How an emitter’s antenna sweeps its beam through space.

ValueNumber
SCAN_PATTERN_UNSPECIFIED0
SCAN_PATTERN_CONICAL1
SCAN_PATTERN_CIRCULAR2
SCAN_PATTERN_SECTOR3
SCAN_PATTERN_RASTER4
SCAN_PATTERN_ELECTRONIC5
SCAN_PATTERN_LOCK6
SCAN_PATTERN_OTHER99

SonobuoyStatus — Lifecycle state of a sonobuoy from deployment to end of life.

ValueNumber
SONOBUOY_STATUS_UNSPECIFIED0
SONOBUOY_STATUS_SCUTTLED1
SONOBUOY_STATUS_ON_GROUND2
SONOBUOY_STATUS_FALLING3
SONOBUOY_STATUS_ACTIVATION_DELAY4
SONOBUOY_STATUS_DEPLOYING5
SONOBUOY_STATUS_OPERATING6
SONOBUOY_STATUS_HYDROPHONE_ON_OCEAN_BOTTOM7

StoreLocation — Where a store is physically carried on the platform.

ValueNumber
STORE_LOCATION_UNSPECIFIED0
STORE_LOCATION_INTERNAL1
STORE_LOCATION_EXTERNAL2
STORE_LOCATION_CONFORMAL3

TargetTrackingState

ValueNumber
TARGET_TRACKING_STATE_UNSPECIFIED0
TARGET_TRACKING_STATE_DETECTED1
TARGET_TRACKING_STATE_LOCKED2
TARGET_TRACKING_STATE_RELEASED3

TrackingEventType — Event types that can occur during simulation

ValueNumber
TRACKING_EVENT_TYPE_UNSPECIFIED0
TRACKING_EVENT_TYPE_CREATED1
TRACKING_EVENT_TYPE_DESTROYED2
TRACKING_EVENT_TYPE_STATE_CHANGED3
TRACKING_EVENT_TYPE_MOUNTED5
TRACKING_EVENT_TYPE_DISMOUNTED6
TRACKING_EVENT_TYPE_ENTERED_VEHICLE7
TRACKING_EVENT_TYPE_EXITED_VEHICLE8
TRACKING_EVENT_TYPE_CREW_POSITION_CHANGED9
TRACKING_EVENT_TYPE_COLLISION10
TRACKING_EVENT_TYPE_DETECTED11
TRACKING_EVENT_TYPE_TARGETLOCKED12
TRACKING_EVENT_TYPE_TARGETRELEASED13
TRACKING_EVENT_TYPE_ENTERED14
TRACKING_EVENT_TYPE_EXITED15
TRACKING_EVENT_TYPE_INTERCEPTED16
TRACKING_EVENT_TYPE_LASED17
TRACKING_EVENT_TYPE_FIRED20
TRACKING_EVENT_TYPE_HIT21
TRACKING_EVENT_TYPE_MISSED22
TRACKING_EVENT_TYPE_JAMMED23
TRACKING_EVENT_TYPE_COUNTERMEASURE24
TRACKING_EVENT_TYPE_DAMAGED25
TRACKING_EVENT_TYPE_REPAIRED26
TRACKING_EVENT_TYPE_AMMO_HIT27
TRACKING_EVENT_TYPE_MUNITION_LAUNCHED28
TRACKING_EVENT_TYPE_DETONATION29
TRACKING_EVENT_TYPE_TRANSMITTED30
TRACKING_EVENT_TYPE_RECEIVED31
TRACKING_EVENT_TYPE_ORDER_ISSUED32
TRACKING_EVENT_TYPE_ORDER_ACKNOWLEDGED33
TRACKING_EVENT_TYPE_IDENTIFIED34
TRACKING_EVENT_TYPE_VOICE_TRANSMISSION_STARTED35
TRACKING_EVENT_TYPE_VOICE_TRANSMISSION_ENDED36
TRACKING_EVENT_TYPE_INTERCOM_STATE_CHANGED37
TRACKING_EVENT_TYPE_THRESHOLD_EXCEEDED40
TRACKING_EVENT_TYPE_THRESHOLD_RESTORED41
TRACKING_EVENT_TYPE_ACTION_PERFORMED42
TRACKING_EVENT_TYPE_MODE_CHANGED43
TRACKING_EVENT_TYPE_FAILED44
TRACKING_EVENT_TYPE_RECOVERED45
TRACKING_EVENT_TYPE_ARMED_STATE_CHANGED46
TRACKING_EVENT_TYPE_RADAR_EMISSION_STARTED50
TRACKING_EVENT_TYPE_RADAR_EMISSION_STOPPED51
TRACKING_EVENT_TYPE_ESM_CONTACT_DETECTED52
TRACKING_EVENT_TYPE_ESM_CONTACT_LOST53
TRACKING_EVENT_TYPE_IR_SIGNATURE_CHANGED54
TRACKING_EVENT_TYPE_RADAR_SIGNATURE_CHANGED55
TRACKING_EVENT_TYPE_TRANSMITTER_STATE_CHANGED56
TRACKING_EVENT_TYPE_RECEIVER_STATE_CHANGED57
TRACKING_EVENT_TYPE_REFUEL_STARTED61
TRACKING_EVENT_TYPE_REFUEL_COMPLETED62
TRACKING_EVENT_TYPE_REPAIR_STARTED63
TRACKING_EVENT_TYPE_REPAIR_COMPLETED64
TRACKING_EVENT_TYPE_RESUPPLY_STARTED65
TRACKING_EVENT_TYPE_RESUPPLY_COMPLETED66
TRACKING_EVENT_TYPE_TOWING_STARTED67
TRACKING_EVENT_TYPE_TOWING_STOPPED68

TurbulenceSeverityState — Turbulence intensity band.

ValueNumber
TURBULENCE_SEVERITY_STATE_SMOOTH0
TURBULENCE_SEVERITY_STATE_LIGHT1
TURBULENCE_SEVERITY_STATE_MODERATE2
TURBULENCE_SEVERITY_STATE_SEVERE3
TURBULENCE_SEVERITY_STATE_EXTREME4

UnitDomain

ValueNumber
UNIT_DOMAIN_UNSPECIFIED0
UNIT_DOMAIN_LAND1
UNIT_DOMAIN_AIR2
UNIT_DOMAIN_SURFACE3
UNIT_DOMAIN_SUBSURFACE4
UNIT_DOMAIN_SPACE5

UnitKind

ValueNumber
UNIT_KIND_UNSPECIFIED0
UNIT_KIND_PLATFORM1
UNIT_KIND_MUNITION2
UNIT_KIND_LIFEFORM3
UNIT_KIND_SENSOR4
UNIT_KIND_SUPPLY5
UNIT_KIND_STRUCTURE6
UNIT_KIND_ENVIRONMENTAL7
UNIT_KIND_SUBSYSTEM8

WeaponsPosture — Rules-of-engagement stance governing whether weapons may be employed.

ValueNumber
WEAPONS_POSTURE_UNSPECIFIED0
WEAPONS_POSTURE_HOLD1
WEAPONS_POSTURE_TIGHT2
WEAPONS_POSTURE_FREE3
Opens your browser's print dialog. Choose "Save as PDF" as the destination.