Coverage Report

Created: 2026-09-28 06:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-cigi.c
Line
Count
Source
1
/* packet-cigi.c
2
 * Routines for Common Image Generator Interface
3
 * (Versions 2, 3 and 4) dissection
4
 * CIGI 1-3 - http://cigi.sourceforge.net/
5
 * Copyright (c) 2005 The Boeing Company
6
 *
7
 * CIGI 4 https://www.sisostandards.org/page/StandardsProducts
8
 *
9
 * Wireshark - Network traffic analyzer
10
 * By Gerald Combs <gerald@wireshark.org>
11
 * Copyright 1998 Gerald Combs
12
 *
13
 * SPDX-License-Identifier: GPL-2.0-or-later
14
 *
15
 * Contributors:
16
 * Kyle J. Harms <kyle.j.harms@boeing.com>
17
 * Brian M. Ames <bmames@apk.net>
18
 */
19
20
#include "config.h"
21
22
#include <epan/packet.h>
23
#include <epan/exceptions.h>
24
#include <epan/expert.h>
25
#include <epan/prefs.h>
26
#include <epan/to_str.h>
27
#include <epan/tfs.h>
28
29
/* Forward declaration */
30
void proto_register_cigi(void);
31
void proto_reg_handoff_cigi(void);
32
33
static bool packet_is_cigi(tvbuff_t*);
34
static void dissect_cigi_pdu(tvbuff_t*, packet_info*, proto_tree*);
35
static void cigi_add_tree(tvbuff_t*, proto_tree*);
36
static int cigi_add_data(tvbuff_t*, proto_tree*, int);
37
38
static void cigi2_add_tree(tvbuff_t*, packet_info*, proto_tree*);
39
static int cigi2_add_ig_control(tvbuff_t*, proto_tree*, int);
40
static int cigi2_add_entity_control(tvbuff_t*, proto_tree*, int);
41
static int cigi2_add_component_control(tvbuff_t*, proto_tree*, int);
42
static int cigi2_add_articulated_parts_control(tvbuff_t*, proto_tree*, int);
43
static int cigi2_add_rate_control(tvbuff_t*, proto_tree*, int);
44
static int cigi2_add_environment_control(tvbuff_t*, proto_tree*, int);
45
static int cigi2_add_weather_control(tvbuff_t*, proto_tree*, int);
46
static int cigi2_add_view_control(tvbuff_t*, proto_tree*, int);
47
static int cigi2_add_sensor_control(tvbuff_t*, proto_tree*, int);
48
static int cigi2_add_trajectory_definition(tvbuff_t*, proto_tree*, int);
49
static int cigi2_add_special_effect_definition(tvbuff_t*, proto_tree*, int);
50
static int cigi2_add_view_definition(tvbuff_t*, proto_tree*, int);
51
static int cigi2_add_collision_detection_segment_definition(tvbuff_t*, proto_tree*, int);
52
static int cigi2_add_collision_detection_volume_definition(tvbuff_t*, proto_tree*, int);
53
static int cigi2_add_height_above_terrain_request(tvbuff_t*, proto_tree*, int);
54
static int cigi2_add_line_of_sight_occult_request(tvbuff_t*, proto_tree*, int);
55
static int cigi2_add_line_of_sight_range_request(tvbuff_t*, proto_tree*, int);
56
static int cigi2_add_height_of_terrain_request(tvbuff_t*, proto_tree*, int);
57
static int cigi2_add_start_of_frame(tvbuff_t*, proto_tree*, int);
58
static int cigi2_add_height_above_terrain_response(tvbuff_t*, proto_tree*, int);
59
static int cigi2_add_line_of_sight_response(tvbuff_t*, proto_tree*, int);
60
static int cigi2_add_collision_detection_segment_response(tvbuff_t*, proto_tree*, int);
61
static int cigi2_add_sensor_response(tvbuff_t*, proto_tree*, int);
62
static int cigi2_add_height_of_terrain_response(tvbuff_t*, proto_tree*, int);
63
static int cigi2_add_collision_detection_volume_response(tvbuff_t*, proto_tree*, int);
64
static int cigi2_add_image_generator_message(tvbuff_t*, proto_tree*, int);
65
66
static void cigi3_add_tree(tvbuff_t*, packet_info*, proto_tree*);
67
static int cigi3_add_ig_control(tvbuff_t*, packet_info*, proto_tree*, void*);
68
static int cigi3_add_entity_control(tvbuff_t*, packet_info*, proto_tree*, void*);
69
static int cigi3_add_conformal_clamped_entity_control(tvbuff_t*, packet_info*, proto_tree*, void*);
70
static int cigi3_add_component_control(tvbuff_t*, packet_info*, proto_tree*, void*);
71
static int cigi3_add_short_component_control(tvbuff_t*, packet_info*, proto_tree*, void*);
72
static int cigi3_add_articulated_part_control(tvbuff_t*, packet_info*, proto_tree*, void*);
73
static int cigi3_add_short_articulated_part_control(tvbuff_t*, packet_info*, proto_tree*, void*);
74
static int cigi3_add_rate_control(tvbuff_t*, packet_info*, proto_tree*, void*);
75
static int cigi3_add_celestial_sphere_control(tvbuff_t*, packet_info*, proto_tree*, void*);
76
static int cigi3_add_atmosphere_control(tvbuff_t*, packet_info*, proto_tree*, void*);
77
static int cigi3_add_environmental_region_control(tvbuff_t*, packet_info*, proto_tree*, void*);
78
static int cigi3_add_weather_control(tvbuff_t*, packet_info*, proto_tree*, void*);
79
static int cigi3_add_maritime_surface_conditions_control(tvbuff_t*, packet_info*, proto_tree*, void*);
80
static int cigi3_add_wave_control(tvbuff_t*, packet_info*, proto_tree*, void*);
81
static int cigi3_add_terrestrial_surface_conditions_control(tvbuff_t*, packet_info*, proto_tree*, void*);
82
static int cigi3_add_view_control(tvbuff_t*, packet_info*, proto_tree*, void*);
83
static int cigi3_add_sensor_control(tvbuff_t*, packet_info*, proto_tree*, void*);
84
static int cigi3_add_motion_tracker_control(tvbuff_t*, packet_info*, proto_tree*, void*);
85
static int cigi3_add_earth_reference_model_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
86
static int cigi3_add_trajectory_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
87
static int cigi3_add_view_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
88
static int cigi3_add_collision_detection_segment_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
89
static int cigi3_add_collision_detection_volume_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
90
static int cigi3_add_hat_hot_request(tvbuff_t*, packet_info*, proto_tree*, void*);
91
static int cigi3_add_line_of_sight_segment_request(tvbuff_t*, packet_info*, proto_tree*, void*);
92
static int cigi3_add_line_of_sight_vector_request(tvbuff_t*, packet_info*, proto_tree*, void*);
93
static int cigi3_add_position_request(tvbuff_t*, packet_info*, proto_tree*, void*);
94
static int cigi3_add_environmental_conditions_request(tvbuff_t*, packet_info*, proto_tree*, void*);
95
static int cigi3_add_start_of_frame(tvbuff_t*, packet_info*, proto_tree*, void*);
96
static int cigi3_add_hat_hot_response(tvbuff_t*, packet_info*, proto_tree*, void*);
97
static int cigi3_add_hat_hot_extended_response(tvbuff_t*, packet_info*, proto_tree*, void*);
98
static int cigi3_add_line_of_sight_response(tvbuff_t*, packet_info*, proto_tree*, void*);
99
static int cigi3_add_line_of_sight_extended_response(tvbuff_t*, packet_info*, proto_tree*, void*);
100
static int cigi3_add_sensor_response(tvbuff_t*, packet_info*, proto_tree*, void*);
101
static int cigi3_add_sensor_extended_response(tvbuff_t*, packet_info*, proto_tree*, void*);
102
static int cigi3_add_position_response(tvbuff_t*, packet_info*, proto_tree*, void*);
103
static int cigi3_add_weather_conditions_response(tvbuff_t*, packet_info*, proto_tree*, void*);
104
static int cigi3_add_aerosol_concentration_response(tvbuff_t*, packet_info*, proto_tree*, void*);
105
static int cigi3_add_maritime_surface_conditions_response(tvbuff_t*, packet_info*, proto_tree*, void*);
106
static int cigi3_add_terrestrial_surface_conditions_response(tvbuff_t*, packet_info*, proto_tree*, void*);
107
static int cigi3_add_collision_detection_segment_notification(tvbuff_t*, packet_info*, proto_tree*, void*);
108
static int cigi3_add_collision_detection_volume_notification(tvbuff_t*, packet_info*, proto_tree*, void*);
109
static int cigi3_add_animation_stop_notification(tvbuff_t*, packet_info*, proto_tree*, void*);
110
static int cigi3_add_event_notification(tvbuff_t*, packet_info*, proto_tree*, void*);
111
static int cigi3_add_image_generator_message(tvbuff_t*, packet_info*, proto_tree*, void*);
112
113
static int cigi3_3_add_symbol_surface_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
114
static int cigi3_3_add_symbol_text_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
115
static int cigi3_3_add_symbol_circle_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
116
static int cigi3_3_add_symbol_line_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
117
static int cigi3_3_add_symbol_clone(tvbuff_t*, packet_info*, proto_tree*, void*);
118
static int cigi3_3_add_symbol_control(tvbuff_t*, packet_info*, proto_tree*, void*);
119
static int cigi3_3_add_short_symbol_control(tvbuff_t*, packet_info*, proto_tree*, void*);
120
121
122
static void cigi4_add_tree(tvbuff_t*, packet_info*, proto_tree*);
123
static int cigi4_add_ig_control(tvbuff_t*, packet_info*, proto_tree*, void*);
124
static int cigi4_add_entity_position(tvbuff_t*, packet_info*, proto_tree*, void*);
125
static int cigi4_add_conformal_clamped_entity_position(tvbuff_t*, packet_info*, proto_tree*, void*);
126
static int cigi4_add_component_control(tvbuff_t*, packet_info*, proto_tree*, void*);
127
static int cigi4_add_short_component_control(tvbuff_t*, packet_info*, proto_tree*, void*);
128
static int cigi4_add_articulated_part_control(tvbuff_t*, packet_info*, proto_tree*, void*);
129
static int cigi4_add_short_articulated_part_control(tvbuff_t*, packet_info*, proto_tree*, void*);
130
static int cigi4_add_velocity_control(tvbuff_t*, packet_info*, proto_tree*, void*);
131
static int cigi4_add_celestial_sphere_control(tvbuff_t*, packet_info*, proto_tree*, void*);
132
static int cigi4_add_atmosphere_control(tvbuff_t*, packet_info*, proto_tree*, void*);
133
static int cigi4_add_environmental_region_control(tvbuff_t*, packet_info*, proto_tree*, void*);
134
static int cigi4_add_weather_control(tvbuff_t*, packet_info*, proto_tree*, void*);
135
static int cigi4_add_maritime_surface_conditions_control(tvbuff_t*, packet_info*, proto_tree*, void*);
136
static int cigi4_add_wave_control(tvbuff_t*, packet_info*, proto_tree*, void*);
137
static int cigi4_add_terrestrial_surface_conditions_control(tvbuff_t*, packet_info*, proto_tree*, void*);
138
static int cigi4_add_view_control(tvbuff_t*, packet_info*, proto_tree*, void*);
139
static int cigi4_add_sensor_control(tvbuff_t*, packet_info*, proto_tree*, void*);
140
static int cigi4_add_motion_tracker_control(tvbuff_t*, packet_info*, proto_tree*, void*);
141
static int cigi4_add_earth_reference_model_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
142
static int cigi4_add_acceleration_control(tvbuff_t*, packet_info*, proto_tree*, void*);
143
static int cigi4_add_view_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
144
static int cigi4_add_collision_detection_segment_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
145
static int cigi4_add_collision_detection_volume_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
146
static int cigi4_add_hat_hot_request(tvbuff_t*, packet_info*, proto_tree*, void*);
147
static int cigi4_add_line_of_sight_segment_request(tvbuff_t*, packet_info*, proto_tree*, void*);
148
static int cigi4_add_line_of_sight_vector_request(tvbuff_t*, packet_info*, proto_tree*, void*);
149
static int cigi4_add_position_request(tvbuff_t*, packet_info*, proto_tree*, void*);
150
static int cigi4_add_environmental_conditions_request(tvbuff_t*, packet_info*, proto_tree*, void*);
151
static int cigi4_add_symbol_surface_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
152
static int cigi4_add_symbol_text_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
153
static int cigi4_add_symbol_circle_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
154
static int cigi4_add_symbol_polygon_definition(tvbuff_t*, packet_info*, proto_tree*, void*);
155
static int cigi4_add_symbol_clone(tvbuff_t*, packet_info*, proto_tree*, void*);
156
static int cigi4_add_symbol_control(tvbuff_t*, packet_info*, proto_tree*, void*);
157
static int cigi4_add_short_symbol_control(tvbuff_t*, packet_info*, proto_tree*, void*);
158
static int cigi4_add_symbol_circle_textured(tvbuff_t*, packet_info*, proto_tree*, void*);
159
static int cigi4_add_entity_control(tvbuff_t*, packet_info*, proto_tree*, void*);
160
static int cigi4_add_animation_control(tvbuff_t*, packet_info*, proto_tree*, void*);
161
162
static int cigi4_add_start_of_frame(tvbuff_t*, packet_info*, proto_tree*, void*);
163
static int cigi4_add_hat_hot_response(tvbuff_t*, packet_info*, proto_tree*, void*);
164
static int cigi4_add_hat_hot_extended_response(tvbuff_t*, packet_info*, proto_tree*, void*);
165
static int cigi4_add_line_of_sight_response(tvbuff_t*, packet_info*, proto_tree*, void*);
166
static int cigi4_add_line_of_sight_extended_response(tvbuff_t*, packet_info*, proto_tree*, void*);
167
static int cigi4_add_sensor_response(tvbuff_t*, packet_info*, proto_tree*, void*);
168
static int cigi4_add_sensor_extended_response(tvbuff_t*, packet_info*, proto_tree*, void*);
169
static int cigi4_add_position_response(tvbuff_t*, packet_info*, proto_tree*, void*);
170
static int cigi4_add_weather_conditions_response(tvbuff_t*, packet_info*, proto_tree*, void*);
171
static int cigi4_add_aerosol_concentration_response(tvbuff_t*, packet_info*, proto_tree*, void*);
172
static int cigi4_add_maritime_surface_conditions_response(tvbuff_t*, packet_info*, proto_tree*, void*);
173
static int cigi4_add_terrestrial_surface_conditions_response(tvbuff_t*, packet_info*, proto_tree*, void*);
174
static int cigi4_add_collision_detection_segment_notification(tvbuff_t*, packet_info*, proto_tree*, void*);
175
static int cigi4_add_collision_detection_volume_notification(tvbuff_t*, packet_info*, proto_tree*, void*);
176
static int cigi4_add_animation_stop_notification(tvbuff_t*, packet_info*, proto_tree*, void*);
177
static int cigi4_add_event_notification(tvbuff_t*, packet_info*, proto_tree*, void*);
178
static int cigi4_add_image_generator_message(tvbuff_t*, packet_info*, proto_tree*, void*);
179
180
/* CIGI Handle */
181
static dissector_handle_t cigi_handle;
182
183
static dissector_table_t cigi3_packet_id_table;
184
static dissector_table_t cigi4_packet_id_table;
185
186
/* Initialize the protocol and registered fields */
187
static int proto_cigi;
188
189
/* All CIGI Versions */
190
static int hf_cigi_src_port;
191
static int hf_cigi_dest_port;
192
static int hf_cigi_port;
193
static int hf_cigi_data;
194
static int hf_cigi_packet_id;
195
static int hf_cigi_packet_size;
196
static int hf_cigi_version;
197
198
static int hf_cigi_frame_size;
199
200
static int hf_cigi_unknown;
201
202
203
static const true_false_string attach_detach_tfs = {
204
    "Attach",
205
    "Detach"
206
};
207
208
static const true_false_string entity_geodetic_tfs = {
209
    "Entity",
210
    "Geodetic"
211
};
212
213
static const true_false_string extended_normal_tfs = {
214
    "Extended",
215
    "Normal"
216
};
217
218
static const true_false_string visible_occluded_tfs = {
219
    "Visible",
220
    "Occluded"
221
};
222
223
static const true_false_string visible_occulted_tfs = {
224
    "Visible",
225
    "Occulted"
226
};
227
228
/*** Fields for CIGI2 ***/
229
230
/* CIGI2 Packet ID */
231
static int hf_cigi2_packet_id;
232
0
#define CIGI2_PACKET_ID_IG_CONTROL                               1
233
0
#define CIGI2_PACKET_ID_ENTITY_CONTROL                           2
234
0
#define CIGI2_PACKET_ID_COMPONENT_CONTROL                        3
235
0
#define CIGI2_PACKET_ID_ARTICULATED_PARTS_CONTROL                4
236
0
#define CIGI2_PACKET_ID_RATE_CONTROL                             5
237
0
#define CIGI2_PACKET_ID_ENVIRONMENT_CONTROL                      6
238
0
#define CIGI2_PACKET_ID_WEATHER_CONTROL                          7
239
0
#define CIGI2_PACKET_ID_VIEW_CONTROL                             8
240
0
#define CIGI2_PACKET_ID_SENSOR_CONTROL                           9
241
0
#define CIGI2_PACKET_ID_TRAJECTORY_DEFINITION                   21
242
0
#define CIGI2_PACKET_ID_SPECIAL_EFFECT_DEFINITION               22
243
0
#define CIGI2_PACKET_ID_VIEW_DEFINITION                         23
244
0
#define CIGI2_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION  24
245
0
#define CIGI2_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION   25
246
0
#define CIGI2_PACKET_ID_HEIGHT_ABOVE_TERRAIN_REQUEST            41
247
0
#define CIGI2_PACKET_ID_LINE_OF_SIGHT_OCCULT_REQUEST            42
248
0
#define CIGI2_PACKET_ID_LINE_OF_SIGHT_RANGE_REQUEST             43
249
0
#define CIGI2_PACKET_ID_HEIGHT_OF_TERRAIN_REQUEST               44
250
0
#define CIGI2_PACKET_ID_START_OF_FRAME                         101
251
0
#define CIGI2_PACKET_ID_HEIGHT_ABOVE_TERRAIN_RESPONSE          102
252
0
#define CIGI2_PACKET_ID_LINE_OF_SIGHT_RESPONSE                 103
253
0
#define CIGI2_PACKET_ID_COLLISION_DETECTION_SEGMENT_RESPONSE   104
254
0
#define CIGI2_PACKET_ID_SENSOR_RESPONSE                        105
255
0
#define CIGI2_PACKET_ID_HEIGHT_OF_TERRAIN_RESPONSE             106
256
0
#define CIGI2_PACKET_ID_COLLISION_DETECTION_VOLUME_RESPONSE    107
257
0
#define CIGI2_PACKET_ID_IMAGE_GENERATOR_MESSAGE                108
258
0
#define CIGI2_PACKET_ID_USER_DEFINABLE_MIN                     236
259
0
#define CIGI2_PACKET_ID_USER_DEFINABLE_MAX                     255
260
static const value_string cigi2_packet_id_vals[] = {
261
    {CIGI2_PACKET_ID_IG_CONTROL, "IG Control"},
262
    {CIGI2_PACKET_ID_ENTITY_CONTROL, "Entity Control"},
263
    {CIGI2_PACKET_ID_COMPONENT_CONTROL, "Component Control"},
264
    {CIGI2_PACKET_ID_ARTICULATED_PARTS_CONTROL, "Articulated Parts Control"},
265
    {CIGI2_PACKET_ID_RATE_CONTROL, "Rate Control"},
266
    {CIGI2_PACKET_ID_ENVIRONMENT_CONTROL, "Environment Control"},
267
    {CIGI2_PACKET_ID_WEATHER_CONTROL, "Weather Control"},
268
    {CIGI2_PACKET_ID_VIEW_CONTROL, "View Control"},
269
    {CIGI2_PACKET_ID_SENSOR_CONTROL, "Sensor Control"},
270
    {CIGI2_PACKET_ID_TRAJECTORY_DEFINITION, "Trajectory Definition"},
271
    {CIGI2_PACKET_ID_SPECIAL_EFFECT_DEFINITION, "Special Effect Definition"},
272
    {CIGI2_PACKET_ID_VIEW_DEFINITION, "View Definition"},
273
    {CIGI2_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION, "Collision Detection Segment Definition"},
274
    {CIGI2_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION, "Collision Detection Volume Definition"},
275
    {CIGI2_PACKET_ID_HEIGHT_ABOVE_TERRAIN_REQUEST, "Height Above Terrain Request"},
276
    {CIGI2_PACKET_ID_LINE_OF_SIGHT_OCCULT_REQUEST, "Line of Sight Occult Request"},
277
    {CIGI2_PACKET_ID_LINE_OF_SIGHT_RANGE_REQUEST, "Line of Sight Range Request"},
278
    {CIGI2_PACKET_ID_HEIGHT_OF_TERRAIN_REQUEST, "Height of Terrain Request"},
279
    {CIGI2_PACKET_ID_START_OF_FRAME, "Start of Frame"},
280
    {CIGI2_PACKET_ID_HEIGHT_ABOVE_TERRAIN_RESPONSE, "Height Above Terrain Response"},
281
    {CIGI2_PACKET_ID_LINE_OF_SIGHT_RESPONSE, "Line of Sight Response"},
282
    {CIGI2_PACKET_ID_COLLISION_DETECTION_SEGMENT_RESPONSE, "Collision Detection Segment Response"},
283
    {CIGI2_PACKET_ID_SENSOR_RESPONSE, "Sensor Response"},
284
    {CIGI2_PACKET_ID_HEIGHT_OF_TERRAIN_RESPONSE, "Height of Terrain Response"},
285
    {CIGI2_PACKET_ID_COLLISION_DETECTION_VOLUME_RESPONSE, "Collision Detection Volume Response"},
286
    {CIGI2_PACKET_ID_IMAGE_GENERATOR_MESSAGE, "Image Generator Message"},
287
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN, "User Definable"},
288
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+1, "User Definable"},
289
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+2, "User Definable"},
290
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+3, "User Definable"},
291
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+4, "User Definable"},
292
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+5, "User Definable"},
293
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+6, "User Definable"},
294
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+7, "User Definable"},
295
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+8, "User Definable"},
296
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+9, "User Definable"},
297
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+10, "User Definable"},
298
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+11, "User Definable"},
299
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+12, "User Definable"},
300
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+13, "User Definable"},
301
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+14, "User Definable"},
302
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+15, "User Definable"},
303
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+16, "User Definable"},
304
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+17, "User Definable"},
305
    {CIGI2_PACKET_ID_USER_DEFINABLE_MIN+18, "User Definable"},
306
    {CIGI2_PACKET_ID_USER_DEFINABLE_MAX, "User Definable"},
307
    {0, NULL},
308
};
309
static value_string_ext cigi2_packet_id_vals_ext = VALUE_STRING_EXT_INIT(cigi2_packet_id_vals);
310
311
/* CIGI2 IG Control */
312
0
#define CIGI2_PACKET_SIZE_IG_CONTROL 16
313
static int hf_cigi2_ig_control;
314
static int hf_cigi2_ig_control_db_number;
315
static int hf_cigi2_ig_control_ig_mode;
316
static int hf_cigi2_ig_control_tracking_enable;
317
static int hf_cigi2_ig_control_boresight;
318
static int hf_cigi2_ig_control_frame_ctr;
319
static int hf_cigi2_ig_control_time_tag;
320
321
static const value_string cigi2_ig_control_ig_mode_vals[] = {
322
    {0, "Standby/Reset"},
323
    {1, "Operate"},
324
    {2, "Debug"},
325
    {0, NULL},
326
};
327
328
/* CIGI2 Entity Control */
329
0
#define CIGI2_PACKET_SIZE_ENTITY_CONTROL 56
330
static int hf_cigi2_entity_control;
331
static int hf_cigi2_entity_control_entity_id;
332
static int hf_cigi2_entity_control_entity_state;
333
static int hf_cigi2_entity_control_attach_state;
334
static int hf_cigi2_entity_control_collision_detect;
335
static int hf_cigi2_entity_control_effect_state;
336
static int hf_cigi2_entity_control_type;
337
static int hf_cigi2_entity_control_parent_id;
338
static int hf_cigi2_entity_control_opacity;
339
static int hf_cigi2_entity_control_internal_temp;
340
static int hf_cigi2_entity_control_roll;
341
static int hf_cigi2_entity_control_pitch;
342
static int hf_cigi2_entity_control_heading;
343
static int hf_cigi2_entity_control_alt;
344
static int hf_cigi2_entity_control_lat;
345
static int hf_cigi2_entity_control_lon;
346
347
static const value_string cigi2_entity_control_entity_state_vals[] = {
348
    {0, "Load/Hide"},
349
    {1, "Load/Show"},
350
    {2, "Unload"},
351
    {0, NULL},
352
};
353
354
static const value_string cigi2_entity_control_effect_state_vals[] = {
355
    {0, "Stop"},
356
    {1, "Play"},
357
    {2, "Restart"},
358
    {0, NULL},
359
};
360
361
/* CIGI2 Component Control */
362
0
#define CIGI2_PACKET_SIZE_COMPONENT_CONTROL 20
363
static int hf_cigi2_component_control;
364
static int hf_cigi2_component_control_instance_id;
365
static int hf_cigi2_component_control_component_class;
366
static int hf_cigi2_component_control_component_id;
367
static int hf_cigi2_component_control_component_state;
368
static int hf_cigi2_component_control_component_val1;
369
static int hf_cigi2_component_control_component_val2;
370
371
static const value_string cigi2_component_control_component_class_vals[] = {
372
    {0, "Entity"},
373
    {1, "Environment"},
374
    {2, "View"},
375
    {3, "View Group"},
376
    {4, "Sensor"},
377
    {5, "System"},
378
    {0, NULL},
379
};
380
381
/* CIGI2 Articulated Parts Control */
382
0
#define CIGI2_PACKET_SIZE_ARTICULATED_PARTS_CONTROL 32
383
static int hf_cigi2_articulated_parts_control;
384
static int hf_cigi2_articulated_parts_control_entity_id;
385
static int hf_cigi2_articulated_parts_control_part_id;
386
static int hf_cigi2_articulated_parts_control_part_state;
387
static int hf_cigi2_articulated_parts_control_xoff_enable;
388
static int hf_cigi2_articulated_parts_control_yoff_enable;
389
static int hf_cigi2_articulated_parts_control_zoff_enable;
390
static int hf_cigi2_articulated_parts_control_roll_enable;
391
static int hf_cigi2_articulated_parts_control_pitch_enable;
392
static int hf_cigi2_articulated_parts_control_yaw_enable;
393
static int hf_cigi2_articulated_parts_control_x_offset;
394
static int hf_cigi2_articulated_parts_control_y_offset;
395
static int hf_cigi2_articulated_parts_control_z_offset;
396
static int hf_cigi2_articulated_parts_control_roll;
397
static int hf_cigi2_articulated_parts_control_pitch;
398
static int hf_cigi2_articulated_parts_control_yaw;
399
400
/* CIGI2 Rate Control */
401
0
#define CIGI2_PACKET_SIZE_RATE_CONTROL 32
402
static int hf_cigi2_rate_control;
403
static int hf_cigi2_rate_control_entity_id;
404
static int hf_cigi2_rate_control_part_id;
405
static int hf_cigi2_rate_control_x_rate;
406
static int hf_cigi2_rate_control_y_rate;
407
static int hf_cigi2_rate_control_z_rate;
408
static int hf_cigi2_rate_control_roll_rate;
409
static int hf_cigi2_rate_control_pitch_rate;
410
static int hf_cigi2_rate_control_yaw_rate;
411
412
/* CIGI2 Environmental Control */
413
0
#define CIGI2_PACKET_SIZE_ENVIRONMENT_CONTROL 36
414
static int hf_cigi2_environment_control;
415
static int hf_cigi2_environment_control_hour;
416
static int hf_cigi2_environment_control_minute;
417
static int hf_cigi2_environment_control_ephemeris_enable;
418
static int hf_cigi2_environment_control_humidity;
419
static int hf_cigi2_environment_control_modtran_enable;
420
static int hf_cigi2_environment_control_date;
421
static int hf_cigi2_environment_control_air_temp;
422
static int hf_cigi2_environment_control_global_visibility;
423
static int hf_cigi2_environment_control_wind_speed;
424
static int hf_cigi2_environment_control_wind_direction;
425
static int hf_cigi2_environment_control_pressure;
426
static int hf_cigi2_environment_control_aerosol;
427
428
/* CIGI2 Weather Control */
429
0
#define CIGI2_PACKET_SIZE_WEATHER_CONTROL 44
430
static int hf_cigi2_weather_control;
431
static int hf_cigi2_weather_control_entity_id;
432
static int hf_cigi2_weather_control_weather_enable;
433
static int hf_cigi2_weather_control_scud_enable;
434
static int hf_cigi2_weather_control_random_winds;
435
static int hf_cigi2_weather_control_severity;
436
static int hf_cigi2_weather_control_phenomenon_type;
437
static int hf_cigi2_weather_control_air_temp;
438
static int hf_cigi2_weather_control_opacity;
439
static int hf_cigi2_weather_control_scud_frequency;
440
static int hf_cigi2_weather_control_coverage;
441
static int hf_cigi2_weather_control_elevation;
442
static int hf_cigi2_weather_control_thickness;
443
static int hf_cigi2_weather_control_transition_band;
444
static int hf_cigi2_weather_control_wind_speed;
445
static int hf_cigi2_weather_control_wind_direction;
446
447
static const value_string cigi2_weather_control_phenomenon_type_vals[] = {
448
    {0, "Use Entity ID"},
449
    {1, "Cloud Layer 1"},
450
    {2, "Cloud Layer 2"},
451
    {3, "Ground Fog"},
452
    {4, "Rain"},
453
    {5, "Snow"},
454
    {6, "Sand"},
455
    {0, NULL},
456
};
457
458
/* CIGI2 View Control */
459
0
#define CIGI2_PACKET_SIZE_VIEW_CONTROL 32
460
static int hf_cigi2_view_control;
461
static int hf_cigi2_view_control_entity_id;
462
static int hf_cigi2_view_control_view_id;
463
static int hf_cigi2_view_control_view_group;
464
static int hf_cigi2_view_control_xoff_enable;
465
static int hf_cigi2_view_control_yoff_enable;
466
static int hf_cigi2_view_control_zoff_enable;
467
static int hf_cigi2_view_control_roll_enable;
468
static int hf_cigi2_view_control_pitch_enable;
469
static int hf_cigi2_view_control_yaw_enable;
470
static int hf_cigi2_view_control_x_offset;
471
static int hf_cigi2_view_control_y_offset;
472
static int hf_cigi2_view_control_z_offset;
473
static int hf_cigi2_view_control_roll;
474
static int hf_cigi2_view_control_pitch;
475
static int hf_cigi2_view_control_yaw;
476
477
/* CIGI2 Sensor Control */
478
0
#define CIGI2_PACKET_SIZE_SENSOR_CONTROL 24
479
static int hf_cigi2_sensor_control;
480
static int hf_cigi2_sensor_control_view_id;
481
static int hf_cigi2_sensor_control_sensor_enable;
482
static int hf_cigi2_sensor_control_polarity;
483
static int hf_cigi2_sensor_control_line_dropout;
484
static int hf_cigi2_sensor_control_sensor_id;
485
static int hf_cigi2_sensor_control_track_mode;
486
static int hf_cigi2_sensor_control_auto_gain;
487
static int hf_cigi2_sensor_control_track_polarity;
488
static int hf_cigi2_sensor_control_gain;
489
static int hf_cigi2_sensor_control_level;
490
static int hf_cigi2_sensor_control_ac_coupling;
491
static int hf_cigi2_sensor_control_noise;
492
493
static const true_false_string black_white_tfs = {
494
    "Black",
495
    "White"
496
};
497
498
static const value_string cigi2_sensor_control_track_mode_vals[] = {
499
    {0, "Off"},
500
    {1, "Force Correlate"},
501
    {2, "Scene"},
502
    {3, "Target"},
503
    {4, "Ship"},
504
    {0, NULL},
505
};
506
507
/* CIGI2 Trajectory Definition */
508
0
#define CIGI2_PACKET_SIZE_TRAJECTORY_DEFINITION 16
509
static int hf_cigi2_trajectory_definition;
510
static int hf_cigi2_trajectory_definition_entity_id;
511
static int hf_cigi2_trajectory_definition_acceleration;
512
static int hf_cigi2_trajectory_definition_retardation;
513
static int hf_cigi2_trajectory_definition_terminal_velocity;
514
515
/* CIGI2 Special Effect Definition */
516
0
#define CIGI2_PACKET_SIZE_SPECIAL_EFFECT_DEFINITION 32
517
static int hf_cigi2_special_effect_definition;
518
static int hf_cigi2_special_effect_definition_entity_id;
519
static int hf_cigi2_special_effect_definition_seq_direction;
520
static int hf_cigi2_special_effect_definition_color_enable;
521
static int hf_cigi2_special_effect_definition_red;
522
static int hf_cigi2_special_effect_definition_green;
523
static int hf_cigi2_special_effect_definition_blue;
524
static int hf_cigi2_special_effect_definition_x_scale;
525
static int hf_cigi2_special_effect_definition_y_scale;
526
static int hf_cigi2_special_effect_definition_z_scale;
527
static int hf_cigi2_special_effect_definition_time_scale;
528
static int hf_cigi2_special_effect_definition_spare;
529
static int hf_cigi2_special_effect_definition_effect_count;
530
static int hf_cigi2_special_effect_definition_separation;
531
static int hf_cigi2_special_effect_definition_burst_interval;
532
static int hf_cigi2_special_effect_definition_duration;
533
534
static const true_false_string cigi2_special_effect_definition_seq_direction_tfs = {
535
    "Backward",
536
    "Forward"
537
};
538
539
/* CIGI2 View Definition */
540
0
#define CIGI2_PACKET_SIZE_VIEW_DEFINITION 32
541
static int hf_cigi2_view_definition;
542
static int hf_cigi2_view_definition_view_id;
543
static int hf_cigi2_view_definition_view_group;
544
static int hf_cigi2_view_definition_view_type;
545
static int hf_cigi2_view_definition_pixel_rep;
546
static int hf_cigi2_view_definition_mirror;
547
static int hf_cigi2_view_definition_tracker_assign;
548
static int hf_cigi2_view_definition_near_enable;
549
static int hf_cigi2_view_definition_far_enable;
550
static int hf_cigi2_view_definition_left_enable;
551
static int hf_cigi2_view_definition_right_enable;
552
static int hf_cigi2_view_definition_top_enable;
553
static int hf_cigi2_view_definition_bottom_enable;
554
static int hf_cigi2_view_definition_fov_near;
555
static int hf_cigi2_view_definition_fov_far;
556
static int hf_cigi2_view_definition_fov_left;
557
static int hf_cigi2_view_definition_fov_right;
558
static int hf_cigi2_view_definition_fov_top;
559
static int hf_cigi2_view_definition_fov_bottom;
560
561
static const value_string cigi2_view_definition_pixel_rep_vals[] = {
562
    {0, "No Replicate"},
563
    {1, "1x2 Pixel Replicate"},
564
    {2, "2x1 Pixel Replicate"},
565
    {3, "2x2 Pixel Replicate"},
566
    {4, "TBD"},
567
    {5, "TBD"},
568
    {6, "TBD"},
569
    {0, NULL},
570
};
571
572
static const value_string cigi2_view_definition_mirror_vals[] = {
573
    {0, "None"},
574
    {1, "Horizontal"},
575
    {2, "Vertical"},
576
    {3, "Horizontal and Vertical"},
577
    {0, NULL},
578
};
579
580
/* CIGI2 Collision Detection Segment Definition */
581
0
#define CIGI2_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_DEFINITION 24
582
static int hf_cigi2_collision_detection_segment_definition;
583
static int hf_cigi2_collision_detection_segment_definition_entity_id;
584
static int hf_cigi2_collision_detection_segment_definition_segment_enable;
585
static int hf_cigi2_collision_detection_segment_definition_segment_id;
586
static int hf_cigi2_collision_detection_segment_definition_collision_mask;
587
static int hf_cigi2_collision_detection_segment_definition_x_start;
588
static int hf_cigi2_collision_detection_segment_definition_y_start;
589
static int hf_cigi2_collision_detection_segment_definition_z_start;
590
static int hf_cigi2_collision_detection_segment_definition_x_end;
591
static int hf_cigi2_collision_detection_segment_definition_y_end;
592
static int hf_cigi2_collision_detection_segment_definition_z_end;
593
594
/* CIGI2 Collision Detection Volume Definition */
595
0
#define CIGI2_PACKET_SIZE_COLLISION_DETECTION_VOLUME_DEFINITION 20
596
static int hf_cigi2_collision_detection_volume_definition;
597
static int hf_cigi2_collision_detection_volume_definition_entity_id;
598
static int hf_cigi2_collision_detection_volume_definition_volume_enable;
599
static int hf_cigi2_collision_detection_volume_definition_volume_id;
600
static int hf_cigi2_collision_detection_volume_definition_x_offset;
601
static int hf_cigi2_collision_detection_volume_definition_y_offset;
602
static int hf_cigi2_collision_detection_volume_definition_z_offset;
603
static int hf_cigi2_collision_detection_volume_definition_height;
604
static int hf_cigi2_collision_detection_volume_definition_width;
605
static int hf_cigi2_collision_detection_volume_definition_depth;
606
607
/* CIGI2 Height Above Terrain Request */
608
0
#define CIGI2_PACKET_SIZE_HEIGHT_ABOVE_TERRAIN_REQUEST 32
609
static int hf_cigi2_height_above_terrain_request;
610
static int hf_cigi2_height_above_terrain_request_hat_id;
611
static int hf_cigi2_height_above_terrain_request_alt;
612
static int hf_cigi2_height_above_terrain_request_lat;
613
static int hf_cigi2_height_above_terrain_request_lon;
614
615
/* CIGI2 Line of Sight Occult Request */
616
0
#define CIGI2_PACKET_SIZE_LINE_OF_SIGHT_OCCULT_REQUEST 56
617
static int hf_cigi2_line_of_sight_occult_request;
618
static int hf_cigi2_line_of_sight_occult_request_los_id;
619
static int hf_cigi2_line_of_sight_occult_request_source_alt;
620
static int hf_cigi2_line_of_sight_occult_request_source_lat;
621
static int hf_cigi2_line_of_sight_occult_request_source_lon;
622
static int hf_cigi2_line_of_sight_occult_request_dest_alt;
623
static int hf_cigi2_line_of_sight_occult_request_dest_lat;
624
static int hf_cigi2_line_of_sight_occult_request_dest_lon;
625
626
/* CIGI2 Line of Sight Range Request */
627
0
#define CIGI2_PACKET_SIZE_LINE_OF_SIGHT_RANGE_REQUEST 48
628
static int hf_cigi2_line_of_sight_range_request;
629
static int hf_cigi2_line_of_sight_range_request_los_id;
630
static int hf_cigi2_line_of_sight_range_request_azimuth;
631
static int hf_cigi2_line_of_sight_range_request_elevation;
632
static int hf_cigi2_line_of_sight_range_request_min_range;
633
static int hf_cigi2_line_of_sight_range_request_max_range;
634
static int hf_cigi2_line_of_sight_range_request_source_alt;
635
static int hf_cigi2_line_of_sight_range_request_source_lat;
636
static int hf_cigi2_line_of_sight_range_request_source_lon;
637
638
/* CIGI2 Height of Terrain Request */
639
0
#define CIGI2_PACKET_SIZE_HEIGHT_OF_TERRAIN_REQUEST 24
640
static int hf_cigi2_height_of_terrain_request;
641
static int hf_cigi2_height_of_terrain_request_hot_id;
642
static int hf_cigi2_height_of_terrain_request_lat;
643
static int hf_cigi2_height_of_terrain_request_lon;
644
645
/* CIGI2 Start of Frame */
646
0
#define CIGI2_PACKET_SIZE_START_OF_FRAME 16
647
static int hf_cigi2_start_of_frame;
648
static int hf_cigi2_start_of_frame_db_number;
649
static int hf_cigi2_start_of_frame_ig_status_code;
650
static int hf_cigi2_start_of_frame_ig_mode;
651
static int hf_cigi2_start_of_frame_frame_ctr;
652
static int hf_cigi2_start_of_frame_time_tag;
653
654
static const value_string cigi2_start_of_frame_ig_mode_vals[] = {
655
    {0, "Standby/Reset"},
656
    {1, "Operate"},
657
    {2, "Debug"},
658
    {3, "Off-Line Maintenance"},
659
    {0, NULL},
660
};
661
662
/* CIGI2 Height Above Terrain Response */
663
0
#define CIGI2_PACKET_SIZE_HEIGHT_ABOVE_TERRAIN_RESPONSE 24
664
static int hf_cigi2_height_above_terrain_response;
665
static int hf_cigi2_height_above_terrain_response_hat_id;
666
static int hf_cigi2_height_above_terrain_response_valid;
667
static int hf_cigi2_height_above_terrain_response_material_type;
668
static int hf_cigi2_height_above_terrain_response_alt;
669
670
/* CIGI2 Line of Sight Response */
671
0
#define CIGI2_PACKET_SIZE_LINE_OF_SIGHT_RESPONSE 40
672
static int hf_cigi2_line_of_sight_response;
673
static int hf_cigi2_line_of_sight_response_los_id;
674
static int hf_cigi2_line_of_sight_response_valid;
675
static int hf_cigi2_line_of_sight_response_occult_response;
676
static int hf_cigi2_line_of_sight_response_material_type;
677
static int hf_cigi2_line_of_sight_response_range;
678
static int hf_cigi2_line_of_sight_response_alt;
679
static int hf_cigi2_line_of_sight_response_lat;
680
static int hf_cigi2_line_of_sight_response_lon;
681
682
/* CIGI2 Collision Detection Segment Response */
683
0
#define CIGI2_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_RESPONSE 24
684
static int hf_cigi2_collision_detection_segment_response;
685
static int hf_cigi2_collision_detection_segment_response_entity_id;
686
static int hf_cigi2_collision_detection_segment_response_segment_id;
687
static int hf_cigi2_collision_detection_segment_response_contact;
688
static int hf_cigi2_collision_detection_segment_response_contacted_entity;
689
static int hf_cigi2_collision_detection_segment_response_material_type;
690
static int hf_cigi2_collision_detection_segment_response_collision_x;
691
static int hf_cigi2_collision_detection_segment_response_collision_y;
692
static int hf_cigi2_collision_detection_segment_response_collision_z;
693
694
static const true_false_string cigi2_collision_detection_segment_response_contact_tfs = {
695
    "Contact with a defined entity",
696
    "Contact with a non-entity surface"
697
};
698
699
/* CIGI2 Sensor Response */
700
0
#define CIGI2_PACKET_SIZE_SENSOR_RESPONSE 12
701
static int hf_cigi2_sensor_response;
702
static int hf_cigi2_sensor_response_view_id;
703
static int hf_cigi2_sensor_response_status;
704
static int hf_cigi2_sensor_response_sensor_id;
705
static int hf_cigi2_sensor_response_x_offset;
706
static int hf_cigi2_sensor_response_y_offset;
707
static int hf_cigi2_sensor_response_x_size;
708
static int hf_cigi2_sensor_response_y_size;
709
710
static const value_string cigi2_sensor_response_status_vals[] = {
711
    {0, "Searching for Target"},
712
    {1, "Tracking"},
713
    {2, "Impending Breaklock"},
714
    {3, "Breaklock"},
715
    {0, NULL},
716
};
717
718
/* CIGI2 Height of Terrain Response */
719
0
#define CIGI2_PACKET_SIZE_HEIGHT_OF_TERRAIN_RESPONSE 24
720
static int hf_cigi2_height_of_terrain_response;
721
static int hf_cigi2_height_of_terrain_response_hot_id;
722
static int hf_cigi2_height_of_terrain_response_valid;
723
static int hf_cigi2_height_of_terrain_response_material_type;
724
static int hf_cigi2_height_of_terrain_response_alt;
725
726
/* CIGI2 Collision Detection Volume Response */
727
0
#define CIGI2_PACKET_SIZE_COLLISION_DETECTION_VOLUME_RESPONSE 8
728
static int hf_cigi2_collision_detection_volume_response;
729
static int hf_cigi2_collision_detection_volume_response_entity_id;
730
static int hf_cigi2_collision_detection_volume_response_volume_id;
731
static int hf_cigi2_collision_detection_volume_response_contact;
732
static int hf_cigi2_collision_detection_volume_response_contact_entity;
733
734
static const true_false_string cigi2_collision_detection_volume_response_contact_tfs = {
735
    "Contact with a defined entity",
736
    "Contact with a non-entity surface"
737
};
738
739
/* CIGI2 Image Generator Message */
740
static int hf_cigi2_image_generator_message;
741
static int hf_cigi2_image_generator_message_id;
742
static int hf_cigi2_image_generator_message_message;
743
744
/* CIGI2 User Definable */
745
static int hf_cigi2_user_definable;
746
747
748
/*** Fields for CIGI3 ***/
749
750
static int hf_cigi3_byte_swap;
751
752
0
#define CIGI3_BYTE_SWAP_BIG_ENDIAN    0x8000
753
0
#define CIGI3_BYTE_SWAP_LITTLE_ENDIAN 0x0080
754
static const value_string cigi3_byte_swap_vals[] = {
755
    {CIGI3_BYTE_SWAP_BIG_ENDIAN, "Big-Endian"},
756
    {CIGI3_BYTE_SWAP_LITTLE_ENDIAN, "Little-Endian"},
757
    {0, NULL},
758
};
759
760
/* CIGI3 Packet ID */
761
static int hf_cigi3_packet_id;
762
16
#define CIGI3_PACKET_ID_IG_CONTROL                                 1
763
16
#define CIGI3_PACKET_ID_ENTITY_CONTROL                             2
764
16
#define CIGI3_PACKET_ID_CONFORMAL_CLAMPED_ENTITY_CONTROL           3
765
16
#define CIGI3_PACKET_ID_COMPONENT_CONTROL                          4
766
16
#define CIGI3_PACKET_ID_SHORT_COMPONENT_CONTROL                    5
767
16
#define CIGI3_PACKET_ID_ARTICULATED_PART_CONTROL                   6
768
16
#define CIGI3_PACKET_ID_SHORT_ARTICULATED_PART_CONTROL             7
769
16
#define CIGI3_PACKET_ID_RATE_CONTROL                               8
770
16
#define CIGI3_PACKET_ID_CELESTIAL_SPHERE_CONTROL                   9
771
16
#define CIGI3_PACKET_ID_ATMOSPHERE_CONTROL                        10
772
16
#define CIGI3_PACKET_ID_ENVIRONMENTAL_REGION_CONTROL              11
773
16
#define CIGI3_PACKET_ID_WEATHER_CONTROL                           12
774
16
#define CIGI3_PACKET_ID_MARITIME_SURFACE_CONDITIONS_CONTROL       13
775
16
#define CIGI3_PACKET_ID_WAVE_CONTROL                              14
776
16
#define CIGI3_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL    15
777
16
#define CIGI3_PACKET_ID_VIEW_CONTROL                              16
778
16
#define CIGI3_PACKET_ID_SENSOR_CONTROL                            17
779
16
#define CIGI3_PACKET_ID_MOTION_TRACKER_CONTROL                    18
780
16
#define CIGI3_PACKET_ID_EARTH_REFERENCE_MODEL_DEFINITION          19
781
16
#define CIGI3_PACKET_ID_TRAJECTORY_DEFINITION                     20
782
16
#define CIGI3_PACKET_ID_VIEW_DEFINITION                           21
783
16
#define CIGI3_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION    22
784
16
#define CIGI3_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION     23
785
16
#define CIGI3_PACKET_ID_HAT_HOT_REQUEST                           24
786
16
#define CIGI3_PACKET_ID_LINE_OF_SIGHT_SEGMENT_REQUEST             25
787
16
#define CIGI3_PACKET_ID_LINE_OF_SIGHT_VECTOR_REQUEST              26
788
16
#define CIGI3_PACKET_ID_POSITION_REQUEST                          27
789
16
#define CIGI3_PACKET_ID_ENVIRONMENTAL_CONDITIONS_REQUEST          28
790
16
#define CIGI3_PACKET_ID_SYMBOL_SURFACE_DEFINITION                 29
791
16
#define CIGI3_PACKET_ID_SYMBOL_TEXT_DEFINITION                    30
792
16
#define CIGI3_PACKET_ID_SYMBOL_CIRCLE_DEFINITION                  31
793
16
#define CIGI3_PACKET_ID_SYMBOL_LINE_DEFINITION                    32
794
16
#define CIGI3_PACKET_ID_SYMBOL_CLONE                              33
795
16
#define CIGI3_PACKET_ID_SYMBOL_CONTROL                            34
796
16
#define CIGI3_PACKET_ID_SHORT_SYMBOL_CONTROL                      35
797
16
#define CIGI3_PACKET_ID_START_OF_FRAME                           101
798
16
#define CIGI3_PACKET_ID_HAT_HOT_RESPONSE                         102
799
16
#define CIGI3_PACKET_ID_HAT_HOT_EXTENDED_RESPONSE                103
800
16
#define CIGI3_PACKET_ID_LINE_OF_SIGHT_RESPONSE                   104
801
16
#define CIGI3_PACKET_ID_LINE_OF_SIGHT_EXTENDED_RESPONSE          105
802
16
#define CIGI3_PACKET_ID_SENSOR_RESPONSE                          106
803
16
#define CIGI3_PACKET_ID_SENSOR_EXTENDED_RESPONSE                 107
804
16
#define CIGI3_PACKET_ID_POSITION_RESPONSE                        108
805
16
#define CIGI3_PACKET_ID_WEATHER_CONDITIONS_RESPONSE              109
806
16
#define CIGI3_PACKET_ID_AEROSOL_CONCENTRATION_RESPONSE           110
807
16
#define CIGI3_PACKET_ID_MARITIME_SURFACE_CONDITIONS_RESPONSE     111
808
16
#define CIGI3_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE  112
809
16
#define CIGI3_PACKET_ID_COLLISION_DETECTION_SEGMENT_NOTIFICATION 113
810
16
#define CIGI3_PACKET_ID_COLLISION_DETECTION_VOLUME_NOTIFICATION  114
811
16
#define CIGI3_PACKET_ID_ANIMATION_STOP_NOTIFICATION              115
812
16
#define CIGI3_PACKET_ID_EVENT_NOTIFICATION                       116
813
16
#define CIGI3_PACKET_ID_IMAGE_GENERATOR_MESSAGE                  117
814
0
#define CIGI3_PACKET_ID_USER_DEFINED_MIN                         201
815
0
#define CIGI3_PACKET_ID_USER_DEFINED_MAX                         255
816
static const value_string cigi3_packet_id_vals[] = {
817
    {CIGI3_PACKET_ID_IG_CONTROL, "IG Control"},
818
    {CIGI3_PACKET_ID_ENTITY_CONTROL, "Entity Control"},
819
    {CIGI3_PACKET_ID_CONFORMAL_CLAMPED_ENTITY_CONTROL, "Conformal Clamped Entity Control"},
820
    {CIGI3_PACKET_ID_COMPONENT_CONTROL, "Component Control"},
821
    {CIGI3_PACKET_ID_SHORT_COMPONENT_CONTROL, "Short Component Control"},
822
    {CIGI3_PACKET_ID_ARTICULATED_PART_CONTROL, "Articulated Part Control"},
823
    {CIGI3_PACKET_ID_SHORT_ARTICULATED_PART_CONTROL, "Short Articulated Part Control"},
824
    {CIGI3_PACKET_ID_RATE_CONTROL, "Rate Control"},
825
    {CIGI3_PACKET_ID_CELESTIAL_SPHERE_CONTROL, "Celestial Sphere Control"},
826
    {CIGI3_PACKET_ID_ATMOSPHERE_CONTROL, "Atmosphere Control"},
827
    {CIGI3_PACKET_ID_ENVIRONMENTAL_REGION_CONTROL, "Environmental Region Control"},
828
    {CIGI3_PACKET_ID_WEATHER_CONTROL, "Weather Control"},
829
    {CIGI3_PACKET_ID_MARITIME_SURFACE_CONDITIONS_CONTROL, "Maritime Surface Conditions Control"},
830
    {CIGI3_PACKET_ID_WAVE_CONTROL, "Wave Control"},
831
    {CIGI3_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL, "Terrestrial Surface Conditions Control"},
832
    {CIGI3_PACKET_ID_VIEW_CONTROL, "View Control"},
833
    {CIGI3_PACKET_ID_SENSOR_CONTROL, "Sensor Control"},
834
    {CIGI3_PACKET_ID_MOTION_TRACKER_CONTROL, "Motion Tracker Control"},
835
    {CIGI3_PACKET_ID_EARTH_REFERENCE_MODEL_DEFINITION, "Earth Reference Model Definition"},
836
    {CIGI3_PACKET_ID_TRAJECTORY_DEFINITION, "Trajectory Definition"},
837
    {CIGI3_PACKET_ID_VIEW_DEFINITION, "View Definition"},
838
    {CIGI3_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION, "Collision Detection Segment Definition"},
839
    {CIGI3_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION, "Collision Detection Volume Definition"},
840
    {CIGI3_PACKET_ID_HAT_HOT_REQUEST, "HAT/HOT Request"},
841
    {CIGI3_PACKET_ID_LINE_OF_SIGHT_SEGMENT_REQUEST, "Line of Sight Segment Request"},
842
    {CIGI3_PACKET_ID_LINE_OF_SIGHT_VECTOR_REQUEST, "Line of Sight Vector Request"},
843
    {CIGI3_PACKET_ID_POSITION_REQUEST, "Position Request"},
844
    {CIGI3_PACKET_ID_ENVIRONMENTAL_CONDITIONS_REQUEST, "Environmental Conditions Request"},
845
    {CIGI3_PACKET_ID_SYMBOL_SURFACE_DEFINITION, "Symbol Surface Definition"},
846
    {CIGI3_PACKET_ID_SYMBOL_TEXT_DEFINITION, "Symbol Text Definition"},
847
    {CIGI3_PACKET_ID_SYMBOL_CIRCLE_DEFINITION, "Symbol Circle Definition"},
848
    {CIGI3_PACKET_ID_SYMBOL_LINE_DEFINITION, "Symbol Line Definition"},
849
    {CIGI3_PACKET_ID_SYMBOL_CLONE, "Symbol Clone"},
850
    {CIGI3_PACKET_ID_SYMBOL_CONTROL, "Symbol Control"},
851
    {CIGI3_PACKET_ID_SHORT_SYMBOL_CONTROL, "Short Symbol Control"},
852
    {CIGI3_PACKET_ID_START_OF_FRAME, "Start of Frame"},
853
    {CIGI3_PACKET_ID_HAT_HOT_RESPONSE, "HAT/HOT Response"},
854
    {CIGI3_PACKET_ID_HAT_HOT_EXTENDED_RESPONSE, "HAT/HOT Extended Response"},
855
    {CIGI3_PACKET_ID_LINE_OF_SIGHT_RESPONSE, "Line of Sight Response"},
856
    {CIGI3_PACKET_ID_LINE_OF_SIGHT_EXTENDED_RESPONSE, "Line of Sight Extended Response"},
857
    {CIGI3_PACKET_ID_SENSOR_RESPONSE, "Sensor Response"},
858
    {CIGI3_PACKET_ID_SENSOR_EXTENDED_RESPONSE, "Sensor Extended Response"},
859
    {CIGI3_PACKET_ID_POSITION_RESPONSE, "Position Response"},
860
    {CIGI3_PACKET_ID_WEATHER_CONDITIONS_RESPONSE, "Weather Conditions Response"},
861
    {CIGI3_PACKET_ID_AEROSOL_CONCENTRATION_RESPONSE, "Aerosol Concentration Response"},
862
    {CIGI3_PACKET_ID_MARITIME_SURFACE_CONDITIONS_RESPONSE, "Maritime Surface Conditions Response"},
863
    {CIGI3_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE, "Terrestrial Surface Conditions Response"},
864
    {CIGI3_PACKET_ID_COLLISION_DETECTION_SEGMENT_NOTIFICATION, "Collision Detection Segment Notification"},
865
    {CIGI3_PACKET_ID_COLLISION_DETECTION_VOLUME_NOTIFICATION, "Collision Detection Volume Notification"},
866
    {CIGI3_PACKET_ID_ANIMATION_STOP_NOTIFICATION, "Animation Stop Notification"},
867
    {CIGI3_PACKET_ID_EVENT_NOTIFICATION, "Event Notification"},
868
    {CIGI3_PACKET_ID_IMAGE_GENERATOR_MESSAGE, "Image Generator Message"},
869
    {CIGI3_PACKET_ID_USER_DEFINED_MIN, "User-Defined Data"},
870
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+1, "User-Defined Data"},
871
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+2, "User-Defined Data"},
872
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+3, "User-Defined Data"},
873
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+4, "User-Defined Data"},
874
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+5, "User-Defined Data"},
875
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+6, "User-Defined Data"},
876
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+7, "User-Defined Data"},
877
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+8, "User-Defined Data"},
878
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+9, "User-Defined Data"},
879
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+10, "User-Defined Data"},
880
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+11, "User-Defined Data"},
881
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+12, "User-Defined Data"},
882
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+13, "User-Defined Data"},
883
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+14, "User-Defined Data"},
884
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+15, "User-Defined Data"},
885
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+16, "User-Defined Data"},
886
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+17, "User-Defined Data"},
887
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+18, "User-Defined Data"},
888
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+19, "User-Defined Data"},
889
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+20, "User-Defined Data"},
890
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+21, "User-Defined Data"},
891
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+22, "User-Defined Data"},
892
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+23, "User-Defined Data"},
893
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+24, "User-Defined Data"},
894
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+25, "User-Defined Data"},
895
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+26, "User-Defined Data"},
896
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+27, "User-Defined Data"},
897
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+28, "User-Defined Data"},
898
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+29, "User-Defined Data"},
899
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+30, "User-Defined Data"},
900
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+31, "User-Defined Data"},
901
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+32, "User-Defined Data"},
902
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+33, "User-Defined Data"},
903
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+34, "User-Defined Data"},
904
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+35, "User-Defined Data"},
905
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+36, "User-Defined Data"},
906
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+37, "User-Defined Data"},
907
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+38, "User-Defined Data"},
908
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+39, "User-Defined Data"},
909
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+40, "User-Defined Data"},
910
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+41, "User-Defined Data"},
911
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+42, "User-Defined Data"},
912
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+43, "User-Defined Data"},
913
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+44, "User-Defined Data"},
914
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+45, "User-Defined Data"},
915
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+46, "User-Defined Data"},
916
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+47, "User-Defined Data"},
917
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+48, "User-Defined Data"},
918
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+49, "User-Defined Data"},
919
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+50, "User-Defined Data"},
920
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+51, "User-Defined Data"},
921
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+52, "User-Defined Data"},
922
    {CIGI3_PACKET_ID_USER_DEFINED_MIN+53, "User-Defined Data"},
923
    {CIGI3_PACKET_ID_USER_DEFINED_MAX, "User-Defined Data"},
924
    {0, NULL},
925
};
926
static value_string_ext cigi3_packet_id_vals_ext = VALUE_STRING_EXT_INIT(cigi3_packet_id_vals);
927
928
/* CIGI3 IG Control */
929
0
#define CIGI3_PACKET_SIZE_IG_CONTROL 16
930
static int hf_cigi3_ig_control;
931
static int hf_cigi3_ig_control_db_number;
932
static int hf_cigi3_ig_control_ig_mode;
933
static int hf_cigi3_ig_control_timestamp_valid;
934
static int hf_cigi3_ig_control_frame_ctr;
935
static int hf_cigi3_ig_control_timestamp;
936
937
static const value_string cigi3_ig_control_ig_mode_vals[] = {
938
    {0, "Reset/Standby"},
939
    {1, "Operate"},
940
    {2, "Debug"},
941
    {0, NULL},
942
};
943
944
/* CIGI3_2 IG Control */
945
0
#define CIGI3_2_PACKET_SIZE_IG_CONTROL 24
946
static int hf_cigi3_2_ig_control_minor_version;
947
static int hf_cigi3_2_ig_control_host_frame_number;
948
static int hf_cigi3_2_ig_control_last_ig_frame_number;
949
950
/* CIGI3_3 IG Control */
951
0
#define CIGI3_3_PACKET_SIZE_IG_CONTROL 24
952
static int hf_cigi3_3_ig_control_extrapolation_enable;
953
954
/* CIGI3 Entity Control */
955
0
#define CIGI3_PACKET_SIZE_ENTITY_CONTROL 48
956
static int hf_cigi3_entity_control;
957
static int hf_cigi3_entity_control_entity_id;
958
static int hf_cigi3_entity_control_entity_state;
959
static int hf_cigi3_entity_control_attach_state;
960
static int hf_cigi3_entity_control_collision_detection_request;
961
static int hf_cigi3_entity_control_inherit_alpha;
962
static int hf_cigi3_entity_control_ground_ocean_clamp;
963
static int hf_cigi3_entity_control_animation_direction;
964
static int hf_cigi3_entity_control_animation_loop_mode;
965
static int hf_cigi3_entity_control_animation_state;
966
static int hf_cigi3_entity_control_alpha;
967
static int hf_cigi3_entity_control_entity_type;
968
static int hf_cigi3_entity_control_parent_id;
969
static int hf_cigi3_entity_control_roll;
970
static int hf_cigi3_entity_control_pitch;
971
static int hf_cigi3_entity_control_yaw;
972
static int hf_cigi3_entity_control_lat_xoff;
973
static int hf_cigi3_entity_control_lon_yoff;
974
static int hf_cigi3_entity_control_alt_zoff;
975
976
static const value_string cigi3_entity_control_entity_state_vals[] = {
977
    {0, "Inactive/Standby"},
978
    {1, "Active"},
979
    {2, "Destroyed"},
980
    {0, NULL},
981
};
982
983
static const true_false_string cigi3_entity_control_collision_detection_request_tfs = {
984
    "Request",
985
    "No Request"
986
};
987
988
static const true_false_string inherited_not_inherited_tfs = {
989
    "Inherited",
990
    "Not Inherited"
991
};
992
993
static const value_string cigi3_entity_control_ground_ocean_clamp_vals[] = {
994
    {0, "No Clamp"},
995
    {1, "Non-Conformal"},
996
    {2, "Conformal"},
997
    {0, NULL},
998
};
999
1000
static const true_false_string cigi3_entity_control_animation_direction_tfs = {
1001
    "Backward",
1002
    "Forward"
1003
};
1004
1005
static const true_false_string cigi3_entity_control_animation_loop_mode_tfs = {
1006
    "Continuous",
1007
    "One-Shot"
1008
};
1009
1010
static const value_string cigi3_entity_control_animation_state_vals[] = {
1011
    {0, "Stop"},
1012
    {1, "Pause"},
1013
    {2, "Play"},
1014
    {3, "Continue"},
1015
    {0, NULL},
1016
};
1017
1018
/* CIGI3_3 Entity Control */
1019
static int hf_cigi3_3_entity_control_extrapolation_enable;
1020
1021
/* CIGI4 Entity Control */
1022
/* Subset of previous packet by this name containing parameters expected to
1023
 * change infrequently.*/
1024
0
#define CIGI4_PACKET_SIZE_ENTITY_CONTROL                            16
1025
static int hf_cigi4_entity_control;
1026
static int hf_cigi4_entity_control_entity_state;
1027
static int hf_cigi4_entity_control_collision_reporting_enable;
1028
static int hf_cigi4_entity_control_inherit_alpha;
1029
static int hf_cigi4_entity_control_smooting_enable;
1030
static int hf_cigi4_entity_control_extended_entity_type;
1031
static int hf_cigi4_entity_control_alpha;
1032
static int hf_cigi4_entity_control_entity_id;
1033
static int hf_cigi4_entity_control_entity_kind;
1034
static int hf_cigi4_entity_control_entity_domain;
1035
static int hf_cigi4_entity_control_entity_country;
1036
static int hf_cigi4_entity_control_entity_category;
1037
static int hf_cigi4_entity_control_entity_subcategory;
1038
static int hf_cigi4_entity_control_entity_specific;
1039
static int hf_cigi4_entity_control_entity_extra;
1040
1041
static const value_string cigi4_entity_control_entity_state_vals[] = {
1042
    {0, "Inactive/Standby"},
1043
    {1, "Active"},
1044
    {2, "Destroyed"},
1045
    {0, NULL},
1046
};
1047
1048
static const true_false_string cigi4_entity_control_inherit_alpha_tfs = {
1049
    "Not Inherited",
1050
    "Inherited"
1051
};
1052
1053
static const true_false_string tfs_entity_control_extended_entity_type = {
1054
    "Short",
1055
    "Extended"
1056
};
1057
1058
1059
0
#define CIGI4_PACKET_SIZE_ANIMATION_CONTROL                         16
1060
static int hf_cigi4_animation_control;
1061
static int hf_cigi4_animation_control_state;
1062
static int hf_cigi4_animation_control_frame_position_reset;
1063
static int hf_cigi4_animation_control_loop_mode;
1064
static int hf_cigi4_animation_control_inherit_alpha;
1065
static int hf_cigi4_animation_control_alpha;
1066
static int hf_cigi4_animation_control_entity_id;
1067
static int hf_cigi4_animation_control_animation_id;
1068
static int hf_cigi4_animation_control_animation_speed;
1069
1070
static const true_false_string cigi4_animation_control_state_tfs = {
1071
    "Stop",
1072
    "Play"
1073
};
1074
1075
static const true_false_string cigi4_animation_control_state_positon_reset_tfs = {
1076
    "Continue",
1077
    "Reset"
1078
};
1079
1080
static const true_false_string cigi4_animation_control_state_loop_mode = {
1081
    "One-Shot",
1082
    "Continuous"
1083
};
1084
1085
1086
static const true_false_string cigi4_animation_control_state_inherit_alpha = {
1087
    "Not Inherited",
1088
    "Inherited"
1089
};
1090
1091
1092
1093
/* CIGI3 Conformal Clamped Entity Control */
1094
0
#define CIGI3_PACKET_SIZE_CONFORMAL_CLAMPED_ENTITY_CONTROL 24
1095
static int hf_cigi3_conformal_clamped_entity_control;
1096
static int hf_cigi3_conformal_clamped_entity_control_entity_id;
1097
static int hf_cigi3_conformal_clamped_entity_control_yaw;
1098
static int hf_cigi3_conformal_clamped_entity_control_lat;
1099
static int hf_cigi3_conformal_clamped_entity_control_lon;
1100
1101
/* CIGI3 Component Control */
1102
0
#define CIGI3_PACKET_SIZE_COMPONENT_CONTROL 32
1103
static int hf_cigi3_component_control;
1104
static int hf_cigi3_component_control_component_id;
1105
static int hf_cigi3_component_control_instance_id;
1106
static int hf_cigi3_component_control_component_class;
1107
static int hf_cigi3_component_control_component_state;
1108
static int hf_cigi3_component_control_data_1;
1109
static int hf_cigi3_component_control_data_2;
1110
static int hf_cigi3_component_control_data_3;
1111
static int hf_cigi3_component_control_data_4;
1112
static int hf_cigi3_component_control_data_5;
1113
static int hf_cigi3_component_control_data_6;
1114
1115
static const value_string cigi3_component_control_component_class_vals[] = {
1116
    {0, "Entity"},
1117
    {1, "View"},
1118
    {2, "View Group"},
1119
    {3, "Sensor"},
1120
    {4, "Regional Sea Surface"},
1121
    {5, "Regional Terrain Surface"},
1122
    {6, "Regional Layered Weather"},
1123
    {7, "Global Sea Surface"},
1124
    {8, "Global Terrain Surface"},
1125
    {9, "Global Layered Weather"},
1126
    {10, "Atmosphere"},
1127
    {11, "Celestial Sphere"},
1128
    {12, "Event"},
1129
    {13, "System"},
1130
    {0, NULL},
1131
};
1132
1133
/* CIGI3_3 Component Control */
1134
static int hf_cigi3_3_component_control_component_class;
1135
1136
static const value_string cigi3_3_component_control_component_class_vals[] = {
1137
    {0, "Entity"},
1138
    {1, "View"},
1139
    {2, "View Group"},
1140
    {3, "Sensor"},
1141
    {4, "Regional Sea Surface"},
1142
    {5, "Regional Terrain Surface"},
1143
    {6, "Regional Layered Weather"},
1144
    {7, "Global Sea Surface"},
1145
    {8, "Global Terrain Surface"},
1146
    {9, "Global Layered Weather"},
1147
    {10, "Atmosphere"},
1148
    {11, "Celestial Sphere"},
1149
    {12, "Event"},
1150
    {13, "System"},
1151
    {14, "Symbol Surface"},
1152
    {15, "Symbol"},
1153
    {0, NULL},
1154
};
1155
1156
/* CIGI3 Short Component Control */
1157
0
#define CIGI3_PACKET_SIZE_SHORT_COMPONENT_CONTROL 16
1158
static int hf_cigi3_short_component_control;
1159
static int hf_cigi3_short_component_control_component_id;
1160
static int hf_cigi3_short_component_control_instance_id;
1161
static int hf_cigi3_short_component_control_component_class;
1162
static int hf_cigi3_short_component_control_component_state;
1163
static int hf_cigi3_short_component_control_data_1;
1164
static int hf_cigi3_short_component_control_data_2;
1165
1166
/* CIGI3_3 Short Component Control */
1167
static int hf_cigi3_3_short_component_control_component_class;
1168
1169
/* CIGI3 Articulated Part Control */
1170
0
#define CIGI3_PACKET_SIZE_ARTICULATED_PART_CONTROL 32
1171
static int hf_cigi3_articulated_part_control;
1172
static int hf_cigi3_articulated_part_control_entity_id;
1173
static int hf_cigi3_articulated_part_control_part_id;
1174
static int hf_cigi3_articulated_part_control_part_enable;
1175
static int hf_cigi3_articulated_part_control_xoff_enable;
1176
static int hf_cigi3_articulated_part_control_yoff_enable;
1177
static int hf_cigi3_articulated_part_control_zoff_enable;
1178
static int hf_cigi3_articulated_part_control_roll_enable;
1179
static int hf_cigi3_articulated_part_control_pitch_enable;
1180
static int hf_cigi3_articulated_part_control_yaw_enable;
1181
static int hf_cigi3_articulated_part_control_xoff;
1182
static int hf_cigi3_articulated_part_control_yoff;
1183
static int hf_cigi3_articulated_part_control_zoff;
1184
static int hf_cigi3_articulated_part_control_roll;
1185
static int hf_cigi3_articulated_part_control_pitch;
1186
static int hf_cigi3_articulated_part_control_yaw;
1187
1188
/* CIGI4 Articulated Part Control */
1189
0
#define CIGI4_PACKET_SIZE_ARTICULATED_PART_CONTROL 32
1190
static int hf_cigi4_articulated_part_control_part_enable_flags;
1191
1192
static int ett_cigi4_articulated_part_control_part_enable_flags;
1193
1194
1195
/* CIGI3 Short Articulated Part Control */
1196
0
#define CIGI3_PACKET_SIZE_SHORT_ARTICULATED_PART_CONTROL 16
1197
static int hf_cigi3_short_articulated_part_control;
1198
static int hf_cigi3_short_articulated_part_control_entity_id;
1199
static int hf_cigi3_short_articulated_part_control_part_id_1;
1200
static int hf_cigi3_short_articulated_part_control_part_id_2;
1201
static int hf_cigi3_short_articulated_part_control_dof_select_1;
1202
static int hf_cigi3_short_articulated_part_control_dof_select_2;
1203
static int hf_cigi3_short_articulated_part_control_part_enable_1;
1204
static int hf_cigi3_short_articulated_part_control_part_enable_2;
1205
static int hf_cigi3_short_articulated_part_control_dof_1;
1206
static int hf_cigi3_short_articulated_part_control_dof_2;
1207
1208
static const value_string cigi3_short_articulated_part_control_dof_select_vals[] = {
1209
    {0, "Not Used"},
1210
    {1, "X Offset"},
1211
    {2, "Y Offset"},
1212
    {3, "Z Offset"},
1213
    {4, "Yaw"},
1214
    {5, "Pitch"},
1215
    {6, "Roll"},
1216
    {0, NULL},
1217
};
1218
1219
/* CIGI4 Short Articulated Part Control */
1220
0
#define CIGI4_PACKET_SIZE_SHORT_ARTICULATED_PART_CONTROL            24
1221
static int hf_cigi4_short_articulated_part_control_part_enable_flags;
1222
1223
static int ett_cigi4_short_articulated_part_control_part_enable_flags;
1224
1225
/* CIGI3 Rate Control */
1226
0
#define CIGI3_PACKET_SIZE_RATE_CONTROL 32
1227
static int hf_cigi3_rate_control;
1228
static int hf_cigi3_rate_control_entity_id;
1229
static int hf_cigi3_rate_control_part_id;
1230
static int hf_cigi3_rate_control_apply_to_part;
1231
static int hf_cigi3_2_rate_control_coordinate_system;
1232
static int hf_cigi3_rate_control_x_rate;
1233
static int hf_cigi3_rate_control_y_rate;
1234
static int hf_cigi3_rate_control_z_rate;
1235
static int hf_cigi3_rate_control_roll_rate;
1236
static int hf_cigi3_rate_control_pitch_rate;
1237
static int hf_cigi3_rate_control_yaw_rate;
1238
1239
static const true_false_string local_worldparent_tfs = {
1240
    "Local",
1241
    "World/Parent"
1242
};
1243
1244
/* CIGI4 Velocity Control */
1245
/* Rate Control packet renamed. */
1246
0
#define CIGI4_PACKET_SIZE_VELOCITY_CONTROL       32
1247
1248
static int  hf_cigi4_velocity_control;
1249
static int  hf_cigi4_velocity_control_entity_id;
1250
static int  hf_cigi4_velocity_control_part_id;
1251
static int  hf_cigi4_velocity_control_flags;
1252
static int  hf_cigi4_velocity_control_apply_to_part;
1253
static int  hf_cigi4_velocity_control_coordinate_system;
1254
static int  hf_cigi4_velocity_control_x_rate;
1255
static int  hf_cigi4_velocity_control_y_rate;
1256
static int  hf_cigi4_velocity_control_z_rate;
1257
static int  hf_cigi4_velocity_control_roll_rate;
1258
static int  hf_cigi4_velocity_control_pitch_rate;
1259
static int  hf_cigi4_velocity_control_yaw_rate;
1260
1261
static int  ett_cigi4_velocity_control_flags;
1262
1263
1264
/* CIGI3 Celestial Sphere Control */
1265
0
#define CIGI3_PACKET_SIZE_CELESTIAL_SPHERE_CONTROL 16
1266
static int hf_cigi3_celestial_sphere_control;
1267
static int hf_cigi3_celestial_sphere_control_hour;
1268
static int hf_cigi3_celestial_sphere_control_minute;
1269
static int hf_cigi3_celestial_sphere_control_ephemeris_enable;
1270
static int hf_cigi3_celestial_sphere_control_sun_enable;
1271
static int hf_cigi3_celestial_sphere_control_moon_enable;
1272
static int hf_cigi3_celestial_sphere_control_star_enable;
1273
static int hf_cigi3_celestial_sphere_control_date_time_valid;
1274
static int hf_cigi3_celestial_sphere_control_date;
1275
static int hf_cigi3_celestial_sphere_control_star_intensity;
1276
1277
/* CIGI4 Celestial Sphere Control */
1278
0
#define CIGI4_PACKET_SIZE_CELESTIAL_SPHERE_CONTROL 24
1279
static int hf_cigi4_celestial_sphere_control_enable_flags;
1280
static int hf_cigi4_celestial_sphere_control_seconds;
1281
static int hf_cigi4_celestial_sphere_control_date;
1282
1283
static int ett_cigi4_celestial_sphere_control_flags;
1284
1285
/* CIGI3 Atmosphere Control */
1286
0
#define CIGI3_PACKET_SIZE_ATMOSPHERE_CONTROL 32
1287
static int hf_cigi3_atmosphere_control;
1288
static int hf_cigi3_atmosphere_control_atmospheric_model_enable;
1289
static int hf_cigi3_atmosphere_control_humidity;
1290
static int hf_cigi3_atmosphere_control_air_temp;
1291
static int hf_cigi3_atmosphere_control_visibility_range;
1292
static int hf_cigi3_atmosphere_control_horiz_wind;
1293
static int hf_cigi3_atmosphere_control_vert_wind;
1294
static int hf_cigi3_atmosphere_control_wind_direction;
1295
static int hf_cigi3_atmosphere_control_barometric_pressure;
1296
1297
/* CIGI4 Atmosphere Control */
1298
0
#define CIGI4_PACKET_SIZE_ATMOSPHERE_CONTROL 32
1299
1300
/* CIGI3 Environmental Region Control */
1301
0
#define CIGI3_PACKET_SIZE_ENVIRONMENTAL_REGION_CONTROL 48
1302
static int hf_cigi3_environmental_region_control;
1303
static int hf_cigi3_environmental_region_control_region_id;
1304
static int hf_cigi3_environmental_region_control_region_state;
1305
static int hf_cigi3_environmental_region_control_merge_weather;
1306
static int hf_cigi3_environmental_region_control_merge_aerosol;
1307
static int hf_cigi3_environmental_region_control_merge_maritime;
1308
static int hf_cigi3_environmental_region_control_merge_terrestrial;
1309
static int hf_cigi3_environmental_region_control_lat;
1310
static int hf_cigi3_environmental_region_control_lon;
1311
static int hf_cigi3_environmental_region_control_size_x;
1312
static int hf_cigi3_environmental_region_control_size_y;
1313
static int hf_cigi3_environmental_region_control_corner_radius;
1314
static int hf_cigi3_environmental_region_control_rotation;
1315
static int hf_cigi3_environmental_region_control_transition_perimeter;
1316
1317
static const value_string cigi3_environmental_region_control_region_state_vals[] = {
1318
    {0, "Inactive"},
1319
    {1, "Active"},
1320
    {2, "Destroyed"},
1321
    {0, NULL},
1322
};
1323
1324
static const true_false_string cigi3_environmental_region_control_merge_properties_tfs = {
1325
    "Merge",
1326
    "Use Last"
1327
};
1328
1329
1330
/* CIGI4 Environmental Region Control */
1331
0
#define CIGI4_PACKET_SIZE_ENVIRONMENTAL_REGION_CONTROL 48
1332
1333
/* CIGI3 Weather Control */
1334
0
#define CIGI3_PACKET_SIZE_WEATHER_CONTROL 56
1335
static int hf_cigi3_weather_control;
1336
static int hf_cigi3_weather_control_entity_region_id;
1337
static int hf_cigi3_weather_control_layer_id;
1338
static int hf_cigi3_weather_control_humidity;
1339
static int hf_cigi3_weather_control_weather_enable;
1340
static int hf_cigi3_weather_control_scud_enable;
1341
static int hf_cigi3_weather_control_random_winds_enable;
1342
static int hf_cigi3_weather_control_random_lightning_enable;
1343
static int hf_cigi3_weather_control_cloud_type;
1344
static int hf_cigi3_weather_control_scope;
1345
static int hf_cigi3_weather_control_severity;
1346
static int hf_cigi3_weather_control_air_temp;
1347
static int hf_cigi3_weather_control_visibility_range;
1348
static int hf_cigi3_weather_control_scud_frequency;
1349
static int hf_cigi3_weather_control_coverage;
1350
static int hf_cigi3_weather_control_base_elevation;
1351
static int hf_cigi3_weather_control_thickness;
1352
static int hf_cigi3_weather_control_transition_band;
1353
static int hf_cigi3_weather_control_horiz_wind;
1354
static int hf_cigi3_weather_control_vert_wind;
1355
static int hf_cigi3_weather_control_wind_direction;
1356
static int hf_cigi3_weather_control_barometric_pressure;
1357
static int hf_cigi3_weather_control_aerosol_concentration;
1358
1359
static const value_string cigi3_weather_control_layer_id_vals[] = {
1360
    {0, "Ground Fog"},
1361
    {1, "Cloud Layer 1"},
1362
    {2, "Cloud Layer 2"},
1363
    {3, "Cloud Layer 3"},
1364
    {4, "Rain"},
1365
    {5, "Snow"},
1366
    {6, "Sleet"},
1367
    {7, "Hail"},
1368
    {8, "Sand"},
1369
    {9, "Dust"},
1370
    {0, NULL},
1371
};
1372
1373
static const value_string cigi3_weather_control_cloud_type_vals[] = {
1374
    {0, "None"},
1375
    {1, "Altocumulus"},
1376
    {2, "Altostratus"},
1377
    {3, "Cirrocumulus"},
1378
    {4, "Cirrostratus"},
1379
    {5, "Cirrus"},
1380
    {6, "Cumulonimbus"},
1381
    {7, "Cumulus"},
1382
    {8, "Nimbostratus"},
1383
    {9, "Stratocumulus"},
1384
    {10, "Stratus"},
1385
    {11, "Other"},
1386
    {12, "Other"},
1387
    {13, "Other"},
1388
    {14, "Other"},
1389
    {15, "Other"},
1390
    {0, NULL},
1391
};
1392
1393
static const value_string cigi3_weather_control_scope_vals[] = {
1394
    {0, "Global"},
1395
    {1, "Regional"},
1396
    {2, "Entity"},
1397
    {0, NULL},
1398
};
1399
1400
1401
/* CIGI4 Weather Control */
1402
0
#define CIGI4_PACKET_SIZE_WEATHER_CONTROL 72
1403
static int hf_cigi4_weather_control_flags;
1404
static int hf_cigi4_weather_control_top_scud_enable;
1405
static int hf_cigi4_weather_control_top_scud_freq;
1406
static int hf_cigi4_weather_control_top_transition_band;
1407
1408
/* CIGI3 Maritime Surface Conditions Control */
1409
0
#define CIGI3_PACKET_SIZE_MARITIME_SURFACE_CONDITIONS_CONTROL 24
1410
static int hf_cigi3_maritime_surface_conditions_control;
1411
static int hf_cigi3_maritime_surface_conditions_control_entity_region_id;
1412
static int hf_cigi3_maritime_surface_conditions_control_surface_conditions_enable;
1413
static int hf_cigi3_maritime_surface_conditions_control_whitecap_enable;
1414
static int hf_cigi3_maritime_surface_conditions_control_scope;
1415
static int hf_cigi3_maritime_surface_conditions_control_sea_surface_height;
1416
static int hf_cigi3_maritime_surface_conditions_control_surface_water_temp;
1417
static int hf_cigi3_maritime_surface_conditions_control_surface_clarity;
1418
1419
static const value_string cigi3_maritime_surface_conditions_control_scope_vals[] = {
1420
    {0, "Global"},
1421
    {1, "Regional"},
1422
    {2, "Entity"},
1423
    {0, NULL},
1424
};
1425
1426
/* CIGI4 Maritime Surface Conditions Control */
1427
0
#define CIGI4_PACKET_SIZE_MARITIME_SURFACE_CONDITIONS_CONTROL 24
1428
1429
/* CIGI3 Wave Control */
1430
0
#define CIGI3_PACKET_SIZE_WAVE_CONTROL 32
1431
static int hf_cigi3_wave_control;
1432
static int hf_cigi3_wave_control_entity_region_id;
1433
static int hf_cigi3_wave_control_wave_id;
1434
static int hf_cigi3_wave_control_wave_enable;
1435
static int hf_cigi3_wave_control_scope;
1436
static int hf_cigi3_wave_control_breaker_type;
1437
static int hf_cigi3_wave_control_height;
1438
static int hf_cigi3_wave_control_wavelength;
1439
static int hf_cigi3_wave_control_period;
1440
static int hf_cigi3_wave_control_direction;
1441
static int hf_cigi3_wave_control_phase_offset;
1442
static int hf_cigi3_wave_control_leading;
1443
1444
static const value_string cigi3_wave_control_scope_vals[] = {
1445
    {0, "Global"},
1446
    {1, "Regional"},
1447
    {2, "Entity"},
1448
    {0, NULL},
1449
};
1450
1451
static const value_string cigi3_wave_control_breaker_type_vals[] = {
1452
    {0, "Plunging"},
1453
    {1, "Spilling"},
1454
    {2, "Surging"},
1455
    {0, NULL},
1456
};
1457
1458
/* CIGI4 Wave Control */
1459
0
#define CIGI4_PACKET_SIZE_WAVE_CONTROL 32
1460
1461
/* CIGI3 Terrestrial Surface Conditions Control */
1462
0
#define CIGI3_PACKET_SIZE_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL 8
1463
static int hf_cigi3_terrestrial_surface_conditions_control;
1464
static int hf_cigi3_terrestrial_surface_conditions_control_entity_region_id;
1465
static int hf_cigi3_terrestrial_surface_conditions_control_surface_condition_id;
1466
static int hf_cigi3_terrestrial_surface_conditions_control_surface_condition_enable;
1467
static int hf_cigi3_terrestrial_surface_conditions_control_scope;
1468
static int hf_cigi3_terrestrial_surface_conditions_control_severity;
1469
static int hf_cigi3_terrestrial_surface_conditions_control_coverage;
1470
1471
static const value_string cigi3_terrestrial_surface_conditions_control_scope_vals[] = {
1472
    {0, "Global"},
1473
    {1, "Regional"},
1474
    {2, "Entity"},
1475
    {0, NULL},
1476
};
1477
1478
/* CIGI4 Terrestrial Surface Conditions Control */
1479
0
#define CIGI4_PACKET_SIZE_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL 16
1480
1481
/* CIGI3 View Control */
1482
0
#define CIGI3_PACKET_SIZE_VIEW_CONTROL 32
1483
static int hf_cigi3_view_control;
1484
static int hf_cigi3_view_control_view_id;
1485
static int hf_cigi3_view_control_group_id;
1486
static int hf_cigi3_view_control_xoff_enable;
1487
static int hf_cigi3_view_control_yoff_enable;
1488
static int hf_cigi3_view_control_zoff_enable;
1489
static int hf_cigi3_view_control_roll_enable;
1490
static int hf_cigi3_view_control_pitch_enable;
1491
static int hf_cigi3_view_control_yaw_enable;
1492
static int hf_cigi3_view_control_entity_id;
1493
static int hf_cigi3_view_control_xoff;
1494
static int hf_cigi3_view_control_yoff;
1495
static int hf_cigi3_view_control_zoff;
1496
static int hf_cigi3_view_control_roll;
1497
static int hf_cigi3_view_control_pitch;
1498
static int hf_cigi3_view_control_yaw;
1499
1500
/* CIGI4 View Control */
1501
0
#define CIGI4_PACKET_SIZE_VIEW_CONTROL 40
1502
static int hf_cigi4_view_control_enable_flags;
1503
1504
static int  ett_cigi4_view_control_enable_flags;
1505
1506
/* CIGI3 Sensor Control */
1507
0
#define CIGI3_PACKET_SIZE_SENSOR_CONTROL 24
1508
static int hf_cigi3_sensor_control;
1509
static int hf_cigi3_sensor_control_view_id;
1510
static int hf_cigi3_sensor_control_sensor_id;
1511
static int hf_cigi3_sensor_control_sensor_on_off;
1512
static int hf_cigi3_sensor_control_polarity;
1513
static int hf_cigi3_sensor_control_line_dropout_enable;
1514
static int hf_cigi3_sensor_control_auto_gain;
1515
static int hf_cigi3_sensor_control_track_white_black;
1516
static int hf_cigi3_sensor_control_track_mode;
1517
static int hf_cigi3_sensor_control_response_type;
1518
static int hf_cigi3_sensor_control_gain;
1519
static int hf_cigi3_sensor_control_level;
1520
static int hf_cigi3_sensor_control_ac_coupling;
1521
static int hf_cigi3_sensor_control_noise;
1522
1523
static const value_string cigi3_sensor_control_track_mode_vals[] = {
1524
    {0, "Off"},
1525
    {1, "Force Correlate"},
1526
    {2, "Scene"},
1527
    {3, "Target"},
1528
    {4, "Ship"},
1529
    {5, "Defined by IG"},
1530
    {6, "Defined by IG"},
1531
    {7, "Defined by IG"},
1532
    {0, NULL},
1533
};
1534
1535
static const true_false_string cigi3_sensor_control_polarity_tfs = {
1536
    "Black hot",
1537
    "White hot"
1538
};
1539
1540
1541
/* CIGI4 Sensor Control */
1542
0
#define CIGI4_PACKET_SIZE_SENSOR_CONTROL 32
1543
1544
/* CIGI3 Motion Tracker Control */
1545
0
#define CIGI3_PACKET_SIZE_MOTION_TRACKER_CONTROL 8
1546
static int hf_cigi3_motion_tracker_control;
1547
static int hf_cigi3_motion_tracker_control_view_group_id;
1548
static int hf_cigi3_motion_tracker_control_tracker_id;
1549
static int hf_cigi3_motion_tracker_control_tracker_enable;
1550
static int hf_cigi3_motion_tracker_control_boresight_enable;
1551
static int hf_cigi3_motion_tracker_control_x_enable;
1552
static int hf_cigi3_motion_tracker_control_y_enable;
1553
static int hf_cigi3_motion_tracker_control_z_enable;
1554
static int hf_cigi3_motion_tracker_control_roll_enable;
1555
static int hf_cigi3_motion_tracker_control_pitch_enable;
1556
static int hf_cigi3_motion_tracker_control_yaw_enable;
1557
static int hf_cigi3_motion_tracker_control_view_group_select;
1558
1559
static const true_false_string cigi3_motion_tracker_control_view_group_select_tfs = {
1560
    "View Group",
1561
    "View"
1562
};
1563
1564
/* CIGI4 Motion Tracker Control */
1565
0
#define CIGI4_PACKET_SIZE_MOTION_TRACKER_CONTROL 16
1566
1567
/* CIGI3 Earth Reference Model Definition */
1568
0
#define CIGI3_PACKET_SIZE_EARTH_REFERENCE_MODEL_DEFINITION 24
1569
static int hf_cigi3_earth_reference_model_definition;
1570
static int hf_cigi3_earth_reference_model_definition_erm_enable;
1571
static int hf_cigi3_earth_reference_model_definition_equatorial_radius;
1572
static int hf_cigi3_earth_reference_model_definition_flattening;
1573
1574
/* CIGI4 Earth Reference Model Definition */
1575
0
#define CIGI4_PACKET_SIZE_EARTH_REFERENCE_MODEL_DEFINITION 24
1576
1577
/* CIGI3 Trajectory Definition */
1578
0
#define CIGI3_PACKET_SIZE_TRAJECTORY_DEFINITION 24
1579
static int hf_cigi3_trajectory_definition;
1580
static int hf_cigi3_trajectory_definition_entity_id;
1581
static int hf_cigi3_trajectory_definition_acceleration_x;
1582
static int hf_cigi3_trajectory_definition_acceleration_y;
1583
static int hf_cigi3_trajectory_definition_acceleration_z;
1584
static int hf_cigi3_trajectory_definition_retardation_rate;
1585
static int hf_cigi3_trajectory_definition_terminal_velocity;
1586
1587
1588
/* CIGI4 Acceleration Control */
1589
0
#define CIGI4_PACKET_SIZE_ACCELERATION_CONTROL 32
1590
static int hf_cigi4_acceleration_control;
1591
static int hf_cigi4_acceleration_control_entity_id;
1592
static int hf_cigi4_acceleration_control_articulated_part_id;
1593
static int hf_cigi4_acceleration_control_apply_to_part;
1594
static int hf_cigi4_acceleration_control_coord_system;
1595
static int hf_cigi4_acceleration_control_acceleration_x;
1596
static int hf_cigi4_acceleration_control_acceleration_y;
1597
static int hf_cigi4_acceleration_control_acceleration_z;
1598
static int hf_cigi4_acceleration_control_acceleration_roll;
1599
static int hf_cigi4_acceleration_control_acceleration_pitch;
1600
static int hf_cigi4_acceleration_control_acceleration_yaw;
1601
1602
1603
/* CIGI3 View Definition */
1604
0
#define CIGI3_PACKET_SIZE_VIEW_DEFINITION 32
1605
static int hf_cigi3_view_definition;
1606
static int hf_cigi3_view_definition_view_id;
1607
static int hf_cigi3_view_definition_group_id;
1608
static int hf_cigi3_view_definition_near_enable;
1609
static int hf_cigi3_view_definition_far_enable;
1610
static int hf_cigi3_view_definition_left_enable;
1611
static int hf_cigi3_view_definition_right_enable;
1612
static int hf_cigi3_view_definition_top_enable;
1613
static int hf_cigi3_view_definition_bottom_enable;
1614
static int hf_cigi3_view_definition_mirror_mode;
1615
static int hf_cigi3_view_definition_pixel_replication;
1616
static int hf_cigi3_view_definition_projection_type;
1617
static int hf_cigi3_view_definition_reorder;
1618
static int hf_cigi3_view_definition_view_type;
1619
static int hf_cigi3_view_definition_near;
1620
static int hf_cigi3_view_definition_far;
1621
static int hf_cigi3_view_definition_left;
1622
static int hf_cigi3_view_definition_right;
1623
static int hf_cigi3_view_definition_top;
1624
static int hf_cigi3_view_definition_bottom;
1625
1626
static const value_string cigi3_view_definition_mirror_mode_vals[] = {
1627
    {0, "None"},
1628
    {1, "Horizontal"},
1629
    {2, "Vertical"},
1630
    {3, "Horizontal and Vertical"},
1631
    {0, NULL},
1632
};
1633
1634
static const value_string cigi3_view_definition_pixel_replication_vals[] = {
1635
    {0, "None"},
1636
    {1, "1x2"},
1637
    {2, "2x1"},
1638
    {3, "2x2"},
1639
    {4, "Defined by IG"},
1640
    {5, "Defined by IG"},
1641
    {6, "Defined by IG"},
1642
    {7, "Defined by IG"},
1643
    {0, NULL},
1644
};
1645
1646
static const true_false_string cigi3_view_definition_projection_type_tfs = {
1647
    "Orthographic Parallel",
1648
    "Perspective"
1649
};
1650
1651
static const true_false_string cigi3_view_definition_reorder_tfs = {
1652
    "Bring to Top",
1653
    "No Reorder"
1654
};
1655
1656
/* CIGI4 View Definition */
1657
0
#define CIGI4_PACKET_SIZE_VIEW_DEFINITION 40
1658
1659
/* CIGI3 Collision Detection Segment Definition */
1660
0
#define CIGI3_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_DEFINITION 40
1661
static int hf_cigi3_collision_detection_segment_definition;
1662
static int hf_cigi3_collision_detection_segment_definition_entity_id;
1663
static int hf_cigi3_collision_detection_segment_definition_segment_id;
1664
static int hf_cigi3_collision_detection_segment_definition_segment_enable;
1665
static int hf_cigi3_collision_detection_segment_definition_x1;
1666
static int hf_cigi3_collision_detection_segment_definition_y1;
1667
static int hf_cigi3_collision_detection_segment_definition_z1;
1668
static int hf_cigi3_collision_detection_segment_definition_x2;
1669
static int hf_cigi3_collision_detection_segment_definition_y2;
1670
static int hf_cigi3_collision_detection_segment_definition_z2;
1671
static int hf_cigi3_collision_detection_segment_definition_material_mask;
1672
1673
1674
/* CIGI4 Collision Detection Segment Definition */
1675
0
#define CIGI4_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_DEFINITION 40
1676
1677
/* CIGI3 Collision Detection Volume Definition */
1678
0
#define CIGI3_PACKET_SIZE_COLLISION_DETECTION_VOLUME_DEFINITION 48
1679
static int hf_cigi3_collision_detection_volume_definition;
1680
static int hf_cigi3_collision_detection_volume_definition_entity_id;
1681
static int hf_cigi3_collision_detection_volume_definition_volume_id;
1682
static int hf_cigi3_collision_detection_volume_definition_volume_enable;
1683
static int hf_cigi3_collision_detection_volume_definition_volume_type;
1684
static int hf_cigi3_collision_detection_volume_definition_x;
1685
static int hf_cigi3_collision_detection_volume_definition_y;
1686
static int hf_cigi3_collision_detection_volume_definition_z;
1687
static int hf_cigi3_collision_detection_volume_definition_radius_height;
1688
static int hf_cigi3_collision_detection_volume_definition_width;
1689
static int hf_cigi3_collision_detection_volume_definition_depth;
1690
static int hf_cigi3_collision_detection_volume_definition_roll;
1691
static int hf_cigi3_collision_detection_volume_definition_pitch;
1692
static int hf_cigi3_collision_detection_volume_definition_yaw;
1693
1694
static const true_false_string cigi3_collision_detection_volume_definition_volume_type_tfs = {
1695
    "Cuboid",
1696
    "Sphere"
1697
};
1698
1699
/* CIGI4 Collision Detection Volume Definition */
1700
0
#define CIGI4_PACKET_SIZE_COLLISION_DETECTION_VOLUME_DEFINITION 48
1701
1702
/* CIGI3 HAT/HOT Request */
1703
0
#define CIGI3_PACKET_SIZE_HAT_HOT_REQUEST 32
1704
static int hf_cigi3_hat_hot_request;
1705
static int hf_cigi3_hat_hot_request_hat_hot_id;
1706
static int hf_cigi3_hat_hot_request_type;
1707
static int hf_cigi3_hat_hot_request_coordinate_system;
1708
static int hf_cigi3_2_hat_hot_request_update_period;
1709
static int hf_cigi3_hat_hot_request_entity_id;
1710
static int hf_cigi3_hat_hot_request_lat_xoff;
1711
static int hf_cigi3_hat_hot_request_lon_yoff;
1712
static int hf_cigi3_hat_hot_request_alt_zoff;
1713
1714
static const value_string cigi3_hat_hot_request_type_vals[] = {
1715
    {0, "HAT"},
1716
    {1, "HOT"},
1717
    {2, "Extended"},
1718
    {0, NULL},
1719
};
1720
1721
/* CIGI4 HAT/HOT Request */
1722
0
#define CIGI4_PACKET_SIZE_HAT_HOT_REQUEST    40
1723
static int hf_cigi4_hat_hot_request_flags;
1724
1725
static int ett_cigi4_hat_hot_request_flags;
1726
1727
/* CIGI3 Line of Sight Segment Request */
1728
0
#define CIGI3_PACKET_SIZE_LINE_OF_SIGHT_SEGMENT_REQUEST 64
1729
static int hf_cigi3_line_of_sight_segment_request;
1730
static int hf_cigi3_line_of_sight_segment_request_los_id;
1731
static int hf_cigi3_line_of_sight_segment_request_type;
1732
static int hf_cigi3_line_of_sight_segment_request_source_coord;
1733
static int hf_cigi3_line_of_sight_segment_request_destination_coord;
1734
static int hf_cigi3_line_of_sight_segment_request_response_coord;
1735
static int hf_cigi3_line_of_sight_segment_request_alpha_threshold;
1736
static int hf_cigi3_line_of_sight_segment_request_source_entity_id;
1737
static int hf_cigi3_line_of_sight_segment_request_source_lat_xoff;
1738
static int hf_cigi3_line_of_sight_segment_request_source_lon_yoff;
1739
static int hf_cigi3_line_of_sight_segment_request_source_alt_zoff;
1740
static int hf_cigi3_line_of_sight_segment_request_destination_lat_xoff;
1741
static int hf_cigi3_line_of_sight_segment_request_destination_lon_yoff;
1742
static int hf_cigi3_line_of_sight_segment_request_destination_alt_zoff;
1743
static int hf_cigi3_line_of_sight_segment_request_material_mask;
1744
1745
/* CIGI3_2 Line of Sight Segment Request */
1746
static int hf_cigi3_2_line_of_sight_segment_request_destination_entity_id_valid;
1747
static int hf_cigi3_2_line_of_sight_segment_request_update_period;
1748
static int hf_cigi3_2_line_of_sight_segment_request_destination_entity_id;
1749
1750
/* CIGI4 Line of Sight Segment Request */
1751
0
#define CIGI4_PACKET_SIZE_LINE_OF_SIGHT_SEGMENT_REQUEST 72
1752
1753
/* CIGI3 Line of Sight Vector Request */
1754
0
#define CIGI3_PACKET_SIZE_LINE_OF_SIGHT_VECTOR_REQUEST 56
1755
static int hf_cigi3_line_of_sight_vector_request;
1756
static int hf_cigi3_line_of_sight_vector_request_los_id;
1757
static int hf_cigi3_line_of_sight_vector_request_type;
1758
static int hf_cigi3_line_of_sight_vector_request_source_coord;
1759
static int hf_cigi3_line_of_sight_vector_request_response_coord;
1760
static int hf_cigi3_line_of_sight_vector_request_alpha;
1761
static int hf_cigi3_line_of_sight_vector_request_entity_id;
1762
static int hf_cigi3_line_of_sight_vector_request_azimuth;
1763
static int hf_cigi3_line_of_sight_vector_request_elevation;
1764
static int hf_cigi3_line_of_sight_vector_request_min_range;
1765
static int hf_cigi3_line_of_sight_vector_request_max_range;
1766
static int hf_cigi3_line_of_sight_vector_request_source_lat_xoff;
1767
static int hf_cigi3_line_of_sight_vector_request_source_lon_yoff;
1768
static int hf_cigi3_line_of_sight_vector_request_source_alt_zoff;
1769
static int hf_cigi3_line_of_sight_vector_request_material_mask;
1770
1771
/* CIGI3_2 Line of Sight Vector Request */
1772
static int hf_cigi3_2_line_of_sight_vector_request_update_period;
1773
1774
/* CIGI4 Line of Sight Vector Request */
1775
0
#define CIGI4_PACKET_SIZE_LINE_OF_SIGHT_VECTOR_REQUEST 64
1776
1777
/* CIGI3 Position Request */
1778
0
#define CIGI3_PACKET_SIZE_POSITION_REQUEST 8
1779
static int hf_cigi3_position_request;
1780
static int hf_cigi3_position_request_object_id;
1781
static int hf_cigi3_position_request_part_id;
1782
static int hf_cigi3_position_request_update_mode;
1783
static int hf_cigi3_position_request_object_class;
1784
static int hf_cigi3_position_request_coord_system;
1785
1786
static const true_false_string cigi3_position_request_update_mode_tfs = {
1787
    "Continuous",
1788
    "One-Shot"
1789
};
1790
1791
static const value_string cigi3_position_request_object_class_vals[] = {
1792
    {0, "Entity"},
1793
    {1, "Articulated Part"},
1794
    {2, "View"},
1795
    {3, "View Group"},
1796
    {4, "Motion Tracker"},
1797
    {0, NULL},
1798
};
1799
1800
static const value_string cigi3_position_request_coord_system_vals[] = {
1801
    {0, "Geodetic"},
1802
    {1, "Parent Entity"},
1803
    {2, "Submodel"},
1804
    {0, NULL},
1805
};
1806
1807
/* CIGI4 Position Request */
1808
0
#define CIGI4_PACKET_SIZE_POSITION_REQUEST 8
1809
1810
/* CIGI3 Environmental Conditions Request */
1811
0
#define CIGI3_PACKET_SIZE_ENVIRONMENTAL_CONDITIONS_REQUEST 32
1812
static int hf_cigi3_environmental_conditions_request;
1813
static int hf_cigi3_environmental_conditions_request_type;
1814
static int hf_cigi3_environmental_conditions_request_id;
1815
static int hf_cigi3_environmental_conditions_request_lat;
1816
static int hf_cigi3_environmental_conditions_request_lon;
1817
static int hf_cigi3_environmental_conditions_request_alt;
1818
1819
static const value_string cigi3_environmental_conditions_request_type_vals[] = {
1820
    {1, "Maritime Surface Conditions"},
1821
    {2, "Terrestrial Surface Conditions"},
1822
    {3, "Maritime+Terrestrial Surface Conditions"},
1823
    {4, "Weather Conditions"},
1824
    {5, "Maritime+Weather Surface Conditions"},
1825
    {6, "Terrestrial+Weather Surface Conditions"},
1826
    {7, "Maritime+Terrestrial+Weather Surface Conditions"},
1827
    {8, "Aerosol Concentrations"},
1828
    {9, "Maritime Surface Conditions+Aerosol Concentrations"},
1829
    {10, "Terrestrial Surface Conditions+Aerosol Concentrations"},
1830
    {11, "Maritime+Terrestrial Surface Conditions+Aerosol Concentrations"},
1831
    {12, "Weather Conditions+Aerosol Concentrations"},
1832
    {13, "Maritime+Weather Surface Conditions+Aerosol Concentrations"},
1833
    {14, "Terrestrial+Weather Surface Conditions+Aerosol Concentrations"},
1834
    {15, "Maritime+Terrestrial+Weather Surface Conditions+Aerosol Concentrations"},
1835
    {0, NULL},
1836
};
1837
1838
/* CIGI4 Environmental Conditions Request */
1839
0
#define CIGI4_PACKET_SIZE_ENVIRONMENTAL_CONDITIONS_REQUEST 32
1840
1841
/* CIGI3_3 Symbol Surface Definition */
1842
0
#define CIGI3_PACKET_SIZE_SYMBOL_SURFACE_DEFINITION 56
1843
static int hf_cigi3_3_symbol_surface_definition;
1844
static int hf_cigi3_3_symbol_surface_definition_surface_id;
1845
static int hf_cigi3_3_symbol_surface_definition_surface_state;
1846
static int hf_cigi3_3_symbol_surface_definition_attach_type;
1847
static int hf_cigi3_3_symbol_surface_definition_billboard;
1848
static int hf_cigi3_3_symbol_surface_definition_perspective_growth_enable;
1849
static int hf_cigi3_3_symbol_surface_definition_entity_view_id;
1850
static int hf_cigi3_3_symbol_surface_definition_xoff_left;
1851
static int hf_cigi3_3_symbol_surface_definition_yoff_right;
1852
static int hf_cigi3_3_symbol_surface_definition_zoff_top;
1853
static int hf_cigi3_3_symbol_surface_definition_yaw_bottom;
1854
static int hf_cigi3_3_symbol_surface_definition_pitch;
1855
static int hf_cigi3_3_symbol_surface_definition_roll;
1856
static int hf_cigi3_3_symbol_surface_definition_width;
1857
static int hf_cigi3_3_symbol_surface_definition_height;
1858
static int hf_cigi3_3_symbol_surface_definition_min_u;
1859
static int hf_cigi3_3_symbol_surface_definition_max_u;
1860
static int hf_cigi3_3_symbol_surface_definition_min_v;
1861
static int hf_cigi3_3_symbol_surface_definition_max_v;
1862
1863
static const true_false_string cigi3_3_symbol_surface_definition_surface_state_tfs = {
1864
    "Destroyed",
1865
    "Active"
1866
};
1867
1868
static const true_false_string cigi3_3_symbol_surface_definition_attach_type_tfs = {
1869
    "View",
1870
    "Entity"
1871
};
1872
1873
static const true_false_string cigi3_3_symbol_surface_definition_billboard_tfs = {
1874
    "Billboard",
1875
    "Non-Billboard"
1876
};
1877
1878
1879
/* CIGI4 Symbol Surface Definition */
1880
0
#define CIGI4_PACKET_SIZE_SYMBOL_SURFACE_DEFINITION 64
1881
1882
/* CIGI3_3 Symbol Text Definition */
1883
// Variable Length
1884
static int hf_cigi3_3_symbol_text_definition;
1885
static int hf_cigi3_3_symbol_text_definition_symbol_id;
1886
static int hf_cigi3_3_symbol_text_definition_orientation;
1887
static int hf_cigi3_3_symbol_text_definition_alignment;
1888
static int hf_cigi3_3_symbol_text_definition_font_ident;
1889
static int hf_cigi3_3_symbol_text_definition_font_size;
1890
static int hf_cigi3_3_symbol_text_definition_text;
1891
1892
static const value_string cigi3_3_symbol_text_definition_alignment_vals[] = {
1893
    {0, "Top Left"},
1894
    {1, "Top Center"},
1895
    {2, "Top Right"},
1896
    {3, "Center Left"},
1897
    {4, "Center"},
1898
    {5, "Center Right"},
1899
    {6, "Bottom Left"},
1900
    {7, "Bottom Center"},
1901
    {8, "Bottom Right"},
1902
    {0, NULL}
1903
};
1904
1905
static const value_string cigi3_3_symbol_text_definition_orientation_vals[] = {
1906
    {0, "Left To Right"},
1907
    {1, "Top To Bottom"},
1908
    {2, "Right To Left"},
1909
    {3, "Bottom To Top"},
1910
    {0, NULL}
1911
};
1912
1913
static const value_string cigi3_3_symbol_text_definition_font_ident_vals[] = {
1914
    {0, "IG Default"},
1915
    {1, "Proportional Sans Serif"},
1916
    {2, "Proportional Sans Serif Bold"},
1917
    {3, "Proportional Sans Serif Italic"},
1918
    {4, "Proportional Sans Serif Bold Italic"},
1919
    {5, "Proportional Serif"},
1920
    {6, "Proportional Serif Bold"},
1921
    {7, "Proportional Serif Italic"},
1922
    {8, "Proportional Serif Bold Italic"},
1923
    {9, "Monospace Sans Serif"},
1924
    {10, "Monospace Sans Serif Bold"},
1925
    {11, "Monospace Sans Serif Italic"},
1926
    {12, "Monospace Sans Serif Bold Italic"},
1927
    {13, "Monospace Serif"},
1928
    {14, "Monospace Serif Bold"},
1929
    {15, "Monospace Serif Italic"},
1930
    {16, "Monospace Serif Bold Italic"},
1931
    {0, NULL}
1932
};
1933
1934
/* CIGI4 Symbol Text Definition */
1935
//#define CIGI4_PACKET_SIZE_SYMBOL_TEXT_DEFINITION                    (12 + text_length)
1936
1937
/* CIGI3_3 Symbol Circle Definition */
1938
// Variable length
1939
static int hf_cigi3_3_symbol_circle_definition;
1940
static int hf_cigi3_3_symbol_circle_definition_symbol_id;
1941
static int hf_cigi3_3_symbol_circle_definition_drawing_style;
1942
static int hf_cigi3_3_symbol_circle_definition_stipple_pattern;
1943
static int hf_cigi3_3_symbol_circle_definition_line_width;
1944
static int hf_cigi3_3_symbol_circle_definition_stipple_pattern_length;
1945
static int hf_cigi3_3_symbol_circle_definition_center_u[9];
1946
static int hf_cigi3_3_symbol_circle_definition_center_v[9];
1947
static int hf_cigi3_3_symbol_circle_definition_radius[9];
1948
static int hf_cigi3_3_symbol_circle_definition_inner_radius[9];
1949
static int hf_cigi3_3_symbol_circle_definition_start_angle[9];
1950
static int hf_cigi3_3_symbol_circle_definition_end_angle[9];
1951
1952
static const true_false_string cigi3_3_symbol_circle_definition_drawing_style_tfs = {
1953
    "Fill",
1954
    "Line"
1955
};
1956
1957
/* CIGI4 Symbol Circle Definition */
1958
//#define CIGI4_PACKET_SIZE_SYMBOL_CIRCLE_DEFINITION (24 + (8*n))
1959
static int hf_cigi4_symbol_circle_definition_circles;
1960
1961
static int ett_cigi4_symbol_circle_definition_circles;
1962
1963
/* CIGI3_3 Symbol Line Definition */
1964
// Variable length
1965
static int hf_cigi3_3_symbol_line_definition;
1966
static int hf_cigi3_3_symbol_line_definition_symbol_id;
1967
static int hf_cigi3_3_symbol_line_definition_primitive_type;
1968
static int hf_cigi3_3_symbol_line_definition_stipple_pattern;
1969
static int hf_cigi3_3_symbol_line_definition_line_width;
1970
static int hf_cigi3_3_symbol_line_definition_stipple_pattern_length;
1971
static int hf_cigi3_3_symbol_line_definition_vertex_u[29];
1972
static int hf_cigi3_3_symbol_line_definition_vertex_v[29];
1973
1974
static const value_string cigi3_3_symbol_line_definition_primitive_type_vals[] = {
1975
    {0, "Point"},
1976
    {1, "Line"},
1977
    {2, "Line Strip"},
1978
    {3, "Line Loop"},
1979
    {4, "Triangle"},
1980
    {5, "Triangle Strip"},
1981
    {6, "Triangle Fan"},
1982
    {0, NULL}
1983
};
1984
1985
/* CIGI4 Symbol Polygon Definition */
1986
/* Symbol Line Definition packet renamed. */
1987
//#define CIGI4_PACKET_SIZE_SYMBOL_POLYGON_DEFINITION                 24 + (8 x n)
1988
static int hf_cigi4_symbol_polygon_definition;
1989
static int hf_cigi4_symbol_polygon_definition_symbol_id;
1990
static int hf_cigi4_symbol_polygon_definition_primitive_type;
1991
static int hf_cigi4_symbol_polygon_definition_stipple_pattern;
1992
static int hf_cigi4_symbol_polygon_definition_line_width;
1993
static int hf_cigi4_symbol_polygon_definition_stipple_pattern_length;
1994
static int hf_cigi4_symbol_polygon_definition_vertex_u[29];
1995
static int hf_cigi4_symbol_polygon_definition_vertex_v[29];
1996
static int hf_cigi4_symbol_polygon_definition_vertices;
1997
1998
static int ett_cigi4_symbol_polygon_definition_vertices;
1999
2000
/* CIGI3_3 Symbol Clone */
2001
0
#define CIGI3_PACKET_SIZE_SYMBOL_CLONE 8
2002
static int hf_cigi3_3_symbol_clone;
2003
static int hf_cigi3_3_symbol_clone_symbol_id;
2004
static int hf_cigi3_3_symbol_clone_source_type;
2005
static int hf_cigi3_3_symbol_clone_source_id;
2006
2007
static const true_false_string cigi3_3_symbol_clone_source_type_tfs = {
2008
    "Symbol Template",
2009
    "Symbol"
2010
};
2011
2012
/* CIG4 Symbol Clone */
2013
0
#define CIGI4_PACKET_SIZE_SYMBOL_CLONE 16
2014
2015
/* CIGI3_3 Symbol Control */
2016
0
#define CIGI3_PACKET_SIZE_SYMBOL_CONTROL 40
2017
static int hf_cigi3_3_symbol_control;
2018
static int hf_cigi3_3_symbol_control_symbol_id;
2019
static int hf_cigi3_3_symbol_control_symbol_state;
2020
static int hf_cigi3_3_symbol_control_attach_state;
2021
static int hf_cigi3_3_symbol_control_flash_control;
2022
static int hf_cigi3_3_symbol_control_inherit_color;
2023
static int hf_cigi3_3_symbol_control_parent_symbol_ident;
2024
static int hf_cigi3_3_symbol_control_surface_ident;
2025
static int hf_cigi3_3_symbol_control_layer;
2026
static int hf_cigi3_3_symbol_control_flash_duty_cycle;
2027
static int hf_cigi3_3_symbol_control_flash_period;
2028
static int hf_cigi3_3_symbol_control_position_u;
2029
static int hf_cigi3_3_symbol_control_position_v;
2030
static int hf_cigi3_3_symbol_control_rotation;
2031
static int hf_cigi3_3_symbol_control_red;
2032
static int hf_cigi3_3_symbol_control_green;
2033
static int hf_cigi3_3_symbol_control_blue;
2034
static int hf_cigi3_3_symbol_control_alpha;
2035
static int hf_cigi3_3_symbol_control_scale_u;
2036
static int hf_cigi3_3_symbol_control_scale_v;
2037
2038
static const value_string cigi3_3_symbol_control_symbol_state_vals[] = {
2039
    {0, "Hidden"},
2040
    {1, "Visible"},
2041
    {2, "Destroyed"},
2042
    {0, NULL}
2043
};
2044
2045
static const true_false_string cigi3_3_symbol_control_flash_control_tfs = {
2046
    "Reset",
2047
    "Continue"
2048
};
2049
2050
2051
/* CIGI4 Symbol Control */
2052
0
#define CIGI4_PACKET_SIZE_SYMBOL_CONTROL 48
2053
2054
/* CIGI3_3 Short Symbol Control */
2055
0
#define CIGI3_PACKET_SIZE_SHORT_SYMBOL_CONTROL 32
2056
static int hf_cigi3_3_short_symbol_control;
2057
static int hf_cigi3_3_short_symbol_control_symbol_id;
2058
static int hf_cigi3_3_short_symbol_control_inherit_color;
2059
static int hf_cigi3_3_short_symbol_control_flash_control;
2060
static int hf_cigi3_3_short_symbol_control_attach_state;
2061
static int hf_cigi3_3_short_symbol_control_symbol_state;
2062
static int hf_cigi3_3_short_symbol_control_attribute_select1;
2063
static int hf_cigi3_3_short_symbol_control_attribute_select2;
2064
static int hf_cigi3_3_short_symbol_control_attribute_value1;
2065
static int hf_cigi3_3_short_symbol_control_attribute_value2;
2066
static int hf_cigi3_3_short_symbol_control_attribute_value1f;
2067
static int hf_cigi3_3_short_symbol_control_attribute_value2f;
2068
static int hf_cigi3_3_short_symbol_control_red1;
2069
static int hf_cigi3_3_short_symbol_control_green1;
2070
static int hf_cigi3_3_short_symbol_control_blue1;
2071
static int hf_cigi3_3_short_symbol_control_alpha1;
2072
static int hf_cigi3_3_short_symbol_control_red2;
2073
static int hf_cigi3_3_short_symbol_control_green2;
2074
static int hf_cigi3_3_short_symbol_control_blue2;
2075
static int hf_cigi3_3_short_symbol_control_alpha2;
2076
2077
static const value_string cigi3_3_short_symbol_control_attribute_select_vals[] = {
2078
    {0, "None"},
2079
    {1, "Surface ID"},
2080
    {2, "Parent Symbol ID"},
2081
    {3, "Layer"},
2082
    {4, "Flash Duty Cycle Percentage"},
2083
    {5, "Flash Period"},
2084
    {6, "Position U"},
2085
    {7, "Position V"},
2086
    {8, "Rotation"},
2087
    {9, "Color"},
2088
    {10,"Scale U"},
2089
    {11,"Scale V"},
2090
    {0, NULL}
2091
};
2092
2093
2094
/* CIGI4 Short Symbol Control */
2095
0
#define CIGI4_PACKET_SIZE_SHORT_SYMBOL_CONTROL 24
2096
2097
/* CIGI4 Symbol Textured Circle */
2098
//#define CIGI4_PACKET_SIZE_SYMBOL_CIRCLE_TEXTURED_DEFINITION         16 + (40 x n)
2099
static int hf_cigi4_symbol_circle_textured_definition;
2100
static int hf_cigi4_symbol_circle_textured_definition_symbol_id;
2101
static int hf_cigi4_symbol_circle_textured_definition_texture_id;
2102
static int hf_cigi4_symbol_circle_textured_definition_filter_mode;
2103
static int hf_cigi4_symbol_circle_textured_definition_wrap;
2104
static int hf_cigi4_symbol_circle_textured_definition_center_u[9];
2105
static int hf_cigi4_symbol_circle_textured_definition_center_v[9];
2106
static int hf_cigi4_symbol_circle_textured_definition_radius[9];
2107
static int hf_cigi4_symbol_circle_textured_definition_inner_radius[9];
2108
static int hf_cigi4_symbol_circle_textured_definition_start_angle[9];
2109
static int hf_cigi4_symbol_circle_textured_definition_end_angle[9];
2110
static int hf_cigi4_symbol_circle_textured_definition_texture_center_u[9];
2111
static int hf_cigi4_symbol_circle_textured_definition_texture_center_v[9];
2112
static int hf_cigi4_symbol_circle_textured_definition_texture_radius[9];
2113
static int hf_cigi4_symbol_circle_textured_definition_texture_rotation[9];
2114
static int hf_cigi4_symbol_circle_textured_definition_circles;
2115
2116
static int ett_cigi4_symbol_circle_textured_definition_circles;
2117
2118
/* CIGI4 Symbol Textured Polygon */
2119
//#define CIGI4_PACKET_SIZE_SYMBOL_POLYGON_TEXTURED_DEFINITION        16 + (16 x n)
2120
static int hf_cigi4_symbol_polygon_textured_definition;
2121
static int hf_cigi4_symbol_polygon_textured_definition_symbol_id;
2122
static int hf_cigi4_symbol_polygon_textured_definition_texture_id;
2123
static int hf_cigi4_symbol_polygon_textured_definition_filter_mode;
2124
static int hf_cigi4_symbol_polygon_textured_definition_wrap;
2125
static int hf_cigi4_symbol_polygon_textured_definition_vertices;
2126
static int hf_cigi4_symbol_polygon_textured_definition_vertex_u[29];
2127
static int hf_cigi4_symbol_polygon_textured_definition_vertex_v[29];
2128
static int hf_cigi4_symbol_polygon_textured_definition_texture_center_u[29];
2129
static int hf_cigi4_symbol_polygon_textured_definition_texture_center_v[29];
2130
2131
static int ett_cigi4_symbol_polygon_textured_definition_vertices;
2132
2133
/* CIGI3 Start of Frame */
2134
0
#define CIGI3_PACKET_SIZE_START_OF_FRAME 16
2135
static int hf_cigi3_start_of_frame;
2136
static int hf_cigi3_start_of_frame_db_number;
2137
static int hf_cigi3_start_of_frame_ig_status;
2138
static int hf_cigi3_start_of_frame_ig_mode;
2139
static int hf_cigi3_start_of_frame_timestamp_valid;
2140
static int hf_cigi3_start_of_frame_earth_reference_model;
2141
static int hf_cigi3_start_of_frame_frame_ctr;
2142
static int hf_cigi3_start_of_frame_timestamp;
2143
2144
static const value_string cigi3_start_of_frame_ig_mode_vals[] = {
2145
    {0, "Reset/Standby"},
2146
    {1, "Operate"},
2147
    {2, "Debug"},
2148
    {3, "Offline Maintenance"},
2149
    {0, NULL},
2150
};
2151
2152
static const true_false_string cigi3_start_of_frame_earth_reference_model_tfs = {
2153
    "Host-Defined",
2154
    "WGS 84"
2155
};
2156
2157
/* CIGI3_2 Start of Frame */
2158
0
#define CIGI3_2_PACKET_SIZE_START_OF_FRAME 24
2159
static int hf_cigi3_2_start_of_frame;
2160
static int hf_cigi3_2_start_of_frame_minor_version;
2161
static int hf_cigi3_2_start_of_frame_ig_frame_number;
2162
static int hf_cigi3_2_start_of_frame_last_host_frame_number;
2163
2164
/* CIGI3 HAT/HOT Response */
2165
0
#define CIGI3_PACKET_SIZE_HAT_HOT_RESPONSE 16
2166
static int hf_cigi3_hat_hot_response;
2167
static int hf_cigi3_hat_hot_response_hat_hot_id;
2168
static int hf_cigi3_hat_hot_response_valid;
2169
static int hf_cigi3_hat_hot_response_type;
2170
static int hf_cigi3_hat_hot_response_height;
2171
2172
static const true_false_string cigi3_hat_hot_response_type_tfs = {
2173
    "HOT",
2174
    "HAT"
2175
};
2176
2177
/* CIGI3_2 HAT/HOT Response */
2178
static int hf_cigi3_2_hat_hot_response_host_frame_number_lsn;
2179
2180
/* CIGI4 HAT/HOT Response */
2181
0
#define CIGI4_PACKET_SIZE_HAT_HOT_RESPONSE 16
2182
static int hf_cigi4_hat_hot_response_flags;
2183
2184
static int ett_cigi4_hat_hot_response_flags;
2185
2186
/* CIGI3 HAT/HOT Extended Response */
2187
0
#define CIGI3_PACKET_SIZE_HAT_HOT_EXTENDED_RESPONSE 40
2188
static int hf_cigi3_hat_hot_extended_response;
2189
static int hf_cigi3_hat_hot_extended_response_hat_hot_id;
2190
static int hf_cigi3_hat_hot_extended_response_valid;
2191
static int hf_cigi3_hat_hot_extended_response_hat;
2192
static int hf_cigi3_hat_hot_extended_response_hot;
2193
static int hf_cigi3_hat_hot_extended_response_material_code;
2194
static int hf_cigi3_hat_hot_extended_response_normal_vector_azimuth;
2195
static int hf_cigi3_hat_hot_extended_response_normal_vector_elevation;
2196
2197
/* CIGI3_2 HAT/HOT Extended Response */
2198
static int hf_cigi3_2_hat_hot_extended_response_host_frame_number_lsn;
2199
2200
/* CIGI4 HAT/HOT Extended Response */
2201
0
#define CIGI4_PACKET_SIZE_HAT_HOT_EXTENDED_RESPONSE 40
2202
static int hf_cigi4_hat_hot_extended_response_flags;
2203
2204
static int ett_cigi4_hat_hot_extended_response_flags;
2205
2206
/* CIGI3 Line of Sight Response */
2207
0
#define CIGI3_PACKET_SIZE_LINE_OF_SIGHT_RESPONSE 16
2208
static int hf_cigi3_line_of_sight_response;
2209
static int hf_cigi3_line_of_sight_response_los_id;
2210
static int hf_cigi3_line_of_sight_response_valid;
2211
static int hf_cigi3_line_of_sight_response_entity_id_valid;
2212
static int hf_cigi3_line_of_sight_response_visible;
2213
static int hf_cigi3_line_of_sight_response_count;
2214
static int hf_cigi3_line_of_sight_response_entity_id;
2215
static int hf_cigi3_line_of_sight_response_range;
2216
2217
/* CIGI3_2 Line of Sight Response */
2218
static int hf_cigi3_2_line_of_sight_response_host_frame_number_lsn;
2219
2220
/* CIGI4 Line of Sight Response */
2221
0
#define CIGI4_PACKET_SIZE_LINE_OF_SIGHT_RESPONSE 24
2222
2223
/* CIGI3 Line of Sight Extended Response */
2224
0
#define CIGI3_PACKET_SIZE_LINE_OF_SIGHT_EXTENDED_RESPONSE 56
2225
static int hf_cigi3_line_of_sight_extended_response;
2226
static int hf_cigi3_line_of_sight_extended_response_los_id;
2227
static int hf_cigi3_line_of_sight_extended_response_valid;
2228
static int hf_cigi3_line_of_sight_extended_response_entity_id_valid;
2229
static int hf_cigi3_line_of_sight_extended_response_range_valid;
2230
static int hf_cigi3_line_of_sight_extended_response_visible;
2231
static int hf_cigi3_line_of_sight_extended_response_intersection_coord;
2232
static int hf_cigi3_line_of_sight_extended_response_response_count;
2233
static int hf_cigi3_line_of_sight_extended_response_entity_id;
2234
static int hf_cigi3_line_of_sight_extended_response_range;
2235
static int hf_cigi3_line_of_sight_extended_response_lat_xoff;
2236
static int hf_cigi3_line_of_sight_extended_response_lon_yoff;
2237
static int hf_cigi3_line_of_sight_extended_response_alt_zoff;
2238
static int hf_cigi3_line_of_sight_extended_response_red;
2239
static int hf_cigi3_line_of_sight_extended_response_green;
2240
static int hf_cigi3_line_of_sight_extended_response_blue;
2241
static int hf_cigi3_line_of_sight_extended_response_alpha;
2242
static int hf_cigi3_line_of_sight_extended_response_material_code;
2243
static int hf_cigi3_line_of_sight_extended_response_normal_vector_azimuth;
2244
static int hf_cigi3_line_of_sight_extended_response_normal_vector_elevation;
2245
2246
/* CIGI3_2 Line of Sight Extended Response */
2247
static int hf_cigi3_2_line_of_sight_extended_response_host_frame_number_lsn;
2248
2249
/* CIGI4 Line of Sight Extended Response */
2250
0
#define CIGI4_PACKET_SIZE_LINE_OF_SIGHT_EXTENDED_RESPONSE 64
2251
2252
/* CIGI3 Sensor Response */
2253
0
#define CIGI3_PACKET_SIZE_SENSOR_RESPONSE 24
2254
static int hf_cigi3_sensor_response;
2255
static int hf_cigi3_sensor_response_view_id;
2256
static int hf_cigi3_sensor_response_sensor_id;
2257
static int hf_cigi3_sensor_response_sensor_status;
2258
static int hf_cigi3_sensor_response_gate_x_size;
2259
static int hf_cigi3_sensor_response_gate_y_size;
2260
static int hf_cigi3_sensor_response_gate_x_pos;
2261
static int hf_cigi3_sensor_response_gate_y_pos;
2262
static int hf_cigi3_sensor_response_frame_ctr;
2263
2264
static const value_string cigi3_sensor_response_sensor_status_vals[] = {
2265
    {0, "Searching for target"},
2266
    {1, "Tracking target"},
2267
    {2, "Impending breaklock"},
2268
    {3, "Breaklock"},
2269
    {0, NULL},
2270
};
2271
2272
/* CIGI4 Sensor Response */
2273
0
#define CIGI4_PACKET_SIZE_SENSOR_RESPONSE 24
2274
2275
/* CIGI3 Sensor Extended Response */
2276
0
#define CIGI3_PACKET_SIZE_SENSOR_EXTENDED_RESPONSE 48
2277
static int hf_cigi3_sensor_extended_response;
2278
static int hf_cigi3_sensor_extended_response_view_id;
2279
static int hf_cigi3_sensor_extended_response_sensor_id;
2280
static int hf_cigi3_sensor_extended_response_sensor_status;
2281
static int hf_cigi3_sensor_extended_response_entity_id_valid;
2282
static int hf_cigi3_sensor_extended_response_entity_id;
2283
static int hf_cigi3_sensor_extended_response_gate_x_size;
2284
static int hf_cigi3_sensor_extended_response_gate_y_size;
2285
static int hf_cigi3_sensor_extended_response_gate_x_pos;
2286
static int hf_cigi3_sensor_extended_response_gate_y_pos;
2287
static int hf_cigi3_sensor_extended_response_frame_ctr;
2288
static int hf_cigi3_sensor_extended_response_track_lat;
2289
static int hf_cigi3_sensor_extended_response_track_lon;
2290
static int hf_cigi3_sensor_extended_response_track_alt;
2291
2292
static const value_string cigi3_sensor_extended_response_sensor_status_vals[] = {
2293
    {0, "Searching for target"},
2294
    {1, "Tracking target"},
2295
    {2, "Impending breaklock"},
2296
    {3, "Breaklock"},
2297
    {0, NULL},
2298
};
2299
2300
2301
/* CIGI4 Sensor Extended Response */
2302
0
#define CIGI4_PACKET_SIZE_SENSOR_EXTENDED_RESPONSE 56
2303
2304
/* CIGI3 Position Response */
2305
0
#define CIGI3_PACKET_SIZE_POSITION_RESPONSE 48
2306
static int hf_cigi3_position_response;
2307
static int hf_cigi3_position_response_object_id;
2308
static int hf_cigi3_position_response_part_id;
2309
static int hf_cigi3_position_response_object_class;
2310
static int hf_cigi3_position_response_coord_system;
2311
static int hf_cigi3_position_response_lat_xoff;
2312
static int hf_cigi3_position_response_lon_yoff;
2313
static int hf_cigi3_position_response_alt_zoff;
2314
static int hf_cigi3_position_response_roll;
2315
static int hf_cigi3_position_response_pitch;
2316
static int hf_cigi3_position_response_yaw;
2317
2318
static const value_string cigi3_position_response_object_class_vals[] = {
2319
    {0, "Entity"},
2320
    {1, "Articulated Part"},
2321
    {2, "View"},
2322
    {3, "View Group"},
2323
    {4, "Motion Tracker"},
2324
    {0, NULL},
2325
};
2326
2327
static const value_string cigi3_position_response_coord_system_vals[] = {
2328
    {0, "Geodetic"},
2329
    {1, "Parent Entity"},
2330
    {2, "Submodel"},
2331
    {0, NULL},
2332
};
2333
2334
2335
/* CIGI4 Position Response */
2336
0
#define CIGI4_PACKET_SIZE_POSITION_RESPONSE 48
2337
2338
/* CIGI3 Weather Conditions Response */
2339
0
#define CIGI3_PACKET_SIZE_WEATHER_CONDITIONS_RESPONSE 32
2340
static int hf_cigi3_weather_conditions_response;
2341
static int hf_cigi3_weather_conditions_response_request_id;
2342
static int hf_cigi3_weather_conditions_response_humidity;
2343
static int hf_cigi3_weather_conditions_response_air_temp;
2344
static int hf_cigi3_weather_conditions_response_visibility_range;
2345
static int hf_cigi3_weather_conditions_response_horiz_speed;
2346
static int hf_cigi3_weather_conditions_response_vert_speed;
2347
static int hf_cigi3_weather_conditions_response_wind_direction;
2348
static int hf_cigi3_weather_conditions_response_barometric_pressure;
2349
2350
/* CIGI4 Weather Conditions Response */
2351
0
#define CIGI4_PACKET_SIZE_WEATHER_CONDITIONS_RESPONSE 32
2352
2353
/* CIGI3 Aerosol Concentration Response */
2354
0
#define CIGI3_PACKET_SIZE_AEROSOL_CONCENTRATION_RESPONSE 8
2355
static int hf_cigi3_aerosol_concentration_response;
2356
static int hf_cigi3_aerosol_concentration_response_request_id;
2357
static int hf_cigi3_aerosol_concentration_response_layer_id;
2358
static int hf_cigi3_aerosol_concentration_response_aerosol_concentration;
2359
2360
/* CIGI4 Aerosol Concentration Response */
2361
0
#define CIGI4_PACKET_SIZE_AEROSOL_CONCENTRATION_RESPONSE 16
2362
2363
/* CIGI3 Maritime Surface Conditions Response */
2364
0
#define CIGI3_PACKET_SIZE_MARITIME_SURFACE_CONDITIONS_RESPONSE 16
2365
static int hf_cigi3_maritime_surface_conditions_response;
2366
static int hf_cigi3_maritime_surface_conditions_response_request_id;
2367
static int hf_cigi3_maritime_surface_conditions_response_sea_surface_height;
2368
static int hf_cigi3_maritime_surface_conditions_response_surface_water_temp;
2369
static int hf_cigi3_maritime_surface_conditions_response_surface_clarity;
2370
2371
/* CIGI4 Maritime Surface Conditions Response */
2372
0
#define CIGI4_PACKET_SIZE_MARITIME_SURFACE_CONDITIONS_RESPONSE 24
2373
2374
/* CIGI3 Terrestrial Surface Conditions Response */
2375
0
#define CIGI3_PACKET_SIZE_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE 8
2376
static int hf_cigi3_terrestrial_surface_conditions_response;
2377
static int hf_cigi3_terrestrial_surface_conditions_response_request_id;
2378
static int hf_cigi3_terrestrial_surface_conditions_response_surface_id;
2379
2380
/* CIGI4 Terrestrial Surface Conditions Response */
2381
0
#define CIGI4_PACKET_SIZE_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE 16
2382
2383
/* CIGI3 Collision Detection Segment Notification */
2384
0
#define CIGI3_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_NOTIFICATION 16
2385
static int hf_cigi3_collision_detection_segment_notification;
2386
static int hf_cigi3_collision_detection_segment_notification_entity_id;
2387
static int hf_cigi3_collision_detection_segment_notification_segment_id;
2388
static int hf_cigi3_collision_detection_segment_notification_type;
2389
static int hf_cigi3_collision_detection_segment_notification_contacted_entity_id;
2390
static int hf_cigi3_collision_detection_segment_notification_material_code;
2391
static int hf_cigi3_collision_detection_segment_notification_intersection_distance;
2392
2393
static const true_false_string cigi3_collision_detection_segment_notification_type_tfs = {
2394
    "Entity",
2395
    "Non-entity"
2396
};
2397
2398
/* CIGI4 Collision Detection Segment Notification */
2399
0
#define CIGI4_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_NOTIFICATION 24
2400
2401
/* CIGI3 Collision Detection Volume Notification */
2402
0
#define CIGI3_PACKET_SIZE_COLLISION_DETECTION_VOLUME_NOTIFICATION 16
2403
static int hf_cigi3_collision_detection_volume_notification;
2404
static int hf_cigi3_collision_detection_volume_notification_entity_id;
2405
static int hf_cigi3_collision_detection_volume_notification_volume_id;
2406
static int hf_cigi3_collision_detection_volume_notification_type;
2407
static int hf_cigi3_collision_detection_volume_notification_contacted_entity_id;
2408
static int hf_cigi3_collision_detection_volume_notification_contacted_volume_id;
2409
2410
static const true_false_string cigi3_collision_detection_volume_notification_type_tfs = {
2411
    "Entity",
2412
    "Non-entity"
2413
};
2414
2415
/* CIGI4 Collision Detection Volume Notification */
2416
0
#define CIGI4_PACKET_SIZE_COLLISION_DETECTION_VOLUME_NOTIFICATION 16
2417
2418
/* CIGI3 Animation Stop Notification */
2419
0
#define CIGI3_PACKET_SIZE_ANIMATION_STOP_NOTIFICATION 8
2420
static int hf_cigi3_animation_stop_notification;
2421
static int hf_cigi3_animation_stop_notification_entity_id;
2422
2423
/* CIGI4 Animation Stop Notification */
2424
0
#define CIGI4_PACKET_SIZE_ANIMATION_STOP_NOTIFICATION 8
2425
2426
/* CIGI3 Event Notification */
2427
0
#define CIGI3_PACKET_SIZE_EVENT_NOTIFICATION 16
2428
static int hf_cigi3_event_notification;
2429
static int hf_cigi3_event_notification_event_id;
2430
static int hf_cigi3_event_notification_data_1;
2431
static int hf_cigi3_event_notification_data_2;
2432
static int hf_cigi3_event_notification_data_3;
2433
2434
/* CIGI4 Event Notification */
2435
0
#define CIGI4_PACKET_SIZE_EVENT_NOTIFICATION 24
2436
2437
/* CIGI3 Image Generator Message */
2438
static int hf_cigi3_image_generator_message;
2439
static int hf_cigi3_image_generator_message_id;
2440
static int hf_cigi3_image_generator_message_message;
2441
2442
/* CIGI4 Image Generator Message */
2443
2444
/* CIGI3 User-Defined Packets */
2445
static int hf_cigi3_user_defined;
2446
2447
/* CIGI4 Locally Defined Packets */
2448
static int hf_cigi4_locally_defined;
2449
2450
/* CIGI4 Registered Packets */
2451
static int hf_cigi4_registered;
2452
2453
static expert_field ei_cigi_invalid_len;
2454
2455
2456
/* CIGI4 Packet ID */
2457
static int hf_cigi4_packet_id;
2458
static int hf_cigi4_packet_size;
2459
16
#define CIGI4_PACKET_ID_IG_CONTROL                                   0x00
2460
16
#define CIGI4_PACKET_ID_ENTITY_POSITION                              0x01
2461
16
#define CIGI4_PACKET_ID_CONFORMAL_CLAMPED_ENTITY_POSITION            0x02
2462
16
#define CIGI4_PACKET_ID_COMPONENT_CONTROL                            0x03
2463
16
#define CIGI4_PACKET_ID_SHORT_COMPONENT_CONTROL                      0x04
2464
16
#define CIGI4_PACKET_ID_ARTICULATED_PART_CONTROL                     0x05
2465
16
#define CIGI4_PACKET_ID_SHORT_ARTICULATED_PART_CONTROL               0x06
2466
16
#define CIGI4_PACKET_ID_VELOCITY_CONTROL                             0x07
2467
16
#define CIGI4_PACKET_ID_CELESTIAL_SPHERE_CONTROL                     0x08
2468
16
#define CIGI4_PACKET_ID_ATMOSPHERE_CONTROL                           0x09
2469
16
#define CIGI4_PACKET_ID_ENVIRONMENTAL_REGION_CONTROL                 0x0A
2470
16
#define CIGI4_PACKET_ID_WEATHER_CONTROL                              0x0B
2471
16
#define CIGI4_PACKET_ID_MARITIME_SURFACE_CONDITIONS_CONTROL          0x0C
2472
16
#define CIGI4_PACKET_ID_WAVE_CONTROL                                 0x0D
2473
16
#define CIGI4_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL       0x0E
2474
16
#define CIGI4_PACKET_ID_VIEW_CONTROL                                 0x0F
2475
16
#define CIGI4_PACKET_ID_SENSOR_CONTROL                               0x10
2476
16
#define CIGI4_PACKET_ID_MOTION_TRACKER_CONTROL                       0x11
2477
16
#define CIGI4_PACKET_ID_EARTH_REFERENCE_MODEL_DEFINITION             0x12
2478
16
#define CIGI4_PACKET_ID_ACCELERATION_CONTROL                         0x13
2479
16
#define CIGI4_PACKET_ID_VIEW_DEFINITION                              0x14
2480
16
#define CIGI4_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION       0x15
2481
16
#define CIGI4_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION        0x16
2482
16
#define CIGI4_PACKET_ID_HAT_HOT_REQUEST                              0x17
2483
16
#define CIGI4_PACKET_ID_LINE_OF_SIGHT_SEGMENT_REQUEST                0x18
2484
16
#define CIGI4_PACKET_ID_LINE_OF_SIGHT_VECTOR_REQUEST                 0x19
2485
16
#define CIGI4_PACKET_ID_POSITION_REQUEST                             0x1A
2486
16
#define CIGI4_PACKET_ID_ENVIRONMENTAL_CONDITIONS_REQUEST             0x1B
2487
16
#define CIGI4_PACKET_ID_SYMBOL_SURFACE_DEFINITION                    0x1C
2488
16
#define CIGI4_PACKET_ID_SYMBOL_TEXT_DEFINITION                       0x1D
2489
16
#define CIGI4_PACKET_ID_SYMBOL_CIRCLE_DEFINITION                     0x1E
2490
16
#define CIGI4_PACKET_ID_SYMBOL_POLYGON_DEFINITION                    0x1F
2491
16
#define CIGI4_PACKET_ID_SYMBOL_CLONE                                 0x20
2492
16
#define CIGI4_PACKET_ID_SYMBOL_CONTROL                               0x21
2493
16
#define CIGI4_PACKET_ID_SHORT_SYMBOL_CONTROL                         0x22
2494
16
#define CIGI4_PACKET_ID_SYMBOL_CIRCLE_TEXTURED_DEFINITION            0x23
2495
16
#define CIGI4_PACKET_ID_SYMBOL_POLYGON_TEXTURED_DEFINITION           0x24
2496
16
#define CIGI4_PACKET_ID_ENTITY_CONTROL                               0x25
2497
16
#define CIGI4_PACKET_ID_ANIMATION_CONTROL                            0x26
2498
2499
16
#define CIGI4_PACKET_ID_IMAGE_GENERATOR_MESSAGE                    0x0FF0
2500
16
#define CIGI4_PACKET_ID_EVENT_NOTIFICATION                         0x0FF1
2501
16
#define CIGI4_PACKET_ID_ANIMATION_STOP_NOTIFICATION                0x0FF2
2502
16
#define CIGI4_PACKET_ID_COLLISION_DETECTION_VOLUME_NOTIFICATION    0x0FF3
2503
16
#define CIGI4_PACKET_ID_COLLISION_DETECTION_SEGMENT_NOTIFICATION   0x0FF4
2504
16
#define CIGI4_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE    0x0FF5
2505
16
#define CIGI4_PACKET_ID_MARITIME_SURFACE_CONDITIONS_RESPONSE       0x0FF6
2506
16
#define CIGI4_PACKET_ID_AEROSOL_CONCENTRATION_RESPONSE             0x0FF7
2507
16
#define CIGI4_PACKET_ID_WEATHER_CONDITIONS_RESPONSE                0x0FF8
2508
16
#define CIGI4_PACKET_ID_POSITION_RESPONSE                          0x0FF9
2509
16
#define CIGI4_PACKET_ID_SENSOR_EXTENDED_RESPONSE                   0x0FFA
2510
16
#define CIGI4_PACKET_ID_SENSOR_RESPONSE                            0x0FFB
2511
16
#define CIGI4_PACKET_ID_LINE_OF_SIGHT_EXTENDED_RESPONSE            0x0FFC
2512
16
#define CIGI4_PACKET_ID_LINE_OF_SIGHT_RESPONSE                     0x0FFD
2513
16
#define CIGI4_PACKET_ID_HAT_HOT_EXTENDED_RESPONSE                  0x0FFE
2514
16
#define CIGI4_PACKET_ID_HAT_HOT_RESPONSE                           0x0FFF
2515
16
#define CIGI4_PACKET_ID_START_OF_FRAME                             0xFFFF
2516
2517
/* These locally defined values mean that perhaps a range_string
2518
 * is more appropriate than a value_string.
2519
 */
2520
0
#define CIGI4_PACKET_ID_LOCALLY_DEFINED_MAX                        0xFFFE
2521
0
#define CIGI4_PACKET_ID_LOCALLY_DEFINED_MIN                        0x8000
2522
0
#define CIGI4_PACKET_ID_REGISTERED_MAX                             0x7FFF
2523
0
#define CIGI4_PACKET_ID_REGISTERED_MIN                             0x1000
2524
2525
static const value_string cigi4_packet_id_vals[] = {
2526
    {CIGI4_PACKET_ID_IG_CONTROL, "IG Control"},
2527
    {CIGI4_PACKET_ID_ENTITY_POSITION, "Entity Position"},
2528
    {CIGI4_PACKET_ID_CONFORMAL_CLAMPED_ENTITY_POSITION, "Conformal Clamped Entity Position"},
2529
    {CIGI4_PACKET_ID_COMPONENT_CONTROL, "Component Control"},
2530
    {CIGI4_PACKET_ID_SHORT_COMPONENT_CONTROL, "Short Component Control"},
2531
    {CIGI4_PACKET_ID_ARTICULATED_PART_CONTROL, "Articulated Part Control"},
2532
    {CIGI4_PACKET_ID_SHORT_ARTICULATED_PART_CONTROL, "Short Articulated Part Control"},
2533
    {CIGI4_PACKET_ID_VELOCITY_CONTROL, "Velocity Control"},
2534
    {CIGI4_PACKET_ID_CELESTIAL_SPHERE_CONTROL, "Celestial Sphere Control"},
2535
    {CIGI4_PACKET_ID_ATMOSPHERE_CONTROL, "Atmosphere Control"},
2536
    {CIGI4_PACKET_ID_ENVIRONMENTAL_REGION_CONTROL, "Environmental Region Control"},
2537
    {CIGI4_PACKET_ID_WEATHER_CONTROL, "Weather Control"},
2538
    {CIGI4_PACKET_ID_MARITIME_SURFACE_CONDITIONS_CONTROL, "Maritime Surface Conditions Control"},
2539
    {CIGI4_PACKET_ID_WAVE_CONTROL, "Wave Control"},
2540
    {CIGI4_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL, "Terrestrial Surface Conditions Control"},
2541
    {CIGI4_PACKET_ID_VIEW_CONTROL, "View Control"},
2542
    {CIGI4_PACKET_ID_SENSOR_CONTROL, "Sensor Control"},
2543
    {CIGI4_PACKET_ID_MOTION_TRACKER_CONTROL, "Motion Tracker Control"},
2544
    {CIGI4_PACKET_ID_EARTH_REFERENCE_MODEL_DEFINITION, "Earth Reference Model Definition"},
2545
    {CIGI4_PACKET_ID_ACCELERATION_CONTROL, "Acceleration Definition"},
2546
    {CIGI4_PACKET_ID_VIEW_DEFINITION, "View Definition"},
2547
    {CIGI4_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION, "Collision Detection Segment Definition"},
2548
    {CIGI4_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION, "Collision Detection Volume Definition"},
2549
    {CIGI4_PACKET_ID_HAT_HOT_REQUEST, "HAT/HOT Request"},
2550
    {CIGI4_PACKET_ID_LINE_OF_SIGHT_SEGMENT_REQUEST, "Line of Sight Segment Request"},
2551
    {CIGI4_PACKET_ID_LINE_OF_SIGHT_VECTOR_REQUEST, "Line of Sight Vector Request"},
2552
    {CIGI4_PACKET_ID_POSITION_REQUEST, "Position Request"},
2553
    {CIGI4_PACKET_ID_ENVIRONMENTAL_CONDITIONS_REQUEST, "Environmental Conditions Request"},
2554
    {CIGI4_PACKET_ID_SYMBOL_SURFACE_DEFINITION, "Symbol Surface Definition"},
2555
    {CIGI4_PACKET_ID_SYMBOL_TEXT_DEFINITION, "Symbol Text Definition"},
2556
    {CIGI4_PACKET_ID_SYMBOL_CIRCLE_DEFINITION, "Symbol Circle Definition"},
2557
    {CIGI4_PACKET_ID_SYMBOL_POLYGON_DEFINITION, "Symbol Polygon Definition"},
2558
    {CIGI4_PACKET_ID_SYMBOL_CLONE, "Symbol Clone"},
2559
    {CIGI4_PACKET_ID_SYMBOL_CONTROL, "Symbol Control"},
2560
    {CIGI4_PACKET_ID_SHORT_SYMBOL_CONTROL, "Short Symbol Control"},
2561
    {CIGI4_PACKET_ID_SYMBOL_CIRCLE_TEXTURED_DEFINITION, "Symbol Textured Circle Definition"},
2562
    {CIGI4_PACKET_ID_SYMBOL_POLYGON_TEXTURED_DEFINITION, "Symbol Textured Polygon Definition"},
2563
    {CIGI4_PACKET_ID_ENTITY_CONTROL, "Entity Control"},
2564
    {CIGI4_PACKET_ID_ANIMATION_CONTROL, "Animation Control"},
2565
2566
    {CIGI4_PACKET_ID_IMAGE_GENERATOR_MESSAGE, "Image Generator Message"},
2567
    {CIGI4_PACKET_ID_EVENT_NOTIFICATION, "Event Notification"},
2568
    {CIGI4_PACKET_ID_ANIMATION_STOP_NOTIFICATION, "Animation Stop Notification"},
2569
    {CIGI4_PACKET_ID_COLLISION_DETECTION_VOLUME_NOTIFICATION, "Collision Detection Volume Notification"},
2570
    {CIGI4_PACKET_ID_COLLISION_DETECTION_SEGMENT_NOTIFICATION, "Collision Detection Segment Notification"},
2571
    {CIGI4_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE, "Terrestrial Surface Conditions Response"},
2572
    {CIGI4_PACKET_ID_MARITIME_SURFACE_CONDITIONS_RESPONSE, "Maritime Surface Conditions Response"},
2573
    {CIGI4_PACKET_ID_AEROSOL_CONCENTRATION_RESPONSE, "Aerosol Concentration Response"},
2574
    {CIGI4_PACKET_ID_WEATHER_CONDITIONS_RESPONSE, "Weather Conditions Response"},
2575
    {CIGI4_PACKET_ID_POSITION_RESPONSE, "Position Response"},
2576
    {CIGI4_PACKET_ID_SENSOR_EXTENDED_RESPONSE, "Sensor Extended Response"},
2577
    {CIGI4_PACKET_ID_SENSOR_RESPONSE, "Sensor Response"},
2578
    {CIGI4_PACKET_ID_LINE_OF_SIGHT_EXTENDED_RESPONSE, "Line of Sight Extended Response"},
2579
    {CIGI4_PACKET_ID_LINE_OF_SIGHT_RESPONSE, "Line of Sight Response"},
2580
    {CIGI4_PACKET_ID_HAT_HOT_EXTENDED_RESPONSE, "HAT/HOT Extended Response"},
2581
    {CIGI4_PACKET_ID_HAT_HOT_RESPONSE, "HAT/HOT Response"},
2582
    {CIGI4_PACKET_ID_START_OF_FRAME, "Start of Frame"},
2583
    {0, NULL}
2584
};
2585
static value_string_ext cigi4_packet_id_vals_ext = VALUE_STRING_EXT_INIT(cigi4_packet_id_vals);
2586
2587
2588
/* CIGI4 IG Control */
2589
0
#define CIGI4_PACKET_SIZE_IG_CONTROL 24
2590
static int hf_cigi4_ig_control_flags;
2591
static int hf_cigi4_ig_control_smoothing_enable;
2592
static int hf_cigi4_ig_control_entity_substitution;
2593
static int hf_cigi4_ig_control_entity_substitution_enable;
2594
2595
static int ett_cigi4_ig_control_flags;
2596
static int ett_cigi4_ig_control_entity_substitution;
2597
2598
/* CIGI4 Entity Position */
2599
/* Subset of previous (CIGI3) Entity Control packet containing parameters
2600
 * for entity position and attitude. */
2601
0
#define CIGI4_PACKET_SIZE_ENTITY_POSITION 48
2602
static int hf_cigi4_entity_position;
2603
static int hf_cigi4_entity_position_entity_id;
2604
static int hf_cigi4_entity_position_flags;
2605
static int hf_cigi4_entity_position_attach_state;
2606
static int hf_cigi4_entity_position_ground_ocean_clamp;
2607
static int hf_cigi4_entity_position_parent_id;
2608
static int hf_cigi4_entity_position_roll;
2609
static int hf_cigi4_entity_position_pitch;
2610
static int hf_cigi4_entity_position_yaw;
2611
static int hf_cigi4_entity_position_lat_xoff;
2612
static int hf_cigi4_entity_position_lon_yoff;
2613
static int hf_cigi4_entity_position_alt_zoff;
2614
2615
static int ett_cigi4_entity_position_flags;
2616
2617
/* CIGI Conformal Clamped Entity Position */
2618
/* Conformal Clamped Entity Control packet renamed. */
2619
0
#define CIGI4_PACKET_SIZE_CONFORMAL_CLAMPED_ENTITY_POSITION         32
2620
static int hf_cigi4_conformal_clamped_entity_position;
2621
static int hf_cigi4_conformal_clamped_entity_position_entity_id;
2622
static int hf_cigi4_conformal_clamped_entity_position_yaw;
2623
static int hf_cigi4_conformal_clamped_entity_position_lat;
2624
static int hf_cigi4_conformal_clamped_entity_position_lon;
2625
2626
0
#define CIGI4_PACKET_SIZE_COMPONENT_CONTROL                         40
2627
2628
0
#define CIGI4_PACKET_SIZE_SHORT_COMPONENT_CONTROL                   24
2629
2630
static const value_string cigi4_entity_control_ground_ocean_clamp_vals[] = {
2631
    {0, "No Clamp"},
2632
    {1, "Non-Conformal"},
2633
    {2, "Conformal"},
2634
    {0, NULL},
2635
};
2636
2637
/* CIGI4 Start of Frame*/
2638
0
#define CIGI4_PACKET_SIZE_START_OF_FRAME 24
2639
static int hf_cigi4_start_of_frame;
2640
static int hf_cigi4_start_of_frame_db_number;
2641
static int hf_cigi4_start_of_frame_ig_status;
2642
static int hf_cigi4_start_of_frame_flags;
2643
static int hf_cigi4_start_of_frame_ig_mode;
2644
static int hf_cigi4_start_of_frame_timestamp_valid;
2645
static int hf_cigi4_start_of_frame_earth_reference_model;
2646
static int hf_cigi4_start_of_frame_minor_version;
2647
static int hf_cigi4_start_of_frame_ig_frame_number;
2648
static int hf_cigi4_start_of_frame_timestamp;
2649
static int hf_cigi4_start_of_frame_ig_condition_flags;
2650
static int hf_cigi4_start_of_frame_last_host_frame_number;
2651
static int hf_cigi4_start_of_frame_condition_overframing;
2652
static int hf_cigi4_start_of_frame_condition_paging;
2653
static int hf_cigi4_start_of_frame_condition_excessive_variable_length_data;
2654
2655
static int ett_cigi4_start_of_frame_flags;
2656
static int ett_cigi4_start_of_frame_ig_condition_flags;
2657
2658
2659
/*
2660
static const true_false_string cigi4_entity_control_animation_direction_tfs = {
2661
    "Backward",
2662
    "Forward"
2663
};
2664
2665
static const true_false_string cigi4_entity_control_animation_loop_mode_tfs = {
2666
    "Continuous",
2667
    "One-Shot"
2668
};
2669
2670
static const value_string cigi4_entity_control_animation_state_vals[] = {
2671
    {0, "Stop"},
2672
    {1, "Pause"},
2673
    {2, "Play"},
2674
    {3, "Continue"},
2675
    {0, NULL},
2676
};*/
2677
2678
2679
2680
/* Global preferences */
2681
32
#define CIGI_VERSION_FROM_PACKET 0
2682
0
#define CIGI_VERSION_1   1
2683
16
#define CIGI_VERSION_2   2
2684
16
#define CIGI_VERSION_3   3
2685
16
#define CIGI_VERSION_4   4
2686
2687
0
#define CIGI_VERSION_4_IGC 0
2688
0
#define CIGI_VERSION_4_SOF 0xFF
2689
/* CIIG Standard Version 4, 4.5 Message Structure: "The special Packet IDs
2690
 * assigned to the IG Control and Start of Frame packets permit a multi-version
2691
 * CIGI parser to differentiate between the old and new message structure as
2692
 * both 0h and FFh are unknown CIGI major version numbers."
2693
 */
2694
2695
static int global_cigi_version = CIGI_VERSION_FROM_PACKET;
2696
2697
16
#define CIGI_BYTE_ORDER_FROM_PACKET   -1
2698
16
#define CIGI_BYTE_ORDER_BIG_ENDIAN    0
2699
16
#define CIGI_BYTE_ORDER_LITTLE_ENDIAN 1
2700
2701
static int global_cigi_byte_order = CIGI_BYTE_ORDER_FROM_PACKET;
2702
2703
static const char *global_host_ip;
2704
static const char *global_ig_ip;
2705
2706
2707
/* Initialize the subtree pointers */
2708
static int ett_cigi;
2709
2710
/* The version of cigi to use */
2711
static int cigi_version;
2712
static int cigi_minor_version;
2713
2714
/* The byte order of cigi to use; our default is big-endian */
2715
static int cigi_byte_order = ENC_BIG_ENDIAN;
2716
2717
/*
2718
 * Extract a 16-bit fixed-point value and convert it to a float.
2719
 */
2720
static float
2721
cigi_get_fixed_point(tvbuff_t *tvb, int offset, const unsigned encoding)
2722
0
{
2723
0
    int16_t fixed = tvb_get_uint16(tvb, offset, encoding);
2724
0
    return fixed / 128.0F;
2725
0
}
2726
2727
/*
2728
 * Check whether this looks like a CIGI packet or not.
2729
 */
2730
static bool
2731
packet_is_cigi(tvbuff_t *tvb)
2732
0
{
2733
0
    uint16_t packet_id;
2734
0
    uint16_t packet_size;
2735
0
    uint8_t cigi_version_local;
2736
0
    uint8_t ig_mode;
2737
2738
    /* CIGI 3 */
2739
0
    uint16_t byte_swap;
2740
2741
0
    if (tvb_captured_length(tvb) < 3) {
2742
        /* Not enough data available to check */
2743
0
        return false;
2744
0
    }
2745
2746
0
    packet_id = tvb_get_uint8(tvb, 0);
2747
0
    packet_size = tvb_get_uint8(tvb, 1);
2748
0
    cigi_version_local = tvb_get_uint8(tvb, 2);
2749
0
    switch ( cigi_version_local ) {
2750
2751
0
        case CIGI_VERSION_1:
2752
            /* CIGI 1 requires that the first packet is always the IG Control or SOF */
2753
0
            switch ( packet_id ) {
2754
0
                case 1:
2755
0
                    if ( packet_size != 16 ) {
2756
0
                        return false;
2757
0
                    }
2758
2759
0
                    if (!tvb_bytes_exist(tvb, 4, 1)) {
2760
                        /* Not enough data available to check */
2761
0
                        return false;
2762
0
                    }
2763
0
                    ig_mode = (tvb_get_uint8(tvb, 4) & 0xc0) >> 6;
2764
0
                    if ( ig_mode > 2 ) {
2765
0
                        return false;
2766
0
                    }
2767
0
                    break;
2768
0
                case 101:
2769
0
                    if ( packet_size != 12 ) {
2770
0
                        return false;
2771
0
                    }
2772
0
                    break;
2773
0
                default:
2774
0
                    return false;
2775
0
            }
2776
0
            break;
2777
2778
0
        case CIGI_VERSION_2:
2779
            /* CIGI 2 requires that the first packet is always the IG Control or SOF */
2780
0
            switch ( packet_id ) {
2781
0
                case CIGI2_PACKET_ID_IG_CONTROL:
2782
0
                    if ( packet_size != CIGI2_PACKET_SIZE_IG_CONTROL ) {
2783
0
                        return false;
2784
0
                    }
2785
2786
0
                    if (!tvb_bytes_exist(tvb, 4, 1)) {
2787
                        /* Not enough data available to check */
2788
0
                        return false;
2789
0
                    }
2790
0
                    ig_mode = (tvb_get_uint8(tvb, 4) & 0xc0) >> 6;
2791
0
                    if ( ig_mode > 2 ) {
2792
0
                        return false;
2793
0
                    }
2794
0
                    break;
2795
0
                case CIGI2_PACKET_ID_START_OF_FRAME:
2796
0
                    if ( packet_size != CIGI2_PACKET_SIZE_START_OF_FRAME ) {
2797
0
                        return false;
2798
0
                    }
2799
0
                    break;
2800
0
                default:
2801
0
                    return false;
2802
0
            }
2803
0
            break;
2804
2805
0
        case CIGI_VERSION_3:
2806
0
            if (!tvb_bytes_exist(tvb, 6, 1)) {
2807
                /* Not enough data available to check byte swap field */
2808
0
                return false;
2809
0
            }
2810
2811
            /* CIGI 3 requires that the first packet is always the IG Control or SOF */
2812
0
            switch ( packet_id ) {
2813
0
                case CIGI3_PACKET_ID_IG_CONTROL:
2814
0
                    if ( packet_size != CIGI3_PACKET_SIZE_IG_CONTROL ) {
2815
0
                        if ( packet_size != CIGI3_2_PACKET_SIZE_IG_CONTROL ) {
2816
0
                            return false;
2817
0
                        }
2818
0
                    }
2819
2820
0
                    if (!tvb_bytes_exist(tvb, 4, 2)) {
2821
                        /* Not enough data available to check */
2822
0
                        return false;
2823
0
                    }
2824
2825
0
                    ig_mode = (tvb_get_uint8(tvb, 4) & 0x03);
2826
0
                    if ( ig_mode > 2 ) {
2827
0
                        return false;
2828
0
                    }
2829
2830
0
                    break;
2831
0
                case CIGI3_PACKET_ID_START_OF_FRAME:
2832
0
                    if ( packet_size != CIGI3_PACKET_SIZE_START_OF_FRAME ) {
2833
0
                        if ( packet_size != CIGI3_2_PACKET_SIZE_START_OF_FRAME) {
2834
0
                            return false;
2835
0
                        }
2836
0
                    }
2837
2838
0
                    if (!tvb_bytes_exist(tvb, 5, 1)) {
2839
                        /* Not enough data available to check */
2840
0
                        return false;
2841
0
                    }
2842
2843
0
                    break;
2844
0
                default:
2845
0
                    return false;
2846
0
            }
2847
2848
            /* CIGI 3 has the byte swap field which only allows two values. */
2849
0
            byte_swap = tvb_get_ntohs(tvb, 6);
2850
2851
0
            if ( byte_swap != CIGI3_BYTE_SWAP_BIG_ENDIAN && byte_swap != CIGI3_BYTE_SWAP_LITTLE_ENDIAN ) {
2852
0
                return false;
2853
0
            }
2854
0
            break;
2855
2856
0
        case CIGI_VERSION_4_IGC:
2857
0
        case CIGI_VERSION_4_SOF:
2858
            /* CIGI 4 introduces a 4 byte header, with 16-bit packet size
2859
             * and packet ID (yes, they're in the opposite order of the
2860
             * previous versions; now packet size comes first). The version
2861
             * number is now located in the fifth byte. Since the first packet
2862
             * is required to be the IG Control or SOF, the third byte must be
2863
             * 0x00 or 0xFF, regardless of endianness.
2864
             */
2865
0
            if (!tvb_bytes_exist(tvb, 4, 1)) {
2866
                /* Not enough data available to check */
2867
0
                return false;
2868
0
            }
2869
            //test if it's CIGI version 4
2870
0
            if (tvb_get_uint8(tvb, 4) != CIGI_VERSION_4)
2871
0
                return false;
2872
2873
            /* CIGI 4 requires that the first packet is always the IG Control or SOF */
2874
2875
            //PacketSize If the parser detects a zero in the "leftmost" byte, then the message is in Big Endian byte
2876
0
            if (packet_id == 0) {
2877
                /* Big Endian */
2878
0
                packet_size = tvb_get_uint16(tvb, 0, ENC_BIG_ENDIAN);
2879
0
                packet_id = tvb_get_uint16(tvb, 2, ENC_BIG_ENDIAN);
2880
0
            } else if (packet_size == 0) {
2881
                /* Little Endian */
2882
0
                packet_size = tvb_get_uint16(tvb, 0, ENC_LITTLE_ENDIAN);
2883
0
                packet_id = tvb_get_uint16(tvb, 2, ENC_LITTLE_ENDIAN);
2884
0
            } else {
2885
0
                return false;
2886
0
            }
2887
2888
0
            switch (packet_id) {
2889
0
            case CIGI4_PACKET_ID_IG_CONTROL:
2890
0
                if (packet_size != CIGI4_PACKET_SIZE_IG_CONTROL) {
2891
0
                    return false;
2892
0
                }
2893
2894
0
                if (!tvb_bytes_exist(tvb, 7, 2)) {
2895
                    /* Not enough data available to check */
2896
0
                    return false;
2897
0
                }
2898
2899
0
                ig_mode = (tvb_get_uint8(tvb, 7) & 0x03);
2900
0
                if (ig_mode > 2) {
2901
0
                    return false;
2902
0
                }
2903
0
                break;
2904
2905
0
            case CIGI4_PACKET_ID_START_OF_FRAME:
2906
0
                if (packet_size != CIGI4_PACKET_SIZE_START_OF_FRAME) {
2907
0
                    return false;
2908
0
                }
2909
0
                break;
2910
0
            default:
2911
0
                return false;
2912
0
            }
2913
0
            break;
2914
0
        default:
2915
0
            return false;
2916
0
    }
2917
2918
    /* Check that the frame contains at least the first PDU's worth
2919
     * of data. (We can't check this until we know the CIGI version
2920
     * because CIGI version 4 stores the packet size differently.)
2921
     */
2922
0
    if ( packet_size > tvb_reported_length(tvb) ) {
2923
0
        return false;
2924
0
    }
2925
2926
    /* If we made it here, then this is probably CIGI */
2927
0
    return true;
2928
0
}
2929
2930
/*
2931
 * The heuristic dissector
2932
 */
2933
static bool
2934
dissect_cigi_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2935
0
{
2936
    /* Does this look like CIGI? */
2937
0
    if ( !packet_is_cigi(tvb) ) {
2938
0
        return false;
2939
0
    }
2940
0
    dissect_cigi_pdu(tvb, pinfo, tree);
2941
0
    return true;
2942
0
}
2943
2944
/*
2945
 * The non-heuristic dissector.
2946
 */
2947
static int
2948
dissect_cigi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2949
0
{
2950
    /* Make sure this looks like CIGI */
2951
0
    if ( !packet_is_cigi(tvb) ) {
2952
0
        return 0;
2953
0
    }
2954
0
    dissect_cigi_pdu(tvb, pinfo, tree);
2955
    /* We probably ate the entire packet. */
2956
0
    return tvb_reported_length(tvb);
2957
0
}
2958
2959
/* Code to actually dissect the CIGI packets */
2960
static void
2961
dissect_cigi_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2962
0
{
2963
    /* Set up structures needed to add the protocol subtree and manage it */
2964
0
    uint16_t packet_id = 0;
2965
2966
0
    proto_item *ti, *hidden_item;
2967
0
    proto_tree *cigi_tree;
2968
2969
0
    const char* src_str;
2970
0
    const char* dest_str;
2971
2972
2973
0
    if ((tvb_get_ntohs(tvb, 0) & 0xFF00) == 0) {
2974
0
        packet_id = tvb_get_uint16(tvb, 2, ENC_BIG_ENDIAN);     //packet_id is not at the same location
2975
0
    }
2976
0
    else {
2977
0
        packet_id = tvb_get_uint16(tvb, 2, ENC_LITTLE_ENDIAN);
2978
0
    }
2979
2980
    /* Make entries in Protocol column and Info column on summary display */
2981
0
    col_set_str(pinfo->cinfo, COL_PROTOCOL, "CIGI");
2982
2983
    /* If we have the start of frame or IG Control packet set the version
2984
     * XXX - If another version of cigi is added to this dissector be sure to
2985
     * place the IG Control and SOF packet id's in this comparison. */
2986
0
    if ( ( packet_id == CIGI2_PACKET_ID_IG_CONTROL || packet_id == CIGI2_PACKET_ID_START_OF_FRAME || packet_id == CIGI3_PACKET_ID_IG_CONTROL || packet_id == CIGI3_PACKET_ID_START_OF_FRAME ) && global_cigi_version == CIGI_VERSION_FROM_PACKET ) {
2987
0
        cigi_version = tvb_get_uint8(tvb, 2);
2988
0
    }
2989
0
    else if ((packet_id == CIGI4_PACKET_ID_IG_CONTROL || packet_id == CIGI4_PACKET_ID_START_OF_FRAME) && global_cigi_version == CIGI_VERSION_FROM_PACKET) {
2990
0
        cigi_version = tvb_get_uint8(tvb, 4);
2991
0
    }
2992
2993
    /* Format the Info String */
2994
0
    src_str = address_to_str(pinfo->pool, &pinfo->src);
2995
0
    if ( !g_ascii_strcasecmp(global_host_ip, src_str) ) {
2996
0
        src_str = "Host";
2997
0
    } else if ( !g_ascii_strcasecmp(global_ig_ip, src_str) ) {
2998
0
        src_str = "IG";
2999
0
    }
3000
3001
0
    dest_str = address_to_str(pinfo->pool, &pinfo->dst);
3002
0
    if ( !g_ascii_strcasecmp(global_host_ip, dest_str) ) {
3003
0
        dest_str = "Host";
3004
0
    } else if ( !g_ascii_strcasecmp(global_ig_ip, dest_str) ) {
3005
0
        dest_str = "IG";
3006
0
    }
3007
3008
0
    col_add_fstr(pinfo->cinfo, COL_INFO, "%s => %s (%u bytes)", src_str, dest_str,
3009
0
        tvb_reported_length(tvb));
3010
3011
0
    if (tree) {
3012
3013
0
        ti = proto_tree_add_protocol_format(tree, proto_cigi, tvb, 0, tvb_reported_length(tvb), "Common Image Generator Interface (%i), %s => %s (%u bytes)",
3014
0
                                            cigi_version, src_str, dest_str, tvb_reported_length(tvb));
3015
3016
0
        cigi_tree = proto_item_add_subtree(ti, ett_cigi);
3017
3018
        /* Ports */
3019
0
        hidden_item = proto_tree_add_uint(cigi_tree, hf_cigi_src_port, tvb, 0, 0, pinfo->srcport);
3020
0
        proto_item_set_hidden(hidden_item);
3021
0
        hidden_item = proto_tree_add_uint(cigi_tree, hf_cigi_dest_port, tvb, 0, 0, pinfo->destport);
3022
0
        proto_item_set_hidden(hidden_item);
3023
0
        hidden_item = proto_tree_add_uint(cigi_tree, hf_cigi_port, tvb, 0, 0, pinfo->srcport);
3024
0
        proto_item_set_hidden(hidden_item);
3025
0
        hidden_item = proto_tree_add_uint(cigi_tree, hf_cigi_port, tvb, 0, 0, pinfo->destport);
3026
0
        proto_item_set_hidden(hidden_item);
3027
3028
        /* Frame Size */
3029
0
        hidden_item = proto_tree_add_uint(cigi_tree, hf_cigi_frame_size, tvb, 0, 0, tvb_reported_length(tvb));
3030
0
        proto_item_set_hidden(hidden_item);
3031
3032
        /* Since the versions of CIGI are not backwards compatible,
3033
         * dissection is different for each version.
3034
         * XXX - If another version of cigi is added to this dissector be
3035
         * sure to place the version in this statement.*/
3036
0
        if ( cigi_version == CIGI_VERSION_2 ) {
3037
0
            cigi2_add_tree(tvb, pinfo, cigi_tree);
3038
0
        } else if ( cigi_version == CIGI_VERSION_3 ) {
3039
0
            cigi3_add_tree(tvb, pinfo, cigi_tree);
3040
0
        } else if ( cigi_version == CIGI_VERSION_4 ) {
3041
0
            cigi4_add_tree(tvb, pinfo, cigi_tree);
3042
0
        } else {
3043
            /* Since there exists no dissector to dissect this version
3044
             * just put the data into a tree using an unknown version */
3045
0
            cigi_add_tree(tvb, cigi_tree);
3046
0
        }
3047
0
    }
3048
0
}
3049
3050
/* Create the tree for CIGI (Unknown Version)
3051
 * Note: If we have no version then we assume network order bytes (big endian). */
3052
static void
3053
cigi_add_tree(tvbuff_t *tvb, proto_tree *cigi_tree)
3054
0
{
3055
0
    unsigned offset = 0;
3056
0
    unsigned length = 0;
3057
0
    int packet_id = 0;
3058
0
    int packet_size = 0;
3059
0
    int data_size = 0;
3060
3061
0
    proto_tree* cigi_packet_tree = NULL;
3062
0
    proto_item* tipacket;
3063
3064
0
    length = tvb_reported_length(tvb);
3065
3066
    /* Each iteration through this loop is meant to be a separate cigi packet
3067
     * therefore it is okay to assume that at the top of this look we are given
3068
     * a new packet to dissect. */
3069
0
    while ( offset < length ) {
3070
3071
0
        packet_id = tvb_get_uint8(tvb, offset);
3072
0
        packet_size = tvb_get_uint8(tvb, offset + 1);
3073
0
        data_size = packet_size;
3074
3075
        /* a cigi packet must be at least 2 bytes long
3076
           ( 1 - packet_id; 2 - packet_size ) */
3077
0
        if ( packet_size < 2 )
3078
0
            return;
3079
3080
        /* If we have the start of frame or IG Control packet set the version.
3081
         * Since we have no cigi version we assume that packet id 1 is the
3082
         * IG Control and packet id 101 is the Start of Frame. */
3083
0
        if ( ( packet_id == 1 || packet_id == 101 ) && global_cigi_version == CIGI_VERSION_FROM_PACKET ) {
3084
0
            cigi_version = tvb_get_uint8(tvb, 2);
3085
0
        }
3086
3087
        /* Add the subtree for the packet */
3088
0
        tipacket = proto_tree_add_none_format(cigi_tree, hf_cigi_unknown, tvb, offset, packet_size, "Unknown (%i bytes)", packet_size);
3089
3090
0
        cigi_packet_tree = proto_item_add_subtree(tipacket, ett_cigi);
3091
3092
        /* In all CIGI versions the first byte of a packet is the packet ID.
3093
         * The second byte is the size of the packet (in bytes). */
3094
0
        proto_tree_add_item(cigi_packet_tree, hf_cigi_packet_id, tvb, offset, 1, cigi_byte_order);
3095
0
        offset++;
3096
0
        data_size--;
3097
3098
0
        proto_tree_add_item(cigi_packet_tree, hf_cigi_packet_size, tvb, offset, 1, cigi_byte_order);
3099
0
        offset++;
3100
0
        data_size--;
3101
3102
        /* If the packet ID is for the SOF or IG Control, which are usually 101
3103
         * and 1 respectively then also print the version that we are using. */
3104
0
        if ( packet_id == 1 || packet_id == 101 ) {
3105
0
            proto_tree_add_item(cigi_packet_tree, hf_cigi_version, tvb, offset, 1, cigi_byte_order);
3106
0
            offset++;
3107
0
            data_size--;
3108
0
        }
3109
3110
0
        proto_tree_add_item(cigi_packet_tree, hf_cigi_data, tvb, offset, data_size, ENC_NA);
3111
0
        offset += data_size;
3112
0
    }
3113
0
}
3114
3115
/* CIGI Add Data */
3116
/* offset is the position past the packet_id and packet_size.
3117
 * tvb should be trimmed to the appropriate size with e.g.
3118
 * tvb_new_subset_length(). */
3119
static int
3120
cigi_add_data(tvbuff_t *tvb, proto_tree *tree, int offset)
3121
0
{
3122
    /* Note: CIGI 4 uses a 4 byte packet header (2 byte packet ID
3123
     * and 2 byte packet size), so we cannot inspect previous bytes in
3124
     * order to use this as a common function. */
3125
0
    int packet_size = tvb_reported_length_remaining(tvb, offset);
3126
0
    proto_tree_add_item(tree, hf_cigi_data, tvb, offset, packet_size, ENC_NA);
3127
0
    offset += packet_size;
3128
3129
0
    return offset;
3130
0
}
3131
3132
/* Create the tree for CIGI 2
3133
 * Note: CIGI 2 guarantee's that the byte order will be big endian. */
3134
static void
3135
cigi2_add_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *cigi_tree)
3136
0
{
3137
0
    unsigned offset = 0;
3138
0
    unsigned length = 0;
3139
0
    unsigned init_offset = 0;
3140
3141
0
    int packet_id = 0;
3142
0
    int packet_size = 0;
3143
0
    unsigned packet_length = 0;
3144
3145
0
    proto_tree* cigi_packet_tree = NULL;
3146
0
    proto_item* tipacket, *ti;
3147
0
    tvbuff_t* next_tvb;
3148
0
    int hf_cigi2_packet;
3149
3150
0
    length = tvb_reported_length(tvb);
3151
3152
    /* Each iteration through this loop is meant to be a separate cigi packet
3153
     * therefore it is okay to assume that at the top of this look we are given
3154
     * a new packet to dissect. */
3155
0
    while ( offset < length ) {
3156
3157
0
        packet_id = tvb_get_uint8(tvb, offset);
3158
0
        packet_size = tvb_get_uint8(tvb, offset + 1);
3159
3160
        /* If we have the start of frame or IG Control packet set the version */
3161
0
        if ( ( packet_id == CIGI2_PACKET_ID_IG_CONTROL || packet_id == CIGI2_PACKET_ID_START_OF_FRAME ) && global_cigi_version == CIGI_VERSION_FROM_PACKET ) {
3162
0
            cigi_version = tvb_get_uint8(tvb, 2);
3163
0
        }
3164
3165
        /* Add the subtree for the packet */
3166
0
        if ( packet_id == CIGI2_PACKET_ID_IG_CONTROL ) {
3167
0
            hf_cigi2_packet = hf_cigi2_ig_control;
3168
0
            packet_length = CIGI2_PACKET_SIZE_IG_CONTROL;
3169
0
        } else if ( packet_id == CIGI2_PACKET_ID_ENTITY_CONTROL ) {
3170
0
            hf_cigi2_packet = hf_cigi2_entity_control;
3171
0
            packet_length = CIGI2_PACKET_SIZE_ENTITY_CONTROL;
3172
0
        } else if ( packet_id == CIGI2_PACKET_ID_COMPONENT_CONTROL ) {
3173
0
            hf_cigi2_packet = hf_cigi2_component_control;
3174
0
            packet_length = CIGI2_PACKET_SIZE_COMPONENT_CONTROL;
3175
0
        } else if ( packet_id == CIGI2_PACKET_ID_ARTICULATED_PARTS_CONTROL ) {
3176
0
            hf_cigi2_packet = hf_cigi2_articulated_parts_control;
3177
0
            packet_length = CIGI2_PACKET_SIZE_ARTICULATED_PARTS_CONTROL;
3178
0
        } else if ( packet_id == CIGI2_PACKET_ID_RATE_CONTROL ) {
3179
0
            hf_cigi2_packet = hf_cigi2_rate_control;
3180
0
            packet_length = CIGI2_PACKET_SIZE_RATE_CONTROL;
3181
0
        } else if ( packet_id == CIGI2_PACKET_ID_ENVIRONMENT_CONTROL ) {
3182
0
            hf_cigi2_packet = hf_cigi2_environment_control;
3183
0
            packet_length = CIGI2_PACKET_SIZE_ENVIRONMENT_CONTROL;
3184
0
        } else if ( packet_id == CIGI2_PACKET_ID_WEATHER_CONTROL ) {
3185
0
            hf_cigi2_packet = hf_cigi2_weather_control;
3186
0
            packet_length = CIGI2_PACKET_SIZE_WEATHER_CONTROL;
3187
0
        } else if ( packet_id == CIGI2_PACKET_ID_VIEW_CONTROL ) {
3188
0
            hf_cigi2_packet = hf_cigi2_view_control;
3189
0
            packet_length = CIGI2_PACKET_SIZE_VIEW_CONTROL;
3190
0
        } else if ( packet_id == CIGI2_PACKET_ID_SENSOR_CONTROL ) {
3191
0
            hf_cigi2_packet = hf_cigi2_sensor_control;
3192
0
            packet_length = CIGI2_PACKET_SIZE_SENSOR_CONTROL;
3193
0
        } else if ( packet_id == CIGI2_PACKET_ID_TRAJECTORY_DEFINITION ) {
3194
0
            hf_cigi2_packet = hf_cigi2_trajectory_definition;
3195
0
            packet_length = CIGI2_PACKET_SIZE_TRAJECTORY_DEFINITION;
3196
0
        } else if ( packet_id == CIGI2_PACKET_ID_SPECIAL_EFFECT_DEFINITION ) {
3197
0
            hf_cigi2_packet = hf_cigi2_special_effect_definition;
3198
0
            packet_length = CIGI2_PACKET_SIZE_SPECIAL_EFFECT_DEFINITION;
3199
0
        } else if ( packet_id == CIGI2_PACKET_ID_VIEW_DEFINITION ) {
3200
0
            hf_cigi2_packet = hf_cigi2_view_definition;
3201
0
            packet_length = CIGI2_PACKET_SIZE_VIEW_DEFINITION;
3202
0
        } else if ( packet_id == CIGI2_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION ) {
3203
0
            hf_cigi2_packet = hf_cigi2_collision_detection_segment_definition;
3204
0
            packet_length = CIGI2_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_DEFINITION;
3205
0
        } else if ( packet_id == CIGI2_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION ) {
3206
0
            hf_cigi2_packet = hf_cigi2_collision_detection_volume_definition;
3207
0
            packet_length = CIGI2_PACKET_SIZE_COLLISION_DETECTION_VOLUME_DEFINITION;
3208
0
        } else if ( packet_id == CIGI2_PACKET_ID_HEIGHT_ABOVE_TERRAIN_REQUEST ) {
3209
0
            hf_cigi2_packet = hf_cigi2_height_above_terrain_request;
3210
0
            packet_length = CIGI2_PACKET_SIZE_HEIGHT_ABOVE_TERRAIN_REQUEST;
3211
0
        } else if ( packet_id == CIGI2_PACKET_ID_LINE_OF_SIGHT_OCCULT_REQUEST ) {
3212
0
            hf_cigi2_packet = hf_cigi2_line_of_sight_occult_request;
3213
0
            packet_length = CIGI2_PACKET_SIZE_LINE_OF_SIGHT_OCCULT_REQUEST;
3214
0
        } else if ( packet_id == CIGI2_PACKET_ID_LINE_OF_SIGHT_RANGE_REQUEST ) {
3215
0
            hf_cigi2_packet = hf_cigi2_line_of_sight_range_request;
3216
0
            packet_length = CIGI2_PACKET_SIZE_LINE_OF_SIGHT_RANGE_REQUEST;
3217
0
        } else if ( packet_id == CIGI2_PACKET_ID_HEIGHT_OF_TERRAIN_REQUEST ) {
3218
0
            hf_cigi2_packet = hf_cigi2_height_of_terrain_request;
3219
0
            packet_length = CIGI2_PACKET_SIZE_HEIGHT_OF_TERRAIN_REQUEST;
3220
0
        } else if ( packet_id == CIGI2_PACKET_ID_START_OF_FRAME ) {
3221
0
            hf_cigi2_packet = hf_cigi2_start_of_frame;
3222
0
            packet_length = CIGI2_PACKET_SIZE_START_OF_FRAME;
3223
0
        } else if ( packet_id == CIGI2_PACKET_ID_HEIGHT_ABOVE_TERRAIN_RESPONSE ) {
3224
0
            hf_cigi2_packet = hf_cigi2_height_above_terrain_response;
3225
0
            packet_length = CIGI2_PACKET_SIZE_HEIGHT_ABOVE_TERRAIN_RESPONSE;
3226
0
        } else if ( packet_id == CIGI2_PACKET_ID_LINE_OF_SIGHT_RESPONSE ) {
3227
0
            hf_cigi2_packet = hf_cigi2_line_of_sight_response;
3228
0
            packet_length = CIGI2_PACKET_SIZE_LINE_OF_SIGHT_RESPONSE;
3229
0
        } else if ( packet_id == CIGI2_PACKET_ID_COLLISION_DETECTION_SEGMENT_RESPONSE ) {
3230
0
            hf_cigi2_packet = hf_cigi2_collision_detection_segment_response;
3231
0
            packet_length = CIGI2_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_RESPONSE;
3232
0
        } else if ( packet_id == CIGI2_PACKET_ID_SENSOR_RESPONSE ) {
3233
0
            hf_cigi2_packet = hf_cigi2_sensor_response;
3234
0
            packet_length = CIGI2_PACKET_SIZE_SENSOR_RESPONSE;
3235
0
        } else if ( packet_id == CIGI2_PACKET_ID_HEIGHT_OF_TERRAIN_RESPONSE ) {
3236
0
            hf_cigi2_packet = hf_cigi2_height_of_terrain_response;
3237
0
            packet_length = CIGI2_PACKET_SIZE_HEIGHT_OF_TERRAIN_RESPONSE;
3238
0
        } else if ( packet_id == CIGI2_PACKET_ID_COLLISION_DETECTION_VOLUME_RESPONSE ) {
3239
0
            hf_cigi2_packet = hf_cigi2_collision_detection_volume_response;
3240
0
            packet_length = CIGI2_PACKET_SIZE_COLLISION_DETECTION_VOLUME_RESPONSE;
3241
0
        } else if ( packet_id == CIGI2_PACKET_ID_IMAGE_GENERATOR_MESSAGE ) {
3242
0
            hf_cigi2_packet = hf_cigi2_image_generator_message;
3243
0
            packet_length = packet_size;
3244
0
        } else if ( packet_id >= CIGI2_PACKET_ID_USER_DEFINABLE_MIN && packet_id <= CIGI2_PACKET_ID_USER_DEFINABLE_MAX ) {
3245
0
            hf_cigi2_packet = hf_cigi2_user_definable;
3246
0
            packet_length = packet_size;
3247
0
        } else {
3248
0
            hf_cigi2_packet = hf_cigi_unknown;
3249
0
            packet_length = packet_size;
3250
0
        }
3251
0
        tipacket = proto_tree_add_none_format(cigi_tree, hf_cigi2_packet, tvb, offset, packet_length,
3252
0
                                              "%s (%i bytes)",
3253
0
                                              val_to_str_ext_const(packet_id, &cigi2_packet_id_vals_ext, "Unknown"),
3254
0
                                              packet_length);
3255
3256
0
        cigi_packet_tree = proto_item_add_subtree(tipacket, ett_cigi);
3257
3258
        /* In CIGI versions < 4 the first byte of a packet is the packet ID.
3259
         * The second byte is the size of the packet (in bytes). */
3260
0
        init_offset = offset;
3261
0
        proto_tree_add_item(cigi_packet_tree, hf_cigi2_packet_id, tvb, offset, 1, ENC_BIG_ENDIAN);
3262
0
        offset++;
3263
3264
0
        ti = proto_tree_add_item(cigi_packet_tree, hf_cigi_packet_size, tvb, offset, 1, ENC_BIG_ENDIAN);
3265
0
        if (packet_size < 2) {
3266
0
            expert_add_info(pinfo, ti, &ei_cigi_invalid_len);
3267
0
            break;
3268
0
        }
3269
0
        offset++;
3270
        /* If packet_size != packet_len for the fixed size packet IDs, attempt
3271
         * to dissect normally then add an expert info and abort afterwards below. */
3272
0
        next_tvb = tvb_new_subset_length(tvb, offset, packet_size - 2);
3273
3274
0
        switch(packet_id)
3275
0
        {
3276
0
        case CIGI2_PACKET_ID_IG_CONTROL:
3277
0
            offset = cigi2_add_ig_control(tvb, cigi_packet_tree, offset);
3278
0
            break;
3279
0
        case CIGI2_PACKET_ID_ENTITY_CONTROL:
3280
0
            offset = cigi2_add_entity_control(tvb, cigi_packet_tree, offset);
3281
0
            break;
3282
0
        case CIGI2_PACKET_ID_COMPONENT_CONTROL:
3283
0
            offset = cigi2_add_component_control(tvb, cigi_packet_tree, offset);
3284
0
            break;
3285
0
        case CIGI2_PACKET_ID_ARTICULATED_PARTS_CONTROL:
3286
0
            offset = cigi2_add_articulated_parts_control(tvb, cigi_packet_tree, offset);
3287
0
            break;
3288
0
        case CIGI2_PACKET_ID_RATE_CONTROL:
3289
0
            offset = cigi2_add_rate_control(tvb, cigi_packet_tree, offset);
3290
0
            break;
3291
0
        case CIGI2_PACKET_ID_ENVIRONMENT_CONTROL:
3292
0
            offset = cigi2_add_environment_control(tvb, cigi_packet_tree, offset);
3293
0
            break;
3294
0
        case CIGI2_PACKET_ID_WEATHER_CONTROL:
3295
0
            offset = cigi2_add_weather_control(tvb, cigi_packet_tree, offset);
3296
0
            break;
3297
0
        case CIGI2_PACKET_ID_VIEW_CONTROL:
3298
0
            offset = cigi2_add_view_control(tvb, cigi_packet_tree, offset);
3299
0
            break;
3300
0
        case CIGI2_PACKET_ID_SENSOR_CONTROL:
3301
0
            offset = cigi2_add_sensor_control(tvb, cigi_packet_tree, offset);
3302
0
            break;
3303
0
        case CIGI2_PACKET_ID_TRAJECTORY_DEFINITION:
3304
0
            offset = cigi2_add_trajectory_definition(tvb, cigi_packet_tree, offset);
3305
0
            break;
3306
0
        case CIGI2_PACKET_ID_SPECIAL_EFFECT_DEFINITION:
3307
0
            offset = cigi2_add_special_effect_definition(tvb, cigi_packet_tree, offset);
3308
0
            break;
3309
0
        case CIGI2_PACKET_ID_VIEW_DEFINITION:
3310
0
            offset = cigi2_add_view_definition(tvb, cigi_packet_tree, offset);
3311
0
            break;
3312
0
        case CIGI2_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION:
3313
0
            offset = cigi2_add_collision_detection_segment_definition(tvb, cigi_packet_tree, offset);
3314
0
            break;
3315
0
        case CIGI2_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION:
3316
0
            offset = cigi2_add_collision_detection_volume_definition(tvb, cigi_packet_tree, offset);
3317
0
            break;
3318
0
        case CIGI2_PACKET_ID_HEIGHT_ABOVE_TERRAIN_REQUEST:
3319
0
            offset = cigi2_add_height_above_terrain_request(tvb, cigi_packet_tree, offset);
3320
0
            break;
3321
0
        case CIGI2_PACKET_ID_LINE_OF_SIGHT_OCCULT_REQUEST:
3322
0
            offset = cigi2_add_line_of_sight_occult_request(tvb, cigi_packet_tree, offset);
3323
0
            break;
3324
0
        case CIGI2_PACKET_ID_LINE_OF_SIGHT_RANGE_REQUEST:
3325
0
            offset = cigi2_add_line_of_sight_range_request(tvb, cigi_packet_tree, offset);
3326
0
            break;
3327
0
        case CIGI2_PACKET_ID_HEIGHT_OF_TERRAIN_REQUEST:
3328
0
            offset = cigi2_add_height_of_terrain_request(tvb, cigi_packet_tree, offset);
3329
0
            break;
3330
0
        case CIGI2_PACKET_ID_START_OF_FRAME:
3331
0
            offset = cigi2_add_start_of_frame(tvb, cigi_packet_tree, offset);
3332
0
            break;
3333
0
        case CIGI2_PACKET_ID_HEIGHT_ABOVE_TERRAIN_RESPONSE:
3334
0
            offset = cigi2_add_height_above_terrain_response(tvb, cigi_packet_tree, offset);
3335
0
            break;
3336
0
        case CIGI2_PACKET_ID_LINE_OF_SIGHT_RESPONSE:
3337
0
            offset = cigi2_add_line_of_sight_response(tvb, cigi_packet_tree, offset);
3338
0
            break;
3339
0
        case CIGI2_PACKET_ID_COLLISION_DETECTION_SEGMENT_RESPONSE:
3340
0
            offset = cigi2_add_collision_detection_segment_response(tvb, cigi_packet_tree, offset);
3341
0
            break;
3342
0
        case CIGI2_PACKET_ID_SENSOR_RESPONSE:
3343
0
            offset = cigi2_add_sensor_response(tvb, cigi_packet_tree, offset);
3344
0
            break;
3345
0
        case CIGI2_PACKET_ID_HEIGHT_OF_TERRAIN_RESPONSE:
3346
0
            offset = cigi2_add_height_of_terrain_response(tvb, cigi_packet_tree, offset);
3347
0
            break;
3348
0
        case CIGI2_PACKET_ID_COLLISION_DETECTION_VOLUME_RESPONSE:
3349
0
            offset = cigi2_add_collision_detection_volume_response(tvb, cigi_packet_tree, offset);
3350
0
            break;
3351
0
        case CIGI2_PACKET_ID_IMAGE_GENERATOR_MESSAGE:
3352
0
            offset = cigi2_add_image_generator_message(tvb, cigi_packet_tree, offset);
3353
0
            break;
3354
0
        default:
3355
0
            offset = cigi_add_data(next_tvb, cigi_packet_tree, 0);
3356
0
            break;
3357
0
        }
3358
3359
0
        if (offset-init_offset != packet_length) {
3360
0
            proto_tree_add_expert(cigi_packet_tree, pinfo, &ei_cigi_invalid_len, tvb, init_offset, offset-init_offset);
3361
0
            break;
3362
0
        }
3363
0
    }
3364
0
}
3365
3366
/* Create the tree for CIGI 3 */
3367
static void
3368
cigi3_add_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *cigi_tree)
3369
0
{
3370
0
    unsigned offset = 0;
3371
0
    unsigned length = 0;
3372
0
    unsigned init_offset = 0;
3373
3374
0
    int packet_id = 0;
3375
0
    int packet_size = 0;
3376
0
    unsigned packet_length = 0;
3377
0
    uint16_t byte_swap = 0;
3378
3379
0
    proto_tree* cigi_packet_tree = NULL;
3380
0
    proto_item* tipacket, *ti;
3381
0
    tvbuff_t* next_tvb;
3382
0
    int hf_cigi3_packet;
3383
3384
0
    length = tvb_reported_length(tvb);
3385
3386
    /* Each iteration through this loop is meant to be a separate cigi packet
3387
     * therefore it is okay to assume that at the top of this look we are given
3388
     * a new packet to dissect. */
3389
0
    while ( offset < length ) {
3390
3391
0
        packet_id = tvb_get_uint8(tvb, offset);
3392
0
        packet_size = tvb_get_uint8(tvb, offset + 1);
3393
0
        byte_swap = tvb_get_ntohs(tvb, offset + 6);
3394
3395
        /* If we have the start of frame or IG Control packet set the version */
3396
0
        if ( ( packet_id == CIGI3_PACKET_ID_IG_CONTROL || packet_id == CIGI3_PACKET_ID_START_OF_FRAME ) && global_cigi_version == CIGI_VERSION_FROM_PACKET ) {
3397
0
            cigi_version = tvb_get_uint8(tvb, 2);
3398
3399
            /* CIGI Minor Version first appeared in CIGI 3.2. Note: It is in a
3400
             * different location in IG Control vs Start of Frame. */
3401
0
            if ( packet_size == CIGI3_2_PACKET_SIZE_IG_CONTROL && packet_id == CIGI3_PACKET_ID_IG_CONTROL ) {
3402
0
               cigi_minor_version = tvb_get_uint8(tvb, 4) >> 4;
3403
0
            } else if ( packet_size == CIGI3_2_PACKET_SIZE_START_OF_FRAME && packet_id == CIGI3_PACKET_ID_START_OF_FRAME ) {
3404
0
               cigi_minor_version = tvb_get_uint8(tvb, 5) >> 4;
3405
0
            } else {
3406
               /* CIGI version prior to 3.2 */
3407
0
               cigi_minor_version = 0;
3408
0
            }
3409
0
        }
3410
3411
        /* If we have the SOF or IG Control packet set the byte order */
3412
0
        if ( ( packet_id == CIGI3_PACKET_ID_IG_CONTROL || packet_id == CIGI3_PACKET_ID_START_OF_FRAME ) && global_cigi_byte_order == CIGI_BYTE_ORDER_FROM_PACKET ) {
3413
0
            if ( byte_swap == CIGI3_BYTE_SWAP_BIG_ENDIAN ) {
3414
0
                cigi_byte_order = ENC_BIG_ENDIAN;
3415
0
            } else if ( byte_swap == CIGI3_BYTE_SWAP_LITTLE_ENDIAN ) {
3416
0
                cigi_byte_order = ENC_LITTLE_ENDIAN;
3417
0
            } else {
3418
                /* Assume we want Big-Endian byte order */
3419
0
                cigi_byte_order = ENC_BIG_ENDIAN;
3420
0
            }
3421
0
        }
3422
3423
        /* Add the subtree for the packet */
3424
0
        if ( packet_id == CIGI3_PACKET_ID_IG_CONTROL && cigi_minor_version == 2 ) {
3425
0
            hf_cigi3_packet = hf_cigi3_ig_control;
3426
0
            packet_length = CIGI3_2_PACKET_SIZE_IG_CONTROL;
3427
0
        } else if ( packet_id == CIGI3_PACKET_ID_IG_CONTROL && cigi_minor_version == 3 ) {
3428
0
            hf_cigi3_packet = hf_cigi3_ig_control;
3429
0
            packet_length = CIGI3_3_PACKET_SIZE_IG_CONTROL;
3430
0
        } else if ( packet_id == CIGI3_PACKET_ID_IG_CONTROL ) {
3431
0
            hf_cigi3_packet = hf_cigi3_ig_control;
3432
0
            packet_length = CIGI3_PACKET_SIZE_IG_CONTROL;
3433
0
        } else if ( packet_id == CIGI3_PACKET_ID_ENTITY_CONTROL ) {
3434
0
            hf_cigi3_packet = hf_cigi3_entity_control;
3435
0
            packet_length = CIGI3_PACKET_SIZE_ENTITY_CONTROL;
3436
0
        } else if ( packet_id == CIGI3_PACKET_ID_CONFORMAL_CLAMPED_ENTITY_CONTROL ) {
3437
0
            hf_cigi3_packet = hf_cigi3_conformal_clamped_entity_control;
3438
0
            packet_length = CIGI3_PACKET_SIZE_CONFORMAL_CLAMPED_ENTITY_CONTROL;
3439
0
        } else if ( packet_id == CIGI3_PACKET_ID_COMPONENT_CONTROL ) {
3440
0
            hf_cigi3_packet = hf_cigi3_component_control;
3441
0
            packet_length = CIGI3_PACKET_SIZE_COMPONENT_CONTROL;
3442
0
        } else if ( packet_id == CIGI3_PACKET_ID_SHORT_COMPONENT_CONTROL ) {
3443
0
            hf_cigi3_packet = hf_cigi3_short_component_control;
3444
0
            packet_length = CIGI3_PACKET_SIZE_SHORT_COMPONENT_CONTROL;
3445
0
        } else if ( packet_id == CIGI3_PACKET_ID_ARTICULATED_PART_CONTROL ) {
3446
0
            hf_cigi3_packet = hf_cigi3_articulated_part_control;
3447
0
            packet_length = CIGI3_PACKET_SIZE_ARTICULATED_PART_CONTROL;
3448
0
        } else if ( packet_id == CIGI3_PACKET_ID_SHORT_ARTICULATED_PART_CONTROL ) {
3449
0
            hf_cigi3_packet = hf_cigi3_short_articulated_part_control;
3450
0
            packet_length = CIGI3_PACKET_SIZE_SHORT_ARTICULATED_PART_CONTROL;
3451
0
        } else if ( packet_id == CIGI3_PACKET_ID_RATE_CONTROL ) {
3452
0
            hf_cigi3_packet = hf_cigi3_rate_control;
3453
0
            packet_length = CIGI3_PACKET_SIZE_RATE_CONTROL;
3454
0
        } else if ( packet_id == CIGI3_PACKET_ID_CELESTIAL_SPHERE_CONTROL ) {
3455
0
            hf_cigi3_packet = hf_cigi3_celestial_sphere_control;
3456
0
            packet_length = CIGI3_PACKET_SIZE_CELESTIAL_SPHERE_CONTROL;
3457
0
        } else if ( packet_id == CIGI3_PACKET_ID_ATMOSPHERE_CONTROL ) {
3458
0
            hf_cigi3_packet = hf_cigi3_atmosphere_control;
3459
0
            packet_length = CIGI3_PACKET_SIZE_ATMOSPHERE_CONTROL;
3460
0
        } else if ( packet_id == CIGI3_PACKET_ID_ENVIRONMENTAL_REGION_CONTROL ) {
3461
0
            hf_cigi3_packet = hf_cigi3_environmental_region_control;
3462
0
            packet_length = CIGI3_PACKET_SIZE_ENVIRONMENTAL_REGION_CONTROL;
3463
0
        } else if ( packet_id == CIGI3_PACKET_ID_WEATHER_CONTROL ) {
3464
0
            hf_cigi3_packet = hf_cigi3_weather_control;
3465
0
            packet_length = CIGI3_PACKET_SIZE_WEATHER_CONTROL;
3466
0
        } else if ( packet_id == CIGI3_PACKET_ID_MARITIME_SURFACE_CONDITIONS_CONTROL ) {
3467
0
            hf_cigi3_packet = hf_cigi3_maritime_surface_conditions_control;
3468
0
            packet_length = CIGI3_PACKET_SIZE_MARITIME_SURFACE_CONDITIONS_CONTROL;
3469
0
        } else if ( packet_id == CIGI3_PACKET_ID_WAVE_CONTROL ) {
3470
0
            hf_cigi3_packet = hf_cigi3_wave_control;
3471
0
            packet_length = CIGI3_PACKET_SIZE_WAVE_CONTROL;
3472
0
        } else if ( packet_id == CIGI3_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL ) {
3473
0
            hf_cigi3_packet = hf_cigi3_terrestrial_surface_conditions_control;
3474
0
            packet_length = CIGI3_PACKET_SIZE_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL;
3475
0
        } else if ( packet_id == CIGI3_PACKET_ID_VIEW_CONTROL ) {
3476
0
            hf_cigi3_packet = hf_cigi3_view_control;
3477
0
            packet_length = CIGI3_PACKET_SIZE_VIEW_CONTROL;
3478
0
        } else if ( packet_id == CIGI3_PACKET_ID_SENSOR_CONTROL ) {
3479
0
            hf_cigi3_packet = hf_cigi3_sensor_control;
3480
0
            packet_length = CIGI3_PACKET_SIZE_SENSOR_CONTROL;
3481
0
        } else if ( packet_id == CIGI3_PACKET_ID_MOTION_TRACKER_CONTROL ) {
3482
0
            hf_cigi3_packet = hf_cigi3_motion_tracker_control;
3483
0
            packet_length = CIGI3_PACKET_SIZE_MOTION_TRACKER_CONTROL;
3484
0
        } else if ( packet_id == CIGI3_PACKET_ID_EARTH_REFERENCE_MODEL_DEFINITION ) {
3485
0
            hf_cigi3_packet = hf_cigi3_earth_reference_model_definition;
3486
0
            packet_length = CIGI3_PACKET_SIZE_EARTH_REFERENCE_MODEL_DEFINITION;
3487
0
        } else if ( packet_id == CIGI3_PACKET_ID_TRAJECTORY_DEFINITION ) {
3488
0
            hf_cigi3_packet = hf_cigi3_trajectory_definition;
3489
0
            packet_length = CIGI3_PACKET_SIZE_TRAJECTORY_DEFINITION;
3490
0
        } else if ( packet_id == CIGI3_PACKET_ID_VIEW_DEFINITION ) {
3491
0
            hf_cigi3_packet = hf_cigi3_view_definition;
3492
0
            packet_length = CIGI3_PACKET_SIZE_VIEW_DEFINITION;
3493
0
        } else if ( packet_id == CIGI3_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION ) {
3494
0
            hf_cigi3_packet = hf_cigi3_collision_detection_segment_definition;
3495
0
            packet_length = CIGI3_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_DEFINITION;
3496
0
        } else if ( packet_id == CIGI3_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION ) {
3497
0
            hf_cigi3_packet = hf_cigi3_collision_detection_volume_definition;
3498
0
            packet_length = CIGI3_PACKET_SIZE_COLLISION_DETECTION_VOLUME_DEFINITION;
3499
0
        } else if ( packet_id == CIGI3_PACKET_ID_HAT_HOT_REQUEST ) {
3500
0
            hf_cigi3_packet = hf_cigi3_hat_hot_request;
3501
0
            packet_length = CIGI3_PACKET_SIZE_HAT_HOT_REQUEST;
3502
0
        } else if ( packet_id == CIGI3_PACKET_ID_LINE_OF_SIGHT_SEGMENT_REQUEST ) {
3503
0
            hf_cigi3_packet = hf_cigi3_line_of_sight_segment_request;
3504
0
            packet_length = CIGI3_PACKET_SIZE_LINE_OF_SIGHT_SEGMENT_REQUEST;
3505
0
        } else if ( packet_id == CIGI3_PACKET_ID_LINE_OF_SIGHT_VECTOR_REQUEST ) {
3506
0
            hf_cigi3_packet = hf_cigi3_line_of_sight_vector_request;
3507
0
            packet_length = CIGI3_PACKET_SIZE_LINE_OF_SIGHT_VECTOR_REQUEST;
3508
0
        } else if ( packet_id == CIGI3_PACKET_ID_POSITION_REQUEST ) {
3509
0
            hf_cigi3_packet = hf_cigi3_position_request;
3510
0
            packet_length = CIGI3_PACKET_SIZE_POSITION_REQUEST;
3511
0
        } else if ( packet_id == CIGI3_PACKET_ID_ENVIRONMENTAL_CONDITIONS_REQUEST ) {
3512
0
            hf_cigi3_packet = hf_cigi3_environmental_conditions_request;
3513
0
            packet_length = CIGI3_PACKET_SIZE_ENVIRONMENTAL_CONDITIONS_REQUEST;
3514
0
        } else if (packet_id == CIGI3_PACKET_ID_SYMBOL_SURFACE_DEFINITION) {
3515
0
            hf_cigi3_packet = hf_cigi3_3_symbol_surface_definition;
3516
0
            packet_length = CIGI3_PACKET_SIZE_SYMBOL_SURFACE_DEFINITION;
3517
0
        } else if (packet_id == CIGI3_PACKET_ID_SYMBOL_TEXT_DEFINITION) {
3518
0
            hf_cigi3_packet = hf_cigi3_3_symbol_text_definition;
3519
0
            packet_length = packet_size;
3520
0
        } else if (packet_id == CIGI3_PACKET_ID_SYMBOL_CIRCLE_DEFINITION) {
3521
0
            hf_cigi3_packet = hf_cigi3_3_symbol_circle_definition;
3522
0
            packet_length = packet_size;
3523
0
        } else if (packet_id == CIGI3_PACKET_ID_SYMBOL_LINE_DEFINITION) {
3524
0
            hf_cigi3_packet = hf_cigi3_3_symbol_line_definition;
3525
0
            packet_length = packet_size;
3526
0
        } else if (packet_id == CIGI3_PACKET_ID_SYMBOL_CLONE) {
3527
0
            hf_cigi3_packet = hf_cigi3_3_symbol_clone;
3528
0
            packet_length = CIGI3_PACKET_SIZE_SYMBOL_CLONE;
3529
0
        } else if (packet_id == CIGI3_PACKET_ID_SYMBOL_CONTROL) {
3530
0
            hf_cigi3_packet = hf_cigi3_3_symbol_control;
3531
0
            packet_length = CIGI3_PACKET_SIZE_SYMBOL_CONTROL;
3532
0
        } else if (packet_id == CIGI3_PACKET_ID_SHORT_SYMBOL_CONTROL) {
3533
0
            hf_cigi3_packet = hf_cigi3_3_short_symbol_control;
3534
0
            packet_length = CIGI3_PACKET_SIZE_SHORT_SYMBOL_CONTROL;
3535
0
        } else if ( packet_id == CIGI3_PACKET_ID_START_OF_FRAME && (cigi_minor_version == 2 || cigi_minor_version == 3) ) {
3536
0
            hf_cigi3_packet = hf_cigi3_2_start_of_frame;
3537
0
            packet_length = CIGI3_2_PACKET_SIZE_START_OF_FRAME;
3538
0
        } else if ( packet_id == CIGI3_PACKET_ID_START_OF_FRAME ) {
3539
0
            hf_cigi3_packet = hf_cigi3_start_of_frame;
3540
0
            packet_length = CIGI3_PACKET_SIZE_START_OF_FRAME;
3541
0
        } else if ( packet_id == CIGI3_PACKET_ID_HAT_HOT_RESPONSE ) {
3542
0
            hf_cigi3_packet = hf_cigi3_hat_hot_response;
3543
0
            packet_length = CIGI3_PACKET_SIZE_HAT_HOT_RESPONSE;
3544
0
        } else if ( packet_id == CIGI3_PACKET_ID_HAT_HOT_EXTENDED_RESPONSE ) {
3545
0
            hf_cigi3_packet = hf_cigi3_hat_hot_extended_response;
3546
0
            packet_length = CIGI3_PACKET_SIZE_HAT_HOT_EXTENDED_RESPONSE;
3547
0
        } else if ( packet_id == CIGI3_PACKET_ID_LINE_OF_SIGHT_RESPONSE ) {
3548
0
            hf_cigi3_packet = hf_cigi3_line_of_sight_response;
3549
0
            packet_length = CIGI3_PACKET_SIZE_LINE_OF_SIGHT_RESPONSE;
3550
0
        } else if ( packet_id == CIGI3_PACKET_ID_LINE_OF_SIGHT_EXTENDED_RESPONSE ) {
3551
0
            hf_cigi3_packet = hf_cigi3_line_of_sight_extended_response;
3552
0
            packet_length = CIGI3_PACKET_SIZE_LINE_OF_SIGHT_EXTENDED_RESPONSE;
3553
0
        } else if ( packet_id == CIGI3_PACKET_ID_SENSOR_RESPONSE ) {
3554
0
            hf_cigi3_packet = hf_cigi3_sensor_response;
3555
0
            packet_length = CIGI3_PACKET_SIZE_SENSOR_RESPONSE;
3556
0
        } else if ( packet_id == CIGI3_PACKET_ID_SENSOR_EXTENDED_RESPONSE ) {
3557
0
            hf_cigi3_packet = hf_cigi3_sensor_extended_response;
3558
0
            packet_length = CIGI3_PACKET_SIZE_SENSOR_EXTENDED_RESPONSE;
3559
0
        } else if ( packet_id == CIGI3_PACKET_ID_POSITION_RESPONSE ) {
3560
0
            hf_cigi3_packet = hf_cigi3_position_response;
3561
0
            packet_length = CIGI3_PACKET_SIZE_POSITION_RESPONSE;
3562
0
        } else if ( packet_id == CIGI3_PACKET_ID_WEATHER_CONDITIONS_RESPONSE ) {
3563
0
            hf_cigi3_packet = hf_cigi3_weather_conditions_response;
3564
0
            packet_length = CIGI3_PACKET_SIZE_WEATHER_CONDITIONS_RESPONSE;
3565
0
        } else if ( packet_id == CIGI3_PACKET_ID_AEROSOL_CONCENTRATION_RESPONSE ) {
3566
0
            hf_cigi3_packet = hf_cigi3_aerosol_concentration_response;
3567
0
            packet_length = CIGI3_PACKET_SIZE_AEROSOL_CONCENTRATION_RESPONSE;
3568
0
        } else if ( packet_id == CIGI3_PACKET_ID_MARITIME_SURFACE_CONDITIONS_RESPONSE ) {
3569
0
            hf_cigi3_packet = hf_cigi3_maritime_surface_conditions_response;
3570
0
            packet_length = CIGI3_PACKET_SIZE_MARITIME_SURFACE_CONDITIONS_RESPONSE;
3571
0
        } else if ( packet_id == CIGI3_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE ) {
3572
0
            hf_cigi3_packet = hf_cigi3_terrestrial_surface_conditions_response;
3573
0
            packet_length = CIGI3_PACKET_SIZE_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE;
3574
0
        } else if ( packet_id == CIGI3_PACKET_ID_COLLISION_DETECTION_SEGMENT_NOTIFICATION ) {
3575
0
            hf_cigi3_packet = hf_cigi3_collision_detection_segment_notification;
3576
0
            packet_length = CIGI3_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_NOTIFICATION;
3577
0
        } else if ( packet_id == CIGI3_PACKET_ID_COLLISION_DETECTION_VOLUME_NOTIFICATION ) {
3578
0
            hf_cigi3_packet = hf_cigi3_collision_detection_volume_notification;
3579
0
            packet_length = CIGI3_PACKET_SIZE_COLLISION_DETECTION_VOLUME_NOTIFICATION;
3580
0
        } else if ( packet_id == CIGI3_PACKET_ID_ANIMATION_STOP_NOTIFICATION ) {
3581
0
            hf_cigi3_packet = hf_cigi3_animation_stop_notification;
3582
0
            packet_length = CIGI3_PACKET_SIZE_ANIMATION_STOP_NOTIFICATION;
3583
0
        } else if ( packet_id == CIGI3_PACKET_ID_EVENT_NOTIFICATION ) {
3584
0
            hf_cigi3_packet = hf_cigi3_event_notification;
3585
0
            packet_length = CIGI3_PACKET_SIZE_EVENT_NOTIFICATION;
3586
0
        } else if ( packet_id == CIGI3_PACKET_ID_IMAGE_GENERATOR_MESSAGE ) {
3587
0
            hf_cigi3_packet = hf_cigi3_image_generator_message;
3588
0
            packet_length = packet_size;
3589
0
        } else if ( packet_id >= CIGI3_PACKET_ID_USER_DEFINED_MIN && packet_id <= CIGI3_PACKET_ID_USER_DEFINED_MAX ) {
3590
0
            hf_cigi3_packet = hf_cigi3_user_defined;
3591
0
            packet_length = packet_size;
3592
0
        } else {
3593
0
            hf_cigi3_packet = hf_cigi_unknown;
3594
0
            packet_length = packet_size;
3595
0
        }
3596
0
        tipacket = proto_tree_add_none_format(cigi_tree, hf_cigi3_packet, tvb, offset, packet_length,
3597
0
                                              "%s (%i bytes)",
3598
0
                                              val_to_str_ext_const(packet_id, &cigi3_packet_id_vals_ext, "Unknown"),
3599
0
                                              packet_length);
3600
3601
0
        cigi_packet_tree = proto_item_add_subtree(tipacket, ett_cigi);
3602
3603
        /* In all CIGI3 versions the first byte of a packet is the packet ID.
3604
         * The second byte is the size of the packet (in bytes). */
3605
0
        init_offset = offset;
3606
0
        proto_tree_add_item(cigi_packet_tree, hf_cigi3_packet_id, tvb, offset, 1, cigi_byte_order);
3607
0
        offset++;
3608
3609
0
        ti = proto_tree_add_item(cigi_packet_tree, hf_cigi_packet_size, tvb, offset, 1, cigi_byte_order);
3610
        /* packet_size includes the packet id (1 byte) and packet size itself (1 byte) ). */
3611
0
        if (packet_size < 2) {
3612
0
            expert_add_info(pinfo, ti, &ei_cigi_invalid_len);
3613
0
            break;
3614
0
        }
3615
        /* If packet_size != packet_len for the fixed size packet IDs, attempt
3616
         * to dissect normally then add an expert info and abort afterwards below. */
3617
0
        offset++;
3618
0
        next_tvb = tvb_new_subset_length(tvb, offset, packet_length - 2);
3619
3620
0
        int dissected = dissector_try_uint_with_data(cigi3_packet_id_table, packet_id,
3621
0
            next_tvb, pinfo, cigi_packet_tree, false, NULL);
3622
3623
0
        if (dissected == 0) {
3624
0
            dissected = cigi_add_data(next_tvb, cigi_packet_tree, 0);
3625
0
        }
3626
3627
0
        offset += dissected;
3628
3629
0
        if (offset-init_offset != packet_length) {
3630
0
            proto_tree_add_expert(cigi_packet_tree, pinfo, &ei_cigi_invalid_len, tvb, init_offset, offset-init_offset);
3631
0
            break;
3632
0
        }
3633
0
    }
3634
0
}
3635
3636
/* CIGI2 IG Control */
3637
static int
3638
cigi2_add_ig_control(tvbuff_t *tvb, proto_tree *tree, int offset)
3639
0
{
3640
0
    proto_tree_add_item(tree, hf_cigi_version, tvb, offset, 1, ENC_BIG_ENDIAN);
3641
0
    offset++;
3642
3643
0
    proto_tree_add_item(tree, hf_cigi2_ig_control_db_number, tvb, offset, 1, ENC_BIG_ENDIAN);
3644
0
    offset++;
3645
3646
0
    proto_tree_add_item(tree, hf_cigi2_ig_control_ig_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
3647
0
    proto_tree_add_item(tree, hf_cigi2_ig_control_tracking_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3648
0
    proto_tree_add_item(tree, hf_cigi2_ig_control_boresight, tvb, offset, 1, ENC_BIG_ENDIAN);
3649
0
    offset += 4;
3650
3651
0
    proto_tree_add_item(tree, hf_cigi2_ig_control_frame_ctr, tvb, offset, 4, ENC_BIG_ENDIAN);
3652
0
    offset += 4;
3653
3654
0
    proto_tree_add_item(tree, hf_cigi2_ig_control_time_tag, tvb, offset, 4, ENC_BIG_ENDIAN);
3655
0
    offset += 4;
3656
3657
0
    return offset;
3658
0
}
3659
3660
/* CIGI2 Entity Control */
3661
static int
3662
cigi2_add_entity_control(tvbuff_t *tvb, proto_tree *tree, int offset)
3663
0
{
3664
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3665
0
    offset += 2;
3666
3667
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_entity_state, tvb, offset, 1, ENC_BIG_ENDIAN);
3668
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_attach_state, tvb, offset, 1, ENC_BIG_ENDIAN);
3669
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_collision_detect, tvb, offset, 1, ENC_BIG_ENDIAN);
3670
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_effect_state, tvb, offset, 1, ENC_BIG_ENDIAN);
3671
0
    offset += 4;
3672
3673
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_type, tvb, offset, 2, ENC_BIG_ENDIAN);
3674
0
    offset += 2;
3675
3676
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_parent_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3677
0
    offset += 2;
3678
3679
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_opacity, tvb, offset, 4, ENC_BIG_ENDIAN);
3680
0
    offset += 4;
3681
3682
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_internal_temp, tvb, offset, 4, ENC_BIG_ENDIAN);
3683
0
    offset += 4;
3684
3685
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_roll, tvb, offset, 4, ENC_BIG_ENDIAN);
3686
0
    offset += 4;
3687
3688
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_pitch, tvb, offset, 4, ENC_BIG_ENDIAN);
3689
0
    offset += 4;
3690
3691
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_heading, tvb, offset, 4, ENC_BIG_ENDIAN);
3692
0
    offset += 4;
3693
3694
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_alt, tvb, offset, 8, ENC_BIG_ENDIAN);
3695
0
    offset += 8;
3696
3697
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_lat, tvb, offset, 8, ENC_BIG_ENDIAN);
3698
0
    offset += 8;
3699
3700
0
    proto_tree_add_item(tree, hf_cigi2_entity_control_lon, tvb, offset, 8, ENC_BIG_ENDIAN);
3701
0
    offset += 8;
3702
3703
0
    return offset;
3704
0
}
3705
3706
/* CIGI2 Component Control */
3707
static int
3708
cigi2_add_component_control(tvbuff_t *tvb, proto_tree *tree, int offset)
3709
0
{
3710
0
    proto_tree_add_item(tree, hf_cigi2_component_control_instance_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3711
0
    offset += 2;
3712
3713
0
    proto_tree_add_item(tree, hf_cigi2_component_control_component_class, tvb, offset, 1, ENC_BIG_ENDIAN);
3714
0
    offset += 4;
3715
3716
0
    proto_tree_add_item(tree, hf_cigi2_component_control_component_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3717
0
    offset += 2;
3718
3719
0
    proto_tree_add_item(tree, hf_cigi2_component_control_component_state, tvb, offset, 2, ENC_BIG_ENDIAN);
3720
0
    offset += 2;
3721
3722
0
    proto_tree_add_item(tree, hf_cigi2_component_control_component_val1, tvb, offset, 4, ENC_BIG_ENDIAN);
3723
0
    offset += 4;
3724
3725
0
    proto_tree_add_item(tree, hf_cigi2_component_control_component_val2, tvb, offset, 4, ENC_BIG_ENDIAN);
3726
0
    offset += 4;
3727
3728
0
    return offset;
3729
0
}
3730
3731
/* CIGI2 Articulated Part Control */
3732
static int
3733
cigi2_add_articulated_parts_control(tvbuff_t *tvb, proto_tree *tree, int offset)
3734
0
{
3735
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3736
0
    offset += 2;
3737
3738
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_part_id, tvb, offset, 1, ENC_BIG_ENDIAN);
3739
0
    offset++;
3740
3741
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_part_state, tvb, offset, 1, ENC_BIG_ENDIAN);
3742
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_xoff_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3743
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_yoff_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3744
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_zoff_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3745
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_roll_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3746
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_pitch_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3747
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_yaw_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3748
0
    offset += 3;
3749
3750
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_x_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
3751
0
    offset += 4;
3752
3753
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_y_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
3754
0
    offset += 4;
3755
3756
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_z_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
3757
0
    offset += 4;
3758
3759
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_roll, tvb, offset, 4, ENC_BIG_ENDIAN);
3760
0
    offset += 4;
3761
3762
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_pitch, tvb, offset, 4, ENC_BIG_ENDIAN);
3763
0
    offset += 4;
3764
3765
0
    proto_tree_add_item(tree, hf_cigi2_articulated_parts_control_yaw, tvb, offset, 4, ENC_BIG_ENDIAN);
3766
0
    offset += 4;
3767
3768
0
    return offset;
3769
0
}
3770
3771
/* CIGI2 Rate Control */
3772
static int
3773
cigi2_add_rate_control(tvbuff_t *tvb, proto_tree *tree, int offset)
3774
0
{
3775
0
    proto_tree_add_item(tree, hf_cigi2_rate_control_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3776
0
    offset += 2;
3777
3778
0
    proto_tree_add_item(tree, hf_cigi2_rate_control_part_id, tvb, offset, 1, ENC_BIG_ENDIAN);
3779
0
    offset += 4;
3780
3781
0
    proto_tree_add_item(tree, hf_cigi2_rate_control_x_rate, tvb, offset, 4, ENC_BIG_ENDIAN);
3782
0
    offset += 4;
3783
3784
0
    proto_tree_add_item(tree, hf_cigi2_rate_control_y_rate, tvb, offset, 4, ENC_BIG_ENDIAN);
3785
0
    offset += 4;
3786
3787
0
    proto_tree_add_item(tree, hf_cigi2_rate_control_z_rate, tvb, offset, 4, ENC_BIG_ENDIAN);
3788
0
    offset += 4;
3789
3790
0
    proto_tree_add_item(tree, hf_cigi2_rate_control_roll_rate, tvb, offset, 4, ENC_BIG_ENDIAN);
3791
0
    offset += 4;
3792
3793
0
    proto_tree_add_item(tree, hf_cigi2_rate_control_pitch_rate, tvb, offset, 4, ENC_BIG_ENDIAN);
3794
0
    offset += 4;
3795
3796
0
    proto_tree_add_item(tree, hf_cigi2_rate_control_yaw_rate, tvb, offset, 4, ENC_BIG_ENDIAN);
3797
0
    offset += 4;
3798
3799
0
    return offset;
3800
0
}
3801
3802
/* CIGI2 Environment Control */
3803
static int
3804
cigi2_add_environment_control(tvbuff_t *tvb, proto_tree *tree, int offset)
3805
0
{
3806
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_hour, tvb, offset, 1, ENC_BIG_ENDIAN);
3807
0
    offset++;
3808
3809
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_minute, tvb, offset, 1, ENC_BIG_ENDIAN);
3810
0
    offset++;
3811
3812
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_ephemeris_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3813
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_humidity, tvb, offset, 1, ENC_BIG_ENDIAN);
3814
0
    offset++;
3815
3816
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_modtran_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3817
0
    offset += 3;
3818
3819
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_date, tvb, offset, 4, ENC_BIG_ENDIAN);
3820
0
    offset += 4;
3821
3822
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_air_temp, tvb, offset, 4, ENC_BIG_ENDIAN);
3823
0
    offset += 4;
3824
3825
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_global_visibility, tvb, offset, 4, ENC_BIG_ENDIAN);
3826
0
    offset += 4;
3827
3828
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_wind_speed, tvb, offset, 4, ENC_BIG_ENDIAN);
3829
0
    offset += 4;
3830
3831
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_wind_direction, tvb, offset, 4, ENC_BIG_ENDIAN);
3832
0
    offset += 4;
3833
3834
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_pressure, tvb, offset, 4, ENC_BIG_ENDIAN);
3835
0
    offset += 4;
3836
3837
0
    proto_tree_add_item(tree, hf_cigi2_environment_control_aerosol, tvb, offset, 4, ENC_BIG_ENDIAN);
3838
0
    offset += 4;
3839
3840
0
    return offset;
3841
0
}
3842
3843
/* CIGI2 Weather Control */
3844
static int
3845
cigi2_add_weather_control(tvbuff_t *tvb, proto_tree *tree, int offset)
3846
0
{
3847
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3848
0
    offset += 2;
3849
3850
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_weather_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3851
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_scud_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3852
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_random_winds, tvb, offset, 1, ENC_BIG_ENDIAN);
3853
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_severity, tvb, offset, 1, ENC_BIG_ENDIAN);
3854
0
    offset += 2;
3855
3856
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_phenomenon_type, tvb, offset, 2, ENC_BIG_ENDIAN);
3857
0
    offset += 2;
3858
3859
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_air_temp, tvb, offset, 4, ENC_BIG_ENDIAN);
3860
0
    offset += 4;
3861
3862
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_opacity, tvb, offset, 4, ENC_BIG_ENDIAN);
3863
0
    offset += 4;
3864
3865
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_scud_frequency, tvb, offset, 4, ENC_BIG_ENDIAN);
3866
0
    offset += 4;
3867
3868
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_coverage, tvb, offset, 4, ENC_BIG_ENDIAN);
3869
0
    offset += 4;
3870
3871
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_elevation, tvb, offset, 4, ENC_BIG_ENDIAN);
3872
0
    offset += 4;
3873
3874
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_thickness, tvb, offset, 4, ENC_BIG_ENDIAN);
3875
0
    offset += 4;
3876
3877
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_transition_band, tvb, offset, 4, ENC_BIG_ENDIAN);
3878
0
    offset += 4;
3879
3880
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_wind_speed, tvb, offset, 4, ENC_BIG_ENDIAN);
3881
0
    offset += 4;
3882
3883
0
    proto_tree_add_item(tree, hf_cigi2_weather_control_wind_direction, tvb, offset, 4, ENC_BIG_ENDIAN);
3884
0
    offset += 4;
3885
3886
0
    return offset;
3887
0
}
3888
3889
/* CIGI2 View Control */
3890
static int
3891
cigi2_add_view_control(tvbuff_t *tvb, proto_tree *tree, int offset)
3892
0
{
3893
0
    proto_tree_add_item(tree, hf_cigi2_view_control_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3894
0
    offset += 2;
3895
3896
0
    proto_tree_add_item(tree, hf_cigi2_view_control_view_id, tvb, offset, 1, ENC_BIG_ENDIAN);
3897
0
    proto_tree_add_item(tree, hf_cigi2_view_control_view_group, tvb, offset, 1, ENC_BIG_ENDIAN);
3898
0
    offset++;
3899
3900
0
    proto_tree_add_item(tree, hf_cigi2_view_control_xoff_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3901
0
    proto_tree_add_item(tree, hf_cigi2_view_control_yoff_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3902
0
    proto_tree_add_item(tree, hf_cigi2_view_control_zoff_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3903
0
    proto_tree_add_item(tree, hf_cigi2_view_control_roll_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3904
0
    proto_tree_add_item(tree, hf_cigi2_view_control_pitch_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3905
0
    proto_tree_add_item(tree, hf_cigi2_view_control_yaw_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3906
0
    offset += 3;
3907
3908
0
    proto_tree_add_item(tree, hf_cigi2_view_control_x_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
3909
0
    offset += 4;
3910
3911
0
    proto_tree_add_item(tree, hf_cigi2_view_control_y_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
3912
0
    offset += 4;
3913
3914
0
    proto_tree_add_item(tree, hf_cigi2_view_control_z_offset, tvb, offset, 4, ENC_BIG_ENDIAN);
3915
0
    offset += 4;
3916
3917
0
    proto_tree_add_item(tree, hf_cigi2_view_control_roll, tvb, offset, 4, ENC_BIG_ENDIAN);
3918
0
    offset += 4;
3919
3920
0
    proto_tree_add_item(tree, hf_cigi2_view_control_pitch, tvb, offset, 4, ENC_BIG_ENDIAN);
3921
0
    offset += 4;
3922
3923
0
    proto_tree_add_item(tree, hf_cigi2_view_control_yaw, tvb, offset, 4, ENC_BIG_ENDIAN);
3924
0
    offset += 4;
3925
3926
0
    return offset;
3927
0
}
3928
3929
/* CIGI2 Sensor Control */
3930
static int
3931
cigi2_add_sensor_control(tvbuff_t *tvb, proto_tree *tree, int offset)
3932
0
{
3933
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_view_id, tvb, offset, 1, ENC_BIG_ENDIAN);
3934
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_sensor_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3935
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_polarity, tvb, offset, 1, ENC_BIG_ENDIAN);
3936
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_line_dropout, tvb, offset, 1, ENC_BIG_ENDIAN);
3937
0
    offset++;
3938
3939
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_sensor_id, tvb, offset, 1, ENC_BIG_ENDIAN);
3940
0
    offset++;
3941
3942
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_track_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
3943
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_auto_gain, tvb, offset, 1, ENC_BIG_ENDIAN);
3944
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_track_polarity, tvb, offset, 1, ENC_BIG_ENDIAN);
3945
0
    offset += 4;
3946
3947
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_gain, tvb, offset, 4, ENC_BIG_ENDIAN);
3948
0
    offset += 4;
3949
3950
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_level, tvb, offset, 4, ENC_BIG_ENDIAN);
3951
0
    offset += 4;
3952
3953
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_ac_coupling, tvb, offset, 4, ENC_BIG_ENDIAN);
3954
0
    offset += 4;
3955
3956
0
    proto_tree_add_item(tree, hf_cigi2_sensor_control_noise, tvb, offset, 4, ENC_BIG_ENDIAN);
3957
0
    offset += 4;
3958
3959
0
    return offset;
3960
0
}
3961
3962
/* CIGI2 Trajectory Definition */
3963
static int
3964
cigi2_add_trajectory_definition(tvbuff_t *tvb, proto_tree *tree, int offset)
3965
0
{
3966
0
    proto_tree_add_item(tree, hf_cigi2_trajectory_definition_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3967
0
    offset += 2;
3968
3969
0
    proto_tree_add_item(tree, hf_cigi2_trajectory_definition_acceleration, tvb, offset, 4, ENC_BIG_ENDIAN);
3970
0
    offset += 4;
3971
3972
0
    proto_tree_add_item(tree, hf_cigi2_trajectory_definition_retardation, tvb, offset, 4, ENC_BIG_ENDIAN);
3973
0
    offset += 4;
3974
3975
0
    proto_tree_add_item(tree, hf_cigi2_trajectory_definition_terminal_velocity, tvb, offset, 4, ENC_BIG_ENDIAN);
3976
0
    offset += 4;
3977
3978
0
    return offset;
3979
0
}
3980
3981
/* CIGI2 Special Effect Definition */
3982
static int
3983
cigi2_add_special_effect_definition(tvbuff_t *tvb, proto_tree *tree, int offset)
3984
0
{
3985
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3986
0
    offset += 2;
3987
3988
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_seq_direction, tvb, offset, 1, ENC_BIG_ENDIAN);
3989
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_color_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
3990
0
    offset++;
3991
3992
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_red, tvb, offset, 1, ENC_BIG_ENDIAN);
3993
0
    offset++;
3994
3995
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_green, tvb, offset, 1, ENC_BIG_ENDIAN);
3996
0
    offset++;
3997
3998
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_blue, tvb, offset, 1, ENC_BIG_ENDIAN);
3999
0
    offset++;
4000
4001
0
    proto_tree_add_float(tree, hf_cigi2_special_effect_definition_x_scale, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4002
0
    offset += 2;
4003
4004
0
    proto_tree_add_float(tree, hf_cigi2_special_effect_definition_y_scale, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4005
0
    offset += 2;
4006
4007
0
    proto_tree_add_float(tree, hf_cigi2_special_effect_definition_z_scale, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4008
0
    offset += 2;
4009
4010
0
    proto_tree_add_float(tree, hf_cigi2_special_effect_definition_time_scale, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4011
0
    offset += 2;
4012
4013
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_spare, tvb, offset, 2, ENC_BIG_ENDIAN);
4014
0
    offset += 2;
4015
4016
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_effect_count, tvb, offset, 2, ENC_BIG_ENDIAN);
4017
0
    offset += 2;
4018
4019
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_separation, tvb, offset, 4, ENC_BIG_ENDIAN);
4020
0
    offset += 4;
4021
4022
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_burst_interval, tvb, offset, 4, ENC_BIG_ENDIAN);
4023
0
    offset += 4;
4024
4025
0
    proto_tree_add_item(tree, hf_cigi2_special_effect_definition_duration, tvb, offset, 4, ENC_BIG_ENDIAN);
4026
0
    offset += 4;
4027
4028
0
    return offset;
4029
0
}
4030
4031
/* CIGI2 View Definition */
4032
static int
4033
cigi2_add_view_definition(tvbuff_t *tvb, proto_tree *tree, int offset)
4034
0
{
4035
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_view_id, tvb, offset, 1, ENC_BIG_ENDIAN);
4036
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_view_group, tvb, offset, 1, ENC_BIG_ENDIAN);
4037
0
    offset++;
4038
4039
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_view_type, tvb, offset, 1, ENC_BIG_ENDIAN);
4040
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_pixel_rep, tvb, offset, 1, ENC_BIG_ENDIAN);
4041
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_mirror, tvb, offset, 1, ENC_BIG_ENDIAN);
4042
0
    offset++;
4043
4044
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_tracker_assign, tvb, offset, 1, ENC_BIG_ENDIAN);
4045
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_near_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
4046
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_far_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
4047
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_left_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
4048
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_right_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
4049
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_top_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
4050
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_bottom_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
4051
0
    offset += 4;
4052
4053
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_fov_near, tvb, offset, 4, ENC_BIG_ENDIAN);
4054
0
    offset += 4;
4055
4056
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_fov_far, tvb, offset, 4, ENC_BIG_ENDIAN);
4057
0
    offset += 4;
4058
4059
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_fov_left, tvb, offset, 4, ENC_BIG_ENDIAN);
4060
0
    offset += 4;
4061
4062
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_fov_right, tvb, offset, 4, ENC_BIG_ENDIAN);
4063
0
    offset += 4;
4064
4065
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_fov_top, tvb, offset, 4, ENC_BIG_ENDIAN);
4066
0
    offset += 4;
4067
4068
0
    proto_tree_add_item(tree, hf_cigi2_view_definition_fov_bottom, tvb, offset, 4, ENC_BIG_ENDIAN);
4069
0
    offset += 4;
4070
4071
0
    return offset;
4072
0
}
4073
4074
/* CIGI2 Collision Detection Segment Definition */
4075
static int
4076
cigi2_add_collision_detection_segment_definition(tvbuff_t *tvb, proto_tree *tree, int offset)
4077
0
{
4078
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_definition_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4079
0
    offset += 2;
4080
4081
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_definition_segment_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
4082
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_definition_segment_id, tvb, offset, 1, ENC_BIG_ENDIAN);
4083
0
    offset += 4;
4084
4085
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_definition_collision_mask, tvb, offset, 4, ENC_NA);
4086
0
    offset += 4;
4087
4088
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_segment_definition_x_start, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4089
0
    offset += 2;
4090
4091
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_segment_definition_y_start, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4092
0
    offset += 2;
4093
4094
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_segment_definition_z_start, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4095
0
    offset += 2;
4096
4097
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_segment_definition_x_end, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4098
0
    offset += 2;
4099
4100
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_segment_definition_y_end, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4101
0
    offset += 2;
4102
4103
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_segment_definition_z_end, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4104
0
    offset += 2;
4105
4106
0
    return offset;
4107
0
}
4108
4109
/* CIGI2 Collision Detection Volume Definition*/
4110
static int
4111
cigi2_add_collision_detection_volume_definition(tvbuff_t *tvb, proto_tree *tree, int offset)
4112
0
{
4113
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_volume_definition_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4114
0
    offset += 2;
4115
4116
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_volume_definition_volume_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
4117
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_volume_definition_volume_id, tvb, offset, 1, ENC_BIG_ENDIAN);
4118
0
    offset += 4;
4119
4120
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_volume_definition_x_offset, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4121
0
    offset += 2;
4122
4123
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_volume_definition_y_offset, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4124
0
    offset += 2;
4125
4126
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_volume_definition_z_offset, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4127
0
    offset += 2;
4128
4129
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_volume_definition_height, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4130
0
    offset += 2;
4131
4132
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_volume_definition_width, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4133
0
    offset += 2;
4134
4135
0
    proto_tree_add_float(tree, hf_cigi2_collision_detection_volume_definition_depth, tvb, offset, 2, cigi_get_fixed_point(tvb, offset, ENC_BIG_ENDIAN));
4136
0
    offset += 2;
4137
4138
0
    return offset;
4139
0
}
4140
4141
/* CIGI2 Height Above Terrain Request*/
4142
static int
4143
cigi2_add_height_above_terrain_request(tvbuff_t *tvb, proto_tree *tree, int offset)
4144
0
{
4145
0
    proto_tree_add_item(tree, hf_cigi2_height_above_terrain_request_hat_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4146
0
    offset += 6;
4147
4148
0
    proto_tree_add_item(tree, hf_cigi2_height_above_terrain_request_alt, tvb, offset, 8, ENC_BIG_ENDIAN);
4149
0
    offset += 8;
4150
4151
0
    proto_tree_add_item(tree, hf_cigi2_height_above_terrain_request_lat, tvb, offset, 8, ENC_BIG_ENDIAN);
4152
0
    offset += 8;
4153
4154
0
    proto_tree_add_item(tree, hf_cigi2_height_above_terrain_request_lon, tvb, offset, 8, ENC_BIG_ENDIAN);
4155
0
    offset += 8;
4156
4157
0
    return offset;
4158
0
}
4159
4160
/* CIGI2 Line of Sight Occult Request */
4161
static int
4162
cigi2_add_line_of_sight_occult_request(tvbuff_t *tvb, proto_tree *tree, int offset)
4163
0
{
4164
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_occult_request_los_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4165
0
    offset += 6;
4166
4167
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_occult_request_source_alt, tvb, offset, 8, ENC_BIG_ENDIAN);
4168
0
    offset += 8;
4169
4170
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_occult_request_source_lat, tvb, offset, 8, ENC_BIG_ENDIAN);
4171
0
    offset += 8;
4172
4173
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_occult_request_source_lon, tvb, offset, 8, ENC_BIG_ENDIAN);
4174
0
    offset += 8;
4175
4176
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_occult_request_dest_alt, tvb, offset, 8, ENC_BIG_ENDIAN);
4177
0
    offset += 8;
4178
4179
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_occult_request_dest_lat, tvb, offset, 8, ENC_BIG_ENDIAN);
4180
0
    offset += 8;
4181
4182
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_occult_request_dest_lon, tvb, offset, 8, ENC_BIG_ENDIAN);
4183
0
    offset += 8;
4184
4185
0
    return offset;
4186
0
}
4187
4188
/* CIGI2 Line of Sight Range Request */
4189
static int
4190
cigi2_add_line_of_sight_range_request(tvbuff_t *tvb, proto_tree *tree, int offset)
4191
0
{
4192
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_range_request_los_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4193
0
    offset += 2;
4194
4195
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_range_request_azimuth, tvb, offset, 4, ENC_BIG_ENDIAN);
4196
0
    offset += 4;
4197
4198
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_range_request_elevation, tvb, offset, 4, ENC_BIG_ENDIAN);
4199
0
    offset += 8;
4200
4201
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_range_request_min_range, tvb, offset, 4, ENC_BIG_ENDIAN);
4202
0
    offset += 4;
4203
4204
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_range_request_max_range, tvb, offset, 4, ENC_BIG_ENDIAN);
4205
0
    offset += 4;
4206
4207
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_range_request_source_alt, tvb, offset, 8, ENC_BIG_ENDIAN);
4208
0
    offset += 8;
4209
4210
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_range_request_source_lat, tvb, offset, 8, ENC_BIG_ENDIAN);
4211
0
    offset += 8;
4212
4213
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_range_request_source_lon, tvb, offset, 8, ENC_BIG_ENDIAN);
4214
0
    offset += 8;
4215
4216
0
    return offset;
4217
0
}
4218
4219
/* CIGI2 Height of Terrain Request */
4220
static int
4221
cigi2_add_height_of_terrain_request(tvbuff_t *tvb, proto_tree *tree, int offset)
4222
0
{
4223
0
    proto_tree_add_item(tree, hf_cigi2_height_of_terrain_request_hot_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4224
0
    offset += 6;
4225
4226
0
    proto_tree_add_item(tree, hf_cigi2_height_of_terrain_request_lat, tvb, offset, 8, ENC_BIG_ENDIAN);
4227
0
    offset += 8;
4228
4229
0
    proto_tree_add_item(tree, hf_cigi2_height_of_terrain_request_lon, tvb, offset, 8, ENC_BIG_ENDIAN);
4230
0
    offset += 8;
4231
4232
0
    return offset;
4233
0
}
4234
4235
/* CIGI2 Start of Frame */
4236
static int
4237
cigi2_add_start_of_frame(tvbuff_t *tvb, proto_tree *tree, int offset)
4238
0
{
4239
0
    proto_tree_add_item(tree, hf_cigi_version, tvb, offset, 1, ENC_BIG_ENDIAN);
4240
0
    offset++;
4241
4242
0
    proto_tree_add_item(tree, hf_cigi2_start_of_frame_db_number, tvb, offset, 1, ENC_BIG_ENDIAN);
4243
0
    offset++;
4244
4245
0
    proto_tree_add_item(tree, hf_cigi2_start_of_frame_ig_status_code, tvb, offset, 1, ENC_BIG_ENDIAN);
4246
0
    offset++;
4247
4248
0
    proto_tree_add_item(tree, hf_cigi2_start_of_frame_ig_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
4249
0
    offset += 3;
4250
4251
0
    proto_tree_add_item(tree, hf_cigi2_start_of_frame_frame_ctr, tvb, offset, 4, ENC_BIG_ENDIAN);
4252
0
    offset += 4;
4253
4254
0
    proto_tree_add_item(tree, hf_cigi2_start_of_frame_time_tag, tvb, offset, 4, ENC_BIG_ENDIAN);
4255
0
    offset += 4;
4256
4257
0
    return offset;
4258
0
}
4259
4260
/* CIGI2 Height Above Terrain Response */
4261
static int
4262
cigi2_add_height_above_terrain_response(tvbuff_t *tvb, proto_tree *tree, int offset)
4263
0
{
4264
0
    proto_tree_add_item(tree, hf_cigi2_height_above_terrain_response_hat_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4265
0
    offset += 2;
4266
4267
0
    proto_tree_add_item(tree, hf_cigi2_height_above_terrain_response_valid, tvb, offset, 1, ENC_BIG_ENDIAN);
4268
0
    offset += 8;
4269
4270
0
    proto_tree_add_item(tree, hf_cigi2_height_above_terrain_response_material_type, tvb, offset, 4, ENC_BIG_ENDIAN);
4271
0
    offset += 4;
4272
4273
0
    proto_tree_add_item(tree, hf_cigi2_height_above_terrain_response_alt, tvb, offset, 8, ENC_BIG_ENDIAN);
4274
0
    offset += 8;
4275
4276
0
    return offset;
4277
0
}
4278
4279
/* CIGI2 Line of Sight Response */
4280
static int
4281
cigi2_add_line_of_sight_response(tvbuff_t *tvb, proto_tree *tree, int offset)
4282
0
{
4283
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_response_los_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4284
0
    offset += 2;
4285
4286
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_response_valid, tvb, offset, 1, ENC_BIG_ENDIAN);
4287
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_response_occult_response, tvb, offset, 1, ENC_BIG_ENDIAN);
4288
0
    offset += 4;
4289
4290
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_response_material_type, tvb, offset, 4, ENC_BIG_ENDIAN);
4291
0
    offset += 4;
4292
4293
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_response_range, tvb, offset, 4, ENC_BIG_ENDIAN);
4294
0
    offset += 4;
4295
4296
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_response_alt, tvb, offset, 8, ENC_BIG_ENDIAN);
4297
0
    offset += 8;
4298
4299
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_response_lat, tvb, offset, 8, ENC_BIG_ENDIAN);
4300
0
    offset += 8;
4301
4302
0
    proto_tree_add_item(tree, hf_cigi2_line_of_sight_response_lon, tvb, offset, 8, ENC_BIG_ENDIAN);
4303
0
    offset += 8;
4304
4305
0
    return offset;
4306
0
}
4307
4308
/* CIGI2 Collision Detection Segment Response */
4309
static int
4310
cigi2_add_collision_detection_segment_response(tvbuff_t *tvb, proto_tree *tree, int offset)
4311
0
{
4312
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_response_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4313
0
    offset += 2;
4314
4315
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_response_segment_id, tvb, offset, 1, ENC_BIG_ENDIAN);
4316
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_response_contact, tvb, offset, 1, ENC_BIG_ENDIAN);
4317
0
    offset += 2;
4318
4319
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_response_contacted_entity, tvb, offset, 2, ENC_BIG_ENDIAN);
4320
0
    offset += 2;
4321
4322
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_response_material_type, tvb, offset, 4, ENC_BIG_ENDIAN);
4323
0
    offset += 4;
4324
4325
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_response_collision_x, tvb, offset, 4, ENC_BIG_ENDIAN);
4326
0
    offset += 4;
4327
4328
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_response_collision_y, tvb, offset, 4, ENC_BIG_ENDIAN);
4329
0
    offset += 4;
4330
4331
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_segment_response_collision_z, tvb, offset, 4, ENC_BIG_ENDIAN);
4332
0
    offset += 4;
4333
4334
0
    return offset;
4335
0
}
4336
4337
/* CIGI2 Sensor Response */
4338
static int
4339
cigi2_add_sensor_response(tvbuff_t *tvb, proto_tree *tree, int offset)
4340
0
{
4341
0
    proto_tree_add_item(tree, hf_cigi2_sensor_response_view_id, tvb, offset, 1, ENC_BIG_ENDIAN);
4342
0
    proto_tree_add_item(tree, hf_cigi2_sensor_response_status, tvb, offset, 1, ENC_BIG_ENDIAN);
4343
0
    offset++;
4344
4345
0
    proto_tree_add_item(tree, hf_cigi2_sensor_response_sensor_id, tvb, offset, 1, ENC_BIG_ENDIAN);
4346
0
    offset++;
4347
4348
0
    proto_tree_add_item(tree, hf_cigi2_sensor_response_x_offset, tvb, offset, 2, ENC_BIG_ENDIAN);
4349
0
    offset += 2;
4350
4351
0
    proto_tree_add_item(tree, hf_cigi2_sensor_response_y_offset, tvb, offset, 2, ENC_BIG_ENDIAN);
4352
0
    offset += 2;
4353
4354
0
    proto_tree_add_item(tree, hf_cigi2_sensor_response_x_size, tvb, offset, 2, ENC_BIG_ENDIAN);
4355
0
    offset += 2;
4356
4357
0
    proto_tree_add_item(tree, hf_cigi2_sensor_response_y_size, tvb, offset, 2, ENC_BIG_ENDIAN);
4358
0
    offset += 2;
4359
4360
0
    return offset;
4361
0
}
4362
4363
/* CIGI2 Height of Terrain Response */
4364
static int
4365
cigi2_add_height_of_terrain_response(tvbuff_t *tvb, proto_tree *tree, int offset)
4366
0
{
4367
0
    proto_tree_add_item(tree, hf_cigi2_height_of_terrain_response_hot_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4368
0
    offset += 2;
4369
4370
0
    proto_tree_add_item(tree, hf_cigi2_height_of_terrain_response_valid, tvb, offset, 1, ENC_BIG_ENDIAN);
4371
0
    offset += 8;
4372
4373
0
    proto_tree_add_item(tree, hf_cigi2_height_of_terrain_response_material_type, tvb, offset, 4, ENC_BIG_ENDIAN);
4374
0
    offset += 4;
4375
4376
0
    proto_tree_add_item(tree, hf_cigi2_height_of_terrain_response_alt, tvb, offset, 8, ENC_BIG_ENDIAN);
4377
0
    offset += 8;
4378
4379
0
    return offset;
4380
0
}
4381
4382
/* CIGI2 Collision Detection Volume Response */
4383
static int
4384
cigi2_add_collision_detection_volume_response(tvbuff_t *tvb, proto_tree *tree, int offset)
4385
0
{
4386
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_volume_response_entity_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4387
0
    offset += 2;
4388
4389
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_volume_response_volume_id, tvb, offset, 1, ENC_BIG_ENDIAN);
4390
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_volume_response_contact, tvb, offset, 1, ENC_BIG_ENDIAN);
4391
0
    offset += 2;
4392
4393
0
    proto_tree_add_item(tree, hf_cigi2_collision_detection_volume_response_contact_entity, tvb, offset, 2, ENC_BIG_ENDIAN);
4394
0
    offset += 2;
4395
4396
0
    return offset;
4397
0
}
4398
4399
/* CIGI2 Image Generator Message */
4400
static int
4401
cigi2_add_image_generator_message(tvbuff_t *tvb, proto_tree *tree, int offset)
4402
0
{
4403
0
    uint8_t packet_size = 0;
4404
4405
0
    packet_size = tvb_get_uint8(tvb, offset-1);
4406
4407
    /* An image generator packet cannot be less than 4 bytes ( because every cigi packet
4408
     * has a packet id (1 byte) and a packet size (1 byte) ). */
4409
0
    if ( packet_size < 4 )
4410
0
        return -1;
4411
4412
0
    proto_tree_add_item(tree, hf_cigi2_image_generator_message_id, tvb, offset, 2, ENC_BIG_ENDIAN);
4413
0
    offset += 2;
4414
4415
0
    proto_tree_add_item(tree, hf_cigi2_image_generator_message_message, tvb, offset, packet_size-4, ENC_ASCII);
4416
0
    offset += packet_size-4;
4417
4418
0
    return offset;
4419
0
}
4420
4421
/* CIGI3 IG Control */
4422
static int
4423
cigi3_add_ig_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
4424
0
{
4425
0
    unsigned offset = 0;
4426
4427
0
    proto_tree_add_item(tree, hf_cigi_version, tvb, offset, 1, cigi_byte_order);
4428
0
    offset++;
4429
4430
0
    proto_tree_add_item(tree, hf_cigi3_ig_control_db_number, tvb, offset, 1, cigi_byte_order);
4431
0
    offset++;
4432
4433
0
    proto_tree_add_item(tree, hf_cigi3_ig_control_ig_mode, tvb, offset, 1, cigi_byte_order);
4434
0
    proto_tree_add_item(tree, hf_cigi3_ig_control_timestamp_valid, tvb, offset, 1, cigi_byte_order);
4435
0
    if (cigi_minor_version >= 3) {
4436
0
        proto_tree_add_item(tree, hf_cigi3_3_ig_control_extrapolation_enable, tvb, offset, 1, cigi_byte_order);
4437
0
    }
4438
0
    if (cigi_minor_version >= 2) {
4439
0
        proto_tree_add_item(tree, hf_cigi3_2_ig_control_minor_version, tvb, offset, 1, cigi_byte_order);
4440
0
    }
4441
0
    offset += 2;
4442
4443
    /* Get the Byte Swap in Big-Endian so that we can display whether the value
4444
     * is big-endian or little-endian to the user */
4445
0
    proto_tree_add_item(tree, hf_cigi3_byte_swap, tvb, offset, 2, ENC_BIG_ENDIAN);
4446
0
    offset += 2;
4447
4448
0
    if (cigi_minor_version >= 2) {
4449
0
        proto_tree_add_item(tree, hf_cigi3_2_ig_control_host_frame_number, tvb, offset, 4, cigi_byte_order);
4450
0
    }
4451
0
    else {
4452
0
        proto_tree_add_item(tree, hf_cigi3_ig_control_frame_ctr, tvb, offset, 4, cigi_byte_order);
4453
0
    }
4454
0
    offset += 4;
4455
4456
0
    proto_tree_add_item(tree, hf_cigi3_ig_control_timestamp, tvb, offset, 4, cigi_byte_order);
4457
0
    offset += 4;
4458
4459
0
    if (cigi_minor_version >= 2) {
4460
0
        proto_tree_add_item(tree, hf_cigi3_2_ig_control_last_ig_frame_number, tvb, offset, 4, cigi_byte_order);
4461
0
        offset += 8;
4462
0
    }
4463
4464
0
    return offset;
4465
0
}
4466
4467
/* CIGI3 Entity Control */
4468
static int
4469
cigi3_add_entity_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
4470
0
{
4471
0
    unsigned offset = 0;
4472
4473
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_entity_id, tvb, offset, 2, cigi_byte_order);
4474
0
    offset += 2;
4475
4476
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_entity_state, tvb, offset, 1, cigi_byte_order);
4477
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_attach_state, tvb, offset, 1, cigi_byte_order);
4478
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_collision_detection_request, tvb, offset, 1, cigi_byte_order);
4479
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_inherit_alpha, tvb, offset, 1, cigi_byte_order);
4480
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_ground_ocean_clamp, tvb, offset, 1, cigi_byte_order);
4481
0
    offset++;
4482
4483
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_animation_direction, tvb, offset, 1, cigi_byte_order);
4484
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_animation_loop_mode, tvb, offset, 1, cigi_byte_order);
4485
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_animation_state, tvb, offset, 1, cigi_byte_order);
4486
0
    if (cigi_minor_version >= 3) {
4487
0
        proto_tree_add_item(tree, hf_cigi3_3_entity_control_extrapolation_enable, tvb, offset, 1, cigi_byte_order);
4488
0
    }
4489
0
    offset++;
4490
4491
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_alpha, tvb, offset, 1, cigi_byte_order);
4492
0
    offset += 2;
4493
4494
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_entity_type, tvb, offset, 2, cigi_byte_order);
4495
0
    offset += 2;
4496
4497
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_parent_id, tvb, offset, 2, cigi_byte_order);
4498
0
    offset += 2;
4499
4500
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_roll, tvb, offset, 4, cigi_byte_order);
4501
0
    offset += 4;
4502
4503
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_pitch, tvb, offset, 4, cigi_byte_order);
4504
0
    offset += 4;
4505
4506
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_yaw, tvb, offset, 4, cigi_byte_order);
4507
0
    offset += 4;
4508
4509
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_lat_xoff, tvb, offset, 8, cigi_byte_order);
4510
0
    offset += 8;
4511
4512
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_lon_yoff, tvb, offset, 8, cigi_byte_order);
4513
0
    offset += 8;
4514
4515
0
    proto_tree_add_item(tree, hf_cigi3_entity_control_alt_zoff, tvb, offset, 8, cigi_byte_order);
4516
0
    offset += 8;
4517
4518
0
    return offset;
4519
0
}
4520
4521
/* CIGI4 Entity Control */
4522
static int
4523
cigi4_add_entity_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
4524
0
{
4525
0
    unsigned offset = 0;
4526
4527
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_entity_state, tvb, offset, 1, cigi_byte_order);
4528
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_collision_reporting_enable, tvb, offset, 1, cigi_byte_order);
4529
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_inherit_alpha, tvb, offset, 1, cigi_byte_order);
4530
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_smooting_enable, tvb, offset, 1, cigi_byte_order);
4531
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_extended_entity_type, tvb, offset, 1, cigi_byte_order);
4532
0
    offset++;
4533
4534
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_alpha, tvb, offset, 1, cigi_byte_order);
4535
0
    offset++;
4536
4537
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_entity_id, tvb, offset, 2, cigi_byte_order);
4538
0
    offset += 2;
4539
4540
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_entity_kind, tvb, offset, 1, cigi_byte_order);
4541
0
    offset++;
4542
4543
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_entity_domain, tvb, offset, 1, cigi_byte_order);
4544
0
    offset++;
4545
4546
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_entity_country, tvb, offset, 2, cigi_byte_order);
4547
0
    offset += 2;
4548
4549
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_entity_category, tvb, offset, 1, cigi_byte_order);
4550
0
    offset++;
4551
4552
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_entity_subcategory, tvb, offset, 1, cigi_byte_order);
4553
0
    offset++;
4554
4555
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_entity_specific, tvb, offset, 1, cigi_byte_order);
4556
0
    offset++;
4557
4558
0
    proto_tree_add_item(tree, hf_cigi4_entity_control_entity_extra, tvb, offset, 1, cigi_byte_order);
4559
0
    offset++;
4560
4561
0
    return offset;
4562
0
}
4563
4564
/* CIGI4 Animation Control */
4565
static int
4566
cigi4_add_animation_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
4567
0
{
4568
0
    unsigned offset = 0;
4569
4570
0
    proto_tree_add_item(tree, hf_cigi4_animation_control_state, tvb, offset, 1, cigi_byte_order);
4571
0
    proto_tree_add_item(tree, hf_cigi4_animation_control_frame_position_reset, tvb, offset, 1, cigi_byte_order);
4572
0
    proto_tree_add_item(tree, hf_cigi4_animation_control_loop_mode, tvb, offset, 1, cigi_byte_order);
4573
0
    proto_tree_add_item(tree, hf_cigi4_animation_control_inherit_alpha, tvb, offset, 1, cigi_byte_order);
4574
0
    offset++;
4575
4576
0
    proto_tree_add_item(tree, hf_cigi4_animation_control_alpha, tvb, offset, 1, cigi_byte_order);
4577
0
    offset++;
4578
4579
0
    proto_tree_add_item(tree, hf_cigi4_animation_control_entity_id, tvb, offset, 2, cigi_byte_order);
4580
0
    offset += 2;
4581
4582
0
    proto_tree_add_item(tree, hf_cigi4_animation_control_animation_id, tvb, offset, 2, cigi_byte_order);
4583
0
    offset += 4;
4584
4585
0
    proto_tree_add_item(tree, hf_cigi4_animation_control_animation_speed, tvb, offset, 4, cigi_byte_order);
4586
0
    offset += 4;
4587
4588
0
    return offset;
4589
0
}
4590
4591
4592
/* CIGI3 Conformal Clamped Entity Control */
4593
static int
4594
cigi3_add_conformal_clamped_entity_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
4595
0
{
4596
0
    unsigned offset = 0;
4597
4598
0
    proto_tree_add_item(tree, hf_cigi3_conformal_clamped_entity_control_entity_id, tvb, offset, 2, cigi_byte_order);
4599
0
    offset += 2;
4600
4601
0
    proto_tree_add_item(tree, hf_cigi3_conformal_clamped_entity_control_yaw, tvb, offset, 4, cigi_byte_order);
4602
0
    offset += 4;
4603
4604
0
    proto_tree_add_item(tree, hf_cigi3_conformal_clamped_entity_control_lat, tvb, offset, 8, cigi_byte_order);
4605
0
    offset += 8;
4606
4607
0
    proto_tree_add_item(tree, hf_cigi3_conformal_clamped_entity_control_lon, tvb, offset, 8, cigi_byte_order);
4608
0
    offset += 8;
4609
4610
0
    return offset;
4611
0
}
4612
4613
/* CIGI3 Component Control */
4614
static int
4615
cigi3_add_component_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
4616
0
{
4617
0
    unsigned offset = 0;
4618
4619
0
    proto_tree_add_item(tree, hf_cigi3_component_control_component_id, tvb, offset, 2, cigi_byte_order);
4620
0
    offset += 2;
4621
4622
0
    proto_tree_add_item(tree, hf_cigi3_component_control_instance_id, tvb, offset, 2, cigi_byte_order);
4623
0
    offset += 2;
4624
4625
0
    if (cigi_minor_version >= 3) {
4626
0
        proto_tree_add_item(tree, hf_cigi3_3_component_control_component_class, tvb, offset, 1, cigi_byte_order);
4627
0
    } else {
4628
0
        proto_tree_add_item(tree, hf_cigi3_component_control_component_class, tvb, offset, 1, cigi_byte_order);
4629
0
    }
4630
0
    offset++;
4631
4632
0
    proto_tree_add_item(tree, hf_cigi3_component_control_component_state, tvb, offset, 1, cigi_byte_order);
4633
0
    offset++;
4634
4635
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_1, tvb, offset, 4, cigi_byte_order);
4636
0
    offset += 4;
4637
4638
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_2, tvb, offset, 4, cigi_byte_order);
4639
0
    offset += 4;
4640
4641
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_3, tvb, offset, 4, cigi_byte_order);
4642
0
    offset += 4;
4643
4644
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_4, tvb, offset, 4, cigi_byte_order);
4645
0
    offset += 4;
4646
4647
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_5, tvb, offset, 4, cigi_byte_order);
4648
0
    offset += 4;
4649
4650
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_6, tvb, offset, 4, cigi_byte_order);
4651
0
    offset += 4;
4652
4653
0
    return offset;
4654
0
}
4655
4656
/* CIGI3 Short Component Control */
4657
static int
4658
cigi3_add_short_component_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
4659
0
{
4660
0
    unsigned offset = 0;
4661
4662
0
    proto_tree_add_item(tree, hf_cigi3_short_component_control_component_id, tvb, offset, 2, cigi_byte_order);
4663
0
    offset += 2;
4664
4665
0
    proto_tree_add_item(tree, hf_cigi3_short_component_control_instance_id, tvb, offset, 2, cigi_byte_order);
4666
0
    offset += 2;
4667
4668
0
    if (cigi_minor_version >= 3) {
4669
0
        proto_tree_add_item(tree, hf_cigi3_3_short_component_control_component_class, tvb, offset, 1, cigi_byte_order);
4670
0
    } else {
4671
0
        proto_tree_add_item(tree, hf_cigi3_short_component_control_component_class, tvb, offset, 1, cigi_byte_order);
4672
0
    }
4673
0
    offset++;
4674
4675
0
    proto_tree_add_item(tree, hf_cigi3_short_component_control_component_state, tvb, offset, 1, cigi_byte_order);
4676
0
    offset++;
4677
4678
0
    proto_tree_add_item(tree, hf_cigi3_short_component_control_data_1, tvb, offset, 4, cigi_byte_order);
4679
0
    offset += 4;
4680
4681
0
    proto_tree_add_item(tree, hf_cigi3_short_component_control_data_2, tvb, offset, 4, cigi_byte_order);
4682
0
    offset += 4;
4683
4684
0
    return offset;
4685
0
}
4686
4687
/* CIGI4 Short Component Control */
4688
static int
4689
cigi4_add_short_component_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
4690
0
{
4691
0
    unsigned offset = 0;
4692
4693
0
    proto_tree_add_item(tree, hf_cigi3_short_component_control_component_id, tvb, offset, 2, cigi_byte_order);
4694
0
    offset += 2;
4695
4696
0
    proto_tree_add_item(tree, hf_cigi3_3_short_component_control_component_class, tvb, offset, 1, cigi_byte_order);
4697
0
    offset++;
4698
4699
0
    proto_tree_add_item(tree, hf_cigi3_short_component_control_component_state, tvb, offset, 1, cigi_byte_order);
4700
0
    offset++;
4701
4702
0
    proto_tree_add_item(tree, hf_cigi3_short_component_control_instance_id, tvb, offset, 2, cigi_byte_order);
4703
0
    offset += 2;
4704
4705
    //reserved
4706
0
    offset += 6;
4707
4708
0
    proto_tree_add_item(tree, hf_cigi3_short_component_control_data_1, tvb, offset, 4, cigi_byte_order);
4709
0
    offset += 4;
4710
4711
0
    proto_tree_add_item(tree, hf_cigi3_short_component_control_data_2, tvb, offset, 4, cigi_byte_order);
4712
0
    offset += 4;
4713
4714
0
    return offset;
4715
0
}
4716
4717
4718
/* CIGI3 Articulated Part Control */
4719
static int
4720
cigi3_add_articulated_part_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
4721
0
{
4722
0
    unsigned offset = 0;
4723
4724
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_entity_id, tvb, offset, 2, cigi_byte_order);
4725
0
    offset += 2;
4726
4727
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_part_id, tvb, offset, 1, cigi_byte_order);
4728
0
    offset++;
4729
4730
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_part_enable, tvb, offset, 1, cigi_byte_order);
4731
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_xoff_enable, tvb, offset, 1, cigi_byte_order);
4732
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_yoff_enable, tvb, offset, 1, cigi_byte_order);
4733
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_zoff_enable, tvb, offset, 1, cigi_byte_order);
4734
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_roll_enable, tvb, offset, 1, cigi_byte_order);
4735
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_pitch_enable, tvb, offset, 1, cigi_byte_order);
4736
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_yaw_enable, tvb, offset, 1, cigi_byte_order);
4737
0
    offset += 3;
4738
4739
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_xoff, tvb, offset, 4, cigi_byte_order);
4740
0
    offset += 4;
4741
4742
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_yoff, tvb, offset, 4, cigi_byte_order);
4743
0
    offset += 4;
4744
4745
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_zoff, tvb, offset, 4, cigi_byte_order);
4746
0
    offset += 4;
4747
4748
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_roll, tvb, offset, 4, cigi_byte_order);
4749
0
    offset += 4;
4750
4751
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_pitch, tvb, offset, 4, cigi_byte_order);
4752
0
    offset += 4;
4753
4754
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_yaw, tvb, offset, 4, cigi_byte_order);
4755
0
    offset += 4;
4756
4757
0
    return offset;
4758
0
}
4759
4760
/* CIGI4 Articulated Part Control */
4761
static int
4762
cigi4_add_articulated_part_control(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree* tree, void* data _U_)
4763
0
{
4764
0
    unsigned offset = 0;
4765
4766
0
    proto_tree* field_tree;
4767
0
    proto_item* tf;
4768
4769
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_entity_id, tvb, offset, 2, cigi_byte_order);
4770
0
    offset += 2;
4771
4772
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_part_id, tvb, offset, 1, cigi_byte_order);
4773
0
    offset++;
4774
4775
    //enabled Flags
4776
0
    tf = proto_tree_add_item(tree, hf_cigi4_articulated_part_control_part_enable_flags, tvb, offset, 1, cigi_byte_order);
4777
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_articulated_part_control_part_enable_flags);
4778
4779
0
    proto_tree_add_item(field_tree, hf_cigi3_articulated_part_control_part_enable, tvb, offset, 1, cigi_byte_order);
4780
0
    proto_tree_add_item(field_tree, hf_cigi3_articulated_part_control_xoff_enable, tvb, offset, 1, cigi_byte_order);
4781
0
    proto_tree_add_item(field_tree, hf_cigi3_articulated_part_control_yoff_enable, tvb, offset, 1, cigi_byte_order);
4782
0
    proto_tree_add_item(field_tree, hf_cigi3_articulated_part_control_zoff_enable, tvb, offset, 1, cigi_byte_order);
4783
0
    proto_tree_add_item(field_tree, hf_cigi3_articulated_part_control_roll_enable, tvb, offset, 1, cigi_byte_order);
4784
0
    proto_tree_add_item(field_tree, hf_cigi3_articulated_part_control_pitch_enable, tvb, offset, 1, cigi_byte_order);
4785
0
    proto_tree_add_item(field_tree, hf_cigi3_articulated_part_control_yaw_enable, tvb, offset, 1, cigi_byte_order);
4786
0
    offset++;
4787
4788
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_xoff, tvb, offset, 4, cigi_byte_order);
4789
0
    offset += 4;
4790
4791
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_yoff, tvb, offset, 4, cigi_byte_order);
4792
0
    offset += 4;
4793
4794
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_zoff, tvb, offset, 4, cigi_byte_order);
4795
0
    offset += 4;
4796
4797
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_roll, tvb, offset, 4, cigi_byte_order);
4798
0
    offset += 4;
4799
4800
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_pitch, tvb, offset, 4, cigi_byte_order);
4801
0
    offset += 4;
4802
4803
0
    proto_tree_add_item(tree, hf_cigi3_articulated_part_control_yaw, tvb, offset, 4, cigi_byte_order);
4804
0
    offset += 4;
4805
4806
0
    return offset;
4807
0
}
4808
4809
4810
/* CIGI3 Short Articulated Part Control */
4811
static int
4812
cigi3_add_short_articulated_part_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
4813
0
{
4814
0
    unsigned offset = 0;
4815
4816
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_entity_id, tvb, offset, 2, cigi_byte_order);
4817
0
    offset += 2;
4818
4819
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_part_id_1, tvb, offset, 1, cigi_byte_order);
4820
0
    offset++;
4821
4822
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_part_id_2, tvb, offset, 1, cigi_byte_order);
4823
0
    offset++;
4824
4825
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_dof_select_1, tvb, offset, 1, cigi_byte_order);
4826
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_dof_select_2, tvb, offset, 1, cigi_byte_order);
4827
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_part_enable_1, tvb, offset, 1, cigi_byte_order);
4828
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_part_enable_2, tvb, offset, 1, cigi_byte_order);
4829
0
    offset += 2;
4830
4831
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_dof_1, tvb, offset, 4, cigi_byte_order);
4832
0
    offset += 4;
4833
4834
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_dof_2, tvb, offset, 4, cigi_byte_order);
4835
0
    offset += 4;
4836
4837
0
    return offset;
4838
0
}
4839
4840
/* CIGI4 Short Articulated Part Control */
4841
static int
4842
cigi4_add_short_articulated_part_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
4843
0
{
4844
0
    unsigned offset = 0;
4845
4846
0
    proto_tree* field_tree;
4847
0
    proto_item* tf;
4848
4849
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_entity_id, tvb, offset, 2, cigi_byte_order);
4850
0
    offset += 2;
4851
4852
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_part_id_1, tvb, offset, 1, cigi_byte_order);
4853
0
    offset++;
4854
4855
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_part_id_2, tvb, offset, 1, cigi_byte_order);
4856
0
    offset++;
4857
4858
    //enabled Flags
4859
0
    tf = proto_tree_add_item(tree, hf_cigi4_short_articulated_part_control_part_enable_flags, tvb, offset, 1, cigi_byte_order);
4860
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_short_articulated_part_control_part_enable_flags);
4861
4862
0
    proto_tree_add_item(field_tree, hf_cigi3_short_articulated_part_control_dof_select_1, tvb, offset, 1, cigi_byte_order);
4863
0
    proto_tree_add_item(field_tree, hf_cigi3_short_articulated_part_control_dof_select_2, tvb, offset, 1, cigi_byte_order);
4864
0
    proto_tree_add_item(field_tree, hf_cigi3_short_articulated_part_control_part_enable_1, tvb, offset, 1, cigi_byte_order);
4865
0
    proto_tree_add_item(field_tree, hf_cigi3_short_articulated_part_control_part_enable_2, tvb, offset, 1, cigi_byte_order);
4866
0
    offset++;
4867
4868
    //reserved
4869
0
    offset += 3;
4870
4871
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_dof_1, tvb, offset, 4, cigi_byte_order);
4872
0
    offset += 4;
4873
4874
0
    proto_tree_add_item(tree, hf_cigi3_short_articulated_part_control_dof_2, tvb, offset, 4, cigi_byte_order);
4875
0
    offset += 8;
4876
4877
0
    return offset;
4878
0
}
4879
4880
4881
/* CIGI3 Rate Control */
4882
static int
4883
cigi3_add_rate_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
4884
0
{
4885
0
    unsigned offset = 0;
4886
4887
0
    proto_tree_add_item(tree, hf_cigi3_rate_control_entity_id, tvb, offset, 2, cigi_byte_order);
4888
0
    offset += 2;
4889
4890
0
    proto_tree_add_item(tree, hf_cigi3_rate_control_part_id, tvb, offset, 1, cigi_byte_order);
4891
0
    offset++;
4892
4893
0
    proto_tree_add_item(tree, hf_cigi3_rate_control_apply_to_part, tvb, offset, 1, cigi_byte_order);
4894
0
    if (cigi_minor_version >= 2) {
4895
0
        proto_tree_add_item(tree, hf_cigi3_2_rate_control_coordinate_system, tvb, offset, 1, cigi_byte_order);
4896
0
    }
4897
0
    offset += 3;
4898
4899
0
    proto_tree_add_item(tree, hf_cigi3_rate_control_x_rate, tvb, offset, 4, cigi_byte_order);
4900
0
    offset += 4;
4901
4902
0
    proto_tree_add_item(tree, hf_cigi3_rate_control_y_rate, tvb, offset, 4, cigi_byte_order);
4903
0
    offset += 4;
4904
4905
0
    proto_tree_add_item(tree, hf_cigi3_rate_control_z_rate, tvb, offset, 4, cigi_byte_order);
4906
0
    offset += 4;
4907
4908
0
    proto_tree_add_item(tree, hf_cigi3_rate_control_roll_rate, tvb, offset, 4, cigi_byte_order);
4909
0
    offset += 4;
4910
4911
0
    proto_tree_add_item(tree, hf_cigi3_rate_control_pitch_rate, tvb, offset, 4, cigi_byte_order);
4912
0
    offset += 4;
4913
4914
0
    proto_tree_add_item(tree, hf_cigi3_rate_control_yaw_rate, tvb, offset, 4, cigi_byte_order);
4915
0
    offset += 4;
4916
4917
0
    return offset;
4918
0
}
4919
4920
/* CIGI4 Velocity Control */
4921
static int
4922
cigi4_add_velocity_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
4923
0
{
4924
0
    unsigned offset = 0;
4925
4926
0
    proto_tree* field_tree;
4927
0
    proto_item* tf;
4928
4929
0
    proto_tree_add_item(tree, hf_cigi4_velocity_control_entity_id, tvb, offset, 2, cigi_byte_order);
4930
0
    offset += 2;
4931
4932
0
    proto_tree_add_item(tree, hf_cigi4_velocity_control_part_id, tvb, offset, 1, cigi_byte_order);
4933
0
    offset++;
4934
4935
    //Flags
4936
0
    tf = proto_tree_add_item(tree, hf_cigi4_velocity_control_flags, tvb, offset, 1, cigi_byte_order);
4937
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_velocity_control_flags);
4938
0
    proto_tree_add_item(field_tree, hf_cigi4_velocity_control_apply_to_part, tvb, offset, 1, cigi_byte_order);
4939
0
    proto_tree_add_item(field_tree, hf_cigi4_velocity_control_coordinate_system, tvb, offset, 1, cigi_byte_order);
4940
0
    offset++;
4941
4942
0
    proto_tree_add_item(tree, hf_cigi4_velocity_control_x_rate, tvb, offset, 4, cigi_byte_order);
4943
0
    offset += 4;
4944
4945
0
    proto_tree_add_item(tree, hf_cigi4_velocity_control_y_rate, tvb, offset, 4, cigi_byte_order);
4946
0
    offset += 4;
4947
4948
0
    proto_tree_add_item(tree, hf_cigi4_velocity_control_z_rate, tvb, offset, 4, cigi_byte_order);
4949
0
    offset += 4;
4950
4951
0
    proto_tree_add_item(tree, hf_cigi4_velocity_control_roll_rate, tvb, offset, 4, cigi_byte_order);
4952
0
    offset += 4;
4953
4954
0
    proto_tree_add_item(tree, hf_cigi4_velocity_control_pitch_rate, tvb, offset, 4, cigi_byte_order);
4955
0
    offset += 4;
4956
4957
0
    proto_tree_add_item(tree, hf_cigi4_velocity_control_yaw_rate, tvb, offset, 4, cigi_byte_order);
4958
0
    offset += 4;
4959
4960
0
    return offset;
4961
0
}
4962
4963
4964
/* CIGI3 Celestial Sphere Control */
4965
static int
4966
cigi3_add_celestial_sphere_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
4967
0
{
4968
0
    unsigned offset = 0;
4969
4970
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_hour, tvb, offset, 1, cigi_byte_order);
4971
0
    offset++;
4972
4973
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_minute, tvb, offset, 1, cigi_byte_order);
4974
0
    offset++;
4975
4976
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_ephemeris_enable, tvb, offset, 1, cigi_byte_order);
4977
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_sun_enable, tvb, offset, 1, cigi_byte_order);
4978
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_moon_enable, tvb, offset, 1, cigi_byte_order);
4979
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_star_enable, tvb, offset, 1, cigi_byte_order);
4980
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_date_time_valid, tvb, offset, 1, cigi_byte_order);
4981
0
    offset += 4;
4982
4983
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_date, tvb, offset, 4, cigi_byte_order);
4984
0
    offset += 4;
4985
4986
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_star_intensity, tvb, offset, 4, cigi_byte_order);
4987
0
    offset += 4;
4988
4989
0
    return offset;
4990
0
}
4991
4992
/* CIGI4 Celestial Sphere Control */
4993
static int
4994
cigi4_add_celestial_sphere_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
4995
0
{
4996
0
    unsigned offset = 0;
4997
4998
0
    proto_tree* field_tree;
4999
0
    proto_item* tf;
5000
5001
    //Enabled Flags
5002
0
    tf = proto_tree_add_item(tree, hf_cigi4_celestial_sphere_control_enable_flags, tvb, offset, 1, cigi_byte_order);
5003
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_celestial_sphere_control_flags);
5004
0
    proto_tree_add_item(field_tree, hf_cigi3_celestial_sphere_control_ephemeris_enable, tvb, offset, 1, cigi_byte_order);
5005
0
    proto_tree_add_item(field_tree, hf_cigi3_celestial_sphere_control_sun_enable, tvb, offset, 1, cigi_byte_order);
5006
0
    proto_tree_add_item(field_tree, hf_cigi3_celestial_sphere_control_moon_enable, tvb, offset, 1, cigi_byte_order);
5007
0
    proto_tree_add_item(field_tree, hf_cigi3_celestial_sphere_control_star_enable, tvb, offset, 1, cigi_byte_order);
5008
0
    proto_tree_add_item(field_tree, hf_cigi3_celestial_sphere_control_date_time_valid, tvb, offset, 1, cigi_byte_order);
5009
0
    offset += 2;
5010
5011
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_hour, tvb, offset, 1, cigi_byte_order);
5012
0
    offset++;
5013
5014
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_minute, tvb, offset, 1, cigi_byte_order);
5015
0
    offset++;
5016
5017
0
    proto_tree_add_item(tree, hf_cigi4_celestial_sphere_control_seconds, tvb, offset, 4, cigi_byte_order);
5018
0
    offset += 4;
5019
5020
0
    proto_tree_add_item(tree, hf_cigi4_celestial_sphere_control_date, tvb, offset, 4, cigi_byte_order);
5021
0
    offset += 4;
5022
5023
0
    proto_tree_add_item(tree, hf_cigi3_celestial_sphere_control_star_intensity, tvb, offset, 4, cigi_byte_order);
5024
0
    offset += 4;
5025
5026
    //reserved
5027
0
    offset += 4;
5028
5029
0
    return offset;
5030
0
}
5031
5032
5033
5034
/* CIGI3 Atmosphere Control */
5035
static int
5036
cigi3_add_atmosphere_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5037
0
{
5038
0
    unsigned offset = 0;
5039
5040
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_atmospheric_model_enable, tvb, offset, 1, cigi_byte_order);
5041
0
    offset++;
5042
5043
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_humidity, tvb, offset, 1, cigi_byte_order);
5044
0
    offset++;
5045
5046
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_air_temp, tvb, offset, 4, cigi_byte_order);
5047
0
    offset += 4;
5048
5049
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_visibility_range, tvb, offset, 4, cigi_byte_order);
5050
0
    offset += 4;
5051
5052
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_horiz_wind, tvb, offset, 4, cigi_byte_order);
5053
0
    offset += 4;
5054
5055
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_vert_wind, tvb, offset, 4, cigi_byte_order);
5056
0
    offset += 4;
5057
5058
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_wind_direction, tvb, offset, 4, cigi_byte_order);
5059
0
    offset += 4;
5060
5061
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_barometric_pressure, tvb, offset, 4, cigi_byte_order);
5062
0
    offset += 8;
5063
5064
0
    return offset;
5065
0
}
5066
5067
/* CIGI4 Atmosphere Control */
5068
static int
5069
cigi4_add_atmosphere_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
5070
0
{
5071
0
    unsigned offset = 0;
5072
5073
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_atmospheric_model_enable, tvb, offset, 1, cigi_byte_order);
5074
5075
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_humidity, tvb, offset, 1, cigi_byte_order);
5076
0
    offset++;
5077
5078
    //reserved
5079
0
    offset += 3;
5080
5081
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_air_temp, tvb, offset, 4, cigi_byte_order);
5082
0
    offset += 4;
5083
5084
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_visibility_range, tvb, offset, 4, cigi_byte_order);
5085
0
    offset += 4;
5086
5087
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_horiz_wind, tvb, offset, 4, cigi_byte_order);
5088
0
    offset += 4;
5089
5090
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_vert_wind, tvb, offset, 4, cigi_byte_order);
5091
0
    offset += 4;
5092
5093
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_wind_direction, tvb, offset, 4, cigi_byte_order);
5094
0
    offset += 4;
5095
5096
0
    proto_tree_add_item(tree, hf_cigi3_atmosphere_control_barometric_pressure, tvb, offset, 4, cigi_byte_order);
5097
0
    offset += 4;
5098
5099
0
    return offset;
5100
0
}
5101
5102
5103
/* CIGI3 Environmental Region Control */
5104
static int
5105
cigi3_add_environmental_region_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5106
0
{
5107
0
    unsigned offset = 0;
5108
5109
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_region_id, tvb, offset, 2, cigi_byte_order);
5110
0
    offset += 2;
5111
5112
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_region_state, tvb, offset, 1, cigi_byte_order);
5113
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_merge_weather, tvb, offset, 1, cigi_byte_order);
5114
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_merge_aerosol, tvb, offset, 1, cigi_byte_order);
5115
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_merge_maritime, tvb, offset, 1, cigi_byte_order);
5116
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_merge_terrestrial, tvb, offset, 1, cigi_byte_order);
5117
0
    offset += 4;
5118
5119
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_lat, tvb, offset, 8, cigi_byte_order);
5120
0
    offset += 8;
5121
5122
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_lon, tvb, offset, 8, cigi_byte_order);
5123
0
    offset += 8;
5124
5125
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_size_x, tvb, offset, 4, cigi_byte_order);
5126
0
    offset += 4;
5127
5128
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_size_y, tvb, offset, 4, cigi_byte_order);
5129
0
    offset += 4;
5130
5131
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_corner_radius, tvb, offset, 4, cigi_byte_order);
5132
0
    offset += 4;
5133
5134
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_rotation, tvb, offset, 4, cigi_byte_order);
5135
0
    offset += 4;
5136
5137
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_transition_perimeter, tvb, offset, 4, cigi_byte_order);
5138
0
    offset += 8;
5139
5140
0
    return offset;
5141
0
}
5142
5143
5144
/* CIGI4 Environmental Region Control */
5145
static int
5146
cigi4_add_environmental_region_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
5147
0
{
5148
0
    unsigned offset = 0;
5149
5150
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_region_state, tvb, offset, 1, cigi_byte_order);
5151
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_merge_weather, tvb, offset, 1, cigi_byte_order);
5152
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_merge_aerosol, tvb, offset, 1, cigi_byte_order);
5153
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_merge_maritime, tvb, offset, 1, cigi_byte_order);
5154
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_merge_terrestrial, tvb, offset, 1, cigi_byte_order);
5155
0
    offset += 2;
5156
5157
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_region_id, tvb, offset, 2, cigi_byte_order);
5158
0
    offset += 2;
5159
5160
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_lat, tvb, offset, 8, cigi_byte_order);
5161
0
    offset += 8;
5162
5163
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_lon, tvb, offset, 8, cigi_byte_order);
5164
0
    offset += 8;
5165
5166
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_size_x, tvb, offset, 4, cigi_byte_order);
5167
0
    offset += 4;
5168
5169
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_size_y, tvb, offset, 4, cigi_byte_order);
5170
0
    offset += 4;
5171
5172
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_corner_radius, tvb, offset, 4, cigi_byte_order);
5173
0
    offset += 4;
5174
5175
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_rotation, tvb, offset, 4, cigi_byte_order);
5176
0
    offset += 4;
5177
5178
0
    proto_tree_add_item(tree, hf_cigi3_environmental_region_control_transition_perimeter, tvb, offset, 4, cigi_byte_order);
5179
0
    offset += 8;
5180
5181
0
    return offset;
5182
0
}
5183
5184
5185
/* CIGI3 Weather Control */
5186
static int
5187
cigi3_add_weather_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5188
0
{
5189
0
    unsigned offset = 0;
5190
5191
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_entity_region_id, tvb, offset, 2, cigi_byte_order);
5192
0
    offset += 2;
5193
5194
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_layer_id, tvb, offset, 1, cigi_byte_order);
5195
0
    offset++;
5196
5197
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_humidity, tvb, offset, 1, cigi_byte_order);
5198
0
    offset++;
5199
5200
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_weather_enable, tvb, offset, 1, cigi_byte_order);
5201
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_scud_enable, tvb, offset, 1, cigi_byte_order);
5202
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_random_winds_enable, tvb, offset, 1, cigi_byte_order);
5203
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_random_lightning_enable, tvb, offset, 1, cigi_byte_order);
5204
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_cloud_type, tvb, offset, 1, cigi_byte_order);
5205
0
    offset++;
5206
5207
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_scope, tvb, offset, 1, cigi_byte_order);
5208
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_severity, tvb, offset, 1, cigi_byte_order);
5209
0
    offset++;
5210
5211
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_air_temp, tvb, offset, 4, cigi_byte_order);
5212
0
    offset += 4;
5213
5214
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_visibility_range, tvb, offset, 4, cigi_byte_order);
5215
0
    offset += 4;
5216
5217
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_scud_frequency, tvb, offset, 4, cigi_byte_order);
5218
0
    offset += 4;
5219
5220
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_coverage, tvb, offset, 4, cigi_byte_order);
5221
0
    offset += 4;
5222
5223
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_base_elevation, tvb, offset, 4, cigi_byte_order);
5224
0
    offset += 4;
5225
5226
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_thickness, tvb, offset, 4, cigi_byte_order);
5227
0
    offset += 4;
5228
5229
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_transition_band, tvb, offset, 4, cigi_byte_order);
5230
0
    offset += 4;
5231
5232
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_horiz_wind, tvb, offset, 4, cigi_byte_order);
5233
0
    offset += 4;
5234
5235
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_vert_wind, tvb, offset, 4, cigi_byte_order);
5236
0
    offset += 4;
5237
5238
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_wind_direction, tvb, offset, 4, cigi_byte_order);
5239
0
    offset += 4;
5240
5241
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_barometric_pressure, tvb, offset, 4, cigi_byte_order);
5242
0
    offset += 4;
5243
5244
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_aerosol_concentration, tvb, offset, 4, cigi_byte_order);
5245
0
    offset += 4;
5246
5247
0
    return offset;
5248
0
}
5249
5250
5251
/* CIGI4 Weather Control */
5252
static int
5253
cigi4_add_weather_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
5254
0
{
5255
0
    unsigned offset = 0;
5256
5257
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_layer_id, tvb, offset, 1, cigi_byte_order);
5258
0
    offset++;
5259
5260
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_humidity, tvb, offset, 1, cigi_byte_order);
5261
0
    offset++;
5262
5263
    //flags
5264
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_weather_enable, tvb, offset, 1, cigi_byte_order);
5265
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_scud_enable, tvb, offset, 1, cigi_byte_order);
5266
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_random_winds_enable, tvb, offset, 1, cigi_byte_order);
5267
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_random_lightning_enable, tvb, offset, 1, cigi_byte_order);
5268
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_cloud_type, tvb, offset, 1, cigi_byte_order);
5269
0
    offset++;
5270
5271
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_scope, tvb, offset, 1, cigi_byte_order);
5272
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_severity, tvb, offset, 1, cigi_byte_order);
5273
0
    proto_tree_add_item(tree, hf_cigi4_weather_control_top_scud_enable, tvb, offset, 1, cigi_byte_order);
5274
0
    offset++;
5275
5276
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_entity_region_id, tvb, offset, 2, cigi_byte_order);
5277
0
    offset += 4;
5278
5279
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_air_temp, tvb, offset, 4, cigi_byte_order);
5280
0
    offset += 4;
5281
5282
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_visibility_range, tvb, offset, 4, cigi_byte_order);
5283
0
    offset += 4;
5284
5285
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_scud_frequency, tvb, offset, 4, cigi_byte_order);
5286
0
    offset += 4;
5287
5288
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_coverage, tvb, offset, 4, cigi_byte_order);
5289
0
    offset += 4;
5290
5291
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_base_elevation, tvb, offset, 4, cigi_byte_order);
5292
0
    offset += 4;
5293
5294
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_thickness, tvb, offset, 4, cigi_byte_order);
5295
0
    offset += 4;
5296
5297
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_transition_band, tvb, offset, 4, cigi_byte_order);
5298
0
    offset += 4;
5299
5300
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_horiz_wind, tvb, offset, 4, cigi_byte_order);
5301
0
    offset += 4;
5302
5303
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_vert_wind, tvb, offset, 4, cigi_byte_order);
5304
0
    offset += 4;
5305
5306
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_wind_direction, tvb, offset, 4, cigi_byte_order);
5307
0
    offset += 4;
5308
5309
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_barometric_pressure, tvb, offset, 4, cigi_byte_order);
5310
0
    offset += 4;
5311
5312
0
    proto_tree_add_item(tree, hf_cigi3_weather_control_aerosol_concentration, tvb, offset, 4, cigi_byte_order);
5313
0
    offset += 4;
5314
5315
0
    proto_tree_add_item(tree, hf_cigi4_weather_control_top_scud_freq, tvb, offset, 4, cigi_byte_order);
5316
0
    offset += 4;
5317
5318
0
    proto_tree_add_item(tree, hf_cigi4_weather_control_top_transition_band, tvb, offset, 4, cigi_byte_order);
5319
0
    offset += 4;
5320
5321
    //reserved
5322
0
    offset += 4;
5323
5324
0
    return offset;
5325
0
}
5326
5327
/* CIGI3 Maritime Surface Conditions Control */
5328
static int
5329
cigi3_add_maritime_surface_conditions_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5330
0
{
5331
0
    unsigned offset = 0;
5332
5333
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_entity_region_id, tvb, offset, 2, cigi_byte_order);
5334
0
    offset += 2;
5335
5336
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_surface_conditions_enable, tvb, offset, 1, cigi_byte_order);
5337
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_whitecap_enable, tvb, offset, 1, cigi_byte_order);
5338
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_scope, tvb, offset, 1, cigi_byte_order);
5339
0
    offset += 4;
5340
5341
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_sea_surface_height, tvb, offset, 4, cigi_byte_order);
5342
0
    offset += 4;
5343
5344
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_surface_water_temp, tvb, offset, 4, cigi_byte_order);
5345
0
    offset += 4;
5346
5347
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_surface_clarity, tvb, offset, 4, cigi_byte_order);
5348
0
    offset += 8;
5349
5350
0
    return offset;
5351
0
}
5352
5353
/* CIGI4 Maritime Surface Conditions Control */
5354
static int
5355
cigi4_add_maritime_surface_conditions_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
5356
0
{
5357
0
    unsigned offset = 0;
5358
5359
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_surface_conditions_enable, tvb, offset, 1, cigi_byte_order);
5360
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_whitecap_enable, tvb, offset, 1, cigi_byte_order);
5361
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_scope, tvb, offset, 1, cigi_byte_order);
5362
0
    offset += 2;
5363
5364
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_entity_region_id, tvb, offset, 2, cigi_byte_order);
5365
0
    offset += 2;
5366
5367
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_sea_surface_height, tvb, offset, 4, cigi_byte_order);
5368
0
    offset += 4;
5369
5370
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_surface_water_temp, tvb, offset, 4, cigi_byte_order);
5371
0
    offset += 4;
5372
5373
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_control_surface_clarity, tvb, offset, 4, cigi_byte_order);
5374
0
    offset += 8;
5375
5376
0
    return offset;
5377
0
}
5378
5379
/* CIGI3 Wave Control */
5380
static int
5381
cigi3_add_wave_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5382
0
{
5383
0
    unsigned offset = 0;
5384
5385
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_entity_region_id, tvb, offset, 2, cigi_byte_order);
5386
0
    offset += 2;
5387
5388
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_wave_id, tvb, offset, 1, cigi_byte_order);
5389
0
    offset++;
5390
5391
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_wave_enable, tvb, offset, 1, cigi_byte_order);
5392
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_scope, tvb, offset, 1, cigi_byte_order);
5393
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_breaker_type, tvb, offset, 1, cigi_byte_order);
5394
0
    offset += 3;
5395
5396
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_height, tvb, offset, 4, cigi_byte_order);
5397
0
    offset += 4;
5398
5399
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_wavelength, tvb, offset, 4, cigi_byte_order);
5400
0
    offset += 4;
5401
5402
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_period, tvb, offset, 4, cigi_byte_order);
5403
0
    offset += 4;
5404
5405
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_direction, tvb, offset, 4, cigi_byte_order);
5406
0
    offset += 4;
5407
5408
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_phase_offset, tvb, offset, 4, cigi_byte_order);
5409
0
    offset += 4;
5410
5411
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_leading, tvb, offset, 4, cigi_byte_order);
5412
0
    offset += 4;
5413
5414
0
    return offset;
5415
0
}
5416
5417
/* CIGI4 Wave Control */
5418
static int
5419
cigi4_add_wave_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
5420
0
{
5421
0
    unsigned offset = 0;
5422
5423
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_wave_id, tvb, offset, 1, cigi_byte_order);
5424
0
    offset++;
5425
5426
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_wave_enable, tvb, offset, 1, cigi_byte_order);
5427
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_scope, tvb, offset, 1, cigi_byte_order);
5428
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_breaker_type, tvb, offset, 1, cigi_byte_order);
5429
0
    offset++;
5430
5431
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_entity_region_id, tvb, offset, 2, cigi_byte_order);
5432
0
    offset += 2;
5433
5434
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_height, tvb, offset, 4, cigi_byte_order);
5435
0
    offset += 4;
5436
5437
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_wavelength, tvb, offset, 4, cigi_byte_order);
5438
0
    offset += 4;
5439
5440
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_period, tvb, offset, 4, cigi_byte_order);
5441
0
    offset += 4;
5442
5443
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_direction, tvb, offset, 4, cigi_byte_order);
5444
0
    offset += 4;
5445
5446
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_phase_offset, tvb, offset, 4, cigi_byte_order);
5447
0
    offset += 4;
5448
5449
0
    proto_tree_add_item(tree, hf_cigi3_wave_control_leading, tvb, offset, 4, cigi_byte_order);
5450
0
    offset += 4;
5451
5452
0
    return offset;
5453
0
}
5454
5455
/* CIGI3 Terrestrial Surface Conditions Control */
5456
static int
5457
cigi3_add_terrestrial_surface_conditions_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5458
0
{
5459
0
    unsigned offset = 0;
5460
5461
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_entity_region_id, tvb, offset, 2, cigi_byte_order);
5462
0
    offset += 2;
5463
5464
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_surface_condition_id, tvb, offset, 2, cigi_byte_order);
5465
0
    offset += 2;
5466
5467
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_surface_condition_enable, tvb, offset, 1, cigi_byte_order);
5468
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_scope, tvb, offset, 1, cigi_byte_order);
5469
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_severity, tvb, offset, 1, cigi_byte_order);
5470
0
    offset++;
5471
5472
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_coverage, tvb, offset, 1, cigi_byte_order);
5473
0
    offset++;
5474
5475
0
    return offset;
5476
0
}
5477
5478
/* CIGI4 Terrestrial Surface Conditions Control */
5479
static int
5480
cigi4_add_terrestrial_surface_conditions_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
5481
0
{
5482
0
    unsigned offset = 0;
5483
5484
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_entity_region_id, tvb, offset, 2, cigi_byte_order);
5485
0
    offset += 2;
5486
5487
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_surface_condition_enable, tvb, offset, 1, cigi_byte_order);
5488
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_scope, tvb, offset, 1, cigi_byte_order);
5489
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_severity, tvb, offset, 1, cigi_byte_order);
5490
0
    offset++;
5491
5492
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_coverage, tvb, offset, 1, cigi_byte_order);
5493
0
    offset++;
5494
5495
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_control_surface_condition_id, tvb, offset, 2, cigi_byte_order);
5496
0
    offset += 8;
5497
5498
0
    return offset;
5499
0
}
5500
5501
/* CIGI3 View Control */
5502
static int
5503
cigi3_add_view_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5504
0
{
5505
0
    unsigned offset = 0;
5506
5507
0
    proto_tree_add_item(tree, hf_cigi3_view_control_view_id, tvb, offset, 2, cigi_byte_order);
5508
0
    offset += 2;
5509
5510
0
    proto_tree_add_item(tree, hf_cigi3_view_control_group_id, tvb, offset, 1, cigi_byte_order);
5511
0
    offset++;
5512
5513
0
    proto_tree_add_item(tree, hf_cigi3_view_control_xoff_enable, tvb, offset, 1, cigi_byte_order);
5514
0
    proto_tree_add_item(tree, hf_cigi3_view_control_yoff_enable, tvb, offset, 1, cigi_byte_order);
5515
0
    proto_tree_add_item(tree, hf_cigi3_view_control_zoff_enable, tvb, offset, 1, cigi_byte_order);
5516
0
    proto_tree_add_item(tree, hf_cigi3_view_control_roll_enable, tvb, offset, 1, cigi_byte_order);
5517
0
    proto_tree_add_item(tree, hf_cigi3_view_control_pitch_enable, tvb, offset, 1, cigi_byte_order);
5518
0
    proto_tree_add_item(tree, hf_cigi3_view_control_yaw_enable, tvb, offset, 1, cigi_byte_order);
5519
0
    offset++;
5520
5521
0
    proto_tree_add_item(tree, hf_cigi3_view_control_entity_id, tvb, offset, 2, cigi_byte_order);
5522
0
    offset += 2;
5523
5524
0
    proto_tree_add_item(tree, hf_cigi3_view_control_xoff, tvb, offset, 4, cigi_byte_order);
5525
0
    offset += 4;
5526
5527
0
    proto_tree_add_item(tree, hf_cigi3_view_control_yoff, tvb, offset, 4, cigi_byte_order);
5528
0
    offset += 4;
5529
5530
0
    proto_tree_add_item(tree, hf_cigi3_view_control_zoff, tvb, offset, 4, cigi_byte_order);
5531
0
    offset += 4;
5532
5533
0
    proto_tree_add_item(tree, hf_cigi3_view_control_roll, tvb, offset, 4, cigi_byte_order);
5534
0
    offset += 4;
5535
5536
0
    proto_tree_add_item(tree, hf_cigi3_view_control_pitch, tvb, offset, 4, cigi_byte_order);
5537
0
    offset += 4;
5538
5539
0
    proto_tree_add_item(tree, hf_cigi3_view_control_yaw, tvb, offset, 4, cigi_byte_order);
5540
0
    offset += 4;
5541
5542
0
    return offset;
5543
0
}
5544
5545
/* CIGI4 View Control */
5546
static int
5547
cigi4_add_view_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
5548
0
{
5549
0
    unsigned offset = 0;
5550
5551
0
    proto_tree* field_tree;
5552
0
    proto_item* tf;
5553
5554
0
    proto_tree_add_item(tree, hf_cigi3_view_control_group_id, tvb, offset, 1, cigi_byte_order);
5555
0
    offset++;
5556
5557
    //Flags
5558
0
    tf = proto_tree_add_item(tree, hf_cigi4_view_control_enable_flags, tvb, offset, 1, cigi_byte_order);
5559
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_view_control_enable_flags);
5560
0
    proto_tree_add_item(field_tree, hf_cigi3_view_control_xoff_enable, tvb, offset, 1, cigi_byte_order);
5561
0
    proto_tree_add_item(field_tree, hf_cigi3_view_control_yoff_enable, tvb, offset, 1, cigi_byte_order);
5562
0
    proto_tree_add_item(field_tree, hf_cigi3_view_control_zoff_enable, tvb, offset, 1, cigi_byte_order);
5563
0
    proto_tree_add_item(field_tree, hf_cigi3_view_control_roll_enable, tvb, offset, 1, cigi_byte_order);
5564
0
    proto_tree_add_item(field_tree, hf_cigi3_view_control_pitch_enable, tvb, offset, 1, cigi_byte_order);
5565
0
    proto_tree_add_item(field_tree, hf_cigi3_view_control_yaw_enable, tvb, offset, 1, cigi_byte_order);
5566
0
    offset++;
5567
5568
0
    proto_tree_add_item(tree, hf_cigi3_view_control_view_id, tvb, offset, 2, cigi_byte_order);
5569
0
    offset += 2;
5570
5571
0
    proto_tree_add_item(tree, hf_cigi3_view_control_entity_id, tvb, offset, 2, cigi_byte_order);
5572
0
    offset += 2;
5573
5574
    //reserved
5575
0
    offset += 2;
5576
5577
0
    proto_tree_add_item(tree, hf_cigi3_view_control_xoff, tvb, offset, 4, cigi_byte_order);
5578
0
    offset += 4;
5579
5580
0
    proto_tree_add_item(tree, hf_cigi3_view_control_yoff, tvb, offset, 4, cigi_byte_order);
5581
0
    offset += 4;
5582
5583
0
    proto_tree_add_item(tree, hf_cigi3_view_control_zoff, tvb, offset, 4, cigi_byte_order);
5584
0
    offset += 4;
5585
5586
0
    proto_tree_add_item(tree, hf_cigi3_view_control_roll, tvb, offset, 4, cigi_byte_order);
5587
0
    offset += 4;
5588
5589
0
    proto_tree_add_item(tree, hf_cigi3_view_control_pitch, tvb, offset, 4, cigi_byte_order);
5590
0
    offset += 4;
5591
5592
0
    proto_tree_add_item(tree, hf_cigi3_view_control_yaw, tvb, offset, 4, cigi_byte_order);
5593
0
    offset += 8;
5594
5595
0
    return offset;
5596
0
}
5597
5598
/* CIGI3 Sensor Control */
5599
static int
5600
cigi3_add_sensor_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5601
0
{
5602
0
    unsigned offset = 0;
5603
5604
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_view_id, tvb, offset, 2, cigi_byte_order);
5605
0
    offset += 2;
5606
5607
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_sensor_id, tvb, offset, 1, cigi_byte_order);
5608
0
    offset++;
5609
5610
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_sensor_on_off, tvb, offset, 1, cigi_byte_order);
5611
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_polarity, tvb, offset, 1, cigi_byte_order);
5612
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_line_dropout_enable, tvb, offset, 1, cigi_byte_order);
5613
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_auto_gain, tvb, offset, 1, cigi_byte_order);
5614
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_track_white_black, tvb, offset, 1, cigi_byte_order);
5615
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_track_mode, tvb, offset, 1, cigi_byte_order);
5616
0
    offset++;
5617
5618
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_response_type, tvb, offset, 1, cigi_byte_order);
5619
0
    offset += 2;
5620
5621
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_gain, tvb, offset, 4, cigi_byte_order);
5622
0
    offset += 4;
5623
5624
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_level, tvb, offset, 4, cigi_byte_order);
5625
0
    offset += 4;
5626
5627
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_ac_coupling, tvb, offset, 4, cigi_byte_order);
5628
0
    offset += 4;
5629
5630
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_noise, tvb, offset, 4, cigi_byte_order);
5631
0
    offset += 4;
5632
5633
0
    return offset;
5634
0
}
5635
5636
/* CIGI4 Sensor Control */
5637
static int
5638
cigi4_add_sensor_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
5639
0
{
5640
0
    unsigned offset = 0;
5641
5642
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_sensor_id, tvb, offset, 1, cigi_byte_order);
5643
0
    offset++;
5644
5645
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_sensor_on_off, tvb, offset, 1, cigi_byte_order);
5646
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_polarity, tvb, offset, 1, cigi_byte_order);
5647
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_line_dropout_enable, tvb, offset, 1, cigi_byte_order);
5648
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_auto_gain, tvb, offset, 1, cigi_byte_order);
5649
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_track_white_black, tvb, offset, 1, cigi_byte_order);
5650
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_track_mode, tvb, offset, 1, cigi_byte_order);
5651
0
    offset++;
5652
5653
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_response_type, tvb, offset, 1, cigi_byte_order);
5654
0
    offset += 2;
5655
5656
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_view_id, tvb, offset, 2, cigi_byte_order);
5657
0
    offset += 4;
5658
5659
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_gain, tvb, offset, 4, cigi_byte_order);
5660
0
    offset += 4;
5661
5662
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_level, tvb, offset, 4, cigi_byte_order);
5663
0
    offset += 4;
5664
5665
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_ac_coupling, tvb, offset, 4, cigi_byte_order);
5666
0
    offset += 4;
5667
5668
0
    proto_tree_add_item(tree, hf_cigi3_sensor_control_noise, tvb, offset, 4, cigi_byte_order);
5669
0
    offset += 8;
5670
5671
0
    return offset;
5672
0
}
5673
5674
/* CIGI3 Motion Tracker Control */
5675
static int
5676
cigi3_add_motion_tracker_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5677
0
{
5678
0
    unsigned offset = 0;
5679
5680
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_view_group_id, tvb, offset, 2, cigi_byte_order);
5681
0
    offset += 2;
5682
5683
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_tracker_id, tvb, offset, 1, cigi_byte_order);
5684
0
    offset++;
5685
5686
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_tracker_enable, tvb, offset, 1, cigi_byte_order);
5687
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_boresight_enable, tvb, offset, 1, cigi_byte_order);
5688
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_x_enable, tvb, offset, 1, cigi_byte_order);
5689
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_y_enable, tvb, offset, 1, cigi_byte_order);
5690
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_z_enable, tvb, offset, 1, cigi_byte_order);
5691
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_roll_enable, tvb, offset, 1, cigi_byte_order);
5692
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_pitch_enable, tvb, offset, 1, cigi_byte_order);
5693
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_yaw_enable, tvb, offset, 1, cigi_byte_order);
5694
0
    offset++;
5695
5696
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_view_group_select, tvb, offset, 1, cigi_byte_order);
5697
0
    offset += 2;
5698
5699
0
    return offset;
5700
0
}
5701
5702
/* CIGI4 Motion Tracker Control */
5703
static int
5704
cigi4_add_motion_tracker_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
5705
0
{
5706
0
    unsigned offset = 0;
5707
5708
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_tracker_id, tvb, offset, 1, cigi_byte_order);
5709
0
    offset++;
5710
5711
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_tracker_enable, tvb, offset, 1, cigi_byte_order);
5712
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_boresight_enable, tvb, offset, 1, cigi_byte_order);
5713
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_x_enable, tvb, offset, 1, cigi_byte_order);
5714
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_y_enable, tvb, offset, 1, cigi_byte_order);
5715
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_z_enable, tvb, offset, 1, cigi_byte_order);
5716
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_roll_enable, tvb, offset, 1, cigi_byte_order);
5717
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_pitch_enable, tvb, offset, 1, cigi_byte_order);
5718
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_yaw_enable, tvb, offset, 1, cigi_byte_order);
5719
0
    offset++;
5720
5721
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_view_group_select, tvb, offset, 1, cigi_byte_order);
5722
0
    offset += 2;
5723
5724
0
    proto_tree_add_item(tree, hf_cigi3_motion_tracker_control_view_group_id, tvb, offset, 2, cigi_byte_order);
5725
0
    offset += 8;
5726
5727
0
    return offset;
5728
0
}
5729
5730
/* CIGI3 Earth Reference Model Definition */
5731
static int
5732
cigi3_add_earth_reference_model_definition(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5733
0
{
5734
0
    unsigned offset = 0;
5735
5736
0
    proto_tree_add_item(tree, hf_cigi3_earth_reference_model_definition_erm_enable, tvb, offset, 1, cigi_byte_order);
5737
0
    offset += 6;
5738
5739
0
    proto_tree_add_item(tree, hf_cigi3_earth_reference_model_definition_equatorial_radius, tvb, offset, 8, cigi_byte_order);
5740
0
    offset += 8;
5741
5742
0
    proto_tree_add_item(tree, hf_cigi3_earth_reference_model_definition_flattening, tvb, offset, 8, cigi_byte_order);
5743
0
    offset += 8;
5744
5745
0
    return offset;
5746
0
}
5747
5748
/* CIGI4 Earth Reference Model Definition */
5749
static int
5750
cigi4_add_earth_reference_model_definition(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
5751
0
{
5752
0
    unsigned offset = 0;
5753
5754
0
    proto_tree_add_item(tree, hf_cigi3_earth_reference_model_definition_erm_enable, tvb, offset, 1, cigi_byte_order);
5755
0
    offset += 4;
5756
5757
0
    proto_tree_add_item(tree, hf_cigi3_earth_reference_model_definition_equatorial_radius, tvb, offset, 8, cigi_byte_order);
5758
0
    offset += 8;
5759
5760
0
    proto_tree_add_item(tree, hf_cigi3_earth_reference_model_definition_flattening, tvb, offset, 8, cigi_byte_order);
5761
0
    offset += 8;
5762
5763
0
    return offset;
5764
0
}
5765
5766
/* CIGI3 Trajectory Definition */
5767
static int
5768
cigi3_add_trajectory_definition(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5769
0
{
5770
0
    unsigned offset = 0;
5771
5772
0
    proto_tree_add_item(tree, hf_cigi3_trajectory_definition_entity_id, tvb, offset, 2, cigi_byte_order);
5773
0
    offset += 2;
5774
5775
0
    proto_tree_add_item(tree, hf_cigi3_trajectory_definition_acceleration_x, tvb, offset, 4, cigi_byte_order);
5776
0
    offset += 4;
5777
5778
0
    proto_tree_add_item(tree, hf_cigi3_trajectory_definition_acceleration_y, tvb, offset, 4, cigi_byte_order);
5779
0
    offset += 4;
5780
5781
0
    proto_tree_add_item(tree, hf_cigi3_trajectory_definition_acceleration_z, tvb, offset, 4, cigi_byte_order);
5782
0
    offset += 4;
5783
5784
0
    proto_tree_add_item(tree, hf_cigi3_trajectory_definition_retardation_rate, tvb, offset, 4, cigi_byte_order);
5785
0
    offset += 4;
5786
5787
0
    proto_tree_add_item(tree, hf_cigi3_trajectory_definition_terminal_velocity, tvb, offset, 4, cigi_byte_order);
5788
0
    offset += 4;
5789
5790
0
    return offset;
5791
0
}
5792
5793
/* CIGI4 Acceleration Control */
5794
static int
5795
cigi4_add_acceleration_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
5796
0
{
5797
0
    unsigned offset = 0;
5798
5799
0
    proto_tree_add_item(tree, hf_cigi4_acceleration_control_entity_id, tvb, offset, 2, cigi_byte_order);
5800
0
    offset += 2;
5801
5802
0
    proto_tree_add_item(tree, hf_cigi4_acceleration_control_articulated_part_id, tvb, offset, 1, cigi_byte_order);
5803
0
    offset++;
5804
5805
0
    proto_tree_add_item(tree, hf_cigi4_acceleration_control_apply_to_part, tvb, offset, 1, cigi_byte_order);
5806
0
    proto_tree_add_item(tree, hf_cigi4_acceleration_control_coord_system, tvb, offset, 1, cigi_byte_order);
5807
0
    offset++;
5808
5809
0
    proto_tree_add_item(tree, hf_cigi4_acceleration_control_acceleration_x, tvb, offset, 4, cigi_byte_order);
5810
0
    offset += 4;
5811
5812
0
    proto_tree_add_item(tree, hf_cigi4_acceleration_control_acceleration_y, tvb, offset, 4, cigi_byte_order);
5813
0
    offset += 4;
5814
5815
0
    proto_tree_add_item(tree, hf_cigi4_acceleration_control_acceleration_z, tvb, offset, 4, cigi_byte_order);
5816
0
    offset += 4;
5817
5818
0
    proto_tree_add_item(tree, hf_cigi4_acceleration_control_acceleration_roll, tvb, offset, 4, cigi_byte_order);
5819
0
    offset += 4;
5820
5821
0
    proto_tree_add_item(tree, hf_cigi4_acceleration_control_acceleration_pitch, tvb, offset, 4, cigi_byte_order);
5822
0
    offset += 4;
5823
5824
0
    proto_tree_add_item(tree, hf_cigi4_acceleration_control_acceleration_yaw, tvb, offset, 4, cigi_byte_order);
5825
0
    offset += 4;
5826
5827
0
    return offset;
5828
0
}
5829
5830
5831
/* CIGI3 View Definition */
5832
static int
5833
cigi3_add_view_definition(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5834
0
{
5835
0
    unsigned offset = 0;
5836
5837
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_view_id, tvb, offset, 2, cigi_byte_order);
5838
0
    offset += 2;
5839
5840
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_group_id, tvb, offset, 1, cigi_byte_order);
5841
0
    offset++;
5842
5843
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_near_enable, tvb, offset, 1, cigi_byte_order);
5844
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_far_enable, tvb, offset, 1, cigi_byte_order);
5845
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_left_enable, tvb, offset, 1, cigi_byte_order);
5846
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_right_enable, tvb, offset, 1, cigi_byte_order);
5847
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_top_enable, tvb, offset, 1, cigi_byte_order);
5848
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_bottom_enable, tvb, offset, 1, cigi_byte_order);
5849
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_mirror_mode, tvb, offset, 1, cigi_byte_order);
5850
0
    offset++;
5851
5852
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_pixel_replication, tvb, offset, 1, cigi_byte_order);
5853
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_projection_type, tvb, offset, 1, cigi_byte_order);
5854
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_reorder, tvb, offset, 1, cigi_byte_order);
5855
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_view_type, tvb, offset, 1, cigi_byte_order);
5856
0
    offset += 2;
5857
5858
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_near, tvb, offset, 4, cigi_byte_order);
5859
0
    offset += 4;
5860
5861
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_far, tvb, offset, 4, cigi_byte_order);
5862
0
    offset += 4;
5863
5864
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_left, tvb, offset, 4, cigi_byte_order);
5865
0
    offset += 4;
5866
5867
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_right, tvb, offset, 4, cigi_byte_order);
5868
0
    offset += 4;
5869
5870
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_top, tvb, offset, 4, cigi_byte_order);
5871
0
    offset += 4;
5872
5873
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_bottom, tvb, offset, 4, cigi_byte_order);
5874
0
    offset += 4;
5875
5876
0
    return offset;
5877
0
}
5878
5879
/* CIGI4 View Definition */
5880
static int
5881
cigi4_add_view_definition(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5882
0
{
5883
0
    unsigned offset = 0;
5884
5885
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_view_id, tvb, offset, 2, cigi_byte_order);
5886
0
    offset += 2;
5887
5888
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_group_id, tvb, offset, 1, cigi_byte_order);
5889
0
    offset++;
5890
5891
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_near_enable, tvb, offset, 1, cigi_byte_order);
5892
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_far_enable, tvb, offset, 1, cigi_byte_order);
5893
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_left_enable, tvb, offset, 1, cigi_byte_order);
5894
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_right_enable, tvb, offset, 1, cigi_byte_order);
5895
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_top_enable, tvb, offset, 1, cigi_byte_order);
5896
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_bottom_enable, tvb, offset, 1, cigi_byte_order);
5897
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_mirror_mode, tvb, offset, 1, cigi_byte_order);
5898
0
    offset++;
5899
5900
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_pixel_replication, tvb, offset, 1, cigi_byte_order);
5901
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_projection_type, tvb, offset, 1, cigi_byte_order);
5902
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_reorder, tvb, offset, 1, cigi_byte_order);
5903
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_view_type, tvb, offset, 1, cigi_byte_order);
5904
0
    offset += 4;
5905
5906
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_near, tvb, offset, 4, cigi_byte_order);
5907
0
    offset += 4;
5908
5909
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_far, tvb, offset, 4, cigi_byte_order);
5910
0
    offset += 4;
5911
5912
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_left, tvb, offset, 4, cigi_byte_order);
5913
0
    offset += 4;
5914
5915
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_right, tvb, offset, 4, cigi_byte_order);
5916
0
    offset += 4;
5917
5918
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_top, tvb, offset, 4, cigi_byte_order);
5919
0
    offset += 4;
5920
5921
0
    proto_tree_add_item(tree, hf_cigi3_view_definition_bottom, tvb, offset, 4, cigi_byte_order);
5922
0
    offset += 8;
5923
5924
0
    return offset;
5925
0
}
5926
5927
/* CIGI3 Collision Detection Segment Definition */
5928
static int
5929
cigi3_add_collision_detection_segment_definition(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
5930
0
{
5931
0
    unsigned offset = 0;
5932
5933
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_entity_id, tvb, offset, 2, cigi_byte_order);
5934
0
    offset += 2;
5935
5936
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_segment_id, tvb, offset, 1, cigi_byte_order);
5937
0
    offset++;
5938
5939
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_segment_enable, tvb, offset, 1, cigi_byte_order);
5940
0
    offset += 3;
5941
5942
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_x1, tvb, offset, 4, cigi_byte_order);
5943
0
    offset += 4;
5944
5945
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_y1, tvb, offset, 4, cigi_byte_order);
5946
0
    offset += 4;
5947
5948
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_z1, tvb, offset, 4, cigi_byte_order);
5949
0
    offset += 4;
5950
5951
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_x2, tvb, offset, 4, cigi_byte_order);
5952
0
    offset += 4;
5953
5954
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_y2, tvb, offset, 4, cigi_byte_order);
5955
0
    offset += 4;
5956
5957
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_z2, tvb, offset, 4, cigi_byte_order);
5958
0
    offset += 4;
5959
5960
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_material_mask, tvb, offset, 4, cigi_byte_order);
5961
0
    offset += 8;
5962
5963
0
    return offset;
5964
0
}
5965
5966
/* CIGI4 Collision Detection Segment Definition */
5967
static int
5968
cigi4_add_collision_detection_segment_definition(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
5969
0
{
5970
0
    unsigned offset = 0;
5971
5972
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_segment_id, tvb, offset, 1, cigi_byte_order);
5973
0
    offset++;
5974
5975
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_segment_enable, tvb, offset, 1, cigi_byte_order);
5976
0
    offset++;
5977
5978
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_entity_id, tvb, offset, 2, cigi_byte_order);
5979
0
    offset += 2;
5980
5981
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_x1, tvb, offset, 4, cigi_byte_order);
5982
0
    offset += 4;
5983
5984
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_y1, tvb, offset, 4, cigi_byte_order);
5985
0
    offset += 4;
5986
5987
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_z1, tvb, offset, 4, cigi_byte_order);
5988
0
    offset += 4;
5989
5990
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_x2, tvb, offset, 4, cigi_byte_order);
5991
0
    offset += 4;
5992
5993
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_y2, tvb, offset, 4, cigi_byte_order);
5994
0
    offset += 4;
5995
5996
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_z2, tvb, offset, 4, cigi_byte_order);
5997
0
    offset += 4;
5998
5999
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_definition_material_mask, tvb, offset, 4, cigi_byte_order);
6000
0
    offset += 8;
6001
6002
0
    return offset;
6003
0
}
6004
6005
/* CIGI3 Collision Detection Volume Definition */
6006
static int
6007
cigi3_add_collision_detection_volume_definition(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6008
0
{
6009
0
    unsigned offset = 0;
6010
6011
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_entity_id, tvb, offset, 2, cigi_byte_order);
6012
0
    offset += 2;
6013
6014
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_volume_id, tvb, offset, 1, cigi_byte_order);
6015
0
    offset++;
6016
6017
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_volume_enable, tvb, offset, 1, cigi_byte_order);
6018
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_volume_type, tvb, offset, 1, cigi_byte_order);
6019
0
    offset += 3;
6020
6021
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_x, tvb, offset, 4, cigi_byte_order);
6022
0
    offset += 4;
6023
6024
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_y, tvb, offset, 4, cigi_byte_order);
6025
0
    offset += 4;
6026
6027
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_z, tvb, offset, 4, cigi_byte_order);
6028
0
    offset += 4;
6029
6030
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_radius_height, tvb, offset, 4, cigi_byte_order);
6031
0
    offset += 4;
6032
6033
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_width, tvb, offset, 4, cigi_byte_order);
6034
0
    offset += 4;
6035
6036
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_depth, tvb, offset, 4, cigi_byte_order);
6037
0
    offset += 4;
6038
6039
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_roll, tvb, offset, 4, cigi_byte_order);
6040
0
    offset += 4;
6041
6042
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_pitch, tvb, offset, 4, cigi_byte_order);
6043
0
    offset += 4;
6044
6045
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_yaw, tvb, offset, 4, cigi_byte_order);
6046
0
    offset += 8;
6047
6048
0
    return offset;
6049
0
}
6050
6051
/* CIGI4 Collision Detection Volume Definition */
6052
static int
6053
cigi4_add_collision_detection_volume_definition(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
6054
0
{
6055
0
    unsigned offset = 0;
6056
6057
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_volume_id, tvb, offset, 1, cigi_byte_order);
6058
0
    offset++;
6059
6060
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_volume_enable, tvb, offset, 1, cigi_byte_order);
6061
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_volume_type, tvb, offset, 1, cigi_byte_order);
6062
0
    offset++;
6063
6064
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_entity_id, tvb, offset, 2, cigi_byte_order);
6065
0
    offset += 2;
6066
6067
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_x, tvb, offset, 4, cigi_byte_order);
6068
0
    offset += 4;
6069
6070
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_y, tvb, offset, 4, cigi_byte_order);
6071
0
    offset += 4;
6072
6073
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_z, tvb, offset, 4, cigi_byte_order);
6074
0
    offset += 4;
6075
6076
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_radius_height, tvb, offset, 4, cigi_byte_order);
6077
0
    offset += 4;
6078
6079
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_width, tvb, offset, 4, cigi_byte_order);
6080
0
    offset += 4;
6081
6082
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_depth, tvb, offset, 4, cigi_byte_order);
6083
0
    offset += 4;
6084
6085
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_roll, tvb, offset, 4, cigi_byte_order);
6086
0
    offset += 4;
6087
6088
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_pitch, tvb, offset, 4, cigi_byte_order);
6089
0
    offset += 4;
6090
6091
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_definition_yaw, tvb, offset, 4, cigi_byte_order);
6092
0
    offset += 8;
6093
6094
0
    return offset;
6095
0
}
6096
6097
/* CIGI3 HAT/HOT Request */
6098
static int
6099
cigi3_add_hat_hot_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6100
0
{
6101
0
    unsigned offset = 0;
6102
6103
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_hat_hot_id, tvb, offset, 2, cigi_byte_order);
6104
0
    offset += 2;
6105
6106
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_type, tvb, offset, 1, cigi_byte_order);
6107
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_coordinate_system, tvb, offset, 1, cigi_byte_order);
6108
0
    offset++;
6109
6110
0
    if (cigi_minor_version >= 2) {
6111
0
        proto_tree_add_item(tree, hf_cigi3_2_hat_hot_request_update_period, tvb, offset, 1, cigi_byte_order);
6112
0
    }
6113
0
    offset++;
6114
6115
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_entity_id, tvb, offset, 2, cigi_byte_order);
6116
0
    offset += 2;
6117
6118
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_lat_xoff, tvb, offset, 8, cigi_byte_order);
6119
0
    offset += 8;
6120
6121
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_lon_yoff, tvb, offset, 8, cigi_byte_order);
6122
0
    offset += 8;
6123
6124
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_alt_zoff, tvb, offset, 8, cigi_byte_order);
6125
0
    offset += 8;
6126
6127
0
    return offset;
6128
0
}
6129
6130
/* CIGI3 Line of Sight Segment Request */
6131
static int
6132
cigi3_add_line_of_sight_segment_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6133
0
{
6134
0
    unsigned offset = 0;
6135
6136
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_los_id, tvb, offset, 2, cigi_byte_order);
6137
0
    offset += 2;
6138
6139
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_type, tvb, offset, 1, cigi_byte_order);
6140
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_source_coord, tvb, offset, 1, cigi_byte_order);
6141
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_destination_coord, tvb, offset, 1, cigi_byte_order);
6142
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_response_coord, tvb, offset, 1, cigi_byte_order);
6143
0
    if (cigi_minor_version >= 2) {
6144
0
        proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_segment_request_destination_entity_id_valid, tvb, offset, 1, cigi_byte_order);
6145
0
    }
6146
0
    offset++;
6147
6148
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_alpha_threshold, tvb, offset, 1, cigi_byte_order);
6149
0
    offset++;
6150
6151
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_source_entity_id, tvb, offset, 2, cigi_byte_order);
6152
0
    offset += 2;
6153
6154
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_source_lat_xoff, tvb, offset, 8, cigi_byte_order);
6155
0
    offset += 8;
6156
6157
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_source_lon_yoff, tvb, offset, 8, cigi_byte_order);
6158
0
    offset += 8;
6159
6160
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_source_alt_zoff, tvb, offset, 8, cigi_byte_order);
6161
0
    offset += 8;
6162
6163
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_destination_lat_xoff, tvb, offset, 8, cigi_byte_order);
6164
0
    offset += 8;
6165
6166
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_destination_lon_yoff, tvb, offset, 8, cigi_byte_order);
6167
0
    offset += 8;
6168
6169
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_destination_alt_zoff, tvb, offset, 8, cigi_byte_order);
6170
0
    offset += 8;
6171
6172
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_material_mask, tvb, offset, 4, cigi_byte_order);
6173
0
    offset += 4;
6174
6175
0
    if (cigi_minor_version >= 2) {
6176
0
        proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_segment_request_update_period, tvb, offset, 1, cigi_byte_order);
6177
0
        offset += 2;
6178
6179
0
        proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_segment_request_destination_entity_id, tvb, offset, 2, cigi_byte_order);
6180
0
        offset += 2;
6181
0
    } else {
6182
0
        offset += 4;
6183
0
    }
6184
6185
0
    return offset;
6186
0
}
6187
6188
/* CIGI4 Line of Sight Segment Request */
6189
static int
6190
cigi4_add_line_of_sight_segment_request(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
6191
0
{
6192
0
    unsigned offset = 0;
6193
6194
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_los_id, tvb, offset, 2, cigi_byte_order);
6195
0
    offset += 2;
6196
6197
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_source_entity_id, tvb, offset, 2, cigi_byte_order);
6198
0
    offset += 2;
6199
6200
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_type, tvb, offset, 1, cigi_byte_order);
6201
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_source_coord, tvb, offset, 1, cigi_byte_order);
6202
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_destination_coord, tvb, offset, 1, cigi_byte_order);
6203
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_response_coord, tvb, offset, 1, cigi_byte_order);
6204
0
    proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_segment_request_destination_entity_id_valid, tvb, offset, 1, cigi_byte_order);
6205
0
    offset++;
6206
6207
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_alpha_threshold, tvb, offset, 1, cigi_byte_order);
6208
0
    offset++;
6209
6210
0
    proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_segment_request_destination_entity_id, tvb, offset, 2, cigi_byte_order);
6211
0
    offset += 2;
6212
6213
0
    proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_segment_request_update_period, tvb, offset, 1, cigi_byte_order);
6214
0
    offset += 4;
6215
6216
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_source_lat_xoff, tvb, offset, 8, cigi_byte_order);
6217
0
    offset += 8;
6218
6219
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_source_lon_yoff, tvb, offset, 8, cigi_byte_order);
6220
0
    offset += 8;
6221
6222
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_source_alt_zoff, tvb, offset, 8, cigi_byte_order);
6223
0
    offset += 8;
6224
6225
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_destination_lat_xoff, tvb, offset, 8, cigi_byte_order);
6226
0
    offset += 8;
6227
6228
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_destination_lon_yoff, tvb, offset, 8, cigi_byte_order);
6229
0
    offset += 8;
6230
6231
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_destination_alt_zoff, tvb, offset, 8, cigi_byte_order);
6232
0
    offset += 8;
6233
6234
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_segment_request_material_mask, tvb, offset, 4, cigi_byte_order);
6235
0
    offset += 8;
6236
6237
0
    return offset;
6238
0
}
6239
6240
/* CIGI3 Line of Sight Vector Request */
6241
static int
6242
cigi3_add_line_of_sight_vector_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6243
0
{
6244
0
    unsigned offset = 0;
6245
6246
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_los_id, tvb, offset, 2, cigi_byte_order);
6247
0
    offset += 2;
6248
6249
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_type, tvb, offset, 1, cigi_byte_order);
6250
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_source_coord, tvb, offset, 1, cigi_byte_order);
6251
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_response_coord, tvb, offset, 1, cigi_byte_order);
6252
0
    offset++;
6253
6254
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_alpha, tvb, offset, 1, cigi_byte_order);
6255
0
    offset++;
6256
6257
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_entity_id, tvb, offset, 2, cigi_byte_order);
6258
0
    offset += 2;
6259
6260
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_azimuth, tvb, offset, 4, cigi_byte_order);
6261
0
    offset += 4;
6262
6263
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_elevation, tvb, offset, 4, cigi_byte_order);
6264
0
    offset += 4;
6265
6266
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_min_range, tvb, offset, 4, cigi_byte_order);
6267
0
    offset += 4;
6268
6269
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_max_range, tvb, offset, 4, cigi_byte_order);
6270
0
    offset += 4;
6271
6272
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_source_lat_xoff, tvb, offset, 8, cigi_byte_order);
6273
0
    offset += 8;
6274
6275
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_source_lon_yoff, tvb, offset, 8, cigi_byte_order);
6276
0
    offset += 8;
6277
6278
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_source_alt_zoff, tvb, offset, 8, cigi_byte_order);
6279
0
    offset += 8;
6280
6281
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_material_mask, tvb, offset, 4, cigi_byte_order);
6282
0
    offset += 4;
6283
6284
0
    if (cigi_minor_version >= 2) {
6285
0
        proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_vector_request_update_period, tvb, offset, 1, cigi_byte_order);
6286
0
    }
6287
0
    offset += 4;
6288
6289
0
    return offset;
6290
0
}
6291
6292
/* CIGI4 Line of Sight Vector Request */
6293
static int
6294
cigi4_add_line_of_sight_vector_request(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
6295
0
{
6296
0
    unsigned offset = 0;
6297
6298
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_los_id, tvb, offset, 2, cigi_byte_order);
6299
0
    offset += 2;
6300
6301
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_entity_id, tvb, offset, 2, cigi_byte_order);
6302
0
    offset += 2;
6303
6304
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_type, tvb, offset, 1, cigi_byte_order);
6305
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_source_coord, tvb, offset, 1, cigi_byte_order);
6306
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_response_coord, tvb, offset, 1, cigi_byte_order);
6307
0
    offset++;
6308
6309
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_alpha, tvb, offset, 1, cigi_byte_order);
6310
0
    offset++;
6311
6312
0
    proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_vector_request_update_period, tvb, offset, 1, cigi_byte_order);
6313
0
    offset += 6;
6314
6315
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_azimuth, tvb, offset, 4, cigi_byte_order);
6316
0
    offset += 4;
6317
6318
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_elevation, tvb, offset, 4, cigi_byte_order);
6319
0
    offset += 4;
6320
6321
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_min_range, tvb, offset, 4, cigi_byte_order);
6322
0
    offset += 4;
6323
6324
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_max_range, tvb, offset, 4, cigi_byte_order);
6325
0
    offset += 4;
6326
6327
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_source_lat_xoff, tvb, offset, 8, cigi_byte_order);
6328
0
    offset += 8;
6329
6330
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_source_lon_yoff, tvb, offset, 8, cigi_byte_order);
6331
0
    offset += 8;
6332
6333
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_source_alt_zoff, tvb, offset, 8, cigi_byte_order);
6334
0
    offset += 8;
6335
6336
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_vector_request_material_mask, tvb, offset, 4, cigi_byte_order);
6337
0
    offset += 8;
6338
6339
0
    return offset;
6340
0
}
6341
6342
/* CIGI3 Position Request */
6343
static int
6344
cigi3_add_position_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6345
0
{
6346
0
    unsigned offset = 0;
6347
6348
0
    proto_tree_add_item(tree, hf_cigi3_position_request_object_id, tvb, offset, 2, cigi_byte_order);
6349
0
    offset += 2;
6350
6351
0
    proto_tree_add_item(tree, hf_cigi3_position_request_part_id, tvb, offset, 1, cigi_byte_order);
6352
0
    offset++;
6353
6354
0
    proto_tree_add_item(tree, hf_cigi3_position_request_update_mode, tvb, offset, 1, cigi_byte_order);
6355
0
    proto_tree_add_item(tree, hf_cigi3_position_request_object_class, tvb, offset, 1, cigi_byte_order);
6356
0
    proto_tree_add_item(tree, hf_cigi3_position_request_coord_system, tvb, offset, 1, cigi_byte_order);
6357
0
    offset += 3;
6358
6359
0
    return offset;
6360
0
}
6361
6362
6363
/* CIGI4 Position Request */
6364
static int
6365
cigi4_add_position_request(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
6366
0
{
6367
0
    unsigned offset = 0;
6368
6369
0
    proto_tree_add_item(tree, hf_cigi3_position_request_part_id, tvb, offset, 1, cigi_byte_order);
6370
0
    offset++;
6371
6372
0
    proto_tree_add_item(tree, hf_cigi3_position_request_update_mode, tvb, offset, 1, cigi_byte_order);
6373
0
    proto_tree_add_item(tree, hf_cigi3_position_request_object_class, tvb, offset, 1, cigi_byte_order);
6374
0
    proto_tree_add_item(tree, hf_cigi3_position_request_coord_system, tvb, offset, 1, cigi_byte_order);
6375
0
    offset++;
6376
6377
0
    proto_tree_add_item(tree, hf_cigi3_position_request_object_id, tvb, offset, 2, cigi_byte_order);
6378
0
    offset += 2;
6379
6380
0
    return offset;
6381
0
}
6382
6383
/* CIGI3 Environmental Conditions Request */
6384
static int
6385
cigi3_add_environmental_conditions_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6386
0
{
6387
0
    unsigned offset = 0;
6388
6389
0
    proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_type, tvb, offset, 1, cigi_byte_order);
6390
0
    offset++;
6391
6392
0
    proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_id, tvb, offset, 1, cigi_byte_order);
6393
0
    offset += 5;
6394
6395
0
    proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_lat, tvb, offset, 8, cigi_byte_order);
6396
0
    offset += 8;
6397
6398
0
    proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_lon, tvb, offset, 8, cigi_byte_order);
6399
0
    offset += 8;
6400
6401
0
    proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_alt, tvb, offset, 8, cigi_byte_order);
6402
0
    offset += 8;
6403
6404
0
    return offset;
6405
0
}
6406
6407
/* CIGI4 Environmental Conditions Request */
6408
static int
6409
cigi4_add_environmental_conditions_request(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
6410
0
{
6411
0
    unsigned offset = 0;
6412
6413
0
    proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_type, tvb, offset, 1, cigi_byte_order);
6414
0
    offset++;
6415
6416
0
    proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_id, tvb, offset, 1, cigi_byte_order);
6417
0
    offset += 3;
6418
6419
0
    proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_lat, tvb, offset, 8, cigi_byte_order);
6420
0
    offset += 8;
6421
6422
0
    proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_lon, tvb, offset, 8, cigi_byte_order);
6423
0
    offset += 8;
6424
6425
0
    proto_tree_add_item(tree, hf_cigi3_environmental_conditions_request_alt, tvb, offset, 8, cigi_byte_order);
6426
0
    offset += 8;
6427
6428
0
    return offset;
6429
0
}
6430
6431
/* CIGI3_3 Symbol Surface Definition */
6432
static int
6433
cigi3_3_add_symbol_surface_definition(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6434
0
{
6435
0
    unsigned offset = 0;
6436
6437
    /* Dissect as data on versions before 3.3 */
6438
0
    if (cigi_minor_version < 3) {
6439
0
        return offset;
6440
0
    }
6441
6442
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_surface_id, tvb, offset, 2, cigi_byte_order);
6443
0
    offset += 2;
6444
6445
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_surface_state, tvb, offset, 1, cigi_byte_order);
6446
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_attach_type, tvb, offset, 1, cigi_byte_order);
6447
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_billboard, tvb, offset, 1, cigi_byte_order);
6448
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_perspective_growth_enable, tvb, offset, 1, cigi_byte_order);
6449
0
    offset += 2;
6450
6451
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_entity_view_id, tvb, offset, 2, cigi_byte_order);
6452
0
    offset += 2;
6453
6454
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_xoff_left, tvb, offset, 4, cigi_byte_order);
6455
0
    offset += 4;
6456
6457
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_yoff_right, tvb, offset, 4, cigi_byte_order);
6458
0
    offset += 4;
6459
6460
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_zoff_top, tvb, offset, 4, cigi_byte_order);
6461
0
    offset += 4;
6462
6463
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_yaw_bottom, tvb, offset, 4, cigi_byte_order);
6464
0
    offset += 4;
6465
6466
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_pitch, tvb, offset, 4, cigi_byte_order);
6467
0
    offset += 4;
6468
6469
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_roll, tvb, offset, 4, cigi_byte_order);
6470
0
    offset += 4;
6471
6472
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_width, tvb, offset, 4, cigi_byte_order);
6473
0
    offset += 4;
6474
6475
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_height, tvb, offset, 4, cigi_byte_order);
6476
0
    offset += 4;
6477
6478
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_min_u, tvb, offset, 4, cigi_byte_order);
6479
0
    offset += 4;
6480
6481
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_max_u, tvb, offset, 4, cigi_byte_order);
6482
0
    offset += 4;
6483
6484
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_min_v, tvb, offset, 4, cigi_byte_order);
6485
0
    offset += 4;
6486
6487
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_max_v, tvb, offset, 4, cigi_byte_order);
6488
0
    offset += 4;
6489
6490
0
    return offset;
6491
0
}
6492
6493
/* CIGI4 Symbol Surface Definition */
6494
static int
6495
cigi4_add_symbol_surface_definition(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
6496
0
{
6497
0
    unsigned offset = 0;
6498
6499
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_surface_id, tvb, offset, 2, cigi_byte_order);
6500
0
    offset += 2;
6501
6502
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_entity_view_id, tvb, offset, 2, cigi_byte_order);
6503
0
    offset += 2;
6504
6505
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_surface_state, tvb, offset, 1, cigi_byte_order);
6506
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_attach_type, tvb, offset, 1, cigi_byte_order);
6507
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_billboard, tvb, offset, 1, cigi_byte_order);
6508
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_perspective_growth_enable, tvb, offset, 1, cigi_byte_order);
6509
0
    offset += 4;
6510
6511
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_xoff_left, tvb, offset, 4, cigi_byte_order);
6512
0
    offset += 4;
6513
6514
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_yoff_right, tvb, offset, 4, cigi_byte_order);
6515
0
    offset += 4;
6516
6517
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_zoff_top, tvb, offset, 4, cigi_byte_order);
6518
0
    offset += 4;
6519
6520
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_yaw_bottom, tvb, offset, 4, cigi_byte_order);
6521
0
    offset += 4;
6522
6523
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_pitch, tvb, offset, 4, cigi_byte_order);
6524
0
    offset += 4;
6525
6526
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_roll, tvb, offset, 4, cigi_byte_order);
6527
0
    offset += 4;
6528
6529
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_width, tvb, offset, 4, cigi_byte_order);
6530
0
    offset += 4;
6531
6532
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_height, tvb, offset, 4, cigi_byte_order);
6533
0
    offset += 4;
6534
6535
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_min_u, tvb, offset, 4, cigi_byte_order);
6536
0
    offset += 4;
6537
6538
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_max_u, tvb, offset, 4, cigi_byte_order);
6539
0
    offset += 4;
6540
6541
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_min_v, tvb, offset, 4, cigi_byte_order);
6542
0
    offset += 4;
6543
6544
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_surface_definition_max_v, tvb, offset, 4, cigi_byte_order);
6545
0
    offset += 8;
6546
6547
0
    return offset;
6548
0
}
6549
6550
/* CIGI3_3 Symbol Text Definition */
6551
static int
6552
cigi3_3_add_symbol_text_definition(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
6553
0
{
6554
0
    unsigned offset = 0;
6555
6556
0
    if (cigi_minor_version < 3) {
6557
0
        return offset;
6558
0
    }
6559
6560
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_symbol_id, tvb, offset, 2, cigi_byte_order);
6561
0
    offset += 2;
6562
6563
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_alignment, tvb, offset, 1, cigi_byte_order);
6564
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_orientation, tvb, offset, 1, cigi_byte_order);
6565
0
    offset += 1;
6566
6567
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_font_ident, tvb, offset, 1, cigi_byte_order);
6568
0
    offset += 3;
6569
6570
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_font_size, tvb, offset, 4, cigi_byte_order);
6571
0
    offset += 4;
6572
6573
0
    if (tvb_reported_length_remaining(tvb, offset) < 2) {
6574
0
        proto_tree_add_expert_format(tree, pinfo, &ei_cigi_invalid_len, tvb, 0,
6575
0
            tvb_reported_length(tvb), "Insufficient room for symbol text definition");
6576
0
    } else {
6577
0
        proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_text, tvb, offset,
6578
0
            tvb_reported_length_remaining(tvb, offset), cigi_byte_order);
6579
0
    }
6580
6581
0
    return tvb_reported_length(tvb);
6582
0
}
6583
6584
/* CIGI4 Symbol Text Definition */
6585
static int
6586
cigi4_add_symbol_text_definition(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
6587
0
{
6588
0
    unsigned offset = 0;
6589
6590
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_alignment, tvb, offset, 1, cigi_byte_order);
6591
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_orientation, tvb, offset, 1, cigi_byte_order);
6592
0
    offset++;
6593
6594
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_font_ident, tvb, offset, 1, cigi_byte_order);
6595
0
    offset++;
6596
6597
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_symbol_id, tvb, offset, 2, cigi_byte_order);
6598
0
    offset += 2;
6599
6600
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_font_size, tvb, offset, 4, cigi_byte_order);
6601
0
    offset += 4;
6602
6603
0
    if (tvb_reported_length_remaining(tvb, offset) < 2) {
6604
0
        proto_tree_add_expert_format(tree, pinfo, &ei_cigi_invalid_len, tvb, 0,
6605
0
            tvb_reported_length(tvb), "Insufficient room for symbol text definition");
6606
0
    } else {
6607
0
        proto_tree_add_item(tree, hf_cigi3_3_symbol_text_definition_text, tvb, offset,
6608
0
            tvb_reported_length_remaining(tvb, offset), cigi_byte_order);
6609
0
    }
6610
6611
0
    return tvb_reported_length(tvb);
6612
0
}
6613
6614
/* CIGI3_3 Symbol Circle Definition */
6615
static int
6616
cigi3_3_add_symbol_circle_definition(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6617
0
{
6618
0
    unsigned offset = 0;
6619
6620
0
    int ncircles, c;
6621
6622
0
    if (cigi_minor_version < 3) {
6623
0
        return offset;
6624
0
    }
6625
6626
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_symbol_id, tvb, offset, 2, cigi_byte_order);
6627
0
    offset += 2;
6628
6629
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_drawing_style, tvb, offset, 1, cigi_byte_order);
6630
0
    offset += 2;
6631
6632
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_stipple_pattern, tvb, offset, 2, cigi_byte_order);
6633
0
    offset += 2;
6634
6635
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_line_width, tvb, offset, 4, cigi_byte_order);
6636
0
    offset += 4;
6637
6638
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_stipple_pattern_length, tvb, offset, 4, cigi_byte_order);
6639
0
    offset += 4;
6640
6641
0
    ncircles = tvb_reported_length_remaining(tvb, offset) / 24;
6642
6643
    /* The length of tvb is determined by a 1 octet packet length value and
6644
     * thus there should be fewer than 10 circles (CIGI 3.3 4.1.31)
6645
     */
6646
0
    DISSECTOR_ASSERT_CMPINT(ncircles, <, 10);
6647
6648
0
    for (c = 0; c < ncircles; c++) {
6649
0
        proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_center_u[c], tvb, offset, 4, cigi_byte_order);
6650
0
        offset += 4;
6651
6652
0
        proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_center_v[c], tvb, offset, 4, cigi_byte_order);
6653
0
        offset += 4;
6654
6655
0
        proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_radius[c], tvb, offset, 4, cigi_byte_order);
6656
0
        offset += 4;
6657
6658
0
        proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_inner_radius[c], tvb, offset, 4, cigi_byte_order);
6659
0
        offset += 4;
6660
6661
0
        proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_start_angle[c], tvb, offset, 4, cigi_byte_order);
6662
0
        offset += 4;
6663
6664
0
        proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_end_angle[c], tvb, offset, 4, cigi_byte_order);
6665
0
        offset += 4;
6666
0
    }
6667
6668
0
    return offset;
6669
0
}
6670
6671
/* CIGI4 Symbol Circle Definition */
6672
static int
6673
cigi4_add_symbol_circle_definition(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
6674
0
{
6675
0
    unsigned offset = 0;
6676
6677
0
    proto_tree* field_tree;
6678
0
    proto_item* tf;
6679
6680
0
    int ncircles, c, c_field;
6681
6682
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_symbol_id, tvb, offset, 2, cigi_byte_order);
6683
0
    offset += 2;
6684
6685
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_stipple_pattern, tvb, offset, 2, cigi_byte_order);
6686
0
    offset += 2;
6687
6688
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_drawing_style, tvb, offset, 1, cigi_byte_order);
6689
0
    offset += 4;
6690
6691
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_line_width, tvb, offset, 4, cigi_byte_order);
6692
0
    offset += 4;
6693
6694
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_circle_definition_stipple_pattern_length, tvb, offset, 4, cigi_byte_order);
6695
0
    offset += 8;
6696
6697
0
    ncircles = tvb_reported_length_remaining(tvb, offset) / 24;
6698
6699
0
    for (c = 0; c < ncircles; c++) {
6700
0
        tf = proto_tree_add_item(tree, hf_cigi4_symbol_circle_definition_circles, tvb, offset, 24, cigi_byte_order);
6701
0
        proto_item_append_text(tf, " %u", c);
6702
0
        field_tree = proto_item_add_subtree(tf, ett_cigi4_symbol_circle_definition_circles);
6703
6704
        /* XXX: The length of tvb is determined by a 2 octet packet length value and
6705
         * thus there can be more circles than fields that are declared (unlike
6706
         * CIGI 3). Make sure we don't have a memory error.
6707
         */
6708
0
        c_field = c % array_length(hf_cigi3_3_symbol_circle_definition_center_u);
6709
6710
0
        proto_tree_add_item(field_tree, hf_cigi3_3_symbol_circle_definition_center_u[c_field], tvb, offset, 4, cigi_byte_order);
6711
0
        offset += 4;
6712
6713
0
        proto_tree_add_item(field_tree, hf_cigi3_3_symbol_circle_definition_center_v[c_field], tvb, offset, 4, cigi_byte_order);
6714
0
        offset += 4;
6715
6716
0
        proto_tree_add_item(field_tree, hf_cigi3_3_symbol_circle_definition_radius[c_field], tvb, offset, 4, cigi_byte_order);
6717
0
        offset += 4;
6718
6719
0
        proto_tree_add_item(field_tree, hf_cigi3_3_symbol_circle_definition_inner_radius[c_field], tvb, offset, 4, cigi_byte_order);
6720
0
        offset += 4;
6721
6722
0
        proto_tree_add_item(field_tree, hf_cigi3_3_symbol_circle_definition_start_angle[c_field], tvb, offset, 4, cigi_byte_order);
6723
0
        offset += 4;
6724
6725
0
        proto_tree_add_item(field_tree, hf_cigi3_3_symbol_circle_definition_end_angle[c_field], tvb, offset, 4, cigi_byte_order);
6726
0
        offset += 4;
6727
0
    }
6728
6729
0
    return offset;
6730
0
}
6731
6732
/* CIGI3_3 Symbol Line Definition */
6733
static int
6734
cigi3_3_add_symbol_line_definition(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6735
0
{
6736
0
    unsigned offset = 0;
6737
6738
0
    int nvertices, v;
6739
6740
0
    if (cigi_minor_version < 3) {
6741
0
        return offset;
6742
0
    }
6743
6744
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_symbol_id, tvb, offset, 2, cigi_byte_order);
6745
0
    offset += 2;
6746
6747
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_primitive_type, tvb, offset, 1, cigi_byte_order);
6748
0
    offset += 2;
6749
6750
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_stipple_pattern, tvb, offset, 2, cigi_byte_order);
6751
0
    offset += 2;
6752
6753
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_line_width, tvb, offset, 4, cigi_byte_order);
6754
0
    offset += 4;
6755
6756
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_stipple_pattern_length, tvb, offset, 4, cigi_byte_order);
6757
0
    offset += 4;
6758
6759
0
    nvertices = tvb_reported_length_remaining(tvb, offset) / 8;
6760
6761
    /* The length of tvb is determined by a 1 octet packet length value and
6762
     * thus there should be fewer than 30 vertices (CIGI 3.3 4.1.32)
6763
     */
6764
0
    DISSECTOR_ASSERT_CMPINT(nvertices, <, 30);
6765
6766
0
    for(v=0; v<nvertices; v++) {
6767
0
        proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_vertex_u[v], tvb, offset, 4, cigi_byte_order);
6768
0
        offset += 4;
6769
6770
0
        proto_tree_add_item(tree, hf_cigi3_3_symbol_line_definition_vertex_v[v], tvb, offset, 4, cigi_byte_order);
6771
0
        offset += 4;
6772
0
    }
6773
6774
0
    return offset;
6775
0
}
6776
6777
/* CIGI4 Symbol Polygon Definition */
6778
static int
6779
cigi4_add_symbol_polygon_definition(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree* tree, void *data _U_)
6780
0
{
6781
0
    unsigned offset = 0;
6782
6783
0
    proto_tree* field_tree;
6784
0
    proto_item* tf;
6785
6786
0
    int nvertices, v, v_field;
6787
6788
0
    proto_tree_add_item(tree, hf_cigi4_symbol_polygon_definition_symbol_id, tvb, offset, 2, cigi_byte_order);
6789
0
    offset += 2;
6790
6791
0
    proto_tree_add_item(tree, hf_cigi4_symbol_polygon_definition_stipple_pattern, tvb, offset, 2, cigi_byte_order);
6792
0
    offset += 2;
6793
6794
0
    proto_tree_add_item(tree, hf_cigi4_symbol_polygon_definition_primitive_type, tvb, offset, 1, cigi_byte_order);
6795
0
    offset += 4;
6796
6797
0
    proto_tree_add_item(tree, hf_cigi4_symbol_polygon_definition_line_width, tvb, offset, 4, cigi_byte_order);
6798
0
    offset += 4;
6799
6800
0
    proto_tree_add_item(tree, hf_cigi4_symbol_polygon_definition_stipple_pattern_length, tvb, offset, 4, cigi_byte_order);
6801
0
    offset += 8;
6802
6803
0
    nvertices = tvb_reported_length_remaining(tvb, offset) / 8;
6804
6805
0
    for (v = 0; v < nvertices; v++) {
6806
0
        tf = proto_tree_add_item(tree, hf_cigi4_symbol_polygon_definition_vertices, tvb, offset, 8, cigi_byte_order);
6807
0
        proto_item_append_text(tf, "[%u]", v);
6808
0
        field_tree = proto_item_add_subtree(tf, ett_cigi4_symbol_polygon_definition_vertices);
6809
6810
        /* XXX: The length of tvb is determined by a 2 octet packet length value and
6811
         * thus there can be more vertices than fields that are declared (unlike
6812
         * CIGI 3). Make sure we don't have a memory error.
6813
         */
6814
0
        v_field = v % array_length(hf_cigi4_symbol_polygon_definition_vertex_u);
6815
6816
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_polygon_definition_vertex_u[v_field], tvb, offset, 4, cigi_byte_order);
6817
0
        offset += 4;
6818
6819
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_polygon_definition_vertex_v[v_field], tvb, offset, 4, cigi_byte_order);
6820
0
        offset += 4;
6821
0
    }
6822
6823
0
    return offset;
6824
0
}
6825
6826
/* CIGI3_3 Symbol Clone */
6827
static int
6828
cigi3_3_add_symbol_clone(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6829
0
{
6830
0
    unsigned offset = 0;
6831
6832
0
    if (cigi_minor_version < 3) {
6833
0
        return offset;
6834
0
    }
6835
6836
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_clone_symbol_id, tvb, offset, 2, cigi_byte_order);
6837
0
    offset += 2;
6838
6839
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_clone_source_type, tvb, offset, 1, cigi_byte_order);
6840
0
    offset += 2;
6841
6842
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_clone_source_id, tvb, offset, 2, cigi_byte_order);
6843
0
    offset += 2;
6844
6845
0
    return offset;
6846
0
}
6847
6848
/* CIGI4 Symbol Clone */
6849
static int
6850
cigi4_add_symbol_clone(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
6851
0
{
6852
0
    unsigned offset = 0;
6853
6854
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_clone_symbol_id, tvb, offset, 2, cigi_byte_order);
6855
0
    offset += 2;
6856
6857
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_clone_source_id, tvb, offset, 2, cigi_byte_order);
6858
0
    offset += 2;
6859
6860
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_clone_source_type, tvb, offset, 1, cigi_byte_order);
6861
0
    offset += 8;
6862
6863
0
    return offset;
6864
0
}
6865
6866
/* CIGI3_3 Symbol Control */
6867
static int
6868
cigi3_3_add_symbol_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6869
0
{
6870
0
    unsigned offset = 0;
6871
6872
0
    if (cigi_minor_version < 3) {
6873
0
        return offset;
6874
0
    }
6875
6876
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_symbol_id, tvb, offset, 2, cigi_byte_order);
6877
0
    offset += 2;
6878
6879
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_symbol_state, tvb, offset, 1, cigi_byte_order);
6880
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_attach_state, tvb, offset, 1, cigi_byte_order);
6881
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_flash_control, tvb, offset, 1, cigi_byte_order);
6882
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_inherit_color, tvb, offset, 1, cigi_byte_order);
6883
0
    offset += 2;
6884
6885
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_parent_symbol_ident, tvb, offset, 2, cigi_byte_order);
6886
0
    offset += 2;
6887
6888
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_surface_ident, tvb, offset, 2, cigi_byte_order);
6889
0
    offset += 2;
6890
6891
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_layer, tvb, offset, 1, cigi_byte_order);
6892
0
    offset += 1;
6893
6894
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_flash_duty_cycle, tvb, offset, 1, cigi_byte_order);
6895
0
    offset += 1;
6896
6897
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_flash_period, tvb, offset, 4, cigi_byte_order);
6898
0
    offset += 4;
6899
6900
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_position_u, tvb, offset, 4, cigi_byte_order);
6901
0
    offset += 4;
6902
6903
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_position_v, tvb, offset, 4, cigi_byte_order);
6904
0
    offset += 4;
6905
6906
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_rotation, tvb, offset, 4, cigi_byte_order);
6907
0
    offset += 4;
6908
6909
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_red, tvb, offset, 1, cigi_byte_order);
6910
0
    offset += 1;
6911
6912
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_green, tvb, offset, 1, cigi_byte_order);
6913
0
    offset += 1;
6914
6915
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_blue, tvb, offset, 1, cigi_byte_order);
6916
0
    offset += 1;
6917
6918
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_alpha, tvb, offset, 1, cigi_byte_order);
6919
0
    offset += 1;
6920
6921
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_scale_u, tvb, offset, 4, cigi_byte_order);
6922
0
    offset += 4;
6923
6924
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_scale_v, tvb, offset, 4, cigi_byte_order);
6925
0
    offset += 4;
6926
6927
0
    return offset;
6928
0
}
6929
6930
/* CIGI4 Symbol Control */
6931
static int
6932
cigi4_add_symbol_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
6933
0
{
6934
0
    unsigned offset = 0;
6935
6936
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_symbol_id, tvb, offset, 2, cigi_byte_order);
6937
0
    offset += 2;
6938
6939
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_parent_symbol_ident, tvb, offset, 2, cigi_byte_order);
6940
0
    offset += 2;
6941
6942
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_symbol_state, tvb, offset, 1, cigi_byte_order);
6943
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_attach_state, tvb, offset, 1, cigi_byte_order);
6944
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_flash_control, tvb, offset, 1, cigi_byte_order);
6945
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_inherit_color, tvb, offset, 1, cigi_byte_order);
6946
0
    offset++;
6947
6948
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_layer, tvb, offset, 1, cigi_byte_order);
6949
0
    offset++;
6950
6951
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_flash_duty_cycle, tvb, offset, 1, cigi_byte_order);
6952
0
    offset += 2;
6953
6954
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_surface_ident, tvb, offset, 2, cigi_byte_order);
6955
0
    offset += 4;
6956
6957
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_flash_period, tvb, offset, 4, cigi_byte_order);
6958
0
    offset += 4;
6959
6960
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_position_u, tvb, offset, 4, cigi_byte_order);
6961
0
    offset += 4;
6962
6963
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_position_v, tvb, offset, 4, cigi_byte_order);
6964
0
    offset += 4;
6965
6966
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_rotation, tvb, offset, 4, cigi_byte_order);
6967
0
    offset += 4;
6968
6969
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_red, tvb, offset, 1, cigi_byte_order);
6970
0
    offset++;
6971
6972
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_green, tvb, offset, 1, cigi_byte_order);
6973
0
    offset++;
6974
6975
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_blue, tvb, offset, 1, cigi_byte_order);
6976
0
    offset++;
6977
6978
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_alpha, tvb, offset, 1, cigi_byte_order);
6979
0
    offset++;
6980
6981
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_scale_u, tvb, offset, 4, cigi_byte_order);
6982
0
    offset += 4;
6983
6984
0
    proto_tree_add_item(tree, hf_cigi3_3_symbol_control_scale_v, tvb, offset, 4, cigi_byte_order);
6985
0
    offset += 8;
6986
6987
0
    return offset;
6988
0
}
6989
6990
/* CIGI3_3 Short Symbol Control */
6991
static int
6992
cigi3_3_add_short_symbol_control(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
6993
0
{
6994
0
    unsigned offset = 0;
6995
6996
0
    if (cigi_minor_version < 3) {
6997
0
        return offset;
6998
0
    }
6999
7000
0
    uint8_t select1 = 0;
7001
0
    uint8_t select2 = 0;
7002
7003
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_symbol_id, tvb, offset, 2, cigi_byte_order);
7004
0
    offset += 2;
7005
7006
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_symbol_state, tvb, offset, 1, cigi_byte_order);
7007
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_attach_state, tvb, offset, 1, cigi_byte_order);
7008
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_flash_control, tvb, offset, 1, cigi_byte_order);
7009
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_inherit_color, tvb, offset, 1, cigi_byte_order);
7010
0
    offset += 2;
7011
7012
0
    proto_tree_add_item_ret_uint8(tree, hf_cigi3_3_short_symbol_control_attribute_select1, tvb, offset, 1, cigi_byte_order, &select1);
7013
0
    offset += 1;
7014
7015
0
    proto_tree_add_item_ret_uint8(tree, hf_cigi3_3_short_symbol_control_attribute_select2, tvb, offset, 1, cigi_byte_order, &select2);
7016
0
    offset++;
7017
7018
0
    if (select1 == 9) {
7019
0
        if (!(cigi_byte_order & ENC_LITTLE_ENDIAN)) {
7020
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_red1, tvb, offset, 1, cigi_byte_order);
7021
0
            offset++;
7022
7023
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_green1, tvb, offset, 1, cigi_byte_order);
7024
0
            offset++;
7025
7026
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_blue1, tvb, offset, 1, cigi_byte_order);
7027
0
            offset++;
7028
7029
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_alpha1, tvb, offset, 1, cigi_byte_order);
7030
0
            offset++;
7031
0
        } else {
7032
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_alpha1, tvb, offset, 1, cigi_byte_order);
7033
0
            offset++;
7034
7035
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_blue1, tvb, offset, 1, cigi_byte_order);
7036
0
            offset++;
7037
7038
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_green1, tvb, offset, 1, cigi_byte_order);
7039
0
            offset++;
7040
7041
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_red1, tvb, offset, 1, cigi_byte_order);
7042
0
            offset++;
7043
0
        }
7044
0
    } else {
7045
0
        if (select1 >= 5 && select1 <= 11) {
7046
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_attribute_value1f, tvb, offset, 4, cigi_byte_order);
7047
0
        } else {
7048
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_attribute_value1, tvb, offset, 4, cigi_byte_order);
7049
0
        }
7050
0
        offset += 4;
7051
0
    }
7052
7053
0
    if (select2 == 9) {
7054
0
        if (!(cigi_byte_order & ENC_LITTLE_ENDIAN)) {
7055
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_red2, tvb, offset, 1, cigi_byte_order);
7056
0
            offset++;
7057
7058
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_green2, tvb, offset, 1, cigi_byte_order);
7059
0
            offset++;
7060
7061
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_blue2, tvb, offset, 1, cigi_byte_order);
7062
0
            offset++;
7063
7064
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_alpha2, tvb, offset, 1, cigi_byte_order);
7065
0
            offset++;
7066
0
        } else {
7067
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_alpha2, tvb, offset, 1, cigi_byte_order);
7068
0
            offset++;
7069
7070
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_blue2, tvb, offset, 1, cigi_byte_order);
7071
0
            offset++;
7072
7073
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_green2, tvb, offset, 1, cigi_byte_order);
7074
0
            offset++;
7075
7076
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_red2, tvb, offset, 1, cigi_byte_order);
7077
0
            offset++;
7078
0
        }
7079
7080
0
    } else {
7081
0
        if (select2 >= 5 && select2 <= 11) {
7082
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_attribute_value2f, tvb, offset, 4, cigi_byte_order);
7083
0
        } else {
7084
0
            proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_attribute_value2, tvb, offset, 4, cigi_byte_order);
7085
0
        }
7086
0
        offset += 4;
7087
0
    }
7088
7089
0
    return offset;
7090
0
}
7091
7092
/* CIGI4 Short Symbol Control */
7093
static int
7094
cigi4_add_short_symbol_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
7095
0
{
7096
0
    unsigned offset = 0;
7097
7098
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_symbol_id, tvb, offset, 2, cigi_byte_order);
7099
0
    offset += 2;
7100
7101
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_attribute_select1, tvb, offset, 1, cigi_byte_order);
7102
0
    offset++;
7103
7104
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_attribute_select2, tvb, offset, 1, cigi_byte_order);
7105
0
    offset++;
7106
7107
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_symbol_state, tvb, offset, 1, cigi_byte_order);
7108
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_attach_state, tvb, offset, 1, cigi_byte_order);
7109
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_flash_control, tvb, offset, 1, cigi_byte_order);
7110
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_inherit_color, tvb, offset, 1, cigi_byte_order);
7111
0
    offset += 4;
7112
7113
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_attribute_value1, tvb, offset, 4, cigi_byte_order);
7114
0
    offset += 4;
7115
7116
0
    proto_tree_add_item(tree, hf_cigi3_3_short_symbol_control_attribute_value2, tvb, offset, 4, cigi_byte_order);
7117
0
    offset += 8;
7118
7119
0
    return offset;
7120
0
}
7121
7122
/* CIGI4 Symbol Textured Circle */
7123
static int
7124
cigi4_add_symbol_circle_textured(tvbuff_t* tvb, packet_info *pinfo _U_, proto_tree* tree, void* data _U_)
7125
0
{
7126
0
    proto_tree* field_tree;
7127
0
    proto_item* tf;
7128
7129
0
    unsigned offset = 0;
7130
7131
0
    int ncircles, c, c_field;
7132
7133
0
    proto_tree_add_item(tree, hf_cigi4_symbol_circle_textured_definition_symbol_id, tvb, offset, 2, cigi_byte_order);
7134
0
    offset += 2;
7135
7136
0
    proto_tree_add_item(tree, hf_cigi4_symbol_circle_textured_definition_texture_id, tvb, offset, 2, cigi_byte_order);
7137
0
    offset += 2;
7138
7139
0
    proto_tree_add_item(tree, hf_cigi4_symbol_circle_textured_definition_filter_mode, tvb, offset, 1, cigi_byte_order);
7140
0
    proto_tree_add_item(tree, hf_cigi4_symbol_circle_textured_definition_wrap, tvb, offset, 1, cigi_byte_order);
7141
0
    offset += 8;
7142
7143
0
    ncircles = tvb_reported_length_remaining(tvb, offset) / 40;
7144
7145
0
    for (c = 0; c < ncircles; c++) {
7146
0
        tf = proto_tree_add_item(tree, hf_cigi4_symbol_circle_textured_definition_circles, tvb, offset, 1, cigi_byte_order);
7147
0
        proto_item_append_text(tf, " %u", c);
7148
0
        field_tree = proto_item_add_subtree(tf, ett_cigi4_symbol_circle_textured_definition_circles);
7149
7150
        /* XXX: The length of tvb is determined by a 2 octet packet length value and
7151
         * thus there can be more circles than fields that are declared (unlike
7152
         * CIGI 3). Make sure we don't have a memory error.
7153
         */
7154
0
        c_field = c % array_length(hf_cigi4_symbol_circle_textured_definition_center_u);
7155
7156
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_circle_textured_definition_center_u[c_field], tvb, offset, 4, cigi_byte_order);
7157
0
        offset += 4;
7158
7159
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_circle_textured_definition_center_v[c_field], tvb, offset, 4, cigi_byte_order);
7160
0
        offset += 4;
7161
7162
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_circle_textured_definition_radius[c_field], tvb, offset, 4, cigi_byte_order);
7163
0
        offset += 4;
7164
7165
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_circle_textured_definition_inner_radius[c_field], tvb, offset, 4, cigi_byte_order);
7166
0
        offset += 4;
7167
7168
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_circle_textured_definition_start_angle[c_field], tvb, offset, 4, cigi_byte_order);
7169
0
        offset += 4;
7170
7171
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_circle_textured_definition_end_angle[c_field], tvb, offset, 4, cigi_byte_order);
7172
0
        offset += 4;
7173
7174
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_circle_textured_definition_texture_center_u[c_field], tvb, offset, 4, cigi_byte_order);
7175
0
        offset += 4;
7176
7177
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_circle_textured_definition_texture_center_v[c_field], tvb, offset, 4, cigi_byte_order);
7178
0
        offset += 4;
7179
7180
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_circle_textured_definition_texture_radius[c_field], tvb, offset, 4, cigi_byte_order);
7181
0
        offset += 4;
7182
7183
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_circle_textured_definition_texture_rotation[c_field], tvb, offset, 4, cigi_byte_order);
7184
0
        offset += 4;
7185
0
    }
7186
7187
0
    return offset;
7188
0
}
7189
7190
/* CIGI4 Symbol Textured Polygon */
7191
static int
7192
cigi4_add_symbol_polygon_textured(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
7193
0
{
7194
0
    proto_tree* field_tree;
7195
0
    proto_item* tf;
7196
7197
0
    unsigned offset = 0;
7198
7199
0
    int nvertices, v, v_field;
7200
7201
0
    proto_tree_add_item(tree, hf_cigi4_symbol_polygon_textured_definition_symbol_id, tvb, offset, 2, cigi_byte_order);
7202
0
    offset += 2;
7203
7204
0
    proto_tree_add_item(tree, hf_cigi4_symbol_polygon_textured_definition_texture_id, tvb, offset, 2, cigi_byte_order);
7205
0
    offset += 2;
7206
7207
0
    proto_tree_add_item(tree, hf_cigi4_symbol_polygon_textured_definition_filter_mode, tvb, offset, 1, cigi_byte_order);
7208
0
    proto_tree_add_item(tree, hf_cigi4_symbol_polygon_textured_definition_wrap, tvb, offset, 1, cigi_byte_order);
7209
0
    offset += 8;
7210
7211
0
    nvertices = tvb_reported_length_remaining(tvb, offset) / 16;
7212
7213
0
    for (v = 0; v < nvertices; v++) {
7214
0
        tf = proto_tree_add_item(tree, hf_cigi4_symbol_polygon_textured_definition_vertices, tvb, offset, 1, cigi_byte_order);
7215
0
        proto_item_append_text(tf, " %u", v);
7216
0
        field_tree = proto_item_add_subtree(tf, ett_cigi4_symbol_polygon_textured_definition_vertices);
7217
7218
        /* XXX: The length of tvb is determined by a 2 octet packet length value and
7219
         * thus there can be more vertices than fields that are declared (unlike
7220
         * CIGI 3). Make sure we don't have a memory error.
7221
         */
7222
0
        v_field = v % array_length(hf_cigi4_symbol_polygon_textured_definition_vertex_u);
7223
7224
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_polygon_textured_definition_vertex_u[v_field], tvb, offset, 4, cigi_byte_order);
7225
0
        offset += 4;
7226
7227
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_polygon_textured_definition_vertex_v[v_field], tvb, offset, 4, cigi_byte_order);
7228
0
        offset += 4;
7229
7230
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_polygon_textured_definition_texture_center_u[v_field], tvb, offset, 4, cigi_byte_order);
7231
0
        offset += 4;
7232
7233
0
        proto_tree_add_item(field_tree, hf_cigi4_symbol_polygon_textured_definition_texture_center_v[v_field], tvb, offset, 4, cigi_byte_order);
7234
0
        offset += 4;
7235
0
    }
7236
7237
0
    return offset;
7238
0
}
7239
7240
/* CIGI3 Start of Frame */
7241
static int
7242
cigi3_add_start_of_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7243
0
{
7244
0
    unsigned offset = 0;
7245
7246
0
    proto_tree_add_item(tree, hf_cigi_version, tvb, offset, 1, cigi_byte_order);
7247
0
    offset++;
7248
7249
0
    proto_tree_add_item(tree, hf_cigi3_start_of_frame_db_number, tvb, offset, 1, cigi_byte_order);
7250
0
    offset++;
7251
7252
0
    proto_tree_add_item(tree, hf_cigi3_start_of_frame_ig_status, tvb, offset, 1, cigi_byte_order);
7253
0
    offset++;
7254
7255
0
    proto_tree_add_item(tree, hf_cigi3_start_of_frame_ig_mode, tvb, offset, 1, cigi_byte_order);
7256
0
    proto_tree_add_item(tree, hf_cigi3_start_of_frame_timestamp_valid, tvb, offset, 1, cigi_byte_order);
7257
0
    proto_tree_add_item(tree, hf_cigi3_start_of_frame_earth_reference_model, tvb, offset, 1, cigi_byte_order);
7258
0
    if (cigi_minor_version >= 2) {
7259
0
        proto_tree_add_item(tree, hf_cigi3_2_start_of_frame_minor_version, tvb, offset, 1, cigi_byte_order);
7260
0
    }
7261
0
    offset++;
7262
7263
    /* Get the Byte Swap in Big-Endian so that we can display whether the value
7264
     * is big-endian or little-endian to the user */
7265
0
    proto_tree_add_item(tree, hf_cigi3_byte_swap, tvb, offset, 2, ENC_BIG_ENDIAN);
7266
0
    offset += 2;
7267
7268
0
    if (cigi_minor_version >= 2) {
7269
0
        proto_tree_add_item(tree, hf_cigi3_2_start_of_frame_ig_frame_number, tvb, offset, 4, cigi_byte_order);
7270
0
    } else {
7271
0
        proto_tree_add_item(tree, hf_cigi3_start_of_frame_frame_ctr, tvb, offset, 4, cigi_byte_order);
7272
0
    }
7273
0
    offset += 4;
7274
7275
0
    proto_tree_add_item(tree, hf_cigi3_start_of_frame_timestamp, tvb, offset, 4, cigi_byte_order);
7276
0
    offset += 4;
7277
7278
0
    if (cigi_minor_version >= 2) {
7279
0
        proto_tree_add_item(tree, hf_cigi3_2_start_of_frame_last_host_frame_number, tvb, offset, 4, cigi_byte_order);
7280
0
        offset += 8;
7281
0
    }
7282
7283
0
    return offset;
7284
0
}
7285
7286
/* CIGI3 HAT/HOT Response */
7287
static int
7288
cigi3_add_hat_hot_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7289
0
{
7290
0
    proto_tree* field_tree;
7291
0
    proto_item* tf;
7292
7293
0
    unsigned offset = 0;
7294
7295
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_response_hat_hot_id, tvb, offset, 2, cigi_byte_order);
7296
0
    offset += 2;
7297
7298
0
    tf = proto_tree_add_item(tree, hf_cigi4_hat_hot_response_flags, tvb, offset, 1, cigi_byte_order);
7299
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_hat_hot_response_flags);
7300
0
    proto_tree_add_item(field_tree, hf_cigi3_hat_hot_response_valid, tvb, offset, 1, cigi_byte_order);
7301
0
    proto_tree_add_item(field_tree, hf_cigi3_hat_hot_response_type, tvb, offset, 1, cigi_byte_order);
7302
0
    if (cigi_minor_version >= 2) {
7303
0
        proto_tree_add_item(tree, hf_cigi3_2_hat_hot_response_host_frame_number_lsn, tvb, offset, 1, cigi_byte_order);
7304
0
    }
7305
0
    offset += 4;
7306
7307
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_response_height, tvb, offset, 8, cigi_byte_order);
7308
0
    offset += 8;
7309
7310
0
    return offset;
7311
0
}
7312
7313
/* CIGI4 HAT/HOT Response */
7314
static int
7315
cigi4_add_hat_hot_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
7316
0
{
7317
0
    proto_tree* field_tree;
7318
0
    proto_item* tf;
7319
7320
0
    unsigned offset = 0;
7321
7322
0
    tf = proto_tree_add_item(tree, hf_cigi4_hat_hot_response_flags, tvb, offset, 1, cigi_byte_order);
7323
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_hat_hot_response_flags);
7324
0
    proto_tree_add_item(field_tree, hf_cigi3_hat_hot_response_valid, tvb, offset, 1, cigi_byte_order);
7325
0
    proto_tree_add_item(field_tree, hf_cigi3_hat_hot_response_type, tvb, offset, 1, cigi_byte_order);
7326
0
    proto_tree_add_item(field_tree, hf_cigi3_2_hat_hot_response_host_frame_number_lsn, tvb, offset, 1, cigi_byte_order);
7327
0
    offset += 2;
7328
7329
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_response_hat_hot_id, tvb, offset, 2, cigi_byte_order);
7330
0
    offset += 2;
7331
7332
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_response_height, tvb, offset, 8, cigi_byte_order);
7333
0
    offset += 8;
7334
7335
0
    return offset;
7336
0
}
7337
7338
7339
/* CIGI3 HAT/HOT Extended Response */
7340
static int
7341
cigi3_add_hat_hot_extended_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7342
0
{
7343
0
    proto_tree* field_tree;
7344
0
    proto_item* tf;
7345
7346
0
    unsigned offset = 0;
7347
7348
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_hat_hot_id, tvb, offset, 2, cigi_byte_order);
7349
0
    offset += 2;
7350
7351
0
    tf = proto_tree_add_item(tree, hf_cigi4_hat_hot_extended_response_flags, tvb, offset, 1, cigi_byte_order);
7352
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_hat_hot_extended_response_flags);
7353
0
    proto_tree_add_item(field_tree, hf_cigi3_hat_hot_extended_response_valid, tvb, offset, 1, cigi_byte_order);
7354
0
    if (cigi_minor_version >= 2) {
7355
0
        proto_tree_add_item(field_tree, hf_cigi3_2_hat_hot_extended_response_host_frame_number_lsn, tvb, offset, 1, cigi_byte_order);
7356
0
    }
7357
0
    offset += 4;
7358
7359
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_hat, tvb, offset, 8, cigi_byte_order);
7360
0
    offset += 8;
7361
7362
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_hot, tvb, offset, 8, cigi_byte_order);
7363
0
    offset += 8;
7364
7365
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_material_code, tvb, offset, 4, cigi_byte_order);
7366
0
    offset += 4;
7367
7368
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_normal_vector_azimuth, tvb, offset, 4, cigi_byte_order);
7369
0
    offset += 4;
7370
7371
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_normal_vector_elevation, tvb, offset, 4, cigi_byte_order);
7372
0
    offset += 8;
7373
7374
0
    return offset;
7375
0
}
7376
7377
/* CIGI4 HAT/HOT Extended Response */
7378
static int
7379
cigi4_add_hat_hot_extended_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
7380
0
{
7381
0
    proto_tree* field_tree;
7382
0
    proto_item* tf;
7383
7384
0
    unsigned offset = 0;
7385
7386
0
    tf = proto_tree_add_item(tree, hf_cigi4_hat_hot_extended_response_flags, tvb, offset, 1, cigi_byte_order);
7387
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_hat_hot_extended_response_flags);
7388
0
    proto_tree_add_item(field_tree, hf_cigi3_hat_hot_extended_response_valid, tvb, offset, 1, cigi_byte_order);
7389
0
    proto_tree_add_item(field_tree, hf_cigi3_2_hat_hot_extended_response_host_frame_number_lsn, tvb, offset, 1, cigi_byte_order);
7390
0
    offset += 2;
7391
7392
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_hat_hot_id, tvb, offset, 2, cigi_byte_order);
7393
0
    offset += 2;
7394
7395
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_hat, tvb, offset, 8, cigi_byte_order);
7396
0
    offset += 8;
7397
7398
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_hot, tvb, offset, 8, cigi_byte_order);
7399
0
    offset += 8;
7400
7401
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_material_code, tvb, offset, 4, cigi_byte_order);
7402
0
    offset += 4;
7403
7404
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_normal_vector_azimuth, tvb, offset, 4, cigi_byte_order);
7405
0
    offset += 4;
7406
7407
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_extended_response_normal_vector_elevation, tvb, offset, 4, cigi_byte_order);
7408
0
    offset += 8;
7409
7410
0
    return offset;
7411
0
}
7412
7413
7414
/* CIGI3 Line of Sight Response */
7415
static int
7416
cigi3_add_line_of_sight_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7417
0
{
7418
0
    unsigned offset = 0;
7419
7420
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_los_id, tvb, offset, 2, cigi_byte_order);
7421
0
    offset += 2;
7422
7423
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_valid, tvb, offset, 1, cigi_byte_order);
7424
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_entity_id_valid, tvb, offset, 1, cigi_byte_order);
7425
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_visible, tvb, offset, 1, cigi_byte_order);
7426
0
    if (cigi_minor_version >= 2) {
7427
0
        proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_response_host_frame_number_lsn, tvb, offset, 1, cigi_byte_order);
7428
0
    }
7429
0
    offset++;
7430
7431
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_count, tvb, offset, 1, cigi_byte_order);
7432
0
    offset++;
7433
7434
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_entity_id, tvb, offset, 2, cigi_byte_order);
7435
0
    offset += 2;
7436
7437
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_range, tvb, offset, 8, cigi_byte_order);
7438
0
    offset += 8;
7439
7440
0
    return offset;
7441
0
}
7442
7443
/* CIGI4 Line of Sight Response */
7444
static int
7445
cigi4_add_line_of_sight_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
7446
0
{
7447
0
    unsigned offset = 0;
7448
7449
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_los_id, tvb, offset, 2, cigi_byte_order);
7450
0
    offset += 2;
7451
7452
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_entity_id, tvb, offset, 2, cigi_byte_order);
7453
0
    offset += 2;
7454
7455
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_valid, tvb, offset, 1, cigi_byte_order);
7456
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_entity_id_valid, tvb, offset, 1, cigi_byte_order);
7457
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_visible, tvb, offset, 1, cigi_byte_order);
7458
0
    proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_response_host_frame_number_lsn, tvb, offset, 1, cigi_byte_order);
7459
0
    offset++;
7460
7461
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_count, tvb, offset, 1, cigi_byte_order);
7462
0
    offset += 7;
7463
7464
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_response_range, tvb, offset, 8, cigi_byte_order);
7465
0
    offset += 8;
7466
7467
0
    return offset;
7468
0
}
7469
7470
/* CIGI3 Line of Sight Extended Response */
7471
static int
7472
cigi3_add_line_of_sight_extended_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7473
0
{
7474
0
    unsigned offset = 0;
7475
7476
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_los_id, tvb, offset, 2, cigi_byte_order);
7477
0
    offset += 2;
7478
7479
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_valid, tvb, offset, 1, cigi_byte_order);
7480
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_entity_id_valid, tvb, offset, 1, cigi_byte_order);
7481
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_range_valid, tvb, offset, 1, cigi_byte_order);
7482
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_visible, tvb, offset, 1, cigi_byte_order);
7483
0
    if (cigi_minor_version >= 2) {
7484
0
        proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_extended_response_host_frame_number_lsn, tvb, offset, 1, cigi_byte_order);
7485
0
    } else {
7486
0
        proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_intersection_coord, tvb, offset, 1, cigi_byte_order);
7487
0
    }
7488
0
    offset++;
7489
7490
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_response_count, tvb, offset, 1, cigi_byte_order);
7491
0
    offset++;
7492
7493
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_entity_id, tvb, offset, 2, cigi_byte_order);
7494
0
    offset += 2;
7495
7496
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_range, tvb, offset, 8, cigi_byte_order);
7497
0
    offset += 8;
7498
7499
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_lat_xoff, tvb, offset, 8, cigi_byte_order);
7500
0
    offset += 8;
7501
7502
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_lon_yoff, tvb, offset, 8, cigi_byte_order);
7503
0
    offset += 8;
7504
7505
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_alt_zoff, tvb, offset, 8, cigi_byte_order);
7506
0
    offset += 8;
7507
7508
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_red, tvb, offset, 1, cigi_byte_order);
7509
0
    offset++;
7510
7511
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_green, tvb, offset, 1, cigi_byte_order);
7512
0
    offset++;
7513
7514
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_blue, tvb, offset, 1, cigi_byte_order);
7515
0
    offset++;
7516
7517
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_alpha, tvb, offset, 1, cigi_byte_order);
7518
0
    offset++;
7519
7520
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_material_code, tvb, offset, 4, cigi_byte_order);
7521
0
    offset += 4;
7522
7523
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_normal_vector_azimuth, tvb, offset, 4, cigi_byte_order);
7524
0
    offset += 4;
7525
7526
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_normal_vector_elevation, tvb, offset, 4, cigi_byte_order);
7527
0
    offset += 4;
7528
7529
0
    return offset;
7530
0
}
7531
7532
/* CIGI4 Line of Sight Extended Response */
7533
static int
7534
cigi4_add_line_of_sight_extended_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
7535
0
{
7536
0
    unsigned offset = 0;
7537
7538
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_los_id, tvb, offset, 2, cigi_byte_order);
7539
0
    offset += 2;
7540
7541
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_entity_id, tvb, offset, 2, cigi_byte_order);
7542
0
    offset += 2;
7543
7544
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_valid, tvb, offset, 1, cigi_byte_order);
7545
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_entity_id_valid, tvb, offset, 1, cigi_byte_order);
7546
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_range_valid, tvb, offset, 1, cigi_byte_order);
7547
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_visible, tvb, offset, 1, cigi_byte_order);
7548
0
    proto_tree_add_item(tree, hf_cigi3_2_line_of_sight_extended_response_host_frame_number_lsn, tvb, offset, 1, cigi_byte_order);
7549
0
    offset++;
7550
7551
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_response_count, tvb, offset, 1, cigi_byte_order);
7552
0
    offset += 7;
7553
7554
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_range, tvb, offset, 8, cigi_byte_order);
7555
0
    offset += 8;
7556
7557
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_lat_xoff, tvb, offset, 8, cigi_byte_order);
7558
0
    offset += 8;
7559
7560
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_lon_yoff, tvb, offset, 8, cigi_byte_order);
7561
0
    offset += 8;
7562
7563
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_alt_zoff, tvb, offset, 8, cigi_byte_order);
7564
0
    offset += 8;
7565
7566
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_red, tvb, offset, 1, cigi_byte_order);
7567
0
    offset++;
7568
7569
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_green, tvb, offset, 1, cigi_byte_order);
7570
0
    offset++;
7571
7572
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_blue, tvb, offset, 1, cigi_byte_order);
7573
0
    offset++;
7574
7575
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_alpha, tvb, offset, 1, cigi_byte_order);
7576
0
    offset++;
7577
7578
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_material_code, tvb, offset, 4, cigi_byte_order);
7579
0
    offset += 4;
7580
7581
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_normal_vector_azimuth, tvb, offset, 4, cigi_byte_order);
7582
0
    offset += 4;
7583
7584
0
    proto_tree_add_item(tree, hf_cigi3_line_of_sight_extended_response_normal_vector_elevation, tvb, offset, 4, cigi_byte_order);
7585
0
    offset += 4;
7586
7587
0
    return offset;
7588
0
}
7589
7590
/* CIGI3 Sensor Response */
7591
static int
7592
cigi3_add_sensor_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7593
0
{
7594
0
    unsigned offset = 0;
7595
7596
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_view_id, tvb, offset, 2, cigi_byte_order);
7597
0
    offset += 2;
7598
7599
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_sensor_id, tvb, offset, 1, cigi_byte_order);
7600
0
    offset++;
7601
7602
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_sensor_status, tvb, offset, 1, cigi_byte_order);
7603
0
    offset += 3;
7604
7605
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_gate_x_size, tvb, offset, 2, cigi_byte_order);
7606
0
    offset += 2;
7607
7608
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_gate_y_size, tvb, offset, 2, cigi_byte_order);
7609
0
    offset += 2;
7610
7611
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_gate_x_pos, tvb, offset, 4, cigi_byte_order);
7612
0
    offset += 4;
7613
7614
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_gate_y_pos, tvb, offset, 4, cigi_byte_order);
7615
0
    offset += 4;
7616
7617
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_frame_ctr, tvb, offset, 4, cigi_byte_order);
7618
0
    offset += 4;
7619
7620
0
    return offset;
7621
0
}
7622
7623
/* CIGI4 Sensor Response */
7624
static int
7625
cigi4_add_sensor_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
7626
0
{
7627
0
    unsigned offset = 0;
7628
7629
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_sensor_id, tvb, offset, 1, cigi_byte_order);
7630
0
    offset++;
7631
7632
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_sensor_status, tvb, offset, 1, cigi_byte_order);
7633
0
    offset++;
7634
7635
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_view_id, tvb, offset, 2, cigi_byte_order);
7636
0
    offset += 2;
7637
7638
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_gate_x_size, tvb, offset, 2, cigi_byte_order);
7639
0
    offset += 2;
7640
7641
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_gate_y_size, tvb, offset, 2, cigi_byte_order);
7642
0
    offset += 2;
7643
7644
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_gate_x_pos, tvb, offset, 4, cigi_byte_order);
7645
0
    offset += 4;
7646
7647
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_gate_y_pos, tvb, offset, 4, cigi_byte_order);
7648
0
    offset += 4;
7649
7650
0
    proto_tree_add_item(tree, hf_cigi3_sensor_response_frame_ctr, tvb, offset, 4, cigi_byte_order);
7651
0
    offset += 4;
7652
7653
0
    return offset;
7654
0
}
7655
7656
/* CIGI3 Sensor Extended Response */
7657
static int
7658
cigi3_add_sensor_extended_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7659
0
{
7660
0
    unsigned offset = 0;
7661
7662
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_view_id, tvb, offset, 2, cigi_byte_order);
7663
0
    offset += 2;
7664
7665
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_sensor_id, tvb, offset, 1, cigi_byte_order);
7666
0
    offset++;
7667
7668
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_sensor_status, tvb, offset, 1, cigi_byte_order);
7669
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_entity_id_valid, tvb, offset, 1, cigi_byte_order);
7670
0
    offset++;
7671
7672
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_entity_id, tvb, offset, 2, cigi_byte_order);
7673
0
    offset += 2;
7674
7675
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_gate_x_size, tvb, offset, 2, cigi_byte_order);
7676
0
    offset += 2;
7677
7678
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_gate_y_size, tvb, offset, 2, cigi_byte_order);
7679
0
    offset += 2;
7680
7681
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_gate_x_pos, tvb, offset, 4, cigi_byte_order);
7682
0
    offset += 4;
7683
7684
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_gate_y_pos, tvb, offset, 4, cigi_byte_order);
7685
0
    offset += 4;
7686
7687
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_frame_ctr, tvb, offset, 4, cigi_byte_order);
7688
0
    offset += 4;
7689
7690
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_track_lat, tvb, offset, 8, cigi_byte_order);
7691
0
    offset += 8;
7692
7693
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_track_lon, tvb, offset, 8, cigi_byte_order);
7694
0
    offset += 8;
7695
7696
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_track_alt, tvb, offset, 8, cigi_byte_order);
7697
0
    offset += 8;
7698
7699
0
    return offset;
7700
0
}
7701
7702
/* CIGI4 Sensor Extended Response */
7703
static int
7704
cigi4_add_sensor_extended_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
7705
0
{
7706
0
    unsigned offset = 0;
7707
7708
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_view_id, tvb, offset, 2, cigi_byte_order);
7709
0
    offset += 2;
7710
7711
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_entity_id, tvb, offset, 2, cigi_byte_order);
7712
0
    offset += 2;
7713
7714
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_sensor_id, tvb, offset, 1, cigi_byte_order);
7715
0
    offset++;
7716
7717
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_sensor_status, tvb, offset, 1, cigi_byte_order);
7718
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_entity_id_valid, tvb, offset, 1, cigi_byte_order);
7719
0
    offset += 3;
7720
7721
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_gate_x_size, tvb, offset, 2, cigi_byte_order);
7722
0
    offset += 2;
7723
7724
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_gate_y_size, tvb, offset, 2, cigi_byte_order);
7725
0
    offset += 2;
7726
7727
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_gate_x_pos, tvb, offset, 4, cigi_byte_order);
7728
0
    offset += 4;
7729
7730
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_gate_y_pos, tvb, offset, 4, cigi_byte_order);
7731
0
    offset += 4;
7732
7733
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_frame_ctr, tvb, offset, 4, cigi_byte_order);
7734
0
    offset += 8;
7735
7736
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_track_lat, tvb, offset, 8, cigi_byte_order);
7737
0
    offset += 8;
7738
7739
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_track_lon, tvb, offset, 8, cigi_byte_order);
7740
0
    offset += 8;
7741
7742
0
    proto_tree_add_item(tree, hf_cigi3_sensor_extended_response_track_alt, tvb, offset, 8, cigi_byte_order);
7743
0
    offset += 8;
7744
7745
0
    return offset;
7746
0
}
7747
7748
/* CIGI3 Position Response */
7749
static int
7750
cigi3_add_position_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7751
0
{
7752
0
    unsigned offset = 0;
7753
7754
0
    proto_tree_add_item(tree, hf_cigi3_position_response_object_id, tvb, offset, 2, cigi_byte_order);
7755
0
    offset += 2;
7756
7757
0
    proto_tree_add_item(tree, hf_cigi3_position_response_part_id, tvb, offset, 1, cigi_byte_order);
7758
0
    offset++;
7759
7760
0
    proto_tree_add_item(tree, hf_cigi3_position_response_object_class, tvb, offset, 1, cigi_byte_order);
7761
0
    proto_tree_add_item(tree, hf_cigi3_position_response_coord_system, tvb, offset, 1, cigi_byte_order);
7762
0
    offset += 3;
7763
7764
0
    proto_tree_add_item(tree, hf_cigi3_position_response_lat_xoff, tvb, offset, 8, cigi_byte_order);
7765
0
    offset += 8;
7766
7767
0
    proto_tree_add_item(tree, hf_cigi3_position_response_lon_yoff, tvb, offset, 8, cigi_byte_order);
7768
0
    offset += 8;
7769
7770
0
    proto_tree_add_item(tree, hf_cigi3_position_response_alt_zoff, tvb, offset, 8, cigi_byte_order);
7771
0
    offset += 8;
7772
7773
0
    proto_tree_add_item(tree, hf_cigi3_position_response_roll, tvb, offset, 4, cigi_byte_order);
7774
0
    offset += 4;
7775
7776
0
    proto_tree_add_item(tree, hf_cigi3_position_response_pitch, tvb, offset, 4, cigi_byte_order);
7777
0
    offset += 4;
7778
7779
0
    proto_tree_add_item(tree, hf_cigi3_position_response_yaw, tvb, offset, 4, cigi_byte_order);
7780
0
    offset += 8;
7781
7782
0
    return offset;
7783
0
}
7784
7785
/* CIGI4 Position Response */
7786
static int
7787
cigi4_add_position_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
7788
0
{
7789
0
    unsigned offset = 0;
7790
7791
0
    proto_tree_add_item(tree, hf_cigi3_position_response_part_id, tvb, offset, 1, cigi_byte_order);
7792
0
    offset++;
7793
7794
0
    proto_tree_add_item(tree, hf_cigi3_position_response_object_class, tvb, offset, 1, cigi_byte_order);
7795
0
    proto_tree_add_item(tree, hf_cigi3_position_response_coord_system, tvb, offset, 1, cigi_byte_order);
7796
0
    offset++;
7797
7798
0
    proto_tree_add_item(tree, hf_cigi3_position_response_object_id, tvb, offset, 2, cigi_byte_order);
7799
0
    offset += 2;
7800
7801
0
    proto_tree_add_item(tree, hf_cigi3_position_response_lat_xoff, tvb, offset, 8, cigi_byte_order);
7802
0
    offset += 8;
7803
7804
0
    proto_tree_add_item(tree, hf_cigi3_position_response_lon_yoff, tvb, offset, 8, cigi_byte_order);
7805
0
    offset += 8;
7806
7807
0
    proto_tree_add_item(tree, hf_cigi3_position_response_alt_zoff, tvb, offset, 8, cigi_byte_order);
7808
0
    offset += 8;
7809
7810
0
    proto_tree_add_item(tree, hf_cigi3_position_response_roll, tvb, offset, 4, cigi_byte_order);
7811
0
    offset += 4;
7812
7813
0
    proto_tree_add_item(tree, hf_cigi3_position_response_pitch, tvb, offset, 4, cigi_byte_order);
7814
0
    offset += 4;
7815
7816
0
    proto_tree_add_item(tree, hf_cigi3_position_response_yaw, tvb, offset, 4, cigi_byte_order);
7817
0
    offset += 8;
7818
7819
0
    return offset;
7820
0
}
7821
7822
/* CIGI3 Weather Conditions Response */
7823
static int
7824
cigi3_add_weather_conditions_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7825
0
{
7826
0
    unsigned offset = 0;
7827
7828
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_request_id, tvb, offset, 1, cigi_byte_order);
7829
0
    offset++;
7830
7831
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_humidity, tvb, offset, 1, cigi_byte_order);
7832
0
    offset++;
7833
7834
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_air_temp, tvb, offset, 4, cigi_byte_order);
7835
0
    offset += 4;
7836
7837
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_visibility_range, tvb, offset, 4, cigi_byte_order);
7838
0
    offset += 4;
7839
7840
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_horiz_speed, tvb, offset, 4, cigi_byte_order);
7841
0
    offset += 4;
7842
7843
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_vert_speed, tvb, offset, 4, cigi_byte_order);
7844
0
    offset += 4;
7845
7846
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_wind_direction, tvb, offset, 4, cigi_byte_order);
7847
0
    offset += 4;
7848
7849
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_barometric_pressure, tvb, offset, 4, cigi_byte_order);
7850
0
    offset += 8;
7851
7852
0
    return offset;
7853
0
}
7854
7855
/* CIGI4 Weather Conditions Response */
7856
static int
7857
cigi4_add_weather_conditions_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
7858
0
{
7859
0
    unsigned offset = 0;
7860
7861
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_request_id, tvb, offset, 1, cigi_byte_order);
7862
0
    offset++;
7863
7864
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_humidity, tvb, offset, 1, cigi_byte_order);
7865
0
    offset += 3;
7866
7867
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_air_temp, tvb, offset, 4, cigi_byte_order);
7868
0
    offset += 4;
7869
7870
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_visibility_range, tvb, offset, 4, cigi_byte_order);
7871
0
    offset += 4;
7872
7873
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_horiz_speed, tvb, offset, 4, cigi_byte_order);
7874
0
    offset += 4;
7875
7876
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_vert_speed, tvb, offset, 4, cigi_byte_order);
7877
0
    offset += 4;
7878
7879
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_wind_direction, tvb, offset, 4, cigi_byte_order);
7880
0
    offset += 4;
7881
7882
0
    proto_tree_add_item(tree, hf_cigi3_weather_conditions_response_barometric_pressure, tvb, offset, 4, cigi_byte_order);
7883
0
    offset += 4;
7884
7885
0
    return offset;
7886
0
}
7887
7888
/* CIGI3 Aerosol Concentration Response */
7889
static int
7890
cigi3_add_aerosol_concentration_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7891
0
{
7892
0
    unsigned offset = 0;
7893
7894
0
    proto_tree_add_item(tree, hf_cigi3_aerosol_concentration_response_request_id, tvb, offset, 1, cigi_byte_order);
7895
0
    offset++;
7896
7897
0
    proto_tree_add_item(tree, hf_cigi3_aerosol_concentration_response_layer_id, tvb, offset, 1, cigi_byte_order);
7898
0
    offset++;
7899
7900
0
    proto_tree_add_item(tree, hf_cigi3_aerosol_concentration_response_aerosol_concentration, tvb, offset, 4, cigi_byte_order);
7901
0
    offset += 4;
7902
7903
0
    return offset;
7904
0
}
7905
7906
/* CIGI4 Aerosol Concentration Response */
7907
static int
7908
cigi4_add_aerosol_concentration_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
7909
0
{
7910
0
    unsigned offset = 0;
7911
7912
0
    proto_tree_add_item(tree, hf_cigi3_aerosol_concentration_response_request_id, tvb, offset, 1, cigi_byte_order);
7913
0
    offset++;
7914
7915
0
    proto_tree_add_item(tree, hf_cigi3_aerosol_concentration_response_layer_id, tvb, offset, 1, cigi_byte_order);
7916
0
    offset += 3;
7917
7918
0
    proto_tree_add_item(tree, hf_cigi3_aerosol_concentration_response_aerosol_concentration, tvb, offset, 4, cigi_byte_order);
7919
0
    offset += 8;
7920
7921
0
    return offset;
7922
0
}
7923
7924
/* CIGI3 Maritime Surface Conditions Response */
7925
static int
7926
cigi3_add_maritime_surface_conditions_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7927
0
{
7928
0
    unsigned offset = 0;
7929
7930
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_response_request_id, tvb, offset, 1, cigi_byte_order);
7931
0
    offset += 2;
7932
7933
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_response_sea_surface_height, tvb, offset, 4, cigi_byte_order);
7934
0
    offset += 4;
7935
7936
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_response_surface_water_temp, tvb, offset, 4, cigi_byte_order);
7937
0
    offset += 4;
7938
7939
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_response_surface_clarity, tvb, offset, 4, cigi_byte_order);
7940
0
    offset += 4;
7941
7942
0
    return offset;
7943
0
}
7944
7945
/* CIGI4 Maritime Surface Conditions Response */
7946
static int
7947
cigi4_add_maritime_surface_conditions_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
7948
0
{
7949
0
    unsigned offset = 0;
7950
7951
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_response_request_id, tvb, offset, 1, cigi_byte_order);
7952
0
    offset += 4;
7953
7954
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_response_sea_surface_height, tvb, offset, 4, cigi_byte_order);
7955
0
    offset += 4;
7956
7957
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_response_surface_water_temp, tvb, offset, 4, cigi_byte_order);
7958
0
    offset += 4;
7959
7960
0
    proto_tree_add_item(tree, hf_cigi3_maritime_surface_conditions_response_surface_clarity, tvb, offset, 4, cigi_byte_order);
7961
0
    offset += 8;
7962
7963
0
    return offset;
7964
0
}
7965
7966
/* CIGI3 Terrestrial Surface Conditions Response */
7967
static int
7968
cigi3_add_terrestrial_surface_conditions_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7969
0
{
7970
0
    unsigned offset = 0;
7971
7972
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_response_request_id, tvb, offset, 1, cigi_byte_order);
7973
0
    offset += 2;
7974
7975
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_response_surface_id, tvb, offset, 4, cigi_byte_order);
7976
0
    offset += 4;
7977
7978
0
    return offset;
7979
0
}
7980
7981
/* CIGI4 Terrestrial Surface Conditions Response */
7982
static int
7983
cigi4_add_terrestrial_surface_conditions_response(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
7984
0
{
7985
0
    unsigned offset = 0;
7986
7987
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_response_request_id, tvb, offset, 1, cigi_byte_order);
7988
0
    offset += 4;
7989
7990
0
    proto_tree_add_item(tree, hf_cigi3_terrestrial_surface_conditions_response_surface_id, tvb, offset, 4, cigi_byte_order);
7991
0
    offset += 8;
7992
7993
0
    return offset;
7994
0
}
7995
7996
/* CIGI3 Collision Detection Segment Notification */
7997
static int
7998
cigi3_add_collision_detection_segment_notification(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
7999
0
{
8000
0
    unsigned offset = 0;
8001
8002
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_entity_id, tvb, offset, 2, cigi_byte_order);
8003
0
    offset += 2;
8004
8005
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_segment_id, tvb, offset, 1, cigi_byte_order);
8006
0
    offset++;
8007
8008
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_type, tvb, offset, 1, cigi_byte_order);
8009
0
    offset++;
8010
8011
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_contacted_entity_id, tvb, offset, 2, cigi_byte_order);
8012
0
    offset += 2;
8013
8014
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_material_code, tvb, offset, 4, cigi_byte_order);
8015
0
    offset += 4;
8016
8017
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_intersection_distance, tvb, offset, 4, cigi_byte_order);
8018
0
    offset += 4;
8019
8020
0
    return offset;
8021
0
}
8022
8023
/* CIGI4 Collision Detection Segment Notification */
8024
static int
8025
cigi4_add_collision_detection_segment_notification(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
8026
0
{
8027
0
    unsigned offset = 0;
8028
8029
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_entity_id, tvb, offset, 2, cigi_byte_order);
8030
0
    offset += 2;
8031
8032
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_contacted_entity_id, tvb, offset, 2, cigi_byte_order);
8033
0
    offset += 2;
8034
8035
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_segment_id, tvb, offset, 1, cigi_byte_order);
8036
0
    offset++;
8037
8038
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_type, tvb, offset, 1, cigi_byte_order);
8039
0
    offset += 3;
8040
8041
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_material_code, tvb, offset, 4, cigi_byte_order);
8042
0
    offset += 4;
8043
8044
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_segment_notification_intersection_distance, tvb, offset, 4, cigi_byte_order);
8045
0
    offset += 8;
8046
8047
0
    return offset;
8048
0
}
8049
8050
/* CIGI3 Collision Detection Volume Notification */
8051
static int
8052
cigi3_add_collision_detection_volume_notification(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
8053
0
{
8054
0
    unsigned offset = 0;
8055
8056
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_notification_entity_id, tvb, offset, 2, cigi_byte_order);
8057
0
    offset += 2;
8058
8059
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_notification_volume_id, tvb, offset, 1, cigi_byte_order);
8060
0
    offset++;
8061
8062
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_notification_type, tvb, offset, 1, cigi_byte_order);
8063
0
    offset++;
8064
8065
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_notification_contacted_entity_id, tvb, offset, 2, cigi_byte_order);
8066
0
    offset += 2;
8067
8068
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_notification_contacted_volume_id, tvb, offset, 1, cigi_byte_order);
8069
0
    offset += 8;
8070
8071
0
    return offset;
8072
0
}
8073
8074
/* CIGI4 Collision Detection Volume Notification */
8075
static int
8076
cigi4_add_collision_detection_volume_notification(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
8077
0
{
8078
0
    unsigned offset = 0;
8079
8080
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_notification_entity_id, tvb, offset, 2, cigi_byte_order);
8081
0
    offset += 2;
8082
8083
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_notification_contacted_entity_id, tvb, offset, 2, cigi_byte_order);
8084
0
    offset += 2;
8085
8086
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_notification_volume_id, tvb, offset, 1, cigi_byte_order);
8087
0
    offset++;
8088
8089
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_notification_type, tvb, offset, 1, cigi_byte_order);
8090
0
    offset++;
8091
8092
0
    proto_tree_add_item(tree, hf_cigi3_collision_detection_volume_notification_contacted_volume_id, tvb, offset, 1, cigi_byte_order);
8093
0
    offset += 6;
8094
8095
0
    return offset;
8096
0
}
8097
8098
/* CIGI3 Animation Stop Notification */
8099
static int
8100
cigi3_add_animation_stop_notification(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
8101
0
{
8102
0
    unsigned offset = 0;
8103
8104
0
    proto_tree_add_item(tree, hf_cigi3_animation_stop_notification_entity_id, tvb, offset, 2, cigi_byte_order);
8105
0
    offset += 6;
8106
8107
0
    return offset;
8108
0
}
8109
8110
/* CIGI4 Animation Stop Notification */
8111
static int
8112
cigi4_add_animation_stop_notification(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
8113
0
{
8114
0
    unsigned offset = 0;
8115
8116
0
    proto_tree_add_item(tree, hf_cigi3_animation_stop_notification_entity_id, tvb, offset, 2, cigi_byte_order);
8117
0
    offset += 4;
8118
8119
0
    return offset;
8120
0
}
8121
8122
/* CIGI3 Event Notification */
8123
static int
8124
cigi3_add_event_notification(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
8125
0
{
8126
0
    unsigned offset = 0;
8127
8128
0
    proto_tree_add_item(tree, hf_cigi3_event_notification_event_id, tvb, offset, 2, cigi_byte_order);
8129
0
    offset += 2;
8130
8131
0
    proto_tree_add_item(tree, hf_cigi3_event_notification_data_1, tvb, offset, 4, cigi_byte_order);
8132
0
    offset += 4;
8133
8134
0
    proto_tree_add_item(tree, hf_cigi3_event_notification_data_2, tvb, offset, 4, cigi_byte_order);
8135
0
    offset += 4;
8136
8137
0
    proto_tree_add_item(tree, hf_cigi3_event_notification_data_3, tvb, offset, 4, cigi_byte_order);
8138
0
    offset += 4;
8139
8140
0
    return offset;
8141
0
}
8142
8143
/* CIGI4 Event Notification */
8144
static int
8145
cigi4_add_event_notification(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
8146
0
{
8147
0
    unsigned offset = 0;
8148
8149
0
    proto_tree_add_item(tree, hf_cigi3_event_notification_event_id, tvb, offset, 2, cigi_byte_order);
8150
0
    offset += 4;
8151
8152
0
    proto_tree_add_item(tree, hf_cigi3_event_notification_data_1, tvb, offset, 4, cigi_byte_order);
8153
0
    offset += 4;
8154
8155
0
    proto_tree_add_item(tree, hf_cigi3_event_notification_data_2, tvb, offset, 4, cigi_byte_order);
8156
0
    offset += 4;
8157
8158
0
    proto_tree_add_item(tree, hf_cigi3_event_notification_data_3, tvb, offset, 4, cigi_byte_order);
8159
0
    offset += 8;
8160
8161
0
    return offset;
8162
0
}
8163
8164
/* CIGI3 Image Generator Message */
8165
static int
8166
cigi3_add_image_generator_message(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
8167
0
{
8168
0
    unsigned offset = 0;
8169
8170
0
    proto_tree_add_item(tree, hf_cigi3_image_generator_message_id, tvb, offset, 2, cigi_byte_order);
8171
0
    offset += 2;
8172
8173
0
    if (tvb_reported_length_remaining(tvb, offset) < 2) {
8174
0
        proto_tree_add_expert_format(tree, pinfo, &ei_cigi_invalid_len, tvb, 0,
8175
0
            tvb_reported_length(tvb), "Insufficient room for image generator message");
8176
0
    } else {
8177
0
        proto_tree_add_item(tree, hf_cigi3_image_generator_message_message, tvb,
8178
0
            offset, tvb_reported_length_remaining(tvb, offset), cigi_byte_order);
8179
0
    }
8180
8181
0
    return (int)tvb_reported_length(tvb);
8182
0
}
8183
8184
/* CIGI4 Image Generator Message */
8185
static int
8186
cigi4_add_image_generator_message(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void *data _U_)
8187
0
{
8188
0
    unsigned offset = 0;
8189
8190
0
    proto_tree_add_item(tree, hf_cigi3_image_generator_message_id, tvb, offset, 2, cigi_byte_order);
8191
    // 2 bytes Reserved (padding to multiple of 4)
8192
0
    offset += 4;
8193
8194
0
    if (tvb_reported_length_remaining(tvb, offset) < 2) {
8195
0
        proto_tree_add_expert_format(tree, pinfo, &ei_cigi_invalid_len, tvb, 0,
8196
0
            tvb_reported_length(tvb), "Insufficient room for image generator message");
8197
0
    } else {
8198
0
        proto_tree_add_item(tree, hf_cigi3_image_generator_message_message, tvb,
8199
0
            offset, tvb_reported_length_remaining(tvb, offset), cigi_byte_order);
8200
0
    }
8201
8202
0
    return (int)tvb_reported_length(tvb);
8203
0
}
8204
8205
/* Create the tree for CIGI 4 */
8206
static void
8207
cigi4_add_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *cigi_tree)
8208
0
{
8209
0
    unsigned offset = 0;
8210
0
    unsigned length = 0;
8211
0
    unsigned init_offset = 0;
8212
8213
0
    int packet_id = 0;
8214
0
    int packet_size = 0;
8215
0
    unsigned packet_length = 0;
8216
0
    uint16_t byte_swap = 0;
8217
8218
0
    proto_tree* cigi_packet_tree = NULL;
8219
0
    proto_item* tipacket, *ti;
8220
0
    tvbuff_t* next_tvb;
8221
0
    int hf_cigi4_packet;
8222
8223
0
    length = tvb_reported_length(tvb);
8224
8225
    /* Each iteration through this loop is meant to be a separate cigi packet
8226
     * therefore it is okay to assume that at the top of this look we are given
8227
     * a new packet to dissect. */
8228
0
    while ( offset < length ) {
8229
8230
0
        byte_swap = tvb_get_ntohs(tvb, offset);
8231
        /* If we have the SOF or IG Control packet set the byte order */
8232
        //if ((packet_id == CIGI4_PACKET_ID_IG_CONTROL || packet_id == CIGI4_PACKET_ID_START_OF_FRAME) && global_cigi_byte_order == CIGI_BYTE_ORDER_FROM_PACKET) {
8233
            //If the parser detects a zero in the "leftmost" byte, then the message is in Big Endian byte
8234
0
            if ((byte_swap & 0xFF00) == 0) {
8235
0
                cigi_byte_order = ENC_BIG_ENDIAN;
8236
0
            }
8237
0
            else {
8238
0
                cigi_byte_order = ENC_LITTLE_ENDIAN;
8239
0
            }
8240
        //}
8241
0
        packet_id = tvb_get_uint16(tvb, offset + 2, cigi_byte_order);
8242
0
        packet_size = tvb_get_uint16(tvb, offset, cigi_byte_order);
8243
8244
        /* If we have the start of frame or IG Control packet set the version */
8245
0
        if ( ( packet_id == CIGI4_PACKET_ID_IG_CONTROL || packet_id == CIGI4_PACKET_ID_START_OF_FRAME ) && global_cigi_version == CIGI_VERSION_FROM_PACKET ) {
8246
0
            cigi_version = tvb_get_uint8(tvb, 4);
8247
8248
0
            if (( packet_size == CIGI4_PACKET_SIZE_IG_CONTROL && packet_id == CIGI4_PACKET_ID_IG_CONTROL ) ||
8249
0
                ( packet_size == CIGI4_PACKET_SIZE_START_OF_FRAME && packet_id == CIGI4_PACKET_ID_START_OF_FRAME )) {
8250
0
               cigi_minor_version = tvb_get_uint8(tvb, 7) >> 4;
8251
0
            } else {
8252
0
               cigi_minor_version = 0;
8253
0
            }
8254
0
        }
8255
8256
        /* Add the subtree for the packet */
8257
0
        if ( packet_id == CIGI4_PACKET_ID_IG_CONTROL ) {
8258
0
            hf_cigi4_packet = hf_cigi3_ig_control;
8259
0
            packet_length = CIGI4_PACKET_SIZE_IG_CONTROL;
8260
0
        } else if ( packet_id == CIGI4_PACKET_ID_ENTITY_POSITION ) {
8261
0
            hf_cigi4_packet = hf_cigi4_entity_position;
8262
0
            packet_length = CIGI4_PACKET_SIZE_ENTITY_POSITION;
8263
0
        } else if ( packet_id == CIGI4_PACKET_ID_CONFORMAL_CLAMPED_ENTITY_POSITION ) {
8264
0
            hf_cigi4_packet = hf_cigi4_conformal_clamped_entity_position;
8265
0
            packet_length = CIGI4_PACKET_SIZE_CONFORMAL_CLAMPED_ENTITY_POSITION;
8266
0
        } else if ( packet_id == CIGI4_PACKET_ID_COMPONENT_CONTROL ) {
8267
0
            hf_cigi4_packet = hf_cigi3_component_control;
8268
0
            packet_length = CIGI4_PACKET_SIZE_COMPONENT_CONTROL;
8269
0
        } else if ( packet_id == CIGI4_PACKET_ID_SHORT_COMPONENT_CONTROL ) {
8270
0
            hf_cigi4_packet = hf_cigi3_short_component_control;
8271
0
            packet_length = CIGI4_PACKET_SIZE_SHORT_COMPONENT_CONTROL;
8272
0
        } else if ( packet_id == CIGI4_PACKET_ID_ARTICULATED_PART_CONTROL ) {
8273
0
            hf_cigi4_packet = hf_cigi3_articulated_part_control;
8274
0
            packet_length = CIGI4_PACKET_SIZE_ARTICULATED_PART_CONTROL;
8275
0
        } else if ( packet_id == CIGI4_PACKET_ID_SHORT_ARTICULATED_PART_CONTROL ) {
8276
0
            hf_cigi4_packet = hf_cigi3_short_articulated_part_control;
8277
0
            packet_length = CIGI4_PACKET_SIZE_SHORT_ARTICULATED_PART_CONTROL;
8278
0
        } else if ( packet_id == CIGI4_PACKET_ID_VELOCITY_CONTROL ) {
8279
0
            hf_cigi4_packet = hf_cigi4_velocity_control;
8280
0
            packet_length = CIGI4_PACKET_SIZE_VELOCITY_CONTROL;
8281
0
        }  else if ( packet_id == CIGI4_PACKET_ID_CELESTIAL_SPHERE_CONTROL ) {
8282
0
            hf_cigi4_packet = hf_cigi3_celestial_sphere_control;
8283
0
            packet_length = CIGI4_PACKET_SIZE_CELESTIAL_SPHERE_CONTROL;
8284
0
        } else if ( packet_id == CIGI4_PACKET_ID_ATMOSPHERE_CONTROL ) {
8285
0
            hf_cigi4_packet = hf_cigi3_atmosphere_control;
8286
0
            packet_length = CIGI4_PACKET_SIZE_ATMOSPHERE_CONTROL;
8287
0
        } else if ( packet_id == CIGI4_PACKET_ID_ENVIRONMENTAL_REGION_CONTROL ) {
8288
0
            hf_cigi4_packet = hf_cigi3_environmental_region_control;
8289
0
            packet_length = CIGI4_PACKET_SIZE_ENVIRONMENTAL_REGION_CONTROL;
8290
0
        } else if ( packet_id == CIGI4_PACKET_ID_WEATHER_CONTROL ) {
8291
0
            hf_cigi4_packet = hf_cigi3_weather_control;
8292
0
            packet_length = CIGI4_PACKET_SIZE_WEATHER_CONTROL;
8293
0
        } else if ( packet_id == CIGI4_PACKET_ID_MARITIME_SURFACE_CONDITIONS_CONTROL ) {
8294
0
            hf_cigi4_packet = hf_cigi3_maritime_surface_conditions_control;
8295
0
            packet_length = CIGI4_PACKET_SIZE_MARITIME_SURFACE_CONDITIONS_CONTROL;
8296
0
        } else if ( packet_id == CIGI4_PACKET_ID_WAVE_CONTROL ) {
8297
0
            hf_cigi4_packet = hf_cigi3_wave_control;
8298
0
            packet_length = CIGI4_PACKET_SIZE_WAVE_CONTROL;
8299
0
        } else if ( packet_id == CIGI4_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL ) {
8300
0
            hf_cigi4_packet = hf_cigi3_terrestrial_surface_conditions_control;
8301
0
            packet_length = CIGI4_PACKET_SIZE_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL;
8302
0
        } else if ( packet_id == CIGI4_PACKET_ID_VIEW_CONTROL ) {
8303
0
            hf_cigi4_packet = hf_cigi3_view_control;
8304
0
            packet_length = CIGI4_PACKET_SIZE_VIEW_CONTROL;
8305
0
        } else if (packet_id == CIGI4_PACKET_ID_SENSOR_CONTROL) {
8306
0
            hf_cigi4_packet = hf_cigi3_sensor_control;
8307
0
            packet_length = CIGI4_PACKET_SIZE_SENSOR_CONTROL;
8308
0
        } else if ( packet_id == CIGI4_PACKET_ID_MOTION_TRACKER_CONTROL ) {
8309
0
            hf_cigi4_packet = hf_cigi3_motion_tracker_control;
8310
0
            packet_length = CIGI4_PACKET_SIZE_MOTION_TRACKER_CONTROL;
8311
0
        } else if ( packet_id == CIGI4_PACKET_ID_EARTH_REFERENCE_MODEL_DEFINITION ) {
8312
0
            hf_cigi4_packet = hf_cigi3_earth_reference_model_definition;
8313
0
            packet_length = CIGI4_PACKET_SIZE_EARTH_REFERENCE_MODEL_DEFINITION;
8314
0
        } else if ( packet_id == CIGI4_PACKET_ID_ACCELERATION_CONTROL ) {
8315
0
            hf_cigi4_packet = hf_cigi4_acceleration_control;
8316
0
            packet_length = CIGI4_PACKET_SIZE_ACCELERATION_CONTROL;
8317
0
        } else if ( packet_id == CIGI4_PACKET_ID_VIEW_DEFINITION ) {
8318
0
            hf_cigi4_packet = hf_cigi3_view_definition;
8319
0
            packet_length = CIGI4_PACKET_SIZE_VIEW_DEFINITION;
8320
0
        } else if ( packet_id == CIGI4_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION ) {
8321
0
            hf_cigi4_packet = hf_cigi3_collision_detection_segment_definition;
8322
0
            packet_length = CIGI4_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_DEFINITION;
8323
0
        } else if ( packet_id == CIGI4_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION ) {
8324
0
            hf_cigi4_packet = hf_cigi3_collision_detection_volume_definition;
8325
0
            packet_length = CIGI4_PACKET_SIZE_COLLISION_DETECTION_VOLUME_DEFINITION;
8326
0
        } else if ( packet_id == CIGI4_PACKET_ID_HAT_HOT_REQUEST ) {
8327
0
            hf_cigi4_packet = hf_cigi3_hat_hot_request;
8328
0
            packet_length = CIGI4_PACKET_SIZE_HAT_HOT_REQUEST;
8329
0
        } else if ( packet_id == CIGI4_PACKET_ID_LINE_OF_SIGHT_SEGMENT_REQUEST ) {
8330
0
            hf_cigi4_packet = hf_cigi3_line_of_sight_segment_request;
8331
0
            packet_length = CIGI4_PACKET_SIZE_LINE_OF_SIGHT_SEGMENT_REQUEST;
8332
0
        } else if ( packet_id == CIGI4_PACKET_ID_LINE_OF_SIGHT_VECTOR_REQUEST ) {
8333
0
            hf_cigi4_packet = hf_cigi3_line_of_sight_vector_request;
8334
0
            packet_length = CIGI4_PACKET_SIZE_LINE_OF_SIGHT_VECTOR_REQUEST;
8335
0
        } else if ( packet_id == CIGI4_PACKET_ID_POSITION_REQUEST ) {
8336
0
            hf_cigi4_packet = hf_cigi3_position_request;
8337
0
            packet_length = CIGI4_PACKET_SIZE_POSITION_REQUEST;
8338
0
        } else if ( packet_id == CIGI4_PACKET_ID_ENVIRONMENTAL_CONDITIONS_REQUEST ) {
8339
0
            hf_cigi4_packet = hf_cigi3_environmental_conditions_request;
8340
0
            packet_length = CIGI4_PACKET_SIZE_ENVIRONMENTAL_CONDITIONS_REQUEST;
8341
0
        } else if ( packet_id == CIGI4_PACKET_ID_SYMBOL_SURFACE_DEFINITION ) {
8342
0
            hf_cigi4_packet = hf_cigi3_3_symbol_surface_definition;
8343
0
            packet_length = CIGI4_PACKET_SIZE_SYMBOL_SURFACE_DEFINITION;
8344
0
        } else if ( packet_id == CIGI4_PACKET_ID_SYMBOL_TEXT_DEFINITION ){
8345
0
            hf_cigi4_packet = hf_cigi3_3_symbol_text_definition;
8346
0
            packet_length = packet_size;
8347
0
        } else if ( packet_id == CIGI4_PACKET_ID_SYMBOL_CIRCLE_DEFINITION ){
8348
0
            hf_cigi4_packet = hf_cigi3_3_symbol_circle_definition;
8349
0
            packet_length = packet_size;
8350
0
        } else if ( packet_id == CIGI4_PACKET_ID_SYMBOL_POLYGON_DEFINITION){
8351
0
            hf_cigi4_packet = hf_cigi4_symbol_polygon_definition;
8352
0
            packet_length = packet_size;
8353
0
        } else if (packet_id == CIGI4_PACKET_ID_SYMBOL_CLONE) {
8354
0
            hf_cigi4_packet = hf_cigi3_3_symbol_clone;
8355
0
            packet_length = CIGI4_PACKET_SIZE_SYMBOL_CLONE;
8356
0
        } else if (packet_id == CIGI4_PACKET_ID_SYMBOL_CONTROL) {
8357
0
            hf_cigi4_packet = hf_cigi3_3_symbol_control;
8358
0
            packet_length = CIGI4_PACKET_SIZE_SYMBOL_CONTROL;
8359
0
        } else if (packet_id == CIGI4_PACKET_ID_SHORT_SYMBOL_CONTROL) {
8360
0
            hf_cigi4_packet = hf_cigi3_3_short_symbol_control;
8361
0
            packet_length = CIGI4_PACKET_SIZE_SHORT_SYMBOL_CONTROL;
8362
0
        } else if (packet_id == CIGI4_PACKET_ID_SYMBOL_CIRCLE_TEXTURED_DEFINITION) {
8363
0
            hf_cigi4_packet = hf_cigi4_symbol_circle_textured_definition;
8364
0
            packet_length = packet_size;
8365
0
        } else if (packet_id == CIGI4_PACKET_ID_SYMBOL_POLYGON_TEXTURED_DEFINITION) {
8366
0
            hf_cigi4_packet = hf_cigi4_symbol_polygon_textured_definition;
8367
0
            packet_length = packet_size;
8368
0
        } else if (packet_id == CIGI4_PACKET_ID_ENTITY_CONTROL) {
8369
0
            hf_cigi4_packet = hf_cigi4_entity_control;
8370
0
            packet_length = CIGI4_PACKET_SIZE_ENTITY_CONTROL;
8371
0
        }else if (packet_id == CIGI4_PACKET_ID_ANIMATION_CONTROL) {
8372
0
            hf_cigi4_packet = hf_cigi4_animation_control;
8373
0
            packet_length = CIGI4_PACKET_SIZE_ANIMATION_CONTROL;
8374
0
        } else if ( packet_id == CIGI4_PACKET_ID_START_OF_FRAME ) {
8375
0
            hf_cigi4_packet = hf_cigi4_start_of_frame;
8376
0
            packet_length = CIGI4_PACKET_SIZE_START_OF_FRAME;
8377
0
        } else if ( packet_id == CIGI4_PACKET_ID_HAT_HOT_RESPONSE ) {
8378
0
            hf_cigi4_packet = hf_cigi3_hat_hot_response;
8379
0
            packet_length = CIGI4_PACKET_SIZE_HAT_HOT_RESPONSE;
8380
0
        } else if ( packet_id == CIGI4_PACKET_ID_HAT_HOT_EXTENDED_RESPONSE ) {
8381
0
            hf_cigi4_packet = hf_cigi3_hat_hot_extended_response;
8382
0
            packet_length = CIGI4_PACKET_SIZE_HAT_HOT_EXTENDED_RESPONSE;
8383
0
        } else if ( packet_id == CIGI4_PACKET_ID_LINE_OF_SIGHT_RESPONSE ) {
8384
0
            hf_cigi4_packet = hf_cigi3_line_of_sight_response;
8385
0
            packet_length = CIGI4_PACKET_SIZE_LINE_OF_SIGHT_RESPONSE;
8386
0
        } else if ( packet_id == CIGI4_PACKET_ID_LINE_OF_SIGHT_EXTENDED_RESPONSE ) {
8387
0
            hf_cigi4_packet = hf_cigi3_line_of_sight_extended_response;
8388
0
            packet_length = CIGI4_PACKET_SIZE_LINE_OF_SIGHT_EXTENDED_RESPONSE;
8389
0
        } else if ( packet_id == CIGI4_PACKET_ID_SENSOR_RESPONSE ) {
8390
0
            hf_cigi4_packet = hf_cigi3_sensor_response;
8391
0
            packet_length = CIGI4_PACKET_SIZE_SENSOR_RESPONSE;
8392
0
        } else if ( packet_id == CIGI4_PACKET_ID_SENSOR_EXTENDED_RESPONSE ) {
8393
0
            hf_cigi4_packet = hf_cigi3_sensor_extended_response;
8394
0
            packet_length = CIGI4_PACKET_SIZE_SENSOR_EXTENDED_RESPONSE;
8395
0
        } else if ( packet_id == CIGI4_PACKET_ID_POSITION_RESPONSE ) {
8396
0
            hf_cigi4_packet = hf_cigi3_position_response;
8397
0
            packet_length = CIGI4_PACKET_SIZE_POSITION_RESPONSE;
8398
0
        } else if ( packet_id == CIGI4_PACKET_ID_WEATHER_CONDITIONS_RESPONSE ) {
8399
0
            hf_cigi4_packet = hf_cigi3_weather_conditions_response;
8400
0
            packet_length = CIGI4_PACKET_SIZE_WEATHER_CONDITIONS_RESPONSE;
8401
0
        } else if ( packet_id == CIGI4_PACKET_ID_AEROSOL_CONCENTRATION_RESPONSE ) {
8402
0
            hf_cigi4_packet = hf_cigi3_aerosol_concentration_response;
8403
0
            packet_length = CIGI4_PACKET_SIZE_AEROSOL_CONCENTRATION_RESPONSE;
8404
0
        } else if ( packet_id == CIGI4_PACKET_ID_MARITIME_SURFACE_CONDITIONS_RESPONSE ) {
8405
0
            hf_cigi4_packet = hf_cigi3_maritime_surface_conditions_response;
8406
0
            packet_length = CIGI4_PACKET_SIZE_MARITIME_SURFACE_CONDITIONS_RESPONSE;
8407
0
        } else if ( packet_id == CIGI4_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE ) {
8408
0
            hf_cigi4_packet = hf_cigi3_terrestrial_surface_conditions_response;
8409
0
            packet_length = CIGI4_PACKET_SIZE_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE;
8410
0
        } else if ( packet_id == CIGI4_PACKET_ID_COLLISION_DETECTION_SEGMENT_NOTIFICATION ) {
8411
0
            hf_cigi4_packet = hf_cigi3_collision_detection_segment_notification;
8412
0
            packet_length = CIGI4_PACKET_SIZE_COLLISION_DETECTION_SEGMENT_NOTIFICATION;
8413
0
        } else if ( packet_id == CIGI4_PACKET_ID_COLLISION_DETECTION_VOLUME_NOTIFICATION ) {
8414
0
            hf_cigi4_packet = hf_cigi3_collision_detection_volume_notification;
8415
0
            packet_length = CIGI4_PACKET_SIZE_COLLISION_DETECTION_VOLUME_NOTIFICATION;
8416
0
        } else if ( packet_id == CIGI4_PACKET_ID_ANIMATION_STOP_NOTIFICATION ) {
8417
0
            hf_cigi4_packet = hf_cigi3_animation_stop_notification;
8418
0
            packet_length = CIGI4_PACKET_SIZE_ANIMATION_STOP_NOTIFICATION;
8419
0
        } else if ( packet_id == CIGI4_PACKET_ID_EVENT_NOTIFICATION ) {
8420
0
            hf_cigi4_packet = hf_cigi3_event_notification;
8421
0
            packet_length = CIGI4_PACKET_SIZE_EVENT_NOTIFICATION;
8422
0
        } else if ( packet_id == CIGI4_PACKET_ID_IMAGE_GENERATOR_MESSAGE ) {
8423
0
            hf_cigi4_packet = hf_cigi3_image_generator_message;
8424
0
            packet_length = packet_size;
8425
0
        } else if ( packet_id >= CIGI4_PACKET_ID_LOCALLY_DEFINED_MIN && packet_id <=  CIGI4_PACKET_ID_LOCALLY_DEFINED_MAX) {
8426
0
            hf_cigi4_packet = hf_cigi4_locally_defined;
8427
0
            packet_length = packet_size;
8428
0
        } else if ( packet_id >= CIGI4_PACKET_ID_REGISTERED_MIN && packet_id <= CIGI4_PACKET_ID_REGISTERED_MAX) {
8429
0
            hf_cigi4_packet = hf_cigi4_registered;
8430
0
            packet_length = packet_size;
8431
0
        } else {
8432
0
            hf_cigi4_packet = hf_cigi_unknown;
8433
0
            packet_length = packet_size;
8434
0
        }
8435
0
        tipacket = proto_tree_add_none_format(cigi_tree, hf_cigi4_packet, tvb, offset, packet_length,
8436
0
                                              "%s (%i bytes)",
8437
0
                                              val_to_str_ext_const(packet_id, &cigi4_packet_id_vals_ext, "Unknown"),
8438
0
                                              packet_length);
8439
8440
0
        cigi_packet_tree = proto_item_add_subtree(tipacket, ett_cigi);
8441
8442
        /* CIGI4 versions the first word the size of the packet (in bytes).
8443
         * The second word is of a packet is the packet ID. */
8444
0
        init_offset = offset;
8445
0
        ti = proto_tree_add_item(cigi_packet_tree, hf_cigi4_packet_size, tvb, offset, 2, cigi_byte_order);
8446
0
        if (packet_size < 4) {
8447
0
            expert_add_info(pinfo, ti, &ei_cigi_invalid_len);
8448
0
            break;
8449
0
        }
8450
0
        offset += 2;
8451
8452
0
        proto_tree_add_item(cigi_packet_tree, hf_cigi4_packet_id, tvb, offset, 2, cigi_byte_order);
8453
0
        offset += 2;
8454
        /* If packet_size != packet_len for the fixed size packet IDs, attempt
8455
         * to dissect normally then add an expert info and abort afterwards below. */
8456
0
        next_tvb = tvb_new_subset_length(tvb, offset, packet_length - 4);
8457
8458
0
        int dissected = dissector_try_uint_with_data(cigi4_packet_id_table, packet_id,
8459
0
            next_tvb, pinfo, cigi_packet_tree, false, NULL);
8460
8461
0
        if (dissected == 0) {
8462
0
            dissected = cigi_add_data(next_tvb, cigi_packet_tree, 0);
8463
0
        }
8464
8465
0
        offset += dissected;
8466
8467
0
        if (offset-init_offset != packet_length) {
8468
0
            proto_tree_add_expert(cigi_packet_tree, pinfo, &ei_cigi_invalid_len, tvb, init_offset, offset-init_offset);
8469
0
            break;
8470
0
        }
8471
0
    }
8472
0
}
8473
8474
/* CIGI4 IG Control */
8475
static int
8476
cigi4_add_ig_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
8477
0
{
8478
0
    unsigned offset = 0;
8479
8480
0
    proto_tree* field_tree;
8481
0
    proto_item* tf;
8482
8483
0
    proto_tree_add_item(tree, hf_cigi_version, tvb, offset, 1, cigi_byte_order);
8484
0
    offset++;
8485
8486
0
    proto_tree_add_item(tree, hf_cigi3_ig_control_db_number, tvb, offset, 1, cigi_byte_order);
8487
0
    offset++;
8488
8489
0
    tf = proto_tree_add_item(tree, hf_cigi4_ig_control_entity_substitution, tvb, offset, 1, cigi_byte_order);
8490
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_ig_control_entity_substitution);
8491
0
    proto_tree_add_item(field_tree, hf_cigi4_ig_control_entity_substitution_enable, tvb, offset, 1, cigi_byte_order);
8492
0
    offset++;
8493
8494
0
    tf = proto_tree_add_item(tree, hf_cigi4_ig_control_flags, tvb, offset, 1, cigi_byte_order);
8495
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_ig_control_flags);
8496
0
    proto_tree_add_item(field_tree, hf_cigi3_ig_control_ig_mode, tvb, offset, 1, cigi_byte_order);
8497
0
    proto_tree_add_item(field_tree, hf_cigi3_ig_control_timestamp_valid, tvb, offset, 1, cigi_byte_order);
8498
0
    proto_tree_add_item(field_tree, hf_cigi4_ig_control_smoothing_enable, tvb, offset, 1, cigi_byte_order);
8499
0
    proto_tree_add_item(field_tree, hf_cigi3_2_ig_control_minor_version, tvb, offset, 1, cigi_byte_order);
8500
0
    offset++;
8501
8502
0
    proto_tree_add_item(tree, hf_cigi3_2_ig_control_host_frame_number, tvb, offset, 4, cigi_byte_order);
8503
0
    offset += 4;
8504
8505
0
    proto_tree_add_item(tree, hf_cigi3_2_ig_control_last_ig_frame_number, tvb, offset, 4, cigi_byte_order);
8506
0
    offset += 4;
8507
8508
0
    proto_tree_add_item(tree, hf_cigi3_ig_control_timestamp, tvb, offset, 4, cigi_byte_order);
8509
0
    offset += 8;
8510
8511
0
    return offset;
8512
0
}
8513
8514
/* CIGI4 Start of Frame */
8515
static int
8516
cigi4_add_start_of_frame(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *tree, void* data _U_)
8517
0
{
8518
0
    proto_tree* field_tree;
8519
0
    proto_item* tf;
8520
8521
0
    unsigned offset = 0;
8522
8523
0
    proto_tree_add_item(tree, hf_cigi_version, tvb, offset, 1, cigi_byte_order);
8524
0
    offset++;
8525
8526
0
    proto_tree_add_item(tree, hf_cigi4_start_of_frame_db_number, tvb, offset, 1, cigi_byte_order);
8527
0
    offset += 2;
8528
8529
0
    tf = proto_tree_add_item(tree, hf_cigi4_start_of_frame_flags, tvb, offset, 1, cigi_byte_order);
8530
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_start_of_frame_flags);
8531
8532
0
    proto_tree_add_item(field_tree, hf_cigi4_start_of_frame_ig_mode, tvb, offset, 1, cigi_byte_order);
8533
0
    proto_tree_add_item(field_tree, hf_cigi4_start_of_frame_timestamp_valid, tvb, offset, 1, cigi_byte_order);
8534
0
    proto_tree_add_item(field_tree, hf_cigi4_start_of_frame_earth_reference_model, tvb, offset, 1, cigi_byte_order);
8535
0
    proto_tree_add_item(field_tree, hf_cigi4_start_of_frame_minor_version, tvb, offset, 1, cigi_byte_order);
8536
0
    offset++;
8537
8538
0
    proto_tree_add_item(tree, hf_cigi4_start_of_frame_ig_frame_number, tvb, offset, 4, cigi_byte_order);
8539
0
    offset += 4;
8540
8541
0
    proto_tree_add_item(tree, hf_cigi4_start_of_frame_timestamp, tvb, offset, 4, cigi_byte_order);
8542
0
    offset += 4;
8543
8544
0
    proto_tree_add_item(tree, hf_cigi4_start_of_frame_last_host_frame_number, tvb, offset, 4, cigi_byte_order);
8545
0
    offset += 4;
8546
8547
0
    tf = proto_tree_add_item(tree, hf_cigi4_start_of_frame_ig_condition_flags, tvb, offset, 1, cigi_byte_order);
8548
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_start_of_frame_ig_condition_flags);
8549
0
    proto_tree_add_item(field_tree, hf_cigi4_start_of_frame_condition_overframing, tvb, offset, 1, cigi_byte_order);
8550
0
    proto_tree_add_item(field_tree, hf_cigi4_start_of_frame_condition_paging, tvb, offset, 1, cigi_byte_order);
8551
0
    proto_tree_add_item(field_tree, hf_cigi4_start_of_frame_condition_excessive_variable_length_data, tvb, offset, 1, cigi_byte_order);
8552
0
    offset += 4;
8553
8554
0
    return offset;
8555
0
}
8556
8557
/* CIGI Entity Position */
8558
static int
8559
cigi4_add_entity_position(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
8560
0
{
8561
0
    unsigned offset = 0;
8562
8563
0
    proto_tree* field_tree;
8564
0
    proto_item* tf;
8565
8566
0
    tf = proto_tree_add_item(tree, hf_cigi4_entity_position_flags, tvb, offset, 1, cigi_byte_order);
8567
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_entity_position_flags);
8568
0
    proto_tree_add_item(field_tree, hf_cigi4_entity_position_attach_state, tvb, offset, 1, cigi_byte_order);
8569
0
    proto_tree_add_item(field_tree, hf_cigi4_entity_position_ground_ocean_clamp, tvb, offset, 1, cigi_byte_order);
8570
0
    offset += 2;
8571
8572
0
    proto_tree_add_item(tree, hf_cigi4_entity_position_entity_id, tvb, offset, 2, cigi_byte_order);
8573
0
    offset += 2;
8574
8575
0
    proto_tree_add_item(tree, hf_cigi4_entity_position_parent_id, tvb, offset, 2, cigi_byte_order);
8576
0
    offset += 4;
8577
8578
0
    proto_tree_add_item(tree, hf_cigi4_entity_position_roll, tvb, offset, 4, cigi_byte_order);
8579
0
    offset += 4;
8580
8581
0
    proto_tree_add_item(tree, hf_cigi4_entity_position_pitch, tvb, offset, 4, cigi_byte_order);
8582
0
    offset += 4;
8583
8584
0
    proto_tree_add_item(tree, hf_cigi4_entity_position_yaw, tvb, offset, 4, cigi_byte_order);
8585
0
    offset += 4;
8586
8587
0
    proto_tree_add_item(tree, hf_cigi4_entity_position_lat_xoff, tvb, offset, 8, cigi_byte_order);
8588
0
    offset += 8;
8589
8590
0
    proto_tree_add_item(tree, hf_cigi4_entity_position_lon_yoff, tvb, offset, 8, cigi_byte_order);
8591
0
    offset += 8;
8592
8593
0
    proto_tree_add_item(tree, hf_cigi4_entity_position_alt_zoff, tvb, offset, 8, cigi_byte_order);
8594
0
    offset += 8;
8595
8596
0
    return offset;
8597
0
}
8598
8599
8600
/* CIGI Conformal Clamped Entity Position */
8601
static int
8602
0
cigi4_add_conformal_clamped_entity_position(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_) {
8603
0
    unsigned offset = 0;
8604
8605
0
    proto_tree_add_item(tree, hf_cigi4_conformal_clamped_entity_position_entity_id, tvb, offset, 2, cigi_byte_order);
8606
0
    offset += 4;
8607
8608
0
    proto_tree_add_item(tree, hf_cigi4_conformal_clamped_entity_position_yaw, tvb, offset, 4, cigi_byte_order);
8609
0
    offset += 8;
8610
8611
0
    proto_tree_add_item(tree, hf_cigi4_conformal_clamped_entity_position_lat, tvb, offset, 8, cigi_byte_order);
8612
0
    offset += 8;
8613
8614
0
    proto_tree_add_item(tree, hf_cigi4_conformal_clamped_entity_position_lon, tvb, offset, 8, cigi_byte_order);
8615
0
    offset += 8;
8616
8617
0
    return offset;
8618
0
}
8619
8620
/* CIGI4 Component Control */
8621
static int
8622
cigi4_add_component_control(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, void* data _U_)
8623
0
{
8624
0
    unsigned offset = 0;
8625
8626
0
    proto_tree_add_item(tree, hf_cigi3_component_control_component_id, tvb, offset, 2, cigi_byte_order);
8627
0
    offset += 2;
8628
8629
0
    proto_tree_add_item(tree, hf_cigi3_3_component_control_component_class, tvb, offset, 1, cigi_byte_order);
8630
0
    offset++;
8631
8632
0
    proto_tree_add_item(tree, hf_cigi3_component_control_component_state, tvb, offset, 1, cigi_byte_order);
8633
0
    offset++;
8634
8635
0
    proto_tree_add_item(tree, hf_cigi3_component_control_instance_id, tvb, offset, 2, cigi_byte_order);
8636
0
    offset += 2;
8637
8638
    //reserved
8639
0
    offset += 6;
8640
8641
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_1, tvb, offset, 4, cigi_byte_order);
8642
0
    offset += 4;
8643
8644
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_2, tvb, offset, 4, cigi_byte_order);
8645
0
    offset += 4;
8646
8647
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_3, tvb, offset, 4, cigi_byte_order);
8648
0
    offset += 4;
8649
8650
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_4, tvb, offset, 4, cigi_byte_order);
8651
0
    offset += 4;
8652
8653
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_5, tvb, offset, 4, cigi_byte_order);
8654
0
    offset += 4;
8655
8656
0
    proto_tree_add_item(tree, hf_cigi3_component_control_data_6, tvb, offset, 4, cigi_byte_order);
8657
0
    offset += 4;
8658
8659
0
    return offset;
8660
0
}
8661
8662
8663
/* CIGI4 HAT/HOT Request */
8664
static int
8665
cigi4_add_hat_hot_request(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
8666
0
{
8667
0
    unsigned offset = 0;
8668
8669
0
    proto_tree* field_tree;
8670
0
    proto_item* tf;
8671
8672
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_hat_hot_id, tvb, offset, 2, cigi_byte_order);
8673
0
    offset += 2;
8674
8675
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_entity_id, tvb, offset, 2, cigi_byte_order);
8676
0
    offset += 2;
8677
8678
    //subtree
8679
0
    tf = proto_tree_add_item(tree, hf_cigi4_hat_hot_request_flags, tvb, offset, 1, cigi_byte_order);
8680
0
    field_tree = proto_item_add_subtree(tf, ett_cigi4_hat_hot_request_flags);
8681
0
    proto_tree_add_item(field_tree, hf_cigi3_hat_hot_request_type, tvb, offset, 1, cigi_byte_order);
8682
0
    proto_tree_add_item(field_tree, hf_cigi3_hat_hot_request_coordinate_system, tvb, offset, 1, cigi_byte_order);
8683
0
    offset++;
8684
8685
0
    proto_tree_add_item(tree, hf_cigi3_2_hat_hot_request_update_period, tvb, offset, 1, cigi_byte_order);
8686
0
    offset++;
8687
8688
    //reserved
8689
0
    offset += 6;
8690
8691
8692
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_lat_xoff, tvb, offset, 8, cigi_byte_order);
8693
0
    offset += 8;
8694
8695
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_lon_yoff, tvb, offset, 8, cigi_byte_order);
8696
0
    offset += 8;
8697
8698
0
    proto_tree_add_item(tree, hf_cigi3_hat_hot_request_alt_zoff, tvb, offset, 8, cigi_byte_order);
8699
0
    offset += 8;
8700
8701
0
    return offset;
8702
0
}
8703
8704
8705
8706
/* Register the protocol with Wireshark */
8707
void
8708
proto_register_cigi(void)
8709
16
{
8710
16
    module_t *cigi_module;
8711
16
    expert_module_t* expert_cigi;
8712
8713
16
    static hf_register_info hf[] = {
8714
        /* All Versions of CIGI */
8715
16
        { &hf_cigi_src_port,
8716
16
            { "Source Port", "cigi.srcport",
8717
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
8718
16
                NULL, HFILL }
8719
16
        },
8720
16
        { &hf_cigi_dest_port,
8721
16
            { "Destination Port", "cigi.destport",
8722
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
8723
16
                NULL, HFILL }
8724
16
        },
8725
16
        { &hf_cigi_port,
8726
16
            { "Source or Destination Port", "cigi.port",
8727
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
8728
16
                NULL, HFILL }
8729
16
        },
8730
16
        { &hf_cigi_data,
8731
16
            { "Data", "cigi.data",
8732
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
8733
16
                NULL, HFILL }
8734
16
        },
8735
8736
16
        { &hf_cigi_frame_size,
8737
16
            { "Frame Size (bytes)", "cigi.frame_size",
8738
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
8739
16
                "Number of bytes sent with all cigi packets in this frame", HFILL }
8740
16
        },
8741
8742
16
        { &hf_cigi_packet_id,
8743
16
            { "Packet ID", "cigi.packet_id",
8744
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
8745
16
                "Identifies the packet's id", HFILL }
8746
16
        },
8747
16
        { &hf_cigi_packet_size,
8748
16
            { "Packet Size (bytes)", "cigi.packet_size",
8749
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
8750
16
                "Identifies the number of bytes in this type of packet", HFILL }
8751
16
        },
8752
16
        { &hf_cigi_version,
8753
16
            { "CIGI Version", "cigi.version",
8754
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
8755
16
                "Identifies the version of CIGI interface that is currently running on the host", HFILL }
8756
16
        },
8757
8758
16
        { &hf_cigi_unknown,
8759
16
            { "Unknown", "cigi.unknown",
8760
16
                FT_NONE, BASE_NONE, NULL, 0x0,
8761
16
                "Unknown Packet", HFILL }
8762
16
        },
8763
8764
        /* CIGI2 */
8765
16
        { &hf_cigi2_packet_id,
8766
16
            { "Packet ID", "cigi.packet_id",
8767
16
                FT_UINT8, BASE_DEC|BASE_EXT_STRING, &cigi2_packet_id_vals_ext, 0x0,
8768
16
                "Identifies the packet's ID", HFILL }
8769
16
        },
8770
8771
        /* CIGI3 */
8772
16
        { &hf_cigi3_packet_id,
8773
16
            { "Packet ID", "cigi.packet_id",
8774
16
                FT_UINT8, BASE_DEC|BASE_EXT_STRING, &cigi3_packet_id_vals_ext, 0x0,
8775
16
                "Identifies the packet's ID", HFILL }
8776
16
        },
8777
16
        { &hf_cigi3_byte_swap,
8778
16
            { "Byte Swap", "cigi.byte_swap",
8779
16
                FT_UINT16, BASE_HEX, VALS(cigi3_byte_swap_vals), 0x0,
8780
16
                "Used to determine whether the incoming data should be byte-swapped", HFILL }
8781
16
        },
8782
8783
        /* CIGI4 */
8784
16
        { &hf_cigi4_packet_id,
8785
16
            { "Packet ID", "cigi.packet_id",
8786
16
                FT_UINT16, BASE_HEX|BASE_EXT_STRING, &cigi4_packet_id_vals_ext, 0x0,
8787
16
                "Identifies the packet's ID", HFILL }
8788
16
        },
8789
16
        { &hf_cigi4_packet_size,
8790
16
            { "Packet Size", "cigi.packet_size",
8791
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
8792
16
                "Identifies the number of bytes in this type of packet", HFILL }
8793
16
        },
8794
8795
        /* CIGI2 IG Control */
8796
16
        { &hf_cigi2_ig_control,
8797
16
            { "IG Control", "cigi.ig_control",
8798
16
                FT_NONE, BASE_NONE, NULL, 0x0,
8799
16
                "IG Control Packet", HFILL }
8800
16
        },
8801
16
        { &hf_cigi2_ig_control_db_number,
8802
16
            { "Database Number", "cigi.ig_control.db_number",
8803
16
                FT_INT8, BASE_DEC, NULL, 0x0,
8804
16
                "Identifies the number associated with the database requiring loading", HFILL }
8805
16
        },
8806
16
        { &hf_cigi2_ig_control_ig_mode,
8807
16
            { "IG Mode Change Request", "cigi.ig_control.ig_mode",
8808
16
                FT_UINT8, BASE_DEC, VALS(cigi2_ig_control_ig_mode_vals), 0xc0,
8809
16
                "Commands the IG to enter its various modes", HFILL }
8810
16
        },
8811
16
        { &hf_cigi2_ig_control_tracking_enable,
8812
16
            { "Tracking Device Enable", "cigi.ig_control.tracking_enable",
8813
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
8814
16
                "Identifies the state of an external tracking device", HFILL }
8815
16
        },
8816
16
        { &hf_cigi2_ig_control_boresight,
8817
16
            { "Tracking Device Boresight", "cigi.ig_control.boresight",
8818
16
                FT_BOOLEAN, 8, NULL, 0x10,
8819
16
                "Used by the host to enable boresight mode", HFILL }
8820
16
        },
8821
16
        { &hf_cigi2_ig_control_frame_ctr,
8822
16
            { "Frame Counter", "cigi.ig_control.frame_ctr",
8823
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
8824
16
                "Identifies a particular frame", HFILL }
8825
16
        },
8826
16
        { &hf_cigi2_ig_control_time_tag,
8827
16
            { "Timing Value (microseconds)", "cigi.ig_control.time_tag",
8828
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
8829
16
                "Identifies synchronous operation", HFILL }
8830
16
        },
8831
8832
        /* CIGI3 IG Control */
8833
16
        { &hf_cigi3_ig_control,
8834
16
            { "IG Control", "cigi.ig_control",
8835
16
                FT_NONE, BASE_NONE, NULL, 0x0,
8836
16
                "IG Control Packet", HFILL }
8837
16
        },
8838
16
        { &hf_cigi3_ig_control_db_number,
8839
16
            { "Database Number", "cigi.ig_control.db_number",
8840
16
                FT_INT8, BASE_DEC, NULL, 0x0,
8841
16
                "Used to initiate a database load on the IG", HFILL }
8842
16
        },
8843
16
        { &hf_cigi3_ig_control_ig_mode,
8844
16
            { "IG Mode", "cigi.ig_control.ig_mode",
8845
16
                FT_UINT8, BASE_DEC, VALS(cigi3_ig_control_ig_mode_vals), 0x03,
8846
16
                "Dictates the IG's operational mode", HFILL }
8847
16
        },
8848
16
        { &hf_cigi3_ig_control_timestamp_valid,
8849
16
            { "Timestamp Valid", "cigi.ig_control.timestamp_valid",
8850
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x04,
8851
16
                "Indicates whether the timestamp contains a valid value", HFILL }
8852
16
        },
8853
16
        { &hf_cigi3_ig_control_frame_ctr,
8854
16
            { "Frame Counter", "cigi.ig_control.frame_ctr",
8855
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
8856
16
                "Contains a number that identifying the frame", HFILL }
8857
16
        },
8858
16
        { &hf_cigi3_ig_control_timestamp,
8859
16
            { "Timestamp (microseconds)", "cigi.ig_control.timestamp",
8860
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
8861
16
                "Indicates the number of 10 microsecond \"ticks\" since some initial reference time", HFILL }
8862
16
        },
8863
8864
        /* CIGI3_2 IG Control */
8865
16
        { &hf_cigi3_2_ig_control_minor_version,
8866
16
            { "Minor Version", "cigi.ig_control.minor_version",
8867
16
                FT_UINT8, BASE_DEC, NULL, 0xF0,
8868
16
                "Indicates the minor version of the CIGI interface", HFILL }
8869
16
        },
8870
16
        { &hf_cigi3_2_ig_control_host_frame_number,
8871
16
            { "Host Frame Number", "cigi.ig_control.host_frame_number",
8872
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
8873
16
                "Uniquely identifies a data frame on the host", HFILL }
8874
16
        },
8875
16
        { &hf_cigi3_2_ig_control_last_ig_frame_number,
8876
16
            { "IG Frame Number", "cigi.ig_control.last_ig_frame_number",
8877
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
8878
16
                "Contains the value of the IG Frame Number parameter in the last Start of Frame packet received from the IG", HFILL }
8879
16
        },
8880
8881
        /* CIGI3_3 IG Control */
8882
16
        { &hf_cigi3_3_ig_control_extrapolation_enable,
8883
16
            { "Extrapolation/Interpolation Enable", "cigi.ig_control.extrapolation_enable",
8884
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
8885
16
                "Indicates whether any dead reckoning is enabled.", HFILL }
8886
16
        },
8887
8888
        /* CIGI4 IG Control */
8889
16
        { &hf_cigi4_ig_control_entity_substitution,
8890
16
            { "Substitution", "cigi.ig_control.substitution",
8891
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
8892
16
                NULL, HFILL }
8893
16
        },
8894
16
        { &hf_cigi4_ig_control_entity_substitution_enable,
8895
16
            { "Substitution Enable", "cigi.ig_control.substitution_enable",
8896
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
8897
16
                "Sets this parameter to Enable (1) the IG to substitute of entity types for all entities.", HFILL }
8898
16
        },
8899
16
        { &hf_cigi4_ig_control_flags,
8900
16
            { "Flags", "cigi.ig_control.flags",
8901
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
8902
16
                NULL, HFILL }
8903
16
        },
8904
16
        { &hf_cigi4_ig_control_smoothing_enable,
8905
16
            { "Smoothing Enable", "cigi.ig_control.smoothing_enable",
8906
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
8907
16
                "Indicates whether any dead reckoning is enabled.", HFILL }
8908
16
        },
8909
8910
        /* CIGI4 Entity Position */
8911
16
        { &hf_cigi4_entity_position,
8912
16
            { "Entity Position", "cigi.entity_position",
8913
16
                FT_NONE, BASE_NONE, NULL, 0x0,
8914
16
                "Entity Position Packet", HFILL }
8915
16
        },
8916
16
        { &hf_cigi4_entity_position_entity_id,
8917
16
            { "Entity ID", "cigi.entity_position.entity_id",
8918
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
8919
16
                "Specifies the entity to which this packet is applied", HFILL }
8920
16
        },
8921
16
        { &hf_cigi4_entity_position_flags,
8922
16
            { "Flags", "cigi.entity_position.flags",
8923
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
8924
16
                NULL, HFILL }
8925
16
        },
8926
16
        { &hf_cigi4_entity_position_attach_state,
8927
16
            { "Attach State", "cigi.entity_position.attach_state",
8928
16
                FT_BOOLEAN, 8, TFS(&attach_detach_tfs), 0x01,
8929
16
                "Identifies whether the entity should be attach as a child to a parent", HFILL }
8930
16
        },
8931
16
        { &hf_cigi4_entity_position_ground_ocean_clamp,
8932
16
            { "Ground/Ocean Clamp", "cigi.entity_position.ground_ocean_clamp",
8933
16
                FT_UINT8, BASE_DEC, VALS(cigi4_entity_control_ground_ocean_clamp_vals), 0x06,
8934
16
                "Specifies whether the entity should be clamped to the ground or water surface", HFILL }
8935
16
        },
8936
16
        { &hf_cigi4_entity_position_parent_id,
8937
16
            { "Parent ID", "cigi.entity_position.parent_id",
8938
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
8939
16
                "Specifies the parent for the entity", HFILL }
8940
16
        },
8941
16
        { &hf_cigi4_entity_position_roll,
8942
16
            { "Roll (degrees)", "cigi.entity_position.roll",
8943
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
8944
16
                "Specifies the roll angle of the entity", HFILL }
8945
16
        },
8946
16
        { &hf_cigi4_entity_position_pitch,
8947
16
            { "Pitch (degrees)", "cigi.entity_position.pitch",
8948
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
8949
16
                "Specifies the pitch angle of the entity", HFILL }
8950
16
        },
8951
16
        { &hf_cigi4_entity_position_yaw,
8952
16
            { "Yaw (degrees)", "cigi.entity_position.yaw",
8953
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
8954
16
                "Specifies the instantaneous heading of the entity", HFILL }
8955
16
        },
8956
16
        { &hf_cigi4_entity_position_lat_xoff,
8957
16
            { "Latitude (degrees)/X Offset (m)", "cigi.entity_position.lat_xoff",
8958
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
8959
16
                "Specifies the entity's geodetic latitude or the distance from the parent's reference point along its parent's X axis", HFILL }
8960
16
        },
8961
16
        { &hf_cigi4_entity_position_lon_yoff,
8962
16
            { "Longitude (degrees)/Y Offset (m)", "cigi.entity_position.lon_yoff",
8963
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
8964
16
                "Specifies the entity's geodetic longitude or the distance from the parent's reference point along its parent's Y axis", HFILL }
8965
16
        },
8966
16
        { &hf_cigi4_entity_position_alt_zoff,
8967
16
            { "Altitude (m)/Z Offset (m)", "cigi.entity_position.alt_zoff",
8968
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
8969
16
                "Specifies the entity's altitude or the distance from the parent's reference point along its parent's Z axis", HFILL }
8970
16
        },
8971
8972
        /* CIGI2 Entity Control */
8973
16
        { &hf_cigi2_entity_control,
8974
16
            { "Entity Control", "cigi.entity_control",
8975
16
                FT_NONE, BASE_NONE, NULL, 0x0,
8976
16
                "Entity Control Packet", HFILL }
8977
16
        },
8978
16
        { &hf_cigi2_entity_control_entity_id,
8979
16
            { "Entity ID", "cigi.entity_control.entity_id",
8980
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
8981
16
                "Identifies the entity motion system", HFILL }
8982
16
        },
8983
16
        { &hf_cigi2_entity_control_entity_state,
8984
16
            { "Entity State", "cigi.entity_control.entity_state",
8985
16
                FT_UINT8, BASE_DEC, VALS(cigi2_entity_control_entity_state_vals), 0xc0,
8986
16
                "Identifies the entity's geometry state", HFILL }
8987
16
        },
8988
16
        { &hf_cigi2_entity_control_attach_state,
8989
16
            { "Attach State", "cigi.entity_control.attach_state",
8990
16
                FT_BOOLEAN, 8, TFS(&attach_detach_tfs), 0x20,
8991
16
                "Identifies whether the entity should be attach as a child to a parent", HFILL }
8992
16
        },
8993
16
        { &hf_cigi2_entity_control_collision_detect,
8994
16
            { "Collision Detection Request", "cigi.entity_control.collision_detect",
8995
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
8996
16
                "Identifies if collision detection is enabled for the entity", HFILL }
8997
16
        },
8998
16
        { &hf_cigi2_entity_control_effect_state,
8999
16
            { "Effect Animation State", "cigi.entity_control.effect_state",
9000
16
                FT_UINT8, BASE_DEC, VALS(cigi2_entity_control_effect_state_vals), 0x0c,
9001
16
                "Identifies the animation state of a special effect", HFILL }
9002
16
        },
9003
16
        { &hf_cigi2_entity_control_type,
9004
16
            { "Entity Type", "cigi.entity_control.type",
9005
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9006
16
                "Identifies the type of the entity", HFILL }
9007
16
        },
9008
16
        { &hf_cigi2_entity_control_parent_id,
9009
16
            { "Parent Entity ID", "cigi.entity_control.parent_id",
9010
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9011
16
                "Identifies the parent to which the entity should be attached", HFILL }
9012
16
        },
9013
16
        { &hf_cigi2_entity_control_opacity,
9014
16
            { "Percent Opacity", "cigi.entity_control.opacity",
9015
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9016
16
                "Specifies the degree of opacity of the entity", HFILL }
9017
16
        },
9018
16
        { &hf_cigi2_entity_control_internal_temp,
9019
16
            { "Internal Temperature (degrees C)", "cigi.entity_control.internal_temp",
9020
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9021
16
                "Specifies the internal temperature of the entity in degrees Celsius", HFILL }
9022
16
        },
9023
16
        { &hf_cigi2_entity_control_roll,
9024
16
            { "Roll (degrees)", "cigi.entity_control.roll",
9025
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9026
16
                "Identifies the roll angle of the entity in degrees", HFILL }
9027
16
        },
9028
16
        { &hf_cigi2_entity_control_pitch,
9029
16
            { "Pitch (degrees)", "cigi.entity_control_pitch",
9030
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9031
16
                "Identifies the pitch of the entity in degrees", HFILL }
9032
16
        },
9033
16
        { &hf_cigi2_entity_control_heading,
9034
16
            { "Heading (degrees)", "cigi.entity_control_heading",
9035
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9036
16
                "Identifies the heading of the entity in degrees", HFILL }
9037
16
        },
9038
16
        { &hf_cigi2_entity_control_alt,
9039
16
            { "Altitude (m)", "cigi.entity_control.alt",
9040
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
9041
16
                "Identifies the altitude position of the reference point of the entity in meters", HFILL }
9042
16
        },
9043
16
        { &hf_cigi2_entity_control_lat,
9044
16
            { "Latitude (degrees)", "cigi.entity_control.lat",
9045
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
9046
16
                "Identifies the latitude position of the reference point of the entity in degrees", HFILL }
9047
16
        },
9048
16
        { &hf_cigi2_entity_control_lon,
9049
16
            { "Longitude (degrees)", "cigi.entity_control.lon",
9050
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
9051
16
                "Identifies the longitude position of the reference point of the entity in degrees", HFILL }
9052
16
        },
9053
9054
        /* CIGI3 Entity Control */
9055
16
        { &hf_cigi3_entity_control,
9056
16
            { "Entity Control", "cigi.entity_control",
9057
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9058
16
                "Entity Control Packet", HFILL }
9059
16
        },
9060
16
        { &hf_cigi3_entity_control_entity_id,
9061
16
            { "Entity ID", "cigi.entity_control.entity_id",
9062
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9063
16
                "Specifies the entity to which this packet is applied", HFILL }
9064
16
        },
9065
16
        { &hf_cigi3_entity_control_entity_state,
9066
16
            { "Entity State", "cigi.entity_control.entity_state",
9067
16
                FT_UINT8, BASE_DEC, VALS(cigi3_entity_control_entity_state_vals), 0x03,
9068
16
                "Specifies whether the entity should be active or destroyed", HFILL }
9069
16
        },
9070
16
        { &hf_cigi3_entity_control_attach_state,
9071
16
            { "Attach State", "cigi.entity_control.attach_state",
9072
16
                FT_BOOLEAN, 8, TFS(&attach_detach_tfs), 0x04,
9073
16
                "Specifies whether the entity should be attached as a child to a parent", HFILL }
9074
16
        },
9075
16
        { &hf_cigi3_entity_control_collision_detection_request,
9076
16
            { "Collision Detection Request", "cigi.entity_control.coll_det_request",
9077
16
                FT_BOOLEAN, 8, TFS(&cigi3_entity_control_collision_detection_request_tfs), 0x08,
9078
16
                "Determines whether any collision detection segments and volumes associated with this entity are used as the source in collision testing", HFILL }
9079
16
        },
9080
16
        { &hf_cigi3_entity_control_inherit_alpha,
9081
16
            { "Inherit Alpha", "cigi.entity_control.inherit_alpha",
9082
16
                FT_BOOLEAN, 8, TFS(&inherited_not_inherited_tfs), 0x10,
9083
16
                "Specifies whether the entity's alpha is combined with the apparent alpha of its parent", HFILL }
9084
16
        },
9085
16
        { &hf_cigi3_entity_control_ground_ocean_clamp,
9086
16
            { "Ground/Ocean Clamp", "cigi.entity_control.ground_ocean_clamp",
9087
16
                FT_UINT8, BASE_DEC, VALS(cigi3_entity_control_ground_ocean_clamp_vals), 0x60,
9088
16
                "Specifies whether the entity should be clamped to the ground or water surface", HFILL }
9089
16
        },
9090
16
        { &hf_cigi3_entity_control_animation_direction,
9091
16
            { "Animation Direction", "cigi.entity_control.animation_dir",
9092
16
                FT_BOOLEAN, 8, TFS(&cigi3_entity_control_animation_direction_tfs), 0x01,
9093
16
                "Specifies the direction in which an animation plays", HFILL }
9094
16
        },
9095
16
        { &hf_cigi3_entity_control_animation_loop_mode,
9096
16
            { "Animation Loop Mode", "cigi.entity_control.animation_loop_mode",
9097
16
                FT_BOOLEAN, 8, TFS(&cigi3_entity_control_animation_loop_mode_tfs), 0x02,
9098
16
                "Specifies whether an animation should be a one-shot", HFILL }
9099
16
        },
9100
16
        { &hf_cigi3_entity_control_animation_state,
9101
16
            { "Animation State", "cigi.entity_control.animation_state",
9102
16
                FT_UINT8, BASE_DEC, VALS(cigi3_entity_control_animation_state_vals), 0x0c,
9103
16
                "Specifies the state of an animation", HFILL }
9104
16
        },
9105
16
        { &hf_cigi3_entity_control_alpha,
9106
16
            { "Alpha", "cigi.entity_control.alpha",
9107
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9108
16
                "Specifies the explicit alpha to be applied to the entity's geometry", HFILL }
9109
16
        },
9110
16
        { &hf_cigi3_entity_control_entity_type,
9111
16
            { "Entity Type", "cigi.entity_control.entity_type",
9112
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9113
16
                "Specifies the type for the entity", HFILL }
9114
16
        },
9115
16
        { &hf_cigi3_entity_control_parent_id,
9116
16
            { "Parent ID", "cigi.entity_control.parent_id",
9117
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9118
16
                "Specifies the parent for the entity", HFILL }
9119
16
        },
9120
16
        { &hf_cigi3_entity_control_roll,
9121
16
            { "Roll (degrees)", "cigi.entity_control.roll",
9122
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9123
16
                "Specifies the roll angle of the entity", HFILL }
9124
16
        },
9125
16
        { &hf_cigi3_entity_control_pitch,
9126
16
            { "Pitch (degrees)", "cigi.entity_control.pitch",
9127
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9128
16
                "Specifies the pitch angle of the entity", HFILL }
9129
16
        },
9130
16
        { &hf_cigi3_entity_control_yaw,
9131
16
            { "Yaw (degrees)", "cigi.entity_control.yaw",
9132
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9133
16
                "Specifies the instantaneous heading of the entity", HFILL }
9134
16
        },
9135
16
        { &hf_cigi3_entity_control_lat_xoff,
9136
16
            { "Latitude (degrees)/X Offset (m)", "cigi.entity_control.lat_xoff",
9137
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
9138
16
                "Specifies the entity's geodetic latitude or the distance from the parent's reference point along its parent's X axis", HFILL }
9139
16
        },
9140
16
        { &hf_cigi3_entity_control_lon_yoff,
9141
16
            { "Longitude (degrees)/Y Offset (m)", "cigi.entity_control.lon_yoff",
9142
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
9143
16
                "Specifies the entity's geodetic longitude or the distance from the parent's reference point along its parent's Y axis", HFILL }
9144
16
        },
9145
16
        { &hf_cigi3_entity_control_alt_zoff,
9146
16
            { "Altitude (m)/Z Offset (m)", "cigi.entity_control.alt_zoff",
9147
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
9148
16
                "Specifies the entity's altitude or the distance from the parent's reference point along its parent's Z axis", HFILL }
9149
16
        },
9150
9151
        /* CIGI3_3 Entity Control */
9152
16
        { &hf_cigi3_3_entity_control_extrapolation_enable,
9153
16
            { "Linear Extrapolation/Interpolation Enable", "cigi.entity_control.extrapolation_enable",
9154
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
9155
16
                "Indicates whether the entity's motion may be smoothed by extrapolation or interpolation.", HFILL }
9156
16
        },
9157
9158
        /* CIGI4 Entity Control */
9159
16
        { &hf_cigi4_entity_control,
9160
16
            { "Entity Control", "cigi.entity_control",
9161
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9162
16
                "Entity Control Packet", HFILL }
9163
16
        },
9164
16
        { &hf_cigi4_entity_control_entity_state,
9165
16
            { "Entity State", "cigi.entity_control.entity_state",
9166
16
                FT_UINT8, BASE_DEC, VALS(cigi4_entity_control_entity_state_vals), 0x03,
9167
16
                "Specifies whether the entity should be active or destroyed", HFILL }
9168
16
        },
9169
16
        { &hf_cigi4_entity_control_collision_reporting_enable,
9170
16
            { "Collision Detection Request", "cigi.entity_control.coll_det_request",
9171
16
                FT_BOOLEAN, 8, TFS(&tfs_disabled_enabled), 0x04,
9172
16
                "Specifies whether any collision detection segments and volumes associated with this entity are used as the source in collision testing", HFILL }
9173
16
        },
9174
16
        { &hf_cigi4_entity_control_inherit_alpha,
9175
16
            { "Inherit Alpha", "cigi.entity_control.inherit_alpha",
9176
16
                FT_BOOLEAN, 8, TFS(&cigi4_entity_control_inherit_alpha_tfs), 0x8,
9177
16
                "Specifies whether the entity's alpha is combined with the apparent alpha of its parent", HFILL }
9178
16
        },
9179
16
        { &hf_cigi4_entity_control_smooting_enable,
9180
16
            { "Smoothing Enable", "cigi.entity_control.smoothing_enable",
9181
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
9182
16
                "Specifies whether the IG shall smooth the entity’s motion by extrapolation or interpolation.", HFILL }
9183
16
        },
9184
16
        { &hf_cigi4_entity_control_extended_entity_type,
9185
16
            { "Linear Extrapolation/Interpolation Enable", "cigi.entity_control.extended_entity_type",
9186
16
                FT_BOOLEAN, 8, TFS(&tfs_entity_control_extended_entity_type), 0x20,
9187
16
                "Specifies whether the IG shall use a 16-bit Short Entity Type definition for the Entity ID or an extended 64-bit definition.", HFILL }
9188
16
        },
9189
16
        { &hf_cigi4_entity_control_alpha,
9190
16
            { "Alpha", "cigi.entity_control.alpha",
9191
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9192
16
                "Specifies the explicit alpha to be applied to the entity's geometry", HFILL }
9193
16
        },
9194
16
        { &hf_cigi4_entity_control_entity_id,
9195
16
            { "Entity ID", "cigi.entity_control.entity_id",
9196
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9197
16
                "This parameter identifies a specific entity", HFILL }
9198
16
        },
9199
16
        { &hf_cigi4_entity_control_entity_kind,
9200
16
            { "Parent Kind", "cigi.entity_control.parent_kind",
9201
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9202
16
                "This field shall identify the kind of entity described by the Entity Type record", HFILL }
9203
16
        },
9204
16
        { &hf_cigi4_entity_control_entity_domain,
9205
16
            { "Entity Domain", "cigi.entity_control.entity_domain",
9206
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9207
16
                "Specifies the domain in which the entity operates", HFILL }
9208
16
        },
9209
16
        { &hf_cigi4_entity_control_entity_country,
9210
16
            { "Entity Country", "cigi.entity_control.entity_country",
9211
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9212
16
                "Specifies the roll angle of the entity", HFILL }
9213
16
        },
9214
16
        { &hf_cigi4_entity_control_entity_category,
9215
16
            { "Entity Category", "cigi.entity_control.entity_category",
9216
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9217
16
                "Specifies the instantaneous heading of the entity", HFILL }
9218
16
        },
9219
16
        { &hf_cigi4_entity_control_entity_subcategory,
9220
16
            { "Entity Subcategory", "cigi.entity_control.entity_subcategory",
9221
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9222
16
                "Specifies a particular subcategory to which an entity belongs based on the Category field", HFILL }
9223
16
        },
9224
16
        { &hf_cigi4_entity_control_entity_specific,
9225
16
            { "Entity Specific", "cigi.entity_control.entity_specific",
9226
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9227
16
                "Specifies a specific information about an entity based on the Subcategory field", HFILL }
9228
16
        },
9229
16
        { &hf_cigi4_entity_control_entity_extra,
9230
16
            { "Entity Extra", "cigi.entity_control.entity_extra",
9231
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9232
16
                "Specifies extra information required to describe a particular entity", HFILL }
9233
16
        },
9234
9235
        /* CIGI4 Animation Control */
9236
16
        { &hf_cigi4_animation_control,
9237
16
            { "Animation Control", "cigi.animation_control",
9238
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9239
16
                "Animation Control Packet", HFILL }
9240
16
        },
9241
16
        { &hf_cigi4_animation_control_state,
9242
16
            { "Animation State", "cigi.animation_control_state",
9243
16
                FT_BOOLEAN, 8, TFS(&cigi4_animation_control_state_tfs), 0x01,
9244
16
                "Specifies the state of an animation.", HFILL }
9245
16
        },
9246
16
        { &hf_cigi4_animation_control_frame_position_reset,
9247
16
            { "Animation State Position Reset", "cigi.animation_control_state_position_reset",
9248
16
                FT_BOOLEAN, 8, TFS(&cigi4_animation_control_state_positon_reset_tfs), 0x02,
9249
16
                "whether the animation is restarted from the beginning or just continues from its current frame", HFILL }
9250
16
        },
9251
16
        { &hf_cigi4_animation_control_loop_mode,
9252
16
            { "Animation Loop Mode", "cigi.animation_control_loop_mode",
9253
16
                FT_BOOLEAN, 8, TFS(&cigi4_animation_control_state_loop_mode), 0x04,
9254
16
                "Specifies whether an animation should be a one-shot or should loop continuously", HFILL }
9255
16
        },
9256
16
        { &hf_cigi4_animation_control_inherit_alpha,
9257
16
            { "Inherit Alpha", "cigi.animation_control_inherit_alpha",
9258
16
                FT_BOOLEAN, 8, TFS(&cigi4_animation_control_state_inherit_alpha), 0x04,
9259
16
                "Specifies whether the animation’s alpha is combined with the apparent alpha of the entity", HFILL }
9260
16
        },
9261
16
        { &hf_cigi4_animation_control_alpha,
9262
16
            { "Alpha", "cigi.animation_control_alpha",
9263
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9264
16
                "Specifies the explicit alpha to be applied to the entity’s geometry", HFILL }
9265
16
        },
9266
16
        { &hf_cigi4_animation_control_entity_id,
9267
16
            { "Entity ID", "cigi.animation_control_entity_id",
9268
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9269
16
                "This parameter identifies a specific entity", HFILL }
9270
16
        },
9271
16
        { &hf_cigi4_animation_control_animation_id,
9272
16
            { "Animation ID", "cigi.animation_control_animation_id",
9273
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9274
16
                "This parameter identifies the animation to which the data in this packet should be applied", HFILL }
9275
16
        },
9276
16
        { &hf_cigi4_animation_control_animation_speed,
9277
16
            { "Animation Speed", "cigi.animation_control_animation_speed",
9278
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9279
16
                "This parameter identifies the animation to which the data in this packet should be applied", HFILL }
9280
16
        },
9281
9282
        /* CIGI3 Conformal Clamped Entity Control */
9283
16
        { &hf_cigi3_conformal_clamped_entity_control,
9284
16
            { "Conformal Clamped Entity Control", "cigi.conformal_clamped_entity_control",
9285
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9286
16
                "Conformal Clamped Entity Control Packet", HFILL }
9287
16
        },
9288
16
        { &hf_cigi3_conformal_clamped_entity_control_entity_id,
9289
16
            { "Entity ID", "cigi.conformal_clamped_entity_control.entity_id",
9290
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9291
16
                "Specifies the entity to which this packet is applied", HFILL }
9292
16
        },
9293
16
        { &hf_cigi3_conformal_clamped_entity_control_yaw,
9294
16
            { "Yaw (degrees)", "cigi.conformal_clamped_entity_control.yaw",
9295
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9296
16
                "Specifies the instantaneous heading of the entity", HFILL }
9297
16
        },
9298
16
        { &hf_cigi3_conformal_clamped_entity_control_lat,
9299
16
            { "Latitude (degrees)", "cigi.conformal_clamped_entity_control.lat",
9300
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
9301
16
                "Specifies the entity's geodetic latitude", HFILL }
9302
16
        },
9303
16
        { &hf_cigi3_conformal_clamped_entity_control_lon,
9304
16
            { "Longitude (degrees)", "cigi.conformal_clamped_entity_control.lon",
9305
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
9306
16
                "Specifies the entity's geodetic longitude", HFILL }
9307
16
        },
9308
9309
        /* CIGI4 Conformal Clamped Entity Position */
9310
16
        { &hf_cigi4_conformal_clamped_entity_position,
9311
16
            { "Conformal Clamped Entity Control", "cigi.conformal_clamped_entity_position",
9312
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9313
16
                "Conformal Clamped Entity Control Packet", HFILL }
9314
16
        },
9315
16
        { &hf_cigi4_conformal_clamped_entity_position_entity_id,
9316
16
            { "Entity ID", "cigi.conformal_clamped_entity_position.entity_id",
9317
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9318
16
                "Specifies the entity to which this packet is applied", HFILL }
9319
16
        },
9320
16
        { &hf_cigi4_conformal_clamped_entity_position_yaw,
9321
16
            { "Yaw (degrees)", "cigi.conformal_clamped_entity_position.yaw",
9322
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9323
16
                "Specifies the instantaneous heading of the entity", HFILL }
9324
16
        },
9325
16
        { &hf_cigi4_conformal_clamped_entity_position_lat,
9326
16
            { "Latitude (degrees)", "cigi.conformal_clamped_entity_position.lat",
9327
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
9328
16
                "Specifies the entity's geodetic latitude", HFILL }
9329
16
        },
9330
16
        { &hf_cigi4_conformal_clamped_entity_position_lon,
9331
16
            { "Longitude (degrees)", "cigi.conformal_clamped_entity_position.lon",
9332
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
9333
16
                "Specifies the entity's geodetic longitude", HFILL }
9334
16
        },
9335
9336
        /* CIGI2 Component Control */
9337
16
        { &hf_cigi2_component_control,
9338
16
            { "Component Control", "cigi.component_control",
9339
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9340
16
                "Component Control Packet", HFILL }
9341
16
        },
9342
16
        { &hf_cigi2_component_control_instance_id,
9343
16
            { "Instance ID", "cigi.component_control.instance_id",
9344
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9345
16
                "Identifies the instance of the a class the component being controlled belongs to", HFILL }
9346
16
        },
9347
16
        { &hf_cigi2_component_control_component_class,
9348
16
            { "Component Class", "cigi.component_control.component_class",
9349
16
                FT_UINT8, BASE_DEC, VALS(cigi2_component_control_component_class_vals), 0x0,
9350
16
                "Identifies the class the component being controlled is in", HFILL }
9351
16
        },
9352
16
        { &hf_cigi2_component_control_component_id,
9353
16
            { "Component ID", "cigi.component_control.component_id",
9354
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9355
16
                "Identifies the component of a component class and instance ID this packet will be applied to", HFILL }
9356
16
        },
9357
16
        { &hf_cigi2_component_control_component_state,
9358
16
            { "Component State", "cigi.component_control.component_state",
9359
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9360
16
                "Identifies the commanded state of a component", HFILL }
9361
16
        },
9362
16
        { &hf_cigi2_component_control_component_val1,
9363
16
            { "Component Value 1", "cigi.component_control.component_val1",
9364
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9365
16
                "Identifies a continuous value to be applied to a component", HFILL }
9366
16
        },
9367
16
        { &hf_cigi2_component_control_component_val2,
9368
16
            { "Component Value 2", "cigi.component_control.component_val2",
9369
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9370
16
                "Identifies a continuous value to be applied to a component", HFILL }
9371
16
        },
9372
9373
        /* CIGI3 Component Control */
9374
16
        { &hf_cigi3_component_control,
9375
16
            { "Component Control", "cigi.component_control",
9376
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9377
16
                "Component Control Packet", HFILL }
9378
16
        },
9379
16
        { &hf_cigi3_component_control_component_id,
9380
16
            { "Component ID", "cigi.component_control.component_id",
9381
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9382
16
                "Identifies the component to which the data in this packet should be applied", HFILL }
9383
16
        },
9384
16
        { &hf_cigi3_component_control_instance_id,
9385
16
            { "Instance ID", "cigi.component_control.instance_id",
9386
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9387
16
                "Identifies the object to which the component belongs", HFILL }
9388
16
        },
9389
16
        { &hf_cigi3_component_control_component_class,
9390
16
            { "Component Class", "cigi.component_control.component_class",
9391
16
                FT_UINT8, BASE_DEC, VALS(cigi3_component_control_component_class_vals), 0x0f,
9392
16
                "Identifies the type of object to which the Instance ID parameter refers", HFILL }
9393
16
        },
9394
16
        { &hf_cigi3_component_control_component_state,
9395
16
            { "Component State", "cigi.component_control.component_state",
9396
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9397
16
                "Specifies a discrete state for the component", HFILL }
9398
16
        },
9399
16
        { &hf_cigi3_component_control_data_1,
9400
16
            { "Component Data 1", "cigi.component_control.data_1",
9401
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
9402
16
                "User-defined component data", HFILL }
9403
16
        },
9404
16
        { &hf_cigi3_component_control_data_2,
9405
16
            { "Component Data 2", "cigi.component_control.data_2",
9406
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
9407
16
                "User-defined component data", HFILL }
9408
16
        },
9409
16
        { &hf_cigi3_component_control_data_3,
9410
16
            { "Component Data 3", "cigi.component_control.data_3",
9411
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
9412
16
                "User-defined component data", HFILL }
9413
16
        },
9414
16
        { &hf_cigi3_component_control_data_4,
9415
16
            { "Component Data 4", "cigi.component_control.data_4",
9416
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
9417
16
                "User-defined component data", HFILL }
9418
16
        },
9419
16
        { &hf_cigi3_component_control_data_5,
9420
16
            { "Component Data 5", "cigi.component_control.data_5",
9421
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
9422
16
                "User-defined component data", HFILL }
9423
16
        },
9424
16
        { &hf_cigi3_component_control_data_6,
9425
16
            { "Component Data 6", "cigi.component_control.data_6",
9426
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
9427
16
                "User-defined component data", HFILL }
9428
16
        },
9429
9430
        /* CIGI3_3 Component Control */
9431
16
        { &hf_cigi3_3_component_control_component_class,
9432
16
            { "Component Class", "cigi.component_control.component_class",
9433
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_component_control_component_class_vals), 0x3f,
9434
16
                "Identifies the type of object to which the Instance ID parameter refers", HFILL }
9435
16
        },
9436
9437
        /* CIGI4 Component Control */
9438
9439
        /* CIGI3 Short Component Control */
9440
16
        { &hf_cigi3_short_component_control,
9441
16
            { "Short Component Control", "cigi.short_component_control",
9442
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9443
16
                "Short Component Control Packet", HFILL }
9444
16
        },
9445
16
        { &hf_cigi3_short_component_control_component_id,
9446
16
            { "Component ID", "cigi.short_component_control.component_id",
9447
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9448
16
                "Identifies the component to which the data in this packet should be applied", HFILL }
9449
16
        },
9450
16
        { &hf_cigi3_short_component_control_instance_id,
9451
16
            { "Instance ID", "cigi.short_component_control.instance_id",
9452
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9453
16
                "Identifies the object to which the component belongs", HFILL }
9454
16
        },
9455
16
        { &hf_cigi3_short_component_control_component_class,
9456
16
            { "Component Class", "cigi.short_component_control.component_class",
9457
16
                FT_UINT8, BASE_DEC, VALS(cigi3_component_control_component_class_vals), 0x0f,
9458
16
                "Identifies the type of object to which the Instance ID parameter refers", HFILL }
9459
16
        },
9460
16
        { &hf_cigi3_short_component_control_component_state,
9461
16
            { "Component State", "cigi.short_component_control.component_state",
9462
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9463
16
                "Specifies a discrete state for the component", HFILL }
9464
16
        },
9465
16
        { &hf_cigi3_short_component_control_data_1,
9466
16
            { "Component Data 1", "cigi.short_component_control.data_1",
9467
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
9468
16
                "User-defined component data", HFILL }
9469
16
        },
9470
16
        { &hf_cigi3_short_component_control_data_2,
9471
16
            { "Component Data 2", "cigi.short_component_control.data_2",
9472
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
9473
16
                "User-defined component data", HFILL }
9474
16
        },
9475
9476
        /* CIGI3_3 Short Component Control */
9477
16
        { &hf_cigi3_3_short_component_control_component_class,
9478
16
            { "Component Class", "cigi.short_component_control.component_class",
9479
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_component_control_component_class_vals), 0x3f,
9480
16
                "Identifies the type of object to which the Instance ID parameter refers", HFILL }
9481
16
        },
9482
9483
        /* CIGI4 Short Component Control */
9484
9485
        /* CIGI2 Articulated Parts Control */
9486
16
        { &hf_cigi2_articulated_parts_control,
9487
16
            { "Articulated Parts Control", "cigi.art_part_control",
9488
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9489
16
                "Articulated Parts Control Packet", HFILL }
9490
16
        },
9491
16
        { &hf_cigi2_articulated_parts_control_entity_id,
9492
16
            { "Entity ID", "cigi.art_part_control.entity_id",
9493
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9494
16
                "Identifies the entity to which this data packet will be applied", HFILL }
9495
16
        },
9496
16
        { &hf_cigi2_articulated_parts_control_part_id,
9497
16
            { "Articulated Part ID", "cigi.art_part_control.part_id",
9498
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9499
16
                "Identifies which articulated part is controlled with this data packet", HFILL }
9500
16
        },
9501
16
        { &hf_cigi2_articulated_parts_control_part_state,
9502
16
            { "Articulated Part State", "cigi.art_part_control.part_state",
9503
16
                FT_BOOLEAN, 8, TFS(&tfs_active_inactive), 0x80,
9504
16
                "Indicates whether an articulated part is to be shown in the display", HFILL }
9505
16
        },
9506
16
        { &hf_cigi2_articulated_parts_control_xoff_enable,
9507
16
            { "X Offset Enable", "cigi.art_part_control.xoff_enable",
9508
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40,
9509
16
                "Identifies whether the articulated part x offset in this data packet is manipulated from the host", HFILL }
9510
16
        },
9511
16
        { &hf_cigi2_articulated_parts_control_yoff_enable,
9512
16
            { "Y Offset Enable", "cigi.art_part_control.yoff_enable",
9513
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
9514
16
                "Identifies whether the articulated part y offset in this data packet is manipulated from the host", HFILL }
9515
16
        },
9516
16
        { &hf_cigi2_articulated_parts_control_zoff_enable,
9517
16
            { "Z Offset Enable", "cigi.art_part_control.zoff_enable",
9518
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
9519
16
                "Identifies whether the articulated part z offset in this data packet is manipulated from the host", HFILL }
9520
16
        },
9521
16
        { &hf_cigi2_articulated_parts_control_roll_enable,
9522
16
            { "Roll Enable", "cigi.art_part_control.roll_enable",
9523
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
9524
16
                "Identifies whether the articulated part roll enable in this data packet is manipulated from the host", HFILL }
9525
16
        },
9526
16
        { &hf_cigi2_articulated_parts_control_pitch_enable,
9527
16
            { "Pitch Enable", "cigi.art_part_control.pitch_enable",
9528
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
9529
16
                "Identifies whether the articulated part pitch enable in this data packet is manipulated from the host", HFILL }
9530
16
        },
9531
16
        { &hf_cigi2_articulated_parts_control_yaw_enable,
9532
16
            { "Yaw Enable", "cigi.art_part_control.yaw_enable",
9533
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
9534
16
                "Identifies whether the articulated part yaw enable in this data packet is manipulated from the host", HFILL }
9535
16
        },
9536
16
        { &hf_cigi2_articulated_parts_control_x_offset,
9537
16
            { "X Offset (m)", "cigi.art_part_control.x_offset",
9538
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9539
16
                "Identifies the distance along the X axis by which the articulated part should be moved", HFILL }
9540
16
        },
9541
16
        { &hf_cigi2_articulated_parts_control_y_offset,
9542
16
            { "Y Offset (m)", "cigi.art_part_control.y_offset",
9543
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9544
16
                "Identifies the distance along the Y axis by which the articulated part should be moved", HFILL }
9545
16
        },
9546
16
        { &hf_cigi2_articulated_parts_control_z_offset,
9547
16
            { "Z Offset (m)", "cigi.art_part_control.z_offset",
9548
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9549
16
                "Identifies the distance along the Z axis by which the articulated part should be moved", HFILL }
9550
16
        },
9551
16
        { &hf_cigi2_articulated_parts_control_roll,
9552
16
            { "Roll (degrees)", "cigi.art_part_control.roll",
9553
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9554
16
                "Specifies the roll of this part with respect to the submodel coordinate system", HFILL }
9555
16
        },
9556
16
        { &hf_cigi2_articulated_parts_control_pitch,
9557
16
            { "Pitch (degrees)", "cigi.art_part_control.pitch",
9558
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9559
16
                "Specifies the pitch of this part with respect to the submodel coordinate system", HFILL }
9560
16
        },
9561
16
        { &hf_cigi2_articulated_parts_control_yaw,
9562
16
            { "Yaw (degrees)", "cigi.art_part_control.yaw",
9563
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9564
16
                "Specifies the yaw of this part with respect to the submodel coordinate system", HFILL }
9565
16
        },
9566
9567
        /* CIGI3 Articulated Part Control */
9568
16
        { &hf_cigi3_articulated_part_control,
9569
16
            { "Articulated Part Control", "cigi.art_part_control",
9570
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9571
16
                "Articulated Part Control Packet", HFILL }
9572
16
        },
9573
16
        { &hf_cigi3_articulated_part_control_entity_id,
9574
16
            { "Entity ID", "cigi.art_part_control.entity_id",
9575
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9576
16
                "Specifies the entity to which the articulated part belongs", HFILL }
9577
16
        },
9578
16
        { &hf_cigi3_articulated_part_control_part_id,
9579
16
            { "Articulated Part ID", "cigi.art_part_control.part_id",
9580
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9581
16
                "Specifies the articulated part to which the data in this packet should be applied", HFILL }
9582
16
        },
9583
16
        { &hf_cigi3_articulated_part_control_part_enable,
9584
16
            { "Articulated Part Enable", "cigi.art_part_control.part_enable",
9585
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
9586
16
                "Determines whether the articulated part submodel should be enabled or disabled within the scene graph", HFILL }
9587
16
        },
9588
16
        { &hf_cigi3_articulated_part_control_xoff_enable,
9589
16
            { "X Offset Enable", "cigi.art_part_control.xoff_enable",
9590
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
9591
16
                "Determines whether the X Offset parameter of the current packet should be applied to the articulated part", HFILL }
9592
16
        },
9593
16
        { &hf_cigi3_articulated_part_control_yoff_enable,
9594
16
            { "Y Offset Enable", "cigi.art_part_control.yoff_enable",
9595
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
9596
16
                "Determines whether the Y Offset parameter of the current packet should be applied to the articulated part", HFILL }
9597
16
        },
9598
16
        { &hf_cigi3_articulated_part_control_zoff_enable,
9599
16
            { "Z Offset Enable", "cigi.art_part_control.zoff_enable",
9600
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
9601
16
                "Determines whether the Z Offset parameter of the current packet should be applied to the articulated part", HFILL }
9602
16
        },
9603
16
        { &hf_cigi3_articulated_part_control_roll_enable,
9604
16
            { "Roll Enable", "cigi.art_part_control.roll_enable",
9605
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
9606
16
                "Determines whether the Roll parameter of the current packet should be applied to the articulated part", HFILL }
9607
16
        },
9608
16
        { &hf_cigi3_articulated_part_control_pitch_enable,
9609
16
            { "Pitch Enable", "cigi.art_part_control.pitch_enable",
9610
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
9611
16
                "Determines whether the Pitch parameter of the current packet should be applied to the articulated part", HFILL }
9612
16
        },
9613
16
        { &hf_cigi3_articulated_part_control_yaw_enable,
9614
16
            { "Yaw Enable", "cigi.art_part_control.yaw_enable",
9615
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40,
9616
16
                "Determines whether the Yaw parameter of the current packet should be applied to the articulated part", HFILL }
9617
16
        },
9618
16
        { &hf_cigi3_articulated_part_control_xoff,
9619
16
            { "X Offset (m)", "cigi.art_part_control.xoff",
9620
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9621
16
                "Specifies the distance of the articulated part along its X axis", HFILL }
9622
16
        },
9623
16
        { &hf_cigi3_articulated_part_control_yoff,
9624
16
            { "Y Offset (m)", "cigi.art_part_control.yoff",
9625
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9626
16
                "Specifies the distance of the articulated part along its Y axis", HFILL }
9627
16
        },
9628
16
        { &hf_cigi3_articulated_part_control_zoff,
9629
16
            { "Z Offset (m)", "cigi.art_part_control.zoff",
9630
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9631
16
                "Specifies the distance of the articulated part along its Z axis", HFILL }
9632
16
        },
9633
16
        { &hf_cigi3_articulated_part_control_roll,
9634
16
            { "Roll (degrees)", "cigi.art_part_control.roll",
9635
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9636
16
                "Specifies the angle of rotation of the articulated part submodel about its X axis after yaw and pitch have been applied", HFILL }
9637
16
        },
9638
16
        { &hf_cigi3_articulated_part_control_pitch,
9639
16
            { "Pitch (degrees)", "cigi.art_part_control.pitch",
9640
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9641
16
                "Specifies the angle of rotation of the articulated part submodel about its Y axis after yaw has been applied", HFILL }
9642
16
        },
9643
16
        { &hf_cigi3_articulated_part_control_yaw,
9644
16
            { "Yaw (degrees)", "cigi.art_part_control.yaw",
9645
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9646
16
                "Specifies the angle of rotation of the articulated part about its Z axis", HFILL }
9647
16
        },
9648
9649
9650
        /* CIGI4 Articulated Part Control */
9651
16
        { &hf_cigi4_articulated_part_control_part_enable_flags,
9652
16
            { "Request Flags", "cigi.art_part_control.flags",
9653
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
9654
16
                NULL, HFILL }
9655
16
        },
9656
9657
        /* CIGI3 Short Articulated Part Control */
9658
16
        { &hf_cigi3_short_articulated_part_control,
9659
16
            { "Short Articulated Part Control", "cigi.short_art_part_control",
9660
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9661
16
                "Short Articulated Part Control Packet", HFILL }
9662
16
        },
9663
16
        { &hf_cigi3_short_articulated_part_control_entity_id,
9664
16
            { "Entity ID", "cigi.short_art_part_control.entity_id",
9665
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9666
16
                "Specifies the entity to which the articulated part(s) belongs", HFILL }
9667
16
        },
9668
16
        { &hf_cigi3_short_articulated_part_control_part_id_1,
9669
16
            { "Articulated Part ID 1", "cigi.short_art_part_control.part_id_1",
9670
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9671
16
                "Specifies an articulated part to which the data in this packet should be applied", HFILL }
9672
16
        },
9673
16
        { &hf_cigi3_short_articulated_part_control_part_id_2,
9674
16
            { "Articulated Part ID 2", "cigi.short_art_part_control.part_id_2",
9675
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9676
16
                "Specifies an articulated part to which the data in this packet should be applied", HFILL }
9677
16
        },
9678
16
        { &hf_cigi3_short_articulated_part_control_dof_select_1,
9679
16
            { "DOF Select 1", "cigi.short_art_part_control.dof_select_1",
9680
16
                FT_UINT8, BASE_DEC, VALS(cigi3_short_articulated_part_control_dof_select_vals), 0x07,
9681
16
                "Specifies the degree of freedom to which the value of DOF 1 is applied", HFILL }
9682
16
        },
9683
16
        { &hf_cigi3_short_articulated_part_control_dof_select_2,
9684
16
            { "DOF Select 2", "cigi.short_art_part_control.dof_select_2",
9685
16
                FT_UINT8, BASE_DEC, VALS(cigi3_short_articulated_part_control_dof_select_vals), 0x38,
9686
16
                "Specifies the degree of freedom to which the value of DOF 2 is applied", HFILL }
9687
16
        },
9688
16
        { &hf_cigi3_short_articulated_part_control_part_enable_1,
9689
16
            { "Articulated Part Enable 1", "cigi.short_art_part_control.part_enable_1",
9690
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40,
9691
16
                "Determines whether the articulated part submodel specified by Articulated Part ID 1 should be enabled or disabled within the scene graph", HFILL }
9692
16
        },
9693
16
        { &hf_cigi3_short_articulated_part_control_part_enable_2,
9694
16
            { "Articulated Part Enable 2", "cigi.short_art_part_control.part_enable_2",
9695
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
9696
16
                "Determines whether the articulated part submodel specified by Articulated Part ID 2 should be enabled or disabled within the scene graph", HFILL }
9697
16
        },
9698
16
        { &hf_cigi3_short_articulated_part_control_dof_1,
9699
16
            { "DOF 1", "cigi.short_art_part_control.dof_1",
9700
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9701
16
                "Specifies either an offset or an angular position for the part identified by Articulated Part ID 1", HFILL }
9702
16
        },
9703
16
        { &hf_cigi3_short_articulated_part_control_dof_2,
9704
16
            { "DOF 2", "cigi.short_art_part_control.dof_2",
9705
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9706
16
                "Specifies either an offset or an angular position for the part identified by Articulated Part ID 2", HFILL }
9707
16
        },
9708
9709
        /* CIGI4 Short Articulated Part Control */
9710
16
        { &hf_cigi4_short_articulated_part_control_part_enable_flags,
9711
16
            { "Request Flags", "cigi.short_art_part_control.flags",
9712
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
9713
16
                NULL, HFILL }
9714
16
        },
9715
9716
        /* CIGI2 Rate Control */
9717
16
        { &hf_cigi2_rate_control,
9718
16
            { "Rate Control", "cigi.rate_control",
9719
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9720
16
                "Rate Control Packet", HFILL }
9721
16
        },
9722
16
        { &hf_cigi2_rate_control_entity_id,
9723
16
            { "Entity ID", "cigi.rate_control.entity_id",
9724
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9725
16
                "Specifies the entity to which this data packet will be applied", HFILL }
9726
16
        },
9727
16
        { &hf_cigi2_rate_control_part_id,
9728
16
            { "Articulated Part ID", "cigi.rate_control.part_id",
9729
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9730
16
                "Identifies which articulated part is controlled with this data packet", HFILL }
9731
16
        },
9732
16
        { &hf_cigi2_rate_control_x_rate,
9733
16
            { "X Linear Rate (m/s)", "cigi.rate_control.x_rate",
9734
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9735
16
                "Specifies the x component of the velocity vector for the entity being represented", HFILL }
9736
16
        },
9737
16
        { &hf_cigi2_rate_control_y_rate,
9738
16
            { "Y Linear Rate (m/s)", "cigi.rate_control.y_rate",
9739
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9740
16
                "Specifies the y component of the velocity vector for the entity being represented", HFILL }
9741
16
        },
9742
16
        { &hf_cigi2_rate_control_z_rate,
9743
16
            { "Z Linear Rate (m/s)", "cigi.rate_control.z_rate",
9744
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9745
16
                "Specifies the z component of the velocity vector for the entity being represented", HFILL }
9746
16
        },
9747
16
        { &hf_cigi2_rate_control_roll_rate,
9748
16
            { "Roll Angular Rate (degrees/s)", "cigi.rate_control.roll_rate",
9749
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9750
16
                "Specifies the roll angular rate for the entity being represented", HFILL }
9751
16
        },
9752
16
        { &hf_cigi2_rate_control_pitch_rate,
9753
16
            { "Pitch Angular Rate (degrees/s)", "cigi.rate_control.pitch_rate",
9754
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9755
16
                "Specifies the pitch angular rate for the entity being represented", HFILL }
9756
16
        },
9757
16
        { &hf_cigi2_rate_control_yaw_rate,
9758
16
            { "Yaw Angular Rate (degrees/s)", "cigi.rate_control.yaw_rate",
9759
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9760
16
                "Specifies the yaw angular rate for the entity being represented", HFILL }
9761
16
        },
9762
9763
        /* CIGI3 Rate Control */
9764
16
        { &hf_cigi3_rate_control,
9765
16
            { "Rate Control", "cigi.rate_control",
9766
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9767
16
                "Rate Control Packet", HFILL }
9768
16
        },
9769
16
        { &hf_cigi3_rate_control_entity_id,
9770
16
            { "Entity ID", "cigi.rate_control.entity_id",
9771
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9772
16
                "Specifies the entity to which the rate should be applied", HFILL }
9773
16
        },
9774
16
        { &hf_cigi3_rate_control_part_id,
9775
16
            { "Articulated Part ID", "cigi.rate_control.part_id",
9776
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9777
16
                "Specifies the articulated part to which the rate should be applied", HFILL }
9778
16
        },
9779
16
        { &hf_cigi3_rate_control_apply_to_part,
9780
16
            { "Apply to Articulated Part", "cigi.rate_control.apply_to_part",
9781
16
                FT_BOOLEAN, 8, NULL, 0x01,
9782
16
                "Determines whether the rate is applied to the articulated part specified by the Articulated Part ID parameter", HFILL }
9783
16
        },
9784
16
        { &hf_cigi3_rate_control_x_rate,
9785
16
            { "X Linear Rate (m/s)", "cigi.rate_control.x_rate",
9786
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9787
16
                "Specifies the X component of a linear velocity vector", HFILL }
9788
16
        },
9789
16
        { &hf_cigi3_rate_control_y_rate,
9790
16
            { "Y Linear Rate (m/s)", "cigi.rate_control.y_rate",
9791
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9792
16
                "Specifies the Y component of a linear velocity vector", HFILL }
9793
16
        },
9794
16
        { &hf_cigi3_rate_control_z_rate,
9795
16
            { "Z Linear Rate (m/s)", "cigi.rate_control.z_rate",
9796
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9797
16
                "Specifies the Z component of a linear velocity vector", HFILL }
9798
16
        },
9799
16
        { &hf_cigi3_rate_control_roll_rate,
9800
16
            { "Roll Angular Rate (degrees/s)", "cigi.rate_control.roll_rate",
9801
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9802
16
                "Specifies the angle of rotation of the articulated part submodel about its X axis after yaw and pitch have been applied", HFILL }
9803
16
        },
9804
16
        { &hf_cigi3_rate_control_pitch_rate,
9805
16
            { "Pitch Angular Rate (degrees/s)", "cigi.rate_control.pitch_rate",
9806
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9807
16
                "Specifies the angle of rotation of the articulated part submodel about its Y axis after yaw has been applied", HFILL }
9808
16
        },
9809
16
        { &hf_cigi3_rate_control_yaw_rate,
9810
16
            { "Yaw Angular Rate (degrees/s)", "cigi.rate_control.yaw_rate",
9811
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9812
16
                "Specifies the angle of rotation of the articulated part about its Z axis when its X axis is parallel to that of the entity", HFILL }
9813
16
        },
9814
9815
        /* CIGI3_2 Rate Control */
9816
16
        { &hf_cigi3_2_rate_control_coordinate_system,
9817
16
            { "Coordinate System", "cigi.rate_control.coordinate_system",
9818
16
                FT_BOOLEAN, 8, TFS(&local_worldparent_tfs), 0x02,
9819
16
                "Specifies the reference coordinate system to which the linear and angular rates are applied", HFILL }
9820
16
        },
9821
9822
        /* CIGI4 Velocity Control */
9823
16
        { &hf_cigi4_velocity_control,
9824
16
            { "Rate Control", "cigi.rate_control",
9825
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9826
16
                "Velocity Control Packet", HFILL }
9827
16
        },
9828
16
        { &hf_cigi4_velocity_control_entity_id,
9829
16
            { "Entity ID", "cigi.rate_control.entity_id",
9830
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
9831
16
                "Specifies the entity to which the rate should be applied", HFILL }
9832
16
        },
9833
16
        { &hf_cigi4_velocity_control_part_id,
9834
16
            { "Articulated Part ID", "cigi.rate_control.part_id",
9835
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9836
16
                "Specifies the articulated part to which the rate should be applied", HFILL }
9837
16
        },
9838
16
        { &hf_cigi4_velocity_control_flags,
9839
16
            { "Flags", "cigi.rate_control.flags",
9840
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
9841
16
                NULL, HFILL }
9842
16
        },
9843
16
        { &hf_cigi4_velocity_control_apply_to_part,
9844
16
            { "Apply to Articulated Part", "cigi.rate_control.apply_to_part",
9845
16
                FT_BOOLEAN, 8, NULL, 0x01,
9846
16
                "Determines whether the rate is applied to the articulated part specified by the Articulated Part ID parameter", HFILL }
9847
16
        },
9848
16
        { &hf_cigi4_velocity_control_coordinate_system,
9849
16
            { "Coordinate System", "cigi.rate_control.coordinate_system",
9850
16
                FT_BOOLEAN, 8, TFS(&local_worldparent_tfs), 0x02,
9851
16
                "Specifies the reference coordinate system to which the linear and angular rates are applied", HFILL }
9852
16
        },
9853
16
        { &hf_cigi4_velocity_control_x_rate,
9854
16
            { "X Linear Rate (m/s)", "cigi.rate_control.x_rate",
9855
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9856
16
                "Specifies the X component of a linear velocity vector", HFILL }
9857
16
        },
9858
16
        { &hf_cigi4_velocity_control_y_rate,
9859
16
            { "Y Linear Rate (m/s)", "cigi.rate_control.y_rate",
9860
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9861
16
                "Specifies the Y component of a linear velocity vector", HFILL }
9862
16
        },
9863
16
        { &hf_cigi4_velocity_control_z_rate,
9864
16
            { "Z Linear Rate (m/s)", "cigi.rate_control.z_rate",
9865
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9866
16
                "Specifies the Z component of a linear velocity vector", HFILL }
9867
16
        },
9868
16
        { &hf_cigi4_velocity_control_roll_rate,
9869
16
            { "Roll Angular Rate (degrees/s)", "cigi.rate_control.roll_rate",
9870
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9871
16
                "Specifies the angle of rotation of the articulated part submodel about its X axis after yaw and pitch have been applied", HFILL }
9872
16
        },
9873
16
        { &hf_cigi4_velocity_control_pitch_rate,
9874
16
            { "Pitch Angular Rate (degrees/s)", "cigi.rate_control.pitch_rate",
9875
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9876
16
                "Specifies the angle of rotation of the articulated part submodel about its Y axis after yaw has been applied", HFILL }
9877
16
        },
9878
16
        { &hf_cigi4_velocity_control_yaw_rate,
9879
16
            { "Yaw Angular Rate (degrees/s)", "cigi.rate_control.yaw_rate",
9880
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9881
16
                "Specifies the angle of rotation of the articulated part about its Z axis when its X axis is parallel to that of the entity", HFILL }
9882
16
        },
9883
9884
        /* CIGI3 Celestial Sphere Control */
9885
16
        { &hf_cigi3_celestial_sphere_control,
9886
16
            { "Celestial Sphere Control", "cigi.celestial_sphere_control",
9887
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9888
16
                "Celestial Sphere Control Packet", HFILL }
9889
16
        },
9890
16
        { &hf_cigi3_celestial_sphere_control_hour,
9891
16
            { "Hour (h)", "cigi.celestial_sphere_control.hour",
9892
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9893
16
                "Specifies the current hour of the day within the simulation", HFILL }
9894
16
        },
9895
16
        { &hf_cigi3_celestial_sphere_control_minute,
9896
16
            { "Minute (min)", "cigi.celestial_sphere_control.minute",
9897
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9898
16
                "Specifies the current minute of the day within the simulation", HFILL }
9899
16
        },
9900
16
        { &hf_cigi3_celestial_sphere_control_ephemeris_enable,
9901
16
            { "Ephemeris Model Enable", "cigi.celestial_sphere_control.ephemeris_enable",
9902
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
9903
16
                "Controls whether the time of day is static or continuous", HFILL }
9904
16
        },
9905
16
        { &hf_cigi3_celestial_sphere_control_sun_enable,
9906
16
            { "Sun Enable", "cigi.celestial_sphere_control.sun_enable",
9907
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
9908
16
                "Specifies whether the sun is enabled in the sky model", HFILL }
9909
16
        },
9910
16
        { &hf_cigi3_celestial_sphere_control_moon_enable,
9911
16
            { "Moon Enable", "cigi.celestial_sphere_control.moon_enable",
9912
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
9913
16
                "Specifies whether the moon is enabled in the sky model", HFILL }
9914
16
        },
9915
16
        { &hf_cigi3_celestial_sphere_control_star_enable,
9916
16
            { "Star Field Enable", "cigi.celestial_sphere_control.star_enable",
9917
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
9918
16
                "Specifies whether the start field is enabled in the sky model", HFILL }
9919
16
        },
9920
16
        { &hf_cigi3_celestial_sphere_control_date_time_valid,
9921
16
            { "Date/Time Valid", "cigi.celestial_sphere_control.date_time_valid",
9922
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
9923
16
                "Specifies whether the Hour, Minute, and Date parameters are valid", HFILL }
9924
16
        },
9925
16
        { &hf_cigi3_celestial_sphere_control_date,
9926
16
            { "Date (MMDDYYYY)", "cigi.celestial_sphere_control.date",
9927
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
9928
16
                "Specifies the current date within the simulation", HFILL }
9929
16
        },
9930
16
        { &hf_cigi3_celestial_sphere_control_star_intensity,
9931
16
            { "Star Field Intensity (%)", "cigi.celestial_sphere_control.star_intensity",
9932
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9933
16
                "Specifies the intensity of the star field within the sky model", HFILL }
9934
16
        },
9935
9936
        /* CIGI4 Celestial Sphere Control */
9937
16
        { &hf_cigi4_celestial_sphere_control_enable_flags,
9938
16
            { "Flags", "cigi.rate_control.flags",
9939
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
9940
16
                NULL, HFILL }
9941
16
        },
9942
16
        { &hf_cigi4_celestial_sphere_control_seconds,
9943
16
            { "Second (sec)", "cigi.celestial_sphere_control.seconds",
9944
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
9945
16
                "Specifies the current date within the simulation", HFILL }
9946
16
        },
9947
        /* The CIGI4 spec shows the date in the opposite order from CIGI3. */
9948
16
        { &hf_cigi4_celestial_sphere_control_date,
9949
16
            { "Date (YYYYMMDD)", "cigi.celestial_sphere_control.date",
9950
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
9951
16
                "Specifies the current date within the simulation", HFILL }
9952
16
        },
9953
9954
        /* CIGI3 Atmosphere Control */
9955
16
        { &hf_cigi3_atmosphere_control,
9956
16
            { "Atmosphere Control", "cigi.atmosphere_control",
9957
16
                FT_NONE, BASE_NONE, NULL, 0x0,
9958
16
                "Atmosphere Control Packet", HFILL }
9959
16
        },
9960
16
        { &hf_cigi3_atmosphere_control_atmospheric_model_enable,
9961
16
            { "Atmospheric Model Enable", "cigi.atmosphere_control.atmospheric_model_enable",
9962
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
9963
16
                "Specifies whether the IG should use an atmospheric model to determine spectral radiances for sensor applications", HFILL }
9964
16
        },
9965
16
        { &hf_cigi3_atmosphere_control_humidity,
9966
16
            { "Global Humidity (%)", "cigi.atmosphere_control.humidity",
9967
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
9968
16
                "Specifies the global humidity of the environment", HFILL }
9969
16
        },
9970
16
        { &hf_cigi3_atmosphere_control_air_temp,
9971
16
            { "Global Air Temperature (degrees C)", "cigi.atmosphere_control.air_temp",
9972
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9973
16
                "Specifies the global air temperature of the environment", HFILL }
9974
16
        },
9975
16
        { &hf_cigi3_atmosphere_control_visibility_range,
9976
16
            { "Global Visibility Range (m)", "cigi.atmosphere_control.visibility_range",
9977
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9978
16
                "Specifies the global visibility range through the atmosphere", HFILL }
9979
16
        },
9980
16
        { &hf_cigi3_atmosphere_control_horiz_wind,
9981
16
            { "Global Horizontal Wind Speed (m/s)", "cigi.atmosphere_control.horiz_wind",
9982
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9983
16
                "Specifies the global wind speed parallel to the ellipsoid-tangential reference plane", HFILL }
9984
16
        },
9985
16
        { &hf_cigi3_atmosphere_control_vert_wind,
9986
16
            { "Global Vertical Wind Speed (m/s)", "cigi.atmosphere_control.vert_wind",
9987
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9988
16
                "Specifies the global vertical wind speed", HFILL }
9989
16
        },
9990
16
        { &hf_cigi3_atmosphere_control_wind_direction,
9991
16
            { "Global Wind Direction (degrees)", "cigi.atmosphere_control.wind_direction",
9992
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9993
16
                "Specifies the global wind direction", HFILL }
9994
16
        },
9995
16
        { &hf_cigi3_atmosphere_control_barometric_pressure,
9996
16
            { "Global Barometric Pressure (mb or hPa)", "cigi.atmosphere_control.barometric_pressure",
9997
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
9998
16
                "Specifies the global atmospheric pressure", HFILL }
9999
16
        },
10000
10001
        /* CIGI4 Atmosphere Control */
10002
10003
        /* CIGI2 Environmental Control */
10004
16
        { &hf_cigi2_environment_control,
10005
16
            { "Environment Control", "cigi.env_control",
10006
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10007
16
                "Environment Control Packet", HFILL }
10008
16
        },
10009
16
        { &hf_cigi2_environment_control_hour,
10010
16
            { "Hour (h)", "cigi.env_control.hour",
10011
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
10012
16
                "Identifies the hour of the day for the ephemeris program within the image generator", HFILL }
10013
16
        },
10014
16
        { &hf_cigi2_environment_control_minute,
10015
16
            { "Minute (min)", "cigi.env_control.minute",
10016
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
10017
16
                "Identifies the minute of the hour for the ephemeris program within the image generator", HFILL }
10018
16
        },
10019
16
        { &hf_cigi2_environment_control_ephemeris_enable,
10020
16
            { "Ephemeris Enable", "cigi.env_control.ephemeris_enable",
10021
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
10022
16
                "Identifies whether a continuous time of day or static time of day is used", HFILL }
10023
16
        },
10024
16
        { &hf_cigi2_environment_control_humidity,
10025
16
            { "Humidity (%)", "cigi.env_control.humidity",
10026
16
                FT_UINT8, BASE_DEC, NULL, 0x7f,
10027
16
                "Specifies the global humidity of the environment", HFILL }
10028
16
        },
10029
16
        { &hf_cigi2_environment_control_modtran_enable,
10030
16
            { "MODTRAN", "cigi.env_control.modtran_enable",
10031
16
                FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x80,
10032
16
                "Identifies whether atmospherics will be included in the calculations", HFILL }
10033
16
        },
10034
16
        { &hf_cigi2_environment_control_date,
10035
16
            { "Date (MMDDYYYY)", "cigi.env_control.date",
10036
16
                FT_INT32, BASE_DEC, NULL, 0x0,
10037
16
                "Specifies the desired date for use by the ephemeris program within the image generator", HFILL }
10038
16
        },
10039
16
        { &hf_cigi2_environment_control_air_temp,
10040
16
            { "Air Temperature (degrees C)", "cigi.env_control.air_temp",
10041
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10042
16
                "Identifies the global temperature of the environment", HFILL }
10043
16
        },
10044
16
        { &hf_cigi2_environment_control_global_visibility,
10045
16
            { "Global Visibility (m)", "cigi.env_control.global_visibility",
10046
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10047
16
                "Identifies the global visibility", HFILL }
10048
16
        },
10049
16
        { &hf_cigi2_environment_control_wind_speed,
10050
16
            { "Wind Speed (m/s)", "cigi.env_control.wind_speed",
10051
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10052
16
                "Identifies the global wind speed", HFILL }
10053
16
        },
10054
16
        { &hf_cigi2_environment_control_wind_direction,
10055
16
            { "Wind Direction (degrees)", "cigi.env_control.wind_direction",
10056
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10057
16
                "Identifies the global wind direction", HFILL }
10058
16
        },
10059
16
        { &hf_cigi2_environment_control_pressure,
10060
16
            { "Barometric Pressure (mb)", "cigi.env_control.pressure",
10061
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10062
16
                "Controls the atmospheric pressure input into MODTRAN", HFILL }
10063
16
        },
10064
16
        { &hf_cigi2_environment_control_aerosol,
10065
16
            { "Aerosol (gm/m^3)", "cigi.env_control.aerosol",
10066
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10067
16
                "Controls the liquid water content for the defined atmosphere", HFILL }
10068
16
        },
10069
10070
        /* CIGI3 Environmental Region Control */
10071
16
        { &hf_cigi3_environmental_region_control,
10072
16
            { "Environmental Region Control", "cigi.env_region_control",
10073
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10074
16
                "Environmental Region Control Packet", HFILL }
10075
16
        },
10076
16
        { &hf_cigi3_environmental_region_control_region_id,
10077
16
            { "Region ID", "cigi.env_region_control.region_id",
10078
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10079
16
                "Specifies the environmental region to which the data in this packet will be applied", HFILL }
10080
16
        },
10081
16
        { &hf_cigi3_environmental_region_control_region_state,
10082
16
            { "Region State", "cigi.env_region_control.region_state",
10083
16
                FT_UINT8, BASE_DEC, VALS(cigi3_environmental_region_control_region_state_vals), 0x03,
10084
16
                "Specifies whether the region should be active or destroyed", HFILL }
10085
16
        },
10086
16
        { &hf_cigi3_environmental_region_control_merge_weather,
10087
16
            { "Merge Weather Properties", "cigi.env_region_control.merge_weather",
10088
16
                FT_BOOLEAN, 8, TFS(&cigi3_environmental_region_control_merge_properties_tfs), 0x04,
10089
16
                "Specifies whether atmospheric conditions within this region should be merged with those of other regions within areas of overlap", HFILL }
10090
16
        },
10091
16
        { &hf_cigi3_environmental_region_control_merge_aerosol,
10092
16
            { "Merge Aerosol Concentrations", "cigi.env_region_control.merge_aerosol",
10093
16
                FT_BOOLEAN, 8, TFS(&cigi3_environmental_region_control_merge_properties_tfs), 0x08,
10094
16
                "Specifies whether the concentrations of aerosols found within this region should be merged with those of other regions within areas of overlap", HFILL }
10095
16
        },
10096
16
        { &hf_cigi3_environmental_region_control_merge_maritime,
10097
16
            { "Merge Maritime Surface Conditions", "cigi.env_region_control.merge_maritime",
10098
16
                FT_BOOLEAN, 8, TFS(&cigi3_environmental_region_control_merge_properties_tfs), 0x10,
10099
16
                "Specifies whether the maritime surface conditions found within this region should be merged with those of other regions within areas of overlap", HFILL }
10100
16
        },
10101
16
        { &hf_cigi3_environmental_region_control_merge_terrestrial,
10102
16
            { "Merge Terrestrial Surface Conditions", "cigi.env_region_control.merge_terrestrial",
10103
16
                FT_BOOLEAN, 8, TFS(&cigi3_environmental_region_control_merge_properties_tfs), 0x20,
10104
16
                "Specifies whether the terrestrial surface conditions found within this region should be merged with those of other regions within areas of overlap", HFILL }
10105
16
        },
10106
16
        { &hf_cigi3_environmental_region_control_lat,
10107
16
            { "Latitude (degrees)", "cigi.env_region_control.lat",
10108
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
10109
16
                "Specifies the geodetic latitude of the center of the rounded rectangle", HFILL }
10110
16
        },
10111
16
        { &hf_cigi3_environmental_region_control_lon,
10112
16
            { "Longitude (degrees)", "cigi.env_region_control.lon",
10113
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
10114
16
                "Specifies the geodetic longitude of the center of the rounded rectangle", HFILL }
10115
16
        },
10116
16
        { &hf_cigi3_environmental_region_control_size_x,
10117
16
            { "Size X (m)", "cigi.env_region_control.size_x",
10118
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10119
16
                "Specifies the length of the environmental region along its X axis at the geoid surface", HFILL }
10120
16
        },
10121
16
        { &hf_cigi3_environmental_region_control_size_y,
10122
16
            { "Size Y (m)", "cigi.env_region_control.size_y",
10123
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10124
16
                "Specifies the length of the environmental region along its Y axis at the geoid surface", HFILL }
10125
16
        },
10126
16
        { &hf_cigi3_environmental_region_control_corner_radius,
10127
16
            { "Corner Radius (m)", "cigi.env_region_control.corner_radius",
10128
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10129
16
                "Specifies the radius of the corner of the rounded rectangle", HFILL }
10130
16
        },
10131
16
        { &hf_cigi3_environmental_region_control_rotation,
10132
16
            { "Rotation (degrees)", "cigi.env_region_control.rotation",
10133
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10134
16
                "Specifies the yaw angle of the rounded rectangle", HFILL }
10135
16
        },
10136
16
        { &hf_cigi3_environmental_region_control_transition_perimeter,
10137
16
            { "Transition Perimeter (m)", "cigi.env_region_control.transition_perimeter",
10138
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10139
16
                "Specifies the width of the transition perimeter around the environmental region", HFILL }
10140
16
        },
10141
10142
10143
        /* CIGI4 Environmental Region Control */
10144
10145
        /* CIGI2 Weather Control */
10146
16
        { &hf_cigi2_weather_control,
10147
16
            { "Weather Control", "cigi.weather_control",
10148
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10149
16
                "Weather Control Packet", HFILL }
10150
16
        },
10151
16
        { &hf_cigi2_weather_control_entity_id,
10152
16
            { "Entity ID", "cigi.weather_control.entity_id",
10153
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10154
16
                "Identifies the entity's ID", HFILL }
10155
16
        },
10156
16
        { &hf_cigi2_weather_control_weather_enable,
10157
16
            { "Weather Enable", "cigi.weather_control.weather_enable",
10158
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
10159
16
                "Indicates whether the phenomena specified by this data packet is visible", HFILL }
10160
16
        },
10161
16
        { &hf_cigi2_weather_control_scud_enable,
10162
16
            { "Scud Enable", "cigi.weather_control.scud_enable",
10163
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40,
10164
16
                "Indicates whether there will be scud effects applied to the phenomenon specified by this data packet", HFILL }
10165
16
        },
10166
16
        { &hf_cigi2_weather_control_random_winds,
10167
16
            { "Random Winds Aloft", "cigi.weather_control.random_winds",
10168
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
10169
16
                "Indicates whether a random frequency and duration should be applied to the winds aloft value", HFILL }
10170
16
        },
10171
16
        { &hf_cigi2_weather_control_severity,
10172
16
            { "Severity", "cigi.weather_control.severity",
10173
16
                FT_UINT8, BASE_DEC, NULL, 0x1c,
10174
16
                "Indicates the severity of the weather phenomenon", HFILL }
10175
16
        },
10176
16
        { &hf_cigi2_weather_control_phenomenon_type,
10177
16
            { "Phenomenon Type", "cigi.weather_control.phenomenon_type",
10178
16
                FT_UINT16, BASE_DEC, VALS(cigi2_weather_control_phenomenon_type_vals), 0x0,
10179
16
                "Identifies the type of weather described by this data packet", HFILL }
10180
16
        },
10181
16
        { &hf_cigi2_weather_control_air_temp,
10182
16
            { "Air Temperature (degrees C)", "cigi.weather_control.air_temp",
10183
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10184
16
                "Identifies the local temperature inside the weather phenomenon", HFILL }
10185
16
        },
10186
16
        { &hf_cigi2_weather_control_opacity,
10187
16
            { "Opacity (%)", "cigi.weather_control.opacity",
10188
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10189
16
                "Identifies the opacity of the weather phenomenon", HFILL }
10190
16
        },
10191
16
        { &hf_cigi2_weather_control_scud_frequency,
10192
16
            { "Scud Frequency (%)", "cigi.weather_control.scud_frequency",
10193
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10194
16
                "Identifies the frequency for the scud effect", HFILL }
10195
16
        },
10196
16
        { &hf_cigi2_weather_control_coverage,
10197
16
            { "Coverage (%)", "cigi.weather_control.coverage",
10198
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10199
16
                "Indicates the amount of area coverage a particular phenomenon has over the specified global visibility range given in the environment control data packet", HFILL }
10200
16
        },
10201
16
        { &hf_cigi2_weather_control_elevation,
10202
16
            { "Elevation (m)", "cigi.weather_control.elevation",
10203
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10204
16
                "Indicates the base altitude of the weather phenomenon", HFILL }
10205
16
        },
10206
16
        { &hf_cigi2_weather_control_thickness,
10207
16
            { "Thickness (m)", "cigi.weather_control.thickness",
10208
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10209
16
                "Indicates the vertical thickness of the weather phenomenon", HFILL }
10210
16
        },
10211
16
        { &hf_cigi2_weather_control_transition_band,
10212
16
            { "Transition Band (m)", "cigi.weather_control.transition_band",
10213
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10214
16
                "Indicates a vertical transition band both above and below a phenomenon", HFILL }
10215
16
        },
10216
16
        { &hf_cigi2_weather_control_wind_speed,
10217
16
            { "Winds Aloft Speed", "cigi.weather_control.wind_speed",
10218
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10219
16
                "Identifies the local wind speed applied to the phenomenon", HFILL }
10220
16
        },
10221
16
        { &hf_cigi2_weather_control_wind_direction,
10222
16
            { "Winds Aloft Direction (degrees)", "cigi.weather_control.wind_direction",
10223
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10224
16
                "Indicates local direction of the wind applied to the phenomenon", HFILL }
10225
16
        },
10226
10227
        /* CIGI3 Weather Control */
10228
16
        { &hf_cigi3_weather_control,
10229
16
            { "Weather Control", "cigi.weather_control",
10230
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10231
16
                "Weather Control Packet", HFILL }
10232
16
        },
10233
16
        { &hf_cigi3_weather_control_entity_region_id,
10234
16
            { "Entity ID/Region ID", "cigi.weather_control.entity_region_id",
10235
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10236
16
                "Specifies the entity to which the weather attributes in this packet are applied", HFILL }
10237
16
        },
10238
16
        { &hf_cigi3_weather_control_layer_id,
10239
16
            { "Layer ID", "cigi.weather_control.layer_id",
10240
16
                FT_UINT8, BASE_DEC, VALS(cigi3_weather_control_layer_id_vals), 0x0,
10241
16
                "Specifies the weather layer to which the data in this packet are applied", HFILL }
10242
16
        },
10243
16
        { &hf_cigi3_weather_control_humidity,
10244
16
            { "Humidity (%)", "cigi.weather_control.humidity",
10245
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
10246
16
                "Specifies the humidity within the weather layer", HFILL }
10247
16
        },
10248
16
        { &hf_cigi3_weather_control_weather_enable,
10249
16
            { "Weather Enable", "cigi.weather_control.weather_enable",
10250
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
10251
16
                "Specifies whether a weather layer and its atmospheric effects are enabled", HFILL }
10252
16
        },
10253
16
        { &hf_cigi3_weather_control_scud_enable,
10254
16
            { "Scud Enable", "cigi.weather_control.scud_enable",
10255
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
10256
16
                "Specifies whether weather layer produces scud effects within its transition bands", HFILL }
10257
16
        },
10258
16
        { &hf_cigi3_weather_control_random_winds_enable,
10259
16
            { "Random Winds Enable", "cigi.weather_control.random_winds_enable",
10260
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
10261
16
                "Specifies whether a random frequency and duration should be applied to the local wind effects", HFILL }
10262
16
        },
10263
16
        { &hf_cigi3_weather_control_random_lightning_enable,
10264
16
            { "Random Lightning Enable", "cigi.weather_control.random_lightning_enable",
10265
16
                FT_UINT8, BASE_DEC, NULL, 0x08,
10266
16
                "Specifies whether the weather layer exhibits random lightning effects", HFILL }
10267
16
        },
10268
16
        { &hf_cigi3_weather_control_cloud_type,
10269
16
            { "Cloud Type", "cigi.weather_control.cloud_type",
10270
16
                FT_UINT8, BASE_DEC, VALS(cigi3_weather_control_cloud_type_vals), 0xf0,
10271
16
                "Specifies the type of clouds contained within the weather layer", HFILL }
10272
16
        },
10273
16
        { &hf_cigi3_weather_control_scope,
10274
16
            { "Scope", "cigi.weather_control.scope",
10275
16
                FT_UINT8, BASE_DEC, VALS(cigi3_weather_control_scope_vals), 0x03,
10276
16
                "Specifies whether the weather is global, regional, or assigned to an entity", HFILL }
10277
16
        },
10278
16
        { &hf_cigi3_weather_control_severity,
10279
16
            { "Severity", "cigi.weather_control.severity",
10280
16
                FT_UINT8, BASE_DEC, NULL, 0x1c,
10281
16
                "Specifies the severity of the weather layer", HFILL }
10282
16
        },
10283
16
        { &hf_cigi3_weather_control_air_temp,
10284
16
            { "Air Temperature (degrees C)", "cigi.weather_control.air_temp",
10285
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10286
16
                "Specifies the temperature within the weather layer", HFILL }
10287
16
        },
10288
16
        { &hf_cigi3_weather_control_visibility_range,
10289
16
            { "Visibility Range (m)", "cigi.weather_control.visibility_range",
10290
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10291
16
                "Specifies the visibility range through the weather layer", HFILL }
10292
16
        },
10293
16
        { &hf_cigi3_weather_control_scud_frequency,
10294
16
            { "Scud Frequency (%)", "cigi.weather_control.scud_frequency",
10295
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10296
16
                "Specifies the frequency of scud within the transition bands above and/or below a cloud or fog layer", HFILL }
10297
16
        },
10298
16
        { &hf_cigi3_weather_control_coverage,
10299
16
            { "Coverage (%)", "cigi.weather_control.coverage",
10300
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10301
16
                "Specifies the amount of area coverage for the weather layer", HFILL }
10302
16
        },
10303
16
        { &hf_cigi3_weather_control_base_elevation,
10304
16
            { "Base Elevation (m)", "cigi.weather_control.base_elevation",
10305
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10306
16
                "Specifies the altitude of the base of the weather layer", HFILL }
10307
16
        },
10308
16
        { &hf_cigi3_weather_control_thickness,
10309
16
            { "Thickness (m)", "cigi.weather_control.thickness",
10310
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10311
16
                "Specifies the vertical thickness of the weather layer", HFILL }
10312
16
        },
10313
16
        { &hf_cigi3_weather_control_transition_band,
10314
16
            { "Transition Band (m)", "cigi.weather_control.transition_band",
10315
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10316
16
                "Specifies the height of a vertical transition band both above and below the weather layer", HFILL }
10317
16
        },
10318
16
        { &hf_cigi3_weather_control_horiz_wind,
10319
16
            { "Horizontal Wind Speed (m/s)", "cigi.weather_control.horiz_wind",
10320
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10321
16
                "Specifies the local wind speed parallel to the ellipsoid-tangential reference plane", HFILL }
10322
16
        },
10323
16
        { &hf_cigi3_weather_control_vert_wind,
10324
16
            { "Vertical Wind Speed (m/s)", "cigi.weather_control.vert_wind",
10325
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10326
16
                "Specifies the local vertical wind speed", HFILL }
10327
16
        },
10328
16
        { &hf_cigi3_weather_control_wind_direction,
10329
16
            { "Wind Direction (degrees)", "cigi.weather_control.wind_direction",
10330
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10331
16
                "Specifies the local wind direction", HFILL }
10332
16
        },
10333
16
        { &hf_cigi3_weather_control_barometric_pressure,
10334
16
            { "Barometric Pressure (mb or hPa)", "cigi.weather_control.barometric_pressure",
10335
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10336
16
                "Specifies the atmospheric pressure within the weather layer", HFILL }
10337
16
        },
10338
16
        { &hf_cigi3_weather_control_aerosol_concentration,
10339
16
            { "Aerosol Concentration (g/m^3)", "cigi.weather_control.aerosol_concentration",
10340
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10341
16
                "Specifies the concentration of water, smoke, dust, or other particles suspended in the air", HFILL }
10342
16
        },
10343
10344
10345
        /* CIGI4 Weather Control */
10346
16
        { &hf_cigi4_weather_control_flags,
10347
16
            { "Request Flags", "cigi.weather_control.flags",
10348
16
                FT_UINT16, BASE_HEX, NULL, 0x0,
10349
16
                NULL, HFILL }
10350
16
        },
10351
16
        { &hf_cigi4_weather_control_top_scud_enable,
10352
16
            { "Top Scud Enable", "cigi.weather_control.top_scud_enable",
10353
16
                FT_UINT8, BASE_DEC, NULL, 0x20,
10354
16
                "Specifies whether the weather layer produces scud effects", HFILL }
10355
16
        },
10356
16
        { &hf_cigi4_weather_control_top_scud_freq,
10357
16
            { "Top Scud Frequency (%)", "cigi.weather_control.top_scud_frequency",
10358
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10359
16
                "Specifies the frequency of scud within the transition band above a cloud or fog layer", HFILL }
10360
16
        },
10361
16
        { &hf_cigi4_weather_control_top_transition_band,
10362
16
            { "Top Transition Band Thickness (m)", "cigi.weather_control.top_transition_band",
10363
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10364
16
                "Specifies the height of a vertical transition band above the weather layer", HFILL }
10365
16
        },
10366
10367
        /* CIGI3 Maritime Surface Conditions Control */
10368
16
        { &hf_cigi3_maritime_surface_conditions_control,
10369
16
            { "Maritime Surface Conditions Control", "cigi.maritime_surface_conditions_control",
10370
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10371
16
                "Maritime Surface Conditions Control Packet", HFILL }
10372
16
        },
10373
16
        { &hf_cigi3_maritime_surface_conditions_control_entity_region_id,
10374
16
            { "Entity ID/Region ID", "cigi.maritime_surface_conditions_control.entity_region_id",
10375
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10376
16
                "Specifies the entity to which the surface attributes in this packet are applied or specifies the region to which the surface attributes are confined", HFILL }
10377
16
        },
10378
16
        { &hf_cigi3_maritime_surface_conditions_control_surface_conditions_enable,
10379
16
            { "Surface Conditions Enable", "cigi.maritime_surface_conditions_control.surface_conditions_enable",
10380
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
10381
16
                "Determines the state of the specified surface conditions", HFILL }
10382
16
        },
10383
16
        { &hf_cigi3_maritime_surface_conditions_control_whitecap_enable,
10384
16
            { "Whitecap Enable", "cigi.maritime_surface_conditions_control.whitecap_enable",
10385
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
10386
16
                "Determines whether whitecaps are enabled", HFILL }
10387
16
        },
10388
16
        { &hf_cigi3_maritime_surface_conditions_control_scope,
10389
16
            { "Scope", "cigi.maritime_surface_conditions_control.scope",
10390
16
                FT_UINT8, BASE_DEC, VALS(cigi3_maritime_surface_conditions_control_scope_vals), 0x0c,
10391
16
                "Specifies whether this packet is applied globally, applied to region, or assigned to an entity", HFILL }
10392
16
        },
10393
16
        { &hf_cigi3_maritime_surface_conditions_control_sea_surface_height,
10394
16
            { "Sea Surface Height (m)", "cigi.maritime_surface_conditions_control.sea_surface_height",
10395
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10396
16
                "Specifies the height of the water above MSL at equilibrium", HFILL }
10397
16
        },
10398
16
        { &hf_cigi3_maritime_surface_conditions_control_surface_water_temp,
10399
16
            { "Surface Water Temperature (degrees C)", "cigi.maritime_surface_conditions_control.surface_water_temp",
10400
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10401
16
                "Specifies the water temperature at the surface", HFILL }
10402
16
        },
10403
16
        { &hf_cigi3_maritime_surface_conditions_control_surface_clarity,
10404
16
            { "Surface Clarity (%)", "cigi.maritime_surface_conditions_control.surface_clarity",
10405
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10406
16
                "Specifies the clarity of the water at its surface", HFILL }
10407
16
        },
10408
10409
10410
        /* CIGI4 Maritime Surface Conditions Control */
10411
10412
        /* CIGI3 Wave Control */
10413
16
        { &hf_cigi3_wave_control,
10414
16
            { "Wave Control", "cigi.wave_control",
10415
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10416
16
                "Wave Control Packet", HFILL }
10417
16
        },
10418
16
        { &hf_cigi3_wave_control_entity_region_id,
10419
16
            { "Entity ID/Region ID", "cigi.wave_control.entity_region_id",
10420
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10421
16
                "Specifies the surface entity for which the wave is defined or specifies the environmental region for which the wave is defined", HFILL }
10422
16
        },
10423
16
        { &hf_cigi3_wave_control_wave_id,
10424
16
            { "Wave ID", "cigi.wave_control.wave_id",
10425
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
10426
16
                "Specifies the wave to which the attributes in this packet are applied", HFILL }
10427
16
        },
10428
16
        { &hf_cigi3_wave_control_wave_enable,
10429
16
            { "Wave Enable", "cigi.wave_control.wave_enable",
10430
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
10431
16
                "Determines whether the wave is enabled or disabled", HFILL }
10432
16
        },
10433
16
        { &hf_cigi3_wave_control_scope,
10434
16
            { "Scope", "cigi.wave_control.scope",
10435
16
                FT_UINT8, BASE_DEC, VALS(cigi3_wave_control_scope_vals), 0x06,
10436
16
                "Specifies whether the wave is defined for global, regional, or entity-controlled maritime surface conditions", HFILL }
10437
16
        },
10438
16
        { &hf_cigi3_wave_control_breaker_type,
10439
16
            { "Breaker Type", "cigi.wave_control.breaker_type",
10440
16
                FT_UINT8, BASE_DEC, VALS(cigi3_wave_control_breaker_type_vals), 0x18,
10441
16
                "Specifies the type of breaker within the surf zone", HFILL }
10442
16
        },
10443
16
        { &hf_cigi3_wave_control_height,
10444
16
            { "Wave Height (m)", "cigi.wave_control.height",
10445
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10446
16
                "Specifies the average vertical distance from trough to crest produced by the wave", HFILL }
10447
16
        },
10448
16
        { &hf_cigi3_wave_control_wavelength,
10449
16
            { "Wavelength (m)", "cigi.wave_control.wavelength",
10450
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10451
16
                "Specifies the distance from a particular phase on a wave to the same phase on an adjacent wave", HFILL }
10452
16
        },
10453
16
        { &hf_cigi3_wave_control_period,
10454
16
            { "Period (s)", "cigi.wave_control.period",
10455
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10456
16
                "Specifies the time required for one complete oscillation of the wave", HFILL }
10457
16
        },
10458
16
        { &hf_cigi3_wave_control_direction,
10459
16
            { "Direction (degrees)", "cigi.wave_control.direction",
10460
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10461
16
                "Specifies the direction in which the wave propagates", HFILL }
10462
16
        },
10463
16
        { &hf_cigi3_wave_control_phase_offset,
10464
16
            { "Phase Offset (degrees)", "cigi.wave_control.phase_offset",
10465
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10466
16
                "Specifies a phase offset for the wave", HFILL }
10467
16
        },
10468
16
        { &hf_cigi3_wave_control_leading,
10469
16
            { "Leading (degrees)", "cigi.wave_control.leading",
10470
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10471
16
                "Specifies the phase angle at which the crest occurs", HFILL }
10472
16
        },
10473
10474
        /* CIGI4 Wave Control */
10475
10476
        /* CIGI3 Terrestrial Surface Conditions Control */
10477
16
        { &hf_cigi3_terrestrial_surface_conditions_control,
10478
16
            { "Terrestrial Surface Conditions Control", "cigi.terrestrial_surface_conditions_control",
10479
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10480
16
                "Terrestrial Surface Conditions Control Packet", HFILL }
10481
16
        },
10482
16
        { &hf_cigi3_terrestrial_surface_conditions_control_entity_region_id,
10483
16
            { "Entity ID/Region ID", "cigi.terrestrial_surface_conditions_control.entity_region_id",
10484
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10485
16
                "Specifies the environmental entity to which the surface condition attributes in this packet are applied", HFILL }
10486
16
        },
10487
16
        { &hf_cigi3_terrestrial_surface_conditions_control_surface_condition_id,
10488
16
            { "Surface Condition ID", "cigi.terrestrial_surface_conditions_control.surface_condition_id",
10489
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10490
16
                "Identifies a surface condition or contaminant", HFILL }
10491
16
        },
10492
16
        { &hf_cigi3_terrestrial_surface_conditions_control_surface_condition_enable,
10493
16
            { "Surface Condition Enable", "cigi.terrestrial_surface_conditions_control.surface_condition_enable",
10494
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
10495
16
                "Specifies whether the surface condition attribute identified by the Surface Condition ID parameter should be enabled", HFILL }
10496
16
        },
10497
16
        { &hf_cigi3_terrestrial_surface_conditions_control_scope,
10498
16
            { "Scope", "cigi.terrestrial_surface_conditions_control.scope",
10499
16
                FT_UINT8, BASE_DEC, VALS(cigi3_terrestrial_surface_conditions_control_scope_vals), 0x06,
10500
16
                "Determines whether the specified surface conditions are applied globally, regionally, or to an environmental entity", HFILL }
10501
16
        },
10502
16
        { &hf_cigi3_terrestrial_surface_conditions_control_severity,
10503
16
            { "Severity", "cigi.terrestrial_surface_conditions_control.severity",
10504
16
                FT_UINT8, BASE_DEC, NULL, 0xf8,
10505
16
                "Determines the degree of severity for the specified surface contaminant(s)", HFILL }
10506
16
        },
10507
16
        { &hf_cigi3_terrestrial_surface_conditions_control_coverage,
10508
16
            { "Coverage (%)", "cigi.terrestrial_surface_conditions_control.coverage",
10509
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
10510
16
                "Determines the degree of coverage of the specified surface contaminant", HFILL }
10511
16
        },
10512
10513
        /* CIGI4 Terrestrial Surface Conditions Control */
10514
10515
        /* CIGI2 View Control */
10516
16
        { &hf_cigi2_view_control,
10517
16
            { "View Control", "cigi.view_control",
10518
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10519
16
                "View Control Packet", HFILL }
10520
16
        },
10521
16
        { &hf_cigi2_view_control_entity_id,
10522
16
            { "Entity ID", "cigi.view_control.entity_id",
10523
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10524
16
                "Indicates the entity to which this view should be attached", HFILL }
10525
16
        },
10526
16
        { &hf_cigi2_view_control_view_id,
10527
16
            { "View ID", "cigi.view_control.view_id",
10528
16
                FT_UINT8, BASE_DEC, NULL, 0xf8,
10529
16
                "Specifies which view position is associated with offsets and rotation specified by this data packet", HFILL }
10530
16
        },
10531
16
        { &hf_cigi2_view_control_view_group,
10532
16
            { "View Group Select", "cigi.view_control.view_group",
10533
16
                FT_UINT8, BASE_DEC, NULL, 0x07,
10534
16
                "Specifies which view group is to be controlled by the offsets", HFILL }
10535
16
        },
10536
16
        { &hf_cigi2_view_control_xoff_enable,
10537
16
            { "X Offset Enable", "cigi.view_control.xoff_enable",
10538
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
10539
16
                "Identifies whether the x offset parameter should be applied to the specified view or view group", HFILL }
10540
16
        },
10541
16
        { &hf_cigi2_view_control_yoff_enable,
10542
16
            { "Y Offset Enable", "cigi.view_control.yoff_enable",
10543
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40,
10544
16
                "Identifies whether the y offset parameter should be applied to the specified view or view group", HFILL }
10545
16
        },
10546
16
        { &hf_cigi2_view_control_zoff_enable,
10547
16
            { "Z Offset Enable", "cigi.view_control.zoff_enable",
10548
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
10549
16
                "Identifies whether the z offset parameter should be applied to the specified view or view group", HFILL }
10550
16
        },
10551
16
        { &hf_cigi2_view_control_roll_enable,
10552
16
            { "Roll Enable", "cigi.view_control.roll_enable",
10553
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
10554
16
                "Identifies whether the roll parameter should be applied to the specified view or view group", HFILL }
10555
16
        },
10556
16
        { &hf_cigi2_view_control_pitch_enable,
10557
16
            { "Pitch Enable", "cigi.view_control.pitch_enable",
10558
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
10559
16
                "Identifies whether the pitch parameter should be applied to the specified view or view group", HFILL }
10560
16
        },
10561
16
        { &hf_cigi2_view_control_yaw_enable,
10562
16
            { "Yaw Enable", "cigi.view_control.yaw_enable",
10563
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
10564
16
                "Identifies whether the yaw parameter should be applied to the specified view or view group", HFILL }
10565
16
        },
10566
16
        { &hf_cigi2_view_control_x_offset,
10567
16
            { "X Offset (m)", "cigi.view_control.x_offset",
10568
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10569
16
                "Defines the X component of the view offset vector along the entity's longitudinal axis", HFILL }
10570
16
        },
10571
16
        { &hf_cigi2_view_control_y_offset,
10572
16
            { "Y Offset", "cigi.view_control.y_offset",
10573
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10574
16
                "Defines the Y component of the view offset vector along the entity's lateral axis", HFILL }
10575
16
        },
10576
16
        { &hf_cigi2_view_control_z_offset,
10577
16
            { "Z Offset", "cigi.view_control.z_offset",
10578
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10579
16
                "Defines the Z component of the view offset vector along the entity's vertical axis", HFILL }
10580
16
        },
10581
16
        { &hf_cigi2_view_control_roll,
10582
16
            { "Roll (degrees)", "cigi.view_control.roll",
10583
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10584
16
                "The rotation about the view's X axis", HFILL }
10585
16
        },
10586
16
        { &hf_cigi2_view_control_pitch,
10587
16
            { "Pitch (degrees)", "cigi.view_control.pitch",
10588
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10589
16
                "The rotation about the view's Y axis", HFILL }
10590
16
        },
10591
16
        { &hf_cigi2_view_control_yaw,
10592
16
            { "Yaw (degrees)", "cigi.view_control.yaw",
10593
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10594
16
                "The rotation about the view's Z axis", HFILL }
10595
16
        },
10596
10597
        /* CIGI3 View Control */
10598
16
        { &hf_cigi3_view_control,
10599
16
            { "View Control", "cigi.view_control",
10600
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10601
16
                "View Control Packet", HFILL }
10602
16
        },
10603
16
        { &hf_cigi3_view_control_view_id,
10604
16
            { "View ID", "cigi.view_control.view_id",
10605
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10606
16
                "Specifies the view to which the contents of this packet should be applied", HFILL }
10607
16
        },
10608
16
        { &hf_cigi3_view_control_group_id,
10609
16
            { "Group ID", "cigi.view_control.group_id",
10610
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
10611
16
                "Specifies the view group to which the contents of this packet are applied", HFILL }
10612
16
        },
10613
16
        { &hf_cigi3_view_control_xoff_enable,
10614
16
            { "X Offset Enable", "cigi.view_control.xoff_enable",
10615
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
10616
16
                "Determines whether the X Offset parameter should be applied to the specified view or view group", HFILL }
10617
16
        },
10618
16
        { &hf_cigi3_view_control_yoff_enable,
10619
16
            { "Y Offset Enable", "cigi.view_control.yoff_enable",
10620
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
10621
16
                "Determines whether the Y Offset parameter should be applied to the specified view or view group", HFILL }
10622
16
        },
10623
16
        { &hf_cigi3_view_control_zoff_enable,
10624
16
            { "Z Offset Enable", "cigi.view_control.zoff_enable",
10625
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
10626
16
                "Determines whether the Z Offset parameter should be applied to the specified view or view group", HFILL }
10627
16
        },
10628
16
        { &hf_cigi3_view_control_roll_enable,
10629
16
            { "Roll Enable", "cigi.view_control.roll_enable",
10630
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
10631
16
                "Determines whether the Roll parameter should be applied to the specified view or view group", HFILL }
10632
16
        },
10633
16
        { &hf_cigi3_view_control_pitch_enable,
10634
16
            { "Pitch Enable", "cigi.view_control.pitch_enable",
10635
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
10636
16
                "Determines whether the Pitch parameter should be applied to the specified view or view group", HFILL }
10637
16
        },
10638
16
        { &hf_cigi3_view_control_yaw_enable,
10639
16
            { "Yaw Enable", "cigi.view_control.yaw_enable",
10640
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
10641
16
                "Determines whether the Yaw parameter should be applied to the specified view or view group", HFILL }
10642
16
        },
10643
16
        { &hf_cigi3_view_control_entity_id,
10644
16
            { "Entity ID", "cigi.view_control.entity_id",
10645
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10646
16
                "Specifies the entity to which the view or view group should be attached", HFILL }
10647
16
        },
10648
16
        { &hf_cigi3_view_control_xoff,
10649
16
            { "X Offset (m)", "cigi.view_control.xoff",
10650
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10651
16
                "Specifies the position of the view eyepoint along the X axis of the entity specified by the Entity ID parameter", HFILL }
10652
16
        },
10653
16
        { &hf_cigi3_view_control_yoff,
10654
16
            { "Y Offset (m)", "cigi.view_control.yoff",
10655
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10656
16
                "Specifies the position of the view eyepoint along the Y axis of the entity specified by the Entity ID parameter", HFILL }
10657
16
        },
10658
16
        { &hf_cigi3_view_control_zoff,
10659
16
            { "Z Offset (m)", "cigi.view_control.zoff",
10660
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10661
16
                "Specifies the position of the view eyepoint along the Z axis of the entity specified by the Entity ID parameter", HFILL }
10662
16
        },
10663
16
        { &hf_cigi3_view_control_roll,
10664
16
            { "Roll (degrees)", "cigi.view_control.roll",
10665
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10666
16
                "Specifies the angle of rotation of the view or view group about its X axis after yaw and pitch have been applied", HFILL }
10667
16
        },
10668
16
        { &hf_cigi3_view_control_pitch,
10669
16
            { "Pitch (degrees)", "cigi.view_control.pitch",
10670
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10671
16
                "Specifies the angle of rotation of the view or view group about its Y axis after yaw has been applied", HFILL }
10672
16
        },
10673
16
        { &hf_cigi3_view_control_yaw,
10674
16
            { "Yaw (degrees)", "cigi.view_control.yaw",
10675
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10676
16
                "Specifies the angle of rotation of the view or view group about its Z axis", HFILL }
10677
16
        },
10678
10679
10680
        /* CIGI4 View Control */
10681
16
        { &hf_cigi4_view_control_enable_flags,
10682
16
            { "Request Flags", "cigi.view_control.flags",
10683
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
10684
16
                NULL, HFILL }
10685
16
        },
10686
10687
        /* CIGI2 Sensor Control */
10688
16
        { &hf_cigi2_sensor_control,
10689
16
            { "Sensor Control", "cigi.sensor_control",
10690
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10691
16
                "Sensor Control Packet", HFILL }
10692
16
        },
10693
16
        { &hf_cigi2_sensor_control_view_id,
10694
16
            { "View ID", "cigi.sensor_control.view_id",
10695
16
                FT_UINT8, BASE_DEC, NULL, 0xf8,
10696
16
                "Dictates to which view the corresponding sensor is assigned, regardless of the view group", HFILL }
10697
16
        },
10698
16
        { &hf_cigi2_sensor_control_sensor_enable,
10699
16
            { "Sensor On/Off", "cigi.sensor_control.sensor_enable",
10700
16
                FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x04,
10701
16
                "Indicates whether the sensor is turned on or off", HFILL }
10702
16
        },
10703
16
        { &hf_cigi2_sensor_control_polarity,
10704
16
            { "Polarity", "cigi.sensor_control.polarity",
10705
16
                FT_BOOLEAN, 8, TFS(&black_white_tfs), 0x02,
10706
16
                "Indicates whether this sensor is showing white hot or black hot", HFILL }
10707
16
        },
10708
16
        { &hf_cigi2_sensor_control_line_dropout,
10709
16
            { "Line-by-Line Dropout", "cigi.sensor_control.line_dropout",
10710
16
                FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x01,
10711
16
                "Indicates whether the line-by-line dropout feature is enabled", HFILL }
10712
16
        },
10713
16
        { &hf_cigi2_sensor_control_sensor_id,
10714
16
            { "Sensor ID", "cigi.sensor_control.sensor_id",
10715
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
10716
16
                "Identifies the sensor to which this packet should be applied", HFILL }
10717
16
        },
10718
16
        { &hf_cigi2_sensor_control_track_mode,
10719
16
            { "Track Mode", "cigi.sensor_control.track_mode",
10720
16
                FT_UINT8, BASE_DEC, VALS(cigi2_sensor_control_track_mode_vals), 0xf0,
10721
16
                "Indicates which track mode the sensor should be", HFILL }
10722
16
        },
10723
16
        { &hf_cigi2_sensor_control_auto_gain,
10724
16
            { "Automatic Gain", "cigi.sensor_control.auto_gain",
10725
16
                FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x08,
10726
16
                "When set to \"on,\" cause the weapons sensor to automatically adjust the gain value to optimize the brightness and contrast of the sensor display", HFILL }
10727
16
        },
10728
16
        { &hf_cigi2_sensor_control_track_polarity,
10729
16
            { "Track White/Black", "cigi.sensor_control.track_polarity",
10730
16
                FT_BOOLEAN, 8, TFS(&black_white_tfs), 0x04,
10731
16
                "Identifies whether the weapons sensor will track wither white or black", HFILL }
10732
16
        },
10733
16
        { &hf_cigi2_sensor_control_gain,
10734
16
            { "Gain", "cigi.sensor_control.gain",
10735
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10736
16
                "Indicates the gain value for the weapon sensor option", HFILL }
10737
16
        },
10738
16
        { &hf_cigi2_sensor_control_level,
10739
16
            { "Level", "cigi.sensor_control.level",
10740
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10741
16
                "Indicates the level value for the weapon sensor option", HFILL }
10742
16
        },
10743
16
        { &hf_cigi2_sensor_control_ac_coupling,
10744
16
            { "AC Coupling", "cigi.sensor_control.ac_coupling",
10745
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10746
16
                "Indicates the AC Coupling decay rate for the weapon sensor option", HFILL }
10747
16
        },
10748
16
        { &hf_cigi2_sensor_control_noise,
10749
16
            { "Noise", "cigi.sensor_control.noise",
10750
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10751
16
                "Indicates the detector-noise gain for the weapon sensor option", HFILL }
10752
16
        },
10753
10754
        /* CIGI3 Sensor Control */
10755
16
        { &hf_cigi3_sensor_control,
10756
16
            { "Sensor Control", "cigi.sensor_control",
10757
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10758
16
                "Sensor Control Packet", HFILL }
10759
16
        },
10760
16
        { &hf_cigi3_sensor_control_view_id,
10761
16
            { "View ID", "cigi.sensor_control.view_id",
10762
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10763
16
                "Identifies the view to which the specified sensor is assigned", HFILL }
10764
16
        },
10765
16
        { &hf_cigi3_sensor_control_sensor_id,
10766
16
            { "Sensor ID", "cigi.sensor_control.sensor_id",
10767
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
10768
16
                "Specifies the sensor to which the data in this packet are applied", HFILL }
10769
16
        },
10770
16
        { &hf_cigi3_sensor_control_sensor_on_off,
10771
16
            { "Sensor On/Off", "cigi.sensor_control.sensor_on_off",
10772
16
                FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x01,
10773
16
                "Specifies whether the sensor is turned on or off", HFILL }
10774
16
        },
10775
16
        { &hf_cigi3_sensor_control_polarity,
10776
16
            { "Polarity", "cigi.sensor_control.polarity",
10777
16
                FT_BOOLEAN, 8, TFS(&cigi3_sensor_control_polarity_tfs), 0x02,
10778
16
                "Specifies whether the sensor shows white hot or black hot", HFILL }
10779
16
        },
10780
16
        { &hf_cigi3_sensor_control_line_dropout_enable,
10781
16
            { "Line-by-Line Dropout Enable", "cigi.sensor_control.line_dropout_enable",
10782
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
10783
16
                "Specifies whether line-by-line dropout is enabled", HFILL }
10784
16
        },
10785
16
        { &hf_cigi3_sensor_control_auto_gain,
10786
16
            { "Automatic Gain", "cigi.sensor_control.auto_gain",
10787
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
10788
16
                "Specifies whether the sensor automatically adjusts the gain value to optimize the brightness and contrast of the sensor display", HFILL }
10789
16
        },
10790
16
        { &hf_cigi3_sensor_control_track_white_black,
10791
16
            { "Track White/Black", "cigi.sensor_control.track_white_black",
10792
16
                FT_BOOLEAN, 8, TFS(&black_white_tfs), 0x10,
10793
16
                "Specifies whether the sensor tracks white or black", HFILL }
10794
16
        },
10795
16
        { &hf_cigi3_sensor_control_track_mode,
10796
16
            { "Track Mode", "cigi.sensor_control.track_mode",
10797
16
                FT_UINT8, BASE_DEC, VALS(cigi3_sensor_control_track_mode_vals), 0xe0,
10798
16
                "Specifies which track mode the sensor should use", HFILL }
10799
16
        },
10800
16
        { &hf_cigi3_sensor_control_response_type,
10801
16
            { "Response Type", "cigi.sensor_control.response_type",
10802
16
                FT_BOOLEAN, 8, TFS(&extended_normal_tfs), 0x01,
10803
16
                "Specifies whether the IG should return a Sensor Response packet or a Sensor Extended Response packet", HFILL }
10804
16
        },
10805
16
        { &hf_cigi3_sensor_control_gain,
10806
16
            { "Gain", "cigi.sensor_control.gain",
10807
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10808
16
                "Specifies the contrast for the sensor display", HFILL }
10809
16
        },
10810
16
        { &hf_cigi3_sensor_control_level,
10811
16
            { "Level", "cigi.sensor_control.level",
10812
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10813
16
                "Specifies the brightness for the sensor display", HFILL }
10814
16
        },
10815
16
        { &hf_cigi3_sensor_control_ac_coupling,
10816
16
            { "AC Coupling (microseconds)", "cigi.sensor_control.ac_coupling",
10817
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10818
16
                "Specifies the AC coupling decay constant for the sensor display", HFILL }
10819
16
        },
10820
16
        { &hf_cigi3_sensor_control_noise,
10821
16
            { "Noise", "cigi.sensor_control.noise",
10822
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10823
16
                "Specifies the amount of detector noise for the sensor", HFILL }
10824
16
        },
10825
10826
10827
        /* CIGI4 Sensor Control */
10828
10829
        /* CIGI3 Motion Tracker Control */
10830
16
        { &hf_cigi3_motion_tracker_control,
10831
16
            { "Motion Tracker Control", "cigi.motion_tracker_control",
10832
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10833
16
                "Motion Tracker Control Packet", HFILL }
10834
16
        },
10835
16
        { &hf_cigi3_motion_tracker_control_view_group_id,
10836
16
            { "View/View Group ID", "cigi.motion_tracker_control.view_group_id",
10837
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10838
16
                "Specifies the view or view group to which the tracking device is attached", HFILL }
10839
16
        },
10840
16
        { &hf_cigi3_motion_tracker_control_tracker_id,
10841
16
            { "Tracker ID", "cigi.motion_tracker_control.tracker_id",
10842
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
10843
16
                "Specifies the tracker whose state the data in this packet represents", HFILL }
10844
16
        },
10845
16
        { &hf_cigi3_motion_tracker_control_tracker_enable,
10846
16
            { "Tracker Enable", "cigi.motion_tracker_control.tracker_enable",
10847
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
10848
16
                "Specifies whether the tracking device is enabled", HFILL }
10849
16
        },
10850
16
        { &hf_cigi3_motion_tracker_control_boresight_enable,
10851
16
            { "Boresight Enable", "cigi.motion_tracker_control.boresight_enable",
10852
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
10853
16
                "Sets the boresight state of the external tracking device", HFILL }
10854
16
        },
10855
16
        { &hf_cigi3_motion_tracker_control_x_enable,
10856
16
            { "X Enable", "cigi.motion_tracker_control.x_enable",
10857
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
10858
16
                "Used to enable or disable the X-axis position of the motion tracker", HFILL }
10859
16
        },
10860
16
        { &hf_cigi3_motion_tracker_control_y_enable,
10861
16
            { "Y Enable", "cigi.motion_tracker_control.y_enable",
10862
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
10863
16
                "Used to enable or disable the Y-axis position of the motion tracker", HFILL }
10864
16
        },
10865
16
        { &hf_cigi3_motion_tracker_control_z_enable,
10866
16
            { "Z Enable", "cigi.motion_tracker_control.z_enable",
10867
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
10868
16
                "Used to enable or disable the Z-axis position of the motion tracker", HFILL }
10869
16
        },
10870
16
        { &hf_cigi3_motion_tracker_control_roll_enable,
10871
16
            { "Roll Enable", "cigi.motion_tracker_control.roll_enable",
10872
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
10873
16
                "Used to enable or disable the roll of the motion tracker", HFILL }
10874
16
        },
10875
16
        { &hf_cigi3_motion_tracker_control_pitch_enable,
10876
16
            { "Pitch Enable", "cigi.motion_tracker_control.pitch_enable",
10877
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40,
10878
16
                "Used to enable or disable the pitch of the motion tracker", HFILL }
10879
16
        },
10880
16
        { &hf_cigi3_motion_tracker_control_yaw_enable,
10881
16
            { "Yaw Enable", "cigi.motion_tracker_control.yaw_enable",
10882
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
10883
16
                "Used to enable or disable the yaw of the motion tracker", HFILL }
10884
16
        },
10885
16
        { &hf_cigi3_motion_tracker_control_view_group_select,
10886
16
            { "View/View Group Select", "cigi.motion_tracker_control.view_group_select",
10887
16
                FT_BOOLEAN, 8, TFS(&cigi3_motion_tracker_control_view_group_select_tfs), 0x01,
10888
16
                "Specifies whether the tracking device is attached to a single view or a view group", HFILL }
10889
16
        },
10890
10891
        /* CIGI4 Motion Tracker Control */
10892
10893
        /* CIGI3 Earth Reference Model Definition */
10894
16
        { &hf_cigi3_earth_reference_model_definition,
10895
16
            { "Earth Reference Model Definition", "cigi.earth_ref_model_def",
10896
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10897
16
                "Earth Reference Model Definition Packet", HFILL }
10898
16
        },
10899
16
        { &hf_cigi3_earth_reference_model_definition_erm_enable,
10900
16
            { "Custom ERM Enable", "cigi.earth_ref_model_def.erm_enable",
10901
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
10902
16
                "Specifies whether the IG should use the Earth Reference Model defined by this packet", HFILL }
10903
16
        },
10904
16
        { &hf_cigi3_earth_reference_model_definition_equatorial_radius,
10905
16
            { "Equatorial Radius (m)", "cigi.earth_ref_model_def.equatorial_radius",
10906
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
10907
16
                "Specifies the semi-major axis of the ellipsoid", HFILL }
10908
16
        },
10909
16
        { &hf_cigi3_earth_reference_model_definition_flattening,
10910
16
            { "Flattening (m)", "cigi.earth_ref_model_def.flattening",
10911
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
10912
16
                "Specifies the flattening of the ellipsoid", HFILL }
10913
16
        },
10914
10915
        /* CIGI4 Earth Reference Model Definition */
10916
10917
        /* CIGI2 Trajectory Definition */
10918
16
        { &hf_cigi2_trajectory_definition,
10919
16
            { "Trajectory Definition", "cigi.trajectory_def",
10920
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10921
16
                "Trajectory Definition Packet", HFILL }
10922
16
        },
10923
16
        { &hf_cigi2_trajectory_definition_entity_id,
10924
16
            { "Entity ID", "cigi.trajectory_def.entity_id",
10925
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10926
16
                "Indicates which entity is being influenced by this trajectory behavior", HFILL }
10927
16
        },
10928
16
        { &hf_cigi2_trajectory_definition_acceleration,
10929
16
            { "Acceleration Factor (m/s^2)", "cigi.trajectory_def.acceleration",
10930
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10931
16
                "Indicates the acceleration factor that will be applied to the Vz component of the velocity vector over time to simulate the effects of gravity on the object", HFILL }
10932
16
        },
10933
16
        { &hf_cigi2_trajectory_definition_retardation,
10934
16
            { "Retardation Rate (m/s)", "cigi.trajectory_def.retardation",
10935
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10936
16
                "Indicates what retardation factor will be applied to the object's motion", HFILL }
10937
16
        },
10938
16
        { &hf_cigi2_trajectory_definition_terminal_velocity,
10939
16
            { "Terminal Velocity (m/s)", "cigi.trajectory_def.terminal_velocity",
10940
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10941
16
                "Indicates what final velocity the object will be allowed to obtain", HFILL }
10942
16
        },
10943
10944
        /* CIGI3 Trajectory Definition */
10945
16
        { &hf_cigi3_trajectory_definition,
10946
16
            { "Trajectory Definition", "cigi.trajectory_def",
10947
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10948
16
                "Trajectory Definition Packet", HFILL }
10949
16
        },
10950
16
        { &hf_cigi3_trajectory_definition_entity_id,
10951
16
            { "Entity ID", "cigi.trajectory_def.entity_id",
10952
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10953
16
                "Identifies the entity for which the trajectory is defined", HFILL }
10954
16
        },
10955
16
        { &hf_cigi3_trajectory_definition_acceleration_x,
10956
16
            { "Acceleration X (m/s^2)", "cigi.trajectory_def.acceleration_x",
10957
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10958
16
                "Specifies the X component of the acceleration vector", HFILL }
10959
16
        },
10960
16
        { &hf_cigi3_trajectory_definition_acceleration_y,
10961
16
            { "Acceleration Y (m/s^2)", "cigi.trajectory_def.acceleration_y",
10962
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10963
16
                "Specifies the Y component of the acceleration vector", HFILL }
10964
16
        },
10965
16
        { &hf_cigi3_trajectory_definition_acceleration_z,
10966
16
            { "Acceleration Z (m/s^2)", "cigi.trajectory_def.acceleration_z",
10967
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10968
16
                "Specifies the Z component of the acceleration vector", HFILL }
10969
16
        },
10970
16
        { &hf_cigi3_trajectory_definition_retardation_rate,
10971
16
            { "Retardation Rate (m/s^2)", "cigi.trajectory_def.retardation_rate",
10972
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10973
16
                "Specifies the magnitude of an acceleration applied against the entity's instantaneous linear velocity vector", HFILL }
10974
16
        },
10975
16
        { &hf_cigi3_trajectory_definition_terminal_velocity,
10976
16
            { "Terminal Velocity (m/s)", "cigi.trajectory_def.terminal_velocity",
10977
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
10978
16
                "Specifies the maximum velocity the entity can sustain", HFILL }
10979
16
        },
10980
10981
        /* CIGI4 Acceleration Control */
10982
16
        { &hf_cigi4_acceleration_control,
10983
16
            { "Trajectory Definition", "cigi.acceleration_control",
10984
16
                FT_NONE, BASE_NONE, NULL, 0x0,
10985
16
                "Trajectory Definition Packet", HFILL }
10986
16
        },
10987
16
        { &hf_cigi4_acceleration_control_entity_id,
10988
16
            { "Entity ID", "cigi.acceleration_control.entity_id",
10989
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
10990
16
                "Identifies the entity for which the trajectory is defined", HFILL }
10991
16
        },
10992
16
        { &hf_cigi4_acceleration_control_articulated_part_id,
10993
16
            { "Articulated Part ID", "cigi.acceleration_control.part_id",
10994
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
10995
16
                "Specifies the articulated part to which the acceleration may be applied", HFILL }
10996
16
        },
10997
16
        { &hf_cigi4_acceleration_control_apply_to_part,
10998
16
            { "Apply to Articulated Part", "cigi.acceleration_control.apply_to_part",
10999
16
                FT_BOOLEAN, 8, NULL, 0x01,
11000
16
                "Indicates whether the acceleration may be applied to an articulated part or an entity", HFILL }
11001
16
        },
11002
16
        { &hf_cigi4_acceleration_control_coord_system,
11003
16
            { "Sequence Direction", "cigi.acceleration_control.coord_system",
11004
16
                FT_BOOLEAN, 8, TFS(&local_worldparent_tfs), 0x02,
11005
16
                "Indicates the reference coordinate system to which the linear and angular accelerations may be applied", HFILL }
11006
16
        },
11007
16
        { &hf_cigi4_acceleration_control_acceleration_x,
11008
16
            { "Acceleration X (m/s^2)", "cigi.acceleration_control.acceleration_x",
11009
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11010
16
                "Specifies the X component of the acceleration vector", HFILL }
11011
16
        },
11012
16
        { &hf_cigi4_acceleration_control_acceleration_y,
11013
16
            { "Acceleration Y (m/s^2)", "cigi.acceleration_control.acceleration_y",
11014
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11015
16
                "Specifies the Y component of the acceleration vector", HFILL }
11016
16
        },
11017
16
        { &hf_cigi4_acceleration_control_acceleration_z,
11018
16
            { "Acceleration Z (m/s^2)", "cigi.acceleration_control.acceleration_z",
11019
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11020
16
                "Specifies the Z component of the acceleration vector", HFILL }
11021
16
        },
11022
16
        { &hf_cigi4_acceleration_control_acceleration_roll,
11023
16
            { "Roll Angular Acceleration (deg/s^2)", "cigi.acceleration_control.acceleration_roll",
11024
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11025
16
                "Specifies the acceleration of rotation of the articulated part submodel about its rool axis.", HFILL }
11026
16
        },
11027
16
        { &hf_cigi4_acceleration_control_acceleration_pitch,
11028
16
            { "Pitch Angular Acceleration (deg/s^2)", "cigi.acceleration_control.acceleration_pitch",
11029
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11030
16
                "Specifies the acceleration of rotation of the articulated part submodel about its pitch axis", HFILL }
11031
16
        },
11032
16
        { &hf_cigi4_acceleration_control_acceleration_yaw,
11033
16
            { "Yaw Angular Acceleration (deg/s^2)", "cigi.acceleration_control.acceleration_yaw",
11034
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11035
16
                "Specifies the acceleration of rotation of the articulated part submodel about its yaw axis", HFILL }
11036
16
        },
11037
11038
        /* CIGI2 Special Effect Definition */
11039
16
        { &hf_cigi2_special_effect_definition,
11040
16
            { "Special Effect Definition", "cigi.special_effect_def",
11041
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11042
16
                "Special Effect Definition Packet", HFILL }
11043
16
        },
11044
16
        { &hf_cigi2_special_effect_definition_entity_id,
11045
16
            { "Entity ID", "cigi.special_effect_def.entity_id",
11046
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11047
16
                "Indicates which effect is being modified", HFILL }
11048
16
        },
11049
16
        { &hf_cigi2_special_effect_definition_seq_direction,
11050
16
            { "Sequence Direction", "cigi.special_effect_def.seq_direction",
11051
16
                FT_BOOLEAN, 8, TFS(&cigi2_special_effect_definition_seq_direction_tfs), 0x80,
11052
16
                "Indicates whether the effect animation sequence should be sequence from beginning to end or vice versa", HFILL }
11053
16
        },
11054
16
        { &hf_cigi2_special_effect_definition_color_enable,
11055
16
            { "Color Enable", "cigi.special_effect_def.color_enable",
11056
16
                FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x40,
11057
16
                "Indicates whether the red, green, and blue color values will be applied to the special effect", HFILL }
11058
16
        },
11059
16
        { &hf_cigi2_special_effect_definition_red,
11060
16
            { "Red Color Value", "cigi.special_effect_def.red",
11061
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11062
16
                "Specifies the red component of a color to be applied to the effect", HFILL }
11063
16
        },
11064
16
        { &hf_cigi2_special_effect_definition_green,
11065
16
            { "Green Color Value", "cigi.special_effect_def.green",
11066
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11067
16
                "Specifies the green component of a color to be applied to the effect", HFILL }
11068
16
        },
11069
16
        { &hf_cigi2_special_effect_definition_blue,
11070
16
            { "Blue Color Value", "cigi.special_effect_def.blue",
11071
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11072
16
                "Specifies the blue component of a color to be applied to the effect", HFILL }
11073
16
        },
11074
16
        { &hf_cigi2_special_effect_definition_x_scale,
11075
16
            { "X Scale", "cigi.special_effect_def.x_scale",
11076
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11077
16
                "Specifies a scale factor to apply along the effect's X axis", HFILL }
11078
16
        },
11079
16
        { &hf_cigi2_special_effect_definition_y_scale,
11080
16
            { "Y Scale", "cigi.special_effect_def.y_scale",
11081
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11082
16
                "Specifies a scale factor to apply along the effect's Y axis", HFILL }
11083
16
        },
11084
16
        { &hf_cigi2_special_effect_definition_z_scale,
11085
16
            { "Z Scale", "cigi.special_effect_def.z_scale",
11086
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11087
16
                "Specifies a scale factor to apply along the effect's Z axis", HFILL }
11088
16
        },
11089
16
        { &hf_cigi2_special_effect_definition_time_scale,
11090
16
            { "Time Scale", "cigi.special_effect_def.time_scale",
11091
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11092
16
                "Specifies a scale factor to apply to the time period for the effect's animation sequence", HFILL }
11093
16
        },
11094
16
        { &hf_cigi2_special_effect_definition_spare,
11095
16
            { "Spare", "cigi.special_effect_def.spare",
11096
16
                FT_UINT16, BASE_HEX, NULL, 0x0,
11097
16
                NULL, HFILL }
11098
16
        },
11099
16
        { &hf_cigi2_special_effect_definition_effect_count,
11100
16
            { "Effect Count", "cigi.special_effect_def.effect_count",
11101
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11102
16
                "Indicates how many effects are contained within a single burst", HFILL }
11103
16
        },
11104
16
        { &hf_cigi2_special_effect_definition_separation,
11105
16
            { "Separation (m)", "cigi.special_effect_def.separation",
11106
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11107
16
                "Indicates the distance between particles within a burst", HFILL }
11108
16
        },
11109
16
        { &hf_cigi2_special_effect_definition_burst_interval,
11110
16
            { "Burst Interval (s)", "cigi.special_effect_def.burst_interval",
11111
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11112
16
                "Indicates the time between successive bursts", HFILL }
11113
16
        },
11114
16
        { &hf_cigi2_special_effect_definition_duration,
11115
16
            { "Duration (s)", "cigi.special_effect_def.duration",
11116
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11117
16
                "Indicates how long an effect or sequence of burst will be active", HFILL }
11118
16
        },
11119
11120
        /* CIGI2 View Definition */
11121
16
        { &hf_cigi2_view_definition,
11122
16
            { "View Definition", "cigi.view_def",
11123
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11124
16
                "View Definition Packet", HFILL }
11125
16
        },
11126
16
        { &hf_cigi2_view_definition_view_id,
11127
16
            { "View ID", "cigi.view_def.view_id",
11128
16
                FT_UINT8, BASE_DEC, NULL, 0xf8,
11129
16
                "Specifies the view to which this packet should be applied", HFILL }
11130
16
        },
11131
16
        { &hf_cigi2_view_definition_view_group,
11132
16
            { "View Group", "cigi.view_def.view_group",
11133
16
                FT_UINT8, BASE_DEC, NULL, 0x07,
11134
16
                "Specifies the view group to which the view is to be assigned", HFILL }
11135
16
        },
11136
16
        { &hf_cigi2_view_definition_view_type,
11137
16
            { "View Type", "cigi.view_def.view_type",
11138
16
                FT_UINT8, BASE_DEC, NULL, 0xe0,
11139
16
                "Specifies the view type", HFILL }
11140
16
        },
11141
16
        { &hf_cigi2_view_definition_pixel_rep,
11142
16
            { "Pixel Replication", "cigi.view_def.pixel_rep",
11143
16
                FT_UINT8, BASE_DEC, VALS(cigi2_view_definition_pixel_rep_vals), 0x1c,
11144
16
                "Specifies what pixel replication function should be applied to the view", HFILL }
11145
16
        },
11146
16
        { &hf_cigi2_view_definition_mirror,
11147
16
            { "View Mirror", "cigi.view_def.mirror",
11148
16
                FT_UINT8, BASE_DEC, VALS(cigi2_view_definition_mirror_vals), 0x03,
11149
16
                "Specifies what mirroring function should be applied to the view", HFILL }
11150
16
        },
11151
16
        { &hf_cigi2_view_definition_tracker_assign,
11152
16
            { "Tracker Assign", "cigi.view_def.tracker_assign",
11153
16
                FT_BOOLEAN, 8, NULL, 0x80,
11154
16
                "Specifies whether the view should be controlled by an external tracking device", HFILL }
11155
16
        },
11156
16
        { &hf_cigi2_view_definition_near_enable,
11157
16
            { "Field of View Near Enable", "cigi.view_def.near_enable",
11158
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40,
11159
16
                "Identifies whether the field of view near value is manipulated from the Host", HFILL }
11160
16
        },
11161
16
        { &hf_cigi2_view_definition_far_enable,
11162
16
            { "Field of View Far Enable", "cigi.view_def.far_enable",
11163
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
11164
16
                "Identifies whether the field of view far value is manipulated from the Host", HFILL }
11165
16
        },
11166
16
        { &hf_cigi2_view_definition_left_enable,
11167
16
            { "Field of View Left Enable", "cigi.view_def.left_enable",
11168
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
11169
16
                "Identifies whether the field of view left value is manipulated from the Host", HFILL }
11170
16
        },
11171
16
        { &hf_cigi2_view_definition_right_enable,
11172
16
            { "Field of View Right Enable", "cigi.view_def.right_enable",
11173
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
11174
16
                "Identifies whether the field of view right value is manipulated from the Host", HFILL }
11175
16
        },
11176
16
        { &hf_cigi2_view_definition_top_enable,
11177
16
            { "Field of View Top Enable", "cigi.view_def.top_enable",
11178
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
11179
16
                "Identifies whether the field of view top value is manipulated from the Host", HFILL }
11180
16
        },
11181
16
        { &hf_cigi2_view_definition_bottom_enable,
11182
16
            { "Field of View Bottom Enable", "cigi.view_def.bottom_enable",
11183
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
11184
16
                "Identifies whether the field of view bottom value is manipulated from the Host", HFILL }
11185
16
        },
11186
16
        { &hf_cigi2_view_definition_fov_near,
11187
16
            { "Field of View Near (m)", "cigi.view_def.fov_near",
11188
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11189
16
                "Defines the near clipping plane for the view", HFILL }
11190
16
        },
11191
16
        { &hf_cigi2_view_definition_fov_far,
11192
16
            { "Field of View Far (m)", "cigi.view_def.fov_far",
11193
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11194
16
                "Defines the far clipping plane for the view", HFILL }
11195
16
        },
11196
16
        { &hf_cigi2_view_definition_fov_left,
11197
16
            { "Field of View Left (degrees)", "cigi.view_def.fov_left",
11198
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11199
16
                "Defines the left clipping plane for the view", HFILL }
11200
16
        },
11201
16
        { &hf_cigi2_view_definition_fov_right,
11202
16
            { "Field of View Right (degrees)", "cigi.view_def.fov_right",
11203
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11204
16
                "Defines the right clipping plane for the view", HFILL }
11205
16
        },
11206
16
        { &hf_cigi2_view_definition_fov_top,
11207
16
            { "Field of View Top (degrees)", "cigi.view_def.fov_top",
11208
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11209
16
                "Defines the top clipping plane for the view", HFILL }
11210
16
        },
11211
16
        { &hf_cigi2_view_definition_fov_bottom,
11212
16
            { "Field of View Bottom (degrees)", "cigi.view_def.fov_bottom",
11213
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11214
16
                "Defines the bottom clipping plane for the view", HFILL }
11215
16
        },
11216
11217
        /* CIGI3 View Definition */
11218
16
        { &hf_cigi3_view_definition,
11219
16
            { "View Definition", "cigi.view_def",
11220
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11221
16
                "View Definition Packet", HFILL }
11222
16
        },
11223
16
        { &hf_cigi3_view_definition_view_id,
11224
16
            { "View ID", "cigi.view_def.view_id",
11225
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11226
16
                "Specifies the view to which the data in this packet will be applied", HFILL }
11227
16
        },
11228
16
        { &hf_cigi3_view_definition_group_id,
11229
16
            { "Group ID", "cigi.view_def.group_id",
11230
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11231
16
                "Specifies the group to which the view is to be assigned", HFILL }
11232
16
        },
11233
16
        { &hf_cigi3_view_definition_near_enable,
11234
16
            { "Near Enable", "cigi.view_def.near_enable",
11235
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
11236
16
                "Specifies whether the near clipping plane will be set to the value of the Near parameter within this packet", HFILL }
11237
16
        },
11238
16
        { &hf_cigi3_view_definition_far_enable,
11239
16
            { "Far Enable", "cigi.view_def.far_enable",
11240
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
11241
16
                "Specifies whether the far clipping plane will be set to the value of the Far parameter within this packet", HFILL }
11242
16
        },
11243
16
        { &hf_cigi3_view_definition_left_enable,
11244
16
            { "Left Enable", "cigi.view_def.left_enable",
11245
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
11246
16
                "Specifies whether the left half-angle of the view frustum will be set according to the value of the Left parameter within this packet", HFILL }
11247
16
        },
11248
16
        { &hf_cigi3_view_definition_right_enable,
11249
16
            { "Right Enable", "cigi.view_def.right_enable",
11250
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
11251
16
                "Specifies whether the right half-angle of the view frustum will be set according to the value of the Right parameter within this packet", HFILL }
11252
16
        },
11253
16
        { &hf_cigi3_view_definition_top_enable,
11254
16
            { "Top Enable", "cigi.view_def.top_enable",
11255
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
11256
16
                "Specifies whether the top half-angle of the view frustum will be set according to the value of the Top parameter within this packet", HFILL }
11257
16
        },
11258
16
        { &hf_cigi3_view_definition_bottom_enable,
11259
16
            { "Bottom Enable", "cigi.view_def.bottom_enable",
11260
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
11261
16
                "Specifies whether the bottom half-angle of the view frustum will be set according to the value of the Bottom parameter within this packet", HFILL }
11262
16
        },
11263
16
        { &hf_cigi3_view_definition_mirror_mode,
11264
16
            { "Mirror Mode", "cigi.view_def.mirror_mode",
11265
16
                FT_UINT8, BASE_DEC, VALS(cigi3_view_definition_mirror_mode_vals), 0xc0,
11266
16
                "Specifies the mirroring function to be performed on the view", HFILL }
11267
16
        },
11268
16
        { &hf_cigi3_view_definition_pixel_replication,
11269
16
            { "Pixel Replication Mode", "cigi.view_def.pixel_replication",
11270
16
                FT_UINT8, BASE_DEC, VALS(cigi3_view_definition_pixel_replication_vals), 0x07,
11271
16
                "Specifies the pixel replication function to be performed on the view", HFILL }
11272
16
        },
11273
16
        { &hf_cigi3_view_definition_projection_type,
11274
16
            { "Projection Type", "cigi.view_def.projection_type",
11275
16
                FT_BOOLEAN, 8, TFS(&cigi3_view_definition_projection_type_tfs), 0x08,
11276
16
                "Specifies whether the view projection should be perspective or orthographic parallel", HFILL }
11277
16
        },
11278
16
        { &hf_cigi3_view_definition_reorder,
11279
16
            { "Reorder", "cigi.view_def.reorder",
11280
16
                FT_BOOLEAN, 8, TFS(&cigi3_view_definition_reorder_tfs), 0x10,
11281
16
                "Specifies whether the view should be moved to the top of any overlapping views", HFILL }
11282
16
        },
11283
16
        { &hf_cigi3_view_definition_view_type,
11284
16
            { "View Type", "cigi.view_def.view_type",
11285
16
                FT_UINT8, BASE_DEC, NULL, 0xe0,
11286
16
                "Specifies an IG-defined type for the indicated view", HFILL }
11287
16
        },
11288
16
        { &hf_cigi3_view_definition_near,
11289
16
            { "Near (m)", "cigi.view_def.near",
11290
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11291
16
                "Specifies the position of the view's near clipping plane", HFILL }
11292
16
        },
11293
16
        { &hf_cigi3_view_definition_far,
11294
16
            { "Far (m)", "cigi.view_def.far",
11295
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11296
16
                "Specifies the position of the view's far clipping plane", HFILL }
11297
16
        },
11298
16
        { &hf_cigi3_view_definition_left,
11299
16
            { "Left (degrees)", "cigi.view_def.left",
11300
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11301
16
                "Specifies the left half-angle of the view frustum", HFILL }
11302
16
        },
11303
16
        { &hf_cigi3_view_definition_right,
11304
16
            { "Right (degrees)", "cigi.view_def.right",
11305
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11306
16
                "Specifies the right half-angle of the view frustum", HFILL }
11307
16
        },
11308
16
        { &hf_cigi3_view_definition_top,
11309
16
            { "Top (degrees)", "cigi.view_def.top",
11310
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11311
16
                "Specifies the top half-angle of the view frustum", HFILL }
11312
16
        },
11313
16
        { &hf_cigi3_view_definition_bottom,
11314
16
            { "Bottom (degrees)", "cigi.view_def.bottom",
11315
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11316
16
                "Specifies the bottom half-angle of the view frustum", HFILL }
11317
16
        },
11318
11319
        /* CIGI4 View Definition */
11320
11321
        /* CIGI2 Collision Detection Segment Definition */
11322
16
        { &hf_cigi2_collision_detection_segment_definition,
11323
16
            { "Collision Detection Segment Definition", "cigi.coll_det_seg_def",
11324
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11325
16
                "Collision Detection Segment Definition Packet", HFILL }
11326
16
        },
11327
16
        { &hf_cigi2_collision_detection_segment_definition_entity_id,
11328
16
            { "Entity ID", "cigi.coll_det_seg_def.entity_id",
11329
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11330
16
                "Indicates the entity to which this collision detection definition is assigned", HFILL }
11331
16
        },
11332
16
        { &hf_cigi2_collision_detection_segment_definition_segment_enable,
11333
16
            { "Segment Enable", "cigi.coll_det_seg_def.segment_enable",
11334
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
11335
16
                "Indicates whether the defined segment is enabled for collision testing", HFILL }
11336
16
        },
11337
16
        { &hf_cigi2_collision_detection_segment_definition_segment_id,
11338
16
            { "Segment ID", "cigi.coll_det_seg_def.segment_id",
11339
16
                FT_UINT8, BASE_DEC, NULL, 0x7f,
11340
16
                "Indicates which segment is being uniquely defined for the given entity", HFILL }
11341
16
        },
11342
16
        { &hf_cigi2_collision_detection_segment_definition_collision_mask,
11343
16
            { "Collision Mask", "cigi.coll_det_seg_def.collision_mask",
11344
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
11345
16
                "Indicates which environment features will be included in or excluded from consideration for collision detection testing", HFILL }
11346
16
        },
11347
16
        { &hf_cigi2_collision_detection_segment_definition_x_start,
11348
16
            { "Segment X Start (m)", "cigi.coll_det_seg_def.x_start",
11349
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11350
16
                "Specifies the starting point of the collision segment in the X-axis with respect to the entity's reference point", HFILL }
11351
16
        },
11352
16
        { &hf_cigi2_collision_detection_segment_definition_y_start,
11353
16
            { "Segment Y Start (m)", "cigi.coll_det_seg_def.y_start",
11354
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11355
16
                "Specifies the starting point of the collision segment in the Y-axis with respect to the entity's reference point", HFILL }
11356
16
        },
11357
16
        { &hf_cigi2_collision_detection_segment_definition_z_start,
11358
16
            { "Segment Z Start (m)", "cigi.coll_det_seg_def.z_start",
11359
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11360
16
                "Specifies the starting point of the collision segment in the Z-axis with respect to the entity's reference point", HFILL }
11361
16
        },
11362
16
        { &hf_cigi2_collision_detection_segment_definition_x_end,
11363
16
            { "Segment X End (m)", "cigi.coll_det_seg_def.x_end",
11364
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11365
16
                "Specifies the ending point of the collision segment in the X-axis with respect to the entity's reference point", HFILL }
11366
16
        },
11367
16
        { &hf_cigi2_collision_detection_segment_definition_y_end,
11368
16
            { "Segment Y End (m)", "cigi.coll_det_seg_def.y_end",
11369
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11370
16
                "Specifies the ending point of the collision segment in the Y-axis with respect to the entity's reference point", HFILL }
11371
16
        },
11372
16
        { &hf_cigi2_collision_detection_segment_definition_z_end,
11373
16
            { "Segment Z End (m)", "cigi.coll_det_seg_def.z_end",
11374
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11375
16
                "Specifies the ending point of the collision segment in the Z-axis with respect to the entity's reference point", HFILL }
11376
16
        },
11377
11378
        /* CIGI3 Collision Detection Segment Definition */
11379
16
        { &hf_cigi3_collision_detection_segment_definition,
11380
16
            { "Collision Detection Segment Definition", "cigi.coll_det_seg_def",
11381
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11382
16
                "Collision Detection Segment Definition Packet", HFILL }
11383
16
        },
11384
16
        { &hf_cigi3_collision_detection_segment_definition_entity_id,
11385
16
            { "Entity ID", "cigi.coll_det_seg_def.entity_id",
11386
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11387
16
                "Specifies the entity for which the segment is defined", HFILL }
11388
16
        },
11389
16
        { &hf_cigi3_collision_detection_segment_definition_segment_id,
11390
16
            { "Segment ID", "cigi.coll_det_seg_def.segment_id",
11391
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11392
16
                "Specifies the ID of the segment", HFILL }
11393
16
        },
11394
16
        { &hf_cigi3_collision_detection_segment_definition_segment_enable,
11395
16
            { "Segment Enable", "cigi.coll_det_seg_def.segment_enable",
11396
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
11397
16
                "Specifies whether the segment is enabled or disabled", HFILL }
11398
16
        },
11399
16
        { &hf_cigi3_collision_detection_segment_definition_x1,
11400
16
            { "X1 (m)", "cigi.coll_det_seg_def.x1",
11401
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11402
16
                "Specifies the X offset of one endpoint of the collision segment", HFILL }
11403
16
        },
11404
16
        { &hf_cigi3_collision_detection_segment_definition_y1,
11405
16
            { "Y1 (m)", "cigi.coll_det_seg_def.y1",
11406
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11407
16
                "Specifies the Y offset of one endpoint of the collision segment", HFILL }
11408
16
        },
11409
16
        { &hf_cigi3_collision_detection_segment_definition_z1,
11410
16
            { "Z1 (m)", "cigi.coll_det_seg_def.z1",
11411
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11412
16
                "Specifies the Z offset of one endpoint of the collision segment", HFILL }
11413
16
        },
11414
16
        { &hf_cigi3_collision_detection_segment_definition_x2,
11415
16
            { "X2 (m)", "cigi.coll_det_seg_def.x2",
11416
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11417
16
                "Specifies the X offset of one endpoint of the collision segment", HFILL }
11418
16
        },
11419
16
        { &hf_cigi3_collision_detection_segment_definition_y2,
11420
16
            { "Y2 (m)", "cigi.coll_det_seg_def.y2",
11421
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11422
16
                "Specifies the Y offset of one endpoint of the collision segment", HFILL }
11423
16
        },
11424
16
        { &hf_cigi3_collision_detection_segment_definition_z2,
11425
16
            { "Z2 (m)", "cigi.coll_det_seg_def.z2",
11426
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11427
16
                "Specifies the Z offset of one endpoint of the collision segment", HFILL }
11428
16
        },
11429
16
        { &hf_cigi3_collision_detection_segment_definition_material_mask,
11430
16
            { "Material Mask", "cigi.coll_det_seg_def.material_mask",
11431
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
11432
16
                "Specifies the environmental and cultural features to be included in or excluded from consideration for collision testing", HFILL }
11433
16
        },
11434
11435
        /* CIGI4 Collision Detection Segment Definition */
11436
11437
        /* CIGI2 Collision Detection Volume Definition */
11438
16
        { &hf_cigi2_collision_detection_volume_definition,
11439
16
            { "Collision Detection Volume Definition", "cigi.coll_det_vol_def",
11440
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11441
16
                "Collision Detection Volume Definition Packet", HFILL }
11442
16
        },
11443
16
        { &hf_cigi2_collision_detection_volume_definition_entity_id,
11444
16
            { "Entity ID", "cigi.coll_det_vol_def.entity_id",
11445
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11446
16
                "Indicates the entity to which this collision detection definition is assigned", HFILL }
11447
16
        },
11448
16
        { &hf_cigi2_collision_detection_volume_definition_volume_enable,
11449
16
            { "Volume Enable", "cigi.coll_det_vol_def.volume_enable",
11450
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
11451
16
                "Indicates whether the defined volume is enabled for collision testing", HFILL }
11452
16
        },
11453
16
        { &hf_cigi2_collision_detection_volume_definition_volume_id,
11454
16
            { "Volume ID", "cigi.coll_det_vol_def.volume_id",
11455
16
                FT_UINT8, BASE_DEC, NULL, 0x7f,
11456
16
                "Indicates which volume is being uniquely defined for a given entity", HFILL }
11457
16
        },
11458
16
        { &hf_cigi2_collision_detection_volume_definition_x_offset,
11459
16
            { "Centroid X Offset (m)", "cigi.coll_det_vol_def.x_offset",
11460
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11461
16
                "Specifies the offset of the volume's centroid along the X axis with respect to the entity's reference point", HFILL }
11462
16
        },
11463
16
        { &hf_cigi2_collision_detection_volume_definition_y_offset,
11464
16
            { "Centroid Y Offset (m)", "cigi.coll_det_vol_def.y_offset",
11465
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11466
16
                "Specifies the offset of the volume's centroid along the Y axis with respect to the entity's reference point", HFILL }
11467
16
        },
11468
16
        { &hf_cigi2_collision_detection_volume_definition_z_offset,
11469
16
            { "Centroid Z Offset (m)", "cigi.coll_det_vol_def.z_offset",
11470
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11471
16
                "Specifies the offset of the volume's centroid along the Z axis with respect to the entity's reference point", HFILL }
11472
16
        },
11473
16
        { &hf_cigi2_collision_detection_volume_definition_height,
11474
16
            { "Height (m)", "cigi.coll_det_vol_def.height",
11475
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11476
16
                "Specifies the height of the volume", HFILL }
11477
16
        },
11478
16
        { &hf_cigi2_collision_detection_volume_definition_width,
11479
16
            { "Width (m)", "cigi.coll_det_vol_def.width",
11480
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11481
16
                "Specifies the width of the volume", HFILL }
11482
16
        },
11483
16
        { &hf_cigi2_collision_detection_volume_definition_depth,
11484
16
            { "Depth (m)", "cigi.coll_det_vol_def.depth",
11485
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11486
16
                "Specifies the depth of the volume", HFILL }
11487
16
        },
11488
11489
        /* CIGI3 Collision Detection Volume Definition */
11490
16
        { &hf_cigi3_collision_detection_volume_definition,
11491
16
            { "Collision Detection Volume Definition", "cigi.coll_det_vol_def",
11492
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11493
16
                "Collision Detection Volume Definition Packet", HFILL }
11494
16
        },
11495
16
        { &hf_cigi3_collision_detection_volume_definition_entity_id,
11496
16
            { "Entity ID", "cigi.coll_det_vol_def.entity_id",
11497
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11498
16
                "Specifies the entity for which the volume is defined", HFILL }
11499
16
        },
11500
16
        { &hf_cigi3_collision_detection_volume_definition_volume_id,
11501
16
            { "Volume ID", "cigi.coll_det_vol_def.volume_id",
11502
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11503
16
                "Specifies the ID of the volume", HFILL }
11504
16
        },
11505
16
        { &hf_cigi3_collision_detection_volume_definition_volume_enable,
11506
16
            { "Volume Enable", "cigi.coll_det_vol_def.volume_enable",
11507
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
11508
16
                "Specifies whether the volume is enabled or disabled", HFILL }
11509
16
        },
11510
16
        { &hf_cigi3_collision_detection_volume_definition_volume_type,
11511
16
            { "Volume Type", "cigi.coll_det_vol_def.volume_type",
11512
16
                FT_BOOLEAN, 8, TFS(&cigi3_collision_detection_volume_definition_volume_type_tfs), 0x02,
11513
16
                "Specified whether the volume is spherical or cuboid", HFILL }
11514
16
        },
11515
16
        { &hf_cigi3_collision_detection_volume_definition_x,
11516
16
            { "X (m)", "cigi.coll_det_vol_def.x",
11517
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11518
16
                "Specifies the X offset of the center of the volume", HFILL }
11519
16
        },
11520
16
        { &hf_cigi3_collision_detection_volume_definition_y,
11521
16
            { "Y (m)", "cigi.coll_det_vol_def.y",
11522
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11523
16
                "Specifies the Y offset of the center of the volume", HFILL }
11524
16
        },
11525
16
        { &hf_cigi3_collision_detection_volume_definition_z,
11526
16
            { "Z (m)", "cigi.coll_det_vol_def.z",
11527
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11528
16
                "Specifies the Z offset of the center of the volume", HFILL }
11529
16
        },
11530
16
        { &hf_cigi3_collision_detection_volume_definition_radius_height,
11531
16
            { "Radius (m)/Height (m)", "cigi.coll_det_vol_def.radius_height",
11532
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11533
16
                "Specifies the radius of the sphere or specifies the length of the cuboid along its Z axis", HFILL }
11534
16
        },
11535
16
        { &hf_cigi3_collision_detection_volume_definition_width,
11536
16
            { "Width (m)", "cigi.coll_det_vol_def.width",
11537
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11538
16
                "Specifies the length of the cuboid along its Y axis", HFILL }
11539
16
        },
11540
16
        { &hf_cigi3_collision_detection_volume_definition_depth,
11541
16
            { "Depth (m)", "cigi.coll_det_vol_def.depth",
11542
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11543
16
                "Specifies the length of the cuboid along its X axis", HFILL }
11544
16
        },
11545
16
        { &hf_cigi3_collision_detection_volume_definition_roll,
11546
16
            { "Roll (degrees)", "cigi.coll_det_vol_def.roll",
11547
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11548
16
                "Specifies the roll of the cuboid with respect to the entity's coordinate system", HFILL }
11549
16
        },
11550
16
        { &hf_cigi3_collision_detection_volume_definition_pitch,
11551
16
            { "Pitch (degrees)", "cigi.coll_det_vol_def.pitch",
11552
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11553
16
                "Specifies the pitch of the cuboid with respect to the entity's coordinate system", HFILL }
11554
16
        },
11555
16
        { &hf_cigi3_collision_detection_volume_definition_yaw,
11556
16
            { "Yaw (degrees)", "cigi.coll_det_vol_def.yaw",
11557
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11558
16
                "Specifies the yaw of the cuboid with respect to the entity's coordinate system", HFILL }
11559
16
        },
11560
11561
        /* CIGI4 Collision Detection Volume Definition */
11562
11563
        /* CIGI2 Height Above Terrain Request */
11564
16
        { &hf_cigi2_height_above_terrain_request,
11565
16
            { "Height Above Terrain Request", "cigi.hat_request",
11566
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11567
16
                "Height Above Terrain Request Packet", HFILL }
11568
16
        },
11569
16
        { &hf_cigi2_height_above_terrain_request_hat_id,
11570
16
            { "HAT ID", "cigi.hat_request.hat_id",
11571
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11572
16
                "Identifies the HAT request", HFILL }
11573
16
        },
11574
16
        { &hf_cigi2_height_above_terrain_request_alt,
11575
16
            { "Altitude (m)", "cigi.hat_request.alt",
11576
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11577
16
                "Specifies the altitude from which the HAT request is being made", HFILL }
11578
16
        },
11579
16
        { &hf_cigi2_height_above_terrain_request_lat,
11580
16
            { "Latitude (degrees)", "cigi.hat_request.lat",
11581
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11582
16
                "Specifies the latitudinal position from which the HAT request is being made", HFILL }
11583
16
        },
11584
16
        { &hf_cigi2_height_above_terrain_request_lon,
11585
16
            { "Longitude (degrees)", "cigi.hat_request.lon",
11586
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11587
16
                "Specifies the longitudinal position from which the HAT request is being made", HFILL }
11588
16
        },
11589
11590
        /* CIGI2 Line of Sight Occult Request */
11591
16
        { &hf_cigi2_line_of_sight_occult_request,
11592
16
            { "Line of Sight Occult Request", "cigi.los_occult_request",
11593
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11594
16
                "Line of Sight Occult Request Packet", HFILL }
11595
16
        },
11596
16
        { &hf_cigi2_line_of_sight_occult_request_los_id,
11597
16
            { "LOS ID", "cigi.los_occult_request.los_id",
11598
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11599
16
                "Identifies the LOS request", HFILL }
11600
16
        },
11601
16
        { &hf_cigi2_line_of_sight_occult_request_source_alt,
11602
16
            { "Source Altitude (m)", "cigi.los_occult_request.source_alt",
11603
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11604
16
                "Specifies the altitude of the source point for the LOS request segment", HFILL }
11605
16
        },
11606
16
        { &hf_cigi2_line_of_sight_occult_request_source_lat,
11607
16
            { "Source Latitude (degrees)", "cigi.los_occult_request.source_lat",
11608
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11609
16
                "Specifies the latitudinal position of the source point for the LOS request segment", HFILL }
11610
16
        },
11611
16
        { &hf_cigi2_line_of_sight_occult_request_source_lon,
11612
16
            { "Source Longitude (degrees)", "cigi.los_occult_request.source_lon",
11613
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11614
16
                "Specifies the longitudinal position of the source point for the LOS request segment", HFILL }
11615
16
        },
11616
16
        { &hf_cigi2_line_of_sight_occult_request_dest_alt,
11617
16
            { "Destination Altitude (m)", "cigi.los_occult_request.dest_alt",
11618
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11619
16
                "Specifies the altitude of the destination point for the LOS request segment", HFILL }
11620
16
        },
11621
16
        { &hf_cigi2_line_of_sight_occult_request_dest_lat,
11622
16
            { "Destination Latitude (degrees)", "cigi.los_occult_request.dest_lat",
11623
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11624
16
                "Specifies the latitudinal position for the destination point for the LOS request segment", HFILL }
11625
16
        },
11626
16
        { &hf_cigi2_line_of_sight_occult_request_dest_lon,
11627
16
            { "Destination Longitude (degrees)", "cigi.los_occult_request.dest_lon",
11628
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11629
16
                "Specifies the longitudinal position of the destination point for the LOS request segment", HFILL }
11630
16
        },
11631
11632
        /* CIGI2 Line of Sight Range Request */
11633
16
        { &hf_cigi2_line_of_sight_range_request,
11634
16
            { "Line of Sight Range Request", "cigi.los_range_request",
11635
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11636
16
                "Line of Sight Range Request Packet", HFILL }
11637
16
        },
11638
16
        { &hf_cigi2_line_of_sight_range_request_los_id,
11639
16
            { "LOS ID", "cigi.los_range_request.los_id",
11640
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11641
16
                "Identifies the LOS request", HFILL }
11642
16
        },
11643
16
        { &hf_cigi2_line_of_sight_range_request_azimuth,
11644
16
            { "Azimuth (degrees)", "cigi.los_range_request.azimuth",
11645
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11646
16
                "Specifies the azimuth of the LOS vector", HFILL }
11647
16
        },
11648
16
        { &hf_cigi2_line_of_sight_range_request_elevation,
11649
16
            { "Elevation (degrees)", "cigi.los_range_request.elevation",
11650
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11651
16
                "Specifies the elevation for the LOS vector", HFILL }
11652
16
        },
11653
16
        { &hf_cigi2_line_of_sight_range_request_min_range,
11654
16
            { "Minimum Range (m)", "cigi.los_range_request.min_range",
11655
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11656
16
                "Specifies the distance from the source position specified in this data packet to a point along the LOS vector where intersection testing will begin", HFILL }
11657
16
        },
11658
16
        { &hf_cigi2_line_of_sight_range_request_max_range,
11659
16
            { "Maximum Range (m)", "cigi.los_range_request.max_range",
11660
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11661
16
                "Specifies the maximum extent from the source position specified in this data packet to a point along the LOS vector where intersection testing will end", HFILL }
11662
16
        },
11663
16
        { &hf_cigi2_line_of_sight_range_request_source_alt,
11664
16
            { "Source Altitude (m)", "cigi.los_range_request.source_alt",
11665
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11666
16
                "Specifies the altitude of the source point of the LOS request vector", HFILL }
11667
16
        },
11668
16
        { &hf_cigi2_line_of_sight_range_request_source_lat,
11669
16
            { "Source Latitude (degrees)", "cigi.los_range_request.source_lat",
11670
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11671
16
                "Specifies the latitudinal position of the source point of the LOS request vector", HFILL }
11672
16
        },
11673
16
        { &hf_cigi2_line_of_sight_range_request_source_lon,
11674
16
            { "Source Longitude (degrees)", "cigi.los_range_request.source_lon",
11675
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11676
16
                "Specifies the longitudinal position of the source point of the LOS request vector", HFILL }
11677
16
        },
11678
11679
        /* CIGI2 Height of Terrain Request */
11680
16
        { &hf_cigi2_height_of_terrain_request,
11681
16
            { "Height of Terrain Request", "cigi.hot_request",
11682
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11683
16
                "Height of Terrain Request Packet", HFILL }
11684
16
        },
11685
16
        { &hf_cigi2_height_of_terrain_request_hot_id,
11686
16
            { "HOT ID", "cigi.hot_request.hot_id",
11687
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11688
16
                "Identifies the HOT request", HFILL }
11689
16
        },
11690
16
        { &hf_cigi2_height_of_terrain_request_lat,
11691
16
            { "Latitude (degrees)", "cigi.hot_request.lat",
11692
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11693
16
                "Specifies the latitudinal position from which the HOT request is made", HFILL }
11694
16
        },
11695
16
        { &hf_cigi2_height_of_terrain_request_lon,
11696
16
            { "Longitude (degrees)", "cigi.hot_request.lon",
11697
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11698
16
                "Specifies the longitudinal position from which the HOT request is made", HFILL }
11699
16
        },
11700
11701
        /* CIGI3 HAT/HOT Request */
11702
16
        { &hf_cigi3_hat_hot_request,
11703
16
            { "HAT/HOT Request", "cigi.hat_hot_request",
11704
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11705
16
                "HAT/HOT Request Packet", HFILL }
11706
16
        },
11707
16
        { &hf_cigi3_hat_hot_request_hat_hot_id,
11708
16
            { "HAT/HOT ID", "cigi.hat_hot_request.hat_hot_id",
11709
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11710
16
                "Identifies the HAT/HOT request", HFILL }
11711
16
        },
11712
16
        { &hf_cigi3_hat_hot_request_type,
11713
16
            { "Request Type", "cigi.hat_hot_request.type",
11714
16
                FT_UINT8, BASE_DEC, VALS(cigi3_hat_hot_request_type_vals), 0x03,
11715
16
                "Determines the type of response packet the IG should return for this packet", HFILL }
11716
16
        },
11717
16
        { &hf_cigi3_hat_hot_request_coordinate_system,
11718
16
            { "Coordinate System", "cigi.hat_hot_request.coordinate_system",
11719
16
                FT_BOOLEAN, 8, TFS(&entity_geodetic_tfs), 0x04,
11720
16
                "Specifies the coordinate system within which the test point is defined", HFILL }
11721
16
        },
11722
16
        { &hf_cigi3_hat_hot_request_entity_id,
11723
16
            { "Entity ID", "cigi.hat_hot_request.entity_id",
11724
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11725
16
                "Specifies the entity relative to which the test point is defined", HFILL }
11726
16
        },
11727
16
        { &hf_cigi3_hat_hot_request_lat_xoff,
11728
16
            { "Latitude (degrees)/X Offset (m)", "cigi.hat_hot_request.lat_xoff",
11729
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11730
16
                "Specifies the latitude from which the HAT/HOT request is being made or specifies the X offset of the point from which the HAT/HOT request is being made", HFILL }
11731
16
        },
11732
16
        { &hf_cigi3_hat_hot_request_lon_yoff,
11733
16
            { "Longitude (degrees)/Y Offset (m)", "cigi.hat_hot_request.lon_yoff",
11734
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11735
16
                "Specifies the longitude from which the HAT/HOT request is being made or specifies the Y offset of the point from which the HAT/HOT request is being made", HFILL }
11736
16
        },
11737
16
        { &hf_cigi3_hat_hot_request_alt_zoff,
11738
16
            { "Altitude (m)/Z Offset (m)", "cigi.hat_hot_request.alt_zoff",
11739
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11740
16
                "Specifies the altitude from which the HAT/HOT request is being made or specifies the Z offset of the point from which the HAT/HOT request is being made", HFILL }
11741
16
        },
11742
11743
        /* CIGI3_2 HAT/HOT Request */
11744
16
        { &hf_cigi3_2_hat_hot_request_update_period,
11745
16
            { "Update Period", "cigi.hat_hot_request.update_period",
11746
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11747
16
                "Specifies interval between successive responses to this request. A zero indicates one responses a value n > 0 the IG should respond every nth frame", HFILL }
11748
16
        },
11749
11750
        /* CIGI4 HAT/HOT Request */
11751
16
        { &hf_cigi4_hat_hot_request_flags,
11752
16
            { "Request Flags", "cigi.hat_hot_request.flags",
11753
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
11754
16
                NULL, HFILL }
11755
16
        },
11756
11757
        /* CIGI3 Line of Sight Segment Request */
11758
16
        { &hf_cigi3_line_of_sight_segment_request,
11759
16
            { "Line of Sight Segment Request", "cigi.los_segment_request",
11760
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11761
16
                "Line of Sight Segment Request Packet", HFILL }
11762
16
        },
11763
16
        { &hf_cigi3_line_of_sight_segment_request_los_id,
11764
16
            { "LOS ID", "cigi.los_segment_request.los_id",
11765
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11766
16
                "Identifies the LOS request", HFILL }
11767
16
        },
11768
16
        { &hf_cigi3_line_of_sight_segment_request_type,
11769
16
            { "Request Type", "cigi.los_segment_request.type",
11770
16
                FT_BOOLEAN, 8, TFS(&extended_normal_tfs), 0x01,
11771
16
                "Determines what type of response the IG should return for this request", HFILL }
11772
16
        },
11773
16
        { &hf_cigi3_line_of_sight_segment_request_source_coord,
11774
16
            { "Source Point Coordinate System", "cigi.los_segment_request.source_coord",
11775
16
                FT_BOOLEAN, 8, TFS(&entity_geodetic_tfs), 0x02,
11776
16
                "Indicates the coordinate system relative to which the test segment source endpoint is specified", HFILL }
11777
16
        },
11778
16
        { &hf_cigi3_line_of_sight_segment_request_destination_coord,
11779
16
            { "Destination Point Coordinate System", "cigi.los_segment_request.destination_coord",
11780
16
                FT_BOOLEAN, 8, TFS(&entity_geodetic_tfs), 0x04,
11781
16
                "Indicates the coordinate system relative to which the test segment destination endpoint is specified", HFILL }
11782
16
        },
11783
16
        { &hf_cigi3_line_of_sight_segment_request_response_coord,
11784
16
            { "Response Coordinate System", "cigi.los_segment_request.response_coord",
11785
16
                FT_BOOLEAN, 8, TFS(&entity_geodetic_tfs), 0x08,
11786
16
                "Specifies the coordinate system to be used in the response", HFILL }
11787
16
        },
11788
16
        { &hf_cigi3_line_of_sight_segment_request_alpha_threshold,
11789
16
            { "Alpha Threshold", "cigi.los_segment_request.alpha_threshold",
11790
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11791
16
                "Specifies the minimum alpha value a surface may have for an LOS response to be generated", HFILL }
11792
16
        },
11793
16
        { &hf_cigi3_line_of_sight_segment_request_source_entity_id,
11794
16
            { "Source Entity ID", "cigi.los_segment_request.source_entity_id",
11795
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11796
16
                "Specifies the entity relative to which the test segment endpoints are defined", HFILL }
11797
16
        },
11798
16
        { &hf_cigi3_line_of_sight_segment_request_source_lat_xoff,
11799
16
            { "Source Latitude (degrees)/Source X Offset (m)", "cigi.los_segment_request.source_lat_xoff",
11800
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11801
16
                "Specifies the latitude of the source endpoint of the LOS test segment or specifies the X offset of the source endpoint of the LOS test segment", HFILL }
11802
16
        },
11803
16
        { &hf_cigi3_line_of_sight_segment_request_source_lon_yoff,
11804
16
            { "Source Longitude (degrees)/Source Y Offset (m)", "cigi.los_segment_request.source_lon_yoff",
11805
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11806
16
                "Specifies the longitude of the source endpoint of the LOS test segment or specifies the Y offset of the source endpoint of the LOS test segment", HFILL }
11807
16
        },
11808
16
        { &hf_cigi3_line_of_sight_segment_request_source_alt_zoff,
11809
16
            { "Source Altitude (m)/Source Z Offset (m)", "cigi.los_segment_request.source_alt_zoff",
11810
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11811
16
                "Specifies the altitude of the source endpoint of the LOS test segment or specifies the Z offset of the source endpoint of the LOS test segment", HFILL }
11812
16
        },
11813
16
        { &hf_cigi3_line_of_sight_segment_request_destination_lat_xoff,
11814
16
            { "Destination Latitude (degrees)/ Destination X Offset (m)", "cigi.los_segment_request.destination_lat_xoff",
11815
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11816
16
                "Specifies the latitude of the destination endpoint of the LOS test segment or specifies the X offset of the destination endpoint of the LOS test segment", HFILL }
11817
16
        },
11818
16
        { &hf_cigi3_line_of_sight_segment_request_destination_lon_yoff,
11819
16
            { "Destination Longitude (degrees)/Destination Y Offset (m)", "cigi.los_segment_request.destination_lon_yoff",
11820
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11821
16
                "Specifies the longitude of the destination endpoint of the LOS test segment or specifies the Y offset of the destination endpoint of the LOS test segment", HFILL }
11822
16
        },
11823
16
        { &hf_cigi3_line_of_sight_segment_request_destination_alt_zoff,
11824
16
            { "Destination Altitude (m)/ Destination Z Offset (m)", "cigi.los_segment_request.destination_alt_zoff",
11825
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11826
16
                "Specifies the altitude of the destination endpoint of the LOS test segment or specifies the Z offset of the destination endpoint of the LOS test segment", HFILL }
11827
16
        },
11828
16
        { &hf_cigi3_line_of_sight_segment_request_material_mask,
11829
16
            { "Material Mask", "cigi.los_segment_request.material_mask",
11830
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
11831
16
                "Specifies the environmental and cultural features to be included in or excluded from consideration for the LOS segment testing", HFILL }
11832
16
        },
11833
11834
        /* CIGI3_2 Line of Sight Segment Request */
11835
16
        { &hf_cigi3_2_line_of_sight_segment_request_destination_entity_id_valid,
11836
16
            { "Destination Entity ID Valid", "cigi.los_segment_request.destination_entity_id_valid",
11837
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x10,
11838
16
                "Destination Entity ID is valid.", HFILL }
11839
16
        },
11840
16
        { &hf_cigi3_2_line_of_sight_segment_request_update_period,
11841
16
            { "Update Period", "cigi.los_segment_request.update_period",
11842
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11843
16
                "Specifies interval between successive responses to this request. A zero indicates one responses a value n > 0 the IG should respond every nth frame", HFILL }
11844
16
        },
11845
16
        { &hf_cigi3_2_line_of_sight_segment_request_destination_entity_id,
11846
16
            { "Destination Entity ID", "cigi.los_segment_request.destination_entity_id",
11847
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11848
16
                "Indicates the entity with respect to which the Destination X Offset, Y Offset, and Destination Z Offset parameters are specified", HFILL }
11849
16
        },
11850
11851
        /* CIGI4 Line of Sight Segment Request */
11852
11853
        /* CIGI3 Line of Sight Vector Request */
11854
16
        { &hf_cigi3_line_of_sight_vector_request,
11855
16
            { "Line of Sight Vector Request", "cigi.los_vector_request",
11856
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11857
16
                "Line of Sight Vector Request Packet", HFILL }
11858
16
        },
11859
16
        { &hf_cigi3_line_of_sight_vector_request_los_id,
11860
16
            { "LOS ID", "cigi.los_vector_request.los_id",
11861
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11862
16
                "Identifies the LOS request", HFILL }
11863
16
        },
11864
16
        { &hf_cigi3_line_of_sight_vector_request_type,
11865
16
            { "Request Type", "cigi.los_vector_request.type",
11866
16
                FT_BOOLEAN, 8, TFS(&extended_normal_tfs), 0x01,
11867
16
                "Determines what type of response the IG should return for this request", HFILL }
11868
16
        },
11869
16
        { &hf_cigi3_line_of_sight_vector_request_source_coord,
11870
16
            { "Source Point Coordinate System", "cigi.los_vector_request.source_coord",
11871
16
                FT_BOOLEAN, 8, TFS(&entity_geodetic_tfs), 0x02,
11872
16
                "Indicates the coordinate system relative to which the test vector source point is specified", HFILL }
11873
16
        },
11874
16
        { &hf_cigi3_line_of_sight_vector_request_response_coord,
11875
16
            { "Response Coordinate System", "cigi.los_vector_request.response_coord",
11876
16
                FT_BOOLEAN, 8, TFS(&entity_geodetic_tfs), 0x04,
11877
16
                "Specifies the coordinate system to be used in the response", HFILL }
11878
16
        },
11879
16
        { &hf_cigi3_line_of_sight_vector_request_alpha,
11880
16
            { "Alpha Threshold", "cigi.los_vector_request.alpha",
11881
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11882
16
                "Specifies the minimum alpha value a surface may have for an LOS response to be generated", HFILL }
11883
16
        },
11884
16
        { &hf_cigi3_line_of_sight_vector_request_entity_id,
11885
16
            { "Entity ID", "cigi.los_vector_request.entity_id",
11886
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11887
16
                "Specifies the entity relative to which the test segment endpoints are defined", HFILL }
11888
16
        },
11889
16
        { &hf_cigi3_line_of_sight_vector_request_azimuth,
11890
16
            { "Azimuth (degrees)", "cigi.los_vector_request.azimuth",
11891
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11892
16
                "Specifies the horizontal angle of the LOS test vector", HFILL }
11893
16
        },
11894
16
        { &hf_cigi3_line_of_sight_vector_request_elevation,
11895
16
            { "Elevation (degrees)", "cigi.los_vector_request.elevation",
11896
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11897
16
                "Specifies the vertical angle of the LOS test vector", HFILL }
11898
16
        },
11899
16
        { &hf_cigi3_line_of_sight_vector_request_min_range,
11900
16
            { "Minimum Range (m)", "cigi.los_vector_request.min_range",
11901
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11902
16
                "Specifies the minimum range along the LOS test vector at which intersection testing should occur", HFILL }
11903
16
        },
11904
16
        { &hf_cigi3_line_of_sight_vector_request_max_range,
11905
16
            { "Maximum Range (m)", "cigi.los_vector_request.max_range",
11906
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
11907
16
                "Specifies the maximum range along the LOS test vector at which intersection testing should occur", HFILL }
11908
16
        },
11909
16
        { &hf_cigi3_line_of_sight_vector_request_source_lat_xoff,
11910
16
            { "Source Latitude (degrees)/Source X Offset (m)", "cigi.los_vector_request.source_lat_xoff",
11911
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11912
16
                "Specifies the latitude of the source point of the LOS test vector", HFILL }
11913
16
        },
11914
16
        { &hf_cigi3_line_of_sight_vector_request_source_lon_yoff,
11915
16
            { "Source Longitude (degrees)/Source Y Offset (m)", "cigi.los_vector_request.source_lon_yoff",
11916
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11917
16
                "Specifies the longitude of the source point of the LOS test vector", HFILL }
11918
16
        },
11919
16
        { &hf_cigi3_line_of_sight_vector_request_source_alt_zoff,
11920
16
            { "Source Altitude (m)/Source Z Offset (m)", "cigi.los_vector_request.source_alt_zoff",
11921
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11922
16
                "Specifies the altitude of the source point of the LOS test vector or specifies the Z offset of the source point of the LOS test vector", HFILL }
11923
16
        },
11924
16
        { &hf_cigi3_line_of_sight_vector_request_material_mask,
11925
16
            { "Material Mask", "cigi.los_vector_request.material_mask",
11926
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
11927
16
                "Specifies the environmental and cultural features to be included in LOS segment testing", HFILL }
11928
16
        },
11929
11930
        /* CIGI3_2 Line of Sight Vector Request */
11931
16
        { &hf_cigi3_2_line_of_sight_vector_request_update_period,
11932
16
            { "Update Period", "cigi.los_vector_request.update_period",
11933
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11934
16
                "Specifies interval between successive responses to this request. A zero indicates one responses a value n > 0 the IG should respond every nth frame", HFILL }
11935
16
        },
11936
11937
11938
        /* CIGI4 Line of Sight Vector Request */
11939
11940
        /* CIGI3 Position Request */
11941
16
        { &hf_cigi3_position_request,
11942
16
            { "Position Request", "cigi.pos_request",
11943
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11944
16
                "Position Request Packet", HFILL }
11945
16
        },
11946
16
        { &hf_cigi3_position_request_object_id,
11947
16
            { "Object ID", "cigi.pos_request.object_id",
11948
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
11949
16
                "Identifies the entity, view, view group, or motion tracking device whose position is being requested", HFILL }
11950
16
        },
11951
16
        { &hf_cigi3_position_request_part_id,
11952
16
            { "Articulated Part ID", "cigi.pos_request.part_id",
11953
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11954
16
                "Identifies the articulated part whose position is being requested", HFILL }
11955
16
        },
11956
16
        { &hf_cigi3_position_request_update_mode,
11957
16
            { "Update Mode", "cigi.pos_request.update_mode",
11958
16
                FT_BOOLEAN, 8, TFS(&cigi3_position_request_update_mode_tfs), 0x01,
11959
16
                "Specifies whether the IG should report the position of the requested object each frame", HFILL }
11960
16
        },
11961
16
        { &hf_cigi3_position_request_object_class,
11962
16
            { "Object Class", "cigi.pos_request.object_class",
11963
16
                FT_UINT8, BASE_DEC, VALS(cigi3_position_request_object_class_vals), 0x0e,
11964
16
                "Specifies the type of object whose position is being requested", HFILL }
11965
16
        },
11966
16
        { &hf_cigi3_position_request_coord_system,
11967
16
            { "Coordinate System", "cigi.pos_request.coord_system",
11968
16
                FT_UINT8, BASE_DEC, VALS(cigi3_position_request_coord_system_vals), 0x30,
11969
16
                "Specifies the desired coordinate system relative to which the position and orientation should be given", HFILL }
11970
16
        },
11971
11972
        /* CIGI4 Position Request */
11973
11974
        /* CIGI3 Environmental Conditions Request */
11975
16
        { &hf_cigi3_environmental_conditions_request,
11976
16
            { "Environmental Conditions Request", "cigi.env_cond_request",
11977
16
                FT_NONE, BASE_NONE, NULL, 0x0,
11978
16
                "Environmental Conditions Request Packet", HFILL }
11979
16
        },
11980
16
        { &hf_cigi3_environmental_conditions_request_type,
11981
16
            { "Request Type", "cigi.env_cond_request.type",
11982
16
                FT_UINT8, BASE_DEC, VALS(cigi3_environmental_conditions_request_type_vals), 0x0f,
11983
16
                "Specifies the desired response type for the request", HFILL }
11984
16
        },
11985
16
        { &hf_cigi3_environmental_conditions_request_id,
11986
16
            { "Request ID", "cigi.env_cond_request.id",
11987
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
11988
16
                "Identifies the environmental conditions request", HFILL }
11989
16
        },
11990
16
        { &hf_cigi3_environmental_conditions_request_lat,
11991
16
            { "Latitude (degrees)", "cigi.env_cond_request.lat",
11992
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11993
16
                "Specifies the geodetic latitude at which the environmental state is requested", HFILL }
11994
16
        },
11995
16
        { &hf_cigi3_environmental_conditions_request_lon,
11996
16
            { "Longitude (degrees)", "cigi.env_cond_request.lon",
11997
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
11998
16
                "Specifies the geodetic longitude at which the environmental state is requested", HFILL }
11999
16
        },
12000
16
        { &hf_cigi3_environmental_conditions_request_alt,
12001
16
            { "Altitude (m)", "cigi.env_cond_request.alt",
12002
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
12003
16
                "Specifies the geodetic altitude at which the environmental state is requested", HFILL }
12004
16
        },
12005
12006
        /* CIGI4 Environmental Conditions Request */
12007
12008
        /* CIGI3_3 Symbol Surface Definition */
12009
16
        { &hf_cigi3_3_symbol_surface_definition,
12010
16
            { "Symbol Surface Definition", "cigi.symbl_srfc_def",
12011
16
                FT_NONE, BASE_NONE, NULL, 0x0,
12012
16
                "Symbol Surface Definition Packet", HFILL }
12013
16
        },
12014
16
        { &hf_cigi3_3_symbol_surface_definition_surface_id,
12015
16
            { "Surface ID", "cigi.symbl_srfc_def.surface_id",
12016
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
12017
16
                "Identifies the symbol surface to which this packet is applied", HFILL }
12018
16
        },
12019
16
        { &hf_cigi3_3_symbol_surface_definition_surface_state,
12020
16
            { "Surface State", "cigi.symbl_srfc_def.surface_state",
12021
16
                FT_BOOLEAN, 8, TFS(&cigi3_3_symbol_surface_definition_surface_state_tfs), 0x01,
12022
16
                "Specifies whether the symbol surface should be active or destroyed", HFILL }
12023
16
        },
12024
16
        { &hf_cigi3_3_symbol_surface_definition_attach_type,
12025
16
            { "Attach Type", "cigi.symbl_srfc_def.attach_type",
12026
16
                FT_BOOLEAN, 8, TFS(&cigi3_3_symbol_surface_definition_attach_type_tfs), 0x02,
12027
16
                "Specifies whether the surface should be attached to an entity or view", HFILL }
12028
16
        },
12029
16
        { &hf_cigi3_3_symbol_surface_definition_billboard,
12030
16
            { "Billboard", "cigi.symbl_srfc_def.billboard",
12031
16
                FT_BOOLEAN, 8, TFS(&cigi3_3_symbol_surface_definition_billboard_tfs), 0x04,
12032
16
                "Specifies whether the surface is treated as a billboard", HFILL }
12033
16
        },
12034
16
        { &hf_cigi3_3_symbol_surface_definition_perspective_growth_enable,
12035
16
            { "Perspective Growth Enable", "cigi.symbl_srfc_def.perspective_growth_enable",
12036
16
                FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
12037
16
                "Specifies whether the surface appears to maintain a constant size or has perspective growth", HFILL }
12038
16
        },
12039
16
        { &hf_cigi3_3_symbol_surface_definition_entity_view_id,
12040
16
            { "Entity ID/View ID", "cigi.symbl_srfc_def.entity_view_id",
12041
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
12042
16
                "Specifies the entity or view to which this symbol surface is attached", HFILL }
12043
16
        },
12044
16
        { &hf_cigi3_3_symbol_surface_definition_xoff_left,
12045
16
            { "X Offset (m)/Left", "cigi.symbl_srfc_def.xoff_left",
12046
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12047
16
                "Specifies the x offset or leftmost boundary for the symbol surface", HFILL }
12048
16
        },
12049
16
        { &hf_cigi3_3_symbol_surface_definition_yoff_right,
12050
16
            { "Y Offset (m)/Right", "cigi.symbl_srfc_def.yoff_right",
12051
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12052
16
                "Specifies the y offset or rightmost boundary for the symbol surface", HFILL }
12053
16
        },
12054
16
        { &hf_cigi3_3_symbol_surface_definition_zoff_top,
12055
16
            { "Z Offset (m)/Top", "cigi.symbl_srfc_def.zoff_top",
12056
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12057
16
                "Specifies the z offset or topmost boundary for the symbol surface", HFILL }
12058
16
        },
12059
16
        { &hf_cigi3_3_symbol_surface_definition_yaw_bottom,
12060
16
            { "Yaw (degrees)/Bottom", "cigi.symbl_srfc_def.yaw_bottom",
12061
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12062
16
                "Specifies the rotation about the surface's Z axis or bottommost boundary for the symbol surface", HFILL }
12063
16
        },
12064
16
        { &hf_cigi3_3_symbol_surface_definition_pitch,
12065
16
            { "Pitch (degrees)", "cigi.symbl_srfc_def.pitch",
12066
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12067
16
                "Specifies the rotation about the surface's Y axis", HFILL }
12068
16
        },
12069
16
        { &hf_cigi3_3_symbol_surface_definition_roll,
12070
16
            { "Roll (degrees)", "cigi.symbl_srfc_def.roll",
12071
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12072
16
                "Specifies the rotation about the surface's X axis", HFILL }
12073
16
        },
12074
16
        { &hf_cigi3_3_symbol_surface_definition_width,
12075
16
            { "Width (m/degrees)", "cigi.symbl_srfc_def.width",
12076
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12077
16
                "Specifies the width of the symbol surface", HFILL }
12078
16
        },
12079
16
        { &hf_cigi3_3_symbol_surface_definition_height,
12080
16
            { "Height (m/degrees)", "cigi.symbl_srfc_def.height",
12081
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12082
16
                "Specifies the height of the symbol surface", HFILL }
12083
16
        },
12084
16
        { &hf_cigi3_3_symbol_surface_definition_min_u,
12085
16
            { "Min U (surface horizontal units)", "cigi.symbl_srfc_def.min_u",
12086
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12087
16
                "Specifies the minimum U coordinate of the symbol surface's viewable area", HFILL }
12088
16
        },
12089
16
        { &hf_cigi3_3_symbol_surface_definition_max_u,
12090
16
            { "Max U (surface horizontal units)", "cigi.symbl_srfc_def.max_u",
12091
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12092
16
                "Specifies the maximum U coordinate of the symbol surface's viewable area", HFILL }
12093
16
        },
12094
16
        { &hf_cigi3_3_symbol_surface_definition_min_v,
12095
16
            { "Min V (surface vertical units)", "cigi.symbl_srfc_def.min_v",
12096
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12097
16
                "Specifies the minimum V coordinate of the symbol surface's viewable area", HFILL }
12098
16
        },
12099
16
        { &hf_cigi3_3_symbol_surface_definition_max_v,
12100
16
            { "Max V (surface vertical units)", "cigi.symbl_srfc_def.max_v",
12101
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12102
16
                "Specifies the maximum V coordinate of the symbol surface's viewable area", HFILL }
12103
16
        },
12104
12105
12106
        /* CIGI4 Symbol Surface Definition */
12107
12108
        /* CIGI3_3 Symbol Text Definition */
12109
16
        { &hf_cigi3_3_symbol_text_definition,
12110
16
            { "Symbol Text Definition", "cigi.symbol_text_def",
12111
16
                FT_NONE, BASE_NONE, NULL, 0x0,
12112
16
                "Symbol Text Definition Packet", HFILL }
12113
16
        },
12114
16
        { &hf_cigi3_3_symbol_text_definition_symbol_id,
12115
16
            { "Symbol ID", "cigi.symbol_text_def.symbol_id",
12116
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
12117
16
                "Specifies the identifier of the symbol that is being defined", HFILL }
12118
16
        },
12119
16
        { &hf_cigi3_3_symbol_text_definition_alignment,
12120
16
            { "Alignment", "cigi.symbol_text_def.alignment",
12121
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_symbol_text_definition_alignment_vals), 0x0f,
12122
16
                "Specifies the position of the symbol's reference point", HFILL }
12123
16
        },
12124
16
        { &hf_cigi3_3_symbol_text_definition_orientation,
12125
16
            { "Orientation", "cigi.symbol_text_def.orientation",
12126
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_symbol_text_definition_orientation_vals), 0x30,
12127
16
                "Specifies the orientation of the text", HFILL }
12128
16
        },
12129
16
        { &hf_cigi3_3_symbol_text_definition_font_ident,
12130
16
            { "Font ID", "cigi.symbol_text_def.font_ident",
12131
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_symbol_text_definition_font_ident_vals), 0x0,
12132
16
                "Specifies the font to be used", HFILL }
12133
16
        },
12134
16
        { &hf_cigi3_3_symbol_text_definition_font_size,
12135
16
            { "Font Size", "cigi.symbol_text_def.font_size",
12136
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12137
16
                "Specifies the font size", HFILL }
12138
16
        },
12139
16
        { &hf_cigi3_3_symbol_text_definition_text,
12140
16
            { "Text", "cigi.symbol_text_def.text",
12141
16
                FT_STRINGZPAD, BASE_NONE, NULL, 0x0,
12142
16
                "Symbol text", HFILL }
12143
16
        },
12144
12145
        /* CIGI4 Symbol Text Definition */
12146
12147
        /* CIGI3_3 Symbol Circle Definition */
12148
16
        { &hf_cigi3_3_symbol_circle_definition,
12149
16
            { "Symbol Circle Definition", "cigi.symbol_circle_def",
12150
16
                FT_NONE, BASE_NONE, NULL, 0x0,
12151
16
                "Symbol Circle Definition Packet", HFILL }
12152
16
        },
12153
16
        { &hf_cigi3_3_symbol_circle_definition_symbol_id,
12154
16
            { "Symbol ID", "cigi.symbol_circle_def.symbol_id",
12155
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
12156
16
                "Specifies the identifier of the symbol that is being defined", HFILL }
12157
16
        },
12158
16
        { &hf_cigi3_3_symbol_circle_definition_drawing_style,
12159
16
            { "Drawing Style", "cigi.symbol_circle_def.drawing_style",
12160
16
                FT_BOOLEAN, 8, TFS(&cigi3_3_symbol_circle_definition_drawing_style_tfs), 0x01,
12161
16
                "Specifies whether the circles and arcs are curved lines or filled areas", HFILL }
12162
16
        },
12163
16
        { &hf_cigi3_3_symbol_circle_definition_stipple_pattern,
12164
16
            { "Stipple Pattern", "cigi.symbol_circle_def.stipple_pattern",
12165
16
                FT_UINT16, BASE_HEX, NULL, 0x0,
12166
16
                "Specifies the dash pattern used", HFILL }
12167
16
        },
12168
16
        { &hf_cigi3_3_symbol_circle_definition_line_width,
12169
16
            { "Line Width (scaled symbol surface units)", "cigi.symbol_circle_def.line_width",
12170
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12171
16
                "Specifies the thickness of the line", HFILL }
12172
16
        },
12173
16
        { &hf_cigi3_3_symbol_circle_definition_stipple_pattern_length,
12174
16
            { "Stipple Pattern Length (scaled symbol surface units)", "cigi.symbol_circle_def.stipple_pattern_length",
12175
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12176
16
                "Specifies the length of one complete repetition of the stipple pattern", HFILL }
12177
16
        },
12178
16
        { &hf_cigi3_3_symbol_circle_definition_center_u[0],
12179
16
            { "Center U 1 (scaled symbol surface units)", "cigi.symbol_circle_def.center_u1",
12180
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12181
16
                "Specifies the u position of the center", HFILL }
12182
16
        },
12183
16
        { &hf_cigi3_3_symbol_circle_definition_center_v[0],
12184
16
            { "Center V 1 (scaled symbol surface units)", "cigi.symbol_circle_def.center_v1",
12185
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12186
16
                "Specifies the v position of the center", HFILL }
12187
16
        },
12188
16
        { &hf_cigi3_3_symbol_circle_definition_radius[0],
12189
16
            { "Radius 1 (scaled symbol surface units)", "cigi.symbol_circle_def.radius1",
12190
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12191
16
                "Specifies the radius", HFILL }
12192
16
        },
12193
16
        { &hf_cigi3_3_symbol_circle_definition_inner_radius[0],
12194
16
            { "Inner Radius 1 (scaled symbol surface units)", "cigi.symbol_circle_def.inner_radius1",
12195
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12196
16
                "Specifies the inner radius", HFILL }
12197
16
        },
12198
16
        { &hf_cigi3_3_symbol_circle_definition_start_angle[0],
12199
16
            { "Start Angle 1 (degrees)", "cigi.symbol_circle_def.start_angle1",
12200
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12201
16
                "Specifies the start angle", HFILL }
12202
16
        },
12203
16
        { &hf_cigi3_3_symbol_circle_definition_end_angle[0],
12204
16
            { "End Angle 1 (degrees)", "cigi.symbol_circle_def.end_angle1",
12205
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12206
16
                "Specifies the end angle", HFILL }
12207
16
        },
12208
16
        { &hf_cigi3_3_symbol_circle_definition_center_u[1],
12209
16
            { "Center U 2 (scaled symbol surface units)", "cigi.symbol_circle_def.center_u2",
12210
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12211
16
                "Specifies the u position of the center", HFILL }
12212
16
        },
12213
16
        { &hf_cigi3_3_symbol_circle_definition_center_v[1],
12214
16
            { "Center V 2 (scaled symbol surface units)", "cigi.symbol_circle_def.center_v2",
12215
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12216
16
                "Specifies the v position of the center", HFILL }
12217
16
        },
12218
16
        { &hf_cigi3_3_symbol_circle_definition_radius[1],
12219
16
            { "Radius 2 (scaled symbol surface units)", "cigi.symbol_circle_def.radius2",
12220
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12221
16
                "Specifies the radius", HFILL }
12222
16
        },
12223
16
        { &hf_cigi3_3_symbol_circle_definition_inner_radius[1],
12224
16
            { "Inner Radius 2 (scaled symbol surface units)", "cigi.symbol_circle_def.inner_radius2",
12225
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12226
16
                "Specifies the inner radius", HFILL }
12227
16
        },
12228
16
        { &hf_cigi3_3_symbol_circle_definition_start_angle[1],
12229
16
            { "Start Angle 2 (degrees)", "cigi.symbol_circle_def.start_angle2",
12230
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12231
16
                "Specifies the start angle", HFILL }
12232
16
        },
12233
16
        { &hf_cigi3_3_symbol_circle_definition_end_angle[1],
12234
16
            { "End Angle 2 (degrees)", "cigi.symbol_circle_def.end_angle2",
12235
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12236
16
                "Specifies the end angle", HFILL }
12237
16
        },
12238
16
        { &hf_cigi3_3_symbol_circle_definition_center_u[2],
12239
16
            { "Center U 3 (scaled symbol surface units)", "cigi.symbol_circle_def.center_u3",
12240
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12241
16
                "Specifies the u position of the center", HFILL }
12242
16
        },
12243
16
        { &hf_cigi3_3_symbol_circle_definition_center_v[2],
12244
16
            { "Center V 3 (scaled symbol surface units)", "cigi.symbol_circle_def.center_v3",
12245
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12246
16
                "Specifies the v position of the center", HFILL }
12247
16
        },
12248
16
        { &hf_cigi3_3_symbol_circle_definition_radius[2],
12249
16
            { "Radius 3 (scaled symbol surface units)", "cigi.symbol_circle_def.radius3",
12250
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12251
16
                "Specifies the radius", HFILL }
12252
16
        },
12253
16
        { &hf_cigi3_3_symbol_circle_definition_inner_radius[2],
12254
16
            { "Inner Radius 3 (scaled symbol surface units)", "cigi.symbol_circle_def.inner_radius3",
12255
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12256
16
                "Specifies the inner radius", HFILL }
12257
16
        },
12258
16
        { &hf_cigi3_3_symbol_circle_definition_start_angle[2],
12259
16
            { "Start Angle 3 (degrees)", "cigi.symbol_circle_def.start_angle3",
12260
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12261
16
                "Specifies the start angle", HFILL }
12262
16
        },
12263
16
        { &hf_cigi3_3_symbol_circle_definition_end_angle[2],
12264
16
            { "End Angle 3 (degrees)", "cigi.symbol_circle_def.end_angle3",
12265
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12266
16
                "Specifies the end angle", HFILL }
12267
16
        },
12268
16
        { &hf_cigi3_3_symbol_circle_definition_center_u[3],
12269
16
            { "Center U 4 (scaled symbol surface units)", "cigi.symbol_circle_def.center_u4",
12270
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12271
16
                "Specifies the u position of the center", HFILL }
12272
16
        },
12273
16
        { &hf_cigi3_3_symbol_circle_definition_center_v[3],
12274
16
            { "Center V 4 (scaled symbol surface units)", "cigi.symbol_circle_def.center_v4",
12275
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12276
16
                "Specifies the v position of the center", HFILL }
12277
16
        },
12278
16
        { &hf_cigi3_3_symbol_circle_definition_radius[3],
12279
16
            { "Radius 4 (scaled symbol surface units)", "cigi.symbol_circle_def.radius4",
12280
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12281
16
                "Specifies the radius", HFILL }
12282
16
        },
12283
16
        { &hf_cigi3_3_symbol_circle_definition_inner_radius[3],
12284
16
            { "Inner Radius 4 (scaled symbol surface units)", "cigi.symbol_circle_def.inner_radius4",
12285
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12286
16
                "Specifies the inner radius", HFILL }
12287
16
        },
12288
16
        { &hf_cigi3_3_symbol_circle_definition_start_angle[3],
12289
16
            { "Start Angle 4 (degrees)", "cigi.symbol_circle_def.start_angle4",
12290
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12291
16
                "Specifies the start angle", HFILL }
12292
16
        },
12293
16
        { &hf_cigi3_3_symbol_circle_definition_end_angle[3],
12294
16
            { "End Angle 4 (degrees)", "cigi.symbol_circle_def.end_angle4",
12295
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12296
16
                "Specifies the end angle", HFILL }
12297
16
        },
12298
16
        { &hf_cigi3_3_symbol_circle_definition_center_u[4],
12299
16
            { "Center U 5 (scaled symbol surface units)", "cigi.symbol_circle_def.center_u5",
12300
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12301
16
                "Specifies the u position of the center", HFILL }
12302
16
        },
12303
16
        { &hf_cigi3_3_symbol_circle_definition_center_v[4],
12304
16
            { "Center V 5 (scaled symbol surface units)", "cigi.symbol_circle_def.center_v5",
12305
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12306
16
                "Specifies the v position of the center", HFILL }
12307
16
        },
12308
16
        { &hf_cigi3_3_symbol_circle_definition_radius[4],
12309
16
            { "Radius 5 (scaled symbol surface units)", "cigi.symbol_circle_def.radius5",
12310
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12311
16
                "Specifies the radius", HFILL }
12312
16
        },
12313
16
        { &hf_cigi3_3_symbol_circle_definition_inner_radius[4],
12314
16
            { "Inner Radius 5 (scaled symbol surface units)", "cigi.symbol_circle_def.inner_radius5",
12315
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12316
16
                "Specifies the inner radius", HFILL }
12317
16
        },
12318
16
        { &hf_cigi3_3_symbol_circle_definition_start_angle[4],
12319
16
            { "Start Angle 5 (degrees)", "cigi.symbol_circle_def.start_angle5",
12320
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12321
16
                "Specifies the start angle", HFILL }
12322
16
        },
12323
16
        { &hf_cigi3_3_symbol_circle_definition_end_angle[4],
12324
16
            { "End Angle 5 (degrees)", "cigi.symbol_circle_def.end_angle5",
12325
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12326
16
                "Specifies the end angle", HFILL }
12327
16
        },
12328
16
        { &hf_cigi3_3_symbol_circle_definition_center_u[5],
12329
16
            { "Center U 6 (scaled symbol surface units)", "cigi.symbol_circle_def.center_u6",
12330
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12331
16
                "Specifies the u position of the center", HFILL }
12332
16
        },
12333
16
        { &hf_cigi3_3_symbol_circle_definition_center_v[5],
12334
16
            { "Center V 6 (scaled symbol surface units)", "cigi.symbol_circle_def.center_v6",
12335
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12336
16
                "Specifies the v position of the center", HFILL }
12337
16
        },
12338
16
        { &hf_cigi3_3_symbol_circle_definition_radius[5],
12339
16
            { "Radius 6 (scaled symbol surface units)", "cigi.symbol_circle_def.radius6",
12340
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12341
16
                "Specifies the radius", HFILL }
12342
16
        },
12343
16
        { &hf_cigi3_3_symbol_circle_definition_inner_radius[5],
12344
16
            { "Inner Radius 6 (scaled symbol surface units)", "cigi.symbol_circle_def.inner_radius6",
12345
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12346
16
                "Specifies the inner radius", HFILL }
12347
16
        },
12348
16
        { &hf_cigi3_3_symbol_circle_definition_start_angle[5],
12349
16
            { "Start Angle 6 (degrees)", "cigi.symbol_circle_def.start_angle6",
12350
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12351
16
                "Specifies the start angle", HFILL }
12352
16
        },
12353
16
        { &hf_cigi3_3_symbol_circle_definition_end_angle[5],
12354
16
            { "End Angle 6 (degrees)", "cigi.symbol_circle_def.end_angle6",
12355
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12356
16
                "Specifies the end angle", HFILL }
12357
16
        },
12358
16
        { &hf_cigi3_3_symbol_circle_definition_center_u[6],
12359
16
            { "Center U 7 (scaled symbol surface units)", "cigi.symbol_circle_def.center_u7",
12360
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12361
16
                "Specifies the u position of the center", HFILL }
12362
16
        },
12363
16
        { &hf_cigi3_3_symbol_circle_definition_center_v[6],
12364
16
            { "Center V 7 (scaled symbol surface units)", "cigi.symbol_circle_def.center_v7",
12365
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12366
16
                "Specifies the v position of the center", HFILL }
12367
16
        },
12368
16
        { &hf_cigi3_3_symbol_circle_definition_radius[6],
12369
16
            { "Radius 7 (scaled symbol surface units)", "cigi.symbol_circle_def.radius7",
12370
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12371
16
                "Specifies the radius", HFILL }
12372
16
        },
12373
16
        { &hf_cigi3_3_symbol_circle_definition_inner_radius[6],
12374
16
            { "Inner Radius 7 (scaled symbol surface units)", "cigi.symbol_circle_def.inner_radius7",
12375
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12376
16
                "Specifies the inner radius", HFILL }
12377
16
        },
12378
16
        { &hf_cigi3_3_symbol_circle_definition_start_angle[6],
12379
16
            { "Start Angle 7 (degrees)", "cigi.symbol_circle_def.start_angle7",
12380
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12381
16
                "Specifies the start angle", HFILL }
12382
16
        },
12383
16
        { &hf_cigi3_3_symbol_circle_definition_end_angle[6],
12384
16
            { "End Angle 7 (degrees)", "cigi.symbol_circle_def.end_angle7",
12385
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12386
16
                "Specifies the end angle", HFILL }
12387
16
        },
12388
16
        { &hf_cigi3_3_symbol_circle_definition_center_u[7],
12389
16
            { "Center U 8 (scaled symbol surface units)", "cigi.symbol_circle_def.center_u8",
12390
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12391
16
                "Specifies the u position of the center", HFILL }
12392
16
        },
12393
16
        { &hf_cigi3_3_symbol_circle_definition_center_v[7],
12394
16
            { "Center V 8 (scaled symbol surface units)", "cigi.symbol_circle_def.center_v8",
12395
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12396
16
                "Specifies the v position of the center", HFILL }
12397
16
        },
12398
16
        { &hf_cigi3_3_symbol_circle_definition_radius[7],
12399
16
            { "Radius 8 (scaled symbol surface units)", "cigi.symbol_circle_def.radius8",
12400
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12401
16
                "Specifies the radius", HFILL }
12402
16
        },
12403
16
        { &hf_cigi3_3_symbol_circle_definition_inner_radius[7],
12404
16
            { "Inner Radius 8 (scaled symbol surface units)", "cigi.symbol_circle_def.inner_radius8",
12405
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12406
16
                "Specifies the inner radius", HFILL }
12407
16
        },
12408
16
        { &hf_cigi3_3_symbol_circle_definition_start_angle[7],
12409
16
            { "Start Angle 8 (degrees)", "cigi.symbol_circle_def.start_angle8",
12410
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12411
16
                "Specifies the start angle", HFILL }
12412
16
        },
12413
16
        { &hf_cigi3_3_symbol_circle_definition_end_angle[7],
12414
16
            { "End Angle 8 (degrees)", "cigi.symbol_circle_def.end_angle8",
12415
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12416
16
                "Specifies the end angle", HFILL }
12417
16
        },
12418
16
        { &hf_cigi3_3_symbol_circle_definition_center_u[8],
12419
16
            { "Center U 9 (scaled symbol surface units)", "cigi.symbol_circle_def.center_u9",
12420
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12421
16
                "Specifies the u position of the center", HFILL }
12422
16
        },
12423
16
        { &hf_cigi3_3_symbol_circle_definition_center_v[8],
12424
16
            { "Center V 9 (scaled symbol surface units)", "cigi.symbol_circle_def.center_v9",
12425
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12426
16
                "Specifies the v position of the center", HFILL }
12427
16
        },
12428
16
        { &hf_cigi3_3_symbol_circle_definition_radius[8],
12429
16
            { "Radius 9 (scaled symbol surface units)", "cigi.symbol_circle_def.radius9",
12430
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12431
16
                "Specifies the radius", HFILL }
12432
16
        },
12433
16
        { &hf_cigi3_3_symbol_circle_definition_inner_radius[8],
12434
16
            { "Inner Radius 9 (scaled symbol surface units)", "cigi.symbol_circle_def.inner_radius9",
12435
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12436
16
                "Specifies the inner radius", HFILL }
12437
16
        },
12438
16
        { &hf_cigi3_3_symbol_circle_definition_start_angle[8],
12439
16
            { "Start Angle 9 (degrees)", "cigi.symbol_circle_def.start_angle9",
12440
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12441
16
                "Specifies the start angle", HFILL }
12442
16
        },
12443
16
        { &hf_cigi3_3_symbol_circle_definition_end_angle[8],
12444
16
            { "End Angle 9 (degrees)", "cigi.symbol_circle_def.end_angle9",
12445
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12446
16
                "Specifies the end angle", HFILL }
12447
16
        },
12448
12449
        /* CIGI4 Symbol Circle Definition */
12450
16
        { &hf_cigi4_symbol_circle_definition_circles,
12451
16
            { "Circles", "cigi.symbol_circle_def.circles",
12452
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
12453
16
                NULL, HFILL }
12454
16
        },
12455
12456
        /* CIGI3_3 Symbol Line Definition */
12457
16
        { &hf_cigi3_3_symbol_line_definition,
12458
16
            { "Symbol Line Definition", "cigi.symbol_line_def",
12459
16
                FT_NONE, BASE_NONE, NULL, 0x0,
12460
16
                "Symbol Line Definition Packet", HFILL }
12461
16
        },
12462
16
        { &hf_cigi3_3_symbol_line_definition_symbol_id,
12463
16
            { "Symbol ID", "cigi.symbol_line_def.symbol_id",
12464
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
12465
16
                "Specifies the identifier of the symbol that is being defined", HFILL }
12466
16
        },
12467
16
        { &hf_cigi3_3_symbol_line_definition_primitive_type,
12468
16
            { "Primitive Type", "cigi.symbl_line_def.primitive_type",
12469
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_symbol_line_definition_primitive_type_vals), 0x0F,
12470
16
                "Specifies the type of point or line primitive used", HFILL }
12471
16
        },
12472
16
        { &hf_cigi3_3_symbol_line_definition_stipple_pattern,
12473
16
            { "Stipple Pattern", "cigi.symbol_line_def.stipple_pattern",
12474
16
                FT_UINT16, BASE_HEX, NULL, 0x0,
12475
16
                "Specifies the dash pattern used", HFILL }
12476
16
        },
12477
16
        { &hf_cigi3_3_symbol_line_definition_line_width,
12478
16
            { "Line Width (scaled symbol surface units)", "cigi.symbol_line_def.line_width",
12479
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12480
16
                "Specifies the thickness of the line", HFILL }
12481
16
        },
12482
16
        { &hf_cigi3_3_symbol_line_definition_stipple_pattern_length,
12483
16
            { "Stipple Pattern Length (scaled symbol surface units)", "cigi.symbol_line_def.stipple_pattern_length",
12484
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12485
16
                "Specifies the length of one complete repetition of the stipple pattern", HFILL }
12486
16
        },
12487
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[0],
12488
16
            { "Vertex U 1 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u1",
12489
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12490
16
                "Specifies the u position of the vertex", HFILL }
12491
16
        },
12492
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[0],
12493
16
            { "Vertex V 1 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v1",
12494
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12495
16
                "Specifies the v position of the vertex", HFILL }
12496
16
        },
12497
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[1],
12498
16
            { "Vertex U 2 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u2",
12499
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12500
16
                "Specifies the u position of the vertex", HFILL }
12501
16
        },
12502
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[1],
12503
16
            { "Vertex V 2 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v2",
12504
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12505
16
                "Specifies the v position of the vertex", HFILL }
12506
16
        },
12507
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[2],
12508
16
            { "Vertex U 3 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u3",
12509
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12510
16
                "Specifies the u position of the vertex", HFILL }
12511
16
        },
12512
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[2],
12513
16
            { "Vertex V 3 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v3",
12514
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12515
16
                "Specifies the v position of the vertex", HFILL }
12516
16
        },
12517
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[3],
12518
16
            { "Vertex U 4 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u4",
12519
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12520
16
                "Specifies the u position of the vertex", HFILL }
12521
16
        },
12522
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[3],
12523
16
            { "Vertex V 4 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v4",
12524
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12525
16
                "Specifies the v position of the vertex", HFILL }
12526
16
        },
12527
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[4],
12528
16
            { "Vertex U 5 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u5",
12529
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12530
16
                "Specifies the u position of the vertex", HFILL }
12531
16
        },
12532
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[4],
12533
16
            { "Vertex V 5 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v5",
12534
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12535
16
                "Specifies the v position of the vertex", HFILL }
12536
16
        },
12537
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[5],
12538
16
            { "Vertex U 6 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u6",
12539
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12540
16
                "Specifies the u position of the vertex", HFILL }
12541
16
        },
12542
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[5],
12543
16
            { "Vertex V 6 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v6",
12544
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12545
16
                "Specifies the v position of the vertex", HFILL }
12546
16
        },
12547
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[6],
12548
16
            { "Vertex U 7 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u7",
12549
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12550
16
                "Specifies the u position of the vertex", HFILL }
12551
16
        },
12552
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[6],
12553
16
            { "Vertex V 7 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v7",
12554
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12555
16
                "Specifies the v position of the vertex", HFILL }
12556
16
        },
12557
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[7],
12558
16
            { "Vertex U 8 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u8",
12559
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12560
16
                "Specifies the u position of the vertex", HFILL }
12561
16
        },
12562
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[7],
12563
16
            { "Vertex V 8 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v8",
12564
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12565
16
                "Specifies the v position of the vertex", HFILL }
12566
16
        },
12567
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[8],
12568
16
            { "Vertex U 9 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u9",
12569
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12570
16
                "Specifies the u position of the vertex", HFILL }
12571
16
        },
12572
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[8],
12573
16
            { "Vertex V 9 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v9",
12574
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12575
16
                "Specifies the v position of the vertex", HFILL }
12576
16
        },
12577
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[9],
12578
16
            { "Vertex U 10 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u10",
12579
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12580
16
                "Specifies the u position of the vertex", HFILL }
12581
16
        },
12582
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[9],
12583
16
            { "Vertex V 10 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v10",
12584
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12585
16
                "Specifies the v position of the vertex", HFILL }
12586
16
        },
12587
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[10],
12588
16
            { "Vertex U 11 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u11",
12589
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12590
16
                "Specifies the u position of the vertex", HFILL }
12591
16
        },
12592
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[10],
12593
16
            { "Vertex V 11 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v11",
12594
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12595
16
                "Specifies the v position of the vertex", HFILL }
12596
16
        },
12597
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[11],
12598
16
            { "Vertex U 12 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u12",
12599
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12600
16
                "Specifies the u position of the vertex", HFILL }
12601
16
        },
12602
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[11],
12603
16
            { "Vertex V 12 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v12",
12604
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12605
16
                "Specifies the v position of the vertex", HFILL }
12606
16
        },
12607
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[12],
12608
16
            { "Vertex U 13 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u13",
12609
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12610
16
                "Specifies the u position of the vertex", HFILL }
12611
16
        },
12612
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[12],
12613
16
            { "Vertex V 13 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v13",
12614
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12615
16
                "Specifies the v position of the vertex", HFILL }
12616
16
        },
12617
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[13],
12618
16
            { "Vertex U 14 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u14",
12619
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12620
16
                "Specifies the u position of the vertex", HFILL }
12621
16
        },
12622
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[13],
12623
16
            { "Vertex V 14 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v14",
12624
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12625
16
                "Specifies the v position of the vertex", HFILL }
12626
16
        },
12627
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[14],
12628
16
            { "Vertex U 15 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u15",
12629
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12630
16
                "Specifies the u position of the vertex", HFILL }
12631
16
        },
12632
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[14],
12633
16
            { "Vertex V 15 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v15",
12634
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12635
16
                "Specifies the v position of the vertex", HFILL }
12636
16
        },
12637
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[15],
12638
16
            { "Vertex U 16 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u16",
12639
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12640
16
                "Specifies the u position of the vertex", HFILL }
12641
16
        },
12642
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[15],
12643
16
            { "Vertex V 16 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v16",
12644
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12645
16
                "Specifies the v position of the vertex", HFILL }
12646
16
        },
12647
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[16],
12648
16
            { "Vertex U 17 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u17",
12649
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12650
16
                "Specifies the u position of the vertex", HFILL }
12651
16
        },
12652
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[16],
12653
16
            { "Vertex V 17 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v17",
12654
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12655
16
                "Specifies the v position of the vertex", HFILL }
12656
16
        },
12657
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[17],
12658
16
            { "Vertex U 18 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u18",
12659
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12660
16
                "Specifies the u position of the vertex", HFILL }
12661
16
        },
12662
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[17],
12663
16
            { "Vertex V 18 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v18",
12664
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12665
16
                "Specifies the v position of the vertex", HFILL }
12666
16
        },
12667
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[18],
12668
16
            { "Vertex U 19 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u19",
12669
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12670
16
                "Specifies the u position of the vertex", HFILL }
12671
16
        },
12672
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[18],
12673
16
            { "Vertex V 19 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v19",
12674
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12675
16
                "Specifies the v position of the vertex", HFILL }
12676
16
        },
12677
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[19],
12678
16
            { "Vertex U 20 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u20",
12679
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12680
16
                "Specifies the u position of the vertex", HFILL }
12681
16
        },
12682
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[19],
12683
16
            { "Vertex V 20 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v20",
12684
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12685
16
                "Specifies the v position of the vertex", HFILL }
12686
16
        },
12687
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[20],
12688
16
            { "Vertex U 21 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u21",
12689
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12690
16
                "Specifies the u position of the vertex", HFILL }
12691
16
        },
12692
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[20],
12693
16
            { "Vertex V 21 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v21",
12694
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12695
16
                "Specifies the v position of the vertex", HFILL }
12696
16
        },
12697
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[21],
12698
16
            { "Vertex U 22 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u22",
12699
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12700
16
                "Specifies the u position of the vertex", HFILL }
12701
16
        },
12702
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[21],
12703
16
            { "Vertex V 22 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v22",
12704
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12705
16
                "Specifies the v position of the vertex", HFILL }
12706
16
        },
12707
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[22],
12708
16
            { "Vertex U 23 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u23",
12709
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12710
16
                "Specifies the u position of the vertex", HFILL }
12711
16
        },
12712
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[22],
12713
16
            { "Vertex V 23 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v23",
12714
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12715
16
                "Specifies the v position of the vertex", HFILL }
12716
16
        },
12717
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[23],
12718
16
            { "Vertex U 24 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u24",
12719
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12720
16
                "Specifies the u position of the vertex", HFILL }
12721
16
        },
12722
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[23],
12723
16
            { "Vertex V 24 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v24",
12724
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12725
16
                "Specifies the v position of the vertex", HFILL }
12726
16
        },
12727
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[24],
12728
16
            { "Vertex U 25 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u25",
12729
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12730
16
                "Specifies the u position of the vertex", HFILL }
12731
16
        },
12732
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[24],
12733
16
            { "Vertex V 25 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v25",
12734
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12735
16
                "Specifies the v position of the vertex", HFILL }
12736
16
        },
12737
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[25],
12738
16
            { "Vertex U 26 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u26",
12739
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12740
16
                "Specifies the u position of the vertex", HFILL }
12741
16
        },
12742
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[25],
12743
16
            { "Vertex V 26 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v26",
12744
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12745
16
                "Specifies the v position of the vertex", HFILL }
12746
16
        },
12747
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[26],
12748
16
            { "Vertex U 27 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u27",
12749
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12750
16
                "Specifies the u position of the vertex", HFILL }
12751
16
        },
12752
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[26],
12753
16
            { "Vertex V 27 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v27",
12754
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12755
16
                "Specifies the v position of the vertex", HFILL }
12756
16
        },
12757
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[27],
12758
16
            { "Vertex U 28 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u28",
12759
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12760
16
                "Specifies the u position of the vertex", HFILL }
12761
16
        },
12762
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[27],
12763
16
            { "Vertex V 28 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v28",
12764
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12765
16
                "Specifies the v position of the vertex", HFILL }
12766
16
        },
12767
16
        { &hf_cigi3_3_symbol_line_definition_vertex_u[28],
12768
16
            { "Vertex U 29 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_u29",
12769
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12770
16
                "Specifies the u position of the vertex", HFILL }
12771
16
        },
12772
16
        { &hf_cigi3_3_symbol_line_definition_vertex_v[28],
12773
16
            { "Vertex V 29 (scaled symbol surface units)", "cigi.symbol_line_def.vertex_v29",
12774
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12775
16
                "Specifies the v position of the vertex", HFILL }
12776
16
        },
12777
12778
12779
        /* CIGI4 Symbol Polygon Definition */
12780
16
        { &hf_cigi4_symbol_polygon_definition,
12781
16
            { "Symbol Line Definition", "cigi.symbol_polygon_def",
12782
16
                FT_NONE, BASE_NONE, NULL, 0x0,
12783
16
                "Symbol Line Definition Packet", HFILL }
12784
16
        },
12785
16
        { &hf_cigi4_symbol_polygon_definition_symbol_id,
12786
16
            { "Symbol ID", "cigi.symbol_polygon_def.symbol_id",
12787
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
12788
16
                "Specifies the identifier of the symbol that is being defined", HFILL }
12789
16
        },
12790
16
        { &hf_cigi4_symbol_polygon_definition_primitive_type,
12791
16
            { "Primitive Type", "cigi.symbol_polygon_def.primitive_type",
12792
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_symbol_line_definition_primitive_type_vals), 0x0F,
12793
16
                "Specifies the type of point or line primitive used", HFILL }
12794
16
        },
12795
16
        { &hf_cigi4_symbol_polygon_definition_stipple_pattern,
12796
16
            { "Stipple Pattern", "cigi.symbol_polygon_def.stipple_pattern",
12797
16
                FT_UINT16, BASE_HEX, NULL, 0x0,
12798
16
                "Specifies the dash pattern used", HFILL }
12799
16
        },
12800
16
        { &hf_cigi4_symbol_polygon_definition_line_width,
12801
16
            { "Line Width (scaled symbol surface units)", "cigi.symbol_polygon_def.line_width",
12802
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12803
16
                "Specifies the thickness of the line", HFILL }
12804
16
        },
12805
16
        { &hf_cigi4_symbol_polygon_definition_stipple_pattern_length,
12806
16
            { "Stipple Pattern Length (scaled symbol surface units)", "cigi.symbol_polygon_def.stipple_pattern_length",
12807
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12808
16
                "Specifies the length of one complete repetition of the stipple pattern", HFILL }
12809
16
        },
12810
16
        { &hf_cigi4_symbol_polygon_definition_vertices,
12811
16
            { "Vertices", "cigi.symbol_polygon_def.vertices",
12812
16
                FT_NONE, BASE_NONE, NULL, 0x0,
12813
16
                NULL, HFILL }
12814
16
        },
12815
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[0],
12816
16
            { "Vertex U 1 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u1",
12817
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12818
16
                "Specifies the u position of the vertex", HFILL }
12819
16
        },
12820
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[0],
12821
16
            { "Vertex V 1 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v1",
12822
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12823
16
                "Specifies the v position of the vertex", HFILL }
12824
16
        },
12825
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[1],
12826
16
            { "Vertex U 2 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u2",
12827
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12828
16
                "Specifies the u position of the vertex", HFILL }
12829
16
        },
12830
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[1],
12831
16
            { "Vertex V 2 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v2",
12832
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12833
16
                "Specifies the v position of the vertex", HFILL }
12834
16
        },
12835
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[2],
12836
16
            { "Vertex U 3 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u3",
12837
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12838
16
                "Specifies the u position of the vertex", HFILL }
12839
16
        },
12840
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[2],
12841
16
            { "Vertex V 3 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v3",
12842
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12843
16
                "Specifies the v position of the vertex", HFILL }
12844
16
        },
12845
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[3],
12846
16
            { "Vertex U 4 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u4",
12847
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12848
16
                "Specifies the u position of the vertex", HFILL }
12849
16
        },
12850
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[3],
12851
16
            { "Vertex V 4 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v4",
12852
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12853
16
                "Specifies the v position of the vertex", HFILL }
12854
16
        },
12855
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[4],
12856
16
            { "Vertex U 5 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u5",
12857
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12858
16
                "Specifies the u position of the vertex", HFILL }
12859
16
        },
12860
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[4],
12861
16
            { "Vertex V 5 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v5",
12862
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12863
16
                "Specifies the v position of the vertex", HFILL }
12864
16
        },
12865
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[5],
12866
16
            { "Vertex U 6 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u6",
12867
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12868
16
                "Specifies the u position of the vertex", HFILL }
12869
16
        },
12870
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[5],
12871
16
            { "Vertex V 6 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v6",
12872
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12873
16
                "Specifies the v position of the vertex", HFILL }
12874
16
        },
12875
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[6],
12876
16
            { "Vertex U 7 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u7",
12877
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12878
16
                "Specifies the u position of the vertex", HFILL }
12879
16
        },
12880
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[6],
12881
16
            { "Vertex V 7 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v7",
12882
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12883
16
                "Specifies the v position of the vertex", HFILL }
12884
16
        },
12885
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[7],
12886
16
            { "Vertex U 8 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u8",
12887
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12888
16
                "Specifies the u position of the vertex", HFILL }
12889
16
        },
12890
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[7],
12891
16
            { "Vertex V 8 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v8",
12892
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12893
16
                "Specifies the v position of the vertex", HFILL }
12894
16
        },
12895
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[8],
12896
16
            { "Vertex U 9 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u9",
12897
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12898
16
                "Specifies the u position of the vertex", HFILL }
12899
16
        },
12900
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[8],
12901
16
            { "Vertex V 9 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v9",
12902
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12903
16
                "Specifies the v position of the vertex", HFILL }
12904
16
        },
12905
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[9],
12906
16
            { "Vertex U 10 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u10",
12907
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12908
16
                "Specifies the u position of the vertex", HFILL }
12909
16
        },
12910
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[9],
12911
16
            { "Vertex V 10 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v10",
12912
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12913
16
                "Specifies the v position of the vertex", HFILL }
12914
16
        },
12915
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[10],
12916
16
            { "Vertex U 11 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u11",
12917
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12918
16
                "Specifies the u position of the vertex", HFILL }
12919
16
        },
12920
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[10],
12921
16
            { "Vertex V 11 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v11",
12922
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12923
16
                "Specifies the v position of the vertex", HFILL }
12924
16
        },
12925
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[11],
12926
16
            { "Vertex U 12 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u12",
12927
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12928
16
                "Specifies the u position of the vertex", HFILL }
12929
16
        },
12930
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[11],
12931
16
            { "Vertex V 12 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v12",
12932
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12933
16
                "Specifies the v position of the vertex", HFILL }
12934
16
        },
12935
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[12],
12936
16
            { "Vertex U 13 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u13",
12937
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12938
16
                "Specifies the u position of the vertex", HFILL }
12939
16
        },
12940
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[12],
12941
16
            { "Vertex V 13 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v13",
12942
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12943
16
                "Specifies the v position of the vertex", HFILL }
12944
16
        },
12945
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[13],
12946
16
            { "Vertex U 14 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u14",
12947
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12948
16
                "Specifies the u position of the vertex", HFILL }
12949
16
        },
12950
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[13],
12951
16
            { "Vertex V 14 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v14",
12952
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12953
16
                "Specifies the v position of the vertex", HFILL }
12954
16
        },
12955
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[14],
12956
16
            { "Vertex U 15 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u15",
12957
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12958
16
                "Specifies the u position of the vertex", HFILL }
12959
16
        },
12960
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[14],
12961
16
            { "Vertex V 15 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v15",
12962
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12963
16
                "Specifies the v position of the vertex", HFILL }
12964
16
        },
12965
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[15],
12966
16
            { "Vertex U 16 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u16",
12967
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12968
16
                "Specifies the u position of the vertex", HFILL }
12969
16
        },
12970
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[15],
12971
16
            { "Vertex V 16 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v16",
12972
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12973
16
                "Specifies the v position of the vertex", HFILL }
12974
16
        },
12975
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[16],
12976
16
            { "Vertex U 17 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u17",
12977
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12978
16
                "Specifies the u position of the vertex", HFILL }
12979
16
        },
12980
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[16],
12981
16
            { "Vertex V 17 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v17",
12982
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12983
16
                "Specifies the v position of the vertex", HFILL }
12984
16
        },
12985
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[17],
12986
16
            { "Vertex U 18 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u18",
12987
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12988
16
                "Specifies the u position of the vertex", HFILL }
12989
16
        },
12990
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[17],
12991
16
            { "Vertex V 18 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v18",
12992
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12993
16
                "Specifies the v position of the vertex", HFILL }
12994
16
        },
12995
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[18],
12996
16
            { "Vertex U 19 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u19",
12997
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
12998
16
                "Specifies the u position of the vertex", HFILL }
12999
16
        },
13000
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[18],
13001
16
            { "Vertex V 19 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v19",
13002
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13003
16
                "Specifies the v position of the vertex", HFILL }
13004
16
        },
13005
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[19],
13006
16
            { "Vertex U 20 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u20",
13007
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13008
16
                "Specifies the u position of the vertex", HFILL }
13009
16
        },
13010
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[19],
13011
16
            { "Vertex V 20 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v20",
13012
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13013
16
                "Specifies the v position of the vertex", HFILL }
13014
16
        },
13015
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[20],
13016
16
            { "Vertex U 21 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u21",
13017
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13018
16
                "Specifies the u position of the vertex", HFILL }
13019
16
        },
13020
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[20],
13021
16
            { "Vertex V 21 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v21",
13022
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13023
16
                "Specifies the v position of the vertex", HFILL }
13024
16
        },
13025
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[21],
13026
16
            { "Vertex U 22 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u22",
13027
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13028
16
                "Specifies the u position of the vertex", HFILL }
13029
16
        },
13030
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[21],
13031
16
            { "Vertex V 22 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v22",
13032
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13033
16
                "Specifies the v position of the vertex", HFILL }
13034
16
        },
13035
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[22],
13036
16
            { "Vertex U 23 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u23",
13037
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13038
16
                "Specifies the u position of the vertex", HFILL }
13039
16
        },
13040
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[22],
13041
16
            { "Vertex V 23 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v23",
13042
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13043
16
                "Specifies the v position of the vertex", HFILL }
13044
16
        },
13045
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[23],
13046
16
            { "Vertex U 24 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u24",
13047
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13048
16
                "Specifies the u position of the vertex", HFILL }
13049
16
        },
13050
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[23],
13051
16
            { "Vertex V 24 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v24",
13052
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13053
16
                "Specifies the v position of the vertex", HFILL }
13054
16
        },
13055
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[24],
13056
16
            { "Vertex U 25 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u25",
13057
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13058
16
                "Specifies the u position of the vertex", HFILL }
13059
16
        },
13060
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[24],
13061
16
            { "Vertex V 25 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v25",
13062
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13063
16
                "Specifies the v position of the vertex", HFILL }
13064
16
        },
13065
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[25],
13066
16
            { "Vertex U 26 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u26",
13067
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13068
16
                "Specifies the u position of the vertex", HFILL }
13069
16
        },
13070
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[25],
13071
16
            { "Vertex V 26 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v26",
13072
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13073
16
                "Specifies the v position of the vertex", HFILL }
13074
16
        },
13075
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[26],
13076
16
            { "Vertex U 27 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u27",
13077
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13078
16
                "Specifies the u position of the vertex", HFILL }
13079
16
        },
13080
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[26],
13081
16
            { "Vertex V 27 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v27",
13082
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13083
16
                "Specifies the v position of the vertex", HFILL }
13084
16
        },
13085
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[27],
13086
16
            { "Vertex U 28 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u28",
13087
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13088
16
                "Specifies the u position of the vertex", HFILL }
13089
16
        },
13090
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[27],
13091
16
            { "Vertex V 28 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v28",
13092
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13093
16
                "Specifies the v position of the vertex", HFILL }
13094
16
        },
13095
16
        { &hf_cigi4_symbol_polygon_definition_vertex_u[28],
13096
16
            { "Vertex U 29 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_u29",
13097
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13098
16
                "Specifies the u position of the vertex", HFILL }
13099
16
        },
13100
16
        { &hf_cigi4_symbol_polygon_definition_vertex_v[28],
13101
16
            { "Vertex V 29 (scaled symbol surface units)", "cigi.symbol_polygon_def.vertex_v29",
13102
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13103
16
                "Specifies the v position of the vertex", HFILL }
13104
16
        },
13105
13106
        /* CIGI3_3 Symbol Clone */
13107
16
        { &hf_cigi3_3_symbol_clone,
13108
16
            { "Symbol Clone", "cigi.symbol_clone",
13109
16
                FT_NONE, BASE_NONE, NULL, 0x0,
13110
16
                "Symbol Clone Packet", HFILL }
13111
16
        },
13112
16
        { &hf_cigi3_3_symbol_clone_symbol_id,
13113
16
            { "Symbol ID", "cigi.symbol_clone.symbol_id",
13114
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
13115
16
                "Specifies the identifier of the symbol that is being defined", HFILL }
13116
16
        },
13117
16
        { &hf_cigi3_3_symbol_clone_source_type,
13118
16
            { "Source Type", "cigi.symbol_clone.source_type",
13119
16
                FT_BOOLEAN, 8, TFS(&cigi3_3_symbol_clone_source_type_tfs), 0x04,
13120
16
                "Identifies the source as an existing symbol or symbol template", HFILL }
13121
16
        },
13122
16
        { &hf_cigi3_3_symbol_clone_source_id,
13123
16
            { "Source ID", "cigi.symbol_clone.source_id",
13124
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
13125
16
                "Identifies the symbol to copy or template to instantiate", HFILL }
13126
16
        },
13127
13128
13129
        /* CIGI4 Symbol Clone */
13130
13131
        /* CIGI3_3 Symbol Control */
13132
16
        { &hf_cigi3_3_symbol_control,
13133
16
            { "Symbol Control", "cigi.symbol_control",
13134
16
                FT_NONE, BASE_NONE, NULL, 0x0,
13135
16
                "Symbol Control Packet", HFILL }
13136
16
        },
13137
16
        { &hf_cigi3_3_symbol_control_symbol_id,
13138
16
            { "Symbol ID", "cigi.symbol_control.symbol_id",
13139
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
13140
16
                "Specifies the symbol to which this packet is applied", HFILL }
13141
16
        },
13142
16
        { &hf_cigi3_3_symbol_control_symbol_state,
13143
16
            { "Symbol State", "cigi.symbol_control.symbol_state",
13144
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_symbol_control_symbol_state_vals), 0x03,
13145
16
                "Specifies whether the symbol should be hidden, visible, or destroyed", HFILL }
13146
16
        },
13147
16
        { &hf_cigi3_3_symbol_control_attach_state,
13148
16
            { "Attach State", "cigi.symbol_control.attach_state",
13149
16
                FT_BOOLEAN, 8, TFS(&attach_detach_tfs), 0x04,
13150
16
                "Specifies whether this symbol should be attached to another", HFILL }
13151
16
        },
13152
16
        { &hf_cigi3_3_symbol_control_flash_control,
13153
16
            { "Flash Control", "cigi.symbol_control.flash_control",
13154
16
                FT_BOOLEAN, 8, TFS(&cigi3_3_symbol_control_flash_control_tfs), 0x08,
13155
16
                "Specifies whether the flash cycle is continued or restarted", HFILL }
13156
16
        },
13157
16
        { &hf_cigi3_3_symbol_control_inherit_color,
13158
16
            { "Inherit Color", "cigi.symbol_control.inherit_color",
13159
16
                FT_BOOLEAN, 8, TFS(&inherited_not_inherited_tfs), 0x10,
13160
16
                "Specifies whether the symbol inherits color from a parent symbol", HFILL }
13161
16
        },
13162
16
        { &hf_cigi3_3_symbol_control_parent_symbol_ident,
13163
16
            { "Parent Symbol ID", "cigi.symbol_control.parent_symbol_id",
13164
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
13165
16
                "Specifies the parent for the symbol", HFILL }
13166
16
        },
13167
16
        { &hf_cigi3_3_symbol_control_surface_ident,
13168
16
            { "Surface ID", "cigi.symbol_control.surface_id",
13169
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
13170
16
                "Specifies the symbol surface for the symbol", HFILL }
13171
16
        },
13172
16
        { &hf_cigi3_3_symbol_control_layer,
13173
16
            { "Layer", "cigi.symbol_control.layer",
13174
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13175
16
                "Specifies the layer for the symbol", HFILL }
13176
16
        },
13177
16
        { &hf_cigi3_3_symbol_control_flash_duty_cycle,
13178
16
            { "Flash Duty Cycle (%)", "cigi.symbol_control.flash_duty_cycle",
13179
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13180
16
                "Specifies the duty cycle for a flashing symbol", HFILL }
13181
16
        },
13182
16
        { &hf_cigi3_3_symbol_control_flash_period,
13183
16
            { "Flash Period (seconds)", "cigi.symbol_control.flash_period",
13184
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13185
16
                "Specifies the duration of a single flash cycle", HFILL }
13186
16
        },
13187
16
        { &hf_cigi3_3_symbol_control_position_u,
13188
16
            { "Position U (scaled symbol surface units)", "cigi.symbol_control.position_u",
13189
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13190
16
                "Specifies the u position", HFILL }
13191
16
        },
13192
16
        { &hf_cigi3_3_symbol_control_position_v,
13193
16
            { "Position V (scaled symbol surface units)", "cigi.symbol_control.position_v",
13194
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13195
16
                "Specifies the v position", HFILL }
13196
16
        },
13197
16
        { &hf_cigi3_3_symbol_control_rotation,
13198
16
            { "Rotation (degrees)", "cigi.symbol_control.rotation",
13199
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13200
16
                "Specifies the rotation", HFILL }
13201
16
        },
13202
16
        { &hf_cigi3_3_symbol_control_red,
13203
16
            { "Red", "cigi.symbol_control.red",
13204
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13205
16
                "Specifies the red color component", HFILL }
13206
16
        },
13207
16
        { &hf_cigi3_3_symbol_control_green,
13208
16
            { "Green", "cigi.symbol_control.green",
13209
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13210
16
                "Specifies the green color component", HFILL }
13211
16
        },
13212
16
        { &hf_cigi3_3_symbol_control_blue,
13213
16
            { "Blue", "cigi.symbol_control.blue",
13214
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13215
16
                "Specifies the blue color component", HFILL }
13216
16
        },
13217
16
        { &hf_cigi3_3_symbol_control_alpha,
13218
16
            { "Alpha", "cigi.symbol_control.alpha",
13219
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13220
16
                "Specifies the alpha color component", HFILL }
13221
16
        },
13222
16
        { &hf_cigi3_3_symbol_control_scale_u,
13223
16
            { "Scale U", "cigi.symbol_control.scale_u",
13224
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13225
16
                "Specifies the u scaling factor", HFILL }
13226
16
        },
13227
16
        { &hf_cigi3_3_symbol_control_scale_v,
13228
16
            { "Scale V", "cigi.symbol_control.scale_v",
13229
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13230
16
                "Specifies the v scaling factor", HFILL }
13231
16
        },
13232
13233
        /* CIGI4 Symbol Control */
13234
13235
        /* CIGI3_3 Short Symbol Control */
13236
16
        { &hf_cigi3_3_short_symbol_control,
13237
16
            { "Short Symbol Control", "cigi.short_symbol_control",
13238
16
                FT_NONE, BASE_NONE, NULL, 0x0,
13239
16
                "Short Symbol Control Packet", HFILL }
13240
16
        },
13241
16
        { &hf_cigi3_3_short_symbol_control_symbol_id,
13242
16
            { "Symbol ID", "cigi.short_symbol_control.symbol_id",
13243
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
13244
16
                "Specifies the symbol to which this packet is applied", HFILL }
13245
16
        },
13246
16
        { &hf_cigi3_3_short_symbol_control_symbol_state,
13247
16
            { "Symbol State", "cigi.short_symbol_control.symbol_state",
13248
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_symbol_control_symbol_state_vals), 0x03,
13249
16
                "Specifies whether the symbol should be hidden, visible, or destroyed", HFILL }
13250
16
        },
13251
16
        { &hf_cigi3_3_short_symbol_control_attach_state,
13252
16
            { "Attach State", "cigi.short_symbol_control.attach_state",
13253
16
                FT_BOOLEAN, 8, TFS(&attach_detach_tfs), 0x04,
13254
16
                "Specifies whether this symbol should be attached to another", HFILL }
13255
16
        },
13256
16
        { &hf_cigi3_3_short_symbol_control_flash_control,
13257
16
            { "Flash Control", "cigi.short_symbol_control.flash_control",
13258
16
                FT_BOOLEAN, 8, TFS(&cigi3_3_symbol_control_flash_control_tfs), 0x08,
13259
16
                "Specifies whether the flash cycle is continued or restarted", HFILL }
13260
16
        },
13261
16
        { &hf_cigi3_3_short_symbol_control_inherit_color,
13262
16
            { "Inherit Color", "cigi.short_symbol_control.inherit_color",
13263
16
                FT_BOOLEAN, 8, TFS(&inherited_not_inherited_tfs), 0x10,
13264
16
                "Specifies whether the symbol inherits color from a parent symbol", HFILL }
13265
16
        },
13266
16
        { &hf_cigi3_3_short_symbol_control_attribute_select1,
13267
16
            { "Attribute Select 1", "cigi.short_symbol_control.attribute_select1",
13268
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_short_symbol_control_attribute_select_vals), 0x0,
13269
16
                "Identifies the attribute whose value is specified in Attribute Value 1", HFILL }
13270
16
        },
13271
16
        { &hf_cigi3_3_short_symbol_control_attribute_select2,
13272
16
            { "Attribute Select 2", "cigi.short_symbol_control.attribute_select2",
13273
16
                FT_UINT8, BASE_DEC, VALS(cigi3_3_short_symbol_control_attribute_select_vals), 0x0,
13274
16
                "Identifies the attribute whose value is specified in Attribute Value 2", HFILL }
13275
16
        },
13276
16
        { &hf_cigi3_3_short_symbol_control_attribute_value1,
13277
16
            { "Value 1", "cigi.short_symbol_control.value1_uint",
13278
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
13279
16
                "Specifies the value for attribute 1", HFILL }
13280
16
        },
13281
16
        { &hf_cigi3_3_short_symbol_control_attribute_value2,
13282
16
            { "Value 2", "cigi.short_symbol_control.value2_uint",
13283
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
13284
16
                "Specifies the value for attribute 2", HFILL }
13285
16
        },
13286
16
        { &hf_cigi3_3_short_symbol_control_attribute_value1f,
13287
16
            { "Value 1", "cigi.short_symbol_control.value1_float",
13288
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13289
16
                "Specifies the value for attribute 1", HFILL }
13290
16
        },
13291
16
        { &hf_cigi3_3_short_symbol_control_attribute_value2f,
13292
16
            { "Value 2", "cigi.short_symbol_control.value2_float",
13293
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13294
16
                "Specifies the value for attribute 2", HFILL }
13295
16
        },
13296
16
        { &hf_cigi3_3_short_symbol_control_red1,
13297
16
            { "Red 1", "cigi.short_symbol_control.red1",
13298
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13299
16
                "Specifies the red color component", HFILL }
13300
16
        },
13301
16
        { &hf_cigi3_3_short_symbol_control_green1,
13302
16
            { "Green 1", "cigi.short_symbol_control.green1",
13303
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13304
16
                "Specifies the green color component", HFILL }
13305
16
        },
13306
16
        { &hf_cigi3_3_short_symbol_control_blue1,
13307
16
            { "Blue 1", "cigi.short_symbol_control.blue1",
13308
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13309
16
                "Specifies the blue color component", HFILL }
13310
16
        },
13311
16
        { &hf_cigi3_3_short_symbol_control_alpha1,
13312
16
            { "Alpha 1", "cigi.short_symbol_control.alpha1",
13313
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13314
16
                "Specifies the alpha color component", HFILL }
13315
16
        },
13316
16
        { &hf_cigi3_3_short_symbol_control_red2,
13317
16
            { "Red 2", "cigi.short_symbol_control.red2",
13318
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13319
16
                "Specifies the red color component", HFILL }
13320
16
        },
13321
16
        { &hf_cigi3_3_short_symbol_control_green2,
13322
16
            { "Green 2", "cigi.short_symbol_control.green2",
13323
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13324
16
                "Specifies the green color component", HFILL }
13325
16
        },
13326
16
        { &hf_cigi3_3_short_symbol_control_blue2,
13327
16
            { "Blue 2", "cigi.short_symbol_control.blue2",
13328
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13329
16
                "Specifies the blue color component", HFILL }
13330
16
        },
13331
16
        { &hf_cigi3_3_short_symbol_control_alpha2,
13332
16
            { "Alpha 2", "cigi.short_symbol_control.alpha2",
13333
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
13334
16
                "Specifies the alpha color component", HFILL }
13335
16
        },
13336
13337
        /* CIGI4 Short Symbol Control */
13338
13339
        /* CIGI4 Symbol Circle Textured Definition */
13340
16
        { &hf_cigi4_symbol_circle_textured_definition,
13341
16
            { "Symbol Circle Textured Definition", "cigi.symbol_circle_textured_def",
13342
16
                FT_NONE, BASE_NONE, NULL, 0x0,
13343
16
                "Symbol Circle Definition Packet", HFILL }
13344
16
        },
13345
16
        { &hf_cigi4_symbol_circle_textured_definition_symbol_id,
13346
16
            { "Symbol ID", "cigi.symbol_circle_textured_def.symbol_id",
13347
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
13348
16
                "Specifies the identifier of the symbol that is being defined", HFILL }
13349
16
        },
13350
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_id,
13351
16
            { "Texture ID", "cigi.symbol_circle_textured_def.texture_id",
13352
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
13353
16
                "Specifies the identifier of the texture that is being applied", HFILL }
13354
16
        },
13355
16
        { &hf_cigi4_symbol_circle_textured_definition_filter_mode,
13356
16
            { "Filter Mode", "cigi.symbol_circle_textured_def.filter_mode",
13357
16
                FT_BOOLEAN, 8, NULL, 0x01,
13358
16
                "Specifies the type of texture filtering/interpolation applied to the symbol", HFILL }
13359
16
        },
13360
16
        { &hf_cigi4_symbol_circle_textured_definition_wrap,
13361
16
            { "Line Width (scaled symbol surface units)", "cigi.symbol_circle_textured_def.wrap",
13362
16
                FT_BOOLEAN, 8, NULL, 0x02,
13363
16
                "Specifies whether texture coordinates are to be wrapped or clamped when applied to the symbol", HFILL }
13364
16
        },
13365
16
        { &hf_cigi4_symbol_circle_textured_definition_circles,
13366
16
            { "Circles", "cigi.symbol_circle_textured_def.circles",
13367
16
                FT_NONE, BASE_NONE, NULL, 0x0,
13368
16
                NULL, HFILL }
13369
16
        },
13370
16
        { &hf_cigi4_symbol_circle_textured_definition_center_u[0],
13371
16
            { "Center U 1 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_u1",
13372
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13373
16
                "Specifies the u position of the center", HFILL }
13374
16
        },
13375
16
        { &hf_cigi4_symbol_circle_textured_definition_center_v[0],
13376
16
            { "Center V 1 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_v1",
13377
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13378
16
                "Specifies the v position of the center", HFILL }
13379
16
        },
13380
16
        { &hf_cigi4_symbol_circle_textured_definition_radius[0],
13381
16
            { "Radius 1 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.radius1",
13382
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13383
16
                "Specifies the radius", HFILL }
13384
16
        },
13385
16
        { &hf_cigi4_symbol_circle_textured_definition_inner_radius[0],
13386
16
            { "Inner Radius 1 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.inner_radius1",
13387
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13388
16
                "Specifies the inner radius", HFILL }
13389
16
        },
13390
16
        { &hf_cigi4_symbol_circle_textured_definition_start_angle[0],
13391
16
            { "Start Angle 1 (degrees)", "cigi.symbol_circle_textured_def.start_angle1",
13392
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13393
16
                "Specifies the start angle", HFILL }
13394
16
        },
13395
16
        { &hf_cigi4_symbol_circle_textured_definition_end_angle[0],
13396
16
            { "End Angle 1 (degrees)", "cigi.symbol_circle_textured_def.end_angle1",
13397
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13398
16
                "Specifies the end angle", HFILL }
13399
16
        },
13400
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_u[0],
13401
16
            { "Texture Coordinate S at Center Point", "cigi.symbol_circle_textured_def.texture_center_u1",
13402
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13403
16
                "Specifies the normalized S texture coordinate to position the texture relative to the circle’s center", HFILL }
13404
16
        },
13405
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_v[0],
13406
16
            { "Texture Coordinate T at Center Point", "cigi.symbol_circle_textured_def.texture_center_v1",
13407
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13408
16
                "Specifies the normalized T texture coordinate to position the texture relative to the circle’s center", HFILL }
13409
16
        },
13410
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_radius[0],
13411
16
            { "Texture Mapping Radius", "cigi.symbol_circle_textured_def.texture_mapping_radius1",
13412
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13413
16
                "Specifies the extents of the texture that is stretched to cover the circle", HFILL }
13414
16
        },
13415
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_rotation[0],
13416
16
            { "Texture Mapping Rotation", "cigi.symbol_circle_textured_def.texture_mapping_rotation1",
13417
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13418
16
                "Specifies the rotation of the texture relative to the circle’s center", HFILL }
13419
16
        },
13420
16
        { &hf_cigi4_symbol_circle_textured_definition_center_u[1],
13421
16
            { "Center U 2 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_u2",
13422
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13423
16
                "Specifies the u position of the center", HFILL }
13424
16
        },
13425
16
        { &hf_cigi4_symbol_circle_textured_definition_center_v[1],
13426
16
            { "Center V 2 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_v2",
13427
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13428
16
                "Specifies the v position of the center", HFILL }
13429
16
        },
13430
16
        { &hf_cigi4_symbol_circle_textured_definition_radius[1],
13431
16
            { "Radius 2 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.radius2",
13432
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13433
16
                "Specifies the radius", HFILL }
13434
16
        },
13435
16
        { &hf_cigi4_symbol_circle_textured_definition_inner_radius[1],
13436
16
            { "Inner Radius 2 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.inner_radius2",
13437
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13438
16
                "Specifies the inner radius", HFILL }
13439
16
        },
13440
16
        { &hf_cigi4_symbol_circle_textured_definition_start_angle[1],
13441
16
            { "Start Angle 2 (degrees)", "cigi.symbol_circle_textured_def.start_angle2",
13442
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13443
16
                "Specifies the start angle", HFILL }
13444
16
        },
13445
16
        { &hf_cigi4_symbol_circle_textured_definition_end_angle[1],
13446
16
            { "End Angle 2 (degrees)", "cigi.symbol_circle_textured_def.end_angle2",
13447
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13448
16
                "Specifies the end angle", HFILL }
13449
16
        },
13450
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_u[1],
13451
16
            { "Texture Coordinate S at Center Point", "cigi.symbol_circle_textured_def.texture_center_u2",
13452
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13453
16
                "Specifies the normalized S texture coordinate to position the texture relative to the circle’s center", HFILL }
13454
16
        },
13455
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_v[1],
13456
16
            { "Texture Coordinate T at Center Point", "cigi.symbol_circle_textured_def.texture_center_v2",
13457
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13458
16
                "Specifies the normalized T texture coordinate to position the texture relative to the circle’s center", HFILL }
13459
16
        },
13460
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_radius[1],
13461
16
            { "Texture Mapping Radius", "cigi.symbol_circle_textured_def.texture_mapping_radius2",
13462
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13463
16
                "Specifies the extents of the texture that is stretched to cover the circle", HFILL }
13464
16
        },
13465
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_rotation[1],
13466
16
            { "Texture Mapping Rotation", "cigi.symbol_circle_textured_def.texture_mapping_rotation2",
13467
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13468
16
                "Specifies the rotation of the texture relative to the circle’s center", HFILL }
13469
16
        },
13470
16
        { &hf_cigi4_symbol_circle_textured_definition_center_u[2],
13471
16
            { "Center U 3 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_u3",
13472
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13473
16
                "Specifies the u position of the center", HFILL }
13474
16
        },
13475
16
        { &hf_cigi4_symbol_circle_textured_definition_center_v[2],
13476
16
            { "Center V 3 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_v3",
13477
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13478
16
                "Specifies the v position of the center", HFILL }
13479
16
        },
13480
16
        { &hf_cigi4_symbol_circle_textured_definition_radius[2],
13481
16
            { "Radius 3 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.radius3",
13482
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13483
16
                "Specifies the radius", HFILL }
13484
16
        },
13485
16
        { &hf_cigi4_symbol_circle_textured_definition_inner_radius[2],
13486
16
            { "Inner Radius 3 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.inner_radius3",
13487
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13488
16
                "Specifies the inner radius", HFILL }
13489
16
        },
13490
16
        { &hf_cigi4_symbol_circle_textured_definition_start_angle[2],
13491
16
            { "Start Angle 3 (degrees)", "cigi.symbol_circle_textured_def.start_angle3",
13492
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13493
16
                "Specifies the start angle", HFILL }
13494
16
        },
13495
16
        { &hf_cigi4_symbol_circle_textured_definition_end_angle[2],
13496
16
            { "End Angle 3 (degrees)", "cigi.symbol_circle_textured_def.end_angle3",
13497
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13498
16
                "Specifies the end angle", HFILL }
13499
16
        },
13500
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_u[2],
13501
16
            { "Texture Coordinate S at Center Point", "cigi.symbol_circle_textured_def.texture_center_u3",
13502
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13503
16
                "Specifies the normalized S texture coordinate to position the texture relative to the circle’s center", HFILL }
13504
16
        },
13505
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_v[2],
13506
16
            { "Texture Coordinate T at Center Point", "cigi.symbol_circle_textured_def.texture_center_v3",
13507
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13508
16
                "Specifies the normalized T texture coordinate to position the texture relative to the circle’s center", HFILL }
13509
16
        },
13510
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_radius[2],
13511
16
            { "Texture Mapping Radius", "cigi.symbol_circle_textured_def.texture_mapping_radius3",
13512
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13513
16
                "Specifies the extents of the texture that is stretched to cover the circle", HFILL }
13514
16
        },
13515
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_rotation[2],
13516
16
            { "Texture Mapping Rotation", "cigi.symbol_circle_textured_def.texture_mapping_rotation3",
13517
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13518
16
                "Specifies the rotation of the texture relative to the circle’s center", HFILL }
13519
16
        },
13520
16
        { &hf_cigi4_symbol_circle_textured_definition_center_u[3],
13521
16
            { "Center U 4 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_u4",
13522
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13523
16
                "Specifies the u position of the center", HFILL }
13524
16
        },
13525
16
        { &hf_cigi4_symbol_circle_textured_definition_center_v[3],
13526
16
            { "Center V 4 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_v4",
13527
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13528
16
                "Specifies the v position of the center", HFILL }
13529
16
        },
13530
16
        { &hf_cigi4_symbol_circle_textured_definition_radius[3],
13531
16
            { "Radius 4 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.radius4",
13532
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13533
16
                "Specifies the radius", HFILL }
13534
16
        },
13535
16
        { &hf_cigi4_symbol_circle_textured_definition_inner_radius[3],
13536
16
            { "Inner Radius 4 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.inner_radius4",
13537
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13538
16
                "Specifies the inner radius", HFILL }
13539
16
        },
13540
16
        { &hf_cigi4_symbol_circle_textured_definition_start_angle[3],
13541
16
            { "Start Angle 4 (degrees)", "cigi.symbol_circle_textured_def.start_angle4",
13542
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13543
16
                "Specifies the start angle", HFILL }
13544
16
        },
13545
16
        { &hf_cigi4_symbol_circle_textured_definition_end_angle[3],
13546
16
            { "End Angle 4 (degrees)", "cigi.symbol_circle_textured_def.end_angle4",
13547
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13548
16
                "Specifies the end angle", HFILL }
13549
16
        },
13550
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_u[3],
13551
16
            { "Texture Coordinate S at Center Point", "cigi.symbol_circle_textured_def.texture_center_u4",
13552
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13553
16
                "Specifies the normalized S texture coordinate to position the texture relative to the circle’s center", HFILL }
13554
16
        },
13555
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_v[3],
13556
16
            { "Texture Coordinate T at Center Point", "cigi.symbol_circle_textured_def.texture_center_v4",
13557
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13558
16
                "Specifies the normalized T texture coordinate to position the texture relative to the circle’s center", HFILL }
13559
16
        },
13560
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_radius[3],
13561
16
            { "Texture Mapping Radius", "cigi.symbol_circle_textured_def.texture_mapping_radius4",
13562
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13563
16
                "Specifies the extents of the texture that is stretched to cover the circle", HFILL }
13564
16
        },
13565
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_rotation[3],
13566
16
            { "Texture Mapping Rotation", "cigi.symbol_circle_textured_def.texture_mapping_rotation4",
13567
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13568
16
                "Specifies the rotation of the texture relative to the circle’s center", HFILL }
13569
16
        },
13570
16
        { &hf_cigi4_symbol_circle_textured_definition_center_u[4],
13571
16
            { "Center U 5 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_u5",
13572
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13573
16
                "Specifies the u position of the center", HFILL }
13574
16
        },
13575
16
        { &hf_cigi4_symbol_circle_textured_definition_center_v[4],
13576
16
            { "Center V 5 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_v5",
13577
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13578
16
                "Specifies the v position of the center", HFILL }
13579
16
        },
13580
16
        { &hf_cigi4_symbol_circle_textured_definition_radius[4],
13581
16
            { "Radius 5 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.radius5",
13582
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13583
16
                "Specifies the radius", HFILL }
13584
16
        },
13585
16
        { &hf_cigi4_symbol_circle_textured_definition_inner_radius[4],
13586
16
            { "Inner Radius 5 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.inner_radius5",
13587
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13588
16
                "Specifies the inner radius", HFILL }
13589
16
        },
13590
16
        { &hf_cigi4_symbol_circle_textured_definition_start_angle[4],
13591
16
            { "Start Angle 5 (degrees)", "cigi.symbol_circle_textured_def.start_angle5",
13592
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13593
16
                "Specifies the start angle", HFILL }
13594
16
        },
13595
16
        { &hf_cigi4_symbol_circle_textured_definition_end_angle[4],
13596
16
            { "End Angle 5 (degrees)", "cigi.symbol_circle_textured_def.end_angle5",
13597
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13598
16
                "Specifies the end angle", HFILL }
13599
16
        },
13600
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_u[4],
13601
16
            { "Texture Coordinate S at Center Point", "cigi.symbol_circle_textured_def.texture_center_u5",
13602
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13603
16
                "Specifies the normalized S texture coordinate to position the texture relative to the circle’s center", HFILL }
13604
16
        },
13605
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_v[4],
13606
16
            { "Texture Coordinate T at Center Point", "cigi.symbol_circle_textured_def.texture_center_v5",
13607
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13608
16
                "Specifies the normalized T texture coordinate to position the texture relative to the circle’s center", HFILL }
13609
16
        },
13610
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_radius[4],
13611
16
            { "Texture Mapping Radius", "cigi.symbol_circle_textured_def.texture_mapping_radius5",
13612
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13613
16
                "Specifies the extents of the texture that is stretched to cover the circle", HFILL }
13614
16
        },
13615
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_rotation[4],
13616
16
            { "Texture Mapping Rotation", "cigi.symbol_circle_textured_def.texture_mapping_rotation5",
13617
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13618
16
                "Specifies the rotation of the texture relative to the circle’s center", HFILL }
13619
16
        },
13620
16
        { &hf_cigi4_symbol_circle_textured_definition_center_u[5],
13621
16
            { "Center U 6 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_u6",
13622
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13623
16
                "Specifies the u position of the center", HFILL }
13624
16
        },
13625
16
        { &hf_cigi4_symbol_circle_textured_definition_center_v[5],
13626
16
            { "Center V 6 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_v6",
13627
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13628
16
                "Specifies the v position of the center", HFILL }
13629
16
        },
13630
16
        { &hf_cigi4_symbol_circle_textured_definition_radius[5],
13631
16
            { "Radius 6 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.radius6",
13632
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13633
16
                "Specifies the radius", HFILL }
13634
16
        },
13635
16
        { &hf_cigi4_symbol_circle_textured_definition_inner_radius[5],
13636
16
            { "Inner Radius 6 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.inner_radius6",
13637
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13638
16
                "Specifies the inner radius", HFILL }
13639
16
        },
13640
16
        { &hf_cigi4_symbol_circle_textured_definition_start_angle[5],
13641
16
            { "Start Angle 6 (degrees)", "cigi.symbol_circle_textured_def.start_angle6",
13642
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13643
16
                "Specifies the start angle", HFILL }
13644
16
        },
13645
16
        { &hf_cigi4_symbol_circle_textured_definition_end_angle[5],
13646
16
            { "End Angle 6 (degrees)", "cigi.symbol_circle_textured_def.end_angle6",
13647
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13648
16
                "Specifies the end angle", HFILL }
13649
16
        },
13650
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_u[5],
13651
16
            { "Texture Coordinate S at Center Point", "cigi.symbol_circle_textured_def.texture_center_u6",
13652
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13653
16
                "Specifies the normalized S texture coordinate to position the texture relative to the circle’s center", HFILL }
13654
16
        },
13655
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_v[5],
13656
16
            { "Texture Coordinate T at Center Point", "cigi.symbol_circle_textured_def.texture_center_v6",
13657
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13658
16
                "Specifies the normalized T texture coordinate to position the texture relative to the circle’s center", HFILL }
13659
16
        },
13660
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_radius[5],
13661
16
            { "Texture Mapping Radius", "cigi.symbol_circle_textured_def.texture_mapping_radius6",
13662
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13663
16
                "Specifies the extents of the texture that is stretched to cover the circle", HFILL }
13664
16
        },
13665
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_rotation[5],
13666
16
            { "Texture Mapping Rotation", "cigi.symbol_circle_textured_def.texture_mapping_rotation6",
13667
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13668
16
                "Specifies the rotation of the texture relative to the circle’s center", HFILL }
13669
16
        },
13670
16
        { &hf_cigi4_symbol_circle_textured_definition_center_u[6],
13671
16
            { "Center U 7 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_u7",
13672
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13673
16
                "Specifies the u position of the center", HFILL }
13674
16
        },
13675
16
        { &hf_cigi4_symbol_circle_textured_definition_center_v[6],
13676
16
            { "Center V 7 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_v7",
13677
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13678
16
                "Specifies the v position of the center", HFILL }
13679
16
        },
13680
16
        { &hf_cigi4_symbol_circle_textured_definition_radius[6],
13681
16
            { "Radius 7 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.radius7",
13682
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13683
16
                "Specifies the radius", HFILL }
13684
16
        },
13685
16
        { &hf_cigi4_symbol_circle_textured_definition_inner_radius[6],
13686
16
            { "Inner Radius 7 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.inner_radius7",
13687
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13688
16
                "Specifies the inner radius", HFILL }
13689
16
        },
13690
16
        { &hf_cigi4_symbol_circle_textured_definition_start_angle[6],
13691
16
            { "Start Angle 7 (degrees)", "cigi.symbol_circle_textured_def.start_angle7",
13692
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13693
16
                "Specifies the start angle", HFILL }
13694
16
        },
13695
16
        { &hf_cigi4_symbol_circle_textured_definition_end_angle[6],
13696
16
            { "End Angle 7 (degrees)", "cigi.symbol_circle_textured_def.end_angle7",
13697
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13698
16
                "Specifies the end angle", HFILL }
13699
16
        },
13700
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_u[6],
13701
16
            { "Texture Coordinate S at Center Point", "cigi.symbol_circle_textured_def.texture_center_u7",
13702
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13703
16
                "Specifies the normalized S texture coordinate to position the texture relative to the circle’s center", HFILL }
13704
16
        },
13705
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_v[6],
13706
16
            { "Texture Coordinate T at Center Point", "cigi.symbol_circle_textured_def.texture_center_v7",
13707
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13708
16
                "Specifies the normalized T texture coordinate to position the texture relative to the circle’s center", HFILL }
13709
16
        },
13710
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_radius[6],
13711
16
            { "Texture Mapping Radius", "cigi.symbol_circle_textured_def.texture_mapping_radius7",
13712
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13713
16
                "Specifies the extents of the texture that is stretched to cover the circle", HFILL }
13714
16
        },
13715
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_rotation[6],
13716
16
            { "Texture Mapping Rotation", "cigi.symbol_circle_textured_def.texture_mapping_rotation7",
13717
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13718
16
                "Specifies the rotation of the texture relative to the circle’s center", HFILL }
13719
16
        },
13720
16
        { &hf_cigi4_symbol_circle_textured_definition_center_u[7],
13721
16
            { "Center U 8 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_u8",
13722
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13723
16
                "Specifies the u position of the center", HFILL }
13724
16
        },
13725
16
        { &hf_cigi4_symbol_circle_textured_definition_center_v[7],
13726
16
            { "Center V 8 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_v8",
13727
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13728
16
                "Specifies the v position of the center", HFILL }
13729
16
        },
13730
16
        { &hf_cigi4_symbol_circle_textured_definition_radius[7],
13731
16
            { "Radius 8 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.radius8",
13732
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13733
16
                "Specifies the radius", HFILL }
13734
16
        },
13735
16
        { &hf_cigi4_symbol_circle_textured_definition_inner_radius[7],
13736
16
            { "Inner Radius 8 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.inner_radius8",
13737
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13738
16
                "Specifies the inner radius", HFILL }
13739
16
        },
13740
16
        { &hf_cigi4_symbol_circle_textured_definition_start_angle[7],
13741
16
            { "Start Angle 8 (degrees)", "cigi.symbol_circle_textured_def.start_angle8",
13742
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13743
16
                "Specifies the start angle", HFILL }
13744
16
        },
13745
16
        { &hf_cigi4_symbol_circle_textured_definition_end_angle[7],
13746
16
            { "End Angle 8 (degrees)", "cigi.symbol_circle_textured_def.end_angle8",
13747
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13748
16
                "Specifies the end angle", HFILL }
13749
16
        },
13750
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_u[7],
13751
16
            { "Texture Coordinate S at Center Point", "cigi.symbol_circle_textured_def.texture_center_u8",
13752
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13753
16
                "Specifies the normalized S texture coordinate to position the texture relative to the circle’s center", HFILL }
13754
16
        },
13755
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_v[7],
13756
16
            { "Texture Coordinate T at Center Point", "cigi.symbol_circle_textured_def.texture_center_v8",
13757
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13758
16
                "Specifies the normalized T texture coordinate to position the texture relative to the circle’s center", HFILL }
13759
16
        },
13760
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_radius[7],
13761
16
            { "Texture Mapping Radius", "cigi.symbol_circle_textured_def.texture_mapping_radius8",
13762
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13763
16
                "Specifies the extents of the texture that is stretched to cover the circle", HFILL }
13764
16
        },
13765
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_rotation[7],
13766
16
            { "Texture Mapping Rotation", "cigi.symbol_circle_textured_def.texture_mapping_rotation8",
13767
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13768
16
                "Specifies the rotation of the texture relative to the circle’s center", HFILL }
13769
16
        },
13770
16
        { &hf_cigi4_symbol_circle_textured_definition_center_u[8],
13771
16
            { "Center U 9 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_u9",
13772
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13773
16
                "Specifies the u position of the center", HFILL }
13774
16
        },
13775
16
        { &hf_cigi4_symbol_circle_textured_definition_center_v[8],
13776
16
            { "Center V 9 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.center_v9",
13777
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13778
16
                "Specifies the v position of the center", HFILL }
13779
16
        },
13780
16
        { &hf_cigi4_symbol_circle_textured_definition_radius[8],
13781
16
            { "Radius 9 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.radius9",
13782
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13783
16
                "Specifies the radius", HFILL }
13784
16
        },
13785
16
        { &hf_cigi4_symbol_circle_textured_definition_inner_radius[8],
13786
16
            { "Inner Radius 9 (scaled symbol surface units)", "cigi.symbol_circle_textured_def.inner_radius9",
13787
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13788
16
                "Specifies the inner radius", HFILL }
13789
16
        },
13790
16
        { &hf_cigi4_symbol_circle_textured_definition_start_angle[8],
13791
16
            { "Start Angle 9 (degrees)", "cigi.symbol_circle_textured_def.start_angle9",
13792
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13793
16
                "Specifies the start angle", HFILL }
13794
16
        },
13795
16
        { &hf_cigi4_symbol_circle_textured_definition_end_angle[8],
13796
16
            { "End Angle 9 (degrees)", "cigi.symbol_circle_textured_def.end_angle9",
13797
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13798
16
                "Specifies the end angle", HFILL }
13799
16
        },
13800
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_u[8],
13801
16
            { "Texture Coordinate S at Center Point", "cigi.symbol_circle_textured_def.texture_center_u9",
13802
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13803
16
                "Specifies the normalized S texture coordinate to position the texture relative to the circle’s center", HFILL }
13804
16
        },
13805
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_center_v[8],
13806
16
            { "Texture Coordinate T at Center Point", "cigi.symbol_circle_textured_def.texture_center_v9",
13807
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13808
16
                "Specifies the normalized T texture coordinate to position the texture relative to the circle’s center", HFILL }
13809
16
        },
13810
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_radius[8],
13811
16
            { "Texture Mapping Radius", "cigi.symbol_circle_textured_def.texture_mapping_radius9",
13812
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13813
16
                "Specifies the extents of the texture that is stretched to cover the circle", HFILL }
13814
16
        },
13815
16
        { &hf_cigi4_symbol_circle_textured_definition_texture_rotation[8],
13816
16
            { "Texture Mapping Rotation", "cigi.symbol_circle_textured_def.texture_mapping_rotation9",
13817
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13818
16
                "Specifies the rotation of the texture relative to the circle’s center", HFILL }
13819
16
        },
13820
13821
        /* CIGI4 Symbol Polygon Textured Definition */
13822
16
        { &hf_cigi4_symbol_polygon_textured_definition,
13823
16
            { "Symbol Textured Polygon Definition", "cigi.symbol_polygon_textured_def",
13824
16
                FT_NONE, BASE_NONE, NULL, 0x0,
13825
16
                "Symbol Circle Definition Packet", HFILL }
13826
16
        },
13827
16
        { &hf_cigi4_symbol_polygon_textured_definition_symbol_id,
13828
16
            { "Symbol ID", "cigi.symbol_polygon_textured_def.symbol_id",
13829
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
13830
16
                "Specifies the identifier of the symbol that is being defined", HFILL }
13831
16
        },
13832
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_id,
13833
16
            { "Texture ID", "cigi.symbol_polygon_textured_def.texture_id",
13834
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
13835
16
                "Specifies the identifier of the texture that is being applied", HFILL }
13836
16
        },
13837
16
        { &hf_cigi4_symbol_polygon_textured_definition_filter_mode,
13838
16
            { "Filter Mode", "cigi.symbol_polygon_textured_def.filter_mode",
13839
16
                FT_BOOLEAN, 8, NULL, 0x01,
13840
16
                "Specifies the type of texture filtering/interpolation applied to the symbol", HFILL }
13841
16
        },
13842
16
        { &hf_cigi4_symbol_polygon_textured_definition_wrap,
13843
16
            { "Line Width (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.wrap",
13844
16
                FT_BOOLEAN, 8, NULL, 0x02,
13845
16
                "Specifies whether texture coordinates are to be wrapped or clamped when applied to the symbol", HFILL }
13846
16
        },
13847
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertices,
13848
16
            { "Vertices", "cigi.symbol_polygon_textured_def.vertices",
13849
16
                FT_NONE, BASE_NONE, NULL, 0x0,
13850
16
                NULL, HFILL }
13851
16
        },
13852
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[0],
13853
16
            { "Vertex U 1 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u1",
13854
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13855
16
                "Specifies the u position of the vertex", HFILL }
13856
16
        },
13857
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[0],
13858
16
            { "Vertex V 1 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v1",
13859
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13860
16
                "Specifies the v position of the vertex", HFILL }
13861
16
        },
13862
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[0],
13863
16
            { "Center U 1 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u1",
13864
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13865
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
13866
16
        },
13867
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[0],
13868
16
            { "Center V 1 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v1",
13869
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13870
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
13871
16
        },
13872
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[1],
13873
16
            { "Vertex U 2 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u2",
13874
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13875
16
                "Specifies the u position of the vertex", HFILL }
13876
16
        },
13877
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[1],
13878
16
            { "Vertex V 2 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v2",
13879
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13880
16
                "Specifies the v position of the vertex", HFILL }
13881
16
        },
13882
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[1],
13883
16
            { "Center U 2 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u2",
13884
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13885
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
13886
16
        },
13887
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[1],
13888
16
            { "Center V 2 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v2",
13889
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13890
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
13891
16
        },
13892
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[2],
13893
16
            { "Vertex U 3 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u3",
13894
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13895
16
                "Specifies the u position of the vertex", HFILL }
13896
16
        },
13897
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[2],
13898
16
            { "Vertex V 3 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v3",
13899
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13900
16
                "Specifies the v position of the vertex", HFILL }
13901
16
        },
13902
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[2],
13903
16
            { "Center U 3 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u3",
13904
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13905
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
13906
16
        },
13907
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[2],
13908
16
            { "Center V 3 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v3",
13909
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13910
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
13911
16
        },
13912
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[3],
13913
16
            { "Vertex U 4 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u4",
13914
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13915
16
                "Specifies the u position of the vertex", HFILL }
13916
16
        },
13917
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[3],
13918
16
            { "Vertex V 4 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v4",
13919
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13920
16
                "Specifies the v position of the vertex", HFILL }
13921
16
        },
13922
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[3],
13923
16
            { "Center U 4 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u4",
13924
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13925
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
13926
16
        },
13927
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[3],
13928
16
            { "Center V 4 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v4",
13929
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13930
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
13931
16
        },
13932
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[4],
13933
16
            { "Vertex U 5 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u5",
13934
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13935
16
                "Specifies the u position of the vertex", HFILL }
13936
16
        },
13937
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[4],
13938
16
            { "Vertex V 5 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v5",
13939
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13940
16
                "Specifies the v position of the vertex", HFILL }
13941
16
        },
13942
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[4],
13943
16
            { "Center U 5 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u5",
13944
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13945
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
13946
16
        },
13947
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[4],
13948
16
            { "Center V 5 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v5",
13949
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13950
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
13951
16
        },
13952
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[5],
13953
16
            { "Vertex U 6 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u6",
13954
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13955
16
                "Specifies the u position of the vertex", HFILL }
13956
16
        },
13957
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[5],
13958
16
            { "Vertex V 6 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v6",
13959
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13960
16
                "Specifies the v position of the vertex", HFILL }
13961
16
        },
13962
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[5],
13963
16
            { "Center U 6 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u6",
13964
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13965
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
13966
16
        },
13967
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[5],
13968
16
            { "Center V 6 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v6",
13969
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13970
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
13971
16
        },
13972
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[6],
13973
16
            { "Vertex U 7 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u7",
13974
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13975
16
                "Specifies the u position of the vertex", HFILL }
13976
16
        },
13977
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[6],
13978
16
            { "Vertex V 7 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v7",
13979
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13980
16
                "Specifies the v position of the vertex", HFILL }
13981
16
        },
13982
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[6],
13983
16
            { "Center U 7 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u7",
13984
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13985
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
13986
16
        },
13987
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[6],
13988
16
            { "Center V 7 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v7",
13989
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13990
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
13991
16
        },
13992
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[7],
13993
16
            { "Vertex U 8 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u8",
13994
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
13995
16
                "Specifies the u position of the vertex", HFILL }
13996
16
        },
13997
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[7],
13998
16
            { "Vertex V 8 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v8",
13999
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14000
16
                "Specifies the v position of the vertex", HFILL }
14001
16
        },
14002
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[7],
14003
16
            { "Center U 8 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u8",
14004
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14005
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14006
16
        },
14007
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[7],
14008
16
            { "Center V 8 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v8",
14009
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14010
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14011
16
        },
14012
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[8],
14013
16
            { "Vertex U 9 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u9",
14014
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14015
16
                "Specifies the u position of the vertex", HFILL }
14016
16
        },
14017
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[8],
14018
16
            { "Vertex V 9 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v9",
14019
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14020
16
                "Specifies the v position of the vertex", HFILL }
14021
16
        },
14022
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[8],
14023
16
            { "Center U 9 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u9",
14024
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14025
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14026
16
        },
14027
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[8],
14028
16
            { "Center V 9 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v9",
14029
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14030
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14031
16
        },
14032
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[9],
14033
16
            { "Vertex U 10 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u10",
14034
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14035
16
                "Specifies the u position of the vertex", HFILL }
14036
16
        },
14037
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[9],
14038
16
            { "Vertex V 10 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v10",
14039
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14040
16
                "Specifies the v position of the vertex", HFILL }
14041
16
        },
14042
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[9],
14043
16
            { "Center U 10 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u10",
14044
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14045
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14046
16
        },
14047
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[9],
14048
16
            { "Center V 10 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v10",
14049
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14050
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14051
16
        },
14052
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[10],
14053
16
            { "Vertex U 11 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u11",
14054
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14055
16
                "Specifies the u position of the vertex", HFILL }
14056
16
        },
14057
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[10],
14058
16
            { "Vertex V 11 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v11",
14059
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14060
16
                "Specifies the v position of the vertex", HFILL }
14061
16
        },
14062
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[10],
14063
16
            { "Center U 11 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u11",
14064
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14065
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14066
16
        },
14067
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[10],
14068
16
            { "Center V 11 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v11",
14069
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14070
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14071
16
        },
14072
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[11],
14073
16
            { "Vertex U 12 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u12",
14074
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14075
16
                "Specifies the u position of the vertex", HFILL }
14076
16
        },
14077
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[11],
14078
16
            { "Vertex V 12 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v12",
14079
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14080
16
                "Specifies the v position of the vertex", HFILL }
14081
16
        },
14082
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[11],
14083
16
            { "Center U 12 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u12",
14084
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14085
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14086
16
        },
14087
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[11],
14088
16
            { "Center V 12 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v12",
14089
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14090
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14091
16
        },
14092
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[12],
14093
16
            { "Vertex U 13 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u13",
14094
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14095
16
                "Specifies the u position of the vertex", HFILL }
14096
16
        },
14097
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[12],
14098
16
            { "Vertex V 13 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v13",
14099
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14100
16
                "Specifies the v position of the vertex", HFILL }
14101
16
        },
14102
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[12],
14103
16
            { "Center U 13 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u13",
14104
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14105
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14106
16
        },
14107
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[12],
14108
16
            { "Center V 13 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v13",
14109
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14110
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14111
16
        },
14112
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[13],
14113
16
            { "Vertex U 14 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u14",
14114
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14115
16
                "Specifies the u position of the vertex", HFILL }
14116
16
        },
14117
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[13],
14118
16
            { "Vertex V 14 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v14",
14119
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14120
16
                "Specifies the v position of the vertex", HFILL }
14121
16
        },
14122
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[13],
14123
16
            { "Center U 14 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u14",
14124
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14125
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14126
16
        },
14127
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[13],
14128
16
            { "Center V 14 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v14",
14129
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14130
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14131
16
        },
14132
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[14],
14133
16
            { "Vertex U 15 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u15",
14134
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14135
16
                "Specifies the u position of the vertex", HFILL }
14136
16
        },
14137
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[14],
14138
16
            { "Vertex V 15 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v15",
14139
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14140
16
                "Specifies the v position of the vertex", HFILL }
14141
16
        },
14142
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[14],
14143
16
            { "Center U 15 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u15",
14144
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14145
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14146
16
        },
14147
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[14],
14148
16
            { "Center V 15 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v15",
14149
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14150
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14151
16
        },
14152
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[15],
14153
16
            { "Vertex U 16 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u16",
14154
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14155
16
                "Specifies the u position of the vertex", HFILL }
14156
16
        },
14157
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[15],
14158
16
            { "Vertex V 16 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v16",
14159
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14160
16
                "Specifies the v position of the vertex", HFILL }
14161
16
        },
14162
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[15],
14163
16
            { "Center U 16 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u16",
14164
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14165
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14166
16
        },
14167
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[15],
14168
16
            { "Center V 16 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v16",
14169
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14170
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14171
16
        },
14172
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[16],
14173
16
            { "Vertex U 17 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u17",
14174
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14175
16
                "Specifies the u position of the vertex", HFILL }
14176
16
        },
14177
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[16],
14178
16
            { "Vertex V 17 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v17",
14179
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14180
16
                "Specifies the v position of the vertex", HFILL }
14181
16
        },
14182
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[16],
14183
16
            { "Center U 17 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u17",
14184
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14185
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14186
16
        },
14187
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[16],
14188
16
            { "Center V 17 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v17",
14189
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14190
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14191
16
        },
14192
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[17],
14193
16
            { "Vertex U 18 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u18",
14194
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14195
16
                "Specifies the u position of the vertex", HFILL }
14196
16
        },
14197
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[17],
14198
16
            { "Vertex V 18 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v18",
14199
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14200
16
                "Specifies the v position of the vertex", HFILL }
14201
16
        },
14202
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[17],
14203
16
            { "Center U 18 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u18",
14204
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14205
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14206
16
        },
14207
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[17],
14208
16
            { "Center V 18 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v18",
14209
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14210
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14211
16
        },
14212
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[18],
14213
16
            { "Vertex U 19 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u19",
14214
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14215
16
                "Specifies the u position of the vertex", HFILL }
14216
16
        },
14217
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[18],
14218
16
            { "Vertex V 19 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v19",
14219
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14220
16
                "Specifies the v position of the vertex", HFILL }
14221
16
        },
14222
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[18],
14223
16
            { "Center U 19 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u19",
14224
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14225
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14226
16
        },
14227
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[18],
14228
16
            { "Center V 19 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v19",
14229
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14230
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14231
16
        },
14232
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[19],
14233
16
            { "Vertex U 20 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u20",
14234
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14235
16
                "Specifies the u position of the vertex", HFILL }
14236
16
        },
14237
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[19],
14238
16
            { "Vertex V 20 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v20",
14239
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14240
16
                "Specifies the v position of the vertex", HFILL }
14241
16
        },
14242
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[19],
14243
16
            { "Center U 1 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u20",
14244
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14245
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14246
16
        },
14247
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[19],
14248
16
            { "Center V 1 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v20",
14249
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14250
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14251
16
        },
14252
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[20],
14253
16
            { "Vertex U 21 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u21",
14254
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14255
16
                "Specifies the u position of the vertex", HFILL }
14256
16
        },
14257
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[20],
14258
16
            { "Vertex V 21 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v21",
14259
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14260
16
                "Specifies the v position of the vertex", HFILL }
14261
16
        },
14262
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[20],
14263
16
            { "Center U 21 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u21",
14264
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14265
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14266
16
        },
14267
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[20],
14268
16
            { "Center V 21 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v21",
14269
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14270
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14271
16
        },
14272
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[21],
14273
16
            { "Vertex U 22 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u22",
14274
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14275
16
                "Specifies the u position of the vertex", HFILL }
14276
16
        },
14277
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[21],
14278
16
            { "Vertex V 22 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v22",
14279
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14280
16
                "Specifies the v position of the vertex", HFILL }
14281
16
        },
14282
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[21],
14283
16
            { "Center U 22 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u22",
14284
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14285
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14286
16
        },
14287
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[21],
14288
16
            { "Center V 22 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v22",
14289
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14290
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14291
16
        },
14292
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[22],
14293
16
            { "Vertex U 23 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u23",
14294
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14295
16
                "Specifies the u position of the vertex", HFILL }
14296
16
        },
14297
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[22],
14298
16
            { "Vertex V 23 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v23",
14299
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14300
16
                "Specifies the v position of the vertex", HFILL }
14301
16
        },
14302
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[22],
14303
16
            { "Center U 23 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u23",
14304
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14305
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14306
16
        },
14307
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[22],
14308
16
            { "Center V 23 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v23",
14309
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14310
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14311
16
        },
14312
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[23],
14313
16
            { "Vertex U 24 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u24",
14314
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14315
16
                "Specifies the u position of the vertex", HFILL }
14316
16
        },
14317
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[23],
14318
16
            { "Vertex V 24 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v24",
14319
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14320
16
                "Specifies the v position of the vertex", HFILL }
14321
16
        },
14322
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[23],
14323
16
            { "Center U 24 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u24",
14324
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14325
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14326
16
        },
14327
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[23],
14328
16
            { "Center V 24 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v24",
14329
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14330
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14331
16
        },
14332
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[24],
14333
16
            { "Vertex U 25 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u25",
14334
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14335
16
                "Specifies the u position of the vertex", HFILL }
14336
16
        },
14337
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[24],
14338
16
            { "Vertex V 25 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v25",
14339
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14340
16
                "Specifies the v position of the vertex", HFILL }
14341
16
        },
14342
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[24],
14343
16
            { "Center U 25 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u25",
14344
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14345
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14346
16
        },
14347
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[24],
14348
16
            { "Center V 25 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v25",
14349
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14350
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14351
16
        },
14352
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[25],
14353
16
            { "Vertex U 26 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u26",
14354
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14355
16
                "Specifies the u position of the vertex", HFILL }
14356
16
        },
14357
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[25],
14358
16
            { "Vertex V 26 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v26",
14359
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14360
16
                "Specifies the v position of the vertex", HFILL }
14361
16
        },
14362
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[25],
14363
16
            { "Center U 26 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u26",
14364
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14365
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14366
16
        },
14367
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[25],
14368
16
            { "Center V 26 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v26",
14369
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14370
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14371
16
        },
14372
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[26],
14373
16
            { "Vertex U 27 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u27",
14374
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14375
16
                "Specifies the u position of the vertex", HFILL }
14376
16
        },
14377
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[26],
14378
16
            { "Vertex V 27 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v27",
14379
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14380
16
                "Specifies the v position of the vertex", HFILL }
14381
16
        },
14382
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[26],
14383
16
            { "Center U 27 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u27",
14384
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14385
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14386
16
        },
14387
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[26],
14388
16
            { "Center V 27 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v27",
14389
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14390
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14391
16
        },
14392
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[27],
14393
16
            { "Vertex U 28 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u28",
14394
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14395
16
                "Specifies the u position of the vertex", HFILL }
14396
16
        },
14397
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[27],
14398
16
            { "Vertex V 28 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v28",
14399
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14400
16
                "Specifies the v position of the vertex", HFILL }
14401
16
        },
14402
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[27],
14403
16
            { "Center U 28 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u28",
14404
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14405
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14406
16
        },
14407
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[27],
14408
16
            { "Center V 28 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v28",
14409
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14410
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14411
16
        },
14412
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_u[28],
14413
16
            { "Vertex U 29 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_u29",
14414
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14415
16
                "Specifies the u position of the vertex", HFILL }
14416
16
        },
14417
16
        { &hf_cigi4_symbol_polygon_textured_definition_vertex_v[28],
14418
16
            { "Vertex V 29 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.vertex_v29",
14419
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14420
16
                "Specifies the v position of the vertex", HFILL }
14421
16
        },
14422
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_u[28],
14423
16
            { "Center U 29 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_u29",
14424
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14425
16
                "Specifies the normalized S texture coordinate to position the texture relative to the associated vertex", HFILL }
14426
16
        },
14427
16
        { &hf_cigi4_symbol_polygon_textured_definition_texture_center_v[28],
14428
16
            { "Center V 29 (scaled symbol surface units)", "cigi.symbol_polygon_textured_def.center_v29",
14429
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14430
16
                "Specifies the normalized T texture coordinate to position the texture relative to the associated vertex", HFILL }
14431
16
        },
14432
14433
        /* CIGI2 Start of Frame */
14434
16
        { &hf_cigi2_start_of_frame,
14435
16
            { "Start of Frame", "cigi.sof",
14436
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14437
16
                "Start of Frame Packet", HFILL }
14438
16
        },
14439
16
        { &hf_cigi2_start_of_frame_db_number,
14440
16
            { "Database Number", "cigi.sof.db_number",
14441
16
                FT_INT8, BASE_DEC, NULL, 0x0,
14442
16
                "Indicates load status of the requested database", HFILL }
14443
16
        },
14444
16
        { &hf_cigi2_start_of_frame_ig_status_code,
14445
16
            { "IG Status Code", "cigi.sof.ig_status_code",
14446
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
14447
16
                "Indicates the operational status of the IG", HFILL }
14448
16
        },
14449
16
        { &hf_cigi2_start_of_frame_ig_mode,
14450
16
            { "IG Mode", "cigi.sof.ig_mode",
14451
16
                FT_UINT8, BASE_DEC, VALS(cigi2_start_of_frame_ig_mode_vals), 0xc0,
14452
16
                "Identifies to the host the current operating mode of the IG", HFILL }
14453
16
        },
14454
16
        { &hf_cigi2_start_of_frame_frame_ctr,
14455
16
            { "IG to Host Frame Counter", "cigi.sof.frame_ctr",
14456
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
14457
16
                "Contains a number representing a particular frame", HFILL }
14458
16
        },
14459
16
        { &hf_cigi2_start_of_frame_time_tag,
14460
16
            { "Timing Value (microseconds)", "cigi.sof.time_tag",
14461
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14462
16
                "Contains a timing value that is used to time-tag the ethernet message during asynchronous operation", HFILL }
14463
16
        },
14464
14465
        /* CIGI3 Start of Frame */
14466
16
        { &hf_cigi3_start_of_frame,
14467
16
            { "Start of Frame", "cigi.sof",
14468
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14469
16
                "Start of Frame Packet", HFILL }
14470
16
        },
14471
16
        { &hf_cigi3_start_of_frame_db_number,
14472
16
            { "Database Number", "cigi.sof.db_number",
14473
16
                FT_INT8, BASE_DEC, NULL, 0x0,
14474
16
                "Indicates to the Host which database is currently in use and if that database is being loaded into primary memory", HFILL }
14475
16
        },
14476
16
        { &hf_cigi3_start_of_frame_ig_status,
14477
16
            { "IG Status Code", "cigi.sof.ig_status",
14478
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
14479
16
                "Indicates the error status of the IG", HFILL }
14480
16
        },
14481
16
        { &hf_cigi3_start_of_frame_ig_mode,
14482
16
            { "IG Mode", "cigi.sof.ig_mode",
14483
16
                FT_UINT8, BASE_DEC, VALS(cigi3_start_of_frame_ig_mode_vals), 0x03,
14484
16
                "Indicates the current IG mode", HFILL }
14485
16
        },
14486
16
        { &hf_cigi3_start_of_frame_timestamp_valid,
14487
16
            { "Timestamp Valid", "cigi.sof.timestamp_valid",
14488
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x04,
14489
16
                "Indicates whether the Timestamp parameter contains a valid value", HFILL }
14490
16
        },
14491
16
        { &hf_cigi3_start_of_frame_earth_reference_model,
14492
16
            { "Earth Reference Model", "cigi.sof.earth_reference_model",
14493
16
                FT_BOOLEAN, 8, TFS(&cigi3_start_of_frame_earth_reference_model_tfs), 0x08,
14494
16
                "Indicates whether the IG is using a custom Earth Reference Model or the default WGS 84 reference ellipsoid for coordinate conversion calculations", HFILL }
14495
16
        },
14496
16
        { &hf_cigi3_start_of_frame_frame_ctr,
14497
16
            { "Frame Counter", "cigi.sof.frame_ctr",
14498
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
14499
16
                "Contains a number that identifies the frame", HFILL }
14500
16
        },
14501
16
        { &hf_cigi3_start_of_frame_timestamp,
14502
16
            { "Timestamp (microseconds)", "cigi.sof.timestamp",
14503
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
14504
16
                "Indicates the number of 10 microsecond \"ticks\" since some initial reference time", HFILL }
14505
16
        },
14506
14507
        /* CIGI3_2 Start of Frame */
14508
16
        { &hf_cigi3_2_start_of_frame,
14509
16
            { "Start of Frame", "cigi.sof",
14510
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14511
16
                "Start of Frame Packet", HFILL }
14512
16
        },
14513
16
        { &hf_cigi3_2_start_of_frame_minor_version,
14514
16
            { "Minor Version", "cigi.sof.minor_version",
14515
16
                FT_UINT8, BASE_DEC, NULL, 0xF0,
14516
16
                "Indicates the minor version of the CIGI interface", HFILL }
14517
16
        },
14518
16
        { &hf_cigi3_2_start_of_frame_ig_frame_number,
14519
16
            { "IG Frame Number", "cigi.sof.ig_frame_number",
14520
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
14521
16
                "Uniquely identifies the IG data frame", HFILL }
14522
16
        },
14523
16
        { &hf_cigi3_2_start_of_frame_last_host_frame_number,
14524
16
            { "Last Host Frame Number", "cigi.sof.last_host_frame_number",
14525
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
14526
16
                "Contains the value of the Host Frame parameter in the last IG Control packet received from the Host.", HFILL }
14527
16
        },
14528
14529
        /* CIGI4 Start of Frame */
14530
16
        { &hf_cigi4_start_of_frame,
14531
16
            { "Start of Frame", "cigi.sof",
14532
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14533
16
                "Start of Frame Packet", HFILL }
14534
16
        },
14535
16
        { &hf_cigi4_start_of_frame_db_number,
14536
16
            { "Database Number", "cigi.sof.db_number",
14537
16
                FT_INT8, BASE_DEC, NULL, 0x0,
14538
16
                "Indicates to the Host which database is currently in use and if that database is being loaded into primary memory", HFILL }
14539
16
        },
14540
16
        { &hf_cigi4_start_of_frame_ig_status,
14541
16
            { "IG Status Code", "cigi.sof.ig_status",
14542
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
14543
16
                "Indicates the error status of the IG", HFILL }
14544
16
        },
14545
16
        { &hf_cigi4_start_of_frame_minor_version,
14546
16
            { "Minor Version", "cigi.sof.minor_version",
14547
16
                FT_UINT8, BASE_DEC, NULL, 0xF0,
14548
16
                "Indicates the minor version of the CIGI interface", HFILL }
14549
16
        },
14550
16
        { &hf_cigi4_start_of_frame_flags,
14551
16
            { "Flags", "cigi.sof.flags",
14552
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
14553
16
                NULL, HFILL }
14554
16
        },
14555
16
        { &hf_cigi4_start_of_frame_ig_mode,
14556
16
            { "IG Mode", "cigi.sof.ig_mode",
14557
16
                FT_UINT8, BASE_DEC, VALS(cigi3_start_of_frame_ig_mode_vals), 0x03,
14558
16
                "Indicates the current IG mode", HFILL }
14559
16
        },
14560
16
        { &hf_cigi4_start_of_frame_timestamp_valid,
14561
16
            { "Timestamp Valid", "cigi.sof.timestamp_valid",
14562
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x04,
14563
16
                "Indicates whether the Timestamp parameter contains a valid value", HFILL }
14564
16
        },
14565
16
        { &hf_cigi4_start_of_frame_earth_reference_model,
14566
16
            { "Earth Reference Model", "cigi.sof.earth_reference_model",
14567
16
                FT_BOOLEAN, 8, TFS(&cigi3_start_of_frame_earth_reference_model_tfs), 0x08,
14568
16
                "Indicates whether the IG is using a custom Earth Reference Model or the default WGS 84 reference ellipsoid for coordinate conversion calculations", HFILL }
14569
16
        },
14570
16
        { &hf_cigi4_start_of_frame_ig_frame_number,
14571
16
            { "IG Frame Number", "cigi.sof.ig_frame_number",
14572
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
14573
16
                "Uniquely identifies the IG data frame", HFILL }
14574
16
        },
14575
16
        { &hf_cigi4_start_of_frame_timestamp,
14576
16
            { "Timestamp (microseconds)", "cigi.sof.timestamp",
14577
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
14578
16
                "Indicates the number of 10 microsecond \"ticks\" since some initial reference time", HFILL }
14579
16
        },
14580
16
        { &hf_cigi4_start_of_frame_last_host_frame_number,
14581
16
            { "Last Host Frame Number", "cigi.sof.last_host_frame_number",
14582
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
14583
16
                "Contains the value of the Host Frame parameter in the last IG Control packet received from the Host.", HFILL }
14584
16
        },
14585
16
        { &hf_cigi4_start_of_frame_ig_condition_flags,
14586
16
            { "IG Condition Flags", "cigi.sof.ig_condition_flags",
14587
16
                FT_UINT16, BASE_HEX, NULL, 0x0,
14588
16
                NULL, HFILL }
14589
16
        },
14590
16
        { &hf_cigi4_start_of_frame_condition_overframing,
14591
16
            { "Overframing", "cigi.sof.overframing",
14592
16
                FT_BOOLEAN, 8, NULL, 0x01,
14593
16
                "The IG shall set this parameter to one (1) when the overframing condition is detected", HFILL }
14594
16
        },
14595
16
        { &hf_cigi4_start_of_frame_condition_paging,
14596
16
            { "Paging", "cigi.sof.paging",
14597
16
                FT_BOOLEAN, 8, NULL, 0x02,
14598
16
                "The IG shall set this parameter to one (1) when the paging condition is present", HFILL }
14599
16
        },
14600
16
        { &hf_cigi4_start_of_frame_condition_excessive_variable_length_data,
14601
16
            { "Excessive Variable Length Data", "cigi.sof.excessive_variable_length_data",
14602
16
                FT_BOOLEAN, 8, NULL, 0x04,
14603
16
                "The IG shall set this parameter to one (1) when the excessive variable length data condition is detected", HFILL }
14604
16
        },
14605
14606
        /* CIGI2 Height Above Terrain Response */
14607
16
        { &hf_cigi2_height_above_terrain_response,
14608
16
            { "Height Above Terrain Response", "cigi.hat_response",
14609
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14610
16
                "Height Above Terrain Response Packet", HFILL }
14611
16
        },
14612
16
        { &hf_cigi2_height_above_terrain_response_hat_id,
14613
16
            { "HAT ID", "cigi.hat_response.hat_id",
14614
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
14615
16
                "Identifies the HAT response", HFILL }
14616
16
        },
14617
16
        { &hf_cigi2_height_above_terrain_response_valid,
14618
16
            { "Valid", "cigi.hat_response.valid",
14619
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x80,
14620
16
                "Indicates whether the response is valid or invalid", HFILL }
14621
16
        },
14622
16
        { &hf_cigi2_height_above_terrain_response_material_type,
14623
16
            { "Material Type", "cigi.hat_response.material_type",
14624
16
                FT_INT32, BASE_DEC, NULL, 0x0,
14625
16
                "Specifies the material type of the object intersected by the HAT test vector", HFILL }
14626
16
        },
14627
16
        { &hf_cigi2_height_above_terrain_response_alt,
14628
16
            { "Altitude (m)", "cigi.hat_response.alt",
14629
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14630
16
                "Represents the altitude above or below the terrain for the position requested", HFILL }
14631
16
        },
14632
14633
        /* CIGI3 HAT/HOT Response */
14634
16
        { &hf_cigi3_hat_hot_response,
14635
16
            { "HAT/HOT Response", "cigi.hat_hot_response",
14636
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14637
16
                "HAT/HOT Response Packet", HFILL }
14638
16
        },
14639
16
        { &hf_cigi3_hat_hot_response_hat_hot_id,
14640
16
            { "HAT/HOT ID", "cigi.hat_hot_response.hat_hot_id",
14641
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
14642
16
                "Identifies the HAT or HOT response", HFILL }
14643
16
        },
14644
16
        { &hf_cigi3_hat_hot_response_valid,
14645
16
            { "Valid", "cigi.hat_hot_response.valid",
14646
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x01,
14647
16
                "Indicates whether the Height parameter contains a valid number", HFILL }
14648
16
        },
14649
16
        { &hf_cigi3_hat_hot_response_type,
14650
16
            { "Response Type", "cigi.hat_hot_response.type",
14651
16
                FT_BOOLEAN, 8, TFS(&cigi3_hat_hot_response_type_tfs), 0x02,
14652
16
                "Indicates whether the Height parameter represent Height Above Terrain or Height Of Terrain", HFILL }
14653
16
        },
14654
16
        { &hf_cigi3_hat_hot_response_height,
14655
16
            { "Height", "cigi.hat_hot_response.height",
14656
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14657
16
                "Contains the requested height", HFILL }
14658
16
        },
14659
14660
        /* CIGI3_2 HAT/HOT Response */
14661
16
        { &hf_cigi3_2_hat_hot_response_host_frame_number_lsn,
14662
16
            { "Host Frame Number LSN", "cigi.hat_hot_response.host_frame_number_lsn",
14663
16
                FT_UINT8, BASE_DEC, NULL, 0xf0,
14664
16
                "Least significant nibble of the host frame number parameter of the last IG Control packet received before the HAT or HOT is calculated", HFILL }
14665
16
        },
14666
14667
        /* CIGI4 HAT/HOT Response */
14668
16
        { &hf_cigi4_hat_hot_response_flags,
14669
16
            { "Request Flags", "cigi.hat_hot_response.flags",
14670
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
14671
16
                NULL, HFILL }
14672
16
        },
14673
14674
        /* CIGI3 HAT/HOT Extended Response */
14675
16
        { &hf_cigi3_hat_hot_extended_response,
14676
16
            { "HAT/HOT Extended Response", "cigi.hat_hot_ext_response",
14677
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14678
16
                "HAT/HOT Extended Response Packet", HFILL }
14679
16
        },
14680
16
        { &hf_cigi3_hat_hot_extended_response_hat_hot_id,
14681
16
            { "HAT/HOT ID", "cigi.hat_hot_ext_response.hat_hot_id",
14682
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
14683
16
                "Identifies the HAT/HOT response", HFILL }
14684
16
        },
14685
16
        { &hf_cigi3_hat_hot_extended_response_valid,
14686
16
            { "Valid", "cigi.hat_hot_ext_response.valid",
14687
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x01,
14688
16
                "Indicates whether the remaining parameters in this packet contain valid numbers", HFILL }
14689
16
        },
14690
16
        { &hf_cigi3_hat_hot_extended_response_hat,
14691
16
            { "HAT", "cigi.hat_hot_ext_response.hat",
14692
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14693
16
                "Indicates the height of the test point above the terrain", HFILL }
14694
16
        },
14695
16
        { &hf_cigi3_hat_hot_extended_response_hot,
14696
16
            { "HOT", "cigi.hat_hot_ext_response.hot",
14697
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14698
16
                "Indicates the height of terrain above or below the test point", HFILL }
14699
16
        },
14700
16
        { &hf_cigi3_hat_hot_extended_response_material_code,
14701
16
            { "Material Code", "cigi.hat_hot_ext_response.material_code",
14702
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
14703
16
                "Indicates the material code of the terrain surface at the point of intersection with the HAT/HOT test vector", HFILL }
14704
16
        },
14705
16
        { &hf_cigi3_hat_hot_extended_response_normal_vector_azimuth,
14706
16
            { "Normal Vector Azimuth (degrees)", "cigi.hat_hot_ext_response.normal_vector_azimuth",
14707
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14708
16
                "Indicates the azimuth of the normal unit vector of the surface intersected by the HAT/HOT test vector", HFILL }
14709
16
        },
14710
16
        { &hf_cigi3_hat_hot_extended_response_normal_vector_elevation,
14711
16
            { "Normal Vector Elevation (degrees)", "cigi.hat_hot_ext_response.normal_vector_elevation",
14712
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14713
16
                "Indicates the elevation of the normal unit vector of the surface intersected by the HAT/HOT test vector", HFILL }
14714
16
        },
14715
14716
        /* CIGI3_2 HAT/HOT Extended Response */
14717
16
        { &hf_cigi3_2_hat_hot_extended_response_host_frame_number_lsn,
14718
16
            { "Host Frame Number LSN", "cigi.hat_hot_ext_response.host_frame_number_lsn",
14719
16
                FT_UINT8, BASE_DEC, NULL, 0xf0,
14720
16
                "Least significant nibble of the host frame number parameter of the last IG Control packet received before the HAT or HOT is calculated", HFILL }
14721
16
        },
14722
14723
        /* CIGI4 HAT/HOT Extended Response */
14724
16
        { &hf_cigi4_hat_hot_extended_response_flags,
14725
16
            { "Request Flags", "cigi.hat_hot_extended_response.flags",
14726
16
                FT_UINT8, BASE_HEX, NULL, 0x0,
14727
16
                NULL, HFILL }
14728
16
        },
14729
14730
        /* CIGI2 Line of Sight Response */
14731
16
        { &hf_cigi2_line_of_sight_response,
14732
16
            { "Line of Sight Response", "cigi.los_response",
14733
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14734
16
                "Line of Sight Response Packet", HFILL }
14735
16
        },
14736
16
        { &hf_cigi2_line_of_sight_response_los_id,
14737
16
            { "LOS ID", "cigi.los_response.los_id",
14738
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
14739
16
                "Identifies the LOS response corresponding tot he associated LOS request", HFILL }
14740
16
        },
14741
16
        { &hf_cigi2_line_of_sight_response_valid,
14742
16
            { "Valid", "cigi.los_response.valid",
14743
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x80,
14744
16
                "Indicates whether the response is valid or invalid", HFILL }
14745
16
        },
14746
16
        { &hf_cigi2_line_of_sight_response_occult_response,
14747
16
            { "Occult Response", "cigi.los_response.occult_response",
14748
16
                FT_BOOLEAN, 8, TFS(&visible_occulted_tfs), 0x40,
14749
16
                "Used to respond to the LOS occult request data packet", HFILL }
14750
16
        },
14751
16
        { &hf_cigi2_line_of_sight_response_material_type,
14752
16
            { "Material Type", "cigi.los_response.material_type",
14753
16
                FT_INT32, BASE_DEC, NULL, 0x0,
14754
16
                "Specifies the material type of the object intersected by the LOS test segment", HFILL }
14755
16
        },
14756
16
        { &hf_cigi2_line_of_sight_response_range,
14757
16
            { "Range (m)", "cigi.los_response.range",
14758
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14759
16
                "Used to respond to the Line of Sight Range Request data packet", HFILL }
14760
16
        },
14761
16
        { &hf_cigi2_line_of_sight_response_alt,
14762
16
            { "Intersection Altitude (m)", "cigi.los_response.alt",
14763
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14764
16
                "Specifies the altitude of the point of intersection of the LOS request vector with an object", HFILL }
14765
16
        },
14766
16
        { &hf_cigi2_line_of_sight_response_lat,
14767
16
            { "Intersection Latitude (degrees)", "cigi.los_response.lat",
14768
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14769
16
                "Specifies the latitudinal position of the intersection point of the LOS request vector with an object", HFILL }
14770
16
        },
14771
16
        { &hf_cigi2_line_of_sight_response_lon,
14772
16
            { "Intersection Longitude (degrees)", "cigi.los_response.lon",
14773
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14774
16
                "Specifies the longitudinal position of the intersection point of the LOS request vector with an object", HFILL }
14775
16
        },
14776
14777
        /* CIGI3 Line of Sight Response */
14778
16
        { &hf_cigi3_line_of_sight_response,
14779
16
            { "Line of Sight Response", "cigi.los_response",
14780
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14781
16
                "Line of Sight Response Packet", HFILL }
14782
16
        },
14783
16
        { &hf_cigi3_line_of_sight_response_los_id,
14784
16
            { "LOS ID", "cigi.los_response.los_id",
14785
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
14786
16
                "Identifies the LOS response", HFILL }
14787
16
        },
14788
16
        { &hf_cigi3_line_of_sight_response_valid,
14789
16
            { "Valid", "cigi.los_response.valid",
14790
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x01,
14791
16
                "Indicates whether the Range parameter is valid", HFILL }
14792
16
        },
14793
16
        { &hf_cigi3_line_of_sight_response_entity_id_valid,
14794
16
            { "Entity ID Valid", "cigi.los_response.entity_id_valid",
14795
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x02,
14796
16
                "Indicates whether the LOS test vector or segment intersects with an entity or a non-entity", HFILL }
14797
16
        },
14798
16
        { &hf_cigi3_line_of_sight_response_visible,
14799
16
            { "Visible", "cigi.los_response.visible",
14800
16
                FT_BOOLEAN, 8, TFS(&visible_occluded_tfs), 0x04,
14801
16
                "Indicates whether the destination point is visible from the source point", HFILL }
14802
16
        },
14803
16
        { &hf_cigi3_line_of_sight_response_count,
14804
16
            { "Response Count", "cigi.los_response.count",
14805
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
14806
16
                "Indicates the total number of Line of Sight Response packets the IG will return for the corresponding request", HFILL }
14807
16
        },
14808
16
        { &hf_cigi3_line_of_sight_response_entity_id,
14809
16
            { "Entity ID", "cigi.los_response.entity_id",
14810
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
14811
16
                "Indicates the entity with which an LOS test vector or segment intersects", HFILL }
14812
16
        },
14813
16
        { &hf_cigi3_line_of_sight_response_range,
14814
16
            { "Range (m)", "cigi.los_response.range",
14815
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14816
16
                "Indicates the distance along the LOS test segment or vector from the source point to the point of intersection with a polygon surface", HFILL }
14817
16
        },
14818
14819
        /* CIGI3_2 Line of Sight Response */
14820
16
        { &hf_cigi3_2_line_of_sight_response_host_frame_number_lsn,
14821
16
            { "Host Frame Number LSN", "cigi.los_response.host_frame_number_lsn",
14822
16
                FT_UINT8, BASE_DEC, NULL, 0xf0,
14823
16
                "Least significant nibble of the host frame number parameter of the last IG Control packet received before the HAT or HOT is calculated", HFILL }
14824
16
        },
14825
14826
        /* CIGI4 Line of Sight Response */
14827
14828
        /* CIGI3 Line of Sight Extended Response */
14829
16
        { &hf_cigi3_line_of_sight_extended_response,
14830
16
            { "Line of Sight Extended Response", "cigi.los_ext_response",
14831
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14832
16
                "Line of Sight Extended Response Packet", HFILL }
14833
16
        },
14834
16
        { &hf_cigi3_line_of_sight_extended_response_los_id,
14835
16
            { "LOS ID", "cigi.los_ext_response.los_id",
14836
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
14837
16
                "Identifies the LOS response", HFILL }
14838
16
        },
14839
16
        { &hf_cigi3_line_of_sight_extended_response_valid,
14840
16
            { "Valid", "cigi.los_ext_response.valid",
14841
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x01,
14842
16
                "Indicates whether this packet contains valid data", HFILL }
14843
16
        },
14844
16
        { &hf_cigi3_line_of_sight_extended_response_entity_id_valid,
14845
16
            { "Entity ID Valid", "cigi.los_ext_response.entity_id_valid",
14846
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x02,
14847
16
                "Indicates whether the LOS test vector or segment intersects with an entity", HFILL }
14848
16
        },
14849
16
        { &hf_cigi3_line_of_sight_extended_response_range_valid,
14850
16
            { "Range Valid", "cigi.los_ext_response.range_valid",
14851
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x04,
14852
16
                "Indicates whether the Range parameter is valid", HFILL }
14853
16
        },
14854
16
        { &hf_cigi3_line_of_sight_extended_response_visible,
14855
16
            { "Visible", "cigi.los_ext_response.visible",
14856
16
                FT_BOOLEAN, 8, TFS(&visible_occluded_tfs), 0x08,
14857
16
                "Indicates whether the destination point is visible from the source point", HFILL }
14858
16
        },
14859
16
        { &hf_cigi3_line_of_sight_extended_response_intersection_coord,
14860
16
            { "Intersection Point Coordinate System", "cigi.los_ext_response.intersection_coord",
14861
16
                FT_BOOLEAN, 8, TFS(&entity_geodetic_tfs), 0x10,
14862
16
                "Indicates the coordinate system relative to which the intersection point is specified", HFILL }
14863
16
        },
14864
16
        { &hf_cigi3_line_of_sight_extended_response_response_count,
14865
16
            { "Response Count", "cigi.los_ext_response.response_count",
14866
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
14867
16
                "Indicates the total number of Line of Sight Extended Response packets the IG will return for the corresponding request", HFILL }
14868
16
        },
14869
16
        { &hf_cigi3_line_of_sight_extended_response_entity_id,
14870
16
            { "Entity ID", "cigi.los_ext_response.entity_id",
14871
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
14872
16
                "Indicates the entity with which a LOS test vector or segment intersects", HFILL }
14873
16
        },
14874
16
        { &hf_cigi3_line_of_sight_extended_response_range,
14875
16
            { "Range (m)", "cigi.los_ext_response.range",
14876
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14877
16
                "Indicates the distance along the LOS test segment or vector from the source point to the point of intersection with an object", HFILL }
14878
16
        },
14879
16
        { &hf_cigi3_line_of_sight_extended_response_lat_xoff,
14880
16
            { "Latitude (degrees)/X Offset (m)", "cigi.los_ext_response.lat_xoff",
14881
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14882
16
                "Indicates the geodetic latitude of the point of intersection along the LOS test segment or vector or specifies the offset of the point of intersection of the LOS test segment or vector along the intersected entity's X axis", HFILL }
14883
16
        },
14884
16
        { &hf_cigi3_line_of_sight_extended_response_lon_yoff,
14885
16
            { "Longitude (degrees)/Y Offset (m)", "cigi.los_ext_response.lon_yoff",
14886
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14887
16
                "Indicates the geodetic longitude of the point of intersection along the LOS test segment or vector or specifies the offset of the point of intersection of the LOS test segment or vector along the intersected entity's Y axis", HFILL }
14888
16
        },
14889
16
        { &hf_cigi3_line_of_sight_extended_response_alt_zoff,
14890
16
            { "Altitude (m)/Z Offset(m)", "cigi.los_ext_response.alt_zoff",
14891
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
14892
16
                "Indicates the geodetic altitude of the point of intersection along the LOS test segment or vector or specifies the offset of the point of intersection of the LOS test segment or vector along the intersected entity's Z axis", HFILL }
14893
16
        },
14894
16
        { &hf_cigi3_line_of_sight_extended_response_red,
14895
16
            { "Red", "cigi.los_ext_response.red",
14896
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
14897
16
                "Indicates the red color component of the surface at the point of intersection", HFILL }
14898
16
        },
14899
16
        { &hf_cigi3_line_of_sight_extended_response_green,
14900
16
            { "Green", "cigi.los_ext_response.green",
14901
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
14902
16
                "Indicates the green color component of the surface at the point of intersection", HFILL }
14903
16
        },
14904
16
        { &hf_cigi3_line_of_sight_extended_response_blue,
14905
16
            { "Blue", "cigi.los_ext_response.blue",
14906
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
14907
16
                "Indicates the blue color component of the surface at the point of intersection", HFILL }
14908
16
        },
14909
16
        { &hf_cigi3_line_of_sight_extended_response_alpha,
14910
16
            { "Alpha", "cigi.los_ext_response.alpha",
14911
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
14912
16
                "Indicates the alpha component of the surface at the point of intersection", HFILL }
14913
16
        },
14914
16
        { &hf_cigi3_line_of_sight_extended_response_material_code,
14915
16
            { "Material Code", "cigi.los_ext_response.material_code",
14916
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
14917
16
                "Indicates the material code of the surface intersected by the LOS test segment of vector", HFILL }
14918
16
        },
14919
16
        { &hf_cigi3_line_of_sight_extended_response_normal_vector_azimuth,
14920
16
            { "Normal Vector Azimuth (degrees)", "cigi.los_ext_response.normal_vector_azimuth",
14921
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14922
16
                "Indicates the azimuth of a unit vector normal to the surface intersected by the LOS test segment or vector", HFILL }
14923
16
        },
14924
16
        { &hf_cigi3_line_of_sight_extended_response_normal_vector_elevation,
14925
16
            { "Normal Vector Elevation (degrees)", "cigi.los_ext_response.normal_vector_elevation",
14926
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14927
16
                "Indicates the elevation of a unit vector normal to the surface intersected by the LOS test segment or vector", HFILL }
14928
16
        },
14929
14930
        /* CIGI3_2 Line of Sight Extended Response */
14931
16
        { &hf_cigi3_2_line_of_sight_extended_response_host_frame_number_lsn,
14932
16
            { "Host Frame Number LSN", "cigi.los_ext_response.host_frame_number_lsn",
14933
16
                FT_UINT8, BASE_DEC, NULL, 0xf0,
14934
16
                "Least significant nibble of the host frame number parameter of the last IG Control packet received before the HAT or HOT is calculated", HFILL }
14935
16
        },
14936
14937
        /* CIGI4 Line of Sight Extended Response */
14938
14939
        /* CIGI2 Collision Detection Segment Response */
14940
16
        { &hf_cigi2_collision_detection_segment_response,
14941
16
            { "Collision Detection Segment Response", "cigi.coll_det_seg_response",
14942
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14943
16
                "Collision Detection Segment Response Packet", HFILL }
14944
16
        },
14945
16
        { &hf_cigi2_collision_detection_segment_response_entity_id,
14946
16
            { "Entity ID", "cigi.coll_det_seg_response.entity_id",
14947
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
14948
16
                "Indicates which entity experienced a collision", HFILL }
14949
16
        },
14950
16
        { &hf_cigi2_collision_detection_segment_response_segment_id,
14951
16
            { "Segment ID", "cigi.coll_det_seg_response.segment_id",
14952
16
                FT_UINT8, BASE_DEC, NULL, 0xfe,
14953
16
                "Identifies the collision segment", HFILL }
14954
16
        },
14955
16
        { &hf_cigi2_collision_detection_segment_response_contact,
14956
16
            { "Entity/Non-Entity Contact", "cigi.coll_det_seg_response.contact",
14957
16
                FT_BOOLEAN, 8, TFS(&cigi2_collision_detection_segment_response_contact_tfs), 0x01,
14958
16
                "Indicates whether another entity was contacted during this collision", HFILL }
14959
16
        },
14960
16
        { &hf_cigi2_collision_detection_segment_response_contacted_entity,
14961
16
            { "Contacted Entity ID", "cigi.coll_det_seg_response.contacted_entity",
14962
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
14963
16
                "Indicates which entity was contacted during the collision", HFILL }
14964
16
        },
14965
16
        { &hf_cigi2_collision_detection_segment_response_material_type,
14966
16
            { "Material Type", "cigi.coll_det_seg_response.material_type",
14967
16
                FT_INT32, BASE_DEC, NULL, 0x0,
14968
16
                "Specifies the material type of the surface that this collision test segment contacted", HFILL }
14969
16
        },
14970
16
        { &hf_cigi2_collision_detection_segment_response_collision_x,
14971
16
            { "Collision Point X (m)", "cigi.coll_det_seg_response.collision_x",
14972
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14973
16
                "Specifies the X component of a vector, which lies along the defined segment where the segment intersected a surface", HFILL }
14974
16
        },
14975
16
        { &hf_cigi2_collision_detection_segment_response_collision_y,
14976
16
            { "Collision Point Y (m)", "cigi.coll_det_seg_response.collision_y",
14977
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14978
16
                "Specifies the Y component of a vector, which lies along the defined segment where the segment intersected a surface", HFILL }
14979
16
        },
14980
16
        { &hf_cigi2_collision_detection_segment_response_collision_z,
14981
16
            { "Collision Point Z (m)", "cigi.coll_det_seg_response.collision_z",
14982
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
14983
16
                "Specifies the Z component of a vector, which lies along the defined segment where the segment intersected a surface", HFILL }
14984
16
        },
14985
14986
        /* CIGI2 Sensor Response */
14987
16
        { &hf_cigi2_sensor_response,
14988
16
            { "Sensor Response", "cigi.sensor_response",
14989
16
                FT_NONE, BASE_NONE, NULL, 0x0,
14990
16
                "Sensor Response Packet", HFILL }
14991
16
        },
14992
16
        { &hf_cigi2_sensor_response_view_id,
14993
16
            { "View ID", "cigi.sensor_response.view_id",
14994
16
                FT_UINT8, BASE_DEC, NULL, 0xf8,
14995
16
                "Indicates the sensor view", HFILL }
14996
16
        },
14997
16
        { &hf_cigi2_sensor_response_status,
14998
16
            { "Sensor Status", "cigi.sensor_response.status",
14999
16
                FT_UINT8, BASE_DEC, VALS(cigi2_sensor_response_status_vals), 0x06,
15000
16
                "Indicates the current sensor mode", HFILL }
15001
16
        },
15002
16
        { &hf_cigi2_sensor_response_sensor_id,
15003
16
            { "Sensor ID", "cigi.sensor_response.sensor_id",
15004
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15005
16
                "Identifies the sensor response corresponding to the associated sensor control data packet", HFILL }
15006
16
        },
15007
16
        { &hf_cigi2_sensor_response_x_offset,
15008
16
            { "Gate X Offset (degrees)", "cigi.sensor_response.x_offset",
15009
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15010
16
                "Specifies the target's horizontal offset from the view plane normal", HFILL }
15011
16
        },
15012
16
        { &hf_cigi2_sensor_response_y_offset,
15013
16
            { "Gate Y Offset (degrees)", "cigi.sensor_response.y_offset",
15014
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15015
16
                "Specifies the target's vertical offset from the view plane normal", HFILL }
15016
16
        },
15017
16
        { &hf_cigi2_sensor_response_x_size,
15018
16
            { "Gate X Size", "cigi.sensor_response.x_size",
15019
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15020
16
                "Specifies the target size in the X direction (horizontal) in pixels", HFILL }
15021
16
        },
15022
16
        { &hf_cigi2_sensor_response_y_size,
15023
16
            { "Gate Y Size", "cigi.sensor_response.y_size",
15024
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15025
16
                "Specifies the target size in the Y direction (vertical) in pixels", HFILL }
15026
16
        },
15027
15028
        /* CIGI3 Sensor Response */
15029
16
        { &hf_cigi3_sensor_response,
15030
16
            { "Sensor Response", "cigi.sensor_response",
15031
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15032
16
                "Sensor Response Packet", HFILL }
15033
16
        },
15034
16
        { &hf_cigi3_sensor_response_view_id,
15035
16
            { "View ID", "cigi.sensor_response.view_id",
15036
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15037
16
                "Specifies the view that represents the sensor display", HFILL }
15038
16
        },
15039
16
        { &hf_cigi3_sensor_response_sensor_id,
15040
16
            { "Sensor ID", "cigi.sensor_response.sensor_id",
15041
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15042
16
                "Specifies the sensor to which the data in this packet apply", HFILL }
15043
16
        },
15044
16
        { &hf_cigi3_sensor_response_sensor_status,
15045
16
            { "Sensor Status", "cigi.sensor_response.sensor_status",
15046
16
                FT_UINT8, BASE_DEC, VALS(cigi3_sensor_response_sensor_status_vals), 0x03,
15047
16
                "Indicates the current tracking state of the sensor", HFILL }
15048
16
        },
15049
16
        { &hf_cigi3_sensor_response_gate_x_size,
15050
16
            { "Gate X Size (pixels or raster lines)", "cigi.sensor_response.gate_x_size",
15051
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15052
16
                "Specifies the gate symbol size along the view's X axis", HFILL }
15053
16
        },
15054
16
        { &hf_cigi3_sensor_response_gate_y_size,
15055
16
            { "Gate Y Size (pixels or raster lines)", "cigi.sensor_response.gate_y_size",
15056
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15057
16
                "Specifies the gate symbol size along the view's Y axis", HFILL }
15058
16
        },
15059
16
        { &hf_cigi3_sensor_response_gate_x_pos,
15060
16
            { "Gate X Position (degrees)", "cigi.sensor_response.gate_x_pos",
15061
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15062
16
                "Specifies the gate symbol's position along the view's X axis", HFILL }
15063
16
        },
15064
16
        { &hf_cigi3_sensor_response_gate_y_pos,
15065
16
            { "Gate Y Position (degrees)", "cigi.sensor_response.gate_y_pos",
15066
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15067
16
                "Specifies the gate symbol's position along the view's Y axis", HFILL }
15068
16
        },
15069
16
        { &hf_cigi3_sensor_response_frame_ctr,
15070
16
            { "Frame Counter", "cigi.sensor_response.frame_ctr",
15071
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
15072
16
                "Indicates the IG's frame counter at the time that the IG calculates the gate and line-of-sight intersection data", HFILL }
15073
16
        },
15074
15075
15076
        /* CIGI4 Sensor Response */
15077
15078
        /* CIGI3 Sensor Extended Response */
15079
16
        { &hf_cigi3_sensor_extended_response,
15080
16
            { "Sensor Extended Response", "cigi.sensor_ext_response",
15081
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15082
16
                "Sensor Extended Response Packet", HFILL }
15083
16
        },
15084
16
        { &hf_cigi3_sensor_extended_response_view_id,
15085
16
            { "View ID", "cigi.sensor_ext_response.view_id",
15086
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15087
16
                "Specifies the view that represents the sensor display", HFILL }
15088
16
        },
15089
16
        { &hf_cigi3_sensor_extended_response_sensor_id,
15090
16
            { "Sensor ID", "cigi.sensor_ext_response.sensor_id",
15091
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15092
16
                "Specifies the sensor to which the data in this packet apply", HFILL }
15093
16
        },
15094
16
        { &hf_cigi3_sensor_extended_response_sensor_status,
15095
16
            { "Sensor Status", "cigi.sensor_ext_response.sensor_status",
15096
16
                FT_UINT8, BASE_DEC, VALS(cigi3_sensor_extended_response_sensor_status_vals), 0x03,
15097
16
                "Indicates the current tracking state of the sensor", HFILL }
15098
16
        },
15099
16
        { &hf_cigi3_sensor_extended_response_entity_id_valid,
15100
16
            { "Entity ID Valid", "cigi.sensor_ext_response.entity_id_valid",
15101
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x04,
15102
16
                "Indicates whether the target is an entity or a non-entity object", HFILL }
15103
16
        },
15104
16
        { &hf_cigi3_sensor_extended_response_entity_id,
15105
16
            { "Entity ID", "cigi.sensor_ext_response.entity_id",
15106
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15107
16
                "Indicates the entity ID of the target", HFILL }
15108
16
        },
15109
16
        { &hf_cigi3_sensor_extended_response_gate_x_size,
15110
16
            { "Gate X Size (pixels or raster lines)", "cigi.sensor_ext_response.gate_x_size",
15111
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15112
16
                "Specifies the gate symbol size along the view's X axis", HFILL }
15113
16
        },
15114
16
        { &hf_cigi3_sensor_extended_response_gate_y_size,
15115
16
            { "Gate Y Size (pixels or raster lines)", "cigi.sensor_ext_response.gate_y_size",
15116
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15117
16
                "Specifies the gate symbol size along the view's Y axis", HFILL }
15118
16
        },
15119
16
        { &hf_cigi3_sensor_extended_response_gate_x_pos,
15120
16
            { "Gate X Position (degrees)", "cigi.sensor_ext_response.gate_x_pos",
15121
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15122
16
                "Specifies the gate symbol's position along the view's X axis", HFILL }
15123
16
        },
15124
16
        { &hf_cigi3_sensor_extended_response_gate_y_pos,
15125
16
            { "Gate Y Position (degrees)", "cigi.sensor_ext_response.gate_y_pos",
15126
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15127
16
                "Specifies the gate symbol's position along the view's Y axis", HFILL }
15128
16
        },
15129
16
        { &hf_cigi3_sensor_extended_response_frame_ctr,
15130
16
            { "Frame Counter", "cigi.sensor_ext_response.frame_ctr",
15131
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
15132
16
                "Indicates the IG's frame counter at the time that the IG calculates the gate and line-of-sight intersection data", HFILL }
15133
16
        },
15134
16
        { &hf_cigi3_sensor_extended_response_track_lat,
15135
16
            { "Track Point Latitude (degrees)", "cigi.sensor_ext_response.track_lat",
15136
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
15137
16
                "Indicates the geodetic latitude of the point being tracked by the sensor", HFILL }
15138
16
        },
15139
16
        { &hf_cigi3_sensor_extended_response_track_lon,
15140
16
            { "Track Point Longitude (degrees)", "cigi.sensor_ext_response.track_lon",
15141
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
15142
16
                "Indicates the geodetic longitude of the point being tracked by the sensor", HFILL }
15143
16
        },
15144
16
        { &hf_cigi3_sensor_extended_response_track_alt,
15145
16
            { "Track Point Altitude (m)", "cigi.sensor_ext_response.track_alt",
15146
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
15147
16
                "Indicates the geodetic altitude of the point being tracked by the sensor", HFILL }
15148
16
        },
15149
15150
15151
        /* CIGI4 Sensor Extended Response */
15152
15153
        /* CIGI2 Height of Terrain Response */
15154
16
        { &hf_cigi2_height_of_terrain_response,
15155
16
            { "Height of Terrain Response", "cigi.hot_response",
15156
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15157
16
                "Height of Terrain Response Packet", HFILL }
15158
16
        },
15159
16
        { &hf_cigi2_height_of_terrain_response_hot_id,
15160
16
            { "HOT ID", "cigi.hot_response.hot_id",
15161
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15162
16
                "Identifies the HOT response corresponding to the associated HOT request", HFILL }
15163
16
        },
15164
16
        { &hf_cigi2_height_of_terrain_response_valid,
15165
16
            { "Valid", "cigi.hot_response.valid",
15166
16
                FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x80,
15167
16
                "Indicates whether the response is valid or invalid", HFILL }
15168
16
        },
15169
16
        { &hf_cigi2_height_of_terrain_response_material_type,
15170
16
            { "Material Type", "cigi.hot_response.material_type",
15171
16
                FT_INT32, BASE_DEC, NULL, 0x0,
15172
16
                "Specifies the material type of the object intersected by the HOT test segment", HFILL }
15173
16
        },
15174
16
        { &hf_cigi2_height_of_terrain_response_alt,
15175
16
            { "Altitude (m)", "cigi.hot_response.alt",
15176
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
15177
16
                "Represents the altitude of the terrain for the position requested in the HOT request data packet", HFILL }
15178
16
        },
15179
15180
        /* CIGI2 Collision Detection Volume Response */
15181
16
        { &hf_cigi2_collision_detection_volume_response,
15182
16
            { "Collision Detection Volume Response", "cigi.coll_det_vol_response",
15183
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15184
16
                "Collision Detection Volume Response Packet", HFILL }
15185
16
        },
15186
16
        { &hf_cigi2_collision_detection_volume_response_entity_id,
15187
16
            { "Entity ID", "cigi.coll_det_vol_response.entity_id",
15188
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15189
16
                "Indicates which entity experienced a collision", HFILL }
15190
16
        },
15191
16
        { &hf_cigi2_collision_detection_volume_response_volume_id,
15192
16
            { "Volume ID", "cigi.coll_det_vol_response.volume_id",
15193
16
                FT_UINT8, BASE_DEC, NULL, 0xfe,
15194
16
                "Identifies the collision volume corresponding to the associated Collision Detection Volume Request", HFILL }
15195
16
        },
15196
16
        { &hf_cigi2_collision_detection_volume_response_contact,
15197
16
            { "Entity/Non-Entity Contact", "cigi.coll_det_vol_response.contact",
15198
16
                FT_BOOLEAN, 8, TFS(&cigi2_collision_detection_volume_response_contact_tfs), 0x01,
15199
16
                "Indicates whether another entity was contacted during this collision", HFILL }
15200
16
        },
15201
16
        { &hf_cigi2_collision_detection_volume_response_contact_entity,
15202
16
            { "Contacted Entity ID", "cigi.coll_det_vol_response.contact_entity",
15203
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15204
16
                "Indicates which entity was contacted with during the collision", HFILL }
15205
16
        },
15206
15207
        /* CIGI3 Position Response */
15208
16
        { &hf_cigi3_position_response,
15209
16
            { "Position Response", "cigi.pos_response",
15210
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15211
16
                "Position Response Packet", HFILL }
15212
16
        },
15213
16
        { &hf_cigi3_position_response_object_id,
15214
16
            { "Object ID", "cigi.pos_response.object_id",
15215
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15216
16
                "Identifies the entity, view, view group, or motion tracking device whose position is being reported", HFILL }
15217
16
        },
15218
16
        { &hf_cigi3_position_response_part_id,
15219
16
            { "Articulated Part ID", "cigi.pos_response.part_id",
15220
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15221
16
                "Identifies the articulated part whose position is being reported", HFILL }
15222
16
        },
15223
16
        { &hf_cigi3_position_response_object_class,
15224
16
            { "Object Class", "cigi.pos_response.object_class",
15225
16
                FT_UINT8, BASE_DEC, VALS(cigi3_position_response_object_class_vals), 0x07,
15226
16
                "Indicates the type of object whose position is being reported", HFILL }
15227
16
        },
15228
16
        { &hf_cigi3_position_response_coord_system,
15229
16
            { "Coordinate System", "cigi.pos_response.coord_system",
15230
16
                FT_UINT8, BASE_DEC, VALS(cigi3_position_response_coord_system_vals), 0x18,
15231
16
                "Indicates the coordinate system in which the position and orientation are specified", HFILL }
15232
16
        },
15233
16
        { &hf_cigi3_position_response_lat_xoff,
15234
16
            { "Latitude (degrees)/X Offset (m)", "cigi.pos_response.lat_xoff",
15235
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
15236
16
                "Indicates the geodetic latitude of the entity, articulated part, view, or view group or indicates the X offset from the parent entity's origin to the child entity, articulated part, view or view group", HFILL }
15237
16
        },
15238
16
        { &hf_cigi3_position_response_lon_yoff,
15239
16
            { "Longitude (degrees)/Y Offset (m)", "cigi.pos_response.lon_yoff",
15240
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
15241
16
                "Indicates the geodetic longitude of the entity, articulated part, view, or view group or indicates the Y offset from the parent entity's origin to the child entity, articulated part, view, or view group", HFILL }
15242
16
        },
15243
16
        { &hf_cigi3_position_response_alt_zoff,
15244
16
            { "Altitude (m)/Z Offset (m)", "cigi.pos_response.alt_zoff",
15245
16
                FT_DOUBLE, BASE_NONE, NULL, 0x0,
15246
16
                "Indicates the geodetic altitude of the entity, articulated part, view, or view group or indicates the Z offset from the parent entity's origin to the child entity, articulated part, view, or view group", HFILL }
15247
16
        },
15248
16
        { &hf_cigi3_position_response_roll,
15249
16
            { "Roll (degrees)", "cigi.pos_response.roll",
15250
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15251
16
                "Indicates the roll angle of the specified entity, articulated part, view, or view group", HFILL }
15252
16
        },
15253
16
        { &hf_cigi3_position_response_pitch,
15254
16
            { "Pitch (degrees)", "cigi.pos_response.pitch",
15255
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15256
16
                "Indicates the pitch angle of the specified entity, articulated part, view, or view group", HFILL }
15257
16
        },
15258
16
        { &hf_cigi3_position_response_yaw,
15259
16
            { "Yaw (degrees)", "cigi.pos_response.yaw",
15260
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15261
16
                "Indicates the yaw angle of the specified entity, articulated part, view, or view group", HFILL }
15262
16
        },
15263
15264
15265
        /* CIGI4 Position Response */
15266
15267
        /* CIGI3 Weather Conditions Response */
15268
16
        { &hf_cigi3_weather_conditions_response,
15269
16
            { "Weather Conditions Response", "cigi.wea_cond_response",
15270
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15271
16
                "Weather Conditions Response Packet", HFILL }
15272
16
        },
15273
16
        { &hf_cigi3_weather_conditions_response_request_id,
15274
16
            { "Request ID", "cigi.wea_cond_response.request_id",
15275
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15276
16
                "Identifies the environmental conditions request to which this response packet corresponds", HFILL }
15277
16
        },
15278
16
        { &hf_cigi3_weather_conditions_response_humidity,
15279
16
            { "Humidity (%)", "cigi.wea_cond_response.humidity",
15280
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15281
16
                "Indicates the humidity at the request location", HFILL }
15282
16
        },
15283
16
        { &hf_cigi3_weather_conditions_response_air_temp,
15284
16
            { "Air Temperature (degrees C)", "cigi.wea_cond_response.air_temp",
15285
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15286
16
                "Indicates the air temperature at the requested location", HFILL }
15287
16
        },
15288
16
        { &hf_cigi3_weather_conditions_response_visibility_range,
15289
16
            { "Visibility Range (m)", "cigi.wea_cond_response.visibility_range",
15290
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15291
16
                "Indicates the visibility range at the requested location", HFILL }
15292
16
        },
15293
16
        { &hf_cigi3_weather_conditions_response_horiz_speed,
15294
16
            { "Horizontal Wind Speed (m/s)", "cigi.wea_cond_response.horiz_speed",
15295
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15296
16
                "Indicates the local wind speed parallel to the ellipsoid-tangential reference plane", HFILL }
15297
16
        },
15298
16
        { &hf_cigi3_weather_conditions_response_vert_speed,
15299
16
            { "Vertical Wind Speed (m/s)", "cigi.wea_cond_response.vert_speed",
15300
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15301
16
                "Indicates the local vertical wind speed", HFILL }
15302
16
        },
15303
16
        { &hf_cigi3_weather_conditions_response_wind_direction,
15304
16
            { "Wind Direction (degrees)", "cigi.wea_cond_response.wind_direction",
15305
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15306
16
                "Indicates the local wind direction", HFILL }
15307
16
        },
15308
16
        { &hf_cigi3_weather_conditions_response_barometric_pressure,
15309
16
            { "Barometric Pressure (mb or hPa)", "cigi.wea_cond_response.barometric_pressure",
15310
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15311
16
                "Indicates the atmospheric pressure at the requested location", HFILL }
15312
16
        },
15313
15314
        /* CIGI4 Weather Conditions Response */
15315
15316
        /* CIGI3 Aerosol Concentration Response */
15317
16
        { &hf_cigi3_aerosol_concentration_response,
15318
16
            { "Aerosol Concentration Response", "cigi.aerosol_concentration_response",
15319
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15320
16
                "Aerosol Concentration Response Packet", HFILL }
15321
16
        },
15322
16
        { &hf_cigi3_aerosol_concentration_response_request_id,
15323
16
            { "Request ID", "cigi.aerosol_concentration_response.request_id",
15324
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15325
16
                "Identifies the environmental conditions request to which this response packet corresponds", HFILL }
15326
16
        },
15327
16
        { &hf_cigi3_aerosol_concentration_response_layer_id,
15328
16
            { "Layer ID", "cigi.aerosol_concentration_response.layer_id",
15329
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15330
16
                "Identifies the weather layer whose aerosol concentration is being described", HFILL }
15331
16
        },
15332
16
        { &hf_cigi3_aerosol_concentration_response_aerosol_concentration,
15333
16
            { "Aerosol Concentration (g/m^3)", "cigi.aerosol_concentration_response.aerosol_concentration",
15334
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15335
16
                "Identifies the concentration of airborne particles", HFILL }
15336
16
        },
15337
15338
        /* CIGI4 Aerosol Concentration Response */
15339
15340
        /* CIGI3 Maritime Surface Conditions Response */
15341
16
        { &hf_cigi3_maritime_surface_conditions_response,
15342
16
            { "Maritime Surface Conditions Response", "cigi.maritime_surface_conditions_response",
15343
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15344
16
                "Maritime Surface Conditions Response Packet", HFILL }
15345
16
        },
15346
16
        { &hf_cigi3_maritime_surface_conditions_response_request_id,
15347
16
            { "Request ID", "cigi.maritime_surface_conditions_response.request_id",
15348
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15349
16
                "Identifies the environmental conditions request to which this response packet corresponds", HFILL }
15350
16
        },
15351
16
        { &hf_cigi3_maritime_surface_conditions_response_sea_surface_height,
15352
16
            { "Sea Surface Height (m)", "cigi.maritime_surface_conditions_response.sea_surface_height",
15353
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15354
16
                "Indicates the height of the sea surface at equilibrium", HFILL }
15355
16
        },
15356
16
        { &hf_cigi3_maritime_surface_conditions_response_surface_water_temp,
15357
16
            { "Surface Water Temperature (degrees C)", "cigi.maritime_surface_conditions_response.surface_water_temp",
15358
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15359
16
                "Indicates the water temperature at the sea surface", HFILL }
15360
16
        },
15361
16
        { &hf_cigi3_maritime_surface_conditions_response_surface_clarity,
15362
16
            { "Surface Clarity (%)", "cigi.maritime_surface_conditions_response.surface_clarity",
15363
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15364
16
                "Indicates the clarity of the water at its surface", HFILL }
15365
16
        },
15366
15367
        /* CIGI4 Maritime Surface Conditions Response */
15368
15369
        /* CIGI3 Terrestrial Surface Conditions Response */
15370
16
        { &hf_cigi3_terrestrial_surface_conditions_response,
15371
16
            { "Terrestrial Surface Conditions Response", "cigi.terr_surface_cond_response",
15372
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15373
16
                "Terrestrial Surface Conditions Response Packet", HFILL }
15374
16
        },
15375
16
        { &hf_cigi3_terrestrial_surface_conditions_response_request_id,
15376
16
            { "Request ID", "cigi.terr_surface_cond_response.request_id",
15377
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15378
16
                "Identifies the environmental conditions request to which this response packet corresponds", HFILL }
15379
16
        },
15380
16
        { &hf_cigi3_terrestrial_surface_conditions_response_surface_id,
15381
16
            { "Surface Condition ID", "cigi.terr_surface_cond_response.surface_id",
15382
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
15383
16
                "Indicates the presence of a specific surface condition or contaminant at the test point", HFILL }
15384
16
        },
15385
15386
        /* CIGI4 Terrestrial Surface Conditions Response */
15387
15388
        /* CIGI3 Collision Detection Segment Notification */
15389
16
        { &hf_cigi3_collision_detection_segment_notification,
15390
16
            { "Collision Detection Segment Notification", "cigi.coll_det_seg_notification",
15391
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15392
16
                "Collision Detection Segment Notification Packet", HFILL }
15393
16
        },
15394
16
        { &hf_cigi3_collision_detection_segment_notification_entity_id,
15395
16
            { "Entity ID", "cigi.coll_det_seg_notification.entity_id",
15396
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15397
16
                "Indicates the entity to which the collision detection segment belongs", HFILL }
15398
16
        },
15399
16
        { &hf_cigi3_collision_detection_segment_notification_segment_id,
15400
16
            { "Segment ID", "cigi.coll_det_seg_notification.segment_id",
15401
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15402
16
                "Indicates the ID of the collision detection segment along which the collision occurred", HFILL }
15403
16
        },
15404
16
        { &hf_cigi3_collision_detection_segment_notification_type,
15405
16
            { "Collision Type", "cigi.coll_det_seg_notification.type",
15406
16
                FT_BOOLEAN, 8, TFS(&cigi3_collision_detection_segment_notification_type_tfs), 0x01,
15407
16
                "Indicates whether the collision occurred with another entity or with a non-entity object", HFILL }
15408
16
        },
15409
16
        { &hf_cigi3_collision_detection_segment_notification_contacted_entity_id,
15410
16
            { "Contacted Entity ID", "cigi.coll_det_seg_notification.contacted_entity_id",
15411
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15412
16
                "Indicates the entity with which the collision occurred", HFILL }
15413
16
        },
15414
16
        { &hf_cigi3_collision_detection_segment_notification_material_code,
15415
16
            { "Material Code", "cigi.coll_det_seg_notification.material_code",
15416
16
                FT_UINT32, BASE_DEC, NULL, 0x0,
15417
16
                "Indicates the material code of the surface at the point of collision", HFILL }
15418
16
        },
15419
16
        { &hf_cigi3_collision_detection_segment_notification_intersection_distance,
15420
16
            { "Intersection Distance (m)", "cigi.coll_det_seg_notification.intersection_distance",
15421
16
                FT_FLOAT, BASE_NONE, NULL, 0x0,
15422
16
                "Indicates the distance along the collision test vector from the source endpoint to the point of intersection", HFILL }
15423
16
        },
15424
15425
        /* CIGI4 Collision Detection Segment Notification */
15426
15427
        /* CIGI3 Collision Detection Volume Notification */
15428
16
        { &hf_cigi3_collision_detection_volume_notification,
15429
16
            { "Collision Detection Volume Notification", "cigi.coll_det_vol_notification",
15430
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15431
16
                "Collision Detection Volume Notification Packet", HFILL }
15432
16
        },
15433
16
        { &hf_cigi3_collision_detection_volume_notification_entity_id,
15434
16
            { "Entity ID", "cigi.coll_det_vol_notification.entity_id",
15435
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15436
16
                "Indicates the entity to which the collision detection volume belongs", HFILL }
15437
16
        },
15438
16
        { &hf_cigi3_collision_detection_volume_notification_volume_id,
15439
16
            { "Volume ID", "cigi.coll_det_vol_notification.volume_id",
15440
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15441
16
                "Indicates the ID of the collision detection volume within which the collision occurred", HFILL }
15442
16
        },
15443
16
        { &hf_cigi3_collision_detection_volume_notification_type,
15444
16
            { "Collision Type", "cigi.coll_det_vol_notification.type",
15445
16
                FT_BOOLEAN, 8, TFS(&cigi3_collision_detection_volume_notification_type_tfs), 0x01,
15446
16
                "Indicates whether the collision occurred with another entity or with a non-entity object", HFILL }
15447
16
        },
15448
16
        { &hf_cigi3_collision_detection_volume_notification_contacted_entity_id,
15449
16
            { "Contacted Entity ID", "cigi.coll_det_vol_notification.contacted_entity_id",
15450
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15451
16
                "Indicates the entity with which the collision occurred", HFILL }
15452
16
        },
15453
16
        { &hf_cigi3_collision_detection_volume_notification_contacted_volume_id,
15454
16
            { "Contacted Volume ID", "cigi.coll_det_vol_notification.contacted_volume_id",
15455
16
                FT_UINT8, BASE_DEC, NULL, 0x0,
15456
16
                "Indicates the ID of the collision detection volume with which the collision occurred", HFILL }
15457
16
        },
15458
15459
        /* CIGI4 Collision Detection Volume Notification */
15460
15461
        /* CIGI3 Animation Stop Notification */
15462
16
        { &hf_cigi3_animation_stop_notification,
15463
16
            { "Animation Stop Notification", "cigi.animation_stop_notification",
15464
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15465
16
                "Animation Stop Notification Packet", HFILL }
15466
16
        },
15467
16
        { &hf_cigi3_animation_stop_notification_entity_id,
15468
16
            { "Entity ID", "cigi.animation_stop_notification.entity_id",
15469
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15470
16
                "Indicates the entity ID of the animation that has stopped", HFILL }
15471
16
        },
15472
15473
        /* CIGI4 Animation Stop Notification */
15474
15475
        /* CIGI3 Event Notification */
15476
16
        { &hf_cigi3_event_notification,
15477
16
            { "Event Notification", "cigi.event_notification",
15478
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15479
16
                "Event Notification Packet", HFILL }
15480
16
        },
15481
16
        { &hf_cigi3_event_notification_event_id,
15482
16
            { "Event ID", "cigi.event_notification.event_id",
15483
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15484
16
                "Indicates which event has occurred", HFILL }
15485
16
        },
15486
16
        { &hf_cigi3_event_notification_data_1,
15487
16
            { "Event Data 1", "cigi.event_notification.data_1",
15488
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
15489
16
                "Used for user-defined event data", HFILL }
15490
16
        },
15491
16
        { &hf_cigi3_event_notification_data_2,
15492
16
            { "Event Data 2", "cigi.event_notification.data_2",
15493
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
15494
16
                "Used for user-defined event data", HFILL }
15495
16
        },
15496
16
        { &hf_cigi3_event_notification_data_3,
15497
16
            { "Event Data 3", "cigi.event_notification.data_3",
15498
16
                FT_BYTES, BASE_NONE, NULL, 0x0,
15499
16
                "Used for user-defined event data", HFILL }
15500
16
        },
15501
15502
        /* CIGI4 Event Notification */
15503
15504
        /* CIGI2 Image Generator Message */
15505
16
        { &hf_cigi2_image_generator_message,
15506
16
            { "Image Generator Message", "cigi.image_generator_message",
15507
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15508
16
                "Image Generator Message Packet", HFILL }
15509
16
        },
15510
16
        { &hf_cigi2_image_generator_message_id,
15511
16
            { "Message ID", "cigi.image_generator_message.message_id",
15512
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15513
16
                "Uniquely identifies an instance of an Image Generator Response Message", HFILL }
15514
16
        },
15515
16
        { &hf_cigi2_image_generator_message_message,
15516
16
            { "Message", "cigi.image_generator_message.message",
15517
16
                FT_STRINGZPAD, BASE_NONE, NULL, 0x0,
15518
16
                "Image generator message", HFILL }
15519
16
        },
15520
15521
        /* CIGI3 Image Generator Message */
15522
16
        { &hf_cigi3_image_generator_message,
15523
16
            { "Image Generator Message", "cigi.image_generator_message",
15524
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15525
16
                "Image Generator Message Packet", HFILL }
15526
16
        },
15527
16
        { &hf_cigi3_image_generator_message_id,
15528
16
            { "Message ID", "cigi.image_generator_message.message_id",
15529
16
                FT_UINT16, BASE_DEC, NULL, 0x0,
15530
16
                "Specifies a numerical identifier for the message", HFILL }
15531
16
        },
15532
16
        { &hf_cigi3_image_generator_message_message,
15533
16
            { "Message", "cigi.image_generator_message.message",
15534
16
                FT_STRINGZPAD, BASE_NONE, NULL, 0x0,
15535
16
                "Message string", HFILL }
15536
16
        },
15537
15538
        /* CIGI4 Image Generator Message */
15539
15540
        /* CIGI2 User Definable */
15541
16
        { &hf_cigi2_user_definable,
15542
16
            { "User Definable", "cigi.user_definable",
15543
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15544
16
                "User definable packet", HFILL }
15545
16
        },
15546
15547
        /* CIGI3 User-Defined Packets */
15548
16
        { &hf_cigi3_user_defined,
15549
16
            { "User-Defined", "cigi.user_defined",
15550
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15551
16
                "User-Defined Packet", HFILL }
15552
16
        },
15553
15554
        /* CIGI4 locally Defined Packets */
15555
16
        { &hf_cigi4_locally_defined,
15556
16
            { "locally-Defined", "cigi.locally_defined",
15557
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15558
16
                "locally-Defined Packet", HFILL }
15559
16
        },
15560
15561
        /* CIGI4 Registered Packets */
15562
16
        { &hf_cigi4_registered,
15563
16
            { "Registered", "cigi.registered",
15564
16
                FT_NONE, BASE_NONE, NULL, 0x0,
15565
16
                "Registered Packet", HFILL }
15566
16
        }
15567
16
    };
15568
15569
16
    static ei_register_info ei[] = {
15570
16
        { &ei_cigi_invalid_len,
15571
16
            { "cigi.invalid_len", PI_MALFORMED, PI_ERROR,
15572
16
                "Packet offset does not match packet length",
15573
16
                EXPFILL }}
15574
16
    };
15575
15576
    /* CIGI preferences */
15577
16
    static const enum_val_t cigi_versions[] = {
15578
16
        { "from_packet", "From Packet", CIGI_VERSION_FROM_PACKET },
15579
16
        { "cigi2", "CIGI 2", CIGI_VERSION_2 },
15580
16
        { "cigi3", "CIGI 3", CIGI_VERSION_3 },
15581
16
        { "cigi4", "CIGI 4", CIGI_VERSION_4 },
15582
16
        { NULL, NULL, 0 }
15583
16
    };
15584
15585
16
    static const enum_val_t cigi_byte_orders[] = {
15586
16
        { "from_packet", "From Packet", CIGI_BYTE_ORDER_FROM_PACKET },
15587
16
        { "big_endian", "Big-Endian", CIGI_BYTE_ORDER_BIG_ENDIAN },
15588
16
        { "little_endian", "Little-Endian", CIGI_BYTE_ORDER_LITTLE_ENDIAN },
15589
16
        { NULL, NULL, 0 }
15590
16
    };
15591
15592
    /* Setup protocol subtree array */
15593
16
    static int* ett[] = {
15594
16
        &ett_cigi,
15595
16
        &ett_cigi4_start_of_frame_flags,
15596
16
        &ett_cigi4_start_of_frame_ig_condition_flags,
15597
16
        &ett_cigi4_ig_control_entity_substitution,
15598
16
        &ett_cigi4_ig_control_flags,
15599
16
        &ett_cigi4_entity_position_flags,
15600
16
        &ett_cigi4_hat_hot_request_flags,
15601
16
        &ett_cigi4_hat_hot_response_flags,
15602
16
        &ett_cigi4_hat_hot_extended_response_flags,
15603
16
        &ett_cigi4_articulated_part_control_part_enable_flags,
15604
16
        &ett_cigi4_short_articulated_part_control_part_enable_flags,
15605
16
        &ett_cigi4_velocity_control_flags,
15606
16
        &ett_cigi4_celestial_sphere_control_flags,
15607
16
        &ett_cigi4_view_control_enable_flags,
15608
16
        &ett_cigi4_symbol_circle_definition_circles,
15609
16
        &ett_cigi4_symbol_polygon_definition_vertices,
15610
16
        &ett_cigi4_symbol_circle_textured_definition_circles,
15611
16
        &ett_cigi4_symbol_polygon_textured_definition_vertices
15612
16
    };
15613
15614
    /* Register the protocol name and description */
15615
16
    proto_cigi = proto_register_protocol("Common Image Generator Interface",
15616
16
            "CIGI", "cigi");
15617
15618
    /* Required function calls to register the header fields and subtrees used */
15619
16
    proto_register_field_array(proto_cigi, hf, array_length(hf));
15620
16
    proto_register_subtree_array(ett, array_length(ett));
15621
15622
16
    expert_cigi = expert_register_protocol(proto_cigi);
15623
16
    expert_register_field_array(expert_cigi, ei, array_length(ei));
15624
15625
    /* Register preferences module */
15626
16
    cigi_module = prefs_register_protocol(proto_cigi, proto_reg_handoff_cigi);
15627
15628
    /* Register preferences */
15629
16
    prefs_register_enum_preference(cigi_module, "version", "CIGI version", "The version of CIGI with which to dissect packets", &global_cigi_version, cigi_versions, false);
15630
16
    prefs_register_enum_preference(cigi_module, "byte_order", "Byte Order", "The byte order with which to dissect CIGI packets (CIGI3)", &global_cigi_byte_order, cigi_byte_orders, false);
15631
16
    prefs_register_string_preference(cigi_module, "host", "Host IP", "IPv4 address or hostname of the host", &global_host_ip);
15632
16
    prefs_register_string_preference(cigi_module, "ig", "Image Generator IP", "IPv4 address or hostname of the image generator", &global_ig_ip);
15633
15634
    /* Register the dissector */
15635
16
    cigi_handle = register_dissector("cigi", dissect_cigi, proto_cigi);
15636
15637
16
    cigi3_packet_id_table = register_dissector_table("cigi3.packet_id", "CIGI3 Packet ID",
15638
16
            proto_cigi, FT_UINT8, BASE_DEC);
15639
15640
16
    cigi4_packet_id_table = register_dissector_table("cigi4.packet_id", "CIGI4 Packet ID",
15641
16
        proto_cigi, FT_UINT16, BASE_HEX);
15642
16
}
15643
15644
/* This function is also called by preferences whenever "Apply" is pressed
15645
   (see prefs_register_protocol above) so it should accommodate being called
15646
   more than once.
15647
*/
15648
void
15649
proto_reg_handoff_cigi(void)
15650
16
{
15651
16
    static bool inited = false;
15652
15653
    /* If the CIGI version preference was changed update the cigi version
15654
     * information for all packets */
15655
16
    if ( global_cigi_version != CIGI_VERSION_FROM_PACKET ) {
15656
0
        cigi_version = global_cigi_version;
15657
0
    }
15658
15659
    /* If the CIGI byte order preference was changed update the cigi byte
15660
     * order information for all packets */
15661
16
    switch ( global_cigi_byte_order ) {
15662
15663
0
    case CIGI_BYTE_ORDER_BIG_ENDIAN:
15664
0
        cigi_byte_order = ENC_BIG_ENDIAN;
15665
0
        break;
15666
15667
0
    case CIGI_BYTE_ORDER_LITTLE_ENDIAN:
15668
0
        cigi_byte_order = ENC_LITTLE_ENDIAN;
15669
0
        break;
15670
15671
16
    default:  /* includes CIGI_BYTE_ORDER_FROM_PACKET */
15672
        /* Leave it alone. */
15673
16
        break;
15674
16
    }
15675
15676
16
    if( !inited ) {
15677
16
        dissector_add_for_decode_as_with_preference("udp.port", cigi_handle);
15678
16
        dissector_add_for_decode_as_with_preference("tcp.port", cigi_handle);
15679
16
        heur_dissector_add("udp", dissect_cigi_heur, "CIGI over UDP", "cigi_udp", proto_cigi, HEURISTIC_DISABLE);
15680
15681
        // CIGI 3 packet ID types (some with fields added in 3.2 or 3.3).
15682
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_IG_CONTROL,
15683
16
            create_dissector_handle(cigi3_add_ig_control, proto_cigi));
15684
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_ENTITY_CONTROL,
15685
16
            create_dissector_handle(cigi3_add_entity_control, proto_cigi));
15686
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_CONFORMAL_CLAMPED_ENTITY_CONTROL,
15687
16
            create_dissector_handle(cigi3_add_conformal_clamped_entity_control, proto_cigi));
15688
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_COMPONENT_CONTROL,
15689
16
            create_dissector_handle(cigi3_add_component_control, proto_cigi));
15690
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SHORT_COMPONENT_CONTROL,
15691
16
            create_dissector_handle(cigi3_add_short_component_control, proto_cigi));
15692
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_ARTICULATED_PART_CONTROL,
15693
16
            create_dissector_handle(cigi3_add_articulated_part_control, proto_cigi));
15694
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SHORT_ARTICULATED_PART_CONTROL,
15695
16
            create_dissector_handle(cigi3_add_short_articulated_part_control, proto_cigi));
15696
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_RATE_CONTROL,
15697
16
            create_dissector_handle(cigi3_add_rate_control, proto_cigi));
15698
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_CELESTIAL_SPHERE_CONTROL,
15699
16
            create_dissector_handle(cigi3_add_celestial_sphere_control, proto_cigi));
15700
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_ATMOSPHERE_CONTROL,
15701
16
            create_dissector_handle(cigi3_add_atmosphere_control, proto_cigi));
15702
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_ENVIRONMENTAL_REGION_CONTROL,
15703
16
            create_dissector_handle(cigi3_add_environmental_region_control, proto_cigi));
15704
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_WEATHER_CONTROL,
15705
16
            create_dissector_handle(cigi3_add_weather_control, proto_cigi));
15706
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_MARITIME_SURFACE_CONDITIONS_CONTROL,
15707
16
            create_dissector_handle(cigi3_add_maritime_surface_conditions_control, proto_cigi));
15708
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_WAVE_CONTROL,
15709
16
            create_dissector_handle(cigi3_add_wave_control, proto_cigi));
15710
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL,
15711
16
            create_dissector_handle(cigi3_add_terrestrial_surface_conditions_control, proto_cigi));
15712
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_VIEW_CONTROL,
15713
16
            create_dissector_handle(cigi3_add_view_control, proto_cigi));
15714
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SENSOR_CONTROL,
15715
16
            create_dissector_handle(cigi3_add_sensor_control, proto_cigi));
15716
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_MOTION_TRACKER_CONTROL,
15717
16
            create_dissector_handle(cigi3_add_motion_tracker_control, proto_cigi));
15718
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_EARTH_REFERENCE_MODEL_DEFINITION,
15719
16
            create_dissector_handle(cigi3_add_earth_reference_model_definition, proto_cigi));
15720
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_TRAJECTORY_DEFINITION,
15721
16
            create_dissector_handle(cigi3_add_trajectory_definition, proto_cigi));
15722
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_VIEW_DEFINITION,
15723
16
            create_dissector_handle(cigi3_add_view_definition, proto_cigi));
15724
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION,
15725
16
            create_dissector_handle(cigi3_add_collision_detection_segment_definition, proto_cigi));
15726
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION,
15727
16
            create_dissector_handle(cigi3_add_collision_detection_volume_definition, proto_cigi));
15728
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_HAT_HOT_REQUEST,
15729
16
            create_dissector_handle(cigi3_add_hat_hot_request, proto_cigi));
15730
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_LINE_OF_SIGHT_SEGMENT_REQUEST,
15731
16
            create_dissector_handle(cigi3_add_line_of_sight_segment_request, proto_cigi));
15732
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_LINE_OF_SIGHT_VECTOR_REQUEST,
15733
16
            create_dissector_handle(cigi3_add_line_of_sight_vector_request, proto_cigi));
15734
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_POSITION_REQUEST,
15735
16
            create_dissector_handle(cigi3_add_position_request, proto_cigi));
15736
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_ENVIRONMENTAL_CONDITIONS_REQUEST,
15737
16
            create_dissector_handle(cigi3_add_environmental_conditions_request, proto_cigi));
15738
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_START_OF_FRAME,
15739
16
            create_dissector_handle(cigi3_add_start_of_frame, proto_cigi));
15740
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_HAT_HOT_RESPONSE,
15741
16
            create_dissector_handle(cigi3_add_hat_hot_response, proto_cigi));
15742
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_HAT_HOT_EXTENDED_RESPONSE,
15743
16
            create_dissector_handle(cigi3_add_hat_hot_extended_response, proto_cigi));
15744
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_LINE_OF_SIGHT_RESPONSE,
15745
16
            create_dissector_handle(cigi3_add_line_of_sight_response, proto_cigi));
15746
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_LINE_OF_SIGHT_EXTENDED_RESPONSE,
15747
16
            create_dissector_handle(cigi3_add_line_of_sight_extended_response, proto_cigi));
15748
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SENSOR_RESPONSE,
15749
16
            create_dissector_handle(cigi3_add_sensor_response, proto_cigi));
15750
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SENSOR_EXTENDED_RESPONSE,
15751
16
            create_dissector_handle(cigi3_add_sensor_extended_response, proto_cigi));
15752
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_POSITION_RESPONSE,
15753
16
            create_dissector_handle(cigi3_add_position_response, proto_cigi));
15754
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_WEATHER_CONDITIONS_RESPONSE,
15755
16
            create_dissector_handle(cigi3_add_weather_conditions_response, proto_cigi));
15756
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_AEROSOL_CONCENTRATION_RESPONSE,
15757
16
            create_dissector_handle(cigi3_add_aerosol_concentration_response, proto_cigi));
15758
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_MARITIME_SURFACE_CONDITIONS_RESPONSE,
15759
16
            create_dissector_handle(cigi3_add_maritime_surface_conditions_response, proto_cigi));
15760
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE,
15761
16
            create_dissector_handle(cigi3_add_terrestrial_surface_conditions_response, proto_cigi));
15762
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_COLLISION_DETECTION_SEGMENT_NOTIFICATION,
15763
16
            create_dissector_handle(cigi3_add_collision_detection_segment_notification, proto_cigi));
15764
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_COLLISION_DETECTION_VOLUME_NOTIFICATION,
15765
16
            create_dissector_handle(cigi3_add_collision_detection_volume_notification, proto_cigi));
15766
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_ANIMATION_STOP_NOTIFICATION,
15767
16
            create_dissector_handle(cigi3_add_animation_stop_notification, proto_cigi));
15768
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_EVENT_NOTIFICATION,
15769
16
            create_dissector_handle(cigi3_add_event_notification, proto_cigi));
15770
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_IMAGE_GENERATOR_MESSAGE,
15771
16
            create_dissector_handle(cigi3_add_image_generator_message, proto_cigi));
15772
15773
        // Packet ID types added in CIGI 3.3
15774
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SYMBOL_SURFACE_DEFINITION,
15775
16
            create_dissector_handle(cigi3_3_add_symbol_surface_definition, proto_cigi));
15776
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SYMBOL_TEXT_DEFINITION,
15777
16
            create_dissector_handle(cigi3_3_add_symbol_text_definition, proto_cigi));
15778
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SYMBOL_CIRCLE_DEFINITION,
15779
16
            create_dissector_handle(cigi3_3_add_symbol_circle_definition, proto_cigi));
15780
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SYMBOL_LINE_DEFINITION,
15781
16
            create_dissector_handle(cigi3_3_add_symbol_line_definition, proto_cigi));
15782
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SYMBOL_CLONE,
15783
16
            create_dissector_handle(cigi3_3_add_symbol_clone, proto_cigi));
15784
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SYMBOL_CONTROL,
15785
16
            create_dissector_handle(cigi3_3_add_symbol_control, proto_cigi));
15786
16
        dissector_add_uint("cigi3.packet_id", CIGI3_PACKET_ID_SHORT_SYMBOL_CONTROL,
15787
16
            create_dissector_handle(cigi3_3_add_short_symbol_control, proto_cigi));
15788
15789
        // CIGI 4 packet ID types
15790
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_IG_CONTROL,
15791
16
            create_dissector_handle(cigi4_add_ig_control, proto_cigi));
15792
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_ENTITY_POSITION,
15793
16
            create_dissector_handle(cigi4_add_entity_position, proto_cigi));
15794
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_CONFORMAL_CLAMPED_ENTITY_POSITION,
15795
16
            create_dissector_handle(cigi4_add_conformal_clamped_entity_position, proto_cigi));
15796
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_COMPONENT_CONTROL,
15797
16
            create_dissector_handle(cigi4_add_component_control, proto_cigi));
15798
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SHORT_COMPONENT_CONTROL,
15799
16
            create_dissector_handle(cigi4_add_short_component_control, proto_cigi));
15800
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_ARTICULATED_PART_CONTROL,
15801
16
            create_dissector_handle(cigi4_add_articulated_part_control, proto_cigi));
15802
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SHORT_ARTICULATED_PART_CONTROL,
15803
16
            create_dissector_handle(cigi4_add_short_articulated_part_control, proto_cigi));
15804
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_VELOCITY_CONTROL,
15805
16
            create_dissector_handle(cigi4_add_velocity_control, proto_cigi));
15806
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_CELESTIAL_SPHERE_CONTROL,
15807
16
            create_dissector_handle(cigi4_add_celestial_sphere_control, proto_cigi));
15808
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_ATMOSPHERE_CONTROL,
15809
16
            create_dissector_handle(cigi4_add_atmosphere_control, proto_cigi));
15810
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_ENVIRONMENTAL_REGION_CONTROL,
15811
16
            create_dissector_handle(cigi4_add_environmental_region_control, proto_cigi));
15812
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_WEATHER_CONTROL,
15813
16
            create_dissector_handle(cigi4_add_weather_control, proto_cigi));
15814
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_MARITIME_SURFACE_CONDITIONS_CONTROL,
15815
16
            create_dissector_handle(cigi4_add_maritime_surface_conditions_control, proto_cigi));
15816
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_WAVE_CONTROL,
15817
16
            create_dissector_handle(cigi4_add_wave_control, proto_cigi));
15818
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_CONTROL,
15819
16
            create_dissector_handle(cigi4_add_terrestrial_surface_conditions_control, proto_cigi));
15820
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_VIEW_CONTROL,
15821
16
            create_dissector_handle(cigi4_add_view_control, proto_cigi));
15822
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SENSOR_CONTROL,
15823
16
            create_dissector_handle(cigi4_add_sensor_control, proto_cigi));
15824
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_MOTION_TRACKER_CONTROL,
15825
16
            create_dissector_handle(cigi4_add_motion_tracker_control, proto_cigi));
15826
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_EARTH_REFERENCE_MODEL_DEFINITION,
15827
16
            create_dissector_handle(cigi4_add_earth_reference_model_definition, proto_cigi));
15828
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_ACCELERATION_CONTROL,
15829
16
            create_dissector_handle(cigi4_add_acceleration_control, proto_cigi));
15830
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_VIEW_DEFINITION,
15831
16
            create_dissector_handle(cigi4_add_view_definition, proto_cigi));
15832
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_COLLISION_DETECTION_SEGMENT_DEFINITION,
15833
16
            create_dissector_handle(cigi4_add_collision_detection_segment_definition, proto_cigi));
15834
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_COLLISION_DETECTION_VOLUME_DEFINITION,
15835
16
            create_dissector_handle(cigi4_add_collision_detection_volume_definition, proto_cigi));
15836
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_HAT_HOT_REQUEST,
15837
16
            create_dissector_handle(cigi4_add_hat_hot_request, proto_cigi));
15838
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_LINE_OF_SIGHT_SEGMENT_REQUEST,
15839
16
            create_dissector_handle(cigi4_add_line_of_sight_segment_request, proto_cigi));
15840
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_LINE_OF_SIGHT_VECTOR_REQUEST,
15841
16
            create_dissector_handle(cigi4_add_line_of_sight_vector_request, proto_cigi));
15842
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_POSITION_REQUEST,
15843
16
            create_dissector_handle(cigi4_add_position_request, proto_cigi));
15844
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_ENVIRONMENTAL_CONDITIONS_REQUEST,
15845
16
            create_dissector_handle(cigi4_add_environmental_conditions_request, proto_cigi));
15846
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SYMBOL_SURFACE_DEFINITION,
15847
16
            create_dissector_handle(cigi4_add_symbol_surface_definition, proto_cigi));
15848
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SYMBOL_TEXT_DEFINITION,
15849
16
            create_dissector_handle(cigi4_add_symbol_text_definition, proto_cigi));
15850
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SYMBOL_CIRCLE_DEFINITION,
15851
16
            create_dissector_handle(cigi4_add_symbol_circle_definition, proto_cigi));
15852
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SYMBOL_POLYGON_DEFINITION,
15853
16
            create_dissector_handle(cigi4_add_symbol_polygon_definition, proto_cigi));
15854
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SYMBOL_CLONE,
15855
16
            create_dissector_handle(cigi4_add_symbol_clone, proto_cigi));
15856
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SYMBOL_CONTROL,
15857
16
            create_dissector_handle(cigi4_add_symbol_control, proto_cigi));
15858
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SHORT_SYMBOL_CONTROL,
15859
16
            create_dissector_handle(cigi4_add_short_symbol_control, proto_cigi));
15860
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SYMBOL_CIRCLE_TEXTURED_DEFINITION,
15861
16
            create_dissector_handle(cigi4_add_symbol_circle_textured, proto_cigi));
15862
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SYMBOL_POLYGON_TEXTURED_DEFINITION,
15863
16
            create_dissector_handle(cigi4_add_symbol_polygon_textured, proto_cigi));
15864
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_ENTITY_CONTROL,
15865
16
            create_dissector_handle(cigi4_add_entity_control, proto_cigi));
15866
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_ANIMATION_CONTROL,
15867
16
            create_dissector_handle(cigi4_add_animation_control, proto_cigi));
15868
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_START_OF_FRAME,
15869
16
            create_dissector_handle(cigi4_add_start_of_frame, proto_cigi));
15870
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_HAT_HOT_RESPONSE,
15871
16
            create_dissector_handle(cigi4_add_hat_hot_response, proto_cigi));
15872
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_HAT_HOT_EXTENDED_RESPONSE,
15873
16
            create_dissector_handle(cigi4_add_hat_hot_extended_response, proto_cigi));
15874
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_LINE_OF_SIGHT_RESPONSE,
15875
16
            create_dissector_handle(cigi4_add_line_of_sight_response, proto_cigi));
15876
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_LINE_OF_SIGHT_EXTENDED_RESPONSE,
15877
16
            create_dissector_handle(cigi4_add_line_of_sight_extended_response, proto_cigi));
15878
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SENSOR_RESPONSE,
15879
16
            create_dissector_handle(cigi4_add_sensor_response, proto_cigi));
15880
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_SENSOR_EXTENDED_RESPONSE,
15881
16
            create_dissector_handle(cigi4_add_sensor_extended_response, proto_cigi));
15882
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_POSITION_RESPONSE,
15883
16
            create_dissector_handle(cigi4_add_position_response, proto_cigi));
15884
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_WEATHER_CONDITIONS_RESPONSE,
15885
16
            create_dissector_handle(cigi4_add_weather_conditions_response, proto_cigi));
15886
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_AEROSOL_CONCENTRATION_RESPONSE,
15887
16
            create_dissector_handle(cigi4_add_aerosol_concentration_response, proto_cigi));
15888
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_MARITIME_SURFACE_CONDITIONS_RESPONSE,
15889
16
            create_dissector_handle(cigi4_add_maritime_surface_conditions_response, proto_cigi));
15890
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_TERRESTRIAL_SURFACE_CONDITIONS_RESPONSE,
15891
16
            create_dissector_handle(cigi4_add_terrestrial_surface_conditions_response, proto_cigi));
15892
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_COLLISION_DETECTION_SEGMENT_NOTIFICATION,
15893
16
            create_dissector_handle(cigi4_add_collision_detection_segment_notification, proto_cigi));
15894
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_COLLISION_DETECTION_VOLUME_NOTIFICATION,
15895
16
            create_dissector_handle(cigi4_add_collision_detection_volume_notification, proto_cigi));
15896
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_ANIMATION_STOP_NOTIFICATION,
15897
16
            create_dissector_handle(cigi4_add_animation_stop_notification, proto_cigi));
15898
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_EVENT_NOTIFICATION,
15899
16
            create_dissector_handle(cigi4_add_event_notification, proto_cigi));
15900
16
        dissector_add_uint("cigi4.packet_id", CIGI4_PACKET_ID_IMAGE_GENERATOR_MESSAGE,
15901
16
            create_dissector_handle(cigi4_add_image_generator_message, proto_cigi));
15902
15903
        inited = true;
15904
16
    }
15905
16
}
15906
15907
/*
15908
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
15909
 *
15910
 * Local variables:
15911
 * c-basic-offset: 4
15912
 * tab-width: 8
15913
 * indent-tabs-mode: nil
15914
 * End:
15915
 *
15916
 * vi: set shiftwidth=4 tabstop=8 expandtab:
15917
 * :indentSize=4:tabSize=8:noTabs=true:
15918
 */