diff --git a/epan/CMakeLists.txt b/epan/CMakeLists.txt index 675e6fc4e2..1c2814c7a7 100644 --- a/epan/CMakeLists.txt +++ b/epan/CMakeLists.txt @@ -568,9 +568,6 @@ set(DISSECTOR_SRC dissectors/packet-diameter.c dissectors/packet-diameter_3gpp.c dissectors/packet-diffserv-mpls-common.c - dissectors/packet-dis-enums.c - dissectors/packet-dis-fields.c - dissectors/packet-dis-pdus.c dissectors/packet-dis.c dissectors/packet-distcc.c dissectors/packet-dlm3.c diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common index 07019f2546..013477c76a 100644 --- a/epan/dissectors/Makefile.common +++ b/epan/dissectors/Makefile.common @@ -488,9 +488,6 @@ DISSECTOR_SRC = \ packet-diameter.c \ packet-diameter_3gpp.c \ packet-diffserv-mpls-common.c \ - packet-dis-enums.c \ - packet-dis-fields.c \ - packet-dis-pdus.c \ packet-dis.c \ packet-distcc.c \ packet-dlm3.c \ @@ -1402,9 +1399,6 @@ DISSECTOR_INCLUDES = \ packet-diameter.h \ packet-diffserv-mpls-common.h \ packet-disp.h \ - packet-dis-enums.h \ - packet-dis-fields.h \ - packet-dis-pdus.h \ packet-dns.h \ packet-dop.h \ packet-dsp.h \ diff --git a/epan/dissectors/packet-dis-enums.c b/epan/dissectors/packet-dis-enums.c deleted file mode 100644 index 9643d83ff3..0000000000 --- a/epan/dissectors/packet-dis-enums.c +++ /dev/null @@ -1,2201 +0,0 @@ -/* packet-dis-enums.c - * String definitions for DIS enumerations. - * Copyright 2005, Scientific Research Corporation - * Initial implementation by Jeremy Ouellette - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1998 Gerald Combs - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "config.h" - -#include "packet-dis-enums.h" -#include - -const value_string DIS_PDU_ProtocolVersion_Strings[] = -{ - { DIS_VERSION_OTHER, "Other" }, - { DIS_VERSION_1_0, "DIS PDU version 1.0 (May 92)" }, - { DIS_VERSION_IEEE_1278_1993, "IEEE 1278-1993" }, - { DIS_VERSION_2_0_3RD_DRAFT, "DIS PDU version 2.0 - third draft (May 93)" }, - { DIS_VERSION_2_0_4TH_DRAFT, "DIS PDU version 2.0 - fourth draft (revised) March 16, 1994" }, - { DIS_VERSION_IEEE_1278_1_1995, "IEEE 1278.1-1995" }, - { DIS_VERSION_IEEE_1278_1A_1998, "IEEE 1278.1A-1998" }, - { DIS_VERSION_IEEE_1278_1_200X, "IEEE 1278.1-200X" }, - { 0, NULL } -}; - -const value_string DIS_PDU_ProtocolFamily_Strings[] = -{ - { DIS_PROTOCOLFAMILY_OTHER, "Other" }, - { DIS_PROTOCOLFAMILY_ENTITY_INFORMATION_INTERACTION, "Entity information / interaction" }, - { DIS_PROTOCOLFAMILY_WARFARE, "Warfare" }, - { DIS_PROTOCOLFAMILY_LOGISTICS, "Logistics" }, - { DIS_PROTOCOLFAMILY_RADIO_COMMUNICATIONS, "Radio communications" }, - { DIS_PROTOCOLFAMILY_SIMULATION_MANAGEMENT, "Simulation management" }, - { DIS_PROTOCOLFAMILY_DISTRIBUTED_EMISSION_REGENERATION, "Distributed emission regeneration" }, - { DIS_PROTOCOLFAMILY_ENTITY_MANAGEMENT, "Entity management" }, - { DIS_PROTOCOLFAMILY_MINEFIELD, "Minefield" }, - { DIS_PROTOCOLFAMILY_SYNTHETIC_ENVIRONMENT, "Synthetic environment" }, - { DIS_PROTOCOLFAMILY_SIMULATION_MANAGEMENT_WITH_RELIABILITY, "Simulation management with reliability" }, - { DIS_PROTOCOLFAMILY_LIVE_ENTITY, "Live entity" }, - { DIS_PROTOCOLFAMILY_NON_REAL_TIME, "Non-real time" }, - { DIS_PROTOCOLFAMILY_INFORMATION_OPERATIONS, "Information Operations" }, - { DIS_PROTOCOLFAMILY_EXPERIMENTAL_COMPUTER_GENERATED_FORCES, "Experimental - Computer Generated Forces" }, - { DIS_PROTOCOLFAMILY_EXPERIMENTAL_VDIS, "Experimental - V-DIS" }, - { DIS_PROTOCOLFAMILY_PERSISTENT_OBJECT, "Persistent object" }, - { DIS_PROTOCOLFAMILY_EXPERIMENTAL, "Experimental" }, - { 0, NULL } -}; - -const value_string DIS_PDU_Type_Strings[] = -{ - { DIS_PDUTYPE_OTHER, "Other" }, - { DIS_PDUTYPE_ENTITY_STATE, "Entity State" }, - { DIS_PDUTYPE_FIRE, "Fire" }, - { DIS_PDUTYPE_DETONATION, "Detonation" }, - { DIS_PDUTYPE_COLLISION, "Collision" }, - { DIS_PDUTYPE_SERVICE_REQUEST, "Service Request" }, - { DIS_PDUTYPE_RESUPPLY_OFFER, "Resupply Offer" }, - { DIS_PDUTYPE_RESUPPLY_RECEIVED, "Resupply Received" }, - { DIS_PDUTYPE_RESUPPLY_CANCEL, "Resupply Cancel" }, - { DIS_PDUTYPE_REPAIR_COMPLETE, "Repair Complete" }, - { DIS_PDUTYPE_REPAIR_RESPONSE, "Repair Response" }, - { DIS_PDUTYPE_CREATE_ENTITY, "Create Entity" }, - { DIS_PDUTYPE_REMOVE_ENTITY, "Remove Entity" }, - { DIS_PDUTYPE_START_RESUME, "Start / Resume" }, - { DIS_PDUTYPE_STOP_FREEZE, "Stop / Freeze" }, - { DIS_PDUTYPE_ACKNOWLEDGE, "Acknowledge" }, - { DIS_PDUTYPE_ACTION_REQUEST, "Action Request" }, - { DIS_PDUTYPE_ACTION_RESPONSE, "Action Response" }, - { DIS_PDUTYPE_DATA_QUERY, "Data Query" }, - { DIS_PDUTYPE_SET_DATA, "Set Data" }, - { DIS_PDUTYPE_DATA, "Data" }, - { DIS_PDUTYPE_EVENT_REPORT, "Event Report" }, - { DIS_PDUTYPE_COMMENT, "Comment" }, - { DIS_PDUTYPE_ELECTROMAGNETIC_EMISSION, "Electromagnetic Emission" }, - { DIS_PDUTYPE_DESIGNATOR, "Designator" }, - { DIS_PDUTYPE_TRANSMITTER, "Transmitter" }, - { DIS_PDUTYPE_SIGNAL, "Signal" }, - { DIS_PDUTYPE_RECEIVER, "Receiver" }, - { DIS_PDUTYPE_IFF_ATC_NAVAIDS, "IFF / ATC / NAVAIDS" }, - { DIS_PDUTYPE_UNDERWATER_ACOUSTIC, "Underwater Acoustic" }, - { DIS_PDUTYPE_SUPPLEMENTAL_EMISSION_ENTITY_STATE, "Supplemental Emission Entity State" }, - { DIS_PDUTYPE_INTERCOM_SIGNAL, "Intercom Signal" }, - { DIS_PDUTYPE_INTERCOM_CONTROL, "Intercom Control" }, - { DIS_PDUTYPE_AGGREGATE_STATE, "Aggregate State" }, - { DIS_PDUTYPE_IS_GROUP_OF, "IsGroupOf" }, - { DIS_PDUTYPE_TRANSFER_CONTROL, "Transfer Control" }, - { DIS_PDUTYPE_IS_PART_OF, "IsPartOf" }, - { DIS_PDUTYPE_MINEFIELD_STATE, "Minefield State" }, - { DIS_PDUTYPE_MINEFIELD_QUERY, "Minefield Query" }, - { DIS_PDUTYPE_MINEFIELD_DATA, "Minefield Data" }, - { DIS_PDUTYPE_MINEFIELD_RESPONSE_NAK, "Minefield Response NAK" }, - { DIS_PDUTYPE_ENVIRONMENTAL_PROCESS, "Environmental Process" }, - { DIS_PDUTYPE_GRIDDED_DATA, "Gridded Data" }, - { DIS_PDUTYPE_POINT_OBJECT_STATE, "Point Object State" }, - { DIS_PDUTYPE_LINEAR_OBJECT_STATE, "Linear Object State" }, - { DIS_PDUTYPE_AREAL_OBJECT_STATE, "Areal Object State" }, - { DIS_PDUTYPE_TSPI, "TSPI" }, - { DIS_PDUTYPE_APPEARANCE, "Appearance" }, - { DIS_PDUTYPE_ARTICULATED_PARTS, "Articulated Parts" }, - { DIS_PDUTYPE_LE_FIRE, "LE Fire" }, - { DIS_PDUTYPE_LE_DETONATION, "LE Detonation" }, - { DIS_PDUTYPE_CREATE_ENTITY_R, "Create Entity-R" }, - { DIS_PDUTYPE_REMOVE_ENTITY_R, "Remove Entity-R" }, - { DIS_PDUTYPE_START_RESUME_R, "Start / Resume-R" }, - { DIS_PDUTYPE_STOP_FREEZE_R, "Stop / Freeze-R" }, - { DIS_PDUTYPE_ACKNOWLEDGE_R, "Acknowledge-R" }, - { DIS_PDUTYPE_ACTION_REQUEST_R, "Action Request-R" }, - { DIS_PDUTYPE_ACTION_RESPONSE_R, "Action Response-R" }, - { DIS_PDUTYPE_DATA_QUERY_R, "Data Query-R" }, - { DIS_PDUTYPE_SET_DATA_R, "Set Data-R" }, - { DIS_PDUTYPE_DATA_R, "Data-R" }, - { DIS_PDUTYPE_EVENT_REPORT_R, "Event Report-R" }, - { DIS_PDUTYPE_COMMENT_R, "Comment-R" }, - { DIS_PDUTYPE_RECORD_R, "Record-R" }, - { DIS_PDUTYPE_SET_RECORD_R, "Set Record-R" }, - { DIS_PDUTYPE_RECORD_QUERY_R, "Record Query-R" }, - { DIS_PDUTYPE_COLLISION_ELASTIC, "Collision Elastic" }, - { DIS_PDUTYPE_ENTITY_STATE_UPDATE, "Entity State Update" }, - { DIS_PDUTYPE_DIRECTED_ENERGY_FIRE, "Directed Energy Fire" }, - { DIS_PDUTYPE_ENTITY_DAMAGE_STATUS, "Entity Damage Status" }, - { DIS_PDUTYPE_INFORMATION_OPERATIONS_ACTION, "Info Operations Action" }, - { DIS_PDUTYPE_INFORMATION_OPERATIONS_REPORT, "Info Operations Report" }, - { DIS_PDUTYPE_ATTRIBUTE, "Attribute" }, - { DIS_PDUTYPE_ANNOUNCE_OBJECT, "Announce Object" }, - { DIS_PDUTYPE_DELETE_OBJECT, "Delete Object" }, - { DIS_PDUTYPE_DESCRIBE_APPLICATION, "Describe Application" }, - { DIS_PDUTYPE_DESCRIBE_EVENT, "Describe Event" }, - { DIS_PDUTYPE_DESCRIBE_OBJECT, "Describe Object" }, - { DIS_PDUTYPE_REQUEST_EVENT, "Request Event" }, - { DIS_PDUTYPE_REQUEST_OBJECT, "Request Object" }, - { DIS_PDUTYPE_APPLICATION_CONTROL, "Application Control" }, - { DIS_PDUTYPE_STEALTH_STATE, "Stealth State" }, - { 0, NULL } -}; - -const value_string DIS_PDU_EntityKind_Strings[] = -{ - { DIS_ENTITYKIND_OTHER, "Other" }, - { DIS_ENTITYKIND_PLATFORM, "Platform" }, - { DIS_ENTITYKIND_MUNITION, "Munition" }, - { DIS_ENTITYKIND_LIFE_FORM, "Life form" }, - { DIS_ENTITYKIND_ENVIRONMENTAL, "Environmental" }, - { DIS_ENTITYKIND_CULTURAL_FEATURE, "Cultural feature" }, - { DIS_ENTITYKIND_SUPPLY, "Supply" }, - { DIS_ENTITYKIND_RADIO, "Radio" }, - { DIS_ENTITYKIND_EXPENDABLE, "Expendable" }, - { DIS_ENTITYKIND_SENSOR_EMITTER, "Sensor/Emitter" }, - { 0, NULL } -}; - -const value_string DIS_PDU_Domain_Strings[] = -{ - { DIS_DOMAIN_OTHER, "Other" }, - { DIS_DOMAIN_LAND, "Land" }, - { DIS_DOMAIN_AIR, "Air" }, - { DIS_DOMAIN_SURFACE, "Surface" }, - { DIS_DOMAIN_SUBSURFACE, "Subsurface" }, - { DIS_DOMAIN_SPACE, "Space" }, - { 0, NULL } -}; - -const value_string DIS_PDU_Category_LandPlatform_Strings[] = -{ - { DIS_CATEGORY_LANDPLATFORM_OTHER, "Other" }, - { DIS_CATEGORY_LANDPLATFORM_TANK, "Tank" }, - { DIS_CATEGORY_LANDPLATFORM_ARMORED_FIGHTING_VEHICLE, "Armored fighting vehicle" }, - { DIS_CATEGORY_LANDPLATFORM_ARMORED_UTILITY_VEHICLE, "Armored utility vehicle" }, - { DIS_CATEGORY_LANDPLATFORM_SELF_PROPELLED_ARTILLERY, "Self-propelled artillery" }, - { DIS_CATEGORY_LANDPLATFORM_TOWED_ARTILLERY, "Towed artillery" }, - { DIS_CATEGORY_LANDPLATFORM_SMALL_WHEELED_UTILITY_VEHICLE, "Small wheeled utility vehicle" }, - { DIS_CATEGORY_LANDPLATFORM_LARGE_WHEELED_UTILITY_VEHICLE, "Large wheeled utility vehicle" }, - { DIS_CATEGORY_LANDPLATFORM_SMALL_TRACKED_UTILITY_VEHICLE, "Small tracked utility vehicle" }, - { DIS_CATEGORY_LANDPLATFORM_LARGE_TRACKED_UTILITY_VEHICLE, "Large tracked utility vehicle" }, - { DIS_CATEGORY_LANDPLATFORM_MORTAR, "Mortar" }, - { DIS_CATEGORY_LANDPLATFORM_MINE_PLOW, "Mine plow" }, - { DIS_CATEGORY_LANDPLATFORM_MINE_RAKE, "Mine rake" }, - { DIS_CATEGORY_LANDPLATFORM_MINE_ROLLER, "Mine roller" }, - { DIS_CATEGORY_LANDPLATFORM_CARGO_TRAILER, "Cargo trailer" }, - { DIS_CATEGORY_LANDPLATFORM_FUEL_TRAILER, "Fuel trailer" }, - { DIS_CATEGORY_LANDPLATFORM_GENERATOR_TRAILER, "Generator trailer" }, - { DIS_CATEGORY_LANDPLATFORM_WATER_TRAILER, "Water trailer" }, - { DIS_CATEGORY_LANDPLATFORM_ENGINEER_EQUIPMENT, "Engineer equipment" }, - { DIS_CATEGORY_LANDPLATFORM_HEAVY_EQUIPMENT_TRANSPORT_TRAILER, "Heavy equipment transport trailer" }, - { DIS_CATEGORY_LANDPLATFORM_MAINTENANCE_EQUIPMENT_TRAILER, "Maintenance equipment trailer" }, - { DIS_CATEGORY_LANDPLATFORM_LIMBER, "Limber" }, - { DIS_CATEGORY_LANDPLATFORM_CHEMICAL_DECONTAMINATION_TRAILER, "Chemical decontamination trailer" }, - { DIS_CATEGORY_LANDPLATFORM_WARNING_SYSTEM, "Warning system" }, - { DIS_CATEGORY_LANDPLATFORM_TRAIN_ENGINE, "Train engine" }, - { DIS_CATEGORY_LANDPLATFORM_TRAIN_CAR, "Train car" }, - { DIS_CATEGORY_LANDPLATFORM_TRAIN_CABOOSE, "Train caboose" }, - { DIS_CATEGORY_LANDPLATFORM_CIVILIAN_VEHICLE, "Civilian vehicle" }, - { DIS_CATEGORY_LANDPLATFORM_AIR_DEFENSE_MISSILE_DEFENSE_UNIT_EQUIPMENT, "Air defense / missile defense unit equipment" }, - { DIS_CATEGORY_LANDPLATFORM_C3I_SYSTEM, "C3I system" }, - { DIS_CATEGORY_LANDPLATFORM_OPERATIONS_FACILITY, "Operations facility" }, - { DIS_CATEGORY_LANDPLATFORM_INTELLIGENCE_FACILITY, "Intelligence facility" }, - { DIS_CATEGORY_LANDPLATFORM_SURVEILLANCE_FACILITY, "Surveillance facility" }, - { DIS_CATEGORY_LANDPLATFORM_COMMUNICATIONS_FACILITY, "Communications facility" }, - { DIS_CATEGORY_LANDPLATFORM_COMMAND_FACILITY, "Command facility" }, - { DIS_CATEGORY_LANDPLATFORM_C4I_FACILITY, "C4I facility" }, - { DIS_CATEGORY_LANDPLATFORM_CONTROL_FACILITY, "Control facility" }, - { DIS_CATEGORY_LANDPLATFORM_FIRE_CONTROL_FACILITY, "Fire control facility" }, - { DIS_CATEGORY_LANDPLATFORM_MISSILE_DEFENSE_FACILITY, "Missile defense facility" }, - { DIS_CATEGORY_LANDPLATFORM_FIELD_COMMAND_POST, "Field command post" }, - { DIS_CATEGORY_LANDPLATFORM_OBSERVATION_POST, "Field observation post" }, - { 0, NULL } -}; - -const value_string DIS_PDU_Category_AirPlatform_Strings[] = -{ - { DIS_CATEGORY_AIRPLATFORM_OTHER, "Other" }, - { DIS_CATEGORY_AIRPLATFORM_FIGHTER_AIR_DEFENSE, "Fighter / air defense" }, - { DIS_CATEGORY_AIRPLATFORM_ATTACK_STRIKE, "Attack / strike" }, - { DIS_CATEGORY_AIRPLATFORM_BOMBER, "Bomber" }, - { DIS_CATEGORY_AIRPLATFORM_CARGO_TANKER, "Cargo tanker" }, - { DIS_CATEGORY_AIRPLATFORM_ASW_PATROL_OBSERVATION, "ASW / patrol / observation" }, - { DIS_CATEGORY_AIRPLATFORM_ELECTRONIC_WARFARE, "Electronic warfare" }, - { DIS_CATEGORY_AIRPLATFORM_RECONNAISSANCE, "Reconnaissance" }, - { DIS_CATEGORY_AIRPLATFORM_SURVEILLANCE_C2, "Surveillance / C2" }, - { DIS_CATEGORY_AIRPLATFORM_ATTACK_HELICOPTER, "Attack helicopter" }, - { DIS_CATEGORY_AIRPLATFORM_UTILITY_HELICOPTER, "Utility helicopter" }, - { DIS_CATEGORY_AIRPLATFORM_ANTISUB_WARFARE_PATROL_HELICOPTER, "Antisubmarine warfare / patrol helicopter" }, - { DIS_CATEGORY_AIRPLATFORM_CARGO_HELICOPTER, "Cargo helicopter" }, - { DIS_CATEGORY_AIRPLATFORM_OBSERVATION_HELICOPTER, "Observation helicopter" }, - { DIS_CATEGORY_AIRPLATFORM_SPECIAL_OPERATIONS_HELICOPTER, "Special operations helicopter" }, - { DIS_CATEGORY_AIRPLATFORM_TRAINER, "Trainer" }, - { DIS_CATEGORY_AIRPLATFORM_UNMANNED, "Unmanned" }, - { DIS_CATEGORY_AIRPLATFORM_NON_COMBATANT_COMMERCIAL_AIRCRAFT, "Non-combatant commercial aircraft" }, - { 0, NULL } -}; - -const value_string DIS_PDU_Category_SurfacePlatform_Strings[] = -{ - { DIS_CATEGORY_SURFACEPLATFORM_OTHER, "Other" }, - { 0, NULL} -}; - -const value_string DIS_PDU_Category_SubsurfacePlatform_Strings[] = -{ - { DIS_CATEGORY_SUBSURFACEPLATFORM_OTHER, "Other" }, - { 0, NULL } -}; - -const value_string DIS_PDU_Category_SpacePlatform_Strings[] = -{ - { DIS_CATEGORY_SPACEPLATFORM_OTHER, "Other" }, - { 0, NULL } -}; - -const value_string DIS_PDU_Encoding_Class_Strings[] = -{ - { DIS_ENCODING_CLASS_ENCODED_AUDIO, "Encoded Audio" }, - { DIS_ENCODING_CLASS_RAW_BINARY_DATA, "Raw Binary Data" }, - { DIS_ENCODING_CLASS_APPL_SPEC_DATA, "Application-Specific Data" }, - { DIS_ENCODING_CLASS_DB_INDEX, "Database index" }, - { 0, NULL } -}; - -const value_string DIS_PDU_Encoding_Type_Strings[] = -{ - { DIS_ENCODING_TYPE_OTHER, "Other" }, - { DIS_ENCODING_TYPE_MU_LAW, "8-bit mu-law" }, - { DIS_ENCODING_TYPE_CVSD, "CVSD per MIL-STD-188-113" }, - { DIS_ENCODING_TYPE_ADPCM_G721, "ADPCM per CCITT G.721" }, - { DIS_ENCODING_TYPE_16BIT_LINEAR_PCM, "16-bit linear PCM" }, - { DIS_ENCODING_TYPE_8BIT_LINEAR_PCM, "8-bit linear PCM" }, - { DIS_ENCODING_TYPE_VECTOR_QUANTIZATION, "VQ (Vector Quantization" }, - { 0, NULL } -}; - -const value_string DIS_PDU_TDL_Type_Strings[] = -{ - {DIS_TDL_TYPE_OTHER, "Other" }, - {DIS_TDL_TYPE_PADIL, "PADIL" }, - {DIS_TDL_TYPE_NATO_LINK1, "NATO Link-1" }, - {DIS_TDL_TYPE_ATDL1, "ATDL-1" }, - {DIS_TDL_TYPE_LINK_11B, "Link 11B (TADIL B)" }, - {DIS_TDL_TYPE_SADL, "Situational Awareness Data Link (SADL)" }, - {DIS_TDL_TYPE_JTIDS_TADIL_J, "Link 16 Legacy Format (JTIDS/TADIL-J) " }, - {DIS_TDL_TYPE_JTIDS_FDL_TADIL_J, "Link 16 Legacy Format (JTIDS/FDL/TADIL-J)" }, - {DIS_TDL_TYPE_LINK_11A, "Link 11A (TADIL A)" }, - {DIS_TDL_TYPE_IJMS, "IJMS" }, - {DIS_TDL_TYPE_LINK_4A, "Link 4A (TADIL C)" }, - {DIS_TDL_TYPE_LINK_4C, "Link 4C" }, - {DIS_TDL_TYPE_TIBS, "TIBS" }, - {DIS_TDL_TYPE_ATL, "ATL" }, - {DIS_TDL_TYPE_CONSTANT_SRC, "Constant Source" }, - {DIS_TDL_TYPE_ABBRV_CC, "Abbreviated Command and Control" }, - {DIS_TDL_TYPE_MILSTAR, "MILSTAR" }, - {DIS_TDL_TYPE_ATHS, "ATHS" }, - {DIS_TDL_TYPE_OTHGOLD, "OTHGOLD" }, - {DIS_TDL_TYPE_TACELINT, "TACELINT" }, - {DIS_TDL_TYPE_AWW13, "Weapons Data Link (AWW-13)" }, - {DIS_TDL_TYPE_ABBRV_CC_2, "Abbreviated Command and Control" }, - {DIS_TDL_TYPE_EPLRS, "Enhanced Position Location Reporting System (EPLRS)" }, - {DIS_TDL_TYPE_PLRS, "Position Location Reporting System (PLRS)" }, - {DIS_TDL_TYPE_SINCGARS, "SINCGARS" }, - {DIS_TDL_TYPE_HAVE_QUICK_I, "Have Quick I" }, - {DIS_TDL_TYPE_HAVE_QUICK_II, "Have Quick II" }, - {DIS_TDL_TYPE_HAVE_QUICK_IIA, "Have Quick IIA (Saturn)" }, - {DIS_TDL_TYPE_IFDL1, "Intra-Flight Data Link 1" }, - {DIS_TDL_TYPE_IFDL2, "Intra-Flight Data Link 2" }, - {DIS_TDL_TYPE_IDM, "Improved Data Modem (IDM)" }, - {DIS_TDL_TYPE_AFAPD, "Air Force Application Program Development (AFAPD)" }, - {DIS_TDL_TYPE_CEC, "Cooperative Engagement Capability (CEC)" }, - {DIS_TDL_TYPE_FAAD_FDL, "Forward Area Air Defense (FAAD) Data Link (FDL)" }, - {DIS_TDL_TYPE_GBDL, "Ground Based Data Link (GBDL)" }, - {DIS_TDL_TYPE_IVIS, "Intra Vehicular Info System (IVIS)" }, - {DIS_TDL_TYPE_MTS, "Marine Tactical System (MTS)" }, - {DIS_TDL_TYPE_TACFIRE, "Tactical Fire Direction System (TACFIRE)" }, - {DIS_TDL_TYPE_IBS, "Integrated Broadcast Service (IBS)" }, - {DIS_TDL_TYPE_ABIT, "Airborne Information Transfer (ABIT)" }, - {DIS_TDL_TYPE_ATARS, "Advanced Tactical Airborne Reconnaissance System (ATARS) Data Link" }, - {DIS_TDL_TYPE_BGPHES, "Battle Group Passive Horizon Extension System (BGPHES) Data Link" }, - {DIS_TDL_TYPE_CHBDL, "Common High Bandwidth Data Link (CHBDL)" }, - {DIS_TDL_TYPE_GUARDRAIL_IDL, "Guardrail Interoperable Data Link (IDL)" }, - {DIS_TDL_TYPE_GUARDRAIL_CSS1, "Guardrail Common Sensor System One (CSS1) Data Link" }, - {DIS_TDL_TYPE_GUARDRAIL_CSS2, "Guardrail Common Sensor System Two (CSS2) Data Link" }, - {DIS_TDL_TYPE_GUARDRAIL_CSS2_MRDL, "Guardrail CSS2 Multi-Role Data Link (MRDL)" }, - {DIS_TDL_TYPE_GUARDRAIL_CSS2_DASR, "Guardrail CSS2 Direct Air to Satellite Relay (DASR) Data Link" }, - {DIS_TDL_TYPE_LOS_TETHER, "Line of Sight (LOS) Data Link Implementation (LOS tether)" }, - {DIS_TDL_TYPE_LWCDL, "Lightweight CDL (LWCDL)" }, - {DIS_TDL_TYPE_L_52M, "L-52M (SR-71)" }, - {DIS_TDL_TYPE_RR_ROWL_DL, "Rivet Reach/Rivet Owl Data Link" }, - {DIS_TDL_TYPE_SENIOR_SPAN, "Senior Span" }, - {DIS_TDL_TYPE_SENIOR_SPUR, "Senior Spur" }, - {DIS_TDL_TYPE_SENIOR_STRETCH, "Senior Stretch." }, - {DIS_TDL_TYPE_SENIOR_YEAR_IDL, "Senior Year Interoperable Data Link (IDL)" }, - {DIS_TDL_TYPE_SPACE_CDL, "Space CDL" }, - {DIS_TDL_TYPE_TR_1_MIST_ADL, "TR-1 mode MIST Airborne Data Link" }, - {DIS_TDL_TYPE_KU_BAND_SATCOM, "Ku-band SATCOM Data Link Implementation (UAV)" }, - {DIS_TDL_TYPE_MECDL, "Mission Equipment Control Data link (MECDL)" }, - {DIS_TDL_TYPE_RADAR_DATA_TSDL, "Radar Data Transmitting Set Data Link" }, - {DIS_TDL_TYPE_SCDL, "Surveillance and Control Data Link (SCDL)" }, - {DIS_TDL_TYPE_TACTICAL_UAV_VIDEO, "Tactical UAV Video" }, - {DIS_TDL_TYPE_UHF_SATCOM, "UHF SATCOM Data Link Implementation (UAV)" }, - {DIS_TDL_TYPE_TCDL, "Tactical Common Data Link (TCDL)" }, - {DIS_TDL_TYPE_LLAPI, "Low Level Air Picture Interface (LLAPI)" }, - {DIS_TDL_TYPE_WEAPONS_DL, "Weapons Data Link (AGM-130)" }, - {DIS_TDL_TYPE_GC3, "GC3" }, - {DIS_TDL_TYPE_LINK16_STD, "Link 16 Standardized Format (JTIDS/MIDS/TADIL J)" }, - {DIS_TDL_TYPE_LINK16_EDR, "Link 16 Enhanced Data Rate (EDR JTIDS/MIDS/TADIL-J)" }, - {DIS_TDL_TYPE_JTIDS_NET_DATA_LOAD, "JTIDS/MIDS Net Data Load (TIMS/TOMS)" }, - {DIS_TDL_TYPE_LINK22, "Link 22" }, - {DIS_TDL_TYPE_AFIWC_IADS, "AFIWC IADS Communications Links" }, - { 0, NULL } -}; - -const value_string DIS_PDU_RadioCategory_Strings[] = -{ - {0, "Other" }, - {1, "Voice Transmission/Reception" }, - {2, "Data Link Transmission/Reception" }, - {3, "Voice and Data Link Transmission/Reception" }, - {4, "Instrumented Landing System (ILS) Glideslope Transmitter" }, - {5, "Instrumented Landing System (ILS) Localizer Transmitter" }, - {6, "Instrumented Landing System (ILS) Outer Marker Beacon" }, - {7, "Instrumented Landing System (ILS) Middle Marker Beacon" }, - {8, "Instrumented Landing System (ILS) Inner Marker Beacon" }, - {9, "Instrumented Landing System (ILS) Receiver (Platform Radio)" }, - {10, "Tactical Air Navigation (TACAN) Transmitter (Ground Fixed Equipment)" }, - {11, "Tactical Air Navigation (TACAN) Receiver (Moving Platform Equipment)" }, - {12, "Tactical Air Navigation (TACAN) Transmitter/Receiver (Moving Platform Equipment)" }, - {13, "Variable Omni-Ranging (VOR) Transmitter (Ground Fixed Equipment)" }, - {14, "Variable Omni-Ranging (VOR) with Distance Measuring Equipment (DME) Transmitter (Ground Fixed Equipment)" }, - {15, "Combined VOR/ILS Receiver (Moving Platform Equipment)" }, - {16, "Combined VOR & TACAN (VORTAC) Transmitter" }, - {17, "Non-Directional Beacon (NDB) Transmitter" }, - {18, "Non-Directional Beacon (NDB) Receiver" }, - {19, "Non-Directional Beacon (NDB) with Distance Measuring Equipment (DME) Transmitter" }, - {20, "Distance Measuring Equipment (DME)" }, - {0, NULL } -}; - -const value_string DIS_PDU_NomenclatureVersion_Strings[] = -{ - {0, "Other" }, - {1, "Joint Electronics Type Designation System (JETDS) Nomenclature (AN/ per Mil-STD-196)" }, - {2, "Manufacturer Designation" }, - {3, "National Designation" }, - {0, NULL } -}; - -const value_string DIS_PDU_Nomenclature_Strings[] = -{ - {0, "Other" }, - {1, "AN/ARN-118" }, - {2, "AN/ARN-139" }, - {3, "Generic Ground Fixed Transmitter" }, - {4, "Generic Ground Mobile Transmitter" }, - {0, NULL } -}; - -const value_string DIS_PDU_RadioTransmitState_Strings[] = -{ - {0, "Off" }, - {1, "On but not transmitting" }, - {2, "On and transmitting" }, - {0, NULL } -}; - -const value_string DIS_PDU_RadioInputSource_Strings[] = -{ - {0, "Other" }, - {1, "Pilot" }, - {2, "Copilot" }, - {3, "First Officer" }, - {4, "Driver" }, - {5, "Loader" }, - {6, "Gunner" }, - {7, "Commander" }, - {8, "Digital Data Device" }, - {9, "Intercom" }, - {0, NULL } -}; - -const value_string DIS_PDU_AntennaPatternType_Strings[] = -{ - {0, "Omni-directional" }, - {1, "Beam" }, - {2, "Spherical harmonic" }, - {0, NULL } -}; - -const value_string DIS_PDU_MajorModulation_Strings[] = -{ - {DIS_MAJOR_MOD_OTHER, "Other" }, - {DIS_MAJOR_MOD_AMPLITUDE, "Amplitude" }, - {DIS_MAJOR_MOD_AMPLITUDE_AND_ANGLE, "Amplitude and Angle" }, - {DIS_MAJOR_MOD_ANGLE, "Angle" }, - {DIS_MAJOR_MOD_COMBINATION, "Combination" }, - {DIS_MAJOR_MOD_PULSE, "Pulse" }, - {DIS_MAJOR_MOD_UNMODULATED, "Unmodulated" }, - {DIS_MAJOR_MOD_CPSM, "Carrier Phase Shift Modulation (CPSM)" }, - {0, NULL } -}; - -const range_string DIS_PDU_Link16_CVLL_Strings[] = { - { 0, 127, "Crypto Variable" }, - { 255, 255, "NO STATEMENT" }, - { 0, 0, NULL } -}; - -const value_string DIS_PDU_Link16_MessageType_Strings[] = -{ - { DIS_MESSAGE_TYPE_JTIDS_HEADER_MESSAGES, "JTIDS Header/Messages" }, - { DIS_MESSAGE_TYPE_RTT_A_B, "RTT A/B" }, - { DIS_MESSAGE_TYPE_RTT_REPLY, "RTT Reply" }, - { DIS_MESSAGE_TYPE_JTIDS_VOICE_CVSD, "JTIDS Voice CVSD" }, - { DIS_MESSAGE_TYPE_JTIDS_VOICE_LPC10, "JTIDS Voice LPC10" }, - { DIS_MESSAGE_TYPE_JTIDS_VOICE_LPC12, "JTIDS Voice LPC12" }, - { DIS_MESSAGE_TYPE_JTIDS_LET, "JTIDS LET" }, - { DIS_MESSAGE_TYPE_VMF, "VMF" }, - { 0, NULL } -}; - -const value_string DIS_PDU_EmissionFunction_Strings[] = -{ - {DIS_EMISSION_FUNCTION_OTHER, "Other" }, - {DIS_EMISSION_FUNCTION_MULTI_FUNCTION, "Multi-Function" }, - {DIS_EMISSION_FUNCTION_EARLY_WARNING_SURVEILLANCE, - "Early Warning/Surveillance" }, - {DIS_EMISSION_FUNCTION_HEIGHT_FINDING, "Height Finding" }, - {DIS_EMISSION_FUNCTION_FIRE_CONTROL, "Fire Control" }, - {DIS_EMISSION_FUNCTION_ACQUISITION_DETECTION, "Acquisition/Detection" }, - {DIS_EMISSION_FUNCTION_TRACKING, "Tracking" }, - {DIS_EMISSION_FUNCTION_GUIDANCE_ILLUMINATION, "Guidance/Illumination" }, - {DIS_EMISSION_FUNCTION_FIRING_POINT_LAUNCH_POINT_LOCATION, - "Firing point/launch point location" }, - {DIS_EMISSION_FUNCTION_RANGING, "Ranging" }, - {DIS_EMISSION_FUNCTION_RADAR_ALTIMETER, "Radar Altimeter" }, - {DIS_EMISSION_FUNCTION_IMAGING, "Imaging" }, - {DIS_EMISSION_FUNCTION_MOTION_DETECTION, "Motion Detection" }, - {DIS_EMISSION_FUNCTION_NAVIGATION, "Navigation" }, - {DIS_EMISSION_FUNCTION_WEATHER_METEROLOGICAL, "Weather / Meterological"}, - {DIS_EMISSION_FUNCTION_INSTRUMENTATION, "Instrumentation" }, - {DIS_EMISSION_FUNCTION_IDENTIFICATION_CLASSIFICATION_INCLUDING_IFF, - "Identification/Classification (including IFF)" }, - {DIS_EMISSION_FUNCTION_AAA_FIRE_CONTROL, - "AAA (Anti-Aircraft Artillery) Fire Control" }, - {DIS_EMISSION_FUNCTION_AIR_SEARCH_BOMB, "Air Search/Bomb" }, - {DIS_EMISSION_FUNCTION_AIR_INTERCEPT, "Air Intercept" }, - {DIS_EMISSION_FUNCTION_ALTIMETER, "Altimeter" }, - {DIS_EMISSION_FUNCTION_AIR_MAPPING, "Air Mapping" }, - {DIS_EMISSION_FUNCTION_AIR_TRAFFIC_CONTROL, "Air Traffic Control" }, - {DIS_EMISSION_FUNCTION_BEACON, "Beacon" }, - {DIS_EMISSION_FUNCTION_BATTLEFIELD_SURVEILLANCE, - "Battlefield Surveillance" }, - {DIS_EMISSION_FUNCTION_GROUND_CONTROL_APPROACH, - "Ground Control Approach" }, - {DIS_EMISSION_FUNCTION_GROUND_CONTROL_INTERCEPT, - "Ground Control Intercept" }, - {DIS_EMISSION_FUNCTION_COASTAL_SURVEILLANCE, "Coastal Surveillance" }, - {DIS_EMISSION_FUNCTION_DECOY_MIMIC, "Decoy/Mimic" }, - {DIS_EMISSION_FUNCTION_DATA_TRANSMISSION, "Data Transmission" }, - {DIS_EMISSION_FUNCTION_EARTH_SURVEILLANCE, "Earth Surveillance" }, - {DIS_EMISSION_FUNCTION_GUN_LAY_BEACON, "Gun Lay Beacon" }, - {DIS_EMISSION_FUNCTION_GROUND_MAPPING, "Ground Mapping" }, - {DIS_EMISSION_FUNCTION_HARBOR_SURVEILLANCE, "Harbor Surveillance" }, - {DIS_EMISSION_FUNCTION_ILS, - "ILS (Instrument Landing System)" }, - {DIS_EMISSION_FUNCTION_IONOSPHERIC_SOUND, "Ionospheric Sound" }, - {DIS_EMISSION_FUNCTION_INTERROGATOR, "Interrogator" }, - {DIS_EMISSION_FUNCTION_BARRAGE_JAMMING, "Barrage Jamming" }, - {DIS_EMISSION_FUNCTION_CLICK_JAMMING, "Click Jamming" }, - {DIS_EMISSION_FUNCTION_FREQUENCY_SWEPT_JAMMING, - "Frequency Swept Jamming" }, - {DIS_EMISSION_FUNCTION_JAMMING, "Jamming" }, - {DIS_EMISSION_FUNCTION_PULSED_JAMMING, "Pulsed Jamming" }, - {DIS_EMISSION_FUNCTION_REPEATER_JAMMING, "Repeater Jamming" }, - {DIS_EMISSION_FUNCTION_SPOT_NOISE_JAMMING, "Spot Noise Jamming" }, - {DIS_EMISSION_FUNCTION_MISSILE_ACQUISITION, "Missile Acquisition" }, - {DIS_EMISSION_FUNCTION_MISSILE_DOWNLINK, "Missile Downlink" }, - {DIS_EMISSION_FUNCTION_SPACE, "Space" }, - {DIS_EMISSION_FUNCTION_SURFACE_SEARCH, "Surface Search" }, - {DIS_EMISSION_FUNCTION_SHELL_TRACKING, "Shell Tracking" }, - {DIS_EMISSION_FUNCTION_TELEVISION, "Television" }, - {DIS_EMISSION_FUNCTION_UNKNOWN, "Unknown" }, - {DIS_EMISSION_FUNCTION_VIDEO_REMOTING, "Video Remoting" }, - {DIS_EMISSION_FUNCTION_EXPERIMENTAL_OR_TRAINING, - "Experimental or training" }, - {DIS_EMISSION_FUNCTION_MISSILE_GUIDANCE, "Missile Guidance" }, - {DIS_EMISSION_FUNCTION_MISSILE_HOMING, "Missile Homing" }, - {DIS_EMISSION_FUNCTION_MISSILE_TRACKING, "Missile Tracking" }, - {DIS_EMISSION_FUNCTION_JAMMING_NOISE, "Jamming, noise" }, - {DIS_EMISSION_FUNCTION_JAMMING_DECEPTION, "Jamming, deception" }, - {DIS_EMISSION_FUNCTION_NAVIGATION_DISTANCE_MEASURING_EQUIPMENT, - "Navigation/Distance Measuring Equipment" }, - {DIS_EMISSION_FUNCTION_TERRAIN_FOLLOWING, "Terrain Following" }, - {DIS_EMISSION_FUNCTION_WEATHER_AVOIDANCE, "Weather Avoidance" }, - {DIS_EMISSION_FUNCTION_PROXIMITY_FUSE, "Proximity Fuse" }, - {DIS_EMISSION_FUNCTION_RADIOSONDE, "Radiosonde" }, - {DIS_EMISSION_FUNCTION_SONOBUOY, "Sonobuoy" }, - {DIS_EMISSION_FUNCTION_BATHYTHERMAL_SENSOR, "Bathythermal Sensor" }, - {DIS_EMISSION_FUNCTION_TOWED_COUNTER_MEASURE, "Towed Counter Measure"}, - {DIS_EMISSION_FUNCTION_WEAPON_NON_LETHAL, "Weapon, non-lethal" }, - {DIS_EMISSION_FUNCTION_WEAPON_LETHAL, "Weapon, lethal" }, - {0, NULL } -}; - -const value_string DIS_PDU_BeamFunction_Strings[] = -{ - {DIS_BEAM_FUNCTION_OTHER, "Other" }, - {DIS_BEAM_FUNCTION_SEARCH, "Search" }, - {DIS_BEAM_FUNCTION_HEIGHT_FINDER, "Height finder" }, - {DIS_BEAM_FUNCTION_ACQUISITION, "Acquisition" }, - {DIS_BEAM_FUNCTION_TRACKING, "Tracking" }, - {DIS_BEAM_FUNCTION_ACQUISITION_TRACKING,"Acquisition and tracking" }, - {DIS_BEAM_FUNCTION_COMMAND_GUIDANCE, "Command guidance" }, - {DIS_BEAM_FUNCTION_ILLUMINATION, "Illumination" }, - {DIS_BEAM_FUNCTION_RANGE_ONLY_RADAR, "Range only radar" }, - {DIS_BEAM_FUNCTION_MISSILE_BEACON, "Missile beacon" }, - {DIS_BEAM_FUNCTION_MISSILE_FUZE, "Missile fuze" }, - {DIS_BEAM_FUNCTION_ACTIVE_RADAR_MISSILE_SEEKER, - "Active radar missile seeker" }, - {DIS_BEAM_FUNCTION_JAMMER, "Jammer" }, - {DIS_BEAM_FUNCTION_IFF, "IFF" }, - {DIS_BEAM_FUNCTION_NAVIGATIONAL_WEATHER,"Navigational/Weather" }, - {DIS_BEAM_FUNCTION_METEOROLOGICAL, "Meteorological" }, - {DIS_BEAM_FUNCTION_DATA_TRANSMISSION, "Data transmission" }, - {DIS_BEAM_FUNCTION_NAVIGATIONAL_DIRECTIONAL_BEACON, - "Navigational directional beacon" }, - {0, NULL } -}; - -const value_string DIS_PDU_DetailModulationAmplitude_Strings[] = -{ - {0, "Other" }, - {1, "AFSK (Audio Frequency Shift Keying)" }, - {2, "AM (Amplitude Modulation)" }, - {3, "CW (Continuous Wave Modulation)" }, - {4, "DSB (Double Sideband)" }, - {5, "ISB (Independent Sideband)" }, - {6, "LSB (Single Band Suppressed Carrier, Lower Sideband Mode)" }, - {7, "SSB-Full (Single Sideband Full Carrier)" }, - {8, "SSB-Reduc (Single Band Reduced Carrier)" }, - {9, "USB (Single Band Suppressed Carrier, Upper Sideband Mode)" }, - {10, "VSB (Vestigial Sideband)" }, - {0, NULL } -}; - -const value_string DIS_PDU_DetailModulationAmpAndAngle_Strings[] = -{ - {0, "Other" }, - {1, "Amplitude and Angle" }, - {0, NULL } -}; - -const value_string DIS_PDU_DetailModulationAngle_Strings[] = -{ - {0, "Other" }, - {1, "FM (Frequency Modulation)" }, - {2, "FSK (Frequency Shift Keying)" }, - {3, "PM (Phase Modulation)" }, - {0, NULL } -}; - -const value_string DIS_PDU_DetailModulationCombination_Strings[] = -{ - {0, "Other" }, - {1, "Amplitude-Angle-Pulse" }, - {0, NULL } -}; - -const value_string DIS_PDU_DetailModulationPulse_Strings[] = -{ - {0, "Other" }, - {1, "Pulse" }, - {2, "X Band TACAN Pulse" }, - {3, "Y Band TACAN Pulse" }, - {0, NULL } -}; - -const value_string DIS_PDU_DetailModulationUnmodulated_Strings[] = -{ - {0, "Other" }, - {1, "Continuous Wave emission of an unmodulated carrier" }, - {0, NULL } -}; - -const value_string DIS_PDU_DetailModulationCPSM_Strings[] = -{ - {0, "Other" }, - {0, NULL } -}; - -const value_string DIS_PDU_ModParamMsgStart_Strings[] = -{ - {0, "Not start of message" }, - {1, "Start of Message" }, - {0, NULL } -}; - -const value_string DIS_PDU_ModParamClrChannel_Strings[] = -{ - {0, "Not clear channel" }, - {1, "Clear channel" }, - {0, NULL } -}; - -const value_string DIS_PDU_TSAllocationFidelity_Strings[] = -{ - {0, "Time Slot Allocation Fidelity Level 0" }, - {1, "Time Slot Allocation Fidelity Level 1" }, - {2, "Time Slot Allocation Fidelity Level 2" }, - {3, "Time Slot Allocation Fidelity Level 3" }, - {4, "Time Slot Allocation Fidelity Level 4" }, - {0, NULL } -}; - -const value_string DIS_PDU_TerminalPrimaryMode_Strings[] = -{ - {1, "NTR" }, - {2, "JTIDS Unit Participant" }, - {0, NULL } -}; - -const value_string DIS_PDU_TerminalSecondaryMode_Strings[] = -{ - {0, "None" }, - {1, "Net Position Reference" }, - {2, "Primary Navigation Controller" }, - {3, "Secondary Navigation Controller" }, - {0, NULL } -}; - -/* http://discussions.sisostds.org/threadview.aspx?fid=18&threadid=53172 */ -const value_string DIS_PDU_ModParamSyncState_Strings[] = -{ - {2, "Coarse Synchronization" }, - {3, "Fine Synchronization" }, - {0, NULL } -}; - - -const value_string DIS_PDU_SystemModulation_Strings[] = -{ - {0, "Other" }, - {1, "Generic" }, - {2, "HQ" }, - {3, "HQII" }, - {4, "HQIIA" }, - {5, "SINCGARS" }, - {6, "CCTT SINCGARS" }, - {7, "EPLRS (Enhanced Position Location Reporting System)" }, - {8, "JTIDS/MIDS" }, - {0, NULL } -}; - -const value_string DIS_PDU_CryptoSystem_Strings[] = -{ - {0, "Other" }, - {1, "KY-28" }, - {2, "VINSON (KY-57, KY-58, SINCGARS ICOM)" }, - {3, "Narrow Spectrum Secure Voice (NSVE)" }, - {4, "Wide Spectrum Secure Voice (WSVE)" }, - {0, NULL } -}; - -const value_string DIS_PDU_AcknowledgeFlag_Strings[] = -{ - { DIS_ACKNOWLEDGE_FLAG_CREATE_ENTITY, "Create Entity" }, - { DIS_ACKNOWLEDGE_FLAG_REMOVE_ENTITY, "Remove Entity" }, - { DIS_ACKNOWLEDGE_FLAG_START_RESUME, "Start Resume" }, - { DIS_ACKNOWLEDGE_FLAG_STOP_FREEZE, "Stop Freeze" }, - { DIS_ACKNOWLEDGE_FLAG_TRANSFER_CONTROL_REQUEST, "Transfer Control Request" }, - { 0, NULL } -}; - -const value_string DIS_PDU_ActionId_Strings[] = -{ - { DIS_ACTION_ID_OTHER, "Other" }, - { DIS_ACTION_ID_LOCAL_STORAGE_OF_THE_REQUESTED_INFORMATION, "LocalStorageOfTheRequestedInformation" }, - { DIS_ACTION_ID_INFORM_SM_OF_EVENT_RAN_OUT_OF_AMMUNITION, "InformSMofEventRanOutOfAmmunition" }, - { DIS_ACTION_ID_INFORM_SM_OF_EVENT_KILLED_IN_ACTION, "InformSMofEventKilledInAction" }, - { DIS_ACTION_ID_INFORM_SM_OF_EVENT_DAMAGE, "InformSMofEventDamage" }, - { DIS_ACTION_ID_INFORM_SM_OF_EVENT_MOBILITY_DISABLED, "InformSMofEventMobilityDisabled" }, - { DIS_ACTION_ID_INFORM_SM_OF_EVENT_FIRE_DISABLED, "InformSMofEventFireDisabled" }, - { DIS_ACTION_ID_INFORM_SM_OF_EVENT_RAN_OUT_OF_FUEL, "InformSMofEventRanOutOfFuel" }, - { DIS_ACTION_ID_RECALL_CHECKPOINT_DATA, "RecallCheckpointData" }, - { DIS_ACTION_ID_RECALL_INITIAL_PARAMETERS, "RecallInitialParameters" }, - { DIS_ACTION_ID_INITIATE_TETHER_LEAD, "InitiateTetherLead" }, - { DIS_ACTION_ID_INITIATE_TETHER_FOLLOW, "InitiateTetherFollow" }, - { DIS_ACTION_ID_UNTETHER, "Untether" }, - { DIS_ACTION_ID_INITIATE_SERVICE_STATION_RESUPPLY, "InitiateServiceStationResupply" }, - { DIS_ACTION_ID_INITIATE_TAILGATE_RESUPPLY, "InitiateTailgateResupply" }, - { DIS_ACTION_ID_INITIATE_HITCH_LEAD, "InitiateHitchLead" }, - { DIS_ACTION_ID_INITIATE_HITCH_FOLLOW, "InitiateHitchFollow" }, - { DIS_ACTION_ID_UNHITCH, "Unhitch" }, - { DIS_ACTION_ID_MOUNT, "Mount" }, - { DIS_ACTION_ID_DISMOUNT, "Dismount" }, - { DIS_ACTION_ID_START_DRC, "StartDRC" }, - { DIS_ACTION_ID_STOP_DRC, "StopDRC" }, - { DIS_ACTION_ID_DATA_QUERY, "DataQuery" }, - { DIS_ACTION_ID_STATUS_REQUEST, "StatusRequest" }, - { DIS_ACTION_ID_SEND_OBJECT_STATE_DATA, "SendObjectStateData" }, - { DIS_ACTION_ID_RECONSTITUTE, "Reconstitute" }, - { DIS_ACTION_ID_LOCK_SITE_CONFIGURATION, "LockSiteConfiguration" }, - { DIS_ACTION_ID_UNLOCK_SITE_CONFIGURATION, "UnlockSiteConfiguration" }, - { DIS_ACTION_ID_UPDATE_SITE_CONFIGURATION, "UpdateSiteConfiguration" }, - { DIS_ACTION_ID_QUERY_SITE_CONFIGURATION, "QuerySiteConfiguration" }, - { DIS_ACTION_ID_TETHERING_INFORMATION, "TetheringInformation" }, - { DIS_ACTION_ID_MOUNT_INTENT, "MountIntent" }, - { DIS_ACTION_ID_ACCEPT_SUBSCRIPTION, "AcceptSubscription" }, - { DIS_ACTION_ID_UNSUBSCRIBE, "Unsubscribe" }, - { DIS_ACTION_ID_TELEPORT_ENTITY, "TeleportEntity" }, - { DIS_ACTION_ID_CHANGE_AGGREGATE_STATE, "ChangeAggregateState" }, - { DIS_ACTION_ID_REQUEST_START_PDU, "RequestStartPdu" }, - { DIS_ACTION_ID_WAKEUP_GET_READY_FOR_INITIALIZATION, "WakeupGetReadyForInitialization" }, - { DIS_ACTION_ID_INITIALIZE_INTERNAL_PARAMETERS, "InitializeInternalParameters" }, - { DIS_ACTION_ID_SEND_PLAN_DATA, "SendPlanData" }, - { DIS_ACTION_ID_SYNCHRONIZE_INTERNAL_CLOCKS, "SynchronizeInternalClocks" }, - { DIS_ACTION_ID_RUN, "Run" }, - { DIS_ACTION_ID_SAVE_INTERNAL_PARAMETERS, "SaveInternalParameters" }, - { DIS_ACTION_ID_SIMULATE_MALFUNCTION, "SimulateMalfunction" }, - { DIS_ACTION_ID_JOIN_EXERCISE, "JoinExercise" }, - { DIS_ACTION_ID_RESIGN_EXERCISE, "ResignExercise" }, - { DIS_ACTION_ID_TIME_ADVANCE, "TimeAdvance" }, - { DIS_ACTION_ID_COMMAND_FROM_SIMULATOR, "CommandFromSimulator" }, - { DIS_ACTION_ID_SLING_LOAD_CAPABILITY_REQUEST, "SlingLoadCapabilityRequest" }, - { DIS_ACTION_ID_SLING_ATTACH_REQUEST, "SlingAttachRequest" }, - { DIS_ACTION_ID_SLING_RELEASE_REQUEST, "SlingReleaseRequest" }, - { DIS_ACTION_ID_AIRMOUNT_MOUNT_REQUEST, "AirmountMountRequest" }, - { DIS_ACTION_ID_AIRMOUNT_DISMOUNT_REQUEST, "AirmountDismountRequest" }, - { DIS_ACTION_ID_AIRMOUNT_INFO_REQUEST, "AirmountInfoRequest" }, - { 0, NULL } -}; - -const value_string DIS_PDU_ApplicationGeneralStatus_Strings[] = -{ - { DIS_APPLICATION_GENERAL_STATUS_UNKNOWN, "Unknown" }, - { DIS_APPLICATION_GENERAL_STATUS_FUNCTIONAL, "Functional" }, - { DIS_APPLICATION_GENERAL_STATUS_DEGRADED_BUT_FUNCTIONAL, "Degraded But Functional" }, - { DIS_APPLICATION_GENERAL_STATUS_NOT_FUNCTIONAL, "Not Functional" }, - { 0, NULL } -}; - -const value_string DIS_PDU_ApplicationStatusType_Strings[] = -{ - { DIS_APPLICATION_STATUS_TYPE_NOT_SPECIFIED, "Not Specified" }, - { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_USER, "Cpu Usage User" }, - { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_SYSTEM, "Cpu Usage System" }, - { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_IO, "Cpu Usage Io" }, - { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_IDLE, "Cpu Usage Idle" }, - { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_STEAL, "Cpu Usage Steal" }, - { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_NICE, "Cpu Usage Nice" }, - { DIS_APPLICATION_STATUS_TYPE_MEMORY_FREE, "Memory Free" }, - { DIS_APPLICATION_STATUS_TYPE_MEMORY_USED, "Memory Used" }, - { DIS_APPLICATION_STATUS_TYPE_SWAP_FREE, "Swap Free" }, - { DIS_APPLICATION_STATUS_TYPE_SWAP_USED, "Swap Used" }, - { DIS_APPLICATION_STATUS_TYPE_SWAP_CACHED, "Swap Cached" }, - { DIS_APPLICATION_STATUS_TYPE_TRANSMITTED_PACKETS_SEC, "Transmitted Packets Sec" }, - { DIS_APPLICATION_STATUS_TYPE_TRANSMITTED_BYTES_SEC, "Transmitted Bytes Sec" }, - { DIS_APPLICATION_STATUS_TYPE_RECEIVED_PACKETS_SEC, "Received Packets Sec" }, - { DIS_APPLICATION_STATUS_TYPE_RECEIVED_BYTES_SEC, "Received Bytes Sec" }, - { DIS_APPLICATION_STATUS_TYPE_NICE_LEVEL, "Nice Level" }, - { 0, NULL } -}; - -const value_string DIS_PDU_ApplicationType_Strings[] = -{ - { DIS_APPLICATION_TYPE_OTHER, "Other" }, - { DIS_APPLICATION_TYPE_RESOURCE_MANAGER, "Resource Manager" }, - { DIS_APPLICATION_TYPE_SIMULATION_MANAGER, "Simulation Manager" }, - { DIS_APPLICATION_TYPE_GATEWAY, "Gateway" }, - { DIS_APPLICATION_TYPE_STEALTH, "Stealth" }, - { DIS_APPLICATION_TYPE_TACTICAL_INTERNET_INTERFACE, "Tactical Internet Interface" }, - { 0, NULL } -}; - -const value_string DIS_PDU_DetonationResult_Strings[] = -{ - { DIS_DETONATION_RESULT_OTHER, "Other" }, - { DIS_DETONATION_RESULT_ENTITY_IMPACT, "Entity impact" }, - { DIS_DETONATION_RESULT_ENTITY_PROXIMATE_DETONATION, "Entity proximate detonation" }, - { DIS_DETONATION_RESULT_GROUND_IMPACT, "Ground impact" }, - { DIS_DETONATION_RESULT_GROUND_PROXIMATE_DETONATION, "Ground proximate detonation" }, - { DIS_DETONATION_RESULT_DETONATION, "Detonation" }, - { DIS_DETONATION_RESULT_NONE_DUD, "None or no detonation (dud)" }, - { DIS_DETONATION_RESULT_HE_HIT_SMALL, "HE hit, small" }, - { DIS_DETONATION_RESULT_HE_HIT_MEDIUM, "HE hit, medium" }, - { DIS_DETONATION_RESULT_HE_HIT_LARGE, "HE hit, large" }, - { DIS_DETONATION_RESULT_ARMOR_PIERCING_HIT, "Armor-piercing hit" }, - { DIS_DETONATION_RESULT_DIRT_BLAST_SMALL, "Dirt blast, small" }, - { DIS_DETONATION_RESULT_DIRT_BLAST_MEDIUM, "Dirt blast, medium" }, - { DIS_DETONATION_RESULT_DIRT_BLAST_LARGE, "Dirt blast, large" }, - { DIS_DETONATION_RESULT_WATER_BLAST_SMALL, "Water blast, small" }, - { DIS_DETONATION_RESULT_WATER_BLAST_MEDIUM, "Water blast, medium" }, - { DIS_DETONATION_RESULT_WATER_BLAST_LARGE, "Water blast, large" }, - { DIS_DETONATION_RESULT_AIR_HIT, "Air hit" }, - { DIS_DETONATION_RESULT_BUILDING_HIT_SMALL, "Building hit, small" }, - { DIS_DETONATION_RESULT_BUILDING_HIT_MEDIUM, "Building hit, medium" }, - { DIS_DETONATION_RESULT_BUILDING_HIT_LARGE, "Building hit, large" }, - { DIS_DETONATION_RESULT_MINE_CLEARING_LINE_CHARGE, "Mine-clearing line charge" }, - { DIS_DETONATION_RESULT_ENVIRONMENT_OBJECT_IMPACT, "Environment object impact" }, - { DIS_DETONATION_RESULT_ENVIRONMENT_OBJECT_PROXIMATE_DETONATION, "Environment object proximate detonation" }, - { DIS_DETONATION_RESULT_WATER_IMPACT, "Water impact" }, - { DIS_DETONATION_RESULT_AIR_BURST, "Air burst" }, - { DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_1, "Kill with fragment type 1" }, - { DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_2, "Kill with fragment type 2" }, - { DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_3, "Kill with fragment type 3" }, - { DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_1_AFTER_FOF, "Kill with fragment type 1 after fly-out failure" }, - { DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_2_AFTER_FOF, "Kill with fragment type 2 after fly-out failure" }, - { DIS_DETONATION_RESULT_MISS_DUE_TO_FOF, "Miss due to fly-out failure" }, - { DIS_DETONATION_RESULT_MISS_DUE_TO_ENDGAME_FAILURE, "Miss due to end-game failure" }, - { DIS_DETONATION_RESULT_MISS_DUE_TO_FOF_AND_ENDGAME_FAILURE, "Miss due to fly-out and end-game failure" }, - { 0, NULL } -}; - -const value_string DIS_PDU_ControlId_Strings[] = -{ - { DIS_CONTROL_ID_OTHER, "Other" }, - { DIS_CONTROL_ID_SHUTDOWN, "Shutdown" }, - { DIS_CONTROL_ID_DATA_QUERY, "Data Query" }, - { DIS_CONTROL_ID_DATA, "Data" }, - { DIS_CONTROL_ID_SET_DATA, "Set Data" }, - { DIS_CONTROL_ID_ADD_DATA, "Add Data" }, - { DIS_CONTROL_ID_REMOVE_DATA, "Remove Data" }, - { DIS_CONTROL_ID_STATUS, "Status" }, - { 0, NULL } -}; - -const value_string DIS_PDU_FrozenBehavior_Strings[] = -{ - { DIS_FROZEN_BEHAVIOR_RUN_INTERNAL_SIMULATION_CLOCK, "Run Internal Simulation Clock" }, - { DIS_FROZEN_BEHAVIOR_TRANSMIT_PDUS, "Transmit PDUs" }, - { DIS_FROZEN_BEHAVIOR_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES, "Update Sim Models Of Other Entities" }, - { DIS_FROZEN_BEHAVIOR_CONTINUE_TRANSMIT_PDU, "Continue Transmit PDU" }, - { DIS_FROZEN_BEHAVIOR_CEASE_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES, "Cease Update Sim Models Of Other Entities" }, - { DIS_FROZEN_BEHAVIOR_CONTINUE_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES, "Continue Update Sim Models Of Other Entities" }, - { 0, NULL } -}; - -const value_string DIS_PDU_ParameterTypeDesignator_Strings[] = -{ - { DIS_PARAM_TYPE_DESIG_ARTICULATED_PART, "Articulated Part" }, - { DIS_PARAM_TYPE_DESIG_ATTACHED_PART, "Attached Part" }, - { DIS_PARAM_TYPE_DESIG_SEPARATION, "Separation" }, - { DIS_PARAM_TYPE_DESIG_ENTITY_TYPE, "Entity Type" }, - { DIS_PARAM_TYPE_DESIG_ENTITY_ASSOCIATION, "Entity Association" }, - { DIS_PARAM_TYPE_DESIG_ANTENNA_LOCATION, "Antenna Location" }, - { DIS_PARAM_TYPE_DESIG_EXTENDED_PLATFORM_APPEARANCE, "Extended Platform Appearance" }, - { DIS_PARAM_TYPE_DESIG_EXTENDED_LIFEFORM_APPEARANCE, "Extended Lifeform Appearance" }, - { DIS_PARAM_TYPE_DESIG_HIGH_FIDELITY_LIGHTS, "High Fidelity Lights" }, - { DIS_PARAM_TYPE_DESIG_CHEVRON_MARKING, "Chevron Marking" }, - { DIS_PARAM_TYPE_DESIG_HIGH_FIDELITY_THERMAL_SENSOR, "High Fidelity Thermal Sensor" }, - { DIS_PARAM_TYPE_DESIG_ENTITY_OFFSET, "Entity Offset" }, - { DIS_PARAM_TYPE_DESIG_DEAD_RECKONING, "Dead Reckoning" }, - { DIS_PARAM_TYPE_DESIG_ARMY_TASK_ORGANIZATION, "Army Task Organization" }, - { DIS_PARAM_TYPE_DESIG_HEAD_GAZING_WEAPON_AIMING, "Head Gazing Weapon Aiming" }, - { DIS_PARAM_TYPE_DESIG_LIFEFORM_ACTION_SEQUENCE, "Lifeform Action Sequence" }, - { DIS_PARAM_TYPE_DESIG_LEGACY_EXTENDED_LIFEFORM_APPEARANCE, "Legacy Extended Lifeform Appearance" }, - { 0, NULL } -}; - -const value_string DIS_PDU_Reason_Strings[] = -{ - { DIS_REASON_OTHER, "Other" }, - { DIS_REASON_RECESS, "Recess" }, - { DIS_REASON_TERMINATION, "Termination" }, - { DIS_REASON_SYSTEM_FAILURE, "System Failure" }, - { DIS_REASON_SECURITY_VIOLATION, "Security Violation" }, - { DIS_REASON_ENTITY_RECONSTITUTION, "Entity Reconstitution" }, - { DIS_REASON_STOP_FOR_RESET, "Stop For Reset" }, - { DIS_REASON_STOP_FOR_RESTART, "Stop For Restart" }, - { DIS_REASON_ABORT_TRAINING_RETURN_TO_TACTICAL_OPERATIONS, "Abort Training Return To Tactical Operations" }, - { 0, NULL } -}; - -const value_string DIS_PDU_RequestStatus_Strings[] = -{ - { DIS_REQUEST_STATUS_OTHER, "Other" }, - { DIS_REQUEST_STATUS_PENDING, "Pending" }, - { DIS_REQUEST_STATUS_EXECUTING, "Executing" }, - { DIS_REQUEST_STATUS_PARTIALLY_COMPLETE, "Partially Complete" }, - { DIS_REQUEST_STATUS_COMPLETE, "Complete" }, - { DIS_REQUEST_STATUS_REQUEST_REJECTED, "Request Rejected" }, - { DIS_REQUEST_STATUS_RETRANSMIT_REQUEST_NOW, "Retransmit Request Now" }, - { DIS_REQUEST_STATUS_RETRANSMIT_REQUEST_LATER, "Retransmit Request Later" }, - { DIS_REQUEST_STATUS_INVALID_TIME_PARAMETERS, "Invalid Time Parameters" }, - { DIS_REQUEST_STATUS_SIMULATION_TIME_EXCEEDED, "Simulation Time Exceeded" }, - { DIS_REQUEST_STATUS_REQUEST_DONE, "Request Done" }, - { DIS_REQUEST_STATUS_TACCSF_LOS_REPLY_TYPE_1, "TACCSF LOS Reply Type 1" }, - { DIS_REQUEST_STATUS_TACCSF_LOS_REPLY_TYPE_2, "TACCSF LOS Reply Type 2" }, - { DIS_REQUEST_STATUS_JOIN_EXERCISE_REQUEST_REJECTED, "Join Exercise Request Rejected" }, - { 0, NULL } -}; - -const value_string DIS_PDU_RequiredReliabilityService_Strings[] = -{ - { DIS_REQUIRED_RELIABILITY_SERVICE_ACKNOWLEDGED, "Acknowledged" }, - { DIS_REQUIRED_RELIABILITY_SERVICE_UNACKNOWLEDGED, "Unacknowledged" }, - { 0, NULL } -}; - -const value_string DIS_PDU_DisResponseFlag_Strings[] = -{ - { DIS_RESPONSE_FLAG_OTHER, "Other" }, - { DIS_RESPONSE_FLAG_ABLE_TO_COMPLY, "Able To Comply" }, - { DIS_RESPONSE_FLAG_UNABLE_TO_COMPLY, "Unable To Comply" }, - { DIS_RESPONSE_FLAG_PENDING_OPERATOR_ACTION, "Pending Operator Action" }, - { 0, NULL } -}; - -const value_string DIS_PDU_PersistentObjectType_Strings[] = -{ - { DIS_PERSISTENT_OBJECT_TYPE_OTHER, "Other" }, - { DIS_PERSISTENT_OBJECT_TYPE_SIMULATOR_PRESENT, "Simulator Present" }, - { DIS_PERSISTENT_OBJECT_TYPE_DESCRIBE_OBJECT, "Describe Object" }, - { DIS_PERSISTENT_OBJECT_TYPE_OBJECTS_PRESENT, "Objects Present" }, - { DIS_PERSISTENT_OBJECT_TYPE_OBJECT_REQUEST, "Object Request" }, - { DIS_PERSISTENT_OBJECT_TYPE_DELETE_OBJECTS, "Delete Objects" }, - { DIS_PERSISTENT_OBJECT_TYPE_SET_WORLD_STATE, "Set World State" }, - { DIS_PERSISTENT_OBJECT_TYPE_NOMINATION, "Nomination" }, - { 0, NULL } -}; - -const value_string DIS_PDU_PO_ObjectClass_Strings[] = -{ - { DIS_PO_OBJECT_CLASS_OTHER, "Other" }, - { DIS_PO_OBJECT_CLASS_WORLD_STATE, "World State" }, - { DIS_PO_OBJECT_CLASS_OVERLAY, "Overlay" }, - { DIS_PO_OBJECT_CLASS_POINT, "Point" }, - { DIS_PO_OBJECT_CLASS_LINE, "Line" }, - { DIS_PO_OBJECT_CLASS_SECTOR, "Sector" }, - { DIS_PO_OBJECT_CLASS_TEXT, "Text" }, - { DIS_PO_OBJECT_CLASS_UNIT, "Unit" }, - { DIS_PO_OBJECT_CLASS_UNIT_DEFINITION, "Unit Definition" }, - { DIS_PO_OBJECT_CLASS_STEALTH_CONTROLLER, "Stealth Controller" }, - { DIS_PO_OBJECT_CLASS_H_HOUR, "H Hour" }, - { DIS_PO_OBJECT_CLASS_VARIABLE, "Variable" }, - { DIS_PO_OBJECT_CLASS_TASK, "Task" }, - { DIS_PO_OBJECT_CLASS_TASK_STATE, "Task State" }, - { DIS_PO_OBJECT_CLASS_TASK_FRAME, "Task Frame" }, - { DIS_PO_OBJECT_CLASS_TASK_AUTHORIZATION, "Task Authorization" }, - { DIS_PO_OBJECT_CLASS_PARAMETRIC_INPUT, "Parametric Input" }, - { DIS_PO_OBJECT_CLASS_PARAMETRIC_INPUT_HOLDER, "Parametric Input Holder" }, - { DIS_PO_OBJECT_CLASS_EXERCISE_INITIALIZER, "Exercise Initializer" }, - { DIS_PO_OBJECT_CLASS_FIRE_PARAMETERS, "Fire Parameters" }, - { DIS_PO_OBJECT_CLASS_MINEFIELD, "Minefield" }, - { DIS_PO_OBJECT_CLASS_SIMULATION_REQUEST, "Simulation Request" }, - { DIS_PO_OBJECT_CLASS_NET_SUBSCRIPTION, "Net Subscription" }, - { DIS_PO_OBJECT_CLASS_LINK, "Link" }, - { DIS_PO_OBJECT_CLASS_MINEFIELD_PARENT, "Minefield Parent" }, - { DIS_PO_OBJECT_CLASS_CHEMICAL, "Chemical" }, - { DIS_PO_OBJECT_CLASS_AlertUser, "Alert User" }, - { DIS_PO_OBJECT_CLASS_HAND_OFF, "Hand Off" }, - { DIS_PO_OBJECT_CLASS_CIRCUIT, "Circuit" }, - { DIS_PO_OBJECT_CLASS_CARGO, "Cargo" }, - { DIS_PO_OBJECT_CLASS_MCM_ROUTE, "Mcm Route" }, - { DIS_PO_OBJECT_CLASS_MESSAGE, "Message" }, - { 0, NULL } -}; - -const value_string DIS_PDU_EmitterName_Strings[] = -{ - { DIS_EMITTER_NAME_10, "1RL138" }, - { DIS_EMITTER_NAME_45, "1226 DECCA MIL" }, - { DIS_EMITTER_NAME_80, "9GR400" }, - { DIS_EMITTER_NAME_90, "9GR600" }, - { DIS_EMITTER_NAME_135, "9LV 200 TA" }, - { DIS_EMITTER_NAME_180, "9LV 200 TV" }, - { DIS_EMITTER_NAME_225, "A310Z" }, - { DIS_EMITTER_NAME_270, "A325A" }, - { DIS_EMITTER_NAME_315, "A346Z" }, - { DIS_EMITTER_NAME_360, "A353B" }, - { DIS_EMITTER_NAME_405, "A372A" }, - { DIS_EMITTER_NAME_450, "A372B" }, - { DIS_EMITTER_NAME_495, "A372C" }, - { DIS_EMITTER_NAME_540, "A377A" }, - { DIS_EMITTER_NAME_585, "A377B" }, - { DIS_EMITTER_NAME_630, "A380Z" }, - { DIS_EMITTER_NAME_675, "A381Z" }, - { DIS_EMITTER_NAME_720, "A398Z" }, - { DIS_EMITTER_NAME_765, "A403Z" }, - { DIS_EMITTER_NAME_810, "A409A" }, - { DIS_EMITTER_NAME_855, "A418A" }, - { DIS_EMITTER_NAME_900, "A419Z" }, - { DIS_EMITTER_NAME_945, "A429Z" }, - { DIS_EMITTER_NAME_990, "A432Z" }, - { DIS_EMITTER_NAME_1035, "A434Z" }, - { DIS_EMITTER_NAME_1080, "A401A" }, - { DIS_EMITTER_NAME_1095, "AA-12 Seeker" }, - { DIS_EMITTER_NAME_1100, "Agave" }, - { DIS_EMITTER_NAME_1125, "AGRION 15" }, - { DIS_EMITTER_NAME_1170, "AI MK 23" }, - { DIS_EMITTER_NAME_1215, "AIDA II" }, - { DIS_EMITTER_NAME_1260, "Albatros MK2" }, - { DIS_EMITTER_NAME_1280, "1L13-3 (55G6), Box Spring" }, - { DIS_EMITTER_NAME_1282, "1L13-3 (55G6), Box Spring B" }, - { DIS_EMITTER_NAME_1305, "ANA SPS 502" }, - { DIS_EMITTER_NAME_1350, "ANRITSU Electric AR-30A" }, - { DIS_EMITTER_NAME_1395, "Antilope V" }, - { DIS_EMITTER_NAME_1400, "AN/ALE-50" }, - { DIS_EMITTER_NAME_1440, "AN/ALQ 99" }, - { DIS_EMITTER_NAME_1485, "AN/ALQ-100" }, - { DIS_EMITTER_NAME_1530, "AN/ALQ-101" }, - { DIS_EMITTER_NAME_1575, "AN/ALQ-119" }, - { DIS_EMITTER_NAME_1585, "AN/ALQ-122" }, - { DIS_EMITTER_NAME_1620, "AN/ALQ-126A" }, - { DIS_EMITTER_NAME_1626, "AN/ALQ-131" }, - { DIS_EMITTER_NAME_1628, "AN/ALQ-135C/D" }, - { DIS_EMITTER_NAME_1630, "AN/ALQ-144A(V)3" }, - { DIS_EMITTER_NAME_1632, "AN/ALQ-153" }, - { DIS_EMITTER_NAME_1634, "AN/ALQ-155" }, - { DIS_EMITTER_NAME_1636, "AN/ALQ-161/A" }, - { DIS_EMITTER_NAME_1638, "AN/ALQ-162" }, - { DIS_EMITTER_NAME_1640, "AN/ALQ-165" }, - { DIS_EMITTER_NAME_1642, "AN/ALQ-167" }, - { DIS_EMITTER_NAME_1644, "AN/ALQ-172(V)2" }, - { DIS_EMITTER_NAME_1646, "AN/ALQ-176" }, - { DIS_EMITTER_NAME_1648, "AN/ALQ-184" }, - { DIS_EMITTER_NAME_1650, "AN/ALQ-188" }, - { DIS_EMITTER_NAME_1652, "AN/ALR-56" }, - { DIS_EMITTER_NAME_1654, "AN/ALR-69" }, - { DIS_EMITTER_NAME_1656, "AN/ALT-16A" }, - { DIS_EMITTER_NAME_1658, "AN/ALT-28" }, - { DIS_EMITTER_NAME_1660, "AN/ALT-32A" }, - { DIS_EMITTER_NAME_1665, "AN/APD 10" }, - { DIS_EMITTER_NAME_1710, "AN/APG 53" }, - { DIS_EMITTER_NAME_1755, "AN/APG 59" }, - { DIS_EMITTER_NAME_1800, "AN/APG-63" }, - { DIS_EMITTER_NAME_1805, "AN/APG-63(V)1" }, - { DIS_EMITTER_NAME_1807, "AN/APG-63(V)2" }, - { DIS_EMITTER_NAME_1809, "AN/APG-63(V)3" }, - { DIS_EMITTER_NAME_1845, "AN/APG 65" }, - { DIS_EMITTER_NAME_1870, "AN/APG-66" }, - { DIS_EMITTER_NAME_1890, "AN/APG 68" }, - { DIS_EMITTER_NAME_1935, "AN/APG 70" }, - { DIS_EMITTER_NAME_1945, "AN/APG-73" }, - { DIS_EMITTER_NAME_1960, "AN/APG-77" }, - { DIS_EMITTER_NAME_1970, "AN/APG-78" }, - { DIS_EMITTER_NAME_1980, "AN/APG-502" }, - { DIS_EMITTER_NAME_2025, "AN/APN-1" }, - { DIS_EMITTER_NAME_2070, "AN/APN-22" }, - { DIS_EMITTER_NAME_2115, "AN/APN 59" }, - { DIS_EMITTER_NAME_2160, "AN/APN-69" }, - { DIS_EMITTER_NAME_2205, "AN/APN-81" }, - { DIS_EMITTER_NAME_2250, "AN/APN-117" }, - { DIS_EMITTER_NAME_2295, "AN/APN-118" }, - { DIS_EMITTER_NAME_2340, "AN/APN-130" }, - { DIS_EMITTER_NAME_2385, "AN/APN-131" }, - { DIS_EMITTER_NAME_2430, "AN/APN-133" }, - { DIS_EMITTER_NAME_2475, "AN/APN-134" }, - { DIS_EMITTER_NAME_2520, "AN/APN-147" }, - { DIS_EMITTER_NAME_2565, "AN/APN-150" }, - { DIS_EMITTER_NAME_2610, "AN/APN-153" }, - { DIS_EMITTER_NAME_2655, "AN/APN 154" }, - { DIS_EMITTER_NAME_2700, "AN/APN-155" }, - { DIS_EMITTER_NAME_2745, "AN/APN-159" }, - { DIS_EMITTER_NAME_2790, "AN/APN-182" }, - { DIS_EMITTER_NAME_2835, "AN/APN-187" }, - { DIS_EMITTER_NAME_2880, "AN/APN-190" }, - { DIS_EMITTER_NAME_2925, "AN/APN 194" }, - { DIS_EMITTER_NAME_2970, "AN/APN-195" }, - { DIS_EMITTER_NAME_3015, "AN/APN-198" }, - { DIS_EMITTER_NAME_3060, "AN/APN-200" }, - { DIS_EMITTER_NAME_3105, "AN/APN 202" }, - { DIS_EMITTER_NAME_3150, "AN/APN-217" }, - { DIS_EMITTER_NAME_3152, "AN/APN-218" }, - { DIS_EMITTER_NAME_3160, "AN/APN-238" }, - { DIS_EMITTER_NAME_3162, "AN/APN-239" }, - { DIS_EMITTER_NAME_3164, "AN/APN-241" }, - { DIS_EMITTER_NAME_3166, "AN/APN-242" }, - { DIS_EMITTER_NAME_3195, "AN/APN-506" }, - { DIS_EMITTER_NAME_3240, "AN/APQ-72" }, - { DIS_EMITTER_NAME_3285, "AN/APQ-99" }, - { DIS_EMITTER_NAME_3330, "AN/APQ 100" }, - { DIS_EMITTER_NAME_3375, "AN/APQ-102" }, - { DIS_EMITTER_NAME_3420, "AN/APQ-109" }, - { DIS_EMITTER_NAME_3465, "AN/APQ 113" }, - { DIS_EMITTER_NAME_3510, "AN/APQ 120" }, - { DIS_EMITTER_NAME_3555, "AN/APQ 126" }, - { DIS_EMITTER_NAME_3600, "AN/APQ-128" }, - { DIS_EMITTER_NAME_3645, "AN/APQ-129" }, - { DIS_EMITTER_NAME_3690, "AN/APQ 148" }, - { DIS_EMITTER_NAME_3735, "AN/APQ-153" }, - { DIS_EMITTER_NAME_3780, "AN/APQ 159" }, - { DIS_EMITTER_NAME_3785, "AN/APQ-164" }, - { DIS_EMITTER_NAME_3788, "AN/APQ-166" }, - { DIS_EMITTER_NAME_3795, "AN/APQ-181" }, - { DIS_EMITTER_NAME_3820, "AN/APS-31" }, - { DIS_EMITTER_NAME_3825, "AN/APS-42" }, - { DIS_EMITTER_NAME_3870, "AN/APS 80" }, - { DIS_EMITTER_NAME_3915, "AN/APS-88" }, - { DIS_EMITTER_NAME_3960, "AN/APS 115" }, - { DIS_EMITTER_NAME_4005, "AN/APS 116" }, - { DIS_EMITTER_NAME_4050, "AN/APS-120" }, - { DIS_EMITTER_NAME_4095, "AN/APS 121" }, - { DIS_EMITTER_NAME_4140, "AN/APS 124" }, - { DIS_EMITTER_NAME_4185, "AN/APS 125" }, - { DIS_EMITTER_NAME_4230, "AN/APS-128" }, - { DIS_EMITTER_NAME_4275, "AN/APS 130" }, - { DIS_EMITTER_NAME_4320, "AN/APS 133" }, - { DIS_EMITTER_NAME_4365, "AN/APS-134" }, - { DIS_EMITTER_NAME_4410, "AN/APS 137" }, - { DIS_EMITTER_NAME_4455, "AN/APS-138" }, - { DIS_EMITTER_NAME_4465, "AN/APS-143 (V) 1" }, - { DIS_EMITTER_NAME_4500, "AN/APW 22" }, - { DIS_EMITTER_NAME_4545, "AN/APW 23" }, - { DIS_EMITTER_NAME_4590, "AN/APX-6" }, - { DIS_EMITTER_NAME_4635, "AN/APX 7" }, - { DIS_EMITTER_NAME_4680, "AN/APX 39" }, - { DIS_EMITTER_NAME_4725, "AN/APX-72" }, - { DIS_EMITTER_NAME_4770, "AN/APX 76" }, - { DIS_EMITTER_NAME_4815, "AN/APX 78" }, - { DIS_EMITTER_NAME_4860, "AN/APX 101" }, - { DIS_EMITTER_NAME_4870, "AN/APX-113 AIFF" }, - { DIS_EMITTER_NAME_4900, "AN/APY-1" }, - { DIS_EMITTER_NAME_4905, "AN/APY 2" }, - { DIS_EMITTER_NAME_4950, "AN/APY 3" }, - { DIS_EMITTER_NAME_4953, "AN/APY-8, LYNX(tm)" }, - { DIS_EMITTER_NAME_4995, "AN/ARN 21" }, - { DIS_EMITTER_NAME_5040, "AN/ARN 52" }, - { DIS_EMITTER_NAME_5085, "AN/ARN 84" }, - { DIS_EMITTER_NAME_5130, "AN/ARN 118" }, - { DIS_EMITTER_NAME_5175, "AN/ARW 73" }, - { DIS_EMITTER_NAME_5220, "AN/ASB 1" }, - { DIS_EMITTER_NAME_5265, "AN/ASG 21" }, - { DIS_EMITTER_NAME_5280, "AN/ASQ-108" }, - { DIS_EMITTER_NAME_5310, "AN/AWG 9" }, - { DIS_EMITTER_NAME_5355, "AN/BPS-9" }, - { DIS_EMITTER_NAME_5400, "AN/BPS 15" }, - { DIS_EMITTER_NAME_5405, "AN/BPS-16" }, - { DIS_EMITTER_NAME_5420, "AN/CRM-30" }, - { DIS_EMITTER_NAME_5430, "AN/DPW-23" }, - { DIS_EMITTER_NAME_5445, "AN/DSQ 26 Phoenix MH" }, - { DIS_EMITTER_NAME_5490, "AN/DSQ 28 Harpoon MH" }, - { DIS_EMITTER_NAME_5495, "AN/FPN-40" }, - { DIS_EMITTER_NAME_5500, "AN/FPN-62" }, - { DIS_EMITTER_NAME_5505, "AN/FPS-16" }, - { DIS_EMITTER_NAME_5507, "AN/FPS-18" }, - { DIS_EMITTER_NAME_5508, "AN/FPS-89" }, - { DIS_EMITTER_NAME_5510, "AN/FPS-117" }, - { DIS_EMITTER_NAME_5515, "AN/FPS-20R" }, - { DIS_EMITTER_NAME_5520, "AN/FPS-77" }, - { DIS_EMITTER_NAME_5525, "AN/FPS-103" }, - { DIS_EMITTER_NAME_5527, "AN/GPN-12" }, - { DIS_EMITTER_NAME_5530, "AN/GPX-6" }, - { DIS_EMITTER_NAME_5535, "AN/GPX 8" }, - { DIS_EMITTER_NAME_5537, "AN/GRN-12" }, - { DIS_EMITTER_NAME_5540, "AN/MPQ-10" }, - { DIS_EMITTER_NAME_5545, "AN/MPQ-33/39/46/57/61 (HPIR) ILL" }, - { DIS_EMITTER_NAME_5550, "AN/MPQ-34/48/55/62 (CWAR) TA" }, - { DIS_EMITTER_NAME_5551, "AN/MPQ-49" }, - { DIS_EMITTER_NAME_5555, "AN/MPQ-35/50 (PAR) TA" }, - { DIS_EMITTER_NAME_5560, "AN/MPQ-37/51 (ROR) TT" }, - { DIS_EMITTER_NAME_5570, "AN/MPQ-53" }, - { DIS_EMITTER_NAME_5571, "AN/MPQ-63" }, - { DIS_EMITTER_NAME_5575, "AN/MPQ-64" }, - { DIS_EMITTER_NAME_5580, "AN/SPG-34" }, - { DIS_EMITTER_NAME_5625, "AN/SPG 50" }, - { DIS_EMITTER_NAME_5670, "AN/SPG 51" }, - { DIS_EMITTER_NAME_5715, "AN/SPG-51 CWI TI" }, - { DIS_EMITTER_NAME_5760, "AN/SPG-51 FC" }, - { DIS_EMITTER_NAME_5805, "AN/SPG 52" }, - { DIS_EMITTER_NAME_5850, "AN/SPG-53" }, - { DIS_EMITTER_NAME_5895, "AN/SPG 55B" }, - { DIS_EMITTER_NAME_5940, "AN/SPG 60" }, - { DIS_EMITTER_NAME_5985, "AN/SPG 62" }, - { DIS_EMITTER_NAME_6030, "AN/SPN 35" }, - { DIS_EMITTER_NAME_6075, "AN/SPN 43" }, - { DIS_EMITTER_NAME_6120, "AN/SPQ-2" }, - { DIS_EMITTER_NAME_6165, "AN/SPQ 9" }, - { DIS_EMITTER_NAME_6210, "AN/SPS-4" }, - { DIS_EMITTER_NAME_6255, "AN/SPS-5" }, - { DIS_EMITTER_NAME_6300, "AN/SPS-5C" }, - { DIS_EMITTER_NAME_6345, "AN/SPS-6" }, - { DIS_EMITTER_NAME_6390, "AN/SPS 10" }, - { DIS_EMITTER_NAME_6435, "AN/SPS 21" }, - { DIS_EMITTER_NAME_6480, "AN/SPS-28" }, - { DIS_EMITTER_NAME_6525, "AN/SPS-37" }, - { DIS_EMITTER_NAME_6570, "AN/SPS-39A" }, - { DIS_EMITTER_NAME_6615, "AN/SPS 40" }, - { DIS_EMITTER_NAME_6660, "AN/SPS-41" }, - { DIS_EMITTER_NAME_6705, "AN/SPS-48" }, - { DIS_EMITTER_NAME_6750, "AN/SPS-48C" }, - { DIS_EMITTER_NAME_6752, "AN/SPS-48E" }, - { DIS_EMITTER_NAME_6795, "AN/SPS-49" }, - { DIS_EMITTER_NAME_6796, "AN/SPS-49(V)1" }, - { DIS_EMITTER_NAME_6797, "AN/SPS-49(V)2" }, - { DIS_EMITTER_NAME_6798, "AN/SPS-49(V)3" }, - { DIS_EMITTER_NAME_6799, "AN/SPS-49(V)4" }, - { DIS_EMITTER_NAME_6800, "AN/SPS-49(V)5" }, - { DIS_EMITTER_NAME_6801, "AN/SPS-49(V)6" }, - { DIS_EMITTER_NAME_6802, "AN/SPS-49(V)7" }, - { DIS_EMITTER_NAME_6803, "AN/SPS-49(V)8" }, - { DIS_EMITTER_NAME_6804, "AN/SPS-49A(V)1" }, - { DIS_EMITTER_NAME_6840, "AN/SPS 52" }, - { DIS_EMITTER_NAME_6885, "AN/SPS 53" }, - { DIS_EMITTER_NAME_6930, "AN/SPS 55" }, - { DIS_EMITTER_NAME_6975, "AN/SPS-55 SS" }, - { DIS_EMITTER_NAME_7020, "AN/SPS-58" }, - { DIS_EMITTER_NAME_7065, "AN/SPS 59" }, - { DIS_EMITTER_NAME_7110, "AN/SPS 64" }, - { DIS_EMITTER_NAME_7155, "AN/SPS 65" }, - { DIS_EMITTER_NAME_7200, "AN/SPS 67" }, - { DIS_EMITTER_NAME_7245, "AN/SPY-1" }, - { DIS_EMITTER_NAME_7250, "AN/SPY-1A" }, - { DIS_EMITTER_NAME_7252, "AN/SPY-1B" }, - { DIS_EMITTER_NAME_7253, "AN/SPY-1B(V)" }, - { DIS_EMITTER_NAME_7260, "AN/SPY-1D" }, - { DIS_EMITTER_NAME_7261, "AN/SPY-1D(V)" }, - { DIS_EMITTER_NAME_7265, "AN/SPY-1F" }, - { DIS_EMITTER_NAME_7270, "AN/TPN-17" }, - { DIS_EMITTER_NAME_7275, "AN/TPN-24" }, - { DIS_EMITTER_NAME_7280, "AN/TPQ-18" }, - { DIS_EMITTER_NAME_7295, "AN/TPQ-36" }, - { DIS_EMITTER_NAME_7300, "AN/TPQ-37" }, - { DIS_EMITTER_NAME_7301, "AN/TPQ-38 (V8)" }, - { DIS_EMITTER_NAME_7303, "AN/TPQ-47" }, - { DIS_EMITTER_NAME_7305, "AN/TPS-43" }, - { DIS_EMITTER_NAME_7310, "AN/TPS-43E" }, - { DIS_EMITTER_NAME_7315, "AN/TPS-59" }, - { DIS_EMITTER_NAME_7320, "AN/TPS-63" }, - { DIS_EMITTER_NAME_7322, "AN/TPS-70 (V) 1" }, - { DIS_EMITTER_NAME_7325, "AN/TPS-75" }, - { DIS_EMITTER_NAME_7330, "AN/TPX-46(V)7" }, - { DIS_EMITTER_NAME_7335, "AN/ULQ-6A" }, - { DIS_EMITTER_NAME_7380, "AN/UPN 25" }, - { DIS_EMITTER_NAME_7425, "AN/UPS 1" }, - { DIS_EMITTER_NAME_7426, "AN/UPS-2" }, - { DIS_EMITTER_NAME_7470, "AN/UPX 1" }, - { DIS_EMITTER_NAME_7515, "AN/UPX 5" }, - { DIS_EMITTER_NAME_7560, "AN/UPX 11" }, - { DIS_EMITTER_NAME_7605, "AN/UPX 12" }, - { DIS_EMITTER_NAME_7650, "AN/UPX 17" }, - { DIS_EMITTER_NAME_7695, "AN/UPX 23" }, - { DIS_EMITTER_NAME_7740, "AN/VPS 2" }, - { DIS_EMITTER_NAME_7785, "Apelco AD 7 7" }, - { DIS_EMITTER_NAME_7830, "APG 71" }, - { DIS_EMITTER_NAME_7875, "APN 148" }, - { DIS_EMITTER_NAME_7920, "APN 227" }, - { DIS_EMITTER_NAME_7965, "(deleted)" }, - { DIS_EMITTER_NAME_8010, "(deleted)" }, - { DIS_EMITTER_NAME_8055, "(deleted)" }, - { DIS_EMITTER_NAME_8100, "APS 504 V3" }, - { DIS_EMITTER_NAME_8105, "AR 3D" }, - { DIS_EMITTER_NAME_8112, "Plessey AR-5" }, - { DIS_EMITTER_NAME_8115, "AR 320" }, - { DIS_EMITTER_NAME_8120, "AR 327" }, - { DIS_EMITTER_NAME_8145, "AR M31" }, - { DIS_EMITTER_NAME_8190, "ARI 5954" }, - { DIS_EMITTER_NAME_8235, "ARI 5955" }, - { DIS_EMITTER_NAME_8280, "ARI 5979" }, - { DIS_EMITTER_NAME_8325, "ARINC 564 BNDX/KING RDR 1E" }, - { DIS_EMITTER_NAME_8370, "ARINC 700 BNDX/KING RDR 1E" }, - { DIS_EMITTER_NAME_8375, "ARK-1" }, - { DIS_EMITTER_NAME_8380, "ARSR-3" }, - { DIS_EMITTER_NAME_8390, "ARSR-18" }, - { DIS_EMITTER_NAME_8415, "AS 2 Kipper" }, - { DIS_EMITTER_NAME_8460, "AS 2 Kipper MH" }, - { DIS_EMITTER_NAME_8505, "AS 4 Kitchen" }, - { DIS_EMITTER_NAME_8550, "AS 4 Kitchen MH" }, - { DIS_EMITTER_NAME_8595, "AS 5 Kelt MH" }, - { DIS_EMITTER_NAME_8640, "AS 6 Kingfish MH" }, - { DIS_EMITTER_NAME_8685, "AS 7 Kerry" }, - { DIS_EMITTER_NAME_8730, "AS 7 Kerry MG" }, - { DIS_EMITTER_NAME_8735, "AS 15 KENT altimeter" }, - { DIS_EMITTER_NAME_8760, "Aspide AAM/SAM ILL" }, - { DIS_EMITTER_NAME_8772, "ASR-4" }, - { DIS_EMITTER_NAME_8775, "ASR O" }, - { DIS_EMITTER_NAME_8780, "ASR-5" }, - { DIS_EMITTER_NAME_8782, "ASR-7" }, - { DIS_EMITTER_NAME_8785, "ASR-8" }, - { DIS_EMITTER_NAME_8790, "ASR-9" }, - { DIS_EMITTER_NAME_8812, "Raytheon ASR-10SS" }, - { DIS_EMITTER_NAME_8820, "AT 2 Swatter MG" }, - { DIS_EMITTER_NAME_8840, "ATCR-33" }, - { DIS_EMITTER_NAME_8845, "ATCR 33 K/M" }, - { DIS_EMITTER_NAME_8865, "Atlas Elektronk TRS N" }, - { DIS_EMITTER_NAME_8870, "ATLAS-9740 VTS" }, - { DIS_EMITTER_NAME_8910, "AVG 65" }, - { DIS_EMITTER_NAME_8955, "AVH 7" }, - { DIS_EMITTER_NAME_9000, "AVQ 20" }, - { DIS_EMITTER_NAME_9045, "AVQ30X" }, - { DIS_EMITTER_NAME_9075, "AVQ-50 (RCA)" }, - { DIS_EMITTER_NAME_9090, "AVQ 70" }, - { DIS_EMITTER_NAME_9135, "AWS 5" }, - { DIS_EMITTER_NAME_9180, "AWS 6" }, - { DIS_EMITTER_NAME_9200, "B597Z" }, - { DIS_EMITTER_NAME_9205, "B636Z" }, - { DIS_EMITTER_NAME_9225, "Back Net A B" }, - { DIS_EMITTER_NAME_9270, "Back Trap" }, - { DIS_EMITTER_NAME_9310, "BALTYK" }, - { DIS_EMITTER_NAME_9315, "Ball End" }, - { DIS_EMITTER_NAME_9360, "Ball Gun" }, - { DIS_EMITTER_NAME_9405, "Band Stand" }, - { DIS_EMITTER_NAME_9450, "P-35/37 (A); P-50 (B), Bar Lock" }, - { DIS_EMITTER_NAME_9495, "Bass Tilt" }, - { DIS_EMITTER_NAME_9540, "Beacon" }, - { DIS_EMITTER_NAME_9585, "Bean Sticks" }, - { DIS_EMITTER_NAME_9630, "Bee Hind" }, - { DIS_EMITTER_NAME_9640, "Bell Crown A" }, - { DIS_EMITTER_NAME_9642, "Bell Crown B" }, - { DIS_EMITTER_NAME_9645, "BIG BACK" }, - { DIS_EMITTER_NAME_9660, "Big Bird" }, - { DIS_EMITTER_NAME_9675, "Big Bulge" }, - { DIS_EMITTER_NAME_9720, "Big Bulge A" }, - { DIS_EMITTER_NAME_9765, "Big Bulge B" }, - { DIS_EMITTER_NAME_9780, "SNAR-10, Big Fred" }, - { DIS_EMITTER_NAME_9810, "Big Mesh" }, - { DIS_EMITTER_NAME_9855, "Big Net" }, - { DIS_EMITTER_NAME_9885, "9S15MT, Bill Board" }, - { DIS_EMITTER_NAME_9900, "Bill Fold" }, - { DIS_EMITTER_NAME_9905, "Blowpipe MG" }, - { DIS_EMITTER_NAME_9930, "Blue Fox, Sea Harrier FRS Mk 1/5" }, - { DIS_EMITTER_NAME_9935, "Blue Vixen, Sea Harrier F/A Mk 2" }, - { DIS_EMITTER_NAME_9945, "Blue Silk" }, - { DIS_EMITTER_NAME_9990, "Blue Parrot" }, - { DIS_EMITTER_NAME_10035, "Blue Orchid" }, - { DIS_EMITTER_NAME_10080, "Boat Sail" }, - { DIS_EMITTER_NAME_10125, "Bofors Electronic 9LV 331" }, - { DIS_EMITTER_NAME_10170, "Bofors Ericsson Sea Giraffe 50 HC" }, - { DIS_EMITTER_NAME_10215, "Bowl Mesh" }, - { DIS_EMITTER_NAME_10260, "Box Brick" }, - { DIS_EMITTER_NAME_10305, "Box Tail" }, - { DIS_EMITTER_NAME_10350, "BPS 11A" }, - { DIS_EMITTER_NAME_10395, "BPS 14" }, - { DIS_EMITTER_NAME_10440, "BPS 15A" }, - { DIS_EMITTER_NAME_10485, "BR-15 Tokyo KEIKI" }, - { DIS_EMITTER_NAME_10510, "BRIDGEMASTE" }, - { DIS_EMITTER_NAME_10530, "Bread Bin" }, - { DIS_EMITTER_NAME_10575, "BT 271" }, - { DIS_EMITTER_NAME_10620, "BX 732" }, - { DIS_EMITTER_NAME_10665, "Buzz Stand" }, - { DIS_EMITTER_NAME_10710, "C 5A Multi Mode Radar" }, - { DIS_EMITTER_NAME_10755, "Caiman" }, - { DIS_EMITTER_NAME_10800, "Cake Stand" }, - { DIS_EMITTER_NAME_10845, "Calypso C61" }, - { DIS_EMITTER_NAME_10890, "Calypso Ii" }, - { DIS_EMITTER_NAME_10895, "Cardion Coastal" }, - { DIS_EMITTER_NAME_10935, "Castor Ii" }, - { DIS_EMITTER_NAME_10940, "Castor 2J TT (Crotale NG)" }, - { DIS_EMITTER_NAME_10980, "Cat House" }, - { DIS_EMITTER_NAME_10985, "CDR-431" }, - { DIS_EMITTER_NAME_11000, "Chair Back TT" }, - { DIS_EMITTER_NAME_11010, "Chair Back ILL" }, - { DIS_EMITTER_NAME_11025, "Cheese Brick" }, - { DIS_EMITTER_NAME_11070, "Clam Pipe" }, - { DIS_EMITTER_NAME_11115, "Clamshell" }, - { DIS_EMITTER_NAME_11160, "Collins WXR-700X" }, - { DIS_EMITTER_NAME_11205, "Collins DN 101" }, - { DIS_EMITTER_NAME_11250, "Contraves Sea Hunter MK 4" }, - { DIS_EMITTER_NAME_11260, "Corn Can" }, - { DIS_EMITTER_NAME_11270, "CR-105 RMCA" }, - { DIS_EMITTER_NAME_11295, "Cross Bird" }, - { DIS_EMITTER_NAME_11340, "Cross Dome" }, - { DIS_EMITTER_NAME_11385, "Cross Legs" }, - { DIS_EMITTER_NAME_11430, "Cross Out" }, - { DIS_EMITTER_NAME_11475, "Cross Slot" }, - { DIS_EMITTER_NAME_11520, "Cross Sword" }, - { DIS_EMITTER_NAME_11565, "Cross Up" }, - { DIS_EMITTER_NAME_11610, "Cross Sword FC" }, - { DIS_EMITTER_NAME_11655, "Crotale Acquisition TA, THD-5000" }, - { DIS_EMITTER_NAME_11660, "Crotale NG TA, Griffon" }, - { DIS_EMITTER_NAME_11665, "Crotale TT" }, - { DIS_EMITTER_NAME_11700, "Crotale MGMissile System" }, - { DIS_EMITTER_NAME_11745, "CSS C 3C CAS 1M1 M2 MH" }, - { DIS_EMITTER_NAME_11790, "CSS C 2B HY 1A MH" }, - { DIS_EMITTER_NAME_11835, "CWS 2" }, - { DIS_EMITTER_NAME_11880, "Cylinder Head" }, - { DIS_EMITTER_NAME_11925, "Cyrano II" }, - { DIS_EMITTER_NAME_11970, "Cyrano IV" }, - { DIS_EMITTER_NAME_11975, "Cyrano IV-M" }, - { DIS_EMITTER_NAME_12010, "DA-01/00" }, - { DIS_EMITTER_NAME_12015, "DA 05 00" }, - { DIS_EMITTER_NAME_12060, "Dawn" }, - { DIS_EMITTER_NAME_12105, "Dead Duck" }, - { DIS_EMITTER_NAME_12110, "DECCA-20 V90/9" }, - { DIS_EMITTER_NAME_12111, "DECCA-20 V90S" }, - { DIS_EMITTER_NAME_12150, "DECCA 45" }, - { DIS_EMITTER_NAME_12195, "DECCA 50" }, - { DIS_EMITTER_NAME_12240, "DECCA 110" }, - { DIS_EMITTER_NAME_12285, "DECCA 170" }, - { DIS_EMITTER_NAME_12292, "DECCA HF 2" }, - { DIS_EMITTER_NAME_12330, "DECCA 202" }, - { DIS_EMITTER_NAME_12375, "DECCA D202" }, - { DIS_EMITTER_NAME_12420, "DECCA 303" }, - { DIS_EMITTER_NAME_12430, "DECCA 535" }, - { DIS_EMITTER_NAME_12465, "DECCA 626" }, - { DIS_EMITTER_NAME_12510, "DECCA 629" }, - { DIS_EMITTER_NAME_12555, "DECCA 914" }, - { DIS_EMITTER_NAME_12600, "DECCA 916" }, - { DIS_EMITTER_NAME_12610, "DECCA 926" }, - { DIS_EMITTER_NAME_12645, "DECCA 1226 Commercial" }, - { DIS_EMITTER_NAME_12690, "DECCA 1626" }, - { DIS_EMITTER_NAME_12735, "DECCA 2459" }, - { DIS_EMITTER_NAME_12780, "DECCA AWS 1" }, - { DIS_EMITTER_NAME_12782, "DECCA AWS 2" }, - { DIS_EMITTER_NAME_12785, "DECCA AWS 4" }, - { DIS_EMITTER_NAME_12787, "DECCA AWS-4 (2)" }, - { DIS_EMITTER_NAME_12800, "DECCA MAR" }, - { DIS_EMITTER_NAME_12805, "DECCA RM 326" }, - { DIS_EMITTER_NAME_12825, "DECCA RM 416" }, - { DIS_EMITTER_NAME_12870, "DECCA RM 914" }, - { DIS_EMITTER_NAME_12915, "DECCA RM 1690" }, - { DIS_EMITTER_NAME_12960, "DECCA Super 101 MK 3" }, - { DIS_EMITTER_NAME_13005, "DISS 1" }, - { DIS_EMITTER_NAME_13050, "Rapier TTDN 181, DN 181" }, - { DIS_EMITTER_NAME_13055, "Rapier 2000 TT, BLINDFIRE FSC TT" }, - { DIS_EMITTER_NAME_13095, "Dog Ear" }, - { DIS_EMITTER_NAME_13140, "Dog House" }, - { DIS_EMITTER_NAME_13185, "Don 2" }, - { DIS_EMITTER_NAME_13230, "Don A/B/2/Kay" }, - { DIS_EMITTER_NAME_13275, "Donets" }, - { DIS_EMITTER_NAME_13320, "Down Beat" }, - { DIS_EMITTER_NAME_13365, "DRAA 2A" }, - { DIS_EMITTER_NAME_13410, "DRAA 2B" }, - { DIS_EMITTER_NAME_13455, "DRAC 39" }, - { DIS_EMITTER_NAME_13500, "DRBC 30B" }, - { DIS_EMITTER_NAME_13545, "DRBC 31A" }, - { DIS_EMITTER_NAME_13590, "DRBC 32A" }, - { DIS_EMITTER_NAME_13635, "DRBC 32D" }, - { DIS_EMITTER_NAME_13680, "DRBC 33A" }, - { DIS_EMITTER_NAME_13725, "DRBI 10" }, - { DIS_EMITTER_NAME_13770, "DRBI 23" }, - { DIS_EMITTER_NAME_13815, "DRBJ 11B" }, - { DIS_EMITTER_NAME_13860, "DRBN 30" }, - { DIS_EMITTER_NAME_13905, "DRBN 32" }, - { DIS_EMITTER_NAME_13950, "DRBR 51" }, - { DIS_EMITTER_NAME_13995, "DRBV 20B" }, - { DIS_EMITTER_NAME_14040, "DRBV 22" }, - { DIS_EMITTER_NAME_14085, "DRBV 26C" }, - { DIS_EMITTER_NAME_14130, "DRBV 30" }, - { DIS_EMITTER_NAME_14175, "DRBV 50" }, - { DIS_EMITTER_NAME_14220, "DRBV 51" }, - { DIS_EMITTER_NAME_14265, "DRBV 51A" }, - { DIS_EMITTER_NAME_14310, "DRBV 51B" }, - { DIS_EMITTER_NAME_14355, "DRBV 51C" }, - { DIS_EMITTER_NAME_14400, "Drop Kick" }, - { DIS_EMITTER_NAME_14445, "DRUA 31" }, - { DIS_EMITTER_NAME_14490, "Drum Tilt" }, - { DIS_EMITTER_NAME_14535, "Drum Tilt A" }, - { DIS_EMITTER_NAME_14545, "Drum Tilt B" }, - { DIS_EMITTER_NAME_14580, "Dumbo" }, - { DIS_EMITTER_NAME_14600, "ECR-90" }, - { DIS_EMITTER_NAME_14625, "Egg Cup A/B" }, - { DIS_EMITTER_NAME_14670, "EKCO 190" }, - { DIS_EMITTER_NAME_14715, "EL M 2001B" }, - { DIS_EMITTER_NAME_14760, "EL M 2207" }, - { DIS_EMITTER_NAME_14770, "EL/M 2216(V)" }, - { DIS_EMITTER_NAME_14805, "ELTA EL/M 2221 GM STGR" }, - { DIS_EMITTER_NAME_14810, "ELTA SIS" }, - { DIS_EMITTER_NAME_14850, "EMD 2900" }, - { DIS_EMITTER_NAME_14895, "End Tray" }, - { DIS_EMITTER_NAME_14940, "Exocet 1" }, - { DIS_EMITTER_NAME_14985, "Exocet 1 MH" }, - { DIS_EMITTER_NAME_15030, "Exocet 2" }, - { DIS_EMITTER_NAME_15075, "Eye Bowl" }, - { DIS_EMITTER_NAME_15120, "Eye Shield" }, - { DIS_EMITTER_NAME_15140, "F332Z" }, - { DIS_EMITTER_NAME_15160, "FALCON" }, - { DIS_EMITTER_NAME_15165, "Fan Song A" }, - { DIS_EMITTER_NAME_15200, "Fan Song B/F TA" }, - { DIS_EMITTER_NAME_15210, "Fan Song B/F TT" }, - { DIS_EMITTER_NAME_15220, "Fan Song C/E TA" }, - { DIS_EMITTER_NAME_15230, "Fan Song C/E TT" }, - { DIS_EMITTER_NAME_15240, "Fan Song C/E MG" }, - { DIS_EMITTER_NAME_15255, "Fan Song B/FF MG" }, - { DIS_EMITTER_NAME_15300, "Fan Tail" }, - { DIS_EMITTER_NAME_15310, "FCR-1401" }, - { DIS_EMITTER_NAME_15345, "Fin Curve" }, - { DIS_EMITTER_NAME_15390, "Fire Can" }, - { DIS_EMITTER_NAME_15435, "Fire Dish" }, - { DIS_EMITTER_NAME_15470, "Fire Dome TA" }, - { DIS_EMITTER_NAME_15475, "Fire Dome TT" }, - { DIS_EMITTER_NAME_15480, "Fire Dome TI" }, - { DIS_EMITTER_NAME_15525, "Fire Iron" }, - { DIS_EMITTER_NAME_15570, "Fire Wheel" }, - { DIS_EMITTER_NAME_15615, "Fish Bowl" }, - { DIS_EMITTER_NAME_15660, "Flap Lid" }, - { DIS_EMITTER_NAME_15705, "Flap Truck" }, - { DIS_EMITTER_NAME_15750, "Flap Wheel" }, - { DIS_EMITTER_NAME_15795, "Flash Dance" }, - { DIS_EMITTER_NAME_15840, "P-15, Flat Face A B C D" }, - { DIS_EMITTER_NAME_15885, "Flat Screen" }, - { DIS_EMITTER_NAME_15930, "Flat Spin" }, - { DIS_EMITTER_NAME_15975, "Flat Twin" }, - { DIS_EMITTER_NAME_16020, "Fledermaus" }, - { DIS_EMITTER_NAME_16030, "FLYCATCHER" }, - { DIS_EMITTER_NAME_16065, "Fly Screen" }, - { DIS_EMITTER_NAME_16110, "Fly Screen A&B" }, - { DIS_EMITTER_NAME_16155, "Fly Trap B" }, - { DIS_EMITTER_NAME_16200, "Fog Lamp MG" }, - { DIS_EMITTER_NAME_16245, "Fog Lamp TT" }, - { DIS_EMITTER_NAME_16290, "Foil Two" }, - { DIS_EMITTER_NAME_16335, "Fox Hunter" }, - { DIS_EMITTER_NAME_16380, "FOX FIREFox Fire AL" }, - { DIS_EMITTER_NAME_16390, "FOX FIRE ILL" }, - { DIS_EMITTER_NAME_16400, "FR-151A" }, - { DIS_EMITTER_NAME_16410, "FR-1505 DA" }, - { DIS_EMITTER_NAME_16420, "FR-2000" }, - { DIS_EMITTER_NAME_16421, "FR-2855W" }, - { DIS_EMITTER_NAME_16425, "Front Dome" }, - { DIS_EMITTER_NAME_16470, "Front Door" }, - { DIS_EMITTER_NAME_16515, "Front Piece" }, - { DIS_EMITTER_NAME_16560, "Furuno" }, - { DIS_EMITTER_NAME_16561, "Furuno 1721" }, - { DIS_EMITTER_NAME_16605, "Furuno 701" }, - { DIS_EMITTER_NAME_16650, "Furuno 711 2" }, - { DIS_EMITTER_NAME_16695, "Furuno 2400" }, - { DIS_EMITTER_NAME_16740, "GA 01 00" }, - { DIS_EMITTER_NAME_16785, "Gage" }, - { DIS_EMITTER_NAME_16830, "Garpin" }, - { DIS_EMITTER_NAME_16875, "GEM BX 132" }, - { DIS_EMITTER_NAME_16880, "MPDR-12, Gepard TA" }, - { DIS_EMITTER_NAME_16884, "Gepard TT" }, - { DIS_EMITTER_NAME_16888, "GERAN-F" }, - { DIS_EMITTER_NAME_16900, "GIRAFFE" }, - { DIS_EMITTER_NAME_16915, "Gin Sling TA" }, - { DIS_EMITTER_NAME_16920, "Gin Sling, Gin Sling TT" }, - { DIS_EMITTER_NAME_16925, "Gin Sling MG" }, - { DIS_EMITTER_NAME_16945, "GPN-22" }, - { DIS_EMITTER_NAME_16950, "GRN-9" }, - { DIS_EMITTER_NAME_16965, "Green Stain" }, - { DIS_EMITTER_NAME_17010, "Grid Bow" }, - { DIS_EMITTER_NAME_17025, "9S32, GRILL PAN TT" }, - { DIS_EMITTER_NAME_17055, "Guardsman" }, - { DIS_EMITTER_NAME_17070, "RPK-2, GUN DISH (ZSU-23/4)" }, - { DIS_EMITTER_NAME_17100, "Hair Net" }, - { DIS_EMITTER_NAME_17145, "Half Plate A" }, - { DIS_EMITTER_NAME_17190, "Half Plate B" }, - { DIS_EMITTER_NAME_17220, "HARD" }, - { DIS_EMITTER_NAME_17235, "Hawk Screech" }, - { DIS_EMITTER_NAME_17280, "Head Light A" }, - { DIS_EMITTER_NAME_17325, "Head Lights" }, - { DIS_EMITTER_NAME_17370, "Head Lights C" }, - { DIS_EMITTER_NAME_17415, "Head Lights MG A" }, - { DIS_EMITTER_NAME_17460, "Head Lights MG B" }, - { DIS_EMITTER_NAME_17505, "Head Lights TT" }, - { DIS_EMITTER_NAME_17550, "Head Net" }, - { DIS_EMITTER_NAME_17595, "Hen Egg" }, - { DIS_EMITTER_NAME_17640, "Hen House" }, - { DIS_EMITTER_NAME_17685, "Hen Nest" }, - { DIS_EMITTER_NAME_17730, "Hen Roost" }, - { DIS_EMITTER_NAME_17775, "High Brick" }, - { DIS_EMITTER_NAME_17820, "High Fix" }, - { DIS_EMITTER_NAME_17865, "High Lark TI" }, - { DIS_EMITTER_NAME_17910, "High Lark 1" }, - { DIS_EMITTER_NAME_17955, "High Lark 2" }, - { DIS_EMITTER_NAME_18000, "High Lark 4" }, - { DIS_EMITTER_NAME_18045, "High Lune" }, - { DIS_EMITTER_NAME_18090, "High Pole A&B" }, - { DIS_EMITTER_NAME_18135, "High Scoop" }, - { DIS_EMITTER_NAME_18150, "9S19MT, HIGH SCREEN" }, - { DIS_EMITTER_NAME_18180, "High Sieve" }, - { DIS_EMITTER_NAME_18200, "HN-503" }, - { DIS_EMITTER_NAME_18225, "Home Talk" }, - { DIS_EMITTER_NAME_18270, "Horn Spoon" }, - { DIS_EMITTER_NAME_18280, "HOT BRICK" }, - { DIS_EMITTER_NAME_18315, "Hot Flash" }, - { DIS_EMITTER_NAME_18320, "IRL144M, Hot Shot TA" }, - { DIS_EMITTER_NAME_18325, "IRL144M, Hot Shot TT" }, - { DIS_EMITTER_NAME_18330, "IRL144M, Hot Shot MG" }, - { DIS_EMITTER_NAME_18360, "IFF MK XII AIMS UPX 29" }, - { DIS_EMITTER_NAME_18405, "IFF MK XV" }, - { DIS_EMITTER_NAME_18410, "Javelin MG" }, - { DIS_EMITTER_NAME_18450, "Jay Bird" }, - { DIS_EMITTER_NAME_18460, "JRC-NMD-401" }, - { DIS_EMITTER_NAME_18495, "Jupiter" }, - { DIS_EMITTER_NAME_18540, "Jupiter II" }, - { DIS_EMITTER_NAME_18550, "JY-8" }, - { DIS_EMITTER_NAME_18555, "JY-9" }, - { DIS_EMITTER_NAME_18560, "JY-14" }, - { DIS_EMITTER_NAME_18585, "K376Z" }, - { DIS_EMITTER_NAME_18630, "Kelvin Hughes 2A" }, - { DIS_EMITTER_NAME_18675, "Kelvin Hughes 14/9" }, - { DIS_EMITTER_NAME_18720, "Kelvin Hughes type 1006" }, - { DIS_EMITTER_NAME_18765, "Kelvin Hughes type 1007" }, - { DIS_EMITTER_NAME_18785, "KH-902M" }, - { DIS_EMITTER_NAME_18810, "Kite Screech" }, - { DIS_EMITTER_NAME_18855, "Kite Screech A" }, - { DIS_EMITTER_NAME_18900, "Kite Screech B" }, - { DIS_EMITTER_NAME_18945, "Kivach" }, - { DIS_EMITTER_NAME_18990, "Knife Rest" }, - { DIS_EMITTER_NAME_19035, "P-10, Knife Rest B" }, - { DIS_EMITTER_NAME_19037, "KNIFE REST C" }, - { DIS_EMITTER_NAME_19050, "KR-75" }, - { DIS_EMITTER_NAME_19080, "KSA SRN" }, - { DIS_EMITTER_NAME_19125, "KSA TSR" }, - { DIS_EMITTER_NAME_19170, "Land Fall" }, - { DIS_EMITTER_NAME_19215, "Land Roll MG" }, - { DIS_EMITTER_NAME_19260, "Land Roll TA" }, - { DIS_EMITTER_NAME_19305, "Land Roll TT" }, - { DIS_EMITTER_NAME_19310, "LC-150" }, - { DIS_EMITTER_NAME_19350, "Leningraf" }, - { DIS_EMITTER_NAME_19395, "Light Bulb" }, - { DIS_EMITTER_NAME_19400, "LMT NRAI-6A" }, - { DIS_EMITTER_NAME_19440, "LN 55" }, - { DIS_EMITTER_NAME_19485, "Ln 66" }, - { DIS_EMITTER_NAME_19530, "Long Bow" }, - { DIS_EMITTER_NAME_19575, "Long Brick" }, - { DIS_EMITTER_NAME_19620, "Long Bull" }, - { DIS_EMITTER_NAME_19665, "Long Eye" }, - { DIS_EMITTER_NAME_19710, "Long Head" }, - { DIS_EMITTER_NAME_19755, "Long Talk" }, - { DIS_EMITTER_NAME_19800, "Long Track" }, - { DIS_EMITTER_NAME_19845, "Long Trough" }, - { DIS_EMITTER_NAME_19890, "Look Two" }, - { DIS_EMITTER_NAME_19935, "LORAN" }, - { DIS_EMITTER_NAME_19950, "Low Blow TA" }, - { DIS_EMITTER_NAME_19955, "Low Blow TT" }, - { DIS_EMITTER_NAME_19960, "Low Blow MG" }, - { DIS_EMITTER_NAME_19980, "Low Sieve" }, - { DIS_EMITTER_NAME_20025, "Low Trough" }, - { DIS_EMITTER_NAME_20040, "TRS-2050, LP-23" }, - { DIS_EMITTER_NAME_20070, "LW 08" }, - { DIS_EMITTER_NAME_20090, "M-1983 FCR" }, - { DIS_EMITTER_NAME_20115, "M22-40" }, - { DIS_EMITTER_NAME_20160, "M44" }, - { DIS_EMITTER_NAME_20205, "M401Z" }, - { DIS_EMITTER_NAME_20250, "M585Z" }, - { DIS_EMITTER_NAME_20295, "M588Z" }, - { DIS_EMITTER_NAME_20340, "MA 1 IFF Portion" }, - { DIS_EMITTER_NAME_20360, "MARELD" }, - { DIS_EMITTER_NAME_20385, "MA Type 909#" }, - { DIS_EMITTER_NAME_20430, "Marconi 1810" }, - { DIS_EMITTER_NAME_20475, "Marconi Canada HC 75" }, - { DIS_EMITTER_NAME_20495, "Marconi S 713" }, - { DIS_EMITTER_NAME_20520, "Marconi S 1802" }, - { DIS_EMITTER_NAME_20530, "Marconi S247" }, - { DIS_EMITTER_NAME_20565, "Marconi S 810" }, - { DIS_EMITTER_NAME_20585, "Marconi SA 10" }, - { DIS_EMITTER_NAME_20610, "Marconi type 967" }, - { DIS_EMITTER_NAME_20655, "Marconi type 968" }, - { DIS_EMITTER_NAME_20700, "Marconi type 992" }, - { DIS_EMITTER_NAME_20745, "Marconi/signaal type 1022" }, - { DIS_EMITTER_NAME_20790, "Marconi/signaal type 910" }, - { DIS_EMITTER_NAME_20835, "Marconi/signaal type 911" }, - { DIS_EMITTER_NAME_20880, "Marconi/signaal type 992R" }, - { DIS_EMITTER_NAME_20925, "Mesh Brick" }, - { DIS_EMITTER_NAME_20950, "Mirage ILL" }, - { DIS_EMITTER_NAME_20970, "MK 15 CIWS" }, - { DIS_EMITTER_NAME_21015, "MK-23" }, - { DIS_EMITTER_NAME_21060, "MK 23 TAS" }, - { DIS_EMITTER_NAME_21105, "MK 25" }, - { DIS_EMITTER_NAME_21150, "MK-35 M2" }, - { DIS_EMITTER_NAME_21195, "MK 92" }, - { DIS_EMITTER_NAME_21240, "MK-92 CAS" }, - { DIS_EMITTER_NAME_21285, "MK-92 STIR" }, - { DIS_EMITTER_NAME_21330, "MK 95" }, - { DIS_EMITTER_NAME_21340, "MLA-1" }, - { DIS_EMITTER_NAME_21375, "MM APS 705" }, - { DIS_EMITTER_NAME_21420, "MM SPG 74" }, - { DIS_EMITTER_NAME_21465, "MM SPG 75" }, - { DIS_EMITTER_NAME_21490, "MM SPN 703" }, - { DIS_EMITTER_NAME_21510, "MM SPS 702" }, - { DIS_EMITTER_NAME_21555, "MM SPS 768" }, - { DIS_EMITTER_NAME_21600, "MM SPS 774" }, - { DIS_EMITTER_NAME_21645, "Moon 4" }, - { DIS_EMITTER_NAME_21650, "MMRS" }, - { DIS_EMITTER_NAME_21690, "MPDR 18 X" }, - { DIS_EMITTER_NAME_21710, "MT-305X" }, - { DIS_EMITTER_NAME_21735, "Muff Cob" }, - { DIS_EMITTER_NAME_21780, "Mushroom" }, - { DIS_EMITTER_NAME_21825, "Mushroom 1" }, - { DIS_EMITTER_NAME_21870, "Mushroom 2" }, - { DIS_EMITTER_NAME_21880, "N920Z" }, - { DIS_EMITTER_NAME_21890, "Nanjing B" }, - { DIS_EMITTER_NAME_21895, "Nanjing C" }, - { DIS_EMITTER_NAME_21915, "Nayada" }, - { DIS_EMITTER_NAME_21960, "Neptun" }, - { DIS_EMITTER_NAME_21980, "NIKE TT" }, - { DIS_EMITTER_NAME_22005, "NRBA 50" }, - { DIS_EMITTER_NAME_22050, "NRBA 51" }, - { DIS_EMITTER_NAME_22095, "NRBF 20A" }, - { DIS_EMITTER_NAME_22140, "Nysa B" }, - { DIS_EMITTER_NAME_22185, "O524A" }, - { DIS_EMITTER_NAME_22230, "O580B" }, - { DIS_EMITTER_NAME_22275, "O625Z" }, - { DIS_EMITTER_NAME_22320, "O626Z" }, - { DIS_EMITTER_NAME_22345, "Odd Group" }, - { DIS_EMITTER_NAME_22365, "Odd Lot" }, - { DIS_EMITTER_NAME_22410, "Odd Pair" }, - { DIS_EMITTER_NAME_22455, "Oka" }, - { DIS_EMITTER_NAME_22500, "OKEAN" }, - { DIS_EMITTER_NAME_22545, "OKINXE 12C" }, - { DIS_EMITTER_NAME_22590, "OMEGA" }, - { DIS_EMITTER_NAME_22635, "Omera ORB32" }, - { DIS_EMITTER_NAME_22680, "One Eye" }, - { DIS_EMITTER_NAME_22690, "OP-28" }, - { DIS_EMITTER_NAME_22725, "OPS-16B" }, - { DIS_EMITTER_NAME_22730, "OPS-18" }, - { DIS_EMITTER_NAME_22740, "OPS-28" }, - { DIS_EMITTER_NAME_22770, "OR-2" }, - { DIS_EMITTER_NAME_22810, "ORB-31S" }, - { DIS_EMITTER_NAME_22815, "ORB 32" }, - { DIS_EMITTER_NAME_22860, "Orion Rtn 10X" }, - { DIS_EMITTER_NAME_22905, "Otomat MK II Teseo" }, - { DIS_EMITTER_NAME_22950, "Owl Screech" }, - { DIS_EMITTER_NAME_22955, "P360Z" }, - { DIS_EMITTER_NAME_22960, "PA-1660" }, - { DIS_EMITTER_NAME_22995, "Palm Frond" }, - { DIS_EMITTER_NAME_23040, "Palm Frond AB" }, - { DIS_EMITTER_NAME_23085, "Pat Hand TT" }, - { DIS_EMITTER_NAME_23095, "Pat Hand MG" }, - { DIS_EMITTER_NAME_23130, "Patty Cake" }, - { DIS_EMITTER_NAME_23175, "Pawn Cake" }, - { DIS_EMITTER_NAME_23220, "PBR 4 Rubin" }, - { DIS_EMITTER_NAME_23265, "Pea Sticks" }, - { DIS_EMITTER_NAME_23310, "Peel Cone" }, - { DIS_EMITTER_NAME_23355, "Peel Group" }, - { DIS_EMITTER_NAME_23400, "Peel Group A" }, - { DIS_EMITTER_NAME_23445, "Peel Group B" }, - { DIS_EMITTER_NAME_23490, "Peel Pair" }, - { DIS_EMITTER_NAME_23535, "Philips 9LV 200" }, - { DIS_EMITTER_NAME_23580, "Philips 9LV 331" }, - { DIS_EMITTER_NAME_23625, "Philips LV 223" }, - { DIS_EMITTER_NAME_23670, "Philips Sea Giraffe 50 HC" }, - { DIS_EMITTER_NAME_23690, "Pin Jib" }, - { DIS_EMITTER_NAME_23710, "Plank Shad" }, - { DIS_EMITTER_NAME_23715, "Plank Shave" }, - { DIS_EMITTER_NAME_23760, "Plank Shave A" }, - { DIS_EMITTER_NAME_23805, "Plank Shave B" }, - { DIS_EMITTER_NAME_23850, "Plate Steer" }, - { DIS_EMITTER_NAME_23895, "Plessey AWS 1" }, - { DIS_EMITTER_NAME_23940, "Plessey AWS 4" }, - { DIS_EMITTER_NAME_23985, "Plessey AWS 6" }, - { DIS_EMITTER_NAME_23990, "Plessey RJ" }, - { DIS_EMITTER_NAME_24030, "Plessey type 996" }, - { DIS_EMITTER_NAME_24075, "Plinth Net" }, - { DIS_EMITTER_NAME_24095, "Pluto" }, - { DIS_EMITTER_NAME_24100, "POHJANPALO" }, - { DIS_EMITTER_NAME_24120, "POLLUX" }, - { DIS_EMITTER_NAME_24165, "Pop Group" }, - { DIS_EMITTER_NAME_24210, "Pop Group MG" }, - { DIS_EMITTER_NAME_24255, "Pop Group TA" }, - { DIS_EMITTER_NAME_24300, "Pop Group TT" }, - { DIS_EMITTER_NAME_24345, "Pork Trough" }, - { DIS_EMITTER_NAME_24390, "Post Bow" }, - { DIS_EMITTER_NAME_24435, "Post Lamp" }, - { DIS_EMITTER_NAME_24480, "Pot Drum" }, - { DIS_EMITTER_NAME_24525, "Pot Head" }, - { DIS_EMITTER_NAME_24570, "PRIMUS 40 WXD" }, - { DIS_EMITTER_NAME_24615, "PRIMUS 300SL" }, - { DIS_EMITTER_NAME_24620, "Primus 3000" }, - { DIS_EMITTER_NAME_24650, "PS-05A" }, - { DIS_EMITTER_NAME_24660, "PS 46 A" }, - { DIS_EMITTER_NAME_24705, "PS 70 R" }, - { DIS_EMITTER_NAME_24710, "PS-890" }, - { DIS_EMITTER_NAME_24750, "Puff Ball" }, - { DIS_EMITTER_NAME_24770, "R-76" }, - { DIS_EMITTER_NAME_24780, "RAC-30" }, - { DIS_EMITTER_NAME_24795, "Racal 1229" }, - { DIS_EMITTER_NAME_24840, "Racal AC 2690 BT" }, - { DIS_EMITTER_NAME_24885, "Racal Decca 1216" }, - { DIS_EMITTER_NAME_24930, "Racal Decca 360" }, - { DIS_EMITTER_NAME_24975, "Racal Decca AC 1290" }, - { DIS_EMITTER_NAME_25020, "Racal Decca TM 1229" }, - { DIS_EMITTER_NAME_25065, "Racal Decca TM 1626" }, - { DIS_EMITTER_NAME_25110, "Racal DRBN 34A" }, - { DIS_EMITTER_NAME_25155, "Radar 24" }, - { DIS_EMITTER_NAME_25200, "RAN 7S" }, - { DIS_EMITTER_NAME_25205, "RAN 10S" }, - { DIS_EMITTER_NAME_25245, "RAN 11 LX" }, - { DIS_EMITTER_NAME_25260, "Rapier TA" }, - { DIS_EMITTER_NAME_25265, "Rapier 2000 TA, Dagger" }, - { DIS_EMITTER_NAME_25270, "Rapier MG" }, - { DIS_EMITTER_NAME_25280, "RAT-31S" }, - { DIS_EMITTER_NAME_25285, "RATAC (LCT)" }, - { DIS_EMITTER_NAME_25290, "Raytheon 1220" }, - { DIS_EMITTER_NAME_25300, "Raytheon 1302" }, - { DIS_EMITTER_NAME_25335, "Raytheon 1500" }, - { DIS_EMITTER_NAME_25380, "Raytheon 1645" }, - { DIS_EMITTER_NAME_25425, "Raytheon 1650" }, - { DIS_EMITTER_NAME_25470, "Raytheon 1900" }, - { DIS_EMITTER_NAME_25515, "Raytheon 2502" }, - { DIS_EMITTER_NAME_25560, "Raytheon TM 1650/6X" }, - { DIS_EMITTER_NAME_25605, "Raytheon TM 1660/12S" }, - { DIS_EMITTER_NAME_25630, "RAY-1220XR" }, - { DIS_EMITTER_NAME_25635, "RAY-1401" }, - { DIS_EMITTER_NAME_25650, "Ray 2900" }, - { DIS_EMITTER_NAME_25695, "Raypath" }, - { DIS_EMITTER_NAME_25735, "RBE2" }, - { DIS_EMITTER_NAME_25740, "RDM" }, - { DIS_EMITTER_NAME_25760, "RDY" }, - { DIS_EMITTER_NAME_25785, "RDN 72" }, - { DIS_EMITTER_NAME_25830, "RDR 1A" }, - { DIS_EMITTER_NAME_25835, "RDR 1E" }, - { DIS_EMITTER_NAME_25840, "RDR 4A" }, - { DIS_EMITTER_NAME_25875, "RDR 1200" }, - { DIS_EMITTER_NAME_25885, "RDR 1400" }, - { DIS_EMITTER_NAME_25890, "RDR 1400 C" }, - { DIS_EMITTER_NAME_25895, "RDR 1500" }, - { DIS_EMITTER_NAME_25920, "Rice Lamp" }, - { DIS_EMITTER_NAME_25965, "Rice Pad" }, - { DIS_EMITTER_NAME_26010, "Rice Screen" }, - { DIS_EMITTER_NAME_26055, "ROLAND BN" }, - { DIS_EMITTER_NAME_26100, "ROLAND MG" }, - { DIS_EMITTER_NAME_26145, "ROLAND TA" }, - { DIS_EMITTER_NAME_26190, "ROLAND TT" }, - { DIS_EMITTER_NAME_26235, "Round Ball" }, - { DIS_EMITTER_NAME_26280, "Round House" }, - { DIS_EMITTER_NAME_26325, "Round House B" }, - { DIS_EMITTER_NAME_26330, "RT-02/50" }, - { DIS_EMITTER_NAME_26350, "RTN-1A" }, - { DIS_EMITTER_NAME_26370, "RV2" }, - { DIS_EMITTER_NAME_26415, "RV3" }, - { DIS_EMITTER_NAME_26460, "RV5" }, - { DIS_EMITTER_NAME_26505, "RV10" }, - { DIS_EMITTER_NAME_26550, "RV17" }, - { DIS_EMITTER_NAME_26595, "RV18" }, - { DIS_EMITTER_NAME_26610, "RV-377" }, - { DIS_EMITTER_NAME_26640, "RV UM" }, - { DIS_EMITTER_NAME_26660, "RXN 2-60" }, - { DIS_EMITTER_NAME_26670, "S-1810CD" }, - { DIS_EMITTER_NAME_26685, "SA 2 Guideline" }, - { DIS_EMITTER_NAME_26730, "SA 3 Goa" }, - { DIS_EMITTER_NAME_26775, "SA 8 Gecko DT" }, - { DIS_EMITTER_NAME_26795, "SA-12 TELAR ILL" }, - { DIS_EMITTER_NAME_26820, "SA N 7 Gadfly TI" }, - { DIS_EMITTER_NAME_26865, "SA N 11 Cads 1 UN" }, - { DIS_EMITTER_NAME_26910, "Salt Pot A&B" }, - { DIS_EMITTER_NAME_26955, "SATURNE II" }, - { DIS_EMITTER_NAME_27000, "Scan Can" }, - { DIS_EMITTER_NAME_27045, "Scan Fix" }, - { DIS_EMITTER_NAME_27090, "Scan Odd" }, - { DIS_EMITTER_NAME_27135, "Scan Three" }, - { DIS_EMITTER_NAME_27140, "SCANTER (CSR)" }, - { DIS_EMITTER_NAME_27141, "SCORADS" }, - { DIS_EMITTER_NAME_27150, "SCOREBOARD" }, - { DIS_EMITTER_NAME_27180, "Scoup Plate" }, - { DIS_EMITTER_NAME_27190, "SCR-584" }, - { DIS_EMITTER_NAME_27225, "Sea Archer 2" }, - { DIS_EMITTER_NAME_27270, "Sea Hunter 4 MG" }, - { DIS_EMITTER_NAME_27315, "Sea Hunter 4 TA" }, - { DIS_EMITTER_NAME_27360, "Sea Hunter 4 TT" }, - { DIS_EMITTER_NAME_27405, "Sea Gull" }, - { DIS_EMITTER_NAME_27450, "Sea Net" }, - { DIS_EMITTER_NAME_27495, "Sea Spray" }, - { DIS_EMITTER_NAME_27540, "Sea Tiger" }, - { DIS_EMITTER_NAME_27570, "Searchwater" }, - { DIS_EMITTER_NAME_27585, "Selenia Orion 7" }, - { DIS_EMITTER_NAME_27630, "Selenia type 912" }, - { DIS_EMITTER_NAME_27675, "Selennia RAN 12 L/X" }, - { DIS_EMITTER_NAME_27720, "Selennia RTN 10X" }, - { DIS_EMITTER_NAME_27765, "Selinia ARP 1645" }, - { DIS_EMITTER_NAME_27810, "SGR 102 00" }, - { DIS_EMITTER_NAME_27855, "SGR 103/02" }, - { DIS_EMITTER_NAME_27870, "SGR-104" }, - { DIS_EMITTER_NAME_27900, "Sheet Bend" }, - { DIS_EMITTER_NAME_27945, "Sheet Curve" }, - { DIS_EMITTER_NAME_27990, "Ship Globe" }, - { DIS_EMITTER_NAME_28035, "Ship Wheel" }, - { DIS_EMITTER_NAME_28080, "SGR 114" }, - { DIS_EMITTER_NAME_28125, "Shore Walk A" }, - { DIS_EMITTER_NAME_28170, "Short Horn" }, - { DIS_EMITTER_NAME_28215, "Shot Dome" }, - { DIS_EMITTER_NAME_28260, "Side Globe JN" }, - { DIS_EMITTER_NAME_28280, "PRV-11, Side Net" }, - { DIS_EMITTER_NAME_28305, "Side Walk A" }, - { DIS_EMITTER_NAME_28350, "Signaal DA 02" }, - { DIS_EMITTER_NAME_28395, "Signaal DA 05" }, - { DIS_EMITTER_NAME_28440, "Signaal DA 08" }, - { DIS_EMITTER_NAME_28485, "Signaal LW 08" }, - { DIS_EMITTER_NAME_28530, "Signaal LWOR" }, - { DIS_EMITTER_NAME_28575, "Signaal M45" }, - { DIS_EMITTER_NAME_28620, "Signaal MW 08" }, - { DIS_EMITTER_NAME_28665, "Signaal SMART" }, - { DIS_EMITTER_NAME_28710, "Signaal STING" }, - { DIS_EMITTER_NAME_28755, "Signaal STIR" }, - { DIS_EMITTER_NAME_28800, "Signaal WM 20/2" }, - { DIS_EMITTER_NAME_28845, "Signaal WM 25" }, - { DIS_EMITTER_NAME_28890, "Signaal WM 27" }, - { DIS_EMITTER_NAME_28935, "Signaal WM 28" }, - { DIS_EMITTER_NAME_28980, "Signaal ZW 01" }, - { DIS_EMITTER_NAME_29025, "Signaal ZW 06" }, - { DIS_EMITTER_NAME_29070, "Ski Pole" }, - { DIS_EMITTER_NAME_29115, "Skin Head" }, - { DIS_EMITTER_NAME_29160, "Skip Spin" }, - { DIS_EMITTER_NAME_29185, "SKYGUARD TA, UAR-1021" }, - { DIS_EMITTER_NAME_29190, "SKYGUARD TT, UAR-1021" }, - { DIS_EMITTER_NAME_29205, "Sky Watch" }, - { DIS_EMITTER_NAME_29215, "SKYSHADOW" }, - { DIS_EMITTER_NAME_29220, "SKYSHIELD TA" }, - { DIS_EMITTER_NAME_29250, "SL" }, - { DIS_EMITTER_NAME_29270, "SL/ALQ-234" }, - { DIS_EMITTER_NAME_29295, "Slap Shot E" }, - { DIS_EMITTER_NAME_29340, "Slim Net" }, - { DIS_EMITTER_NAME_29385, "Slot Back A" }, - { DIS_EMITTER_NAME_29400, "Slot Back ILL" }, - { DIS_EMITTER_NAME_29430, "Slot Back B" }, - { DIS_EMITTER_NAME_29440, "Slot Rest" }, - { DIS_EMITTER_NAME_29475, "SMA 3 RM" }, - { DIS_EMITTER_NAME_29520, "SMA 3 RM 20" }, - { DIS_EMITTER_NAME_29565, "SMA 3RM 20A/SMG" }, - { DIS_EMITTER_NAME_29610, "SMA BPS 704" }, - { DIS_EMITTER_NAME_29655, "SMA SPIN 749 (V) 2" }, - { DIS_EMITTER_NAME_29700, "SMA SPN 703" }, - { DIS_EMITTER_NAME_29745, "SMA SPN 751" }, - { DIS_EMITTER_NAME_29790, "SMA SPOS 748" }, - { DIS_EMITTER_NAME_29835, "SMA SPQ 2" }, - { DIS_EMITTER_NAME_29880, "SMA SPQ 2D" }, - { DIS_EMITTER_NAME_29925, "SMA SPQ 701" }, - { DIS_EMITTER_NAME_29970, "SMA SPS 702 UPX" }, - { DIS_EMITTER_NAME_30015, "SMA ST 2 OTOMAT II MH" }, - { DIS_EMITTER_NAME_30060, "SMA 718 Beacon" }, - { DIS_EMITTER_NAME_30080, "SNAP SHOT" }, - { DIS_EMITTER_NAME_30105, "Snoop Drift" }, - { DIS_EMITTER_NAME_30150, "Snoop Head" }, - { DIS_EMITTER_NAME_30195, "Snoop Pair" }, - { DIS_EMITTER_NAME_30240, "Snoop Plate" }, - { DIS_EMITTER_NAME_30285, "Snoop Slab" }, - { DIS_EMITTER_NAME_30330, "Snoop Tray" }, - { DIS_EMITTER_NAME_30375, "Snoop Tray 1" }, - { DIS_EMITTER_NAME_30420, "Snoop Tray 2" }, - { DIS_EMITTER_NAME_30465, "Snoop Watch" }, - { DIS_EMITTER_NAME_30470, "9S18M1, Snow Drift" }, - { DIS_EMITTER_NAME_30510, "SO-1" }, - { DIS_EMITTER_NAME_30520, "SO-12" }, - { DIS_EMITTER_NAME_30555, "SO A Communist" }, - { DIS_EMITTER_NAME_30580, "SO-69" }, - { DIS_EMITTER_NAME_30600, "Sock Eye" }, - { DIS_EMITTER_NAME_30645, "SOM 64" }, - { DIS_EMITTER_NAME_30670, "SPADA TT" }, - { DIS_EMITTER_NAME_30690, "Sparrow (AIM/RIM-7) ILL" }, - { DIS_EMITTER_NAME_30700, "Sperry M-3" }, - { DIS_EMITTER_NAME_30735, "SPG 53F" }, - { DIS_EMITTER_NAME_30780, "SPG 70 (RTN 10X)" }, - { DIS_EMITTER_NAME_30825, "SPG 74 (RTN 20X)" }, - { DIS_EMITTER_NAME_30870, "SPG 75 (RTN 30X)" }, - { DIS_EMITTER_NAME_30915, "SPG 76 (RTN 30X)" }, - { DIS_EMITTER_NAME_30960, "Spin Scan A" }, - { DIS_EMITTER_NAME_31005, "Spin Scan B" }, - { DIS_EMITTER_NAME_31050, "Spin Trough" }, - { DIS_EMITTER_NAME_31095, "Splash Drop" }, - { DIS_EMITTER_NAME_31140, "SPN 35A" }, - { DIS_EMITTER_NAME_31185, "SPN 41" }, - { DIS_EMITTER_NAME_31230, "SPN 42" }, - { DIS_EMITTER_NAME_31275, "SPN 43A" }, - { DIS_EMITTER_NAME_31320, "SPN 43B" }, - { DIS_EMITTER_NAME_31365, "SPN 44" }, - { DIS_EMITTER_NAME_31410, "SPN 46" }, - { DIS_EMITTER_NAME_31455, "SPN 703" }, - { DIS_EMITTER_NAME_31500, "SPN 728 (V) 1" }, - { DIS_EMITTER_NAME_31545, "SPN 748" }, - { DIS_EMITTER_NAME_31590, "SPN 750" }, - { DIS_EMITTER_NAME_31635, "Sponge Cake" }, - { DIS_EMITTER_NAME_31680, "P-12, Spoon Rest" }, - { DIS_EMITTER_NAME_31681, "P-18, Spoon Rest A" }, - { DIS_EMITTER_NAME_31682, "P-18, Spoon Rest B" }, - { DIS_EMITTER_NAME_31684, "P-18, Spoon Rest D" }, - { DIS_EMITTER_NAME_31725, "SPQ 712 (RAN 12 L/X)" }, - { DIS_EMITTER_NAME_31770, "SPS 6C" }, - { DIS_EMITTER_NAME_31815, "SPS 10F" }, - { DIS_EMITTER_NAME_31860, "SPS 12" }, - { DIS_EMITTER_NAME_31905, "(deleted)SPS 58" }, - { DIS_EMITTER_NAME_31950, "(deleted)SPS 64" }, - { DIS_EMITTER_NAME_31995, "SPS 768 (RAN EL)" }, - { DIS_EMITTER_NAME_32040, "SPS 774 (RAN 10S)" }, - { DIS_EMITTER_NAME_32085, "SPY 790" }, - { DIS_EMITTER_NAME_32130, "Square Head" }, - { DIS_EMITTER_NAME_32175, "Square Pair" }, - { DIS_EMITTER_NAME_32220, "Square Slot" }, - { DIS_EMITTER_NAME_32265, "Square Tie" }, - { DIS_EMITTER_NAME_32310, "Squash Dome" }, - { DIS_EMITTER_NAME_32330, "P-15M, Squat Eye" }, - { DIS_EMITTER_NAME_32355, "Squint Eye" }, - { DIS_EMITTER_NAME_32400, "SRN 6" }, - { DIS_EMITTER_NAME_32445, "SRN 15" }, - { DIS_EMITTER_NAME_32490, "SRN 745" }, - { DIS_EMITTER_NAME_32535, "SRO 1" }, - { DIS_EMITTER_NAME_32580, "SRO 2" }, - { DIS_EMITTER_NAME_32625, "SS C 2B Samlet MG" }, - { DIS_EMITTER_NAME_32670, "SS N 2A B CSSC" }, - { DIS_EMITTER_NAME_32715, "SS N 2A B CSSC 2A 3A2 MH" }, - { DIS_EMITTER_NAME_32760, "SS N 2C Seeker" }, - { DIS_EMITTER_NAME_32805, "SS N 2C D Styx" }, - { DIS_EMITTER_NAME_32850, "SS N 2C D Styx C D MH" }, - { DIS_EMITTER_NAME_32895, "SS N 3 SSC SS C 18 BN" }, - { DIS_EMITTER_NAME_32940, "SS N 3B Sepal AL" }, - { DIS_EMITTER_NAME_32985, "SS N 3B Sepal MH" }, - { DIS_EMITTER_NAME_33030, "SS N 9 Siren" }, - { DIS_EMITTER_NAME_33075, "SS N 9 Siren AL" }, - { DIS_EMITTER_NAME_33120, "SS N 9 Siren MH" }, - { DIS_EMITTER_NAME_33165, "SS N 12 Sandbox AL" }, - { DIS_EMITTER_NAME_33210, "SS N 12 Sandbox MH" }, - { DIS_EMITTER_NAME_33255, "SS N 19 Shipwreck" }, - { DIS_EMITTER_NAME_33300, "SS N 19 Shipwreck AL" }, - { DIS_EMITTER_NAME_33345, "SS N 19 Shipwreck MH" }, - { DIS_EMITTER_NAME_33390, "SS N 21 AL" }, - { DIS_EMITTER_NAME_33435, "SS N 22 Sunburn" }, - { DIS_EMITTER_NAME_33480, "SS N 22 Sunburn MH" }, - { DIS_EMITTER_NAME_33525, "Stone Cake" }, - { DIS_EMITTER_NAME_33570, "STR 41" }, - { DIS_EMITTER_NAME_33590, "Straight Flush TA" }, - { DIS_EMITTER_NAME_33595, "Straight Flush TT" }, - { DIS_EMITTER_NAME_33600, "Straight Flush ILL" }, - { DIS_EMITTER_NAME_33615, "Strike Out" }, - { DIS_EMITTER_NAME_33660, "Strut Curve" }, - { DIS_EMITTER_NAME_33705, "Strut Pair" }, - { DIS_EMITTER_NAME_33750, "Strut Pair 1" }, - { DIS_EMITTER_NAME_33795, "Strut Pair 2" }, - { DIS_EMITTER_NAME_33840, "Sun Visor" }, - { DIS_EMITTER_NAME_33860, "Superfledermaus" }, - { DIS_EMITTER_NAME_33885, "Swift Rod 1" }, - { DIS_EMITTER_NAME_33930, "Swift Rod 2" }, - { DIS_EMITTER_NAME_33975, "T1166" }, - { DIS_EMITTER_NAME_34020, "T1171" }, - { DIS_EMITTER_NAME_34040, "T1202" }, - { DIS_EMITTER_NAME_34065, "T6004" }, - { DIS_EMITTER_NAME_34110, "T6031" }, - { DIS_EMITTER_NAME_34155, "T8067" }, - { DIS_EMITTER_NAME_34200, "T8068" }, - { DIS_EMITTER_NAME_34245, "T8124" }, - { DIS_EMITTER_NAME_34290, "T8408" }, - { DIS_EMITTER_NAME_34335, "T8911" }, - { DIS_EMITTER_NAME_34380, "T8937" }, - { DIS_EMITTER_NAME_34425, "T8944" }, - { DIS_EMITTER_NAME_34470, "T8987" }, - { DIS_EMITTER_NAME_34515, "P-14, Tall King" }, - { DIS_EMITTER_NAME_34560, "Tall Mike" }, - { DIS_EMITTER_NAME_34605, "Tall Path" }, - { DIS_EMITTER_NAME_34625, "Team Work" }, - { DIS_EMITTER_NAME_34640, "THAAD GBR" }, - { DIS_EMITTER_NAME_34650, "THD 225" }, - { DIS_EMITTER_NAME_34670, "THD 1940, Picador" }, - { DIS_EMITTER_NAME_34695, "THD 5500" }, - { DIS_EMITTER_NAME_34740, "Thin Path" }, - { DIS_EMITTER_NAME_34785, "PRV-9, Thin Skin" }, - { DIS_EMITTER_NAME_34795, "Thompson CSF TA-10" }, - { DIS_EMITTER_NAME_34830, "Thompson CSF TH D 1040 Neptune" }, - { DIS_EMITTER_NAME_34875, "Thompson CSF Calypso" }, - { DIS_EMITTER_NAME_34920, "Thompson CSF CASTOR" }, - { DIS_EMITTER_NAME_34965, "Thompson CSF Castor II" }, - { DIS_EMITTER_NAME_35010, "Thompson CSF DRBC 32A" }, - { DIS_EMITTER_NAME_35055, "Thompson CSF DRBJ 11 D/E" }, - { DIS_EMITTER_NAME_35100, "Thompson CSF DRBV 15A" }, - { DIS_EMITTER_NAME_35145, "Thompson CSF DRBV 15C" }, - { DIS_EMITTER_NAME_35190, "Thompson CSF DRBV 22D" }, - { DIS_EMITTER_NAME_35235, "Thompson CSF DRBV 23B" }, - { DIS_EMITTER_NAME_35280, "Thompson CSF DRUA 33" }, - { DIS_EMITTER_NAME_35325, "Thompson CSF Mars DRBV 21A" }, - { DIS_EMITTER_NAME_35370, "Thompson CSF Sea Tiger" }, - { DIS_EMITTER_NAME_35415, "Thompson CSF Triton" }, - { DIS_EMITTER_NAME_35460, "Thompson CSF Vega with DRBC 32E" }, - { DIS_EMITTER_NAME_35480, "TRS-2105, TIGER-G" }, - { DIS_EMITTER_NAME_35490, "TRS-2100, TIGER-S" }, - { DIS_EMITTER_NAME_35505, "Tie Rods" }, - { DIS_EMITTER_NAME_35550, "36D6, Tin Shield" }, - { DIS_EMITTER_NAME_35570, "Tin Trap" }, - { DIS_EMITTER_NAME_35580, "TIRSPONDER" }, - { DIS_EMITTER_NAME_35595, "Toad Stool 1" }, - { DIS_EMITTER_NAME_35640, "Toad Stool 2" }, - { DIS_EMITTER_NAME_35685, "Toad Stool 3" }, - { DIS_EMITTER_NAME_35730, "Toad Stool 4" }, - { DIS_EMITTER_NAME_35775, "Toad Stool 5" }, - { DIS_EMITTER_NAME_35800, "Tomb Stone" }, - { DIS_EMITTER_NAME_35820, "Top Bow" }, - { DIS_EMITTER_NAME_35865, "Top Dome" }, - { DIS_EMITTER_NAME_35910, "Top Knot" }, - { DIS_EMITTER_NAME_35955, "Top Mesh" }, - { DIS_EMITTER_NAME_36000, "Top Pair" }, - { DIS_EMITTER_NAME_36045, "Top Plate" }, - { DIS_EMITTER_NAME_36090, "Top Sail" }, - { DIS_EMITTER_NAME_36135, "Top Steer" }, - { DIS_EMITTER_NAME_36180, "Top Trough" }, - { DIS_EMITTER_NAME_36220, "Scrum Half TA" }, - { DIS_EMITTER_NAME_36225, "TorScrum Half TT, Tor" }, - { DIS_EMITTER_NAME_36230, "Scrum Half MG" }, - { DIS_EMITTER_NAME_36270, "Track Dish" }, - { DIS_EMITTER_NAME_36315, "TORSO M" }, - { DIS_EMITTER_NAME_36360, "Trap Door" }, - { DIS_EMITTER_NAME_36380, "TRISPONDE" }, - { DIS_EMITTER_NAME_36405, "TRS 3033" }, - { DIS_EMITTER_NAME_36420, "TRS 3405" }, - { DIS_EMITTER_NAME_36425, "TRS 3410" }, - { DIS_EMITTER_NAME_36430, "TRS 3415" }, - { DIS_EMITTER_NAME_36450, "TRS-N" }, - { DIS_EMITTER_NAME_36495, "TSE 5000" }, - { DIS_EMITTER_NAME_36540, "TSR 333" }, - { DIS_EMITTER_NAME_36585, "Tube Arm" }, - { DIS_EMITTER_NAME_36630, "Twin Eyes" }, - { DIS_EMITTER_NAME_36675, "Twin Pill" }, - { DIS_EMITTER_NAME_36720, "Twin Scan" }, - { DIS_EMITTER_NAME_36765, "Twin Scan Ro" }, - { DIS_EMITTER_NAME_36810, "Two Spot" }, - { DIS_EMITTER_NAME_36855, "TYPE 262" }, - { DIS_EMITTER_NAME_36900, "TYPE 275" }, - { DIS_EMITTER_NAME_36945, "TYPE 293" }, - { DIS_EMITTER_NAME_36990, "TYPE 343 SUN VISOR B" }, - { DIS_EMITTER_NAME_37035, "TYPE 347B" }, - { DIS_EMITTER_NAME_37050, "Type-404A(CH)" }, - { DIS_EMITTER_NAME_37080, "Type 756" }, - { DIS_EMITTER_NAME_37125, "TYPE 903" }, - { DIS_EMITTER_NAME_37170, "TYPE 909 TI" }, - { DIS_EMITTER_NAME_37215, "TYPE 909 TT" }, - { DIS_EMITTER_NAME_37260, "TYPE 910" }, - { DIS_EMITTER_NAME_37265, "TYPE-931(CH)" }, - { DIS_EMITTER_NAME_37305, "TYPE 965" }, - { DIS_EMITTER_NAME_37350, "TYPE 967" }, - { DIS_EMITTER_NAME_37395, "TYPE 968" }, - { DIS_EMITTER_NAME_37440, "TYPE 974" }, - { DIS_EMITTER_NAME_37485, "TYPE 975" }, - { DIS_EMITTER_NAME_37530, "TYPE 978" }, - { DIS_EMITTER_NAME_37575, "TYPE 992" }, - { DIS_EMITTER_NAME_37620, "TYPE 993" }, - { DIS_EMITTER_NAME_37665, "TYPE 994" }, - { DIS_EMITTER_NAME_37710, "TYPE 1006(1)" }, - { DIS_EMITTER_NAME_37755, "TYPE 1006(2)" }, - { DIS_EMITTER_NAME_37800, "TYPE 1022" }, - { DIS_EMITTER_NAME_37845, "UK MK 10" }, - { DIS_EMITTER_NAME_37850, "UPS-220C" }, - { DIS_EMITTER_NAME_37890, "UPX 1 10" }, - { DIS_EMITTER_NAME_37935, "UPX 27" }, - { DIS_EMITTER_NAME_37980, "URN 20" }, - { DIS_EMITTER_NAME_38025, "URN 25" }, - { DIS_EMITTER_NAME_38045, "VOLEX III/IV" }, - { DIS_EMITTER_NAME_38070, "W8818" }, - { DIS_EMITTER_NAME_38115, "W8838" }, - { DIS_EMITTER_NAME_38120, "W8852" }, - { DIS_EMITTER_NAME_38160, "WAS-74S" }, - { DIS_EMITTER_NAME_38205, "Wasp Head" }, - { DIS_EMITTER_NAME_38210, "WATCHDOG" }, - { DIS_EMITTER_NAME_38250, "Watch Guard" }, - { DIS_EMITTER_NAME_38260, "Watchman" }, - { DIS_EMITTER_NAME_38295, "Western Electric MK 10" }, - { DIS_EMITTER_NAME_38320, "Westinghouse ADR-4 LRSR" }, - { DIS_EMITTER_NAME_38340, "Westinghouse Electric SPG 50" }, - { DIS_EMITTER_NAME_38385, "Westinghouse Electric W 120" }, - { DIS_EMITTER_NAME_38430, "Westinghouse SPS 29C" }, - { DIS_EMITTER_NAME_38475, "Westinghouse SPS 37" }, - { DIS_EMITTER_NAME_38520, "Wet Eye" }, - { DIS_EMITTER_NAME_38565, "Wet Eye Mod" }, - { DIS_EMITTER_NAME_38570, "WGU-41/B" }, - { DIS_EMITTER_NAME_38572, "WGU-44/B" }, - { DIS_EMITTER_NAME_38610, "Whiff" }, - { DIS_EMITTER_NAME_38655, "Whiff Brick" }, - { DIS_EMITTER_NAME_38700, "Whiff Fire" }, - { DIS_EMITTER_NAME_38715, "WHITE HOUSE" }, - { DIS_EMITTER_NAME_38745, "Wild Card" }, - { DIS_EMITTER_NAME_38790, "Witch Eight" }, - { DIS_EMITTER_NAME_38835, "Witch Five" }, - { DIS_EMITTER_NAME_38880, "WM2X Series" }, - { DIS_EMITTER_NAME_38925, "WM2X Series CAS" }, - { DIS_EMITTER_NAME_38950, "WSR-74C" }, - { DIS_EMITTER_NAME_38955, "WSR-74S" }, - { DIS_EMITTER_NAME_38970, "Wood Gage" }, - { DIS_EMITTER_NAME_39015, "Yard Rake" }, - { DIS_EMITTER_NAME_39060, "Yew Loop" }, - { DIS_EMITTER_NAME_39105, "Yo-Yo" }, - { DIS_EMITTER_NAME_39150, "(deleted)" }, - { 0, NULL } -}; diff --git a/epan/dissectors/packet-dis-enums.h b/epan/dissectors/packet-dis-enums.h deleted file mode 100644 index d55ad2da4c..0000000000 --- a/epan/dissectors/packet-dis-enums.h +++ /dev/null @@ -1,2063 +0,0 @@ -/* packet-dis-enums.h - * Enumerated values and string array declarations for DIS enum parsing. - * Copyright 2005, Scientific Research Corporation - * Initial implementation by Jeremy Ouellette - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1998 Gerald Combs - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef __PACKET_DIS_ENUMS_H__ -#define __PACKET_DIS_ENUMS_H__ - -#include - -extern const value_string DIS_PDU_RadioCategory_Strings[]; -extern const value_string DIS_PDU_NomenclatureVersion_Strings[]; -extern const value_string DIS_PDU_Nomenclature_Strings[]; -extern const value_string DIS_PDU_RadioTransmitState_Strings[]; -extern const value_string DIS_PDU_RadioInputSource_Strings[]; -extern const value_string DIS_PDU_DetailModulationAmplitude_Strings[]; -extern const value_string DIS_PDU_DetailModulationAmpAndAngle_Strings[]; -extern const value_string DIS_PDU_DetailModulationAngle_Strings[]; -extern const value_string DIS_PDU_DetailModulationCombination_Strings[]; -extern const value_string DIS_PDU_DetailModulationPulse_Strings[]; -extern const value_string DIS_PDU_DetailModulationUnmodulated_Strings[]; -extern const value_string DIS_PDU_DetailModulationCPSM_Strings[]; -extern const value_string DIS_PDU_CryptoSystem_Strings[]; -extern const value_string DIS_PDU_ModParamMsgStart_Strings[]; -extern const value_string DIS_PDU_ModParamClrChannel_Strings[]; -extern const value_string DIS_PDU_TSAllocationFidelity_Strings[]; -extern const value_string DIS_PDU_TerminalPrimaryMode_Strings[]; -extern const value_string DIS_PDU_TerminalSecondaryMode_Strings[]; -extern const value_string DIS_PDU_ModParamSyncState_Strings[]; -extern const range_string DIS_PDU_Link16_CVLL_Strings[]; -extern const value_string DIS_PDU_Link16_MessageType_Strings[]; - - -typedef enum -{ - DIS_VERSION_OTHER = 0, - DIS_VERSION_1_0 = 1, - DIS_VERSION_IEEE_1278_1993 = 2, - DIS_VERSION_2_0_3RD_DRAFT = 3, - DIS_VERSION_2_0_4TH_DRAFT = 4, - DIS_VERSION_IEEE_1278_1_1995 = 5, - DIS_VERSION_IEEE_1278_1A_1998 = 6, - DIS_VERSION_IEEE_1278_1_200X = 7 -} DIS_PDU_ProtocolVersion; - -extern const value_string DIS_PDU_ProtocolVersion_Strings[]; - -typedef enum -{ - DIS_PROTOCOLFAMILY_OTHER = 0, - DIS_PROTOCOLFAMILY_ENTITY_INFORMATION_INTERACTION = 1, - DIS_PROTOCOLFAMILY_WARFARE = 2, - DIS_PROTOCOLFAMILY_LOGISTICS = 3, - DIS_PROTOCOLFAMILY_RADIO_COMMUNICATIONS = 4, - DIS_PROTOCOLFAMILY_SIMULATION_MANAGEMENT = 5, - DIS_PROTOCOLFAMILY_DISTRIBUTED_EMISSION_REGENERATION = 6, - DIS_PROTOCOLFAMILY_ENTITY_MANAGEMENT = 7, - DIS_PROTOCOLFAMILY_MINEFIELD = 8, - DIS_PROTOCOLFAMILY_SYNTHETIC_ENVIRONMENT = 9, - DIS_PROTOCOLFAMILY_SIMULATION_MANAGEMENT_WITH_RELIABILITY = 10, - DIS_PROTOCOLFAMILY_LIVE_ENTITY = 11, - DIS_PROTOCOLFAMILY_NON_REAL_TIME = 12, - DIS_PROTOCOLFAMILY_INFORMATION_OPERATIONS = 13, - DIS_PROTOCOLFAMILY_EXPERIMENTAL_COMPUTER_GENERATED_FORCES = 129, - DIS_PROTOCOLFAMILY_EXPERIMENTAL_VDIS = 130, - DIS_PROTOCOLFAMILY_PERSISTENT_OBJECT = 140, - DIS_PROTOCOLFAMILY_EXPERIMENTAL = 150 -} DIS_PDU_ProtocolFamily; - -extern const value_string DIS_PDU_ProtocolFamily_Strings[]; - -typedef enum -{ - DIS_PDUTYPE_OTHER = 0, - DIS_PDUTYPE_ENTITY_STATE = 1, - DIS_PDUTYPE_FIRE = 2, - DIS_PDUTYPE_DETONATION = 3, - DIS_PDUTYPE_COLLISION = 4, - DIS_PDUTYPE_SERVICE_REQUEST = 5, - DIS_PDUTYPE_RESUPPLY_OFFER = 6, - DIS_PDUTYPE_RESUPPLY_RECEIVED = 7, - DIS_PDUTYPE_RESUPPLY_CANCEL = 8, - DIS_PDUTYPE_REPAIR_COMPLETE = 9, - DIS_PDUTYPE_REPAIR_RESPONSE = 10, - DIS_PDUTYPE_CREATE_ENTITY = 11, - DIS_PDUTYPE_REMOVE_ENTITY = 12, - DIS_PDUTYPE_START_RESUME = 13, - DIS_PDUTYPE_STOP_FREEZE = 14, - DIS_PDUTYPE_ACKNOWLEDGE = 15, - DIS_PDUTYPE_ACTION_REQUEST = 16, - DIS_PDUTYPE_ACTION_RESPONSE = 17, - DIS_PDUTYPE_DATA_QUERY = 18, - DIS_PDUTYPE_SET_DATA = 19, - DIS_PDUTYPE_DATA = 20, - DIS_PDUTYPE_EVENT_REPORT = 21, - DIS_PDUTYPE_COMMENT = 22, - DIS_PDUTYPE_ELECTROMAGNETIC_EMISSION = 23, - DIS_PDUTYPE_DESIGNATOR = 24, - DIS_PDUTYPE_TRANSMITTER = 25, - DIS_PDUTYPE_SIGNAL = 26, - DIS_PDUTYPE_RECEIVER = 27, - DIS_PDUTYPE_IFF_ATC_NAVAIDS = 28, - DIS_PDUTYPE_UNDERWATER_ACOUSTIC = 29, - DIS_PDUTYPE_SUPPLEMENTAL_EMISSION_ENTITY_STATE = 30, - DIS_PDUTYPE_INTERCOM_SIGNAL = 31, - DIS_PDUTYPE_INTERCOM_CONTROL = 32, - DIS_PDUTYPE_AGGREGATE_STATE = 33, - DIS_PDUTYPE_IS_GROUP_OF = 34, - DIS_PDUTYPE_TRANSFER_CONTROL = 35, - DIS_PDUTYPE_IS_PART_OF = 36, - DIS_PDUTYPE_MINEFIELD_STATE = 37, - DIS_PDUTYPE_MINEFIELD_QUERY = 38, - DIS_PDUTYPE_MINEFIELD_DATA = 39, - DIS_PDUTYPE_MINEFIELD_RESPONSE_NAK = 40, - DIS_PDUTYPE_ENVIRONMENTAL_PROCESS = 41, - DIS_PDUTYPE_GRIDDED_DATA = 42, - DIS_PDUTYPE_POINT_OBJECT_STATE = 43, - DIS_PDUTYPE_LINEAR_OBJECT_STATE = 44, - DIS_PDUTYPE_AREAL_OBJECT_STATE = 45, - DIS_PDUTYPE_TSPI = 46, - DIS_PDUTYPE_APPEARANCE = 47, - DIS_PDUTYPE_ARTICULATED_PARTS = 48, - DIS_PDUTYPE_LE_FIRE = 49, - DIS_PDUTYPE_LE_DETONATION = 50, - DIS_PDUTYPE_CREATE_ENTITY_R = 51, - DIS_PDUTYPE_REMOVE_ENTITY_R = 52, - DIS_PDUTYPE_START_RESUME_R = 53, - DIS_PDUTYPE_STOP_FREEZE_R = 54, - DIS_PDUTYPE_ACKNOWLEDGE_R = 55, - DIS_PDUTYPE_ACTION_REQUEST_R = 56, - DIS_PDUTYPE_ACTION_RESPONSE_R = 57, - DIS_PDUTYPE_DATA_QUERY_R = 58, - DIS_PDUTYPE_SET_DATA_R = 59, - DIS_PDUTYPE_DATA_R = 60, - DIS_PDUTYPE_EVENT_REPORT_R = 61, - DIS_PDUTYPE_COMMENT_R = 62, - DIS_PDUTYPE_RECORD_R = 63, - DIS_PDUTYPE_SET_RECORD_R = 64, - DIS_PDUTYPE_RECORD_QUERY_R = 65, - DIS_PDUTYPE_COLLISION_ELASTIC = 66, - DIS_PDUTYPE_ENTITY_STATE_UPDATE = 67, - DIS_PDUTYPE_DIRECTED_ENERGY_FIRE = 68, - DIS_PDUTYPE_ENTITY_DAMAGE_STATUS = 69, - DIS_PDUTYPE_INFORMATION_OPERATIONS_ACTION = 70, - DIS_PDUTYPE_INFORMATION_OPERATIONS_REPORT = 71, - DIS_PDUTYPE_ATTRIBUTE = 71, - DIS_PDUTYPE_ANNOUNCE_OBJECT = 129, - DIS_PDUTYPE_DELETE_OBJECT = 130, - DIS_PDUTYPE_DESCRIBE_APPLICATION = 131, - DIS_PDUTYPE_DESCRIBE_EVENT = 132, - DIS_PDUTYPE_DESCRIBE_OBJECT = 133, - DIS_PDUTYPE_REQUEST_EVENT = 134, - DIS_PDUTYPE_REQUEST_OBJECT = 135, - DIS_PDUTYPE_APPLICATION_CONTROL = 200, - DIS_PDUTYPE_STEALTH_STATE = 201 -} DIS_PDU_Type; - -extern const value_string DIS_PDU_Type_Strings[]; - -typedef enum -{ - DIS_ENTITYKIND_OTHER = 0, - DIS_ENTITYKIND_PLATFORM = 1, - DIS_ENTITYKIND_MUNITION = 2, - DIS_ENTITYKIND_LIFE_FORM = 3, - DIS_ENTITYKIND_ENVIRONMENTAL = 4, - DIS_ENTITYKIND_CULTURAL_FEATURE = 5, - DIS_ENTITYKIND_SUPPLY = 6, - DIS_ENTITYKIND_RADIO = 7, - DIS_ENTITYKIND_EXPENDABLE = 8, - DIS_ENTITYKIND_SENSOR_EMITTER = 9 -} DIS_PDU_EntityKind; - -extern const value_string DIS_PDU_EntityKind_Strings[]; - -typedef enum -{ - DIS_DOMAIN_OTHER = 0, - DIS_DOMAIN_LAND = 1, - DIS_DOMAIN_AIR = 2, - DIS_DOMAIN_SURFACE = 3, - DIS_DOMAIN_SUBSURFACE = 4, - DIS_DOMAIN_SPACE = 5 -} DIS_PDU_Domain; - -extern const value_string DIS_PDU_Domain_Strings[]; - -typedef enum -{ - DIS_CATEGORY_LANDPLATFORM_OTHER = 0, - DIS_CATEGORY_LANDPLATFORM_TANK = 1, - DIS_CATEGORY_LANDPLATFORM_ARMORED_FIGHTING_VEHICLE = 2, - DIS_CATEGORY_LANDPLATFORM_ARMORED_UTILITY_VEHICLE = 3, - DIS_CATEGORY_LANDPLATFORM_SELF_PROPELLED_ARTILLERY = 4, - DIS_CATEGORY_LANDPLATFORM_TOWED_ARTILLERY = 5, - DIS_CATEGORY_LANDPLATFORM_SMALL_WHEELED_UTILITY_VEHICLE = 6, - DIS_CATEGORY_LANDPLATFORM_LARGE_WHEELED_UTILITY_VEHICLE = 7, - DIS_CATEGORY_LANDPLATFORM_SMALL_TRACKED_UTILITY_VEHICLE = 8, - DIS_CATEGORY_LANDPLATFORM_LARGE_TRACKED_UTILITY_VEHICLE = 9, - DIS_CATEGORY_LANDPLATFORM_MORTAR = 10, - DIS_CATEGORY_LANDPLATFORM_MINE_PLOW = 11, - DIS_CATEGORY_LANDPLATFORM_MINE_RAKE = 12, - DIS_CATEGORY_LANDPLATFORM_MINE_ROLLER = 13, - DIS_CATEGORY_LANDPLATFORM_CARGO_TRAILER = 14, - DIS_CATEGORY_LANDPLATFORM_FUEL_TRAILER = 15, - DIS_CATEGORY_LANDPLATFORM_GENERATOR_TRAILER = 16, - DIS_CATEGORY_LANDPLATFORM_WATER_TRAILER = 17, - DIS_CATEGORY_LANDPLATFORM_ENGINEER_EQUIPMENT = 18, - DIS_CATEGORY_LANDPLATFORM_HEAVY_EQUIPMENT_TRANSPORT_TRAILER = 19, - DIS_CATEGORY_LANDPLATFORM_MAINTENANCE_EQUIPMENT_TRAILER = 20, - DIS_CATEGORY_LANDPLATFORM_LIMBER = 21, - DIS_CATEGORY_LANDPLATFORM_CHEMICAL_DECONTAMINATION_TRAILER = 22, - DIS_CATEGORY_LANDPLATFORM_WARNING_SYSTEM = 23, - DIS_CATEGORY_LANDPLATFORM_TRAIN_ENGINE = 24, - DIS_CATEGORY_LANDPLATFORM_TRAIN_CAR = 25, - DIS_CATEGORY_LANDPLATFORM_TRAIN_CABOOSE = 26, - DIS_CATEGORY_LANDPLATFORM_CIVILIAN_VEHICLE = 27, - DIS_CATEGORY_LANDPLATFORM_AIR_DEFENSE_MISSILE_DEFENSE_UNIT_EQUIPMENT = 28, - DIS_CATEGORY_LANDPLATFORM_C3I_SYSTEM = 29, - DIS_CATEGORY_LANDPLATFORM_OPERATIONS_FACILITY = 30, - DIS_CATEGORY_LANDPLATFORM_INTELLIGENCE_FACILITY = 31, - DIS_CATEGORY_LANDPLATFORM_SURVEILLANCE_FACILITY = 32, - DIS_CATEGORY_LANDPLATFORM_COMMUNICATIONS_FACILITY = 33, - DIS_CATEGORY_LANDPLATFORM_COMMAND_FACILITY = 34, - DIS_CATEGORY_LANDPLATFORM_C4I_FACILITY = 35, - DIS_CATEGORY_LANDPLATFORM_CONTROL_FACILITY = 36, - DIS_CATEGORY_LANDPLATFORM_FIRE_CONTROL_FACILITY = 37, - DIS_CATEGORY_LANDPLATFORM_MISSILE_DEFENSE_FACILITY = 38, - DIS_CATEGORY_LANDPLATFORM_FIELD_COMMAND_POST = 39, - DIS_CATEGORY_LANDPLATFORM_OBSERVATION_POST = 40 -} DIS_PDU_Category_LandPlatform; - -extern const value_string DIS_PDU_Category_LandPlatform_Strings[]; - -typedef enum -{ - DIS_CATEGORY_AIRPLATFORM_OTHER = 0, - DIS_CATEGORY_AIRPLATFORM_FIGHTER_AIR_DEFENSE = 1, - DIS_CATEGORY_AIRPLATFORM_ATTACK_STRIKE = 2, - DIS_CATEGORY_AIRPLATFORM_BOMBER = 3, - DIS_CATEGORY_AIRPLATFORM_CARGO_TANKER = 4, - DIS_CATEGORY_AIRPLATFORM_ASW_PATROL_OBSERVATION = 5, - DIS_CATEGORY_AIRPLATFORM_ELECTRONIC_WARFARE = 6, - DIS_CATEGORY_AIRPLATFORM_RECONNAISSANCE = 7, - DIS_CATEGORY_AIRPLATFORM_SURVEILLANCE_C2 = 8, - DIS_CATEGORY_AIRPLATFORM_ATTACK_HELICOPTER = 20, - DIS_CATEGORY_AIRPLATFORM_UTILITY_HELICOPTER = 21, - DIS_CATEGORY_AIRPLATFORM_ANTISUB_WARFARE_PATROL_HELICOPTER = 22, - DIS_CATEGORY_AIRPLATFORM_CARGO_HELICOPTER = 23, - DIS_CATEGORY_AIRPLATFORM_OBSERVATION_HELICOPTER = 24, - DIS_CATEGORY_AIRPLATFORM_SPECIAL_OPERATIONS_HELICOPTER = 25, - DIS_CATEGORY_AIRPLATFORM_TRAINER = 40, - DIS_CATEGORY_AIRPLATFORM_UNMANNED = 50, - DIS_CATEGORY_AIRPLATFORM_NON_COMBATANT_COMMERCIAL_AIRCRAFT = 57 -} DIS_PDU_Category_AirPlatform; - -extern const value_string DIS_PDU_Category_AirPlatform_Strings[]; - -typedef enum -{ - DIS_CATEGORY_SURFACEPLATFORM_OTHER = 0 -} DIS_PDU_Category_SurfacePlatform; - -extern const value_string DIS_PDU_Category_SurfacePlatform_Strings[]; - -typedef enum -{ - DIS_CATEGORY_SUBSURFACEPLATFORM_OTHER = 0 -} DIS_PDU_Category_SubsurfacePlatform; - -extern const value_string DIS_PDU_Category_SubsurfacePlatform_Strings[]; - -typedef enum -{ - DIS_CATEGORY_SPACEPLATFORM_OTHER = 0 -} DIS_PDU_Category_SpacePlatform; - -extern const value_string DIS_PDU_Category_SpacePlatform_Strings[]; - -typedef enum -{ - DIS_ENCODING_CLASS_ENCODED_AUDIO = 0, - DIS_ENCODING_CLASS_RAW_BINARY_DATA = 1, - DIS_ENCODING_CLASS_APPL_SPEC_DATA = 2, - DIS_ENCODING_CLASS_DB_INDEX = 3 -} DIS_PDU_Encoding_Class; - -extern const value_string DIS_PDU_Encoding_Class_Strings[]; - -typedef enum -{ - DIS_ENCODING_TYPE_OTHER = 0, - DIS_ENCODING_TYPE_MU_LAW = 1, - DIS_ENCODING_TYPE_CVSD = 2, - DIS_ENCODING_TYPE_ADPCM_G721 = 3, - DIS_ENCODING_TYPE_16BIT_LINEAR_PCM = 4, - DIS_ENCODING_TYPE_8BIT_LINEAR_PCM = 5, - DIS_ENCODING_TYPE_VECTOR_QUANTIZATION = 6 -} DIS_PDU_Encoding_Type; - -extern const value_string DIS_PDU_Encoding_Type_Strings[]; - -typedef enum -{ - DIS_TDL_TYPE_OTHER = 0, - DIS_TDL_TYPE_PADIL = 1, - DIS_TDL_TYPE_NATO_LINK1 = 2, - DIS_TDL_TYPE_ATDL1 = 3, - DIS_TDL_TYPE_LINK_11B = 4, - DIS_TDL_TYPE_SADL = 5, - DIS_TDL_TYPE_JTIDS_TADIL_J = 6, - DIS_TDL_TYPE_JTIDS_FDL_TADIL_J = 7, - DIS_TDL_TYPE_LINK_11A = 8, - DIS_TDL_TYPE_IJMS = 9, - DIS_TDL_TYPE_LINK_4A = 10, - DIS_TDL_TYPE_LINK_4C = 11, - DIS_TDL_TYPE_TIBS = 12, - DIS_TDL_TYPE_ATL = 13, - DIS_TDL_TYPE_CONSTANT_SRC = 14, - DIS_TDL_TYPE_ABBRV_CC = 15, - DIS_TDL_TYPE_MILSTAR = 16, - DIS_TDL_TYPE_ATHS = 17, - DIS_TDL_TYPE_OTHGOLD = 18, - DIS_TDL_TYPE_TACELINT = 19, - DIS_TDL_TYPE_AWW13 = 20, - DIS_TDL_TYPE_ABBRV_CC_2 = 21, - DIS_TDL_TYPE_EPLRS = 22, - DIS_TDL_TYPE_PLRS = 23, - DIS_TDL_TYPE_SINCGARS = 24, - DIS_TDL_TYPE_HAVE_QUICK_I = 25, - DIS_TDL_TYPE_HAVE_QUICK_II = 26, - DIS_TDL_TYPE_HAVE_QUICK_IIA = 27, - DIS_TDL_TYPE_IFDL1 = 28, - DIS_TDL_TYPE_IFDL2 = 29, - DIS_TDL_TYPE_IDM = 30, - DIS_TDL_TYPE_AFAPD = 31, - DIS_TDL_TYPE_CEC = 32, - DIS_TDL_TYPE_FAAD_FDL = 33, - DIS_TDL_TYPE_GBDL = 34, - DIS_TDL_TYPE_IVIS = 35, - DIS_TDL_TYPE_MTS = 36, - DIS_TDL_TYPE_TACFIRE = 37, - DIS_TDL_TYPE_IBS = 38, - DIS_TDL_TYPE_ABIT = 39, - DIS_TDL_TYPE_ATARS = 40, - DIS_TDL_TYPE_BGPHES = 41, - DIS_TDL_TYPE_CHBDL = 42, - DIS_TDL_TYPE_GUARDRAIL_IDL = 43, - DIS_TDL_TYPE_GUARDRAIL_CSS1 = 44, - DIS_TDL_TYPE_GUARDRAIL_CSS2 = 45, - DIS_TDL_TYPE_GUARDRAIL_CSS2_MRDL = 46, - DIS_TDL_TYPE_GUARDRAIL_CSS2_DASR = 47, - DIS_TDL_TYPE_LOS_TETHER = 48, - DIS_TDL_TYPE_LWCDL = 49, - DIS_TDL_TYPE_L_52M = 50, - DIS_TDL_TYPE_RR_ROWL_DL = 51, - DIS_TDL_TYPE_SENIOR_SPAN = 52, - DIS_TDL_TYPE_SENIOR_SPUR = 53, - DIS_TDL_TYPE_SENIOR_STRETCH = 54, - DIS_TDL_TYPE_SENIOR_YEAR_IDL = 55, - DIS_TDL_TYPE_SPACE_CDL = 56, - DIS_TDL_TYPE_TR_1_MIST_ADL = 57, - DIS_TDL_TYPE_KU_BAND_SATCOM = 58, - DIS_TDL_TYPE_MECDL = 59, - DIS_TDL_TYPE_RADAR_DATA_TSDL = 60, - DIS_TDL_TYPE_SCDL = 61, - DIS_TDL_TYPE_TACTICAL_UAV_VIDEO = 62, - DIS_TDL_TYPE_UHF_SATCOM = 63, - DIS_TDL_TYPE_TCDL = 64, - DIS_TDL_TYPE_LLAPI = 65, - DIS_TDL_TYPE_WEAPONS_DL = 66, - DIS_TDL_TYPE_GC3 = 99, - DIS_TDL_TYPE_LINK16_STD = 100, - DIS_TDL_TYPE_LINK16_EDR = 101, - DIS_TDL_TYPE_JTIDS_NET_DATA_LOAD = 102, - DIS_TDL_TYPE_LINK22 = 103, - DIS_TDL_TYPE_AFIWC_IADS = 104 -} DIS_PDU_TDL_Type; - -extern const value_string DIS_PDU_TDL_Type_Strings[]; - -typedef enum -{ - DIS_PATTERN_OMNI_DIRECTIONAL = 0, - DIS_PATTERN_BEAM = 1, - DIS_PATTERN_SPHERICAL_HARMONIC = 2 -} DIS_PDU_AntennaPattern_Type; - -extern const value_string DIS_PDU_AntennaPatternType_Strings[]; - -typedef enum -{ - DIS_SYSTEM_MOD_OTHER = 0, - DIS_SYSTEM_MOD_GENERIC = 1, - DIS_SYSTEM_MOD_HQ = 2, - DIS_SYSTEM_MOD_HQII = 3, - DIS_SYSTEM_MOD_HQIIA = 4, - DIS_SYSTEM_MOD_SINCGARS = 5, - DIS_SYSTEM_MOD_CCTT_SINCGARS = 6, - DIS_SYSTEM_MOD_EPLRS = 7, - DIS_SYSTEM_MOD_JTIDS_MIDS = 8 -} DIS_PDU_SYSTEM_MODULATION_TYPE; - -extern const value_string DIS_PDU_SystemModulation_Strings[]; - -typedef enum -{ - DIS_MAJOR_MOD_OTHER = 0, - DIS_MAJOR_MOD_AMPLITUDE = 1, - DIS_MAJOR_MOD_AMPLITUDE_AND_ANGLE = 2, - DIS_MAJOR_MOD_ANGLE = 3, - DIS_MAJOR_MOD_COMBINATION = 4, - DIS_MAJOR_MOD_PULSE = 5, - DIS_MAJOR_MOD_UNMODULATED = 6, - DIS_MAJOR_MOD_CPSM = 7 -} DIS_PDU_MAJOR_MODULATION_TYPE; - -extern const value_string DIS_PDU_MajorModulation_Strings[]; - -typedef enum -{ - DIS_MESSAGE_TYPE_JTIDS_HEADER_MESSAGES = 0, - DIS_MESSAGE_TYPE_RTT_A_B, - DIS_MESSAGE_TYPE_RTT_REPLY, - DIS_MESSAGE_TYPE_JTIDS_VOICE_CVSD, - DIS_MESSAGE_TYPE_JTIDS_VOICE_LPC10, - DIS_MESSAGE_TYPE_JTIDS_VOICE_LPC12, - DIS_MESSAGE_TYPE_JTIDS_LET, - DIS_MESSAGE_TYPE_VMF -} DIS_PDU_MessageType; - -extern const value_string DIS_PDU_JTIDS_MessageType_Strings[]; - -typedef enum -{ - DIS_EMISSION_FUNCTION_OTHER = 0, - DIS_EMISSION_FUNCTION_MULTI_FUNCTION = 1, - DIS_EMISSION_FUNCTION_EARLY_WARNING_SURVEILLANCE = 2, - DIS_EMISSION_FUNCTION_HEIGHT_FINDING = 3, - DIS_EMISSION_FUNCTION_FIRE_CONTROL = 4, - DIS_EMISSION_FUNCTION_ACQUISITION_DETECTION = 5, - DIS_EMISSION_FUNCTION_TRACKING = 6, - DIS_EMISSION_FUNCTION_GUIDANCE_ILLUMINATION = 7, - DIS_EMISSION_FUNCTION_FIRING_POINT_LAUNCH_POINT_LOCATION = 8, - DIS_EMISSION_FUNCTION_RANGING = 9, - DIS_EMISSION_FUNCTION_RADAR_ALTIMETER = 10, - DIS_EMISSION_FUNCTION_IMAGING = 11, - DIS_EMISSION_FUNCTION_MOTION_DETECTION = 12, - DIS_EMISSION_FUNCTION_NAVIGATION = 13, - DIS_EMISSION_FUNCTION_WEATHER_METEROLOGICAL = 14, - DIS_EMISSION_FUNCTION_INSTRUMENTATION = 15, - DIS_EMISSION_FUNCTION_IDENTIFICATION_CLASSIFICATION_INCLUDING_IFF = 16, - DIS_EMISSION_FUNCTION_AAA_FIRE_CONTROL = 17, - DIS_EMISSION_FUNCTION_AIR_SEARCH_BOMB = 18, - DIS_EMISSION_FUNCTION_AIR_INTERCEPT = 19, - DIS_EMISSION_FUNCTION_ALTIMETER = 20, - DIS_EMISSION_FUNCTION_AIR_MAPPING = 21, - DIS_EMISSION_FUNCTION_AIR_TRAFFIC_CONTROL = 22, - DIS_EMISSION_FUNCTION_BEACON = 23, - DIS_EMISSION_FUNCTION_BATTLEFIELD_SURVEILLANCE = 24, - DIS_EMISSION_FUNCTION_GROUND_CONTROL_APPROACH = 25, - DIS_EMISSION_FUNCTION_GROUND_CONTROL_INTERCEPT = 26, - DIS_EMISSION_FUNCTION_COASTAL_SURVEILLANCE = 27, - DIS_EMISSION_FUNCTION_DECOY_MIMIC = 28, - DIS_EMISSION_FUNCTION_DATA_TRANSMISSION = 29, - DIS_EMISSION_FUNCTION_EARTH_SURVEILLANCE = 30, - DIS_EMISSION_FUNCTION_GUN_LAY_BEACON = 31, - DIS_EMISSION_FUNCTION_GROUND_MAPPING = 32, - DIS_EMISSION_FUNCTION_HARBOR_SURVEILLANCE = 33, - /* enum 34 deleted */ - DIS_EMISSION_FUNCTION_ILS = 35, - DIS_EMISSION_FUNCTION_IONOSPHERIC_SOUND = 36, - DIS_EMISSION_FUNCTION_INTERROGATOR = 37, - DIS_EMISSION_FUNCTION_BARRAGE_JAMMING = 38, - DIS_EMISSION_FUNCTION_CLICK_JAMMING = 39, - /* enum 40 deleted */ - DIS_EMISSION_FUNCTION_FREQUENCY_SWEPT_JAMMING = 41, - DIS_EMISSION_FUNCTION_JAMMING = 42, - /* enum 43 deleted */ - DIS_EMISSION_FUNCTION_PULSED_JAMMING = 44, - DIS_EMISSION_FUNCTION_REPEATER_JAMMING = 45, - DIS_EMISSION_FUNCTION_SPOT_NOISE_JAMMING = 46, - DIS_EMISSION_FUNCTION_MISSILE_ACQUISITION = 47, - DIS_EMISSION_FUNCTION_MISSILE_DOWNLINK = 48, - /* enum 49 deleted */ - DIS_EMISSION_FUNCTION_SPACE = 50, - DIS_EMISSION_FUNCTION_SURFACE_SEARCH = 51, - DIS_EMISSION_FUNCTION_SHELL_TRACKING = 52, - /* enums 52-55 unassigned */ - DIS_EMISSION_FUNCTION_TELEVISION = 56, - DIS_EMISSION_FUNCTION_UNKNOWN = 57, - DIS_EMISSION_FUNCTION_VIDEO_REMOTING = 58, - DIS_EMISSION_FUNCTION_EXPERIMENTAL_OR_TRAINING = 59, - DIS_EMISSION_FUNCTION_MISSILE_GUIDANCE = 60, - DIS_EMISSION_FUNCTION_MISSILE_HOMING = 61, - DIS_EMISSION_FUNCTION_MISSILE_TRACKING = 62, - /* enum 63 unassigned */ - DIS_EMISSION_FUNCTION_JAMMING_NOISE = 64, - DIS_EMISSION_FUNCTION_JAMMING_DECEPTION = 65, - /* enum 66 deleted */ - /* enums 67-70 unassigned */ - DIS_EMISSION_FUNCTION_NAVIGATION_DISTANCE_MEASURING_EQUIPMENT = 71, - DIS_EMISSION_FUNCTION_TERRAIN_FOLLOWING = 72, - DIS_EMISSION_FUNCTION_WEATHER_AVOIDANCE = 73, - DIS_EMISSION_FUNCTION_PROXIMITY_FUSE = 74, - /* enum 75 deleted */ - DIS_EMISSION_FUNCTION_RADIOSONDE = 76, - DIS_EMISSION_FUNCTION_SONOBUOY = 77, - DIS_EMISSION_FUNCTION_BATHYTHERMAL_SENSOR = 78, - DIS_EMISSION_FUNCTION_TOWED_COUNTER_MEASURE = 79, - /* enums 80-95 unassigned */ - DIS_EMISSION_FUNCTION_WEAPON_NON_LETHAL = 96, - DIS_EMISSION_FUNCTION_WEAPON_LETHAL = 97 -} DIS_PDU_Emission_Function; - -extern const value_string DIS_PDU_EmissionFunction_Strings[]; - -typedef enum -{ - DIS_BEAM_FUNCTION_OTHER = 0, - DIS_BEAM_FUNCTION_SEARCH = 1, - DIS_BEAM_FUNCTION_HEIGHT_FINDER = 2, - DIS_BEAM_FUNCTION_ACQUISITION = 3, - DIS_BEAM_FUNCTION_TRACKING = 4, - DIS_BEAM_FUNCTION_ACQUISITION_TRACKING = 5, - DIS_BEAM_FUNCTION_COMMAND_GUIDANCE = 6, - DIS_BEAM_FUNCTION_ILLUMINATION = 7, - DIS_BEAM_FUNCTION_RANGE_ONLY_RADAR = 8, - DIS_BEAM_FUNCTION_MISSILE_BEACON = 9, - DIS_BEAM_FUNCTION_MISSILE_FUZE = 10, - DIS_BEAM_FUNCTION_ACTIVE_RADAR_MISSILE_SEEKER = 11, - DIS_BEAM_FUNCTION_JAMMER = 12, - DIS_BEAM_FUNCTION_IFF = 13, - DIS_BEAM_FUNCTION_NAVIGATIONAL_WEATHER = 14, - DIS_BEAM_FUNCTION_METEOROLOGICAL = 15, - DIS_BEAM_FUNCTION_DATA_TRANSMISSION = 16, - DIS_BEAM_FUNCTION_NAVIGATIONAL_DIRECTIONAL_BEACON = 17 -} DIS_PDU_Beam_Function; - -extern const value_string DIS_PDU_BeamFunction_Strings[]; - -typedef enum -{ - DIS_ACKNOWLEDGE_FLAG_CREATE_ENTITY = 1, - DIS_ACKNOWLEDGE_FLAG_REMOVE_ENTITY = 2, - DIS_ACKNOWLEDGE_FLAG_START_RESUME = 3, - DIS_ACKNOWLEDGE_FLAG_STOP_FREEZE = 4, - DIS_ACKNOWLEDGE_FLAG_TRANSFER_CONTROL_REQUEST = 5 -} DIS_PDU_AcknowledgeFlag; - -extern const value_string DIS_PDU_AcknowledgeFlag_Strings[]; - -typedef enum -{ - DIS_ACTION_ID_OTHER = 0, - DIS_ACTION_ID_LOCAL_STORAGE_OF_THE_REQUESTED_INFORMATION = 1, - DIS_ACTION_ID_INFORM_SM_OF_EVENT_RAN_OUT_OF_AMMUNITION = 2, - DIS_ACTION_ID_INFORM_SM_OF_EVENT_KILLED_IN_ACTION = 3, - DIS_ACTION_ID_INFORM_SM_OF_EVENT_DAMAGE = 4, - DIS_ACTION_ID_INFORM_SM_OF_EVENT_MOBILITY_DISABLED = 5, - DIS_ACTION_ID_INFORM_SM_OF_EVENT_FIRE_DISABLED = 6, - DIS_ACTION_ID_INFORM_SM_OF_EVENT_RAN_OUT_OF_FUEL = 7, - DIS_ACTION_ID_RECALL_CHECKPOINT_DATA = 8, - DIS_ACTION_ID_RECALL_INITIAL_PARAMETERS = 9, - DIS_ACTION_ID_INITIATE_TETHER_LEAD = 10, - DIS_ACTION_ID_INITIATE_TETHER_FOLLOW = 11, - DIS_ACTION_ID_UNTETHER = 12, - DIS_ACTION_ID_INITIATE_SERVICE_STATION_RESUPPLY = 13, - DIS_ACTION_ID_INITIATE_TAILGATE_RESUPPLY = 14, - DIS_ACTION_ID_INITIATE_HITCH_LEAD = 15, - DIS_ACTION_ID_INITIATE_HITCH_FOLLOW = 16, - DIS_ACTION_ID_UNHITCH = 17, - DIS_ACTION_ID_MOUNT = 18, - DIS_ACTION_ID_DISMOUNT = 19, - DIS_ACTION_ID_START_DRC = 20, - DIS_ACTION_ID_STOP_DRC = 21, - DIS_ACTION_ID_DATA_QUERY = 22, - DIS_ACTION_ID_STATUS_REQUEST = 23, - DIS_ACTION_ID_SEND_OBJECT_STATE_DATA = 24, - DIS_ACTION_ID_RECONSTITUTE = 25, - DIS_ACTION_ID_LOCK_SITE_CONFIGURATION = 26, - DIS_ACTION_ID_UNLOCK_SITE_CONFIGURATION = 27, - DIS_ACTION_ID_UPDATE_SITE_CONFIGURATION = 28, - DIS_ACTION_ID_QUERY_SITE_CONFIGURATION = 29, - DIS_ACTION_ID_TETHERING_INFORMATION = 30, - DIS_ACTION_ID_MOUNT_INTENT = 31, - DIS_ACTION_ID_ACCEPT_SUBSCRIPTION = 33, - DIS_ACTION_ID_UNSUBSCRIBE = 34, - DIS_ACTION_ID_TELEPORT_ENTITY = 35, - DIS_ACTION_ID_CHANGE_AGGREGATE_STATE = 36, - DIS_ACTION_ID_REQUEST_START_PDU = 37, - DIS_ACTION_ID_WAKEUP_GET_READY_FOR_INITIALIZATION = 38, - DIS_ACTION_ID_INITIALIZE_INTERNAL_PARAMETERS = 39, - DIS_ACTION_ID_SEND_PLAN_DATA = 40, - DIS_ACTION_ID_SYNCHRONIZE_INTERNAL_CLOCKS = 41, - DIS_ACTION_ID_RUN = 42, - DIS_ACTION_ID_SAVE_INTERNAL_PARAMETERS = 43, - DIS_ACTION_ID_SIMULATE_MALFUNCTION = 44, - DIS_ACTION_ID_JOIN_EXERCISE = 45, - DIS_ACTION_ID_RESIGN_EXERCISE = 46, - DIS_ACTION_ID_TIME_ADVANCE = 47, - DIS_ACTION_ID_COMMAND_FROM_SIMULATOR = 48, - DIS_ACTION_ID_SLING_LOAD_CAPABILITY_REQUEST = 4300, - DIS_ACTION_ID_SLING_ATTACH_REQUEST = 4301, - DIS_ACTION_ID_SLING_RELEASE_REQUEST = 4302, - DIS_ACTION_ID_AIRMOUNT_MOUNT_REQUEST = 4303, - DIS_ACTION_ID_AIRMOUNT_DISMOUNT_REQUEST = 4304, - DIS_ACTION_ID_AIRMOUNT_INFO_REQUEST = 4305 -} DIS_PDU_ActionId; - -extern const value_string DIS_PDU_ActionId_Strings[]; - -typedef enum -{ - DIS_APPLICATION_GENERAL_STATUS_UNKNOWN = 1, - DIS_APPLICATION_GENERAL_STATUS_FUNCTIONAL = 2, - DIS_APPLICATION_GENERAL_STATUS_DEGRADED_BUT_FUNCTIONAL = 3, - DIS_APPLICATION_GENERAL_STATUS_NOT_FUNCTIONAL = 4 -} DIS_PDU_ApplicationGeneralStatus; - -extern const value_string DIS_PDU_ApplicationGeneralStatus_Strings[]; - -typedef enum -{ - DIS_APPLICATION_STATUS_TYPE_NOT_SPECIFIED = 0, - DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_USER = 10, - DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_SYSTEM = 11, - DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_IO = 12, - DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_IDLE = 13, - DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_STEAL = 14, - DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_NICE = 15, - DIS_APPLICATION_STATUS_TYPE_MEMORY_FREE = 50, - DIS_APPLICATION_STATUS_TYPE_MEMORY_USED = 51, - DIS_APPLICATION_STATUS_TYPE_SWAP_FREE = 60, - DIS_APPLICATION_STATUS_TYPE_SWAP_USED = 61, - DIS_APPLICATION_STATUS_TYPE_SWAP_CACHED = 62, - DIS_APPLICATION_STATUS_TYPE_TRANSMITTED_PACKETS_SEC = 100, - DIS_APPLICATION_STATUS_TYPE_TRANSMITTED_BYTES_SEC = 101, - DIS_APPLICATION_STATUS_TYPE_RECEIVED_PACKETS_SEC = 110, - DIS_APPLICATION_STATUS_TYPE_RECEIVED_BYTES_SEC = 111, - DIS_APPLICATION_STATUS_TYPE_NICE_LEVEL = 150 -} DIS_PDU_ApplicationStatusType; - -extern const value_string DIS_PDU_ApplicationStatusType_Strings[]; - -typedef enum -{ - DIS_APPLICATION_TYPE_OTHER = 0, - DIS_APPLICATION_TYPE_RESOURCE_MANAGER = 1, - DIS_APPLICATION_TYPE_SIMULATION_MANAGER = 2, - DIS_APPLICATION_TYPE_GATEWAY = 3, - DIS_APPLICATION_TYPE_STEALTH = 4, - DIS_APPLICATION_TYPE_TACTICAL_INTERNET_INTERFACE = 5 -} DIS_PDU_ApplicationType; - -extern const value_string DIS_PDU_ApplicationType_Strings[]; - -typedef enum -{ - DIS_DETONATION_RESULT_OTHER = 0, - DIS_DETONATION_RESULT_ENTITY_IMPACT = 1, - DIS_DETONATION_RESULT_ENTITY_PROXIMATE_DETONATION = 2, - DIS_DETONATION_RESULT_GROUND_IMPACT = 3, - DIS_DETONATION_RESULT_GROUND_PROXIMATE_DETONATION = 4, - DIS_DETONATION_RESULT_DETONATION = 5, - DIS_DETONATION_RESULT_NONE_DUD = 6, - DIS_DETONATION_RESULT_HE_HIT_SMALL = 7, - DIS_DETONATION_RESULT_HE_HIT_MEDIUM = 8, - DIS_DETONATION_RESULT_HE_HIT_LARGE = 9, - DIS_DETONATION_RESULT_ARMOR_PIERCING_HIT = 10, - DIS_DETONATION_RESULT_DIRT_BLAST_SMALL = 11, - DIS_DETONATION_RESULT_DIRT_BLAST_MEDIUM = 12, - DIS_DETONATION_RESULT_DIRT_BLAST_LARGE = 13, - DIS_DETONATION_RESULT_WATER_BLAST_SMALL = 14, - DIS_DETONATION_RESULT_WATER_BLAST_MEDIUM = 15, - DIS_DETONATION_RESULT_WATER_BLAST_LARGE = 16, - DIS_DETONATION_RESULT_AIR_HIT = 17, - DIS_DETONATION_RESULT_BUILDING_HIT_SMALL = 18, - DIS_DETONATION_RESULT_BUILDING_HIT_MEDIUM = 19, - DIS_DETONATION_RESULT_BUILDING_HIT_LARGE = 20, - DIS_DETONATION_RESULT_MINE_CLEARING_LINE_CHARGE = 21, - DIS_DETONATION_RESULT_ENVIRONMENT_OBJECT_IMPACT = 22, - DIS_DETONATION_RESULT_ENVIRONMENT_OBJECT_PROXIMATE_DETONATION = 23, - DIS_DETONATION_RESULT_WATER_IMPACT = 24, - DIS_DETONATION_RESULT_AIR_BURST = 25, - DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_1 = 26, - DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_2 = 27, - DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_3 = 28, - DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_1_AFTER_FOF = 29, - DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_2_AFTER_FOF = 30, - DIS_DETONATION_RESULT_MISS_DUE_TO_FOF = 31, - DIS_DETONATION_RESULT_MISS_DUE_TO_ENDGAME_FAILURE = 32, - DIS_DETONATION_RESULT_MISS_DUE_TO_FOF_AND_ENDGAME_FAILURE = 33 -} DIS_PDU_DetonationResult; - -extern const value_string DIS_PDU_DetonationResult_Strings[]; - -typedef enum -{ - DIS_CONTROL_ID_OTHER = 0, - DIS_CONTROL_ID_SHUTDOWN = 1, - DIS_CONTROL_ID_DATA_QUERY = 2, - DIS_CONTROL_ID_DATA = 3, - DIS_CONTROL_ID_SET_DATA = 4, - DIS_CONTROL_ID_ADD_DATA = 5, - DIS_CONTROL_ID_REMOVE_DATA = 6, - DIS_CONTROL_ID_STATUS = 7 -} DIS_PDU_ControlId; - -extern const value_string DIS_PDU_ControlId_Strings[]; - -typedef enum -{ - DIS_FROZEN_BEHAVIOR_RUN_INTERNAL_SIMULATION_CLOCK = 0, - DIS_FROZEN_BEHAVIOR_TRANSMIT_PDUS = 1, - DIS_FROZEN_BEHAVIOR_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES = 2, - DIS_FROZEN_BEHAVIOR_CONTINUE_TRANSMIT_PDU = 3, - DIS_FROZEN_BEHAVIOR_CEASE_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES = 4, - DIS_FROZEN_BEHAVIOR_CONTINUE_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES = 5 -} DIS_PDU_FrozenBehavior; - -extern const value_string DIS_PDU_FrozenBehavior_Strings[]; - -typedef enum -{ - DIS_PARAM_TYPE_DESIG_ARTICULATED_PART = 0, - DIS_PARAM_TYPE_DESIG_ATTACHED_PART = 1, - DIS_PARAM_TYPE_DESIG_SEPARATION = 2, - DIS_PARAM_TYPE_DESIG_ENTITY_TYPE = 3, - DIS_PARAM_TYPE_DESIG_ENTITY_ASSOCIATION = 4, - DIS_PARAM_TYPE_DESIG_ANTENNA_LOCATION = 5, - DIS_PARAM_TYPE_DESIG_EXTENDED_PLATFORM_APPEARANCE = 20, - DIS_PARAM_TYPE_DESIG_EXTENDED_LIFEFORM_APPEARANCE = 21, - DIS_PARAM_TYPE_DESIG_HIGH_FIDELITY_LIGHTS = 22, - DIS_PARAM_TYPE_DESIG_CHEVRON_MARKING = 23, - DIS_PARAM_TYPE_DESIG_HIGH_FIDELITY_THERMAL_SENSOR = 24, - DIS_PARAM_TYPE_DESIG_ENTITY_OFFSET = 25, - DIS_PARAM_TYPE_DESIG_DEAD_RECKONING = 26, - DIS_PARAM_TYPE_DESIG_ARMY_TASK_ORGANIZATION = 27, - DIS_PARAM_TYPE_DESIG_HEAD_GAZING_WEAPON_AIMING = 28, - DIS_PARAM_TYPE_DESIG_LIFEFORM_ACTION_SEQUENCE = 29, - DIS_PARAM_TYPE_DESIG_LEGACY_EXTENDED_LIFEFORM_APPEARANCE = 30 -} DIS_PDU_ParameterTypeDesignator; - -extern const value_string DIS_PDU_ParameterTypeDesignator_Strings[]; - -typedef enum -{ - DIS_REASON_OTHER = 0, - DIS_REASON_RECESS = 1, - DIS_REASON_TERMINATION = 2, - DIS_REASON_SYSTEM_FAILURE = 3, - DIS_REASON_SECURITY_VIOLATION = 4, - DIS_REASON_ENTITY_RECONSTITUTION = 5, - DIS_REASON_STOP_FOR_RESET = 6, - DIS_REASON_STOP_FOR_RESTART = 7, - DIS_REASON_ABORT_TRAINING_RETURN_TO_TACTICAL_OPERATIONS = 8 -} DIS_PDU_Reason; - -extern const value_string DIS_PDU_Reason_Strings[]; - -typedef enum -{ - DIS_REQUEST_STATUS_OTHER = 0, - DIS_REQUEST_STATUS_PENDING = 1, - DIS_REQUEST_STATUS_EXECUTING = 2, - DIS_REQUEST_STATUS_PARTIALLY_COMPLETE = 3, - DIS_REQUEST_STATUS_COMPLETE = 4, - DIS_REQUEST_STATUS_REQUEST_REJECTED = 5, - DIS_REQUEST_STATUS_RETRANSMIT_REQUEST_NOW = 6, - DIS_REQUEST_STATUS_RETRANSMIT_REQUEST_LATER = 7, - DIS_REQUEST_STATUS_INVALID_TIME_PARAMETERS = 8, - DIS_REQUEST_STATUS_SIMULATION_TIME_EXCEEDED = 9, - DIS_REQUEST_STATUS_REQUEST_DONE = 10, - DIS_REQUEST_STATUS_TACCSF_LOS_REPLY_TYPE_1 = 100, - DIS_REQUEST_STATUS_TACCSF_LOS_REPLY_TYPE_2 = 101, - DIS_REQUEST_STATUS_JOIN_EXERCISE_REQUEST_REJECTED = 201 -} DIS_PDU_RequestStatus; - -extern const value_string DIS_PDU_RequestStatus_Strings[]; - -typedef enum -{ - DIS_REQUIRED_RELIABILITY_SERVICE_ACKNOWLEDGED = 0, - DIS_REQUIRED_RELIABILITY_SERVICE_UNACKNOWLEDGED = 1 -} DIS_PDU_RequiredReliabilityService; - -extern const value_string DIS_PDU_RequiredReliabilityService_Strings[]; - -typedef enum -{ - DIS_RESPONSE_FLAG_OTHER = 0, - DIS_RESPONSE_FLAG_ABLE_TO_COMPLY = 1, - DIS_RESPONSE_FLAG_UNABLE_TO_COMPLY = 2, - DIS_RESPONSE_FLAG_PENDING_OPERATOR_ACTION = 3 -} DIS_PDU_DisResponseFlag; - -extern const value_string DIS_PDU_DisResponseFlag_Strings[]; - -typedef enum -{ - DIS_PERSISTENT_OBJECT_TYPE_OTHER = 0, - DIS_PERSISTENT_OBJECT_TYPE_SIMULATOR_PRESENT = 1, - DIS_PERSISTENT_OBJECT_TYPE_DESCRIBE_OBJECT = 2, - DIS_PERSISTENT_OBJECT_TYPE_OBJECTS_PRESENT = 3, - DIS_PERSISTENT_OBJECT_TYPE_OBJECT_REQUEST = 4, - DIS_PERSISTENT_OBJECT_TYPE_DELETE_OBJECTS = 5, - DIS_PERSISTENT_OBJECT_TYPE_SET_WORLD_STATE = 6, - DIS_PERSISTENT_OBJECT_TYPE_NOMINATION = 7 -} DIS_PDU_PersistentObjectType; - -extern const value_string DIS_PDU_PersistentObjectType_Strings[]; - -typedef enum -{ - DIS_PO_OBJECT_CLASS_OTHER = 0, - DIS_PO_OBJECT_CLASS_WORLD_STATE = 1, - DIS_PO_OBJECT_CLASS_OVERLAY = 2, - DIS_PO_OBJECT_CLASS_POINT = 3, - DIS_PO_OBJECT_CLASS_LINE = 4, - DIS_PO_OBJECT_CLASS_SECTOR = 5, - DIS_PO_OBJECT_CLASS_TEXT = 6, - DIS_PO_OBJECT_CLASS_UNIT = 7, - DIS_PO_OBJECT_CLASS_UNIT_DEFINITION = 8, - DIS_PO_OBJECT_CLASS_STEALTH_CONTROLLER = 9, - DIS_PO_OBJECT_CLASS_H_HOUR = 10, - DIS_PO_OBJECT_CLASS_VARIABLE = 11, - DIS_PO_OBJECT_CLASS_TASK = 12, - DIS_PO_OBJECT_CLASS_TASK_STATE = 13, - DIS_PO_OBJECT_CLASS_TASK_FRAME = 14, - DIS_PO_OBJECT_CLASS_TASK_AUTHORIZATION = 15, - DIS_PO_OBJECT_CLASS_PARAMETRIC_INPUT = 16, - DIS_PO_OBJECT_CLASS_PARAMETRIC_INPUT_HOLDER = 17, - DIS_PO_OBJECT_CLASS_EXERCISE_INITIALIZER = 18, - DIS_PO_OBJECT_CLASS_FIRE_PARAMETERS = 19, - DIS_PO_OBJECT_CLASS_MINEFIELD = 20, - DIS_PO_OBJECT_CLASS_SIMULATION_REQUEST = 21, - DIS_PO_OBJECT_CLASS_NET_SUBSCRIPTION = 22, - DIS_PO_OBJECT_CLASS_LINK = 23, - DIS_PO_OBJECT_CLASS_MINEFIELD_PARENT = 24, - DIS_PO_OBJECT_CLASS_CHEMICAL = 25, - DIS_PO_OBJECT_CLASS_AlertUser = 26, - DIS_PO_OBJECT_CLASS_HAND_OFF = 27, - DIS_PO_OBJECT_CLASS_CIRCUIT = 28, - DIS_PO_OBJECT_CLASS_CARGO = 29, - DIS_PO_OBJECT_CLASS_MCM_ROUTE = 30, - DIS_PO_OBJECT_CLASS_MESSAGE = 31 -} DIS_PDU_PO_ObjectClass; - -extern const value_string DIS_PDU_PO_ObjectClass_Strings[]; - -typedef enum -{ - DIS_EMITTER_NAME_10 = 10, - DIS_EMITTER_NAME_45 = 45, - DIS_EMITTER_NAME_80 = 80, - DIS_EMITTER_NAME_90 = 90, - DIS_EMITTER_NAME_135 = 135, - DIS_EMITTER_NAME_180 = 180, - DIS_EMITTER_NAME_225 = 225, - DIS_EMITTER_NAME_270 = 270, - DIS_EMITTER_NAME_315 = 315, - DIS_EMITTER_NAME_360 = 360, - DIS_EMITTER_NAME_405 = 405, - DIS_EMITTER_NAME_450 = 450, - DIS_EMITTER_NAME_495 = 495, - DIS_EMITTER_NAME_540 = 540, - DIS_EMITTER_NAME_585 = 585, - DIS_EMITTER_NAME_630 = 630, - DIS_EMITTER_NAME_675 = 675, - DIS_EMITTER_NAME_720 = 720, - DIS_EMITTER_NAME_765 = 765, - DIS_EMITTER_NAME_810 = 810, - DIS_EMITTER_NAME_855 = 855, - DIS_EMITTER_NAME_900 = 900, - DIS_EMITTER_NAME_945 = 945, - DIS_EMITTER_NAME_990 = 990, - DIS_EMITTER_NAME_1035 = 1035, - DIS_EMITTER_NAME_1080 = 1080, - DIS_EMITTER_NAME_1095 = 1095, - DIS_EMITTER_NAME_1100 = 1100, - DIS_EMITTER_NAME_1125 = 1125, - DIS_EMITTER_NAME_1170 = 1170, - DIS_EMITTER_NAME_1215 = 1215, - DIS_EMITTER_NAME_1260 = 1260, - DIS_EMITTER_NAME_1280 = 1280, - DIS_EMITTER_NAME_1282 = 1282, - DIS_EMITTER_NAME_1305 = 1305, - DIS_EMITTER_NAME_1350 = 1350, - DIS_EMITTER_NAME_1395 = 1395, - DIS_EMITTER_NAME_1400 = 1400, - DIS_EMITTER_NAME_1440 = 1440, - DIS_EMITTER_NAME_1485 = 1485, - DIS_EMITTER_NAME_1530 = 1530, - DIS_EMITTER_NAME_1575 = 1575, - DIS_EMITTER_NAME_1585 = 1585, - DIS_EMITTER_NAME_1620 = 1620, - DIS_EMITTER_NAME_1626 = 1626, - DIS_EMITTER_NAME_1628 = 1628, - DIS_EMITTER_NAME_1630 = 1630, - DIS_EMITTER_NAME_1632 = 1632, - DIS_EMITTER_NAME_1634 = 1634, - DIS_EMITTER_NAME_1636 = 1636, - DIS_EMITTER_NAME_1638 = 1638, - DIS_EMITTER_NAME_1640 = 1640, - DIS_EMITTER_NAME_1642 = 1642, - DIS_EMITTER_NAME_1644 = 1644, - DIS_EMITTER_NAME_1646 = 1646, - DIS_EMITTER_NAME_1648 = 1648, - DIS_EMITTER_NAME_1650 = 1650, - DIS_EMITTER_NAME_1652 = 1652, - DIS_EMITTER_NAME_1654 = 1654, - DIS_EMITTER_NAME_1656 = 1656, - DIS_EMITTER_NAME_1658 = 1658, - DIS_EMITTER_NAME_1660 = 1660, - DIS_EMITTER_NAME_1665 = 1665, - DIS_EMITTER_NAME_1710 = 1710, - DIS_EMITTER_NAME_1755 = 1755, - DIS_EMITTER_NAME_1800 = 1800, - DIS_EMITTER_NAME_1805 = 1805, - DIS_EMITTER_NAME_1807 = 1807, - DIS_EMITTER_NAME_1809 = 1809, - DIS_EMITTER_NAME_1845 = 1845, - DIS_EMITTER_NAME_1870 = 1870, - DIS_EMITTER_NAME_1890 = 1890, - DIS_EMITTER_NAME_1935 = 1935, - DIS_EMITTER_NAME_1945 = 1945, - DIS_EMITTER_NAME_1960 = 1960, - DIS_EMITTER_NAME_1970 = 1970, - DIS_EMITTER_NAME_1980 = 1980, - DIS_EMITTER_NAME_2025 = 2025, - DIS_EMITTER_NAME_2070 = 2070, - DIS_EMITTER_NAME_2115 = 2115, - DIS_EMITTER_NAME_2160 = 2160, - DIS_EMITTER_NAME_2205 = 2205, - DIS_EMITTER_NAME_2250 = 2250, - DIS_EMITTER_NAME_2295 = 2295, - DIS_EMITTER_NAME_2340 = 2340, - DIS_EMITTER_NAME_2385 = 2385, - DIS_EMITTER_NAME_2430 = 2430, - DIS_EMITTER_NAME_2475 = 2475, - DIS_EMITTER_NAME_2520 = 2520, - DIS_EMITTER_NAME_2565 = 2565, - DIS_EMITTER_NAME_2610 = 2610, - DIS_EMITTER_NAME_2655 = 2655, - DIS_EMITTER_NAME_2700 = 2700, - DIS_EMITTER_NAME_2745 = 2745, - DIS_EMITTER_NAME_2790 = 2790, - DIS_EMITTER_NAME_2835 = 2835, - DIS_EMITTER_NAME_2880 = 2880, - DIS_EMITTER_NAME_2925 = 2925, - DIS_EMITTER_NAME_2970 = 2970, - DIS_EMITTER_NAME_3015 = 3015, - DIS_EMITTER_NAME_3060 = 3060, - DIS_EMITTER_NAME_3105 = 3105, - DIS_EMITTER_NAME_3150 = 3150, - DIS_EMITTER_NAME_3152 = 3152, - DIS_EMITTER_NAME_3160 = 3160, - DIS_EMITTER_NAME_3162 = 3162, - DIS_EMITTER_NAME_3164 = 3164, - DIS_EMITTER_NAME_3166 = 3166, - DIS_EMITTER_NAME_3195 = 3195, - DIS_EMITTER_NAME_3240 = 3240, - DIS_EMITTER_NAME_3285 = 3285, - DIS_EMITTER_NAME_3330 = 3330, - DIS_EMITTER_NAME_3375 = 3375, - DIS_EMITTER_NAME_3420 = 3420, - DIS_EMITTER_NAME_3465 = 3465, - DIS_EMITTER_NAME_3510 = 3510, - DIS_EMITTER_NAME_3555 = 3555, - DIS_EMITTER_NAME_3600 = 3600, - DIS_EMITTER_NAME_3645 = 3645, - DIS_EMITTER_NAME_3690 = 3690, - DIS_EMITTER_NAME_3735 = 3735, - DIS_EMITTER_NAME_3780 = 3780, - DIS_EMITTER_NAME_3785 = 3785, - DIS_EMITTER_NAME_3788 = 3788, - DIS_EMITTER_NAME_3795 = 3795, - DIS_EMITTER_NAME_3820 = 3820, - DIS_EMITTER_NAME_3825 = 3825, - DIS_EMITTER_NAME_3870 = 3870, - DIS_EMITTER_NAME_3915 = 3915, - DIS_EMITTER_NAME_3960 = 3960, - DIS_EMITTER_NAME_4005 = 4005, - DIS_EMITTER_NAME_4050 = 4050, - DIS_EMITTER_NAME_4095 = 4095, - DIS_EMITTER_NAME_4140 = 4140, - DIS_EMITTER_NAME_4185 = 4185, - DIS_EMITTER_NAME_4230 = 4230, - DIS_EMITTER_NAME_4275 = 4275, - DIS_EMITTER_NAME_4320 = 4320, - DIS_EMITTER_NAME_4365 = 4365, - DIS_EMITTER_NAME_4410 = 4410, - DIS_EMITTER_NAME_4455 = 4455, - DIS_EMITTER_NAME_4465 = 4465, - DIS_EMITTER_NAME_4500 = 4500, - DIS_EMITTER_NAME_4545 = 4545, - DIS_EMITTER_NAME_4590 = 4590, - DIS_EMITTER_NAME_4635 = 4635, - DIS_EMITTER_NAME_4680 = 4680, - DIS_EMITTER_NAME_4725 = 4725, - DIS_EMITTER_NAME_4770 = 4770, - DIS_EMITTER_NAME_4815 = 4815, - DIS_EMITTER_NAME_4860 = 4860, - DIS_EMITTER_NAME_4870 = 4870, - DIS_EMITTER_NAME_4900 = 4900, - DIS_EMITTER_NAME_4905 = 4905, - DIS_EMITTER_NAME_4950 = 4950, - DIS_EMITTER_NAME_4953 = 4953, - DIS_EMITTER_NAME_4995 = 4995, - DIS_EMITTER_NAME_5040 = 5040, - DIS_EMITTER_NAME_5085 = 5085, - DIS_EMITTER_NAME_5130 = 5130, - DIS_EMITTER_NAME_5175 = 5175, - DIS_EMITTER_NAME_5220 = 5220, - DIS_EMITTER_NAME_5265 = 5265, - DIS_EMITTER_NAME_5280 = 5280, - DIS_EMITTER_NAME_5310 = 5310, - DIS_EMITTER_NAME_5355 = 5355, - DIS_EMITTER_NAME_5400 = 5400, - DIS_EMITTER_NAME_5405 = 5405, - DIS_EMITTER_NAME_5420 = 5420, - DIS_EMITTER_NAME_5430 = 5430, - DIS_EMITTER_NAME_5445 = 5445, - DIS_EMITTER_NAME_5490 = 5490, - DIS_EMITTER_NAME_5495 = 5495, - DIS_EMITTER_NAME_5500 = 5500, - DIS_EMITTER_NAME_5505 = 5505, - DIS_EMITTER_NAME_5507 = 5507, - DIS_EMITTER_NAME_5508 = 5508, - DIS_EMITTER_NAME_5510 = 5510, - DIS_EMITTER_NAME_5515 = 5515, - DIS_EMITTER_NAME_5520 = 5520, - DIS_EMITTER_NAME_5525 = 5525, - DIS_EMITTER_NAME_5527 = 5527, - DIS_EMITTER_NAME_5530 = 5530, - DIS_EMITTER_NAME_5535 = 5535, - DIS_EMITTER_NAME_5537 = 5537, - DIS_EMITTER_NAME_5540 = 5540, - DIS_EMITTER_NAME_5545 = 5545, - DIS_EMITTER_NAME_5550 = 5550, - DIS_EMITTER_NAME_5551 = 5551, - DIS_EMITTER_NAME_5555 = 5555, - DIS_EMITTER_NAME_5560 = 5560, - DIS_EMITTER_NAME_5570 = 5570, - DIS_EMITTER_NAME_5571 = 5571, - DIS_EMITTER_NAME_5575 = 5575, - DIS_EMITTER_NAME_5580 = 5580, - DIS_EMITTER_NAME_5625 = 5625, - DIS_EMITTER_NAME_5670 = 5670, - DIS_EMITTER_NAME_5715 = 5715, - DIS_EMITTER_NAME_5760 = 5760, - DIS_EMITTER_NAME_5805 = 5805, - DIS_EMITTER_NAME_5850 = 5850, - DIS_EMITTER_NAME_5895 = 5895, - DIS_EMITTER_NAME_5940 = 5940, - DIS_EMITTER_NAME_5985 = 5985, - DIS_EMITTER_NAME_6030 = 6030, - DIS_EMITTER_NAME_6075 = 6075, - DIS_EMITTER_NAME_6120 = 6120, - DIS_EMITTER_NAME_6165 = 6165, - DIS_EMITTER_NAME_6210 = 6210, - DIS_EMITTER_NAME_6255 = 6255, - DIS_EMITTER_NAME_6300 = 6300, - DIS_EMITTER_NAME_6345 = 6345, - DIS_EMITTER_NAME_6390 = 6390, - DIS_EMITTER_NAME_6435 = 6435, - DIS_EMITTER_NAME_6480 = 6480, - DIS_EMITTER_NAME_6525 = 6525, - DIS_EMITTER_NAME_6570 = 6570, - DIS_EMITTER_NAME_6615 = 6615, - DIS_EMITTER_NAME_6660 = 6660, - DIS_EMITTER_NAME_6705 = 6705, - DIS_EMITTER_NAME_6750 = 6750, - DIS_EMITTER_NAME_6752 = 6752, - DIS_EMITTER_NAME_6795 = 6795, - DIS_EMITTER_NAME_6796 = 6796, - DIS_EMITTER_NAME_6797 = 6797, - DIS_EMITTER_NAME_6798 = 6798, - DIS_EMITTER_NAME_6799 = 6799, - DIS_EMITTER_NAME_6800 = 6800, - DIS_EMITTER_NAME_6801 = 6801, - DIS_EMITTER_NAME_6802 = 6802, - DIS_EMITTER_NAME_6803 = 6803, - DIS_EMITTER_NAME_6804 = 6804, - DIS_EMITTER_NAME_6840 = 6840, - DIS_EMITTER_NAME_6885 = 6885, - DIS_EMITTER_NAME_6930 = 6930, - DIS_EMITTER_NAME_6975 = 6975, - DIS_EMITTER_NAME_7020 = 7020, - DIS_EMITTER_NAME_7065 = 7065, - DIS_EMITTER_NAME_7110 = 7110, - DIS_EMITTER_NAME_7155 = 7155, - DIS_EMITTER_NAME_7200 = 7200, - DIS_EMITTER_NAME_7245 = 7245, - DIS_EMITTER_NAME_7250 = 7250, - DIS_EMITTER_NAME_7252 = 7252, - DIS_EMITTER_NAME_7253 = 7253, - DIS_EMITTER_NAME_7260 = 7260, - DIS_EMITTER_NAME_7261 = 7261, - DIS_EMITTER_NAME_7265 = 7265, - DIS_EMITTER_NAME_7270 = 7270, - DIS_EMITTER_NAME_7275 = 7275, - DIS_EMITTER_NAME_7280 = 7280, - DIS_EMITTER_NAME_7295 = 7295, - DIS_EMITTER_NAME_7300 = 7300, - DIS_EMITTER_NAME_7301 = 7301, - DIS_EMITTER_NAME_7303 = 7303, - DIS_EMITTER_NAME_7305 = 7305, - DIS_EMITTER_NAME_7310 = 7310, - DIS_EMITTER_NAME_7315 = 7315, - DIS_EMITTER_NAME_7320 = 7320, - DIS_EMITTER_NAME_7322 = 7322, - DIS_EMITTER_NAME_7325 = 7325, - DIS_EMITTER_NAME_7330 = 7330, - DIS_EMITTER_NAME_7335 = 7335, - DIS_EMITTER_NAME_7380 = 7380, - DIS_EMITTER_NAME_7425 = 7425, - DIS_EMITTER_NAME_7426 = 7426, - DIS_EMITTER_NAME_7470 = 7470, - DIS_EMITTER_NAME_7515 = 7515, - DIS_EMITTER_NAME_7560 = 7560, - DIS_EMITTER_NAME_7605 = 7605, - DIS_EMITTER_NAME_7650 = 7650, - DIS_EMITTER_NAME_7695 = 7695, - DIS_EMITTER_NAME_7740 = 7740, - DIS_EMITTER_NAME_7785 = 7785, - DIS_EMITTER_NAME_7830 = 7830, - DIS_EMITTER_NAME_7875 = 7875, - DIS_EMITTER_NAME_7920 = 7920, - DIS_EMITTER_NAME_7965 = 7965, - DIS_EMITTER_NAME_8010 = 8010, - DIS_EMITTER_NAME_8055 = 8055, - DIS_EMITTER_NAME_8100 = 8100, - DIS_EMITTER_NAME_8105 = 8105, - DIS_EMITTER_NAME_8112 = 8112, - DIS_EMITTER_NAME_8115 = 8115, - DIS_EMITTER_NAME_8120 = 8120, - DIS_EMITTER_NAME_8145 = 8145, - DIS_EMITTER_NAME_8190 = 8190, - DIS_EMITTER_NAME_8235 = 8235, - DIS_EMITTER_NAME_8280 = 8280, - DIS_EMITTER_NAME_8325 = 8325, - DIS_EMITTER_NAME_8370 = 8370, - DIS_EMITTER_NAME_8375 = 8375, - DIS_EMITTER_NAME_8380 = 8380, - DIS_EMITTER_NAME_8390 = 8390, - DIS_EMITTER_NAME_8415 = 8415, - DIS_EMITTER_NAME_8460 = 8460, - DIS_EMITTER_NAME_8505 = 8505, - DIS_EMITTER_NAME_8550 = 8550, - DIS_EMITTER_NAME_8595 = 8595, - DIS_EMITTER_NAME_8640 = 8640, - DIS_EMITTER_NAME_8685 = 8685, - DIS_EMITTER_NAME_8730 = 8730, - DIS_EMITTER_NAME_8735 = 8735, - DIS_EMITTER_NAME_8760 = 8760, - DIS_EMITTER_NAME_8772 = 8772, - DIS_EMITTER_NAME_8775 = 8775, - DIS_EMITTER_NAME_8780 = 8780, - DIS_EMITTER_NAME_8782 = 8782, - DIS_EMITTER_NAME_8785 = 8785, - DIS_EMITTER_NAME_8790 = 8790, - DIS_EMITTER_NAME_8812 = 8812, - DIS_EMITTER_NAME_8820 = 8820, - DIS_EMITTER_NAME_8840 = 8840, - DIS_EMITTER_NAME_8845 = 8845, - DIS_EMITTER_NAME_8865 = 8865, - DIS_EMITTER_NAME_8870 = 8870, - DIS_EMITTER_NAME_8910 = 8910, - DIS_EMITTER_NAME_8955 = 8955, - DIS_EMITTER_NAME_9000 = 9000, - DIS_EMITTER_NAME_9045 = 9045, - DIS_EMITTER_NAME_9075 = 9075, - DIS_EMITTER_NAME_9090 = 9090, - DIS_EMITTER_NAME_9135 = 9135, - DIS_EMITTER_NAME_9180 = 9180, - DIS_EMITTER_NAME_9200 = 9200, - DIS_EMITTER_NAME_9205 = 9205, - DIS_EMITTER_NAME_9225 = 9225, - DIS_EMITTER_NAME_9270 = 9270, - DIS_EMITTER_NAME_9310 = 9310, - DIS_EMITTER_NAME_9315 = 9315, - DIS_EMITTER_NAME_9360 = 9360, - DIS_EMITTER_NAME_9405 = 9405, - DIS_EMITTER_NAME_9450 = 9450, - DIS_EMITTER_NAME_9495 = 9495, - DIS_EMITTER_NAME_9540 = 9540, - DIS_EMITTER_NAME_9585 = 9585, - DIS_EMITTER_NAME_9630 = 9630, - DIS_EMITTER_NAME_9640 = 9640, - DIS_EMITTER_NAME_9642 = 9642, - DIS_EMITTER_NAME_9645 = 9645, - DIS_EMITTER_NAME_9660 = 9660, - DIS_EMITTER_NAME_9675 = 9675, - DIS_EMITTER_NAME_9720 = 9720, - DIS_EMITTER_NAME_9765 = 9765, - DIS_EMITTER_NAME_9780 = 9780, - DIS_EMITTER_NAME_9810 = 9810, - DIS_EMITTER_NAME_9855 = 9855, - DIS_EMITTER_NAME_9885 = 9885, - DIS_EMITTER_NAME_9900 = 9900, - DIS_EMITTER_NAME_9905 = 9905, - DIS_EMITTER_NAME_9930 = 9930, - DIS_EMITTER_NAME_9935 = 9935, - DIS_EMITTER_NAME_9945 = 9945, - DIS_EMITTER_NAME_9990 = 9990, - DIS_EMITTER_NAME_10035 = 10035, - DIS_EMITTER_NAME_10080 = 10080, - DIS_EMITTER_NAME_10125 = 10125, - DIS_EMITTER_NAME_10170 = 10170, - DIS_EMITTER_NAME_10215 = 10215, - DIS_EMITTER_NAME_10260 = 10260, - DIS_EMITTER_NAME_10305 = 10305, - DIS_EMITTER_NAME_10350 = 10350, - DIS_EMITTER_NAME_10395 = 10395, - DIS_EMITTER_NAME_10440 = 10440, - DIS_EMITTER_NAME_10485 = 10485, - DIS_EMITTER_NAME_10510 = 10510, - DIS_EMITTER_NAME_10530 = 10530, - DIS_EMITTER_NAME_10575 = 10575, - DIS_EMITTER_NAME_10620 = 10620, - DIS_EMITTER_NAME_10665 = 10665, - DIS_EMITTER_NAME_10710 = 10710, - DIS_EMITTER_NAME_10755 = 10755, - DIS_EMITTER_NAME_10800 = 10800, - DIS_EMITTER_NAME_10845 = 10845, - DIS_EMITTER_NAME_10890 = 10890, - DIS_EMITTER_NAME_10895 = 10895, - DIS_EMITTER_NAME_10935 = 10935, - DIS_EMITTER_NAME_10940 = 10940, - DIS_EMITTER_NAME_10980 = 10980, - DIS_EMITTER_NAME_10985 = 10985, - DIS_EMITTER_NAME_11000 = 11000, - DIS_EMITTER_NAME_11010 = 11010, - DIS_EMITTER_NAME_11025 = 11025, - DIS_EMITTER_NAME_11070 = 11070, - DIS_EMITTER_NAME_11115 = 11115, - DIS_EMITTER_NAME_11160 = 11160, - DIS_EMITTER_NAME_11205 = 11205, - DIS_EMITTER_NAME_11250 = 11250, - DIS_EMITTER_NAME_11260 = 11260, - DIS_EMITTER_NAME_11270 = 11270, - DIS_EMITTER_NAME_11295 = 11295, - DIS_EMITTER_NAME_11340 = 11340, - DIS_EMITTER_NAME_11385 = 11385, - DIS_EMITTER_NAME_11430 = 11430, - DIS_EMITTER_NAME_11475 = 11475, - DIS_EMITTER_NAME_11520 = 11520, - DIS_EMITTER_NAME_11565 = 11565, - DIS_EMITTER_NAME_11610 = 11610, - DIS_EMITTER_NAME_11655 = 11655, - DIS_EMITTER_NAME_11660 = 11660, - DIS_EMITTER_NAME_11665 = 11665, - DIS_EMITTER_NAME_11700 = 11700, - DIS_EMITTER_NAME_11745 = 11745, - DIS_EMITTER_NAME_11790 = 11790, - DIS_EMITTER_NAME_11835 = 11835, - DIS_EMITTER_NAME_11880 = 11880, - DIS_EMITTER_NAME_11925 = 11925, - DIS_EMITTER_NAME_11970 = 11970, - DIS_EMITTER_NAME_11975 = 11975, - DIS_EMITTER_NAME_12010 = 12010, - DIS_EMITTER_NAME_12015 = 12015, - DIS_EMITTER_NAME_12060 = 12060, - DIS_EMITTER_NAME_12105 = 12105, - DIS_EMITTER_NAME_12110 = 12110, - DIS_EMITTER_NAME_12111 = 12111, - DIS_EMITTER_NAME_12150 = 12150, - DIS_EMITTER_NAME_12195 = 12195, - DIS_EMITTER_NAME_12240 = 12240, - DIS_EMITTER_NAME_12285 = 12285, - DIS_EMITTER_NAME_12292 = 12292, - DIS_EMITTER_NAME_12330 = 12330, - DIS_EMITTER_NAME_12375 = 12375, - DIS_EMITTER_NAME_12420 = 12420, - DIS_EMITTER_NAME_12430 = 12430, - DIS_EMITTER_NAME_12465 = 12465, - DIS_EMITTER_NAME_12510 = 12510, - DIS_EMITTER_NAME_12555 = 12555, - DIS_EMITTER_NAME_12600 = 12600, - DIS_EMITTER_NAME_12610 = 12610, - DIS_EMITTER_NAME_12645 = 12645, - DIS_EMITTER_NAME_12690 = 12690, - DIS_EMITTER_NAME_12735 = 12735, - DIS_EMITTER_NAME_12780 = 12780, - DIS_EMITTER_NAME_12782 = 12782, - DIS_EMITTER_NAME_12785 = 12785, - DIS_EMITTER_NAME_12787 = 12787, - DIS_EMITTER_NAME_12800 = 12800, - DIS_EMITTER_NAME_12805 = 12805, - DIS_EMITTER_NAME_12825 = 12825, - DIS_EMITTER_NAME_12870 = 12870, - DIS_EMITTER_NAME_12915 = 12915, - DIS_EMITTER_NAME_12960 = 12960, - DIS_EMITTER_NAME_13005 = 13005, - DIS_EMITTER_NAME_13050 = 13050, - DIS_EMITTER_NAME_13055 = 13055, - DIS_EMITTER_NAME_13095 = 13095, - DIS_EMITTER_NAME_13140 = 13140, - DIS_EMITTER_NAME_13185 = 13185, - DIS_EMITTER_NAME_13230 = 13230, - DIS_EMITTER_NAME_13275 = 13275, - DIS_EMITTER_NAME_13320 = 13320, - DIS_EMITTER_NAME_13365 = 13365, - DIS_EMITTER_NAME_13410 = 13410, - DIS_EMITTER_NAME_13455 = 13455, - DIS_EMITTER_NAME_13500 = 13500, - DIS_EMITTER_NAME_13545 = 13545, - DIS_EMITTER_NAME_13590 = 13590, - DIS_EMITTER_NAME_13635 = 13635, - DIS_EMITTER_NAME_13680 = 13680, - DIS_EMITTER_NAME_13725 = 13725, - DIS_EMITTER_NAME_13770 = 13770, - DIS_EMITTER_NAME_13815 = 13815, - DIS_EMITTER_NAME_13860 = 13860, - DIS_EMITTER_NAME_13905 = 13905, - DIS_EMITTER_NAME_13950 = 13950, - DIS_EMITTER_NAME_13995 = 13995, - DIS_EMITTER_NAME_14040 = 14040, - DIS_EMITTER_NAME_14085 = 14085, - DIS_EMITTER_NAME_14130 = 14130, - DIS_EMITTER_NAME_14175 = 14175, - DIS_EMITTER_NAME_14220 = 14220, - DIS_EMITTER_NAME_14265 = 14265, - DIS_EMITTER_NAME_14310 = 14310, - DIS_EMITTER_NAME_14355 = 14355, - DIS_EMITTER_NAME_14400 = 14400, - DIS_EMITTER_NAME_14445 = 14445, - DIS_EMITTER_NAME_14490 = 14490, - DIS_EMITTER_NAME_14535 = 14535, - DIS_EMITTER_NAME_14545 = 14545, - DIS_EMITTER_NAME_14580 = 14580, - DIS_EMITTER_NAME_14600 = 14600, - DIS_EMITTER_NAME_14625 = 14625, - DIS_EMITTER_NAME_14670 = 14670, - DIS_EMITTER_NAME_14715 = 14715, - DIS_EMITTER_NAME_14760 = 14760, - DIS_EMITTER_NAME_14770 = 14770, - DIS_EMITTER_NAME_14805 = 14805, - DIS_EMITTER_NAME_14810 = 14810, - DIS_EMITTER_NAME_14850 = 14850, - DIS_EMITTER_NAME_14895 = 14895, - DIS_EMITTER_NAME_14940 = 14940, - DIS_EMITTER_NAME_14985 = 14985, - DIS_EMITTER_NAME_15030 = 15030, - DIS_EMITTER_NAME_15075 = 15075, - DIS_EMITTER_NAME_15120 = 15120, - DIS_EMITTER_NAME_15140 = 15140, - DIS_EMITTER_NAME_15160 = 15160, - DIS_EMITTER_NAME_15165 = 15165, - DIS_EMITTER_NAME_15200 = 15200, - DIS_EMITTER_NAME_15210 = 15210, - DIS_EMITTER_NAME_15220 = 15220, - DIS_EMITTER_NAME_15230 = 15230, - DIS_EMITTER_NAME_15240 = 15240, - DIS_EMITTER_NAME_15255 = 15255, - DIS_EMITTER_NAME_15300 = 15300, - DIS_EMITTER_NAME_15310 = 15310, - DIS_EMITTER_NAME_15345 = 15345, - DIS_EMITTER_NAME_15390 = 15390, - DIS_EMITTER_NAME_15435 = 15435, - DIS_EMITTER_NAME_15470 = 15470, - DIS_EMITTER_NAME_15475 = 15475, - DIS_EMITTER_NAME_15480 = 15480, - DIS_EMITTER_NAME_15525 = 15525, - DIS_EMITTER_NAME_15570 = 15570, - DIS_EMITTER_NAME_15615 = 15615, - DIS_EMITTER_NAME_15660 = 15660, - DIS_EMITTER_NAME_15705 = 15705, - DIS_EMITTER_NAME_15750 = 15750, - DIS_EMITTER_NAME_15795 = 15795, - DIS_EMITTER_NAME_15840 = 15840, - DIS_EMITTER_NAME_15885 = 15885, - DIS_EMITTER_NAME_15930 = 15930, - DIS_EMITTER_NAME_15975 = 15975, - DIS_EMITTER_NAME_16020 = 16020, - DIS_EMITTER_NAME_16030 = 16030, - DIS_EMITTER_NAME_16065 = 16065, - DIS_EMITTER_NAME_16110 = 16110, - DIS_EMITTER_NAME_16155 = 16155, - DIS_EMITTER_NAME_16200 = 16200, - DIS_EMITTER_NAME_16245 = 16245, - DIS_EMITTER_NAME_16290 = 16290, - DIS_EMITTER_NAME_16335 = 16335, - DIS_EMITTER_NAME_16380 = 16380, - DIS_EMITTER_NAME_16390 = 16390, - DIS_EMITTER_NAME_16400 = 16400, - DIS_EMITTER_NAME_16410 = 16410, - DIS_EMITTER_NAME_16420 = 16420, - DIS_EMITTER_NAME_16421 = 16421, - DIS_EMITTER_NAME_16425 = 16425, - DIS_EMITTER_NAME_16470 = 16470, - DIS_EMITTER_NAME_16515 = 16515, - DIS_EMITTER_NAME_16560 = 16560, - DIS_EMITTER_NAME_16561 = 16561, - DIS_EMITTER_NAME_16605 = 16605, - DIS_EMITTER_NAME_16650 = 16650, - DIS_EMITTER_NAME_16695 = 16695, - DIS_EMITTER_NAME_16740 = 16740, - DIS_EMITTER_NAME_16785 = 16785, - DIS_EMITTER_NAME_16830 = 16830, - DIS_EMITTER_NAME_16875 = 16875, - DIS_EMITTER_NAME_16880 = 16880, - DIS_EMITTER_NAME_16884 = 16884, - DIS_EMITTER_NAME_16888 = 16888, - DIS_EMITTER_NAME_16900 = 16900, - DIS_EMITTER_NAME_16915 = 16915, - DIS_EMITTER_NAME_16920 = 16920, - DIS_EMITTER_NAME_16925 = 16925, - DIS_EMITTER_NAME_16945 = 16945, - DIS_EMITTER_NAME_16950 = 16950, - DIS_EMITTER_NAME_16965 = 16965, - DIS_EMITTER_NAME_17010 = 17010, - DIS_EMITTER_NAME_17025 = 17025, - DIS_EMITTER_NAME_17055 = 17055, - DIS_EMITTER_NAME_17070 = 17070, - DIS_EMITTER_NAME_17100 = 17100, - DIS_EMITTER_NAME_17145 = 17145, - DIS_EMITTER_NAME_17190 = 17190, - DIS_EMITTER_NAME_17220 = 17220, - DIS_EMITTER_NAME_17235 = 17235, - DIS_EMITTER_NAME_17280 = 17280, - DIS_EMITTER_NAME_17325 = 17325, - DIS_EMITTER_NAME_17370 = 17370, - DIS_EMITTER_NAME_17415 = 17415, - DIS_EMITTER_NAME_17460 = 17460, - DIS_EMITTER_NAME_17505 = 17505, - DIS_EMITTER_NAME_17550 = 17550, - DIS_EMITTER_NAME_17595 = 17595, - DIS_EMITTER_NAME_17640 = 17640, - DIS_EMITTER_NAME_17685 = 17685, - DIS_EMITTER_NAME_17730 = 17730, - DIS_EMITTER_NAME_17775 = 17775, - DIS_EMITTER_NAME_17820 = 17820, - DIS_EMITTER_NAME_17865 = 17865, - DIS_EMITTER_NAME_17910 = 17910, - DIS_EMITTER_NAME_17955 = 17955, - DIS_EMITTER_NAME_18000 = 18000, - DIS_EMITTER_NAME_18045 = 18045, - DIS_EMITTER_NAME_18090 = 18090, - DIS_EMITTER_NAME_18135 = 18135, - DIS_EMITTER_NAME_18150 = 18150, - DIS_EMITTER_NAME_18180 = 18180, - DIS_EMITTER_NAME_18200 = 18200, - DIS_EMITTER_NAME_18225 = 18225, - DIS_EMITTER_NAME_18270 = 18270, - DIS_EMITTER_NAME_18280 = 18280, - DIS_EMITTER_NAME_18315 = 18315, - DIS_EMITTER_NAME_18320 = 18320, - DIS_EMITTER_NAME_18325 = 18325, - DIS_EMITTER_NAME_18330 = 18330, - DIS_EMITTER_NAME_18360 = 18360, - DIS_EMITTER_NAME_18405 = 18405, - DIS_EMITTER_NAME_18410 = 18410, - DIS_EMITTER_NAME_18450 = 18450, - DIS_EMITTER_NAME_18460 = 18460, - DIS_EMITTER_NAME_18495 = 18495, - DIS_EMITTER_NAME_18540 = 18540, - DIS_EMITTER_NAME_18550 = 18550, - DIS_EMITTER_NAME_18555 = 18555, - DIS_EMITTER_NAME_18560 = 18560, - DIS_EMITTER_NAME_18585 = 18585, - DIS_EMITTER_NAME_18630 = 18630, - DIS_EMITTER_NAME_18675 = 18675, - DIS_EMITTER_NAME_18720 = 18720, - DIS_EMITTER_NAME_18765 = 18765, - DIS_EMITTER_NAME_18785 = 18785, - DIS_EMITTER_NAME_18810 = 18810, - DIS_EMITTER_NAME_18855 = 18855, - DIS_EMITTER_NAME_18900 = 18900, - DIS_EMITTER_NAME_18945 = 18945, - DIS_EMITTER_NAME_18990 = 18990, - DIS_EMITTER_NAME_19035 = 19035, - DIS_EMITTER_NAME_19037 = 19037, - DIS_EMITTER_NAME_19050 = 19050, - DIS_EMITTER_NAME_19080 = 19080, - DIS_EMITTER_NAME_19125 = 19125, - DIS_EMITTER_NAME_19170 = 19170, - DIS_EMITTER_NAME_19215 = 19215, - DIS_EMITTER_NAME_19260 = 19260, - DIS_EMITTER_NAME_19305 = 19305, - DIS_EMITTER_NAME_19310 = 19310, - DIS_EMITTER_NAME_19350 = 19350, - DIS_EMITTER_NAME_19395 = 19395, - DIS_EMITTER_NAME_19400 = 19400, - DIS_EMITTER_NAME_19440 = 19440, - DIS_EMITTER_NAME_19485 = 19485, - DIS_EMITTER_NAME_19530 = 19530, - DIS_EMITTER_NAME_19575 = 19575, - DIS_EMITTER_NAME_19620 = 19620, - DIS_EMITTER_NAME_19665 = 19665, - DIS_EMITTER_NAME_19710 = 19710, - DIS_EMITTER_NAME_19755 = 19755, - DIS_EMITTER_NAME_19800 = 19800, - DIS_EMITTER_NAME_19845 = 19845, - DIS_EMITTER_NAME_19890 = 19890, - DIS_EMITTER_NAME_19935 = 19935, - DIS_EMITTER_NAME_19950 = 19950, - DIS_EMITTER_NAME_19955 = 19955, - DIS_EMITTER_NAME_19960 = 19960, - DIS_EMITTER_NAME_19980 = 19980, - DIS_EMITTER_NAME_20025 = 20025, - DIS_EMITTER_NAME_20040 = 20040, - DIS_EMITTER_NAME_20070 = 20070, - DIS_EMITTER_NAME_20090 = 20090, - DIS_EMITTER_NAME_20115 = 20115, - DIS_EMITTER_NAME_20160 = 20160, - DIS_EMITTER_NAME_20205 = 20205, - DIS_EMITTER_NAME_20250 = 20250, - DIS_EMITTER_NAME_20295 = 20295, - DIS_EMITTER_NAME_20340 = 20340, - DIS_EMITTER_NAME_20360 = 20360, - DIS_EMITTER_NAME_20385 = 20385, - DIS_EMITTER_NAME_20430 = 20430, - DIS_EMITTER_NAME_20475 = 20475, - DIS_EMITTER_NAME_20495 = 20495, - DIS_EMITTER_NAME_20520 = 20520, - DIS_EMITTER_NAME_20530 = 20530, - DIS_EMITTER_NAME_20565 = 20565, - DIS_EMITTER_NAME_20585 = 20585, - DIS_EMITTER_NAME_20610 = 20610, - DIS_EMITTER_NAME_20655 = 20655, - DIS_EMITTER_NAME_20700 = 20700, - DIS_EMITTER_NAME_20745 = 20745, - DIS_EMITTER_NAME_20790 = 20790, - DIS_EMITTER_NAME_20835 = 20835, - DIS_EMITTER_NAME_20880 = 20880, - DIS_EMITTER_NAME_20925 = 20925, - DIS_EMITTER_NAME_20950 = 20950, - DIS_EMITTER_NAME_20970 = 20970, - DIS_EMITTER_NAME_21015 = 21015, - DIS_EMITTER_NAME_21060 = 21060, - DIS_EMITTER_NAME_21105 = 21105, - DIS_EMITTER_NAME_21150 = 21150, - DIS_EMITTER_NAME_21195 = 21195, - DIS_EMITTER_NAME_21240 = 21240, - DIS_EMITTER_NAME_21285 = 21285, - DIS_EMITTER_NAME_21330 = 21330, - DIS_EMITTER_NAME_21340 = 21340, - DIS_EMITTER_NAME_21375 = 21375, - DIS_EMITTER_NAME_21420 = 21420, - DIS_EMITTER_NAME_21465 = 21465, - DIS_EMITTER_NAME_21490 = 21490, - DIS_EMITTER_NAME_21510 = 21510, - DIS_EMITTER_NAME_21555 = 21555, - DIS_EMITTER_NAME_21600 = 21600, - DIS_EMITTER_NAME_21645 = 21645, - DIS_EMITTER_NAME_21650 = 21650, - DIS_EMITTER_NAME_21690 = 21690, - DIS_EMITTER_NAME_21710 = 21710, - DIS_EMITTER_NAME_21735 = 21735, - DIS_EMITTER_NAME_21780 = 21780, - DIS_EMITTER_NAME_21825 = 21825, - DIS_EMITTER_NAME_21870 = 21870, - DIS_EMITTER_NAME_21880 = 21880, - DIS_EMITTER_NAME_21890 = 21890, - DIS_EMITTER_NAME_21895 = 21895, - DIS_EMITTER_NAME_21915 = 21915, - DIS_EMITTER_NAME_21960 = 21960, - DIS_EMITTER_NAME_21980 = 21980, - DIS_EMITTER_NAME_22005 = 22005, - DIS_EMITTER_NAME_22050 = 22050, - DIS_EMITTER_NAME_22095 = 22095, - DIS_EMITTER_NAME_22140 = 22140, - DIS_EMITTER_NAME_22185 = 22185, - DIS_EMITTER_NAME_22230 = 22230, - DIS_EMITTER_NAME_22275 = 22275, - DIS_EMITTER_NAME_22320 = 22320, - DIS_EMITTER_NAME_22345 = 22345, - DIS_EMITTER_NAME_22365 = 22365, - DIS_EMITTER_NAME_22410 = 22410, - DIS_EMITTER_NAME_22455 = 22455, - DIS_EMITTER_NAME_22500 = 22500, - DIS_EMITTER_NAME_22545 = 22545, - DIS_EMITTER_NAME_22590 = 22590, - DIS_EMITTER_NAME_22635 = 22635, - DIS_EMITTER_NAME_22680 = 22680, - DIS_EMITTER_NAME_22690 = 22690, - DIS_EMITTER_NAME_22725 = 22725, - DIS_EMITTER_NAME_22730 = 22730, - DIS_EMITTER_NAME_22740 = 22740, - DIS_EMITTER_NAME_22770 = 22770, - DIS_EMITTER_NAME_22810 = 22810, - DIS_EMITTER_NAME_22815 = 22815, - DIS_EMITTER_NAME_22860 = 22860, - DIS_EMITTER_NAME_22905 = 22905, - DIS_EMITTER_NAME_22950 = 22950, - DIS_EMITTER_NAME_22955 = 22955, - DIS_EMITTER_NAME_22960 = 22960, - DIS_EMITTER_NAME_22995 = 22995, - DIS_EMITTER_NAME_23040 = 23040, - DIS_EMITTER_NAME_23085 = 23085, - DIS_EMITTER_NAME_23095 = 23095, - DIS_EMITTER_NAME_23130 = 23130, - DIS_EMITTER_NAME_23175 = 23175, - DIS_EMITTER_NAME_23220 = 23220, - DIS_EMITTER_NAME_23265 = 23265, - DIS_EMITTER_NAME_23310 = 23310, - DIS_EMITTER_NAME_23355 = 23355, - DIS_EMITTER_NAME_23400 = 23400, - DIS_EMITTER_NAME_23445 = 23445, - DIS_EMITTER_NAME_23490 = 23490, - DIS_EMITTER_NAME_23535 = 23535, - DIS_EMITTER_NAME_23580 = 23580, - DIS_EMITTER_NAME_23625 = 23625, - DIS_EMITTER_NAME_23670 = 23670, - DIS_EMITTER_NAME_23690 = 23690, - DIS_EMITTER_NAME_23710 = 23710, - DIS_EMITTER_NAME_23715 = 23715, - DIS_EMITTER_NAME_23760 = 23760, - DIS_EMITTER_NAME_23805 = 23805, - DIS_EMITTER_NAME_23850 = 23850, - DIS_EMITTER_NAME_23895 = 23895, - DIS_EMITTER_NAME_23940 = 23940, - DIS_EMITTER_NAME_23985 = 23985, - DIS_EMITTER_NAME_23990 = 23990, - DIS_EMITTER_NAME_24030 = 24030, - DIS_EMITTER_NAME_24075 = 24075, - DIS_EMITTER_NAME_24095 = 24095, - DIS_EMITTER_NAME_24100 = 24100, - DIS_EMITTER_NAME_24120 = 24120, - DIS_EMITTER_NAME_24165 = 24165, - DIS_EMITTER_NAME_24210 = 24210, - DIS_EMITTER_NAME_24255 = 24255, - DIS_EMITTER_NAME_24300 = 24300, - DIS_EMITTER_NAME_24345 = 24345, - DIS_EMITTER_NAME_24390 = 24390, - DIS_EMITTER_NAME_24435 = 24435, - DIS_EMITTER_NAME_24480 = 24480, - DIS_EMITTER_NAME_24525 = 24525, - DIS_EMITTER_NAME_24570 = 24570, - DIS_EMITTER_NAME_24615 = 24615, - DIS_EMITTER_NAME_24620 = 24620, - DIS_EMITTER_NAME_24650 = 24650, - DIS_EMITTER_NAME_24660 = 24660, - DIS_EMITTER_NAME_24705 = 24705, - DIS_EMITTER_NAME_24710 = 24710, - DIS_EMITTER_NAME_24750 = 24750, - DIS_EMITTER_NAME_24770 = 24770, - DIS_EMITTER_NAME_24780 = 24780, - DIS_EMITTER_NAME_24795 = 24795, - DIS_EMITTER_NAME_24840 = 24840, - DIS_EMITTER_NAME_24885 = 24885, - DIS_EMITTER_NAME_24930 = 24930, - DIS_EMITTER_NAME_24975 = 24975, - DIS_EMITTER_NAME_25020 = 25020, - DIS_EMITTER_NAME_25065 = 25065, - DIS_EMITTER_NAME_25110 = 25110, - DIS_EMITTER_NAME_25155 = 25155, - DIS_EMITTER_NAME_25200 = 25200, - DIS_EMITTER_NAME_25205 = 25205, - DIS_EMITTER_NAME_25245 = 25245, - DIS_EMITTER_NAME_25260 = 25260, - DIS_EMITTER_NAME_25265 = 25265, - DIS_EMITTER_NAME_25270 = 25270, - DIS_EMITTER_NAME_25280 = 25280, - DIS_EMITTER_NAME_25285 = 25285, - DIS_EMITTER_NAME_25290 = 25290, - DIS_EMITTER_NAME_25300 = 25300, - DIS_EMITTER_NAME_25335 = 25335, - DIS_EMITTER_NAME_25380 = 25380, - DIS_EMITTER_NAME_25425 = 25425, - DIS_EMITTER_NAME_25470 = 25470, - DIS_EMITTER_NAME_25515 = 25515, - DIS_EMITTER_NAME_25560 = 25560, - DIS_EMITTER_NAME_25605 = 25605, - DIS_EMITTER_NAME_25630 = 25630, - DIS_EMITTER_NAME_25635 = 25635, - DIS_EMITTER_NAME_25650 = 25650, - DIS_EMITTER_NAME_25695 = 25695, - DIS_EMITTER_NAME_25735 = 25735, - DIS_EMITTER_NAME_25740 = 25740, - DIS_EMITTER_NAME_25760 = 25760, - DIS_EMITTER_NAME_25785 = 25785, - DIS_EMITTER_NAME_25830 = 25830, - DIS_EMITTER_NAME_25835 = 25835, - DIS_EMITTER_NAME_25840 = 25840, - DIS_EMITTER_NAME_25875 = 25875, - DIS_EMITTER_NAME_25885 = 25885, - DIS_EMITTER_NAME_25890 = 25890, - DIS_EMITTER_NAME_25895 = 25895, - DIS_EMITTER_NAME_25920 = 25920, - DIS_EMITTER_NAME_25965 = 25965, - DIS_EMITTER_NAME_26010 = 26010, - DIS_EMITTER_NAME_26055 = 26055, - DIS_EMITTER_NAME_26100 = 26100, - DIS_EMITTER_NAME_26145 = 26145, - DIS_EMITTER_NAME_26190 = 26190, - DIS_EMITTER_NAME_26235 = 26235, - DIS_EMITTER_NAME_26280 = 26280, - DIS_EMITTER_NAME_26325 = 26325, - DIS_EMITTER_NAME_26330 = 26330, - DIS_EMITTER_NAME_26350 = 26350, - DIS_EMITTER_NAME_26370 = 26370, - DIS_EMITTER_NAME_26415 = 26415, - DIS_EMITTER_NAME_26460 = 26460, - DIS_EMITTER_NAME_26505 = 26505, - DIS_EMITTER_NAME_26550 = 26550, - DIS_EMITTER_NAME_26595 = 26595, - DIS_EMITTER_NAME_26610 = 26610, - DIS_EMITTER_NAME_26640 = 26640, - DIS_EMITTER_NAME_26660 = 26660, - DIS_EMITTER_NAME_26670 = 26670, - DIS_EMITTER_NAME_26685 = 26685, - DIS_EMITTER_NAME_26730 = 26730, - DIS_EMITTER_NAME_26775 = 26775, - DIS_EMITTER_NAME_26795 = 26795, - DIS_EMITTER_NAME_26820 = 26820, - DIS_EMITTER_NAME_26865 = 26865, - DIS_EMITTER_NAME_26910 = 26910, - DIS_EMITTER_NAME_26955 = 26955, - DIS_EMITTER_NAME_27000 = 27000, - DIS_EMITTER_NAME_27045 = 27045, - DIS_EMITTER_NAME_27090 = 27090, - DIS_EMITTER_NAME_27135 = 27135, - DIS_EMITTER_NAME_27140 = 27140, - DIS_EMITTER_NAME_27141 = 27141, - DIS_EMITTER_NAME_27150 = 27150, - DIS_EMITTER_NAME_27180 = 27180, - DIS_EMITTER_NAME_27190 = 27190, - DIS_EMITTER_NAME_27225 = 27225, - DIS_EMITTER_NAME_27270 = 27270, - DIS_EMITTER_NAME_27315 = 27315, - DIS_EMITTER_NAME_27360 = 27360, - DIS_EMITTER_NAME_27405 = 27405, - DIS_EMITTER_NAME_27450 = 27450, - DIS_EMITTER_NAME_27495 = 27495, - DIS_EMITTER_NAME_27540 = 27540, - DIS_EMITTER_NAME_27570 = 27570, - DIS_EMITTER_NAME_27585 = 27585, - DIS_EMITTER_NAME_27630 = 27630, - DIS_EMITTER_NAME_27675 = 27675, - DIS_EMITTER_NAME_27720 = 27720, - DIS_EMITTER_NAME_27765 = 27765, - DIS_EMITTER_NAME_27810 = 27810, - DIS_EMITTER_NAME_27855 = 27855, - DIS_EMITTER_NAME_27870 = 27870, - DIS_EMITTER_NAME_27900 = 27900, - DIS_EMITTER_NAME_27945 = 27945, - DIS_EMITTER_NAME_27990 = 27990, - DIS_EMITTER_NAME_28035 = 28035, - DIS_EMITTER_NAME_28080 = 28080, - DIS_EMITTER_NAME_28125 = 28125, - DIS_EMITTER_NAME_28170 = 28170, - DIS_EMITTER_NAME_28215 = 28215, - DIS_EMITTER_NAME_28260 = 28260, - DIS_EMITTER_NAME_28280 = 28280, - DIS_EMITTER_NAME_28305 = 28305, - DIS_EMITTER_NAME_28350 = 28350, - DIS_EMITTER_NAME_28395 = 28395, - DIS_EMITTER_NAME_28440 = 28440, - DIS_EMITTER_NAME_28485 = 28485, - DIS_EMITTER_NAME_28530 = 28530, - DIS_EMITTER_NAME_28575 = 28575, - DIS_EMITTER_NAME_28620 = 28620, - DIS_EMITTER_NAME_28665 = 28665, - DIS_EMITTER_NAME_28710 = 28710, - DIS_EMITTER_NAME_28755 = 28755, - DIS_EMITTER_NAME_28800 = 28800, - DIS_EMITTER_NAME_28845 = 28845, - DIS_EMITTER_NAME_28890 = 28890, - DIS_EMITTER_NAME_28935 = 28935, - DIS_EMITTER_NAME_28980 = 28980, - DIS_EMITTER_NAME_29025 = 29025, - DIS_EMITTER_NAME_29070 = 29070, - DIS_EMITTER_NAME_29115 = 29115, - DIS_EMITTER_NAME_29160 = 29160, - DIS_EMITTER_NAME_29185 = 29185, - DIS_EMITTER_NAME_29190 = 29190, - DIS_EMITTER_NAME_29205 = 29205, - DIS_EMITTER_NAME_29215 = 29215, - DIS_EMITTER_NAME_29220 = 29220, - DIS_EMITTER_NAME_29250 = 29250, - DIS_EMITTER_NAME_29270 = 29270, - DIS_EMITTER_NAME_29295 = 29295, - DIS_EMITTER_NAME_29340 = 29340, - DIS_EMITTER_NAME_29385 = 29385, - DIS_EMITTER_NAME_29400 = 29400, - DIS_EMITTER_NAME_29430 = 29430, - DIS_EMITTER_NAME_29440 = 29440, - DIS_EMITTER_NAME_29475 = 29475, - DIS_EMITTER_NAME_29520 = 29520, - DIS_EMITTER_NAME_29565 = 29565, - DIS_EMITTER_NAME_29610 = 29610, - DIS_EMITTER_NAME_29655 = 29655, - DIS_EMITTER_NAME_29700 = 29700, - DIS_EMITTER_NAME_29745 = 29745, - DIS_EMITTER_NAME_29790 = 29790, - DIS_EMITTER_NAME_29835 = 29835, - DIS_EMITTER_NAME_29880 = 29880, - DIS_EMITTER_NAME_29925 = 29925, - DIS_EMITTER_NAME_29970 = 29970, - DIS_EMITTER_NAME_30015 = 30015, - DIS_EMITTER_NAME_30060 = 30060, - DIS_EMITTER_NAME_30080 = 30080, - DIS_EMITTER_NAME_30105 = 30105, - DIS_EMITTER_NAME_30150 = 30150, - DIS_EMITTER_NAME_30195 = 30195, - DIS_EMITTER_NAME_30240 = 30240, - DIS_EMITTER_NAME_30285 = 30285, - DIS_EMITTER_NAME_30330 = 30330, - DIS_EMITTER_NAME_30375 = 30375, - DIS_EMITTER_NAME_30420 = 30420, - DIS_EMITTER_NAME_30465 = 30465, - DIS_EMITTER_NAME_30470 = 30470, - DIS_EMITTER_NAME_30510 = 30510, - DIS_EMITTER_NAME_30520 = 30520, - DIS_EMITTER_NAME_30555 = 30555, - DIS_EMITTER_NAME_30580 = 30580, - DIS_EMITTER_NAME_30600 = 30600, - DIS_EMITTER_NAME_30645 = 30645, - DIS_EMITTER_NAME_30670 = 30670, - DIS_EMITTER_NAME_30690 = 30690, - DIS_EMITTER_NAME_30700 = 30700, - DIS_EMITTER_NAME_30735 = 30735, - DIS_EMITTER_NAME_30780 = 30780, - DIS_EMITTER_NAME_30825 = 30825, - DIS_EMITTER_NAME_30870 = 30870, - DIS_EMITTER_NAME_30915 = 30915, - DIS_EMITTER_NAME_30960 = 30960, - DIS_EMITTER_NAME_31005 = 31005, - DIS_EMITTER_NAME_31050 = 31050, - DIS_EMITTER_NAME_31095 = 31095, - DIS_EMITTER_NAME_31140 = 31140, - DIS_EMITTER_NAME_31185 = 31185, - DIS_EMITTER_NAME_31230 = 31230, - DIS_EMITTER_NAME_31275 = 31275, - DIS_EMITTER_NAME_31320 = 31320, - DIS_EMITTER_NAME_31365 = 31365, - DIS_EMITTER_NAME_31410 = 31410, - DIS_EMITTER_NAME_31455 = 31455, - DIS_EMITTER_NAME_31500 = 31500, - DIS_EMITTER_NAME_31545 = 31545, - DIS_EMITTER_NAME_31590 = 31590, - DIS_EMITTER_NAME_31635 = 31635, - DIS_EMITTER_NAME_31680 = 31680, - DIS_EMITTER_NAME_31681 = 31681, - DIS_EMITTER_NAME_31682 = 31682, - DIS_EMITTER_NAME_31684 = 31684, - DIS_EMITTER_NAME_31725 = 31725, - DIS_EMITTER_NAME_31770 = 31770, - DIS_EMITTER_NAME_31815 = 31815, - DIS_EMITTER_NAME_31860 = 31860, - DIS_EMITTER_NAME_31905 = 31905, - DIS_EMITTER_NAME_31950 = 31950, - DIS_EMITTER_NAME_31995 = 31995, - DIS_EMITTER_NAME_32040 = 32040, - DIS_EMITTER_NAME_32085 = 32085, - DIS_EMITTER_NAME_32130 = 32130, - DIS_EMITTER_NAME_32175 = 32175, - DIS_EMITTER_NAME_32220 = 32220, - DIS_EMITTER_NAME_32265 = 32265, - DIS_EMITTER_NAME_32310 = 32310, - DIS_EMITTER_NAME_32330 = 32330, - DIS_EMITTER_NAME_32355 = 32355, - DIS_EMITTER_NAME_32400 = 32400, - DIS_EMITTER_NAME_32445 = 32445, - DIS_EMITTER_NAME_32490 = 32490, - DIS_EMITTER_NAME_32535 = 32535, - DIS_EMITTER_NAME_32580 = 32580, - DIS_EMITTER_NAME_32625 = 32625, - DIS_EMITTER_NAME_32670 = 32670, - DIS_EMITTER_NAME_32715 = 32715, - DIS_EMITTER_NAME_32760 = 32760, - DIS_EMITTER_NAME_32805 = 32805, - DIS_EMITTER_NAME_32850 = 32850, - DIS_EMITTER_NAME_32895 = 32895, - DIS_EMITTER_NAME_32940 = 32940, - DIS_EMITTER_NAME_32985 = 32985, - DIS_EMITTER_NAME_33030 = 33030, - DIS_EMITTER_NAME_33075 = 33075, - DIS_EMITTER_NAME_33120 = 33120, - DIS_EMITTER_NAME_33165 = 33165, - DIS_EMITTER_NAME_33210 = 33210, - DIS_EMITTER_NAME_33255 = 33255, - DIS_EMITTER_NAME_33300 = 33300, - DIS_EMITTER_NAME_33345 = 33345, - DIS_EMITTER_NAME_33390 = 33390, - DIS_EMITTER_NAME_33435 = 33435, - DIS_EMITTER_NAME_33480 = 33480, - DIS_EMITTER_NAME_33525 = 33525, - DIS_EMITTER_NAME_33570 = 33570, - DIS_EMITTER_NAME_33590 = 33590, - DIS_EMITTER_NAME_33595 = 33595, - DIS_EMITTER_NAME_33600 = 33600, - DIS_EMITTER_NAME_33615 = 33615, - DIS_EMITTER_NAME_33660 = 33660, - DIS_EMITTER_NAME_33705 = 33705, - DIS_EMITTER_NAME_33750 = 33750, - DIS_EMITTER_NAME_33795 = 33795, - DIS_EMITTER_NAME_33840 = 33840, - DIS_EMITTER_NAME_33860 = 33860, - DIS_EMITTER_NAME_33885 = 33885, - DIS_EMITTER_NAME_33930 = 33930, - DIS_EMITTER_NAME_33975 = 33975, - DIS_EMITTER_NAME_34020 = 34020, - DIS_EMITTER_NAME_34040 = 34040, - DIS_EMITTER_NAME_34065 = 34065, - DIS_EMITTER_NAME_34110 = 34110, - DIS_EMITTER_NAME_34155 = 34155, - DIS_EMITTER_NAME_34200 = 34200, - DIS_EMITTER_NAME_34245 = 34245, - DIS_EMITTER_NAME_34290 = 34290, - DIS_EMITTER_NAME_34335 = 34335, - DIS_EMITTER_NAME_34380 = 34380, - DIS_EMITTER_NAME_34425 = 34425, - DIS_EMITTER_NAME_34470 = 34470, - DIS_EMITTER_NAME_34515 = 34515, - DIS_EMITTER_NAME_34560 = 34560, - DIS_EMITTER_NAME_34605 = 34605, - DIS_EMITTER_NAME_34625 = 34625, - DIS_EMITTER_NAME_34640 = 34640, - DIS_EMITTER_NAME_34650 = 34650, - DIS_EMITTER_NAME_34670 = 34670, - DIS_EMITTER_NAME_34695 = 34695, - DIS_EMITTER_NAME_34740 = 34740, - DIS_EMITTER_NAME_34785 = 34785, - DIS_EMITTER_NAME_34795 = 34795, - DIS_EMITTER_NAME_34830 = 34830, - DIS_EMITTER_NAME_34875 = 34875, - DIS_EMITTER_NAME_34920 = 34920, - DIS_EMITTER_NAME_34965 = 34965, - DIS_EMITTER_NAME_35010 = 35010, - DIS_EMITTER_NAME_35055 = 35055, - DIS_EMITTER_NAME_35100 = 35100, - DIS_EMITTER_NAME_35145 = 35145, - DIS_EMITTER_NAME_35190 = 35190, - DIS_EMITTER_NAME_35235 = 35235, - DIS_EMITTER_NAME_35280 = 35280, - DIS_EMITTER_NAME_35325 = 35325, - DIS_EMITTER_NAME_35370 = 35370, - DIS_EMITTER_NAME_35415 = 35415, - DIS_EMITTER_NAME_35460 = 35460, - DIS_EMITTER_NAME_35480 = 35480, - DIS_EMITTER_NAME_35490 = 35490, - DIS_EMITTER_NAME_35505 = 35505, - DIS_EMITTER_NAME_35550 = 35550, - DIS_EMITTER_NAME_35570 = 35570, - DIS_EMITTER_NAME_35580 = 35580, - DIS_EMITTER_NAME_35595 = 35595, - DIS_EMITTER_NAME_35640 = 35640, - DIS_EMITTER_NAME_35685 = 35685, - DIS_EMITTER_NAME_35730 = 35730, - DIS_EMITTER_NAME_35775 = 35775, - DIS_EMITTER_NAME_35800 = 35800, - DIS_EMITTER_NAME_35820 = 35820, - DIS_EMITTER_NAME_35865 = 35865, - DIS_EMITTER_NAME_35910 = 35910, - DIS_EMITTER_NAME_35955 = 35955, - DIS_EMITTER_NAME_36000 = 36000, - DIS_EMITTER_NAME_36045 = 36045, - DIS_EMITTER_NAME_36090 = 36090, - DIS_EMITTER_NAME_36135 = 36135, - DIS_EMITTER_NAME_36180 = 36180, - DIS_EMITTER_NAME_36220 = 36220, - DIS_EMITTER_NAME_36225 = 36225, - DIS_EMITTER_NAME_36230 = 36230, - DIS_EMITTER_NAME_36270 = 36270, - DIS_EMITTER_NAME_36315 = 36315, - DIS_EMITTER_NAME_36360 = 36360, - DIS_EMITTER_NAME_36380 = 36380, - DIS_EMITTER_NAME_36405 = 36405, - DIS_EMITTER_NAME_36420 = 36420, - DIS_EMITTER_NAME_36425 = 36425, - DIS_EMITTER_NAME_36430 = 36430, - DIS_EMITTER_NAME_36450 = 36450, - DIS_EMITTER_NAME_36495 = 36495, - DIS_EMITTER_NAME_36540 = 36540, - DIS_EMITTER_NAME_36585 = 36585, - DIS_EMITTER_NAME_36630 = 36630, - DIS_EMITTER_NAME_36675 = 36675, - DIS_EMITTER_NAME_36720 = 36720, - DIS_EMITTER_NAME_36765 = 36765, - DIS_EMITTER_NAME_36810 = 36810, - DIS_EMITTER_NAME_36855 = 36855, - DIS_EMITTER_NAME_36900 = 36900, - DIS_EMITTER_NAME_36945 = 36945, - DIS_EMITTER_NAME_36990 = 36990, - DIS_EMITTER_NAME_37035 = 37035, - DIS_EMITTER_NAME_37050 = 37050, - DIS_EMITTER_NAME_37080 = 37080, - DIS_EMITTER_NAME_37125 = 37125, - DIS_EMITTER_NAME_37170 = 37170, - DIS_EMITTER_NAME_37215 = 37215, - DIS_EMITTER_NAME_37260 = 37260, - DIS_EMITTER_NAME_37265 = 37265, - DIS_EMITTER_NAME_37305 = 37305, - DIS_EMITTER_NAME_37350 = 37350, - DIS_EMITTER_NAME_37395 = 37395, - DIS_EMITTER_NAME_37440 = 37440, - DIS_EMITTER_NAME_37485 = 37485, - DIS_EMITTER_NAME_37530 = 37530, - DIS_EMITTER_NAME_37575 = 37575, - DIS_EMITTER_NAME_37620 = 37620, - DIS_EMITTER_NAME_37665 = 37665, - DIS_EMITTER_NAME_37710 = 37710, - DIS_EMITTER_NAME_37755 = 37755, - DIS_EMITTER_NAME_37800 = 37800, - DIS_EMITTER_NAME_37845 = 37845, - DIS_EMITTER_NAME_37850 = 37850, - DIS_EMITTER_NAME_37890 = 37890, - DIS_EMITTER_NAME_37935 = 37935, - DIS_EMITTER_NAME_37980 = 37980, - DIS_EMITTER_NAME_38025 = 38025, - DIS_EMITTER_NAME_38045 = 38045, - DIS_EMITTER_NAME_38070 = 38070, - DIS_EMITTER_NAME_38115 = 38115, - DIS_EMITTER_NAME_38120 = 38120, - DIS_EMITTER_NAME_38160 = 38160, - DIS_EMITTER_NAME_38205 = 38205, - DIS_EMITTER_NAME_38210 = 38210, - DIS_EMITTER_NAME_38250 = 38250, - DIS_EMITTER_NAME_38260 = 38260, - DIS_EMITTER_NAME_38295 = 38295, - DIS_EMITTER_NAME_38320 = 38320, - DIS_EMITTER_NAME_38340 = 38340, - DIS_EMITTER_NAME_38385 = 38385, - DIS_EMITTER_NAME_38430 = 38430, - DIS_EMITTER_NAME_38475 = 38475, - DIS_EMITTER_NAME_38520 = 38520, - DIS_EMITTER_NAME_38565 = 38565, - DIS_EMITTER_NAME_38570 = 38570, - DIS_EMITTER_NAME_38572 = 38572, - DIS_EMITTER_NAME_38610 = 38610, - DIS_EMITTER_NAME_38655 = 38655, - DIS_EMITTER_NAME_38700 = 38700, - DIS_EMITTER_NAME_38715 = 38715, - DIS_EMITTER_NAME_38745 = 38745, - DIS_EMITTER_NAME_38790 = 38790, - DIS_EMITTER_NAME_38835 = 38835, - DIS_EMITTER_NAME_38880 = 38880, - DIS_EMITTER_NAME_38925 = 38925, - DIS_EMITTER_NAME_38950 = 38950, - DIS_EMITTER_NAME_38955 = 38955, - DIS_EMITTER_NAME_38970 = 38970, - DIS_EMITTER_NAME_39015 = 39015, - DIS_EMITTER_NAME_39060 = 39060, - DIS_EMITTER_NAME_39105 = 39105, - DIS_EMITTER_NAME_39150 = 39150 -} DIS_PDU_EmitterName; - -extern const value_string DIS_PDU_EmitterName_Strings[]; -#endif /* packet-dis-enums.h */ diff --git a/epan/dissectors/packet-dis-fields.c b/epan/dissectors/packet-dis-fields.c deleted file mode 100644 index 60c4c5bf81..0000000000 --- a/epan/dissectors/packet-dis-fields.c +++ /dev/null @@ -1,1143 +0,0 @@ -/* packet-dis-fields.c - * Routines and definitions for DIS field parsing. - * Copyright 2005, Scientific Research Corporation - * Initial implementation by Jeremy Ouellette - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1998 Gerald Combs - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "config.h" - -#include -#include "packet-dis-fields.h" -#include "packet-dis-enums.h" -#include "packet-dis-pdus.h" - -/* all of these variables are assigned by reference */ -/* *(parserNode.outputVar) = value */ -guint32 disProtocolVersion; -guint32 pduType; -guint32 protocolFamily; -guint32 persistentObjectPduType; -guint32 entityKind; -guint32 entityDomain; -guint32 category; -guint32 radioID; -guint32 disRadioTransmitState; -guint32 encodingScheme; -guint32 tdlType; -guint32 numSamples; -guint32 messageType; -guint32 numFixed; -guint32 numVariable; -guint32 numBeams; -guint32 numTrackJamTargets; -guint32 numShafts; -guint32 numApas; -guint32 numUAEmitter; -guint32 numUABeams; -guint32 variableDatumLength; -guint32 variableParameterType; -guint32 variableRecordLength; -guint32 variableRecordType; -guint32 majorModulation; -guint32 systemModulation; -guint32 modulationParamLength; -guint32 disAntennaPattern; - -/* Headers - */ -DIS_ParserNode DIS_FIELDS_PDU_HEADER[] = -{ - { DIS_FIELDTYPE_PROTOCOL_VERSION, "Protocol Version",0,0,0,&disProtocolVersion }, - { DIS_FIELDTYPE_EXERCISE_ID, "Exercise ID",0,0,0,0 }, - { DIS_FIELDTYPE_PDU_TYPE, "PDU Type",0,0,0,&pduType }, - { DIS_FIELDTYPE_PROTOCOL_FAMILY, "Protocol Family",0,0,0,&protocolFamily }, - { DIS_FIELDTYPE_TIMESTAMP, "Timestamp",0,0,0,0 }, - { DIS_FIELDTYPE_PDU_LENGTH, "Length",0,0,0,0 }, - { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_PERSISTENT_OBJECT_HEADER[] = -{ - { DIS_FIELDTYPE_UINT8, "Protocol Version",0,0,0,0 }, - { DIS_FIELDTYPE_PERSISTENT_OBJECT_TYPE, "PO PDU Type",0,0,0,&persistentObjectPduType }, - { DIS_FIELDTYPE_UINT8, "Exercise ID",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "PO Database ID",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Length",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "PDU Count",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* Composite types - */ - -DIS_ParserNode DIS_FIELDS_BURST_DESCRIPTOR[] = -{ - { DIS_FIELDTYPE_ENTITY_TYPE, "Munition",0,0,0,0 }, - { DIS_FIELDTYPE_WARHEAD, "Warhead",0,0,0,0 }, - { DIS_FIELDTYPE_FUSE, "Fuse",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Quantity",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Rate",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_CLOCK_TIME[] = -{ - { DIS_FIELDTYPE_UINT32, "Hour",0,0,0,0 }, - { DIS_FIELDTYPE_TIMESTAMP, "Time Past The Hour",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_ENTITY_ID[] = -{ - { DIS_FIELDTYPE_SITE, "Site",0,0,0,0 }, - { DIS_FIELDTYPE_APPLICATION, "Application",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY, "Entity",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_ENTITY_TYPE[] = -{ - { DIS_FIELDTYPE_ENTITY_KIND, "Entity Kind",0,0,0,&entityKind }, - { DIS_FIELDTYPE_DOMAIN, "Domain",0,0,0,&entityDomain }, - { DIS_FIELDTYPE_COUNTRY, "Country",0,0,0,0 }, - { DIS_FIELDTYPE_CATEGORY, "Category",0,0,0,&category }, - { DIS_FIELDTYPE_SUBCATEGORY, "Subcategory",0,0,0,0 }, - { DIS_FIELDTYPE_SPECIFIC, "Specific",0,0,0,0 }, - { DIS_FIELDTYPE_EXTRA, "Extra",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_RADIO_ENTITY_TYPE[] = -{ - { DIS_FIELDTYPE_ENTITY_KIND, "Entity Kind",0,0,0,&entityKind }, - { DIS_FIELDTYPE_DOMAIN, "Domain",0,0,0,&entityDomain }, - { DIS_FIELDTYPE_COUNTRY, "Country",0,0,0,0 }, - { DIS_FIELDTYPE_RADIO_CATEGORY, "Radio Category",0,0,0,&category }, - { DIS_FIELDTYPE_NOMENCLATURE_VERSION, "Nomenclature Version",0,0,0,0 }, - { DIS_FIELDTYPE_NOMENCLATURE, "Nomenclature",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_MODULATION_TYPE[] = -{ - { DIS_FIELDTYPE_SPREAD_SPECTRUM, "Spread Spectrum",0,0,0,0 }, - { DIS_FIELDTYPE_MODULATION_MAJOR, "Major",0,0,0,&majorModulation }, - { DIS_FIELDTYPE_MODULATION_DETAIL, "Detail",0,0,0,0 }, - { DIS_FIELDTYPE_MODULATION_SYSTEM, "System",0,0,0,&systemModulation }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_EVENT_ID[] = -{ - { DIS_FIELDTYPE_UINT16, "Site",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Application",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Event Number",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_ORIENTATION[] = -{ - { DIS_FIELDTYPE_FLOAT32, "Psi",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Theta",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Phi",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_SIMULATION_ADDRESS[] = -{ - { DIS_FIELDTYPE_UINT16, "Site",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Application",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VECTOR_FLOAT_32[] = -{ - { DIS_FIELDTYPE_FLOAT32, "X",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Y",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Z",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VECTOR_FLOAT_64[] = -{ - { DIS_FIELDTYPE_FLOAT64, "X",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT64, "Y",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT64, "Z",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS[] = -{ - { DIS_FIELDTYPE_FH_NETWORK_ID, "Frequency Hopping Network ID",0,0,0,0 }, - { DIS_FIELDTYPE_FH_SET_ID, "Frequency Set ID",0,0,0,0 }, - { DIS_FIELDTYPE_LO_SET_ID, "Lockout Set ID",0,0,0,0 }, - { DIS_FIELDTYPE_FH_MSG_START, "Frequency Hopping Message Start",0,0,0,0 }, - { DIS_FIELDTYPE_RESERVED, "Reserved",0,0,0,0 }, - { DIS_FIELDTYPE_FH_SYNC_TIME_OFFSET, "FH Synchronization Time Offset",0,0,0,0 }, - { DIS_FIELDTYPE_FH_SECURITY_KEY, "Transmission Security Key",0,0,0,0 }, - { DIS_FIELDTYPE_FH_CLEAR_CHANNEL, "Clear Channel",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS[] = -{ - { DIS_FIELDTYPE_TS_ALLOCATION_MODE, "Time Slot Allocaton Mode",0,0,0,0 }, - { DIS_FIELDTYPE_TRANSMITTER_PRIMARY_MODE, "Transmitter Primary Mode",0,0,0,0 }, - { DIS_FIELDTYPE_TRANSMITTER_SECONDARY_MODE, "Transmitter Secondary Mode",0,0,0,0 }, - { DIS_FIELDTYPE_JTIDS_SYNC_STATE, "Synchronization State",0,0,0,0 }, - { DIS_FIELDTYPE_NETWORK_SYNC_ID, "Network Sync ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_SIGNAL_LINK16_NETWORK_HEADER[] = -{ - { DIS_FIELDTYPE_LINK16_NPG, "Network Participant Group",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Network Number",0,0,0,0 }, - { DIS_FIELDTYPE_LINK16_TSEC_CVLL, "TSEC CVLL",0,0,0,0 }, - { DIS_FIELDTYPE_LINK16_MSEC_CVLL, "MSEC CVLL",0,0,0,0 }, - { DIS_FIELDTYPE_LINK16_MESSAGE_TYPE, "Message Type",0,0,0,&messageType }, - { DIS_FIELDTYPE_UINT16, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_UINT32, "Time Slot ID",0,0,0,0 }, - { DIS_FIELDTYPE_LINK16_PTT, "Perceived Transmit Time",0,0,0,0 }, - { DIS_FIELDTYPE_LINK16_MESSAGE_DATA, "Message Data",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* Array records - */ -DIS_ParserNode DIS_FIELDS_FIXED_DATUM[] = -{ - { DIS_FIELDTYPE_DATUM_ID, "Datum ID",0,0,0,0 }, - { DIS_FIELDTYPE_FIXED_DATUM_VALUE, "Datum value",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VARIABLE_DATUM[] = -{ - { DIS_FIELDTYPE_DATUM_ID, "Datum ID",0,0,0,0 }, - { DIS_FIELDTYPE_DATUM_LENGTH, "Datum length",0,0,0,&variableDatumLength }, - { DIS_FIELDTYPE_VARIABLE_DATUM_VALUE, "Datum value",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_DATUM_IDS[] = -{ - { DIS_FIELDTYPE_DATUM_ID, "Datum ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_EMITTER_SYSTEM[] = -{ - { DIS_FIELDTYPE_EMITTER_NAME, "Emitter Name",0,0,0,0 }, - { DIS_FIELDTYPE_EMISSION_FUNCTION, "Function",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Emitter ID Number",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VR_UA_SHAFT[] = -{ - { DIS_FIELDTYPE_INT16, "Current Shaft RPM",0,0,0,0 }, - { DIS_FIELDTYPE_INT16, "Ordered Shaft RPM",0,0,0,0 }, - { DIS_FIELDTYPE_INT32, "Shaft RPM Rate of Change",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VR_APA[] = -{ - { DIS_FIELDTYPE_INT16, "Parameter Index",0,0,0,0 }, /*FIXME enum*/ - { DIS_FIELDTYPE_INT16, "Value", 0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_UA_EMITTER_SYSTEM[] = -{ - { DIS_FIELDTYPE_UINT16, "Acoustic Emitter Name",0,0,0,0 }, /*FIXME enum*/ - { DIS_FIELDTYPE_UINT8, "Function",0,0,0,0 }, /*FIXME enum*/ - { DIS_FIELDTYPE_UINT8, "Acoustic ID Number",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_FUNDAMENTAL_PARAMETER_DATA[] = -{ - { DIS_FIELDTYPE_FLOAT32, "Frequency",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Frequency Range",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Effective Radiated Power",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Pulse Repetition Frequency",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Pulse Width",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Beam Azimuth Center",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Beam Azimuth Sweep",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Beam Elevation Center",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Beam Elevation Sweep",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Beam Sweep Sync",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_TRACK_JAM[] = -{ - { DIS_FIELDTYPE_SITE, "Site",0,0,0,0 }, - { DIS_FIELDTYPE_APPLICATION, "Application",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY, "Entity",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Emitter ID",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Beam ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* Variable Parameters - */ -DIS_ParserNode DIS_FIELDS_VP_TYPE[] = -{ - { DIS_FIELDTYPE_PARAMETER_TYPE_DESIGNATOR, "Variable Parameter Type",0,0,0,&variableParameterType }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* Array record contents - variable parameter records - */ -DIS_ParserNode DIS_FIELDS_VP_GENERIC[] = -{ - { DIS_FIELDTYPE_FIXED_LEN_STR, "Data",15,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VP_ARTICULATED_PART[] = -{ - { DIS_FIELDTYPE_UINT8, "Change",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Part Attached To ID",0,0,0,0 }, - { DIS_FIELDTYPE_ARTIC_PARAM_TYPE, "Parameter Type",0,0,0,0 }, - { DIS_FIELDTYPE_UINT64, "Parameter Value",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VP_ATTACHED_PART[] = -{ - { DIS_FIELDTYPE_UINT8, "Attached Indicator",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Part Attached To ID",0,0,0,0 }, - { DIS_FIELDTYPE_ARTIC_PARAM_TYPE, "Parameter Type",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_TYPE, "Part Type",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VP_ENTITY_OFFSET[] = -{ - { DIS_FIELDTYPE_UINT8, "Offset Type",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",2,0,0,0 }, - { DIS_FIELDTYPE_VECTOR_32, "Offset",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VP_ENTITY_ASSOCIATION[] = -{ - { DIS_FIELDTYPE_UINT8, "Change Indicator",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Association Status",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Association Type",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Object Identifier",2,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Own Station Location",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Physical Connection Type",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Group Member Type",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Group Number",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; -/* Variable Records - */ -DIS_ParserNode DIS_FIELDS_VR_TYPE[] = -{ - { DIS_FIELDTYPE_UINT32, "Record Type",0,0,0,&variableRecordType }, - { DIS_FIELDTYPE_UINT16, "Record Length",0,0,0,&variableRecordLength }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VR_APPLICATION_HEALTH_STATUS[] = -{ - { DIS_FIELDTYPE_PAD8, "Padding",2,0,0,0 }, - { DIS_FIELDTYPE_APPLICATION_STATUS_TYPE, "Status Type",0,0,0,0 }, - { DIS_FIELDTYPE_APPLICATION_GENERAL_STATUS, "General Status",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Specific Status",0,0,0,0 }, - { DIS_FIELDTYPE_INT32, "Status Value Int",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT64, "Status Value Float",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VR_APPLICATION_INITIALIZATION[] = -{ - { DIS_FIELDTYPE_UINT8, "Exercise ID",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_FIXED_LEN_STR, "Exercise File Path",256,0,0,0 }, - { DIS_FIELDTYPE_FIXED_LEN_STR, "Exercise File Name",128,0,0,0 }, - { DIS_FIELDTYPE_FIXED_LEN_STR, "Application Role",64,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VR_DATA_QUERY[] = -{ - { DIS_FIELDTYPE_UINT16, "Num Records",0,0,0,&numFixed }, - { DIS_FIELDTYPE_FIXED_DATUM_IDS, "Record",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM[] = -{ - { DIS_FIELDTYPE_UINT8, "Beam Data Length",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Beam ID Number",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Beam Parameter Index",0,0,0,0 }, - { DIS_FIELDTYPE_FUNDAMENTAL_PARAMETER_DATA, - "Fundamental Parameter Data",0,0,0,0 }, - { DIS_FIELDTYPE_BEAM_FUNCTION, "Beam Function",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Number of Targets in Track/Jam Field",0,0,0,&numTrackJamTargets }, - { DIS_FIELDTYPE_UINT8, "High Density Track/Jam",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_UINT32, "Jamming Mode Sequence",0,0,0,0 }, - { DIS_FIELDTYPE_TRACK_JAM, "Track/Jam Entity",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM[] = -{ - { DIS_FIELDTYPE_UINT8, "System Data Length",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Number of Beams (M)",0,0,0,&numBeams }, - { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_EMITTER_SYSTEM, "Emitter System",0,0,0,0 }, - { DIS_FIELDTYPE_VECTOR_32, "Location",0,0,0,0 }, - { DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM, "Beam",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA[] = -{ - { DIS_FIELDTYPE_UINT16, "Active Emission Parameter Index",0,0,0,0 }, /*FIXME enum!!!*/ - { DIS_FIELDTYPE_UINT16, "Scan Pattern",0,0,0,0 }, /*FIXME enum!!!*/ - { DIS_FIELDTYPE_FLOAT32, "Beam Center Azimuth (Horizontal Bearing)",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Azimuthal Beamwidth (Horizontal Beamwidth)",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Beam Center D/E",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "D/E Beamwidth (Vertical Beamwidth)",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VR_UA_BEAM[] = -{ - { DIS_FIELDTYPE_UINT8, "Beam Data Length",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Beam ID Number",0,0,0,0 }, - { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA, - "Fundamental Data Parameters",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_FIELDS_VR_UA_EMITTER_SYSTEM[] = -{ - { DIS_FIELDTYPE_UINT8, "Emitter System Data Length",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEM_BEAMS, "Number of Beams (m)",0,0,0,0 }, - { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_UA_EMITTER_SYSTEM, "Acoustic Emitter System",0,0,0,0 }, - { DIS_FIELDTYPE_VECTOR_32, "Location (with respect to entity)",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* Bit fields - */ -DIS_ParserNode DIS_FIELDS_NONE[] = -{ - { DIS_FIELDTYPE_END, NULL, 0,0,0,0 } -}; - -DIS_BitMask DIS_APPEARANCE_LANDPLATFORM[] = -{ - { 0x00000001, 0, "Paint Scheme", { - { 0, "Uniform color" }, - { 1, "Camouflage" }, - { 0,0 } - } }, - { 0x00000002, 1, "Mobility", { - { 0, "No mobility kill" }, - { 1, "Mobility kill" }, - { 0,0 } - } }, - { 0x00000004, 2, "Fire Power", { - { 0, "No fire-power kill" }, - { 1, "Fire-power kill" }, - { 0,0 } - } }, - { 0x00000018, 3, "Damage", { - { 0, "No damage" }, - { 1, "Slight damage" }, - { 2, "Moderate damage" }, - { 3, "Destroyed" }, - { 0,0 } - } }, - { 0, 0, 0, { - { 0, 0 } - } } -}; - -DIS_BitMask DIS_APPEARANCE_LIFEFORM[] = -{ - { 0x00000001, 0, "Paint Scheme", { - { 0, "Uniform color" }, - { 1, "Camouflage" }, - { 0,0 } - } }, - { 0x00000018, 3, "Health", { - { 0, "No injury" }, - { 1, "Slight injury" }, - { 2, "Moderate injury" }, - { 3, "Fatal injury" }, - { 0,0 } - } }, - { 0, 0, 0, { - { 0, 0 } - } } -}; - -/* Initialize the field parsers that are not explicitly included in any - * specific PDU. These fields are only accessed and used if a variant - * field indicates they are to be used. - */ -void initializeFieldParsers(void) -{ - initializeParser(DIS_FIELDS_VP_GENERIC); - initializeParser(DIS_FIELDS_VP_ARTICULATED_PART); - initializeParser(DIS_FIELDS_VP_ATTACHED_PART); - initializeParser(DIS_FIELDS_VP_ENTITY_OFFSET); - initializeParser(DIS_FIELDS_VP_ENTITY_ASSOCIATION); - initializeParser(DIS_FIELDS_VR_APPLICATION_HEALTH_STATUS); - initializeParser(DIS_FIELDS_VR_APPLICATION_INITIALIZATION); - initializeParser(DIS_FIELDS_VR_DATA_QUERY); - initializeParser(DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM); - initializeParser(DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM); - initializeParser(DIS_FIELDS_VR_UA_SHAFT); - initializeParser(DIS_FIELDS_VR_UA_EMITTER_SYSTEM); - initializeParser(DIS_FIELDS_VR_UA_BEAM); - initializeParser(DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS); - initializeParser(DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS); - initializeParser(DIS_FIELDS_SIGNAL_LINK16_NETWORK_HEADER); - -} - -/* Adjust an offset variable for proper alignment for a specified field length. - */ -static gint alignOffset(gint offset, guint fieldLength) -{ - gint remainder = offset % fieldLength; - if (remainder != 0) - { - offset += fieldLength - remainder; - } - return offset; -} - -/* Parse a field consisting of a specified number of bytes. This field parser - * doesn't perform any alignment. - */ -gint parseField_Bytes(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes) -{ - proto_tree_add_text(tree, tvb, offset, numBytes, "%s (%d bytes)", - parserNode.fieldLabel, numBytes); - offset += numBytes; - return offset; -} - -/* Parse a bitmask field. - */ -gint parseField_Bitmask(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes) -{ - DIS_BitMask *bitMask = 0; - guint64 uintVal = 0; - - offset = alignOffset(offset, numBytes); - - switch(numBytes) - { - case 1: - uintVal = tvb_get_guint8(tvb, offset); - break; - case 2: - uintVal = tvb_get_ntohs(tvb, offset); - break; - case 4: - uintVal = tvb_get_ntohl(tvb, offset); - break; - case 8: - uintVal = tvb_get_ntoh64(tvb, offset); - break; - default: - /* assert */ - break; - } - - switch(parserNode.fieldType) - { - case DIS_FIELDTYPE_APPEARANCE: - if ((entityKind == DIS_ENTITYKIND_PLATFORM) && - (entityDomain == DIS_DOMAIN_LAND)) - { - bitMask = DIS_APPEARANCE_LANDPLATFORM; - } - else if (entityKind == DIS_ENTITYKIND_LIFE_FORM) - { - bitMask = DIS_APPEARANCE_LIFEFORM; - } - break; - default: - break; - } - - if (bitMask != 0) - { - int maskIndex = 0; - while (bitMask[maskIndex].maskBits != 0) - { - int mapIndex = 0; - DIS_BitMaskMapping *bitMaskMap = bitMask[maskIndex].bitMappings; - - while (bitMaskMap[mapIndex].label != 0) - { - if (((bitMask[maskIndex].maskBits & uintVal) >> bitMask[maskIndex].shiftBits) == - bitMaskMap[mapIndex].value) - { - proto_tree_add_text(tree, tvb, offset, numBytes, - "%s = %s", bitMask[maskIndex].label, - bitMaskMap[mapIndex].label); - break; - } - ++mapIndex; - } - ++maskIndex; - } - } - else - { - proto_tree_add_text(tree, tvb, offset, numBytes, - "Unknown Appearance Type (%" G_GINT64_MODIFIER "u)", uintVal); - } - - offset += numBytes; - - return offset; -} - -/* Parse an unsigned integer field of a specified number of bytes. - */ -gint parseField_UInt(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes) -{ - guint64 uintVal = 0; - - offset = alignOffset(offset, numBytes); - - switch(numBytes) - { - case 1: - uintVal = tvb_get_guint8(tvb, offset); - break; - case 2: - uintVal = tvb_get_ntohs(tvb, offset); - break; - case 4: - uintVal = tvb_get_ntohl(tvb, offset); - break; - case 8: - uintVal = tvb_get_ntoh64(tvb, offset); - break; - default: - /* assert */ - break; - } - - proto_tree_add_text(tree, tvb, offset, numBytes, "%s = %" G_GINT64_MODIFIER "u", - parserNode.fieldLabel, uintVal); - - if (parserNode.outputVar != 0) - { - *(parserNode.outputVar) = (guint32)uintVal; - } - - offset += numBytes; - - return offset; -} - -/* Parse a signed integer field of a specified number of bytes. - */ -gint parseField_Int(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes) -{ - gint64 intVal = 0; - - offset = alignOffset(offset, numBytes); - - switch(numBytes) - { - case 1: - intVal = (gint8)tvb_get_guint8(tvb, offset); - break; - case 2: - intVal = (gint16)tvb_get_ntohs(tvb, offset); - break; - case 4: - intVal = (gint32)tvb_get_ntohl(tvb, offset); - break; - case 8: - intVal = (gint64)tvb_get_ntoh64(tvb, offset); - break; - default: - /* assert */ - break; - } - - proto_tree_add_text(tree, tvb, offset, numBytes, "%s = %" G_GINT64_MODIFIER "d", - parserNode.fieldLabel, intVal); - - offset += numBytes; - - return offset; -} - -/* Parse a field that explicitly specified a number of pad bytes (vs implicit - * padding, which occurs whenever padding is inserted to properly align the - * field. - */ -gint parseField_Pad(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode _U_, guint numBytes) -{ - proto_tree_add_text(tree, tvb, offset, numBytes, - "Explicit Padding (%d bytes)", numBytes); - - offset += numBytes; - - return offset; -} - -/* Parse an enumerated type field. - */ -gint parseField_Enum(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes) -{ - const value_string *enumStrings = 0; - guint32 enumVal = 0; - const gchar *enumStr = 0; -#if 0 - proto_item *pi; -#endif - int dis_hf_id = -1; - - offset = alignOffset(offset, numBytes); - - switch(parserNode.fieldType) - { - case DIS_FIELDTYPE_ACKNOWLEDGE_FLAG: - enumStrings = DIS_PDU_AcknowledgeFlag_Strings; - break; - case DIS_FIELDTYPE_ACTION_ID: - enumStrings = DIS_PDU_ActionId_Strings; - break; - case DIS_FIELDTYPE_APPLICATION_GENERAL_STATUS: - enumStrings = DIS_PDU_ApplicationGeneralStatus_Strings; - break; - case DIS_FIELDTYPE_APPLICATION_STATUS_TYPE: - enumStrings = DIS_PDU_ApplicationStatusType_Strings; - break; - case DIS_FIELDTYPE_APPLICATION_TYPE: - enumStrings = DIS_PDU_ApplicationType_Strings; - break; - case DIS_FIELDTYPE_CONTROL_ID: - enumStrings = DIS_PDU_ControlId_Strings; - break; - case DIS_FIELDTYPE_PROTOCOL_VERSION: - enumStrings = DIS_PDU_ProtocolVersion_Strings; - dis_hf_id = hf_dis_proto_ver; - break; - case DIS_FIELDTYPE_PROTOCOL_FAMILY: - enumStrings = DIS_PDU_ProtocolFamily_Strings; - dis_hf_id = hf_dis_proto_fam; - break; - case DIS_FIELDTYPE_PDU_TYPE: - enumStrings = DIS_PDU_Type_Strings; - dis_hf_id = hf_dis_pdu_type; - break; - case DIS_FIELDTYPE_ENTITY_KIND: - enumStrings = DIS_PDU_EntityKind_Strings; - dis_hf_id = hf_dis_entityKind; - break; - case DIS_FIELDTYPE_DOMAIN: - enumStrings = DIS_PDU_Domain_Strings; - dis_hf_id = hf_dis_entityDomain; - break; - case DIS_FIELDTYPE_DETONATION_RESULT: - enumStrings = DIS_PDU_DetonationResult_Strings; - break; - case DIS_FIELDTYPE_FROZEN_BEHAVIOR: - enumStrings = DIS_PDU_FrozenBehavior_Strings; - break; - case DIS_FIELDTYPE_RADIO_CATEGORY: - enumStrings = DIS_PDU_RadioCategory_Strings; - dis_hf_id = hf_dis_category_radio; - break; - case DIS_FIELDTYPE_NOMENCLATURE_VERSION: - enumStrings = DIS_PDU_NomenclatureVersion_Strings; - break; - case DIS_FIELDTYPE_NOMENCLATURE: - enumStrings = DIS_PDU_Nomenclature_Strings; - break; - case DIS_FIELDTYPE_CATEGORY: - if (entityKind == DIS_ENTITYKIND_PLATFORM) - { - switch(entityDomain) - { - case DIS_DOMAIN_LAND: - enumStrings = DIS_PDU_Category_LandPlatform_Strings; - dis_hf_id = hf_dis_category_land; - break; - case DIS_DOMAIN_AIR: - enumStrings = DIS_PDU_Category_AirPlatform_Strings; - dis_hf_id = hf_dis_category_air; - break; - case DIS_DOMAIN_SURFACE: - enumStrings = DIS_PDU_Category_SurfacePlatform_Strings; - dis_hf_id = hf_dis_category_surface; - break; - case DIS_DOMAIN_SUBSURFACE: - enumStrings = DIS_PDU_Category_SubsurfacePlatform_Strings; - dis_hf_id = hf_dis_category_subsurface; - break; - case DIS_DOMAIN_SPACE: - enumStrings = DIS_PDU_Category_SpacePlatform_Strings; - dis_hf_id = hf_dis_category_space; - break; - default: - enumStrings = 0; - break; - } - } - break; - case DIS_FIELDTYPE_EMITTER_NAME: - enumStrings = DIS_PDU_EmitterName_Strings; - dis_hf_id = hf_dis_emitter_name; - break; - case DIS_FIELDTYPE_EMISSION_FUNCTION: - enumStrings = DIS_PDU_EmissionFunction_Strings; - dis_hf_id = hf_dis_emission_function; - break; - case DIS_FIELDTYPE_BEAM_FUNCTION: - enumStrings = DIS_PDU_BeamFunction_Strings; - dis_hf_id = hf_dis_beam_function; - break; - case DIS_FIELDTYPE_PARAMETER_TYPE_DESIGNATOR: - enumStrings = DIS_PDU_ParameterTypeDesignator_Strings; - break; - case DIS_FIELDTYPE_PERSISTENT_OBJECT_TYPE: - enumStrings = DIS_PDU_PersistentObjectType_Strings; - break; - case DIS_FIELDTYPE_PERSISTENT_OBJECT_CLASS: - enumStrings = DIS_PDU_PO_ObjectClass_Strings; - break; - case DIS_FIELDTYPE_REASON: - enumStrings = DIS_PDU_Reason_Strings; - break; - case DIS_FIELDTYPE_REQUEST_STATUS: - enumStrings = DIS_PDU_RequestStatus_Strings; - break; - case DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE: - enumStrings = DIS_PDU_RequiredReliabilityService_Strings; - break; - case DIS_FIELDTYPE_RESPONSE_FLAG: - enumStrings = DIS_PDU_DisResponseFlag_Strings; - break; - case DIS_FIELDTYPE_MODULATION_DETAIL: - switch (majorModulation) { - case DIS_MAJOR_MOD_AMPLITUDE: - enumStrings = DIS_PDU_DetailModulationAmplitude_Strings; - break; - case DIS_MAJOR_MOD_AMPLITUDE_AND_ANGLE: - enumStrings = DIS_PDU_DetailModulationAmpAndAngle_Strings; - break; - case DIS_MAJOR_MOD_ANGLE: - enumStrings = DIS_PDU_DetailModulationAngle_Strings; - break; - case DIS_MAJOR_MOD_COMBINATION: - enumStrings = DIS_PDU_DetailModulationCombination_Strings; - break; - case DIS_MAJOR_MOD_PULSE: - enumStrings = DIS_PDU_DetailModulationPulse_Strings; - break; - case DIS_MAJOR_MOD_UNMODULATED: - enumStrings = DIS_PDU_DetailModulationUnmodulated_Strings; - break; - case DIS_MAJOR_MOD_CPSM: /* CPSM only has "other" defined */ - case DIS_MAJOR_MOD_OTHER: - default: - enumStrings = DIS_PDU_DetailModulationCPSM_Strings; - break; - } - break; - case DIS_FIELDTYPE_LINK16_MESSAGE_TYPE: - enumStrings = DIS_PDU_Link16_MessageType_Strings; - dis_hf_id = hf_dis_signal_link16_message_type; - break; - default: - enumStrings = 0; - break; - } - - switch(numBytes) - { - case 1: - enumVal = tvb_get_guint8(tvb, offset); - break; - case 2: - enumVal = tvb_get_ntohs(tvb, offset); - break; - case 4: - enumVal = tvb_get_ntohl(tvb, offset); - break; - default: - /* assert */ - break; - } - - enumStr = val_to_str(enumVal, enumStrings, "Unknown Enumeration (%d)"); - - if (dis_hf_id != -1) { -#if 0 - pi = proto_tree_add_item(tree, dis_hf_id, tvb, offset, numBytes, ENC_BIG_ENDIAN); - proto_item_set_text(pi, "%s = %s", parserNode.fieldLabel, enumStr); -#else - proto_tree_add_item(tree, dis_hf_id, tvb, offset, numBytes, ENC_BIG_ENDIAN); -#endif - } - else { - proto_tree_add_text(tree, tvb, offset, numBytes, "%s = %s", - parserNode.fieldLabel, enumStr); - } - - if (parserNode.outputVar != 0) - { - *(parserNode.outputVar) = enumVal; - } - - offset += numBytes; - - return offset; -} - -/* Parse a 4-byte floating-point value. - */ -gint parseField_Float(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode) -{ - gfloat floatVal; - - offset = alignOffset(offset, 4); - floatVal = tvb_get_ntohieee_float(tvb, offset); - proto_tree_add_text(tree, tvb, offset, 4, "%s = %f", - parserNode.fieldLabel, floatVal); - - offset += 4; - - return offset; -} -#if 0 -/* Parse a 4-byte floating-point value, given text label. - */ -static gint parseField_Float_Text(tvbuff_t *tvb, proto_tree *tree, gint offset, gchar *charStr) -{ - gfloat floatVal; - - offset = alignOffset(offset, 4); - floatVal = tvb_get_ntohieee_float(tvb, offset); - proto_tree_add_text(tree, tvb, offset, 4, "%s = %f", - charStr, floatVal); - - offset += 4; - - return offset; -} -#endif -/* Parse an 8-byte floating-point value. - */ -gint parseField_Double(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode) -{ - gdouble doubleVal; - - offset = alignOffset(offset, 8); - doubleVal = tvb_get_ntohieee_double(tvb, offset); - proto_tree_add_text(tree, tvb, offset, 8, "%s = %f", - parserNode.fieldLabel, doubleVal); - - offset += 8; - - return offset; -} - -/* Parse the Timestamp */ -gint parseField_Timestamp(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode) -{ - /* some consts */ - static double MSEC_PER_SECOND = 1000.0; - static double MSEC_PER_MINUTE = 60.0 * 1000.0 ; - static double MSEC_PER_HOUR = 60.0 * 60.0 * 1000.0; - static double FSV = 0x7fffffff; - /* variables */ - guint isAbsolute = 0; - guint32 uintVal; - guint minutes; - guint seconds; - guint milliseconds; - double ms; - - offset = alignOffset(offset, 4); - - /* convert to host value */ - uintVal = tvb_get_ntohl(tvb, offset); - /* determine absolute vis sim time */ - if( uintVal & 1 ) - isAbsolute = 1; - - /* convert TS to MS */ - ms = (uintVal >> 1) * MSEC_PER_HOUR / FSV; - ms += 0.5; - - /* calc minutes and reduce ms */ - minutes = (guint) (ms / MSEC_PER_MINUTE); - ms -= (minutes * MSEC_PER_MINUTE); - - /* calc seconds and reduce ms */ - seconds = (guint) (ms / MSEC_PER_SECOND); - ms -= (seconds * MSEC_PER_SECOND); - - /* truncate milliseconds */ - milliseconds = (guint) ms; - - /* push out the values */ - if( isAbsolute ) - { - proto_tree_add_text(tree, tvb, offset, 4, "%s = %02d:%02d %03d absolute (UTM)", - parserNode.fieldLabel, minutes, seconds, milliseconds); - } - else - { - proto_tree_add_text(tree, tvb, offset, 4, "%s = %02d:%02d %03d relative", - parserNode.fieldLabel, minutes, seconds, milliseconds); - } - - offset += 4; - return offset; -} - -/* Parse a variable parameter field. - */ -gint parseField_VariableParameter(tvbuff_t *tvb, proto_tree *tree, gint offset, packet_info *pinfo) -{ - DIS_ParserNode *paramParser = 0; - - /* Determine the parser to use based on the type */ - switch (variableParameterType) { - case DIS_PARAM_TYPE_DESIG_ARTICULATED_PART: - paramParser = DIS_FIELDS_VP_ARTICULATED_PART; - break; - case DIS_PARAM_TYPE_DESIG_ATTACHED_PART: - paramParser = DIS_FIELDS_VP_ATTACHED_PART; - break; - case DIS_PARAM_TYPE_DESIG_ENTITY_OFFSET: - paramParser = DIS_FIELDS_VP_ENTITY_OFFSET; - break; - case DIS_PARAM_TYPE_DESIG_ENTITY_ASSOCIATION: - paramParser = DIS_FIELDS_VP_ENTITY_ASSOCIATION; - break; - default: - paramParser = DIS_FIELDS_VP_GENERIC; - break; - } - - /* Parse the variable parameter fields */ - if (paramParser) - { - offset = parseFields(tvb, tree, offset, paramParser, pinfo); - } - - return offset; -} - -/* Parse a variable record field. - */ -gint parseField_VariableRecord(tvbuff_t *tvb, proto_tree *tree, gint offset, packet_info *pinfo) -{ - DIS_ParserNode *paramParser = 0; - - /* Determine the parser to use based on the type */ - switch (variableRecordType) { - case 47200: - paramParser = DIS_FIELDS_VR_APPLICATION_HEALTH_STATUS; - break; - case 47300: - paramParser = DIS_FIELDS_VR_APPLICATION_INITIALIZATION; - break; - case 47600: - paramParser = DIS_FIELDS_VR_DATA_QUERY; - break; - default: - { - - guint32 dataLength = variableRecordLength - 6; - - if (dataLength > 0) - { - proto_tree_add_text(tree, tvb, offset, dataLength, - "Record Data (%d bytes)", dataLength); - offset += dataLength; - } - } - break; - } - - /* Parse the variable record fields */ - if (paramParser) - { - offset = parseFields(tvb, tree, offset, paramParser, pinfo); - } - - /* Should alignment padding be added */ - if (variableRecordLength % 8) - { - guint32 alignmentPadding = (8 - (variableRecordLength % 8)); - - proto_tree_add_text(tree, tvb, offset, alignmentPadding, - "Alignment Padding (%d bytes)", alignmentPadding); - offset += alignmentPadding; - } - - return offset; -} - -/* Parse a variable electromagnetic emission system beam. - */ -gint parseField_ElectromagneticEmissionSystemBeam( - tvbuff_t *tvb, proto_tree *tree, gint offset, packet_info *pinfo) -{ - DIS_ParserNode *paramParser = 0; - - /* Determine the parser to use based on the PDU type */ - if (pduType == DIS_PDUTYPE_ELECTROMAGNETIC_EMISSION) - paramParser = DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM; - - /* Parse the variable parameter fields */ - if (paramParser) - { - offset = parseFields(tvb, tree, offset, paramParser, pinfo); - } - - return offset; -} - diff --git a/epan/dissectors/packet-dis-fields.h b/epan/dissectors/packet-dis-fields.h deleted file mode 100644 index d72b9963c6..0000000000 --- a/epan/dissectors/packet-dis-fields.h +++ /dev/null @@ -1,415 +0,0 @@ -/* packet-dis-fields.h - * Declarations for DIS field parsing. - * Copyright 2005, Scientific Research Corporation - * Initial implementation by Jeremy Ouellette - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1998 Gerald Combs - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef __PACKET_DIS_FIELDPARSERS_H__ -#define __PACKET_DIS_FIELDPARSERS_H__ - -#include - -extern int hf_dis_proto_ver; -extern int hf_dis_exercise_id; -extern int hf_dis_pdu_type; -extern int hf_dis_proto_fam; -extern int hf_dis_pdu_length; -extern int hf_dis_entity_id_site; -extern int hf_dis_entity_id_application; -extern int hf_dis_entity_id_entity; -extern int hf_dis_num_art_params; -extern int hf_dis_entityKind; -extern int hf_dis_entityDomain; -extern int hf_dis_category_land; -extern int hf_dis_category_air; -extern int hf_dis_category_surface; -extern int hf_dis_category_subsurface; -extern int hf_dis_category_space; -extern int hf_dis_category_radio; -extern int hf_dis_num_electromagnetic_emission_systems; -extern int hf_dis_emitter_name; -extern int hf_dis_emission_function; -extern int hf_dis_beam_function; -extern int hf_dis_radio_id; -extern int hf_dis_ens; -extern int hf_dis_ens_class; -extern int hf_dis_ens_type; -extern int hf_dis_ens_type_audio; -extern int hf_dis_tdl_type; -extern int hf_dis_sample_rate; -extern int hf_dis_data_length; -extern int hf_dis_num_of_samples; -extern int hf_dis_signal_data; -extern int hf_dis_radio_category; -extern int hf_dis_nomenclature_version; -extern int hf_dis_nomenclature; -extern int hf_dis_radio_transmit_state; -extern int hf_dis_radio_input_source; -extern int hf_dis_antenna_pattern_type; -extern int hf_dis_antenna_pattern_length; -extern int hf_dis_transmit_frequency; -extern int hf_dis_spread_spectrum_usage; -extern int hf_dis_frequency_hopping; -extern int hf_dis_pseudo_noise_modulation; -extern int hf_dis_time_hopping; -extern int hf_dis_modulation_major; -extern int hf_dis_modulation_system; -extern int hf_dis_crypto_system; -extern int hf_dis_crypto_key; -extern int hf_dis_encryption_mode; -extern int hf_dis_key_identifier; -extern int hf_dis_modulation_parameter_length; -extern int hf_dis_mod_param_fh_net_id; -extern int hf_dis_mod_param_fh_set_id; -extern int hf_dis_mod_param_fh_lo_set_id; -extern int hf_dis_mod_param_fh_msg_start; -extern int hf_dis_mod_param_fh_reserved; -extern int hf_dis_mod_param_fh_sync_time_offset; -extern int hf_dis_mod_param_fh_security_key; -extern int hf_dis_mod_param_fh_clear_channel; -extern int hf_dis_mod_param_dump; -extern int hf_dis_mod_param_ts_allocation_mode; -extern int hf_dis_mod_param_transmitter_prim_mode; -extern int hf_dis_mod_param_transmitter_second_mode; -extern int hf_dis_mod_param_sync_state; -extern int hf_dis_mod_param_network_sync_id; -extern int hf_dis_antenna_pattern_parameter_dump; -extern int hf_dis_num_shafts; -extern int hf_dis_num_apas; -extern int hf_dis_num_ua_emitter_systems; -extern int hf_dis_signal_link16_npg; -extern int hf_dis_signal_link16_tsec_cvll; -extern int hf_dis_signal_link16_msec_cvll; -extern int hf_dis_signal_link16_message_type; -extern int hf_dis_signal_link16_ptt; -extern int hf_dis_signal_link16_time_slot_type; -extern int hf_dis_signal_link16_rti; -extern int hf_dis_signal_link16_stn; -extern int hf_dis_signal_link16_sdusn; - -extern int ett_dis_ens; -extern int ett_dis_crypto_key; -extern int ett_dis_signal_link16_network_header; -extern int ett_dis_signal_link16_message_data; -extern int ett_dis_signal_link16_jtids_header; - - - -/* enumeration of all field types used for DIS parsing. */ -typedef enum -{ - /* end marker to indicate the end of a parser sequence */ - DIS_FIELDTYPE_END = 0, - - /* basic numeric types */ - DIS_FIELDTYPE_INT8, - DIS_FIELDTYPE_INT16, - DIS_FIELDTYPE_INT32, - DIS_FIELDTYPE_INT64, - DIS_FIELDTYPE_UINT8, - DIS_FIELDTYPE_UINT16, - DIS_FIELDTYPE_UINT32, - DIS_FIELDTYPE_UINT64, - DIS_FIELDTYPE_FLOAT32, - DIS_FIELDTYPE_FLOAT64, - - /* padding */ - DIS_FIELDTYPE_PAD8, - DIS_FIELDTYPE_PAD16, - DIS_FIELDTYPE_PAD24, - DIS_FIELDTYPE_PAD32, - - /* enumerations */ - DIS_FIELDTYPE_ACKNOWLEDGE_FLAG, - DIS_FIELDTYPE_ACTION_ID, - DIS_FIELDTYPE_APPLICATION_GENERAL_STATUS, - DIS_FIELDTYPE_APPLICATION_STATUS_TYPE, - DIS_FIELDTYPE_APPLICATION_TYPE, - DIS_FIELDTYPE_CATEGORY, - DIS_FIELDTYPE_CONTROL_ID, - DIS_FIELDTYPE_DETONATION_RESULT, - DIS_FIELDTYPE_DOMAIN, - DIS_FIELDTYPE_ENTITY_KIND, - DIS_FIELDTYPE_FROZEN_BEHAVIOR, - DIS_FIELDTYPE_PARAMETER_TYPE_DESIGNATOR, - DIS_FIELDTYPE_PDU_TYPE, - DIS_FIELDTYPE_PERSISTENT_OBJECT_TYPE, - DIS_FIELDTYPE_PERSISTENT_OBJECT_CLASS, - DIS_FIELDTYPE_PROTOCOL_FAMILY, - DIS_FIELDTYPE_PROTOCOL_VERSION, - DIS_FIELDTYPE_REASON, - DIS_FIELDTYPE_REQUEST_STATUS, - DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, - DIS_FIELDTYPE_RESPONSE_FLAG, - DIS_FIELDTYPE_TDL_TYPE, - DIS_FIELDTYPE_RADIO_CATEGORY, - DIS_FIELDTYPE_NOMENCLATURE_VERSION, - DIS_FIELDTYPE_NOMENCLATURE, - DIS_FIELDTYPE_RADIO_TRANSMIT_STATE, - DIS_FIELDTYPE_RADIO_INPUT_SOURCE, - DIS_FIELDTYPE_ANTENNA_PATTERN_TYPE, - DIS_FIELDTYPE_SPREAD_SPECTRUM, - DIS_FIELDTYPE_MODULATION_MAJOR, - DIS_FIELDTYPE_MODULATION_DETAIL, - DIS_FIELDTYPE_MODULATION_SYSTEM, - DIS_FIELDTYPE_CRYPTO_SYSTEM, - DIS_FIELDTYPE_EMITTER_NAME, - DIS_FIELDTYPE_EMISSION_FUNCTION, - DIS_FIELDTYPE_BEAM_FUNCTION, - - /* other atomic types */ - DIS_FIELDTYPE_PDU_LENGTH, - DIS_FIELDTYPE_EXERCISE_ID, - DIS_FIELDTYPE_SITE, - DIS_FIELDTYPE_APPLICATION, - DIS_FIELDTYPE_ENTITY, - DIS_FIELDTYPE_APPEARANCE, - DIS_FIELDTYPE_ARTIC_PARAM_TYPE, - DIS_FIELDTYPE_CAPABILITIES, - DIS_FIELDTYPE_COUNTRY, - DIS_FIELDTYPE_DATUM_ID, - DIS_FIELDTYPE_DATUM_LENGTH, - DIS_FIELDTYPE_DEAD_RECKONING_PARAMS, - DIS_FIELDTYPE_DEAD_RECKONING_ALGORITHM, - DIS_FIELDTYPE_DEAD_RECKONING_OTHER_PARAMS, - DIS_FIELDTYPE_ENTITY_MARKING, - DIS_FIELDTYPE_EXTRA, - DIS_FIELDTYPE_FIXED_DATUM_VALUE, - DIS_FIELDTYPE_FIXED_LEN_STR, - DIS_FIELDTYPE_FORCE_ID, - DIS_FIELDTYPE_FUSE, - DIS_FIELDTYPE_NUM_FIXED_DATA, - DIS_FIELDTYPE_NUM_VARIABLE_DATA, - DIS_FIELDTYPE_REQUEST_ID, - DIS_FIELDTYPE_SPECIFIC, - DIS_FIELDTYPE_SUBCATEGORY, - DIS_FIELDTYPE_TIME_INTERVAL, - DIS_FIELDTYPE_TIMESTAMP, - DIS_FIELDTYPE_WARHEAD, - DIS_FIELDTYPE_RADIO_ID, - DIS_FIELDTYPE_SAMPLE_RATE, - DIS_FIELDTYPE_DATA_LENGTH, - DIS_FIELDTYPE_NUMBER_OF_SAMPLES, - DIS_FIELDTYPE_NUM_ARTICULATION_PARAMS, - DIS_FIELDTYPE_ANTENNA_PATTERN_LENGTH, - DIS_FIELDTYPE_TRANSMIT_FREQUENCY, - DIS_FIELDTYPE_MODULATION_PARAMETER_LENGTH, - DIS_FIELDTYPE_FH_NETWORK_ID, - DIS_FIELDTYPE_FH_SET_ID, - DIS_FIELDTYPE_LO_SET_ID, - DIS_FIELDTYPE_FH_MSG_START, - DIS_FIELDTYPE_RESERVED, - DIS_FIELDTYPE_FH_SYNC_TIME_OFFSET, - DIS_FIELDTYPE_FH_SECURITY_KEY, - DIS_FIELDTYPE_FH_CLEAR_CHANNEL, - DIS_FIELDTYPE_TS_ALLOCATION_MODE, - DIS_FIELDTYPE_TRANSMITTER_PRIMARY_MODE, - DIS_FIELDTYPE_TRANSMITTER_SECONDARY_MODE, - DIS_FIELDTYPE_JTIDS_SYNC_STATE, - DIS_FIELDTYPE_NETWORK_SYNC_ID, - DIS_FIELDTYPE_LINK16_NPG, - DIS_FIELDTYPE_LINK16_TSEC_CVLL, - DIS_FIELDTYPE_LINK16_MSEC_CVLL, - DIS_FIELDTYPE_LINK16_MESSAGE_TYPE, - DIS_FIELDTYPE_NUM_ELECTROMAGNETIC_EMISSION_SYSTEMS, - DIS_FIELDTYPE_NUM_OF_SHAFTS, - DIS_FIELDTYPE_NUM_OF_APAS, - DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEMS, - DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEM_BEAMS, - - /* composite types */ - DIS_FIELDTYPE_BURST_DESCRIPTOR, - DIS_FIELDTYPE_CLOCK_TIME, - DIS_FIELDTYPE_ENTITY_ID, - DIS_FIELDTYPE_ENTITY_TYPE, - DIS_FIELDTYPE_RADIO_ENTITY_TYPE, - DIS_FIELDTYPE_EVENT_ID, - DIS_FIELDTYPE_LINEAR_VELOCITY, - DIS_FIELDTYPE_LOCATION_ENTITY, - DIS_FIELDTYPE_LOCATION_WORLD, - DIS_FIELDTYPE_ORIENTATION, - DIS_FIELDTYPE_SIMULATION_ADDRESS, - DIS_FIELDTYPE_VARIABLE_DATUM_VALUE, - DIS_FIELDTYPE_VECTOR_32, - DIS_FIELDTYPE_VECTOR_64, - DIS_FIELDTYPE_ENCODING_SCHEME, - DIS_FIELDTYPE_ANTENNA_LOCATION, - DIS_FIELDTYPE_REL_ANTENNA_LOCATON, - DIS_FIELDTYPE_MODULATION_TYPE, - DIS_FIELDTYPE_CRYPTO_KEY_ID, - DIS_FIELDTYPE_MODULATION_PARAMETERS, - DIS_FIELDTYPE_ANTENNA_PATTERN_PARAMETERS, - DIS_FIELDTYPE_MOD_PARAMS_CCTT_SINCGARS, - DIS_FIELDTYPE_MOD_PARAMS_JTIDS_MIDS, - DIS_FIELDTYPE_LINK16_MESSAGE_DATA, - DIS_FIELDTYPE_LINK16_PTT, - DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM, - DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM, - DIS_FIELDTYPE_EMITTER_SYSTEM, - DIS_FIELDTYPE_FUNDAMENTAL_PARAMETER_DATA, - DIS_FIELDTYPE_TRACK_JAM, - DIS_FIELDTYPE_SHAFTS, - DIS_FIELDTYPE_APA, - DIS_FIELDTYPE_UA_EMITTER_SYSTEMS, - DIS_FIELDTYPE_UA_BEAMS, - DIS_FIELDTYPE_UA_EMITTER_SYSTEM, - DIS_FIELDTYPE_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA, - - /* arrays */ - DIS_FIELDTYPE_FIXED_DATUMS, - DIS_FIELDTYPE_FIXED_DATUM_IDS, - DIS_FIELDTYPE_VARIABLE_DATUMS, - DIS_FIELDTYPE_VARIABLE_DATUM_IDS, - DIS_FIELDTYPE_VARIABLE_PARAMETERS, - DIS_FIELDTYPE_VARIABLE_RECORDS, - DIS_FIELDTYPE_RADIO_DATA - -} DIS_FieldType; - -/* Struct which contains the data needed to parse a single DIS field. - */ -typedef struct DIS_ParserNode_T -{ - DIS_FieldType fieldType; - const char *fieldLabel; - int fieldRepeatLen; - int ettVar; - struct DIS_ParserNode_T *children; - guint32 *outputVar; -} DIS_ParserNode; - -/* Struct which associates a name with a particular bit combination. - */ -typedef struct -{ - guint32 value; - const char *label; -} DIS_BitMaskMapping; - -/* Struct which specifies all possible bit mappings associated with - * a particular bit mask. - */ -typedef struct -{ - guint32 maskBits; - guint32 shiftBits; - const char *label; - DIS_BitMaskMapping bitMappings[33]; -} DIS_BitMask; - -/* Headers */ -extern DIS_ParserNode DIS_FIELDS_PDU_HEADER[]; -extern DIS_ParserNode DIS_FIELDS_PERSISTENT_OBJECT_HEADER[]; - -/* Composite types */ -extern DIS_ParserNode DIS_FIELDS_BURST_DESCRIPTOR[]; -extern DIS_ParserNode DIS_FIELDS_CLOCK_TIME[]; -extern DIS_ParserNode DIS_FIELDS_ENTITY_ID[]; -extern DIS_ParserNode DIS_FIELDS_ENTITY_TYPE[]; -extern DIS_ParserNode DIS_FIELDS_RADIO_ENTITY_TYPE[]; -extern DIS_ParserNode DIS_FIELDS_MODULATION_TYPE[]; -extern DIS_ParserNode DIS_FIELDS_EVENT_ID[]; -extern DIS_ParserNode DIS_FIELDS_ORIENTATION[]; -extern DIS_ParserNode DIS_FIELDS_SIMULATION_ADDRESS[]; -extern DIS_ParserNode DIS_FIELDS_VECTOR_FLOAT_32[]; -extern DIS_ParserNode DIS_FIELDS_VECTOR_FLOAT_64[]; -extern DIS_ParserNode DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS[]; -extern DIS_ParserNode DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS[]; -extern DIS_ParserNode DIS_FIELDS_SIGNAL_LINK16_NETWORK_HEADER[]; -extern DIS_ParserNode DIS_FIELDS_EMITTER_SYSTEM[]; -extern DIS_ParserNode DIS_FIELDS_FUNDAMENTAL_PARAMETER_DATA[]; -extern DIS_ParserNode DIS_FIELDS_TRACK_JAM[]; -extern DIS_ParserNode DIS_FIELDS_UA_EMITTER_SYSTEM[]; -extern DIS_ParserNode DIS_FIELDS_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA[]; - -/* Array records */ -extern DIS_ParserNode DIS_FIELDS_FIXED_DATUM[]; -extern DIS_ParserNode DIS_FIELDS_VARIABLE_DATUM[]; -extern DIS_ParserNode DIS_FIELDS_DATUM_IDS[]; -extern DIS_ParserNode DIS_FIELDS_VP_TYPE[]; -extern DIS_ParserNode DIS_FIELDS_VR_TYPE[]; -extern DIS_ParserNode DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM[]; -extern DIS_ParserNode DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM[]; -extern DIS_ParserNode DIS_FIELDS_VR_UA_SHAFT[]; -extern DIS_ParserNode DIS_FIELDS_VR_APA[]; -extern DIS_ParserNode DIS_FIELDS_VR_UA_EMITTER_SYSTEM[]; -extern DIS_ParserNode DIS_FIELDS_VR_UA_BEAM[]; - -/* Bit fields */ -extern DIS_ParserNode DIS_FIELDS_NONE[]; -extern DIS_BitMask DIS_APPEARANCE_LANDPLATFORM[]; -extern DIS_BitMask DIS_APPEARANCE_LIFEFORM[]; - -extern void initializeFieldParsers(void); - -extern gint parseField_Bytes(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes); - -extern gint parseField_Bitmask(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes); - -extern gint parseField_UInt(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes); - -extern gint parseField_Int(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes); - -extern gint parseField_Enum(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes); - -extern gint parseField_Pad(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes); - -extern gint parseField_Float(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode); - -extern gint parseField_Double(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode); - -extern gint parseField_Timestamp(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode); - -extern gint parseField_VariableParameter(tvbuff_t *tvb, proto_tree *tree, gint offset, packet_info *pinfo); - -extern gint parseField_VariableRecord(tvbuff_t *tvb, proto_tree *tree, gint offset, packet_info *pinfo); - -extern gint parseField_ElectromagneticEmissionSystemBeam(tvbuff_t *tvb, proto_tree *tree, gint offset, packet_info *pinfo); - -extern guint32 disProtocolVersion; -extern guint32 pduType; -extern guint32 protocolFamily; -extern guint32 persistentObjectPduType; -extern guint32 entityKind; -extern guint32 entityDomain; -extern guint32 radioID; -extern guint32 disRadioTransmitState; -extern guint32 encodingScheme; -extern guint32 tdlType; -extern guint32 numSamples; -extern guint32 messageType; -extern guint32 numFixed; -extern guint32 numVariable; -extern guint32 numBeams; -extern guint32 numTrackJamTargets; -extern guint32 numShafts; -extern guint32 numApas; -extern guint32 numUAEmitter; -extern guint32 numUABeams; -extern guint32 variableDatumLength; -extern guint32 variableRecordLength; -extern guint32 majorModulation; -extern guint32 systemModulation; -extern guint32 modulationParamLength; -extern guint32 disAntennaPattern; - - -#endif /* packet-dis-fieldparsers.h */ diff --git a/epan/dissectors/packet-dis-pdus.c b/epan/dissectors/packet-dis-pdus.c deleted file mode 100644 index 10b6d997d8..0000000000 --- a/epan/dissectors/packet-dis-pdus.c +++ /dev/null @@ -1,1702 +0,0 @@ -/* packet-dis-pdus.c - * Routines and definitions for DIS PDU parsing. - * Copyright 2005, Scientific Research Corporation - * Initial implementation by Jeremy Ouellette - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1998 Gerald Combs - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "config.h" - -#include "packet-dis-pdus.h" -#include "packet-dis-fields.h" -#include "packet-dis-enums.h" -#include "packet-link16.h" - -#define DIS_PDU_MAX_VARIABLE_PARAMETERS 16 -#define DIS_PDU_MAX_VARIABLE_RECORDS 16 -#define DIS_PDU_MAX_ELECTROMAGNETIC_EMISSION_SYSTEMS 16 -#define DIS_PDU_MAX_SHAFTS 16 -#define DIS_PDU_MAX_APAS 16 -#define DIS_PDU_MAX_UA_EMITTER_SYSTEMS 16 -#define DIS_PDU_MAX_UA_BEAMS 32 - -gint ettVariableParameters[DIS_PDU_MAX_VARIABLE_PARAMETERS]; -gint ettVariableRecords[DIS_PDU_MAX_VARIABLE_RECORDS]; - -gint ettFixedData = -1; -gint ettVariableData = -1; - -/* DIS Entity Information / Interaction PDUs - */ -DIS_ParserNode DIS_PARSER_ENTITY_STATE_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_FORCE_ID, "Force ID",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_ARTICULATION_PARAMS, "Number of Articulation Parameters",0,0,0,&numVariable }, - { DIS_FIELDTYPE_ENTITY_TYPE, "Entity Type",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_TYPE, "Alternative Entity Type",0,0,0,0 }, - { DIS_FIELDTYPE_LINEAR_VELOCITY, "Entity Linear Velocity",0,0,0,0 }, - { DIS_FIELDTYPE_LOCATION_WORLD, "Entity Location",0,0,0,0 }, - { DIS_FIELDTYPE_ORIENTATION, "Entity Orientation",0,0,0,0 }, - { DIS_FIELDTYPE_APPEARANCE, "Entity Appearance",0,0,0,0 }, - { DIS_FIELDTYPE_DEAD_RECKONING_PARAMS, "Dead Reckoning Parameters",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_MARKING, "Entity Marking",0,0,0,0 }, - { DIS_FIELDTYPE_CAPABILITIES, "Capabilities",0,0,0,0 }, - { DIS_FIELDTYPE_VARIABLE_PARAMETERS, "Variable Parameter",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* DIS Distributed Emission Regeneration PDUs - */ -DIS_ParserNode DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Emitting Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_EVENT_ID, "Event ID",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "State Update Indicator",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_ELECTROMAGNETIC_EMISSION_SYSTEMS, "Number of Systems (N)",0,0,0,&numVariable }, - { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM, "Emission System",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - - -/* DIS Underwater Acoustic PDUs - */ -DIS_ParserNode DIS_PARSER_UNDERWATER_ACOUSTIC_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Emitting Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_EVENT_ID, "Event ID",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "State Update Indicator",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Passive Parameter Index", 0,0,0,0 }, /* !! enum !! */ - { DIS_FIELDTYPE_UINT8, "Propulsion Plant Configuration",0,0,0,0 }, /* !! enum !! */ - { DIS_FIELDTYPE_NUM_OF_SHAFTS, "Number of Shafts",0,0,0,&numShafts }, - { DIS_FIELDTYPE_NUM_OF_APAS, "Number of Additional Passive Activities (APA)",0,0,0,&numApas }, - { DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEMS, "Number of UA Emitter Systems",0,0,0,&numUAEmitter }, - { DIS_FIELDTYPE_SHAFTS, "Shafts",0,0,0,0 }, - { DIS_FIELDTYPE_APA, "APAs",0,0,0,0 }, - { DIS_FIELDTYPE_UA_EMITTER_SYSTEMS, "Underwater Acoustic Emission System",0,0,0,0 }, - { DIS_FIELDTYPE_UA_BEAMS, "Beams",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - - -/* DIS Radio Communications protocol (RCP) family PDUs - */ -DIS_ParserNode DIS_PARSER_TRANSMITTER_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_RADIO_ID, "Radio ID",0,0,0,&radioID }, - { DIS_FIELDTYPE_RADIO_ENTITY_TYPE, "Radio Entity Type",0,0,0,0 }, - { DIS_FIELDTYPE_RADIO_TRANSMIT_STATE, "Radio Transmit State",0,0,0,&disRadioTransmitState }, - { DIS_FIELDTYPE_RADIO_INPUT_SOURCE, "Radio Input Source",0,0,0,0 }, - { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_ANTENNA_LOCATION, "Antenna Location",0,0,0,0 }, - { DIS_FIELDTYPE_REL_ANTENNA_LOCATON, "Relative Antenna Location",0,0,0,0 }, - { DIS_FIELDTYPE_ANTENNA_PATTERN_TYPE, "Antenna Pattern Type",0,0,0,&disAntennaPattern }, - { DIS_FIELDTYPE_ANTENNA_PATTERN_LENGTH, "Antenna Pattern Length",0,0,0,0 }, - { DIS_FIELDTYPE_TRANSMIT_FREQUENCY, "Transmit Frequency",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Transmit Frequency Bandwidth",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Transmit Power",0,0,0,0 }, - { DIS_FIELDTYPE_MODULATION_TYPE, "Modulation Type",0,0,0,0 }, - { DIS_FIELDTYPE_CRYPTO_SYSTEM, "Crypto System",0,0,0,0 }, - { DIS_FIELDTYPE_CRYPTO_KEY_ID, "Crypto Key ID",0,0,0,0 }, - { DIS_FIELDTYPE_MODULATION_PARAMETER_LENGTH, "Modulation Parameter Length",0,0,0,&modulationParamLength }, - { DIS_FIELDTYPE_PAD24, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_MODULATION_PARAMETERS, "Modulation Parameters",0,0,0,0 }, - /* need to finish decoding this PDU */ - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_SIGNAL_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_RADIO_ID, "Radio ID",0,0,0,&radioID }, - { DIS_FIELDTYPE_ENCODING_SCHEME, "Encoding Scheme",0,0,0,&encodingScheme }, - { DIS_FIELDTYPE_TDL_TYPE, "TDL Type",0,0,0,&tdlType }, - { DIS_FIELDTYPE_SAMPLE_RATE, "Sample Rate",0,0,0,0 }, - { DIS_FIELDTYPE_DATA_LENGTH, "Data Length",0,0,0,0 }, - { DIS_FIELDTYPE_NUMBER_OF_SAMPLES, "Number of Samples",0,0,0,&numSamples }, - { DIS_FIELDTYPE_RADIO_DATA, "Radio Data",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* DIS Warfare PDUs - */ -DIS_ParserNode DIS_PARSER_FIRE_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Firing Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Target Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Munition ID",0,0,0,0 }, - { DIS_FIELDTYPE_EVENT_ID, "Event ID",0,0,0,0 }, - { DIS_FIELDTYPE_UINT32, "Fire Mission Index",0,0,0,0 }, - { DIS_FIELDTYPE_LOCATION_WORLD, "Location in World Coordinates",0,0,0,0 }, - { DIS_FIELDTYPE_BURST_DESCRIPTOR, "Burst Descriptor",0,0,0,0 }, - { DIS_FIELDTYPE_LINEAR_VELOCITY, "Velocity",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Range",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_DETONATION_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Firing Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Target Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Munition ID",0,0,0,0 }, - { DIS_FIELDTYPE_EVENT_ID, "Event ID",0,0,0,0 }, - { DIS_FIELDTYPE_LINEAR_VELOCITY, "Velocity",0,0,0,0 }, - { DIS_FIELDTYPE_LOCATION_WORLD, "Location in World Coordinates",0,0,0,0 }, - { DIS_FIELDTYPE_BURST_DESCRIPTOR, "Burst Descriptor",0,0,0,0 }, - { DIS_FIELDTYPE_LOCATION_ENTITY, "Location in Entity Coordinates",0,0,0,0 }, - { DIS_FIELDTYPE_DETONATION_RESULT, "Detonation Result",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_ARTICULATION_PARAMS, "Number of Articulation Parameters",0,0,0,&numVariable }, - { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_VARIABLE_PARAMETERS, "Variable Parameter",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* DIS Simulation Management PDUs - */ -DIS_ParserNode DIS_PARSER_START_RESUME_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_CLOCK_TIME, "Real World Time",0,0,0,0 }, - { DIS_FIELDTYPE_CLOCK_TIME, "Simulation Time",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_STOP_FREEZE_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_CLOCK_TIME, "Real World Time",0,0,0,0 }, - { DIS_FIELDTYPE_REASON, "Reason",0,0,0,0 }, - { DIS_FIELDTYPE_FROZEN_BEHAVIOR, "Frozen Behavior",0,0,0,0 }, - { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_ACKNOWLEDGE_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ACKNOWLEDGE_FLAG, "Acknowledge Flag",0,0,0,0 }, - { DIS_FIELDTYPE_RESPONSE_FLAG, "Response Flag",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_ACTION_REQUEST_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_ACTION_ID, "Action ID",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, - { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, - { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, - { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_ACTION_RESPONSE_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_STATUS, "Request Status",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, - { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, - { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, - { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_DATA_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_PAD32, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, - { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, - { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, - { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_DATA_QUERY_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_TIME_INTERVAL, "Time interval",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Datum Ids",0,0,0,&numFixed }, - { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Datum Ids",0,0,0,&numVariable }, - { DIS_FIELDTYPE_FIXED_DATUM_IDS, "Fixed datum ids",0,0,0,0 }, - { DIS_FIELDTYPE_VARIABLE_DATUM_IDS, "Variable datum ids",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_COMMENT_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, - { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, - { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, - { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_SIMAN_ENTITY_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* DIS Simulation Management with Reliability PDUs - */ -DIS_ParserNode DIS_PARSER_START_RESUME_R_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_CLOCK_TIME, "Real World Time",0,0,0,0 }, - { DIS_FIELDTYPE_CLOCK_TIME, "Simulation Time",0,0,0,0 }, - { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",3,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_STOP_FREEZE_R_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_CLOCK_TIME, "Real World Time",0,0,0,0 }, - { DIS_FIELDTYPE_REASON, "Reason",0,0,0,0 }, - { DIS_FIELDTYPE_FROZEN_BEHAVIOR, "Frozen Behavior",0,0,0,0 }, - { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_ACTION_REQUEST_R_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",3,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_ACTION_ID, "Action ID",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, - { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, - { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, - { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_DATA_R_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",3,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, - { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, - { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, - { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_DATA_QUERY_R_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",3,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_TIME_INTERVAL, "Time interval",0,0,0,0 }, - { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Datum Ids",0,0,0,&numFixed }, - { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Datum Ids",0,0,0,&numVariable }, - { DIS_FIELDTYPE_FIXED_DATUM_IDS, "Fixed datum ids",0,0,0,0 }, - { DIS_FIELDTYPE_VARIABLE_DATUM_IDS, "Variable datum ids",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_SIMAN_ENTITY_R_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",3,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* DIS Experimental V-DIS PDUs - */ -DIS_ParserNode DIS_PARSER_APPLICATION_CONTROL_PDU[] = -{ - { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, - { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Time Interval",0,0,0,0 }, - { DIS_FIELDTYPE_CONTROL_ID, "Control ID",0,0,0,0 }, - { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, - { DIS_FIELDTYPE_APPLICATION_TYPE, "Originating App Type",0,0,0,0 }, - { DIS_FIELDTYPE_APPLICATION_TYPE, "Receiving App Type",0,0,0,0 }, - { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Number of Parts",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Current Part",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Number of Variable Records",0,0,0,&numVariable }, - { DIS_FIELDTYPE_VARIABLE_RECORDS, "Record",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* Persistent Object (PO) Family PDU parsers - */ -DIS_ParserNode DIS_PARSER_SIMULATOR_PRESENT_PO_PDU[] = -{ - { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Simulator",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Simulator Type",0,0,0,0 }, - { DIS_FIELDTYPE_UINT32, "Database Sequence Number",0,0,0,0 }, - { DIS_FIELDTYPE_UINT32, "Simulator Load",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Simulation Load",0,0,0,0 }, - { DIS_FIELDTYPE_UINT32, "Time",0,0,0,0 }, - { DIS_FIELDTYPE_UINT32, "Packets Sent",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Unit Database Version",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Relative Battle Scheme",0,0,0,0 }, - { DIS_FIELDTYPE_FIXED_LEN_STR, "Terrain Name",32,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Terrain Version",0,0,0,0 }, - { DIS_FIELDTYPE_FIXED_LEN_STR, "Host Name",32,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_DESCRIBE_OBJECT_PO_PDU[] = -{ - { DIS_FIELDTYPE_UINT32, "Database Sequence Number",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "Object ID",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "World State ID",0,0,0,0 }, - { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Owner",0,0,0,0 }, - { DIS_FIELDTYPE_UINT16, "Sequence Number",0,0,0,0 }, - { DIS_FIELDTYPE_PERSISTENT_OBJECT_CLASS, "Object Class",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Missing From World State",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_OBJECTS_PRESENT_PO_PDU[] = -{ - { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Owner",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "World State ID",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Object Count",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_OBJECT_REQUEST_PO_PDU[] = -{ - { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Requesting Simulator",0,0,0,0 }, - { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Object Owner",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "World State ID",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Object Count",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_DELETE_OBJECTS_PO_PDU[] = -{ - { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Requesting Simulator",0,0,0,0 }, - { DIS_FIELDTYPE_UINT8, "Object Count",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_SET_WORLD_STATE_PO_PDU[] = -{ - { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Requesting Simulator",0,0,0,0 }, - { DIS_FIELDTYPE_FLOAT32, "Clock Rate",0,0,0,0 }, - { DIS_FIELDTYPE_UINT32, "Seconds Since 1970",0,0,0,0 }, - { DIS_FIELDTYPE_ENTITY_ID, "World State ID",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -DIS_ParserNode DIS_PARSER_NOMINATION_PO_PDU[] = -{ - { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Nominated Simulator",0,0,0,0 }, - { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Nominating Simulator",0,0,0,0 }, - { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Missing Simulator",0,0,0,0 }, - { DIS_FIELDTYPE_END, NULL,0,0,0,0 } -}; - -/* Initialize the parsers for each PDU type and the standard DIS header. - */ -void initializeParsers(void) -{ - gint *ett[DIS_PDU_MAX_VARIABLE_PARAMETERS+DIS_PDU_MAX_VARIABLE_RECORDS+2]; - int i, ett_index; - - initializeParser(DIS_FIELDS_PDU_HEADER); - - /* DIS Entity Information / Interaction PDUs */ - initializeParser(DIS_PARSER_ENTITY_STATE_PDU); - - /* DIS Distributed Emission Regeneration PDUs */ - initializeParser(DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU); - initializeParser(DIS_PARSER_UNDERWATER_ACOUSTIC_PDU); - - /* DIS Radio Communications protocol (RCP) family PDUs */ - initializeParser(DIS_PARSER_TRANSMITTER_PDU); - initializeParser(DIS_PARSER_SIGNAL_PDU); - - /* DIS Warfare PDUs */ - initializeParser(DIS_PARSER_FIRE_PDU); - initializeParser(DIS_PARSER_DETONATION_PDU); - - /* DIS Simulation Management PDUs */ - initializeParser(DIS_PARSER_START_RESUME_PDU); - initializeParser(DIS_PARSER_STOP_FREEZE_PDU); - initializeParser(DIS_PARSER_ACKNOWLEDGE_PDU); - initializeParser(DIS_PARSER_ACTION_REQUEST_PDU); - initializeParser(DIS_PARSER_ACTION_RESPONSE_PDU); - initializeParser(DIS_PARSER_DATA_PDU); - initializeParser(DIS_PARSER_DATA_QUERY_PDU); - initializeParser(DIS_PARSER_COMMENT_PDU); - initializeParser(DIS_PARSER_SIMAN_ENTITY_PDU); - - /* DIS Simulation Management with Reliability PDUs */ - initializeParser(DIS_PARSER_START_RESUME_R_PDU); - initializeParser(DIS_PARSER_STOP_FREEZE_R_PDU); - initializeParser(DIS_PARSER_ACTION_REQUEST_R_PDU); - initializeParser(DIS_PARSER_DATA_R_PDU); - initializeParser(DIS_PARSER_DATA_QUERY_R_PDU); - initializeParser(DIS_PARSER_SIMAN_ENTITY_R_PDU); - - /* DIS Experimental V-DIS PDUs */ - initializeParser(DIS_PARSER_APPLICATION_CONTROL_PDU); - - /* Initialize the Persistent Object PDUs */ - initializeParser(DIS_FIELDS_PERSISTENT_OBJECT_HEADER); - initializeParser(DIS_PARSER_DESCRIBE_OBJECT_PO_PDU); - initializeParser(DIS_PARSER_SIMULATOR_PRESENT_PO_PDU); - initializeParser(DIS_PARSER_OBJECTS_PRESENT_PO_PDU); - initializeParser(DIS_PARSER_OBJECT_REQUEST_PO_PDU); - initializeParser(DIS_PARSER_DELETE_OBJECTS_PO_PDU); - initializeParser(DIS_PARSER_SET_WORLD_STATE_PO_PDU); - initializeParser(DIS_PARSER_NOMINATION_PO_PDU); - - /* Initialize the ett array */ - ett_index = 0; - for (i=0; i> 4) & 0x7FFF; - col_append_fstr(pinfo->cinfo, COL_INFO, ", STN=0%o, Link 16 Words:", value); - - value = (cache >> 19); - offset += 4; - cache = tvb_get_ntohl(tvb, offset); - value |= (cache & 0x7) << 13; - proto_tree_add_uint(tree, hf_dis_signal_link16_sdusn, tvb, offset - 4, 8, value); - offset += 4; - - memset(&state, 0, sizeof(state)); - - for (i = 0; i < (encodingScheme & 0x3FFF); i++) { - gint8 *word = (gint8 *)g_malloc(10); - if (!(i & 1)) { - word[0] = (cache >> 16) & 0xFF; - word[1] = (cache >> 24) & 0xFF; - cache = tvb_get_ntohl(tvb, offset); - offset += 4; - word[2] = cache & 0xFF; - word[3] = (cache >> 8) & 0xFF; - word[4] = (cache >> 16) & 0xFF; - word[5] = (cache >> 24) & 0xFF; - cache = tvb_get_ntohl(tvb, offset); - offset += 4; - word[6] = cache & 0xFF; - word[7] = (cache >> 8) & 0xFF; - word[8] = (cache >> 16) & 0xFF; - word[9] = (cache >> 24) & 0xFF; - } else { - cache = tvb_get_ntohl(tvb, offset); - offset += 4; - word[0] = cache & 0xFF; - word[1] = (cache >> 8) & 0xFF; - word[2] = (cache >> 16) & 0xFF; - word[3] = (cache >> 24) & 0xFF; - cache = tvb_get_ntohl(tvb, offset); - offset += 4; - word[4] = cache & 0xFF; - word[5] = (cache >> 8) & 0xFF; - word[6] = (cache >> 16) & 0xFF; - word[7] = (cache >> 24) & 0xFF; - cache = tvb_get_ntohl(tvb, offset); - offset += 4; - word[8] = cache & 0xFF; - word[9] = (cache >> 8) & 0xFF; - } - - newtvb = tvb_new_child_real_data(tvb, word, 10, 10); - tvb_set_free_cb(newtvb, g_free); - add_new_data_source(pinfo, newtvb, "Link 16 Word"); - call_dissector_with_data(find_dissector("link16"), newtvb, pinfo, tree, &state); - } - break; - } - return offset; -} - -/* Parse packet data based on a specified array of DIS_ParserNodes. - */ -gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNodes[], packet_info *pinfo) -{ - guint fieldIndex = 0; - guint fieldRepeatLen = 0; - guint64 uintVal = 0; - proto_item *pi = NULL; - proto_tree *sub_tree = NULL; - tvbuff_t *newtvb = NULL; - gint length = 0; - guint16 spread_spectrum = 0; - - - /* Get the length while ensuring there's at least one byte for us to - * decode (if not, throw an exception so as to prevent very long loops). - */ - length = tvb_ensure_length_remaining(tvb, offset+1); - - while ((parserNodes[fieldIndex].fieldType != DIS_FIELDTYPE_END) - && (length > 0 ) ) - { - proto_item *newField = 0; - - fieldRepeatLen = (guint) ((parserNodes[fieldIndex].fieldRepeatLen > 1) ? - parserNodes[fieldIndex].fieldRepeatLen : 1); - - switch(parserNodes[fieldIndex].fieldType) - { - /* basic numeric types */ - case DIS_FIELDTYPE_INT8: - offset = parseField_Int(tvb, tree, offset, - parserNodes[fieldIndex], 1); - break; - case DIS_FIELDTYPE_INT16: - offset = parseField_Int(tvb, tree, offset, - parserNodes[fieldIndex], 2); - break; - case DIS_FIELDTYPE_INT32: - offset = parseField_Int(tvb, tree, offset, - parserNodes[fieldIndex], 4); - break; - case DIS_FIELDTYPE_INT64: - offset = parseField_Int(tvb, tree, offset, - parserNodes[fieldIndex], 8); - break; - case DIS_FIELDTYPE_UINT8: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 1); - break; - case DIS_FIELDTYPE_UINT16: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 2); - break; - case DIS_FIELDTYPE_UINT32: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 4); - break; - case DIS_FIELDTYPE_UINT64: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 8); - break; - case DIS_FIELDTYPE_FLOAT32: - offset = parseField_Float(tvb, tree, offset, - parserNodes[fieldIndex]); - break; - case DIS_FIELDTYPE_FLOAT64: - offset = parseField_Double(tvb, tree, offset, - parserNodes[fieldIndex]); - break; - case DIS_FIELDTYPE_EXERCISE_ID: - proto_tree_add_item(tree, hf_dis_exercise_id, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_NUM_ARTICULATION_PARAMS: - uintVal = tvb_get_guint8(tvb, offset); - proto_tree_add_item(tree, hf_dis_num_art_params, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - break; - case DIS_FIELDTYPE_PDU_LENGTH: - proto_tree_add_item(tree, hf_dis_pdu_length, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_SITE: - proto_tree_add_item(tree, hf_dis_entity_id_site, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_APPLICATION: - proto_tree_add_item(tree, hf_dis_entity_id_application, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_ENTITY: - proto_tree_add_item(tree, hf_dis_entity_id_entity, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_RADIO_ID: - uintVal = tvb_get_ntohs(tvb, offset); - proto_tree_add_item(tree, hf_dis_radio_id, tvb, offset, 2, ENC_BIG_ENDIAN); - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - offset += 2; - break; - case DIS_FIELDTYPE_ENCODING_SCHEME: - uintVal = tvb_get_ntohs(tvb, offset); - pi = proto_tree_add_item(tree, hf_dis_ens, tvb, offset, 2, ENC_BIG_ENDIAN); - sub_tree = proto_item_add_subtree(pi, ett_dis_ens); - proto_tree_add_item(sub_tree, hf_dis_ens_class, tvb, offset, 2, ENC_BIG_ENDIAN); - proto_tree_add_item(sub_tree, - (uintVal >> 14) == DIS_ENCODING_CLASS_ENCODED_AUDIO ? hf_dis_ens_type_audio : hf_dis_ens_type, - tvb, offset, 2, ENC_BIG_ENDIAN); - proto_item_set_end(pi, tvb, offset); - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - offset += 2; - break; - case DIS_FIELDTYPE_TDL_TYPE: - uintVal = tvb_get_ntohs(tvb, offset); - proto_tree_add_item(tree, hf_dis_tdl_type, tvb, offset, 2, ENC_BIG_ENDIAN); - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - offset += 2; - break; - case DIS_FIELDTYPE_SAMPLE_RATE: - proto_tree_add_item(tree, hf_dis_sample_rate, tvb, offset, 4, ENC_BIG_ENDIAN); - offset += 4; - break; - case DIS_FIELDTYPE_DATA_LENGTH: - proto_tree_add_item(tree, hf_dis_data_length, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_NUMBER_OF_SAMPLES: - uintVal = tvb_get_ntohs(tvb, offset); - proto_tree_add_item(tree, hf_dis_num_of_samples, tvb, offset, 2, ENC_BIG_ENDIAN); - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - offset += 2; - break; - case DIS_FIELDTYPE_RADIO_DATA: - if (tdlType == DIS_TDL_TYPE_LINK16_STD) { - pi = proto_tree_add_text(tree, tvb, offset, 16, "Link 16 Network Header"); - sub_tree = proto_item_add_subtree(pi, ett_dis_signal_link16_network_header); - offset = parseFields(tvb, sub_tree, offset, DIS_FIELDS_SIGNAL_LINK16_NETWORK_HEADER, pinfo); - proto_item_set_end(pi, tvb, offset); - - pi = proto_tree_add_text(tree, tvb, offset, -1, "Link 16 Message Data: %s", - val_to_str(messageType, DIS_PDU_Link16_MessageType_Strings, "")); - sub_tree = proto_item_add_subtree(pi, ett_dis_signal_link16_message_data); - offset = parse_Link16_Message_Data(sub_tree, tvb, offset, pinfo); - proto_item_set_end(pi, tvb, offset); - } else { - proto_tree_add_item(tree, hf_dis_signal_data, tvb, offset, -1, ENC_NA ); - } - /* ****ck******* need to look for padding bytes */ - break; - case DIS_FIELDTYPE_LINK16_PTT: - if (tvb_get_ntohl(tvb, offset) == 0xFFFFFFFF) - proto_tree_add_text(tree, tvb, offset, 8, "%s: NO STATEMENT", parserNodes[fieldIndex].fieldLabel); - else - proto_tree_add_item(tree, hf_dis_signal_link16_ptt, tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN); - offset += 8; - break; - case DIS_FIELDTYPE_RADIO_CATEGORY: - proto_tree_add_item(tree, hf_dis_radio_category, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_NOMENCLATURE_VERSION: - proto_tree_add_item(tree, hf_dis_nomenclature_version, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_NOMENCLATURE: - proto_tree_add_item(tree, hf_dis_nomenclature, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_RADIO_TRANSMIT_STATE: - uintVal = tvb_get_guint8(tvb, offset); - proto_tree_add_item(tree, hf_dis_radio_transmit_state, tvb, offset, 1, ENC_BIG_ENDIAN); - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - offset += 1; - break; - case DIS_FIELDTYPE_RADIO_INPUT_SOURCE: - proto_tree_add_item(tree, hf_dis_radio_input_source, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_ANTENNA_PATTERN_TYPE: - uintVal = tvb_get_ntohs(tvb, offset); - proto_tree_add_item(tree, hf_dis_antenna_pattern_type, tvb, offset, 2, ENC_BIG_ENDIAN); - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - offset += 2; - break; - case DIS_FIELDTYPE_ANTENNA_PATTERN_LENGTH: - proto_tree_add_item(tree, hf_dis_antenna_pattern_length, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_TRANSMIT_FREQUENCY: - proto_tree_add_item(tree, hf_dis_transmit_frequency, tvb, offset, 8, ENC_BIG_ENDIAN); - offset += 8; - break; - case DIS_FIELDTYPE_SPREAD_SPECTRUM: - spread_spectrum = tvb_get_ntohs(tvb, offset); - proto_tree_add_boolean(tree, hf_dis_spread_spectrum_usage, tvb, offset, 2, spread_spectrum); - proto_tree_add_boolean(tree, hf_dis_frequency_hopping, tvb, offset, 2, spread_spectrum); - proto_tree_add_boolean(tree, hf_dis_pseudo_noise_modulation, tvb, offset, 2, spread_spectrum); - proto_tree_add_boolean(tree, hf_dis_time_hopping, tvb, offset, 2, spread_spectrum); - offset += 2; - break; - case DIS_FIELDTYPE_MODULATION_MAJOR: - uintVal = tvb_get_ntohs(tvb, offset); - proto_tree_add_item(tree, hf_dis_modulation_major, tvb, offset, 2, ENC_BIG_ENDIAN); - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - offset += 2; - break; - case DIS_FIELDTYPE_MODULATION_SYSTEM: - uintVal = tvb_get_ntohs(tvb, offset); - proto_tree_add_item(tree, hf_dis_modulation_system, tvb, offset, 2, ENC_BIG_ENDIAN); - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - offset += 2; - break; - case DIS_FIELDTYPE_CRYPTO_SYSTEM: - proto_tree_add_item(tree, hf_dis_crypto_system, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_CRYPTO_KEY_ID: - pi = proto_tree_add_item(tree, hf_dis_crypto_key, tvb, offset, 2, ENC_BIG_ENDIAN); - sub_tree = proto_item_add_subtree(pi, ett_dis_crypto_key); - proto_tree_add_item(sub_tree, hf_dis_encryption_mode, tvb, offset, 2, ENC_BIG_ENDIAN); - proto_tree_add_item(sub_tree, hf_dis_key_identifier, tvb, offset, 2, ENC_BIG_ENDIAN); - proto_item_set_end(pi, tvb, offset); - offset += 2; - break; - case DIS_FIELDTYPE_MODULATION_PARAMETER_LENGTH: - uintVal = tvb_get_guint8(tvb, offset); - proto_tree_add_item(tree, hf_dis_modulation_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - offset += 1; - break; - case DIS_FIELDTYPE_FH_NETWORK_ID: - proto_tree_add_item(tree, hf_dis_mod_param_fh_net_id, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_FH_SET_ID: - proto_tree_add_item(tree, hf_dis_mod_param_fh_set_id, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_LO_SET_ID: - proto_tree_add_item(tree, hf_dis_mod_param_fh_lo_set_id, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_FH_MSG_START: - proto_tree_add_item(tree, hf_dis_mod_param_fh_msg_start, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_RESERVED: - proto_tree_add_item(tree, hf_dis_mod_param_fh_reserved, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_FH_SYNC_TIME_OFFSET: - proto_tree_add_item(tree, hf_dis_mod_param_fh_sync_time_offset, tvb, offset, 4, ENC_BIG_ENDIAN); - offset += 4; - break; - case DIS_FIELDTYPE_FH_SECURITY_KEY: - proto_tree_add_item(tree, hf_dis_mod_param_fh_security_key, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_FH_CLEAR_CHANNEL: - proto_tree_add_item(tree, hf_dis_mod_param_fh_clear_channel, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_TS_ALLOCATION_MODE: - proto_tree_add_item(tree, hf_dis_mod_param_ts_allocation_mode, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_TRANSMITTER_PRIMARY_MODE: - proto_tree_add_item(tree, hf_dis_mod_param_transmitter_prim_mode, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_TRANSMITTER_SECONDARY_MODE: - proto_tree_add_item(tree, hf_dis_mod_param_transmitter_second_mode, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_JTIDS_SYNC_STATE: - proto_tree_add_item(tree, hf_dis_mod_param_sync_state, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - break; - case DIS_FIELDTYPE_NETWORK_SYNC_ID: - proto_tree_add_item(tree, hf_dis_mod_param_network_sync_id, tvb, offset, 4, ENC_BIG_ENDIAN); - offset += 4; - break; - case DIS_FIELDTYPE_MODULATION_PARAMETERS: - /* need to check to see if mod parms length > 0 */ - /* could get here when there are antenna pattern parameter but no mod params */ - if (modulationParamLength > 0 ) { /* we do have a mod param */ - if (systemModulation == DIS_SYSTEM_MOD_CCTT_SINCGARS) - { - pi = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - sub_tree = proto_item_add_subtree(pi, parserNodes[fieldIndex].ettVar); - offset = parseFields(tvb, sub_tree, offset, DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS, pinfo); - proto_item_set_end(pi, tvb, offset); - break; - } - else if (systemModulation == DIS_SYSTEM_MOD_JTIDS_MIDS) { - pi = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - sub_tree = proto_item_add_subtree(pi, parserNodes[fieldIndex].ettVar); - offset = parseFields(tvb, sub_tree, offset, DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS, pinfo); - proto_item_set_end(pi, tvb, offset); - break; - } - else { /* just dump what is available */ - newtvb = tvb_new_subset(tvb, offset,modulationParamLength, modulationParamLength); - proto_tree_add_item(tree, hf_dis_mod_param_dump, newtvb, 0, -1, ENC_NA ); - offset += modulationParamLength; - break; - } - } /* else, leave offset alone, and then check antenna pattern param field */ - break; - case DIS_FIELDTYPE_ANTENNA_PATTERN_PARAMETERS: - /* just dump the bytes for now. Need to do finish */ - newtvb = tvb_new_subset_remaining(tvb, offset); - proto_tree_add_item(tree, hf_dis_antenna_pattern_parameter_dump, newtvb, 0, -1, ENC_NA ); - break; - case DIS_FIELDTYPE_LINK16_NPG: - proto_tree_add_item(tree, hf_dis_signal_link16_npg, tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; - break; - case DIS_FIELDTYPE_LINK16_TSEC_CVLL: - proto_tree_add_item(tree, hf_dis_signal_link16_tsec_cvll, tvb, offset, 1, ENC_NA); - offset++; - break; - case DIS_FIELDTYPE_LINK16_MSEC_CVLL: - proto_tree_add_item(tree, hf_dis_signal_link16_msec_cvll, tvb, offset, 1, ENC_NA); - offset++; - break; - - /* padding */ - case DIS_FIELDTYPE_PAD8: - offset = parseField_Pad(tvb, tree, offset, - parserNodes[fieldIndex], 1 * fieldRepeatLen); - break; - case DIS_FIELDTYPE_PAD16: - offset = parseField_Pad(tvb, tree, offset, - parserNodes[fieldIndex], 2 * fieldRepeatLen); - break; - case DIS_FIELDTYPE_PAD24: - offset = parseField_Pad(tvb, tree, offset, - parserNodes[fieldIndex], 3 * fieldRepeatLen); - break; - case DIS_FIELDTYPE_PAD32: - offset = parseField_Pad(tvb, tree, offset, - parserNodes[fieldIndex], 4 * fieldRepeatLen); - break; - - /* enumerations (1-byte) */ - case DIS_FIELDTYPE_APPLICATION_GENERAL_STATUS: - case DIS_FIELDTYPE_CATEGORY: - case DIS_FIELDTYPE_CONTROL_ID: - case DIS_FIELDTYPE_DETONATION_RESULT: - case DIS_FIELDTYPE_DOMAIN: - case DIS_FIELDTYPE_ENTITY_KIND: - case DIS_FIELDTYPE_FROZEN_BEHAVIOR: - case DIS_FIELDTYPE_PARAMETER_TYPE_DESIGNATOR: - case DIS_FIELDTYPE_PDU_TYPE: - case DIS_FIELDTYPE_PROTOCOL_FAMILY: - case DIS_FIELDTYPE_PROTOCOL_VERSION: - case DIS_FIELDTYPE_REASON: - case DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE: - case DIS_FIELDTYPE_PERSISTENT_OBJECT_CLASS: - case DIS_FIELDTYPE_PERSISTENT_OBJECT_TYPE: - case DIS_FIELDTYPE_EMISSION_FUNCTION: - case DIS_FIELDTYPE_BEAM_FUNCTION: - case DIS_FIELDTYPE_LINK16_MESSAGE_TYPE: - offset = parseField_Enum(tvb, tree, offset, - parserNodes[fieldIndex], 1); - break; - - /* enumerations (2-bytes) */ - case DIS_FIELDTYPE_ACKNOWLEDGE_FLAG: - case DIS_FIELDTYPE_APPLICATION_STATUS_TYPE: - case DIS_FIELDTYPE_APPLICATION_TYPE: - case DIS_FIELDTYPE_RESPONSE_FLAG: - case DIS_FIELDTYPE_MODULATION_DETAIL: - case DIS_FIELDTYPE_EMITTER_NAME: - offset = parseField_Enum(tvb, tree, offset, - parserNodes[fieldIndex], 2); - break; - - /* enumerations (4-bytes) */ - case DIS_FIELDTYPE_ACTION_ID: - case DIS_FIELDTYPE_REQUEST_STATUS: - offset = parseField_Enum(tvb, tree, offset, - parserNodes[fieldIndex], 4); - break; - - /* other atomic types */ - case DIS_FIELDTYPE_APPEARANCE: - { - proto_item *newSubtree; - newField = proto_tree_add_text(tree, tvb, offset, 4, "%s", - parserNodes[fieldIndex].fieldLabel); - newSubtree = proto_item_add_subtree(newField, - parserNodes[fieldIndex].ettVar); - offset = parseField_Bitmask(tvb, newSubtree, offset, - parserNodes[fieldIndex], 4); - } - break; - case DIS_FIELDTYPE_ARTIC_PARAM_TYPE: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 4); - break; - case DIS_FIELDTYPE_CAPABILITIES: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 4); - break; - case DIS_FIELDTYPE_COUNTRY: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 2); - break; - case DIS_FIELDTYPE_DATUM_ID: - case DIS_FIELDTYPE_DATUM_LENGTH: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 4); - break; - case DIS_FIELDTYPE_DEAD_RECKONING_PARAMS: - /* This is really a struct... needs a field parser. - * For now, just skip the 12 bytes. - */ - offset = parseField_Bytes(tvb, tree, offset, - parserNodes[fieldIndex], 40); - break; - case DIS_FIELDTYPE_ENTITY_MARKING: - /* This is really a struct... needs a field parser. - * For now, just skip the 12 bytes. - */ - offset = parseField_Bytes(tvb, tree, offset, - parserNodes[fieldIndex], 12); - break; - case DIS_FIELDTYPE_EXTRA: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 1); - break; - case DIS_FIELDTYPE_FIXED_DATUM_VALUE: - offset = parseField_Bytes(tvb, tree, offset, - parserNodes[fieldIndex], 4); - break; - case DIS_FIELDTYPE_FIXED_LEN_STR: - offset = parseField_Bytes(tvb, tree, offset, - parserNodes[fieldIndex], - parserNodes[fieldIndex].fieldRepeatLen); - break; - case DIS_FIELDTYPE_FORCE_ID: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 1); - break; - case DIS_FIELDTYPE_FUSE: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 2); - break; - case DIS_FIELDTYPE_NUM_FIXED_DATA: - case DIS_FIELDTYPE_NUM_VARIABLE_DATA: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 4); - break; - case DIS_FIELDTYPE_REQUEST_ID: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 4); - break; - case DIS_FIELDTYPE_SPECIFIC: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 1); - break; - case DIS_FIELDTYPE_SUBCATEGORY: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 1); - break; - case DIS_FIELDTYPE_TIME_INTERVAL: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 4); - break; - case DIS_FIELDTYPE_TIMESTAMP: - offset = parseField_Timestamp(tvb, tree, offset, - parserNodes[fieldIndex]); - break; - case DIS_FIELDTYPE_WARHEAD: - offset = parseField_UInt(tvb, tree, offset, - parserNodes[fieldIndex], 2); - break; - - /* composite types */ - case DIS_FIELDTYPE_BURST_DESCRIPTOR: - case DIS_FIELDTYPE_CLOCK_TIME: - case DIS_FIELDTYPE_ENTITY_ID: - case DIS_FIELDTYPE_ENTITY_TYPE: - case DIS_FIELDTYPE_RADIO_ENTITY_TYPE: - case DIS_FIELDTYPE_ANTENNA_LOCATION: - case DIS_FIELDTYPE_REL_ANTENNA_LOCATON: - case DIS_FIELDTYPE_EVENT_ID: - case DIS_FIELDTYPE_LINEAR_VELOCITY: - case DIS_FIELDTYPE_LOCATION_ENTITY: - case DIS_FIELDTYPE_LOCATION_WORLD: - case DIS_FIELDTYPE_ORIENTATION: - case DIS_FIELDTYPE_SIMULATION_ADDRESS: - case DIS_FIELDTYPE_VECTOR_32: - case DIS_FIELDTYPE_VECTOR_64: - case DIS_FIELDTYPE_MODULATION_TYPE: - case DIS_FIELDTYPE_EMITTER_SYSTEM: - case DIS_FIELDTYPE_FUNDAMENTAL_PARAMETER_DATA: - case DIS_FIELDTYPE_UA_EMITTER_SYSTEM: - case DIS_FIELDTYPE_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA: - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - if (parserNodes[fieldIndex].children != 0) - { - proto_item *newSubtree = proto_item_add_subtree(newField, - parserNodes[fieldIndex].ettVar); - offset = parseFields(tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - } - proto_item_set_end(newField, tvb, offset); - break; - case DIS_FIELDTYPE_VARIABLE_DATUM_VALUE: - { - guint lengthInBytes; - lengthInBytes = variableDatumLength / 8; - if (variableDatumLength % 8 > 0) - { - lengthInBytes += (8 - (variableDatumLength % 8)); - } - offset = parseField_Bytes(tvb, tree, offset, - parserNodes[fieldIndex], lengthInBytes); - } - break; - - /* arrays */ - case DIS_FIELDTYPE_FIXED_DATUMS: - { - guint i; - if (numFixed > INT32_MAX) - { - numFixed = INT32_MAX; - } - - for (i = 0; i < numFixed; ++i) - { - proto_item *newSubtree; - - /* is remaining length large enough for another fixed datum (ID & value) */ - /* XXX is this really necessary? */ - tvb_ensure_length_remaining(tvb, offset+8); - - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - newSubtree = proto_item_add_subtree(newField, ettFixedData); - offset = parseFields (tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - proto_item_set_end(newField, tvb, offset); - } - } - break; - case DIS_FIELDTYPE_FIXED_DATUM_IDS: - if (numFixed > 0) - { - guint i; - proto_item *newSubtree; - - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - newSubtree = proto_item_add_subtree(newField, ettFixedData); - - if (numFixed > INT32_MAX) - { - numFixed = INT32_MAX; - } - - for (i = 0; i < numFixed; ++i) - { - /* is remaining length large enough for another fixed datum ID (32 bit int) */ - /* XXX is this really necessary? */ - tvb_ensure_length_remaining(tvb, offset+4); - offset = parseFields (tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - } - proto_item_set_end(newField, tvb, offset); - } - break; - case DIS_FIELDTYPE_VARIABLE_DATUMS: - { - guint i; - if (numVariable > INT32_MAX) - { - numVariable = INT32_MAX; - } - - for (i = 0; i < numVariable; ++i) - { - proto_item *newSubtree; - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - newSubtree = proto_item_add_subtree - (newField, ettVariableData); - offset = parseFields - (tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - proto_item_set_end(newField, tvb, offset); - } - - } - break; - case DIS_FIELDTYPE_VARIABLE_DATUM_IDS: - if (numVariable > 0) - { - guint i; - proto_item *newSubtree; - - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - newSubtree = proto_item_add_subtree(newField, ettVariableData); - - if (numVariable > INT32_MAX) - { - numVariable = INT32_MAX; - } - - for (i = 0; i < numVariable; ++i) - { - offset = parseFields - (tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - } - proto_item_set_end(newField, tvb, offset); - } - break; - case DIS_FIELDTYPE_VARIABLE_PARAMETERS: - { - guint i; - - if (numVariable > DIS_PDU_MAX_VARIABLE_PARAMETERS) - { - numVariable = DIS_PDU_MAX_VARIABLE_PARAMETERS; - } - - for (i = 0; i < numVariable; ++i) - { - proto_item *newSubtree; - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - newSubtree = proto_item_add_subtree(newField, - ettVariableParameters[i]); - offset = parseFields - (tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - offset = parseField_VariableParameter - (tvb, newSubtree, offset, pinfo); - proto_item_set_end(newField, tvb, offset); - } - } - break; - case DIS_FIELDTYPE_VARIABLE_RECORDS: - { - guint i; - - if (numVariable > DIS_PDU_MAX_VARIABLE_RECORDS) - { - numVariable = DIS_PDU_MAX_VARIABLE_RECORDS; - } - - for (i = 0; i < numVariable; ++i) - { - proto_item *newSubtree; - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - newSubtree = proto_item_add_subtree(newField, - ettVariableRecords[i]); - offset = parseFields - (tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - offset = parseField_VariableRecord - (tvb, newSubtree, offset, pinfo); - proto_item_set_end(newField, tvb, offset); - } - } - break; - case DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM: - { - guint i; - - for (i = 0; i < numBeams; ++i) - { - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - if (parserNodes[fieldIndex].children != 0) - { - proto_item *newSubtree = - proto_item_add_subtree(newField, - parserNodes[fieldIndex].ettVar); - offset = parseFields(tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - } - proto_item_set_end(newField, tvb, offset); - } - } - break; - case DIS_FIELDTYPE_TRACK_JAM: - { - guint i; - - for (i = 0; i < numTrackJamTargets; ++i) - { - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - if (parserNodes[fieldIndex].children != 0) - { - proto_item *newSubtree = - proto_item_add_subtree(newField, - parserNodes[fieldIndex].ettVar); - offset = parseFields(tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - } - proto_item_set_end(newField, tvb, offset); - } - } - break; - case DIS_FIELDTYPE_NUM_ELECTROMAGNETIC_EMISSION_SYSTEMS: - uintVal = tvb_get_guint8(tvb, offset); - proto_tree_add_item(tree, hf_dis_num_electromagnetic_emission_systems, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - break; - case DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM: - { - guint i; - - if (numVariable > DIS_PDU_MAX_ELECTROMAGNETIC_EMISSION_SYSTEMS) - { - numVariable = DIS_PDU_MAX_ELECTROMAGNETIC_EMISSION_SYSTEMS; - } - - for (i = 0; i < numVariable; ++i) - { - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", - parserNodes[fieldIndex].fieldLabel); - if (parserNodes[fieldIndex].children != 0) - { - proto_item *newSubtree = - proto_item_add_subtree(newField, - parserNodes[fieldIndex].ettVar); - offset = parseFields(tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - } - proto_item_set_end(newField, tvb, offset); - } - } - break; - case DIS_FIELDTYPE_NUM_OF_SHAFTS: - { - uintVal = tvb_get_guint8(tvb, offset); - proto_tree_add_item(tree, hf_dis_num_shafts, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - } - break; - case DIS_FIELDTYPE_SHAFTS: - { - guint i; - - if (numShafts > DIS_PDU_MAX_SHAFTS) - { - numShafts = DIS_PDU_MAX_SHAFTS; - } - - for (i = 0; i < numShafts; ++i) - { - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s [%d of %d]", - parserNodes[fieldIndex].fieldLabel, i+1, numShafts); - if (parserNodes[fieldIndex].children != 0) - { - proto_item *newSubtree = - proto_item_add_subtree(newField, - parserNodes[fieldIndex].ettVar); - offset = parseFields(tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - } - proto_item_set_end(newField, tvb, offset); - } - } - break; - case DIS_FIELDTYPE_NUM_OF_APAS: - { - uintVal = tvb_get_guint8(tvb, offset); - proto_tree_add_item(tree, hf_dis_num_apas, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - } - break; - case DIS_FIELDTYPE_APA: - { - guint i; - - if (numApas > DIS_PDU_MAX_APAS) - { - numApas = DIS_PDU_MAX_APAS; - } - - for (i = 0; i < numApas; ++i) - { - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s [%d of %d]", - parserNodes[fieldIndex].fieldLabel, i+1, numApas); - if (parserNodes[fieldIndex].children != 0) - { - proto_item *newSubtree = - proto_item_add_subtree(newField, - parserNodes[fieldIndex].ettVar); - offset = parseFields(tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - } - proto_item_set_end(newField, tvb, offset); - } - } - break; - case DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEMS: - { - uintVal = tvb_get_guint8(tvb, offset); - proto_tree_add_item(tree, hf_dis_num_ua_emitter_systems, tvb, offset, 1, ENC_BIG_ENDIAN); - offset += 1; - *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; - } - break; - case DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEM_BEAMS: - { - uintVal = tvb_get_guint8(tvb, offset); - offset = parseField_UInt(tvb, tree, offset, parserNodes[fieldIndex], 1); - numUABeams += (guint32)uintVal; - } - break; - case DIS_FIELDTYPE_UA_EMITTER_SYSTEMS: - { - guint i; - - if (numUAEmitter > DIS_PDU_MAX_UA_EMITTER_SYSTEMS) - { - numUAEmitter = DIS_PDU_MAX_UA_EMITTER_SYSTEMS; - } - - for (i = 0; i < numUAEmitter; ++i) - { - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s [%d of %d]", - parserNodes[fieldIndex].fieldLabel, i+1, numUAEmitter); - if (parserNodes[fieldIndex].children != 0) - { - proto_item *newSubtree = - proto_item_add_subtree(newField, - parserNodes[fieldIndex].ettVar); - offset = parseFields(tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - } - proto_item_set_end(newField, tvb, offset); - } - } - break; - case DIS_FIELDTYPE_UA_BEAMS: - { - guint i; - - if (numUABeams > DIS_PDU_MAX_UA_BEAMS) - { - numUABeams = DIS_PDU_MAX_UA_BEAMS; - } - - for (i = 0; i < numUABeams; ++i) - { - newField = proto_tree_add_text(tree, tvb, offset, -1, "%s [%d of %d]", - parserNodes[fieldIndex].fieldLabel, i+1, numUABeams); - if (parserNodes[fieldIndex].children != 0) - { - proto_item *newSubtree = - proto_item_add_subtree(newField, - parserNodes[fieldIndex].ettVar); - offset = parseFields(tvb, newSubtree, offset, - parserNodes[fieldIndex].children, pinfo); - } - proto_item_set_end(newField, tvb, offset); - } - numUABeams = 0; /* reset beam count for this pdu */ - } - break; - default: - break; - } - - ++fieldIndex; - length = tvb_length_remaining(tvb, offset); - } - - return offset; -} diff --git a/epan/dissectors/packet-dis-pdus.h b/epan/dissectors/packet-dis-pdus.h deleted file mode 100644 index cc861df1ea..0000000000 --- a/epan/dissectors/packet-dis-pdus.h +++ /dev/null @@ -1,114 +0,0 @@ -/* packet-dis-pdus.h - * Declarations for DIS PDU parsing. - * Copyright 2005, Scientific Research Corporation - * Initial implementation by Jeremy Ouellette - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1998 Gerald Combs - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef __PACKET_DIS_PDUPARSERS_H__ -#define __PACKET_DIS_PDUPARSERS_H__ - -#include "packet-dis-fields.h" - -/* DIS Entity Information / Interaction PDUs */ -extern DIS_ParserNode DIS_PARSER_ENTITY_STATE_PDU[]; -/* extern DIS_ParserNode DIS_PARSER_COLLISION_PDU[]; */ - -/* DIS Warfare PDUs */ -extern DIS_ParserNode DIS_PARSER_FIRE_PDU[]; -extern DIS_ParserNode DIS_PARSER_DETONATION_PDU[]; - -/* DIS Distributed Emission Regeneration PDUs */ -extern DIS_ParserNode DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU[]; -extern DIS_ParserNode DIS_PARSER_UNDERWATER_ACOUSTIC_PDU[]; - -/* DIS Radio Communications protocol (RCP) family PDUs */ -extern DIS_ParserNode DIS_PARSER_TRANSMITTER_PDU[]; -extern DIS_ParserNode DIS_PARSER_SIGNAL_PDU[]; - -/* DIS Simulation Management PDUs */ -extern DIS_ParserNode DIS_PARSER_START_RESUME_PDU[]; -extern DIS_ParserNode DIS_PARSER_STOP_FREEZE_PDU[]; -extern DIS_ParserNode DIS_PARSER_ACKNOWLEDGE_PDU[]; -extern DIS_ParserNode DIS_PARSER_ACTION_REQUEST_PDU[]; -extern DIS_ParserNode DIS_PARSER_ACTION_RESPONSE_PDU[]; -extern DIS_ParserNode DIS_PARSER_DATA_PDU[]; -extern DIS_ParserNode DIS_PARSER_DATA_QUERY_PDU[]; -extern DIS_ParserNode DIS_PARSER_COMMENT_PDU[]; -extern DIS_ParserNode DIS_PARSER_SIMAN_ENTITY_PDU[]; - -/* DIS Simulation Management with Reliability PDUs */ -extern DIS_ParserNode DIS_PARSER_START_RESUME_R_PDU[]; -extern DIS_ParserNode DIS_PARSER_STOP_FREEZE_R_PDU[]; -extern DIS_ParserNode DIS_PARSER_ACTION_REQUEST_R_PDU[]; -extern DIS_ParserNode DIS_PARSER_DATA_R_PDU[]; -extern DIS_ParserNode DIS_PARSER_DATA_QUERY_R_PDU[]; -extern DIS_ParserNode DIS_PARSER_SIMAN_ENTITY_R_PDU[]; - -/* DIS Experimental V-DIS PDUs */ -extern DIS_ParserNode DIS_PARSER_APPLICATION_CONTROL_PDU[]; - -/* Persistent Object (PO) Family PDUs */ -extern DIS_ParserNode DIS_PARSER_SIMULATOR_PRESENT_PO_PDU[]; -extern DIS_ParserNode DIS_PARSER_DESCRIBE_OBJECT_PO_PDU[]; -extern DIS_ParserNode DIS_PARSER_OBJECTS_PRESENT_PO_PDU[]; -extern DIS_ParserNode DIS_PARSER_OBJECT_REQUEST_PO_PDU[]; -extern DIS_ParserNode DIS_PARSER_DELETE_OBJECTS_PO_PDU[]; -extern DIS_ParserNode DIS_PARSER_SET_WORLD_STATE_PO_PDU[]; -extern DIS_ParserNode DIS_PARSER_NOMINATION_PO_PDU[]; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -DIS_ParserNode *createSubtree(DIS_ParserNode parserNodes[], gint *ettVar); - -void initializeParser(DIS_ParserNode parserNodes[]); - -void initializeParsers(void); - -gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNodes[], packet_info *pinfo); - -#endif /* packet-dis-pduparsers.h */ diff --git a/epan/dissectors/packet-dis.c b/epan/dissectors/packet-dis.c index 6a47a6a116..017b8714f4 100644 --- a/epan/dissectors/packet-dis.c +++ b/epan/dissectors/packet-dis.c @@ -41,9 +41,6 @@ #include #include -#include "packet-dis-enums.h" -#include "packet-dis-pdus.h" -#include "packet-dis-fields.h" #include "packet-link16.h" #define DEFAULT_DIS_UDP_PORT 3000 @@ -51,97 +48,6004 @@ /* Encoding type the last 14 bits */ #define DIS_ENCODING_TYPE(word) ((word) & 0x3FFF) -void proto_register_dis(void); +#define DIS_PDU_MAX_VARIABLE_PARAMETERS 16 +#define DIS_PDU_MAX_VARIABLE_RECORDS 16 +#define DIS_PDU_MAX_ELECTROMAGNETIC_EMISSION_SYSTEMS 16 +#define DIS_PDU_MAX_SHAFTS 16 +#define DIS_PDU_MAX_APAS 16 +#define DIS_PDU_MAX_UA_EMITTER_SYSTEMS 16 +#define DIS_PDU_MAX_UA_BEAMS 32 +typedef enum +{ + DIS_VERSION_OTHER = 0, + DIS_VERSION_1_0 = 1, + DIS_VERSION_IEEE_1278_1993 = 2, + DIS_VERSION_2_0_3RD_DRAFT = 3, + DIS_VERSION_2_0_4TH_DRAFT = 4, + DIS_VERSION_IEEE_1278_1_1995 = 5, + DIS_VERSION_IEEE_1278_1A_1998 = 6, + DIS_VERSION_IEEE_1278_1_200X = 7 +} DIS_PDU_ProtocolVersion; + +static const value_string DIS_PDU_ProtocolVersion_Strings[] = +{ + { DIS_VERSION_OTHER, "Other" }, + { DIS_VERSION_1_0, "DIS PDU version 1.0 (May 92)" }, + { DIS_VERSION_IEEE_1278_1993, "IEEE 1278-1993" }, + { DIS_VERSION_2_0_3RD_DRAFT, "DIS PDU version 2.0 - third draft (May 93)" }, + { DIS_VERSION_2_0_4TH_DRAFT, "DIS PDU version 2.0 - fourth draft (revised) March 16, 1994" }, + { DIS_VERSION_IEEE_1278_1_1995, "IEEE 1278.1-1995" }, + { DIS_VERSION_IEEE_1278_1A_1998, "IEEE 1278.1A-1998" }, + { DIS_VERSION_IEEE_1278_1_200X, "IEEE 1278.1-200X" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_PROTOCOLFAMILY_OTHER = 0, + DIS_PROTOCOLFAMILY_ENTITY_INFORMATION_INTERACTION = 1, + DIS_PROTOCOLFAMILY_WARFARE = 2, + DIS_PROTOCOLFAMILY_LOGISTICS = 3, + DIS_PROTOCOLFAMILY_RADIO_COMMUNICATIONS = 4, + DIS_PROTOCOLFAMILY_SIMULATION_MANAGEMENT = 5, + DIS_PROTOCOLFAMILY_DISTRIBUTED_EMISSION_REGENERATION = 6, + DIS_PROTOCOLFAMILY_ENTITY_MANAGEMENT = 7, + DIS_PROTOCOLFAMILY_MINEFIELD = 8, + DIS_PROTOCOLFAMILY_SYNTHETIC_ENVIRONMENT = 9, + DIS_PROTOCOLFAMILY_SIMULATION_MANAGEMENT_WITH_RELIABILITY = 10, + DIS_PROTOCOLFAMILY_LIVE_ENTITY = 11, + DIS_PROTOCOLFAMILY_NON_REAL_TIME = 12, + DIS_PROTOCOLFAMILY_INFORMATION_OPERATIONS = 13, + DIS_PROTOCOLFAMILY_EXPERIMENTAL_COMPUTER_GENERATED_FORCES = 129, + DIS_PROTOCOLFAMILY_EXPERIMENTAL_VDIS = 130, + DIS_PROTOCOLFAMILY_PERSISTENT_OBJECT = 140, + DIS_PROTOCOLFAMILY_EXPERIMENTAL = 150 +} DIS_PDU_ProtocolFamily; + +static const value_string DIS_PDU_ProtocolFamily_Strings[] = +{ + { DIS_PROTOCOLFAMILY_OTHER, "Other" }, + { DIS_PROTOCOLFAMILY_ENTITY_INFORMATION_INTERACTION, "Entity information / interaction" }, + { DIS_PROTOCOLFAMILY_WARFARE, "Warfare" }, + { DIS_PROTOCOLFAMILY_LOGISTICS, "Logistics" }, + { DIS_PROTOCOLFAMILY_RADIO_COMMUNICATIONS, "Radio communications" }, + { DIS_PROTOCOLFAMILY_SIMULATION_MANAGEMENT, "Simulation management" }, + { DIS_PROTOCOLFAMILY_DISTRIBUTED_EMISSION_REGENERATION, "Distributed emission regeneration" }, + { DIS_PROTOCOLFAMILY_ENTITY_MANAGEMENT, "Entity management" }, + { DIS_PROTOCOLFAMILY_MINEFIELD, "Minefield" }, + { DIS_PROTOCOLFAMILY_SYNTHETIC_ENVIRONMENT, "Synthetic environment" }, + { DIS_PROTOCOLFAMILY_SIMULATION_MANAGEMENT_WITH_RELIABILITY, "Simulation management with reliability" }, + { DIS_PROTOCOLFAMILY_LIVE_ENTITY, "Live entity" }, + { DIS_PROTOCOLFAMILY_NON_REAL_TIME, "Non-real time" }, + { DIS_PROTOCOLFAMILY_INFORMATION_OPERATIONS, "Information Operations" }, + { DIS_PROTOCOLFAMILY_EXPERIMENTAL_COMPUTER_GENERATED_FORCES, "Experimental - Computer Generated Forces" }, + { DIS_PROTOCOLFAMILY_EXPERIMENTAL_VDIS, "Experimental - V-DIS" }, + { DIS_PROTOCOLFAMILY_PERSISTENT_OBJECT, "Persistent object" }, + { DIS_PROTOCOLFAMILY_EXPERIMENTAL, "Experimental" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_PDUTYPE_OTHER = 0, + DIS_PDUTYPE_ENTITY_STATE = 1, + DIS_PDUTYPE_FIRE = 2, + DIS_PDUTYPE_DETONATION = 3, + DIS_PDUTYPE_COLLISION = 4, + DIS_PDUTYPE_SERVICE_REQUEST = 5, + DIS_PDUTYPE_RESUPPLY_OFFER = 6, + DIS_PDUTYPE_RESUPPLY_RECEIVED = 7, + DIS_PDUTYPE_RESUPPLY_CANCEL = 8, + DIS_PDUTYPE_REPAIR_COMPLETE = 9, + DIS_PDUTYPE_REPAIR_RESPONSE = 10, + DIS_PDUTYPE_CREATE_ENTITY = 11, + DIS_PDUTYPE_REMOVE_ENTITY = 12, + DIS_PDUTYPE_START_RESUME = 13, + DIS_PDUTYPE_STOP_FREEZE = 14, + DIS_PDUTYPE_ACKNOWLEDGE = 15, + DIS_PDUTYPE_ACTION_REQUEST = 16, + DIS_PDUTYPE_ACTION_RESPONSE = 17, + DIS_PDUTYPE_DATA_QUERY = 18, + DIS_PDUTYPE_SET_DATA = 19, + DIS_PDUTYPE_DATA = 20, + DIS_PDUTYPE_EVENT_REPORT = 21, + DIS_PDUTYPE_COMMENT = 22, + DIS_PDUTYPE_ELECTROMAGNETIC_EMISSION = 23, + DIS_PDUTYPE_DESIGNATOR = 24, + DIS_PDUTYPE_TRANSMITTER = 25, + DIS_PDUTYPE_SIGNAL = 26, + DIS_PDUTYPE_RECEIVER = 27, + DIS_PDUTYPE_IFF_ATC_NAVAIDS = 28, + DIS_PDUTYPE_UNDERWATER_ACOUSTIC = 29, + DIS_PDUTYPE_SUPPLEMENTAL_EMISSION_ENTITY_STATE = 30, + DIS_PDUTYPE_INTERCOM_SIGNAL = 31, + DIS_PDUTYPE_INTERCOM_CONTROL = 32, + DIS_PDUTYPE_AGGREGATE_STATE = 33, + DIS_PDUTYPE_IS_GROUP_OF = 34, + DIS_PDUTYPE_TRANSFER_CONTROL = 35, + DIS_PDUTYPE_IS_PART_OF = 36, + DIS_PDUTYPE_MINEFIELD_STATE = 37, + DIS_PDUTYPE_MINEFIELD_QUERY = 38, + DIS_PDUTYPE_MINEFIELD_DATA = 39, + DIS_PDUTYPE_MINEFIELD_RESPONSE_NAK = 40, + DIS_PDUTYPE_ENVIRONMENTAL_PROCESS = 41, + DIS_PDUTYPE_GRIDDED_DATA = 42, + DIS_PDUTYPE_POINT_OBJECT_STATE = 43, + DIS_PDUTYPE_LINEAR_OBJECT_STATE = 44, + DIS_PDUTYPE_AREAL_OBJECT_STATE = 45, + DIS_PDUTYPE_TSPI = 46, + DIS_PDUTYPE_APPEARANCE = 47, + DIS_PDUTYPE_ARTICULATED_PARTS = 48, + DIS_PDUTYPE_LE_FIRE = 49, + DIS_PDUTYPE_LE_DETONATION = 50, + DIS_PDUTYPE_CREATE_ENTITY_R = 51, + DIS_PDUTYPE_REMOVE_ENTITY_R = 52, + DIS_PDUTYPE_START_RESUME_R = 53, + DIS_PDUTYPE_STOP_FREEZE_R = 54, + DIS_PDUTYPE_ACKNOWLEDGE_R = 55, + DIS_PDUTYPE_ACTION_REQUEST_R = 56, + DIS_PDUTYPE_ACTION_RESPONSE_R = 57, + DIS_PDUTYPE_DATA_QUERY_R = 58, + DIS_PDUTYPE_SET_DATA_R = 59, + DIS_PDUTYPE_DATA_R = 60, + DIS_PDUTYPE_EVENT_REPORT_R = 61, + DIS_PDUTYPE_COMMENT_R = 62, + DIS_PDUTYPE_RECORD_R = 63, + DIS_PDUTYPE_SET_RECORD_R = 64, + DIS_PDUTYPE_RECORD_QUERY_R = 65, + DIS_PDUTYPE_COLLISION_ELASTIC = 66, + DIS_PDUTYPE_ENTITY_STATE_UPDATE = 67, + DIS_PDUTYPE_DIRECTED_ENERGY_FIRE = 68, + DIS_PDUTYPE_ENTITY_DAMAGE_STATUS = 69, + DIS_PDUTYPE_INFORMATION_OPERATIONS_ACTION = 70, + DIS_PDUTYPE_INFORMATION_OPERATIONS_REPORT = 71, + DIS_PDUTYPE_ATTRIBUTE = 71, + DIS_PDUTYPE_ANNOUNCE_OBJECT = 129, + DIS_PDUTYPE_DELETE_OBJECT = 130, + DIS_PDUTYPE_DESCRIBE_APPLICATION = 131, + DIS_PDUTYPE_DESCRIBE_EVENT = 132, + DIS_PDUTYPE_DESCRIBE_OBJECT = 133, + DIS_PDUTYPE_REQUEST_EVENT = 134, + DIS_PDUTYPE_REQUEST_OBJECT = 135, + DIS_PDUTYPE_APPLICATION_CONTROL = 200, + DIS_PDUTYPE_STEALTH_STATE = 201 +} DIS_PDU_Type; + +static const value_string DIS_PDU_Type_Strings[] = +{ + { DIS_PDUTYPE_OTHER, "Other" }, + { DIS_PDUTYPE_ENTITY_STATE, "Entity State" }, + { DIS_PDUTYPE_FIRE, "Fire" }, + { DIS_PDUTYPE_DETONATION, "Detonation" }, + { DIS_PDUTYPE_COLLISION, "Collision" }, + { DIS_PDUTYPE_SERVICE_REQUEST, "Service Request" }, + { DIS_PDUTYPE_RESUPPLY_OFFER, "Resupply Offer" }, + { DIS_PDUTYPE_RESUPPLY_RECEIVED, "Resupply Received" }, + { DIS_PDUTYPE_RESUPPLY_CANCEL, "Resupply Cancel" }, + { DIS_PDUTYPE_REPAIR_COMPLETE, "Repair Complete" }, + { DIS_PDUTYPE_REPAIR_RESPONSE, "Repair Response" }, + { DIS_PDUTYPE_CREATE_ENTITY, "Create Entity" }, + { DIS_PDUTYPE_REMOVE_ENTITY, "Remove Entity" }, + { DIS_PDUTYPE_START_RESUME, "Start / Resume" }, + { DIS_PDUTYPE_STOP_FREEZE, "Stop / Freeze" }, + { DIS_PDUTYPE_ACKNOWLEDGE, "Acknowledge" }, + { DIS_PDUTYPE_ACTION_REQUEST, "Action Request" }, + { DIS_PDUTYPE_ACTION_RESPONSE, "Action Response" }, + { DIS_PDUTYPE_DATA_QUERY, "Data Query" }, + { DIS_PDUTYPE_SET_DATA, "Set Data" }, + { DIS_PDUTYPE_DATA, "Data" }, + { DIS_PDUTYPE_EVENT_REPORT, "Event Report" }, + { DIS_PDUTYPE_COMMENT, "Comment" }, + { DIS_PDUTYPE_ELECTROMAGNETIC_EMISSION, "Electromagnetic Emission" }, + { DIS_PDUTYPE_DESIGNATOR, "Designator" }, + { DIS_PDUTYPE_TRANSMITTER, "Transmitter" }, + { DIS_PDUTYPE_SIGNAL, "Signal" }, + { DIS_PDUTYPE_RECEIVER, "Receiver" }, + { DIS_PDUTYPE_IFF_ATC_NAVAIDS, "IFF / ATC / NAVAIDS" }, + { DIS_PDUTYPE_UNDERWATER_ACOUSTIC, "Underwater Acoustic" }, + { DIS_PDUTYPE_SUPPLEMENTAL_EMISSION_ENTITY_STATE, "Supplemental Emission Entity State" }, + { DIS_PDUTYPE_INTERCOM_SIGNAL, "Intercom Signal" }, + { DIS_PDUTYPE_INTERCOM_CONTROL, "Intercom Control" }, + { DIS_PDUTYPE_AGGREGATE_STATE, "Aggregate State" }, + { DIS_PDUTYPE_IS_GROUP_OF, "IsGroupOf" }, + { DIS_PDUTYPE_TRANSFER_CONTROL, "Transfer Control" }, + { DIS_PDUTYPE_IS_PART_OF, "IsPartOf" }, + { DIS_PDUTYPE_MINEFIELD_STATE, "Minefield State" }, + { DIS_PDUTYPE_MINEFIELD_QUERY, "Minefield Query" }, + { DIS_PDUTYPE_MINEFIELD_DATA, "Minefield Data" }, + { DIS_PDUTYPE_MINEFIELD_RESPONSE_NAK, "Minefield Response NAK" }, + { DIS_PDUTYPE_ENVIRONMENTAL_PROCESS, "Environmental Process" }, + { DIS_PDUTYPE_GRIDDED_DATA, "Gridded Data" }, + { DIS_PDUTYPE_POINT_OBJECT_STATE, "Point Object State" }, + { DIS_PDUTYPE_LINEAR_OBJECT_STATE, "Linear Object State" }, + { DIS_PDUTYPE_AREAL_OBJECT_STATE, "Areal Object State" }, + { DIS_PDUTYPE_TSPI, "TSPI" }, + { DIS_PDUTYPE_APPEARANCE, "Appearance" }, + { DIS_PDUTYPE_ARTICULATED_PARTS, "Articulated Parts" }, + { DIS_PDUTYPE_LE_FIRE, "LE Fire" }, + { DIS_PDUTYPE_LE_DETONATION, "LE Detonation" }, + { DIS_PDUTYPE_CREATE_ENTITY_R, "Create Entity-R" }, + { DIS_PDUTYPE_REMOVE_ENTITY_R, "Remove Entity-R" }, + { DIS_PDUTYPE_START_RESUME_R, "Start / Resume-R" }, + { DIS_PDUTYPE_STOP_FREEZE_R, "Stop / Freeze-R" }, + { DIS_PDUTYPE_ACKNOWLEDGE_R, "Acknowledge-R" }, + { DIS_PDUTYPE_ACTION_REQUEST_R, "Action Request-R" }, + { DIS_PDUTYPE_ACTION_RESPONSE_R, "Action Response-R" }, + { DIS_PDUTYPE_DATA_QUERY_R, "Data Query-R" }, + { DIS_PDUTYPE_SET_DATA_R, "Set Data-R" }, + { DIS_PDUTYPE_DATA_R, "Data-R" }, + { DIS_PDUTYPE_EVENT_REPORT_R, "Event Report-R" }, + { DIS_PDUTYPE_COMMENT_R, "Comment-R" }, + { DIS_PDUTYPE_RECORD_R, "Record-R" }, + { DIS_PDUTYPE_SET_RECORD_R, "Set Record-R" }, + { DIS_PDUTYPE_RECORD_QUERY_R, "Record Query-R" }, + { DIS_PDUTYPE_COLLISION_ELASTIC, "Collision Elastic" }, + { DIS_PDUTYPE_ENTITY_STATE_UPDATE, "Entity State Update" }, + { DIS_PDUTYPE_DIRECTED_ENERGY_FIRE, "Directed Energy Fire" }, + { DIS_PDUTYPE_ENTITY_DAMAGE_STATUS, "Entity Damage Status" }, + { DIS_PDUTYPE_INFORMATION_OPERATIONS_ACTION, "Info Operations Action" }, + { DIS_PDUTYPE_INFORMATION_OPERATIONS_REPORT, "Info Operations Report" }, + { DIS_PDUTYPE_ATTRIBUTE, "Attribute" }, + { DIS_PDUTYPE_ANNOUNCE_OBJECT, "Announce Object" }, + { DIS_PDUTYPE_DELETE_OBJECT, "Delete Object" }, + { DIS_PDUTYPE_DESCRIBE_APPLICATION, "Describe Application" }, + { DIS_PDUTYPE_DESCRIBE_EVENT, "Describe Event" }, + { DIS_PDUTYPE_DESCRIBE_OBJECT, "Describe Object" }, + { DIS_PDUTYPE_REQUEST_EVENT, "Request Event" }, + { DIS_PDUTYPE_REQUEST_OBJECT, "Request Object" }, + { DIS_PDUTYPE_APPLICATION_CONTROL, "Application Control" }, + { DIS_PDUTYPE_STEALTH_STATE, "Stealth State" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_ENTITYKIND_OTHER = 0, + DIS_ENTITYKIND_PLATFORM = 1, + DIS_ENTITYKIND_MUNITION = 2, + DIS_ENTITYKIND_LIFE_FORM = 3, + DIS_ENTITYKIND_ENVIRONMENTAL = 4, + DIS_ENTITYKIND_CULTURAL_FEATURE = 5, + DIS_ENTITYKIND_SUPPLY = 6, + DIS_ENTITYKIND_RADIO = 7, + DIS_ENTITYKIND_EXPENDABLE = 8, + DIS_ENTITYKIND_SENSOR_EMITTER = 9 +} DIS_PDU_EntityKind; + +static const value_string DIS_PDU_EntityKind_Strings[] = +{ + { DIS_ENTITYKIND_OTHER, "Other" }, + { DIS_ENTITYKIND_PLATFORM, "Platform" }, + { DIS_ENTITYKIND_MUNITION, "Munition" }, + { DIS_ENTITYKIND_LIFE_FORM, "Life form" }, + { DIS_ENTITYKIND_ENVIRONMENTAL, "Environmental" }, + { DIS_ENTITYKIND_CULTURAL_FEATURE, "Cultural feature" }, + { DIS_ENTITYKIND_SUPPLY, "Supply" }, + { DIS_ENTITYKIND_RADIO, "Radio" }, + { DIS_ENTITYKIND_EXPENDABLE, "Expendable" }, + { DIS_ENTITYKIND_SENSOR_EMITTER, "Sensor/Emitter" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_DOMAIN_OTHER = 0, + DIS_DOMAIN_LAND = 1, + DIS_DOMAIN_AIR = 2, + DIS_DOMAIN_SURFACE = 3, + DIS_DOMAIN_SUBSURFACE = 4, + DIS_DOMAIN_SPACE = 5 +} DIS_PDU_Domain; + +static const value_string DIS_PDU_Domain_Strings[] = +{ + { DIS_DOMAIN_OTHER, "Other" }, + { DIS_DOMAIN_LAND, "Land" }, + { DIS_DOMAIN_AIR, "Air" }, + { DIS_DOMAIN_SURFACE, "Surface" }, + { DIS_DOMAIN_SUBSURFACE, "Subsurface" }, + { DIS_DOMAIN_SPACE, "Space" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_CATEGORY_LANDPLATFORM_OTHER = 0, + DIS_CATEGORY_LANDPLATFORM_TANK = 1, + DIS_CATEGORY_LANDPLATFORM_ARMORED_FIGHTING_VEHICLE = 2, + DIS_CATEGORY_LANDPLATFORM_ARMORED_UTILITY_VEHICLE = 3, + DIS_CATEGORY_LANDPLATFORM_SELF_PROPELLED_ARTILLERY = 4, + DIS_CATEGORY_LANDPLATFORM_TOWED_ARTILLERY = 5, + DIS_CATEGORY_LANDPLATFORM_SMALL_WHEELED_UTILITY_VEHICLE = 6, + DIS_CATEGORY_LANDPLATFORM_LARGE_WHEELED_UTILITY_VEHICLE = 7, + DIS_CATEGORY_LANDPLATFORM_SMALL_TRACKED_UTILITY_VEHICLE = 8, + DIS_CATEGORY_LANDPLATFORM_LARGE_TRACKED_UTILITY_VEHICLE = 9, + DIS_CATEGORY_LANDPLATFORM_MORTAR = 10, + DIS_CATEGORY_LANDPLATFORM_MINE_PLOW = 11, + DIS_CATEGORY_LANDPLATFORM_MINE_RAKE = 12, + DIS_CATEGORY_LANDPLATFORM_MINE_ROLLER = 13, + DIS_CATEGORY_LANDPLATFORM_CARGO_TRAILER = 14, + DIS_CATEGORY_LANDPLATFORM_FUEL_TRAILER = 15, + DIS_CATEGORY_LANDPLATFORM_GENERATOR_TRAILER = 16, + DIS_CATEGORY_LANDPLATFORM_WATER_TRAILER = 17, + DIS_CATEGORY_LANDPLATFORM_ENGINEER_EQUIPMENT = 18, + DIS_CATEGORY_LANDPLATFORM_HEAVY_EQUIPMENT_TRANSPORT_TRAILER = 19, + DIS_CATEGORY_LANDPLATFORM_MAINTENANCE_EQUIPMENT_TRAILER = 20, + DIS_CATEGORY_LANDPLATFORM_LIMBER = 21, + DIS_CATEGORY_LANDPLATFORM_CHEMICAL_DECONTAMINATION_TRAILER = 22, + DIS_CATEGORY_LANDPLATFORM_WARNING_SYSTEM = 23, + DIS_CATEGORY_LANDPLATFORM_TRAIN_ENGINE = 24, + DIS_CATEGORY_LANDPLATFORM_TRAIN_CAR = 25, + DIS_CATEGORY_LANDPLATFORM_TRAIN_CABOOSE = 26, + DIS_CATEGORY_LANDPLATFORM_CIVILIAN_VEHICLE = 27, + DIS_CATEGORY_LANDPLATFORM_AIR_DEFENSE_MISSILE_DEFENSE_UNIT_EQUIPMENT = 28, + DIS_CATEGORY_LANDPLATFORM_C3I_SYSTEM = 29, + DIS_CATEGORY_LANDPLATFORM_OPERATIONS_FACILITY = 30, + DIS_CATEGORY_LANDPLATFORM_INTELLIGENCE_FACILITY = 31, + DIS_CATEGORY_LANDPLATFORM_SURVEILLANCE_FACILITY = 32, + DIS_CATEGORY_LANDPLATFORM_COMMUNICATIONS_FACILITY = 33, + DIS_CATEGORY_LANDPLATFORM_COMMAND_FACILITY = 34, + DIS_CATEGORY_LANDPLATFORM_C4I_FACILITY = 35, + DIS_CATEGORY_LANDPLATFORM_CONTROL_FACILITY = 36, + DIS_CATEGORY_LANDPLATFORM_FIRE_CONTROL_FACILITY = 37, + DIS_CATEGORY_LANDPLATFORM_MISSILE_DEFENSE_FACILITY = 38, + DIS_CATEGORY_LANDPLATFORM_FIELD_COMMAND_POST = 39, + DIS_CATEGORY_LANDPLATFORM_OBSERVATION_POST = 40 +} DIS_PDU_Category_LandPlatform; + +static const value_string DIS_PDU_Category_LandPlatform_Strings[] = +{ + { DIS_CATEGORY_LANDPLATFORM_OTHER, "Other" }, + { DIS_CATEGORY_LANDPLATFORM_TANK, "Tank" }, + { DIS_CATEGORY_LANDPLATFORM_ARMORED_FIGHTING_VEHICLE, "Armored fighting vehicle" }, + { DIS_CATEGORY_LANDPLATFORM_ARMORED_UTILITY_VEHICLE, "Armored utility vehicle" }, + { DIS_CATEGORY_LANDPLATFORM_SELF_PROPELLED_ARTILLERY, "Self-propelled artillery" }, + { DIS_CATEGORY_LANDPLATFORM_TOWED_ARTILLERY, "Towed artillery" }, + { DIS_CATEGORY_LANDPLATFORM_SMALL_WHEELED_UTILITY_VEHICLE, "Small wheeled utility vehicle" }, + { DIS_CATEGORY_LANDPLATFORM_LARGE_WHEELED_UTILITY_VEHICLE, "Large wheeled utility vehicle" }, + { DIS_CATEGORY_LANDPLATFORM_SMALL_TRACKED_UTILITY_VEHICLE, "Small tracked utility vehicle" }, + { DIS_CATEGORY_LANDPLATFORM_LARGE_TRACKED_UTILITY_VEHICLE, "Large tracked utility vehicle" }, + { DIS_CATEGORY_LANDPLATFORM_MORTAR, "Mortar" }, + { DIS_CATEGORY_LANDPLATFORM_MINE_PLOW, "Mine plow" }, + { DIS_CATEGORY_LANDPLATFORM_MINE_RAKE, "Mine rake" }, + { DIS_CATEGORY_LANDPLATFORM_MINE_ROLLER, "Mine roller" }, + { DIS_CATEGORY_LANDPLATFORM_CARGO_TRAILER, "Cargo trailer" }, + { DIS_CATEGORY_LANDPLATFORM_FUEL_TRAILER, "Fuel trailer" }, + { DIS_CATEGORY_LANDPLATFORM_GENERATOR_TRAILER, "Generator trailer" }, + { DIS_CATEGORY_LANDPLATFORM_WATER_TRAILER, "Water trailer" }, + { DIS_CATEGORY_LANDPLATFORM_ENGINEER_EQUIPMENT, "Engineer equipment" }, + { DIS_CATEGORY_LANDPLATFORM_HEAVY_EQUIPMENT_TRANSPORT_TRAILER, "Heavy equipment transport trailer" }, + { DIS_CATEGORY_LANDPLATFORM_MAINTENANCE_EQUIPMENT_TRAILER, "Maintenance equipment trailer" }, + { DIS_CATEGORY_LANDPLATFORM_LIMBER, "Limber" }, + { DIS_CATEGORY_LANDPLATFORM_CHEMICAL_DECONTAMINATION_TRAILER, "Chemical decontamination trailer" }, + { DIS_CATEGORY_LANDPLATFORM_WARNING_SYSTEM, "Warning system" }, + { DIS_CATEGORY_LANDPLATFORM_TRAIN_ENGINE, "Train engine" }, + { DIS_CATEGORY_LANDPLATFORM_TRAIN_CAR, "Train car" }, + { DIS_CATEGORY_LANDPLATFORM_TRAIN_CABOOSE, "Train caboose" }, + { DIS_CATEGORY_LANDPLATFORM_CIVILIAN_VEHICLE, "Civilian vehicle" }, + { DIS_CATEGORY_LANDPLATFORM_AIR_DEFENSE_MISSILE_DEFENSE_UNIT_EQUIPMENT, "Air defense / missile defense unit equipment" }, + { DIS_CATEGORY_LANDPLATFORM_C3I_SYSTEM, "C3I system" }, + { DIS_CATEGORY_LANDPLATFORM_OPERATIONS_FACILITY, "Operations facility" }, + { DIS_CATEGORY_LANDPLATFORM_INTELLIGENCE_FACILITY, "Intelligence facility" }, + { DIS_CATEGORY_LANDPLATFORM_SURVEILLANCE_FACILITY, "Surveillance facility" }, + { DIS_CATEGORY_LANDPLATFORM_COMMUNICATIONS_FACILITY, "Communications facility" }, + { DIS_CATEGORY_LANDPLATFORM_COMMAND_FACILITY, "Command facility" }, + { DIS_CATEGORY_LANDPLATFORM_C4I_FACILITY, "C4I facility" }, + { DIS_CATEGORY_LANDPLATFORM_CONTROL_FACILITY, "Control facility" }, + { DIS_CATEGORY_LANDPLATFORM_FIRE_CONTROL_FACILITY, "Fire control facility" }, + { DIS_CATEGORY_LANDPLATFORM_MISSILE_DEFENSE_FACILITY, "Missile defense facility" }, + { DIS_CATEGORY_LANDPLATFORM_FIELD_COMMAND_POST, "Field command post" }, + { DIS_CATEGORY_LANDPLATFORM_OBSERVATION_POST, "Field observation post" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_CATEGORY_AIRPLATFORM_OTHER = 0, + DIS_CATEGORY_AIRPLATFORM_FIGHTER_AIR_DEFENSE = 1, + DIS_CATEGORY_AIRPLATFORM_ATTACK_STRIKE = 2, + DIS_CATEGORY_AIRPLATFORM_BOMBER = 3, + DIS_CATEGORY_AIRPLATFORM_CARGO_TANKER = 4, + DIS_CATEGORY_AIRPLATFORM_ASW_PATROL_OBSERVATION = 5, + DIS_CATEGORY_AIRPLATFORM_ELECTRONIC_WARFARE = 6, + DIS_CATEGORY_AIRPLATFORM_RECONNAISSANCE = 7, + DIS_CATEGORY_AIRPLATFORM_SURVEILLANCE_C2 = 8, + DIS_CATEGORY_AIRPLATFORM_ATTACK_HELICOPTER = 20, + DIS_CATEGORY_AIRPLATFORM_UTILITY_HELICOPTER = 21, + DIS_CATEGORY_AIRPLATFORM_ANTISUB_WARFARE_PATROL_HELICOPTER = 22, + DIS_CATEGORY_AIRPLATFORM_CARGO_HELICOPTER = 23, + DIS_CATEGORY_AIRPLATFORM_OBSERVATION_HELICOPTER = 24, + DIS_CATEGORY_AIRPLATFORM_SPECIAL_OPERATIONS_HELICOPTER = 25, + DIS_CATEGORY_AIRPLATFORM_TRAINER = 40, + DIS_CATEGORY_AIRPLATFORM_UNMANNED = 50, + DIS_CATEGORY_AIRPLATFORM_NON_COMBATANT_COMMERCIAL_AIRCRAFT = 57 +} DIS_PDU_Category_AirPlatform; + +static const value_string DIS_PDU_Category_AirPlatform_Strings[] = +{ + { DIS_CATEGORY_AIRPLATFORM_OTHER, "Other" }, + { DIS_CATEGORY_AIRPLATFORM_FIGHTER_AIR_DEFENSE, "Fighter / air defense" }, + { DIS_CATEGORY_AIRPLATFORM_ATTACK_STRIKE, "Attack / strike" }, + { DIS_CATEGORY_AIRPLATFORM_BOMBER, "Bomber" }, + { DIS_CATEGORY_AIRPLATFORM_CARGO_TANKER, "Cargo tanker" }, + { DIS_CATEGORY_AIRPLATFORM_ASW_PATROL_OBSERVATION, "ASW / patrol / observation" }, + { DIS_CATEGORY_AIRPLATFORM_ELECTRONIC_WARFARE, "Electronic warfare" }, + { DIS_CATEGORY_AIRPLATFORM_RECONNAISSANCE, "Reconnaissance" }, + { DIS_CATEGORY_AIRPLATFORM_SURVEILLANCE_C2, "Surveillance / C2" }, + { DIS_CATEGORY_AIRPLATFORM_ATTACK_HELICOPTER, "Attack helicopter" }, + { DIS_CATEGORY_AIRPLATFORM_UTILITY_HELICOPTER, "Utility helicopter" }, + { DIS_CATEGORY_AIRPLATFORM_ANTISUB_WARFARE_PATROL_HELICOPTER, "Antisubmarine warfare / patrol helicopter" }, + { DIS_CATEGORY_AIRPLATFORM_CARGO_HELICOPTER, "Cargo helicopter" }, + { DIS_CATEGORY_AIRPLATFORM_OBSERVATION_HELICOPTER, "Observation helicopter" }, + { DIS_CATEGORY_AIRPLATFORM_SPECIAL_OPERATIONS_HELICOPTER, "Special operations helicopter" }, + { DIS_CATEGORY_AIRPLATFORM_TRAINER, "Trainer" }, + { DIS_CATEGORY_AIRPLATFORM_UNMANNED, "Unmanned" }, + { DIS_CATEGORY_AIRPLATFORM_NON_COMBATANT_COMMERCIAL_AIRCRAFT, "Non-combatant commercial aircraft" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_CATEGORY_SURFACEPLATFORM_OTHER = 0 +} DIS_PDU_Category_SurfacePlatform; + +static const value_string DIS_PDU_Category_SurfacePlatform_Strings[] = +{ + { DIS_CATEGORY_SURFACEPLATFORM_OTHER, "Other" }, + { 0, NULL} +}; + +typedef enum +{ + DIS_CATEGORY_SUBSURFACEPLATFORM_OTHER = 0 +} DIS_PDU_Category_SubsurfacePlatform; + +static const value_string DIS_PDU_Category_SubsurfacePlatform_Strings[] = +{ + { DIS_CATEGORY_SUBSURFACEPLATFORM_OTHER, "Other" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_CATEGORY_SPACEPLATFORM_OTHER = 0 +} DIS_PDU_Category_SpacePlatform; + +static const value_string DIS_PDU_Category_SpacePlatform_Strings[] = +{ + { DIS_CATEGORY_SPACEPLATFORM_OTHER, "Other" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_ENCODING_CLASS_ENCODED_AUDIO = 0, + DIS_ENCODING_CLASS_RAW_BINARY_DATA = 1, + DIS_ENCODING_CLASS_APPL_SPEC_DATA = 2, + DIS_ENCODING_CLASS_DB_INDEX = 3 +} DIS_PDU_Encoding_Class; + +static const value_string DIS_PDU_Encoding_Class_Strings[] = +{ + { DIS_ENCODING_CLASS_ENCODED_AUDIO, "Encoded Audio" }, + { DIS_ENCODING_CLASS_RAW_BINARY_DATA, "Raw Binary Data" }, + { DIS_ENCODING_CLASS_APPL_SPEC_DATA, "Application-Specific Data" }, + { DIS_ENCODING_CLASS_DB_INDEX, "Database index" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_ENCODING_TYPE_OTHER = 0, + DIS_ENCODING_TYPE_MU_LAW = 1, + DIS_ENCODING_TYPE_CVSD = 2, + DIS_ENCODING_TYPE_ADPCM_G721 = 3, + DIS_ENCODING_TYPE_16BIT_LINEAR_PCM = 4, + DIS_ENCODING_TYPE_8BIT_LINEAR_PCM = 5, + DIS_ENCODING_TYPE_VECTOR_QUANTIZATION = 6 +} DIS_PDU_Encoding_Type; + +static const value_string DIS_PDU_Encoding_Type_Strings[] = +{ + { DIS_ENCODING_TYPE_OTHER, "Other" }, + { DIS_ENCODING_TYPE_MU_LAW, "8-bit mu-law" }, + { DIS_ENCODING_TYPE_CVSD, "CVSD per MIL-STD-188-113" }, + { DIS_ENCODING_TYPE_ADPCM_G721, "ADPCM per CCITT G.721" }, + { DIS_ENCODING_TYPE_16BIT_LINEAR_PCM, "16-bit linear PCM" }, + { DIS_ENCODING_TYPE_8BIT_LINEAR_PCM, "8-bit linear PCM" }, + { DIS_ENCODING_TYPE_VECTOR_QUANTIZATION, "VQ (Vector Quantization" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_TDL_TYPE_OTHER = 0, + DIS_TDL_TYPE_PADIL = 1, + DIS_TDL_TYPE_NATO_LINK1 = 2, + DIS_TDL_TYPE_ATDL1 = 3, + DIS_TDL_TYPE_LINK_11B = 4, + DIS_TDL_TYPE_SADL = 5, + DIS_TDL_TYPE_JTIDS_TADIL_J = 6, + DIS_TDL_TYPE_JTIDS_FDL_TADIL_J = 7, + DIS_TDL_TYPE_LINK_11A = 8, + DIS_TDL_TYPE_IJMS = 9, + DIS_TDL_TYPE_LINK_4A = 10, + DIS_TDL_TYPE_LINK_4C = 11, + DIS_TDL_TYPE_TIBS = 12, + DIS_TDL_TYPE_ATL = 13, + DIS_TDL_TYPE_CONSTANT_SRC = 14, + DIS_TDL_TYPE_ABBRV_CC = 15, + DIS_TDL_TYPE_MILSTAR = 16, + DIS_TDL_TYPE_ATHS = 17, + DIS_TDL_TYPE_OTHGOLD = 18, + DIS_TDL_TYPE_TACELINT = 19, + DIS_TDL_TYPE_AWW13 = 20, + DIS_TDL_TYPE_ABBRV_CC_2 = 21, + DIS_TDL_TYPE_EPLRS = 22, + DIS_TDL_TYPE_PLRS = 23, + DIS_TDL_TYPE_SINCGARS = 24, + DIS_TDL_TYPE_HAVE_QUICK_I = 25, + DIS_TDL_TYPE_HAVE_QUICK_II = 26, + DIS_TDL_TYPE_HAVE_QUICK_IIA = 27, + DIS_TDL_TYPE_IFDL1 = 28, + DIS_TDL_TYPE_IFDL2 = 29, + DIS_TDL_TYPE_IDM = 30, + DIS_TDL_TYPE_AFAPD = 31, + DIS_TDL_TYPE_CEC = 32, + DIS_TDL_TYPE_FAAD_FDL = 33, + DIS_TDL_TYPE_GBDL = 34, + DIS_TDL_TYPE_IVIS = 35, + DIS_TDL_TYPE_MTS = 36, + DIS_TDL_TYPE_TACFIRE = 37, + DIS_TDL_TYPE_IBS = 38, + DIS_TDL_TYPE_ABIT = 39, + DIS_TDL_TYPE_ATARS = 40, + DIS_TDL_TYPE_BGPHES = 41, + DIS_TDL_TYPE_CHBDL = 42, + DIS_TDL_TYPE_GUARDRAIL_IDL = 43, + DIS_TDL_TYPE_GUARDRAIL_CSS1 = 44, + DIS_TDL_TYPE_GUARDRAIL_CSS2 = 45, + DIS_TDL_TYPE_GUARDRAIL_CSS2_MRDL = 46, + DIS_TDL_TYPE_GUARDRAIL_CSS2_DASR = 47, + DIS_TDL_TYPE_LOS_TETHER = 48, + DIS_TDL_TYPE_LWCDL = 49, + DIS_TDL_TYPE_L_52M = 50, + DIS_TDL_TYPE_RR_ROWL_DL = 51, + DIS_TDL_TYPE_SENIOR_SPAN = 52, + DIS_TDL_TYPE_SENIOR_SPUR = 53, + DIS_TDL_TYPE_SENIOR_STRETCH = 54, + DIS_TDL_TYPE_SENIOR_YEAR_IDL = 55, + DIS_TDL_TYPE_SPACE_CDL = 56, + DIS_TDL_TYPE_TR_1_MIST_ADL = 57, + DIS_TDL_TYPE_KU_BAND_SATCOM = 58, + DIS_TDL_TYPE_MECDL = 59, + DIS_TDL_TYPE_RADAR_DATA_TSDL = 60, + DIS_TDL_TYPE_SCDL = 61, + DIS_TDL_TYPE_TACTICAL_UAV_VIDEO = 62, + DIS_TDL_TYPE_UHF_SATCOM = 63, + DIS_TDL_TYPE_TCDL = 64, + DIS_TDL_TYPE_LLAPI = 65, + DIS_TDL_TYPE_WEAPONS_DL = 66, + DIS_TDL_TYPE_GC3 = 99, + DIS_TDL_TYPE_LINK16_STD = 100, + DIS_TDL_TYPE_LINK16_EDR = 101, + DIS_TDL_TYPE_JTIDS_NET_DATA_LOAD = 102, + DIS_TDL_TYPE_LINK22 = 103, + DIS_TDL_TYPE_AFIWC_IADS = 104 +} DIS_PDU_TDL_Type; + +static const value_string DIS_PDU_TDL_Type_Strings[] = +{ + {DIS_TDL_TYPE_OTHER, "Other" }, + {DIS_TDL_TYPE_PADIL, "PADIL" }, + {DIS_TDL_TYPE_NATO_LINK1, "NATO Link-1" }, + {DIS_TDL_TYPE_ATDL1, "ATDL-1" }, + {DIS_TDL_TYPE_LINK_11B, "Link 11B (TADIL B)" }, + {DIS_TDL_TYPE_SADL, "Situational Awareness Data Link (SADL)" }, + {DIS_TDL_TYPE_JTIDS_TADIL_J, "Link 16 Legacy Format (JTIDS/TADIL-J) " }, + {DIS_TDL_TYPE_JTIDS_FDL_TADIL_J, "Link 16 Legacy Format (JTIDS/FDL/TADIL-J)" }, + {DIS_TDL_TYPE_LINK_11A, "Link 11A (TADIL A)" }, + {DIS_TDL_TYPE_IJMS, "IJMS" }, + {DIS_TDL_TYPE_LINK_4A, "Link 4A (TADIL C)" }, + {DIS_TDL_TYPE_LINK_4C, "Link 4C" }, + {DIS_TDL_TYPE_TIBS, "TIBS" }, + {DIS_TDL_TYPE_ATL, "ATL" }, + {DIS_TDL_TYPE_CONSTANT_SRC, "Constant Source" }, + {DIS_TDL_TYPE_ABBRV_CC, "Abbreviated Command and Control" }, + {DIS_TDL_TYPE_MILSTAR, "MILSTAR" }, + {DIS_TDL_TYPE_ATHS, "ATHS" }, + {DIS_TDL_TYPE_OTHGOLD, "OTHGOLD" }, + {DIS_TDL_TYPE_TACELINT, "TACELINT" }, + {DIS_TDL_TYPE_AWW13, "Weapons Data Link (AWW-13)" }, + {DIS_TDL_TYPE_ABBRV_CC_2, "Abbreviated Command and Control" }, + {DIS_TDL_TYPE_EPLRS, "Enhanced Position Location Reporting System (EPLRS)" }, + {DIS_TDL_TYPE_PLRS, "Position Location Reporting System (PLRS)" }, + {DIS_TDL_TYPE_SINCGARS, "SINCGARS" }, + {DIS_TDL_TYPE_HAVE_QUICK_I, "Have Quick I" }, + {DIS_TDL_TYPE_HAVE_QUICK_II, "Have Quick II" }, + {DIS_TDL_TYPE_HAVE_QUICK_IIA, "Have Quick IIA (Saturn)" }, + {DIS_TDL_TYPE_IFDL1, "Intra-Flight Data Link 1" }, + {DIS_TDL_TYPE_IFDL2, "Intra-Flight Data Link 2" }, + {DIS_TDL_TYPE_IDM, "Improved Data Modem (IDM)" }, + {DIS_TDL_TYPE_AFAPD, "Air Force Application Program Development (AFAPD)" }, + {DIS_TDL_TYPE_CEC, "Cooperative Engagement Capability (CEC)" }, + {DIS_TDL_TYPE_FAAD_FDL, "Forward Area Air Defense (FAAD) Data Link (FDL)" }, + {DIS_TDL_TYPE_GBDL, "Ground Based Data Link (GBDL)" }, + {DIS_TDL_TYPE_IVIS, "Intra Vehicular Info System (IVIS)" }, + {DIS_TDL_TYPE_MTS, "Marine Tactical System (MTS)" }, + {DIS_TDL_TYPE_TACFIRE, "Tactical Fire Direction System (TACFIRE)" }, + {DIS_TDL_TYPE_IBS, "Integrated Broadcast Service (IBS)" }, + {DIS_TDL_TYPE_ABIT, "Airborne Information Transfer (ABIT)" }, + {DIS_TDL_TYPE_ATARS, "Advanced Tactical Airborne Reconnaissance System (ATARS) Data Link" }, + {DIS_TDL_TYPE_BGPHES, "Battle Group Passive Horizon Extension System (BGPHES) Data Link" }, + {DIS_TDL_TYPE_CHBDL, "Common High Bandwidth Data Link (CHBDL)" }, + {DIS_TDL_TYPE_GUARDRAIL_IDL, "Guardrail Interoperable Data Link (IDL)" }, + {DIS_TDL_TYPE_GUARDRAIL_CSS1, "Guardrail Common Sensor System One (CSS1) Data Link" }, + {DIS_TDL_TYPE_GUARDRAIL_CSS2, "Guardrail Common Sensor System Two (CSS2) Data Link" }, + {DIS_TDL_TYPE_GUARDRAIL_CSS2_MRDL, "Guardrail CSS2 Multi-Role Data Link (MRDL)" }, + {DIS_TDL_TYPE_GUARDRAIL_CSS2_DASR, "Guardrail CSS2 Direct Air to Satellite Relay (DASR) Data Link" }, + {DIS_TDL_TYPE_LOS_TETHER, "Line of Sight (LOS) Data Link Implementation (LOS tether)" }, + {DIS_TDL_TYPE_LWCDL, "Lightweight CDL (LWCDL)" }, + {DIS_TDL_TYPE_L_52M, "L-52M (SR-71)" }, + {DIS_TDL_TYPE_RR_ROWL_DL, "Rivet Reach/Rivet Owl Data Link" }, + {DIS_TDL_TYPE_SENIOR_SPAN, "Senior Span" }, + {DIS_TDL_TYPE_SENIOR_SPUR, "Senior Spur" }, + {DIS_TDL_TYPE_SENIOR_STRETCH, "Senior Stretch." }, + {DIS_TDL_TYPE_SENIOR_YEAR_IDL, "Senior Year Interoperable Data Link (IDL)" }, + {DIS_TDL_TYPE_SPACE_CDL, "Space CDL" }, + {DIS_TDL_TYPE_TR_1_MIST_ADL, "TR-1 mode MIST Airborne Data Link" }, + {DIS_TDL_TYPE_KU_BAND_SATCOM, "Ku-band SATCOM Data Link Implementation (UAV)" }, + {DIS_TDL_TYPE_MECDL, "Mission Equipment Control Data link (MECDL)" }, + {DIS_TDL_TYPE_RADAR_DATA_TSDL, "Radar Data Transmitting Set Data Link" }, + {DIS_TDL_TYPE_SCDL, "Surveillance and Control Data Link (SCDL)" }, + {DIS_TDL_TYPE_TACTICAL_UAV_VIDEO, "Tactical UAV Video" }, + {DIS_TDL_TYPE_UHF_SATCOM, "UHF SATCOM Data Link Implementation (UAV)" }, + {DIS_TDL_TYPE_TCDL, "Tactical Common Data Link (TCDL)" }, + {DIS_TDL_TYPE_LLAPI, "Low Level Air Picture Interface (LLAPI)" }, + {DIS_TDL_TYPE_WEAPONS_DL, "Weapons Data Link (AGM-130)" }, + {DIS_TDL_TYPE_GC3, "GC3" }, + {DIS_TDL_TYPE_LINK16_STD, "Link 16 Standardized Format (JTIDS/MIDS/TADIL J)" }, + {DIS_TDL_TYPE_LINK16_EDR, "Link 16 Enhanced Data Rate (EDR JTIDS/MIDS/TADIL-J)" }, + {DIS_TDL_TYPE_JTIDS_NET_DATA_LOAD, "JTIDS/MIDS Net Data Load (TIMS/TOMS)" }, + {DIS_TDL_TYPE_LINK22, "Link 22" }, + {DIS_TDL_TYPE_AFIWC_IADS, "AFIWC IADS Communications Links" }, + { 0, NULL } +}; + +static const value_string DIS_PDU_RadioCategory_Strings[] = +{ + {0, "Other" }, + {1, "Voice Transmission/Reception" }, + {2, "Data Link Transmission/Reception" }, + {3, "Voice and Data Link Transmission/Reception" }, + {4, "Instrumented Landing System (ILS) Glideslope Transmitter" }, + {5, "Instrumented Landing System (ILS) Localizer Transmitter" }, + {6, "Instrumented Landing System (ILS) Outer Marker Beacon" }, + {7, "Instrumented Landing System (ILS) Middle Marker Beacon" }, + {8, "Instrumented Landing System (ILS) Inner Marker Beacon" }, + {9, "Instrumented Landing System (ILS) Receiver (Platform Radio)" }, + {10, "Tactical Air Navigation (TACAN) Transmitter (Ground Fixed Equipment)" }, + {11, "Tactical Air Navigation (TACAN) Receiver (Moving Platform Equipment)" }, + {12, "Tactical Air Navigation (TACAN) Transmitter/Receiver (Moving Platform Equipment)" }, + {13, "Variable Omni-Ranging (VOR) Transmitter (Ground Fixed Equipment)" }, + {14, "Variable Omni-Ranging (VOR) with Distance Measuring Equipment (DME) Transmitter (Ground Fixed Equipment)" }, + {15, "Combined VOR/ILS Receiver (Moving Platform Equipment)" }, + {16, "Combined VOR & TACAN (VORTAC) Transmitter" }, + {17, "Non-Directional Beacon (NDB) Transmitter" }, + {18, "Non-Directional Beacon (NDB) Receiver" }, + {19, "Non-Directional Beacon (NDB) with Distance Measuring Equipment (DME) Transmitter" }, + {20, "Distance Measuring Equipment (DME)" }, + {0, NULL } +}; + +static const value_string DIS_PDU_NomenclatureVersion_Strings[] = +{ + {0, "Other" }, + {1, "Joint Electronics Type Designation System (JETDS) Nomenclature (AN/ per Mil-STD-196)" }, + {2, "Manufacturer Designation" }, + {3, "National Designation" }, + {0, NULL } +}; + +static const value_string DIS_PDU_Nomenclature_Strings[] = +{ + {0, "Other" }, + {1, "AN/ARN-118" }, + {2, "AN/ARN-139" }, + {3, "Generic Ground Fixed Transmitter" }, + {4, "Generic Ground Mobile Transmitter" }, + {0, NULL } +}; + +static const value_string DIS_PDU_RadioTransmitState_Strings[] = +{ + {0, "Off" }, + {1, "On but not transmitting" }, + {2, "On and transmitting" }, + {0, NULL } +}; + +static const value_string DIS_PDU_RadioInputSource_Strings[] = +{ + {0, "Other" }, + {1, "Pilot" }, + {2, "Copilot" }, + {3, "First Officer" }, + {4, "Driver" }, + {5, "Loader" }, + {6, "Gunner" }, + {7, "Commander" }, + {8, "Digital Data Device" }, + {9, "Intercom" }, + {0, NULL } +}; + +typedef enum +{ + DIS_PATTERN_OMNI_DIRECTIONAL = 0, + DIS_PATTERN_BEAM = 1, + DIS_PATTERN_SPHERICAL_HARMONIC = 2 +} DIS_PDU_AntennaPattern_Type; + +static const value_string DIS_PDU_AntennaPatternType_Strings[] = +{ + {DIS_PATTERN_OMNI_DIRECTIONAL, "Omni-directional" }, + {DIS_PATTERN_BEAM, "Beam" }, + {DIS_PATTERN_SPHERICAL_HARMONIC, "Spherical harmonic" }, + {0, NULL } +}; + +typedef enum +{ + DIS_MAJOR_MOD_OTHER = 0, + DIS_MAJOR_MOD_AMPLITUDE = 1, + DIS_MAJOR_MOD_AMPLITUDE_AND_ANGLE = 2, + DIS_MAJOR_MOD_ANGLE = 3, + DIS_MAJOR_MOD_COMBINATION = 4, + DIS_MAJOR_MOD_PULSE = 5, + DIS_MAJOR_MOD_UNMODULATED = 6, + DIS_MAJOR_MOD_CPSM = 7 +} DIS_PDU_MAJOR_MODULATION_TYPE; + +static const value_string DIS_PDU_MajorModulation_Strings[] = +{ + {DIS_MAJOR_MOD_OTHER, "Other" }, + {DIS_MAJOR_MOD_AMPLITUDE, "Amplitude" }, + {DIS_MAJOR_MOD_AMPLITUDE_AND_ANGLE, "Amplitude and Angle" }, + {DIS_MAJOR_MOD_ANGLE, "Angle" }, + {DIS_MAJOR_MOD_COMBINATION, "Combination" }, + {DIS_MAJOR_MOD_PULSE, "Pulse" }, + {DIS_MAJOR_MOD_UNMODULATED, "Unmodulated" }, + {DIS_MAJOR_MOD_CPSM, "Carrier Phase Shift Modulation (CPSM)" }, + {0, NULL } +}; + +static const range_string DIS_PDU_Link16_CVLL_Strings[] = { + { 0, 127, "Crypto Variable" }, + { 255, 255, "NO STATEMENT" }, + { 0, 0, NULL } +}; + +typedef enum +{ + DIS_MESSAGE_TYPE_JTIDS_HEADER_MESSAGES = 0, + DIS_MESSAGE_TYPE_RTT_A_B, + DIS_MESSAGE_TYPE_RTT_REPLY, + DIS_MESSAGE_TYPE_JTIDS_VOICE_CVSD, + DIS_MESSAGE_TYPE_JTIDS_VOICE_LPC10, + DIS_MESSAGE_TYPE_JTIDS_VOICE_LPC12, + DIS_MESSAGE_TYPE_JTIDS_LET, + DIS_MESSAGE_TYPE_VMF +} DIS_PDU_MessageType; + +static const value_string DIS_PDU_Link16_MessageType_Strings[] = +{ + { DIS_MESSAGE_TYPE_JTIDS_HEADER_MESSAGES, "JTIDS Header/Messages" }, + { DIS_MESSAGE_TYPE_RTT_A_B, "RTT A/B" }, + { DIS_MESSAGE_TYPE_RTT_REPLY, "RTT Reply" }, + { DIS_MESSAGE_TYPE_JTIDS_VOICE_CVSD, "JTIDS Voice CVSD" }, + { DIS_MESSAGE_TYPE_JTIDS_VOICE_LPC10, "JTIDS Voice LPC10" }, + { DIS_MESSAGE_TYPE_JTIDS_VOICE_LPC12, "JTIDS Voice LPC12" }, + { DIS_MESSAGE_TYPE_JTIDS_LET, "JTIDS LET" }, + { DIS_MESSAGE_TYPE_VMF, "VMF" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_EMISSION_FUNCTION_OTHER = 0, + DIS_EMISSION_FUNCTION_MULTI_FUNCTION = 1, + DIS_EMISSION_FUNCTION_EARLY_WARNING_SURVEILLANCE = 2, + DIS_EMISSION_FUNCTION_HEIGHT_FINDING = 3, + DIS_EMISSION_FUNCTION_FIRE_CONTROL = 4, + DIS_EMISSION_FUNCTION_ACQUISITION_DETECTION = 5, + DIS_EMISSION_FUNCTION_TRACKING = 6, + DIS_EMISSION_FUNCTION_GUIDANCE_ILLUMINATION = 7, + DIS_EMISSION_FUNCTION_FIRING_POINT_LAUNCH_POINT_LOCATION = 8, + DIS_EMISSION_FUNCTION_RANGING = 9, + DIS_EMISSION_FUNCTION_RADAR_ALTIMETER = 10, + DIS_EMISSION_FUNCTION_IMAGING = 11, + DIS_EMISSION_FUNCTION_MOTION_DETECTION = 12, + DIS_EMISSION_FUNCTION_NAVIGATION = 13, + DIS_EMISSION_FUNCTION_WEATHER_METEROLOGICAL = 14, + DIS_EMISSION_FUNCTION_INSTRUMENTATION = 15, + DIS_EMISSION_FUNCTION_IDENTIFICATION_CLASSIFICATION_INCLUDING_IFF = 16, + DIS_EMISSION_FUNCTION_AAA_FIRE_CONTROL = 17, + DIS_EMISSION_FUNCTION_AIR_SEARCH_BOMB = 18, + DIS_EMISSION_FUNCTION_AIR_INTERCEPT = 19, + DIS_EMISSION_FUNCTION_ALTIMETER = 20, + DIS_EMISSION_FUNCTION_AIR_MAPPING = 21, + DIS_EMISSION_FUNCTION_AIR_TRAFFIC_CONTROL = 22, + DIS_EMISSION_FUNCTION_BEACON = 23, + DIS_EMISSION_FUNCTION_BATTLEFIELD_SURVEILLANCE = 24, + DIS_EMISSION_FUNCTION_GROUND_CONTROL_APPROACH = 25, + DIS_EMISSION_FUNCTION_GROUND_CONTROL_INTERCEPT = 26, + DIS_EMISSION_FUNCTION_COASTAL_SURVEILLANCE = 27, + DIS_EMISSION_FUNCTION_DECOY_MIMIC = 28, + DIS_EMISSION_FUNCTION_DATA_TRANSMISSION = 29, + DIS_EMISSION_FUNCTION_EARTH_SURVEILLANCE = 30, + DIS_EMISSION_FUNCTION_GUN_LAY_BEACON = 31, + DIS_EMISSION_FUNCTION_GROUND_MAPPING = 32, + DIS_EMISSION_FUNCTION_HARBOR_SURVEILLANCE = 33, + /* enum 34 deleted */ + DIS_EMISSION_FUNCTION_ILS = 35, + DIS_EMISSION_FUNCTION_IONOSPHERIC_SOUND = 36, + DIS_EMISSION_FUNCTION_INTERROGATOR = 37, + DIS_EMISSION_FUNCTION_BARRAGE_JAMMING = 38, + DIS_EMISSION_FUNCTION_CLICK_JAMMING = 39, + /* enum 40 deleted */ + DIS_EMISSION_FUNCTION_FREQUENCY_SWEPT_JAMMING = 41, + DIS_EMISSION_FUNCTION_JAMMING = 42, + /* enum 43 deleted */ + DIS_EMISSION_FUNCTION_PULSED_JAMMING = 44, + DIS_EMISSION_FUNCTION_REPEATER_JAMMING = 45, + DIS_EMISSION_FUNCTION_SPOT_NOISE_JAMMING = 46, + DIS_EMISSION_FUNCTION_MISSILE_ACQUISITION = 47, + DIS_EMISSION_FUNCTION_MISSILE_DOWNLINK = 48, + /* enum 49 deleted */ + DIS_EMISSION_FUNCTION_SPACE = 50, + DIS_EMISSION_FUNCTION_SURFACE_SEARCH = 51, + DIS_EMISSION_FUNCTION_SHELL_TRACKING = 52, + /* enums 52-55 unassigned */ + DIS_EMISSION_FUNCTION_TELEVISION = 56, + DIS_EMISSION_FUNCTION_UNKNOWN = 57, + DIS_EMISSION_FUNCTION_VIDEO_REMOTING = 58, + DIS_EMISSION_FUNCTION_EXPERIMENTAL_OR_TRAINING = 59, + DIS_EMISSION_FUNCTION_MISSILE_GUIDANCE = 60, + DIS_EMISSION_FUNCTION_MISSILE_HOMING = 61, + DIS_EMISSION_FUNCTION_MISSILE_TRACKING = 62, + /* enum 63 unassigned */ + DIS_EMISSION_FUNCTION_JAMMING_NOISE = 64, + DIS_EMISSION_FUNCTION_JAMMING_DECEPTION = 65, + /* enum 66 deleted */ + /* enums 67-70 unassigned */ + DIS_EMISSION_FUNCTION_NAVIGATION_DISTANCE_MEASURING_EQUIPMENT = 71, + DIS_EMISSION_FUNCTION_TERRAIN_FOLLOWING = 72, + DIS_EMISSION_FUNCTION_WEATHER_AVOIDANCE = 73, + DIS_EMISSION_FUNCTION_PROXIMITY_FUSE = 74, + /* enum 75 deleted */ + DIS_EMISSION_FUNCTION_RADIOSONDE = 76, + DIS_EMISSION_FUNCTION_SONOBUOY = 77, + DIS_EMISSION_FUNCTION_BATHYTHERMAL_SENSOR = 78, + DIS_EMISSION_FUNCTION_TOWED_COUNTER_MEASURE = 79, + /* enums 80-95 unassigned */ + DIS_EMISSION_FUNCTION_WEAPON_NON_LETHAL = 96, + DIS_EMISSION_FUNCTION_WEAPON_LETHAL = 97 +} DIS_PDU_Emission_Function; + +static const value_string DIS_PDU_EmissionFunction_Strings[] = +{ + {DIS_EMISSION_FUNCTION_OTHER, "Other" }, + {DIS_EMISSION_FUNCTION_MULTI_FUNCTION, "Multi-Function" }, + {DIS_EMISSION_FUNCTION_EARLY_WARNING_SURVEILLANCE, + "Early Warning/Surveillance" }, + {DIS_EMISSION_FUNCTION_HEIGHT_FINDING, "Height Finding" }, + {DIS_EMISSION_FUNCTION_FIRE_CONTROL, "Fire Control" }, + {DIS_EMISSION_FUNCTION_ACQUISITION_DETECTION, "Acquisition/Detection" }, + {DIS_EMISSION_FUNCTION_TRACKING, "Tracking" }, + {DIS_EMISSION_FUNCTION_GUIDANCE_ILLUMINATION, "Guidance/Illumination" }, + {DIS_EMISSION_FUNCTION_FIRING_POINT_LAUNCH_POINT_LOCATION, + "Firing point/launch point location" }, + {DIS_EMISSION_FUNCTION_RANGING, "Ranging" }, + {DIS_EMISSION_FUNCTION_RADAR_ALTIMETER, "Radar Altimeter" }, + {DIS_EMISSION_FUNCTION_IMAGING, "Imaging" }, + {DIS_EMISSION_FUNCTION_MOTION_DETECTION, "Motion Detection" }, + {DIS_EMISSION_FUNCTION_NAVIGATION, "Navigation" }, + {DIS_EMISSION_FUNCTION_WEATHER_METEROLOGICAL, "Weather / Meterological"}, + {DIS_EMISSION_FUNCTION_INSTRUMENTATION, "Instrumentation" }, + {DIS_EMISSION_FUNCTION_IDENTIFICATION_CLASSIFICATION_INCLUDING_IFF, + "Identification/Classification (including IFF)" }, + {DIS_EMISSION_FUNCTION_AAA_FIRE_CONTROL, + "AAA (Anti-Aircraft Artillery) Fire Control" }, + {DIS_EMISSION_FUNCTION_AIR_SEARCH_BOMB, "Air Search/Bomb" }, + {DIS_EMISSION_FUNCTION_AIR_INTERCEPT, "Air Intercept" }, + {DIS_EMISSION_FUNCTION_ALTIMETER, "Altimeter" }, + {DIS_EMISSION_FUNCTION_AIR_MAPPING, "Air Mapping" }, + {DIS_EMISSION_FUNCTION_AIR_TRAFFIC_CONTROL, "Air Traffic Control" }, + {DIS_EMISSION_FUNCTION_BEACON, "Beacon" }, + {DIS_EMISSION_FUNCTION_BATTLEFIELD_SURVEILLANCE, + "Battlefield Surveillance" }, + {DIS_EMISSION_FUNCTION_GROUND_CONTROL_APPROACH, + "Ground Control Approach" }, + {DIS_EMISSION_FUNCTION_GROUND_CONTROL_INTERCEPT, + "Ground Control Intercept" }, + {DIS_EMISSION_FUNCTION_COASTAL_SURVEILLANCE, "Coastal Surveillance" }, + {DIS_EMISSION_FUNCTION_DECOY_MIMIC, "Decoy/Mimic" }, + {DIS_EMISSION_FUNCTION_DATA_TRANSMISSION, "Data Transmission" }, + {DIS_EMISSION_FUNCTION_EARTH_SURVEILLANCE, "Earth Surveillance" }, + {DIS_EMISSION_FUNCTION_GUN_LAY_BEACON, "Gun Lay Beacon" }, + {DIS_EMISSION_FUNCTION_GROUND_MAPPING, "Ground Mapping" }, + {DIS_EMISSION_FUNCTION_HARBOR_SURVEILLANCE, "Harbor Surveillance" }, + {DIS_EMISSION_FUNCTION_ILS, + "ILS (Instrument Landing System)" }, + {DIS_EMISSION_FUNCTION_IONOSPHERIC_SOUND, "Ionospheric Sound" }, + {DIS_EMISSION_FUNCTION_INTERROGATOR, "Interrogator" }, + {DIS_EMISSION_FUNCTION_BARRAGE_JAMMING, "Barrage Jamming" }, + {DIS_EMISSION_FUNCTION_CLICK_JAMMING, "Click Jamming" }, + {DIS_EMISSION_FUNCTION_FREQUENCY_SWEPT_JAMMING, + "Frequency Swept Jamming" }, + {DIS_EMISSION_FUNCTION_JAMMING, "Jamming" }, + {DIS_EMISSION_FUNCTION_PULSED_JAMMING, "Pulsed Jamming" }, + {DIS_EMISSION_FUNCTION_REPEATER_JAMMING, "Repeater Jamming" }, + {DIS_EMISSION_FUNCTION_SPOT_NOISE_JAMMING, "Spot Noise Jamming" }, + {DIS_EMISSION_FUNCTION_MISSILE_ACQUISITION, "Missile Acquisition" }, + {DIS_EMISSION_FUNCTION_MISSILE_DOWNLINK, "Missile Downlink" }, + {DIS_EMISSION_FUNCTION_SPACE, "Space" }, + {DIS_EMISSION_FUNCTION_SURFACE_SEARCH, "Surface Search" }, + {DIS_EMISSION_FUNCTION_SHELL_TRACKING, "Shell Tracking" }, + {DIS_EMISSION_FUNCTION_TELEVISION, "Television" }, + {DIS_EMISSION_FUNCTION_UNKNOWN, "Unknown" }, + {DIS_EMISSION_FUNCTION_VIDEO_REMOTING, "Video Remoting" }, + {DIS_EMISSION_FUNCTION_EXPERIMENTAL_OR_TRAINING, + "Experimental or training" }, + {DIS_EMISSION_FUNCTION_MISSILE_GUIDANCE, "Missile Guidance" }, + {DIS_EMISSION_FUNCTION_MISSILE_HOMING, "Missile Homing" }, + {DIS_EMISSION_FUNCTION_MISSILE_TRACKING, "Missile Tracking" }, + {DIS_EMISSION_FUNCTION_JAMMING_NOISE, "Jamming, noise" }, + {DIS_EMISSION_FUNCTION_JAMMING_DECEPTION, "Jamming, deception" }, + {DIS_EMISSION_FUNCTION_NAVIGATION_DISTANCE_MEASURING_EQUIPMENT, + "Navigation/Distance Measuring Equipment" }, + {DIS_EMISSION_FUNCTION_TERRAIN_FOLLOWING, "Terrain Following" }, + {DIS_EMISSION_FUNCTION_WEATHER_AVOIDANCE, "Weather Avoidance" }, + {DIS_EMISSION_FUNCTION_PROXIMITY_FUSE, "Proximity Fuse" }, + {DIS_EMISSION_FUNCTION_RADIOSONDE, "Radiosonde" }, + {DIS_EMISSION_FUNCTION_SONOBUOY, "Sonobuoy" }, + {DIS_EMISSION_FUNCTION_BATHYTHERMAL_SENSOR, "Bathythermal Sensor" }, + {DIS_EMISSION_FUNCTION_TOWED_COUNTER_MEASURE, "Towed Counter Measure"}, + {DIS_EMISSION_FUNCTION_WEAPON_NON_LETHAL, "Weapon, non-lethal" }, + {DIS_EMISSION_FUNCTION_WEAPON_LETHAL, "Weapon, lethal" }, + {0, NULL } +}; + + +typedef enum +{ + DIS_BEAM_FUNCTION_OTHER = 0, + DIS_BEAM_FUNCTION_SEARCH = 1, + DIS_BEAM_FUNCTION_HEIGHT_FINDER = 2, + DIS_BEAM_FUNCTION_ACQUISITION = 3, + DIS_BEAM_FUNCTION_TRACKING = 4, + DIS_BEAM_FUNCTION_ACQUISITION_TRACKING = 5, + DIS_BEAM_FUNCTION_COMMAND_GUIDANCE = 6, + DIS_BEAM_FUNCTION_ILLUMINATION = 7, + DIS_BEAM_FUNCTION_RANGE_ONLY_RADAR = 8, + DIS_BEAM_FUNCTION_MISSILE_BEACON = 9, + DIS_BEAM_FUNCTION_MISSILE_FUZE = 10, + DIS_BEAM_FUNCTION_ACTIVE_RADAR_MISSILE_SEEKER = 11, + DIS_BEAM_FUNCTION_JAMMER = 12, + DIS_BEAM_FUNCTION_IFF = 13, + DIS_BEAM_FUNCTION_NAVIGATIONAL_WEATHER = 14, + DIS_BEAM_FUNCTION_METEOROLOGICAL = 15, + DIS_BEAM_FUNCTION_DATA_TRANSMISSION = 16, + DIS_BEAM_FUNCTION_NAVIGATIONAL_DIRECTIONAL_BEACON = 17 +} DIS_PDU_Beam_Function; + +static const value_string DIS_PDU_BeamFunction_Strings[] = +{ + {DIS_BEAM_FUNCTION_OTHER, "Other" }, + {DIS_BEAM_FUNCTION_SEARCH, "Search" }, + {DIS_BEAM_FUNCTION_HEIGHT_FINDER, "Height finder" }, + {DIS_BEAM_FUNCTION_ACQUISITION, "Acquisition" }, + {DIS_BEAM_FUNCTION_TRACKING, "Tracking" }, + {DIS_BEAM_FUNCTION_ACQUISITION_TRACKING,"Acquisition and tracking" }, + {DIS_BEAM_FUNCTION_COMMAND_GUIDANCE, "Command guidance" }, + {DIS_BEAM_FUNCTION_ILLUMINATION, "Illumination" }, + {DIS_BEAM_FUNCTION_RANGE_ONLY_RADAR, "Range only radar" }, + {DIS_BEAM_FUNCTION_MISSILE_BEACON, "Missile beacon" }, + {DIS_BEAM_FUNCTION_MISSILE_FUZE, "Missile fuze" }, + {DIS_BEAM_FUNCTION_ACTIVE_RADAR_MISSILE_SEEKER, + "Active radar missile seeker" }, + {DIS_BEAM_FUNCTION_JAMMER, "Jammer" }, + {DIS_BEAM_FUNCTION_IFF, "IFF" }, + {DIS_BEAM_FUNCTION_NAVIGATIONAL_WEATHER,"Navigational/Weather" }, + {DIS_BEAM_FUNCTION_METEOROLOGICAL, "Meteorological" }, + {DIS_BEAM_FUNCTION_DATA_TRANSMISSION, "Data transmission" }, + {DIS_BEAM_FUNCTION_NAVIGATIONAL_DIRECTIONAL_BEACON, + "Navigational directional beacon" }, + {0, NULL } +}; + +static const value_string DIS_PDU_DetailModulationAmplitude_Strings[] = +{ + {0, "Other" }, + {1, "AFSK (Audio Frequency Shift Keying)" }, + {2, "AM (Amplitude Modulation)" }, + {3, "CW (Continuous Wave Modulation)" }, + {4, "DSB (Double Sideband)" }, + {5, "ISB (Independent Sideband)" }, + {6, "LSB (Single Band Suppressed Carrier, Lower Sideband Mode)" }, + {7, "SSB-Full (Single Sideband Full Carrier)" }, + {8, "SSB-Reduc (Single Band Reduced Carrier)" }, + {9, "USB (Single Band Suppressed Carrier, Upper Sideband Mode)" }, + {10, "VSB (Vestigial Sideband)" }, + {0, NULL } +}; + +static const value_string DIS_PDU_DetailModulationAmpAndAngle_Strings[] = +{ + {0, "Other" }, + {1, "Amplitude and Angle" }, + {0, NULL } +}; + +static const value_string DIS_PDU_DetailModulationAngle_Strings[] = +{ + {0, "Other" }, + {1, "FM (Frequency Modulation)" }, + {2, "FSK (Frequency Shift Keying)" }, + {3, "PM (Phase Modulation)" }, + {0, NULL } +}; + +static const value_string DIS_PDU_DetailModulationCombination_Strings[] = +{ + {0, "Other" }, + {1, "Amplitude-Angle-Pulse" }, + {0, NULL } +}; + +static const value_string DIS_PDU_DetailModulationPulse_Strings[] = +{ + {0, "Other" }, + {1, "Pulse" }, + {2, "X Band TACAN Pulse" }, + {3, "Y Band TACAN Pulse" }, + {0, NULL } +}; + +static const value_string DIS_PDU_DetailModulationUnmodulated_Strings[] = +{ + {0, "Other" }, + {1, "Continuous Wave emission of an unmodulated carrier" }, + {0, NULL } +}; + +static const value_string DIS_PDU_DetailModulationCPSM_Strings[] = +{ + {0, "Other" }, + {0, NULL } +}; + +static const value_string DIS_PDU_ModParamMsgStart_Strings[] = +{ + {0, "Not start of message" }, + {1, "Start of Message" }, + {0, NULL } +}; + +static const value_string DIS_PDU_ModParamClrChannel_Strings[] = +{ + {0, "Not clear channel" }, + {1, "Clear channel" }, + {0, NULL } +}; + +static const value_string DIS_PDU_TSAllocationFidelity_Strings[] = +{ + {0, "Time Slot Allocation Fidelity Level 0" }, + {1, "Time Slot Allocation Fidelity Level 1" }, + {2, "Time Slot Allocation Fidelity Level 2" }, + {3, "Time Slot Allocation Fidelity Level 3" }, + {4, "Time Slot Allocation Fidelity Level 4" }, + {0, NULL } +}; + +static const value_string DIS_PDU_TerminalPrimaryMode_Strings[] = +{ + {1, "NTR" }, + {2, "JTIDS Unit Participant" }, + {0, NULL } +}; + +static const value_string DIS_PDU_TerminalSecondaryMode_Strings[] = +{ + {0, "None" }, + {1, "Net Position Reference" }, + {2, "Primary Navigation Controller" }, + {3, "Secondary Navigation Controller" }, + {0, NULL } +}; + +/* http://discussions.sisostds.org/threadview.aspx?fid=18&threadid=53172 */ +static const value_string DIS_PDU_ModParamSyncState_Strings[] = +{ + {2, "Coarse Synchronization" }, + {3, "Fine Synchronization" }, + {0, NULL } +}; + +typedef enum +{ + DIS_SYSTEM_MOD_OTHER = 0, + DIS_SYSTEM_MOD_GENERIC = 1, + DIS_SYSTEM_MOD_HQ = 2, + DIS_SYSTEM_MOD_HQII = 3, + DIS_SYSTEM_MOD_HQIIA = 4, + DIS_SYSTEM_MOD_SINCGARS = 5, + DIS_SYSTEM_MOD_CCTT_SINCGARS = 6, + DIS_SYSTEM_MOD_EPLRS = 7, + DIS_SYSTEM_MOD_JTIDS_MIDS = 8 +} DIS_PDU_SYSTEM_MODULATION_TYPE; + +static const value_string DIS_PDU_SystemModulation_Strings[] = +{ + {DIS_SYSTEM_MOD_OTHER, "Other" }, + {DIS_SYSTEM_MOD_GENERIC, "Generic" }, + {DIS_SYSTEM_MOD_HQ, "HQ" }, + {DIS_SYSTEM_MOD_HQII, "HQII" }, + {DIS_SYSTEM_MOD_HQIIA, "HQIIA" }, + {DIS_SYSTEM_MOD_SINCGARS, "SINCGARS" }, + {DIS_SYSTEM_MOD_CCTT_SINCGARS, "CCTT SINCGARS" }, + {DIS_SYSTEM_MOD_EPLRS, "EPLRS (Enhanced Position Location Reporting System)" }, + {DIS_SYSTEM_MOD_JTIDS_MIDS, "JTIDS/MIDS" }, + {0, NULL } +}; + +static const value_string DIS_PDU_CryptoSystem_Strings[] = +{ + {0, "Other" }, + {1, "KY-28" }, + {2, "VINSON (KY-57, KY-58, SINCGARS ICOM)" }, + {3, "Narrow Spectrum Secure Voice (NSVE)" }, + {4, "Wide Spectrum Secure Voice (WSVE)" }, + {0, NULL } +}; + +typedef enum +{ + DIS_ACKNOWLEDGE_FLAG_CREATE_ENTITY = 1, + DIS_ACKNOWLEDGE_FLAG_REMOVE_ENTITY = 2, + DIS_ACKNOWLEDGE_FLAG_START_RESUME = 3, + DIS_ACKNOWLEDGE_FLAG_STOP_FREEZE = 4, + DIS_ACKNOWLEDGE_FLAG_TRANSFER_CONTROL_REQUEST = 5 +} DIS_PDU_AcknowledgeFlag; + +static const value_string DIS_PDU_AcknowledgeFlag_Strings[] = +{ + { DIS_ACKNOWLEDGE_FLAG_CREATE_ENTITY, "Create Entity" }, + { DIS_ACKNOWLEDGE_FLAG_REMOVE_ENTITY, "Remove Entity" }, + { DIS_ACKNOWLEDGE_FLAG_START_RESUME, "Start Resume" }, + { DIS_ACKNOWLEDGE_FLAG_STOP_FREEZE, "Stop Freeze" }, + { DIS_ACKNOWLEDGE_FLAG_TRANSFER_CONTROL_REQUEST, "Transfer Control Request" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_ACTION_ID_OTHER = 0, + DIS_ACTION_ID_LOCAL_STORAGE_OF_THE_REQUESTED_INFORMATION = 1, + DIS_ACTION_ID_INFORM_SM_OF_EVENT_RAN_OUT_OF_AMMUNITION = 2, + DIS_ACTION_ID_INFORM_SM_OF_EVENT_KILLED_IN_ACTION = 3, + DIS_ACTION_ID_INFORM_SM_OF_EVENT_DAMAGE = 4, + DIS_ACTION_ID_INFORM_SM_OF_EVENT_MOBILITY_DISABLED = 5, + DIS_ACTION_ID_INFORM_SM_OF_EVENT_FIRE_DISABLED = 6, + DIS_ACTION_ID_INFORM_SM_OF_EVENT_RAN_OUT_OF_FUEL = 7, + DIS_ACTION_ID_RECALL_CHECKPOINT_DATA = 8, + DIS_ACTION_ID_RECALL_INITIAL_PARAMETERS = 9, + DIS_ACTION_ID_INITIATE_TETHER_LEAD = 10, + DIS_ACTION_ID_INITIATE_TETHER_FOLLOW = 11, + DIS_ACTION_ID_UNTETHER = 12, + DIS_ACTION_ID_INITIATE_SERVICE_STATION_RESUPPLY = 13, + DIS_ACTION_ID_INITIATE_TAILGATE_RESUPPLY = 14, + DIS_ACTION_ID_INITIATE_HITCH_LEAD = 15, + DIS_ACTION_ID_INITIATE_HITCH_FOLLOW = 16, + DIS_ACTION_ID_UNHITCH = 17, + DIS_ACTION_ID_MOUNT = 18, + DIS_ACTION_ID_DISMOUNT = 19, + DIS_ACTION_ID_START_DRC = 20, + DIS_ACTION_ID_STOP_DRC = 21, + DIS_ACTION_ID_DATA_QUERY = 22, + DIS_ACTION_ID_STATUS_REQUEST = 23, + DIS_ACTION_ID_SEND_OBJECT_STATE_DATA = 24, + DIS_ACTION_ID_RECONSTITUTE = 25, + DIS_ACTION_ID_LOCK_SITE_CONFIGURATION = 26, + DIS_ACTION_ID_UNLOCK_SITE_CONFIGURATION = 27, + DIS_ACTION_ID_UPDATE_SITE_CONFIGURATION = 28, + DIS_ACTION_ID_QUERY_SITE_CONFIGURATION = 29, + DIS_ACTION_ID_TETHERING_INFORMATION = 30, + DIS_ACTION_ID_MOUNT_INTENT = 31, + DIS_ACTION_ID_ACCEPT_SUBSCRIPTION = 33, + DIS_ACTION_ID_UNSUBSCRIBE = 34, + DIS_ACTION_ID_TELEPORT_ENTITY = 35, + DIS_ACTION_ID_CHANGE_AGGREGATE_STATE = 36, + DIS_ACTION_ID_REQUEST_START_PDU = 37, + DIS_ACTION_ID_WAKEUP_GET_READY_FOR_INITIALIZATION = 38, + DIS_ACTION_ID_INITIALIZE_INTERNAL_PARAMETERS = 39, + DIS_ACTION_ID_SEND_PLAN_DATA = 40, + DIS_ACTION_ID_SYNCHRONIZE_INTERNAL_CLOCKS = 41, + DIS_ACTION_ID_RUN = 42, + DIS_ACTION_ID_SAVE_INTERNAL_PARAMETERS = 43, + DIS_ACTION_ID_SIMULATE_MALFUNCTION = 44, + DIS_ACTION_ID_JOIN_EXERCISE = 45, + DIS_ACTION_ID_RESIGN_EXERCISE = 46, + DIS_ACTION_ID_TIME_ADVANCE = 47, + DIS_ACTION_ID_COMMAND_FROM_SIMULATOR = 48, + DIS_ACTION_ID_SLING_LOAD_CAPABILITY_REQUEST = 4300, + DIS_ACTION_ID_SLING_ATTACH_REQUEST = 4301, + DIS_ACTION_ID_SLING_RELEASE_REQUEST = 4302, + DIS_ACTION_ID_AIRMOUNT_MOUNT_REQUEST = 4303, + DIS_ACTION_ID_AIRMOUNT_DISMOUNT_REQUEST = 4304, + DIS_ACTION_ID_AIRMOUNT_INFO_REQUEST = 4305 +} DIS_PDU_ActionId; + +static const value_string DIS_PDU_ActionId_Strings[] = +{ + { DIS_ACTION_ID_OTHER, "Other" }, + { DIS_ACTION_ID_LOCAL_STORAGE_OF_THE_REQUESTED_INFORMATION, "LocalStorageOfTheRequestedInformation" }, + { DIS_ACTION_ID_INFORM_SM_OF_EVENT_RAN_OUT_OF_AMMUNITION, "InformSMofEventRanOutOfAmmunition" }, + { DIS_ACTION_ID_INFORM_SM_OF_EVENT_KILLED_IN_ACTION, "InformSMofEventKilledInAction" }, + { DIS_ACTION_ID_INFORM_SM_OF_EVENT_DAMAGE, "InformSMofEventDamage" }, + { DIS_ACTION_ID_INFORM_SM_OF_EVENT_MOBILITY_DISABLED, "InformSMofEventMobilityDisabled" }, + { DIS_ACTION_ID_INFORM_SM_OF_EVENT_FIRE_DISABLED, "InformSMofEventFireDisabled" }, + { DIS_ACTION_ID_INFORM_SM_OF_EVENT_RAN_OUT_OF_FUEL, "InformSMofEventRanOutOfFuel" }, + { DIS_ACTION_ID_RECALL_CHECKPOINT_DATA, "RecallCheckpointData" }, + { DIS_ACTION_ID_RECALL_INITIAL_PARAMETERS, "RecallInitialParameters" }, + { DIS_ACTION_ID_INITIATE_TETHER_LEAD, "InitiateTetherLead" }, + { DIS_ACTION_ID_INITIATE_TETHER_FOLLOW, "InitiateTetherFollow" }, + { DIS_ACTION_ID_UNTETHER, "Untether" }, + { DIS_ACTION_ID_INITIATE_SERVICE_STATION_RESUPPLY, "InitiateServiceStationResupply" }, + { DIS_ACTION_ID_INITIATE_TAILGATE_RESUPPLY, "InitiateTailgateResupply" }, + { DIS_ACTION_ID_INITIATE_HITCH_LEAD, "InitiateHitchLead" }, + { DIS_ACTION_ID_INITIATE_HITCH_FOLLOW, "InitiateHitchFollow" }, + { DIS_ACTION_ID_UNHITCH, "Unhitch" }, + { DIS_ACTION_ID_MOUNT, "Mount" }, + { DIS_ACTION_ID_DISMOUNT, "Dismount" }, + { DIS_ACTION_ID_START_DRC, "StartDRC" }, + { DIS_ACTION_ID_STOP_DRC, "StopDRC" }, + { DIS_ACTION_ID_DATA_QUERY, "DataQuery" }, + { DIS_ACTION_ID_STATUS_REQUEST, "StatusRequest" }, + { DIS_ACTION_ID_SEND_OBJECT_STATE_DATA, "SendObjectStateData" }, + { DIS_ACTION_ID_RECONSTITUTE, "Reconstitute" }, + { DIS_ACTION_ID_LOCK_SITE_CONFIGURATION, "LockSiteConfiguration" }, + { DIS_ACTION_ID_UNLOCK_SITE_CONFIGURATION, "UnlockSiteConfiguration" }, + { DIS_ACTION_ID_UPDATE_SITE_CONFIGURATION, "UpdateSiteConfiguration" }, + { DIS_ACTION_ID_QUERY_SITE_CONFIGURATION, "QuerySiteConfiguration" }, + { DIS_ACTION_ID_TETHERING_INFORMATION, "TetheringInformation" }, + { DIS_ACTION_ID_MOUNT_INTENT, "MountIntent" }, + { DIS_ACTION_ID_ACCEPT_SUBSCRIPTION, "AcceptSubscription" }, + { DIS_ACTION_ID_UNSUBSCRIBE, "Unsubscribe" }, + { DIS_ACTION_ID_TELEPORT_ENTITY, "TeleportEntity" }, + { DIS_ACTION_ID_CHANGE_AGGREGATE_STATE, "ChangeAggregateState" }, + { DIS_ACTION_ID_REQUEST_START_PDU, "RequestStartPdu" }, + { DIS_ACTION_ID_WAKEUP_GET_READY_FOR_INITIALIZATION, "WakeupGetReadyForInitialization" }, + { DIS_ACTION_ID_INITIALIZE_INTERNAL_PARAMETERS, "InitializeInternalParameters" }, + { DIS_ACTION_ID_SEND_PLAN_DATA, "SendPlanData" }, + { DIS_ACTION_ID_SYNCHRONIZE_INTERNAL_CLOCKS, "SynchronizeInternalClocks" }, + { DIS_ACTION_ID_RUN, "Run" }, + { DIS_ACTION_ID_SAVE_INTERNAL_PARAMETERS, "SaveInternalParameters" }, + { DIS_ACTION_ID_SIMULATE_MALFUNCTION, "SimulateMalfunction" }, + { DIS_ACTION_ID_JOIN_EXERCISE, "JoinExercise" }, + { DIS_ACTION_ID_RESIGN_EXERCISE, "ResignExercise" }, + { DIS_ACTION_ID_TIME_ADVANCE, "TimeAdvance" }, + { DIS_ACTION_ID_COMMAND_FROM_SIMULATOR, "CommandFromSimulator" }, + { DIS_ACTION_ID_SLING_LOAD_CAPABILITY_REQUEST, "SlingLoadCapabilityRequest" }, + { DIS_ACTION_ID_SLING_ATTACH_REQUEST, "SlingAttachRequest" }, + { DIS_ACTION_ID_SLING_RELEASE_REQUEST, "SlingReleaseRequest" }, + { DIS_ACTION_ID_AIRMOUNT_MOUNT_REQUEST, "AirmountMountRequest" }, + { DIS_ACTION_ID_AIRMOUNT_DISMOUNT_REQUEST, "AirmountDismountRequest" }, + { DIS_ACTION_ID_AIRMOUNT_INFO_REQUEST, "AirmountInfoRequest" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_APPLICATION_GENERAL_STATUS_UNKNOWN = 1, + DIS_APPLICATION_GENERAL_STATUS_FUNCTIONAL = 2, + DIS_APPLICATION_GENERAL_STATUS_DEGRADED_BUT_FUNCTIONAL = 3, + DIS_APPLICATION_GENERAL_STATUS_NOT_FUNCTIONAL = 4 +} DIS_PDU_ApplicationGeneralStatus; + +static const value_string DIS_PDU_ApplicationGeneralStatus_Strings[] = +{ + { DIS_APPLICATION_GENERAL_STATUS_UNKNOWN, "Unknown" }, + { DIS_APPLICATION_GENERAL_STATUS_FUNCTIONAL, "Functional" }, + { DIS_APPLICATION_GENERAL_STATUS_DEGRADED_BUT_FUNCTIONAL, "Degraded But Functional" }, + { DIS_APPLICATION_GENERAL_STATUS_NOT_FUNCTIONAL, "Not Functional" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_APPLICATION_STATUS_TYPE_NOT_SPECIFIED = 0, + DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_USER = 10, + DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_SYSTEM = 11, + DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_IO = 12, + DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_IDLE = 13, + DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_STEAL = 14, + DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_NICE = 15, + DIS_APPLICATION_STATUS_TYPE_MEMORY_FREE = 50, + DIS_APPLICATION_STATUS_TYPE_MEMORY_USED = 51, + DIS_APPLICATION_STATUS_TYPE_SWAP_FREE = 60, + DIS_APPLICATION_STATUS_TYPE_SWAP_USED = 61, + DIS_APPLICATION_STATUS_TYPE_SWAP_CACHED = 62, + DIS_APPLICATION_STATUS_TYPE_TRANSMITTED_PACKETS_SEC = 100, + DIS_APPLICATION_STATUS_TYPE_TRANSMITTED_BYTES_SEC = 101, + DIS_APPLICATION_STATUS_TYPE_RECEIVED_PACKETS_SEC = 110, + DIS_APPLICATION_STATUS_TYPE_RECEIVED_BYTES_SEC = 111, + DIS_APPLICATION_STATUS_TYPE_NICE_LEVEL = 150 +} DIS_PDU_ApplicationStatusType; + +static const value_string DIS_PDU_ApplicationStatusType_Strings[] = +{ + { DIS_APPLICATION_STATUS_TYPE_NOT_SPECIFIED, "Not Specified" }, + { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_USER, "Cpu Usage User" }, + { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_SYSTEM, "Cpu Usage System" }, + { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_IO, "Cpu Usage Io" }, + { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_IDLE, "Cpu Usage Idle" }, + { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_STEAL, "Cpu Usage Steal" }, + { DIS_APPLICATION_STATUS_TYPE_CPU_USAGE_NICE, "Cpu Usage Nice" }, + { DIS_APPLICATION_STATUS_TYPE_MEMORY_FREE, "Memory Free" }, + { DIS_APPLICATION_STATUS_TYPE_MEMORY_USED, "Memory Used" }, + { DIS_APPLICATION_STATUS_TYPE_SWAP_FREE, "Swap Free" }, + { DIS_APPLICATION_STATUS_TYPE_SWAP_USED, "Swap Used" }, + { DIS_APPLICATION_STATUS_TYPE_SWAP_CACHED, "Swap Cached" }, + { DIS_APPLICATION_STATUS_TYPE_TRANSMITTED_PACKETS_SEC, "Transmitted Packets Sec" }, + { DIS_APPLICATION_STATUS_TYPE_TRANSMITTED_BYTES_SEC, "Transmitted Bytes Sec" }, + { DIS_APPLICATION_STATUS_TYPE_RECEIVED_PACKETS_SEC, "Received Packets Sec" }, + { DIS_APPLICATION_STATUS_TYPE_RECEIVED_BYTES_SEC, "Received Bytes Sec" }, + { DIS_APPLICATION_STATUS_TYPE_NICE_LEVEL, "Nice Level" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_APPLICATION_TYPE_OTHER = 0, + DIS_APPLICATION_TYPE_RESOURCE_MANAGER = 1, + DIS_APPLICATION_TYPE_SIMULATION_MANAGER = 2, + DIS_APPLICATION_TYPE_GATEWAY = 3, + DIS_APPLICATION_TYPE_STEALTH = 4, + DIS_APPLICATION_TYPE_TACTICAL_INTERNET_INTERFACE = 5 +} DIS_PDU_ApplicationType; + +static const value_string DIS_PDU_ApplicationType_Strings[] = +{ + { DIS_APPLICATION_TYPE_OTHER, "Other" }, + { DIS_APPLICATION_TYPE_RESOURCE_MANAGER, "Resource Manager" }, + { DIS_APPLICATION_TYPE_SIMULATION_MANAGER, "Simulation Manager" }, + { DIS_APPLICATION_TYPE_GATEWAY, "Gateway" }, + { DIS_APPLICATION_TYPE_STEALTH, "Stealth" }, + { DIS_APPLICATION_TYPE_TACTICAL_INTERNET_INTERFACE, "Tactical Internet Interface" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_DETONATION_RESULT_OTHER = 0, + DIS_DETONATION_RESULT_ENTITY_IMPACT = 1, + DIS_DETONATION_RESULT_ENTITY_PROXIMATE_DETONATION = 2, + DIS_DETONATION_RESULT_GROUND_IMPACT = 3, + DIS_DETONATION_RESULT_GROUND_PROXIMATE_DETONATION = 4, + DIS_DETONATION_RESULT_DETONATION = 5, + DIS_DETONATION_RESULT_NONE_DUD = 6, + DIS_DETONATION_RESULT_HE_HIT_SMALL = 7, + DIS_DETONATION_RESULT_HE_HIT_MEDIUM = 8, + DIS_DETONATION_RESULT_HE_HIT_LARGE = 9, + DIS_DETONATION_RESULT_ARMOR_PIERCING_HIT = 10, + DIS_DETONATION_RESULT_DIRT_BLAST_SMALL = 11, + DIS_DETONATION_RESULT_DIRT_BLAST_MEDIUM = 12, + DIS_DETONATION_RESULT_DIRT_BLAST_LARGE = 13, + DIS_DETONATION_RESULT_WATER_BLAST_SMALL = 14, + DIS_DETONATION_RESULT_WATER_BLAST_MEDIUM = 15, + DIS_DETONATION_RESULT_WATER_BLAST_LARGE = 16, + DIS_DETONATION_RESULT_AIR_HIT = 17, + DIS_DETONATION_RESULT_BUILDING_HIT_SMALL = 18, + DIS_DETONATION_RESULT_BUILDING_HIT_MEDIUM = 19, + DIS_DETONATION_RESULT_BUILDING_HIT_LARGE = 20, + DIS_DETONATION_RESULT_MINE_CLEARING_LINE_CHARGE = 21, + DIS_DETONATION_RESULT_ENVIRONMENT_OBJECT_IMPACT = 22, + DIS_DETONATION_RESULT_ENVIRONMENT_OBJECT_PROXIMATE_DETONATION = 23, + DIS_DETONATION_RESULT_WATER_IMPACT = 24, + DIS_DETONATION_RESULT_AIR_BURST = 25, + DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_1 = 26, + DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_2 = 27, + DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_3 = 28, + DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_1_AFTER_FOF = 29, + DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_2_AFTER_FOF = 30, + DIS_DETONATION_RESULT_MISS_DUE_TO_FOF = 31, + DIS_DETONATION_RESULT_MISS_DUE_TO_ENDGAME_FAILURE = 32, + DIS_DETONATION_RESULT_MISS_DUE_TO_FOF_AND_ENDGAME_FAILURE = 33 +} DIS_PDU_DetonationResult; + +static const value_string DIS_PDU_DetonationResult_Strings[] = +{ + { DIS_DETONATION_RESULT_OTHER, "Other" }, + { DIS_DETONATION_RESULT_ENTITY_IMPACT, "Entity impact" }, + { DIS_DETONATION_RESULT_ENTITY_PROXIMATE_DETONATION, "Entity proximate detonation" }, + { DIS_DETONATION_RESULT_GROUND_IMPACT, "Ground impact" }, + { DIS_DETONATION_RESULT_GROUND_PROXIMATE_DETONATION, "Ground proximate detonation" }, + { DIS_DETONATION_RESULT_DETONATION, "Detonation" }, + { DIS_DETONATION_RESULT_NONE_DUD, "None or no detonation (dud)" }, + { DIS_DETONATION_RESULT_HE_HIT_SMALL, "HE hit, small" }, + { DIS_DETONATION_RESULT_HE_HIT_MEDIUM, "HE hit, medium" }, + { DIS_DETONATION_RESULT_HE_HIT_LARGE, "HE hit, large" }, + { DIS_DETONATION_RESULT_ARMOR_PIERCING_HIT, "Armor-piercing hit" }, + { DIS_DETONATION_RESULT_DIRT_BLAST_SMALL, "Dirt blast, small" }, + { DIS_DETONATION_RESULT_DIRT_BLAST_MEDIUM, "Dirt blast, medium" }, + { DIS_DETONATION_RESULT_DIRT_BLAST_LARGE, "Dirt blast, large" }, + { DIS_DETONATION_RESULT_WATER_BLAST_SMALL, "Water blast, small" }, + { DIS_DETONATION_RESULT_WATER_BLAST_MEDIUM, "Water blast, medium" }, + { DIS_DETONATION_RESULT_WATER_BLAST_LARGE, "Water blast, large" }, + { DIS_DETONATION_RESULT_AIR_HIT, "Air hit" }, + { DIS_DETONATION_RESULT_BUILDING_HIT_SMALL, "Building hit, small" }, + { DIS_DETONATION_RESULT_BUILDING_HIT_MEDIUM, "Building hit, medium" }, + { DIS_DETONATION_RESULT_BUILDING_HIT_LARGE, "Building hit, large" }, + { DIS_DETONATION_RESULT_MINE_CLEARING_LINE_CHARGE, "Mine-clearing line charge" }, + { DIS_DETONATION_RESULT_ENVIRONMENT_OBJECT_IMPACT, "Environment object impact" }, + { DIS_DETONATION_RESULT_ENVIRONMENT_OBJECT_PROXIMATE_DETONATION, "Environment object proximate detonation" }, + { DIS_DETONATION_RESULT_WATER_IMPACT, "Water impact" }, + { DIS_DETONATION_RESULT_AIR_BURST, "Air burst" }, + { DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_1, "Kill with fragment type 1" }, + { DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_2, "Kill with fragment type 2" }, + { DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_3, "Kill with fragment type 3" }, + { DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_1_AFTER_FOF, "Kill with fragment type 1 after fly-out failure" }, + { DIS_DETONATION_RESULT_KILL_WITH_FRAGMENT_TYPE_2_AFTER_FOF, "Kill with fragment type 2 after fly-out failure" }, + { DIS_DETONATION_RESULT_MISS_DUE_TO_FOF, "Miss due to fly-out failure" }, + { DIS_DETONATION_RESULT_MISS_DUE_TO_ENDGAME_FAILURE, "Miss due to end-game failure" }, + { DIS_DETONATION_RESULT_MISS_DUE_TO_FOF_AND_ENDGAME_FAILURE, "Miss due to fly-out and end-game failure" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_CONTROL_ID_OTHER = 0, + DIS_CONTROL_ID_SHUTDOWN = 1, + DIS_CONTROL_ID_DATA_QUERY = 2, + DIS_CONTROL_ID_DATA = 3, + DIS_CONTROL_ID_SET_DATA = 4, + DIS_CONTROL_ID_ADD_DATA = 5, + DIS_CONTROL_ID_REMOVE_DATA = 6, + DIS_CONTROL_ID_STATUS = 7 +} DIS_PDU_ControlId; + +static const value_string DIS_PDU_ControlId_Strings[] = +{ + { DIS_CONTROL_ID_OTHER, "Other" }, + { DIS_CONTROL_ID_SHUTDOWN, "Shutdown" }, + { DIS_CONTROL_ID_DATA_QUERY, "Data Query" }, + { DIS_CONTROL_ID_DATA, "Data" }, + { DIS_CONTROL_ID_SET_DATA, "Set Data" }, + { DIS_CONTROL_ID_ADD_DATA, "Add Data" }, + { DIS_CONTROL_ID_REMOVE_DATA, "Remove Data" }, + { DIS_CONTROL_ID_STATUS, "Status" }, + { 0, NULL } +}; + + +typedef enum +{ + DIS_FROZEN_BEHAVIOR_RUN_INTERNAL_SIMULATION_CLOCK = 0, + DIS_FROZEN_BEHAVIOR_TRANSMIT_PDUS = 1, + DIS_FROZEN_BEHAVIOR_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES = 2, + DIS_FROZEN_BEHAVIOR_CONTINUE_TRANSMIT_PDU = 3, + DIS_FROZEN_BEHAVIOR_CEASE_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES = 4, + DIS_FROZEN_BEHAVIOR_CONTINUE_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES = 5 +} DIS_PDU_FrozenBehavior; + +static const value_string DIS_PDU_FrozenBehavior_Strings[] = +{ + { DIS_FROZEN_BEHAVIOR_RUN_INTERNAL_SIMULATION_CLOCK, "Run Internal Simulation Clock" }, + { DIS_FROZEN_BEHAVIOR_TRANSMIT_PDUS, "Transmit PDUs" }, + { DIS_FROZEN_BEHAVIOR_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES, "Update Sim Models Of Other Entities" }, + { DIS_FROZEN_BEHAVIOR_CONTINUE_TRANSMIT_PDU, "Continue Transmit PDU" }, + { DIS_FROZEN_BEHAVIOR_CEASE_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES, "Cease Update Sim Models Of Other Entities" }, + { DIS_FROZEN_BEHAVIOR_CONTINUE_UPDATE_SIM_MODELS_OF_OTHER_ENTITIES, "Continue Update Sim Models Of Other Entities" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_PARAM_TYPE_DESIG_ARTICULATED_PART = 0, + DIS_PARAM_TYPE_DESIG_ATTACHED_PART = 1, + DIS_PARAM_TYPE_DESIG_SEPARATION = 2, + DIS_PARAM_TYPE_DESIG_ENTITY_TYPE = 3, + DIS_PARAM_TYPE_DESIG_ENTITY_ASSOCIATION = 4, + DIS_PARAM_TYPE_DESIG_ANTENNA_LOCATION = 5, + DIS_PARAM_TYPE_DESIG_EXTENDED_PLATFORM_APPEARANCE = 20, + DIS_PARAM_TYPE_DESIG_EXTENDED_LIFEFORM_APPEARANCE = 21, + DIS_PARAM_TYPE_DESIG_HIGH_FIDELITY_LIGHTS = 22, + DIS_PARAM_TYPE_DESIG_CHEVRON_MARKING = 23, + DIS_PARAM_TYPE_DESIG_HIGH_FIDELITY_THERMAL_SENSOR = 24, + DIS_PARAM_TYPE_DESIG_ENTITY_OFFSET = 25, + DIS_PARAM_TYPE_DESIG_DEAD_RECKONING = 26, + DIS_PARAM_TYPE_DESIG_ARMY_TASK_ORGANIZATION = 27, + DIS_PARAM_TYPE_DESIG_HEAD_GAZING_WEAPON_AIMING = 28, + DIS_PARAM_TYPE_DESIG_LIFEFORM_ACTION_SEQUENCE = 29, + DIS_PARAM_TYPE_DESIG_LEGACY_EXTENDED_LIFEFORM_APPEARANCE = 30 +} DIS_PDU_ParameterTypeDesignator; + +static const value_string DIS_PDU_ParameterTypeDesignator_Strings[] = +{ + { DIS_PARAM_TYPE_DESIG_ARTICULATED_PART, "Articulated Part" }, + { DIS_PARAM_TYPE_DESIG_ATTACHED_PART, "Attached Part" }, + { DIS_PARAM_TYPE_DESIG_SEPARATION, "Separation" }, + { DIS_PARAM_TYPE_DESIG_ENTITY_TYPE, "Entity Type" }, + { DIS_PARAM_TYPE_DESIG_ENTITY_ASSOCIATION, "Entity Association" }, + { DIS_PARAM_TYPE_DESIG_ANTENNA_LOCATION, "Antenna Location" }, + { DIS_PARAM_TYPE_DESIG_EXTENDED_PLATFORM_APPEARANCE, "Extended Platform Appearance" }, + { DIS_PARAM_TYPE_DESIG_EXTENDED_LIFEFORM_APPEARANCE, "Extended Lifeform Appearance" }, + { DIS_PARAM_TYPE_DESIG_HIGH_FIDELITY_LIGHTS, "High Fidelity Lights" }, + { DIS_PARAM_TYPE_DESIG_CHEVRON_MARKING, "Chevron Marking" }, + { DIS_PARAM_TYPE_DESIG_HIGH_FIDELITY_THERMAL_SENSOR, "High Fidelity Thermal Sensor" }, + { DIS_PARAM_TYPE_DESIG_ENTITY_OFFSET, "Entity Offset" }, + { DIS_PARAM_TYPE_DESIG_DEAD_RECKONING, "Dead Reckoning" }, + { DIS_PARAM_TYPE_DESIG_ARMY_TASK_ORGANIZATION, "Army Task Organization" }, + { DIS_PARAM_TYPE_DESIG_HEAD_GAZING_WEAPON_AIMING, "Head Gazing Weapon Aiming" }, + { DIS_PARAM_TYPE_DESIG_LIFEFORM_ACTION_SEQUENCE, "Lifeform Action Sequence" }, + { DIS_PARAM_TYPE_DESIG_LEGACY_EXTENDED_LIFEFORM_APPEARANCE, "Legacy Extended Lifeform Appearance" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_REASON_OTHER = 0, + DIS_REASON_RECESS = 1, + DIS_REASON_TERMINATION = 2, + DIS_REASON_SYSTEM_FAILURE = 3, + DIS_REASON_SECURITY_VIOLATION = 4, + DIS_REASON_ENTITY_RECONSTITUTION = 5, + DIS_REASON_STOP_FOR_RESET = 6, + DIS_REASON_STOP_FOR_RESTART = 7, + DIS_REASON_ABORT_TRAINING_RETURN_TO_TACTICAL_OPERATIONS = 8 +} DIS_PDU_Reason; + +static const value_string DIS_PDU_Reason_Strings[] = +{ + { DIS_REASON_OTHER, "Other" }, + { DIS_REASON_RECESS, "Recess" }, + { DIS_REASON_TERMINATION, "Termination" }, + { DIS_REASON_SYSTEM_FAILURE, "System Failure" }, + { DIS_REASON_SECURITY_VIOLATION, "Security Violation" }, + { DIS_REASON_ENTITY_RECONSTITUTION, "Entity Reconstitution" }, + { DIS_REASON_STOP_FOR_RESET, "Stop For Reset" }, + { DIS_REASON_STOP_FOR_RESTART, "Stop For Restart" }, + { DIS_REASON_ABORT_TRAINING_RETURN_TO_TACTICAL_OPERATIONS, "Abort Training Return To Tactical Operations" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_REQUEST_STATUS_OTHER = 0, + DIS_REQUEST_STATUS_PENDING = 1, + DIS_REQUEST_STATUS_EXECUTING = 2, + DIS_REQUEST_STATUS_PARTIALLY_COMPLETE = 3, + DIS_REQUEST_STATUS_COMPLETE = 4, + DIS_REQUEST_STATUS_REQUEST_REJECTED = 5, + DIS_REQUEST_STATUS_RETRANSMIT_REQUEST_NOW = 6, + DIS_REQUEST_STATUS_RETRANSMIT_REQUEST_LATER = 7, + DIS_REQUEST_STATUS_INVALID_TIME_PARAMETERS = 8, + DIS_REQUEST_STATUS_SIMULATION_TIME_EXCEEDED = 9, + DIS_REQUEST_STATUS_REQUEST_DONE = 10, + DIS_REQUEST_STATUS_TACCSF_LOS_REPLY_TYPE_1 = 100, + DIS_REQUEST_STATUS_TACCSF_LOS_REPLY_TYPE_2 = 101, + DIS_REQUEST_STATUS_JOIN_EXERCISE_REQUEST_REJECTED = 201 +} DIS_PDU_RequestStatus; + +static const value_string DIS_PDU_RequestStatus_Strings[] = +{ + { DIS_REQUEST_STATUS_OTHER, "Other" }, + { DIS_REQUEST_STATUS_PENDING, "Pending" }, + { DIS_REQUEST_STATUS_EXECUTING, "Executing" }, + { DIS_REQUEST_STATUS_PARTIALLY_COMPLETE, "Partially Complete" }, + { DIS_REQUEST_STATUS_COMPLETE, "Complete" }, + { DIS_REQUEST_STATUS_REQUEST_REJECTED, "Request Rejected" }, + { DIS_REQUEST_STATUS_RETRANSMIT_REQUEST_NOW, "Retransmit Request Now" }, + { DIS_REQUEST_STATUS_RETRANSMIT_REQUEST_LATER, "Retransmit Request Later" }, + { DIS_REQUEST_STATUS_INVALID_TIME_PARAMETERS, "Invalid Time Parameters" }, + { DIS_REQUEST_STATUS_SIMULATION_TIME_EXCEEDED, "Simulation Time Exceeded" }, + { DIS_REQUEST_STATUS_REQUEST_DONE, "Request Done" }, + { DIS_REQUEST_STATUS_TACCSF_LOS_REPLY_TYPE_1, "TACCSF LOS Reply Type 1" }, + { DIS_REQUEST_STATUS_TACCSF_LOS_REPLY_TYPE_2, "TACCSF LOS Reply Type 2" }, + { DIS_REQUEST_STATUS_JOIN_EXERCISE_REQUEST_REJECTED, "Join Exercise Request Rejected" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_REQUIRED_RELIABILITY_SERVICE_ACKNOWLEDGED = 0, + DIS_REQUIRED_RELIABILITY_SERVICE_UNACKNOWLEDGED = 1 +} DIS_PDU_RequiredReliabilityService; + +static const value_string DIS_PDU_RequiredReliabilityService_Strings[] = +{ + { DIS_REQUIRED_RELIABILITY_SERVICE_ACKNOWLEDGED, "Acknowledged" }, + { DIS_REQUIRED_RELIABILITY_SERVICE_UNACKNOWLEDGED, "Unacknowledged" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_RESPONSE_FLAG_OTHER = 0, + DIS_RESPONSE_FLAG_ABLE_TO_COMPLY = 1, + DIS_RESPONSE_FLAG_UNABLE_TO_COMPLY = 2, + DIS_RESPONSE_FLAG_PENDING_OPERATOR_ACTION = 3 +} DIS_PDU_DisResponseFlag; + +static const value_string DIS_PDU_DisResponseFlag_Strings[] = +{ + { DIS_RESPONSE_FLAG_OTHER, "Other" }, + { DIS_RESPONSE_FLAG_ABLE_TO_COMPLY, "Able To Comply" }, + { DIS_RESPONSE_FLAG_UNABLE_TO_COMPLY, "Unable To Comply" }, + { DIS_RESPONSE_FLAG_PENDING_OPERATOR_ACTION, "Pending Operator Action" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_PERSISTENT_OBJECT_TYPE_OTHER = 0, + DIS_PERSISTENT_OBJECT_TYPE_SIMULATOR_PRESENT = 1, + DIS_PERSISTENT_OBJECT_TYPE_DESCRIBE_OBJECT = 2, + DIS_PERSISTENT_OBJECT_TYPE_OBJECTS_PRESENT = 3, + DIS_PERSISTENT_OBJECT_TYPE_OBJECT_REQUEST = 4, + DIS_PERSISTENT_OBJECT_TYPE_DELETE_OBJECTS = 5, + DIS_PERSISTENT_OBJECT_TYPE_SET_WORLD_STATE = 6, + DIS_PERSISTENT_OBJECT_TYPE_NOMINATION = 7 +} DIS_PDU_PersistentObjectType; + +static const value_string DIS_PDU_PersistentObjectType_Strings[] = +{ + { DIS_PERSISTENT_OBJECT_TYPE_OTHER, "Other" }, + { DIS_PERSISTENT_OBJECT_TYPE_SIMULATOR_PRESENT, "Simulator Present" }, + { DIS_PERSISTENT_OBJECT_TYPE_DESCRIBE_OBJECT, "Describe Object" }, + { DIS_PERSISTENT_OBJECT_TYPE_OBJECTS_PRESENT, "Objects Present" }, + { DIS_PERSISTENT_OBJECT_TYPE_OBJECT_REQUEST, "Object Request" }, + { DIS_PERSISTENT_OBJECT_TYPE_DELETE_OBJECTS, "Delete Objects" }, + { DIS_PERSISTENT_OBJECT_TYPE_SET_WORLD_STATE, "Set World State" }, + { DIS_PERSISTENT_OBJECT_TYPE_NOMINATION, "Nomination" }, + { 0, NULL } +}; + +typedef enum +{ + DIS_PO_OBJECT_CLASS_OTHER = 0, + DIS_PO_OBJECT_CLASS_WORLD_STATE = 1, + DIS_PO_OBJECT_CLASS_OVERLAY = 2, + DIS_PO_OBJECT_CLASS_POINT = 3, + DIS_PO_OBJECT_CLASS_LINE = 4, + DIS_PO_OBJECT_CLASS_SECTOR = 5, + DIS_PO_OBJECT_CLASS_TEXT = 6, + DIS_PO_OBJECT_CLASS_UNIT = 7, + DIS_PO_OBJECT_CLASS_UNIT_DEFINITION = 8, + DIS_PO_OBJECT_CLASS_STEALTH_CONTROLLER = 9, + DIS_PO_OBJECT_CLASS_H_HOUR = 10, + DIS_PO_OBJECT_CLASS_VARIABLE = 11, + DIS_PO_OBJECT_CLASS_TASK = 12, + DIS_PO_OBJECT_CLASS_TASK_STATE = 13, + DIS_PO_OBJECT_CLASS_TASK_FRAME = 14, + DIS_PO_OBJECT_CLASS_TASK_AUTHORIZATION = 15, + DIS_PO_OBJECT_CLASS_PARAMETRIC_INPUT = 16, + DIS_PO_OBJECT_CLASS_PARAMETRIC_INPUT_HOLDER = 17, + DIS_PO_OBJECT_CLASS_EXERCISE_INITIALIZER = 18, + DIS_PO_OBJECT_CLASS_FIRE_PARAMETERS = 19, + DIS_PO_OBJECT_CLASS_MINEFIELD = 20, + DIS_PO_OBJECT_CLASS_SIMULATION_REQUEST = 21, + DIS_PO_OBJECT_CLASS_NET_SUBSCRIPTION = 22, + DIS_PO_OBJECT_CLASS_LINK = 23, + DIS_PO_OBJECT_CLASS_MINEFIELD_PARENT = 24, + DIS_PO_OBJECT_CLASS_CHEMICAL = 25, + DIS_PO_OBJECT_CLASS_AlertUser = 26, + DIS_PO_OBJECT_CLASS_HAND_OFF = 27, + DIS_PO_OBJECT_CLASS_CIRCUIT = 28, + DIS_PO_OBJECT_CLASS_CARGO = 29, + DIS_PO_OBJECT_CLASS_MCM_ROUTE = 30, + DIS_PO_OBJECT_CLASS_MESSAGE = 31 +} DIS_PDU_PO_ObjectClass; + +static const value_string DIS_PDU_PO_ObjectClass_Strings[] = +{ + { DIS_PO_OBJECT_CLASS_OTHER, "Other" }, + { DIS_PO_OBJECT_CLASS_WORLD_STATE, "World State" }, + { DIS_PO_OBJECT_CLASS_OVERLAY, "Overlay" }, + { DIS_PO_OBJECT_CLASS_POINT, "Point" }, + { DIS_PO_OBJECT_CLASS_LINE, "Line" }, + { DIS_PO_OBJECT_CLASS_SECTOR, "Sector" }, + { DIS_PO_OBJECT_CLASS_TEXT, "Text" }, + { DIS_PO_OBJECT_CLASS_UNIT, "Unit" }, + { DIS_PO_OBJECT_CLASS_UNIT_DEFINITION, "Unit Definition" }, + { DIS_PO_OBJECT_CLASS_STEALTH_CONTROLLER, "Stealth Controller" }, + { DIS_PO_OBJECT_CLASS_H_HOUR, "H Hour" }, + { DIS_PO_OBJECT_CLASS_VARIABLE, "Variable" }, + { DIS_PO_OBJECT_CLASS_TASK, "Task" }, + { DIS_PO_OBJECT_CLASS_TASK_STATE, "Task State" }, + { DIS_PO_OBJECT_CLASS_TASK_FRAME, "Task Frame" }, + { DIS_PO_OBJECT_CLASS_TASK_AUTHORIZATION, "Task Authorization" }, + { DIS_PO_OBJECT_CLASS_PARAMETRIC_INPUT, "Parametric Input" }, + { DIS_PO_OBJECT_CLASS_PARAMETRIC_INPUT_HOLDER, "Parametric Input Holder" }, + { DIS_PO_OBJECT_CLASS_EXERCISE_INITIALIZER, "Exercise Initializer" }, + { DIS_PO_OBJECT_CLASS_FIRE_PARAMETERS, "Fire Parameters" }, + { DIS_PO_OBJECT_CLASS_MINEFIELD, "Minefield" }, + { DIS_PO_OBJECT_CLASS_SIMULATION_REQUEST, "Simulation Request" }, + { DIS_PO_OBJECT_CLASS_NET_SUBSCRIPTION, "Net Subscription" }, + { DIS_PO_OBJECT_CLASS_LINK, "Link" }, + { DIS_PO_OBJECT_CLASS_MINEFIELD_PARENT, "Minefield Parent" }, + { DIS_PO_OBJECT_CLASS_CHEMICAL, "Chemical" }, + { DIS_PO_OBJECT_CLASS_AlertUser, "Alert User" }, + { DIS_PO_OBJECT_CLASS_HAND_OFF, "Hand Off" }, + { DIS_PO_OBJECT_CLASS_CIRCUIT, "Circuit" }, + { DIS_PO_OBJECT_CLASS_CARGO, "Cargo" }, + { DIS_PO_OBJECT_CLASS_MCM_ROUTE, "Mcm Route" }, + { DIS_PO_OBJECT_CLASS_MESSAGE, "Message" }, + { 0, NULL } +}; + +static const value_string DIS_PDU_EmitterName_Strings[] = +{ + { 10, "1RL138" }, + { 45, "1226 DECCA MIL" }, + { 80, "9GR400" }, + { 90, "9GR600" }, + { 135, "9LV 200 TA" }, + { 180, "9LV 200 TV" }, + { 225, "A310Z" }, + { 270, "A325A" }, + { 315, "A346Z" }, + { 360, "A353B" }, + { 405, "A372A" }, + { 450, "A372B" }, + { 495, "A372C" }, + { 540, "A377A" }, + { 585, "A377B" }, + { 630, "A380Z" }, + { 675, "A381Z" }, + { 720, "A398Z" }, + { 765, "A403Z" }, + { 810, "A409A" }, + { 855, "A418A" }, + { 900, "A419Z" }, + { 945, "A429Z" }, + { 990, "A432Z" }, + { 1035, "A434Z" }, + { 1080, "A401A" }, + { 1095, "AA-12 Seeker" }, + { 1100, "Agave" }, + { 1125, "AGRION 15" }, + { 1170, "AI MK 23" }, + { 1215, "AIDA II" }, + { 1260, "Albatros MK2" }, + { 1280, "1L13-3 (55G6), Box Spring" }, + { 1282, "1L13-3 (55G6), Box Spring B" }, + { 1305, "ANA SPS 502" }, + { 1350, "ANRITSU Electric AR-30A" }, + { 1395, "Antilope V" }, + { 1400, "AN/ALE-50" }, + { 1440, "AN/ALQ 99" }, + { 1485, "AN/ALQ-100" }, + { 1530, "AN/ALQ-101" }, + { 1575, "AN/ALQ-119" }, + { 1585, "AN/ALQ-122" }, + { 1620, "AN/ALQ-126A" }, + { 1626, "AN/ALQ-131" }, + { 1628, "AN/ALQ-135C/D" }, + { 1630, "AN/ALQ-144A(V)3" }, + { 1632, "AN/ALQ-153" }, + { 1634, "AN/ALQ-155" }, + { 1636, "AN/ALQ-161/A" }, + { 1638, "AN/ALQ-162" }, + { 1640, "AN/ALQ-165" }, + { 1642, "AN/ALQ-167" }, + { 1644, "AN/ALQ-172(V)2" }, + { 1646, "AN/ALQ-176" }, + { 1648, "AN/ALQ-184" }, + { 1650, "AN/ALQ-188" }, + { 1652, "AN/ALR-56" }, + { 1654, "AN/ALR-69" }, + { 1656, "AN/ALT-16A" }, + { 1658, "AN/ALT-28" }, + { 1660, "AN/ALT-32A" }, + { 1665, "AN/APD 10" }, + { 1710, "AN/APG 53" }, + { 1755, "AN/APG 59" }, + { 1800, "AN/APG-63" }, + { 1805, "AN/APG-63(V)1" }, + { 1807, "AN/APG-63(V)2" }, + { 1809, "AN/APG-63(V)3" }, + { 1845, "AN/APG 65" }, + { 1870, "AN/APG-66" }, + { 1890, "AN/APG 68" }, + { 1935, "AN/APG 70" }, + { 1945, "AN/APG-73" }, + { 1960, "AN/APG-77" }, + { 1970, "AN/APG-78" }, + { 1980, "AN/APG-502" }, + { 2025, "AN/APN-1" }, + { 2070, "AN/APN-22" }, + { 2115, "AN/APN 59" }, + { 2160, "AN/APN-69" }, + { 2205, "AN/APN-81" }, + { 2250, "AN/APN-117" }, + { 2295, "AN/APN-118" }, + { 2340, "AN/APN-130" }, + { 2385, "AN/APN-131" }, + { 2430, "AN/APN-133" }, + { 2475, "AN/APN-134" }, + { 2520, "AN/APN-147" }, + { 2565, "AN/APN-150" }, + { 2610, "AN/APN-153" }, + { 2655, "AN/APN 154" }, + { 2700, "AN/APN-155" }, + { 2745, "AN/APN-159" }, + { 2790, "AN/APN-182" }, + { 2835, "AN/APN-187" }, + { 2880, "AN/APN-190" }, + { 2925, "AN/APN 194" }, + { 2970, "AN/APN-195" }, + { 3015, "AN/APN-198" }, + { 3060, "AN/APN-200" }, + { 3105, "AN/APN 202" }, + { 3150, "AN/APN-217" }, + { 3152, "AN/APN-218" }, + { 3160, "AN/APN-238" }, + { 3162, "AN/APN-239" }, + { 3164, "AN/APN-241" }, + { 3166, "AN/APN-242" }, + { 3195, "AN/APN-506" }, + { 3240, "AN/APQ-72" }, + { 3285, "AN/APQ-99" }, + { 3330, "AN/APQ 100" }, + { 3375, "AN/APQ-102" }, + { 3420, "AN/APQ-109" }, + { 3465, "AN/APQ 113" }, + { 3510, "AN/APQ 120" }, + { 3555, "AN/APQ 126" }, + { 3600, "AN/APQ-128" }, + { 3645, "AN/APQ-129" }, + { 3690, "AN/APQ 148" }, + { 3735, "AN/APQ-153" }, + { 3780, "AN/APQ 159" }, + { 3785, "AN/APQ-164" }, + { 3788, "AN/APQ-166" }, + { 3795, "AN/APQ-181" }, + { 3820, "AN/APS-31" }, + { 3825, "AN/APS-42" }, + { 3870, "AN/APS 80" }, + { 3915, "AN/APS-88" }, + { 3960, "AN/APS 115" }, + { 4005, "AN/APS 116" }, + { 4050, "AN/APS-120" }, + { 4095, "AN/APS 121" }, + { 4140, "AN/APS 124" }, + { 4185, "AN/APS 125" }, + { 4230, "AN/APS-128" }, + { 4275, "AN/APS 130" }, + { 4320, "AN/APS 133" }, + { 4365, "AN/APS-134" }, + { 4410, "AN/APS 137" }, + { 4455, "AN/APS-138" }, + { 4465, "AN/APS-143 (V) 1" }, + { 4500, "AN/APW 22" }, + { 4545, "AN/APW 23" }, + { 4590, "AN/APX-6" }, + { 4635, "AN/APX 7" }, + { 4680, "AN/APX 39" }, + { 4725, "AN/APX-72" }, + { 4770, "AN/APX 76" }, + { 4815, "AN/APX 78" }, + { 4860, "AN/APX 101" }, + { 4870, "AN/APX-113 AIFF" }, + { 4900, "AN/APY-1" }, + { 4905, "AN/APY 2" }, + { 4950, "AN/APY 3" }, + { 4953, "AN/APY-8, LYNX(tm)" }, + { 4995, "AN/ARN 21" }, + { 5040, "AN/ARN 52" }, + { 5085, "AN/ARN 84" }, + { 5130, "AN/ARN 118" }, + { 5175, "AN/ARW 73" }, + { 5220, "AN/ASB 1" }, + { 5265, "AN/ASG 21" }, + { 5280, "AN/ASQ-108" }, + { 5310, "AN/AWG 9" }, + { 5355, "AN/BPS-9" }, + { 5400, "AN/BPS 15" }, + { 5405, "AN/BPS-16" }, + { 5420, "AN/CRM-30" }, + { 5430, "AN/DPW-23" }, + { 5445, "AN/DSQ 26 Phoenix MH" }, + { 5490, "AN/DSQ 28 Harpoon MH" }, + { 5495, "AN/FPN-40" }, + { 5500, "AN/FPN-62" }, + { 5505, "AN/FPS-16" }, + { 5507, "AN/FPS-18" }, + { 5508, "AN/FPS-89" }, + { 5510, "AN/FPS-117" }, + { 5515, "AN/FPS-20R" }, + { 5520, "AN/FPS-77" }, + { 5525, "AN/FPS-103" }, + { 5527, "AN/GPN-12" }, + { 5530, "AN/GPX-6" }, + { 5535, "AN/GPX 8" }, + { 5537, "AN/GRN-12" }, + { 5540, "AN/MPQ-10" }, + { 5545, "AN/MPQ-33/39/46/57/61 (HPIR) ILL" }, + { 5550, "AN/MPQ-34/48/55/62 (CWAR) TA" }, + { 5551, "AN/MPQ-49" }, + { 5555, "AN/MPQ-35/50 (PAR) TA" }, + { 5560, "AN/MPQ-37/51 (ROR) TT" }, + { 5570, "AN/MPQ-53" }, + { 5571, "AN/MPQ-63" }, + { 5575, "AN/MPQ-64" }, + { 5580, "AN/SPG-34" }, + { 5625, "AN/SPG 50" }, + { 5670, "AN/SPG 51" }, + { 5715, "AN/SPG-51 CWI TI" }, + { 5760, "AN/SPG-51 FC" }, + { 5805, "AN/SPG 52" }, + { 5850, "AN/SPG-53" }, + { 5895, "AN/SPG 55B" }, + { 5940, "AN/SPG 60" }, + { 5985, "AN/SPG 62" }, + { 6030, "AN/SPN 35" }, + { 6075, "AN/SPN 43" }, + { 6120, "AN/SPQ-2" }, + { 6165, "AN/SPQ 9" }, + { 6210, "AN/SPS-4" }, + { 6255, "AN/SPS-5" }, + { 6300, "AN/SPS-5C" }, + { 6345, "AN/SPS-6" }, + { 6390, "AN/SPS 10" }, + { 6435, "AN/SPS 21" }, + { 6480, "AN/SPS-28" }, + { 6525, "AN/SPS-37" }, + { 6570, "AN/SPS-39A" }, + { 6615, "AN/SPS 40" }, + { 6660, "AN/SPS-41" }, + { 6705, "AN/SPS-48" }, + { 6750, "AN/SPS-48C" }, + { 6752, "AN/SPS-48E" }, + { 6795, "AN/SPS-49" }, + { 6796, "AN/SPS-49(V)1" }, + { 6797, "AN/SPS-49(V)2" }, + { 6798, "AN/SPS-49(V)3" }, + { 6799, "AN/SPS-49(V)4" }, + { 6800, "AN/SPS-49(V)5" }, + { 6801, "AN/SPS-49(V)6" }, + { 6802, "AN/SPS-49(V)7" }, + { 6803, "AN/SPS-49(V)8" }, + { 6804, "AN/SPS-49A(V)1" }, + { 6840, "AN/SPS 52" }, + { 6885, "AN/SPS 53" }, + { 6930, "AN/SPS 55" }, + { 6975, "AN/SPS-55 SS" }, + { 7020, "AN/SPS-58" }, + { 7065, "AN/SPS 59" }, + { 7110, "AN/SPS 64" }, + { 7155, "AN/SPS 65" }, + { 7200, "AN/SPS 67" }, + { 7245, "AN/SPY-1" }, + { 7250, "AN/SPY-1A" }, + { 7252, "AN/SPY-1B" }, + { 7253, "AN/SPY-1B(V)" }, + { 7260, "AN/SPY-1D" }, + { 7261, "AN/SPY-1D(V)" }, + { 7265, "AN/SPY-1F" }, + { 7270, "AN/TPN-17" }, + { 7275, "AN/TPN-24" }, + { 7280, "AN/TPQ-18" }, + { 7295, "AN/TPQ-36" }, + { 7300, "AN/TPQ-37" }, + { 7301, "AN/TPQ-38 (V8)" }, + { 7303, "AN/TPQ-47" }, + { 7305, "AN/TPS-43" }, + { 7310, "AN/TPS-43E" }, + { 7315, "AN/TPS-59" }, + { 7320, "AN/TPS-63" }, + { 7322, "AN/TPS-70 (V) 1" }, + { 7325, "AN/TPS-75" }, + { 7330, "AN/TPX-46(V)7" }, + { 7335, "AN/ULQ-6A" }, + { 7380, "AN/UPN 25" }, + { 7425, "AN/UPS 1" }, + { 7426, "AN/UPS-2" }, + { 7470, "AN/UPX 1" }, + { 7515, "AN/UPX 5" }, + { 7560, "AN/UPX 11" }, + { 7605, "AN/UPX 12" }, + { 7650, "AN/UPX 17" }, + { 7695, "AN/UPX 23" }, + { 7740, "AN/VPS 2" }, + { 7785, "Apelco AD 7 7" }, + { 7830, "APG 71" }, + { 7875, "APN 148" }, + { 7920, "APN 227" }, + { 7965, "(deleted)" }, + { 8010, "(deleted)" }, + { 8055, "(deleted)" }, + { 8100, "APS 504 V3" }, + { 8105, "AR 3D" }, + { 8112, "Plessey AR-5" }, + { 8115, "AR 320" }, + { 8120, "AR 327" }, + { 8145, "AR M31" }, + { 8190, "ARI 5954" }, + { 8235, "ARI 5955" }, + { 8280, "ARI 5979" }, + { 8325, "ARINC 564 BNDX/KING RDR 1E" }, + { 8370, "ARINC 700 BNDX/KING RDR 1E" }, + { 8375, "ARK-1" }, + { 8380, "ARSR-3" }, + { 8390, "ARSR-18" }, + { 8415, "AS 2 Kipper" }, + { 8460, "AS 2 Kipper MH" }, + { 8505, "AS 4 Kitchen" }, + { 8550, "AS 4 Kitchen MH" }, + { 8595, "AS 5 Kelt MH" }, + { 8640, "AS 6 Kingfish MH" }, + { 8685, "AS 7 Kerry" }, + { 8730, "AS 7 Kerry MG" }, + { 8735, "AS 15 KENT altimeter" }, + { 8760, "Aspide AAM/SAM ILL" }, + { 8772, "ASR-4" }, + { 8775, "ASR O" }, + { 8780, "ASR-5" }, + { 8782, "ASR-7" }, + { 8785, "ASR-8" }, + { 8790, "ASR-9" }, + { 8812, "Raytheon ASR-10SS" }, + { 8820, "AT 2 Swatter MG" }, + { 8840, "ATCR-33" }, + { 8845, "ATCR 33 K/M" }, + { 8865, "Atlas Elektronk TRS N" }, + { 8870, "ATLAS-9740 VTS" }, + { 8910, "AVG 65" }, + { 8955, "AVH 7" }, + { 9000, "AVQ 20" }, + { 9045, "AVQ30X" }, + { 9075, "AVQ-50 (RCA)" }, + { 9090, "AVQ 70" }, + { 9135, "AWS 5" }, + { 9180, "AWS 6" }, + { 9200, "B597Z" }, + { 9205, "B636Z" }, + { 9225, "Back Net A B" }, + { 9270, "Back Trap" }, + { 9310, "BALTYK" }, + { 9315, "Ball End" }, + { 9360, "Ball Gun" }, + { 9405, "Band Stand" }, + { 9450, "P-35/37 (A); P-50 (B), Bar Lock" }, + { 9495, "Bass Tilt" }, + { 9540, "Beacon" }, + { 9585, "Bean Sticks" }, + { 9630, "Bee Hind" }, + { 9640, "Bell Crown A" }, + { 9642, "Bell Crown B" }, + { 9645, "BIG BACK" }, + { 9660, "Big Bird" }, + { 9675, "Big Bulge" }, + { 9720, "Big Bulge A" }, + { 9765, "Big Bulge B" }, + { 9780, "SNAR-10, Big Fred" }, + { 9810, "Big Mesh" }, + { 9855, "Big Net" }, + { 9885, "9S15MT, Bill Board" }, + { 9900, "Bill Fold" }, + { 9905, "Blowpipe MG" }, + { 9930, "Blue Fox, Sea Harrier FRS Mk 1/5" }, + { 9935, "Blue Vixen, Sea Harrier F/A Mk 2" }, + { 9945, "Blue Silk" }, + { 9990, "Blue Parrot" }, + { 10035, "Blue Orchid" }, + { 10080, "Boat Sail" }, + { 10125, "Bofors Electronic 9LV 331" }, + { 10170, "Bofors Ericsson Sea Giraffe 50 HC" }, + { 10215, "Bowl Mesh" }, + { 10260, "Box Brick" }, + { 10305, "Box Tail" }, + { 10350, "BPS 11A" }, + { 10395, "BPS 14" }, + { 10440, "BPS 15A" }, + { 10485, "BR-15 Tokyo KEIKI" }, + { 10510, "BRIDGEMASTE" }, + { 10530, "Bread Bin" }, + { 10575, "BT 271" }, + { 10620, "BX 732" }, + { 10665, "Buzz Stand" }, + { 10710, "C 5A Multi Mode Radar" }, + { 10755, "Caiman" }, + { 10800, "Cake Stand" }, + { 10845, "Calypso C61" }, + { 10890, "Calypso Ii" }, + { 10895, "Cardion Coastal" }, + { 10935, "Castor Ii" }, + { 10940, "Castor 2J TT (Crotale NG)" }, + { 10980, "Cat House" }, + { 10985, "CDR-431" }, + { 11000, "Chair Back TT" }, + { 11010, "Chair Back ILL" }, + { 11025, "Cheese Brick" }, + { 11070, "Clam Pipe" }, + { 11115, "Clamshell" }, + { 11160, "Collins WXR-700X" }, + { 11205, "Collins DN 101" }, + { 11250, "Contraves Sea Hunter MK 4" }, + { 11260, "Corn Can" }, + { 11270, "CR-105 RMCA" }, + { 11295, "Cross Bird" }, + { 11340, "Cross Dome" }, + { 11385, "Cross Legs" }, + { 11430, "Cross Out" }, + { 11475, "Cross Slot" }, + { 11520, "Cross Sword" }, + { 11565, "Cross Up" }, + { 11610, "Cross Sword FC" }, + { 11655, "Crotale Acquisition TA, THD-5000" }, + { 11660, "Crotale NG TA, Griffon" }, + { 11665, "Crotale TT" }, + { 11700, "Crotale MGMissile System" }, + { 11745, "CSS C 3C CAS 1M1 M2 MH" }, + { 11790, "CSS C 2B HY 1A MH" }, + { 11835, "CWS 2" }, + { 11880, "Cylinder Head" }, + { 11925, "Cyrano II" }, + { 11970, "Cyrano IV" }, + { 11975, "Cyrano IV-M" }, + { 12010, "DA-01/00" }, + { 12015, "DA 05 00" }, + { 12060, "Dawn" }, + { 12105, "Dead Duck" }, + { 12110, "DECCA-20 V90/9" }, + { 12111, "DECCA-20 V90S" }, + { 12150, "DECCA 45" }, + { 12195, "DECCA 50" }, + { 12240, "DECCA 110" }, + { 12285, "DECCA 170" }, + { 12292, "DECCA HF 2" }, + { 12330, "DECCA 202" }, + { 12375, "DECCA D202" }, + { 12420, "DECCA 303" }, + { 12430, "DECCA 535" }, + { 12465, "DECCA 626" }, + { 12510, "DECCA 629" }, + { 12555, "DECCA 914" }, + { 12600, "DECCA 916" }, + { 12610, "DECCA 926" }, + { 12645, "DECCA 1226 Commercial" }, + { 12690, "DECCA 1626" }, + { 12735, "DECCA 2459" }, + { 12780, "DECCA AWS 1" }, + { 12782, "DECCA AWS 2" }, + { 12785, "DECCA AWS 4" }, + { 12787, "DECCA AWS-4 (2)" }, + { 12800, "DECCA MAR" }, + { 12805, "DECCA RM 326" }, + { 12825, "DECCA RM 416" }, + { 12870, "DECCA RM 914" }, + { 12915, "DECCA RM 1690" }, + { 12960, "DECCA Super 101 MK 3" }, + { 13005, "DISS 1" }, + { 13050, "Rapier TTDN 181, DN 181" }, + { 13055, "Rapier 2000 TT, BLINDFIRE FSC TT" }, + { 13095, "Dog Ear" }, + { 13140, "Dog House" }, + { 13185, "Don 2" }, + { 13230, "Don A/B/2/Kay" }, + { 13275, "Donets" }, + { 13320, "Down Beat" }, + { 13365, "DRAA 2A" }, + { 13410, "DRAA 2B" }, + { 13455, "DRAC 39" }, + { 13500, "DRBC 30B" }, + { 13545, "DRBC 31A" }, + { 13590, "DRBC 32A" }, + { 13635, "DRBC 32D" }, + { 13680, "DRBC 33A" }, + { 13725, "DRBI 10" }, + { 13770, "DRBI 23" }, + { 13815, "DRBJ 11B" }, + { 13860, "DRBN 30" }, + { 13905, "DRBN 32" }, + { 13950, "DRBR 51" }, + { 13995, "DRBV 20B" }, + { 14040, "DRBV 22" }, + { 14085, "DRBV 26C" }, + { 14130, "DRBV 30" }, + { 14175, "DRBV 50" }, + { 14220, "DRBV 51" }, + { 14265, "DRBV 51A" }, + { 14310, "DRBV 51B" }, + { 14355, "DRBV 51C" }, + { 14400, "Drop Kick" }, + { 14445, "DRUA 31" }, + { 14490, "Drum Tilt" }, + { 14535, "Drum Tilt A" }, + { 14545, "Drum Tilt B" }, + { 14580, "Dumbo" }, + { 14600, "ECR-90" }, + { 14625, "Egg Cup A/B" }, + { 14670, "EKCO 190" }, + { 14715, "EL M 2001B" }, + { 14760, "EL M 2207" }, + { 14770, "EL/M 2216(V)" }, + { 14805, "ELTA EL/M 2221 GM STGR" }, + { 14810, "ELTA SIS" }, + { 14850, "EMD 2900" }, + { 14895, "End Tray" }, + { 14940, "Exocet 1" }, + { 14985, "Exocet 1 MH" }, + { 15030, "Exocet 2" }, + { 15075, "Eye Bowl" }, + { 15120, "Eye Shield" }, + { 15140, "F332Z" }, + { 15160, "FALCON" }, + { 15165, "Fan Song A" }, + { 15200, "Fan Song B/F TA" }, + { 15210, "Fan Song B/F TT" }, + { 15220, "Fan Song C/E TA" }, + { 15230, "Fan Song C/E TT" }, + { 15240, "Fan Song C/E MG" }, + { 15255, "Fan Song B/FF MG" }, + { 15300, "Fan Tail" }, + { 15310, "FCR-1401" }, + { 15345, "Fin Curve" }, + { 15390, "Fire Can" }, + { 15435, "Fire Dish" }, + { 15470, "Fire Dome TA" }, + { 15475, "Fire Dome TT" }, + { 15480, "Fire Dome TI" }, + { 15525, "Fire Iron" }, + { 15570, "Fire Wheel" }, + { 15615, "Fish Bowl" }, + { 15660, "Flap Lid" }, + { 15705, "Flap Truck" }, + { 15750, "Flap Wheel" }, + { 15795, "Flash Dance" }, + { 15840, "P-15, Flat Face A B C D" }, + { 15885, "Flat Screen" }, + { 15930, "Flat Spin" }, + { 15975, "Flat Twin" }, + { 16020, "Fledermaus" }, + { 16030, "FLYCATCHER" }, + { 16065, "Fly Screen" }, + { 16110, "Fly Screen A&B" }, + { 16155, "Fly Trap B" }, + { 16200, "Fog Lamp MG" }, + { 16245, "Fog Lamp TT" }, + { 16290, "Foil Two" }, + { 16335, "Fox Hunter" }, + { 16380, "FOX FIREFox Fire AL" }, + { 16390, "FOX FIRE ILL" }, + { 16400, "FR-151A" }, + { 16410, "FR-1505 DA" }, + { 16420, "FR-2000" }, + { 16421, "FR-2855W" }, + { 16425, "Front Dome" }, + { 16470, "Front Door" }, + { 16515, "Front Piece" }, + { 16560, "Furuno" }, + { 16561, "Furuno 1721" }, + { 16605, "Furuno 701" }, + { 16650, "Furuno 711 2" }, + { 16695, "Furuno 2400" }, + { 16740, "GA 01 00" }, + { 16785, "Gage" }, + { 16830, "Garpin" }, + { 16875, "GEM BX 132" }, + { 16880, "MPDR-12, Gepard TA" }, + { 16884, "Gepard TT" }, + { 16888, "GERAN-F" }, + { 16900, "GIRAFFE" }, + { 16915, "Gin Sling TA" }, + { 16920, "Gin Sling, Gin Sling TT" }, + { 16925, "Gin Sling MG" }, + { 16945, "GPN-22" }, + { 16950, "GRN-9" }, + { 16965, "Green Stain" }, + { 17010, "Grid Bow" }, + { 17025, "9S32, GRILL PAN TT" }, + { 17055, "Guardsman" }, + { 17070, "RPK-2, GUN DISH (ZSU-23/4)" }, + { 17100, "Hair Net" }, + { 17145, "Half Plate A" }, + { 17190, "Half Plate B" }, + { 17220, "HARD" }, + { 17235, "Hawk Screech" }, + { 17280, "Head Light A" }, + { 17325, "Head Lights" }, + { 17370, "Head Lights C" }, + { 17415, "Head Lights MG A" }, + { 17460, "Head Lights MG B" }, + { 17505, "Head Lights TT" }, + { 17550, "Head Net" }, + { 17595, "Hen Egg" }, + { 17640, "Hen House" }, + { 17685, "Hen Nest" }, + { 17730, "Hen Roost" }, + { 17775, "High Brick" }, + { 17820, "High Fix" }, + { 17865, "High Lark TI" }, + { 17910, "High Lark 1" }, + { 17955, "High Lark 2" }, + { 18000, "High Lark 4" }, + { 18045, "High Lune" }, + { 18090, "High Pole A&B" }, + { 18135, "High Scoop" }, + { 18150, "9S19MT, HIGH SCREEN" }, + { 18180, "High Sieve" }, + { 18200, "HN-503" }, + { 18225, "Home Talk" }, + { 18270, "Horn Spoon" }, + { 18280, "HOT BRICK" }, + { 18315, "Hot Flash" }, + { 18320, "IRL144M, Hot Shot TA" }, + { 18325, "IRL144M, Hot Shot TT" }, + { 18330, "IRL144M, Hot Shot MG" }, + { 18360, "IFF MK XII AIMS UPX 29" }, + { 18405, "IFF MK XV" }, + { 18410, "Javelin MG" }, + { 18450, "Jay Bird" }, + { 18460, "JRC-NMD-401" }, + { 18495, "Jupiter" }, + { 18540, "Jupiter II" }, + { 18550, "JY-8" }, + { 18555, "JY-9" }, + { 18560, "JY-14" }, + { 18585, "K376Z" }, + { 18630, "Kelvin Hughes 2A" }, + { 18675, "Kelvin Hughes 14/9" }, + { 18720, "Kelvin Hughes type 1006" }, + { 18765, "Kelvin Hughes type 1007" }, + { 18785, "KH-902M" }, + { 18810, "Kite Screech" }, + { 18855, "Kite Screech A" }, + { 18900, "Kite Screech B" }, + { 18945, "Kivach" }, + { 18990, "Knife Rest" }, + { 19035, "P-10, Knife Rest B" }, + { 19037, "KNIFE REST C" }, + { 19050, "KR-75" }, + { 19080, "KSA SRN" }, + { 19125, "KSA TSR" }, + { 19170, "Land Fall" }, + { 19215, "Land Roll MG" }, + { 19260, "Land Roll TA" }, + { 19305, "Land Roll TT" }, + { 19310, "LC-150" }, + { 19350, "Leningraf" }, + { 19395, "Light Bulb" }, + { 19400, "LMT NRAI-6A" }, + { 19440, "LN 55" }, + { 19485, "Ln 66" }, + { 19530, "Long Bow" }, + { 19575, "Long Brick" }, + { 19620, "Long Bull" }, + { 19665, "Long Eye" }, + { 19710, "Long Head" }, + { 19755, "Long Talk" }, + { 19800, "Long Track" }, + { 19845, "Long Trough" }, + { 19890, "Look Two" }, + { 19935, "LORAN" }, + { 19950, "Low Blow TA" }, + { 19955, "Low Blow TT" }, + { 19960, "Low Blow MG" }, + { 19980, "Low Sieve" }, + { 20025, "Low Trough" }, + { 20040, "TRS-2050, LP-23" }, + { 20070, "LW 08" }, + { 20090, "M-1983 FCR" }, + { 20115, "M22-40" }, + { 20160, "M44" }, + { 20205, "M401Z" }, + { 20250, "M585Z" }, + { 20295, "M588Z" }, + { 20340, "MA 1 IFF Portion" }, + { 20360, "MARELD" }, + { 20385, "MA Type 909#" }, + { 20430, "Marconi 1810" }, + { 20475, "Marconi Canada HC 75" }, + { 20495, "Marconi S 713" }, + { 20520, "Marconi S 1802" }, + { 20530, "Marconi S247" }, + { 20565, "Marconi S 810" }, + { 20585, "Marconi SA 10" }, + { 20610, "Marconi type 967" }, + { 20655, "Marconi type 968" }, + { 20700, "Marconi type 992" }, + { 20745, "Marconi/signaal type 1022" }, + { 20790, "Marconi/signaal type 910" }, + { 20835, "Marconi/signaal type 911" }, + { 20880, "Marconi/signaal type 992R" }, + { 20925, "Mesh Brick" }, + { 20950, "Mirage ILL" }, + { 20970, "MK 15 CIWS" }, + { 21015, "MK-23" }, + { 21060, "MK 23 TAS" }, + { 21105, "MK 25" }, + { 21150, "MK-35 M2" }, + { 21195, "MK 92" }, + { 21240, "MK-92 CAS" }, + { 21285, "MK-92 STIR" }, + { 21330, "MK 95" }, + { 21340, "MLA-1" }, + { 21375, "MM APS 705" }, + { 21420, "MM SPG 74" }, + { 21465, "MM SPG 75" }, + { 21490, "MM SPN 703" }, + { 21510, "MM SPS 702" }, + { 21555, "MM SPS 768" }, + { 21600, "MM SPS 774" }, + { 21645, "Moon 4" }, + { 21650, "MMRS" }, + { 21690, "MPDR 18 X" }, + { 21710, "MT-305X" }, + { 21735, "Muff Cob" }, + { 21780, "Mushroom" }, + { 21825, "Mushroom 1" }, + { 21870, "Mushroom 2" }, + { 21880, "N920Z" }, + { 21890, "Nanjing B" }, + { 21895, "Nanjing C" }, + { 21915, "Nayada" }, + { 21960, "Neptun" }, + { 21980, "NIKE TT" }, + { 22005, "NRBA 50" }, + { 22050, "NRBA 51" }, + { 22095, "NRBF 20A" }, + { 22140, "Nysa B" }, + { 22185, "O524A" }, + { 22230, "O580B" }, + { 22275, "O625Z" }, + { 22320, "O626Z" }, + { 22345, "Odd Group" }, + { 22365, "Odd Lot" }, + { 22410, "Odd Pair" }, + { 22455, "Oka" }, + { 22500, "OKEAN" }, + { 22545, "OKINXE 12C" }, + { 22590, "OMEGA" }, + { 22635, "Omera ORB32" }, + { 22680, "One Eye" }, + { 22690, "OP-28" }, + { 22725, "OPS-16B" }, + { 22730, "OPS-18" }, + { 22740, "OPS-28" }, + { 22770, "OR-2" }, + { 22810, "ORB-31S" }, + { 22815, "ORB 32" }, + { 22860, "Orion Rtn 10X" }, + { 22905, "Otomat MK II Teseo" }, + { 22950, "Owl Screech" }, + { 22955, "P360Z" }, + { 22960, "PA-1660" }, + { 22995, "Palm Frond" }, + { 23040, "Palm Frond AB" }, + { 23085, "Pat Hand TT" }, + { 23095, "Pat Hand MG" }, + { 23130, "Patty Cake" }, + { 23175, "Pawn Cake" }, + { 23220, "PBR 4 Rubin" }, + { 23265, "Pea Sticks" }, + { 23310, "Peel Cone" }, + { 23355, "Peel Group" }, + { 23400, "Peel Group A" }, + { 23445, "Peel Group B" }, + { 23490, "Peel Pair" }, + { 23535, "Philips 9LV 200" }, + { 23580, "Philips 9LV 331" }, + { 23625, "Philips LV 223" }, + { 23670, "Philips Sea Giraffe 50 HC" }, + { 23690, "Pin Jib" }, + { 23710, "Plank Shad" }, + { 23715, "Plank Shave" }, + { 23760, "Plank Shave A" }, + { 23805, "Plank Shave B" }, + { 23850, "Plate Steer" }, + { 23895, "Plessey AWS 1" }, + { 23940, "Plessey AWS 4" }, + { 23985, "Plessey AWS 6" }, + { 23990, "Plessey RJ" }, + { 24030, "Plessey type 996" }, + { 24075, "Plinth Net" }, + { 24095, "Pluto" }, + { 24100, "POHJANPALO" }, + { 24120, "POLLUX" }, + { 24165, "Pop Group" }, + { 24210, "Pop Group MG" }, + { 24255, "Pop Group TA" }, + { 24300, "Pop Group TT" }, + { 24345, "Pork Trough" }, + { 24390, "Post Bow" }, + { 24435, "Post Lamp" }, + { 24480, "Pot Drum" }, + { 24525, "Pot Head" }, + { 24570, "PRIMUS 40 WXD" }, + { 24615, "PRIMUS 300SL" }, + { 24620, "Primus 3000" }, + { 24650, "PS-05A" }, + { 24660, "PS 46 A" }, + { 24705, "PS 70 R" }, + { 24710, "PS-890" }, + { 24750, "Puff Ball" }, + { 24770, "R-76" }, + { 24780, "RAC-30" }, + { 24795, "Racal 1229" }, + { 24840, "Racal AC 2690 BT" }, + { 24885, "Racal Decca 1216" }, + { 24930, "Racal Decca 360" }, + { 24975, "Racal Decca AC 1290" }, + { 25020, "Racal Decca TM 1229" }, + { 25065, "Racal Decca TM 1626" }, + { 25110, "Racal DRBN 34A" }, + { 25155, "Radar 24" }, + { 25200, "RAN 7S" }, + { 25205, "RAN 10S" }, + { 25245, "RAN 11 LX" }, + { 25260, "Rapier TA" }, + { 25265, "Rapier 2000 TA, Dagger" }, + { 25270, "Rapier MG" }, + { 25280, "RAT-31S" }, + { 25285, "RATAC (LCT)" }, + { 25290, "Raytheon 1220" }, + { 25300, "Raytheon 1302" }, + { 25335, "Raytheon 1500" }, + { 25380, "Raytheon 1645" }, + { 25425, "Raytheon 1650" }, + { 25470, "Raytheon 1900" }, + { 25515, "Raytheon 2502" }, + { 25560, "Raytheon TM 1650/6X" }, + { 25605, "Raytheon TM 1660/12S" }, + { 25630, "RAY-1220XR" }, + { 25635, "RAY-1401" }, + { 25650, "Ray 2900" }, + { 25695, "Raypath" }, + { 25735, "RBE2" }, + { 25740, "RDM" }, + { 25760, "RDY" }, + { 25785, "RDN 72" }, + { 25830, "RDR 1A" }, + { 25835, "RDR 1E" }, + { 25840, "RDR 4A" }, + { 25875, "RDR 1200" }, + { 25885, "RDR 1400" }, + { 25890, "RDR 1400 C" }, + { 25895, "RDR 1500" }, + { 25920, "Rice Lamp" }, + { 25965, "Rice Pad" }, + { 26010, "Rice Screen" }, + { 26055, "ROLAND BN" }, + { 26100, "ROLAND MG" }, + { 26145, "ROLAND TA" }, + { 26190, "ROLAND TT" }, + { 26235, "Round Ball" }, + { 26280, "Round House" }, + { 26325, "Round House B" }, + { 26330, "RT-02/50" }, + { 26350, "RTN-1A" }, + { 26370, "RV2" }, + { 26415, "RV3" }, + { 26460, "RV5" }, + { 26505, "RV10" }, + { 26550, "RV17" }, + { 26595, "RV18" }, + { 26610, "RV-377" }, + { 26640, "RV UM" }, + { 26660, "RXN 2-60" }, + { 26670, "S-1810CD" }, + { 26685, "SA 2 Guideline" }, + { 26730, "SA 3 Goa" }, + { 26775, "SA 8 Gecko DT" }, + { 26795, "SA-12 TELAR ILL" }, + { 26820, "SA N 7 Gadfly TI" }, + { 26865, "SA N 11 Cads 1 UN" }, + { 26910, "Salt Pot A&B" }, + { 26955, "SATURNE II" }, + { 27000, "Scan Can" }, + { 27045, "Scan Fix" }, + { 27090, "Scan Odd" }, + { 27135, "Scan Three" }, + { 27140, "SCANTER (CSR)" }, + { 27141, "SCORADS" }, + { 27150, "SCOREBOARD" }, + { 27180, "Scoup Plate" }, + { 27190, "SCR-584" }, + { 27225, "Sea Archer 2" }, + { 27270, "Sea Hunter 4 MG" }, + { 27315, "Sea Hunter 4 TA" }, + { 27360, "Sea Hunter 4 TT" }, + { 27405, "Sea Gull" }, + { 27450, "Sea Net" }, + { 27495, "Sea Spray" }, + { 27540, "Sea Tiger" }, + { 27570, "Searchwater" }, + { 27585, "Selenia Orion 7" }, + { 27630, "Selenia type 912" }, + { 27675, "Selennia RAN 12 L/X" }, + { 27720, "Selennia RTN 10X" }, + { 27765, "Selinia ARP 1645" }, + { 27810, "SGR 102 00" }, + { 27855, "SGR 103/02" }, + { 27870, "SGR-104" }, + { 27900, "Sheet Bend" }, + { 27945, "Sheet Curve" }, + { 27990, "Ship Globe" }, + { 28035, "Ship Wheel" }, + { 28080, "SGR 114" }, + { 28125, "Shore Walk A" }, + { 28170, "Short Horn" }, + { 28215, "Shot Dome" }, + { 28260, "Side Globe JN" }, + { 28280, "PRV-11, Side Net" }, + { 28305, "Side Walk A" }, + { 28350, "Signaal DA 02" }, + { 28395, "Signaal DA 05" }, + { 28440, "Signaal DA 08" }, + { 28485, "Signaal LW 08" }, + { 28530, "Signaal LWOR" }, + { 28575, "Signaal M45" }, + { 28620, "Signaal MW 08" }, + { 28665, "Signaal SMART" }, + { 28710, "Signaal STING" }, + { 28755, "Signaal STIR" }, + { 28800, "Signaal WM 20/2" }, + { 28845, "Signaal WM 25" }, + { 28890, "Signaal WM 27" }, + { 28935, "Signaal WM 28" }, + { 28980, "Signaal ZW 01" }, + { 29025, "Signaal ZW 06" }, + { 29070, "Ski Pole" }, + { 29115, "Skin Head" }, + { 29160, "Skip Spin" }, + { 29185, "SKYGUARD TA, UAR-1021" }, + { 29190, "SKYGUARD TT, UAR-1021" }, + { 29205, "Sky Watch" }, + { 29215, "SKYSHADOW" }, + { 29220, "SKYSHIELD TA" }, + { 29250, "SL" }, + { 29270, "SL/ALQ-234" }, + { 29295, "Slap Shot E" }, + { 29340, "Slim Net" }, + { 29385, "Slot Back A" }, + { 29400, "Slot Back ILL" }, + { 29430, "Slot Back B" }, + { 29440, "Slot Rest" }, + { 29475, "SMA 3 RM" }, + { 29520, "SMA 3 RM 20" }, + { 29565, "SMA 3RM 20A/SMG" }, + { 29610, "SMA BPS 704" }, + { 29655, "SMA SPIN 749 (V) 2" }, + { 29700, "SMA SPN 703" }, + { 29745, "SMA SPN 751" }, + { 29790, "SMA SPOS 748" }, + { 29835, "SMA SPQ 2" }, + { 29880, "SMA SPQ 2D" }, + { 29925, "SMA SPQ 701" }, + { 29970, "SMA SPS 702 UPX" }, + { 30015, "SMA ST 2 OTOMAT II MH" }, + { 30060, "SMA 718 Beacon" }, + { 30080, "SNAP SHOT" }, + { 30105, "Snoop Drift" }, + { 30150, "Snoop Head" }, + { 30195, "Snoop Pair" }, + { 30240, "Snoop Plate" }, + { 30285, "Snoop Slab" }, + { 30330, "Snoop Tray" }, + { 30375, "Snoop Tray 1" }, + { 30420, "Snoop Tray 2" }, + { 30465, "Snoop Watch" }, + { 30470, "9S18M1, Snow Drift" }, + { 30510, "SO-1" }, + { 30520, "SO-12" }, + { 30555, "SO A Communist" }, + { 30580, "SO-69" }, + { 30600, "Sock Eye" }, + { 30645, "SOM 64" }, + { 30670, "SPADA TT" }, + { 30690, "Sparrow (AIM/RIM-7) ILL" }, + { 30700, "Sperry M-3" }, + { 30735, "SPG 53F" }, + { 30780, "SPG 70 (RTN 10X)" }, + { 30825, "SPG 74 (RTN 20X)" }, + { 30870, "SPG 75 (RTN 30X)" }, + { 30915, "SPG 76 (RTN 30X)" }, + { 30960, "Spin Scan A" }, + { 31005, "Spin Scan B" }, + { 31050, "Spin Trough" }, + { 31095, "Splash Drop" }, + { 31140, "SPN 35A" }, + { 31185, "SPN 41" }, + { 31230, "SPN 42" }, + { 31275, "SPN 43A" }, + { 31320, "SPN 43B" }, + { 31365, "SPN 44" }, + { 31410, "SPN 46" }, + { 31455, "SPN 703" }, + { 31500, "SPN 728 (V) 1" }, + { 31545, "SPN 748" }, + { 31590, "SPN 750" }, + { 31635, "Sponge Cake" }, + { 31680, "P-12, Spoon Rest" }, + { 31681, "P-18, Spoon Rest A" }, + { 31682, "P-18, Spoon Rest B" }, + { 31684, "P-18, Spoon Rest D" }, + { 31725, "SPQ 712 (RAN 12 L/X)" }, + { 31770, "SPS 6C" }, + { 31815, "SPS 10F" }, + { 31860, "SPS 12" }, + { 31905, "(deleted)SPS 58" }, + { 31950, "(deleted)SPS 64" }, + { 31995, "SPS 768 (RAN EL)" }, + { 32040, "SPS 774 (RAN 10S)" }, + { 32085, "SPY 790" }, + { 32130, "Square Head" }, + { 32175, "Square Pair" }, + { 32220, "Square Slot" }, + { 32265, "Square Tie" }, + { 32310, "Squash Dome" }, + { 32330, "P-15M, Squat Eye" }, + { 32355, "Squint Eye" }, + { 32400, "SRN 6" }, + { 32445, "SRN 15" }, + { 32490, "SRN 745" }, + { 32535, "SRO 1" }, + { 32580, "SRO 2" }, + { 32625, "SS C 2B Samlet MG" }, + { 32670, "SS N 2A B CSSC" }, + { 32715, "SS N 2A B CSSC 2A 3A2 MH" }, + { 32760, "SS N 2C Seeker" }, + { 32805, "SS N 2C D Styx" }, + { 32850, "SS N 2C D Styx C D MH" }, + { 32895, "SS N 3 SSC SS C 18 BN" }, + { 32940, "SS N 3B Sepal AL" }, + { 32985, "SS N 3B Sepal MH" }, + { 33030, "SS N 9 Siren" }, + { 33075, "SS N 9 Siren AL" }, + { 33120, "SS N 9 Siren MH" }, + { 33165, "SS N 12 Sandbox AL" }, + { 33210, "SS N 12 Sandbox MH" }, + { 33255, "SS N 19 Shipwreck" }, + { 33300, "SS N 19 Shipwreck AL" }, + { 33345, "SS N 19 Shipwreck MH" }, + { 33390, "SS N 21 AL" }, + { 33435, "SS N 22 Sunburn" }, + { 33480, "SS N 22 Sunburn MH" }, + { 33525, "Stone Cake" }, + { 33570, "STR 41" }, + { 33590, "Straight Flush TA" }, + { 33595, "Straight Flush TT" }, + { 33600, "Straight Flush ILL" }, + { 33615, "Strike Out" }, + { 33660, "Strut Curve" }, + { 33705, "Strut Pair" }, + { 33750, "Strut Pair 1" }, + { 33795, "Strut Pair 2" }, + { 33840, "Sun Visor" }, + { 33860, "Superfledermaus" }, + { 33885, "Swift Rod 1" }, + { 33930, "Swift Rod 2" }, + { 33975, "T1166" }, + { 34020, "T1171" }, + { 34040, "T1202" }, + { 34065, "T6004" }, + { 34110, "T6031" }, + { 34155, "T8067" }, + { 34200, "T8068" }, + { 34245, "T8124" }, + { 34290, "T8408" }, + { 34335, "T8911" }, + { 34380, "T8937" }, + { 34425, "T8944" }, + { 34470, "T8987" }, + { 34515, "P-14, Tall King" }, + { 34560, "Tall Mike" }, + { 34605, "Tall Path" }, + { 34625, "Team Work" }, + { 34640, "THAAD GBR" }, + { 34650, "THD 225" }, + { 34670, "THD 1940, Picador" }, + { 34695, "THD 5500" }, + { 34740, "Thin Path" }, + { 34785, "PRV-9, Thin Skin" }, + { 34795, "Thompson CSF TA-10" }, + { 34830, "Thompson CSF TH D 1040 Neptune" }, + { 34875, "Thompson CSF Calypso" }, + { 34920, "Thompson CSF CASTOR" }, + { 34965, "Thompson CSF Castor II" }, + { 35010, "Thompson CSF DRBC 32A" }, + { 35055, "Thompson CSF DRBJ 11 D/E" }, + { 35100, "Thompson CSF DRBV 15A" }, + { 35145, "Thompson CSF DRBV 15C" }, + { 35190, "Thompson CSF DRBV 22D" }, + { 35235, "Thompson CSF DRBV 23B" }, + { 35280, "Thompson CSF DRUA 33" }, + { 35325, "Thompson CSF Mars DRBV 21A" }, + { 35370, "Thompson CSF Sea Tiger" }, + { 35415, "Thompson CSF Triton" }, + { 35460, "Thompson CSF Vega with DRBC 32E" }, + { 35480, "TRS-2105, TIGER-G" }, + { 35490, "TRS-2100, TIGER-S" }, + { 35505, "Tie Rods" }, + { 35550, "36D6, Tin Shield" }, + { 35570, "Tin Trap" }, + { 35580, "TIRSPONDER" }, + { 35595, "Toad Stool 1" }, + { 35640, "Toad Stool 2" }, + { 35685, "Toad Stool 3" }, + { 35730, "Toad Stool 4" }, + { 35775, "Toad Stool 5" }, + { 35800, "Tomb Stone" }, + { 35820, "Top Bow" }, + { 35865, "Top Dome" }, + { 35910, "Top Knot" }, + { 35955, "Top Mesh" }, + { 36000, "Top Pair" }, + { 36045, "Top Plate" }, + { 36090, "Top Sail" }, + { 36135, "Top Steer" }, + { 36180, "Top Trough" }, + { 36220, "Scrum Half TA" }, + { 36225, "TorScrum Half TT, Tor" }, + { 36230, "Scrum Half MG" }, + { 36270, "Track Dish" }, + { 36315, "TORSO M" }, + { 36360, "Trap Door" }, + { 36380, "TRISPONDE" }, + { 36405, "TRS 3033" }, + { 36420, "TRS 3405" }, + { 36425, "TRS 3410" }, + { 36430, "TRS 3415" }, + { 36450, "TRS-N" }, + { 36495, "TSE 5000" }, + { 36540, "TSR 333" }, + { 36585, "Tube Arm" }, + { 36630, "Twin Eyes" }, + { 36675, "Twin Pill" }, + { 36720, "Twin Scan" }, + { 36765, "Twin Scan Ro" }, + { 36810, "Two Spot" }, + { 36855, "TYPE 262" }, + { 36900, "TYPE 275" }, + { 36945, "TYPE 293" }, + { 36990, "TYPE 343 SUN VISOR B" }, + { 37035, "TYPE 347B" }, + { 37050, "Type-404A(CH)" }, + { 37080, "Type 756" }, + { 37125, "TYPE 903" }, + { 37170, "TYPE 909 TI" }, + { 37215, "TYPE 909 TT" }, + { 37260, "TYPE 910" }, + { 37265, "TYPE-931(CH)" }, + { 37305, "TYPE 965" }, + { 37350, "TYPE 967" }, + { 37395, "TYPE 968" }, + { 37440, "TYPE 974" }, + { 37485, "TYPE 975" }, + { 37530, "TYPE 978" }, + { 37575, "TYPE 992" }, + { 37620, "TYPE 993" }, + { 37665, "TYPE 994" }, + { 37710, "TYPE 1006(1)" }, + { 37755, "TYPE 1006(2)" }, + { 37800, "TYPE 1022" }, + { 37845, "UK MK 10" }, + { 37850, "UPS-220C" }, + { 37890, "UPX 1 10" }, + { 37935, "UPX 27" }, + { 37980, "URN 20" }, + { 38025, "URN 25" }, + { 38045, "VOLEX III/IV" }, + { 38070, "W8818" }, + { 38115, "W8838" }, + { 38120, "W8852" }, + { 38160, "WAS-74S" }, + { 38205, "Wasp Head" }, + { 38210, "WATCHDOG" }, + { 38250, "Watch Guard" }, + { 38260, "Watchman" }, + { 38295, "Western Electric MK 10" }, + { 38320, "Westinghouse ADR-4 LRSR" }, + { 38340, "Westinghouse Electric SPG 50" }, + { 38385, "Westinghouse Electric W 120" }, + { 38430, "Westinghouse SPS 29C" }, + { 38475, "Westinghouse SPS 37" }, + { 38520, "Wet Eye" }, + { 38565, "Wet Eye Mod" }, + { 38570, "WGU-41/B" }, + { 38572, "WGU-44/B" }, + { 38610, "Whiff" }, + { 38655, "Whiff Brick" }, + { 38700, "Whiff Fire" }, + { 38715, "WHITE HOUSE" }, + { 38745, "Wild Card" }, + { 38790, "Witch Eight" }, + { 38835, "Witch Five" }, + { 38880, "WM2X Series" }, + { 38925, "WM2X Series CAS" }, + { 38950, "WSR-74C" }, + { 38955, "WSR-74S" }, + { 38970, "Wood Gage" }, + { 39015, "Yard Rake" }, + { 39060, "Yew Loop" }, + { 39105, "Yo-Yo" }, + { 39150, "(deleted)" }, + { 0, NULL } +}; + +/****************************************************************************** +* +* FIELDS +* +*******************************************************************************/ static gint proto_dis = -1; -int hf_dis_proto_ver = -1; -int hf_dis_exercise_id = -1; -int hf_dis_pdu_type = -1; -int hf_dis_proto_fam = -1; -int hf_dis_pdu_length = -1; -int hf_dis_entity_id_site = -1; -int hf_dis_entity_id_application = -1; -int hf_dis_entity_id_entity = -1; -int hf_dis_num_art_params = -1; -int hf_dis_entityKind = -1; -int hf_dis_entityDomain = -1; -int hf_dis_category_land = -1; -int hf_dis_category_air = -1; -int hf_dis_category_surface = -1; -int hf_dis_category_subsurface = -1; -int hf_dis_category_space = -1; -int hf_dis_category_radio = -1; -int hf_dis_num_electromagnetic_emission_systems = -1; -int hf_dis_emitter_name = -1; -int hf_dis_emission_function = -1; -int hf_dis_beam_function = -1; -int hf_dis_radio_id = -1; -int hf_dis_ens = -1; -int hf_dis_ens_class = -1; -int hf_dis_ens_type = -1; -int hf_dis_ens_type_audio = -1; -int hf_dis_tdl_type = -1; -int hf_dis_sample_rate = -1; -int hf_dis_data_length = -1; -int hf_dis_num_of_samples = -1; -int hf_dis_signal_data = -1; -int hf_dis_radio_category = -1; -int hf_dis_nomenclature_version = -1; -int hf_dis_nomenclature = -1; -int hf_dis_radio_transmit_state = -1; -int hf_dis_radio_input_source = -1; -int hf_dis_antenna_pattern_type = -1; -int hf_dis_antenna_pattern_length = -1; -int hf_dis_transmit_frequency = -1; -int hf_dis_spread_spectrum_usage = -1; -int hf_dis_frequency_hopping = -1; -int hf_dis_pseudo_noise_modulation = -1; -int hf_dis_time_hopping = -1; -int hf_dis_modulation_major = -1; -int hf_dis_modulation_system = -1; -int hf_dis_crypto_system = -1; -int hf_dis_crypto_key = -1; -int hf_dis_encryption_mode = -1; -int hf_dis_key_identifier = -1; -int hf_dis_modulation_parameter_length = -1; -int hf_dis_mod_param_fh_net_id = -1; -int hf_dis_mod_param_fh_set_id = -1; -int hf_dis_mod_param_fh_lo_set_id = -1; -int hf_dis_mod_param_fh_msg_start = -1; -int hf_dis_mod_param_fh_reserved = -1; -int hf_dis_mod_param_fh_sync_time_offset = -1; -int hf_dis_mod_param_fh_security_key = -1; -int hf_dis_mod_param_fh_clear_channel = -1; -int hf_dis_mod_param_dump = -1; -int hf_dis_mod_param_ts_allocation_mode = -1; -int hf_dis_mod_param_transmitter_prim_mode = -1; -int hf_dis_mod_param_transmitter_second_mode = -1; -int hf_dis_mod_param_sync_state = -1; -int hf_dis_mod_param_network_sync_id = -1; -int hf_dis_antenna_pattern_parameter_dump = -1; -int hf_dis_num_shafts = -1; -int hf_dis_num_apas = -1; -int hf_dis_num_ua_emitter_systems = -1; -int hf_dis_signal_link16_npg = -1; -int hf_dis_signal_link16_tsec_cvll = -1; -int hf_dis_signal_link16_msec_cvll = -1; -int hf_dis_signal_link16_message_type = -1; -int hf_dis_signal_link16_ptt = -1; -int hf_dis_signal_link16_time_slot_type = - 1; -int hf_dis_signal_link16_rti = -1; -int hf_dis_signal_link16_stn = -1; -int hf_dis_signal_link16_sdusn = -1; +static int hf_dis_proto_ver = -1; +static int hf_dis_exercise_id = -1; +static int hf_dis_pdu_type = -1; +static int hf_dis_proto_fam = -1; +static int hf_dis_pdu_length = -1; +static int hf_dis_entity_id_site = -1; +static int hf_dis_entity_id_application = -1; +static int hf_dis_entity_id_entity = -1; +static int hf_dis_num_art_params = -1; +static int hf_dis_entityKind = -1; +static int hf_dis_entityDomain = -1; +static int hf_dis_category_land = -1; +static int hf_dis_category_air = -1; +static int hf_dis_category_surface = -1; +static int hf_dis_category_subsurface = -1; +static int hf_dis_category_space = -1; +static int hf_dis_category_radio = -1; +static int hf_dis_num_electromagnetic_emission_systems = -1; +static int hf_dis_emitter_name = -1; +static int hf_dis_emission_function = -1; +static int hf_dis_beam_function = -1; +static int hf_dis_radio_id = -1; +static int hf_dis_ens = -1; +static int hf_dis_ens_class = -1; +static int hf_dis_ens_type = -1; +static int hf_dis_ens_type_audio = -1; +static int hf_dis_tdl_type = -1; +static int hf_dis_sample_rate = -1; +static int hf_dis_data_length = -1; +static int hf_dis_num_of_samples = -1; +static int hf_dis_signal_data = -1; +static int hf_dis_radio_category = -1; +static int hf_dis_nomenclature_version = -1; +static int hf_dis_nomenclature = -1; +static int hf_dis_radio_transmit_state = -1; +static int hf_dis_radio_input_source = -1; +static int hf_dis_antenna_pattern_type = -1; +static int hf_dis_antenna_pattern_length = -1; +static int hf_dis_transmit_frequency = -1; +static int hf_dis_spread_spectrum_usage = -1; +static int hf_dis_frequency_hopping = -1; +static int hf_dis_pseudo_noise_modulation = -1; +static int hf_dis_time_hopping = -1; +static int hf_dis_modulation_major = -1; +static int hf_dis_modulation_system = -1; +static int hf_dis_crypto_system = -1; +static int hf_dis_crypto_key = -1; +static int hf_dis_encryption_mode = -1; +static int hf_dis_key_identifier = -1; +static int hf_dis_modulation_parameter_length = -1; +static int hf_dis_mod_param_fh_net_id = -1; +static int hf_dis_mod_param_fh_set_id = -1; +static int hf_dis_mod_param_fh_lo_set_id = -1; +static int hf_dis_mod_param_fh_msg_start = -1; +static int hf_dis_mod_param_fh_reserved = -1; +static int hf_dis_mod_param_fh_sync_time_offset = -1; +static int hf_dis_mod_param_fh_security_key = -1; +static int hf_dis_mod_param_fh_clear_channel = -1; +static int hf_dis_mod_param_dump = -1; +static int hf_dis_mod_param_ts_allocation_mode = -1; +static int hf_dis_mod_param_transmitter_prim_mode = -1; +static int hf_dis_mod_param_transmitter_second_mode = -1; +static int hf_dis_mod_param_sync_state = -1; +static int hf_dis_mod_param_network_sync_id = -1; +static int hf_dis_antenna_pattern_parameter_dump = -1; +static int hf_dis_num_shafts = -1; +static int hf_dis_num_apas = -1; +static int hf_dis_num_ua_emitter_systems = -1; +static int hf_dis_signal_link16_npg = -1; +static int hf_dis_signal_link16_tsec_cvll = -1; +static int hf_dis_signal_link16_msec_cvll = -1; +static int hf_dis_signal_link16_message_type = -1; +static int hf_dis_signal_link16_ptt = -1; +static int hf_dis_signal_link16_time_slot_type = - 1; +static int hf_dis_signal_link16_rti = -1; +static int hf_dis_signal_link16_stn = -1; +static int hf_dis_signal_link16_sdusn = -1; + +static gint ettVariableParameters[DIS_PDU_MAX_VARIABLE_PARAMETERS]; +static gint ettVariableRecords[DIS_PDU_MAX_VARIABLE_RECORDS]; + +static gint ettFixedData = -1; +static gint ettVariableData = -1; -/* Initialize the subtree pointers */ static gint ett_dis = -1; static gint ett_dis_header = -1; static gint ett_dis_po_header = -1; static gint ett_dis_payload = -1; -int ett_dis_ens = -1; -int ett_dis_crypto_key = -1; -int ett_dis_signal_link16_network_header = -1; -int ett_dis_signal_link16_message_data = -1; -int ett_dis_signal_link16_jtids_header = -1; +static gint ett_dis_ens = -1; +static gint ett_dis_crypto_key = -1; +static gint ett_dis_signal_link16_network_header = -1; +static gint ett_dis_signal_link16_message_data = -1; +static gint ett_dis_signal_link16_jtids_header = -1; + + +/* enumeration of all field types used for DIS parsing. */ +typedef enum +{ + /* end marker to indicate the end of a parser sequence */ + DIS_FIELDTYPE_END = 0, + + /* basic numeric types */ + DIS_FIELDTYPE_INT8, + DIS_FIELDTYPE_INT16, + DIS_FIELDTYPE_INT32, + DIS_FIELDTYPE_INT64, + DIS_FIELDTYPE_UINT8, + DIS_FIELDTYPE_UINT16, + DIS_FIELDTYPE_UINT32, + DIS_FIELDTYPE_UINT64, + DIS_FIELDTYPE_FLOAT32, + DIS_FIELDTYPE_FLOAT64, + + /* padding */ + DIS_FIELDTYPE_PAD8, + DIS_FIELDTYPE_PAD16, + DIS_FIELDTYPE_PAD24, + DIS_FIELDTYPE_PAD32, + + /* enumerations */ + DIS_FIELDTYPE_ACKNOWLEDGE_FLAG, + DIS_FIELDTYPE_ACTION_ID, + DIS_FIELDTYPE_APPLICATION_GENERAL_STATUS, + DIS_FIELDTYPE_APPLICATION_STATUS_TYPE, + DIS_FIELDTYPE_APPLICATION_TYPE, + DIS_FIELDTYPE_CATEGORY, + DIS_FIELDTYPE_CONTROL_ID, + DIS_FIELDTYPE_DETONATION_RESULT, + DIS_FIELDTYPE_DOMAIN, + DIS_FIELDTYPE_ENTITY_KIND, + DIS_FIELDTYPE_FROZEN_BEHAVIOR, + DIS_FIELDTYPE_PARAMETER_TYPE_DESIGNATOR, + DIS_FIELDTYPE_PDU_TYPE, + DIS_FIELDTYPE_PERSISTENT_OBJECT_TYPE, + DIS_FIELDTYPE_PERSISTENT_OBJECT_CLASS, + DIS_FIELDTYPE_PROTOCOL_FAMILY, + DIS_FIELDTYPE_PROTOCOL_VERSION, + DIS_FIELDTYPE_REASON, + DIS_FIELDTYPE_REQUEST_STATUS, + DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, + DIS_FIELDTYPE_RESPONSE_FLAG, + DIS_FIELDTYPE_TDL_TYPE, + DIS_FIELDTYPE_RADIO_CATEGORY, + DIS_FIELDTYPE_NOMENCLATURE_VERSION, + DIS_FIELDTYPE_NOMENCLATURE, + DIS_FIELDTYPE_RADIO_TRANSMIT_STATE, + DIS_FIELDTYPE_RADIO_INPUT_SOURCE, + DIS_FIELDTYPE_ANTENNA_PATTERN_TYPE, + DIS_FIELDTYPE_SPREAD_SPECTRUM, + DIS_FIELDTYPE_MODULATION_MAJOR, + DIS_FIELDTYPE_MODULATION_DETAIL, + DIS_FIELDTYPE_MODULATION_SYSTEM, + DIS_FIELDTYPE_CRYPTO_SYSTEM, + DIS_FIELDTYPE_EMITTER_NAME, + DIS_FIELDTYPE_EMISSION_FUNCTION, + DIS_FIELDTYPE_BEAM_FUNCTION, + + /* other atomic types */ + DIS_FIELDTYPE_PDU_LENGTH, + DIS_FIELDTYPE_EXERCISE_ID, + DIS_FIELDTYPE_SITE, + DIS_FIELDTYPE_APPLICATION, + DIS_FIELDTYPE_ENTITY, + DIS_FIELDTYPE_APPEARANCE, + DIS_FIELDTYPE_ARTIC_PARAM_TYPE, + DIS_FIELDTYPE_CAPABILITIES, + DIS_FIELDTYPE_COUNTRY, + DIS_FIELDTYPE_DATUM_ID, + DIS_FIELDTYPE_DATUM_LENGTH, + DIS_FIELDTYPE_DEAD_RECKONING_PARAMS, + DIS_FIELDTYPE_DEAD_RECKONING_ALGORITHM, + DIS_FIELDTYPE_DEAD_RECKONING_OTHER_PARAMS, + DIS_FIELDTYPE_ENTITY_MARKING, + DIS_FIELDTYPE_EXTRA, + DIS_FIELDTYPE_FIXED_DATUM_VALUE, + DIS_FIELDTYPE_FIXED_LEN_STR, + DIS_FIELDTYPE_FORCE_ID, + DIS_FIELDTYPE_FUSE, + DIS_FIELDTYPE_NUM_FIXED_DATA, + DIS_FIELDTYPE_NUM_VARIABLE_DATA, + DIS_FIELDTYPE_REQUEST_ID, + DIS_FIELDTYPE_SPECIFIC, + DIS_FIELDTYPE_SUBCATEGORY, + DIS_FIELDTYPE_TIME_INTERVAL, + DIS_FIELDTYPE_TIMESTAMP, + DIS_FIELDTYPE_WARHEAD, + DIS_FIELDTYPE_RADIO_ID, + DIS_FIELDTYPE_SAMPLE_RATE, + DIS_FIELDTYPE_DATA_LENGTH, + DIS_FIELDTYPE_NUMBER_OF_SAMPLES, + DIS_FIELDTYPE_NUM_ARTICULATION_PARAMS, + DIS_FIELDTYPE_ANTENNA_PATTERN_LENGTH, + DIS_FIELDTYPE_TRANSMIT_FREQUENCY, + DIS_FIELDTYPE_MODULATION_PARAMETER_LENGTH, + DIS_FIELDTYPE_FH_NETWORK_ID, + DIS_FIELDTYPE_FH_SET_ID, + DIS_FIELDTYPE_LO_SET_ID, + DIS_FIELDTYPE_FH_MSG_START, + DIS_FIELDTYPE_RESERVED, + DIS_FIELDTYPE_FH_SYNC_TIME_OFFSET, + DIS_FIELDTYPE_FH_SECURITY_KEY, + DIS_FIELDTYPE_FH_CLEAR_CHANNEL, + DIS_FIELDTYPE_TS_ALLOCATION_MODE, + DIS_FIELDTYPE_TRANSMITTER_PRIMARY_MODE, + DIS_FIELDTYPE_TRANSMITTER_SECONDARY_MODE, + DIS_FIELDTYPE_JTIDS_SYNC_STATE, + DIS_FIELDTYPE_NETWORK_SYNC_ID, + DIS_FIELDTYPE_LINK16_NPG, + DIS_FIELDTYPE_LINK16_TSEC_CVLL, + DIS_FIELDTYPE_LINK16_MSEC_CVLL, + DIS_FIELDTYPE_LINK16_MESSAGE_TYPE, + DIS_FIELDTYPE_NUM_ELECTROMAGNETIC_EMISSION_SYSTEMS, + DIS_FIELDTYPE_NUM_OF_SHAFTS, + DIS_FIELDTYPE_NUM_OF_APAS, + DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEMS, + DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEM_BEAMS, + + /* composite types */ + DIS_FIELDTYPE_BURST_DESCRIPTOR, + DIS_FIELDTYPE_CLOCK_TIME, + DIS_FIELDTYPE_ENTITY_ID, + DIS_FIELDTYPE_ENTITY_TYPE, + DIS_FIELDTYPE_RADIO_ENTITY_TYPE, + DIS_FIELDTYPE_EVENT_ID, + DIS_FIELDTYPE_LINEAR_VELOCITY, + DIS_FIELDTYPE_LOCATION_ENTITY, + DIS_FIELDTYPE_LOCATION_WORLD, + DIS_FIELDTYPE_ORIENTATION, + DIS_FIELDTYPE_SIMULATION_ADDRESS, + DIS_FIELDTYPE_VARIABLE_DATUM_VALUE, + DIS_FIELDTYPE_VECTOR_32, + DIS_FIELDTYPE_VECTOR_64, + DIS_FIELDTYPE_ENCODING_SCHEME, + DIS_FIELDTYPE_ANTENNA_LOCATION, + DIS_FIELDTYPE_REL_ANTENNA_LOCATON, + DIS_FIELDTYPE_MODULATION_TYPE, + DIS_FIELDTYPE_CRYPTO_KEY_ID, + DIS_FIELDTYPE_MODULATION_PARAMETERS, + DIS_FIELDTYPE_ANTENNA_PATTERN_PARAMETERS, + DIS_FIELDTYPE_MOD_PARAMS_CCTT_SINCGARS, + DIS_FIELDTYPE_MOD_PARAMS_JTIDS_MIDS, + DIS_FIELDTYPE_LINK16_MESSAGE_DATA, + DIS_FIELDTYPE_LINK16_PTT, + DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM, + DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM, + DIS_FIELDTYPE_EMITTER_SYSTEM, + DIS_FIELDTYPE_FUNDAMENTAL_PARAMETER_DATA, + DIS_FIELDTYPE_TRACK_JAM, + DIS_FIELDTYPE_SHAFTS, + DIS_FIELDTYPE_APA, + DIS_FIELDTYPE_UA_EMITTER_SYSTEMS, + DIS_FIELDTYPE_UA_BEAMS, + DIS_FIELDTYPE_UA_EMITTER_SYSTEM, + DIS_FIELDTYPE_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA, + + /* arrays */ + DIS_FIELDTYPE_FIXED_DATUMS, + DIS_FIELDTYPE_FIXED_DATUM_IDS, + DIS_FIELDTYPE_VARIABLE_DATUMS, + DIS_FIELDTYPE_VARIABLE_DATUM_IDS, + DIS_FIELDTYPE_VARIABLE_PARAMETERS, + DIS_FIELDTYPE_VARIABLE_RECORDS, + DIS_FIELDTYPE_RADIO_DATA + +} DIS_FieldType; + +/* Struct which contains the data needed to parse a single DIS field. + */ +typedef struct DIS_ParserNode_T +{ + DIS_FieldType fieldType; + const char *fieldLabel; + int fieldRepeatLen; + int ettVar; + struct DIS_ParserNode_T *children; + guint32 *outputVar; +} DIS_ParserNode; + +/* Struct which associates a name with a particular bit combination. + */ +typedef struct +{ + guint32 value; + const char *label; +} DIS_BitMaskMapping; + +/* Struct which specifies all possible bit mappings associated with + * a particular bit mask. + */ +typedef struct +{ + guint32 maskBits; + guint32 shiftBits; + const char *label; + DIS_BitMaskMapping bitMappings[33]; +} DIS_BitMask; + +/* all of these variables are assigned by reference */ +/* *(parserNode.outputVar) = value */ +static guint32 disProtocolVersion; +static guint32 pduType; +static guint32 protocolFamily; +static guint32 persistentObjectPduType; +static guint32 entityKind; +static guint32 entityDomain; +static guint32 category; +static guint32 radioID; +static guint32 disRadioTransmitState; +static guint32 encodingScheme; +static guint32 tdlType; +static guint32 numSamples; +static guint32 messageType; +static guint32 numFixed; +static guint32 numVariable; +static guint32 numBeams; +static guint32 numTrackJamTargets; +static guint32 numShafts; +static guint32 numApas; +static guint32 numUAEmitter; +static guint32 numUABeams; +static guint32 variableDatumLength; +static guint32 variableParameterType; +static guint32 variableRecordLength; +static guint32 variableRecordType; +static guint32 majorModulation; +static guint32 systemModulation; +static guint32 modulationParamLength; +static guint32 disAntennaPattern; + +/* Headers + */ +static DIS_ParserNode DIS_FIELDS_PDU_HEADER[] = +{ + { DIS_FIELDTYPE_PROTOCOL_VERSION, "Protocol Version",0,0,0,&disProtocolVersion }, + { DIS_FIELDTYPE_EXERCISE_ID, "Exercise ID",0,0,0,0 }, + { DIS_FIELDTYPE_PDU_TYPE, "PDU Type",0,0,0,&pduType }, + { DIS_FIELDTYPE_PROTOCOL_FAMILY, "Protocol Family",0,0,0,&protocolFamily }, + { DIS_FIELDTYPE_TIMESTAMP, "Timestamp",0,0,0,0 }, + { DIS_FIELDTYPE_PDU_LENGTH, "Length",0,0,0,0 }, + { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_PERSISTENT_OBJECT_HEADER[] = +{ + { DIS_FIELDTYPE_UINT8, "Protocol Version",0,0,0,0 }, + { DIS_FIELDTYPE_PERSISTENT_OBJECT_TYPE, "PO PDU Type",0,0,0,&persistentObjectPduType }, + { DIS_FIELDTYPE_UINT8, "Exercise ID",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "PO Database ID",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Length",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "PDU Count",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* Composite types + */ + +static DIS_ParserNode DIS_FIELDS_BURST_DESCRIPTOR[] = +{ + { DIS_FIELDTYPE_ENTITY_TYPE, "Munition",0,0,0,0 }, + { DIS_FIELDTYPE_WARHEAD, "Warhead",0,0,0,0 }, + { DIS_FIELDTYPE_FUSE, "Fuse",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Quantity",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Rate",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_CLOCK_TIME[] = +{ + { DIS_FIELDTYPE_UINT32, "Hour",0,0,0,0 }, + { DIS_FIELDTYPE_TIMESTAMP, "Time Past The Hour",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_ENTITY_ID[] = +{ + { DIS_FIELDTYPE_SITE, "Site",0,0,0,0 }, + { DIS_FIELDTYPE_APPLICATION, "Application",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY, "Entity",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_ENTITY_TYPE[] = +{ + { DIS_FIELDTYPE_ENTITY_KIND, "Entity Kind",0,0,0,&entityKind }, + { DIS_FIELDTYPE_DOMAIN, "Domain",0,0,0,&entityDomain }, + { DIS_FIELDTYPE_COUNTRY, "Country",0,0,0,0 }, + { DIS_FIELDTYPE_CATEGORY, "Category",0,0,0,&category }, + { DIS_FIELDTYPE_SUBCATEGORY, "Subcategory",0,0,0,0 }, + { DIS_FIELDTYPE_SPECIFIC, "Specific",0,0,0,0 }, + { DIS_FIELDTYPE_EXTRA, "Extra",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_RADIO_ENTITY_TYPE[] = +{ + { DIS_FIELDTYPE_ENTITY_KIND, "Entity Kind",0,0,0,&entityKind }, + { DIS_FIELDTYPE_DOMAIN, "Domain",0,0,0,&entityDomain }, + { DIS_FIELDTYPE_COUNTRY, "Country",0,0,0,0 }, + { DIS_FIELDTYPE_RADIO_CATEGORY, "Radio Category",0,0,0,&category }, + { DIS_FIELDTYPE_NOMENCLATURE_VERSION, "Nomenclature Version",0,0,0,0 }, + { DIS_FIELDTYPE_NOMENCLATURE, "Nomenclature",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_MODULATION_TYPE[] = +{ + { DIS_FIELDTYPE_SPREAD_SPECTRUM, "Spread Spectrum",0,0,0,0 }, + { DIS_FIELDTYPE_MODULATION_MAJOR, "Major",0,0,0,&majorModulation }, + { DIS_FIELDTYPE_MODULATION_DETAIL, "Detail",0,0,0,0 }, + { DIS_FIELDTYPE_MODULATION_SYSTEM, "System",0,0,0,&systemModulation }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_EVENT_ID[] = +{ + { DIS_FIELDTYPE_UINT16, "Site",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Application",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Event Number",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_ORIENTATION[] = +{ + { DIS_FIELDTYPE_FLOAT32, "Psi",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Theta",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Phi",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_SIMULATION_ADDRESS[] = +{ + { DIS_FIELDTYPE_UINT16, "Site",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Application",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VECTOR_FLOAT_32[] = +{ + { DIS_FIELDTYPE_FLOAT32, "X",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Y",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Z",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VECTOR_FLOAT_64[] = +{ + { DIS_FIELDTYPE_FLOAT64, "X",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT64, "Y",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT64, "Z",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS[] = +{ + { DIS_FIELDTYPE_FH_NETWORK_ID, "Frequency Hopping Network ID",0,0,0,0 }, + { DIS_FIELDTYPE_FH_SET_ID, "Frequency Set ID",0,0,0,0 }, + { DIS_FIELDTYPE_LO_SET_ID, "Lockout Set ID",0,0,0,0 }, + { DIS_FIELDTYPE_FH_MSG_START, "Frequency Hopping Message Start",0,0,0,0 }, + { DIS_FIELDTYPE_RESERVED, "Reserved",0,0,0,0 }, + { DIS_FIELDTYPE_FH_SYNC_TIME_OFFSET, "FH Synchronization Time Offset",0,0,0,0 }, + { DIS_FIELDTYPE_FH_SECURITY_KEY, "Transmission Security Key",0,0,0,0 }, + { DIS_FIELDTYPE_FH_CLEAR_CHANNEL, "Clear Channel",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS[] = +{ + { DIS_FIELDTYPE_TS_ALLOCATION_MODE, "Time Slot Allocaton Mode",0,0,0,0 }, + { DIS_FIELDTYPE_TRANSMITTER_PRIMARY_MODE, "Transmitter Primary Mode",0,0,0,0 }, + { DIS_FIELDTYPE_TRANSMITTER_SECONDARY_MODE, "Transmitter Secondary Mode",0,0,0,0 }, + { DIS_FIELDTYPE_JTIDS_SYNC_STATE, "Synchronization State",0,0,0,0 }, + { DIS_FIELDTYPE_NETWORK_SYNC_ID, "Network Sync ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_SIGNAL_LINK16_NETWORK_HEADER[] = +{ + { DIS_FIELDTYPE_LINK16_NPG, "Network Participant Group",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Network Number",0,0,0,0 }, + { DIS_FIELDTYPE_LINK16_TSEC_CVLL, "TSEC CVLL",0,0,0,0 }, + { DIS_FIELDTYPE_LINK16_MSEC_CVLL, "MSEC CVLL",0,0,0,0 }, + { DIS_FIELDTYPE_LINK16_MESSAGE_TYPE, "Message Type",0,0,0,&messageType }, + { DIS_FIELDTYPE_UINT16, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_UINT32, "Time Slot ID",0,0,0,0 }, + { DIS_FIELDTYPE_LINK16_PTT, "Perceived Transmit Time",0,0,0,0 }, + { DIS_FIELDTYPE_LINK16_MESSAGE_DATA, "Message Data",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* Array records + */ +static DIS_ParserNode DIS_FIELDS_FIXED_DATUM[] = +{ + { DIS_FIELDTYPE_DATUM_ID, "Datum ID",0,0,0,0 }, + { DIS_FIELDTYPE_FIXED_DATUM_VALUE, "Datum value",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VARIABLE_DATUM[] = +{ + { DIS_FIELDTYPE_DATUM_ID, "Datum ID",0,0,0,0 }, + { DIS_FIELDTYPE_DATUM_LENGTH, "Datum length",0,0,0,&variableDatumLength }, + { DIS_FIELDTYPE_VARIABLE_DATUM_VALUE, "Datum value",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_DATUM_IDS[] = +{ + { DIS_FIELDTYPE_DATUM_ID, "Datum ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_EMITTER_SYSTEM[] = +{ + { DIS_FIELDTYPE_EMITTER_NAME, "Emitter Name",0,0,0,0 }, + { DIS_FIELDTYPE_EMISSION_FUNCTION, "Function",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Emitter ID Number",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VR_UA_SHAFT[] = +{ + { DIS_FIELDTYPE_INT16, "Current Shaft RPM",0,0,0,0 }, + { DIS_FIELDTYPE_INT16, "Ordered Shaft RPM",0,0,0,0 }, + { DIS_FIELDTYPE_INT32, "Shaft RPM Rate of Change",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VR_APA[] = +{ + { DIS_FIELDTYPE_INT16, "Parameter Index",0,0,0,0 }, /*FIXME enum*/ + { DIS_FIELDTYPE_INT16, "Value", 0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_UA_EMITTER_SYSTEM[] = +{ + { DIS_FIELDTYPE_UINT16, "Acoustic Emitter Name",0,0,0,0 }, /*FIXME enum*/ + { DIS_FIELDTYPE_UINT8, "Function",0,0,0,0 }, /*FIXME enum*/ + { DIS_FIELDTYPE_UINT8, "Acoustic ID Number",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_FUNDAMENTAL_PARAMETER_DATA[] = +{ + { DIS_FIELDTYPE_FLOAT32, "Frequency",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Frequency Range",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Effective Radiated Power",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Pulse Repetition Frequency",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Pulse Width",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Beam Azimuth Center",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Beam Azimuth Sweep",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Beam Elevation Center",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Beam Elevation Sweep",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Beam Sweep Sync",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_TRACK_JAM[] = +{ + { DIS_FIELDTYPE_SITE, "Site",0,0,0,0 }, + { DIS_FIELDTYPE_APPLICATION, "Application",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY, "Entity",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Emitter ID",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Beam ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* Variable Parameters + */ +static DIS_ParserNode DIS_FIELDS_VP_TYPE[] = +{ + { DIS_FIELDTYPE_PARAMETER_TYPE_DESIGNATOR, "Variable Parameter Type",0,0,0,&variableParameterType }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* Array record contents - variable parameter records + */ +static DIS_ParserNode DIS_FIELDS_VP_GENERIC[] = +{ + { DIS_FIELDTYPE_FIXED_LEN_STR, "Data",15,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VP_ARTICULATED_PART[] = +{ + { DIS_FIELDTYPE_UINT8, "Change",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Part Attached To ID",0,0,0,0 }, + { DIS_FIELDTYPE_ARTIC_PARAM_TYPE, "Parameter Type",0,0,0,0 }, + { DIS_FIELDTYPE_UINT64, "Parameter Value",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VP_ATTACHED_PART[] = +{ + { DIS_FIELDTYPE_UINT8, "Attached Indicator",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Part Attached To ID",0,0,0,0 }, + { DIS_FIELDTYPE_ARTIC_PARAM_TYPE, "Parameter Type",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_TYPE, "Part Type",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VP_ENTITY_OFFSET[] = +{ + { DIS_FIELDTYPE_UINT8, "Offset Type",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",2,0,0,0 }, + { DIS_FIELDTYPE_VECTOR_32, "Offset",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VP_ENTITY_ASSOCIATION[] = +{ + { DIS_FIELDTYPE_UINT8, "Change Indicator",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Association Status",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Association Type",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Object Identifier",2,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Own Station Location",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Physical Connection Type",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Group Member Type",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Group Number",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; +/* Variable Records + */ +static DIS_ParserNode DIS_FIELDS_VR_TYPE[] = +{ + { DIS_FIELDTYPE_UINT32, "Record Type",0,0,0,&variableRecordType }, + { DIS_FIELDTYPE_UINT16, "Record Length",0,0,0,&variableRecordLength }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VR_APPLICATION_HEALTH_STATUS[] = +{ + { DIS_FIELDTYPE_PAD8, "Padding",2,0,0,0 }, + { DIS_FIELDTYPE_APPLICATION_STATUS_TYPE, "Status Type",0,0,0,0 }, + { DIS_FIELDTYPE_APPLICATION_GENERAL_STATUS, "General Status",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Specific Status",0,0,0,0 }, + { DIS_FIELDTYPE_INT32, "Status Value Int",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT64, "Status Value Float",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VR_APPLICATION_INITIALIZATION[] = +{ + { DIS_FIELDTYPE_UINT8, "Exercise ID",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_FIXED_LEN_STR, "Exercise File Path",256,0,0,0 }, + { DIS_FIELDTYPE_FIXED_LEN_STR, "Exercise File Name",128,0,0,0 }, + { DIS_FIELDTYPE_FIXED_LEN_STR, "Application Role",64,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VR_DATA_QUERY[] = +{ + { DIS_FIELDTYPE_UINT16, "Num Records",0,0,0,&numFixed }, + { DIS_FIELDTYPE_FIXED_DATUM_IDS, "Record",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM[] = +{ + { DIS_FIELDTYPE_UINT8, "Beam Data Length",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Beam ID Number",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Beam Parameter Index",0,0,0,0 }, + { DIS_FIELDTYPE_FUNDAMENTAL_PARAMETER_DATA, + "Fundamental Parameter Data",0,0,0,0 }, + { DIS_FIELDTYPE_BEAM_FUNCTION, "Beam Function",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Number of Targets in Track/Jam Field",0,0,0,&numTrackJamTargets }, + { DIS_FIELDTYPE_UINT8, "High Density Track/Jam",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_UINT32, "Jamming Mode Sequence",0,0,0,0 }, + { DIS_FIELDTYPE_TRACK_JAM, "Track/Jam Entity",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM[] = +{ + { DIS_FIELDTYPE_UINT8, "System Data Length",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Number of Beams (M)",0,0,0,&numBeams }, + { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_EMITTER_SYSTEM, "Emitter System",0,0,0,0 }, + { DIS_FIELDTYPE_VECTOR_32, "Location",0,0,0,0 }, + { DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM, "Beam",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA[] = +{ + { DIS_FIELDTYPE_UINT16, "Active Emission Parameter Index",0,0,0,0 }, /*FIXME enum!!!*/ + { DIS_FIELDTYPE_UINT16, "Scan Pattern",0,0,0,0 }, /*FIXME enum!!!*/ + { DIS_FIELDTYPE_FLOAT32, "Beam Center Azimuth (Horizontal Bearing)",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Azimuthal Beamwidth (Horizontal Beamwidth)",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Beam Center D/E",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "D/E Beamwidth (Vertical Beamwidth)",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VR_UA_BEAM[] = +{ + { DIS_FIELDTYPE_UINT8, "Beam Data Length",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Beam ID Number",0,0,0,0 }, + { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA, + "Fundamental Data Parameters",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_FIELDS_VR_UA_EMITTER_SYSTEM[] = +{ + { DIS_FIELDTYPE_UINT8, "Emitter System Data Length",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEM_BEAMS, "Number of Beams (m)",0,0,0,0 }, + { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_UA_EMITTER_SYSTEM, "Acoustic Emitter System",0,0,0,0 }, + { DIS_FIELDTYPE_VECTOR_32, "Location (with respect to entity)",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* Bit fields + */ +static DIS_ParserNode DIS_FIELDS_NONE[] = +{ + { DIS_FIELDTYPE_END, NULL, 0,0,0,0 } +}; + +static DIS_BitMask DIS_APPEARANCE_LANDPLATFORM[] = +{ + { 0x00000001, 0, "Paint Scheme", { + { 0, "Uniform color" }, + { 1, "Camouflage" }, + { 0,0 } + } }, + { 0x00000002, 1, "Mobility", { + { 0, "No mobility kill" }, + { 1, "Mobility kill" }, + { 0,0 } + } }, + { 0x00000004, 2, "Fire Power", { + { 0, "No fire-power kill" }, + { 1, "Fire-power kill" }, + { 0,0 } + } }, + { 0x00000018, 3, "Damage", { + { 0, "No damage" }, + { 1, "Slight damage" }, + { 2, "Moderate damage" }, + { 3, "Destroyed" }, + { 0,0 } + } }, + { 0, 0, 0, { + { 0, 0 } + } } +}; + +static DIS_BitMask DIS_APPEARANCE_LIFEFORM[] = +{ + { 0x00000001, 0, "Paint Scheme", { + { 0, "Uniform color" }, + { 1, "Camouflage" }, + { 0,0 } + } }, + { 0x00000018, 3, "Health", { + { 0, "No injury" }, + { 1, "Slight injury" }, + { 2, "Moderate injury" }, + { 3, "Fatal injury" }, + { 0,0 } + } }, + { 0, 0, 0, { + { 0, 0 } + } } +}; + +/****************************************************************************** +* +* PDUS +* +*******************************************************************************/ + +/* DIS Entity Information / Interaction PDUs + */ +static DIS_ParserNode DIS_PARSER_ENTITY_STATE_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_FORCE_ID, "Force ID",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_ARTICULATION_PARAMS, "Number of Articulation Parameters",0,0,0,&numVariable }, + { DIS_FIELDTYPE_ENTITY_TYPE, "Entity Type",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_TYPE, "Alternative Entity Type",0,0,0,0 }, + { DIS_FIELDTYPE_LINEAR_VELOCITY, "Entity Linear Velocity",0,0,0,0 }, + { DIS_FIELDTYPE_LOCATION_WORLD, "Entity Location",0,0,0,0 }, + { DIS_FIELDTYPE_ORIENTATION, "Entity Orientation",0,0,0,0 }, + { DIS_FIELDTYPE_APPEARANCE, "Entity Appearance",0,0,0,0 }, + { DIS_FIELDTYPE_DEAD_RECKONING_PARAMS, "Dead Reckoning Parameters",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_MARKING, "Entity Marking",0,0,0,0 }, + { DIS_FIELDTYPE_CAPABILITIES, "Capabilities",0,0,0,0 }, + { DIS_FIELDTYPE_VARIABLE_PARAMETERS, "Variable Parameter",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* DIS Distributed Emission Regeneration PDUs + */ +static DIS_ParserNode DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Emitting Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_EVENT_ID, "Event ID",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "State Update Indicator",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_ELECTROMAGNETIC_EMISSION_SYSTEMS, "Number of Systems (N)",0,0,0,&numVariable }, + { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM, "Emission System",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + + +/* DIS Underwater Acoustic PDUs + */ +static DIS_ParserNode DIS_PARSER_UNDERWATER_ACOUSTIC_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Emitting Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_EVENT_ID, "Event ID",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "State Update Indicator",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Passive Parameter Index", 0,0,0,0 }, /* !! enum !! */ + { DIS_FIELDTYPE_UINT8, "Propulsion Plant Configuration",0,0,0,0 }, /* !! enum !! */ + { DIS_FIELDTYPE_NUM_OF_SHAFTS, "Number of Shafts",0,0,0,&numShafts }, + { DIS_FIELDTYPE_NUM_OF_APAS, "Number of Additional Passive Activities (APA)",0,0,0,&numApas }, + { DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEMS, "Number of UA Emitter Systems",0,0,0,&numUAEmitter }, + { DIS_FIELDTYPE_SHAFTS, "Shafts",0,0,0,0 }, + { DIS_FIELDTYPE_APA, "APAs",0,0,0,0 }, + { DIS_FIELDTYPE_UA_EMITTER_SYSTEMS, "Underwater Acoustic Emission System",0,0,0,0 }, + { DIS_FIELDTYPE_UA_BEAMS, "Beams",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + + +/* DIS Radio Communications protocol (RCP) family PDUs + */ +static DIS_ParserNode DIS_PARSER_TRANSMITTER_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_RADIO_ID, "Radio ID",0,0,0,&radioID }, + { DIS_FIELDTYPE_RADIO_ENTITY_TYPE, "Radio Entity Type",0,0,0,0 }, + { DIS_FIELDTYPE_RADIO_TRANSMIT_STATE, "Radio Transmit State",0,0,0,&disRadioTransmitState }, + { DIS_FIELDTYPE_RADIO_INPUT_SOURCE, "Radio Input Source",0,0,0,0 }, + { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_ANTENNA_LOCATION, "Antenna Location",0,0,0,0 }, + { DIS_FIELDTYPE_REL_ANTENNA_LOCATON, "Relative Antenna Location",0,0,0,0 }, + { DIS_FIELDTYPE_ANTENNA_PATTERN_TYPE, "Antenna Pattern Type",0,0,0,&disAntennaPattern }, + { DIS_FIELDTYPE_ANTENNA_PATTERN_LENGTH, "Antenna Pattern Length",0,0,0,0 }, + { DIS_FIELDTYPE_TRANSMIT_FREQUENCY, "Transmit Frequency",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Transmit Frequency Bandwidth",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Transmit Power",0,0,0,0 }, + { DIS_FIELDTYPE_MODULATION_TYPE, "Modulation Type",0,0,0,0 }, + { DIS_FIELDTYPE_CRYPTO_SYSTEM, "Crypto System",0,0,0,0 }, + { DIS_FIELDTYPE_CRYPTO_KEY_ID, "Crypto Key ID",0,0,0,0 }, + { DIS_FIELDTYPE_MODULATION_PARAMETER_LENGTH, "Modulation Parameter Length",0,0,0,&modulationParamLength }, + { DIS_FIELDTYPE_PAD24, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_MODULATION_PARAMETERS, "Modulation Parameters",0,0,0,0 }, + /* need to finish decoding this PDU */ + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_SIGNAL_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_RADIO_ID, "Radio ID",0,0,0,&radioID }, + { DIS_FIELDTYPE_ENCODING_SCHEME, "Encoding Scheme",0,0,0,&encodingScheme }, + { DIS_FIELDTYPE_TDL_TYPE, "TDL Type",0,0,0,&tdlType }, + { DIS_FIELDTYPE_SAMPLE_RATE, "Sample Rate",0,0,0,0 }, + { DIS_FIELDTYPE_DATA_LENGTH, "Data Length",0,0,0,0 }, + { DIS_FIELDTYPE_NUMBER_OF_SAMPLES, "Number of Samples",0,0,0,&numSamples }, + { DIS_FIELDTYPE_RADIO_DATA, "Radio Data",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* DIS Warfare PDUs + */ +static DIS_ParserNode DIS_PARSER_FIRE_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Firing Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Target Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Munition ID",0,0,0,0 }, + { DIS_FIELDTYPE_EVENT_ID, "Event ID",0,0,0,0 }, + { DIS_FIELDTYPE_UINT32, "Fire Mission Index",0,0,0,0 }, + { DIS_FIELDTYPE_LOCATION_WORLD, "Location in World Coordinates",0,0,0,0 }, + { DIS_FIELDTYPE_BURST_DESCRIPTOR, "Burst Descriptor",0,0,0,0 }, + { DIS_FIELDTYPE_LINEAR_VELOCITY, "Velocity",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Range",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_DETONATION_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Firing Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Target Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Munition ID",0,0,0,0 }, + { DIS_FIELDTYPE_EVENT_ID, "Event ID",0,0,0,0 }, + { DIS_FIELDTYPE_LINEAR_VELOCITY, "Velocity",0,0,0,0 }, + { DIS_FIELDTYPE_LOCATION_WORLD, "Location in World Coordinates",0,0,0,0 }, + { DIS_FIELDTYPE_BURST_DESCRIPTOR, "Burst Descriptor",0,0,0,0 }, + { DIS_FIELDTYPE_LOCATION_ENTITY, "Location in Entity Coordinates",0,0,0,0 }, + { DIS_FIELDTYPE_DETONATION_RESULT, "Detonation Result",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_ARTICULATION_PARAMS, "Number of Articulation Parameters",0,0,0,&numVariable }, + { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_VARIABLE_PARAMETERS, "Variable Parameter",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* DIS Simulation Management PDUs + */ +static DIS_ParserNode DIS_PARSER_START_RESUME_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_CLOCK_TIME, "Real World Time",0,0,0,0 }, + { DIS_FIELDTYPE_CLOCK_TIME, "Simulation Time",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_STOP_FREEZE_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_CLOCK_TIME, "Real World Time",0,0,0,0 }, + { DIS_FIELDTYPE_REASON, "Reason",0,0,0,0 }, + { DIS_FIELDTYPE_FROZEN_BEHAVIOR, "Frozen Behavior",0,0,0,0 }, + { DIS_FIELDTYPE_PAD16, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_ACKNOWLEDGE_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ACKNOWLEDGE_FLAG, "Acknowledge Flag",0,0,0,0 }, + { DIS_FIELDTYPE_RESPONSE_FLAG, "Response Flag",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_ACTION_REQUEST_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_ACTION_ID, "Action ID",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, + { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, + { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, + { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_ACTION_RESPONSE_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_STATUS, "Request Status",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, + { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, + { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, + { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_DATA_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_PAD32, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, + { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, + { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, + { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_DATA_QUERY_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_TIME_INTERVAL, "Time interval",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Datum Ids",0,0,0,&numFixed }, + { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Datum Ids",0,0,0,&numVariable }, + { DIS_FIELDTYPE_FIXED_DATUM_IDS, "Fixed datum ids",0,0,0,0 }, + { DIS_FIELDTYPE_VARIABLE_DATUM_IDS, "Variable datum ids",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_COMMENT_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, + { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, + { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, + { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_SIMAN_ENTITY_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* DIS Simulation Management with Reliability PDUs + */ +static DIS_ParserNode DIS_PARSER_START_RESUME_R_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_CLOCK_TIME, "Real World Time",0,0,0,0 }, + { DIS_FIELDTYPE_CLOCK_TIME, "Simulation Time",0,0,0,0 }, + { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",3,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_STOP_FREEZE_R_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_CLOCK_TIME, "Real World Time",0,0,0,0 }, + { DIS_FIELDTYPE_REASON, "Reason",0,0,0,0 }, + { DIS_FIELDTYPE_FROZEN_BEHAVIOR, "Frozen Behavior",0,0,0,0 }, + { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_ACTION_REQUEST_R_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",3,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_ACTION_ID, "Action ID",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, + { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, + { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, + { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_DATA_R_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",3,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Data Fields",0,0,0,&numFixed }, + { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Data Fields",0,0,0,&numVariable }, + { DIS_FIELDTYPE_FIXED_DATUMS, "Fixed data",0,0,0,0 }, + { DIS_FIELDTYPE_VARIABLE_DATUMS, "Variable data",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_DATA_QUERY_R_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",3,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_TIME_INTERVAL, "Time interval",0,0,0,0 }, + { DIS_FIELDTYPE_NUM_FIXED_DATA, "Number of Fixed Datum Ids",0,0,0,&numFixed }, + { DIS_FIELDTYPE_NUM_VARIABLE_DATA, "Number of Variable Datum Ids",0,0,0,&numVariable }, + { DIS_FIELDTYPE_FIXED_DATUM_IDS, "Fixed datum ids",0,0,0,0 }, + { DIS_FIELDTYPE_VARIABLE_DATUM_IDS, "Variable datum ids",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_SIMAN_ENTITY_R_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",3,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* DIS Experimental V-DIS PDUs + */ +static DIS_ParserNode DIS_PARSER_APPLICATION_CONTROL_PDU[] = +{ + { DIS_FIELDTYPE_ENTITY_ID, "Originating Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Receiving Entity ID",0,0,0,0 }, + { DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE, "Reliability",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Time Interval",0,0,0,0 }, + { DIS_FIELDTYPE_CONTROL_ID, "Control ID",0,0,0,0 }, + { DIS_FIELDTYPE_PAD8, "Padding",0,0,0,0 }, + { DIS_FIELDTYPE_APPLICATION_TYPE, "Originating App Type",0,0,0,0 }, + { DIS_FIELDTYPE_APPLICATION_TYPE, "Receiving App Type",0,0,0,0 }, + { DIS_FIELDTYPE_REQUEST_ID, "Request ID",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Number of Parts",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Current Part",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Number of Variable Records",0,0,0,&numVariable }, + { DIS_FIELDTYPE_VARIABLE_RECORDS, "Record",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +/* Persistent Object (PO) Family PDU parsers + */ +static DIS_ParserNode DIS_PARSER_SIMULATOR_PRESENT_PO_PDU[] = +{ + { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Simulator",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Simulator Type",0,0,0,0 }, + { DIS_FIELDTYPE_UINT32, "Database Sequence Number",0,0,0,0 }, + { DIS_FIELDTYPE_UINT32, "Simulator Load",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Simulation Load",0,0,0,0 }, + { DIS_FIELDTYPE_UINT32, "Time",0,0,0,0 }, + { DIS_FIELDTYPE_UINT32, "Packets Sent",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Unit Database Version",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Relative Battle Scheme",0,0,0,0 }, + { DIS_FIELDTYPE_FIXED_LEN_STR, "Terrain Name",32,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Terrain Version",0,0,0,0 }, + { DIS_FIELDTYPE_FIXED_LEN_STR, "Host Name",32,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_DESCRIBE_OBJECT_PO_PDU[] = +{ + { DIS_FIELDTYPE_UINT32, "Database Sequence Number",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "Object ID",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "World State ID",0,0,0,0 }, + { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Owner",0,0,0,0 }, + { DIS_FIELDTYPE_UINT16, "Sequence Number",0,0,0,0 }, + { DIS_FIELDTYPE_PERSISTENT_OBJECT_CLASS, "Object Class",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Missing From World State",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_OBJECTS_PRESENT_PO_PDU[] = +{ + { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Owner",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "World State ID",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Object Count",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_OBJECT_REQUEST_PO_PDU[] = +{ + { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Requesting Simulator",0,0,0,0 }, + { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Object Owner",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "World State ID",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Object Count",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_DELETE_OBJECTS_PO_PDU[] = +{ + { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Requesting Simulator",0,0,0,0 }, + { DIS_FIELDTYPE_UINT8, "Object Count",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_SET_WORLD_STATE_PO_PDU[] = +{ + { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Requesting Simulator",0,0,0,0 }, + { DIS_FIELDTYPE_FLOAT32, "Clock Rate",0,0,0,0 }, + { DIS_FIELDTYPE_UINT32, "Seconds Since 1970",0,0,0,0 }, + { DIS_FIELDTYPE_ENTITY_ID, "World State ID",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + +static DIS_ParserNode DIS_PARSER_NOMINATION_PO_PDU[] = +{ + { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Nominated Simulator",0,0,0,0 }, + { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Nominating Simulator",0,0,0,0 }, + { DIS_FIELDTYPE_SIMULATION_ADDRESS, "Missing Simulator",0,0,0,0 }, + { DIS_FIELDTYPE_END, NULL,0,0,0,0 } +}; + + +static void initializeParser(DIS_ParserNode parserNodes[]); + +/* Create a specific subtree for a PDU or a composite PDU field. + */ +static DIS_ParserNode *createSubtree(DIS_ParserNode parserNodes[], gint *ettVar) +{ + guint fieldIndex = 0; + guint fieldCount; + gint *ett[1]; + DIS_ParserNode *newSubtree; + + while (parserNodes[fieldIndex].fieldType != DIS_FIELDTYPE_END) + { + ++fieldIndex; + } + + fieldCount = fieldIndex + 1; + + newSubtree = (DIS_ParserNode*)g_malloc(sizeof(DIS_ParserNode) * fieldCount); + + memcpy(newSubtree, parserNodes, sizeof(DIS_ParserNode) * fieldCount); + + initializeParser(newSubtree); + + *ettVar = -1; + ett[0] = ettVar; + proto_register_subtree_array(ett, array_length(ett)); + + return newSubtree; +} + +/* Initialize an array of parser nodes. + */ +static void initializeParser(DIS_ParserNode parserNodes[]) +{ + guint parserIndex = 0; + + /* Create the parser subtrees for each of the composite field types. + */ + while (parserNodes[parserIndex].fieldType != DIS_FIELDTYPE_END) + { + switch (parserNodes[parserIndex].fieldType) + { + /* Bit fields */ + case DIS_FIELDTYPE_APPEARANCE: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_NONE, + &parserNodes[parserIndex].ettVar); + break; + + /* Composite types */ + case DIS_FIELDTYPE_MOD_PARAMS_CCTT_SINCGARS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_MOD_PARAMS_JTIDS_MIDS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS, + &parserNodes[parserIndex].ettVar); + break; + + case DIS_FIELDTYPE_BURST_DESCRIPTOR: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_BURST_DESCRIPTOR, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_CLOCK_TIME: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_CLOCK_TIME, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_ENTITY_ID: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_ENTITY_ID, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_ENTITY_TYPE: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_ENTITY_TYPE, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_RADIO_ENTITY_TYPE: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_RADIO_ENTITY_TYPE, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_EVENT_ID: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_EVENT_ID, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_ORIENTATION: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_ORIENTATION, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_SIMULATION_ADDRESS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_SIMULATION_ADDRESS, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_LINEAR_VELOCITY: + case DIS_FIELDTYPE_LOCATION_ENTITY: + case DIS_FIELDTYPE_REL_ANTENNA_LOCATON: + case DIS_FIELDTYPE_VECTOR_32: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VECTOR_FLOAT_32, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_LOCATION_WORLD: + case DIS_FIELDTYPE_ANTENNA_LOCATION: + case DIS_FIELDTYPE_VECTOR_64: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VECTOR_FLOAT_64, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_MODULATION_TYPE: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_MODULATION_TYPE, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_EMITTER_SYSTEM: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_EMITTER_SYSTEM, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_FUNDAMENTAL_PARAMETER_DATA: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_FUNDAMENTAL_PARAMETER_DATA, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_TRACK_JAM: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_TRACK_JAM, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_SHAFTS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VR_UA_SHAFT, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_APA: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VR_APA, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_UA_EMITTER_SYSTEMS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VR_UA_EMITTER_SYSTEM, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_UA_EMITTER_SYSTEM: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_UA_EMITTER_SYSTEM, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_UA_BEAMS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VR_UA_BEAM, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA, + &parserNodes[parserIndex].ettVar); + break; + /* Array records */ + case DIS_FIELDTYPE_FIXED_DATUMS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_FIXED_DATUM, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_VARIABLE_DATUMS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VARIABLE_DATUM, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_FIXED_DATUM_IDS: + case DIS_FIELDTYPE_VARIABLE_DATUM_IDS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_DATUM_IDS, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_VARIABLE_PARAMETERS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VP_TYPE, + &parserNodes[parserIndex].ettVar); + break; + case DIS_FIELDTYPE_VARIABLE_RECORDS: + parserNodes[parserIndex].children = createSubtree( + DIS_FIELDS_VR_TYPE, + &parserNodes[parserIndex].ettVar); + break; + default: + break; + } + ++parserIndex; + } +} + +/* Initialize the field parsers that are not explicitly included in any + * specific PDU. These fields are only accessed and used if a variant + * field indicates they are to be used. + */ +static void initializeFieldParsers(void) +{ + initializeParser(DIS_FIELDS_VP_GENERIC); + initializeParser(DIS_FIELDS_VP_ARTICULATED_PART); + initializeParser(DIS_FIELDS_VP_ATTACHED_PART); + initializeParser(DIS_FIELDS_VP_ENTITY_OFFSET); + initializeParser(DIS_FIELDS_VP_ENTITY_ASSOCIATION); + initializeParser(DIS_FIELDS_VR_APPLICATION_HEALTH_STATUS); + initializeParser(DIS_FIELDS_VR_APPLICATION_INITIALIZATION); + initializeParser(DIS_FIELDS_VR_DATA_QUERY); + initializeParser(DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM); + initializeParser(DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM); + initializeParser(DIS_FIELDS_VR_UA_SHAFT); + initializeParser(DIS_FIELDS_VR_UA_EMITTER_SYSTEM); + initializeParser(DIS_FIELDS_VR_UA_BEAM); + initializeParser(DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS); + initializeParser(DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS); + initializeParser(DIS_FIELDS_SIGNAL_LINK16_NETWORK_HEADER); + +} + +/* Initialize the parsers for each PDU type and the standard DIS header. + */ +static void initializeParsers(void) +{ + gint *ett[DIS_PDU_MAX_VARIABLE_PARAMETERS+DIS_PDU_MAX_VARIABLE_RECORDS+2]; + int i, ett_index; + + initializeParser(DIS_FIELDS_PDU_HEADER); + + /* DIS Entity Information / Interaction PDUs */ + initializeParser(DIS_PARSER_ENTITY_STATE_PDU); + + /* DIS Distributed Emission Regeneration PDUs */ + initializeParser(DIS_PARSER_ELECTROMAGNETIC_EMISSION_PDU); + initializeParser(DIS_PARSER_UNDERWATER_ACOUSTIC_PDU); + + /* DIS Radio Communications protocol (RCP) family PDUs */ + initializeParser(DIS_PARSER_TRANSMITTER_PDU); + initializeParser(DIS_PARSER_SIGNAL_PDU); + + /* DIS Warfare PDUs */ + initializeParser(DIS_PARSER_FIRE_PDU); + initializeParser(DIS_PARSER_DETONATION_PDU); + + /* DIS Simulation Management PDUs */ + initializeParser(DIS_PARSER_START_RESUME_PDU); + initializeParser(DIS_PARSER_STOP_FREEZE_PDU); + initializeParser(DIS_PARSER_ACKNOWLEDGE_PDU); + initializeParser(DIS_PARSER_ACTION_REQUEST_PDU); + initializeParser(DIS_PARSER_ACTION_RESPONSE_PDU); + initializeParser(DIS_PARSER_DATA_PDU); + initializeParser(DIS_PARSER_DATA_QUERY_PDU); + initializeParser(DIS_PARSER_COMMENT_PDU); + initializeParser(DIS_PARSER_SIMAN_ENTITY_PDU); + + /* DIS Simulation Management with Reliability PDUs */ + initializeParser(DIS_PARSER_START_RESUME_R_PDU); + initializeParser(DIS_PARSER_STOP_FREEZE_R_PDU); + initializeParser(DIS_PARSER_ACTION_REQUEST_R_PDU); + initializeParser(DIS_PARSER_DATA_R_PDU); + initializeParser(DIS_PARSER_DATA_QUERY_R_PDU); + initializeParser(DIS_PARSER_SIMAN_ENTITY_R_PDU); + + /* DIS Experimental V-DIS PDUs */ + initializeParser(DIS_PARSER_APPLICATION_CONTROL_PDU); + + /* Initialize the Persistent Object PDUs */ + initializeParser(DIS_FIELDS_PERSISTENT_OBJECT_HEADER); + initializeParser(DIS_PARSER_DESCRIBE_OBJECT_PO_PDU); + initializeParser(DIS_PARSER_SIMULATOR_PRESENT_PO_PDU); + initializeParser(DIS_PARSER_OBJECTS_PRESENT_PO_PDU); + initializeParser(DIS_PARSER_OBJECT_REQUEST_PO_PDU); + initializeParser(DIS_PARSER_DELETE_OBJECTS_PO_PDU); + initializeParser(DIS_PARSER_SET_WORLD_STATE_PO_PDU); + initializeParser(DIS_PARSER_NOMINATION_PO_PDU); + + /* Initialize the ett array */ + ett_index = 0; + for (i=0; i> bitMask[maskIndex].shiftBits) == + bitMaskMap[mapIndex].value) + { + proto_tree_add_text(tree, tvb, offset, numBytes, + "%s = %s", bitMask[maskIndex].label, + bitMaskMap[mapIndex].label); + break; + } + ++mapIndex; + } + ++maskIndex; + } + } + else + { + proto_tree_add_text(tree, tvb, offset, numBytes, + "Unknown Appearance Type (%" G_GINT64_MODIFIER "u)", uintVal); + } + + offset += numBytes; + + return offset; +} + +/* Parse an unsigned integer field of a specified number of bytes. + */ +static gint parseField_UInt(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes) +{ + guint64 uintVal = 0; + + offset = alignOffset(offset, numBytes); + + switch(numBytes) + { + case 1: + uintVal = tvb_get_guint8(tvb, offset); + break; + case 2: + uintVal = tvb_get_ntohs(tvb, offset); + break; + case 4: + uintVal = tvb_get_ntohl(tvb, offset); + break; + case 8: + uintVal = tvb_get_ntoh64(tvb, offset); + break; + default: + /* assert */ + break; + } + + proto_tree_add_text(tree, tvb, offset, numBytes, "%s = %" G_GINT64_MODIFIER "u", + parserNode.fieldLabel, uintVal); + + if (parserNode.outputVar != 0) + { + *(parserNode.outputVar) = (guint32)uintVal; + } + + offset += numBytes; + + return offset; +} + +/* Parse a signed integer field of a specified number of bytes. + */ +static gint parseField_Int(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes) +{ + gint64 intVal = 0; + + offset = alignOffset(offset, numBytes); + + switch(numBytes) + { + case 1: + intVal = (gint8)tvb_get_guint8(tvb, offset); + break; + case 2: + intVal = (gint16)tvb_get_ntohs(tvb, offset); + break; + case 4: + intVal = (gint32)tvb_get_ntohl(tvb, offset); + break; + case 8: + intVal = (gint64)tvb_get_ntoh64(tvb, offset); + break; + default: + /* assert */ + break; + } + + proto_tree_add_text(tree, tvb, offset, numBytes, "%s = %" G_GINT64_MODIFIER "d", + parserNode.fieldLabel, intVal); + + offset += numBytes; + + return offset; +} + +/* Parse a field that explicitly specified a number of pad bytes (vs implicit + * padding, which occurs whenever padding is inserted to properly align the + * field. + */ +static gint parseField_Pad(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode _U_, guint numBytes) +{ + proto_tree_add_text(tree, tvb, offset, numBytes, + "Explicit Padding (%d bytes)", numBytes); + + offset += numBytes; + + return offset; +} + +/* Parse an enumerated type field. + */ +static gint parseField_Enum(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode, guint numBytes) +{ + const value_string *enumStrings = 0; + guint32 enumVal = 0; + const gchar *enumStr = 0; +#if 0 + proto_item *pi; +#endif + int dis_hf_id = -1; + + offset = alignOffset(offset, numBytes); + + switch(parserNode.fieldType) + { + case DIS_FIELDTYPE_ACKNOWLEDGE_FLAG: + enumStrings = DIS_PDU_AcknowledgeFlag_Strings; + break; + case DIS_FIELDTYPE_ACTION_ID: + enumStrings = DIS_PDU_ActionId_Strings; + break; + case DIS_FIELDTYPE_APPLICATION_GENERAL_STATUS: + enumStrings = DIS_PDU_ApplicationGeneralStatus_Strings; + break; + case DIS_FIELDTYPE_APPLICATION_STATUS_TYPE: + enumStrings = DIS_PDU_ApplicationStatusType_Strings; + break; + case DIS_FIELDTYPE_APPLICATION_TYPE: + enumStrings = DIS_PDU_ApplicationType_Strings; + break; + case DIS_FIELDTYPE_CONTROL_ID: + enumStrings = DIS_PDU_ControlId_Strings; + break; + case DIS_FIELDTYPE_PROTOCOL_VERSION: + enumStrings = DIS_PDU_ProtocolVersion_Strings; + dis_hf_id = hf_dis_proto_ver; + break; + case DIS_FIELDTYPE_PROTOCOL_FAMILY: + enumStrings = DIS_PDU_ProtocolFamily_Strings; + dis_hf_id = hf_dis_proto_fam; + break; + case DIS_FIELDTYPE_PDU_TYPE: + enumStrings = DIS_PDU_Type_Strings; + dis_hf_id = hf_dis_pdu_type; + break; + case DIS_FIELDTYPE_ENTITY_KIND: + enumStrings = DIS_PDU_EntityKind_Strings; + dis_hf_id = hf_dis_entityKind; + break; + case DIS_FIELDTYPE_DOMAIN: + enumStrings = DIS_PDU_Domain_Strings; + dis_hf_id = hf_dis_entityDomain; + break; + case DIS_FIELDTYPE_DETONATION_RESULT: + enumStrings = DIS_PDU_DetonationResult_Strings; + break; + case DIS_FIELDTYPE_FROZEN_BEHAVIOR: + enumStrings = DIS_PDU_FrozenBehavior_Strings; + break; + case DIS_FIELDTYPE_RADIO_CATEGORY: + enumStrings = DIS_PDU_RadioCategory_Strings; + dis_hf_id = hf_dis_category_radio; + break; + case DIS_FIELDTYPE_NOMENCLATURE_VERSION: + enumStrings = DIS_PDU_NomenclatureVersion_Strings; + break; + case DIS_FIELDTYPE_NOMENCLATURE: + enumStrings = DIS_PDU_Nomenclature_Strings; + break; + case DIS_FIELDTYPE_CATEGORY: + if (entityKind == DIS_ENTITYKIND_PLATFORM) + { + switch(entityDomain) + { + case DIS_DOMAIN_LAND: + enumStrings = DIS_PDU_Category_LandPlatform_Strings; + dis_hf_id = hf_dis_category_land; + break; + case DIS_DOMAIN_AIR: + enumStrings = DIS_PDU_Category_AirPlatform_Strings; + dis_hf_id = hf_dis_category_air; + break; + case DIS_DOMAIN_SURFACE: + enumStrings = DIS_PDU_Category_SurfacePlatform_Strings; + dis_hf_id = hf_dis_category_surface; + break; + case DIS_DOMAIN_SUBSURFACE: + enumStrings = DIS_PDU_Category_SubsurfacePlatform_Strings; + dis_hf_id = hf_dis_category_subsurface; + break; + case DIS_DOMAIN_SPACE: + enumStrings = DIS_PDU_Category_SpacePlatform_Strings; + dis_hf_id = hf_dis_category_space; + break; + default: + enumStrings = 0; + break; + } + } + break; + case DIS_FIELDTYPE_EMITTER_NAME: + enumStrings = DIS_PDU_EmitterName_Strings; + dis_hf_id = hf_dis_emitter_name; + break; + case DIS_FIELDTYPE_EMISSION_FUNCTION: + enumStrings = DIS_PDU_EmissionFunction_Strings; + dis_hf_id = hf_dis_emission_function; + break; + case DIS_FIELDTYPE_BEAM_FUNCTION: + enumStrings = DIS_PDU_BeamFunction_Strings; + dis_hf_id = hf_dis_beam_function; + break; + case DIS_FIELDTYPE_PARAMETER_TYPE_DESIGNATOR: + enumStrings = DIS_PDU_ParameterTypeDesignator_Strings; + break; + case DIS_FIELDTYPE_PERSISTENT_OBJECT_TYPE: + enumStrings = DIS_PDU_PersistentObjectType_Strings; + break; + case DIS_FIELDTYPE_PERSISTENT_OBJECT_CLASS: + enumStrings = DIS_PDU_PO_ObjectClass_Strings; + break; + case DIS_FIELDTYPE_REASON: + enumStrings = DIS_PDU_Reason_Strings; + break; + case DIS_FIELDTYPE_REQUEST_STATUS: + enumStrings = DIS_PDU_RequestStatus_Strings; + break; + case DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE: + enumStrings = DIS_PDU_RequiredReliabilityService_Strings; + break; + case DIS_FIELDTYPE_RESPONSE_FLAG: + enumStrings = DIS_PDU_DisResponseFlag_Strings; + break; + case DIS_FIELDTYPE_MODULATION_DETAIL: + switch (majorModulation) { + case DIS_MAJOR_MOD_AMPLITUDE: + enumStrings = DIS_PDU_DetailModulationAmplitude_Strings; + break; + case DIS_MAJOR_MOD_AMPLITUDE_AND_ANGLE: + enumStrings = DIS_PDU_DetailModulationAmpAndAngle_Strings; + break; + case DIS_MAJOR_MOD_ANGLE: + enumStrings = DIS_PDU_DetailModulationAngle_Strings; + break; + case DIS_MAJOR_MOD_COMBINATION: + enumStrings = DIS_PDU_DetailModulationCombination_Strings; + break; + case DIS_MAJOR_MOD_PULSE: + enumStrings = DIS_PDU_DetailModulationPulse_Strings; + break; + case DIS_MAJOR_MOD_UNMODULATED: + enumStrings = DIS_PDU_DetailModulationUnmodulated_Strings; + break; + case DIS_MAJOR_MOD_CPSM: /* CPSM only has "other" defined */ + case DIS_MAJOR_MOD_OTHER: + default: + enumStrings = DIS_PDU_DetailModulationCPSM_Strings; + break; + } + break; + case DIS_FIELDTYPE_LINK16_MESSAGE_TYPE: + enumStrings = DIS_PDU_Link16_MessageType_Strings; + dis_hf_id = hf_dis_signal_link16_message_type; + break; + default: + enumStrings = 0; + break; + } + + switch(numBytes) + { + case 1: + enumVal = tvb_get_guint8(tvb, offset); + break; + case 2: + enumVal = tvb_get_ntohs(tvb, offset); + break; + case 4: + enumVal = tvb_get_ntohl(tvb, offset); + break; + default: + /* assert */ + break; + } + + enumStr = val_to_str(enumVal, enumStrings, "Unknown Enumeration (%d)"); + + if (dis_hf_id != -1) { +#if 0 + pi = proto_tree_add_item(tree, dis_hf_id, tvb, offset, numBytes, ENC_BIG_ENDIAN); + proto_item_set_text(pi, "%s = %s", parserNode.fieldLabel, enumStr); +#else + proto_tree_add_item(tree, dis_hf_id, tvb, offset, numBytes, ENC_BIG_ENDIAN); +#endif + } + else { + proto_tree_add_text(tree, tvb, offset, numBytes, "%s = %s", + parserNode.fieldLabel, enumStr); + } + + if (parserNode.outputVar != 0) + { + *(parserNode.outputVar) = enumVal; + } + + offset += numBytes; + + return offset; +} + +/* Parse a 4-byte floating-point value. + */ +static gint parseField_Float(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode) +{ + gfloat floatVal; + + offset = alignOffset(offset, 4); + floatVal = tvb_get_ntohieee_float(tvb, offset); + proto_tree_add_text(tree, tvb, offset, 4, "%s = %f", + parserNode.fieldLabel, floatVal); + + offset += 4; + + return offset; +} +#if 0 +/* Parse a 4-byte floating-point value, given text label. + */ +static gint parseField_Float_Text(tvbuff_t *tvb, proto_tree *tree, gint offset, gchar *charStr) +{ + gfloat floatVal; + + offset = alignOffset(offset, 4); + floatVal = tvb_get_ntohieee_float(tvb, offset); + proto_tree_add_text(tree, tvb, offset, 4, "%s = %f", + charStr, floatVal); + + offset += 4; + + return offset; +} +#endif +/* Parse an 8-byte floating-point value. + */ +static gint parseField_Double(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode) +{ + gdouble doubleVal; + + offset = alignOffset(offset, 8); + doubleVal = tvb_get_ntohieee_double(tvb, offset); + proto_tree_add_text(tree, tvb, offset, 8, "%s = %f", + parserNode.fieldLabel, doubleVal); + + offset += 8; + + return offset; +} + +/* Parse the Timestamp */ +static gint parseField_Timestamp(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNode) +{ + /* some consts */ + static double MSEC_PER_SECOND = 1000.0; + static double MSEC_PER_MINUTE = 60.0 * 1000.0 ; + static double MSEC_PER_HOUR = 60.0 * 60.0 * 1000.0; + static double FSV = 0x7fffffff; + /* variables */ + guint isAbsolute = 0; + guint32 uintVal; + guint minutes; + guint seconds; + guint milliseconds; + double ms; + + offset = alignOffset(offset, 4); + + /* convert to host value */ + uintVal = tvb_get_ntohl(tvb, offset); + /* determine absolute vis sim time */ + if( uintVal & 1 ) + isAbsolute = 1; + + /* convert TS to MS */ + ms = (uintVal >> 1) * MSEC_PER_HOUR / FSV; + ms += 0.5; + + /* calc minutes and reduce ms */ + minutes = (guint) (ms / MSEC_PER_MINUTE); + ms -= (minutes * MSEC_PER_MINUTE); + + /* calc seconds and reduce ms */ + seconds = (guint) (ms / MSEC_PER_SECOND); + ms -= (seconds * MSEC_PER_SECOND); + + /* truncate milliseconds */ + milliseconds = (guint) ms; + + /* push out the values */ + if( isAbsolute ) + { + proto_tree_add_text(tree, tvb, offset, 4, "%s = %02d:%02d %03d absolute (UTM)", + parserNode.fieldLabel, minutes, seconds, milliseconds); + } + else + { + proto_tree_add_text(tree, tvb, offset, 4, "%s = %02d:%02d %03d relative", + parserNode.fieldLabel, minutes, seconds, milliseconds); + } + + offset += 4; + return offset; +} + +static gint parseField_VariableParameter(tvbuff_t *tvb, proto_tree *tree, gint offset, packet_info *pinfo); +static gint parseField_VariableRecord(tvbuff_t *tvb, proto_tree *tree, gint offset, packet_info *pinfo); + +/* Parse Link 16 Message Data record (SISO-STD-002, Tables 5.2.5 through 5.2.12) + */ +static gint parse_Link16_Message_Data(proto_tree *tree, tvbuff_t *tvb, gint offset, packet_info *pinfo) +{ + guint32 cache, value, i; + Link16State state; + tvbuff_t *newtvb; + + static const int * jtids_message_header_fields[] = { + &hf_dis_signal_link16_time_slot_type, + &hf_dis_signal_link16_rti, + &hf_dis_signal_link16_stn, + NULL + }; + + switch (messageType) { + case DIS_MESSAGE_TYPE_JTIDS_HEADER_MESSAGES: + proto_tree_add_bitmask_text(tree, tvb, offset, 4, "JTIDS Header", NULL, ett_dis_signal_link16_jtids_header, jtids_message_header_fields, ENC_BIG_ENDIAN, BMT_NO_APPEND); + + cache = tvb_get_ntohl(tvb, offset); + value = (cache >> 4) & 0x7FFF; + col_append_fstr(pinfo->cinfo, COL_INFO, ", STN=0%o, Link 16 Words:", value); + + value = (cache >> 19); + offset += 4; + cache = tvb_get_ntohl(tvb, offset); + value |= (cache & 0x7) << 13; + proto_tree_add_uint(tree, hf_dis_signal_link16_sdusn, tvb, offset - 4, 8, value); + offset += 4; + + memset(&state, 0, sizeof(state)); + + for (i = 0; i < (encodingScheme & 0x3FFF); i++) { + gint8 *word = (gint8 *)g_malloc(10); + if (!(i & 1)) { + word[0] = (cache >> 16) & 0xFF; + word[1] = (cache >> 24) & 0xFF; + cache = tvb_get_ntohl(tvb, offset); + offset += 4; + word[2] = cache & 0xFF; + word[3] = (cache >> 8) & 0xFF; + word[4] = (cache >> 16) & 0xFF; + word[5] = (cache >> 24) & 0xFF; + cache = tvb_get_ntohl(tvb, offset); + offset += 4; + word[6] = cache & 0xFF; + word[7] = (cache >> 8) & 0xFF; + word[8] = (cache >> 16) & 0xFF; + word[9] = (cache >> 24) & 0xFF; + } else { + cache = tvb_get_ntohl(tvb, offset); + offset += 4; + word[0] = cache & 0xFF; + word[1] = (cache >> 8) & 0xFF; + word[2] = (cache >> 16) & 0xFF; + word[3] = (cache >> 24) & 0xFF; + cache = tvb_get_ntohl(tvb, offset); + offset += 4; + word[4] = cache & 0xFF; + word[5] = (cache >> 8) & 0xFF; + word[6] = (cache >> 16) & 0xFF; + word[7] = (cache >> 24) & 0xFF; + cache = tvb_get_ntohl(tvb, offset); + offset += 4; + word[8] = cache & 0xFF; + word[9] = (cache >> 8) & 0xFF; + } + + newtvb = tvb_new_child_real_data(tvb, word, 10, 10); + tvb_set_free_cb(newtvb, g_free); + add_new_data_source(pinfo, newtvb, "Link 16 Word"); + call_dissector_with_data(find_dissector("link16"), newtvb, pinfo, tree, &state); + } + break; + } + return offset; +} + +/* Parse packet data based on a specified array of DIS_ParserNodes. + */ +static gint parseFields(tvbuff_t *tvb, proto_tree *tree, gint offset, DIS_ParserNode parserNodes[], packet_info *pinfo) +{ + guint fieldIndex = 0; + guint fieldRepeatLen = 0; + guint64 uintVal = 0; + proto_item *pi = NULL; + proto_tree *sub_tree = NULL; + tvbuff_t *newtvb = NULL; + gint length = 0; + guint16 spread_spectrum = 0; + + + /* Get the length while ensuring there's at least one byte for us to + * decode (if not, throw an exception so as to prevent very long loops). + */ + length = tvb_ensure_length_remaining(tvb, offset+1); + + while ((parserNodes[fieldIndex].fieldType != DIS_FIELDTYPE_END) + && (length > 0 ) ) + { + proto_item *newField = 0; + + fieldRepeatLen = (guint) ((parserNodes[fieldIndex].fieldRepeatLen > 1) ? + parserNodes[fieldIndex].fieldRepeatLen : 1); + + switch(parserNodes[fieldIndex].fieldType) + { + /* basic numeric types */ + case DIS_FIELDTYPE_INT8: + offset = parseField_Int(tvb, tree, offset, + parserNodes[fieldIndex], 1); + break; + case DIS_FIELDTYPE_INT16: + offset = parseField_Int(tvb, tree, offset, + parserNodes[fieldIndex], 2); + break; + case DIS_FIELDTYPE_INT32: + offset = parseField_Int(tvb, tree, offset, + parserNodes[fieldIndex], 4); + break; + case DIS_FIELDTYPE_INT64: + offset = parseField_Int(tvb, tree, offset, + parserNodes[fieldIndex], 8); + break; + case DIS_FIELDTYPE_UINT8: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 1); + break; + case DIS_FIELDTYPE_UINT16: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 2); + break; + case DIS_FIELDTYPE_UINT32: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 4); + break; + case DIS_FIELDTYPE_UINT64: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 8); + break; + case DIS_FIELDTYPE_FLOAT32: + offset = parseField_Float(tvb, tree, offset, + parserNodes[fieldIndex]); + break; + case DIS_FIELDTYPE_FLOAT64: + offset = parseField_Double(tvb, tree, offset, + parserNodes[fieldIndex]); + break; + case DIS_FIELDTYPE_EXERCISE_ID: + proto_tree_add_item(tree, hf_dis_exercise_id, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_NUM_ARTICULATION_PARAMS: + uintVal = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_dis_num_art_params, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + break; + case DIS_FIELDTYPE_PDU_LENGTH: + proto_tree_add_item(tree, hf_dis_pdu_length, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_SITE: + proto_tree_add_item(tree, hf_dis_entity_id_site, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_APPLICATION: + proto_tree_add_item(tree, hf_dis_entity_id_application, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_ENTITY: + proto_tree_add_item(tree, hf_dis_entity_id_entity, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_RADIO_ID: + uintVal = tvb_get_ntohs(tvb, offset); + proto_tree_add_item(tree, hf_dis_radio_id, tvb, offset, 2, ENC_BIG_ENDIAN); + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + offset += 2; + break; + case DIS_FIELDTYPE_ENCODING_SCHEME: + uintVal = tvb_get_ntohs(tvb, offset); + pi = proto_tree_add_item(tree, hf_dis_ens, tvb, offset, 2, ENC_BIG_ENDIAN); + sub_tree = proto_item_add_subtree(pi, ett_dis_ens); + proto_tree_add_item(sub_tree, hf_dis_ens_class, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(sub_tree, + (uintVal >> 14) == DIS_ENCODING_CLASS_ENCODED_AUDIO ? hf_dis_ens_type_audio : hf_dis_ens_type, + tvb, offset, 2, ENC_BIG_ENDIAN); + proto_item_set_end(pi, tvb, offset); + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + offset += 2; + break; + case DIS_FIELDTYPE_TDL_TYPE: + uintVal = tvb_get_ntohs(tvb, offset); + proto_tree_add_item(tree, hf_dis_tdl_type, tvb, offset, 2, ENC_BIG_ENDIAN); + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + offset += 2; + break; + case DIS_FIELDTYPE_SAMPLE_RATE: + proto_tree_add_item(tree, hf_dis_sample_rate, tvb, offset, 4, ENC_BIG_ENDIAN); + offset += 4; + break; + case DIS_FIELDTYPE_DATA_LENGTH: + proto_tree_add_item(tree, hf_dis_data_length, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_NUMBER_OF_SAMPLES: + uintVal = tvb_get_ntohs(tvb, offset); + proto_tree_add_item(tree, hf_dis_num_of_samples, tvb, offset, 2, ENC_BIG_ENDIAN); + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + offset += 2; + break; + case DIS_FIELDTYPE_RADIO_DATA: + if (tdlType == DIS_TDL_TYPE_LINK16_STD) { + pi = proto_tree_add_text(tree, tvb, offset, 16, "Link 16 Network Header"); + sub_tree = proto_item_add_subtree(pi, ett_dis_signal_link16_network_header); + offset = parseFields(tvb, sub_tree, offset, DIS_FIELDS_SIGNAL_LINK16_NETWORK_HEADER, pinfo); + proto_item_set_end(pi, tvb, offset); + + pi = proto_tree_add_text(tree, tvb, offset, -1, "Link 16 Message Data: %s", + val_to_str(messageType, DIS_PDU_Link16_MessageType_Strings, "")); + sub_tree = proto_item_add_subtree(pi, ett_dis_signal_link16_message_data); + offset = parse_Link16_Message_Data(sub_tree, tvb, offset, pinfo); + proto_item_set_end(pi, tvb, offset); + } else { + proto_tree_add_item(tree, hf_dis_signal_data, tvb, offset, -1, ENC_NA ); + } + /* ****ck******* need to look for padding bytes */ + break; + case DIS_FIELDTYPE_LINK16_PTT: + if (tvb_get_ntohl(tvb, offset) == 0xFFFFFFFF) + proto_tree_add_text(tree, tvb, offset, 8, "%s: NO STATEMENT", parserNodes[fieldIndex].fieldLabel); + else + proto_tree_add_item(tree, hf_dis_signal_link16_ptt, tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN); + offset += 8; + break; + case DIS_FIELDTYPE_RADIO_CATEGORY: + proto_tree_add_item(tree, hf_dis_radio_category, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_NOMENCLATURE_VERSION: + proto_tree_add_item(tree, hf_dis_nomenclature_version, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_NOMENCLATURE: + proto_tree_add_item(tree, hf_dis_nomenclature, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_RADIO_TRANSMIT_STATE: + uintVal = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_dis_radio_transmit_state, tvb, offset, 1, ENC_BIG_ENDIAN); + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + offset += 1; + break; + case DIS_FIELDTYPE_RADIO_INPUT_SOURCE: + proto_tree_add_item(tree, hf_dis_radio_input_source, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_ANTENNA_PATTERN_TYPE: + uintVal = tvb_get_ntohs(tvb, offset); + proto_tree_add_item(tree, hf_dis_antenna_pattern_type, tvb, offset, 2, ENC_BIG_ENDIAN); + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + offset += 2; + break; + case DIS_FIELDTYPE_ANTENNA_PATTERN_LENGTH: + proto_tree_add_item(tree, hf_dis_antenna_pattern_length, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_TRANSMIT_FREQUENCY: + proto_tree_add_item(tree, hf_dis_transmit_frequency, tvb, offset, 8, ENC_BIG_ENDIAN); + offset += 8; + break; + case DIS_FIELDTYPE_SPREAD_SPECTRUM: + spread_spectrum = tvb_get_ntohs(tvb, offset); + proto_tree_add_boolean(tree, hf_dis_spread_spectrum_usage, tvb, offset, 2, spread_spectrum); + proto_tree_add_boolean(tree, hf_dis_frequency_hopping, tvb, offset, 2, spread_spectrum); + proto_tree_add_boolean(tree, hf_dis_pseudo_noise_modulation, tvb, offset, 2, spread_spectrum); + proto_tree_add_boolean(tree, hf_dis_time_hopping, tvb, offset, 2, spread_spectrum); + offset += 2; + break; + case DIS_FIELDTYPE_MODULATION_MAJOR: + uintVal = tvb_get_ntohs(tvb, offset); + proto_tree_add_item(tree, hf_dis_modulation_major, tvb, offset, 2, ENC_BIG_ENDIAN); + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + offset += 2; + break; + case DIS_FIELDTYPE_MODULATION_SYSTEM: + uintVal = tvb_get_ntohs(tvb, offset); + proto_tree_add_item(tree, hf_dis_modulation_system, tvb, offset, 2, ENC_BIG_ENDIAN); + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + offset += 2; + break; + case DIS_FIELDTYPE_CRYPTO_SYSTEM: + proto_tree_add_item(tree, hf_dis_crypto_system, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_CRYPTO_KEY_ID: + pi = proto_tree_add_item(tree, hf_dis_crypto_key, tvb, offset, 2, ENC_BIG_ENDIAN); + sub_tree = proto_item_add_subtree(pi, ett_dis_crypto_key); + proto_tree_add_item(sub_tree, hf_dis_encryption_mode, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(sub_tree, hf_dis_key_identifier, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_item_set_end(pi, tvb, offset); + offset += 2; + break; + case DIS_FIELDTYPE_MODULATION_PARAMETER_LENGTH: + uintVal = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_dis_modulation_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + offset += 1; + break; + case DIS_FIELDTYPE_FH_NETWORK_ID: + proto_tree_add_item(tree, hf_dis_mod_param_fh_net_id, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_FH_SET_ID: + proto_tree_add_item(tree, hf_dis_mod_param_fh_set_id, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_LO_SET_ID: + proto_tree_add_item(tree, hf_dis_mod_param_fh_lo_set_id, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_FH_MSG_START: + proto_tree_add_item(tree, hf_dis_mod_param_fh_msg_start, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_RESERVED: + proto_tree_add_item(tree, hf_dis_mod_param_fh_reserved, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_FH_SYNC_TIME_OFFSET: + proto_tree_add_item(tree, hf_dis_mod_param_fh_sync_time_offset, tvb, offset, 4, ENC_BIG_ENDIAN); + offset += 4; + break; + case DIS_FIELDTYPE_FH_SECURITY_KEY: + proto_tree_add_item(tree, hf_dis_mod_param_fh_security_key, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_FH_CLEAR_CHANNEL: + proto_tree_add_item(tree, hf_dis_mod_param_fh_clear_channel, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_TS_ALLOCATION_MODE: + proto_tree_add_item(tree, hf_dis_mod_param_ts_allocation_mode, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_TRANSMITTER_PRIMARY_MODE: + proto_tree_add_item(tree, hf_dis_mod_param_transmitter_prim_mode, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_TRANSMITTER_SECONDARY_MODE: + proto_tree_add_item(tree, hf_dis_mod_param_transmitter_second_mode, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_JTIDS_SYNC_STATE: + proto_tree_add_item(tree, hf_dis_mod_param_sync_state, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + break; + case DIS_FIELDTYPE_NETWORK_SYNC_ID: + proto_tree_add_item(tree, hf_dis_mod_param_network_sync_id, tvb, offset, 4, ENC_BIG_ENDIAN); + offset += 4; + break; + case DIS_FIELDTYPE_MODULATION_PARAMETERS: + /* need to check to see if mod parms length > 0 */ + /* could get here when there are antenna pattern parameter but no mod params */ + if (modulationParamLength > 0 ) { /* we do have a mod param */ + if (systemModulation == DIS_SYSTEM_MOD_CCTT_SINCGARS) + { + pi = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + sub_tree = proto_item_add_subtree(pi, parserNodes[fieldIndex].ettVar); + offset = parseFields(tvb, sub_tree, offset, DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS, pinfo); + proto_item_set_end(pi, tvb, offset); + break; + } + else if (systemModulation == DIS_SYSTEM_MOD_JTIDS_MIDS) { + pi = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + sub_tree = proto_item_add_subtree(pi, parserNodes[fieldIndex].ettVar); + offset = parseFields(tvb, sub_tree, offset, DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS, pinfo); + proto_item_set_end(pi, tvb, offset); + break; + } + else { /* just dump what is available */ + newtvb = tvb_new_subset(tvb, offset,modulationParamLength, modulationParamLength); + proto_tree_add_item(tree, hf_dis_mod_param_dump, newtvb, 0, -1, ENC_NA ); + offset += modulationParamLength; + break; + } + } /* else, leave offset alone, and then check antenna pattern param field */ + break; + case DIS_FIELDTYPE_ANTENNA_PATTERN_PARAMETERS: + /* just dump the bytes for now. Need to do finish */ + newtvb = tvb_new_subset_remaining(tvb, offset); + proto_tree_add_item(tree, hf_dis_antenna_pattern_parameter_dump, newtvb, 0, -1, ENC_NA ); + break; + case DIS_FIELDTYPE_LINK16_NPG: + proto_tree_add_item(tree, hf_dis_signal_link16_npg, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + break; + case DIS_FIELDTYPE_LINK16_TSEC_CVLL: + proto_tree_add_item(tree, hf_dis_signal_link16_tsec_cvll, tvb, offset, 1, ENC_NA); + offset++; + break; + case DIS_FIELDTYPE_LINK16_MSEC_CVLL: + proto_tree_add_item(tree, hf_dis_signal_link16_msec_cvll, tvb, offset, 1, ENC_NA); + offset++; + break; + + /* padding */ + case DIS_FIELDTYPE_PAD8: + offset = parseField_Pad(tvb, tree, offset, + parserNodes[fieldIndex], 1 * fieldRepeatLen); + break; + case DIS_FIELDTYPE_PAD16: + offset = parseField_Pad(tvb, tree, offset, + parserNodes[fieldIndex], 2 * fieldRepeatLen); + break; + case DIS_FIELDTYPE_PAD24: + offset = parseField_Pad(tvb, tree, offset, + parserNodes[fieldIndex], 3 * fieldRepeatLen); + break; + case DIS_FIELDTYPE_PAD32: + offset = parseField_Pad(tvb, tree, offset, + parserNodes[fieldIndex], 4 * fieldRepeatLen); + break; + + /* enumerations (1-byte) */ + case DIS_FIELDTYPE_APPLICATION_GENERAL_STATUS: + case DIS_FIELDTYPE_CATEGORY: + case DIS_FIELDTYPE_CONTROL_ID: + case DIS_FIELDTYPE_DETONATION_RESULT: + case DIS_FIELDTYPE_DOMAIN: + case DIS_FIELDTYPE_ENTITY_KIND: + case DIS_FIELDTYPE_FROZEN_BEHAVIOR: + case DIS_FIELDTYPE_PARAMETER_TYPE_DESIGNATOR: + case DIS_FIELDTYPE_PDU_TYPE: + case DIS_FIELDTYPE_PROTOCOL_FAMILY: + case DIS_FIELDTYPE_PROTOCOL_VERSION: + case DIS_FIELDTYPE_REASON: + case DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE: + case DIS_FIELDTYPE_PERSISTENT_OBJECT_CLASS: + case DIS_FIELDTYPE_PERSISTENT_OBJECT_TYPE: + case DIS_FIELDTYPE_EMISSION_FUNCTION: + case DIS_FIELDTYPE_BEAM_FUNCTION: + case DIS_FIELDTYPE_LINK16_MESSAGE_TYPE: + offset = parseField_Enum(tvb, tree, offset, + parserNodes[fieldIndex], 1); + break; + + /* enumerations (2-bytes) */ + case DIS_FIELDTYPE_ACKNOWLEDGE_FLAG: + case DIS_FIELDTYPE_APPLICATION_STATUS_TYPE: + case DIS_FIELDTYPE_APPLICATION_TYPE: + case DIS_FIELDTYPE_RESPONSE_FLAG: + case DIS_FIELDTYPE_MODULATION_DETAIL: + case DIS_FIELDTYPE_EMITTER_NAME: + offset = parseField_Enum(tvb, tree, offset, + parserNodes[fieldIndex], 2); + break; + + /* enumerations (4-bytes) */ + case DIS_FIELDTYPE_ACTION_ID: + case DIS_FIELDTYPE_REQUEST_STATUS: + offset = parseField_Enum(tvb, tree, offset, + parserNodes[fieldIndex], 4); + break; + + /* other atomic types */ + case DIS_FIELDTYPE_APPEARANCE: + { + proto_item *newSubtree; + newField = proto_tree_add_text(tree, tvb, offset, 4, "%s", + parserNodes[fieldIndex].fieldLabel); + newSubtree = proto_item_add_subtree(newField, + parserNodes[fieldIndex].ettVar); + offset = parseField_Bitmask(tvb, newSubtree, offset, + parserNodes[fieldIndex], 4); + } + break; + case DIS_FIELDTYPE_ARTIC_PARAM_TYPE: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 4); + break; + case DIS_FIELDTYPE_CAPABILITIES: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 4); + break; + case DIS_FIELDTYPE_COUNTRY: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 2); + break; + case DIS_FIELDTYPE_DATUM_ID: + case DIS_FIELDTYPE_DATUM_LENGTH: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 4); + break; + case DIS_FIELDTYPE_DEAD_RECKONING_PARAMS: + /* This is really a struct... needs a field parser. + * For now, just skip the 12 bytes. + */ + offset = parseField_Bytes(tvb, tree, offset, + parserNodes[fieldIndex], 40); + break; + case DIS_FIELDTYPE_ENTITY_MARKING: + /* This is really a struct... needs a field parser. + * For now, just skip the 12 bytes. + */ + offset = parseField_Bytes(tvb, tree, offset, + parserNodes[fieldIndex], 12); + break; + case DIS_FIELDTYPE_EXTRA: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 1); + break; + case DIS_FIELDTYPE_FIXED_DATUM_VALUE: + offset = parseField_Bytes(tvb, tree, offset, + parserNodes[fieldIndex], 4); + break; + case DIS_FIELDTYPE_FIXED_LEN_STR: + offset = parseField_Bytes(tvb, tree, offset, + parserNodes[fieldIndex], + parserNodes[fieldIndex].fieldRepeatLen); + break; + case DIS_FIELDTYPE_FORCE_ID: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 1); + break; + case DIS_FIELDTYPE_FUSE: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 2); + break; + case DIS_FIELDTYPE_NUM_FIXED_DATA: + case DIS_FIELDTYPE_NUM_VARIABLE_DATA: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 4); + break; + case DIS_FIELDTYPE_REQUEST_ID: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 4); + break; + case DIS_FIELDTYPE_SPECIFIC: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 1); + break; + case DIS_FIELDTYPE_SUBCATEGORY: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 1); + break; + case DIS_FIELDTYPE_TIME_INTERVAL: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 4); + break; + case DIS_FIELDTYPE_TIMESTAMP: + offset = parseField_Timestamp(tvb, tree, offset, + parserNodes[fieldIndex]); + break; + case DIS_FIELDTYPE_WARHEAD: + offset = parseField_UInt(tvb, tree, offset, + parserNodes[fieldIndex], 2); + break; + + /* composite types */ + case DIS_FIELDTYPE_BURST_DESCRIPTOR: + case DIS_FIELDTYPE_CLOCK_TIME: + case DIS_FIELDTYPE_ENTITY_ID: + case DIS_FIELDTYPE_ENTITY_TYPE: + case DIS_FIELDTYPE_RADIO_ENTITY_TYPE: + case DIS_FIELDTYPE_ANTENNA_LOCATION: + case DIS_FIELDTYPE_REL_ANTENNA_LOCATON: + case DIS_FIELDTYPE_EVENT_ID: + case DIS_FIELDTYPE_LINEAR_VELOCITY: + case DIS_FIELDTYPE_LOCATION_ENTITY: + case DIS_FIELDTYPE_LOCATION_WORLD: + case DIS_FIELDTYPE_ORIENTATION: + case DIS_FIELDTYPE_SIMULATION_ADDRESS: + case DIS_FIELDTYPE_VECTOR_32: + case DIS_FIELDTYPE_VECTOR_64: + case DIS_FIELDTYPE_MODULATION_TYPE: + case DIS_FIELDTYPE_EMITTER_SYSTEM: + case DIS_FIELDTYPE_FUNDAMENTAL_PARAMETER_DATA: + case DIS_FIELDTYPE_UA_EMITTER_SYSTEM: + case DIS_FIELDTYPE_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA: + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + if (parserNodes[fieldIndex].children != 0) + { + proto_item *newSubtree = proto_item_add_subtree(newField, + parserNodes[fieldIndex].ettVar); + offset = parseFields(tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + } + proto_item_set_end(newField, tvb, offset); + break; + case DIS_FIELDTYPE_VARIABLE_DATUM_VALUE: + { + guint lengthInBytes; + lengthInBytes = variableDatumLength / 8; + if (variableDatumLength % 8 > 0) + { + lengthInBytes += (8 - (variableDatumLength % 8)); + } + offset = parseField_Bytes(tvb, tree, offset, + parserNodes[fieldIndex], lengthInBytes); + } + break; + + /* arrays */ + case DIS_FIELDTYPE_FIXED_DATUMS: + { + guint i; + if (numFixed > INT_MAX) + { + numFixed = INT_MAX; + } + + for (i = 0; i < numFixed; ++i) + { + proto_item *newSubtree; + + /* is remaining length large enough for another fixed datum (ID & value) */ + /* XXX is this really necessary? */ + tvb_ensure_length_remaining(tvb, offset+8); + + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + newSubtree = proto_item_add_subtree(newField, ettFixedData); + offset = parseFields (tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + proto_item_set_end(newField, tvb, offset); + } + } + break; + case DIS_FIELDTYPE_FIXED_DATUM_IDS: + if (numFixed > 0) + { + guint i; + proto_item *newSubtree; + + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + newSubtree = proto_item_add_subtree(newField, ettFixedData); + + if (numFixed > INT_MAX) + { + numFixed = INT_MAX; + } + + for (i = 0; i < numFixed; ++i) + { + /* is remaining length large enough for another fixed datum ID (32 bit int) */ + /* XXX is this really necessary? */ + tvb_ensure_length_remaining(tvb, offset+4); + offset = parseFields (tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + } + proto_item_set_end(newField, tvb, offset); + } + break; + case DIS_FIELDTYPE_VARIABLE_DATUMS: + { + guint i; + if (numVariable > INT_MAX) + { + numVariable = INT_MAX; + } + + for (i = 0; i < numVariable; ++i) + { + proto_item *newSubtree; + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + newSubtree = proto_item_add_subtree + (newField, ettVariableData); + offset = parseFields + (tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + proto_item_set_end(newField, tvb, offset); + } + + } + break; + case DIS_FIELDTYPE_VARIABLE_DATUM_IDS: + if (numVariable > 0) + { + guint i; + proto_item *newSubtree; + + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + newSubtree = proto_item_add_subtree(newField, ettVariableData); + + if (numVariable > INT_MAX) + { + numVariable = INT_MAX; + } + + for (i = 0; i < numVariable; ++i) + { + offset = parseFields + (tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + } + proto_item_set_end(newField, tvb, offset); + } + break; + case DIS_FIELDTYPE_VARIABLE_PARAMETERS: + { + guint i; + + if (numVariable > DIS_PDU_MAX_VARIABLE_PARAMETERS) + { + numVariable = DIS_PDU_MAX_VARIABLE_PARAMETERS; + } + + for (i = 0; i < numVariable; ++i) + { + proto_item *newSubtree; + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + newSubtree = proto_item_add_subtree(newField, + ettVariableParameters[i]); + offset = parseFields + (tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + offset = parseField_VariableParameter + (tvb, newSubtree, offset, pinfo); + proto_item_set_end(newField, tvb, offset); + } + } + break; + case DIS_FIELDTYPE_VARIABLE_RECORDS: + { + guint i; + + if (numVariable > DIS_PDU_MAX_VARIABLE_RECORDS) + { + numVariable = DIS_PDU_MAX_VARIABLE_RECORDS; + } + + for (i = 0; i < numVariable; ++i) + { + proto_item *newSubtree; + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + newSubtree = proto_item_add_subtree(newField, + ettVariableRecords[i]); + offset = parseFields + (tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + offset = parseField_VariableRecord + (tvb, newSubtree, offset, pinfo); + proto_item_set_end(newField, tvb, offset); + } + } + break; + case DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM: + { + guint i; + + for (i = 0; i < numBeams; ++i) + { + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + if (parserNodes[fieldIndex].children != 0) + { + proto_item *newSubtree = + proto_item_add_subtree(newField, + parserNodes[fieldIndex].ettVar); + offset = parseFields(tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + } + proto_item_set_end(newField, tvb, offset); + } + } + break; + case DIS_FIELDTYPE_TRACK_JAM: + { + guint i; + + for (i = 0; i < numTrackJamTargets; ++i) + { + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + if (parserNodes[fieldIndex].children != 0) + { + proto_item *newSubtree = + proto_item_add_subtree(newField, + parserNodes[fieldIndex].ettVar); + offset = parseFields(tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + } + proto_item_set_end(newField, tvb, offset); + } + } + break; + case DIS_FIELDTYPE_NUM_ELECTROMAGNETIC_EMISSION_SYSTEMS: + uintVal = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_dis_num_electromagnetic_emission_systems, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + break; + case DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM: + { + guint i; + + if (numVariable > DIS_PDU_MAX_ELECTROMAGNETIC_EMISSION_SYSTEMS) + { + numVariable = DIS_PDU_MAX_ELECTROMAGNETIC_EMISSION_SYSTEMS; + } + + for (i = 0; i < numVariable; ++i) + { + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s", + parserNodes[fieldIndex].fieldLabel); + if (parserNodes[fieldIndex].children != 0) + { + proto_item *newSubtree = + proto_item_add_subtree(newField, + parserNodes[fieldIndex].ettVar); + offset = parseFields(tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + } + proto_item_set_end(newField, tvb, offset); + } + } + break; + case DIS_FIELDTYPE_NUM_OF_SHAFTS: + { + uintVal = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_dis_num_shafts, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + } + break; + case DIS_FIELDTYPE_SHAFTS: + { + guint i; + + if (numShafts > DIS_PDU_MAX_SHAFTS) + { + numShafts = DIS_PDU_MAX_SHAFTS; + } + + for (i = 0; i < numShafts; ++i) + { + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s [%d of %d]", + parserNodes[fieldIndex].fieldLabel, i+1, numShafts); + if (parserNodes[fieldIndex].children != 0) + { + proto_item *newSubtree = + proto_item_add_subtree(newField, + parserNodes[fieldIndex].ettVar); + offset = parseFields(tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + } + proto_item_set_end(newField, tvb, offset); + } + } + break; + case DIS_FIELDTYPE_NUM_OF_APAS: + { + uintVal = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_dis_num_apas, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + } + break; + case DIS_FIELDTYPE_APA: + { + guint i; + + if (numApas > DIS_PDU_MAX_APAS) + { + numApas = DIS_PDU_MAX_APAS; + } + + for (i = 0; i < numApas; ++i) + { + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s [%d of %d]", + parserNodes[fieldIndex].fieldLabel, i+1, numApas); + if (parserNodes[fieldIndex].children != 0) + { + proto_item *newSubtree = + proto_item_add_subtree(newField, + parserNodes[fieldIndex].ettVar); + offset = parseFields(tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + } + proto_item_set_end(newField, tvb, offset); + } + } + break; + case DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEMS: + { + uintVal = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_dis_num_ua_emitter_systems, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + *(parserNodes[fieldIndex].outputVar) = (guint32)uintVal; + } + break; + case DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEM_BEAMS: + { + uintVal = tvb_get_guint8(tvb, offset); + offset = parseField_UInt(tvb, tree, offset, parserNodes[fieldIndex], 1); + numUABeams += (guint32)uintVal; + } + break; + case DIS_FIELDTYPE_UA_EMITTER_SYSTEMS: + { + guint i; + + if (numUAEmitter > DIS_PDU_MAX_UA_EMITTER_SYSTEMS) + { + numUAEmitter = DIS_PDU_MAX_UA_EMITTER_SYSTEMS; + } + + for (i = 0; i < numUAEmitter; ++i) + { + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s [%d of %d]", + parserNodes[fieldIndex].fieldLabel, i+1, numUAEmitter); + if (parserNodes[fieldIndex].children != 0) + { + proto_item *newSubtree = + proto_item_add_subtree(newField, + parserNodes[fieldIndex].ettVar); + offset = parseFields(tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + } + proto_item_set_end(newField, tvb, offset); + } + } + break; + case DIS_FIELDTYPE_UA_BEAMS: + { + guint i; + + if (numUABeams > DIS_PDU_MAX_UA_BEAMS) + { + numUABeams = DIS_PDU_MAX_UA_BEAMS; + } + + for (i = 0; i < numUABeams; ++i) + { + newField = proto_tree_add_text(tree, tvb, offset, -1, "%s [%d of %d]", + parserNodes[fieldIndex].fieldLabel, i+1, numUABeams); + if (parserNodes[fieldIndex].children != 0) + { + proto_item *newSubtree = + proto_item_add_subtree(newField, + parserNodes[fieldIndex].ettVar); + offset = parseFields(tvb, newSubtree, offset, + parserNodes[fieldIndex].children, pinfo); + } + proto_item_set_end(newField, tvb, offset); + } + numUABeams = 0; /* reset beam count for this pdu */ + } + break; + default: + break; + } + + ++fieldIndex; + length = tvb_length_remaining(tvb, offset); + } + + return offset; +} + +/* Parse a variable parameter field. + */ +static gint parseField_VariableParameter(tvbuff_t *tvb, proto_tree *tree, gint offset, packet_info *pinfo) +{ + DIS_ParserNode *paramParser = 0; + + /* Determine the parser to use based on the type */ + switch (variableParameterType) { + case DIS_PARAM_TYPE_DESIG_ARTICULATED_PART: + paramParser = DIS_FIELDS_VP_ARTICULATED_PART; + break; + case DIS_PARAM_TYPE_DESIG_ATTACHED_PART: + paramParser = DIS_FIELDS_VP_ATTACHED_PART; + break; + case DIS_PARAM_TYPE_DESIG_ENTITY_OFFSET: + paramParser = DIS_FIELDS_VP_ENTITY_OFFSET; + break; + case DIS_PARAM_TYPE_DESIG_ENTITY_ASSOCIATION: + paramParser = DIS_FIELDS_VP_ENTITY_ASSOCIATION; + break; + default: + paramParser = DIS_FIELDS_VP_GENERIC; + break; + } + + /* Parse the variable parameter fields */ + if (paramParser) + { + offset = parseFields(tvb, tree, offset, paramParser, pinfo); + } + + return offset; +} + +/* Parse a variable record field. + */ +static gint parseField_VariableRecord(tvbuff_t *tvb, proto_tree *tree, gint offset, packet_info *pinfo) +{ + DIS_ParserNode *paramParser = 0; + + /* Determine the parser to use based on the type */ + switch (variableRecordType) { + case 47200: + paramParser = DIS_FIELDS_VR_APPLICATION_HEALTH_STATUS; + break; + case 47300: + paramParser = DIS_FIELDS_VR_APPLICATION_INITIALIZATION; + break; + case 47600: + paramParser = DIS_FIELDS_VR_DATA_QUERY; + break; + default: + { + + guint32 dataLength = variableRecordLength - 6; + + if (dataLength > 0) + { + proto_tree_add_text(tree, tvb, offset, dataLength, + "Record Data (%d bytes)", dataLength); + offset += dataLength; + } + } + break; + } + + /* Parse the variable record fields */ + if (paramParser) + { + offset = parseFields(tvb, tree, offset, paramParser, pinfo); + } + + /* Should alignment padding be added */ + if (variableRecordLength % 8) + { + guint32 alignmentPadding = (8 - (variableRecordLength % 8)); + + proto_tree_add_text(tree, tvb, offset, alignmentPadding, + "Alignment Padding (%d bytes)", alignmentPadding); + offset += alignmentPadding; + } + + return offset; +} + +void proto_register_dis(void); static const true_false_string dis_modulation_spread_spectrum = { "Spread Spectrum modulation in use",