2 * Dissector for IEEE P1722.1
3 * Copyright 2011-2013, Thomas Bottom <tom.bottom@labxtechnologies.com>
4 * Chris Pane <chris.pane@labxtechnologies.com>
5 * Chris Wulff <chris.wulff@labxtechnologies.com>
7 * Copyright 2011, Andy Lucas <andy@xmos.com>
9 * Wireshark - Network traffic analyzer
10 * By Gerald Combs <gerald@wireshark.org>
11 * Copyright 1998 Gerald Combs
13 * SPDX-License-Identifier: GPL-2.0-or-later
18 * This file uses 3 space indentation
23 #include <epan/packet.h>
24 #include <wsutil/array.h>
26 void proto_register_17221(void);
27 void proto_reg_handoff_17221(void);
29 static dissector_handle_t avb17221_handle
;
32 #define P1722_HEADER_OFFSET 12
34 /* 1722.1 ADP Offsets */
35 #define ADP_CD_OFFSET 0
36 #define ADP_VERSION_OFFSET 1
37 #define ADP_VALID_TIME_OFFSET 2
38 #define ADP_CD_LENGTH_OFFSET 3
39 #define ADP_ENTITY_ID_OFFSET 4
40 #define ADP_ENTITY_MODEL_ID_OFFSET P1722_HEADER_OFFSET+0
41 #define ADP_ENTITY_CAP_OFFSET P1722_HEADER_OFFSET+8
42 #define ADP_TALKER_STREAM_SRCS_OFFSET P1722_HEADER_OFFSET+12
43 #define ADP_TALKER_CAP_OFFSET P1722_HEADER_OFFSET+14
44 #define ADP_LISTENER_STREAM_SINKS_OFFSET P1722_HEADER_OFFSET+16
45 #define ADP_LISTENER_CAP_OFFSET P1722_HEADER_OFFSET+18
46 #define ADP_CONTROLLER_CAP_OFFSET P1722_HEADER_OFFSET+20
47 #define ADP_AVAIL_INDEX_OFFSET P1722_HEADER_OFFSET+24
48 #define ADP_AS_GM_ID_OFFSET P1722_HEADER_OFFSET+28
49 #define ADP_GPTP_DOMAIN_NUMBER_OFFSET P1722_HEADER_OFFSET+36
50 #define ADP_IDENTIFY_CONTROL_INDEX P1722_HEADER_OFFSET+40
51 #define ADP_INTERFACE_INDEX P1722_HEADER_OFFSET+42
52 #define ADP_ASSOC_ID_OFFSET P1722_HEADER_OFFSET+44
56 #define ADP_MSG_TYPE_MASK 0x0f
57 #define ADP_VALID_TIME_MASK 0xf8
58 #define ADP_CD_LENGTH_MASK 0x07ff
62 #define ADP_ENTITY_AVAILABLE_MESSAGE 0x00
63 #define ADP_ENTITY_DEPARTING_MESSAGE 0x01
64 #define ADP_ENTITY_DISCOVER_MESSAGE 0x02
66 /* entity_capabilities_flags */
67 #define ADP_EFU_MODE_BITMASK 0x00000001
68 #define ADP_ADDRESS_ACCESS_BITMASK 0x00000002
69 #define ADP_GATEWAY_ENTITY_BITMASK 0x00000004
70 #define ADP_AEM_SUPPORTED_BITMASK 0x00000008
71 #define ADP_LEGACY_AVC_BITMASK 0x00000010
72 #define ADP_ASSOC_ID_SUPPORT_BITMASK 0x00000020
73 #define ADP_ASSOC_ID_VALID_BITMASK 0x00000040
74 #define ADP_VENDOR_UNIQUE_BITMASK 0x00000080
75 #define ADP_CLASS_A_SUPPORTED_BITMASK 0x00000100
76 #define ADP_CLASS_B_SUPPORTED_BITMASK 0x00000200
77 #define ADP_AS_SUPPORTED_BITMASK 0x00000400
79 /* talker capabilities flags */
80 #define ADP_TALK_IMPLEMENTED_BITMASK 0x0001
81 #define ADP_TALK_OTHER_SRC_BITMASK 0x0200
82 #define ADP_TALK_CONTROL_SRC_BITMASK 0x0400
83 #define ADP_TALK_MEDIA_CLK_SRC_BITMASK 0x0800
84 #define ADP_TALK_SMPTE_SRC_BITMASK 0x1000
86 #define ADP_TALK_MIDI_SRC_BITMASK 0x2000
87 #define ADP_TALK_AUDIO_SRC_BITMASK 0x4000
88 #define ADP_TALK_VIDEO_SRC_BITMASK 0x8000
90 /* listener capabilities flags */
91 #define ADP_LIST_IMPLEMENTED_BITMASK 0x0001
92 #define ADP_LIST_OTHER_SINK_BITMASK 0x0200
93 #define ADP_LIST_CONTROL_SINK_BITMASK 0x0400
94 #define ADP_LIST_MEDIA_CLK_SINK_BITMASK 0x0800
95 #define ADP_LIST_SMPTE_SINK_BITMASK 0x1000
96 #define ADP_LIST_MIDI_SINK_BITMASK 0x2000
97 #define ADP_LIST_AUDIO_SINK_BITMASK 0x4000
98 #define ADP_LIST_VIDEO_SINK_BITMASK 0x8000
100 /* Controller capabilities flags */
101 #define ADP_CONT_IMPLEMENTED_BITMASK 0x0001
102 #define ADP_CONT_LAYER3_PROXY_BITMASK 0x0002
104 /* Default audio formats fields */
105 #define ADP_DEF_AUDIO_SAMPLE_RATES_MASK 0xFC
106 #define ADP_DEF_AUDIO_MAX_CHANS_MASK 0x03FC
107 #define ADP_DEF_AUDIO_SAF_MASK 0x0002
108 #define ADP_DEF_AUDIO_FLOAT_MASK 0x0001
110 /* Default sample rates flags */
111 #define ADP_SAMP_RATE_44K1_BITMASK 0x01<<2
112 #define ADP_SAMP_RATE_48K_BITMASK 0x02<<2
113 #define ADP_SAMP_RATE_88K2_BITMASK 0x04<<2
114 #define ADP_SAMP_RATE_96K_BITMASK 0x08<<2
115 #define ADP_SAMP_RATE_176K4_BITMASK 0x10<<2
116 #define ADP_SAMP_RATE_192K_BITMASK 0x20<<2
118 /* channel_formats flags */
120 #define ADP_CHAN_FORMAT_MONO (0x00000001)
121 #define ADP_CHAN_FORMAT_2CH (0x00000002)
122 #define ADP_CHAN_FORMAT_3CH (0x00000004)
123 #define ADP_CHAN_FORMAT_4CH (0x00000008)
124 #define ADP_CHAN_FORMAT_5CH (0x00000010)
125 #define ADP_CHAN_FORMAT_6CH (0x00000020)
126 #define ADP_CHAN_FORMAT_7CH (0x00000040)
127 #define ADP_CHAN_FORMAT_8CH (0x00000080)
128 #define ADP_CHAN_FORMAT_10CH (0x00000100)
129 #define ADP_CHAN_FORMAT_12CH (0x00000200)
130 #define ADP_CHAN_FORMAT_14CH (0x00000400)
131 #define ADP_CHAN_FORMAT_16CH (0x00000800)
132 #define ADP_CHAN_FORMAT_18CH (0x00001000)
133 #define ADP_CHAN_FORMAT_20CH (0x00002000)
134 #define ADP_CHAN_FORMAT_22CH (0x00004000)
135 #define ADP_CHAN_FORMAT_24CH (0x00008000)
137 /******************************************************************************/
138 /* 1722.1 ACMP Offsets */
139 #define ACMP_CD_OFFSET 0
140 #define ACMP_VERSION_OFFSET 1
141 #define ACMP_STATUS_FIELD_OFFSET 2
142 #define ACMP_CD_LENGTH_OFFSET 2
143 #define ACMP_STREAM_ID_OFFSET 4
144 #define ACMP_CONTROLLER_GUID_OFFSET 12
145 #define ACMP_TALKER_GUID_OFFSET 20
146 #define ACMP_LISTENER_GUID_OFFSET 28
147 #define ACMP_TALKER_UNIQUE_ID_OFFSET 36
148 #define ACMP_LISTENER_UNIQUE_ID_OFFSET 38
149 #define ACMP_DEST_MAC_OFFSET 40
150 #define ACMP_CONNECTION_COUNT_OFFSET 46
151 #define ACMP_SEQUENCE_ID_OFFSET 48
152 #define ACMP_FLAGS_OFFSET 50
153 #define ACMP_VLAN_ID_OFFSET 52
155 /* Bit Field Masks */
157 #define ACMP_MSG_TYPE_MASK 0x0F
158 #define ACMP_STATUS_FIELD_MASK 0xF8
159 #define ACMP_CD_LENGTH_MASK 0x07FF
163 #define ACMP_CONNECT_TX_COMMAND 0
164 #define ACMP_CONNECT_TX_RESPONSE 1
165 #define ACMP_DISCONNECT_TX_COMMAND 2
166 #define ACMP_DISCONNECT_TX_RESPONSE 3
167 #define ACMP_GET_TX_STATE_COMMAND 4
168 #define ACMP_GET_TX_STATE_RESPONSE 5
169 #define ACMP_CONNECT_RX_COMMAND 6
170 #define ACMP_CONNECT_RX_RESPONSE 7
171 #define ACMP_DISCONNECT_RX_COMMAND 8
172 #define ACMP_DISCONNECT_RX_RESPONSE 9
173 #define ACMP_GET_RX_STATE_COMMAND 10
174 #define ACMP_GET_RX_STATE_RESPONSE 11
175 #define ACMP_GET_TX_CONNECTION_COMMAND 12
176 #define ACMP_GET_TX_CONNECTION_RESPONSE 13
180 #define ACMP_STATUS_SUCCESS 0
181 #define ACMP_STATUS_LISTENER_UNKNOWN_ID 1
182 #define ACMP_STATUS_TALKER_UNKNOWN_ID 2
183 #define ACMP_STATUS_TALKER_DEST_MAC_FAIL 3
184 #define ACMP_STATUS_TALKER_NO_STREAM_INDEX 4
185 #define ACMP_STATUS_TALKER_NO_BANDWIDTH 5
186 #define ACMP_STATUS_TALKER_EXCLUSIVE 6
187 #define ACMP_STATUS_LISTENER_TALKER_TIMEOUT 7
188 #define ACMP_STATUS_LISTENER_EXCLUSIVE 8
189 #define ACMP_STATUS_STATE_UNAVAILABLE 9
190 #define ACMP_STATUS_NOT_CONNECTED 10
191 #define ACMP_STATUS_NO_SUCH_CONNECTION 11
192 #define ACMP_STATUS_COULD_NOT_SEND_MESSAGE 12
193 #define ACMP_STATUS_DEFAULT_SET_DIFFERENT 15
194 #define ACMP_STATUS_NOT_SUPPORTED 31
197 #define ACMP_FLAG_CLASS_B_BITMASK 0x0001
198 #define ACMP_FLAG_FAST_CONNECT_BITMASK 0x0002
199 #define ACMP_FLAG_SAVED_STATE_BITMASK 0x0004
200 #define ACMP_FLAG_STREAMING_WAIT_BITMASK 0x0008
201 #define ACMP_FLAG_SUPPORTS_ENCRYPTED_BITMASK 0x0010
202 #define ACMP_FLAG_ENCRYPTED_PDU_BITMASK 0x0020
203 #define ACMP_FLAG_TALKER_FAILED_BITMASK 0x0040
205 /******************************************************************************/
206 /* AECP Common Offsets */
207 #define AECP_OFFSET_VERSION 1
208 #define AECP_OFFSET_CD_LENGTH 2
209 #define AECP_OFFSET_TARGET_GUID 4
210 #define AECP_OFFSET_CONTROLLER_GUID 12
211 #define AECP_OFFSET_SEQUENCE_ID 20
212 #define AECP_OFFSET_U_FLAG 22
213 #define AECP_OFFSET_COMMAND_TYPE 22
215 #define AECP_OFFSET_STATUS_CODE 2
217 /* AECP Address Access Command Specific Offsets */
218 #define AECP_AA_OFFSET_COUNT 22
219 #define AECP_AA_OFFSET_TLVS_START 24
221 /* AECP AEM Command Specific Offsets */
222 /* Note that these values include the 12 byte common header */
225 #define AECP_OFFSET_ACQUIRE_ENTITY_FLAGS 24
226 #define AECP_OFFSET_ACQUIRE_ENTITY_OWNER_GUID 28
227 #define AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_TYPE 36
228 #define AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_INDEX 38
231 #define AECP_OFFSET_LOCK_ENTITY_FLAGS 24
232 #define AECP_OFFSET_LOCK_ENTITY_LOCKED_GUID 28
234 /* READ/WRITE_DESCRIPTOR */
235 #define AECP_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX 24
236 #define AECP_OFFSET_DESCRIPTOR_DESCRIPTOR 28
237 #define AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_TYPE 28
238 #define AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_INDEX 30
240 /* GET/SET_CONFIGURATION */
241 #define AECP_OFFSET_CONFIGURATION_CONFIGURATION_INDEX 26
243 /* GET/SET_STREAM_FORMAT */
244 #define AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_TYPE 24
245 #define AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_INDEX 26
246 #define AECP_OFFSET_STREAM_FORMAT_STREAM_FORMAT 28
248 /* GET/SET_VIDEO_FORMAT */
249 #define AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_TYPE 24
250 #define AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_INDEX 26
251 #define AECP_OFFSET_VIDEO_FORMAT_FORMAT_SPECIFIC 28
252 #define AECP_OFFSET_VIDEO_FORMAT_ASPECT_RATIO 32
253 #define AECP_OFFSET_VIDEO_FORMAT_COLOR_SPACE 34
254 #define AECP_OFFSET_VIDEO_FORMAT_FRAME_SIZE 36
256 /* GET/SET_SENSOR_FORMAT */
257 #define AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_TYPE 24
258 #define AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_INDEX 26
259 #define AECP_OFFSET_SENSOR_FORMAT_SENSOR_FORMAT 28
261 /* GET/SET_STREAM_INFO */
262 #define AECP_OFFSET_STREAM_INFO_DESCRIPTOR_TYPE 24
263 #define AECP_OFFSET_STREAM_INFO_DESCRIPTOR_INDEX 26
264 #define AECP_OFFSET_STREAM_INFO_FLAGS 28
265 #define AECP_OFFSET_STREAM_INFO_STREAM_FORMAT 32
266 #define AECP_OFFSET_STREAM_INFO_STREAM_ID 40
267 #define AECP_OFFSET_STREAM_INFO_MSRP_ACCUMULATED_LATENCY 48
268 #define AECP_OFFSET_STREAM_INFO_STREAM_DEST_MAC 52
269 #define AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_CODE 58
270 #define AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_BRIDGE_ID 60
271 /** #define AECP_OFFSET_STREAM_INFO_STREAM_VLAN_ID 68 **/
274 #define AECP_OFFSET_NAME_DESCRIPTOR_TYPE 24
275 #define AECP_OFFSET_NAME_DESCRIPTOR_INDEX 26
276 #define AECP_OFFSET_NAME_NAME_INDEX 28
277 #define AECP_OFFSET_NAME_CONFIGURATION_INDEX 30
278 #define AECP_OFFSET_NAME_NAME 32
280 /* GET/SET_ASSOCIATION_ID */
281 #define AECP_OFFSET_ASSOCIATION_ID_ASSOCIATION_ID 24
283 /* GET/SET_SAMPLING_RATE */
284 #define AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_TYPE 24
285 #define AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_INDEX 26
286 #define AECP_OFFSET_SAMPLING_RATE_SAMPLING_RATE 28
288 /* GET/SET_CLOCK_SOURCE */
289 #define AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_TYPE 24
290 #define AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_INDEX 26
291 #define AECP_OFFSET_CLOCK_SOURCE_CLOCK_SOURCE_INDEX 28
293 /* GET/SET_CONTROL, GET/SET_MIXER */
294 #define AECP_OFFSET_CONTROL_DESCRIPTOR_TYPE 24
295 #define AECP_OFFSET_CONTROL_DESCRIPTOR_INDEX 26
296 #define AECP_OFFSET_CONTROL_VALUES 28
298 /* INCREMENT/DECREMENT_CONTROL */
299 #define AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_TYPE 24
300 #define AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_INDEX 26
301 #define AECP_OFFSET_INCDEC_CONTROL_INDEX_COUNT 28
302 #define AECP_OFFSET_INCDEC_CONTROL_INDEX_LIST 32
304 /* GET/SET_SIGNAL_SELECTOR */
305 #define AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_TYPE 24
306 #define AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_INDEX 26
307 #define AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_TYPE 28
308 #define AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_INDEX 30
309 #define AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_OUTPUT 32
312 #define AECP_OFFSET_MATRIX_DESCRIPTOR_TYPE 24
313 #define AECP_OFFSET_MATRIX_DESCRIPTOR_INDEX 26
314 #define AECP_OFFSET_MATRIX_MATRIX_COLUMN 28
315 #define AECP_OFFSET_MATRIX_MATRIX_ROW 30
316 #define AECP_OFFSET_MATRIX_REGION_WIDTH 32
317 #define AECP_OFFSET_MATRIX_REGION_HEIGHT 34
318 #define AECP_OFFSET_MATRIX_REP 36
319 #define AECP_OFFSET_MATRIX_DIRECTION 36
320 #define AECP_OFFSET_MATRIX_VALUE_COUNT 36
321 #define AECP_OFFSET_MATRIX_ITEM_OFFSET 38
322 #define AECP_OFFSET_MATRIX_VALUES 40
324 /* START/STOP_STREAMING */
325 #define AECP_OFFSET_STREAMING_DESCRIPTOR_TYPE 24
326 #define AECP_OFFSET_STREAMING_DESCRIPTOR_INDEX 26
328 /* REGISTER/DEREGISTER_UNSOLICITED_NOTIFICATION */
329 /* No additional fields */
331 /* IDENTIFY_NOTIFICATION */
332 #define AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_TYPE 24
333 #define AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_INDEX 26
336 #define AECP_OFFSET_AVB_INFO_DESCRIPTOR_TYPE 24
337 #define AECP_OFFSET_AVB_INFO_DESCRIPTOR_INDEX 26
338 #define AECP_OFFSET_AVB_INFO_AS_GRANDMASTER_ID 28
339 #define AECP_OFFSET_AVB_INFO_PROPAGATION_DELAY 36
340 #define AECP_OFFSET_AVB_INFO_AS_DOMAIN_NUMBER 40
341 #define AECP_OFFSET_AVB_INFO_FLAGS 41
342 #define AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS_COUNT 42
343 #define AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS 44
346 #define AECP_OFFSET_AS_PATH_DESCRIPTOR_INDEX 24
347 #define AECP_OFFSET_AS_PATH_COUNT 26
348 #define AECP_OFFSET_AS_PATH_PATH_SEQUENCE 28
351 #define AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE 24
352 #define AECP_OFFSET_COUNTERS_DESCRIPTOR_INDEX 26
353 #define AECP_OFFSET_COUNTERS_VALID 28
354 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_UP 32
355 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_DOWN 36
356 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_TX 40
357 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_RX 44
358 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_RX_CRC_ERROR 48
359 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_GPTP_GM_CHANGED 52
360 #define AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_LOCKED 32
361 #define AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_UNLOCKED 36
362 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_LOCKED 32
363 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_UNLOCKED 36
364 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_STREAM_RESET 40
365 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_SEQ_NUM_MISMATCH 44
366 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_RESET 48
367 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_UNCERTAIN 52
368 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_VALID 56
369 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_NOT_VALID 60
370 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_UNSUPPORTED_FORMAT 64
371 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_LATE_TIMESTAMP 68
372 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_EARLY_TIMESTAMP 72
373 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_TX 76
374 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_RX 80
375 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_8 128
376 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_7 132
377 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_6 136
378 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_5 140
379 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_4 144
380 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_3 148
381 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_2 152
382 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_1 156
384 /* GET_AUDIO_MAP, GET_VIDEO_MAP, GET_SENSOR_MAP */
385 #define AECP_OFFSET_MAP_DESCRIPTOR_TYPE 24
386 #define AECP_OFFSET_MAP_DESCRIPTOR_INDEX 26
387 #define AECP_OFFSET_MAP_MAP_INDEX 28
388 #define AECP_OFFSET_MAP_NUMBER_OF_MAPS 30
389 #define AECP_OFFSET_MAP_NUMBER_OF_MAPPINGS 32
390 #define AECP_OFFSET_MAP_MAPPINGS 36
392 /* ADD/REMOVE_AUDIO_MAPPINGS, ADD/REMOVE_VIDEO_MAPPINGS, ADD/REMOVE_SENSOR_MAPPINGS */
393 #define AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_TYPE 24
394 #define AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_INDEX 26
395 #define AECP_OFFSET_ADDREM_MAP_NUMBER_OF_MAPPINGS 28
396 #define AECP_OFFSET_ADDREM_MAP_MAPPINGS 32
398 /* START_OPERATION */
399 #define AECP_OFFSET_START_OPERATION_DESCRIPTOR_TYPE 24
400 #define AECP_OFFSET_START_OPERATION_DESCRIPTOR_INDEX 26
401 #define AECP_OFFSET_START_OPERATION_OPERATION_ID 28
402 #define AECP_OFFSET_START_OPERATION_OPERATION_TYPE 30
403 #define AECP_OFFSET_START_OPERATION_VALUES 32
405 /* ABORT_OPERATION */
406 #define AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_TYPE 24
407 #define AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_INDEX 26
408 #define AECP_OFFSET_ABORT_OPERATION_OPERATION_ID 28
410 /* OPERATION_STATUS */
411 #define AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_TYPE 24
412 #define AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_INDEX 26
413 #define AECP_OFFSET_OPERATION_STATUS_OPERATION_ID 28
414 #define AECP_OFFSET_OPERATION_STATUS_PERCENT_COMPLETE 30
416 /* AUTH_ADD/DELETE_KEY, AUTH_GET_KEY */
417 #define AECP_OFFSET_AUTH_KEY_KEY_EUI 24
418 #define AECP_OFFSET_AUTH_KEY_KEY_TYPE 32
419 #define AECP_OFFSET_AUTH_KEY_KEY_LENGTH 32
420 #define AECP_OFFSET_AUTH_KEY_KEY 36
422 /* AUTH_GET_KEY_LIST */
423 #define AECP_OFFSET_AUTH_GET_KEY_LIST_KEYCHAIN_ID 24
424 #define AECP_OFFSET_AUTH_GET_KEY_LIST_NUMBER_OF_KEYS 24
426 /* AUTH_ADD_KEY_TO_KEYCHAIN, AUTH_DELETE_KEY_FROM_KEYCHAIN */
427 #define AECP_OFFSET_AUTH_KEYCHAIN_KEYCHAIN_ID 24
428 #define AECP_OFFSET_AUTH_KEYCHAIN_KEY_EUI 28
430 /* AUTH_GET_KEYCHAIN_LIST */
431 #define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_KEYCHAIN_ID 24
432 #define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_LIST_INDEX 26
433 #define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_LISTS 28
434 #define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_KEYS 30
435 #define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_KEY_EUIS 32
437 /* AUTH_GET_IDENTITY */
438 #define AECP_OFFSET_AUTH_GET_IDENTITY_KEY_GUID 24
439 #define AECP_OFFSET_AUTH_GET_IDENTITY_SIGNATURE 32
441 /* AUTH_ADD/DELETE_TOKEN */
442 #define AECP_OFFSET_AUTH_TOKEN_TOKEN_LENGTH 24
443 #define AECP_OFFSET_AUTH_TOKEN_AUTHENTICATION_TOKEN 28
445 /* AUTHENTICATE/DEAUTHENTICATE */
446 #define AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_TYPE 24
447 #define AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_INDEX 26
448 #define AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH 28
449 #define AECP_OFFSET_AUTHENTICATE_AUTH_TOKEN 32
451 /* ENABLE/DISABLE_TRANSPORT_SECURITY */
452 #define AECP_OFFSET_TRANSPORT_SECURITY_KEY_EUI 24
454 /* ENABLE/DISABLE_STREAM_ENCRYPTION */
455 #define AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_TYPE 24
456 #define AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_INDEX 26
457 #define AECP_OFFSET_STREAM_ENCRYPTION_KEY_EUI 28
459 /* Set/Get Stream Backup */
460 #define AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_TYPE 24
461 #define AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_INDEX 26
462 #define AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_0 28
463 #define AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_0 36
464 #define AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_1 40
465 #define AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_1 48
466 #define AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_2 52
467 #define AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_2 60
468 #define AECP_OFFSET_STREAM_BACKEDUP_TALKER_ENTITY_ID 64
469 #define AECP_OFFSET_STREAM_BACKEDUP_TALKER_UNIQUE_ID 72
471 /* aecp_message_type */
472 /* 1722.1 draft 2011-11-14 table 9.1 */
473 #define AECP_AEM_COMMAND_MESSAGE 0
474 #define AECP_AEM_RESPONSE_MESSAGE 1
475 #define AECP_ADDRESS_ACCESS_COMMAND_MESSAGE 2
476 #define AECP_ADDRESS_ACCESS_RESPONSE_MESSAGE 3
477 #define AECP_AVC_COMMAND_MESSAGE 4
478 #define AECP_AVC_RESPONSE_MESSAGE 5
479 #define AECP_VENDOR_UNIQUE_COMMAND_MESSAGE 6
480 #define AECP_VENDOR_UNIQUE_RESPONSE_MESSAGE 7
481 #define AECP_EXTENDED_COMMAND_MESSAGE 14
482 #define AECP_EXTENDED_RESPONSE_MESSAGE 15
484 /* aecp status field */
485 /* 1722.1 draft 2011-11-14 table 9.2 */
486 #define AECP_STATUS_SUCCESS 0
487 #define AECP_STATUS_NOT_IMPLEMENTED 1
489 /* AECP Address Type */
490 /* 1722.1 draft 2011-11-14 sec 7.4.35.1 table 7.82 */
491 #define AECP_ADDRESS_MAC 0x0000
492 #define AECP_ADDRESS_IPV4 0x0001
493 #define AECP_ADDRESS_IPV6 0x0002
495 /* AECP Direction Field Values */
496 /* 1722.1 draft 2011-11-14 table 7.78 */
497 #define AECP_DIRECTION_HORIZONTAL 0
498 #define AECP_DIRECTION_VERTICAL 1
500 /* AECP Keychain Type Values */
501 /* 1722.1 draft 2011-11-14 table 7.80 */
502 #define AECP_KEYCHAIN_NONE 0x0
503 #define AECP_KEYCHAIN_MANUFACTURER 0x1
504 #define AECP_KEYCHAIN_PRODUCT 0x2
505 #define AECP_KEYCHAIN_ENTITY 0x3
506 #define AECP_KEYCHAIN_USER 0x4
508 /* AECP Command Codes */
509 /* IEEE 1722.1 draft D21 Table 7.126 */
510 #define AECP_COMMAND_ACQUIRE_ENTITY 0x0000
511 #define AECP_COMMAND_LOCK_ENTITY 0x0001
512 #define AECP_COMMAND_ENTITY_AVAILABLE 0x0002
513 #define AECP_COMMAND_CONTROLLER_AVAILABLE 0x0003
514 #define AECP_COMMAND_READ_DESCRIPTOR 0x0004
515 #define AECP_COMMAND_WRITE_DESCRIPTOR 0x0005
516 #define AECP_COMMAND_SET_CONFIGURATION 0x0006
517 #define AECP_COMMAND_GET_CONFIGURATION 0x0007
518 #define AECP_COMMAND_SET_STREAM_FORMAT 0x0008
519 #define AECP_COMMAND_GET_STREAM_FORMAT 0x0009
520 #define AECP_COMMAND_SET_VIDEO_FORMAT 0x000a
521 #define AECP_COMMAND_GET_VIDEO_FORMAT 0x000b
522 #define AECP_COMMAND_SET_SENSOR_FORMAT 0x000c
523 #define AECP_COMMAND_GET_SENSOR_FORMAT 0x000d
524 #define AECP_COMMAND_SET_STREAM_INFO 0x000e
525 #define AECP_COMMAND_GET_STREAM_INFO 0x000f
526 #define AECP_COMMAND_SET_NAME 0x0010
527 #define AECP_COMMAND_GET_NAME 0x0011
528 #define AECP_COMMAND_SET_ASSOCIATION_ID 0x0012
529 #define AECP_COMMAND_GET_ASSOCIATION_ID 0x0013
530 #define AECP_COMMAND_SET_SAMPLING_RATE 0x0014
531 #define AECP_COMMAND_GET_SAMPLING_RATE 0x0015
532 #define AECP_COMMAND_SET_CLOCK_SOURCE 0x0016
533 #define AECP_COMMAND_GET_CLOCK_SOURCE 0x0017
534 #define AECP_COMMAND_SET_CONTROL_VALUE 0x0018
535 #define AECP_COMMAND_GET_CONTROL_VALUE 0x0019
536 #define AECP_COMMAND_INCREMENT_CONTROL 0x001a
537 #define AECP_COMMAND_DECREMENT_CONTROL 0x001b
538 #define AECP_COMMAND_SET_SIGNAL_SELECTOR 0x001c
539 #define AECP_COMMAND_GET_SIGNAL_SELECTOR 0x001d
540 #define AECP_COMMAND_SET_MIXER 0x001e
541 #define AECP_COMMAND_GET_MIXER 0x001f
542 #define AECP_COMMAND_SET_MATRIX 0x0020
543 #define AECP_COMMAND_GET_MATRIX 0x0021
544 #define AECP_COMMAND_START_STREAMING 0x0022
545 #define AECP_COMMAND_STOP_STREAMING 0x0023
546 #define AECP_COMMAND_REGISTER_UNSOL_NOTIFICATION 0x0024
547 #define AECP_COMMAND_DEREGISTER_UNSOL_NOTIFICATION 0x0025
548 #define AECP_COMMAND_IDENTIFY_NOTIFICATION 0x0026
549 #define AECP_COMMAND_GET_AVB_INFO 0x0027
550 #define AECP_COMMAND_GET_AS_PATH 0x0028
551 #define AECP_COMMAND_GET_COUNTERS 0x0029
552 #define AECP_COMMAND_REBOOT 0x002a
553 #define AECP_COMMAND_GET_AUDIO_MAP 0x002b
554 #define AECP_COMMAND_ADD_AUDIO_MAPPINGS 0x002c
555 #define AECP_COMMAND_REMOVE_AUDIO_MAPPINGS 0x002d
556 #define AECP_COMMAND_GET_VIDEO_MAP 0x002e
557 #define AECP_COMMAND_ADD_VIDEO_MAPPINGS 0x002f
558 #define AECP_COMMAND_REMOVE_VIDEO_MAPPINGS 0x0030
559 #define AECP_COMMAND_GET_SENSOR_MAP 0x0031
560 #define AECP_COMMAND_ADD_SENSOR_MAPPINGS 0x0032
561 #define AECP_COMMAND_REMOVE_SENSOR_MAPPINGS 0x0033
562 #define AECP_COMMAND_START_OPERATION 0x0034
563 #define AECP_COMMAND_ABORT_OPERATION 0x0035
564 #define AECP_COMMAND_OPERATION_STATUS 0x0036
565 #define AECP_COMMAND_AUTH_ADD_KEY 0x0037
566 #define AECP_COMMAND_AUTH_DELETE_KEY 0x0038
567 #define AECP_COMMAND_AUTH_GET_KEY_LIST 0x0039
568 #define AECP_COMMAND_AUTH_GET_KEY 0x003a
569 #define AECP_COMMAND_AUTH_ADD_KEY_TO_CHAIN 0x003b
570 #define AECP_COMMAND_AUTH_DELETE_KEY_FROM_CHAIN 0x003c
571 #define AECP_COMMAND_AUTH_GET_KEYCHAIN_LIST 0x003d
572 #define AECP_COMMAND_AUTH_GET_IDENTITY 0x003e
573 #define AECP_COMMAND_AUTH_ADD_TOKEN 0x003f
574 #define AECP_COMMAND_AUTH_DELETE_TOKEN 0x0040
575 #define AECP_COMMAND_AUTHENTICATE 0x0041
576 #define AECP_COMMAND_DEAUTHENTICATE 0x0042
577 #define AECP_COMMAND_ENABLE_TRANSPORT_SECURITY 0x0043
578 #define AECP_COMMAND_DISABLE_TRANSPORT_SECURITY 0x0044
579 #define AECP_COMMAND_ENABLE_STREAM_ENCRYPTION 0x0045
580 #define AECP_COMMAND_DISABLE_STREAM_ENCRYPTION 0x0046
581 #define AECP_COMMAND_SET_STREAM_BACKUP 0x0049
582 #define AECP_COMMAND_GET_STREAM_BACKUP 0x004a
583 /* 0x002e - 0x7ffe RESERVED for future use */
584 #define AECP_COMMAND_EXPANSION 0x7fff /* reserved */
586 /* AEM common format packet STATUS field values */
587 /* IEEE 1722.1 draft D21 Table 7.127 */
588 #define AEM_STATUS_SUCCESS 0
589 #define AEM_STATUS_NOT_IMPLEMENTED 1
590 #define AEM_STATUS_NO_SUCH_DESCRIPTOR 2
591 #define AEM_STATUS_ENTITY_LOCKED 3
592 #define AEM_STATUS_ENTITY_ACQUIRED 4
593 #define AEM_STATUS_NOT_AUTHENTICATED 5
594 #define AEM_STATUS_AUTHENTICATION_DISABLED 6
595 #define AEM_STATUS_BAD_ARGUMENTS 7
596 #define AEM_STATUS_NO_RESOURCES 8
597 #define AEM_STATUS_IN_PROGRESS 9
598 #define AEM_STATUS_ENTITY_MISBEHAVING 10
599 #define AEM_STATUS_NOT_SUPPORTED 11
600 #define AEM_STATUS_STREAM_IS_RUNNING 12
601 /* 10 - 31 RESERVED */
603 /* AEM descriptor indices */
604 /* IEEE 1722.1 draft D21 TABLE 7.1 */
605 #define AEM_DESCRIPTOR_ENTITY 0x0000
606 #define AEM_DESCRIPTOR_CONFIGURATION 0x0001
607 #define AEM_DESCRIPTOR_AUDIO_UNIT 0x0002
608 #define AEM_DESCRIPTOR_VIDEO_UNIT 0x0003
609 #define AEM_DESCRIPTOR_SENSOR_UNIT 0x0004
610 #define AEM_DESCRIPTOR_STREAM_INPUT 0x0005
611 #define AEM_DESCRIPTOR_STREAM_OUTPUT 0x0006
612 #define AEM_DESCRIPTOR_JACK_INPUT 0x0007
613 #define AEM_DESCRIPTOR_JACK_OUTPUT 0x0008
614 #define AEM_DESCRIPTOR_AVB_INTERFACE 0x0009
615 #define AEM_DESCRIPTOR_CLOCK_SOURCE 0x000a
616 #define AEM_DESCRIPTOR_MEMORY_OBJECT 0x000b
617 #define AEM_DESCRIPTOR_LOCALE 0x000c
618 #define AEM_DESCRIPTOR_STRINGS 0x000d
619 #define AEM_DESCRIPTOR_STREAM_PORT_INPUT 0x000e
620 #define AEM_DESCRIPTOR_STREAM_PORT_OUTPUT 0x000f
621 #define AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT 0x0010
622 #define AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT 0x0011
623 #define AEM_DESCRIPTOR_INTERNAL_PORT_INPUT 0x0012
624 #define AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT 0x0013
625 #define AEM_DESCRIPTOR_AUDIO_CLUSTER 0x0014
626 #define AEM_DESCRIPTOR_VIDEO_CLUSTER 0x0015
627 #define AEM_DESCRIPTOR_SENSOR_CLUSTER 0x0016
628 #define AEM_DESCRIPTOR_AUDIO_MAP 0x0017
629 #define AEM_DESCRIPTOR_VIDEO_MAP 0x0018
630 #define AEM_DESCRIPTOR_SENSOR_MAP 0x0019
631 #define AEM_DESCRIPTOR_CONTROL 0x001a
632 #define AEM_DESCRIPTOR_SIGNAL_SELECTOR 0x001b
633 #define AEM_DESCRIPTOR_MIXER 0x001c
634 #define AEM_DESCRIPTOR_MATRIX 0x001d
635 #define AEM_DESCRIPTOR_MATRIX_SIGNAL 0x001e
636 #define AEM_DESCRIPTOR_SIGNAL_SPLITTER 0x001f
637 #define AEM_DESCRIPTOR_SIGNAL_COMBINER 0x0020
638 #define AEM_DESCRIPTOR_SIGNAL_DEMULTIPLEXER 0x0021
639 #define AEM_DESCRIPTOR_SIGNAL_MULTIPLEXER 0x0022
640 #define AEM_DESCRIPTOR_SIGNAL_TRANSCODER 0x0023
641 #define AEM_DESCRIPTOR_CLOCK_DOMAIN 0x0024
642 #define AEM_DESCRIPTOR_CONTROL_BLOCK 0x0025
643 #define AEM_DESCRIPTOR_INVALID 0xFFFF
646 /* IEEE 1722.1 draft D21 TABLE 7.12 */
647 #define AEM_JACKTYPE_SPEAKER 0x0000
648 #define AEM_JACKTYPE_HEADPHONE 0x0001
649 #define AEM_JACKTYPE_ANALOG_MICROPHONE 0x0002
650 #define AEM_JACKTYPE_SPDIF 0x0003
651 #define AEM_JACKTYPE_ADAT 0x0004
652 #define AEM_JACKTYPE_TDIF 0x0005
653 #define AEM_JACKTYPE_MADI 0x0006
654 #define AEM_JACKTYPE_UNBALANCED_ANALOG 0x0007
655 #define AEM_JACKTYPE_BALANCED_ANALOG 0x0008
656 #define AEM_JACKTYPE_DIGITAL 0x0009
657 #define AEM_JACKTYPE_MIDI 0x000a
658 #define AEM_JACKTYPE_AES_EBU 0x000b
659 #define AEM_JACKTYPE_COMPOSITE_VIDEO 0x000c
660 #define AEM_JACKTYPE_S_VHS_VIDEO 0x000d
661 #define AEM_JACKTYPE_COMPONENT_VIDEO 0x000e
662 #define AEM_JACKTYPE_DVI 0x000f
663 #define AEM_JACKTYPE_HDMI 0x0010
664 #define AEM_JACKTYPE_UDI 0x0011
665 #define AEM_JACKTYPE_DISPLAYPORT 0x0012
666 #define AEM_JACKTYPE_ANTENNA 0x0013
667 #define AEM_JACKTYPE_ANALOG_TUNER 0x0014
668 #define AEM_JACKTYPE_ETHERNET 0x0015
669 #define AEM_JACKTYPE_WIFI 0x0016
670 #define AEM_JACKTYPE_USB 0x0017
671 #define AEM_JACKTYPE_PCI 0x0018
672 #define AEM_JACKTYPE_PCI_E 0x0019
673 #define AEM_JACKTYPE_SCSI 0x001a
674 #define AEM_JACKTYPE_ATA 0x001b
675 #define AEM_JACKTYPE_IMAGER 0x001c
676 #define AEM_JACKTYPE_IR 0x001d
677 #define AEM_JACKTYPE_THUNDERBOLT 0x001e
678 #define AEM_JACKTYPE_SATA 0x001f
679 #define AEM_JACKTYPE_SMPTE_LTC 0x0020
680 #define AEM_JACKTYPE_DIGITAL_MICROPHONE 0x0021
683 /* IEEE 1722.1 draft D21 TABLE 7.94 */
684 #define AEM_CONTROL_ENABLE 0x90e0f00000000000
685 #define AEM_CONTROL_IDENTIFY 0x90e0f00000000001
686 #define AEM_CONTROL_MUTE 0x90e0f00000000002
687 #define AEM_CONTROL_INVERT 0x90e0f00000000003
688 #define AEM_CONTROL_GAIN 0x90e0f00000000004
689 #define AEM_CONTROL_ATTENUATE 0x90e0f00000000005
690 #define AEM_CONTROL_DELAY 0x90e0f00000000006
691 #define AEM_CONTROL_SRC_MODE 0x90e0f00000000007
692 #define AEM_CONTROL_SNAPSHOT 0x90e0f00000000008
693 #define AEM_CONTROL_POW_LINE_FREQ 0x90e0f00000000009
694 #define AEM_CONTROL_POWER_STATUS 0x90e0f0000000000a
695 #define AEM_CONTROL_FAN_STATUS 0x90e0f0000000000b
696 #define AEM_CONTROL_TEMPERATURE 0x90e0f0000000000c
697 #define AEM_CONTROL_ALTITUDE 0x90e0f0000000000d
698 #define AEM_CONTROL_ABSOLUTE_HUMIDITY 0x90e0f0000000000e
699 #define AEM_CONTROL_RELATIVE_HUMIDITY 0x90e0f0000000000f
700 #define AEM_CONTROL_ORIENTATION 0x90e0f00000000010
701 #define AEM_CONTROL_VELOCITY 0x90e0f00000000011
702 #define AEM_CONTROL_ACCELERATION 0x90e0f00000000012
703 #define AEM_CONTROL_FILTER_RESPONSE 0x90e0f00000000013
704 /* 0x90e0f00000000014 - 0x90e0f0000000ffff reserved */
705 #define AEM_CONTROL_PANPOT 0x90e0f00000010000
706 #define AEM_CONTROL_PHANTOM 0x90e0f00000010001
707 #define AEM_CONTROL_AUDIO_SCALE 0x90e0f00000010002
708 #define AEM_CONTROL_AUDIO_METERS 0x90e0f00000010003
709 #define AEM_CONTROL_AUDIO_SPECTRUM 0x90e0f00000010004
710 /* 0x90e0f00000010005 - 0x90e0f0000001ffff reserved */
711 #define AEM_CONTROL_SCANNING_MODE 0x90e0f00000020000
712 #define AEM_CONTROL_AUTO_EXP_MODE 0x90e0f00000020001
713 #define AEM_CONTROL_AUTO_EXP_PRIO 0x90e0f00000020002
714 #define AEM_CONTROL_EXP_TIME 0x90e0f00000020003
715 #define AEM_CONTROL_FOCUS 0x90e0f00000020004
716 #define AEM_CONTROL_FOCUS_AUTO 0x90e0f00000020005
717 #define AEM_CONTROL_IRIS 0x90e0f00000020006
718 #define AEM_CONTROL_ZOOM 0x90e0f00000020007
719 #define AEM_CONTROL_PRIVACY 0x90e0f00000020008
720 #define AEM_CONTROL_BACKLIGHT 0x90e0f00000020009
721 #define AEM_CONTROL_BRIGHTNESS 0x90e0f0000002000a
722 #define AEM_CONTROL_CONTRAST 0x90e0f0000002000b
723 #define AEM_CONTROL_HUE 0x90e0f0000002000c
724 #define AEM_CONTROL_SATURATION 0x90e0f0000002000d
725 #define AEM_CONTROL_SHARPNESS 0x90e0f0000002000e
726 #define AEM_CONTROL_GAMMA 0x90e0f0000002000f
727 #define AEM_CONTROL_WHITE_BAL_TEMP 0x90e0f00000020010
728 #define AEM_CONTROL_WHITE_BAL_TEMP_AUTO 0x90e0f00000020011
729 #define AEM_CONTROL_WHITE_BAL_COMP 0x90e0f00000020012
730 #define AEM_CONTROL_WHITE_BAL_COMP_AUTO 0x90e0f00000020013
731 #define AEM_CONTROL_DIGITAL_ZOOM 0x90e0f00000020014
732 /* 0x90e0f00000020015 - 0x90e0f0000002ffff reserved */
733 #define AEM_CONTROL_MEDIA_PLAYLIST 0x90e0f00000030000
734 #define AEM_CONTROL_MEDIA_PLAYLIST_NAME 0x90e0f00000030001
735 #define AEM_CONTROL_MEDIA_DISK 0x90e0f00000030002
736 #define AEM_CONTROL_MEDIA_DISK_NAME 0x90e0f00000030003
737 #define AEM_CONTROL_MEDIA_TRACK 0x90e0f00000030004
738 #define AEM_CONTROL_MEDIA_TRACK_NAME 0x90e0f00000030005
739 #define AEM_CONTROL_MEDIA_SPEED 0x90e0f00000030006
740 #define AEM_CONTROL_MEDIA_SAMPLE_POSITION 0x90e0f00000030007
741 #define AEM_CONTROL_MEDIA_PLAYBACK_TRANSPORT 0x90e0f00000030008
742 #define AEM_CONTROL_MEDIA_RECORD_TRANSPORT 0x90e0f00000030009
743 /* 0x90e0f0000003000a - 0x90e0f0000003ffff reserved */
744 #define AEM_CONTROL_FREQUENCY 0x90e0f00000040000
745 #define AEM_CONTROL_MODULATION 0x90e0f00000040001
746 #define AEM_CONTROL_POLARIZATION 0x90e0f00000040002
747 /* 0x90e0f00000040003 - 0x90e0f0ffffffffff reserved */
749 /* AEM Control Value Types */
750 /* IEEE 1722.1 draft D21 TABLE 7.106 */
751 #define AEM_CONTROL_LINEAR_INT8 0x0000
752 #define AEM_CONTROL_LINEAR_UINT8 0x0001
753 #define AEM_CONTROL_LINEAR_INT16 0x0002
754 #define AEM_CONTROL_LINEAR_UINT16 0x0003
755 #define AEM_CONTROL_LINEAR_INT32 0x0004
756 #define AEM_CONTROL_LINEAR_UINT32 0x0005
757 #define AEM_CONTROL_LINEAR_INT64 0x0006
758 #define AEM_CONTROL_LINEAR_UINT64 0x0007
759 #define AEM_CONTROL_LINEAR_FLOAT 0x0008
760 #define AEM_CONTROL_LINEAR_DOUBLE 0x0009
761 #define AEM_CONTROL_SELECTOR_INT8 0x000a
762 #define AEM_CONTROL_SELECTOR_UINT8 0x000b
763 #define AEM_CONTROL_SELECTOR_INT16 0x000c
764 #define AEM_CONTROL_SELECTOR_UINT16 0x000d
765 #define AEM_CONTROL_SELECTOR_INT32 0x000e
766 #define AEM_CONTROL_SELECTOR_UINT32 0x000f
767 #define AEM_CONTROL_SELECTOR_INT64 0x0010
768 #define AEM_CONTROL_SELECTOR_UINT64 0x0011
769 #define AEM_CONTROL_SELECTOR_FLOAT 0x0012
770 #define AEM_CONTROL_SELECTOR_DOUBLE 0x0013
771 #define AEM_CONTROL_SELECTOR_STRING 0x0014
772 #define AEM_CONTROL_ARRAY_INT8 0x0015
773 #define AEM_CONTROL_ARRAY_UINT8 0x0016
774 #define AEM_CONTROL_ARRAY_INT16 0x0017
775 #define AEM_CONTROL_ARRAY_UINT16 0x0018
776 #define AEM_CONTROL_ARRAY_INT32 0x0019
777 #define AEM_CONTROL_ARRAY_UINT32 0x001a
778 #define AEM_CONTROL_ARRAY_INT64 0x001b
779 #define AEM_CONTROL_ARRAY_UINT64 0x001c
780 #define AEM_CONTROL_ARRAY_FLOAT 0x001d
781 #define AEM_CONTROL_ARRAY_DOUBLE 0x001e
782 #define AEM_CONTROL_UTF8 0x001f
783 #define AEM_CONTROL_BODE_PLOT 0x0020
784 #define AEM_CONTROL_SMPTE_TIME 0x0021
785 #define AEM_CONTROL_SAMPLE_RATE 0x0022
786 #define AEM_CONTROL_GPTP_TIME 0x0023
787 /* 0x0024-0x3ffd RESERVED Reserved for future use. */
788 #define AEM_CONTROL_VENDOR 0x3ffe
789 /* 0x3fff EXPANSION Reserved for future expansion. */
791 /* AEM CLOCK_SOURCE Types */
792 /* IEEE 1722.1 draft D21 TABLE 7.17 */
793 #define AEM_CLOCK_INTERNAL 0x0000
794 #define AEM_CLOCK_EXTERNAL 0x0001
795 #define AEM_CLOCK_INPUT_STREAM 0x0002
796 #define AEM_CLOCK_MEDIA_CLOCK_STREAM 0x0003
797 /* 0x0004-0xfffe RESERVED Reserved for future use. */
798 /* 0xffff EXPANSION Reserved for future expansion. */
800 /* AEM Stream Format Definitions */
801 /* IEEE 1722.1 draft D21 TABLE 7.65 */
802 #define IEC_61883_IIDC_SUBTYPE 0x00
803 #define MMA_SUBTYPE 0x01
804 #define AVTP_AUDIO_SUBTYPE 0x02
805 #define AVTP_VIDEO_SUBTYPE 0x03
806 #define AVTP_CONTROL_SUBTYPE 0x04
807 /* 0x05-0x7e RESERVED Reserved for future protocols. */
808 #define EXPERIMENTAL_SUBTYPE 0x7f
811 /* AEM Descriptor Offsets */
812 /* IEEE 1722.1 draft D21 sections 7.2.1 - 7.2.33 */
813 #define AEM_OFFSET_DESCRIPTOR_TYPE 0
814 #define AEM_OFFSET_DESCRIPTOR_ID 2
816 #define ENTITY_OFFSET_ENTITY_GUID 4
817 #define ENTITY_OFFSET_ENTITY_MODEL_ID 12
818 #define ENTITY_OFFSET_ENTITY_CAPABILITIES 20
819 #define ENTITY_OFFSET_TALKER_STREAM_SOURCES 24
820 #define ENTITY_OFFSET_TALKER_CAPABILITIES 26
821 #define ENTITY_OFFSET_LISTENER_STREAM_SINKS 28
822 #define ENTITY_OFFSET_LISTENER_CAPABILITIES 30
823 #define ENTITY_OFFSET_CONTROLLER_CAPABILITIES 32
824 #define ENTITY_OFFSET_AVAILABLE_INDEX 36
825 #define ENTITY_OFFSET_ASSOCIATION_ID 40
826 #define ENTITY_OFFSET_ENTITY_NAME 48
827 #define ENTITY_OFFSET_VENDOR_NAME_STRING 112
828 #define ENTITY_OFFSET_MODEL_NAME_STRING 114
829 #define ENTITY_OFFSET_FIRMWARE_VERSION 116
830 #define ENTITY_OFFSET_GROUP_NAME 180
831 #define ENTITY_OFFSET_SERIAL_NUMBER 244
832 #define ENTITY_OFFSET_CONFIGURATIONS_COUNT 308
833 #define ENTITY_OFFSET_CURRENT_CONFIGURATION 310
835 #define CONFIGURATION_OFFSET_OBJECT_NAME 4
836 #define CONFIGURATION_OFFSET_LOCALIZED_DESCRIPTION 68
837 #define CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_COUNT 70
838 #define CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_OFFSET 72
839 #define CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS 74
841 #define AUDIO_UNIT_OFFSET_OBJECT_NAME 4
842 #define AUDIO_UNIT_OFFSET_LOCALIZED_DESCRIPTION 68
843 #define AUDIO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX 70
844 #define AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS 72
845 #define AUDIO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT 74
846 #define AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS 76
847 #define AUDIO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT 78
848 #define AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS 80
849 #define AUDIO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT 82
850 #define AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS 84
851 #define AUDIO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT 86
852 #define AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS 88
853 #define AUDIO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT 90
854 #define AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS 92
855 #define AUDIO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT 94
856 #define AUDIO_UNIT_OFFSET_NUMBER_OF_CONTROLS 96
857 #define AUDIO_UNIT_OFFSET_BASE_CONTROL 98
858 #define AUDIO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS 100
859 #define AUDIO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR 102
860 #define AUDIO_UNIT_OFFSET_NUMBER_MIXERS 104
861 #define AUDIO_UNIT_OFFSET_BASE_MIXER 106
862 #define AUDIO_UNIT_OFFSET_NUMBER_MATRICES 108
863 #define AUDIO_UNIT_OFFSET_BASE_MATRIX 110
864 #define AUDIO_UNIT_OFFSET_NUMBER_SPLITTERS 112
865 #define AUDIO_UNIT_OFFSET_BASE_SPLITTER 114
866 #define AUDIO_UNIT_OFFSET_NUMBER_COMBINERS 116
867 #define AUDIO_UNIT_OFFSET_BASE_COMBINER 118
868 #define AUDIO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS 120
869 #define AUDIO_UNIT_OFFSET_BASE_DEMULTIPLEXER 122
870 #define AUDIO_UNIT_OFFSET_NUMBER_MULTIPLEXERS 124
871 #define AUDIO_UNIT_OFFSET_BASE_MULTIPLEXER 126
872 #define AUDIO_UNIT_OFFSET_NUMBER_TRANSCODERS 128
873 #define AUDIO_UNIT_OFFSET_BASE_TRANSCODER 130
874 #define AUDIO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS 132
875 #define AUDIO_UNIT_OFFSET_BASE_CONTROL_BLOCK 134
876 #define AUDIO_UNIT_OFFSET_CURRENT_SAMPLE_RATE 136
877 #define AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET 140
878 #define AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT 142
880 #define VIDEO_UNIT_OFFSET_OBJECT_NAME 4
881 #define VIDEO_UNIT_OFFSET_LOCALIZED_DESCRIPTION 68
882 #define VIDEO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX 70
883 #define VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS 72
884 #define VIDEO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT 74
885 #define VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS 76
886 #define VIDEO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT 78
887 #define VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS 80
888 #define VIDEO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT 82
889 #define VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS 84
890 #define VIDEO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT 86
891 #define VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS 88
892 #define VIDEO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT 90
893 #define VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS 92
894 #define VIDEO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT 94
895 #define VIDEO_UNIT_OFFSET_NUMBER_OF_CONTROLS 96
896 #define VIDEO_UNIT_OFFSET_BASE_CONTROL 98
897 #define VIDEO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS 100
898 #define VIDEO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR 102
899 #define VIDEO_UNIT_OFFSET_NUMBER_MIXERS 104
900 #define VIDEO_UNIT_OFFSET_BASE_MIXER 106
901 #define VIDEO_UNIT_OFFSET_NUMBER_MATRICES 108
902 #define VIDEO_UNIT_OFFSET_BASE_MATRIX 110
903 #define VIDEO_UNIT_OFFSET_NUMBER_SPLITTERS 112
904 #define VIDEO_UNIT_OFFSET_BASE_SPLITTER 114
905 #define VIDEO_UNIT_OFFSET_NUMBER_COMBINERS 116
906 #define VIDEO_UNIT_OFFSET_BASE_COMBINER 118
907 #define VIDEO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS 120
908 #define VIDEO_UNIT_OFFSET_BASE_DEMULTIPLEXER 122
909 #define VIDEO_UNIT_OFFSET_NUMBER_MULTIPLEXERS 124
910 #define VIDEO_UNIT_OFFSET_BASE_MULTIPLEXER 126
911 #define VIDEO_UNIT_OFFSET_NUMBER_TRANSCODERS 128
912 #define VIDEO_UNIT_OFFSET_BASE_TRANSCODER 130
913 #define VIDEO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS 132
914 #define VIDEO_UNIT_OFFSET_BASE_CONTROL_BLOCK 134
916 #define SENSOR_UNIT_OFFSET_OBJECT_NAME 4
917 #define SENSOR_UNIT_OFFSET_LOCALIZED_DESCRIPTION 68
918 #define SENSOR_UNIT_OFFSET_CLOCK_DOMAIN_INDEX 70
919 #define SENSOR_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS 72
920 #define SENSOR_UNIT_OFFSET_BASE_STREAM_INPUT_PORT 74
921 #define SENSOR_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS 76
922 #define SENSOR_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT 78
923 #define SENSOR_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS 80
924 #define SENSOR_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT 82
925 #define SENSOR_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS 84
926 #define SENSOR_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT 86
927 #define SENSOR_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS 88
928 #define SENSOR_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT 90
929 #define SENSOR_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS 92
930 #define SENSOR_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT 94
931 #define SENSOR_UNIT_OFFSET_NUMBER_OF_CONTROLS 96
932 #define SENSOR_UNIT_OFFSET_BASE_CONTROL 98
933 #define SENSOR_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS 100
934 #define SENSOR_UNIT_OFFSET_BASE_SIGNAL_SELECTOR 102
935 #define SENSOR_UNIT_OFFSET_NUMBER_MIXERS 104
936 #define SENSOR_UNIT_OFFSET_BASE_MIXER 106
937 #define SENSOR_UNIT_OFFSET_NUMBER_MATRICES 108
938 #define SENSOR_UNIT_OFFSET_BASE_MATRIX 110
939 #define SENSOR_UNIT_OFFSET_NUMBER_SPLITTERS 112
940 #define SENSOR_UNIT_OFFSET_BASE_SPLITTER 114
941 #define SENSOR_UNIT_OFFSET_NUMBER_COMBINERS 116
942 #define SENSOR_UNIT_OFFSET_BASE_COMBINER 118
943 #define SENSOR_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS 120
944 #define SENSOR_UNIT_OFFSET_BASE_DEMULTIPLEXER 122
945 #define SENSOR_UNIT_OFFSET_NUMBER_MULTIPLEXERS 124
946 #define SENSOR_UNIT_OFFSET_BASE_MULTIPLEXER 126
947 #define SENSOR_UNIT_OFFSET_NUMBER_TRANSCODERS 128
948 #define SENSOR_UNIT_OFFSET_BASE_TRANSCODER 130
949 #define SENSOR_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS 132
950 #define SENSOR_UNIT_OFFSET_BASE_CONTROL_BLOCK 134
952 #define STREAM_OFFSET_OBJECT_NAME 4
953 #define STREAM_OFFSET_LOCALIZED_DESCRIPTION 68
954 #define STREAM_OFFSET_CLOCK_DOMAIN_INDEX 70
955 #define STREAM_OFFSET_STREAM_FLAGS 72
956 #define STREAM_OFFSET_CURRENT_FORMAT 74
957 #define STREAM_OFFSET_FORMATS_OFFSET 82
958 #define STREAM_OFFSET_NUMBER_OF_FORMATS 84
959 #define STREAM_OFFSET_BACKUP_TALKER_GUID_0 86
960 #define STREAM_OFFSET_BACKUP_TALKER_UNIQUE_0 94
961 #define STREAM_OFFSET_BACKUP_TALKER_GUID_1 96
962 #define STREAM_OFFSET_BACKUP_TALKER_UNIQUE_1 104
963 #define STREAM_OFFSET_BACKUP_TALKER_GUID_2 106
964 #define STREAM_OFFSET_BACKUP_TALKER_UNIQUE_2 114
965 #define STREAM_OFFSET_BACKEDUP_TALKER_GUID 116
966 #define STREAM_OFFSET_BACKEDUP_TALKER_UNIQUE_ID 124
967 #define STREAM_OFFSET_AVB_INTERFACE_ID 126
968 #define STREAM_OFFSET_BUFFER_LENGTH 128
970 #define JACK_OFFSET_OBJECT_NAME 4
971 #define JACK_OFFSET_LOCALIZED_DESCRIPTION 68
972 #define JACK_OFFSET_JACK_FLAGS 70
973 #define JACK_OFFSET_JACK_TYPE 72
974 #define JACK_OFFSET_JACK_NUMBER_OF_CONTROLS 74
975 #define JACK_OFFSET_JACK_BASE_CONTROL 76
977 #define AVB_INTERFACE_OFFSET_OBJECT_NAME 4
978 #define AVB_INTERFACE_OFFSET_LOCALIZED_DESCRIPTION 68
979 #define AVB_INTERFACE_OFFSET_MAC_ADDRESS 70
980 #define AVB_INTERFACE_OFFSET_INTERFACE_FLAGS 76
981 #define AVB_INTERFACE_OFFSET_CLOCK_IDENTITY 78
982 #define AVB_INTERFACE_OFFSET_PRIORITY1 86
983 #define AVB_INTERFACE_OFFSET_CLOCK_CLASS 87
984 #define AVB_INTERFACE_OFFSET_OFFSET_SCALED_LOG_VARIANCE 88
985 #define AVB_INTERFACE_OFFSET_CLOCK_ACCURACY 90
986 #define AVB_INTERFACE_OFFSET_PRIORITY2 91
987 #define AVB_INTERFACE_OFFSET_DOMAIN_NUMBER 92
988 #define AVB_INTERFACE_OFFSET_LOG_SYNC_INTERVAL 93
990 #define CLOCK_SOURCE_OFFSET_OBJECT_NAME 4
991 #define CLOCK_SOURCE_OFFSET_LOCALIZED_DESCRIPTION 68
992 #define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_FLAGS 70
993 #define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_TYPE 72
994 #define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_IDENTIFIER 74
995 #define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_TYPE 82
996 #define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_INDEX 84
998 #define MEMORY_OBJECT_OFFSET_OBJECT_NAME 4
999 #define MEMORY_OBJECT_OFFSET_LOCALIZED_DESCRIPTION 68
1000 #define MEMORY_OBJECT_OFFSET_MEMORY_OBJECT_TYPE 70
1001 #define MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_TYPE 72
1002 #define MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_INDEX 74
1003 #define MEMORY_OBJECT_OFFSET_START_ADDRESS 76
1004 #define MEMORY_OBJECT_OFFSET_LENGTH 84
1006 #define LOCALE_OFFSET_LOCALE_IDENTIFIER 4
1007 #define LOCALE_OFFSET_NUMBER_OF_STRINGS 68
1008 #define LOCALE_OFFSET_BASE_STRINGS 70
1010 #define STRINGS_OFFSET_STRING0 4
1012 #define STREAM_PORT_OFFSET_CLOCK_DOMAIN_INDEX 4
1013 #define STREAM_PORT_OFFSET_PORT_FLAGS 6
1014 #define STREAM_PORT_OFFSET_NUMBER_OF_CONTROLS 8
1015 #define STREAM_PORT_OFFSET_BASE_CONTROL 10
1016 #define STREAM_PORT_OFFSET_NUMBER_OF_CLUSTERS 12
1017 #define STREAM_PORT_OFFSET_BASE_CLUSTER 14
1018 #define STREAM_PORT_OFFSET_NUMBER_AUDIO_MAPS 16
1019 #define STREAM_PORT_OFFSET_BASE_AUDIO_MAP 18
1021 #define EXTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX 4
1022 #define EXTERNAL_PORT_OFFSET_PORT_FLAGS 6
1023 #define EXTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS 8
1024 #define EXTERNAL_PORT_OFFSET_BASE_CONTROL 10
1025 #define EXTERNAL_PORT_OFFSET_SIGNAL_TYPE 12
1026 #define EXTERNAL_PORT_OFFSET_SIGNAL_INDEX 14
1027 #define EXTERNAL_PORT_OFFSET_SIGNAL_OUTPUT 16
1028 #define EXTERNAL_PORT_OFFSET_BLOCK_LATENCY 18
1029 #define EXTERNAL_PORT_OFFSET_JACK_INDEX 22
1031 #define INTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX 4
1032 #define INTERNAL_PORT_OFFSET_PORT_FLAGS 6
1033 #define INTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS 8
1034 #define INTERNAL_PORT_OFFSET_BASE_CONTROL 10
1035 #define INTERNAL_PORT_OFFSET_SIGNAL_TYPE 12
1036 #define INTERNAL_PORT_OFFSET_SIGNAL_INDEX 14
1037 #define INTERNAL_PORT_OFFSET_SIGNAL_OUTPUT 16
1038 #define INTERNAL_PORT_OFFSET_BLOCK_LATENCY 18
1039 #define INTERNAL_PORT_OFFSET_INTERNAL_INDEX 22
1041 #define AUDIO_CLUSTER_OFFSET_OBJECT_NAME 4
1042 #define AUDIO_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION 68
1043 #define AUDIO_CLUSTER_OFFSET_SIGNAL_TYPE 70
1044 #define AUDIO_CLUSTER_OFFSET_SIGNAL_ID 72
1045 #define AUDIO_CLUSTER_OFFSET_SIGNAL_OUTPUT 74
1046 #define AUDIO_CLUSTER_OFFSET_PATH_LATENCY 76
1047 #define AUDIO_CLUSTER_OFFSET_BLOCK_LATENCY 80
1048 #define AUDIO_CLUSTER_OFFSET_CHANNEL_COUNT 84
1049 #define AUDIO_CLUSTER_OFFSET_FORMAT 86
1051 #define VIDEO_CLUSTER_OFFSET_OBJECT_NAME 4
1052 #define VIDEO_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION 68
1053 #define VIDEO_CLUSTER_OFFSET_SIGNAL_TYPE 70
1054 #define VIDEO_CLUSTER_OFFSET_SIGNAL_ID 72
1055 #define VIDEO_CLUSTER_OFFSET_SIGNAL_OUTPUT 74
1056 #define VIDEO_CLUSTER_OFFSET_PATH_LATENCY 76
1057 #define VIDEO_CLUSTER_OFFSET_BLOCK_LATENCY 80
1058 #define VIDEO_CLUSTER_OFFSET_FORMAT 84
1059 #define VIDEO_CLUSTER_OFFSET_CURRENT_FORMAT_SPECIFIC 85
1060 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_FORMAT_SPECIFICS_OFFSET 89
1061 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_FORMAT_SPECIFICS_COUNT 91
1062 #define VIDEO_CLUSTER_OFFSET_CURRENT_SAMPLING_RATE 93
1063 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_OFFSET 97
1064 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_COUNT 99
1065 #define VIDEO_CLUSTER_OFFSET_CURRENT_ASPECT_RATIO 101
1066 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_ASPECT_RATIOS_OFFSET 103
1067 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_ASPECT_RATIOS_COUNT 105
1068 #define VIDEO_CLUSTER_OFFSET_CURRENT_SIZE 107
1069 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_SIZES_OFFSET 111
1070 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_SIZES_COUNT 113
1071 #define VIDEO_CLUSTER_OFFSET_CURRENT_COLOR_SPACE 115
1072 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_COLOR_SPACES_OFFSET 117
1073 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_COLOR_SPACES_COUNT 119
1075 #define SENSOR_CLUSTER_OFFSET_OBJECT_NAME 4
1076 #define SENSOR_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION 68
1077 #define SENSOR_CLUSTER_OFFSET_SIGNAL_TYPE 70
1078 #define SENSOR_CLUSTER_OFFSET_SIGNAL_ID 72
1079 #define SENSOR_CLUSTER_OFFSET_SIGNAL_OUTPUT 74
1080 #define SENSOR_CLUSTER_OFFSET_PATH_LATENCY 76
1081 #define SENSOR_CLUSTER_OFFSET_BLOCK_LATENCY 80
1082 #define SENSOR_CLUSTER_OFFSET_CURRENT_FORMAT 84
1083 #define SENSOR_CLUSTER_OFFSET_SUPPORTED_FORMATS_OFFSET 92
1084 #define SENSOR_CLUSTER_OFFSET_SUPPORTED_FORMATS_COUNT 94
1085 #define SENSOR_CLUSTER_OFFSET_CURRENT_SAMPLING_RATE 96
1086 #define SENSOR_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_OFFSET 100
1087 #define SENSOR_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_COUNT 102
1089 #define AUDIO_MAP_OFFSET_MAPPINGS_OFFSET 4
1090 #define AUDIO_MAP_OFFSET_NUMBER_OF_MAPPINGS 6
1092 #define VIDEO_MAP_OFFSET_MAPPINGS_OFFSET 4
1093 #define VIDEO_MAP_OFFSET_NUMBER_OF_MAPPINGS 6
1095 #define SENSOR_MAP_OFFSET_MAPPINGS_OFFSET 4
1096 #define SENSOR_MAP_OFFSET_NUMBER_OF_MAPPINGS 6
1098 #define CONTROL_OFFSET_OBJECT_NAME 4
1099 #define CONTROL_OFFSET_LOCALIZED_DESCRIPTION 68
1100 #define CONTROL_OFFSET_BLOCK_LATENCY 70
1101 #define CONTROL_OFFSET_CONTROL_LATENCY 74
1102 #define CONTROL_OFFSET_CONTROL_DOMAIN 78
1103 #define CONTROL_OFFSET_CONTROL_VALUE_TYPE 80
1104 #define CONTROL_OFFSET_CONTROL_TYPE 82
1105 #define CONTROL_OFFSET_RESET_TIME 90
1106 #define CONTROL_OFFSET_VALUES_OFFSET 94
1107 #define CONTROL_OFFSET_NUMBER_OF_VALUES 96
1108 #define CONTROL_OFFSET_SIGNAL_TYPE 98
1109 #define CONTROL_OFFSET_SIGNAL_INDEX 100
1110 #define CONTROL_OFFSET_SIGNAL_OUTPUT 102
1112 #define SIGNAL_SELECTOR_OFFSET_OBJECT_NAME 4
1113 #define SIGNAL_SELECTOR_OFFSET_LOCALIZED_DESCRIPTION 68
1114 #define SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY 70
1115 #define SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY 74
1116 #define SIGNAL_SELECTOR_OFFSET_CONTROL_DOMAIN 78
1117 #define SIGNAL_SELECTOR_OFFSET_SOURCES_OFFSET 80
1118 #define SIGNAL_SELECTOR_OFFSET_NUMBER_OF_SOURCES 82
1119 #define SIGNAL_SELECTOR_OFFSET_CURRENT_SIGNAL_TYPE 84
1120 #define SIGNAL_SELECTOR_OFFSET_CURRENT_SIGNAL_INDEX 86
1121 #define SIGNAL_SELECTOR_OFFSET_CURRENT_SIGNAL_OUTPUT 88
1122 #define SIGNAL_SELECTOR_OFFSET_DEFAULT_SOURCE_TYPE 90
1123 #define SIGNAL_SELECTOR_OFFSET_DEFAULT_SOURCE_INDEX 92
1124 #define SIGNAL_SELECTOR_OFFSET_DEFAULT_SIGNAL_OUTPUT 94
1126 #define MIXER_OFFSET_OBJECT_NAME 4
1127 #define MIXER_OFFSET_LOCALIZED_DESCRIPTION 68
1128 #define MIXER_OFFSET_BLOCK_LATENCY 70
1129 #define MIXER_OFFSET_CONTROL_LATENCY 74
1130 #define MIXER_OFFSET_CONTROL_DOMAIN 78
1131 #define MIXER_OFFSET_CONTROL_VALUE_TYPE 80
1132 #define MIXER_OFFSET_SOURCES_OFFSET 82
1133 #define MIXER_OFFSET_NUMBER_OF_SOURCES 84
1134 #define MIXER_OFFSET_VALUE_OFFSET 86
1136 #define MATRIX_OFFSET_OBJECT_NAME 4
1137 #define MATRIX_OFFSET_LOCALIZED_DESCRIPTION 68
1138 #define MATRIX_OFFSET_BLOCK_LATENCY 70
1139 #define MATRIX_OFFSET_CONTROL_LATENCY 74
1140 #define MATRIX_OFFSET_CONTROL_DOMAIN 78
1141 #define MATRIX_OFFSET_CONTROL_VALUE_TYPE 80
1142 #define MATRIX_OFFSET_CONTROL_TYPE 82
1143 #define MATRIX_OFFSET_WIDTH 90
1144 #define MATRIX_OFFSET_HEIGHT 92
1145 #define MATRIX_OFFSET_VALUES_OFFSET 94
1146 #define MATRIX_OFFSET_NUMBER_OF_VALUES 96
1147 #define MATRIX_OFFSET_NUMBER_OF_SOURCES 98
1148 #define MATRIX_OFFSET_BASE_SOURCE 100
1150 #define MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT 4
1151 #define MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET 6
1153 #define SIGNAL_SPLITTER_OFFSET_OBJECT_NAME 4
1154 #define SIGNAL_SPLITTER_OFFSET_LOCALIZED_DESCRIPTION 68
1155 #define SIGNAL_SPLITTER_OFFSET_BLOCK_LATENCY 70
1156 #define SIGNAL_SPLITTER_OFFSET_CONTROL_LATENCY 74
1157 #define SIGNAL_SPLITTER_OFFSET_CONTROL_DOMAIN 78
1158 #define SIGNAL_SPLITTER_OFFSET_SIGNAL_TYPE 80
1159 #define SIGNAL_SPLITTER_OFFSET_SIGNAL_INDEX 82
1160 #define SIGNAL_SPLITTER_OFFSET_SIGNAL_OUTPUT 84
1161 #define SIGNAL_SPLITTER_OFFSET_NUMBER_OF_OUTPUTS 86
1162 #define SIGNAL_SPLITTER_OFFSET_SPLITTER_MAP_COUNT 88
1163 #define SIGNAL_SPLITTER_OFFSET_SPLITTER_MAP_OFFSET 90
1165 #define SIGNAL_COMBINER_OFFSET_OBJECT_NAME 4
1166 #define SIGNAL_COMBINER_OFFSET_LOCALIZED_DESCRIPTION 68
1167 #define SIGNAL_COMBINER_OFFSET_BLOCK_LATENCY 70
1168 #define SIGNAL_COMBINER_OFFSET_CONTROL_LATENCY 74
1169 #define SIGNAL_COMBINER_OFFSET_CONTROL_DOMAIN 78
1170 #define SIGNAL_COMBINER_OFFSET_COMBINER_MAP_COUNT 80
1171 #define SIGNAL_COMBINER_OFFSET_COMBINER_MAP_OFFSET 82
1172 #define SIGNAL_COMBINER_OFFSET_SOURCES_OFFSET 84
1173 #define SIGNAL_COMBINER_OFFSET_NUMBER_OF_SOURCES 86
1175 #define SIGNAL_DEMULTIPLEXER_OFFSET_OBJECT_NAME 4
1176 #define SIGNAL_DEMULTIPLEXER_OFFSET_LOCALIZED_DESCRIPTION 68
1177 #define SIGNAL_DEMULTIPLEXER_OFFSET_BLOCK_LATENCY 70
1178 #define SIGNAL_DEMULTIPLEXER_OFFSET_CONTROL_LATENCY 74
1179 #define SIGNAL_DEMULTIPLEXER_OFFSET_CONTROL_DOMAIN 78
1180 #define SIGNAL_DEMULTIPLEXER_OFFSET_SIGNAL_TYPE 80
1181 #define SIGNAL_DEMULTIPLEXER_OFFSET_SIGNAL_INDEX 82
1182 #define SIGNAL_DEMULTIPLEXER_OFFSET_SIGNAL_OUTPUT 84
1183 #define SIGNAL_DEMULTIPLEXER_OFFSET_NUMBER_OF_OUTPUTS 86
1184 #define SIGNAL_DEMULTIPLEXER_OFFSET_DEMULTIPLEXER_MAP_COUNT 88
1185 #define SIGNAL_DEMULTIPLEXER_OFFSET_DEMULTIPLEXER_MAP_OFFSET 90
1187 #define SIGNAL_MULTIPLEXER_OFFSET_OBJECT_NAME 4
1188 #define SIGNAL_MULTIPLEXER_OFFSET_LOCALIZED_DESCRIPTION 68
1189 #define SIGNAL_MULTIPLEXER_OFFSET_BLOCK_LATENCY 70
1190 #define SIGNAL_MULTIPLEXER_OFFSET_CONTROL_LATENCY 74
1191 #define SIGNAL_MULTIPLEXER_OFFSET_CONTROL_DOMAIN 78
1192 #define SIGNAL_MULTIPLEXER_OFFSET_MULTIPLEXER_MAP_COUNT 80
1193 #define SIGNAL_MULTIPLEXER_OFFSET_MULTIPLEXER_MAP_OFFSET 82
1194 #define SIGNAL_MULTIPLEXER_OFFSET_SOURCES_OFFSET 84
1195 #define SIGNAL_MULTIPLEXER_OFFSET_NUMBER_OF_SOURCES 86
1197 #define SIGNAL_TRANSCODER_OFFSET_OBJECT_NAME 4
1198 #define SIGNAL_TRANSCODER_OFFSET_LOCALIZED_DESCRIPTION 68
1199 #define SIGNAL_TRANSCODER_OFFSET_BLOCK_LATENCY 70
1200 #define SIGNAL_TRANSCODER_OFFSET_CONTROL_LATENCY 74
1201 #define SIGNAL_TRANSCODER_OFFSET_CONTROL_DOMAIN 78
1202 #define SIGNAL_TRANSCODER_OFFSET_CONTROL_VALUE_TYPE 80
1203 #define SIGNAL_TRANSCODER_OFFSET_VALUES_OFFSET 82
1204 #define SIGNAL_TRANSCODER_OFFSET_NUMBER_OF_VALUES 84
1205 #define SIGNAL_TRANSCODER_OFFSET_SIGNAL_TYPE 86
1206 #define SIGNAL_TRANSCODER_OFFSET_SIGNAL_INDEX 88
1207 #define SIGNAL_TRANSCODER_OFFSET_SIGNAL_OUTPUT 90
1209 #define CLOCK_DOMAIN_OFFSET_OBJECT_NAME 4
1210 #define CLOCK_DOMAIN_OFFSET_LOCALIZED_DESCRIPTION 68
1211 #define CLOCK_DOMAIN_OFFSET_CLOCK_SOURCE_INDEX 70
1212 #define CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_OFFSET 72
1213 #define CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_COUNT 74
1215 #define CONTROL_BLOCK_OFFSET_OBJECT_NAME 4
1216 #define CONTROL_BLOCK_OFFSET_LOCALIZED_DESCRIPTION 68
1217 #define CONTROL_BLOCK_OFFSET_NUMBER_OF_CONTROLS 70
1218 #define CONTROL_BLOCK_OFFSET_BASE_CONTROL 72
1219 #define CONTROL_BLOCK_OFFSET_FINAL_CONTROL_INDEX 74
1222 /* AEM Stream Format Offsets */
1223 /* IEEE 1722.1 draft D21 section 7.3.2 */
1224 #define AEM_OFFSET_SF_SUBTYPE 0
1226 #define AEM_OFFSET_SF_VERSION 0
1229 #define AEM_OFFSET_SF 1
1230 #define AEM_OFFSET_IIDC_FORMAT 5
1231 #define AEM_OFFSET_IIDC_MODE 6
1232 #define AEM_OFFSET_IIDC_RATE 7
1235 #define AEM_OFFSET_FMT 1
1238 #define AEM_OFFSET_FDF_EVT 2
1239 #define AEM_OFFSET_FDF_SFC 2
1240 #define AEM_OFFSET_DBS 3
1241 #define AEM_OFFSET_B 4
1242 #define AEM_OFFSET_NB 4
1245 #define AEM_OFFSET_LABEL_IEC_60958_CNT 5
1246 #define AEM_OFFSET_LABEL_MBLA_CNT 6
1247 #define AEM_OFFSET_LABEL_MIDI_CNT 7
1248 #define AEM_OFFSET_LABEL_SMPTE_CNT 7
1251 #define AEM_OFFSET_VIDEO_MODE 5
1252 #define AEM_OFFSET_COMPRESS_MODE 6
1253 #define AEM_OFFSET_COLOR_SPACE 7
1255 /* AECP Vendor Unique Command Specific Offsets */
1256 #define AECP_VUC_OFFSET_PROTOCOL_ID 22
1258 /* AECP Video Cluster Format Offsets */
1259 /* IEEE 1722.1 draft D21 section 7.3.7 */
1260 #if 0 /* TODO: These are all different in D21 */
1261 #define AEM_OFFSET_MFD_TYPE 3
1262 #define AEM_OFFSET_DIV 4
1263 #define AEM_OFFSET_INTERLACE 4
1264 #define AEM_OFFSET_CHANNELS 4
1265 #define AEM_OFFSET_COLOR_FORMAT 4
1266 #define AEM_OFFSET_BPP 5
1267 #define AEM_OFFSET_ASPECT_X 6
1268 #define AEM_OFFSET_ASPECT_Y 7
1269 #define AEM_OFFSET_FRAME_RATE 8
1270 #define AEM_OFFSET_COMP1 9
1271 #define AEM_OFFSET_COMP2 10
1272 #define AEM_OFFSET_COMP3 10
1273 #define AEM_OFFSET_COMP4 11
1274 #define AEM_OFFSET_SVMF_WIDTH 12
1275 #define AEM_OFFSET_SVMF_HEIGHT 14
1277 #define AEM_OFFSET_CS_EUI64 8
1281 #define AECP_STATUS_CODE_MASK 0xf8
1282 #define AECP_TOKEN_LENGTH_MASK 0x07ff
1283 #define AECP_KEY_PART_MASK 0x78
1284 #define AECP_CONTINUED_MASK 0x80
1285 #define AECP_CD_LENGTH_MASK 0x07ff
1286 #define AECP_COMMAND_TYPE_MASK 0x7fff
1287 #define AECP_KEYCHAIN_ID_MASK 0xe0
1288 #define AECP_KEYTYPE_MASK 0x1c
1289 #define AECP_KEY_COUNT_MASK 0x0fff
1290 #define AECP_KEY_LENGTH_MASK 0x07ff
1291 #define AECP_KEY_NUMBER_MASK 0x04ff
1292 #define AECP_MATRIX_DIRECTION_MASK 0x70
1293 #define AECP_MATRIX_REP_MASK 0x80
1294 #define AECP_MATRIX_VALUE_COUNT_MASK 0x0fff
1295 #define AECP_MSG_TYPE_MASK 0x0f
1296 #define AECP_PERSISTENT_FLAG_MASK 0x00000001
1297 #define AECP_RELEASE_FLAG_MASK 0x80000000
1298 #define AECP_SIGNATURE_ID_MASK 0x0fff
1299 #define AECP_SIGNATURE_INFO_MASK 0x00f0
1300 #define AECP_SIGNATURE_LENGTH_MASK 0x3ff
1301 #define AECP_UNLOCK_FLAG_MASK 0x01
1302 #define AECP_U_FLAG_MASK 0x80
1303 #define AECP_MSRP_MAPPINGS_COUNT_MASK 0x00
1304 #define AECP_AS_CAPABLE_FLAG_MASK 0x01
1305 #define AECP_GPTP_ENABLED_FLAG_MASK 0x02
1306 #define AECP_SRP_ENABLED_FLAG_MASK 0x04
1309 /* AECP Sampling Rate masks */
1310 #define AECP_SAMPLING_RATE_PULL_MASK 0xE0000000
1311 #define AECP_SAMPLING_RATE_BASE_FREQ_MASK 0x1FFFFFFF
1313 /* Stream Flags (7.130) */
1314 #define AECP_STREAM_VLAN_ID_VALID_FLAG_MASK 0x02000000
1315 #define AECP_CONNECTED_FLAG_MASK 0x04000000
1316 #define AECP_MSRP_FAILURE_VALID_FLAG_MASK 0x08000000
1317 #define AECP_DEST_MAC_VALID_FLAG_MASK 0x10000000
1318 #define AECP_MSRP_ACC_LAT_VALID_FLAG_MASK 0x20000000
1319 #define AECP_STREAM_ID_VALID_FLAG_MASK 0x40000000
1320 #define AECP_STREAM_FORMAT_VALID_FLAG_MASK 0x80000000
1322 /* key permission flag masks */
1323 #define AECP_PRIVATE_KEY_READ_FLAG_MASK 0x80000000
1324 #define AECP_PRIVATE_KEY_WRITE_FLAG_MASK 0x40000000
1325 #define AECP_PUBLIC_KEY_WRITE_FLAG_MASK 0x20000000
1326 #define AECP_CONNECTION_FLAG_MASK 0x10000000
1327 #define AECP_CONTROL_ADMIN_FLAG_MASK 0x08000000
1328 #define AECP_MEM_OBJ_ADMIN_FLAG_MASK 0x04000000
1329 #define AECP_MEM_OBJ_SETTINGS_FLAG_MASK 0x02000000
1330 #define AECP_CONTROL_USER_L1_FLAG_MASK 0x00000008
1331 #define AECP_CONTROL_USER_L2_FLAG_MASK 0x00000004
1332 #define AECP_CONTROL_USER_L3_FLAG_MASK 0x00000002
1333 #define AECP_CONTROL_USER_L4_FLAG_MASK 0x00000001
1335 /* 7.133-139 counters_valid flag masks */
1336 #define AECP_COUNTERS_VALID_LINK_UP 0x00000001
1337 #define AECP_COUNTERS_VALID_LINK_DOWN 0x00000002
1338 #define AECP_COUNTERS_VALID_PACKETS_TX 0x00000004
1339 #define AECP_COUNTERS_VALID_PACKETS_RX 0x00000008
1340 #define AECP_COUNTERS_VALID_RX_CRC_ERROR 0x00000010
1341 #define AECP_COUNTERS_VALID_GPTP_GM_CHANGED 0x00000020
1343 #define AECP_COUNTERS_VALID_CLOCK_DOMAIN_LOCKED 0x00000001
1344 #define AECP_COUNTERS_VALID_CLOCK_DOMAIN_UNLOCKED 0x00000002
1346 #define AECP_COUNTERS_VALID_MEDIA_LOCKED 0x00000001
1347 #define AECP_COUNTERS_VALID_MEDIA_UNLOCKED 0x00000002
1348 #define AECP_COUNTERS_VALID_STREAM_RESET 0x00000004
1349 #define AECP_COUNTERS_VALID_SEQ_NUM_MISMATCH 0x00000008
1350 #define AECP_COUNTERS_VALID_MEDIA_RESET 0x00000010
1351 #define AECP_COUNTERS_VALID_TIMESTAMP_UNCERTAIN 0x00000020
1352 #define AECP_COUNTERS_VALID_TIMESTAMP_VALID 0x00000040
1353 #define AECP_COUNTERS_VALID_TIMESTAMP_NOT_VALID 0x00000080
1354 #define AECP_COUNTERS_VALID_UNSUPPORTED_FORMAT 0x00000100
1355 #define AECP_COUNTERS_VALID_LATE_TIMESTAMP 0x00000200
1356 #define AECP_COUNTERS_VALID_EARLY_TIMESTAMP 0x00000400
1357 #define AECP_COUNTERS_VALID_STREAM_PACKETS_RX 0x00000800
1358 #define AECP_COUNTERS_VALID_STREAM_PACKETS_TX 0x00001000
1360 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_8 0x01000000
1361 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_7 0x02000000
1362 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_6 0x04000000
1363 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_5 0x08000000
1364 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_4 0x10000000
1365 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_3 0x20000000
1366 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_2 0x40000000
1367 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_1 0x80000000
1369 #define AEM_CLOCK_SYNC_SOURCE_FLAG_MASK 0x0001
1370 #define AEM_ASYNC_SAMPLE_RATE_CONV_FLAG_MASK 0x0002
1371 #define AEM_SYNC_SAMPLE_RATE_CONV_FLAG_MASK 0x0004
1373 #define AEM_BASE_FREQUENCY_MASK 0x1fffffff
1374 #define AEM_CAPTIVE_FLAG_MASK 0x0002
1375 #define AEM_CLASS_A_FLAG_MASK 0x0002
1376 #define AEM_CLASS_B_FLAG_MASK 0x0004
1378 #define AEM_MASK_B 0x80
1379 #define AEM_MASK_BPP 0x3F
1380 #define AEM_MASK_CHANNELS 0x3C
1381 #define AEM_MASK_COLOR_FORMAT 0x03C0
1382 #define AEM_MASK_COMP1 0x0F80
1383 #define AEM_MASK_COMP2 0x7C
1384 #define AEM_MASK_COMP3 0x03E0
1385 #define AEM_MASK_COMP4 0x1F
1386 #define AEM_MASK_DIV 0x80
1387 #define AEM_MASK_FDF_EVT 0xF8
1388 #define AEM_MASK_FDF_SFC 0x07
1389 #define AEM_MASK_FMT 0x3F
1390 #define AEM_MASK_INTERLACE 0x40
1391 #define AEM_MASK_LABEL_MIDI_CNT 0xF0
1392 #define AEM_MASK_LABEL_SMPTE_CNT 0x0F
1393 #define AEM_MASK_NB 0x40
1394 #define AEM_MASK_OUI24 0xFFFFFF00
1395 #define AEM_MASK_SF 0x80
1396 #define AEM_MASK_SF_SUBTYPE 0x7F
1397 #define AEM_MASK_SF_VERSION 0x80
1398 #define AEM_PULL_FIELD_MASK 0xe0
1401 #define MFD_TYPE_VIDEO 0x00
1402 #define MFD_TYPE_TRANSPORT_STRM 0x01
1403 #define MFD_TYPE_MIDI 0x02
1404 #define MFD_TYPE_TIME_CODE 0x03
1405 #define MFD_TYPE_CONTROL_PROTO 0x04
1407 #define COLOR_FORMAT_MONO 0x0
1408 #define COLOR_FORMAT_RGB 0x1
1409 #define COLOR_FORMAT_RGBA 0x2
1410 #define COLOR_FORMAT_BGRA 0x3
1411 #define COLOR_FORMAT_CMYK 0x4
1412 #define COLOR_FORMAT_HSL 0x5
1413 #define COLOR_FORMAT_YUV 0x6
1414 #define COLOR_FORMAT_YCBCR 0x7
1415 #define COLOR_FORMAT_YPBPR 0x08
1417 #define OUI24_STANDARD_MEDIA_FORMAT 0x90e0f0
1419 #define MEMORY_OBJECT_TYPE_FIRMWARE_IMAGE 0x0000
1420 #define MEMORY_OBJECT_TYPE_VENDOR_SPECIFIC 0x0001
1421 #define MEMORY_OBJECT_TYPE_CRASH_DUMP 0x0002
1422 #define MEMORY_OBJECT_TYPE_LOG_OBJECT 0x0003
1423 #define MEMORY_OBJECT_TYPE_AUTOSTART_SETTINGS 0x0004
1424 #define MEMORY_OBJECT_TYPE_SNAPSHOT_SETTINGS 0x0005
1426 #define KEY_TYPE_NONE 0
1427 #define KEY_TYPE_SHA256 1
1428 #define KEY_TYPE_AES128 2
1429 #define KEY_TYPE_AES256 3
1430 #define KEY_TYPE_RSA1024_PUBLIC 4
1431 #define KEY_TYPE_RSA1024_PRIVATE 5
1432 #define KEY_TYPE_X509 6
1434 static const value_string aecp_key_type_type_vals
[] = {
1435 {KEY_TYPE_NONE
, "NO_KEY"},
1436 {KEY_TYPE_SHA256
, "SHA256"},
1437 {KEY_TYPE_AES128
, "AES128"},
1438 {KEY_TYPE_AES256
, "AES256"},
1439 {KEY_TYPE_RSA1024_PUBLIC
, "RSA1024_PUBLIC"},
1440 {KEY_TYPE_RSA1024_PRIVATE
, "RSA1024_PRIVATE"},
1441 {KEY_TYPE_X509
, "RSA1024_X509"},
1445 static const value_string aem_memory_object_type_vals
[] = {
1446 {MEMORY_OBJECT_TYPE_FIRMWARE_IMAGE
, "FIRMWARE_IMAGE"},
1447 {MEMORY_OBJECT_TYPE_VENDOR_SPECIFIC
, "VENDOR_SPECIFIC"},
1448 {MEMORY_OBJECT_TYPE_CRASH_DUMP
, "CRASH_DUMP"},
1449 {MEMORY_OBJECT_TYPE_LOG_OBJECT
, "LOG_OBJECT"},
1450 {MEMORY_OBJECT_TYPE_AUTOSTART_SETTINGS
, "AUTOSTART_SETTINGS"},
1451 {MEMORY_OBJECT_TYPE_SNAPSHOT_SETTINGS
, "SNAPSHOT_SETTINGS"},
1456 static const value_string aem_stream_format_subtype_vals
[] = {
1457 {IEC_61883_IIDC_SUBTYPE
, "IEC_61883_IIDC_SUBTYPE"},
1458 {MMA_SUBTYPE
, "MMA_SUBTYPE"},
1459 {AVTP_AUDIO_SUBTYPE
, "AVTP_AUDIO_SUBTYPE"},
1460 {AVTP_VIDEO_SUBTYPE
, "AVTP_VIDEO_SUBTYPE"},
1461 {EXPERIMENTAL_SUBTYPE
, "EXPERIMENTAL_SUBTYPE"},
1465 static const value_string aem_color_format_type_vals
[] = {
1466 {COLOR_FORMAT_MONO
, "Monochrome"},
1467 {COLOR_FORMAT_RGB
, "RGB"},
1468 {COLOR_FORMAT_RGBA
, "RGBA"},
1469 {COLOR_FORMAT_BGRA
, "BGRA"},
1470 {COLOR_FORMAT_CMYK
, "CMYK"},
1471 {COLOR_FORMAT_HSL
, "HSL"},
1472 {COLOR_FORMAT_YUV
, "YUV"},
1473 {COLOR_FORMAT_YCBCR
, "YCbCr"},
1474 {COLOR_FORMAT_YPBPR
, "YPbPr"},
1478 static const value_string aem_mfd_type_vals
[] = {
1479 {MFD_TYPE_VIDEO
, "VIDEO"},
1480 {MFD_TYPE_TRANSPORT_STRM
, "TRANSPORT_STREAM"},
1481 {MFD_TYPE_MIDI
, "MIDI"},
1482 {MFD_TYPE_TIME_CODE
, "TIME_CODE"},
1483 {MFD_TYPE_CONTROL_PROTO
, "CONTROL_PROTOCOL"},
1488 static const value_string aem_clock_source_type_vals
[] = {
1489 {AEM_CLOCK_INTERNAL
, "INTERNAL"},
1490 {AEM_CLOCK_EXTERNAL
, "EXTERNAL"},
1491 {AEM_CLOCK_INPUT_STREAM
, "INPUT STREAM"},
1492 {AEM_CLOCK_MEDIA_CLOCK_STREAM
, "MEDIA CLOCK STREAM"},
1496 /* frequency multipliers from table 7.6 pull field values */
1497 static const value_string aem_frequency_multiplier_type_vals
[] = {
1506 static const value_string aem_control_value_type_vals
[] = {
1507 {AEM_CONTROL_LINEAR_INT8
,"CONTROL_LINEAR_INT8"},
1508 {AEM_CONTROL_LINEAR_UINT8
,"CONTROL_LINEAR_UINT8"},
1509 {AEM_CONTROL_LINEAR_INT16
,"CONTROL_LINEAR_INT16"},
1510 {AEM_CONTROL_LINEAR_UINT16
,"CONTROL_LINEAR_UINT16"},
1511 {AEM_CONTROL_LINEAR_INT32
,"CONTROL_LINEAR_INT32"},
1512 {AEM_CONTROL_LINEAR_UINT32
,"CONTROL_LINEAR_UINT32"},
1513 {AEM_CONTROL_LINEAR_INT64
,"CONTROL_LINEAR_INT64"},
1514 {AEM_CONTROL_LINEAR_UINT64
,"CONTROL_LINEAR_UINT64"},
1515 {AEM_CONTROL_LINEAR_FLOAT
,"CONTROL_LINEAR_FLOAT"},
1516 {AEM_CONTROL_LINEAR_DOUBLE
,"CONTROL_LINEAR_DOUBLE"},
1517 {AEM_CONTROL_SELECTOR_INT8
,"CONTROL_SELECTOR_INT8"},
1518 {AEM_CONTROL_SELECTOR_UINT8
,"CONTROL_SELECTOR_UINT8"},
1519 {AEM_CONTROL_SELECTOR_INT16
,"CONTROL_SELECTOR_INT16"},
1520 {AEM_CONTROL_SELECTOR_UINT16
,"CONTROL_SELECTOR_UINT16"},
1521 {AEM_CONTROL_SELECTOR_INT32
,"CONTROL_SELECTOR_INT32"},
1522 {AEM_CONTROL_SELECTOR_UINT32
,"CONTROL_SELECTOR_UINT32"},
1523 {AEM_CONTROL_SELECTOR_INT64
,"CONTROL_SELECTOR_INT64"},
1524 {AEM_CONTROL_SELECTOR_UINT64
,"CONTROL_SELECTOR_UINT64"},
1525 {AEM_CONTROL_SELECTOR_FLOAT
,"CONTROL_SELECTOR_FLOAT"},
1526 {AEM_CONTROL_SELECTOR_DOUBLE
,"CONTROL_SELECTOR_DOUBLE"},
1527 {AEM_CONTROL_UTF8
,"CONTROL_UTF8"},
1528 {AEM_CONTROL_BODE_PLOT
,"CONTROL_BODE_PLOT"},
1529 {AEM_CONTROL_ARRAY_INT8
,"CONTROL_ARRAY_INT8"},
1530 {AEM_CONTROL_ARRAY_UINT8
,"CONTROL_ARRAY_UINT8"},
1531 {AEM_CONTROL_ARRAY_INT16
,"CONTROL_ARRAY_INT16"},
1532 {AEM_CONTROL_ARRAY_UINT16
,"CONTROL_ARRAY_UINT16"},
1533 {AEM_CONTROL_ARRAY_INT32
,"CONTROL_ARRAY_INT32"},
1534 {AEM_CONTROL_ARRAY_UINT32
,"CONTROL_ARRAY_UINT32"},
1535 {AEM_CONTROL_ARRAY_INT64
,"CONTROL_ARRAY_INT64"},
1536 {AEM_CONTROL_ARRAY_UINT64
,"CONTROL_ARRAY_UINT64"},
1537 {AEM_CONTROL_ARRAY_FLOAT
,"CONTROL_ARRAY_FLOAT"},
1538 {AEM_CONTROL_ARRAY_DOUBLE
,"CONTROL_ARRAY_DOUBLE"},
1539 {AEM_CONTROL_VENDOR
,"CONTROL_CONTROL_VENDOR"},
1543 static const value_string aem_jack_type_vals
[] = {
1544 {AEM_JACKTYPE_SPEAKER
,"SPEAKER" },
1545 {AEM_JACKTYPE_HEADPHONE
,"HEADPHONE" },
1546 {AEM_JACKTYPE_ANALOG_MICROPHONE
,"ANALOG_MICROPHONE" },
1547 {AEM_JACKTYPE_SPDIF
,"SPDIF" },
1548 {AEM_JACKTYPE_ADAT
,"ADAT" },
1549 {AEM_JACKTYPE_TDIF
,"TDIF" },
1550 {AEM_JACKTYPE_MADI
,"MADI" },
1551 {AEM_JACKTYPE_UNBALANCED_ANALOG
,"UNBALANCED_ANALOG" },
1552 {AEM_JACKTYPE_BALANCED_ANALOG
,"BALANCED_ANALOG" },
1553 {AEM_JACKTYPE_DIGITAL
,"DIGITAL" },
1554 {AEM_JACKTYPE_MIDI
,"MIDI" },
1555 {AEM_JACKTYPE_AES_EBU
,"AES_EBU" },
1556 {AEM_JACKTYPE_COMPOSITE_VIDEO
,"COMPOSITE_VIDEO" },
1557 {AEM_JACKTYPE_S_VHS_VIDEO
,"S_VHS_VIDEO" },
1558 {AEM_JACKTYPE_COMPONENT_VIDEO
,"COMPONENT_VIDEO" },
1559 {AEM_JACKTYPE_DVI
,"DVI" },
1560 {AEM_JACKTYPE_HDMI
,"HDMI" },
1561 {AEM_JACKTYPE_UDI
,"UDI" },
1562 {AEM_JACKTYPE_DISPLAYPORT
,"DISPLAYPORT" },
1563 {AEM_JACKTYPE_ANTENNA
,"ANTENNA" },
1564 {AEM_JACKTYPE_ANALOG_TUNER
,"ANALOG_TUNER" },
1565 {AEM_JACKTYPE_ETHERNET
,"ETHERNET" },
1566 {AEM_JACKTYPE_WIFI
,"WIFI" },
1567 {AEM_JACKTYPE_USB
,"USB" },
1568 {AEM_JACKTYPE_PCI
,"PCI" },
1569 {AEM_JACKTYPE_PCI_E
,"PDI_E" },
1570 {AEM_JACKTYPE_SCSI
,"SCSI" },
1571 {AEM_JACKTYPE_ATA
,"ATA" },
1572 {AEM_JACKTYPE_IMAGER
,"IMAGER" },
1573 {AEM_JACKTYPE_IR
,"IR" },
1574 {AEM_JACKTYPE_THUNDERBOLT
,"THUNDERBOLT" },
1575 {AEM_JACKTYPE_SATA
,"SATA" },
1576 {AEM_JACKTYPE_SMPTE_LTC
,"SMPTE_LTC" },
1577 {AEM_JACKTYPE_DIGITAL_MICROPHONE
,"DIGITAL_MICROPHONE" },
1581 /* value_string uses a 32 bit integer id, control uses 64.
1582 * TODO - make custom formatter for hf_aem_control_type
1583 static const value_string aem_control_type_vals [] = {
1584 {AEM_CONTROL_ENABLE , "ENABLE"},
1585 {AEM_CONTROL_DELAY , "DELAY"},
1586 {AEM_CONTROL_POW_LINE_FREQ , "POW_LINE_FREQ"},
1587 {AEM_CONTROL_ROLLPITCHYAW_ABS , "ROLLPITCHYAW_ABS"},
1588 {AEM_CONTROL_ROLLPITCHYAW_REL , "ROLLPITCHYAW_REL"},
1589 {AEM_CONTROL_SURGESWAYHEAVE_ABS , "SURGESWAYHEAVE_ABS"},
1590 {AEM_CONTROL_SURGESWAYHEAVE_REL , "SURGESWAYHEAVE_REL"},
1591 {AEM_CONTROL_IDENTIFY , "IDENTIFY"},
1592 {AEM_CONTROL_POWER_STATUS , "POWER_STATUS"},
1593 {AEM_CONTROL_FAN_STATUS , "FAN_STATUS"},
1594 {AEN_CONTROL_TEMPERATURE , "TEMPERATURE"},
1595 {AEM_CONTROL_TEMPERATURE_SENSOR , "TEMPERATURE_SENSOR"},
1596 {AEM_CONTROL_ALTITUDE , "ALTITUDE"},
1597 {AEM_CONTROL_HUMIDITY , "HUMIDITY"},
1598 {AEM_CONTROL_MUTE , "MUTE"},
1599 {AEM_CONTROL_VOLUME , "VOLUME"},
1600 {AEM_CONTROL_INVERT , "INVERT"},
1601 {AEM_CONTROL_PANPOT , "PANPOT"},
1602 {AEM_CONTROL_ISOLATE , "ISOLATE"},
1603 {AEM_CONTROL_POSITION , "POSITION"},
1604 {AEM_CONTROL_PHANTOM , "PHANTOM"},
1605 {AEM_CONTROL_AUDIO_SCALE , "AUDIO_SCALE"},
1606 {AEM_CONTROL_AUDIO_METERS , "AUDIO_METERS"},
1607 {AEM_CONTROL_AUDIO_SPECTRUM , "AUDIO_SPECTRUM"},
1608 {AEM_CONTROL_FILTER_RESPONSE , "FILTER_RESPONSE"},
1609 {AEM_CONTROL_SCANNING_MODE , "SCANNING_MODE"},
1610 {AEM_CONTROL_AUTO_EXP_MODE , "AUTO_EXP_MODE"},
1611 {AEM_CONTROL_AUTO_EXP_PRIO , "AUTO_EXP_PRIO"},
1612 {AEM_CONTROL_EXP_TIME_ABS , "EXP_TIME_ABS"},
1613 {AEM_CONTROL_EXP_TIME_REL , "EXP_TIME_REL"},
1614 {AEM_CONTROL_FOCUS_ABS , "FOCUS_ABS"},
1615 {AEM_CONTROL_FOCUS_REL , "FOCUS_REL"},
1616 {AEM_CONTROL_FOCUS_AUTO , "FOCUS_AUTO"},
1617 {AEM_CONTROL_IRIS_ABS , "IRIS_ABS"},
1618 {AEM_CONTROL_IRIS_REL , "IRIS_REL"},
1619 {AEM_CONTROL_ZOOM_ABS , "ZOOM_ABS"},
1620 {AEM_CONTROL_ZOOM_REL , "ZOOM_REL"},
1621 {AEM_CONTROL_PRIVACY , "PRIVACY"},
1622 {AEM_CONTROL_BACKLIGHT , "BACKLIGHT"},
1623 {AEM_CONTROL_BRIGHTNESS , "BRIGHTNESS"},
1624 {AEM_CONTROL_CONTRAST , "CONTRAST"},
1625 {AEM_CONTROL_GAIN , "GAIN"},
1626 {AEM_CONTROL_HUE , "HUE"},
1627 {AEM_CONTROL_SATURATION , "SATURATION"},
1628 {AEM_CONTROL_SHARPNESS , "SHARPNESS"},
1629 {AEM_CONTROL_GAMMA , "GAMMA"},
1630 {AEM_CONTROL_WHITE_BAL_TEMP , "WHITE_BAL_TEMP"},
1631 {AEM_CONTROL_WHITE_BAL_TENP_AUTO , "WHITE_BAL_TEMP_AUTO"},
1632 {AEM_CONTROL_WHITE_BAL_COMP , "WHITE_BAL_COMP"},
1633 {AEM_CONTROL_WHITE_BAL_COMP_AUTO , "WHITE_BAL_COMP_AUTO"},
1634 {AEM_CONTROL_DIGITAL_ZOOM , "DIGITAL_ZOOM"},
1640 static const value_string aecp_address_type_vals
[] = {
1641 {AECP_ADDRESS_MAC
, "MAC"},
1642 {AECP_ADDRESS_IPV4
, "IPV4"},
1643 {AECP_ADDRESS_IPV6
, "IPV6"},
1648 static const value_string aecp_keychain_id_type_vals
[] = {
1649 {AECP_KEYCHAIN_NONE
, "NONE"},
1650 {AECP_KEYCHAIN_MANUFACTURER
, "MANUFACTURER"},
1651 {AECP_KEYCHAIN_PRODUCT
, "PRODUCT"},
1652 {AECP_KEYCHAIN_ENTITY
, "ENTITY"},
1653 {AECP_KEYCHAIN_USER
, "USER"},
1657 static const value_string aecp_direction_type_vals
[] = {
1658 {AECP_DIRECTION_HORIZONTAL
, "HORIZONTAL"},
1659 {AECP_DIRECTION_VERTICAL
, "VERTICAL"},
1663 static const value_string aem_descriptor_type_vals
[] = {
1664 {AEM_DESCRIPTOR_ENTITY
, "ENTITY"},
1665 {AEM_DESCRIPTOR_CONFIGURATION
, "CONFIGURATION"},
1666 {AEM_DESCRIPTOR_AUDIO_UNIT
, "AUDIO_UNIT"},
1667 {AEM_DESCRIPTOR_VIDEO_UNIT
, "VIDEO_UNIT"},
1668 {AEM_DESCRIPTOR_SENSOR_UNIT
, "SENSOR_UNIT"},
1669 {AEM_DESCRIPTOR_STREAM_INPUT
, "STREAM_INPUT"},
1670 {AEM_DESCRIPTOR_STREAM_OUTPUT
, "STREAM_OUTPUT"},
1671 {AEM_DESCRIPTOR_JACK_INPUT
, "JACK_INPUT"},
1672 {AEM_DESCRIPTOR_JACK_OUTPUT
, "JACK_OUTPUT"},
1673 {AEM_DESCRIPTOR_STREAM_PORT_INPUT
, "STREAM_PORT_INPUT"},
1674 {AEM_DESCRIPTOR_STREAM_PORT_OUTPUT
, "STREAM_PORT_OUTPUT"},
1675 {AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT
, "EXTERNAL_PORT_INPUT"},
1676 {AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT
, "EXTERNAL_PORT_OUTPUT"},
1677 {AEM_DESCRIPTOR_INTERNAL_PORT_INPUT
, "INTERNAL_PORT_INPUT"},
1678 {AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT
, "INTERNAL_PORT_OUTPUT"},
1679 {AEM_DESCRIPTOR_AVB_INTERFACE
, "AVB_INTERFACE"},
1680 {AEM_DESCRIPTOR_CLOCK_SOURCE
, "CLOCK_SOURCE"},
1681 {AEM_DESCRIPTOR_AUDIO_CLUSTER
, "AUDIO_CLUSTER"},
1682 {AEM_DESCRIPTOR_VIDEO_CLUSTER
, "VIDEO_CLUSTER"},
1683 {AEM_DESCRIPTOR_SENSOR_CLUSTER
, "SENSOR_CLUSTER"},
1684 {AEM_DESCRIPTOR_AUDIO_MAP
, "AUDIO_MAP"},
1685 {AEM_DESCRIPTOR_VIDEO_MAP
, "VIDEO_MAP"},
1686 {AEM_DESCRIPTOR_SENSOR_MAP
, "SENSOR_MAP"},
1687 {AEM_DESCRIPTOR_CONTROL
, "CONTROL"},
1688 {AEM_DESCRIPTOR_SIGNAL_SELECTOR
, "SIGNAL_SELECTOR"},
1689 {AEM_DESCRIPTOR_MIXER
, "MIXER"},
1690 {AEM_DESCRIPTOR_MATRIX
, "MATRIX"},
1691 {AEM_DESCRIPTOR_LOCALE
, "LOCALE"},
1692 {AEM_DESCRIPTOR_STRINGS
, "STRINGS"},
1693 {AEM_DESCRIPTOR_MATRIX_SIGNAL
, "MATRIX_SIGNAL"},
1694 {AEM_DESCRIPTOR_MEMORY_OBJECT
, "MEMORY_OBJECT"},
1695 {AEM_DESCRIPTOR_SIGNAL_SPLITTER
, "SIGNAL_SPLITTER"},
1696 {AEM_DESCRIPTOR_SIGNAL_COMBINER
, "SIGNAL_COMBINER"},
1697 {AEM_DESCRIPTOR_SIGNAL_DEMULTIPLEXER
, "SIGNAL_DEMULTIPLEXER"},
1698 {AEM_DESCRIPTOR_SIGNAL_MULTIPLEXER
, "SIGNAL_MULTIPLEXER"},
1699 {AEM_DESCRIPTOR_SIGNAL_TRANSCODER
, "SIGNAL_TRANSCODER"},
1700 {AEM_DESCRIPTOR_CLOCK_DOMAIN
, "CLOCK_DOMAIN"},
1701 {AEM_DESCRIPTOR_CONTROL_BLOCK
, "CONTROL_BLOCK"},
1705 static const value_string aem_status_type_vals
[] = {
1706 {AEM_STATUS_SUCCESS
, "SUCCESS"},
1707 {AEM_STATUS_NOT_IMPLEMENTED
, "NOT_IMPLEMENTED"},
1708 {AEM_STATUS_NO_SUCH_DESCRIPTOR
, "NO_SUCH_DESCRIPTOR"},
1709 {AEM_STATUS_ENTITY_LOCKED
, "ENTITY_LOCKED"},
1710 {AEM_STATUS_ENTITY_ACQUIRED
, "ENTITY_ACQUIRED"},
1711 {AEM_STATUS_NOT_AUTHENTICATED
, "NOT_AUTHENTICATED"},
1712 {AEM_STATUS_AUTHENTICATION_DISABLED
, "AUTHENTICATION_DISABLED"},
1713 {AEM_STATUS_BAD_ARGUMENTS
, "BAD_ARGUMENTS"},
1714 {AEM_STATUS_NO_RESOURCES
, "NO_RESOURCES"},
1715 {AEM_STATUS_IN_PROGRESS
, "IN_PROGRESS"},
1716 {AEM_STATUS_ENTITY_MISBEHAVING
, "ENTITY_MISBEHAVING"},
1717 {AEM_STATUS_NOT_SUPPORTED
, "NOT_SUPPORTED"},
1718 {AEM_STATUS_STREAM_IS_RUNNING
, "STREAM_IS_RUNNING"},
1722 static const value_string aecp_message_type_vals
[] = {
1723 {AECP_AEM_COMMAND_MESSAGE
, "AEM_COMMAND"},
1724 {AECP_AEM_RESPONSE_MESSAGE
, "AEM_RESPONSE"},
1725 {AECP_ADDRESS_ACCESS_COMMAND_MESSAGE
, "ADDRESS_ACCESS_COMMAND"},
1726 {AECP_ADDRESS_ACCESS_RESPONSE_MESSAGE
, "ADDRESS_ACCESS_RESPONSE"},
1727 {AECP_AVC_COMMAND_MESSAGE
, "AVC_COMMAND"},
1728 {AECP_AVC_RESPONSE_MESSAGE
, "AVC_RESPONSE"},
1729 {AECP_VENDOR_UNIQUE_COMMAND_MESSAGE
, "VENDOR_UNIQUE_COMMAND"},
1730 {AECP_VENDOR_UNIQUE_RESPONSE_MESSAGE
, "VENDOR_UNIQUE_RESPONSE"},
1731 {AECP_EXTENDED_COMMAND_MESSAGE
, "EXTENDED_COMMAND"},
1732 {AECP_EXTENDED_RESPONSE_MESSAGE
, "EXTENDED_RESPONSE"},
1736 static const value_string aecp_command_type_vals
[] = {
1737 {AECP_COMMAND_ACQUIRE_ENTITY
, "ACQUIRE_ENTITY"},
1738 {AECP_COMMAND_LOCK_ENTITY
, "LOCK_ENTITY"},
1739 {AECP_COMMAND_ENTITY_AVAILABLE
, "ENTITY_AVAILABLE"},
1740 {AECP_COMMAND_CONTROLLER_AVAILABLE
, "CONTROLLER_AVAILABLE"},
1741 {AECP_COMMAND_READ_DESCRIPTOR
, "READ_DESCRIPTOR"},
1742 {AECP_COMMAND_WRITE_DESCRIPTOR
, "WRITE_DESCRIPTOR"},
1743 {AECP_COMMAND_SET_CONFIGURATION
, "SET_CONFIGURATION"},
1744 {AECP_COMMAND_GET_CONFIGURATION
, "GET_CONFIGURATION"},
1745 {AECP_COMMAND_SET_STREAM_FORMAT
, "SET_STREAM_FORMAT"},
1746 {AECP_COMMAND_GET_STREAM_FORMAT
, "GET_STREAM_FORMAT"},
1747 {AECP_COMMAND_SET_VIDEO_FORMAT
, "SET_VIDEO_FORMAT"},
1748 {AECP_COMMAND_GET_VIDEO_FORMAT
, "GET_VIDEO_FORMAT"},
1749 {AECP_COMMAND_SET_SENSOR_FORMAT
, "SET_SENSOR_FORMAT"},
1750 {AECP_COMMAND_GET_SENSOR_FORMAT
, "GET_SENSOR_FORMAT"},
1751 {AECP_COMMAND_SET_STREAM_INFO
, "SET_STREAM_INFO"},
1752 {AECP_COMMAND_GET_STREAM_INFO
, "GET_STREAM_INFO"},
1753 {AECP_COMMAND_SET_NAME
, "SET_NAME"},
1754 {AECP_COMMAND_GET_NAME
, "GET_NAME"},
1755 {AECP_COMMAND_SET_ASSOCIATION_ID
, "SET_ASSOCIATION_ID"},
1756 {AECP_COMMAND_GET_ASSOCIATION_ID
, "GET_ASSOCIATION_ID"},
1757 {AECP_COMMAND_SET_SAMPLING_RATE
, "SET_SAMPLING_RATE"},
1758 {AECP_COMMAND_GET_SAMPLING_RATE
, "GET_SAMPLING_RATE"},
1759 {AECP_COMMAND_SET_CLOCK_SOURCE
, "SET_CLOCK_SOURCE"},
1760 {AECP_COMMAND_GET_CLOCK_SOURCE
, "GET_CLOCK_SOURCE"},
1761 {AECP_COMMAND_SET_CONTROL_VALUE
, "SET_CONTROL_VALUE"},
1762 {AECP_COMMAND_GET_CONTROL_VALUE
, "GET_CONTROL_VALUE"},
1763 {AECP_COMMAND_INCREMENT_CONTROL
, "INCREMENT_CONTROL"},
1764 {AECP_COMMAND_DECREMENT_CONTROL
, "DECREMENT_CONTROL"},
1765 {AECP_COMMAND_SET_SIGNAL_SELECTOR
, "SET_SIGNAL_SELECTOR"},
1766 {AECP_COMMAND_GET_SIGNAL_SELECTOR
, "GET_SIGNAL_SELECTOR"},
1767 {AECP_COMMAND_SET_MIXER
, "SET_MIXER"},
1768 {AECP_COMMAND_GET_MIXER
, "GET_MIXER"},
1769 {AECP_COMMAND_SET_MATRIX
, "SET_MATRIX"},
1770 {AECP_COMMAND_GET_MATRIX
, "GET_MATRIX"},
1771 {AECP_COMMAND_START_STREAMING
, "START_STREAMING"},
1772 {AECP_COMMAND_STOP_STREAMING
, "STOP_STREAMING"},
1773 {AECP_COMMAND_REGISTER_UNSOL_NOTIFICATION
, "REGISTER_UNSOL_NOTIFICATION"},
1774 {AECP_COMMAND_DEREGISTER_UNSOL_NOTIFICATION
, "DEREGISTER_UNSOL_NOTIFICATION"},
1775 {AECP_COMMAND_IDENTIFY_NOTIFICATION
, "IDENTIFY_NOTIFICATION"},
1776 {AECP_COMMAND_GET_AVB_INFO
, "GET_AVB_INFO"},
1777 {AECP_COMMAND_GET_AS_PATH
, "GET_AS_PATH"},
1778 {AECP_COMMAND_GET_COUNTERS
, "GET_COUNTERS"},
1779 {AECP_COMMAND_REBOOT
, "REBOOT"},
1780 {AECP_COMMAND_GET_AUDIO_MAP
, "GET_AUDIO_MAP"},
1781 {AECP_COMMAND_ADD_AUDIO_MAPPINGS
, "ADD_AUDIO_MAPPINGS"},
1782 {AECP_COMMAND_REMOVE_AUDIO_MAPPINGS
, "REMOVE_AUDIO_MAPPINGS"},
1783 {AECP_COMMAND_GET_VIDEO_MAP
, "GET_VIDEO_MAP"},
1784 {AECP_COMMAND_ADD_VIDEO_MAPPINGS
, "ADD_VIDEO_MAPPINGS"},
1785 {AECP_COMMAND_REMOVE_VIDEO_MAPPINGS
, "REMOVE_VIDEO_MAPPINGS"},
1786 {AECP_COMMAND_GET_SENSOR_MAP
, "GET_SENSOR_MAP"},
1787 {AECP_COMMAND_ADD_SENSOR_MAPPINGS
, "ADD_SENSOR_MAPPINGS"},
1788 {AECP_COMMAND_REMOVE_SENSOR_MAPPINGS
, "REMOVE_SENSOR_MAPPINGS"},
1789 {AECP_COMMAND_START_OPERATION
, "START_OPERATION"},
1790 {AECP_COMMAND_ABORT_OPERATION
, "ABORT_OPERATION"},
1791 {AECP_COMMAND_OPERATION_STATUS
, "OPERATION_STATUS"},
1792 {AECP_COMMAND_AUTH_ADD_KEY
, "AUTH_ADD_KEY"},
1793 {AECP_COMMAND_AUTH_DELETE_KEY
, "AUTH_DELETE_KEY"},
1794 {AECP_COMMAND_AUTH_GET_KEY_LIST
, "AUTH_GET_KEY_LIST"},
1795 {AECP_COMMAND_AUTH_GET_KEY
, "AUTH_GET_KEY"},
1796 {AECP_COMMAND_AUTH_ADD_KEY_TO_CHAIN
, "AUTH_ADD_KEY_TO_CHAIN"},
1797 {AECP_COMMAND_AUTH_DELETE_KEY_FROM_CHAIN
, "AUTH_DELETE_KEY_FROM_CHAIN"},
1798 {AECP_COMMAND_AUTH_GET_KEYCHAIN_LIST
, "AUTH_GET_KEYCHAIN_LIST"},
1799 {AECP_COMMAND_AUTH_GET_IDENTITY
, "AUTH_GET_IDENTITY"},
1800 {AECP_COMMAND_AUTH_ADD_TOKEN
, "AUTH_ADD_TOKEN"},
1801 {AECP_COMMAND_AUTH_DELETE_TOKEN
, "AUTH_DELETE_TOKEN"},
1802 {AECP_COMMAND_AUTHENTICATE
, "AUTHENTICATE"},
1803 {AECP_COMMAND_DEAUTHENTICATE
, "DEAUTHENTICATE"},
1804 {AECP_COMMAND_ENABLE_TRANSPORT_SECURITY
, "ENABLE_TRANSPORT_SECURITY"},
1805 {AECP_COMMAND_DISABLE_TRANSPORT_SECURITY
, "DISABLE_TRANSPORT_SECURITY"},
1806 {AECP_COMMAND_ENABLE_STREAM_ENCRYPTION
, "ENABLE_STREAM_ENCRYPTION"},
1807 {AECP_COMMAND_DISABLE_STREAM_ENCRYPTION
, "DISABLE_STREAM_ENCRYPTION"},
1808 {AECP_COMMAND_SET_STREAM_BACKUP
, "SET_STREAM_BACKUP"},
1809 {AECP_COMMAND_GET_STREAM_BACKUP
, "GET_STREAM_BACKUP"},
1814 static const value_string adp_message_type_vals
[] = {
1815 {ADP_ENTITY_AVAILABLE_MESSAGE
, "ENTITY_AVAILABLE"},
1816 {ADP_ENTITY_DEPARTING_MESSAGE
, "ENTITY_DEPARTING"},
1817 {ADP_ENTITY_DISCOVER_MESSAGE
, "ENTITY_DISCOVER"},
1821 static const value_string acmp_message_type_vals
[] = {
1822 {ACMP_CONNECT_TX_COMMAND
, "CONNECT_TX_COMMAND"},
1823 {ACMP_CONNECT_TX_RESPONSE
, "CONNECT_TX_RESPONSE"},
1824 {ACMP_DISCONNECT_TX_COMMAND
, "DISCONNECT_TX_COMMAND"},
1825 {ACMP_DISCONNECT_TX_RESPONSE
, "DISCONNECT_TX_RESPONSE"},
1826 {ACMP_GET_TX_STATE_COMMAND
, "GET_TX_STATE_COMMAND"},
1827 {ACMP_GET_TX_STATE_RESPONSE
, "GET_TX_STATE_RESPONSE"},
1828 {ACMP_CONNECT_RX_COMMAND
, "CONNECT_RX_COMMAND"},
1829 {ACMP_CONNECT_RX_RESPONSE
, "CONNECT_RX_RESPONSE"},
1830 {ACMP_DISCONNECT_RX_COMMAND
, "DISCONNECT_RX_COMMAND"},
1831 {ACMP_DISCONNECT_RX_RESPONSE
, "DISCONNECT_RX_RESPONSE"},
1832 {ACMP_GET_RX_STATE_COMMAND
, "GET_RX_STATE_COMMAND"},
1833 {ACMP_GET_RX_STATE_RESPONSE
, "GET_RX_STATE_RESPONSE"},
1834 {ACMP_GET_TX_CONNECTION_COMMAND
, "GET_TX_CONNECTION_COMMAND"},
1835 {ACMP_GET_TX_CONNECTION_RESPONSE
, "GET_TX_CONNECTION_RESPONSE"},
1839 static const value_string acmp_status_field_vals
[] = {
1840 {ACMP_STATUS_SUCCESS
, "SUCCESS"},
1841 {ACMP_STATUS_LISTENER_UNKNOWN_ID
, "LISTENER_UNKNOWN_ID"},
1842 {ACMP_STATUS_TALKER_UNKNOWN_ID
, "TALKER_UNKNOWN_ID"},
1843 {ACMP_STATUS_TALKER_DEST_MAC_FAIL
, "TALKER_DEST_MAC_FAIL"},
1844 {ACMP_STATUS_TALKER_NO_STREAM_INDEX
, "TALKER_NO_STREAM_INDEX"},
1845 {ACMP_STATUS_TALKER_NO_BANDWIDTH
, "TALKER_NO_BANDWIDTH"},
1846 {ACMP_STATUS_TALKER_EXCLUSIVE
, "TALKER_EXCLUSIVE"},
1847 {ACMP_STATUS_LISTENER_TALKER_TIMEOUT
, "LISTENER_TALKER_TIMEOUT"},
1848 {ACMP_STATUS_LISTENER_EXCLUSIVE
, "LISTENER_EXCLUSIVE"},
1849 {ACMP_STATUS_STATE_UNAVAILABLE
, "STATE_UNAVAILABLE"},
1850 {ACMP_STATUS_NOT_CONNECTED
, "NOT_CONNECTED"},
1851 {ACMP_STATUS_NO_SUCH_CONNECTION
, "NO_SUCH_CONNECTION"},
1852 {ACMP_STATUS_COULD_NOT_SEND_MESSAGE
, "COULD_NOT_SEND_MESSAGE"},
1853 {ACMP_STATUS_DEFAULT_SET_DIFFERENT
, "DEFAULT_SET_DIFFERENT"},
1854 {ACMP_STATUS_NOT_SUPPORTED
, "NOT_SUPPORTED"},
1858 static const value_string aecp_sampling_rate_pull_field_vals
[] = {
1859 {0, "Multiply by 1.0"},
1860 {1, "Multiply by 1/1.001"},
1861 {2, "Multiply by 1.001"},
1862 {3, "Multiply by 24/25"},
1863 {4, "Multiply by 25/24"},
1868 /**********************************************************/
1869 /* Initialize the protocol and registered fields */
1870 /**********************************************************/
1871 static int proto_17221
;
1873 /* AVDECC Discovery Protocol Data Unit (ADPDU) */
1874 static int hf_adp_message_type
;
1875 static int hf_adp_valid_time
;
1876 static int hf_adp_cd_length
;
1877 static int hf_adp_entity_id
;
1878 static int hf_adp_entity_model_id
;
1879 static int hf_adp_entity_cap
;
1880 static int hf_adp_talker_stream_srcs
;
1881 static int hf_adp_talker_cap
;
1882 static int hf_adp_listener_stream_sinks
;
1883 static int hf_adp_listener_cap
;
1884 static int hf_adp_controller_cap
;
1885 static int hf_adp_avail_index
;
1886 static int hf_adp_gptp_gm_id
;
1887 /* static int hf_adp_def_aud_format; */
1888 /* static int hf_adp_def_vid_format; */
1889 static int hf_adp_assoc_id
;
1890 /* static int hf_adp_entity_type; */
1892 /* Entity Capabilities Flags */
1893 static int hf_adp_entity_cap_efu_mode
;
1894 static int hf_adp_entity_cap_address_access_supported
;
1895 static int hf_adp_entity_cap_gateway_entity
;
1896 static int hf_adp_entity_cap_aem_supported
;
1897 static int hf_adp_entity_cap_legacy_avc
;
1898 static int hf_adp_entity_cap_assoc_id_support
;
1899 static int hf_adp_entity_cap_assoc_id_valid
;
1900 static int hf_adp_entity_cap_vendor_unique
;
1901 static int hf_adp_entity_cap_class_a_supported
;
1902 static int hf_adp_entity_cap_class_b_supported
;
1903 static int hf_adp_entity_cap_gptp_supported
;
1905 /* Talker Capabilities Flags */
1906 static int hf_adp_talk_cap_implement
;
1907 static int hf_adp_talk_cap_other_src
;
1908 static int hf_adp_talk_cap_control_src
;
1909 static int hf_adp_talk_cap_media_clk_src
;
1910 static int hf_adp_talk_cap_smpte_src
;
1911 static int hf_adp_talk_cap_midi_src
;
1912 static int hf_adp_talk_cap_audio_src
;
1913 static int hf_adp_talk_cap_video_src
;
1915 /* Listener Capabilities Flags */
1916 static int hf_adp_list_cap_implement
;
1917 static int hf_adp_list_cap_other_sink
;
1918 static int hf_adp_list_cap_control_sink
;
1919 static int hf_adp_list_cap_media_clk_sink
;
1920 static int hf_adp_list_cap_smpte_sink
;
1921 static int hf_adp_list_cap_midi_sink
;
1922 static int hf_adp_list_cap_audio_sink
;
1923 static int hf_adp_list_cap_video_sink
;
1925 /* Controller Capabilities Flags */
1926 static int hf_adp_cont_cap_implement
;
1927 static int hf_adp_cont_cap_layer3_proxy
;
1930 /* Default Audio Format */
1931 static int hf_adp_def_aud_sample_rates
;
1932 static int hf_adp_def_aud_max_chan
;
1933 static int hf_adp_def_aud_saf_flag
;
1934 static int hf_adp_def_aud_float_flag
;
1935 static int hf_adp_def_aud_chan_formats
;
1937 /* Default Audio Sample Rates */
1938 static int hf_adp_samp_rate_44k1
;
1939 static int hf_adp_samp_rate_48k
;
1940 static int hf_adp_samp_rate_88k2
;
1941 static int hf_adp_samp_rate_96k
;
1942 static int hf_adp_samp_rate_176k4
;
1943 static int hf_adp_samp_rate_192k
;
1945 /* Audio Channel Formats */
1946 static int hf_adp_chan_format_mono
;
1947 static int hf_adp_chan_format_2ch
;
1948 static int hf_adp_chan_format_3ch
;
1949 static int hf_adp_chan_format_4ch
;
1950 static int hf_adp_chan_format_5ch
;
1951 static int hf_adp_chan_format_6ch
;
1952 static int hf_adp_chan_format_7ch
;
1953 static int hf_adp_chan_format_8ch
;
1954 static int hf_adp_chan_format_10ch
;
1955 static int hf_adp_chan_format_12ch
;
1956 static int hf_adp_chan_format_14ch
;
1957 static int hf_adp_chan_format_16ch
;
1958 static int hf_adp_chan_format_18ch
;
1959 static int hf_adp_chan_format_20ch
;
1960 static int hf_adp_chan_format_22ch
;
1961 static int hf_adp_chan_format_24ch
;
1964 /* AECP Vendor Unique Protocol Dissector table */
1965 static dissector_table_t vendor_unique_protocol_dissector_table
;
1967 /* ***************************************************************** */
1968 /* AVDECC Enumeration and Control Protocol Data Unit (AECPDU) */
1969 /* ***************************************************************** */
1971 static int hf_aecp_aa_count
;
1972 static int hf_aecp_aa_tlv_mode
;
1973 static int hf_aecp_aa_tlv_length
;
1974 static int hf_aecp_aa_tlv_address
;
1976 /* static int hf_aecp_address_type; */
1977 static int hf_aecp_association_id
;
1978 static int hf_aecp_as_path_count
;
1979 static int hf_aecp_as_path_sequences
;
1980 static int ett_aecp_get_as_path_sequences
;
1981 static int hf_aecp_get_as_info_clock_id
;
1982 static int hf_aecp_auth_token
;
1983 static int hf_aecp_avb_interface_gptp_gm_changed_valid
;
1984 static int hf_aecp_avb_interface_gptp_gm_changed
;
1985 static int hf_aecp_avb_interface_link_up_valid
;
1986 static int hf_aecp_avb_interface_link_up
;
1987 static int hf_aecp_avb_interface_link_down_valid
;
1988 static int hf_aecp_avb_interface_link_down
;
1989 static int hf_aecp_avb_interface_packets_tx_valid
;
1990 static int hf_aecp_avb_interface_packets_tx
;
1991 static int hf_aecp_avb_interface_packets_rx_valid
;
1992 static int hf_aecp_avb_interface_packets_rx
;
1993 static int hf_aecp_avb_interface_rx_crc_error_valid
;
1994 static int hf_aecp_avb_interface_rx_crc_error
;
1995 static int hf_aecp_cd_length
;
1996 static int hf_aecp_clock_domain_locked_valid
;
1997 static int hf_aecp_clock_domain_locked
;
1998 static int hf_aecp_clock_domain_unlocked_valid
;
1999 static int hf_aecp_clock_domain_unlocked
;
2000 static int hf_aecp_clock_source_id
;
2001 static int hf_aecp_command_type
;
2002 static int hf_aecp_configuration
;
2003 static int hf_aecp_configuration_index
;
2004 static int hf_aecp_connected_flag
;
2005 /* static int hf_aecp_continued_flag; */
2006 /* static int hf_aecp_control_admin_flag; */
2007 /* static int hf_aecp_control_user_l1; */
2008 /* static int hf_aecp_control_user_l2; */
2009 /* static int hf_aecp_control_user_l3; */
2010 /* static int hf_aecp_control_user_l4; */
2011 static int hf_aecp_controller_guid
;
2012 /* static int hf_aecp_count; */
2013 static int hf_aecp_descriptor_index
;
2014 static int hf_aecp_descriptor_type
;
2015 /* static int hf_aecp_descriptors; */
2016 static int hf_aecp_dest_mac_valid_flag
;
2017 static int hf_aecp_entity_specific1
;
2018 static int hf_aecp_entity_specific1_valid
;
2019 static int hf_aecp_entity_specific2
;
2020 static int hf_aecp_entity_specific2_valid
;
2021 static int hf_aecp_entity_specific3
;
2022 static int hf_aecp_entity_specific3_valid
;
2023 static int hf_aecp_entity_specific4
;
2024 static int hf_aecp_entity_specific4_valid
;
2025 static int hf_aecp_entity_specific5
;
2026 static int hf_aecp_entity_specific5_valid
;
2027 static int hf_aecp_entity_specific6
;
2028 static int hf_aecp_entity_specific6_valid
;
2029 static int hf_aecp_entity_specific7
;
2030 static int hf_aecp_entity_specific7_valid
;
2031 static int hf_aecp_entity_specific8
;
2032 static int hf_aecp_entity_specific8_valid
;
2033 static int hf_aecp_flags_32
;
2034 /* static int hf_aecp_ipv4_address; */
2035 /* static int hf_aecp_ipv6_address; */
2036 static int hf_aecp_key
;
2037 static int hf_aecp_key_eui
;
2038 static int hf_aecp_key_length
;
2039 /* static int hf_aecp_key_number; */
2040 /* static int hf_aecp_key_part; */
2041 static int hf_aecp_keychain_id
;
2042 static int hf_aecp_keychain_id_small
;
2043 static int hf_aecp_keychain_list_index
;
2044 static int hf_aecp_keychain_number_of_keys
;
2045 static int hf_aecp_keychain_number_of_lists
;
2046 static int hf_aecp_key_signature
;
2047 static int hf_aecp_key_type
;
2048 static int hf_aecp_locked_guid
;
2049 static int hf_aecp_mac_address
;
2050 static int hf_aecp_map_index
;
2051 /* static int hf_aecp_matrix_affected_item_count; */
2052 static int hf_aecp_matrix_column
;
2053 static int hf_aecp_matrix_direction
;
2054 static int hf_aecp_matrix_item_offset
;
2055 static int hf_aecp_matrix_region_height
;
2056 static int hf_aecp_matrix_region_width
;
2057 static int hf_aecp_matrix_rep
;
2058 static int hf_aecp_matrix_row
;
2059 static int hf_aecp_matrix_value_count
;
2060 /* static int hf_aecp_media_format; */
2061 /* static int hf_aecp_mem_obj_admin_flag; */
2062 /* static int hf_aecp_mem_obj_settings_flag; */
2063 static int hf_aecp_message_type
;
2064 static int hf_aecp_msrp_acc_lat_valid_flag
;
2065 static int hf_aecp_msrp_accumulated_latency
;
2066 static int hf_aecp_msrp_failure_bridge_id
;
2067 static int hf_aecp_msrp_failure_code
;
2068 static int hf_aecp_msrp_failure_valid_flag
;
2069 /* static int hf_aecp_stream_vlan_id; */
2070 static int hf_aecp_name
;
2071 static int hf_aecp_name_index
;
2072 static int hf_aecp_number_of_maps
;
2073 static int hf_aecp_operation_id
;
2074 static int hf_aecp_operation_type
;
2075 static int hf_aecp_owner_guid
;
2076 static int hf_aecp_percent_complete
;
2077 static int hf_aecp_persistent_flag
;
2078 /* static int hf_aecp_private_key_read_flag; */
2079 /* static int hf_aecp_private_key_write_flag; */
2080 /* static int hf_aecp_public_key_write_flag; */
2081 /* static int hf_aecp_query_id; */
2082 /* static int hf_aecp_query_limit; */
2083 /* static int hf_aecp_query_period; */
2084 /* static int hf_aecp_query_type; */
2085 static int hf_aecp_release_flag
;
2086 static int hf_aecp_sampling_rate_base_frequency
;
2087 static int hf_aecp_sampling_rate_pull
;
2088 static int hf_aecp_sequence_id
;
2089 static int hf_aecp_signal_index
;
2090 static int hf_aecp_signal_type
;
2091 static int hf_aecp_signal_output
;
2092 static int hf_aecp_stream_format
;
2093 static int hf_aecp_stream_format_valid_flag
;
2094 static int hf_aecp_stream_id_valid_flag
;
2095 static int hf_aecp_stream_input_early_timestamp_valid
;
2096 static int hf_aecp_stream_input_early_timestamp
;
2097 static int hf_aecp_stream_input_late_timestamp_valid
;
2098 static int hf_aecp_stream_input_late_timestamp
;
2099 static int hf_aecp_stream_input_media_locked_valid
;
2100 static int hf_aecp_stream_input_media_locked
;
2101 static int hf_aecp_stream_input_media_unlocked_valid
;
2102 static int hf_aecp_stream_input_media_unlocked
;
2103 static int hf_aecp_stream_input_media_reset_valid
;
2104 static int hf_aecp_stream_input_media_reset
;
2105 static int hf_aecp_stream_input_packets_rx_valid
;
2106 static int hf_aecp_stream_input_packets_rx
;
2107 static int hf_aecp_stream_input_packets_tx_valid
;
2108 static int hf_aecp_stream_input_packets_tx
;
2109 static int hf_aecp_stream_input_seq_num_mismatch_valid
;
2110 static int hf_aecp_stream_input_seq_num_mismatch
;
2111 static int hf_aecp_stream_input_stream_reset_valid
;
2112 static int hf_aecp_stream_input_stream_reset
;
2113 static int hf_aecp_stream_input_timestamp_uncertain_valid
;
2114 static int hf_aecp_stream_input_timestamp_uncertain
;
2115 static int hf_aecp_stream_input_timestamp_valid_valid
;
2116 static int hf_aecp_stream_input_timestamp_valid
;
2117 static int hf_aecp_stream_input_timestamp_not_valid_valid
;
2118 static int hf_aecp_stream_input_timestamp_not_valid
;
2119 static int hf_aecp_stream_input_unsupported_format_valid
;
2120 static int hf_aecp_stream_input_unsupported_format
;
2121 static int hf_aecp_stream_vlan_id_valid_flag
;
2122 static int hf_aecp_target_guid
;
2123 static int hf_aecp_token_length
;
2124 static int hf_aecp_u_flag
;
2125 static int hf_aecp_unlock_flag
;
2126 /* static int hf_aecp_values; */
2127 /* static int hf_aecp_values_count; */
2128 static int hf_aecp_vendor_unique_protocol_id
;
2129 static int hf_aecp_video_format
;
2130 static int hf_aecp_status_code
;
2131 static int hf_aecp_backup_talker_entity_id_0
;
2132 static int hf_aecp_backup_talker_entity_id_1
;
2133 static int hf_aecp_backup_talker_entity_id_2
;
2134 static int hf_aecp_backup_talker_unique_id_0
;
2135 static int hf_aecp_backup_talker_unique_id_1
;
2136 static int hf_aecp_backup_talker_unique_id_2
;
2137 static int hf_aecp_backedup_talker_entity_id
;
2138 static int hf_aecp_backedup_talker_unique_id
;
2139 static int hf_aecp_avb_info_ptp_grandmaster_id
;
2140 static int hf_aecp_avb_info_propegation_delay
;
2141 static int hf_aecp_avb_info_gptp_domain_number
;
2142 /* static int hf_aecp_avb_info_flags; */
2143 static int hf_aecp_as_capable_flag
;
2144 static int hf_aecp_gptp_enabled_flag
;
2145 static int hf_aecp_srp_enabled_flag
;
2146 static int hf_aecp_avb_info_msrp_mappings_count
;
2147 static int hf_aecp_avb_info_msrp_mappings
;
2148 static int hf_aecp_avb_info_msrp_mapping_traffic_class
;
2149 static int hf_aecp_avb_info_msrp_mapping_priority
;
2151 static int hf_aecp_get_avb_info_msrp_vlan_id
;
2153 /* ***************************************************************** */
2154 /* AVDECC Entity Model (AEM) */
2155 /* ***************************************************************** */
2156 static int hf_aem_am824_label
;
2157 /* static int hf_aem_aspect_x; */
2158 /* static int hf_aem_aspect_y; */
2159 /* static int hf_aem_audio_channels; */
2160 static int hf_aem_avb_interface_id
;
2161 static int hf_aem_buffer_length
;
2162 static int hf_aem_b_flag
;
2163 static int hf_aem_backedup_talker_guid
;
2164 static int hf_aem_backedup_talker_unique
;
2165 static int hf_aem_backup_talker_guid_0
;
2166 static int hf_aem_backup_talker_guid_1
;
2167 static int hf_aem_backup_talker_guid_2
;
2168 static int hf_aem_backup_talker_unique_0
;
2169 static int hf_aem_backup_talker_unique_1
;
2170 static int hf_aem_backup_talker_unique_2
;
2171 static int hf_aem_base_audio_map
;
2172 static int hf_aem_base_cluster
;
2173 static int hf_aem_base_control
;
2174 static int hf_aem_base_control_block
;
2175 /* static int hf_aem_base_destination; */
2176 static int hf_aem_base_external_input_port
;
2177 static int hf_aem_base_external_output_port
;
2178 static int hf_aem_base_frequency
;
2179 static int hf_aem_base_internal_input_port
;
2180 static int hf_aem_base_internal_output_port
;
2181 static int hf_aem_base_matrix
;
2182 static int hf_aem_base_mixer
;
2183 static int hf_aem_base_signal_selector
;
2184 /* static int hf_aem_base_source; */
2185 static int hf_aem_number_splitters
;
2186 static int hf_aem_base_splitter
;
2187 static int hf_aem_number_combiners
;
2188 static int hf_aem_base_combiner
;
2189 static int hf_aem_number_demultiplexers
;
2190 static int hf_aem_base_demultiplexer
;
2191 static int hf_aem_number_multiplexers
;
2192 static int hf_aem_base_multiplexer
;
2193 static int hf_aem_number_transcoders
;
2194 static int hf_aem_base_transcoder
;
2195 static int hf_aem_base_stream_input_port
;
2196 static int hf_aem_base_stream_output_port
;
2197 static int hf_aem_base_strings
;
2198 static int hf_aem_binary_blob
;
2199 static int hf_aem_blob_size
;
2200 static int hf_aem_block_latency
;
2201 static int hf_aem_reset_time
;
2202 /* static int hf_aem_bpp; */
2203 static int hf_aem_channel_count
;
2204 /* static int hf_aem_channels; */
2205 static int hf_aem_clock_source_flags
;
2206 static int hf_aem_clock_source_id
;
2207 static int hf_aem_clock_domain_id
;
2208 static int hf_aem_clock_sources_offset
;
2209 static int hf_aem_clock_source_index
;
2210 static int hf_aem_clock_sources_count
;
2211 static int hf_aem_clock_sources
;
2212 static int hf_aem_clock_sources_array
;
2213 static int hf_aem_clock_source_location_id
;
2214 static int hf_aem_clock_source_location_type
;
2215 static int hf_aem_clock_source_name
;
2216 static int hf_aem_clock_source_name_string
;
2217 static int hf_aem_clock_source_type
;
2218 /* static int hf_aem_cluster_name; */
2219 /* static int hf_aem_cluster_name_string; */
2220 /* static int hf_aem_color_format; */
2221 static int hf_aem_color_space
;
2222 /* static int hf_aem_comp1; */
2223 /* static int hf_aem_comp2; */
2224 /* static int hf_aem_comp3; */
2225 /* static int hf_aem_comp4; */
2226 static int hf_aem_compress_mode
;
2227 static int hf_aem_configuration_name
;
2228 static int hf_aem_configuration_name_string
;
2229 static int hf_aem_configurations_count
;
2230 static int hf_aem_control_domain
;
2231 static int hf_aem_control_latency
;
2232 /* static int hf_aem_control_location_id; */
2233 /* static int hf_aem_control_location_type; */
2234 static int hf_aem_control_type
;
2235 static int hf_aem_control_value_type
;
2236 static int hf_aem_count
;
2237 /* static int hf_aem_cs_eui64; */
2238 static int hf_aem_ctrl_double
;
2239 static int hf_aem_ctrl_float
;
2240 static int hf_aem_ctrl_int16
;
2241 static int hf_aem_ctrl_int32
;
2242 static int hf_aem_ctrl_int64
;
2243 static int hf_aem_ctrl_int8
;
2244 static int hf_aem_ctrl_uint16
;
2245 static int hf_aem_ctrl_uint32
;
2246 static int hf_aem_ctrl_uint64
;
2247 static int hf_aem_ctrl_uint8
;
2248 static int hf_aem_ctrl_vals
;
2249 static int hf_aem_current_configuration
;
2250 static int hf_aem_current_sample_rate
;
2251 /* static int hf_aem_current_signal_id; */
2252 /* static int hf_aem_current_signal_type; */
2253 static int hf_aem_dbs
;
2254 /* static int hf_aem_default_signal_id; */
2255 /* static int hf_aem_default_signal_type; */
2256 static int hf_aem_descriptor_counts_count
;
2257 static int hf_aem_descriptor_counts_offset
;
2258 /* static int hf_aem_div; */
2259 static int hf_aem_entity_id
;
2260 static int hf_aem_entity_model_id
;
2261 static int hf_aem_entity_name
;
2262 static int hf_aem_fdf_evt
;
2263 static int hf_aem_fdf_sfc
;
2264 static int hf_aem_firmware_version
;
2265 static int hf_aem_flags_async_sample_rate_conv
;
2266 static int hf_aem_flags_captive
;
2267 static int hf_aem_flags_class_a
;
2268 static int hf_aem_flags_class_b
;
2269 static int hf_aem_flags_clock_sync_source
;
2270 static int hf_aem_flags_sync_sample_rate_conv
;
2271 static int hf_aem_fmt
;
2272 /* static int hf_aem_formats_count; */
2273 static int hf_aem_formats_offset
;
2274 /* static int hf_aem_frame_rate; */
2275 static int hf_aem_frequency
;
2276 static int hf_aem_group_name
;
2277 static int hf_aem_guid
;
2278 /* static int hf_aem_height; */
2279 static int hf_aem_iidc_format
;
2280 static int hf_aem_iidc_mode
;
2281 static int hf_aem_iidc_rate
;
2282 static int hf_aem_interface_name
;
2283 static int hf_aem_interface_name_string
;
2284 /* static int hf_aem_interlace; */
2285 /* static int hf_aem_internal_id; */
2286 static int hf_aem_jack_flags
;
2287 static int hf_aem_jack_id
;
2288 static int hf_aem_jack_name
;
2289 static int hf_aem_jack_name_string
;
2290 static int hf_aem_jack_type
;
2291 static int hf_aem_label_iec_60958_cnt
;
2292 static int hf_aem_label_mbla_cnt
;
2293 static int hf_aem_label_midi_cnt
;
2294 static int hf_aem_label_smpte_cnt
;
2295 static int hf_aem_length
;
2296 static int hf_aem_locale_identifier
;
2297 static int hf_aem_mapping_cluster_offset
;
2298 static int hf_aem_mapping_cluster_channel
;
2299 static int hf_aem_mapping_stream_channel
;
2300 static int hf_aem_mapping_stream_index
;
2301 static int hf_aem_mappings
;
2302 static int hf_aem_mappings_offset
;
2303 static int hf_aem_memory_object_type
;
2304 /* static int hf_aem_mf_height; */
2305 /* static int hf_aem_mf_width; */
2306 /* static int hf_aem_mfd_type; */
2307 static int hf_aem_model_name_string
;
2308 static int hf_aem_avb_interface_flags
;
2309 static int hf_aem_avb_clock_identity
;
2310 static int hf_aem_avb_priority1
;
2311 static int hf_aem_avb_clock_class
;
2312 static int hf_aem_avb_offset_scaled_log_variance
;
2313 static int hf_aem_avb_clock_accuracy
;
2314 static int hf_aem_avb_priority2
;
2315 static int hf_aem_avb_domain_number
;
2316 static int hf_aem_avb_log_sync_interval
;
2317 /* static int hf_aem_avb_propagation_delay; */
2318 static int hf_aem_nb_flag
;
2319 static int hf_aem_number_audio_maps
;
2320 /* static int hf_aem_number_destinations; */
2321 static int hf_aem_number_matrices
;
2322 static int hf_aem_number_mixers
;
2323 static int hf_aem_number_of_clusters
;
2324 static int hf_aem_number_of_controls
;
2325 static int hf_aem_number_control_blocks
;
2326 static int hf_aem_number_of_external_input_ports
;
2327 static int hf_aem_number_of_external_output_ports
;
2328 static int hf_aem_number_of_formats
;
2329 static int hf_aem_number_of_internal_input_ports
;
2330 static int hf_aem_number_of_internal_output_ports
;
2331 static int hf_aem_number_of_mappings
;
2332 /* static int hf_aem_number_of_sources; */
2333 static int hf_aem_number_of_stream_input_ports
;
2334 static int hf_aem_number_of_stream_output_ports
;
2335 static int hf_aem_number_of_strings
;
2336 static int hf_aem_number_of_values
;
2337 static int hf_aem_number_signal_selectors
;
2338 static int hf_aem_object_name
;
2339 static int hf_aem_localized_description
;
2340 /* static int hf_aem_oui24; */
2341 static int hf_aem_path_latency
;
2342 static int hf_aem_port_flags
;
2343 static int hf_aem_pull_field
;
2344 static int hf_aem_sample_rates
;
2345 static int hf_aem_sample_rates_count
;
2346 static int hf_aem_sample_rates_offset
;
2347 static int hf_aem_serial_number
;
2348 static int hf_aem_sf
;
2349 static int hf_aem_sf_version
;
2350 static int hf_aem_sf_subtype
;
2351 static int hf_aem_signal_index
;
2352 static int hf_aem_signal_output
;
2353 static int hf_aem_signal_type
;
2354 static int hf_aem_signals_count
;
2355 static int hf_aem_signals_offset
;
2356 static int hf_aem_sources
;
2357 /* static int hf_aem_sources_offset; */
2358 static int hf_aem_start_address
;
2359 /* static int hf_aem_stream_channels; */
2360 static int hf_aem_stream_flags
;
2361 static int hf_aem_stream_format
;
2362 static int hf_aem_stream_formats
;
2363 /* static int hf_aem_stream_id; */
2364 static int hf_aem_stream_name
;
2365 static int hf_aem_stream_name_string
;
2366 static int hf_aem_string
;
2367 static int hf_aem_string_ref
;
2368 static int hf_aem_target_descriptor_id
;
2369 static int hf_aem_target_descriptor_type
;
2370 static int hf_aem_unit
;
2371 static int hf_aem_unknown_descriptor
;
2372 /* static int hf_aem_value_offset; */
2373 static int hf_aem_values_offset
;
2374 static int hf_aem_vendor_name_string
;
2375 static int hf_aem_video_mode
;
2376 /* static int hf_aem_width; */
2378 /****************************************************************** */
2379 /* AVDECC Connection Management Protocol Data Unit (ACMPDU) */
2380 /* **************************************************************** */
2381 static int hf_acmp_message_type
;
2382 static int hf_acmp_status_field
;
2383 static int hf_acmp_cd_length
;
2384 static int hf_acmp_stream_id
;
2385 static int hf_acmp_controller_guid
;
2386 static int hf_acmp_talker_guid
;
2387 static int hf_acmp_listener_guid
;
2388 static int hf_acmp_talker_unique_id
;
2389 static int hf_acmp_listener_unique_id
;
2390 static int hf_acmp_stream_dest_mac
;
2391 static int hf_acmp_connection_count
;
2392 static int hf_acmp_sequence_id
;
2393 static int hf_acmp_flags
;
2394 static int hf_acmp_vlan_id
;
2396 /* ACMP Flags (8.2.1.17) */
2397 static int hf_acmp_flags_class_b
;
2398 static int hf_acmp_flags_fast_connect
;
2399 static int hf_acmp_flags_saved_state
;
2400 static int hf_acmp_flags_streaming_wait
;
2401 static int hf_acmp_flags_supports_encrypted
;
2402 static int hf_acmp_flags_encrypted_pdu
;
2403 static int hf_acmp_flags_talker_failed
;
2405 /* Initialize the subtree pointers */
2406 static int ett_17221
;
2408 static int ett_adp_ent_cap
;
2409 static int ett_adp_talk_cap
;
2410 static int ett_adp_list_cap
;
2411 static int ett_adp_cont_cap
;
2412 /* static int ett_adp_aud_format; */
2413 static int ett_adp_samp_rates
;
2414 static int ett_adp_chan_format
;
2416 static int ett_acmp_flags
;
2418 static int ett_aem_descriptor
;
2419 static int ett_aem_desc_counts
;
2420 static int ett_aem_sample_rates
;
2421 static int ett_aem_stream_flags
;
2422 static int ett_aem_clock_sources
;
2423 static int ett_aem_stream_formats
;
2424 static int ett_aem_jack_flags
;
2425 static int ett_aem_port_flags
;
2426 static int ett_aecp_get_avb_info_msrp_mappings
;
2427 static int ett_aem_clock_source_flags
;
2428 static int ett_aem_mappings
;
2429 static int ett_aem_ctrl_vals
;
2430 static int ett_aem_sources
;
2431 /* static int ett_aem_media_format; */
2432 static int ett_aem_stream_format
;
2434 static int ett_aecp_descriptors
;
2435 static int ett_aecp_flags_32
;
2442 /* convenience function */
2443 static inline ctrl_ref_vals
2444 get_ctrl_ref_vals(uint16_t ctrl_val_type
)
2448 switch(ctrl_val_type
) {
2449 case AEM_CONTROL_LINEAR_INT8
:
2450 case AEM_CONTROL_SELECTOR_INT8
:
2451 case AEM_CONTROL_ARRAY_INT8
:
2452 ret
.hf
= hf_aem_ctrl_int8
;
2455 case AEM_CONTROL_LINEAR_UINT8
:
2456 case AEM_CONTROL_SELECTOR_UINT8
:
2457 case AEM_CONTROL_ARRAY_UINT8
:
2458 ret
.hf
= hf_aem_ctrl_uint8
;
2461 case AEM_CONTROL_LINEAR_INT16
:
2462 case AEM_CONTROL_SELECTOR_INT16
:
2463 case AEM_CONTROL_ARRAY_INT16
:
2464 ret
.hf
= hf_aem_ctrl_int16
;
2467 case AEM_CONTROL_LINEAR_UINT16
:
2468 case AEM_CONTROL_SELECTOR_UINT16
:
2469 case AEM_CONTROL_ARRAY_UINT16
:
2470 ret
.hf
= hf_aem_ctrl_uint16
;
2473 case AEM_CONTROL_LINEAR_INT32
:
2474 case AEM_CONTROL_SELECTOR_INT32
:
2475 case AEM_CONTROL_ARRAY_INT32
:
2476 ret
.hf
= hf_aem_ctrl_int32
;
2479 case AEM_CONTROL_LINEAR_UINT32
:
2480 case AEM_CONTROL_SELECTOR_UINT32
:
2481 case AEM_CONTROL_ARRAY_UINT32
:
2482 ret
.hf
= hf_aem_ctrl_uint32
;
2485 case AEM_CONTROL_LINEAR_FLOAT
:
2486 case AEM_CONTROL_SELECTOR_FLOAT
:
2487 case AEM_CONTROL_ARRAY_FLOAT
:
2488 ret
.hf
= hf_aem_ctrl_float
;
2491 case AEM_CONTROL_LINEAR_INT64
:
2492 case AEM_CONTROL_SELECTOR_INT64
:
2493 case AEM_CONTROL_ARRAY_INT64
:
2494 ret
.hf
= hf_aem_ctrl_int64
;
2497 case AEM_CONTROL_LINEAR_UINT64
:
2498 case AEM_CONTROL_SELECTOR_UINT64
:
2499 case AEM_CONTROL_ARRAY_UINT64
:
2500 ret
.hf
= hf_aem_ctrl_uint64
;
2503 case AEM_CONTROL_LINEAR_DOUBLE
:
2504 case AEM_CONTROL_SELECTOR_DOUBLE
:
2505 case AEM_CONTROL_ARRAY_DOUBLE
:
2506 ret
.hf
= hf_aem_ctrl_double
;
2509 case AEM_CONTROL_BODE_PLOT
:
2522 dissect_17221_stream_format(tvbuff_t
*tvb
, proto_tree
*tree
)
2524 proto_item
*stream_tree
;
2525 proto_item
*stream_ti
;
2533 stream_ti
= proto_tree_add_item(tree
, hf_aem_stream_format
, tvb
,
2535 stream_tree
= proto_item_add_subtree(stream_ti
, ett_aem_stream_format
);
2538 version
= tvb_get_uint8(tvb
, 0) & AEM_MASK_SF_VERSION
;
2540 /* add the version to the tree */
2541 proto_tree_add_item(stream_tree
, hf_aem_sf_version
, tvb
,
2542 AEM_OFFSET_SF_VERSION
, 1, ENC_BIG_ENDIAN
);
2544 if (version
== 0) { /* stream format version 0 */
2546 subtype
= tvb_get_uint8(tvb
, AEM_OFFSET_SF_SUBTYPE
) & AEM_MASK_SF_SUBTYPE
;
2548 proto_tree_add_item(stream_tree
, hf_aem_sf_subtype
, tvb
,
2549 AEM_OFFSET_SF_SUBTYPE
, 1, ENC_BIG_ENDIAN
);
2552 case IEC_61883_IIDC_SUBTYPE
:
2554 sf
= tvb_get_uint8(tvb
, 1) & AEM_MASK_SF
;
2555 proto_tree_add_item(stream_tree
, hf_aem_sf
, tvb
,
2556 AEM_OFFSET_SF
, 1, ENC_BIG_ENDIAN
);
2558 if (sf
== 0) { /* IIDC Stream Format */
2559 proto_tree_add_item(stream_tree
, hf_aem_iidc_format
, tvb
,
2560 AEM_OFFSET_IIDC_FORMAT
, 1, ENC_BIG_ENDIAN
);
2561 proto_tree_add_item(stream_tree
, hf_aem_iidc_mode
, tvb
,
2562 AEM_OFFSET_IIDC_MODE
, 1, ENC_BIG_ENDIAN
);
2563 proto_tree_add_item(stream_tree
, hf_aem_iidc_rate
, tvb
,
2564 AEM_OFFSET_IIDC_RATE
, 1, ENC_BIG_ENDIAN
);
2566 } else { /* 61883 Stream Format */
2567 proto_tree_add_item(stream_tree
, hf_aem_fmt
, tvb
,
2568 AEM_OFFSET_FMT
, 1, ENC_BIG_ENDIAN
);
2569 fmt
= tvb_get_uint8(tvb
, AEM_OFFSET_FMT
) & 0x7F;
2570 if (fmt
== 0x20) { /* 61883-6 Stream Format */
2571 proto_tree_add_item(stream_tree
, hf_aem_fdf_evt
, tvb
,
2572 AEM_OFFSET_FDF_EVT
, 1, ENC_BIG_ENDIAN
);
2573 proto_tree_add_item(stream_tree
, hf_aem_fdf_sfc
, tvb
,
2574 AEM_OFFSET_FDF_SFC
, 1, ENC_BIG_ENDIAN
);
2575 proto_tree_add_item(stream_tree
, hf_aem_dbs
, tvb
,
2576 AEM_OFFSET_DBS
, 1, ENC_BIG_ENDIAN
);
2578 fdf_evt
= tvb_get_uint8(tvb
, AEM_OFFSET_FDF_EVT
) & AEM_MASK_FDF_EVT
;
2580 proto_tree_add_item(stream_tree
, hf_aem_b_flag
, tvb
,
2581 AEM_OFFSET_B
, 1, ENC_BIG_ENDIAN
);
2582 proto_tree_add_item(stream_tree
, hf_aem_nb_flag
, tvb
,
2583 AEM_OFFSET_NB
, 1, ENC_BIG_ENDIAN
);
2585 if (fdf_evt
== 0x00) { /* 61883-6 AM824 Stream Format */
2586 proto_tree_add_item(stream_tree
, hf_aem_label_iec_60958_cnt
, tvb
,
2587 AEM_OFFSET_LABEL_IEC_60958_CNT
, 1, ENC_BIG_ENDIAN
);
2588 proto_tree_add_item(stream_tree
, hf_aem_label_mbla_cnt
, tvb
,
2589 AEM_OFFSET_LABEL_MBLA_CNT
, 1, ENC_BIG_ENDIAN
);
2590 proto_tree_add_item(stream_tree
, hf_aem_label_midi_cnt
, tvb
,
2591 AEM_OFFSET_LABEL_MIDI_CNT
, 1, ENC_BIG_ENDIAN
);
2592 proto_tree_add_item(stream_tree
, hf_aem_label_smpte_cnt
, tvb
,
2593 AEM_OFFSET_LABEL_SMPTE_CNT
, 1, ENC_BIG_ENDIAN
);
2595 } else if (fmt
== 0x01) { /* 61883-8 Stream Format */
2596 proto_tree_add_item(stream_tree
, hf_aem_video_mode
, tvb
,
2597 AEM_OFFSET_VIDEO_MODE
, 1, ENC_BIG_ENDIAN
);
2598 proto_tree_add_item(stream_tree
, hf_aem_compress_mode
, tvb
,
2599 AEM_OFFSET_COMPRESS_MODE
, 1, ENC_BIG_ENDIAN
);
2600 proto_tree_add_item(stream_tree
, hf_aem_color_space
, tvb
,
2601 AEM_OFFSET_COLOR_SPACE
, 1, ENC_BIG_ENDIAN
);
2606 /* Defined by the MMA */
2608 case AVTP_AUDIO_SUBTYPE
:
2609 /* Defined by the AVTP */
2611 case AVTP_VIDEO_SUBTYPE
:
2612 /* Defined by the AVTP */
2614 case EXPERIMENTAL_SUBTYPE
:
2615 /* used for experimental formats for development purposes only */
2618 /* unknown or unimplemented subtype */
2619 /* possibly a weather baloon, or swamp gas */
2626 dissect_17221_video_format(tvbuff_t
*tvb
, proto_tree
*tree
)
2629 proto_tree_add_item(tree
, hf_aecp_video_format
, tvb
,
2634 dissect_17221_video_aspect_ratio(tvbuff_t
*tvb
, proto_tree
*tree
)
2637 proto_tree_add_item(tree
, hf_aecp_video_format
, tvb
,
2642 dissect_17221_video_frame_size(tvbuff_t
*tvb
, proto_tree
*tree
)
2645 proto_tree_add_item(tree
, hf_aecp_video_format
, tvb
,
2650 dissect_17221_sensor_format(tvbuff_t
*tvb
, proto_tree
*tree
)
2653 proto_tree_add_item(tree
, hf_aecp_video_format
, tvb
,
2657 #if 0 /* old, prior to D21. Fix for D21 video format */
2659 dissect_17221_media_format(tvbuff_t
*tvb
, proto_tree
*tree
)
2661 proto_item
*media_tree
;
2662 proto_item
*media_ti
;
2666 /* grab the oui24 and mfd_type */
2667 oui24
= tvb_get_ntoh24(tvb
, 0);
2668 mfd_type
= tvb_get_uint8(tvb
, 3);
2671 media_ti
= proto_tree_add_item(tree
, hf_aecp_media_format
, tvb
,
2673 media_tree
= proto_item_add_subtree(media_ti
, ett_aem_media_format
);
2675 /* standard media formats */
2676 if (oui24
== OUI24_STANDARD_MEDIA_FORMAT
) {
2677 /* Standard Media Format Fields */
2678 proto_tree_add_item(media_tree
, hf_aem_oui24
, tvb
,
2679 0, 3, ENC_BIG_ENDIAN
);
2680 proto_tree_add_item(media_tree
, hf_aem_mfd_type
, tvb
,
2681 AEM_OFFSET_MFD_TYPE
, 1, ENC_BIG_ENDIAN
);
2683 /* break down the standard media format types */
2685 case MFD_TYPE_VIDEO
:
2686 proto_tree_add_item(media_tree
, hf_aem_div
, tvb
,
2687 AEM_OFFSET_DIV
, 1, ENC_BIG_ENDIAN
);
2688 proto_tree_add_item(media_tree
, hf_aem_interlace
, tvb
,
2689 AEM_OFFSET_INTERLACE
, 2, ENC_BIG_ENDIAN
);
2690 proto_tree_add_item(media_tree
, hf_aem_channels
, tvb
,
2691 AEM_OFFSET_CHANNELS
, 1, ENC_BIG_ENDIAN
);
2692 proto_tree_add_item(media_tree
, hf_aem_color_format
, tvb
,
2693 AEM_OFFSET_COLOR_FORMAT
, 2, ENC_BIG_ENDIAN
);
2694 proto_tree_add_item(media_tree
, hf_aem_bpp
, tvb
,
2695 AEM_OFFSET_BPP
, 1, ENC_BIG_ENDIAN
);
2696 proto_tree_add_item(media_tree
, hf_aem_aspect_x
, tvb
,
2697 AEM_OFFSET_ASPECT_X
, 1, ENC_BIG_ENDIAN
);
2698 proto_tree_add_item(media_tree
, hf_aem_aspect_y
, tvb
,
2699 AEM_OFFSET_ASPECT_Y
, 1 ,ENC_BIG_ENDIAN
);
2700 proto_tree_add_item(media_tree
, hf_aem_frame_rate
, tvb
,
2701 AEM_OFFSET_FRAME_RATE
, 1, ENC_BIG_ENDIAN
);
2702 proto_tree_add_item(media_tree
, hf_aem_comp1
, tvb
,
2703 AEM_OFFSET_COMP1
, 2, ENC_BIG_ENDIAN
);
2704 proto_tree_add_item(media_tree
, hf_aem_comp2
, tvb
,
2705 AEM_OFFSET_COMP2
, 1, ENC_BIG_ENDIAN
);
2706 proto_tree_add_item(media_tree
, hf_aem_comp3
, tvb
,
2707 AEM_OFFSET_COMP3
, 2, ENC_BIG_ENDIAN
);
2708 proto_tree_add_item(media_tree
, hf_aem_comp4
, tvb
,
2709 AEM_OFFSET_COMP4
, 1, ENC_BIG_ENDIAN
);
2710 proto_tree_add_item(media_tree
, hf_aem_mf_width
, tvb
,
2711 AEM_OFFSET_SVMF_WIDTH
, 2, ENC_BIG_ENDIAN
);
2712 proto_tree_add_item(media_tree
, hf_aem_mf_height
, tvb
,
2713 AEM_OFFSET_SVMF_HEIGHT
, 2, ENC_BIG_ENDIAN
);
2715 case MFD_TYPE_TRANSPORT_STRM
:
2719 case MFD_TYPE_TIME_CODE
:
2721 case MFD_TYPE_CONTROL_PROTO
:
2722 proto_tree_add_item(media_tree
, hf_aem_cs_eui64
, tvb
,
2723 AEM_OFFSET_CS_EUI64
, 8, ENC_BIG_ENDIAN
);
2726 /* unsupported MFD type */
2729 } else { /* vendor specific media formats */
2731 /* these are not the media formats you are looking for */
2737 /* TODO following updates in Draft 18 and the pending Draft 19 this section will require major overhaul */
2739 dissect_17221_ctrl_val(tvbuff_t
*tvb
, proto_tree
*tree
, uint16_t num_ctrl_vals
, uint16_t ctrl_val_type
,
2740 uint16_t ctrl_offset
)
2742 proto_item
*ctrl_item
;
2743 proto_item
*ctrl_subtree
;
2745 uint32_t bin_blob_size
;
2748 /* set up control values tree */
2749 ctrl_item
= proto_tree_add_item(tree
, hf_aem_ctrl_vals
, tvb
,
2751 ctrl_subtree
= proto_item_add_subtree(ctrl_item
, ett_aem_ctrl_vals
);
2753 /* ctrl_val_type's are dissected below in this if/else block */
2754 /* for now only a few value types are in use, if I have time to come
2755 back to it I will add more fields to this but for now when viewing
2756 control_values you will need a copy of the spec handy to figure
2757 out what you are looking at, the get_ctrl_ref_vals function above
2758 will ideally be eliminated and this section will be a lot cleaner
2759 if/when that happens */
2761 ref
= get_ctrl_ref_vals(ctrl_val_type
);
2764 if (ctrl_val_type
< 0xa) {
2765 for(i
= 0; i
< num_ctrl_vals
; ++i
) {
2766 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2767 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2768 ctrl_offset
+= ref
.size
;
2769 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2770 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2771 ctrl_offset
+= ref
.size
;
2772 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2773 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2774 ctrl_offset
+= ref
.size
;
2775 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2776 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2777 ctrl_offset
+= ref
.size
;
2778 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2779 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2780 ctrl_offset
+= ref
.size
;
2781 proto_tree_add_item(ctrl_subtree
, hf_aem_unit
, tvb
,
2782 ctrl_offset
, 2, ENC_BIG_ENDIAN
);
2784 proto_tree_add_item(ctrl_subtree
, hf_aem_string_ref
, tvb
,
2785 ctrl_offset
, 2, ENC_BIG_ENDIAN
);
2789 /* SELECTOR TYPES */
2790 } else if (ctrl_val_type
> 0x9 && ctrl_val_type
< 0x14) {
2791 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2792 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2794 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2795 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2797 for(i
= 0; i
< num_ctrl_vals
; ++i
) {
2798 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2799 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2802 proto_tree_add_item(ctrl_subtree
, hf_aem_unit
, tvb
,
2803 ctrl_offset
, 2, ENC_BIG_ENDIAN
);
2805 /* UTF8 STRING TYPE */
2806 } else if (ctrl_val_type
== 0x14) {
2807 proto_tree_add_item(ctrl_subtree
, hf_aem_string
, tvb
,
2808 ctrl_offset
, -1, ENC_ASCII
);
2810 /* BODE_PLOT TYPE */
2811 } else if (ctrl_val_type
== 0x15) {
2812 for(i
= 0; i
< 12 + (num_ctrl_vals
* 3); ++i
) {
2813 proto_tree_add_item(ctrl_subtree
, hf_aem_ctrl_float
, tvb
,
2814 ctrl_offset
, 4, ENC_BIG_ENDIAN
);
2819 } else if (ctrl_val_type
> 0x15 && ctrl_val_type
< 0x1f) {
2820 /* VENDOR CONTROL TYPE */
2821 } else if (ctrl_val_type
== 0xfffe) {
2822 proto_tree_add_item(ctrl_subtree
, hf_aem_guid
, tvb
,
2823 ctrl_offset
, 8, ENC_BIG_ENDIAN
);
2825 bin_blob_size
= tvb_get_ntohl(tvb
, ctrl_offset
);
2826 proto_tree_add_item(ctrl_subtree
, hf_aem_blob_size
, tvb
,
2827 ctrl_offset
, 4, ENC_BIG_ENDIAN
);
2829 proto_tree_add_item(ctrl_subtree
, hf_aem_binary_blob
, tvb
,
2830 ctrl_offset
, bin_blob_size
, ENC_NA
);
2834 /* dissect descriptors from the AVDECC Entity Model (AEM) */
2835 /* this dissector is not registered */
2837 dissect_17221_aem(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2840 uint16_t ctrl_val_type
;
2841 uint16_t num_ctrl_vals
;
2845 /* Mr. Subtree and Mr. Counter will be used as the loop limit and
2846 * subtree object for arrays in the descriptors, rather than declaring
2847 * a separate variable for each possible case in the switch which uses
2850 proto_item
*mr_subtree
;
2851 proto_item
*mr_item
;
2853 uint16_t mr_counter
;
2859 proto_item
*aem_tree
;
2860 /* used in creation of descriptor subtree */
2861 proto_item
*desc_ti
;
2864 /* get the type of this descriptor */
2865 desc_type
= tvb_get_ntohs(tvb
, 0);
2867 /* Load the descriptor type and id fields, add subtree */
2868 desc_ti
= proto_tree_add_item(tree
, hf_aecp_descriptor_type
, tvb
,
2869 AEM_OFFSET_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
2870 aem_tree
= proto_item_add_subtree(desc_ti
, ett_aem_descriptor
);
2872 proto_tree_add_item(aem_tree
, hf_aecp_descriptor_index
, tvb
,
2873 AEM_OFFSET_DESCRIPTOR_ID
, 2, ENC_BIG_ENDIAN
);
2875 /* Dissect descriptors based on type. Where possible multiple cases *
2876 * will fall through to the same code */
2878 case AEM_DESCRIPTOR_ENTITY
:
2879 proto_tree_add_item(aem_tree
, hf_aem_entity_id
, tvb
,
2880 ENTITY_OFFSET_ENTITY_GUID
, 8, ENC_BIG_ENDIAN
);
2881 proto_tree_add_item(aem_tree
, hf_aem_entity_model_id
, tvb
,
2882 ENTITY_OFFSET_ENTITY_MODEL_ID
, 8, ENC_BIG_ENDIAN
);
2884 proto_tree_add_item(aem_tree
, hf_adp_entity_cap
, tvb
,
2885 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2886 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_efu_mode
, tvb
,
2887 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2888 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_address_access_supported
, tvb
,
2889 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2890 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_gateway_entity
, tvb
,
2891 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2892 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_aem_supported
, tvb
,
2893 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2894 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_legacy_avc
, tvb
,
2895 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2896 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_assoc_id_support
, tvb
,
2897 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2898 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_assoc_id_valid
, tvb
,
2899 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2900 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_vendor_unique
, tvb
,
2901 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2902 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_class_a_supported
, tvb
,
2903 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2904 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_class_b_supported
, tvb
,
2905 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2906 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_gptp_supported
, tvb
,
2907 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2909 proto_tree_add_item(aem_tree
, hf_adp_talker_stream_srcs
, tvb
,
2910 ENTITY_OFFSET_TALKER_STREAM_SOURCES
, 2, ENC_BIG_ENDIAN
);
2912 proto_tree_add_item(aem_tree
, hf_adp_talker_cap
, tvb
,
2913 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2914 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_implement
, tvb
,
2915 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2916 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_other_src
, tvb
,
2917 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2918 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_control_src
, tvb
,
2919 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2920 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_media_clk_src
, tvb
,
2921 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2922 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_smpte_src
, tvb
,
2923 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2924 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_midi_src
, tvb
,
2925 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2926 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_audio_src
, tvb
,
2927 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2928 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_video_src
, tvb
,
2929 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2931 proto_tree_add_item(aem_tree
, hf_adp_listener_stream_sinks
, tvb
,
2932 ENTITY_OFFSET_LISTENER_STREAM_SINKS
, 2, ENC_BIG_ENDIAN
);
2934 proto_tree_add_item(aem_tree
, hf_adp_listener_cap
, tvb
,
2935 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2936 proto_tree_add_item(aem_tree
, hf_adp_list_cap_implement
, tvb
,
2937 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2938 proto_tree_add_item(aem_tree
, hf_adp_list_cap_other_sink
, tvb
,
2939 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2940 proto_tree_add_item(aem_tree
, hf_adp_list_cap_control_sink
, tvb
,
2941 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2942 proto_tree_add_item(aem_tree
, hf_adp_list_cap_media_clk_sink
, tvb
,
2943 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2944 proto_tree_add_item(aem_tree
, hf_adp_list_cap_smpte_sink
, tvb
,
2945 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2946 proto_tree_add_item(aem_tree
, hf_adp_list_cap_midi_sink
, tvb
,
2947 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2948 proto_tree_add_item(aem_tree
, hf_adp_list_cap_audio_sink
, tvb
,
2949 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2950 proto_tree_add_item(aem_tree
, hf_adp_list_cap_video_sink
, tvb
,
2951 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2953 proto_tree_add_item(aem_tree
, hf_adp_controller_cap
, tvb
,
2954 ENTITY_OFFSET_CONTROLLER_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2955 proto_tree_add_item(aem_tree
, hf_adp_cont_cap_implement
, tvb
,
2956 ENTITY_OFFSET_CONTROLLER_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2957 proto_tree_add_item(aem_tree
, hf_adp_cont_cap_layer3_proxy
, tvb
,
2958 ENTITY_OFFSET_CONTROLLER_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2960 proto_tree_add_item(aem_tree
, hf_adp_avail_index
, tvb
,
2961 ENTITY_OFFSET_AVAILABLE_INDEX
, 4, ENC_BIG_ENDIAN
);
2962 proto_tree_add_item(aem_tree
, hf_aecp_association_id
, tvb
,
2963 ENTITY_OFFSET_ASSOCIATION_ID
, 8, ENC_BIG_ENDIAN
);
2964 proto_tree_add_item(aem_tree
, hf_aem_entity_name
, tvb
,
2965 ENTITY_OFFSET_ENTITY_NAME
, 64, ENC_ASCII
);
2966 proto_tree_add_item(aem_tree
, hf_aem_vendor_name_string
, tvb
,
2967 ENTITY_OFFSET_VENDOR_NAME_STRING
, 2, ENC_BIG_ENDIAN
);
2968 proto_tree_add_item(aem_tree
, hf_aem_model_name_string
, tvb
,
2969 ENTITY_OFFSET_MODEL_NAME_STRING
, 2, ENC_BIG_ENDIAN
);
2970 proto_tree_add_item(aem_tree
, hf_aem_firmware_version
, tvb
,
2971 ENTITY_OFFSET_FIRMWARE_VERSION
, 64, ENC_ASCII
);
2972 proto_tree_add_item(aem_tree
, hf_aem_group_name
, tvb
,
2973 ENTITY_OFFSET_GROUP_NAME
, 64, ENC_ASCII
);
2974 proto_tree_add_item(aem_tree
, hf_aem_serial_number
, tvb
,
2975 ENTITY_OFFSET_SERIAL_NUMBER
, 64, ENC_ASCII
);
2976 proto_tree_add_item(aem_tree
, hf_aem_configurations_count
, tvb
,
2977 ENTITY_OFFSET_CONFIGURATIONS_COUNT
, 2, ENC_BIG_ENDIAN
);
2978 proto_tree_add_item(aem_tree
, hf_aem_current_configuration
, tvb
,
2979 ENTITY_OFFSET_CURRENT_CONFIGURATION
, 2, ENC_BIG_ENDIAN
);
2981 case AEM_DESCRIPTOR_CONFIGURATION
:
2982 proto_tree_add_item(aem_tree
, hf_aem_configuration_name
, tvb
,
2983 CONFIGURATION_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
2984 proto_tree_add_item(aem_tree
, hf_aem_configuration_name_string
, tvb
,
2985 CONFIGURATION_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
2986 proto_tree_add_item(aem_tree
, hf_aem_descriptor_counts_count
, tvb
,
2987 CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_COUNT
, 2, ENC_BIG_ENDIAN
);
2989 /* set up subtree, counter, and offset for sample rates array */
2990 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_descriptor_counts_offset
, tvb
,
2991 CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_OFFSET
, 2, ENC_BIG_ENDIAN
);
2992 mr_counter
= tvb_get_ntohs(tvb
, CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_COUNT
);
2993 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_desc_counts
);
2994 mr_offset
= CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS
;
2996 for(i
= 0; i
< mr_counter
; ++i
)
2998 proto_tree_add_item(mr_subtree
, hf_aecp_descriptor_type
, tvb
, mr_offset
, 2, ENC_BIG_ENDIAN
);
3000 proto_tree_add_item(mr_subtree
, hf_aem_count
, tvb
, mr_offset
, 2, ENC_BIG_ENDIAN
);
3004 case AEM_DESCRIPTOR_AUDIO_UNIT
:
3005 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3006 AUDIO_UNIT_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3007 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3008 AUDIO_UNIT_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3010 /* D20 clock domain */
3011 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3012 AUDIO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3014 proto_tree_add_item(aem_tree
, hf_aem_number_of_stream_input_ports
, tvb
,
3015 AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3016 proto_tree_add_item(aem_tree
, hf_aem_base_stream_input_port
, tvb
,
3017 AUDIO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3018 proto_tree_add_item(aem_tree
, hf_aem_number_of_stream_output_ports
, tvb
,
3019 AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3020 proto_tree_add_item(aem_tree
, hf_aem_base_stream_output_port
, tvb
,
3021 AUDIO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3022 proto_tree_add_item(aem_tree
, hf_aem_number_of_external_input_ports
, tvb
,
3023 AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3024 proto_tree_add_item(aem_tree
, hf_aem_base_external_input_port
, tvb
,
3025 AUDIO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3026 proto_tree_add_item(aem_tree
, hf_aem_number_of_external_output_ports
, tvb
,
3027 AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3028 proto_tree_add_item(aem_tree
, hf_aem_base_external_output_port
, tvb
,
3029 AUDIO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3030 proto_tree_add_item(aem_tree
, hf_aem_number_of_internal_input_ports
, tvb
,
3031 AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3032 proto_tree_add_item(aem_tree
, hf_aem_base_internal_input_port
, tvb
,
3033 AUDIO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3034 proto_tree_add_item(aem_tree
, hf_aem_number_of_internal_output_ports
, tvb
,
3035 AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3036 proto_tree_add_item(aem_tree
, hf_aem_base_internal_output_port
, tvb
,
3037 AUDIO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3038 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3039 AUDIO_UNIT_OFFSET_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3040 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3041 AUDIO_UNIT_OFFSET_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3042 proto_tree_add_item(aem_tree
, hf_aem_number_signal_selectors
, tvb
,
3043 AUDIO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS
, 2, ENC_BIG_ENDIAN
);
3044 proto_tree_add_item(aem_tree
, hf_aem_base_signal_selector
, tvb
,
3045 AUDIO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR
, 2, ENC_BIG_ENDIAN
);
3046 proto_tree_add_item(aem_tree
, hf_aem_number_mixers
, tvb
,
3047 AUDIO_UNIT_OFFSET_NUMBER_MIXERS
, 2, ENC_BIG_ENDIAN
);
3048 proto_tree_add_item(aem_tree
, hf_aem_base_mixer
, tvb
,
3049 AUDIO_UNIT_OFFSET_BASE_MIXER
, 2, ENC_BIG_ENDIAN
);
3050 proto_tree_add_item(aem_tree
, hf_aem_number_matrices
, tvb
,
3051 AUDIO_UNIT_OFFSET_NUMBER_MATRICES
, 2, ENC_BIG_ENDIAN
);
3052 proto_tree_add_item(aem_tree
, hf_aem_base_matrix
, tvb
,
3053 AUDIO_UNIT_OFFSET_BASE_MATRIX
, 2, ENC_BIG_ENDIAN
);
3054 proto_tree_add_item(aem_tree
, hf_aem_number_splitters
, tvb
,
3055 AUDIO_UNIT_OFFSET_NUMBER_SPLITTERS
, 2, ENC_BIG_ENDIAN
);
3056 proto_tree_add_item(aem_tree
, hf_aem_base_splitter
, tvb
,
3057 AUDIO_UNIT_OFFSET_BASE_SPLITTER
, 2, ENC_BIG_ENDIAN
);
3058 proto_tree_add_item(aem_tree
, hf_aem_number_combiners
, tvb
,
3059 AUDIO_UNIT_OFFSET_NUMBER_COMBINERS
, 2, ENC_BIG_ENDIAN
);
3060 proto_tree_add_item(aem_tree
, hf_aem_base_combiner
, tvb
,
3061 AUDIO_UNIT_OFFSET_BASE_COMBINER
, 2, ENC_BIG_ENDIAN
);
3062 proto_tree_add_item(aem_tree
, hf_aem_number_demultiplexers
, tvb
,
3063 AUDIO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS
, 2, ENC_BIG_ENDIAN
);
3064 proto_tree_add_item(aem_tree
, hf_aem_base_demultiplexer
, tvb
,
3065 AUDIO_UNIT_OFFSET_BASE_DEMULTIPLEXER
, 2, ENC_BIG_ENDIAN
);
3066 proto_tree_add_item(aem_tree
, hf_aem_number_multiplexers
, tvb
,
3067 AUDIO_UNIT_OFFSET_NUMBER_MULTIPLEXERS
, 2, ENC_BIG_ENDIAN
);
3068 proto_tree_add_item(aem_tree
, hf_aem_base_multiplexer
, tvb
,
3069 AUDIO_UNIT_OFFSET_BASE_MULTIPLEXER
, 2, ENC_BIG_ENDIAN
);
3070 proto_tree_add_item(aem_tree
, hf_aem_number_transcoders
, tvb
,
3071 AUDIO_UNIT_OFFSET_NUMBER_TRANSCODERS
, 2, ENC_BIG_ENDIAN
);
3072 proto_tree_add_item(aem_tree
, hf_aem_base_transcoder
, tvb
,
3073 AUDIO_UNIT_OFFSET_BASE_TRANSCODER
, 2, ENC_BIG_ENDIAN
);
3076 proto_tree_add_item(aem_tree
, hf_aem_number_control_blocks
, tvb
,
3077 AUDIO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS
, 2, ENC_BIG_ENDIAN
);
3078 proto_tree_add_item(aem_tree
, hf_aem_base_control_block
, tvb
,
3079 AUDIO_UNIT_OFFSET_BASE_CONTROL_BLOCK
, 2, ENC_BIG_ENDIAN
);
3082 proto_tree_add_item(aem_tree
, hf_aem_current_sample_rate
, tvb
,
3083 AUDIO_UNIT_OFFSET_CURRENT_SAMPLE_RATE
, 4, ENC_BIG_ENDIAN
);
3085 proto_tree_add_item(aem_tree
, hf_aem_sample_rates_offset
, tvb
,
3086 AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET
, 2, ENC_BIG_ENDIAN
);
3087 proto_tree_add_item(aem_tree
, hf_aem_sample_rates_count
, tvb
,
3088 AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT
, 2, ENC_BIG_ENDIAN
);
3090 /* set up subtree, counter, and offset for sample rates array */
3091 mr_offset
= tvb_get_ntohs(tvb
, AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET
);
3092 mr_counter
= tvb_get_ntohs(tvb
, AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT
);
3093 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_sample_rates
, tvb
,
3094 mr_offset
, mr_counter
* 4, ENC_NA
);
3095 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_sample_rates
);
3097 /* loop to get the array values */
3098 for(i
= 0; i
< mr_counter
; ++i
) {
3099 proto_tree_add_item(mr_subtree
, hf_aem_pull_field
, tvb
,
3100 mr_offset
, 1, ENC_BIG_ENDIAN
);
3101 proto_tree_add_item(mr_subtree
, hf_aem_base_frequency
, tvb
,
3102 mr_offset
, 4, ENC_BIG_ENDIAN
);
3103 base_freq
= tvb_get_ntohl(tvb
, mr_offset
);
3104 freq_mult
= base_freq
;
3106 freq_mult
&= 0xe0000000;
3107 freq_mult
= freq_mult
>> 29;
3108 base_freq
&= 0x1fffffff;
3109 /* replace this with something not horrible */
3110 frequency
= freq_mult
== 0 ? 1 :
3111 freq_mult
== 1 ? 1 / (float)1.001 :
3112 freq_mult
== 2 ? (float)1.001 :
3113 freq_mult
== 3 ? 24 / 25 :
3114 freq_mult
== 4 ? 54 / 24 : 0;
3116 frequency
*= base_freq
;
3117 proto_tree_add_float(mr_subtree
, hf_aem_frequency
, tvb
, mr_offset
, 4, frequency
);
3122 case AEM_DESCRIPTOR_VIDEO_UNIT
:
3123 case AEM_DESCRIPTOR_SENSOR_UNIT
:
3124 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3125 VIDEO_UNIT_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3126 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3127 VIDEO_UNIT_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3129 /* D20 clock domain */
3130 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3131 AUDIO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3133 proto_tree_add_item(aem_tree
, hf_aem_number_of_stream_input_ports
, tvb
,
3134 VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3135 proto_tree_add_item(aem_tree
, hf_aem_base_stream_input_port
, tvb
,
3136 VIDEO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3137 proto_tree_add_item(aem_tree
, hf_aem_number_of_stream_output_ports
, tvb
,
3138 VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3139 proto_tree_add_item(aem_tree
, hf_aem_base_stream_output_port
, tvb
,
3140 VIDEO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3141 proto_tree_add_item(aem_tree
, hf_aem_number_of_external_input_ports
, tvb
,
3142 VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3143 proto_tree_add_item(aem_tree
, hf_aem_base_external_input_port
, tvb
,
3144 VIDEO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3145 proto_tree_add_item(aem_tree
, hf_aem_number_of_external_output_ports
, tvb
,
3146 VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3147 proto_tree_add_item(aem_tree
, hf_aem_base_external_output_port
, tvb
,
3148 VIDEO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3149 proto_tree_add_item(aem_tree
, hf_aem_number_of_internal_input_ports
, tvb
,
3150 VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3151 proto_tree_add_item(aem_tree
, hf_aem_base_internal_input_port
, tvb
,
3152 VIDEO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3153 proto_tree_add_item(aem_tree
, hf_aem_number_of_internal_output_ports
, tvb
,
3154 VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3155 proto_tree_add_item(aem_tree
, hf_aem_base_internal_output_port
, tvb
,
3156 VIDEO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3157 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3158 VIDEO_UNIT_OFFSET_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3159 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3160 VIDEO_UNIT_OFFSET_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3161 proto_tree_add_item(aem_tree
, hf_aem_number_signal_selectors
, tvb
,
3162 VIDEO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS
, 2, ENC_BIG_ENDIAN
);
3163 proto_tree_add_item(aem_tree
, hf_aem_base_signal_selector
, tvb
,
3164 VIDEO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR
, 2, ENC_BIG_ENDIAN
);
3165 proto_tree_add_item(aem_tree
, hf_aem_number_mixers
, tvb
,
3166 VIDEO_UNIT_OFFSET_NUMBER_MIXERS
, 2, ENC_BIG_ENDIAN
);
3167 proto_tree_add_item(aem_tree
, hf_aem_base_mixer
, tvb
,
3168 VIDEO_UNIT_OFFSET_BASE_MIXER
, 2, ENC_BIG_ENDIAN
);
3169 proto_tree_add_item(aem_tree
, hf_aem_number_matrices
, tvb
,
3170 VIDEO_UNIT_OFFSET_NUMBER_MATRICES
, 2, ENC_BIG_ENDIAN
);
3171 proto_tree_add_item(aem_tree
, hf_aem_base_matrix
, tvb
,
3172 VIDEO_UNIT_OFFSET_BASE_MATRIX
, 2, ENC_BIG_ENDIAN
);
3173 proto_tree_add_item(aem_tree
, hf_aem_number_splitters
, tvb
,
3174 VIDEO_UNIT_OFFSET_NUMBER_SPLITTERS
, 2, ENC_BIG_ENDIAN
);
3175 proto_tree_add_item(aem_tree
, hf_aem_base_splitter
, tvb
,
3176 VIDEO_UNIT_OFFSET_BASE_SPLITTER
, 2, ENC_BIG_ENDIAN
);
3177 proto_tree_add_item(aem_tree
, hf_aem_number_combiners
, tvb
,
3178 VIDEO_UNIT_OFFSET_NUMBER_COMBINERS
, 2, ENC_BIG_ENDIAN
);
3179 proto_tree_add_item(aem_tree
, hf_aem_base_combiner
, tvb
,
3180 VIDEO_UNIT_OFFSET_BASE_COMBINER
, 2, ENC_BIG_ENDIAN
);
3181 proto_tree_add_item(aem_tree
, hf_aem_number_demultiplexers
, tvb
,
3182 VIDEO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS
, 2, ENC_BIG_ENDIAN
);
3183 proto_tree_add_item(aem_tree
, hf_aem_base_demultiplexer
, tvb
,
3184 VIDEO_UNIT_OFFSET_BASE_DEMULTIPLEXER
, 2, ENC_BIG_ENDIAN
);
3185 proto_tree_add_item(aem_tree
, hf_aem_number_multiplexers
, tvb
,
3186 VIDEO_UNIT_OFFSET_NUMBER_MULTIPLEXERS
, 2, ENC_BIG_ENDIAN
);
3187 proto_tree_add_item(aem_tree
, hf_aem_base_multiplexer
, tvb
,
3188 VIDEO_UNIT_OFFSET_BASE_MULTIPLEXER
, 2, ENC_BIG_ENDIAN
);
3189 proto_tree_add_item(aem_tree
, hf_aem_number_transcoders
, tvb
,
3190 VIDEO_UNIT_OFFSET_NUMBER_TRANSCODERS
, 2, ENC_BIG_ENDIAN
);
3191 proto_tree_add_item(aem_tree
, hf_aem_base_transcoder
, tvb
,
3192 VIDEO_UNIT_OFFSET_BASE_TRANSCODER
, 2, ENC_BIG_ENDIAN
);
3195 proto_tree_add_item(aem_tree
, hf_aem_number_control_blocks
, tvb
,
3196 VIDEO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS
, 2, ENC_BIG_ENDIAN
);
3197 proto_tree_add_item(aem_tree
, hf_aem_base_control_block
, tvb
,
3198 VIDEO_UNIT_OFFSET_BASE_CONTROL_BLOCK
, 2, ENC_BIG_ENDIAN
);
3200 case AEM_DESCRIPTOR_STREAM_INPUT
:
3201 case AEM_DESCRIPTOR_STREAM_OUTPUT
:
3202 proto_tree_add_item(aem_tree
, hf_aem_stream_name
, tvb
,
3203 STREAM_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3204 proto_tree_add_item(aem_tree
, hf_aem_stream_name_string
, tvb
,
3205 STREAM_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3207 /* D20 clock domain */
3208 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3209 STREAM_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3211 /* set up a flags subtree */
3212 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_stream_flags
, tvb
,
3213 STREAM_OFFSET_STREAM_FLAGS
, 2, ENC_BIG_ENDIAN
);
3214 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_stream_flags
);
3215 /* add flags to new subtree */
3216 proto_tree_add_item(mr_subtree
, hf_aem_flags_clock_sync_source
, tvb
,
3217 STREAM_OFFSET_STREAM_FLAGS
, 2, ENC_BIG_ENDIAN
);
3218 proto_tree_add_item(mr_subtree
, hf_aem_flags_class_a
, tvb
,
3219 STREAM_OFFSET_STREAM_FLAGS
, 2, ENC_BIG_ENDIAN
);
3220 proto_tree_add_item(mr_subtree
, hf_aem_flags_class_b
, tvb
,
3221 STREAM_OFFSET_STREAM_FLAGS
, 2, ENC_BIG_ENDIAN
);
3222 /* done adding flags, continue with fields */
3223 /* stream format dissection */
3224 next_tvb
= tvb_new_subset_length(tvb
, STREAM_OFFSET_CURRENT_FORMAT
, 8);
3225 dissect_17221_stream_format(next_tvb
, aem_tree
);
3227 proto_tree_add_item(aem_tree
, hf_aem_formats_offset
, tvb
,
3228 STREAM_OFFSET_FORMATS_OFFSET
, 2, ENC_BIG_ENDIAN
);
3229 proto_tree_add_item(aem_tree
, hf_aem_number_of_formats
, tvb
,
3230 STREAM_OFFSET_NUMBER_OF_FORMATS
, 2, ENC_BIG_ENDIAN
);
3231 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_guid_0
, tvb
,
3232 STREAM_OFFSET_BACKUP_TALKER_GUID_0
, 8, ENC_BIG_ENDIAN
);
3233 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_unique_0
, tvb
,
3234 STREAM_OFFSET_BACKUP_TALKER_UNIQUE_0
, 2, ENC_BIG_ENDIAN
);
3235 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_guid_1
, tvb
,
3236 STREAM_OFFSET_BACKUP_TALKER_GUID_1
, 8, ENC_BIG_ENDIAN
);
3237 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_unique_1
, tvb
,
3238 STREAM_OFFSET_BACKUP_TALKER_UNIQUE_1
, 2, ENC_BIG_ENDIAN
);
3239 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_guid_2
, tvb
,
3240 STREAM_OFFSET_BACKUP_TALKER_GUID_2
, 8, ENC_BIG_ENDIAN
);
3241 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_unique_2
, tvb
,
3242 STREAM_OFFSET_BACKUP_TALKER_UNIQUE_2
, 2, ENC_BIG_ENDIAN
);
3243 proto_tree_add_item(aem_tree
, hf_aem_backedup_talker_guid
, tvb
,
3244 STREAM_OFFSET_BACKEDUP_TALKER_GUID
, 8, ENC_BIG_ENDIAN
);
3245 proto_tree_add_item(aem_tree
, hf_aem_backedup_talker_unique
, tvb
,
3246 STREAM_OFFSET_BACKEDUP_TALKER_UNIQUE_ID
, 2, ENC_BIG_ENDIAN
);
3247 proto_tree_add_item(aem_tree
, hf_aem_avb_interface_id
, tvb
,
3248 STREAM_OFFSET_AVB_INTERFACE_ID
, 2, ENC_BIG_ENDIAN
);
3250 proto_tree_add_item(aem_tree
, hf_aem_buffer_length
, tvb
,
3251 STREAM_OFFSET_BUFFER_LENGTH
, 2, ENC_BIG_ENDIAN
);
3253 mr_offset
= tvb_get_ntohs(tvb
, STREAM_OFFSET_FORMATS_OFFSET
);
3254 mr_counter
= tvb_get_ntohs(tvb
, STREAM_OFFSET_NUMBER_OF_FORMATS
);
3256 /* set up subtree, counter, and offset for formats array */
3257 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_stream_formats
, tvb
,
3258 mr_offset
, mr_counter
* 8, ENC_NA
);
3259 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_stream_formats
);
3261 for(i
= 0; i
< mr_counter
; ++i
) {
3262 next_tvb
= tvb_new_subset_length(tvb
, mr_offset
, 8);
3263 dissect_17221_stream_format(next_tvb
, mr_subtree
);
3267 case AEM_DESCRIPTOR_JACK_INPUT
:
3268 case AEM_DESCRIPTOR_JACK_OUTPUT
:
3269 proto_tree_add_item(aem_tree
, hf_aem_jack_name
, tvb
,
3270 JACK_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3271 proto_tree_add_item(aem_tree
, hf_aem_jack_name_string
, tvb
,
3272 JACK_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3274 /* set up jack flags subtree */
3275 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_jack_flags
, tvb
,
3276 JACK_OFFSET_JACK_FLAGS
, 2, ENC_BIG_ENDIAN
);
3277 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_jack_flags
);
3278 proto_tree_add_item(mr_subtree
, hf_aem_flags_captive
, tvb
,
3279 JACK_OFFSET_JACK_FLAGS
, 2, ENC_BIG_ENDIAN
);
3280 proto_tree_add_item(mr_subtree
, hf_aem_flags_clock_sync_source
, tvb
,
3281 JACK_OFFSET_JACK_FLAGS
, 2, ENC_BIG_ENDIAN
);
3282 /* end jack flags subtree */
3284 proto_tree_add_item(aem_tree
, hf_aem_jack_type
, tvb
,
3285 JACK_OFFSET_JACK_TYPE
, 2, ENC_BIG_ENDIAN
);
3287 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3288 JACK_OFFSET_JACK_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3289 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3290 JACK_OFFSET_JACK_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3292 case AEM_DESCRIPTOR_STREAM_PORT_INPUT
:
3293 case AEM_DESCRIPTOR_STREAM_PORT_OUTPUT
:
3294 /* D20 clock domain */
3295 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3296 STREAM_PORT_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3298 /* set up port_flags subtree */
3299 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_port_flags
, tvb
,
3300 STREAM_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3301 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_port_flags
);
3302 proto_tree_add_item(mr_subtree
, hf_aem_flags_clock_sync_source
, tvb
,
3303 STREAM_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3304 proto_tree_add_item(mr_subtree
, hf_aem_flags_async_sample_rate_conv
, tvb
,
3305 STREAM_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3306 proto_tree_add_item(mr_subtree
, hf_aem_flags_sync_sample_rate_conv
, tvb
,
3307 STREAM_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3308 /* end port_flags subtree */
3310 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3311 STREAM_PORT_OFFSET_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3312 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3313 STREAM_PORT_OFFSET_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3314 proto_tree_add_item(aem_tree
, hf_aem_number_of_clusters
, tvb
,
3315 STREAM_PORT_OFFSET_NUMBER_OF_CLUSTERS
, 2, ENC_BIG_ENDIAN
);
3316 proto_tree_add_item(aem_tree
, hf_aem_base_cluster
, tvb
,
3317 STREAM_PORT_OFFSET_BASE_CLUSTER
, 2, ENC_BIG_ENDIAN
);
3318 proto_tree_add_item(aem_tree
, hf_aem_number_audio_maps
, tvb
,
3319 STREAM_PORT_OFFSET_NUMBER_AUDIO_MAPS
, 2, ENC_BIG_ENDIAN
);
3320 proto_tree_add_item(aem_tree
, hf_aem_base_audio_map
, tvb
,
3321 STREAM_PORT_OFFSET_BASE_AUDIO_MAP
, 2, ENC_BIG_ENDIAN
);
3323 case AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT
:
3324 case AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT
:
3325 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3326 EXTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3328 /* set up port_flags subtree */
3329 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_port_flags
, tvb
,
3330 EXTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3331 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_port_flags
);
3332 proto_tree_add_item(mr_subtree
, hf_aem_flags_clock_sync_source
, tvb
,
3333 EXTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3334 proto_tree_add_item(mr_subtree
, hf_aem_flags_async_sample_rate_conv
, tvb
,
3335 EXTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3336 proto_tree_add_item(mr_subtree
, hf_aem_flags_sync_sample_rate_conv
, tvb
,
3337 EXTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3338 /* end port_flags subtree */
3340 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3341 EXTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3342 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3343 EXTERNAL_PORT_OFFSET_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3344 proto_tree_add_item(aem_tree
, hf_aem_signal_type
, tvb
,
3345 EXTERNAL_PORT_OFFSET_SIGNAL_TYPE
, 2, ENC_BIG_ENDIAN
);
3346 proto_tree_add_item(aem_tree
, hf_aem_signal_index
, tvb
,
3347 EXTERNAL_PORT_OFFSET_SIGNAL_INDEX
, 2, ENC_BIG_ENDIAN
);
3348 proto_tree_add_item(aem_tree
, hf_aem_signal_output
, tvb
,
3349 EXTERNAL_PORT_OFFSET_SIGNAL_OUTPUT
, 2, ENC_BIG_ENDIAN
);
3350 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3351 EXTERNAL_PORT_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3352 proto_tree_add_item(aem_tree
, hf_aem_jack_id
, tvb
,
3353 EXTERNAL_PORT_OFFSET_JACK_INDEX
, 2, ENC_BIG_ENDIAN
);
3355 case AEM_DESCRIPTOR_INTERNAL_PORT_INPUT
:
3356 case AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT
:
3357 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3358 INTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3360 /* set up port_flags subtree */
3361 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_port_flags
, tvb
,
3362 INTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3363 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_port_flags
);
3364 proto_tree_add_item(mr_subtree
, hf_aem_flags_clock_sync_source
, tvb
,
3365 INTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3366 proto_tree_add_item(mr_subtree
, hf_aem_flags_async_sample_rate_conv
, tvb
,
3367 INTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3368 proto_tree_add_item(mr_subtree
, hf_aem_flags_sync_sample_rate_conv
, tvb
,
3369 INTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3370 /* end port_flags subtree */
3372 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3373 INTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3374 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3375 INTERNAL_PORT_OFFSET_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3376 proto_tree_add_item(aem_tree
, hf_aem_signal_type
, tvb
,
3377 INTERNAL_PORT_OFFSET_SIGNAL_TYPE
, 2, ENC_BIG_ENDIAN
);
3378 proto_tree_add_item(aem_tree
, hf_aem_signal_index
, tvb
,
3379 INTERNAL_PORT_OFFSET_SIGNAL_INDEX
, 2, ENC_BIG_ENDIAN
);
3380 proto_tree_add_item(aem_tree
, hf_aem_signal_output
, tvb
,
3381 INTERNAL_PORT_OFFSET_SIGNAL_OUTPUT
, 2, ENC_BIG_ENDIAN
);
3382 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3383 INTERNAL_PORT_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3384 proto_tree_add_item(aem_tree
, hf_aem_jack_id
, tvb
,
3385 INTERNAL_PORT_OFFSET_INTERNAL_INDEX
, 2, ENC_BIG_ENDIAN
);
3387 case AEM_DESCRIPTOR_AVB_INTERFACE
:
3388 proto_tree_add_item(aem_tree
, hf_aem_interface_name
, tvb
,
3389 AVB_INTERFACE_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3390 proto_tree_add_item(aem_tree
, hf_aem_interface_name_string
, tvb
,
3391 AVB_INTERFACE_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3393 proto_tree_add_item(aem_tree
, hf_aecp_mac_address
, tvb
,
3394 AVB_INTERFACE_OFFSET_MAC_ADDRESS
, 6, ENC_NA
);
3396 proto_tree_add_item(aem_tree
, hf_aem_avb_interface_flags
, tvb
,
3397 AVB_INTERFACE_OFFSET_INTERFACE_FLAGS
, 2, ENC_BIG_ENDIAN
);
3398 proto_tree_add_item(aem_tree
, hf_aem_avb_clock_identity
, tvb
,
3399 AVB_INTERFACE_OFFSET_CLOCK_IDENTITY
, 8, ENC_BIG_ENDIAN
);
3400 proto_tree_add_item(aem_tree
, hf_aem_avb_priority1
, tvb
,
3401 AVB_INTERFACE_OFFSET_PRIORITY1
, 1, ENC_BIG_ENDIAN
);
3402 proto_tree_add_item(aem_tree
, hf_aem_avb_clock_class
, tvb
,
3403 AVB_INTERFACE_OFFSET_CLOCK_CLASS
, 1, ENC_BIG_ENDIAN
);
3404 proto_tree_add_item(aem_tree
, hf_aem_avb_offset_scaled_log_variance
, tvb
,
3405 AVB_INTERFACE_OFFSET_OFFSET_SCALED_LOG_VARIANCE
, 2, ENC_BIG_ENDIAN
);
3406 proto_tree_add_item(aem_tree
, hf_aem_avb_clock_accuracy
, tvb
,
3407 AVB_INTERFACE_OFFSET_CLOCK_ACCURACY
, 1, ENC_BIG_ENDIAN
);
3408 proto_tree_add_item(aem_tree
, hf_aem_avb_priority2
, tvb
,
3409 AVB_INTERFACE_OFFSET_PRIORITY2
, 1, ENC_BIG_ENDIAN
);
3410 proto_tree_add_item(aem_tree
, hf_aem_avb_domain_number
, tvb
,
3411 AVB_INTERFACE_OFFSET_DOMAIN_NUMBER
, 1, ENC_BIG_ENDIAN
);
3412 proto_tree_add_item(aem_tree
, hf_aem_avb_log_sync_interval
, tvb
,
3413 AVB_INTERFACE_OFFSET_LOG_SYNC_INTERVAL
, 1, ENC_BIG_ENDIAN
);
3415 case AEM_DESCRIPTOR_CLOCK_SOURCE
:
3416 proto_tree_add_item(aem_tree
, hf_aem_clock_source_name
, tvb
,
3417 CLOCK_SOURCE_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3418 proto_tree_add_item(aem_tree
, hf_aem_clock_source_name_string
, tvb
,
3419 CLOCK_SOURCE_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3420 /* set up clock_source_flags subtree */
3421 /*mr_item = */proto_tree_add_item(aem_tree
, hf_aem_clock_source_flags
, tvb
,
3422 CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_FLAGS
, 2, ENC_BIG_ENDIAN
);
3423 /* mr_subtree = proto_item_add_subtree(mr_item, ett_aem_clock_source_flags);*/
3424 /* all flags reserved */
3425 /* end clock_source_flags subtree */
3426 proto_tree_add_item(aem_tree
, hf_aem_clock_source_type
, tvb
,
3427 CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_TYPE
, 2, ENC_BIG_ENDIAN
);
3428 proto_tree_add_item(aem_tree
, hf_aecp_clock_source_id
, tvb
,
3429 CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_IDENTIFIER
, 8, ENC_BIG_ENDIAN
);
3430 proto_tree_add_item(aem_tree
, hf_aem_clock_source_location_type
, tvb
,
3431 CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_TYPE
, 2, ENC_BIG_ENDIAN
);
3432 proto_tree_add_item(aem_tree
, hf_aem_clock_source_location_id
, tvb
,
3433 CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_INDEX
, 2, ENC_BIG_ENDIAN
);
3435 case AEM_DESCRIPTOR_AUDIO_MAP
:
3436 proto_tree_add_item(aem_tree
, hf_aem_mappings_offset
, tvb
,
3437 AUDIO_MAP_OFFSET_MAPPINGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
3438 proto_tree_add_item(aem_tree
, hf_aem_number_of_mappings
, tvb
,
3439 AUDIO_MAP_OFFSET_NUMBER_OF_MAPPINGS
, 2, ENC_BIG_ENDIAN
);
3441 /* prepare mappings subtree */
3442 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_mappings
, tvb
,
3444 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_mappings
);
3445 mr_offset
= tvb_get_ntohs(tvb
, AUDIO_MAP_OFFSET_MAPPINGS_OFFSET
);
3446 mr_counter
= tvb_get_ntohs(tvb
, AUDIO_MAP_OFFSET_NUMBER_OF_MAPPINGS
);
3447 proto_item_set_len(mr_item
, mr_counter
* 8);
3449 for(i
= 0; i
< mr_counter
; i
++) {
3450 proto_tree_add_item(mr_subtree
, hf_aem_mapping_stream_index
, tvb
,
3451 mr_offset
, 2, ENC_BIG_ENDIAN
);
3453 proto_tree_add_item(mr_subtree
, hf_aem_mapping_stream_channel
, tvb
,
3454 mr_offset
, 2, ENC_BIG_ENDIAN
);
3456 proto_tree_add_item(mr_subtree
, hf_aem_mapping_cluster_offset
, tvb
,
3457 mr_offset
, 2, ENC_BIG_ENDIAN
);
3459 proto_tree_add_item(mr_subtree
, hf_aem_mapping_cluster_channel
, tvb
,
3460 mr_offset
, 2, ENC_BIG_ENDIAN
);
3464 case AEM_DESCRIPTOR_AUDIO_CLUSTER
:
3465 proto_tree_add_item(aem_tree
, hf_aem_configuration_name
, tvb
,
3466 AUDIO_CLUSTER_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3467 proto_tree_add_item(aem_tree
, hf_aem_configuration_name_string
, tvb
,
3468 AUDIO_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3470 proto_tree_add_item(aem_tree
, hf_aem_signal_type
, tvb
,
3471 AUDIO_CLUSTER_OFFSET_SIGNAL_TYPE
, 2, ENC_BIG_ENDIAN
);
3472 proto_tree_add_item(aem_tree
, hf_aem_signal_index
, tvb
,
3473 AUDIO_CLUSTER_OFFSET_SIGNAL_ID
, 2, ENC_BIG_ENDIAN
);
3474 proto_tree_add_item(aem_tree
, hf_aem_signal_output
, tvb
,
3475 AUDIO_CLUSTER_OFFSET_SIGNAL_OUTPUT
, 2, ENC_BIG_ENDIAN
);
3477 proto_tree_add_item(aem_tree
, hf_aem_path_latency
, tvb
,
3478 AUDIO_CLUSTER_OFFSET_PATH_LATENCY
, 4, ENC_BIG_ENDIAN
);
3479 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3480 AUDIO_CLUSTER_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3482 proto_tree_add_item(aem_tree
, hf_aem_channel_count
, tvb
,
3483 AUDIO_CLUSTER_OFFSET_CHANNEL_COUNT
, 2, ENC_BIG_ENDIAN
);
3485 proto_tree_add_item(aem_tree
, hf_aem_am824_label
, tvb
,
3486 AUDIO_CLUSTER_OFFSET_FORMAT
, 1, ENC_BIG_ENDIAN
);
3489 case AEM_DESCRIPTOR_CONTROL
:
3490 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3491 CONTROL_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3492 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3493 CONTROL_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3495 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3496 CONTROL_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3497 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3498 CONTROL_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3499 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3500 CONTROL_OFFSET_CONTROL_DOMAIN
, 2, ENC_BIG_ENDIAN
);
3501 proto_tree_add_item(aem_tree
, hf_aem_control_value_type
, tvb
,
3502 CONTROL_OFFSET_CONTROL_VALUE_TYPE
, 2, ENC_BIG_ENDIAN
);
3503 proto_tree_add_item(aem_tree
, hf_aem_control_type
, tvb
,
3504 CONTROL_OFFSET_CONTROL_TYPE
, 8, ENC_BIG_ENDIAN
);
3506 proto_tree_add_item(aem_tree
, hf_aem_reset_time
, tvb
,
3507 CONTROL_OFFSET_RESET_TIME
, 4, ENC_BIG_ENDIAN
);
3509 proto_tree_add_item(aem_tree
, hf_aem_values_offset
, tvb
,
3510 CONTROL_OFFSET_VALUES_OFFSET
, 2, ENC_BIG_ENDIAN
);
3511 proto_tree_add_item(aem_tree
, hf_aem_number_of_values
, tvb
,
3512 CONTROL_OFFSET_NUMBER_OF_VALUES
, 2, ENC_BIG_ENDIAN
);
3513 proto_tree_add_item(aem_tree
, hf_aem_signal_type
, tvb
,
3514 CONTROL_OFFSET_SIGNAL_TYPE
, 2, ENC_BIG_ENDIAN
);
3515 proto_tree_add_item(aem_tree
, hf_aem_signal_index
, tvb
,
3516 CONTROL_OFFSET_SIGNAL_INDEX
, 2, ENC_BIG_ENDIAN
);
3517 proto_tree_add_item(aem_tree
, hf_aem_signal_output
, tvb
,
3518 CONTROL_OFFSET_SIGNAL_OUTPUT
, 2, ENC_BIG_ENDIAN
);
3520 ctrl_val_type
= tvb_get_ntohs(tvb
, CONTROL_OFFSET_CONTROL_VALUE_TYPE
);
3521 num_ctrl_vals
= tvb_get_ntohs(tvb
, CONTROL_OFFSET_NUMBER_OF_VALUES
);
3522 mr_offset
= tvb_get_ntohs(tvb
, CONTROL_OFFSET_VALUES_OFFSET
);
3523 dissect_17221_ctrl_val(tvb
, aem_tree
, num_ctrl_vals
, ctrl_val_type
,
3527 case AEM_DESCRIPTOR_SIGNAL_SELECTOR
:
3528 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3529 SIGNAL_SELECTOR_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3530 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3531 SIGNAL_SELECTOR_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3533 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3534 SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3535 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3536 SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3537 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3538 SIGNAL_SELECTOR_OFFSET_CONTROL_DOMAIN
, 2, ENC_BIG_ENDIAN
);
3541 proto_tree_add_item(aem_tree
, hf_aem_control_location_type
, tvb
,
3542 AEM_OFFSET_CONTROL_LOCATION_TYPE_SIGS
, 2, ENC_BIG_ENDIAN
);
3543 proto_tree_add_item(aem_tree
, hf_aem_control_location_id
, tvb
,
3544 AEM_OFFSET_CONTROL_LOCATION_ID_SIGS
, 2, ENC_BIG_ENDIAN
);
3545 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3546 AEM_OFFSET_CONTROL_DOMAIN_SIGS
, 2, ENC_BIG_ENDIAN
);
3547 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3548 AEM_OFFSET_CONTROL_NAME_SIGS
, 64, ENC_ASCII
);
3549 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3550 AEM_OFFSET_CONTROL_NAME_STRING_SIGS
, 2, ENC_BIG_ENDIAN
);
3551 proto_tree_add_item(aem_tree
, hf_aem_sources_offset
, tvb
,
3552 AEM_OFFSET_SOURCES_OFFSET_SIGS
, 2, ENC_BIG_ENDIAN
);
3553 proto_tree_add_item(aem_tree
, hf_aem_number_of_sources
, tvb
,
3554 AEM_OFFSET_NUMBER_OF_SOURCES_SIGS
, 2, ENC_BIG_ENDIAN
);
3555 proto_tree_add_item(aem_tree
, hf_aem_current_signal_type
, tvb
,
3556 AEM_OFFSET_CURRENT_SOURCE_TYPE_SIGS
, 2, ENC_BIG_ENDIAN
);
3557 proto_tree_add_item(aem_tree
, hf_aem_current_signal_index
, tvb
,
3558 AEM_OFFSET_CURRENT_SOURCE_ID_SIGS
, 2, ENC_BIG_ENDIAN
);
3559 proto_tree_add_item(aem_tree
, hf_aem_default_signal_type
, tvb
,
3560 AEM_OFFSET_DEFAULT_SOURCE_TYPE_SIGS
, 2, ENC_BIG_ENDIAN
);
3561 proto_tree_add_item(aem_tree
, hf_aem_default_signal_index
, tvb
,
3562 AEM_OFFSET_DEFAULT_SOURCE_ID_SIGS
, 2, ENC_BIG_ENDIAN
);
3563 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3564 SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3565 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3566 SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3568 /* set up sources subtree */
3569 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_sources
, tvb
,
3571 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_sources
);
3572 mr_counter
= tvb_get_ntohs(tvb
, AEM_OFFSET_NUMBER_OF_SOURCES_SIGS
);
3573 mr_offset
= SIGNAL_SELECTOR_OFFSET_SOURCES
;
3574 proto_item_set_len(mr_item
, mr_counter
* 4);
3576 for(i
= 0; i
< mr_counter
; ++i
) {
3577 proto_tree_add_item(mr_subtree
, hf_aem_signal_type
, tvb
,
3578 mr_offset
, 2, ENC_BIG_ENDIAN
);
3580 proto_tree_add_item(mr_subtree
, hf_aem_signal_index
, tvb
,
3581 mr_offset
, 2, ENC_BIG_ENDIAN
);
3586 case AEM_DESCRIPTOR_MIXER
:
3587 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3588 MIXER_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3589 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3590 MIXER_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3592 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3593 MIXER_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3594 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3595 MIXER_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3596 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3597 MIXER_OFFSET_CONTROL_DOMAIN
, 2, ENC_BIG_ENDIAN
);
3600 proto_tree_add_item(aem_tree
, hf_aem_control_location_type
, tvb
,
3601 AEM_OFFSET_CONTROL_LOCATION_TYPE_MXR
, 2, ENC_BIG_ENDIAN
);
3602 proto_tree_add_item(aem_tree
, hf_aem_control_location_id
, tvb
,
3603 AEM_OFFSET_CONTROL_LOCATION_ID_MXR
, 2, ENC_BIG_ENDIAN
);
3604 proto_tree_add_item(aem_tree
, hf_aem_control_value_type
, tvb
,
3605 AEM_OFFSET_CONTROL_VALUE_TYPE_MXR
, 2, ENC_BIG_ENDIAN
);
3606 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3607 AEM_OFFSET_CONTROL_DOMAIN_MXR
, 2 ,ENC_BIG_ENDIAN
);
3608 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3609 AEM_OFFSET_CONTROL_NAME_MXR
, 64, ENC_ASCII
);
3610 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3611 AEM_OFFSET_CONTROL_NAME_STRING_MXR
, 2, ENC_BIG_ENDIAN
);
3612 proto_tree_add_item(aem_tree
, hf_aem_sources_offset
, tvb
,
3613 AEM_OFFSET_SOURCES_OFFSET_MXR
, 2, ENC_BIG_ENDIAN
);
3614 proto_tree_add_item(aem_tree
, hf_aem_number_of_sources
, tvb
,
3615 AEM_OFFSET_NUMBER_OF_SOURCES_MXR
, 2, ENC_BIG_ENDIAN
);
3616 proto_tree_add_item(aem_tree
, hf_aem_value_offset
, tvb
,
3617 AEM_OFFSET_VALUE_OFFSET_MXR
, 2, ENC_BIG_ENDIAN
);
3618 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3619 MIXER_OFFSET_BLOCK_LATENCY
, 2, ENC_BIG_ENDIAN
);
3620 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3621 MIXER_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3623 /* set up subtree for sources */
3624 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_sources
, tvb
,
3626 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_sources
);
3627 mr_counter
= tvb_get_ntohs(tvb
, AEM_OFFSET_NUMBER_OF_SOURCES_MXR
);
3628 mr_offset
= MIXER_OFFSET_SOURCES
;
3629 proto_item_set_len(mr_item
, mr_counter
* 4);
3631 for(i
= 0; i
< mr_counter
; ++i
) {
3632 proto_tree_add_item(mr_subtree
, hf_aem_signal_type
, tvb
,
3633 mr_offset
, 2, ENC_BIG_ENDIAN
);
3635 proto_tree_add_item(mr_subtree
, hf_aem_signal_index
, tvb
,
3636 mr_offset
, 2, ENC_BIG_ENDIAN
);
3640 /* end sources subtree */
3642 ctrl_val_type
= tvb_get_ntohs(tvb
, AEM_OFFSET_CONTROL_VALUE_TYPE_MXR
);
3644 dissect_17221_ctrl_val(tvb
, aem_tree
, num_ctrl_vals
, ctrl_val_type
,
3645 MIXER_OFFSET_SOURCES
+ (tvb_get_ntohs(tvb
, AEM_OFFSET_NUMBER_OF_SOURCES_MXR
) * 4));
3648 case AEM_DESCRIPTOR_MATRIX
:
3649 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3650 MATRIX_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3651 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3652 MATRIX_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3654 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3655 MATRIX_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3656 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3657 MATRIX_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3658 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3659 MATRIX_OFFSET_CONTROL_DOMAIN
, 2, ENC_BIG_ENDIAN
);
3662 proto_tree_add_item(aem_tree, hf_aem_control_type, tvb,
3663 AEM_OFFSET_CONTROL_TYPE_MTRX, 8, ENC_BIG_ENDIAN);
3664 proto_tree_add_item(aem_tree, hf_aem_control_location_type, tvb,
3665 AEM_OFFSET_CONTROL_LOCATION_TYPE_MTRX, 2, ENC_BIG_ENDIAN);
3666 proto_tree_add_item(aem_tree, hf_aem_control_location_id, tvb,
3667 AEM_OFFSET_CONTROL_LOCATION_ID_MTRX, 2, ENC_BIG_ENDIAN);
3668 proto_tree_add_item(aem_tree, hf_aem_control_value_type, tvb,
3669 AEM_OFFSET_CONTROL_VALUE_TYPE_MTRX, 2, ENC_BIG_ENDIAN);
3670 proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
3671 AEM_OFFSET_CONTROL_DOMAIN_MTRX, 2 ,ENC_BIG_ENDIAN);
3672 proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
3673 AEM_OFFSET_CONTROL_NAME_MTRX, 64, ENC_ASCII);
3674 proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
3675 AEM_OFFSET_CONTROL_NAME_STRING_MTRX, 2, ENC_BIG_ENDIAN);
3676 proto_tree_add_item(aem_tree, hf_aem_width, tvb,
3677 AEM_OFFSET_WIDTH_MTRX, 2, ENC_BIG_ENDIAN);
3678 proto_tree_add_item(aem_tree, hf_aem_height, tvb,
3679 AEM_OFFSET_HEIGHT_MTRX, 2, ENC_BIG_ENDIAN);
3680 proto_tree_add_item(aem_tree, hf_aem_values_offset, tvb,
3681 AEM_OFFSET_VALUES_OFFSET_MTRX, 2, ENC_BIG_ENDIAN);
3682 proto_tree_add_item(aem_tree, hf_aem_number_of_values, tvb,
3683 AEM_OFFSET_NUMBER_OF_VALUES_MTRX, 2, ENC_BIG_ENDIAN);
3685 proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
3686 MATRIX_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
3687 proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
3688 MATRIX_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
3689 proto_tree_add_item(aem_tree, hf_aem_number_of_sources, tvb,
3690 MATRIX_OFFSET_NUMBER_SOURCES, 2, ENC_BIG_ENDIAN);
3691 proto_tree_add_item(aem_tree, hf_aem_base_source, tvb,
3692 MATRIX_OFFSET_BASE_SOURCE, 2, ENC_BIG_ENDIAN);
3693 proto_tree_add_item(aem_tree, hf_aem_number_destinations, tvb,
3694 MATRIX_OFFSET_NUMBER_DESTINATIONS, 2, ENC_BIG_ENDIAN);
3695 proto_tree_add_item(aem_tree, hf_aem_base_destination, tvb,
3696 MATRIX_OFFSET_BASE_DESTINATION, 2, ENC_BIG_ENDIAN);
3698 ctrl_val_type = tvb_get_ntohs(tvb, AEM_OFFSET_CONTROL_VALUE_TYPE_MTRX);
3699 num_ctrl_vals = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_VALUES_MTRX);
3700 dissect_17221_ctrl_val(tvb, aem_tree, num_ctrl_vals, ctrl_val_type,
3701 MATRIX_OFFSET_VALUE_DETAILS);
3704 case AEM_DESCRIPTOR_LOCALE
:
3705 proto_tree_add_item(aem_tree
, hf_aem_locale_identifier
, tvb
,
3706 LOCALE_OFFSET_LOCALE_IDENTIFIER
, 64, ENC_ASCII
);
3707 proto_tree_add_item(aem_tree
, hf_aem_number_of_strings
, tvb
,
3708 LOCALE_OFFSET_NUMBER_OF_STRINGS
, 2, ENC_BIG_ENDIAN
);
3709 proto_tree_add_item(aem_tree
, hf_aem_base_strings
, tvb
,
3710 LOCALE_OFFSET_BASE_STRINGS
, 2, ENC_BIG_ENDIAN
);
3712 case AEM_DESCRIPTOR_STRINGS
:
3713 mr_offset
= STRINGS_OFFSET_STRING0
;
3714 for(i
= 0; i
< 7; ++i
) {
3715 proto_tree_add_item(aem_tree
, hf_aem_string
, tvb
,
3716 mr_offset
, 64, ENC_ASCII
);
3720 case AEM_DESCRIPTOR_MATRIX_SIGNAL
:
3721 proto_tree_add_item(aem_tree
, hf_aem_signals_count
, tvb
,
3722 MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT
, 2, ENC_BIG_ENDIAN
);
3723 proto_tree_add_item(aem_tree
, hf_aem_signals_offset
, tvb
,
3724 MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET
, 2, ENC_BIG_ENDIAN
);
3725 /* set up subtree for signals */
3726 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_sources
, tvb
,
3728 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_sources
);
3729 mr_counter
= tvb_get_ntohs(tvb
, MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT
);
3730 mr_offset
= MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET
;
3731 proto_item_set_len(mr_item
, mr_counter
* 4);
3733 for(i
= 0; i
< mr_counter
; ++i
)
3735 proto_tree_add_item(mr_subtree
, hf_aem_signal_type
, tvb
,
3736 mr_offset
, 2, ENC_BIG_ENDIAN
);
3738 proto_tree_add_item(mr_subtree
, hf_aem_signal_index
, tvb
,
3739 mr_offset
, 2, ENC_BIG_ENDIAN
);
3743 case AEM_DESCRIPTOR_MEMORY_OBJECT
:
3744 proto_tree_add_item(aem_tree
, hf_aem_memory_object_type
, tvb
,
3745 MEMORY_OBJECT_OFFSET_MEMORY_OBJECT_TYPE
, 2, ENC_BIG_ENDIAN
);
3746 proto_tree_add_item(aem_tree
, hf_aem_target_descriptor_type
, tvb
,
3747 MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3748 proto_tree_add_item(aem_tree
, hf_aem_target_descriptor_id
, tvb
,
3749 MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3750 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3751 MEMORY_OBJECT_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3752 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3753 MEMORY_OBJECT_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3754 proto_tree_add_item(aem_tree
, hf_aem_start_address
, tvb
,
3755 MEMORY_OBJECT_OFFSET_START_ADDRESS
, 8, ENC_BIG_ENDIAN
);
3756 proto_tree_add_item(aem_tree
, hf_aem_length
, tvb
,
3757 MEMORY_OBJECT_OFFSET_LENGTH
, 8, ENC_BIG_ENDIAN
);
3759 case AEM_DESCRIPTOR_CLOCK_DOMAIN
:
3760 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3761 CLOCK_DOMAIN_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3762 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3763 CLOCK_DOMAIN_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3764 proto_tree_add_item(aem_tree
, hf_aem_clock_source_index
, tvb
,
3765 CLOCK_DOMAIN_OFFSET_CLOCK_SOURCE_INDEX
, 2, ENC_BIG_ENDIAN
);
3766 proto_tree_add_item(aem_tree
, hf_aem_clock_sources_offset
, tvb
,
3767 CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_OFFSET
, 2, ENC_BIG_ENDIAN
);
3768 proto_tree_add_item(aem_tree
, hf_aem_clock_sources_count
, tvb
,
3769 CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_COUNT
, 2, ENC_BIG_ENDIAN
);
3771 /* set up a clock sources subtree */
3772 mr_counter
= tvb_get_ntohs(tvb
, CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_COUNT
);
3773 mr_offset
= tvb_get_ntohs(tvb
, CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_OFFSET
);
3774 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_clock_sources_array
, tvb
,
3775 mr_offset
, mr_counter
* 2, ENC_NA
);
3776 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_clock_sources
);
3777 /* add clocks to new subtree */
3778 for(i
= 0; i
< mr_counter
; ++i
)
3780 proto_tree_add_item(mr_subtree
, hf_aem_clock_sources
, tvb
,
3781 mr_offset
, 2, ENC_BIG_ENDIAN
);
3787 proto_tree_add_item(aem_tree
, hf_aem_unknown_descriptor
, tvb
,
3788 4, tvb_captured_length(tvb
) - 4, ENC_NA
);
3793 /* dissect enumeration and control packets */
3795 dissect_17221_aecp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*aecp_tree
)
3798 /*uint16_t addr_type;*/
3799 /*uint16_t ctrl_data_len;*/
3800 uint16_t mess_status
;
3802 uint16_t mr_counter
;
3804 proto_item
*mr_subtree
;
3805 proto_item
*mr_item
;
3807 uint64_t vendor_unique_protocol_id
;
3808 char *vendor_unique_protocol_id_string
;
3809 /* next tvb for use in subdissection */
3811 proto_tree
*flags_tree
;
3812 proto_item
*flags_ti
;
3815 /* AECP Common Format Fields */
3816 proto_tree_add_item(aecp_tree
, hf_aecp_message_type
, tvb
,
3817 AECP_OFFSET_VERSION
, 1, ENC_BIG_ENDIAN
);
3818 proto_tree_add_item(aecp_tree
, hf_aecp_status_code
, tvb
,
3819 AECP_OFFSET_STATUS_CODE
, 1, ENC_BIG_ENDIAN
);
3820 proto_tree_add_item(aecp_tree
, hf_aecp_cd_length
, tvb
,
3821 AECP_OFFSET_CD_LENGTH
, 2, ENC_BIG_ENDIAN
);
3822 proto_tree_add_item(aecp_tree
, hf_aecp_target_guid
, tvb
,
3823 AECP_OFFSET_TARGET_GUID
, 8, ENC_BIG_ENDIAN
);
3824 proto_tree_add_item(aecp_tree
, hf_aecp_controller_guid
, tvb
,
3825 AECP_OFFSET_CONTROLLER_GUID
, 8, ENC_BIG_ENDIAN
);
3826 proto_tree_add_item(aecp_tree
, hf_aecp_sequence_id
, tvb
,
3827 AECP_OFFSET_SEQUENCE_ID
, 2, ENC_BIG_ENDIAN
);
3829 /* get the message type */
3830 mess_type
= tvb_get_ntohs(tvb
, 0) & AECP_MSG_TYPE_MASK
;
3832 if ((mess_type
== AECP_AEM_COMMAND_MESSAGE
) || (mess_type
== AECP_AEM_RESPONSE_MESSAGE
))
3834 proto_tree_add_item(aecp_tree
, hf_aecp_u_flag
, tvb
,
3835 AECP_OFFSET_U_FLAG
, 1, ENC_BIG_ENDIAN
);
3836 proto_tree_add_item(aecp_tree
, hf_aecp_command_type
, tvb
,
3837 AECP_OFFSET_COMMAND_TYPE
, 2, ENC_BIG_ENDIAN
);
3839 /* get the command type for detailed dissection */
3840 c_type
= tvb_get_ntohs(tvb
, AECP_OFFSET_COMMAND_TYPE
) & AECP_COMMAND_TYPE_MASK
;
3842 /* get the control data length field - number of octets following target_guid */
3843 /*ctrl_data_len = tvb_get_ntohs(tvb, AECP_OFFSET_CD_LENGTH) & AECP_CD_LENGTH_MASK;*/
3846 /* get the status */
3847 mess_status
= tvb_get_ntohs(tvb
, 2) & 0xF800;
3849 /* break dissection down by command type */
3850 /* fields are added in the order they are listed by 1722.1 */
3852 case AECP_COMMAND_ACQUIRE_ENTITY
:
3853 /* set up the flags subtree */
3854 flags_ti
= proto_tree_add_item(aecp_tree
, hf_aecp_flags_32
, tvb
,
3855 AECP_OFFSET_ACQUIRE_ENTITY_FLAGS
, 4, ENC_BIG_ENDIAN
);
3856 flags_tree
= proto_item_add_subtree(flags_ti
, ett_acmp_flags
);
3857 proto_tree_add_item(flags_tree
, hf_aecp_persistent_flag
, tvb
,
3858 AECP_OFFSET_ACQUIRE_ENTITY_FLAGS
, 4, ENC_BIG_ENDIAN
);
3859 proto_tree_add_item(aecp_tree
, hf_aecp_release_flag
, tvb
,
3860 AECP_OFFSET_ACQUIRE_ENTITY_FLAGS
, 4, ENC_BIG_ENDIAN
);
3861 /* end flags subtree */
3863 proto_tree_add_item(aecp_tree
, hf_aecp_owner_guid
, tvb
,
3864 AECP_OFFSET_ACQUIRE_ENTITY_OWNER_GUID
, 8, ENC_BIG_ENDIAN
);
3865 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3866 AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3867 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3868 AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3870 case AECP_COMMAND_LOCK_ENTITY
:
3871 proto_tree_add_item(aecp_tree
, hf_aecp_unlock_flag
, tvb
,
3872 AECP_OFFSET_LOCK_ENTITY_FLAGS
, 4, ENC_BIG_ENDIAN
);
3873 proto_tree_add_item(aecp_tree
, hf_aecp_locked_guid
, tvb
,
3874 AECP_OFFSET_LOCK_ENTITY_LOCKED_GUID
, 8, ENC_BIG_ENDIAN
);
3876 case AECP_COMMAND_READ_DESCRIPTOR
:
3877 proto_tree_add_item(aecp_tree
, hf_aecp_configuration
, tvb
,
3878 AECP_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX
, 2, ENC_BIG_ENDIAN
);
3880 if ((mess_type
== AECP_AEM_COMMAND_MESSAGE
)||(mess_status
!= 0))
3882 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3883 AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3884 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3885 AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3889 next_tvb
= tvb_new_subset_remaining(tvb
, AECP_OFFSET_DESCRIPTOR_DESCRIPTOR
);
3890 dissect_17221_aem(next_tvb
, pinfo
, aecp_tree
);
3893 case AECP_COMMAND_WRITE_DESCRIPTOR
:
3894 proto_tree_add_item(aecp_tree
, hf_aecp_configuration
, tvb
,
3895 AECP_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX
, 2, ENC_BIG_ENDIAN
);
3897 /* on command descriptor is value to write
3898 * on response descriptor is command value if successful
3899 * or old value if unsuccessful */
3900 next_tvb
= tvb_new_subset_remaining(tvb
, AECP_OFFSET_DESCRIPTOR_DESCRIPTOR
);
3901 dissect_17221_aem(next_tvb
, pinfo
, aecp_tree
);
3903 case AECP_COMMAND_SET_CONFIGURATION
:
3904 case AECP_COMMAND_GET_CONFIGURATION
:
3905 proto_tree_add_item(aecp_tree
, hf_aecp_configuration
,
3906 tvb
, AECP_OFFSET_CONFIGURATION_CONFIGURATION_INDEX
, 2, ENC_BIG_ENDIAN
);
3908 case AECP_COMMAND_SET_STREAM_FORMAT
:
3909 case AECP_COMMAND_GET_STREAM_FORMAT
:
3910 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3911 AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3912 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3913 AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3915 if ((mess_type
!= AECP_AEM_COMMAND_MESSAGE
)||(c_type
== AECP_COMMAND_SET_STREAM_FORMAT
))
3917 next_tvb
= tvb_new_subset_length(tvb
, AECP_OFFSET_STREAM_FORMAT_STREAM_FORMAT
, 8);
3918 dissect_17221_stream_format(next_tvb
, aecp_tree
);
3921 case AECP_COMMAND_SET_VIDEO_FORMAT
:
3922 case AECP_COMMAND_GET_VIDEO_FORMAT
:
3923 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3924 AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3925 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3926 AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3928 if ((mess_type
!= AECP_AEM_COMMAND_MESSAGE
)||(c_type
== AECP_COMMAND_SET_VIDEO_FORMAT
))
3930 next_tvb
= tvb_new_subset_length(tvb
, AECP_OFFSET_VIDEO_FORMAT_FORMAT_SPECIFIC
, 4);
3931 dissect_17221_video_format(next_tvb
, aecp_tree
);
3933 next_tvb
= tvb_new_subset_length(tvb
, AECP_OFFSET_VIDEO_FORMAT_ASPECT_RATIO
, 2);
3934 dissect_17221_video_aspect_ratio(next_tvb
, aecp_tree
);
3936 proto_tree_add_item(aecp_tree
, hf_aem_color_space
, tvb
,
3937 AECP_OFFSET_VIDEO_FORMAT_COLOR_SPACE
, 2, ENC_BIG_ENDIAN
);
3939 next_tvb
= tvb_new_subset_length(tvb
, AECP_OFFSET_VIDEO_FORMAT_FRAME_SIZE
, 4);
3940 dissect_17221_video_frame_size(next_tvb
, aecp_tree
);
3943 case AECP_COMMAND_SET_SENSOR_FORMAT
:
3944 case AECP_COMMAND_GET_SENSOR_FORMAT
:
3945 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3946 AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3947 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3948 AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3950 if ((mess_type
!= AECP_AEM_COMMAND_MESSAGE
)||(c_type
== AECP_COMMAND_SET_SENSOR_FORMAT
))
3952 next_tvb
= tvb_new_subset_length(tvb
, AECP_OFFSET_SENSOR_FORMAT_SENSOR_FORMAT
, 8);
3953 dissect_17221_sensor_format(next_tvb
, aecp_tree
);
3956 case AECP_COMMAND_SET_STREAM_INFO
:
3957 case AECP_COMMAND_GET_STREAM_INFO
:
3958 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3959 AECP_OFFSET_STREAM_INFO_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3960 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3961 AECP_OFFSET_STREAM_INFO_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3962 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_SET_STREAM_INFO
)) {
3963 proto_tree_add_item(aecp_tree
, hf_acmp_flags_class_b
, tvb
,
3964 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3965 proto_tree_add_item(aecp_tree
, hf_acmp_flags_fast_connect
, tvb
,
3966 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3967 proto_tree_add_item(aecp_tree
, hf_acmp_flags_saved_state
, tvb
,
3968 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3969 proto_tree_add_item(aecp_tree
, hf_acmp_flags_streaming_wait
, tvb
,
3970 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3971 proto_tree_add_item(aecp_tree
, hf_acmp_flags_supports_encrypted
, tvb
,
3972 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3973 proto_tree_add_item(aecp_tree
, hf_acmp_flags_encrypted_pdu
, tvb
,
3974 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3975 proto_tree_add_item(aecp_tree
, hf_acmp_flags_talker_failed
, tvb
,
3976 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3978 proto_tree_add_item(aecp_tree
, hf_aecp_stream_vlan_id_valid_flag
, tvb
,
3979 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3980 proto_tree_add_item(aecp_tree
, hf_aecp_connected_flag
, tvb
,
3981 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3982 proto_tree_add_item(aecp_tree
, hf_aecp_msrp_failure_valid_flag
, tvb
,
3983 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3984 proto_tree_add_item(aecp_tree
, hf_aecp_dest_mac_valid_flag
, tvb
,
3985 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3986 proto_tree_add_item(aecp_tree
, hf_aecp_msrp_acc_lat_valid_flag
, tvb
,
3987 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3988 proto_tree_add_item(aecp_tree
, hf_aecp_stream_id_valid_flag
, tvb
,
3989 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3990 proto_tree_add_item(aecp_tree
, hf_aecp_stream_format_valid_flag
, tvb
,
3991 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3993 proto_tree_add_item(aecp_tree
, hf_aecp_stream_format
, tvb
,
3994 AECP_OFFSET_STREAM_INFO_STREAM_FORMAT
, 8, ENC_BIG_ENDIAN
);
3995 proto_tree_add_item(aecp_tree
, hf_acmp_stream_id
, tvb
,
3996 AECP_OFFSET_STREAM_INFO_STREAM_ID
, 8, ENC_BIG_ENDIAN
);
3998 proto_tree_add_item(aecp_tree
, hf_aecp_msrp_accumulated_latency
, tvb
,
3999 AECP_OFFSET_STREAM_INFO_MSRP_ACCUMULATED_LATENCY
, 4, ENC_BIG_ENDIAN
);
4000 proto_tree_add_item(aecp_tree
, hf_acmp_stream_dest_mac
, tvb
,
4001 AECP_OFFSET_STREAM_INFO_STREAM_DEST_MAC
, 6, ENC_NA
);
4002 proto_tree_add_item(aecp_tree
, hf_aecp_msrp_failure_code
, tvb
,
4003 AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_CODE
, 1, ENC_BIG_ENDIAN
);
4004 proto_tree_add_item(aecp_tree
, hf_aecp_msrp_failure_bridge_id
, tvb
,
4005 AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_BRIDGE_ID
, 8, ENC_NA
);
4008 case AECP_COMMAND_SET_NAME
:
4009 case AECP_COMMAND_GET_NAME
:
4010 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4011 AECP_OFFSET_NAME_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4012 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4013 AECP_OFFSET_NAME_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4014 proto_tree_add_item(aecp_tree
, hf_aecp_name_index
, tvb
,
4015 AECP_OFFSET_NAME_NAME_INDEX
, 2, ENC_BIG_ENDIAN
);
4016 proto_tree_add_item(aecp_tree
, hf_aecp_configuration_index
, tvb
,
4017 AECP_OFFSET_NAME_CONFIGURATION_INDEX
, 2, ENC_BIG_ENDIAN
);
4019 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_SET_NAME
)) {
4020 proto_tree_add_item(aecp_tree
, hf_aecp_name
, tvb
,
4021 AECP_OFFSET_NAME_NAME
, 64, ENC_ASCII
);
4024 case AECP_COMMAND_SET_ASSOCIATION_ID
:
4025 case AECP_COMMAND_GET_ASSOCIATION_ID
:
4026 proto_tree_add_item(aecp_tree
, hf_aecp_association_id
, tvb
,
4027 AECP_OFFSET_ASSOCIATION_ID_ASSOCIATION_ID
, 8, ENC_BIG_ENDIAN
);
4029 case AECP_COMMAND_SET_SAMPLING_RATE
:
4030 case AECP_COMMAND_GET_SAMPLING_RATE
:
4031 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4032 AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4033 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4034 AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4035 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_SET_SAMPLING_RATE
)) {
4036 proto_tree_add_item(aecp_tree
,hf_aecp_sampling_rate_pull
, tvb
,
4037 AECP_OFFSET_SAMPLING_RATE_SAMPLING_RATE
, 1, ENC_BIG_ENDIAN
);
4038 proto_tree_add_item(aecp_tree
, hf_aecp_sampling_rate_base_frequency
, tvb
,
4039 AECP_OFFSET_SAMPLING_RATE_SAMPLING_RATE
, 4, ENC_BIG_ENDIAN
);
4042 case AECP_COMMAND_SET_CLOCK_SOURCE
:
4043 case AECP_COMMAND_GET_CLOCK_SOURCE
:
4044 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4045 AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4046 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4047 AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4048 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_SET_CLOCK_SOURCE
)) {
4049 proto_tree_add_item(aecp_tree
, hf_aem_clock_source_id
, tvb
,
4050 AECP_OFFSET_CLOCK_SOURCE_CLOCK_SOURCE_INDEX
, 2, ENC_BIG_ENDIAN
);
4053 case AECP_COMMAND_SET_CONTROL_VALUE
:
4054 case AECP_COMMAND_GET_CONTROL_VALUE
:
4055 case AECP_COMMAND_SET_MIXER
:
4056 case AECP_COMMAND_GET_MIXER
:
4057 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4058 AECP_OFFSET_CONTROL_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4059 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4060 AECP_OFFSET_CONTROL_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4061 /* TODO: dissect control/mixer values */
4063 case AECP_COMMAND_INCREMENT_CONTROL
:
4064 case AECP_COMMAND_DECREMENT_CONTROL
:
4065 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4066 AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4067 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4068 AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4069 /* TODO: dissect control index list (message) or values (response) */
4071 case AECP_COMMAND_SET_SIGNAL_SELECTOR
:
4072 case AECP_COMMAND_GET_SIGNAL_SELECTOR
:
4073 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4074 AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4075 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4076 AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4077 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_SET_SIGNAL_SELECTOR
)) {
4078 proto_tree_add_item(aecp_tree
, hf_aecp_signal_type
, tvb
,
4079 AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_TYPE
, 2, ENC_BIG_ENDIAN
);
4080 proto_tree_add_item(aecp_tree
, hf_aecp_signal_index
, tvb
,
4081 AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_INDEX
, 2, ENC_BIG_ENDIAN
);
4082 proto_tree_add_item(aecp_tree
, hf_aecp_signal_output
, tvb
,
4083 AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_OUTPUT
, 2, ENC_BIG_ENDIAN
);
4086 case AECP_COMMAND_GET_MATRIX
:
4087 case AECP_COMMAND_SET_MATRIX
:
4088 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4089 AECP_OFFSET_MATRIX_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4090 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4091 AECP_OFFSET_MATRIX_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4092 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_column
, tvb
,
4093 AECP_OFFSET_MATRIX_MATRIX_COLUMN
, 2, ENC_BIG_ENDIAN
);
4094 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_row
, tvb
,
4095 AECP_OFFSET_MATRIX_MATRIX_ROW
, 2, ENC_BIG_ENDIAN
);
4096 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_region_width
, tvb
,
4097 AECP_OFFSET_MATRIX_REGION_WIDTH
, 2, ENC_BIG_ENDIAN
);
4098 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_region_height
, tvb
, AECP_OFFSET_MATRIX_REGION_HEIGHT
, 2, ENC_BIG_ENDIAN
); proto_tree_add_item(aecp_tree
, hf_aecp_matrix_rep
, tvb
,
4099 AECP_OFFSET_MATRIX_REP
, 1, ENC_BIG_ENDIAN
);
4100 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_direction
, tvb
,
4101 AECP_OFFSET_MATRIX_DIRECTION
, 1, ENC_BIG_ENDIAN
);
4102 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_value_count
, tvb
,
4103 AECP_OFFSET_MATRIX_VALUE_COUNT
, 2, ENC_BIG_ENDIAN
);
4104 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_item_offset
, tvb
,
4105 AECP_OFFSET_MATRIX_ITEM_OFFSET
, 2, ENC_BIG_ENDIAN
);
4107 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_GET_MATRIX
)) {
4108 /* TODO: dissect matrix values */
4111 case AECP_COMMAND_START_STREAMING
:
4112 case AECP_COMMAND_STOP_STREAMING
:
4113 case AECP_COMMAND_REBOOT
:
4114 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4115 AECP_OFFSET_STREAMING_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4116 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4117 AECP_OFFSET_STREAMING_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4119 case AECP_COMMAND_REGISTER_UNSOL_NOTIFICATION
:
4120 case AECP_COMMAND_DEREGISTER_UNSOL_NOTIFICATION
:
4121 /* No additional fields in these command types */
4123 case AECP_COMMAND_IDENTIFY_NOTIFICATION
:
4124 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4125 AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4126 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4127 AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4129 case AECP_COMMAND_GET_AVB_INFO
:
4130 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4131 AECP_OFFSET_AVB_INFO_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4132 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4133 AECP_OFFSET_AVB_INFO_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4134 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4135 proto_tree_add_item(aecp_tree
, hf_aecp_avb_info_ptp_grandmaster_id
, tvb
,
4136 AECP_OFFSET_AVB_INFO_AS_GRANDMASTER_ID
, 8, ENC_BIG_ENDIAN
);
4137 proto_tree_add_item(aecp_tree
, hf_aecp_avb_info_propegation_delay
, tvb
,
4138 AECP_OFFSET_AVB_INFO_PROPAGATION_DELAY
, 4, ENC_BIG_ENDIAN
);
4139 proto_tree_add_item(aecp_tree
, hf_aecp_avb_info_gptp_domain_number
, tvb
,
4140 AECP_OFFSET_AVB_INFO_AS_DOMAIN_NUMBER
, 1, ENC_BIG_ENDIAN
);
4141 proto_tree_add_item(aecp_tree
, hf_aecp_as_capable_flag
, tvb
,
4142 AECP_OFFSET_AVB_INFO_FLAGS
, 1, ENC_BIG_ENDIAN
);
4143 proto_tree_add_item(aecp_tree
, hf_aecp_gptp_enabled_flag
, tvb
,
4144 AECP_OFFSET_AVB_INFO_FLAGS
, 1, ENC_BIG_ENDIAN
);
4145 proto_tree_add_item(aecp_tree
, hf_aecp_srp_enabled_flag
, tvb
,
4146 AECP_OFFSET_AVB_INFO_FLAGS
, 1, ENC_BIG_ENDIAN
);
4147 proto_tree_add_item(aecp_tree
, hf_aecp_avb_info_msrp_mappings_count
, tvb
,
4148 AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS_COUNT
, 2, ENC_BIG_ENDIAN
);
4150 /* prepare msrp mappings subtree */
4151 mr_item
= proto_tree_add_item(aecp_tree
, hf_aecp_avb_info_msrp_mappings
, tvb
,
4153 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aecp_get_avb_info_msrp_mappings
);
4154 mr_counter
= tvb_get_ntohs(tvb
, AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS_COUNT
);
4156 mr_offset
= AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS
;
4157 for (i
= 0; i
< mr_counter
; i
++) {
4158 proto_tree_add_item(mr_subtree
, hf_aecp_avb_info_msrp_mapping_traffic_class
, tvb
,
4159 mr_offset
, 1, ENC_BIG_ENDIAN
);
4161 proto_tree_add_item(mr_subtree
, hf_aecp_avb_info_msrp_mapping_priority
, tvb
,
4162 mr_offset
, 1, ENC_BIG_ENDIAN
);
4164 proto_tree_add_item(mr_subtree
, hf_aecp_get_avb_info_msrp_vlan_id
, tvb
,
4165 mr_offset
, 2, ENC_BIG_ENDIAN
);
4170 case AECP_COMMAND_GET_AS_PATH
:
4171 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4172 AECP_OFFSET_AS_PATH_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4173 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4174 proto_tree_add_item(aecp_tree
, hf_aecp_as_path_count
, tvb
,
4175 AECP_OFFSET_AS_PATH_COUNT
, 2, ENC_BIG_ENDIAN
);
4176 mr_item
= proto_tree_add_item(aecp_tree
, hf_aecp_as_path_sequences
, tvb
,
4178 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aecp_get_as_path_sequences
);
4179 mr_counter
= tvb_get_ntohs(tvb
, AECP_OFFSET_AS_PATH_COUNT
);
4180 mr_offset
= AECP_OFFSET_AS_PATH_PATH_SEQUENCE
;
4181 for (i
= 0; i
< mr_counter
; i
++) {
4182 proto_tree_add_item(mr_subtree
, hf_aecp_get_as_info_clock_id
, tvb
,
4183 mr_offset
, 8, ENC_BIG_ENDIAN
);
4188 case AECP_COMMAND_GET_COUNTERS
:
4189 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4190 AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4191 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4192 AECP_OFFSET_COUNTERS_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4193 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4195 /*flags_ti = */ proto_tree_add_item(aecp_tree
, hf_aecp_flags_32
, tvb
,
4196 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4197 /*flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);*/
4199 /* begin counters_valid flags field */
4200 switch (tvb_get_ntohs(tvb
, AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE
)) {
4201 case AEM_DESCRIPTOR_ENTITY
:
4203 case AEM_DESCRIPTOR_AVB_INTERFACE
:
4204 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_link_up_valid
, tvb
,
4205 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4206 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_link_down_valid
, tvb
,
4207 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4208 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_packets_tx_valid
, tvb
,
4209 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4210 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_packets_rx_valid
, tvb
,
4211 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4212 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_rx_crc_error_valid
, tvb
,
4213 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4214 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_gptp_gm_changed_valid
, tvb
,
4215 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4217 case AEM_DESCRIPTOR_CLOCK_DOMAIN
:
4218 proto_tree_add_item(aecp_tree
, hf_aecp_clock_domain_locked_valid
, tvb
,
4219 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4220 proto_tree_add_item(aecp_tree
, hf_aecp_clock_domain_unlocked_valid
, tvb
,
4221 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4223 case AEM_DESCRIPTOR_STREAM_INPUT
:
4224 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_locked_valid
, tvb
,
4225 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4226 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_unlocked_valid
, tvb
,
4227 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4228 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_stream_reset_valid
, tvb
,
4229 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4230 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_seq_num_mismatch_valid
, tvb
,
4231 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4232 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_reset_valid
, tvb
,
4233 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4234 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_uncertain_valid
, tvb
,
4235 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4236 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_valid_valid
, tvb
,
4237 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4238 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_not_valid_valid
, tvb
,
4239 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4240 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_unsupported_format_valid
, tvb
,
4241 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4242 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_late_timestamp_valid
, tvb
,
4243 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4244 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_early_timestamp_valid
, tvb
,
4245 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4246 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_packets_tx_valid
, tvb
,
4247 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4248 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_packets_rx_valid
, tvb
,
4249 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4255 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific1_valid
, tvb
,
4256 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4257 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific2_valid
, tvb
,
4258 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4259 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific3_valid
, tvb
,
4260 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4261 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific4_valid
, tvb
,
4262 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4263 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific5_valid
, tvb
,
4264 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4265 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific6_valid
, tvb
,
4266 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4267 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific7_valid
, tvb
,
4268 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4269 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific8_valid
, tvb
,
4270 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4273 /* end counters_valid flags field */
4276 switch (tvb_get_ntohs(tvb
, AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE
)) {
4277 case AEM_DESCRIPTOR_ENTITY
:
4279 case AEM_DESCRIPTOR_AVB_INTERFACE
:
4280 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_link_up
, tvb
,
4281 AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_UP
, 4, ENC_BIG_ENDIAN
);
4282 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_link_down
, tvb
,
4283 AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_DOWN
, 4, ENC_BIG_ENDIAN
);
4284 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_packets_tx
, tvb
,
4285 AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_TX
, 4, ENC_BIG_ENDIAN
);
4286 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_packets_rx
, tvb
,
4287 AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_RX
, 4, ENC_BIG_ENDIAN
);
4288 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_rx_crc_error
, tvb
,
4289 AECP_OFFSET_COUNTERS_AVB_INTERFACE_RX_CRC_ERROR
, 4, ENC_BIG_ENDIAN
);
4290 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_gptp_gm_changed
, tvb
,
4291 AECP_OFFSET_COUNTERS_AVB_INTERFACE_GPTP_GM_CHANGED
, 4, ENC_BIG_ENDIAN
);
4293 case AEM_DESCRIPTOR_CLOCK_DOMAIN
:
4294 proto_tree_add_item(aecp_tree
, hf_aecp_clock_domain_locked
, tvb
,
4295 AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_LOCKED
, 4, ENC_BIG_ENDIAN
);
4296 proto_tree_add_item(aecp_tree
, hf_aecp_clock_domain_unlocked
, tvb
,
4297 AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_UNLOCKED
, 4, ENC_BIG_ENDIAN
);
4299 case AEM_DESCRIPTOR_STREAM_INPUT
:
4300 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_locked
, tvb
,
4301 AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_LOCKED
, 4, ENC_BIG_ENDIAN
);
4302 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_unlocked
, tvb
,
4303 AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_UNLOCKED
, 4, ENC_BIG_ENDIAN
);
4304 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_stream_reset
, tvb
,
4305 AECP_OFFSET_COUNTERS_STREAM_INPUT_STREAM_RESET
, 4, ENC_BIG_ENDIAN
);
4306 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_seq_num_mismatch
, tvb
,
4307 AECP_OFFSET_COUNTERS_STREAM_INPUT_SEQ_NUM_MISMATCH
, 4, ENC_BIG_ENDIAN
);
4308 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_reset
, tvb
,
4309 AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_RESET
, 4, ENC_BIG_ENDIAN
);
4310 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_uncertain
, tvb
,
4311 AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_UNCERTAIN
, 4, ENC_BIG_ENDIAN
);
4312 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_valid
, tvb
,
4313 AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_VALID
, 4, ENC_BIG_ENDIAN
);
4314 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_not_valid
, tvb
,
4315 AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_NOT_VALID
, 4, ENC_BIG_ENDIAN
);
4316 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_unsupported_format
, tvb
,
4317 AECP_OFFSET_COUNTERS_STREAM_INPUT_UNSUPPORTED_FORMAT
, 4, ENC_BIG_ENDIAN
);
4318 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_late_timestamp
, tvb
,
4319 AECP_OFFSET_COUNTERS_STREAM_INPUT_LATE_TIMESTAMP
, 4, ENC_BIG_ENDIAN
);
4320 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_early_timestamp
, tvb
,
4321 AECP_OFFSET_COUNTERS_STREAM_INPUT_EARLY_TIMESTAMP
, 4, ENC_BIG_ENDIAN
);
4322 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_packets_tx
, tvb
,
4323 AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_TX
, 4, ENC_BIG_ENDIAN
);
4324 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_packets_rx
, tvb
,
4325 AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_RX
, 4, ENC_BIG_ENDIAN
);
4331 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific1
, tvb
,
4332 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_1
, 4, ENC_BIG_ENDIAN
);
4333 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific2
, tvb
,
4334 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_2
, 4, ENC_BIG_ENDIAN
);
4335 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific3
, tvb
,
4336 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_3
, 4, ENC_BIG_ENDIAN
);
4337 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific4
, tvb
,
4338 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_4
, 4, ENC_BIG_ENDIAN
);
4339 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific5
, tvb
,
4340 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_5
, 4, ENC_BIG_ENDIAN
);
4341 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific6
, tvb
,
4342 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_6
, 4, ENC_BIG_ENDIAN
);
4343 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific7
, tvb
,
4344 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_7
, 4, ENC_BIG_ENDIAN
);
4345 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific8
, tvb
,
4346 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_8
, 4, ENC_BIG_ENDIAN
);
4350 case AECP_COMMAND_GET_AUDIO_MAP
:
4351 case AECP_COMMAND_GET_VIDEO_MAP
:
4352 case AECP_COMMAND_GET_SENSOR_MAP
:
4353 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4354 AECP_OFFSET_MAP_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4355 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4356 AECP_OFFSET_MAP_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4357 proto_tree_add_item(aecp_tree
, hf_aecp_map_index
, tvb
,
4358 AECP_OFFSET_MAP_MAP_INDEX
, 2, ENC_BIG_ENDIAN
);
4359 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4360 proto_tree_add_item(aecp_tree
, hf_aecp_number_of_maps
, tvb
,
4361 AECP_OFFSET_MAP_NUMBER_OF_MAPS
, 2, ENC_BIG_ENDIAN
);
4362 proto_tree_add_item(aecp_tree
, hf_aecp_number_of_maps
, tvb
,
4363 AECP_OFFSET_MAP_NUMBER_OF_MAPPINGS
, 2, ENC_BIG_ENDIAN
);
4364 /* TODO: dissect mappings */
4367 case AECP_COMMAND_ADD_AUDIO_MAPPINGS
:
4368 case AECP_COMMAND_REMOVE_AUDIO_MAPPINGS
:
4369 case AECP_COMMAND_ADD_VIDEO_MAPPINGS
:
4370 case AECP_COMMAND_REMOVE_VIDEO_MAPPINGS
:
4371 case AECP_COMMAND_ADD_SENSOR_MAPPINGS
:
4372 case AECP_COMMAND_REMOVE_SENSOR_MAPPINGS
:
4373 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4374 AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4375 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4376 AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4377 proto_tree_add_item(aecp_tree
, hf_aecp_number_of_maps
, tvb
,
4378 AECP_OFFSET_ADDREM_MAP_NUMBER_OF_MAPPINGS
, 2, ENC_BIG_ENDIAN
);
4379 /* TODO: dissect mappings */
4381 case AECP_COMMAND_START_OPERATION
:
4382 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4383 AECP_OFFSET_START_OPERATION_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4384 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4385 AECP_OFFSET_START_OPERATION_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4386 proto_tree_add_item(aecp_tree
, hf_aecp_operation_id
, tvb
,
4387 AECP_OFFSET_START_OPERATION_OPERATION_ID
, 2, ENC_BIG_ENDIAN
);
4388 proto_tree_add_item(aecp_tree
, hf_aecp_operation_type
, tvb
,
4389 AECP_OFFSET_START_OPERATION_OPERATION_TYPE
, 2, ENC_BIG_ENDIAN
);
4390 /* TODO: add values support when operation types are defined */
4392 case AECP_COMMAND_ABORT_OPERATION
:
4393 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4394 AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4395 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4396 AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4397 proto_tree_add_item(aecp_tree
, hf_aecp_operation_id
, tvb
,
4398 AECP_OFFSET_ABORT_OPERATION_OPERATION_ID
, 2, ENC_BIG_ENDIAN
);
4400 case AECP_COMMAND_OPERATION_STATUS
:
4401 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4402 AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4403 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4404 AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4405 proto_tree_add_item(aecp_tree
, hf_aecp_operation_id
, tvb
,
4406 AECP_OFFSET_OPERATION_STATUS_OPERATION_ID
, 2, ENC_BIG_ENDIAN
);
4407 proto_tree_add_item(aecp_tree
, hf_aecp_percent_complete
, tvb
,
4408 AECP_OFFSET_OPERATION_STATUS_PERCENT_COMPLETE
, 2, ENC_BIG_ENDIAN
);
4410 case AECP_COMMAND_AUTH_ADD_KEY
:
4411 case AECP_COMMAND_AUTH_DELETE_KEY
:
4412 case AECP_COMMAND_AUTH_GET_KEY
:
4413 proto_tree_add_item(aecp_tree
, hf_aecp_key_eui
, tvb
,
4414 AECP_OFFSET_AUTH_KEY_KEY_EUI
, 8, ENC_BIG_ENDIAN
);
4415 proto_tree_add_item(aecp_tree
, hf_aecp_key_type
, tvb
,
4416 AECP_OFFSET_AUTH_KEY_KEY_TYPE
, 1, ENC_BIG_ENDIAN
);
4417 proto_tree_add_item(aecp_tree
, hf_aecp_key_length
, tvb
,
4418 AECP_OFFSET_AUTH_KEY_KEY_LENGTH
, 2, ENC_BIG_ENDIAN
);
4420 if (((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) && (c_type
== AECP_COMMAND_AUTH_GET_KEY
)) ||
4421 ((mess_type
== AECP_AEM_COMMAND_MESSAGE
) && (c_type
== AECP_COMMAND_AUTH_ADD_KEY
))) {
4423 mr_counter
= tvb_get_ntohs(tvb
, AECP_OFFSET_AUTH_KEY_KEY_LENGTH
) & AECP_KEY_LENGTH_MASK
;
4424 proto_tree_add_item(aecp_tree
, hf_aecp_key
, tvb
,
4425 AECP_OFFSET_AUTH_KEY_KEY
, mr_counter
, ENC_NA
);
4428 case AECP_COMMAND_AUTH_GET_KEY_LIST
:
4429 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_id_small
, tvb
,
4430 AECP_OFFSET_AUTH_GET_KEY_LIST_KEYCHAIN_ID
, 1, ENC_BIG_ENDIAN
);
4431 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4432 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_id_small
, tvb
,
4433 AECP_OFFSET_AUTH_GET_KEY_LIST_NUMBER_OF_KEYS
, 1, ENC_BIG_ENDIAN
);
4436 case AECP_COMMAND_AUTH_ADD_KEY_TO_CHAIN
:
4437 case AECP_COMMAND_AUTH_DELETE_KEY_FROM_CHAIN
:
4438 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_id
, tvb
,
4439 AECP_OFFSET_AUTH_KEYCHAIN_KEYCHAIN_ID
, 2, ENC_BIG_ENDIAN
);
4440 proto_tree_add_item(aecp_tree
, hf_aecp_key_eui
, tvb
,
4441 AECP_OFFSET_AUTH_KEYCHAIN_KEY_EUI
, 8, ENC_BIG_ENDIAN
);
4443 case AECP_COMMAND_AUTH_GET_KEYCHAIN_LIST
:
4444 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_id
, tvb
,
4445 AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_KEYCHAIN_ID
, 2, ENC_BIG_ENDIAN
);
4446 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_list_index
, tvb
,
4447 AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_LIST_INDEX
, 2, ENC_BIG_ENDIAN
);
4448 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4449 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_number_of_lists
, tvb
,
4450 AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_LISTS
, 2, ENC_BIG_ENDIAN
);
4451 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_number_of_keys
, tvb
,
4452 AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_KEYS
, 2, ENC_BIG_ENDIAN
);
4453 /* TODO: dissect key euis */
4456 case AECP_COMMAND_AUTH_GET_IDENTITY
:
4457 proto_tree_add_item(aecp_tree
, hf_aecp_key_eui
, tvb
,
4458 AECP_OFFSET_AUTH_GET_IDENTITY_KEY_GUID
, 8, ENC_BIG_ENDIAN
);
4459 proto_tree_add_item(aecp_tree
, hf_aecp_key_signature
, tvb
,
4460 AECP_OFFSET_AUTH_GET_IDENTITY_SIGNATURE
, 28, ENC_NA
);
4462 case AECP_COMMAND_AUTH_ADD_TOKEN
:
4463 if (mess_type
== AECP_AEM_COMMAND_MESSAGE
) {
4464 uint32_t token_length
= tvb_get_ntohl(tvb
, AECP_OFFSET_AUTH_TOKEN_TOKEN_LENGTH
);
4465 proto_tree_add_item(aecp_tree
, hf_aecp_key_length
, tvb
,
4466 AECP_OFFSET_AUTH_TOKEN_TOKEN_LENGTH
, 2, ENC_BIG_ENDIAN
);
4467 proto_tree_add_item(aecp_tree
, hf_aecp_key_signature
, tvb
,
4468 AECP_OFFSET_AUTH_TOKEN_AUTHENTICATION_TOKEN
, token_length
, ENC_NA
);
4471 case AECP_COMMAND_AUTH_DELETE_TOKEN
:
4472 /* No command specific fields */
4474 case AECP_COMMAND_AUTHENTICATE
:
4475 case AECP_COMMAND_DEAUTHENTICATE
:
4476 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4477 AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4478 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4479 AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4480 proto_tree_add_item(aecp_tree
, hf_aecp_token_length
, tvb
,
4481 AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH
, 2, ENC_BIG_ENDIAN
);
4483 mr_counter
= tvb_get_ntohs(tvb
, AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH
)
4484 & AECP_TOKEN_LENGTH_MASK
;
4485 proto_tree_add_item(aecp_tree
, hf_aecp_auth_token
, tvb
,
4486 AECP_OFFSET_AUTHENTICATE_AUTH_TOKEN
, mr_counter
, ENC_NA
);
4488 case AECP_COMMAND_ENABLE_TRANSPORT_SECURITY
:
4489 proto_tree_add_item(aecp_tree
, hf_aecp_key_eui
, tvb
,
4490 AECP_OFFSET_TRANSPORT_SECURITY_KEY_EUI
, 8, ENC_BIG_ENDIAN
);
4492 case AECP_COMMAND_DISABLE_TRANSPORT_SECURITY
:
4493 /* No command specific fields */
4495 case AECP_COMMAND_ENABLE_STREAM_ENCRYPTION
:
4496 case AECP_COMMAND_DISABLE_STREAM_ENCRYPTION
:
4497 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4498 AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4499 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4500 AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4501 if (c_type
== AECP_COMMAND_ENABLE_STREAM_ENCRYPTION
) {
4502 proto_tree_add_item(aecp_tree
, hf_aecp_key_eui
, tvb
,
4503 AECP_OFFSET_STREAM_ENCRYPTION_KEY_EUI
, 8, ENC_BIG_ENDIAN
);
4507 case AECP_COMMAND_SET_STREAM_BACKUP
:
4508 case AECP_COMMAND_GET_STREAM_BACKUP
:
4509 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4510 AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4511 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4512 AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4513 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_entity_id_0
, tvb
,
4514 AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_0
, 8, ENC_BIG_ENDIAN
);
4515 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_unique_id_0
, tvb
,
4516 AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_0
, 2, ENC_BIG_ENDIAN
);
4517 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_entity_id_1
, tvb
,
4518 AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_1
, 8, ENC_BIG_ENDIAN
);
4519 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_unique_id_1
, tvb
,
4520 AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_1
, 2, ENC_BIG_ENDIAN
);
4521 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_entity_id_2
, tvb
,
4522 AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_2
, 8, ENC_BIG_ENDIAN
);
4523 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_unique_id_2
, tvb
,
4524 AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_2
, 2, ENC_BIG_ENDIAN
);
4525 proto_tree_add_item(aecp_tree
, hf_aecp_backedup_talker_entity_id
, tvb
,
4526 AECP_OFFSET_STREAM_BACKEDUP_TALKER_ENTITY_ID
, 8, ENC_BIG_ENDIAN
);
4527 proto_tree_add_item(aecp_tree
, hf_aecp_backedup_talker_unique_id
, tvb
,
4528 AECP_OFFSET_STREAM_BACKEDUP_TALKER_UNIQUE_ID
, 2, ENC_BIG_ENDIAN
);
4530 /* * * * AEM COMMON FORMAT PACKETS * * * */
4531 case AECP_COMMAND_CONTROLLER_AVAILABLE
:
4534 /* the command type is not one of the valid spec values */
4537 } /* AECP AEM Command */
4538 else if ((mess_type
== AECP_ADDRESS_ACCESS_COMMAND_MESSAGE
) || (mess_type
== AECP_ADDRESS_ACCESS_RESPONSE_MESSAGE
))
4540 proto_tree_add_item(aecp_tree
, hf_aecp_aa_count
, tvb
,
4541 AECP_AA_OFFSET_COUNT
, 2, ENC_BIG_ENDIAN
);
4542 proto_tree_add_item(aecp_tree
, hf_aecp_aa_tlv_mode
, tvb
,
4543 AECP_AA_OFFSET_TLVS_START
, 1, ENC_BIG_ENDIAN
);
4544 proto_tree_add_item(aecp_tree
, hf_aecp_aa_tlv_length
, tvb
,
4545 AECP_AA_OFFSET_TLVS_START
, 2, ENC_BIG_ENDIAN
);
4546 proto_tree_add_item(aecp_tree
, hf_aecp_aa_tlv_address
, tvb
,
4547 AECP_AA_OFFSET_TLVS_START
+2, 8, ENC_BIG_ENDIAN
);
4548 } /* AECP Vendor Unique Command/Response */
4549 else if ((mess_type
== AECP_VENDOR_UNIQUE_COMMAND_MESSAGE
) || (mess_type
== AECP_VENDOR_UNIQUE_RESPONSE_MESSAGE
))
4551 proto_tree_add_item(aecp_tree
, hf_aecp_vendor_unique_protocol_id
, tvb
,
4552 AECP_VUC_OFFSET_PROTOCOL_ID
, 6, ENC_BIG_ENDIAN
);
4554 /* attempt to dissect the payload specific data */
4555 next_tvb
= tvb_new_subset_remaining(tvb
, AECP_VUC_OFFSET_PROTOCOL_ID
);
4556 vendor_unique_protocol_id
= tvb_get_uint48(tvb
, AECP_VUC_OFFSET_PROTOCOL_ID
, ENC_BIG_ENDIAN
);
4557 vendor_unique_protocol_id_string
= wmem_strdup_printf(pinfo
->pool
, "%012" PRIx64
, vendor_unique_protocol_id
);
4558 dissector_try_string_with_data(vendor_unique_protocol_dissector_table
, vendor_unique_protocol_id_string
, next_tvb
, pinfo
, aecp_tree
, true, NULL
);
4563 dissect_17221_adp(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*adp_tree
)
4565 proto_item
*ent_cap_ti
;
4566 proto_item
*talk_cap_ti
;
4567 proto_item
*list_cap_ti
;
4568 proto_item
*cont_cap_ti
;
4570 proto_tree
*ent_cap_flags_tree
;
4571 proto_tree
*talk_cap_flags_tree
;
4572 proto_tree
*list_cap_flags_tree
;
4573 proto_tree
*cont_cap_flags_tree
;
4576 proto_tree_add_item(adp_tree
, hf_adp_message_type
, tvb
, ADP_VERSION_OFFSET
, 1, ENC_BIG_ENDIAN
);
4577 proto_tree_add_item(adp_tree
, hf_adp_valid_time
, tvb
, ADP_VALID_TIME_OFFSET
, 1, ENC_BIG_ENDIAN
);
4578 proto_tree_add_item(adp_tree
, hf_adp_cd_length
, tvb
, ADP_CD_LENGTH_OFFSET
, 1, ENC_BIG_ENDIAN
);
4579 proto_tree_add_item(adp_tree
, hf_adp_entity_id
, tvb
, ADP_ENTITY_ID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4580 proto_tree_add_item(adp_tree
, hf_adp_entity_model_id
, tvb
, ADP_ENTITY_MODEL_ID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4582 /* Subtree for entity_capabilities field */
4583 ent_cap_ti
= proto_tree_add_item(adp_tree
, hf_adp_entity_cap
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4584 ent_cap_flags_tree
= proto_item_add_subtree(ent_cap_ti
, ett_adp_ent_cap
);
4586 proto_tree_add_item(ent_cap_flags_tree
,
4587 hf_adp_entity_cap_efu_mode
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4588 proto_tree_add_item(ent_cap_flags_tree
,
4589 hf_adp_entity_cap_address_access_supported
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4590 proto_tree_add_item(ent_cap_flags_tree
,
4591 hf_adp_entity_cap_gateway_entity
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4592 proto_tree_add_item(ent_cap_flags_tree
,
4593 hf_adp_entity_cap_aem_supported
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4594 proto_tree_add_item(ent_cap_flags_tree
,
4595 hf_adp_entity_cap_legacy_avc
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4596 proto_tree_add_item(ent_cap_flags_tree
,
4597 hf_adp_entity_cap_assoc_id_support
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4598 proto_tree_add_item(ent_cap_flags_tree
,
4599 hf_adp_entity_cap_assoc_id_valid
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4600 proto_tree_add_item(ent_cap_flags_tree
,
4601 hf_adp_entity_cap_vendor_unique
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4602 proto_tree_add_item(ent_cap_flags_tree
,
4603 hf_adp_entity_cap_class_a_supported
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4604 proto_tree_add_item(ent_cap_flags_tree
,
4605 hf_adp_entity_cap_class_b_supported
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4606 proto_tree_add_item(ent_cap_flags_tree
,
4607 hf_adp_entity_cap_gptp_supported
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4609 proto_tree_add_item(adp_tree
, hf_adp_talker_stream_srcs
, tvb
, ADP_TALKER_STREAM_SRCS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4611 talk_cap_ti
= proto_tree_add_item(adp_tree
, hf_adp_talker_cap
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4612 talk_cap_flags_tree
= proto_item_add_subtree(talk_cap_ti
, ett_adp_talk_cap
);
4614 proto_tree_add_item(talk_cap_flags_tree
,
4615 hf_adp_talk_cap_implement
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4616 proto_tree_add_item(talk_cap_flags_tree
,
4617 hf_adp_talk_cap_other_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4618 proto_tree_add_item(talk_cap_flags_tree
,
4619 hf_adp_talk_cap_control_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4620 proto_tree_add_item(talk_cap_flags_tree
,
4621 hf_adp_talk_cap_media_clk_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4622 proto_tree_add_item(talk_cap_flags_tree
,
4623 hf_adp_talk_cap_smpte_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4624 proto_tree_add_item(talk_cap_flags_tree
,
4625 hf_adp_talk_cap_midi_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4626 proto_tree_add_item(talk_cap_flags_tree
,
4627 hf_adp_talk_cap_audio_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4628 proto_tree_add_item(talk_cap_flags_tree
,
4629 hf_adp_talk_cap_video_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4631 proto_tree_add_item(adp_tree
, hf_adp_listener_stream_sinks
,
4632 tvb
, ADP_LISTENER_STREAM_SINKS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4634 list_cap_ti
= proto_tree_add_item(adp_tree
, hf_adp_listener_cap
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4635 list_cap_flags_tree
= proto_item_add_subtree(list_cap_ti
, ett_adp_list_cap
);
4637 proto_tree_add_item(list_cap_flags_tree
,
4638 hf_adp_list_cap_implement
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4639 proto_tree_add_item(list_cap_flags_tree
,
4640 hf_adp_list_cap_other_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4641 proto_tree_add_item(list_cap_flags_tree
,
4642 hf_adp_list_cap_control_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4643 proto_tree_add_item(list_cap_flags_tree
,
4644 hf_adp_list_cap_media_clk_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4645 proto_tree_add_item(list_cap_flags_tree
,
4646 hf_adp_list_cap_smpte_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4647 proto_tree_add_item(list_cap_flags_tree
,
4648 hf_adp_list_cap_midi_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4649 proto_tree_add_item(list_cap_flags_tree
,
4650 hf_adp_list_cap_audio_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4651 proto_tree_add_item(list_cap_flags_tree
,
4652 hf_adp_list_cap_video_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4654 cont_cap_ti
= proto_tree_add_item(adp_tree
, hf_adp_controller_cap
, tvb
, ADP_CONTROLLER_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4655 cont_cap_flags_tree
= proto_item_add_subtree(cont_cap_ti
, ett_adp_cont_cap
);
4657 proto_tree_add_item(cont_cap_flags_tree
,
4658 hf_adp_cont_cap_implement
, tvb
, ADP_CONTROLLER_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4659 proto_tree_add_item(cont_cap_flags_tree
,
4660 hf_adp_cont_cap_layer3_proxy
, tvb
, ADP_CONTROLLER_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4662 proto_tree_add_item(adp_tree
, hf_adp_avail_index
, tvb
, ADP_AVAIL_INDEX_OFFSET
, 4, ENC_BIG_ENDIAN
);
4663 proto_tree_add_item(adp_tree
, hf_adp_gptp_gm_id
, tvb
, ADP_AS_GM_ID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4665 proto_tree_add_item(adp_tree
, hf_adp_assoc_id
, tvb
, ADP_ASSOC_ID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4669 dissect_17221_acmp(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*acmp_tree
)
4671 proto_item
*flags_ti
;
4672 proto_tree
*flags_tree
;
4674 proto_tree_add_item(acmp_tree
, hf_acmp_message_type
, tvb
, ACMP_VERSION_OFFSET
, 1, ENC_BIG_ENDIAN
);
4675 proto_tree_add_item(acmp_tree
, hf_acmp_status_field
, tvb
, ACMP_STATUS_FIELD_OFFSET
, 1, ENC_BIG_ENDIAN
);
4676 proto_tree_add_item(acmp_tree
, hf_acmp_cd_length
, tvb
, ACMP_CD_LENGTH_OFFSET
, 2, ENC_BIG_ENDIAN
);
4677 proto_tree_add_item(acmp_tree
, hf_acmp_stream_id
, tvb
, ACMP_STREAM_ID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4678 proto_tree_add_item(acmp_tree
, hf_acmp_controller_guid
, tvb
, ACMP_CONTROLLER_GUID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4679 proto_tree_add_item(acmp_tree
, hf_acmp_talker_guid
, tvb
, ACMP_TALKER_GUID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4680 proto_tree_add_item(acmp_tree
, hf_acmp_listener_guid
, tvb
, ACMP_LISTENER_GUID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4681 proto_tree_add_item(acmp_tree
, hf_acmp_talker_unique_id
, tvb
, ACMP_TALKER_UNIQUE_ID_OFFSET
, 2, ENC_BIG_ENDIAN
);
4682 proto_tree_add_item(acmp_tree
, hf_acmp_listener_unique_id
, tvb
, ACMP_LISTENER_UNIQUE_ID_OFFSET
, 2, ENC_BIG_ENDIAN
);
4683 proto_tree_add_item(acmp_tree
, hf_acmp_stream_dest_mac
, tvb
, ACMP_DEST_MAC_OFFSET
, 6, ENC_NA
);
4684 proto_tree_add_item(acmp_tree
, hf_acmp_connection_count
, tvb
, ACMP_CONNECTION_COUNT_OFFSET
, 2, ENC_BIG_ENDIAN
);
4685 proto_tree_add_item(acmp_tree
, hf_acmp_sequence_id
, tvb
, ACMP_SEQUENCE_ID_OFFSET
, 2, ENC_BIG_ENDIAN
);
4687 flags_ti
= proto_tree_add_item(acmp_tree
, hf_acmp_flags
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4688 flags_tree
= proto_item_add_subtree(flags_ti
, ett_acmp_flags
);
4690 proto_tree_add_item(flags_tree
, hf_acmp_flags_class_b
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4691 proto_tree_add_item(flags_tree
, hf_acmp_flags_fast_connect
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4692 proto_tree_add_item(flags_tree
, hf_acmp_flags_saved_state
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4693 proto_tree_add_item(flags_tree
, hf_acmp_flags_streaming_wait
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4694 proto_tree_add_item(flags_tree
, hf_acmp_flags_supports_encrypted
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4695 proto_tree_add_item(flags_tree
, hf_acmp_flags_encrypted_pdu
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4696 proto_tree_add_item(flags_tree
, hf_acmp_flags_talker_failed
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4698 proto_tree_add_item(acmp_tree
, hf_acmp_vlan_id
, tvb
, ACMP_VLAN_ID_OFFSET
, 2, ENC_BIG_ENDIAN
);
4702 dissect_17221(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
4704 uint8_t subtype
= 0;
4705 proto_item
*ieee17221_item
;
4706 proto_tree
*ieee17221_tree
;
4707 subtype
= tvb_get_uint8(tvb
, 0);
4710 /* Make entries in Protocol column and Info column on summary display */
4711 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "IEEE1722-1");
4713 ieee17221_item
= proto_tree_add_item(tree
, proto_17221
, tvb
, 0, -1, ENC_NA
);
4714 ieee17221_tree
= proto_item_add_subtree(ieee17221_item
, ett_17221
);
4720 col_set_str(pinfo
->cinfo
, COL_INFO
, "AVDECC Discovery Protocol");
4722 dissect_17221_adp(tvb
, pinfo
, ieee17221_tree
);
4727 col_set_str(pinfo
->cinfo
, COL_INFO
, "AVDECC Enumeration and Control Protocol");
4729 dissect_17221_aecp(tvb
, pinfo
, ieee17221_tree
);
4734 col_set_str(pinfo
->cinfo
, COL_INFO
, "AVDECC Connection Management Protocol");
4736 dissect_17221_acmp(tvb
, pinfo
, ieee17221_tree
);
4741 /* Shouldn't get here */
4742 col_set_str(pinfo
->cinfo
, COL_INFO
, "1722.1 Unknown");
4747 return tvb_captured_length(tvb
);
4750 /* Register the protocol with Wireshark */
4752 proto_register_17221(void)
4754 static hf_register_info hf
[] = {
4755 { &hf_adp_message_type
,
4756 { "Message Type", "ieee17221.message_type",
4757 FT_UINT8
, BASE_DEC
, VALS(adp_message_type_vals
), ADP_MSG_TYPE_MASK
, NULL
, HFILL
}
4759 { &hf_adp_valid_time
,
4760 { "Valid Time", "ieee17221.valid_time",
4761 FT_UINT8
, BASE_DEC
, NULL
, ADP_VALID_TIME_MASK
, NULL
, HFILL
}
4763 { &hf_adp_cd_length
,
4764 { "Control Data Length", "ieee17221.control_data_length",
4765 FT_UINT16
, BASE_DEC
, NULL
, ADP_CD_LENGTH_MASK
, NULL
, HFILL
}
4767 { &hf_adp_entity_id
,
4768 { "Entity ID", "ieee17221.entity_id",
4769 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4771 { &hf_adp_entity_model_id
,
4772 { "Entity Model ID", "ieee17221.entity_model_id",
4773 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4775 { &hf_adp_entity_cap
,
4776 { "Entity Capabilities", "ieee17221.entity_capabilities",
4777 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4779 /* Entity Capability Flags Begin */
4780 { &hf_adp_entity_cap_efu_mode
,
4781 { "EFU_MODE", "ieee17221.entity_capabilities.efu_mode",
4782 FT_BOOLEAN
, 32, NULL
, ADP_EFU_MODE_BITMASK
, NULL
, HFILL
}
4784 { &hf_adp_entity_cap_address_access_supported
,
4785 { "ADDRESS_ACCESS", "ieee17221.entity_capabilities.address_access",
4786 FT_BOOLEAN
, 32, NULL
, ADP_ADDRESS_ACCESS_BITMASK
, NULL
, HFILL
}
4788 { &hf_adp_entity_cap_gateway_entity
,
4789 { "GATEWAY_ENTITY", "ieee17221.entity_capabilities.gateway_entity",
4790 FT_BOOLEAN
, 32, NULL
, ADP_GATEWAY_ENTITY_BITMASK
, NULL
, HFILL
}
4792 { &hf_adp_entity_cap_aem_supported
,
4793 { "AEM", "ieee17221.entity_capabilities.aem_supported",
4794 FT_BOOLEAN
, 32, NULL
, ADP_AEM_SUPPORTED_BITMASK
, NULL
, HFILL
}
4796 { &hf_adp_entity_cap_legacy_avc
,
4797 { "LEGACY_AVC", "ieee17221.entity_capabilities.legacy_avc",
4798 FT_BOOLEAN
, 32, NULL
, ADP_LEGACY_AVC_BITMASK
, NULL
, HFILL
}
4800 { &hf_adp_entity_cap_assoc_id_support
,
4801 { "ASSOCIATION_ID_SUPPORTED", "ieee17221.entity_capabilities.association_id_supported",
4802 FT_BOOLEAN
, 32, NULL
, ADP_ASSOC_ID_SUPPORT_BITMASK
, NULL
, HFILL
}
4804 { &hf_adp_entity_cap_assoc_id_valid
,
4805 { "ASSOCIATION_ID_VALID", "ieee17221.entity_capabilities.association_id_valid",
4806 FT_BOOLEAN
, 32, NULL
, ADP_ASSOC_ID_VALID_BITMASK
, NULL
, HFILL
}
4808 { &hf_adp_entity_cap_vendor_unique
,
4809 { "VENDOR_UNIQUE", "ieee17221.entity_capabilities.vendor_unique",
4810 FT_BOOLEAN
, 32, NULL
, ADP_VENDOR_UNIQUE_BITMASK
, NULL
, HFILL
}
4812 { &hf_adp_entity_cap_class_a_supported
,
4813 { "CLASS_A", "ieee17221.entity_capabilities.class_a",
4814 FT_BOOLEAN
, 32, NULL
, ADP_CLASS_A_SUPPORTED_BITMASK
, NULL
, HFILL
}
4816 { &hf_adp_entity_cap_class_b_supported
,
4817 { "CLASS_B", "ieee17221.entity_capabilities.class_b",
4818 FT_BOOLEAN
, 32, NULL
, ADP_CLASS_B_SUPPORTED_BITMASK
, NULL
, HFILL
}
4820 { &hf_adp_entity_cap_gptp_supported
,
4821 { "gPTP Supported", "ieee17221.entity_capabilities.gptp_supported",
4822 FT_BOOLEAN
, 32, NULL
, ADP_AS_SUPPORTED_BITMASK
, NULL
, HFILL
}
4824 /* Entity Capability Flags End */
4825 { &hf_adp_talker_stream_srcs
,
4826 { "Talker Stream Sources", "ieee17221.talker_stream_sources",
4827 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
4829 { &hf_adp_talker_cap
,
4830 { "Talker Capabilities", "ieee17221.talker_capabilities",
4831 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4833 /* Talker Capability Flags Begin */
4834 { &hf_adp_talk_cap_implement
,
4835 { "IMPLEMENTED", "ieee17221.talker_capabilities.implemented",
4836 FT_BOOLEAN
, 16, NULL
, ADP_TALK_IMPLEMENTED_BITMASK
, NULL
, HFILL
}
4838 { &hf_adp_talk_cap_other_src
,
4839 { "OTHER_SOURCE", "ieee17221.talker_capabilities.other_source",
4840 FT_BOOLEAN
, 16, NULL
, ADP_TALK_OTHER_SRC_BITMASK
, NULL
, HFILL
}
4842 { &hf_adp_talk_cap_control_src
,
4843 { "CONTROL_SOURCE", "ieee17221.talker_capabilities.control_source",
4844 FT_BOOLEAN
, 16, NULL
, ADP_TALK_CONTROL_SRC_BITMASK
, NULL
, HFILL
}
4846 { &hf_adp_talk_cap_media_clk_src
,
4847 { "MEDIA_CLOCK_SOURCE", "ieee17221.talker_capabilities.media_clock_source",
4848 FT_BOOLEAN
, 16, NULL
, ADP_TALK_MEDIA_CLK_SRC_BITMASK
, NULL
, HFILL
}
4850 { &hf_adp_talk_cap_smpte_src
,
4851 { "SMPTE_SOURCE", "ieee17221.talker_capabilities.smpte_source",
4852 FT_BOOLEAN
, 16, NULL
, ADP_TALK_SMPTE_SRC_BITMASK
, NULL
, HFILL
}
4854 { &hf_adp_talk_cap_midi_src
,
4855 { "MIDI_SOURCE", "ieee17221.talker_capabilities.midi_source",
4856 FT_BOOLEAN
, 16, NULL
, ADP_TALK_MIDI_SRC_BITMASK
, NULL
, HFILL
}
4858 { &hf_adp_talk_cap_audio_src
,
4859 { "AUDIO_SOURCE", "ieee17221.talker_capabilities.audio_source",
4860 FT_BOOLEAN
, 16, NULL
, ADP_TALK_AUDIO_SRC_BITMASK
, NULL
, HFILL
}
4862 { &hf_adp_talk_cap_video_src
,
4863 { "VIDEO_SOURCE", "ieee17221.talker_capabilities.video_source",
4864 FT_BOOLEAN
, 16, NULL
, ADP_TALK_VIDEO_SRC_BITMASK
, NULL
, HFILL
}
4866 /* Talker Capability Flags End */
4867 { &hf_adp_listener_stream_sinks
,
4868 { "Listener Stream Sinks", "ieee17221.listener_stream_sinks",
4869 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
4871 { &hf_adp_listener_cap
,
4872 { "Listener Capabilities", "ieee17221.listener_capabilities",
4873 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4875 /* Listener Capability Flags Begin */
4876 { &hf_adp_list_cap_implement
,
4877 { "IMPLEMENTED", "ieee17221.listener_capabilities.implemented",
4878 FT_BOOLEAN
, 16, NULL
, ADP_LIST_IMPLEMENTED_BITMASK
, NULL
, HFILL
}
4880 { &hf_adp_list_cap_other_sink
,
4881 { "OTHER_SINK", "ieee17221.listener_capabilities.other_source",
4882 FT_BOOLEAN
, 16, NULL
, ADP_LIST_OTHER_SINK_BITMASK
, NULL
, HFILL
}
4884 { &hf_adp_list_cap_control_sink
,
4885 { "CONTROL_SINK", "ieee17221.listener_capabilities.control_source",
4886 FT_BOOLEAN
, 16, NULL
, ADP_LIST_CONTROL_SINK_BITMASK
, NULL
, HFILL
}
4888 { &hf_adp_list_cap_media_clk_sink
,
4889 { "MEDIA_CLOCK_SINK", "ieee17221.listener_capabilities.media_clock_source",
4890 FT_BOOLEAN
, 16, NULL
, ADP_LIST_MEDIA_CLK_SINK_BITMASK
, NULL
, HFILL
}
4892 { &hf_adp_list_cap_smpte_sink
,
4893 { "SMPTE_SINK", "ieee17221.listener_capabilities.smpte_source",
4894 FT_BOOLEAN
, 16, NULL
, ADP_LIST_SMPTE_SINK_BITMASK
, NULL
, HFILL
}
4896 { &hf_adp_list_cap_midi_sink
,
4897 { "MIDI_SINK", "ieee17221.listener_capabilities.midi_source",
4898 FT_BOOLEAN
, 16, NULL
, ADP_LIST_MIDI_SINK_BITMASK
, NULL
, HFILL
}
4900 { &hf_adp_list_cap_audio_sink
,
4901 { "AUDIO_SINK", "ieee17221.listener_capabilities.audio_source",
4902 FT_BOOLEAN
, 16, NULL
, ADP_LIST_AUDIO_SINK_BITMASK
, NULL
, HFILL
}
4904 { &hf_adp_list_cap_video_sink
,
4905 { "VIDEO_SINK", "ieee17221.listener_capabilities.video_source",
4906 FT_BOOLEAN
, 16, NULL
, ADP_LIST_VIDEO_SINK_BITMASK
, NULL
, HFILL
}
4908 /* Listener Capability Flags End */
4909 { &hf_adp_controller_cap
,
4910 { "Controller Capabilities", "ieee17221.controller_capabilities",
4911 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4913 /* Controller Capability Flags Begin */
4914 { &hf_adp_cont_cap_implement
,
4915 { "IMPLEMENTED", "ieee17221.controller_capabilities.implemented",
4916 FT_BOOLEAN
, 16, NULL
, ADP_CONT_IMPLEMENTED_BITMASK
, NULL
, HFILL
}
4918 { &hf_adp_cont_cap_layer3_proxy
,
4919 { "LAYER3_PROXY", "ieee17221.controller_capabilities.layer3_proxy",
4920 FT_BOOLEAN
, 16, NULL
, ADP_CONT_LAYER3_PROXY_BITMASK
, NULL
, HFILL
}
4922 /* Controller Capability Flags End */
4923 { &hf_adp_avail_index
,
4924 { "Available Index", "ieee17221.available_index",
4925 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4927 { &hf_adp_gptp_gm_id
,
4928 { "gPTP Grandmaster ID", "ieee17221.gptp_grandmaster_id",
4929 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4932 { &hf_adp_def_aud_format
,
4933 { "Default Audio Format", "ieee17221.default_audio_format",
4934 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4938 /* Default Audio Formats Fields Begin */
4939 { &hf_adp_def_aud_sample_rates
,
4940 { "Sample Rates", "ieee17221.default_audio_format.sample_rates",
4941 FT_UINT8
, BASE_HEX
, NULL
, ADP_DEF_AUDIO_SAMPLE_RATES_MASK
, NULL
, HFILL
}
4943 /* Sample rates Begin */
4944 { &hf_adp_samp_rate_44k1
,
4945 { "44.1kHz", "ieee17221.default_audio_format.sample_rates.44k1",
4946 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_44K1_BITMASK
, NULL
, HFILL
}
4948 { &hf_adp_samp_rate_48k
,
4949 { "48kHz", "ieee17221.default_audio_format.sample_rates.48k",
4950 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_48K_BITMASK
, NULL
, HFILL
}
4952 { &hf_adp_samp_rate_88k2
,
4953 { "88.2kHz", "ieee17221.default_audio_format.sample_rates.88k2",
4954 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_88K2_BITMASK
, NULL
, HFILL
}
4956 { &hf_adp_samp_rate_96k
,
4957 { "96kHz", "ieee17221.default_audio_format.sample_rates.96k",
4958 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_96K_BITMASK
, NULL
, HFILL
}
4960 { &hf_adp_samp_rate_176k4
,
4961 { "176.4kHz", "ieee17221.default_audio_format.sample_rates.176k4",
4962 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_176K4_BITMASK
, NULL
, HFILL
}
4964 { &hf_adp_samp_rate_192k
,
4965 { "192kHz", "ieee17221.default_audio_format.sample_rates.192k",
4966 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_192K_BITMASK
, NULL
, HFILL
}
4968 /* Sample rates End */
4969 { &hf_adp_def_aud_max_chan
,
4970 { "Max Channels", "ieee17221.default_audio_format.max_channels",
4971 FT_UINT16
, BASE_DEC
, NULL
, ADP_DEF_AUDIO_MAX_CHANS_MASK
, NULL
, HFILL
}
4973 { &hf_adp_def_aud_saf_flag
,
4974 { "saf", "ieee17221.default_audio_format.saf",
4975 FT_BOOLEAN
, 16, NULL
, ADP_DEF_AUDIO_SAF_MASK
, NULL
, HFILL
}
4977 { &hf_adp_def_aud_float_flag
,
4978 { "float", "ieee17221.default_audio_format.float",
4979 FT_BOOLEAN
, 16, NULL
, ADP_DEF_AUDIO_FLOAT_MASK
, NULL
, HFILL
}
4981 { &hf_adp_def_aud_chan_formats
,
4982 { "Channel Formats", "ieee17221.default_audio_format.channel_formats",
4983 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4985 /* Channel Formats Fields Start */
4986 { &hf_adp_chan_format_mono
,
4987 { "MONO", "ieee17221.default_audio_format.channel_formats.mono",
4988 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_MONO
, NULL
, HFILL
}
4990 { &hf_adp_chan_format_2ch
,
4991 { "2_CH", "ieee17221.default_audio_format.channel_formats.2_ch",
4992 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_2CH
, NULL
, HFILL
}
4994 { &hf_adp_chan_format_3ch
,
4995 { "3_CH", "ieee17221.default_audio_format.channel_formats.3_ch",
4996 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_3CH
, NULL
, HFILL
}
4998 { &hf_adp_chan_format_4ch
,
4999 { "4_CH", "ieee17221.default_audio_format.channel_formats.4_ch",
5000 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_4CH
, NULL
, HFILL
}
5002 { &hf_adp_chan_format_5ch
,
5003 { "5_CH", "ieee17221.default_audio_format.channel_formats.5_ch",
5004 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_5CH
, NULL
, HFILL
}
5006 { &hf_adp_chan_format_6ch
,
5007 { "6_CH", "ieee17221.default_audio_format.channel_formats.6_ch",
5008 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_6CH
, NULL
, HFILL
}
5010 { &hf_adp_chan_format_7ch
,
5011 { "7_CH", "ieee17221.default_audio_format.channel_formats.7_ch",
5012 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_7CH
, NULL
, HFILL
}
5014 { &hf_adp_chan_format_8ch
,
5015 { "8_CH", "ieee17221.default_audio_format.channel_formats.8_ch",
5016 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_8CH
, NULL
, HFILL
}
5018 { &hf_adp_chan_format_10ch
,
5019 { "10_CH", "ieee17221.default_audio_format.channel_formats.10_ch",
5020 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_10CH
, NULL
, HFILL
}
5022 { &hf_adp_chan_format_12ch
,
5023 { "12_CH", "ieee17221.default_audio_format.channel_formats.12_ch",
5024 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_12CH
, NULL
, HFILL
}
5026 { &hf_adp_chan_format_14ch
,
5027 { "14_CH", "ieee17221.default_audio_format.channel_formats.14_ch",
5028 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_14CH
, NULL
, HFILL
}
5030 { &hf_adp_chan_format_16ch
,
5031 { "16_CH", "ieee17221.default_audio_format.channel_formats.16_ch",
5032 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_16CH
, NULL
, HFILL
}
5034 { &hf_adp_chan_format_18ch
,
5035 { "18_CH", "ieee17221.default_audio_format.channel_formats.18_ch",
5036 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_18CH
, NULL
, HFILL
}
5038 { &hf_adp_chan_format_20ch
,
5039 { "20_CH", "ieee17221.default_audio_format.channel_formats.20_ch",
5040 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_20CH
, NULL
, HFILL
}
5042 { &hf_adp_chan_format_22ch
,
5043 { "22_CH", "ieee17221.default_audio_format.channel_formats.22_ch",
5044 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_22CH
, NULL
, HFILL
}
5046 { &hf_adp_chan_format_24ch
,
5047 { "24_CH", "ieee17221.default_audio_format.channel_formats.24_ch",
5048 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_24CH
, NULL
, HFILL
}
5051 /* Channel Formats Fields End */
5052 /* Default Audio Formats Fields End */
5054 { &hf_adp_def_vid_format
,
5055 { "Default Video Format", "ieee17221.default_video_format",
5056 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5060 { "Association ID", "ieee17221.association_id",
5061 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5064 { &hf_adp_entity_type
,
5065 { "Entity Type", "ieee17221.entity_type",
5066 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5069 /*******************************************************************/
5070 { &hf_acmp_message_type
,
5071 { "Message Type", "ieee17221.message_type",
5072 FT_UINT8
, BASE_DEC
, VALS(acmp_message_type_vals
), ACMP_MSG_TYPE_MASK
, NULL
, HFILL
}
5074 { &hf_acmp_status_field
,
5075 { "Status Field", "ieee17221.status_field",
5076 FT_UINT8
, BASE_DEC
, VALS(acmp_status_field_vals
), ACMP_STATUS_FIELD_MASK
, NULL
, HFILL
}
5078 { &hf_acmp_cd_length
,
5079 { "Control Data Length", "ieee17221.control_data_length",
5080 FT_UINT16
, BASE_DEC
, NULL
, ACMP_CD_LENGTH_MASK
, NULL
, HFILL
}
5082 { &hf_acmp_stream_id
,
5083 { "Stream ID", "ieee17221.stream_id",
5084 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5086 { &hf_acmp_controller_guid
,
5087 { "Controller GUID", "ieee17221.controller_guid",
5088 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5090 { &hf_acmp_talker_guid
,
5091 { "Talker GUID", "ieee17221.talker_guid",
5092 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5094 { &hf_acmp_listener_guid
,
5095 { "Listener GUID", "ieee17221.listener_guid",
5096 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5098 { &hf_acmp_talker_unique_id
,
5099 { "Talker Unique ID", "ieee17221.talker_unique_id",
5100 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5102 { &hf_acmp_listener_unique_id
,
5103 { "Listener Unique ID", "ieee17221.listener_unique_id",
5104 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5106 { &hf_acmp_stream_dest_mac
,
5107 { "Destination MAC address", "ieee17221.dest_mac",
5108 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5110 { &hf_acmp_connection_count
,
5111 { "Connection Count", "ieee17221.connection_count",
5112 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5114 { &hf_acmp_sequence_id
,
5115 { "Sequence ID", "ieee17221.sequence_id",
5116 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5119 { "Flags", "ieee17221.flags",
5120 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5122 /* ACMP Flags Begin */
5123 { &hf_acmp_flags_class_b
,
5124 { "CLASS_B", "ieee17221.flags.class_b",
5125 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_CLASS_B_BITMASK
, NULL
, HFILL
}
5127 { &hf_acmp_flags_fast_connect
,
5128 { "FAST_CONNECT", "ieee17221.flags.fast_connect",
5129 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_FAST_CONNECT_BITMASK
, NULL
, HFILL
}
5131 { &hf_acmp_flags_saved_state
,
5132 { "SAVED_STATE", "ieee17221.flags.saved_state",
5133 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_SAVED_STATE_BITMASK
, NULL
, HFILL
}
5135 { &hf_acmp_flags_streaming_wait
,
5136 { "STREAMING_WAIT", "ieee17221.flags.streaming_wait",
5137 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_STREAMING_WAIT_BITMASK
, NULL
, HFILL
}
5139 { &hf_acmp_flags_supports_encrypted
,
5140 { "SUPPORTS_ENCRYPTED", "ieee17221.flags.supports_encrypted",
5141 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_SUPPORTS_ENCRYPTED_BITMASK
, NULL
, HFILL
}
5143 { &hf_acmp_flags_encrypted_pdu
,
5144 { "ENCRYPTED_PDU", "ieee17221.flags.encrypted_pdu",
5145 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_ENCRYPTED_PDU_BITMASK
, NULL
, HFILL
}
5147 { &hf_acmp_flags_talker_failed
,
5148 { "TALKER_FAILED", "ieee17221.flags.talker_failed",
5149 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_TALKER_FAILED_BITMASK
, NULL
, HFILL
}
5151 /* ACMP Flags End */
5153 { "Stream VLAN Id", "ieee17221.vlan_id",
5154 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5156 /******* AECP ******/
5158 { &hf_aecp_message_type
,
5159 { "Message Type", "ieee17221.message_type",
5160 FT_UINT8
, BASE_DEC
, VALS(aecp_message_type_vals
), AECP_MSG_TYPE_MASK
, NULL
, HFILL
}
5162 { &hf_aecp_cd_length
,
5163 { "Control Data Length", "ieee17221.control_data_length",
5164 FT_UINT16
, BASE_DEC
, NULL
, AECP_CD_LENGTH_MASK
, NULL
, HFILL
}
5166 { &hf_aecp_target_guid
,
5167 { "Target GUID", "ieee17221.target_guid",
5168 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5170 { &hf_aecp_controller_guid
,
5171 { "Controller GUID", "ieee17221.controller_guid",
5172 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5174 { &hf_aecp_sequence_id
,
5175 { "Sequence ID", "ieee17221.sequence_id",
5176 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5179 { "U Flag", "ieee17221.u_flag",
5180 FT_BOOLEAN
, 8, NULL
, AECP_U_FLAG_MASK
, NULL
, HFILL
}
5182 { &hf_aecp_command_type
,
5183 { "Command Type", "ieee17221.command_type",
5184 FT_UINT16
, BASE_HEX
, VALS(aecp_command_type_vals
), AECP_COMMAND_TYPE_MASK
, NULL
, HFILL
}
5186 /* Address Access Fields */
5187 { &hf_aecp_aa_count
,
5188 { "Count", "ieee17221.count",
5189 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5191 { &hf_aecp_aa_tlv_mode
,
5192 { "Tlv Mode", "ieee17221.tlv_mode",
5193 FT_UINT8
, BASE_DEC
, NULL
, 0xF0, NULL
, HFILL
}
5195 { &hf_aecp_aa_tlv_length
,
5196 { "Tlv Length", "ieee17221.tlv_length",
5197 FT_UINT16
, BASE_DEC
, NULL
, 0x0FFF, NULL
, HFILL
}
5199 { &hf_aecp_aa_tlv_address
,
5200 { "Tlv Address", "ieee17221.tlv_address",
5201 FT_UINT64
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
5204 /* SLIGHTLY LESS COMMON FIELDS */
5205 { &hf_aecp_descriptor_type
,
5206 { "Descriptor Type", "ieee17221.descriptor_type",
5207 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
5209 { &hf_aecp_descriptor_index
,
5210 {"Descriptor Index", "ieee17221.descriptor_index",
5211 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5214 /* AECP Commands and Responses 1722.1 Sec 7.4 */
5216 { &hf_aecp_unlock_flag
,
5217 { "UNLOCK Flag", "ieee17221.flags.unlock",
5218 FT_BOOLEAN
, 8, NULL
, AECP_UNLOCK_FLAG_MASK
, NULL
, HFILL
}
5220 { &hf_aecp_locked_guid
,
5221 { "Locked GUID", "ieee17221.locked_guid",
5222 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5225 /* READ_DESCRIPTOR */
5226 { &hf_aecp_configuration
,
5227 { "Configuration", "ieee17221.configuration",
5228 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5231 /* WRITE_DESCRIPTOR */
5233 /* ACQUIRE_ENTITY */
5234 { &hf_aecp_persistent_flag
,
5235 { "Persistent Flag", "ieee17221.flags.persistent",
5236 FT_BOOLEAN
, 32, NULL
, AECP_PERSISTENT_FLAG_MASK
, NULL
, HFILL
}
5238 { &hf_aecp_release_flag
,
5239 { "Release Flag", "ieee17221.flags.release",
5240 FT_BOOLEAN
, 32, NULL
, AECP_RELEASE_FLAG_MASK
, NULL
, HFILL
}
5242 { &hf_aecp_owner_guid
,
5243 { "Owner GUID", "ieee17221.owner_guid",
5244 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5247 /* CONTROLLER_AVAILABLE */
5249 /* SET_CLOCK_SOURCE / GET_CLOCK_SOURCE */
5250 { &hf_aecp_clock_source_id
,
5251 { "Clock Source ID", "ieee17221.clock_source_id64",
5252 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5255 /* SET_STREAM_FORMAT */
5256 { &hf_aecp_stream_format
,
5257 {"Stream Format", "ieee17221.stream_format64",
5258 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5260 /* GET_STREAM_FORMAT */
5262 /* SET_CONFIGURATION / GET_CONFIGURATION */
5264 /* SET_CONTROL_VALUE / GET_CONTROL_VALUE */
5266 /* SET_SIGNAL_SELECTOR / GET_SIGNAL_SELECTOR */
5267 { &hf_aecp_signal_type
,
5268 {"Signal Type", "ieee17221.signal_type",
5269 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5271 { &hf_aecp_signal_index
,
5272 {"Signal Index", "ieee17221.signal_index",
5273 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5275 { &hf_aecp_signal_output
,
5276 {"Signal Output", "ieee17221.signal_output",
5277 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5280 /* SET_MIXER / GET_MIXER */
5282 /* SET_MATRIX / GET_MATRIX */
5283 { &hf_aecp_matrix_column
,
5284 {"Matrix Column", "ieee17221.matrix_column",
5285 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5287 { &hf_aecp_matrix_row
,
5288 {"Matrix Row", "ieee17221.matrix_row",
5289 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5291 { &hf_aecp_matrix_region_width
,
5292 {"Region Width", "ieee17221.matrix_region_width",
5293 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5295 { &hf_aecp_matrix_region_height
,
5296 {"Region Height", "ieee17221.matrix_region_height",
5297 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5299 { &hf_aecp_matrix_rep
,
5300 {"Rep", "ieee17221.matrix_rep",
5301 FT_BOOLEAN
, 8, NULL
, AECP_MATRIX_REP_MASK
, NULL
, HFILL
}
5303 { &hf_aecp_matrix_direction
,
5304 {"Direction", "ieee17221.matrix_direction",
5305 FT_UINT8
, BASE_DEC
, VALS(aecp_direction_type_vals
), AECP_MATRIX_DIRECTION_MASK
, NULL
, HFILL
}
5307 { &hf_aecp_matrix_value_count
,
5308 {"Value Count", "ieee17221.matrix_value_count",
5309 FT_UINT16
, BASE_DEC
, NULL
, AECP_MATRIX_VALUE_COUNT_MASK
, NULL
, HFILL
}
5311 { &hf_aecp_matrix_item_offset
,
5312 {"Item Offset", "ieee17221.matrix_item_offset",
5313 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5316 { &hf_aecp_matrix_affected_item_count
,
5317 {"Affected Item Count", "ieee17221.matrix_affected_item_count",
5318 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5322 /* START_STREAMING */
5324 /* STOP_STREAMING */
5327 { &hf_aecp_avb_info_ptp_grandmaster_id
,
5328 {"gPTP Grandmaster ID", "ieee17221.avb_info_gptp_grandmaster_id",
5329 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5331 { &hf_aecp_avb_info_propegation_delay
,
5332 {"Propagation Delay", "ieee17221.avb_info_propagation_delay",
5333 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5335 { &hf_aecp_avb_info_gptp_domain_number
,
5336 {"gPTP Domain Number", "ieee17221.avb_info_gptp_domain_number",
5337 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5340 { &hf_aecp_avb_info_flags
,
5341 {"Flags", "ieee17221.avbinfo_flags",
5342 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5346 { &hf_aecp_as_capable_flag
,
5347 { "AS Capable Flag", "ieee17221.as_capable_flag",
5348 FT_BOOLEAN
, 8, NULL
, AECP_AS_CAPABLE_FLAG_MASK
, NULL
, HFILL
}
5351 { &hf_aecp_gptp_enabled_flag
,
5352 { "gPTP Enabled Flag", "ieee17221.gptp_enabled_flag",
5353 FT_BOOLEAN
, 8, NULL
, AECP_GPTP_ENABLED_FLAG_MASK
, NULL
, HFILL
}
5356 { &hf_aecp_srp_enabled_flag
,
5357 { "SRP Enabled Flag", "ieee17221.srp_enabled_flag",
5358 FT_BOOLEAN
, 8, NULL
, AECP_SRP_ENABLED_FLAG_MASK
, NULL
, HFILL
}
5361 { &hf_aecp_avb_info_msrp_mappings_count
,
5362 {"MSRP Mappings Count", "ieee17221.msrp_mappings_count",
5363 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5366 { &hf_aecp_avb_info_msrp_mappings
,
5367 {"MSRP Mappings", "ieee17221.msrp_mappings",
5368 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5371 { &hf_aecp_avb_info_msrp_mapping_traffic_class
,
5372 {"MSRP Mapping Traffic Class", "ieee17221.msrp_mapping_traffic_class",
5373 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5375 { &hf_aecp_avb_info_msrp_mapping_priority
,
5376 {"MSRP Mapping Priority", "ieee17221.msrp_mapping_priority",
5377 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5379 { &hf_aecp_get_avb_info_msrp_vlan_id
,
5380 {"MSRP VLAN ID", "ieee17221.msrp_vlan_id",
5381 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5384 { &hf_aecp_map_index
,
5385 {"Map Index", "ieee17221.map_index",
5386 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5388 { &hf_aecp_number_of_maps
,
5389 {"Number of Maps", "ieee17221.number_of_maps",
5390 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5393 /* GET_STREAM_INFO */
5394 { &hf_aecp_msrp_accumulated_latency
,
5395 {"MSRP Accumulated Latency", "ieee17221.msrp_accumulated_latency",
5396 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5398 { &hf_aecp_msrp_failure_code
,
5399 {"MSRP Failure Code", "ieee17221.msrp_failure_code",
5400 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5402 { &hf_aecp_msrp_failure_bridge_id
,
5403 {"MSRP Failure Bridge ID", "ieee17221.msrp_failure_bridge_id",
5404 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5407 { &hf_aecp_stream_vlan_id
,
5408 {"Stream VLAN ID", "ieee17221.stream_vlan_id",
5409 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5412 { &hf_aecp_stream_vlan_id_valid_flag
,
5413 {"Stream VLAN ID Valid Flag", "ieee17221.flags.stream_vlan_id_valid",
5414 FT_BOOLEAN
, 32, NULL
, AECP_STREAM_VLAN_ID_VALID_FLAG_MASK
, NULL
, HFILL
}
5416 { &hf_aecp_connected_flag
,
5417 {"Connected Flag", "ieee17221.flags.connected",
5418 FT_BOOLEAN
, 32, NULL
, AECP_CONNECTED_FLAG_MASK
, NULL
, HFILL
}
5420 { &hf_aecp_msrp_failure_valid_flag
,
5421 {"MSRP Failure Valid Flag", "ieee17221.flags.msrp_failure_valid",
5422 FT_BOOLEAN
, 32, NULL
, AECP_MSRP_FAILURE_VALID_FLAG_MASK
, NULL
, HFILL
}
5424 { &hf_aecp_dest_mac_valid_flag
,
5425 {"Dest MAC Valid Flag", "ieee17221.flags.dest_mac_valid",
5426 FT_BOOLEAN
, 32, NULL
, AECP_DEST_MAC_VALID_FLAG_MASK
, NULL
, HFILL
}
5428 { &hf_aecp_msrp_acc_lat_valid_flag
,
5429 {"MSRP Accumulated Latency Field Valid Flag", "ieee17221.flags.msrp_acc_lat_valid",
5430 FT_BOOLEAN
, 32, NULL
, AECP_MSRP_ACC_LAT_VALID_FLAG_MASK
, NULL
, HFILL
}
5432 { &hf_aecp_stream_id_valid_flag
,
5433 {"Stream ID Valid Flag", "ieee17221.flags.stream_id_valid",
5434 FT_BOOLEAN
, 32, NULL
, AECP_STREAM_ID_VALID_FLAG_MASK
, NULL
, HFILL
}
5436 { &hf_aecp_stream_format_valid_flag
,
5437 {"Stream Format Valid Flag", "ieee17221.flags.stream_format_valid",
5438 FT_BOOLEAN
, 32, NULL
, AECP_STREAM_FORMAT_VALID_FLAG_MASK
, NULL
, HFILL
}
5441 /* SET_NAME / GET_NAME */
5442 { &hf_aecp_name_index
,
5443 {"Name Index", "ieee17221.name_index",
5444 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5446 { &hf_aecp_configuration_index
,
5447 {"Configuration Index", "ieee17221.configuration_index",
5448 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5452 {"Name", "ieee17221.name",
5453 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5456 /* SET_ASSOCIATION_ID / GET_ASSOCIATION_ID */
5457 { &hf_aecp_association_id
,
5458 {"Association ID", "ieee17221.association_id",
5459 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5463 { &hf_aecp_as_path_count
,
5464 {"Count", "ieee17221.as_path_count",
5465 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5468 { &hf_aecp_as_path_sequences
,
5469 {"Path Sequence", "ieee17221.as_path_sequences",
5470 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5473 { &hf_aecp_get_as_info_clock_id
,
5474 { "ClockId", "ieee17221.get_as_info_clock_id",
5475 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5479 { &hf_aecp_keychain_id
,
5480 {"Keychain ID", "ieee17221.keychain_id",
5481 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5483 { &hf_aecp_keychain_id_small
,
5484 {"Keychain ID", "ieee17221.keychain_id_small",
5485 FT_UINT8
, BASE_HEX
, VALS(aecp_keychain_id_type_vals
), AECP_KEYCHAIN_ID_MASK
, NULL
, HFILL
}
5487 { &hf_aecp_key_type
,
5488 {"Key Type", "ieee17221.key_type",
5489 FT_UINT8
, BASE_HEX
, VALS(aecp_key_type_type_vals
), AECP_KEYTYPE_MASK
, NULL
, HFILL
}
5491 { &hf_aecp_key_signature
,
5492 {"Key Signature", "ieee17221.key_signature",
5493 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5496 { &hf_aecp_key_number
,
5497 {"Key ID", "ieee17221.key_id",
5498 FT_UINT16
, BASE_HEX
, NULL
, AECP_KEY_NUMBER_MASK
, NULL
, HFILL
}
5500 { &hf_aecp_continued_flag
,
5501 {"Continued", "ieee17221.continued",
5502 FT_BOOLEAN
, 8, NULL
, AECP_CONTINUED_MASK
, NULL
, HFILL
}
5504 { &hf_aecp_key_part
,
5505 {"Key Part", "ieee17221.key_part",
5506 FT_UINT8
, BASE_DEC
, NULL
, AECP_KEY_PART_MASK
, NULL
, HFILL
}
5510 { &hf_aecp_key_length
,
5511 {"Key Length", "ieee17221.key_length",
5512 FT_UINT16
, BASE_DEC
, NULL
, AECP_KEY_LENGTH_MASK
, NULL
, HFILL
}
5515 { &hf_aecp_private_key_read_flag
,
5516 {"Private Key Read Flag", "ieee17221.flags.private_key_read",
5517 FT_BOOLEAN
, 32, NULL
, AECP_PRIVATE_KEY_READ_FLAG_MASK
, NULL
, HFILL
}
5519 { &hf_aecp_private_key_write_flag
,
5520 {"Private Key Write Flag", "ieee17221.flags.private_key_write",
5521 FT_BOOLEAN
, 32, NULL
, AECP_PRIVATE_KEY_WRITE_FLAG_MASK
, NULL
, HFILL
}
5523 { &hf_aecp_public_key_write_flag
,
5524 {"Public Key Write Flag", "ieee17221.flags.public_key_write",
5525 FT_BOOLEAN
, 32, NULL
, AECP_PUBLIC_KEY_WRITE_FLAG_MASK
, NULL
, HFILL
}
5527 { &hf_aecp_control_admin_flag
,
5528 {"Control Admin Flag", "ieee17221.flags.control_admin",
5529 FT_BOOLEAN
, 32, NULL
, AECP_CONTROL_ADMIN_FLAG_MASK
, NULL
, HFILL
}
5531 { &hf_aecp_mem_obj_admin_flag
,
5532 {"Memory Object Admin", "ieee17221.mem_obj_admin",
5533 FT_BOOLEAN
, 32, NULL
, AECP_MEM_OBJ_ADMIN_FLAG_MASK
, NULL
, HFILL
}
5535 { &hf_aecp_mem_obj_settings_flag
,
5536 {"Memory Object Settings", "ieee17221.mem_obj_settings",
5537 FT_BOOLEAN
, 32, NULL
, AECP_MEM_OBJ_SETTINGS_FLAG_MASK
, NULL
, HFILL
}
5539 { &hf_aecp_control_user_l1
,
5540 {"Control User L1 flag", "ieee17221.flags.control_user_l1",
5541 FT_BOOLEAN
, 32, NULL
, AECP_CONTROL_USER_L1_FLAG_MASK
, NULL
, HFILL
}
5543 { &hf_aecp_control_user_l2
,
5544 {"Control User L2 flag", "ieee17221.flags.control_user_l2",
5545 FT_BOOLEAN
, 32, NULL
, AECP_CONTROL_USER_L2_FLAG_MASK
, NULL
, HFILL
}
5547 { &hf_aecp_control_user_l3
,
5548 {"Control User L3 flag", "ieee17221.flags.control_user_l3",
5549 FT_BOOLEAN
, 32, NULL
, AECP_CONTROL_USER_L3_FLAG_MASK
, NULL
, HFILL
}
5551 { &hf_aecp_control_user_l4
,
5552 {"Control User L4 flag", "ieee17221.flags.control_user_l4",
5553 FT_BOOLEAN
, 32, NULL
, AECP_CONTROL_USER_L4_FLAG_MASK
, NULL
, HFILL
}
5557 { &hf_aecp_keychain_list_index
,
5558 {"Keychain List Index", "ieee17221.keychain_list_index",
5559 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5561 { &hf_aecp_keychain_number_of_keys
,
5562 {"Keychain Number of Keys", "ieee17221.keychain_number_of_keys",
5563 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5565 { &hf_aecp_keychain_number_of_lists
,
5566 {"Keychain Number of Lists", "ieee17221.keychain_number_of_lists",
5567 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5571 {"Key EUI", "ieee17221.key_eui",
5572 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5574 { &hf_aecp_token_length
,
5575 {"Token Length", "ieee17221.token_length",
5576 FT_UINT16
, BASE_DEC
, NULL
, AECP_TOKEN_LENGTH_MASK
, NULL
, HFILL
}
5579 {"Key", "ieee17221.key",
5580 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5582 { &hf_aecp_auth_token
,
5583 {"Auth Token", "ieee17221.auth_token",
5584 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5586 { &hf_aecp_flags_32
,
5587 {"Flags", "ieee17221.flags",
5588 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5595 /* Counter valid bits */
5596 { &hf_aecp_avb_interface_link_up_valid
,
5597 {"Link Up Valid", "ieee17221.flags.link_up_valid",
5598 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_LINK_UP
, NULL
, HFILL
}
5600 { &hf_aecp_avb_interface_link_down_valid
,
5601 {"Link Down Valid", "ieee17221.flags.link_down_valid",
5602 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_LINK_DOWN
, NULL
, HFILL
}
5604 { &hf_aecp_avb_interface_packets_tx_valid
,
5605 {"Packets TX Valid", "ieee17221.flags.packets_tx_valid",
5606 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_PACKETS_TX
, NULL
, HFILL
}
5608 { &hf_aecp_avb_interface_packets_rx_valid
,
5609 {"Packets RX Valid", "ieee17221.flags.packets_rx_valid",
5610 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_PACKETS_RX
, NULL
, HFILL
}
5612 { &hf_aecp_avb_interface_rx_crc_error_valid
,
5613 {"RX CRC Error Valid", "ieee17221.flags.rx_crc_error_valid",
5614 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_RX_CRC_ERROR
, NULL
, HFILL
}
5616 { &hf_aecp_avb_interface_gptp_gm_changed_valid
,
5617 {"GPTP GM Changed Valid", "ieee17221.flags.gptp_gm_changed_valid",
5618 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_GPTP_GM_CHANGED
, NULL
, HFILL
}
5621 { &hf_aecp_clock_domain_unlocked_valid
,
5622 {"Clock Domain Unlocked Valid", "ieee17221.flags.clock_domain_unlocked_valid",
5623 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_CLOCK_DOMAIN_UNLOCKED
, NULL
, HFILL
}
5625 { &hf_aecp_clock_domain_locked_valid
,
5626 {"Clock_Domain Locked Valid", "ieee17221.flags.clock_domain_locked_valid",
5627 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_CLOCK_DOMAIN_LOCKED
, NULL
, HFILL
}
5630 { &hf_aecp_stream_input_media_unlocked_valid
,
5631 {"Media Unlocked Valid", "ieee17221.flags.media_unlocked_valid",
5632 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_MEDIA_UNLOCKED
, NULL
, HFILL
}
5634 { &hf_aecp_stream_input_media_locked_valid
,
5635 {"Media Locked Valid", "ieee17221.flags.media_locked_valid",
5636 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_MEDIA_LOCKED
, NULL
, HFILL
}
5638 { &hf_aecp_stream_input_stream_reset_valid
,
5639 {"Stream Reset Valid", "ieee17221.flags.stream_reset_valid",
5640 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_STREAM_RESET
, NULL
, HFILL
}
5642 { &hf_aecp_stream_input_seq_num_mismatch_valid
,
5643 {"Seq Num Mismatch Valid", "ieee17221.flags.seq_num_mismatch_valid",
5644 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_SEQ_NUM_MISMATCH
, NULL
, HFILL
}
5646 { &hf_aecp_stream_input_media_reset_valid
,
5647 {"Media Reset Valid", "ieee17221.flags.media_reset_valid",
5648 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_MEDIA_RESET
, NULL
, HFILL
}
5650 { &hf_aecp_stream_input_timestamp_uncertain_valid
,
5651 {"Timestamp Uncertain Valid", "ieee17221.flags.timestamp_uncertain_valid",
5652 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_TIMESTAMP_UNCERTAIN
, NULL
, HFILL
}
5654 { &hf_aecp_stream_input_timestamp_valid_valid
,
5655 {"Timestamp Valid Valid", "ieee17221.flags.timestamp_valid_valid",
5656 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_TIMESTAMP_VALID
, NULL
, HFILL
}
5658 { &hf_aecp_stream_input_timestamp_not_valid_valid
,
5659 {"Timestamp Not Valid Valid", "ieee17221.flags.timestamp_not_valid_valid",
5660 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_TIMESTAMP_NOT_VALID
, NULL
, HFILL
}
5662 { &hf_aecp_stream_input_unsupported_format_valid
,
5663 {"Unsupported Format Valid", "ieee17221.flags.unsupported_format_valid",
5664 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_UNSUPPORTED_FORMAT
, NULL
, HFILL
}
5666 { &hf_aecp_stream_input_late_timestamp_valid
,
5667 {"Late Timestamp Valid", "ieee17221.flags.late_timestamp_valid",
5668 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_LATE_TIMESTAMP
, NULL
, HFILL
}
5670 { &hf_aecp_stream_input_early_timestamp_valid
,
5671 {"Early Timestamp Valid", "ieee17221.flags.early_timestamp_valid",
5672 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_EARLY_TIMESTAMP
, NULL
, HFILL
}
5674 { &hf_aecp_stream_input_packets_tx_valid
,
5675 {"Stream Packets TX Valid", "ieee17221.flags.stream_packets_tx_valid",
5676 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_STREAM_PACKETS_TX
, NULL
, HFILL
}
5678 { &hf_aecp_stream_input_packets_rx_valid
,
5679 {"Stream Packets RX Valid", "ieee17221.flags.stream_packets_rx_valid",
5680 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_STREAM_PACKETS_RX
, NULL
, HFILL
}
5683 { &hf_aecp_entity_specific1_valid
,
5684 {"Entity Specific 1", "ieee17221.flags.entity_specific1_valid",
5685 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_1
, NULL
, HFILL
}
5687 { &hf_aecp_entity_specific2_valid
,
5688 {"Entity Specific 2", "ieee17221.flags.entity_specific2_valid",
5689 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_2
, NULL
, HFILL
}
5691 { &hf_aecp_entity_specific3_valid
,
5692 {"Entity Specific 3", "ieee17221.flags.entity_specific3_valid",
5693 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_3
, NULL
, HFILL
}
5695 { &hf_aecp_entity_specific4_valid
,
5696 {"Entity Specific 4", "ieee17221.flags.entity_specific4_valid",
5697 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_4
, NULL
, HFILL
}
5699 { &hf_aecp_entity_specific5_valid
,
5700 {"Entity Specific 5", "ieee17221.flags.entity_specific5_valid",
5701 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_5
, NULL
, HFILL
}
5703 { &hf_aecp_entity_specific6_valid
,
5704 {"Entity Specific 6", "ieee17221.flags.entity_specific6_valid",
5705 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_6
, NULL
, HFILL
}
5707 { &hf_aecp_entity_specific7_valid
,
5708 {"Entity Specific 7", "ieee17221.flags.entity_specific7_valid",
5709 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_7
, NULL
, HFILL
}
5711 { &hf_aecp_entity_specific8_valid
,
5712 {"Entity Specific 8", "ieee17221.flags.entity_specific8_valid",
5713 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_8
, NULL
, HFILL
}
5717 { &hf_aecp_avb_interface_link_up
,
5718 {"Link Up", "ieee17221.link_up",
5719 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5721 { &hf_aecp_avb_interface_link_down
,
5722 {"Link Down", "ieee17221.link_down",
5723 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5725 { &hf_aecp_avb_interface_packets_tx
,
5726 {"Frames TX", "ieee17221.frames_tx",
5727 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5729 { &hf_aecp_avb_interface_packets_rx
,
5730 {"Frames RX", "ieee17221.frames_rx",
5731 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5733 { &hf_aecp_avb_interface_rx_crc_error
,
5734 {"RX CRC Error", "ieee17221.rx_crc_error",
5735 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5737 { &hf_aecp_avb_interface_gptp_gm_changed
,
5738 {"GPTP GM Changed", "ieee17221.gptp_gm_changed",
5739 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5742 { &hf_aecp_clock_domain_unlocked
,
5743 {"Clock Domain Unlocked", "ieee17221.clock_domain_unlocked",
5744 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5746 { &hf_aecp_clock_domain_locked
,
5747 {"Clock_Domain Locked", "ieee17221.clock_domain_locked",
5748 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5751 { &hf_aecp_stream_input_media_unlocked
,
5752 {"Media Unlocked", "ieee17221.media_unlocked",
5753 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5755 { &hf_aecp_stream_input_media_locked
,
5756 {"Media Locked", "ieee17221.media_locked",
5757 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5759 { &hf_aecp_stream_input_stream_reset
,
5760 {"Stream Reset", "ieee17221.stream_reset",
5761 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5763 { &hf_aecp_stream_input_seq_num_mismatch
,
5764 {"Seq Num Mismatch", "ieee17221.seq_num_mismatch",
5765 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5767 { &hf_aecp_stream_input_media_reset
,
5768 {"Media Reset", "ieee17221.media_reset",
5769 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5771 { &hf_aecp_stream_input_timestamp_uncertain
,
5772 {"Timestamp Uncertain", "ieee17221.timestamp_uncertain",
5773 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5775 { &hf_aecp_stream_input_timestamp_valid
,
5776 {"Timestamp Valid", "ieee17221.timestamp",
5777 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5779 { &hf_aecp_stream_input_timestamp_not_valid
,
5780 {"Timestamp Not Valid", "ieee17221.timestamp_not",
5781 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5783 { &hf_aecp_stream_input_unsupported_format
,
5784 {"Unsupported Format", "ieee17221.unsupported_format",
5785 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5787 { &hf_aecp_stream_input_late_timestamp
,
5788 {"Late Timestamp", "ieee17221.late_timestamp",
5789 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5791 { &hf_aecp_stream_input_early_timestamp
,
5792 {"Early Timestamp", "ieee17221.early_timestamp",
5793 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5795 { &hf_aecp_stream_input_packets_tx
,
5796 {"Stream Packets TX", "ieee17221.stream_packets_tx",
5797 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5799 { &hf_aecp_stream_input_packets_rx
,
5800 {"Stream Packets RX", "ieee17221.stream_packets_rx",
5801 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5804 { &hf_aecp_entity_specific1
,
5805 {"Entity Specific 1", "ieee17221.entity_specific1",
5806 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5808 { &hf_aecp_entity_specific2
,
5809 {"Entity Specific 2", "ieee17221.entity_specific2",
5810 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5812 { &hf_aecp_entity_specific3
,
5813 {"Entity Specific 3", "ieee17221.entity_specific3",
5814 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5816 { &hf_aecp_entity_specific4
,
5817 {"Entity Specific 4", "ieee17221.entity_specific4",
5818 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5820 { &hf_aecp_entity_specific5
,
5821 {"Entity Specific 5", "ieee17221.entity_specific5",
5822 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5824 { &hf_aecp_entity_specific6
,
5825 {"Entity Specific 6", "ieee17221.entity_specific6",
5826 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5828 { &hf_aecp_entity_specific7
,
5829 {"Entity Specific 7", "ieee17221.entity_specific7",
5830 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5832 { &hf_aecp_entity_specific8
,
5833 {"Entity Specific 8", "ieee17221.entity_specific8",
5834 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5839 /* SET_MEDIA_FORMAT / GET_MEDIA_FORMAT */
5841 { &hf_aecp_media_format
,
5842 {"Media Format", "ieee17221.media_format",
5843 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5847 { &hf_aecp_video_format
,
5848 {"Video Format", "ieee17221.video_format",
5849 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5852 { &hf_aecp_sampling_rate_pull
,
5853 { "Sampling Rate Pull Value", "ieee17221.sampling_rate_pull",
5854 FT_UINT32
, BASE_HEX
, VALS(aecp_sampling_rate_pull_field_vals
), AECP_SAMPLING_RATE_PULL_MASK
, NULL
, HFILL
}
5857 { &hf_aecp_sampling_rate_base_frequency
,
5858 {"Sampling Rate Base Frequency", "ieee17221.sampling_rate_base_frequency",
5859 FT_UINT32
, BASE_DEC
, NULL
, AECP_SAMPLING_RATE_BASE_FREQ_MASK
, NULL
, HFILL
}
5862 /* REGISTER_STATE_NOTIFICATION */
5864 { &hf_aecp_address_type
,
5865 {"Address Type", "ieee17221.address_type",
5866 FT_UINT16
, BASE_HEX
, VALS(aecp_address_type_vals
), 0x00, NULL
, HFILL
}
5869 { &hf_aecp_mac_address
,
5870 { "MAC address", "ieee17221.mac_address",
5871 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5874 { &hf_aecp_ipv4_address
,
5875 {"IPV4 Address", "ieee17221.ipv4_address",
5876 FT_IPv4
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5878 { &hf_aecp_ipv6_address
,
5879 {"IPv6 Address", "ieee17221.ipv6_address",
5880 FT_IPv6
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5884 /* DEREGISTER_STATE_NOTIFICATION */
5886 /* REGISTER_QUERY_NOTIFICATION / DEREGISTER_QUERY_NOTIFICATION */
5888 { &hf_aecp_query_period
,
5889 {"Query Period (ms)", "ieee17221.query_period",
5890 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5892 { &hf_aecp_query_limit
,
5893 {"Query Limit", "ieee17221.query_limit",
5894 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5896 { &hf_aecp_query_type
,
5897 {"Query Type", "ieee17221.query_type",
5898 FT_UINT16
, BASE_HEX
, VALS(aecp_command_type_vals
), 0x00, NULL
, HFILL
}
5900 { &hf_aecp_query_id
,
5901 {"Query ID", "ieee17221.query_id",
5902 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5906 /* IDENTIFY_NOTIFICATION */
5908 /* STATE_CHANGE_NOTIFICATION */
5911 {"Count", "ieee17221.count",
5912 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5914 { &hf_aecp_descriptors
,
5915 {"Descriptors Array", "ieee17221.descriptors",
5916 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5919 /* INCREMENT_CONTROL_VALUE / DECREMENT_CONTROL_VALUE */
5920 { &hf_aecp_values_count
,
5921 {"Values Count", "ieee17221.values_count",
5922 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5926 /* START_OPERATION */
5927 { &hf_aecp_operation_id
,
5928 {"Operation ID", "ieee17221.operation_id",
5929 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5931 { &hf_aecp_operation_type
,
5932 {"Operation Type", "ieee17221.operation_type",
5933 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5934 },/* draft spec says this is defined by control_type field *
5935 * start_operation does not include a control type field *
5936 * There is an operation type table 7.83 that has not *
5937 * yet been defined. control_type may be part of a *
5938 * descriptor; will check */
5940 /* ABORT_OPERATION */
5942 /* OPERATION_STATUS */
5943 { &hf_aecp_percent_complete
,
5944 {"Percent Complete", "ieee17221.percent_complete",
5945 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5948 /* AUTH_GET_KEY_COUNT */
5950 /* * AVDECC ENTITY MODEL DESCRIPTOR FIELDS * */
5953 /* hf_aecp_descriptor_type */
5954 /* hf_aecp_descriptor_index */
5955 { &hf_aem_entity_id
,
5956 {"Entity ID", "ieee17221.entity_id",
5957 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5959 { &hf_aem_entity_model_id
,
5960 {"Entity Model ID", "ieee17221.entity_model_id",
5961 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5963 /* hf_adp_entity_cap
5964 * hf_adp_entity_cap_avdecc_ip
5965 * hf_adp_entity_cap_zero_conf
5966 * hf_adp_entity_cap_gateway_entity
5967 * hf_adp_entity_cap_avdecc_control
5968 * hf_adp_entity_cap_legacy_avc
5969 * hf_adp_entity_cap_assoc_id_support
5970 * hf_adp_entity_cap_assoc_id_valid
5972 /* hf_adp_talker_stream_srcs */
5973 /* hf_adp_talker_cap & flags */
5974 /* hf_adp_listener_stream_sinks */
5975 /* hf_adp_listener_cap & flags */
5976 /* hf_adp_controller_cap & flags */
5977 /* hf_adp_avail_index */
5978 /* where appropriate use adp values */
5979 { &hf_aem_entity_name
,
5980 {"Entity Name", "ieee17221.entity_name",
5981 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5983 { &hf_aem_vendor_name_string
,
5984 {"Vendor Name String (ptr)", "ieee17221.vendor_name_string",
5985 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5987 { &hf_aem_model_name_string
,
5988 {"Model Name String (ptr)", "ieee17221.model_name_string",
5989 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5991 { &hf_aem_firmware_version
,
5992 {"Firmware Version", "ieee17221.firmware_version",
5993 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5995 { &hf_aem_group_name
,
5996 {"Group Name", "ieee17221.group_name",
5997 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5999 { &hf_aem_serial_number
,
6000 {"Serial Number", "ieee17221.serial_number",
6001 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6003 { &hf_aem_configurations_count
,
6004 {"Configurations Count", "ieee17221.configurations_count",
6005 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6007 { &hf_aem_current_configuration
,
6008 {"Current Configuration", "ieee17221.current_configuration",
6009 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6013 { &hf_aem_configuration_name
,
6014 {"Object Name", "ieee17221.configuration_name",
6015 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6017 { &hf_aem_configuration_name_string
,
6018 {"Localized Description", "ieee17221.configuration_name_string",
6019 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6021 { &hf_aem_descriptor_counts_count
,
6022 {"Descriptor Counts Count", "ieee17221.descriptor_counts_count",
6023 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6025 { &hf_aem_descriptor_counts_offset
,
6026 {"Descriptor Counts Offset", "ieee17221.descriptor_counts_offset",
6027 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6030 {"Count", "ieee17221.count",
6031 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6035 { &hf_aem_number_of_stream_input_ports
,
6036 {"Number Of Stream Input Ports", "ieee17221.number_of_stream_input_ports",
6037 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6039 { &hf_aem_base_stream_input_port
,
6040 {"Base Stream Input Port", "ieee17221.base_stream_input_port",
6041 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6043 { &hf_aem_number_of_stream_output_ports
,
6044 {"Number Of Stream Output Ports", "ieee17221.number_of_stream_output_ports",
6045 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6047 { &hf_aem_base_stream_output_port
,
6048 {"Base Stream Output Port", "ieee17221.base_stream_output_port",
6049 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6051 { &hf_aem_number_of_external_input_ports
,
6052 {"Number Of External Input Ports", "ieee17221.number_of_external_input_ports",
6053 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6055 { &hf_aem_base_external_input_port
,
6056 {"Base External Input Port", "ieee17221.base_external_input_port",
6057 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6059 { &hf_aem_number_of_external_output_ports
,
6060 {"Number Of External Output Ports", "ieee17221.number_of_external_output_ports",
6061 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6063 { &hf_aem_base_external_output_port
,
6064 {"Base External Output Port", "ieee17221.base_external_output_port",
6065 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6067 { &hf_aem_number_of_internal_input_ports
,
6068 {"Number Of Internal Input Ports", "ieee17221.number_of_internal_input_ports",
6069 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6071 { &hf_aem_base_internal_input_port
,
6072 {"Base Internal Input Port", "ieee17221.base_internal_input_port",
6073 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6075 { &hf_aem_number_of_internal_output_ports
,
6076 {"Number Of Internal Output Ports", "ieee17221.number_of_internal_output_ports",
6077 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6079 { &hf_aem_base_internal_output_port
,
6080 {"Base Internal Output Port", "ieee17221.base_internal_output_port",
6081 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6083 { &hf_aem_clock_source_id
,
6084 {"Clock Source ID", "ieee17221.clock_source_id",
6085 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6087 { &hf_aem_clock_domain_id
,
6088 {"Clock Domain ID", "ieee17221.clock_domain_id",
6089 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6091 { &hf_aem_clock_sources_offset
,
6092 {"Clock Sources Offset", "ieee17221.clock_sources_offset",
6093 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6095 { &hf_aem_clock_source_index
,
6096 {"Clock Source Index", "ieee17221.clock_source_index",
6097 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6099 { &hf_aem_clock_sources_count
,
6100 {"Clock Sources Count", "ieee17221.clock_sources_count",
6101 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6103 { &hf_aem_clock_sources
,
6104 {"Clock Sources", "ieee17221.clock_sources",
6105 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6107 { &hf_aem_clock_sources_array
,
6108 {"Clock Sources Array", "ieee17221.clock_sources_array",
6109 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6111 { &hf_aem_number_of_controls
,
6112 {"Number Of Controls", "ieee17221.number_of_controls",
6113 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6115 { &hf_aem_base_control
,
6116 {"Base Control", "ieee17221.base_control",
6117 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6119 { &hf_aem_number_control_blocks
,
6120 {"Number Of Control Blocks", "ieee17221.number_of_control_blocks",
6121 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6123 { &hf_aem_base_control_block
,
6124 {"Base Control Block", "ieee17221.base_control_block",
6125 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6127 { &hf_aem_object_name
,
6128 {"Object Name", "ieee17221.object_name",
6129 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6131 { &hf_aem_localized_description
,
6132 {"Localized Description", "ieee17221.localized_description",
6133 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6135 { &hf_aem_current_sample_rate
,
6136 {"Current Sample Rate", "ieee17221.current_sample_rate",
6137 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6139 { &hf_aem_number_signal_selectors
,
6140 {"Number of Signal Selectors", "ieee17221.num_signal_selectors",
6141 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6143 { &hf_aem_base_signal_selector
,
6144 {"Base Signal Selector", "ieee17221.base_signal_selector",
6145 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6147 { &hf_aem_number_mixers
,
6148 {"Number of Mixers", "ieee17221.num_mixers",
6149 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6151 { &hf_aem_base_mixer
,
6152 {"Base Mixer", "ieee17221.base_mixer",
6153 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6155 { &hf_aem_number_matrices
,
6156 {"Number of Matrices", "ieee17221.num_matrices",
6157 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6159 { &hf_aem_base_matrix
,
6160 {"Base Matrix", "ieee17221.base_matrix",
6161 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6163 { &hf_aem_number_splitters
,
6164 {"Number of Splitters", "ieee17221.num_splitters",
6165 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6167 { &hf_aem_base_splitter
,
6168 {"Base Splitter", "ieee17221.base_splitter",
6169 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6171 { &hf_aem_number_combiners
,
6172 {"Number of Combiners", "ieee17221.num_combiners",
6173 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6175 { &hf_aem_base_combiner
,
6176 {"Base Combiner", "ieee17221.base_combiner",
6177 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6179 { &hf_aem_number_demultiplexers
,
6180 {"Number of Demultiplexers", "ieee17221.num_demultiplexer",
6181 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6183 { &hf_aem_base_demultiplexer
,
6184 {"Base Demultiplexer", "ieee17221.base_demultiplexer",
6185 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6187 { &hf_aem_number_multiplexers
,
6188 {"Number of Multiplexers", "ieee17221.num_multiplexers",
6189 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6191 { &hf_aem_base_multiplexer
,
6192 {"Base Multiplexer", "ieee17221.base_multiplexer",
6193 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6195 { &hf_aem_number_transcoders
,
6196 {"Number of Transcoders", "ieee17221.num_transcoders",
6197 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6199 { &hf_aem_base_transcoder
,
6200 {"Base Transcoder", "ieee17221.base_transcoder",
6201 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6203 /* sample rate is 3 bit pull field multiplier and 29 bit base freq in Hz */
6204 { &hf_aem_sample_rates_offset
,
6205 {"Sample Rates Offset", "ieee17221.sample_rates_offset",
6206 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6208 { &hf_aem_sample_rates_count
,
6209 {"Sample Rates Count", "ieee17221.sample_rates_count",
6210 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6212 { &hf_aem_sample_rates
,
6213 {"Sample Rates", "ieee17221.sample_rates",
6214 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6217 { &hf_aem_base_frequency
,
6218 {"Base Frequency", "ieee17221.base_frequency",
6219 FT_UINT32
, BASE_DEC
, NULL
, AEM_BASE_FREQUENCY_MASK
, NULL
, HFILL
}
6221 { &hf_aem_pull_field
,
6222 {"Pull Field (frequency multiplier)", "ieee17221.pull_field",
6223 FT_UINT8
, BASE_HEX
, VALS(aem_frequency_multiplier_type_vals
), AEM_PULL_FIELD_MASK
, NULL
, HFILL
}
6232 { &hf_aem_stream_name
,
6233 {"Object Name", "ieee17221.stream_name",
6234 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6236 { &hf_aem_stream_name_string
,
6237 {"Localized Description", "ieee17221.stream_name_string",
6238 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6240 { &hf_aem_stream_flags
,
6241 {"Stream Flags", "ieee17221.stream_flags",
6242 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6244 { &hf_aem_flags_clock_sync_source
,
6245 {"Clock Sync Source Flag", "ieee17221.flags.clock_sync_source",
6246 FT_BOOLEAN
, 16, NULL
, AEM_CLOCK_SYNC_SOURCE_FLAG_MASK
, NULL
, HFILL
}
6248 { &hf_aem_flags_class_a
,
6249 {"Class A Flag", "ieee17221.flags.class_a",
6250 FT_BOOLEAN
, 16, NULL
, AEM_CLASS_A_FLAG_MASK
, NULL
, HFILL
}
6252 { &hf_aem_flags_class_b
,
6253 {"Class B Flag", "ieee17221.flags.class_b",
6254 FT_BOOLEAN
, 16, NULL
, AEM_CLASS_B_FLAG_MASK
, NULL
, HFILL
}
6257 { &hf_aem_stream_channels
,
6258 {"Stream Channels", "ieee17221.stream_channels",
6259 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6262 { &hf_aem_formats_offset
,
6263 {"Formats Offset", "ieee17221.formats_offset",
6264 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6266 { &hf_aem_number_of_formats
,
6267 {"Number Of Formats", "ieee17221.number_of_formats",
6268 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6270 { &hf_aem_backup_talker_guid_0
,
6271 {"Primary Backup Talker GUID", "ieee17221.backup_talker_guid_0",
6272 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6274 { &hf_aem_backup_talker_unique_0
,
6275 {"Primary Backup Talker Unique ID", "ieee17221.backup_talker_unique_0",
6276 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6278 { &hf_aem_backup_talker_guid_1
,
6279 {"Secondary Backup Talker GUID", "ieee17221.backup_talker_guid_1",
6280 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6282 { &hf_aem_backup_talker_unique_1
,
6283 {"Secondary Backup Talker Unique ID", "ieee17221.backup_talker_unique_1",
6284 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6286 { &hf_aem_backup_talker_guid_2
,
6287 {"Tertiary Backup Talker GUID", "ieee17221.backup_talker_guid_2",
6288 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6290 { &hf_aem_backup_talker_unique_2
,
6291 {"Tertiary Backup Talker Unique ID", "ieee17221.backup_talker_unique_2",
6292 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6294 { &hf_aem_backedup_talker_guid
,
6295 {"Backedup Talker GUID", "ieee17221.backedup_talker_guid",
6296 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6298 { &hf_aem_backedup_talker_unique
,
6299 {"Backedup Talker Unique ID", "ieee17221.backedup_talker_unique",
6300 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6302 { &hf_aem_avb_interface_id
,
6303 {"AVB Interface ID", "ieee17221.avb_interface_id",
6304 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6306 { &hf_aem_buffer_length
,
6307 {"Buffer Length", "ieee17221.buffer_length",
6308 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6311 /* array head. uses ett_aem_stream_formats */
6312 { &hf_aem_stream_formats
,
6313 {"Stream Formats Array", "ieee17221.stream_formats",
6314 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6317 /* EXTERNAL_JACK_INPUT */
6318 /* EXTERNAL_JACK_OUTPUT*/
6319 { &hf_aem_jack_name
,
6320 {"Object Name", "ieee17221.jack_name",
6321 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6323 { &hf_aem_jack_name_string
,
6324 {"Localized Description", "ieee17221.jack_name_string",
6325 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6327 { &hf_aem_interface_name
,
6328 {"Interface Name", "ieee17221.interface_name",
6329 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6331 { &hf_aem_interface_name_string
,
6332 {"Interface Name String", "ieee17221.interface_name_string",
6333 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6335 { &hf_aem_jack_flags
,
6336 {"Jack Flags", "ieee17221.jack_flags",
6337 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6339 { &hf_aem_flags_captive
,
6340 {"Captive Flag", "ieee17221.flags.captive",
6341 FT_BOOLEAN
, 16, NULL
, AEM_CAPTIVE_FLAG_MASK
, NULL
, HFILL
}
6343 { &hf_aem_jack_type
,
6344 {"Jack Type", "ieee17221.jack_type",
6345 FT_UINT16
, BASE_HEX
, VALS(aem_jack_type_vals
), 0x00, NULL
, HFILL
}
6347 /* AUDIO_PORT_INPUT */
6348 /* AUDIO_PORT_OUTPUT */
6349 { &hf_aem_port_flags
,
6350 {"Port Flags", "ieee17221.port_flags",
6351 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6353 { &hf_aem_flags_async_sample_rate_conv
,
6354 {"Asynchronous Sample Rate Converter Flag", "ieee17221.flags.async_sample_rate_conv",
6355 FT_BOOLEAN
, 16, NULL
, AEM_ASYNC_SAMPLE_RATE_CONV_FLAG_MASK
, NULL
, HFILL
}
6357 { &hf_aem_flags_sync_sample_rate_conv
,
6358 {"Synchronous Sample Rate Converter Flag", "ieee17221.flags.sync_sample_rate_conv",
6359 FT_BOOLEAN
, 16, NULL
, AEM_SYNC_SAMPLE_RATE_CONV_FLAG_MASK
, NULL
, HFILL
}
6362 { &hf_aem_audio_channels
,
6363 {"Audio Channels", "ieee17221.audio_channels",
6364 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6367 { &hf_aem_number_of_clusters
,
6368 {"Number of Clusters", "ieee17221.number_of_clusters",
6369 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6371 { &hf_aem_base_cluster
,
6372 {"Base Cluster", "ieee17221.base_cluster",
6373 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6375 { &hf_aem_base_audio_map
,
6376 {"Base Audio Map", "ieee17221.base_audio_map",
6377 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6379 { &hf_aem_number_audio_maps
,
6380 {"Number of Audio Maps", "ieee17221.num_audio_maps",
6381 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6383 /* VIDEO_PORT_INPUT */
6384 /* VIDEO_PORT_OUTPUT */
6386 { &hf_aem_stream_id
,
6387 {"Stream Descriptor ID", "ieee17221.stream_descriptor_id",
6388 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6390 { &hf_aem_formats_count
,
6391 {"Formats Count", "ieee17221.formats_count",
6392 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6396 /* EXTERNAL_PORT_INPUT */
6397 /* EXTERNAL_PORT_OUTPUT */
6399 {"Jack ID", "ieee17221.jack_id",
6400 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6402 /* SENSOR_PORT_INPUT */
6403 /* SENSOR_PORT_OUTPUT */
6404 /* INTERNAL_PORT_INPUT */
6405 /* INTERNAL_PORT_OUTPUT */
6407 { &hf_aem_internal_id
,
6408 {"Internal ID", "ieee17221.internal_id",
6409 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6413 { &hf_aem_avb_interface_flags
,
6414 {"Interface Flags", "ieee17221.interface_flags",
6415 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6417 { &hf_aem_avb_clock_identity
,
6418 {"Clock Identity", "ieee17221.clock_identity",
6419 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6421 { &hf_aem_avb_priority1
,
6422 {"Priority1", "ieee17221.priority1",
6423 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6425 { &hf_aem_avb_clock_class
,
6426 {"Clock Class", "ieee17221.clock_class",
6427 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6429 { &hf_aem_avb_offset_scaled_log_variance
,
6430 {"Scaled Log Variance", "ieee17221.offset_scaled_log_variance",
6431 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6433 { &hf_aem_avb_clock_accuracy
,
6434 {"Clock Accuracy", "ieee17221.clock_accuracy",
6435 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6437 { &hf_aem_avb_priority2
,
6438 {"Priority2", "ieee17221.priority2",
6439 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6441 { &hf_aem_avb_domain_number
,
6442 {"Domain Number", "ieee17221.domain_number",
6443 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6445 { &hf_aem_avb_log_sync_interval
,
6446 {"Log sync Interval", "ieee17221.log_sync_interval",
6447 FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6450 { &hf_aem_avb_propagation_delay
,
6451 {"Propagation Delay", "ieee17221.propagation_delay",
6452 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6457 { &hf_aem_clock_source_name
,
6458 {"Object Name", "ieee17221.clock_source_name",
6459 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6461 { &hf_aem_clock_source_name_string
,
6462 {"Localized Description", "ieee17221.clock_source_name_string",
6463 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6465 { &hf_aem_clock_source_flags
,
6466 {"Clock Source Flags", "ieee17221.clock_source_flags",
6467 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6468 }, /* no flags currently defined */
6469 { &hf_aem_clock_source_type
,
6470 {"Clock Source Type", "ieee17221.clock_source_type",
6471 FT_UINT16
, BASE_HEX
, VALS(aem_clock_source_type_vals
), 0x00, NULL
, HFILL
}
6473 { &hf_aem_clock_source_location_type
,
6474 {"Clock Source Location Type", "ieee17221.clock_source_location_type",
6475 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6477 { &hf_aem_clock_source_location_id
,
6478 {"Clock Source Location ID", "ieee17221.clock_source_location_id",
6479 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6482 { &hf_aem_mappings_offset
,
6483 {"Mappings Offset", "ieee17221.mappings_offset",
6484 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6486 { &hf_aem_number_of_mappings
,
6487 {"Number of Mappings", "ieee17221.number_of_mappings",
6488 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6491 {"Mappings", "ieee17221.mappings",
6492 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6494 { &hf_aem_mapping_stream_index
,
6495 {"Mapping Stream Index", "ieee17221.mapping_stream_index",
6496 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6498 { &hf_aem_mapping_stream_channel
,
6499 {"Mapping Stream Channel", "ieee17221.mapping_stream_channel",
6500 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6502 { &hf_aem_mapping_cluster_offset
,
6503 {"Mapping Cluster Offset", "ieee17221.mapping_cluster_offset",
6504 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6506 { &hf_aem_mapping_cluster_channel
,
6507 {"Mapping Cluster Channel", "ieee17221.mapping_cluster_channel",
6508 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6511 { &hf_aem_channel_count
,
6512 {"Channel Count", "ieee17221.channel_count",
6513 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6515 { &hf_aem_path_latency
,
6516 {"Path Latency", "ieee17221.path_latency",
6517 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6519 { &hf_aem_am824_label
,
6520 {"AM824 Label", "ieee17221.am824_label",
6521 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6524 { &hf_aem_cluster_name
,
6525 {"Cluster Name", "ieee17221.cluster_name",
6526 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6528 { &hf_aem_cluster_name_string
,
6529 {"Cluster Name String", "ieee17221.cluster_name_string",
6530 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6535 { &hf_aem_control_type
,
6536 {"Control Type", "ieee17221.control_type",
6537 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6540 { &hf_aem_control_location_type
,
6541 {"Control Location Type", "ieee17221.control_location_type",
6542 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6544 { &hf_aem_control_location_id
,
6545 {"Control Location ID", "ieee17221.control_location_id",
6546 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6549 { &hf_aem_control_value_type
,
6550 {"Control Value Type", "ieee17221.control_value_type",
6551 FT_UINT16
, BASE_HEX
, VALS(aem_control_value_type_vals
), 0x00, NULL
, HFILL
}
6553 { &hf_aem_control_domain
,
6554 {"Control Domain", "ieee17221.control_domain",
6555 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6557 { &hf_aem_values_offset
,
6558 {"Values Offset", "ieee17221.values_offset",
6559 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6561 { &hf_aem_number_of_values
,
6562 {"Number Of Values", "ieee17221.number_of_values",
6563 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6565 { &hf_aem_control_latency
,
6566 {"Control Latency", "ieee17221.control_latency",
6567 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6570 /* SIGNAL_SELECTOR */
6572 { &hf_aem_sources_offset
,
6573 {"Sources Offset", "ieee17221.sources_offset",
6574 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6576 { &hf_aem_current_signal_type
,
6577 {"Current Signal Type", "ieee17221.current_signal_type",
6578 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6580 { &hf_aem_current_signal_id
,
6581 {"Current Signal ID", "ieee17221.current_signal_id",
6582 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6584 { &hf_aem_default_signal_type
,
6585 {"Default Signal Type", "ieee17221.default_signal_type",
6586 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6588 { &hf_aem_default_signal_id
,
6589 {"Default Signal ID", "ieee17221.default_signal_id",
6590 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6593 { &hf_aem_block_latency
,
6594 {"Block Latency", "ieee17221.block_latency",
6595 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6597 { &hf_aem_reset_time
,
6598 {"Reset Time", "ieee17221.reset_time",
6599 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6601 { &hf_aem_signal_type
,
6602 {"Signal Type", "ieee17221.signal_type",
6603 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6605 { &hf_aem_signal_index
,
6606 {"Signal Index", "ieee17221.signal_index",
6607 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6609 { &hf_aem_signal_output
,
6610 {"Signal Output", "ieee17221.signal_output",
6611 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6616 { &hf_aem_number_of_sources
,
6617 {"Number of Sources", "ieee17221.number_of_sources",
6618 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6620 { &hf_aem_value_offset
,
6621 {"Value Offset", "ieee17221.value_offset",
6622 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6627 {"Width", "ieee17221.width",
6628 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6631 {"Height", "ieee17221.height",
6632 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6634 { &hf_aem_base_source
,
6635 {"Base Source", "ieee17221.base_source",
6636 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6638 { &hf_aem_number_destinations
,
6639 {"Number of Destinations", "ieee17221.num_destinations",
6640 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6642 { &hf_aem_base_destination
,
6643 {"Base Destination", "ieee17221.base_destination",
6644 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6649 { &hf_aem_locale_identifier
,
6650 {"Locale Identifier", "ieee17221.locale_identifier",
6651 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6653 { &hf_aem_number_of_strings
,
6654 {"Number of Strings", "ieee17221.number_of_strings",
6655 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6657 { &hf_aem_base_strings
,
6658 {"Base Strings", "ieee17221.base_strings",
6659 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6664 {"String", "ieee17221.string",
6665 FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6669 { &hf_aem_signals_count
,
6670 {"Signals Count", "ieee17221.signals_count",
6671 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6673 { &hf_aem_signals_offset
,
6674 {"Signals Offset", "ieee17221.signals_offset",
6675 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6679 { &hf_aem_memory_object_type
,
6680 {"Memory Object Type", "ieee17221.memory_object_type",
6681 FT_UINT16
, BASE_HEX
, VALS(aem_memory_object_type_vals
), 0x00, NULL
, HFILL
}
6683 { &hf_aem_target_descriptor_type
,
6684 {"Target Descriptor Type", "ieee17221.target_descriptor_type",
6685 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6687 { &hf_aem_target_descriptor_id
,
6688 {"Target Descriptor ID", "ieee17221.target_descriptor_id",
6689 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6691 { &hf_aem_start_address
,
6692 {"Start Address", "ieee17221.start_address",
6693 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6696 {"Length", "ieee17221.length",
6697 FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6701 /* CONTROL VALUE TYPES */
6702 { &hf_aem_ctrl_int8
,
6703 {"Control INT8", "ieee17221.ctrl_int8",
6704 FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6706 { &hf_aem_ctrl_uint8
,
6707 {"Control UINT8", "ieee17221.ctrl_uint8",
6708 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6710 { &hf_aem_ctrl_int16
,
6711 {"Control INT16", "ieee17221.ctrl_int16",
6712 FT_INT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6714 { &hf_aem_ctrl_uint16
,
6715 {"Control UINT16", "ieee17221.ctrl_uint16",
6716 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6718 { &hf_aem_ctrl_int32
,
6719 {"Control INT32", "ieee17221.ctrl_int32",
6720 FT_INT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6722 { &hf_aem_ctrl_uint32
,
6723 {"Control UINT32", "ieee17221.ctrl_uint32",
6724 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6726 { &hf_aem_ctrl_int64
,
6727 {"Control INT64", "ieee17221.ctrl_int64",
6728 FT_INT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6730 { &hf_aem_ctrl_uint64
,
6731 {"Control UINT64", "ieee17221.ctrl_uint64",
6732 FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6734 { &hf_aem_ctrl_float
,
6735 {"Control FLOAT", "ieee17221.ctrl_float",
6736 FT_FLOAT
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6738 { &hf_aem_ctrl_double
,
6739 {"Control DOUBLE", "ieee17221.ctrl_double",
6740 FT_DOUBLE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6742 { &hf_aem_ctrl_vals
,
6743 {"Control Values", "ieee17221.ctrl_vals",
6744 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6747 {"Control Value Units", "ieee17221.units",
6748 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6750 { &hf_aem_string_ref
,
6751 {"String Reference", "ieee17221.string_ref",
6752 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6755 {"GUID", "ieee17221.guid",
6756 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6758 { &hf_aem_blob_size
,
6759 {"Blob Size", "ieee17221.blob_size",
6760 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6762 { &hf_aem_binary_blob
,
6763 {"Binary Blob", "ieee17221.binary_blob",
6764 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6767 {"Sources", "ieee17221.sources",
6768 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6770 { &hf_aem_unknown_descriptor
,
6771 {"Unknown or Malformed Descriptor", "ieee17221.unknown_descriptor",
6772 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6774 { &hf_aem_frequency
,
6775 {"Frequency", "ieee17221.frequency",
6776 FT_FLOAT
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6779 /* AEM MEDIA FORMAT FIELDS */
6780 /* Standard media formats are defined by always having the 24 most significant bits
6781 * of the EUI64 set to 0x90e0f0
6785 {"OUI-24", "ieee17221.oui24",
6786 FT_UINT24
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6789 {"MFD Type", "ieee17221.mfd_type",
6790 FT_UINT8
, BASE_HEX
, VALS(aem_mfd_type_vals
), 0x00, NULL
, HFILL
}
6793 {"Div Flag", "ieee17221.div",
6794 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6796 { &hf_aem_interlace
,
6797 {"Interlace Flag", "ieee17221.interlace",
6798 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6801 {"Video Channel Count", "ieee17221.channels",
6802 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_CHANNELS
, NULL
, HFILL
}
6804 { &hf_aem_color_format
,
6805 {"Color Format", "ieee17221.color_format",
6806 FT_UINT16
, BASE_HEX
, VALS(aem_color_format_type_vals
), AEM_MASK_COLOR_FORMAT
, NULL
, HFILL
}
6809 {"Bits Per Pixel", "ieee17221.bpp",
6810 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_BPP
, NULL
, HFILL
}
6813 {"Aspect X", "ieee17221.aspect_x",
6814 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6817 {"Aspect Y", "ieee17221.aspect_y",
6818 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6820 { &hf_aem_frame_rate
,
6821 {"Frame Rate", "ieee17221.frame_rate",
6822 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6825 {"Comp 1", "ieee17221.comp1",
6826 FT_UINT16
, BASE_DEC
, NULL
, AEM_MASK_COMP1
, NULL
, HFILL
}
6829 {"Comp 2", "ieee17221.comp2",
6830 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_COMP2
, NULL
, HFILL
}
6833 {"Comp 3", "ieee17221.comp3",
6834 FT_UINT16
, BASE_DEC
, NULL
, AEM_MASK_COMP3
, NULL
, HFILL
}
6837 {"Comp 4", "ieee17221.comp4",
6838 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_COMP4
, NULL
, HFILL
}
6841 {"Width", "ieee17221.width",
6842 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6844 { &hf_aem_mf_height
,
6845 {"Height", "ieee17221.height",
6846 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6849 {"CS EUI64", "ieee17221.cs_eui64",
6850 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6853 /* BEGIN STREAM FORMAT (SF) FIELDS */
6854 { &hf_aem_stream_format
,
6855 {"Stream Format", "ieee17221.stream_format",
6856 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6858 { &hf_aem_sf_version
,
6859 {"Version", "ieee17221.sf_version",
6860 FT_UINT8
, BASE_HEX
, NULL
, AEM_MASK_SF_VERSION
, NULL
, HFILL
}
6862 { &hf_aem_sf_subtype
,
6863 {"Subtype", "ieee17221.sf_subtype",
6864 FT_UINT8
, BASE_HEX
, NULL
, AEM_MASK_SF_SUBTYPE
, NULL
, HFILL
}
6868 {"SF", "ieee17221.sf",
6869 FT_BOOLEAN
, 8, NULL
, AEM_MASK_SF
, NULL
, HFILL
}
6871 { &hf_aem_iidc_format
,
6872 {"IIDC Format", "ieee17221.iidc_format",
6873 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6875 { &hf_aem_iidc_mode
,
6876 {"IIDC Mode", "ieee17221.iidc_mode",
6877 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6879 { &hf_aem_iidc_rate
,
6880 {"IIDC Rate", "ieee17221.iidc_rate",
6881 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6884 {"FMT", "ieee17221.fmt",
6885 FT_UINT8
, BASE_HEX
, NULL
, AEM_MASK_FMT
, NULL
, HFILL
}
6888 {"FDF EVT", "ieee17221.fdf_evt",
6889 FT_UINT8
, BASE_HEX
, NULL
, AEM_MASK_FDF_EVT
, NULL
, HFILL
}
6892 {"FDF SFC", "ieee17221.fdf_sfc",
6893 FT_UINT8
, BASE_HEX
, NULL
, AEM_MASK_FDF_SFC
, NULL
, HFILL
}
6896 {"DBS", "ieee17221.dbs",
6897 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6900 {"Blocking Flag", "ieee17221.flags.b",
6901 FT_BOOLEAN
, 8, NULL
, AEM_MASK_B
, NULL
, HFILL
}
6904 {"NonBlocking Flag", "ieee17221.flags.nb",
6905 FT_BOOLEAN
, 8, NULL
, AEM_MASK_NB
, NULL
, HFILL
}
6907 { &hf_aem_label_iec_60958_cnt
,
6908 {"Label IEC 60958 Count", "ieee17221.label_iec_60958_cnt",
6909 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6911 { &hf_aem_label_mbla_cnt
,
6912 {"Label Multi-Bit Linear Audio Count", "ieee17221.label_mbla_cnt",
6913 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6915 { &hf_aem_label_midi_cnt
,
6916 {"Label Midi Slot Count", "ieee17221.label_midi_cnt",
6917 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_LABEL_MIDI_CNT
, NULL
, HFILL
}
6919 { &hf_aem_label_smpte_cnt
,
6920 {"Label SMPTE Slot Count", "ieee17221.label_smpte_cnt",
6921 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_LABEL_SMPTE_CNT
, NULL
, HFILL
}
6923 { &hf_aem_video_mode
,
6924 {"Video Mode", "ieee17221.video_mode",
6925 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6927 { &hf_aem_compress_mode
,
6928 {"Compress Mode", "ieee17221.compress_mode",
6929 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6931 { &hf_aem_color_space
,
6932 {"Color Space", "ieee17221.color_space",
6933 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6937 {"Values", "ieee17221.values",
6938 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6941 { &hf_aecp_status_code
,
6942 {"Status", "ieee17221.status",
6943 FT_UINT8
, BASE_HEX
, VALS(aem_status_type_vals
), AECP_STATUS_CODE_MASK
, NULL
, HFILL
}
6945 /* END STREAM FORMAT (SF) FIELDS */
6947 /* SET/GET_STREAM_BACKUP */
6948 { &hf_aecp_backup_talker_entity_id_0
,
6949 {"Backup Talker Entity ID 0", "ieee17221.backup_talker_entity_id_0",
6950 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6952 { &hf_aecp_backup_talker_unique_id_0
,
6953 {"Backup Talker Unique ID 0", "ieee17221.backup_talker_unique_id_0",
6954 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6956 { &hf_aecp_backup_talker_entity_id_1
,
6957 {"Backup Talker Entity ID 1", "ieee17221.backup_talker_entity_id_1",
6958 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6960 { &hf_aecp_backup_talker_unique_id_1
,
6961 {"Backup Talker Unique ID 1", "ieee17221.backup_talker_unique_id_1",
6962 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6964 { &hf_aecp_backup_talker_entity_id_2
,
6965 {"Backup Talker Entity ID 2", "ieee17221.backup_talker_entity_id_2",
6966 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6968 { &hf_aecp_backup_talker_unique_id_2
,
6969 {"Backup Talker Unique ID 2", "ieee17221.backup_talker_unique_id_2",
6970 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6972 { &hf_aecp_backedup_talker_entity_id
,
6973 {"Backed up Talker Entity ID", "ieee17221.backedup_talker_entity_id",
6974 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6976 { &hf_aecp_backedup_talker_unique_id
,
6977 {"Backedup Talker Unique ID", "ieee17221.backedup_talker_unique_id",
6978 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6980 { &hf_aecp_vendor_unique_protocol_id
,
6981 {"Vendor Unique Protocol ID", "ieee17221.protocol_id",
6982 FT_UINT48
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6986 /* Setup protocol subtree array */
6987 static int *ett
[] = {
6993 /* &ett_adp_aud_format, */
6994 &ett_adp_samp_rates
,
6995 &ett_adp_chan_format
,
6997 &ett_aem_desc_counts
,
6998 &ett_aem_descriptor
,
6999 &ett_aem_sample_rates
,
7000 &ett_aem_stream_flags
,
7001 &ett_aem_clock_sources
,
7002 &ett_aem_stream_formats
,
7003 &ett_aem_jack_flags
,
7004 &ett_aem_port_flags
,
7005 &ett_aecp_get_avb_info_msrp_mappings
,
7006 &ett_aecp_get_as_path_sequences
,
7007 &ett_aem_clock_source_flags
,
7011 /* &ett_aem_media_format, */
7012 &ett_aecp_descriptors
,
7014 &ett_aem_stream_format
,
7017 /* Register the protocol name and description */
7018 proto_17221
= proto_register_protocol("IEEE 1722.1 Protocol", "IEEE1722.1", "ieee17221");
7019 avb17221_handle
= register_dissector("ieee17221", dissect_17221
, proto_17221
);
7021 /* Required function calls to register the header fields and subtrees used */
7022 proto_register_field_array(proto_17221
, hf
, array_length(hf
));
7023 proto_register_subtree_array(ett
, array_length(ett
));
7025 /* Register the custom handler for vendor specific messages */
7026 vendor_unique_protocol_dissector_table
= register_dissector_table("ieee17221.protocol_id", "Vendor Unique Protocol ID", proto_17221
, FT_STRING
, STRING_CASE_SENSITIVE
);
7030 proto_reg_handoff_17221(void)
7032 dissector_add_uint("ieee1722.subtype", 0xFA, avb17221_handle
);
7033 dissector_add_uint("ieee1722.subtype", 0xFB, avb17221_handle
);
7034 dissector_add_uint("ieee1722.subtype", 0xFC, avb17221_handle
);
7038 * Editor modelines - https://www.wireshark.org/tools/modelines.html
7043 * indent-tabs-mode: nil
7046 * vi: set shiftwidth=3 tabstop=8 expandtab:
7047 * :indentSize=3:tabSize=8:noTabs=true: