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>
25 void proto_register_17221(void);
26 void proto_reg_handoff_17221(void);
28 static dissector_handle_t avb17221_handle
;
31 #define P1722_HEADER_OFFSET 12
33 /* 1722.1 ADP Offsets */
34 #define ADP_CD_OFFSET 0
35 #define ADP_VERSION_OFFSET 1
36 #define ADP_VALID_TIME_OFFSET 2
37 #define ADP_CD_LENGTH_OFFSET 3
38 #define ADP_ENTITY_ID_OFFSET 4
39 #define ADP_ENTITY_MODEL_ID_OFFSET P1722_HEADER_OFFSET+0
40 #define ADP_ENTITY_CAP_OFFSET P1722_HEADER_OFFSET+8
41 #define ADP_TALKER_STREAM_SRCS_OFFSET P1722_HEADER_OFFSET+12
42 #define ADP_TALKER_CAP_OFFSET P1722_HEADER_OFFSET+14
43 #define ADP_LISTENER_STREAM_SINKS_OFFSET P1722_HEADER_OFFSET+16
44 #define ADP_LISTENER_CAP_OFFSET P1722_HEADER_OFFSET+18
45 #define ADP_CONTROLLER_CAP_OFFSET P1722_HEADER_OFFSET+20
46 #define ADP_AVAIL_INDEX_OFFSET P1722_HEADER_OFFSET+24
47 #define ADP_AS_GM_ID_OFFSET P1722_HEADER_OFFSET+28
48 #define ADP_GPTP_DOMAIN_NUMBER_OFFSET P1722_HEADER_OFFSET+36
49 #define ADP_IDENTIFY_CONTROL_INDEX P1722_HEADER_OFFSET+40
50 #define ADP_INTERFACE_INDEX P1722_HEADER_OFFSET+42
51 #define ADP_ASSOC_ID_OFFSET P1722_HEADER_OFFSET+44
55 #define ADP_MSG_TYPE_MASK 0x0f
56 #define ADP_VALID_TIME_MASK 0xf8
57 #define ADP_CD_LENGTH_MASK 0x07ff
61 #define ADP_ENTITY_AVAILABLE_MESSAGE 0x00
62 #define ADP_ENTITY_DEPARTING_MESSAGE 0x01
63 #define ADP_ENTITY_DISCOVER_MESSAGE 0x02
65 /* entity_capabilities_flags */
66 #define ADP_EFU_MODE_BITMASK 0x00000001
67 #define ADP_ADDRESS_ACCESS_BITMASK 0x00000002
68 #define ADP_GATEWAY_ENTITY_BITMASK 0x00000004
69 #define ADP_AEM_SUPPORTED_BITMASK 0x00000008
70 #define ADP_LEGACY_AVC_BITMASK 0x00000010
71 #define ADP_ASSOC_ID_SUPPORT_BITMASK 0x00000020
72 #define ADP_ASSOC_ID_VALID_BITMASK 0x00000040
73 #define ADP_VENDOR_UNIQUE_BITMASK 0x00000080
74 #define ADP_CLASS_A_SUPPORTED_BITMASK 0x00000100
75 #define ADP_CLASS_B_SUPPORTED_BITMASK 0x00000200
76 #define ADP_AS_SUPPORTED_BITMASK 0x00000400
78 /* talker capabilities flags */
79 #define ADP_TALK_IMPLEMENTED_BITMASK 0x0001
80 #define ADP_TALK_OTHER_SRC_BITMASK 0x0200
81 #define ADP_TALK_CONTROL_SRC_BITMASK 0x0400
82 #define ADP_TALK_MEDIA_CLK_SRC_BITMASK 0x0800
83 #define ADP_TALK_SMPTE_SRC_BITMASK 0x1000
85 #define ADP_TALK_MIDI_SRC_BITMASK 0x2000
86 #define ADP_TALK_AUDIO_SRC_BITMASK 0x4000
87 #define ADP_TALK_VIDEO_SRC_BITMASK 0x8000
89 /* listener capabilities flags */
90 #define ADP_LIST_IMPLEMENTED_BITMASK 0x0001
91 #define ADP_LIST_OTHER_SINK_BITMASK 0x0200
92 #define ADP_LIST_CONTROL_SINK_BITMASK 0x0400
93 #define ADP_LIST_MEDIA_CLK_SINK_BITMASK 0x0800
94 #define ADP_LIST_SMPTE_SINK_BITMASK 0x1000
95 #define ADP_LIST_MIDI_SINK_BITMASK 0x2000
96 #define ADP_LIST_AUDIO_SINK_BITMASK 0x4000
97 #define ADP_LIST_VIDEO_SINK_BITMASK 0x8000
99 /* Controller capabilities flags */
100 #define ADP_CONT_IMPLEMENTED_BITMASK 0x0001
101 #define ADP_CONT_LAYER3_PROXY_BITMASK 0x0002
103 /* Default audio formats fields */
104 #define ADP_DEF_AUDIO_SAMPLE_RATES_MASK 0xFC
105 #define ADP_DEF_AUDIO_MAX_CHANS_MASK 0x03FC
106 #define ADP_DEF_AUDIO_SAF_MASK 0x0002
107 #define ADP_DEF_AUDIO_FLOAT_MASK 0x0001
109 /* Default sample rates flags */
110 #define ADP_SAMP_RATE_44K1_BITMASK 0x01<<2
111 #define ADP_SAMP_RATE_48K_BITMASK 0x02<<2
112 #define ADP_SAMP_RATE_88K2_BITMASK 0x04<<2
113 #define ADP_SAMP_RATE_96K_BITMASK 0x08<<2
114 #define ADP_SAMP_RATE_176K4_BITMASK 0x10<<2
115 #define ADP_SAMP_RATE_192K_BITMASK 0x20<<2
117 /* channel_formats flags */
119 #define ADP_CHAN_FORMAT_MONO (0x00000001)
120 #define ADP_CHAN_FORMAT_2CH (0x00000002)
121 #define ADP_CHAN_FORMAT_3CH (0x00000004)
122 #define ADP_CHAN_FORMAT_4CH (0x00000008)
123 #define ADP_CHAN_FORMAT_5CH (0x00000010)
124 #define ADP_CHAN_FORMAT_6CH (0x00000020)
125 #define ADP_CHAN_FORMAT_7CH (0x00000040)
126 #define ADP_CHAN_FORMAT_8CH (0x00000080)
127 #define ADP_CHAN_FORMAT_10CH (0x00000100)
128 #define ADP_CHAN_FORMAT_12CH (0x00000200)
129 #define ADP_CHAN_FORMAT_14CH (0x00000400)
130 #define ADP_CHAN_FORMAT_16CH (0x00000800)
131 #define ADP_CHAN_FORMAT_18CH (0x00001000)
132 #define ADP_CHAN_FORMAT_20CH (0x00002000)
133 #define ADP_CHAN_FORMAT_22CH (0x00004000)
134 #define ADP_CHAN_FORMAT_24CH (0x00008000)
136 /******************************************************************************/
137 /* 1722.1 ACMP Offsets */
138 #define ACMP_CD_OFFSET 0
139 #define ACMP_VERSION_OFFSET 1
140 #define ACMP_STATUS_FIELD_OFFSET 2
141 #define ACMP_CD_LENGTH_OFFSET 2
142 #define ACMP_STREAM_ID_OFFSET 4
143 #define ACMP_CONTROLLER_GUID_OFFSET 12
144 #define ACMP_TALKER_GUID_OFFSET 20
145 #define ACMP_LISTENER_GUID_OFFSET 28
146 #define ACMP_TALKER_UNIQUE_ID_OFFSET 36
147 #define ACMP_LISTENER_UNIQUE_ID_OFFSET 38
148 #define ACMP_DEST_MAC_OFFSET 40
149 #define ACMP_CONNECTION_COUNT_OFFSET 46
150 #define ACMP_SEQUENCE_ID_OFFSET 48
151 #define ACMP_FLAGS_OFFSET 50
152 #define ACMP_VLAN_ID_OFFSET 52
154 /* Bit Field Masks */
156 #define ACMP_MSG_TYPE_MASK 0x0F
157 #define ACMP_STATUS_FIELD_MASK 0xF8
158 #define ACMP_CD_LENGTH_MASK 0x07FF
162 #define ACMP_CONNECT_TX_COMMAND 0
163 #define ACMP_CONNECT_TX_RESPONSE 1
164 #define ACMP_DISCONNECT_TX_COMMAND 2
165 #define ACMP_DISCONNECT_TX_RESPONSE 3
166 #define ACMP_GET_TX_STATE_COMMAND 4
167 #define ACMP_GET_TX_STATE_RESPONSE 5
168 #define ACMP_CONNECT_RX_COMMAND 6
169 #define ACMP_CONNECT_RX_RESPONSE 7
170 #define ACMP_DISCONNECT_RX_COMMAND 8
171 #define ACMP_DISCONNECT_RX_RESPONSE 9
172 #define ACMP_GET_RX_STATE_COMMAND 10
173 #define ACMP_GET_RX_STATE_RESPONSE 11
174 #define ACMP_GET_TX_CONNECTION_COMMAND 12
175 #define ACMP_GET_TX_CONNECTION_RESPONSE 13
179 #define ACMP_STATUS_SUCCESS 0
180 #define ACMP_STATUS_LISTENER_UNKNOWN_ID 1
181 #define ACMP_STATUS_TALKER_UNKNOWN_ID 2
182 #define ACMP_STATUS_TALKER_DEST_MAC_FAIL 3
183 #define ACMP_STATUS_TALKER_NO_STREAM_INDEX 4
184 #define ACMP_STATUS_TALKER_NO_BANDWIDTH 5
185 #define ACMP_STATUS_TALKER_EXCLUSIVE 6
186 #define ACMP_STATUS_LISTENER_TALKER_TIMEOUT 7
187 #define ACMP_STATUS_LISTENER_EXCLUSIVE 8
188 #define ACMP_STATUS_STATE_UNAVAILABLE 9
189 #define ACMP_STATUS_NOT_CONNECTED 10
190 #define ACMP_STATUS_NO_SUCH_CONNECTION 11
191 #define ACMP_STATUS_COULD_NOT_SEND_MESSAGE 12
192 #define ACMP_STATUS_DEFAULT_SET_DIFFERENT 15
193 #define ACMP_STATUS_NOT_SUPPORTED 31
196 #define ACMP_FLAG_CLASS_B_BITMASK 0x0001
197 #define ACMP_FLAG_FAST_CONNECT_BITMASK 0x0002
198 #define ACMP_FLAG_SAVED_STATE_BITMASK 0x0004
199 #define ACMP_FLAG_STREAMING_WAIT_BITMASK 0x0008
200 #define ACMP_FLAG_SUPPORTS_ENCRYPTED_BITMASK 0x0010
201 #define ACMP_FLAG_ENCRYPTED_PDU_BITMASK 0x0020
202 #define ACMP_FLAG_TALKER_FAILED_BITMASK 0x0040
204 /******************************************************************************/
205 /* AECP Common Offsets */
206 #define AECP_OFFSET_VERSION 1
207 #define AECP_OFFSET_CD_LENGTH 2
208 #define AECP_OFFSET_TARGET_GUID 4
209 #define AECP_OFFSET_CONTROLLER_GUID 12
210 #define AECP_OFFSET_SEQUENCE_ID 20
211 #define AECP_OFFSET_U_FLAG 22
212 #define AECP_OFFSET_COMMAND_TYPE 22
214 #define AECP_OFFSET_STATUS_CODE 2
216 /* AECP Address Access Command Specific Offsets */
217 #define AECP_AA_OFFSET_COUNT 22
218 #define AECP_AA_OFFSET_TLVS_START 24
220 /* AECP AEM Command Specific Offsets */
221 /* Note that these values include the 12 byte common header */
224 #define AECP_OFFSET_ACQUIRE_ENTITY_FLAGS 24
225 #define AECP_OFFSET_ACQUIRE_ENTITY_OWNER_GUID 28
226 #define AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_TYPE 36
227 #define AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_INDEX 38
230 #define AECP_OFFSET_LOCK_ENTITY_FLAGS 24
231 #define AECP_OFFSET_LOCK_ENTITY_LOCKED_GUID 28
233 /* READ/WRITE_DESCRIPTOR */
234 #define AECP_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX 24
235 #define AECP_OFFSET_DESCRIPTOR_DESCRIPTOR 28
236 #define AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_TYPE 28
237 #define AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_INDEX 30
239 /* GET/SET_CONFIGURATION */
240 #define AECP_OFFSET_CONFIGURATION_CONFIGURATION_INDEX 26
242 /* GET/SET_STREAM_FORMAT */
243 #define AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_TYPE 24
244 #define AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_INDEX 26
245 #define AECP_OFFSET_STREAM_FORMAT_STREAM_FORMAT 28
247 /* GET/SET_VIDEO_FORMAT */
248 #define AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_TYPE 24
249 #define AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_INDEX 26
250 #define AECP_OFFSET_VIDEO_FORMAT_FORMAT_SPECIFIC 28
251 #define AECP_OFFSET_VIDEO_FORMAT_ASPECT_RATIO 32
252 #define AECP_OFFSET_VIDEO_FORMAT_COLOR_SPACE 34
253 #define AECP_OFFSET_VIDEO_FORMAT_FRAME_SIZE 36
255 /* GET/SET_SENSOR_FORMAT */
256 #define AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_TYPE 24
257 #define AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_INDEX 26
258 #define AECP_OFFSET_SENSOR_FORMAT_SENSOR_FORMAT 28
260 /* GET/SET_STREAM_INFO */
261 #define AECP_OFFSET_STREAM_INFO_DESCRIPTOR_TYPE 24
262 #define AECP_OFFSET_STREAM_INFO_DESCRIPTOR_INDEX 26
263 #define AECP_OFFSET_STREAM_INFO_FLAGS 28
264 #define AECP_OFFSET_STREAM_INFO_STREAM_FORMAT 32
265 #define AECP_OFFSET_STREAM_INFO_STREAM_ID 40
266 #define AECP_OFFSET_STREAM_INFO_MSRP_ACCUMULATED_LATENCY 48
267 #define AECP_OFFSET_STREAM_INFO_STREAM_DEST_MAC 52
268 #define AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_CODE 58
269 #define AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_BRIDGE_ID 60
270 /** #define AECP_OFFSET_STREAM_INFO_STREAM_VLAN_ID 68 **/
273 #define AECP_OFFSET_NAME_DESCRIPTOR_TYPE 24
274 #define AECP_OFFSET_NAME_DESCRIPTOR_INDEX 26
275 #define AECP_OFFSET_NAME_NAME_INDEX 28
276 #define AECP_OFFSET_NAME_CONFIGURATION_INDEX 30
277 #define AECP_OFFSET_NAME_NAME 32
279 /* GET/SET_ASSOCIATION_ID */
280 #define AECP_OFFSET_ASSOCIATION_ID_ASSOCIATION_ID 24
282 /* GET/SET_SAMPLING_RATE */
283 #define AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_TYPE 24
284 #define AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_INDEX 26
285 #define AECP_OFFSET_SAMPLING_RATE_SAMPLING_RATE 28
287 /* GET/SET_CLOCK_SOURCE */
288 #define AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_TYPE 24
289 #define AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_INDEX 26
290 #define AECP_OFFSET_CLOCK_SOURCE_CLOCK_SOURCE_INDEX 28
292 /* GET/SET_CONTROL, GET/SET_MIXER */
293 #define AECP_OFFSET_CONTROL_DESCRIPTOR_TYPE 24
294 #define AECP_OFFSET_CONTROL_DESCRIPTOR_INDEX 26
295 #define AECP_OFFSET_CONTROL_VALUES 28
297 /* INCREMENT/DECREMENT_CONTROL */
298 #define AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_TYPE 24
299 #define AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_INDEX 26
300 #define AECP_OFFSET_INCDEC_CONTROL_INDEX_COUNT 28
301 #define AECP_OFFSET_INCDEC_CONTROL_INDEX_LIST 32
303 /* GET/SET_SIGNAL_SELECTOR */
304 #define AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_TYPE 24
305 #define AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_INDEX 26
306 #define AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_TYPE 28
307 #define AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_INDEX 30
308 #define AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_OUTPUT 32
311 #define AECP_OFFSET_MATRIX_DESCRIPTOR_TYPE 24
312 #define AECP_OFFSET_MATRIX_DESCRIPTOR_INDEX 26
313 #define AECP_OFFSET_MATRIX_MATRIX_COLUMN 28
314 #define AECP_OFFSET_MATRIX_MATRIX_ROW 30
315 #define AECP_OFFSET_MATRIX_REGION_WIDTH 32
316 #define AECP_OFFSET_MATRIX_REGION_HEIGHT 34
317 #define AECP_OFFSET_MATRIX_REP 36
318 #define AECP_OFFSET_MATRIX_DIRECTION 36
319 #define AECP_OFFSET_MATRIX_VALUE_COUNT 36
320 #define AECP_OFFSET_MATRIX_ITEM_OFFSET 38
321 #define AECP_OFFSET_MATRIX_VALUES 40
323 /* START/STOP_STREAMING */
324 #define AECP_OFFSET_STREAMING_DESCRIPTOR_TYPE 24
325 #define AECP_OFFSET_STREAMING_DESCRIPTOR_INDEX 26
327 /* REGISTER/DEREGISTER_UNSOLICITED_NOTIFICATION */
328 /* No additional fields */
330 /* IDENTIFY_NOTIFICATION */
331 #define AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_TYPE 24
332 #define AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_INDEX 26
335 #define AECP_OFFSET_AVB_INFO_DESCRIPTOR_TYPE 24
336 #define AECP_OFFSET_AVB_INFO_DESCRIPTOR_INDEX 26
337 #define AECP_OFFSET_AVB_INFO_AS_GRANDMASTER_ID 28
338 #define AECP_OFFSET_AVB_INFO_PROPAGATION_DELAY 36
339 #define AECP_OFFSET_AVB_INFO_AS_DOMAIN_NUMBER 40
340 #define AECP_OFFSET_AVB_INFO_FLAGS 41
341 #define AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS_COUNT 42
342 #define AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS 44
345 #define AECP_OFFSET_AS_PATH_DESCRIPTOR_INDEX 24
346 #define AECP_OFFSET_AS_PATH_COUNT 26
347 #define AECP_OFFSET_AS_PATH_PATH_SEQUENCE 28
350 #define AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE 24
351 #define AECP_OFFSET_COUNTERS_DESCRIPTOR_INDEX 26
352 #define AECP_OFFSET_COUNTERS_VALID 28
353 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_UP 32
354 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_DOWN 36
355 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_TX 40
356 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_RX 44
357 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_RX_CRC_ERROR 48
358 #define AECP_OFFSET_COUNTERS_AVB_INTERFACE_GPTP_GM_CHANGED 52
359 #define AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_LOCKED 32
360 #define AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_UNLOCKED 36
361 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_LOCKED 32
362 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_UNLOCKED 36
363 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_STREAM_RESET 40
364 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_SEQ_NUM_MISMATCH 44
365 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_RESET 48
366 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_UNCERTAIN 52
367 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_VALID 56
368 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_NOT_VALID 60
369 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_UNSUPPORTED_FORMAT 64
370 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_LATE_TIMESTAMP 68
371 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_EARLY_TIMESTAMP 72
372 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_TX 76
373 #define AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_RX 80
374 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_8 128
375 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_7 132
376 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_6 136
377 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_5 140
378 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_4 144
379 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_3 148
380 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_2 152
381 #define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_1 156
383 /* GET_AUDIO_MAP, GET_VIDEO_MAP, GET_SENSOR_MAP */
384 #define AECP_OFFSET_MAP_DESCRIPTOR_TYPE 24
385 #define AECP_OFFSET_MAP_DESCRIPTOR_INDEX 26
386 #define AECP_OFFSET_MAP_MAP_INDEX 28
387 #define AECP_OFFSET_MAP_NUMBER_OF_MAPS 30
388 #define AECP_OFFSET_MAP_NUMBER_OF_MAPPINGS 32
389 #define AECP_OFFSET_MAP_MAPPINGS 36
391 /* ADD/REMOVE_AUDIO_MAPPINGS, ADD/REMOVE_VIDEO_MAPPINGS, ADD/REMOVE_SENSOR_MAPPINGS */
392 #define AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_TYPE 24
393 #define AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_INDEX 26
394 #define AECP_OFFSET_ADDREM_MAP_NUMBER_OF_MAPPINGS 28
395 #define AECP_OFFSET_ADDREM_MAP_MAPPINGS 32
397 /* START_OPERATION */
398 #define AECP_OFFSET_START_OPERATION_DESCRIPTOR_TYPE 24
399 #define AECP_OFFSET_START_OPERATION_DESCRIPTOR_INDEX 26
400 #define AECP_OFFSET_START_OPERATION_OPERATION_ID 28
401 #define AECP_OFFSET_START_OPERATION_OPERATION_TYPE 30
402 #define AECP_OFFSET_START_OPERATION_VALUES 32
404 /* ABORT_OPERATION */
405 #define AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_TYPE 24
406 #define AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_INDEX 26
407 #define AECP_OFFSET_ABORT_OPERATION_OPERATION_ID 28
409 /* OPERATION_STATUS */
410 #define AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_TYPE 24
411 #define AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_INDEX 26
412 #define AECP_OFFSET_OPERATION_STATUS_OPERATION_ID 28
413 #define AECP_OFFSET_OPERATION_STATUS_PERCENT_COMPLETE 30
415 /* AUTH_ADD/DELETE_KEY, AUTH_GET_KEY */
416 #define AECP_OFFSET_AUTH_KEY_KEY_EUI 24
417 #define AECP_OFFSET_AUTH_KEY_KEY_TYPE 32
418 #define AECP_OFFSET_AUTH_KEY_KEY_LENGTH 32
419 #define AECP_OFFSET_AUTH_KEY_KEY 36
421 /* AUTH_GET_KEY_LIST */
422 #define AECP_OFFSET_AUTH_GET_KEY_LIST_KEYCHAIN_ID 24
423 #define AECP_OFFSET_AUTH_GET_KEY_LIST_NUMBER_OF_KEYS 24
425 /* AUTH_ADD_KEY_TO_KEYCHAIN, AUTH_DELETE_KEY_FROM_KEYCHAIN */
426 #define AECP_OFFSET_AUTH_KEYCHAIN_KEYCHAIN_ID 24
427 #define AECP_OFFSET_AUTH_KEYCHAIN_KEY_EUI 28
429 /* AUTH_GET_KEYCHAIN_LIST */
430 #define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_KEYCHAIN_ID 24
431 #define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_LIST_INDEX 26
432 #define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_LISTS 28
433 #define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_KEYS 30
434 #define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_KEY_EUIS 32
436 /* AUTH_GET_IDENTITY */
437 #define AECP_OFFSET_AUTH_GET_IDENTITY_KEY_GUID 24
438 #define AECP_OFFSET_AUTH_GET_IDENTITY_SIGNATURE 32
440 /* AUTH_ADD/DELETE_TOKEN */
441 #define AECP_OFFSET_AUTH_TOKEN_TOKEN_LENGTH 24
442 #define AECP_OFFSET_AUTH_TOKEN_AUTHENTICATION_TOKEN 28
444 /* AUTHENTICATE/DEAUTHENTICATE */
445 #define AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_TYPE 24
446 #define AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_INDEX 26
447 #define AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH 28
448 #define AECP_OFFSET_AUTHENTICATE_AUTH_TOKEN 32
450 /* ENABLE/DISABLE_TRANSPORT_SECURITY */
451 #define AECP_OFFSET_TRANSPORT_SECURITY_KEY_EUI 24
453 /* ENABLE/DISABLE_STREAM_ENCRYPTION */
454 #define AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_TYPE 24
455 #define AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_INDEX 26
456 #define AECP_OFFSET_STREAM_ENCRYPTION_KEY_EUI 28
458 /* Set/Get Stream Backup */
459 #define AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_TYPE 24
460 #define AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_INDEX 26
461 #define AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_0 28
462 #define AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_0 36
463 #define AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_1 40
464 #define AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_1 48
465 #define AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_2 52
466 #define AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_2 60
467 #define AECP_OFFSET_STREAM_BACKEDUP_TALKER_ENTITY_ID 64
468 #define AECP_OFFSET_STREAM_BACKEDUP_TALKER_UNIQUE_ID 72
470 /* aecp_message_type */
471 /* 1722.1 draft 2011-11-14 table 9.1 */
472 #define AECP_AEM_COMMAND_MESSAGE 0
473 #define AECP_AEM_RESPONSE_MESSAGE 1
474 #define AECP_ADDRESS_ACCESS_COMMAND_MESSAGE 2
475 #define AECP_ADDRESS_ACCESS_RESPONSE_MESSAGE 3
476 #define AECP_AVC_COMMAND_MESSAGE 4
477 #define AECP_AVC_RESPONSE_MESSAGE 5
478 #define AECP_VENDOR_UNIQUE_COMMAND_MESSAGE 6
479 #define AECP_VENDOR_UNIQUE_RESPONSE_MESSAGE 7
480 #define AECP_EXTENDED_COMMAND_MESSAGE 14
481 #define AECP_EXTENDED_RESPONSE_MESSAGE 15
483 /* aecp status field */
484 /* 1722.1 draft 2011-11-14 table 9.2 */
485 #define AECP_STATUS_SUCCESS 0
486 #define AECP_STATUS_NOT_IMPLEMENTED 1
488 /* AECP Address Type */
489 /* 1722.1 draft 2011-11-14 sec 7.4.35.1 table 7.82 */
490 #define AECP_ADDRESS_MAC 0x0000
491 #define AECP_ADDRESS_IPV4 0x0001
492 #define AECP_ADDRESS_IPV6 0x0002
494 /* AECP Direction Field Values */
495 /* 1722.1 draft 2011-11-14 table 7.78 */
496 #define AECP_DIRECTION_HORIZONTAL 0
497 #define AECP_DIRECTION_VERTICAL 1
499 /* AECP Keychain Type Values */
500 /* 1722.1 draft 2011-11-14 table 7.80 */
501 #define AECP_KEYCHAIN_NONE 0x0
502 #define AECP_KEYCHAIN_MANUFACTURER 0x1
503 #define AECP_KEYCHAIN_PRODUCT 0x2
504 #define AECP_KEYCHAIN_ENTITY 0x3
505 #define AECP_KEYCHAIN_USER 0x4
507 /* AECP Command Codes */
508 /* IEEE 1722.1 draft D21 Table 7.126 */
509 #define AECP_COMMAND_ACQUIRE_ENTITY 0x0000
510 #define AECP_COMMAND_LOCK_ENTITY 0x0001
511 #define AECP_COMMAND_ENTITY_AVAILABLE 0x0002
512 #define AECP_COMMAND_CONTROLLER_AVAILABLE 0x0003
513 #define AECP_COMMAND_READ_DESCRIPTOR 0x0004
514 #define AECP_COMMAND_WRITE_DESCRIPTOR 0x0005
515 #define AECP_COMMAND_SET_CONFIGURATION 0x0006
516 #define AECP_COMMAND_GET_CONFIGURATION 0x0007
517 #define AECP_COMMAND_SET_STREAM_FORMAT 0x0008
518 #define AECP_COMMAND_GET_STREAM_FORMAT 0x0009
519 #define AECP_COMMAND_SET_VIDEO_FORMAT 0x000a
520 #define AECP_COMMAND_GET_VIDEO_FORMAT 0x000b
521 #define AECP_COMMAND_SET_SENSOR_FORMAT 0x000c
522 #define AECP_COMMAND_GET_SENSOR_FORMAT 0x000d
523 #define AECP_COMMAND_SET_STREAM_INFO 0x000e
524 #define AECP_COMMAND_GET_STREAM_INFO 0x000f
525 #define AECP_COMMAND_SET_NAME 0x0010
526 #define AECP_COMMAND_GET_NAME 0x0011
527 #define AECP_COMMAND_SET_ASSOCIATION_ID 0x0012
528 #define AECP_COMMAND_GET_ASSOCIATION_ID 0x0013
529 #define AECP_COMMAND_SET_SAMPLING_RATE 0x0014
530 #define AECP_COMMAND_GET_SAMPLING_RATE 0x0015
531 #define AECP_COMMAND_SET_CLOCK_SOURCE 0x0016
532 #define AECP_COMMAND_GET_CLOCK_SOURCE 0x0017
533 #define AECP_COMMAND_SET_CONTROL_VALUE 0x0018
534 #define AECP_COMMAND_GET_CONTROL_VALUE 0x0019
535 #define AECP_COMMAND_INCREMENT_CONTROL 0x001a
536 #define AECP_COMMAND_DECREMENT_CONTROL 0x001b
537 #define AECP_COMMAND_SET_SIGNAL_SELECTOR 0x001c
538 #define AECP_COMMAND_GET_SIGNAL_SELECTOR 0x001d
539 #define AECP_COMMAND_SET_MIXER 0x001e
540 #define AECP_COMMAND_GET_MIXER 0x001f
541 #define AECP_COMMAND_SET_MATRIX 0x0020
542 #define AECP_COMMAND_GET_MATRIX 0x0021
543 #define AECP_COMMAND_START_STREAMING 0x0022
544 #define AECP_COMMAND_STOP_STREAMING 0x0023
545 #define AECP_COMMAND_REGISTER_UNSOL_NOTIFICATION 0x0024
546 #define AECP_COMMAND_DEREGISTER_UNSOL_NOTIFICATION 0x0025
547 #define AECP_COMMAND_IDENTIFY_NOTIFICATION 0x0026
548 #define AECP_COMMAND_GET_AVB_INFO 0x0027
549 #define AECP_COMMAND_GET_AS_PATH 0x0028
550 #define AECP_COMMAND_GET_COUNTERS 0x0029
551 #define AECP_COMMAND_REBOOT 0x002a
552 #define AECP_COMMAND_GET_AUDIO_MAP 0x002b
553 #define AECP_COMMAND_ADD_AUDIO_MAPPINGS 0x002c
554 #define AECP_COMMAND_REMOVE_AUDIO_MAPPINGS 0x002d
555 #define AECP_COMMAND_GET_VIDEO_MAP 0x002e
556 #define AECP_COMMAND_ADD_VIDEO_MAPPINGS 0x002f
557 #define AECP_COMMAND_REMOVE_VIDEO_MAPPINGS 0x0030
558 #define AECP_COMMAND_GET_SENSOR_MAP 0x0031
559 #define AECP_COMMAND_ADD_SENSOR_MAPPINGS 0x0032
560 #define AECP_COMMAND_REMOVE_SENSOR_MAPPINGS 0x0033
561 #define AECP_COMMAND_START_OPERATION 0x0034
562 #define AECP_COMMAND_ABORT_OPERATION 0x0035
563 #define AECP_COMMAND_OPERATION_STATUS 0x0036
564 #define AECP_COMMAND_AUTH_ADD_KEY 0x0037
565 #define AECP_COMMAND_AUTH_DELETE_KEY 0x0038
566 #define AECP_COMMAND_AUTH_GET_KEY_LIST 0x0039
567 #define AECP_COMMAND_AUTH_GET_KEY 0x003a
568 #define AECP_COMMAND_AUTH_ADD_KEY_TO_CHAIN 0x003b
569 #define AECP_COMMAND_AUTH_DELETE_KEY_FROM_CHAIN 0x003c
570 #define AECP_COMMAND_AUTH_GET_KEYCHAIN_LIST 0x003d
571 #define AECP_COMMAND_AUTH_GET_IDENTITY 0x003e
572 #define AECP_COMMAND_AUTH_ADD_TOKEN 0x003f
573 #define AECP_COMMAND_AUTH_DELETE_TOKEN 0x0040
574 #define AECP_COMMAND_AUTHENTICATE 0x0041
575 #define AECP_COMMAND_DEAUTHENTICATE 0x0042
576 #define AECP_COMMAND_ENABLE_TRANSPORT_SECURITY 0x0043
577 #define AECP_COMMAND_DISABLE_TRANSPORT_SECURITY 0x0044
578 #define AECP_COMMAND_ENABLE_STREAM_ENCRYPTION 0x0045
579 #define AECP_COMMAND_DISABLE_STREAM_ENCRYPTION 0x0046
580 #define AECP_COMMAND_SET_STREAM_BACKUP 0x0049
581 #define AECP_COMMAND_GET_STREAM_BACKUP 0x004a
582 /* 0x002e - 0x7ffe RESERVED for future use */
583 #define AECP_COMMAND_EXPANSION 0x7fff /* reserved */
585 /* AEM common format packet STATUS field values */
586 /* IEEE 1722.1 draft D21 Table 7.127 */
587 #define AEM_STATUS_SUCCESS 0
588 #define AEM_STATUS_NOT_IMPLEMENTED 1
589 #define AEM_STATUS_NO_SUCH_DESCRIPTOR 2
590 #define AEM_STATUS_ENTITY_LOCKED 3
591 #define AEM_STATUS_ENTITY_ACQUIRED 4
592 #define AEM_STATUS_NOT_AUTHENTICATED 5
593 #define AEM_STATUS_AUTHENTICATION_DISABLED 6
594 #define AEM_STATUS_BAD_ARGUMENTS 7
595 #define AEM_STATUS_NO_RESOURCES 8
596 #define AEM_STATUS_IN_PROGRESS 9
597 #define AEM_STATUS_ENTITY_MISBEHAVING 10
598 #define AEM_STATUS_NOT_SUPPORTED 11
599 #define AEM_STATUS_STREAM_IS_RUNNING 12
600 /* 10 - 31 RESERVED */
602 /* AEM descriptor indices */
603 /* IEEE 1722.1 draft D21 TABLE 7.1 */
604 #define AEM_DESCRIPTOR_ENTITY 0x0000
605 #define AEM_DESCRIPTOR_CONFIGURATION 0x0001
606 #define AEM_DESCRIPTOR_AUDIO_UNIT 0x0002
607 #define AEM_DESCRIPTOR_VIDEO_UNIT 0x0003
608 #define AEM_DESCRIPTOR_SENSOR_UNIT 0x0004
609 #define AEM_DESCRIPTOR_STREAM_INPUT 0x0005
610 #define AEM_DESCRIPTOR_STREAM_OUTPUT 0x0006
611 #define AEM_DESCRIPTOR_JACK_INPUT 0x0007
612 #define AEM_DESCRIPTOR_JACK_OUTPUT 0x0008
613 #define AEM_DESCRIPTOR_AVB_INTERFACE 0x0009
614 #define AEM_DESCRIPTOR_CLOCK_SOURCE 0x000a
615 #define AEM_DESCRIPTOR_MEMORY_OBJECT 0x000b
616 #define AEM_DESCRIPTOR_LOCALE 0x000c
617 #define AEM_DESCRIPTOR_STRINGS 0x000d
618 #define AEM_DESCRIPTOR_STREAM_PORT_INPUT 0x000e
619 #define AEM_DESCRIPTOR_STREAM_PORT_OUTPUT 0x000f
620 #define AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT 0x0010
621 #define AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT 0x0011
622 #define AEM_DESCRIPTOR_INTERNAL_PORT_INPUT 0x0012
623 #define AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT 0x0013
624 #define AEM_DESCRIPTOR_AUDIO_CLUSTER 0x0014
625 #define AEM_DESCRIPTOR_VIDEO_CLUSTER 0x0015
626 #define AEM_DESCRIPTOR_SENSOR_CLUSTER 0x0016
627 #define AEM_DESCRIPTOR_AUDIO_MAP 0x0017
628 #define AEM_DESCRIPTOR_VIDEO_MAP 0x0018
629 #define AEM_DESCRIPTOR_SENSOR_MAP 0x0019
630 #define AEM_DESCRIPTOR_CONTROL 0x001a
631 #define AEM_DESCRIPTOR_SIGNAL_SELECTOR 0x001b
632 #define AEM_DESCRIPTOR_MIXER 0x001c
633 #define AEM_DESCRIPTOR_MATRIX 0x001d
634 #define AEM_DESCRIPTOR_MATRIX_SIGNAL 0x001e
635 #define AEM_DESCRIPTOR_SIGNAL_SPLITTER 0x001f
636 #define AEM_DESCRIPTOR_SIGNAL_COMBINER 0x0020
637 #define AEM_DESCRIPTOR_SIGNAL_DEMULTIPLEXER 0x0021
638 #define AEM_DESCRIPTOR_SIGNAL_MULTIPLEXER 0x0022
639 #define AEM_DESCRIPTOR_SIGNAL_TRANSCODER 0x0023
640 #define AEM_DESCRIPTOR_CLOCK_DOMAIN 0x0024
641 #define AEM_DESCRIPTOR_CONTROL_BLOCK 0x0025
642 #define AEM_DESCRIPTOR_INVALID 0xFFFF
645 /* IEEE 1722.1 draft D21 TABLE 7.12 */
646 #define AEM_JACKTYPE_SPEAKER 0x0000
647 #define AEM_JACKTYPE_HEADPHONE 0x0001
648 #define AEM_JACKTYPE_ANALOG_MICROPHONE 0x0002
649 #define AEM_JACKTYPE_SPDIF 0x0003
650 #define AEM_JACKTYPE_ADAT 0x0004
651 #define AEM_JACKTYPE_TDIF 0x0005
652 #define AEM_JACKTYPE_MADI 0x0006
653 #define AEM_JACKTYPE_UNBALANCED_ANALOG 0x0007
654 #define AEM_JACKTYPE_BALANCED_ANALOG 0x0008
655 #define AEM_JACKTYPE_DIGITAL 0x0009
656 #define AEM_JACKTYPE_MIDI 0x000a
657 #define AEM_JACKTYPE_AES_EBU 0x000b
658 #define AEM_JACKTYPE_COMPOSITE_VIDEO 0x000c
659 #define AEM_JACKTYPE_S_VHS_VIDEO 0x000d
660 #define AEM_JACKTYPE_COMPONENT_VIDEO 0x000e
661 #define AEM_JACKTYPE_DVI 0x000f
662 #define AEM_JACKTYPE_HDMI 0x0010
663 #define AEM_JACKTYPE_UDI 0x0011
664 #define AEM_JACKTYPE_DISPLAYPORT 0x0012
665 #define AEM_JACKTYPE_ANTENNA 0x0013
666 #define AEM_JACKTYPE_ANALOG_TUNER 0x0014
667 #define AEM_JACKTYPE_ETHERNET 0x0015
668 #define AEM_JACKTYPE_WIFI 0x0016
669 #define AEM_JACKTYPE_USB 0x0017
670 #define AEM_JACKTYPE_PCI 0x0018
671 #define AEM_JACKTYPE_PCI_E 0x0019
672 #define AEM_JACKTYPE_SCSI 0x001a
673 #define AEM_JACKTYPE_ATA 0x001b
674 #define AEM_JACKTYPE_IMAGER 0x001c
675 #define AEM_JACKTYPE_IR 0x001d
676 #define AEM_JACKTYPE_THUNDERBOLT 0x001e
677 #define AEM_JACKTYPE_SATA 0x001f
678 #define AEM_JACKTYPE_SMPTE_LTC 0x0020
679 #define AEM_JACKTYPE_DIGITAL_MICROPHONE 0x0021
682 /* IEEE 1722.1 draft D21 TABLE 7.94 */
683 #define AEM_CONTROL_ENABLE 0x90e0f00000000000
684 #define AEM_CONTROL_IDENTIFY 0x90e0f00000000001
685 #define AEM_CONTROL_MUTE 0x90e0f00000000002
686 #define AEM_CONTROL_INVERT 0x90e0f00000000003
687 #define AEM_CONTROL_GAIN 0x90e0f00000000004
688 #define AEM_CONTROL_ATTENUATE 0x90e0f00000000005
689 #define AEM_CONTROL_DELAY 0x90e0f00000000006
690 #define AEM_CONTROL_SRC_MODE 0x90e0f00000000007
691 #define AEM_CONTROL_SNAPSHOT 0x90e0f00000000008
692 #define AEM_CONTROL_POW_LINE_FREQ 0x90e0f00000000009
693 #define AEM_CONTROL_POWER_STATUS 0x90e0f0000000000a
694 #define AEM_CONTROL_FAN_STATUS 0x90e0f0000000000b
695 #define AEM_CONTROL_TEMPERATURE 0x90e0f0000000000c
696 #define AEM_CONTROL_ALTITUDE 0x90e0f0000000000d
697 #define AEM_CONTROL_ABSOLUTE_HUMIDITY 0x90e0f0000000000e
698 #define AEM_CONTROL_RELATIVE_HUMIDITY 0x90e0f0000000000f
699 #define AEM_CONTROL_ORIENTATION 0x90e0f00000000010
700 #define AEM_CONTROL_VELOCITY 0x90e0f00000000011
701 #define AEM_CONTROL_ACCELERATION 0x90e0f00000000012
702 #define AEM_CONTROL_FILTER_RESPONSE 0x90e0f00000000013
703 /* 0x90e0f00000000014 - 0x90e0f0000000ffff reserved */
704 #define AEM_CONTROL_PANPOT 0x90e0f00000010000
705 #define AEM_CONTROL_PHANTOM 0x90e0f00000010001
706 #define AEM_CONTROL_AUDIO_SCALE 0x90e0f00000010002
707 #define AEM_CONTROL_AUDIO_METERS 0x90e0f00000010003
708 #define AEM_CONTROL_AUDIO_SPECTRUM 0x90e0f00000010004
709 /* 0x90e0f00000010005 - 0x90e0f0000001ffff reserved */
710 #define AEM_CONTROL_SCANNING_MODE 0x90e0f00000020000
711 #define AEM_CONTROL_AUTO_EXP_MODE 0x90e0f00000020001
712 #define AEM_CONTROL_AUTO_EXP_PRIO 0x90e0f00000020002
713 #define AEM_CONTROL_EXP_TIME 0x90e0f00000020003
714 #define AEM_CONTROL_FOCUS 0x90e0f00000020004
715 #define AEM_CONTROL_FOCUS_AUTO 0x90e0f00000020005
716 #define AEM_CONTROL_IRIS 0x90e0f00000020006
717 #define AEM_CONTROL_ZOOM 0x90e0f00000020007
718 #define AEM_CONTROL_PRIVACY 0x90e0f00000020008
719 #define AEM_CONTROL_BACKLIGHT 0x90e0f00000020009
720 #define AEM_CONTROL_BRIGHTNESS 0x90e0f0000002000a
721 #define AEM_CONTROL_CONTRAST 0x90e0f0000002000b
722 #define AEM_CONTROL_HUE 0x90e0f0000002000c
723 #define AEM_CONTROL_SATURATION 0x90e0f0000002000d
724 #define AEM_CONTROL_SHARPNESS 0x90e0f0000002000e
725 #define AEM_CONTROL_GAMMA 0x90e0f0000002000f
726 #define AEM_CONTROL_WHITE_BAL_TEMP 0x90e0f00000020010
727 #define AEM_CONTROL_WHITE_BAL_TEMP_AUTO 0x90e0f00000020011
728 #define AEM_CONTROL_WHITE_BAL_COMP 0x90e0f00000020012
729 #define AEM_CONTROL_WHITE_BAL_COMP_AUTO 0x90e0f00000020013
730 #define AEM_CONTROL_DIGITAL_ZOOM 0x90e0f00000020014
731 /* 0x90e0f00000020015 - 0x90e0f0000002ffff reserved */
732 #define AEM_CONTROL_MEDIA_PLAYLIST 0x90e0f00000030000
733 #define AEM_CONTROL_MEDIA_PLAYLIST_NAME 0x90e0f00000030001
734 #define AEM_CONTROL_MEDIA_DISK 0x90e0f00000030002
735 #define AEM_CONTROL_MEDIA_DISK_NAME 0x90e0f00000030003
736 #define AEM_CONTROL_MEDIA_TRACK 0x90e0f00000030004
737 #define AEM_CONTROL_MEDIA_TRACK_NAME 0x90e0f00000030005
738 #define AEM_CONTROL_MEDIA_SPEED 0x90e0f00000030006
739 #define AEM_CONTROL_MEDIA_SAMPLE_POSITION 0x90e0f00000030007
740 #define AEM_CONTROL_MEDIA_PLAYBACK_TRANSPORT 0x90e0f00000030008
741 #define AEM_CONTROL_MEDIA_RECORD_TRANSPORT 0x90e0f00000030009
742 /* 0x90e0f0000003000a - 0x90e0f0000003ffff reserved */
743 #define AEM_CONTROL_FREQUENCY 0x90e0f00000040000
744 #define AEM_CONTROL_MODULATION 0x90e0f00000040001
745 #define AEM_CONTROL_POLARIZATION 0x90e0f00000040002
746 /* 0x90e0f00000040003 - 0x90e0f0ffffffffff reserved */
748 /* AEM Control Value Types */
749 /* IEEE 1722.1 draft D21 TABLE 7.106 */
750 #define AEM_CONTROL_LINEAR_INT8 0x0000
751 #define AEM_CONTROL_LINEAR_UINT8 0x0001
752 #define AEM_CONTROL_LINEAR_INT16 0x0002
753 #define AEM_CONTROL_LINEAR_UINT16 0x0003
754 #define AEM_CONTROL_LINEAR_INT32 0x0004
755 #define AEM_CONTROL_LINEAR_UINT32 0x0005
756 #define AEM_CONTROL_LINEAR_INT64 0x0006
757 #define AEM_CONTROL_LINEAR_UINT64 0x0007
758 #define AEM_CONTROL_LINEAR_FLOAT 0x0008
759 #define AEM_CONTROL_LINEAR_DOUBLE 0x0009
760 #define AEM_CONTROL_SELECTOR_INT8 0x000a
761 #define AEM_CONTROL_SELECTOR_UINT8 0x000b
762 #define AEM_CONTROL_SELECTOR_INT16 0x000c
763 #define AEM_CONTROL_SELECTOR_UINT16 0x000d
764 #define AEM_CONTROL_SELECTOR_INT32 0x000e
765 #define AEM_CONTROL_SELECTOR_UINT32 0x000f
766 #define AEM_CONTROL_SELECTOR_INT64 0x0010
767 #define AEM_CONTROL_SELECTOR_UINT64 0x0011
768 #define AEM_CONTROL_SELECTOR_FLOAT 0x0012
769 #define AEM_CONTROL_SELECTOR_DOUBLE 0x0013
770 #define AEM_CONTROL_SELECTOR_STRING 0x0014
771 #define AEM_CONTROL_ARRAY_INT8 0x0015
772 #define AEM_CONTROL_ARRAY_UINT8 0x0016
773 #define AEM_CONTROL_ARRAY_INT16 0x0017
774 #define AEM_CONTROL_ARRAY_UINT16 0x0018
775 #define AEM_CONTROL_ARRAY_INT32 0x0019
776 #define AEM_CONTROL_ARRAY_UINT32 0x001a
777 #define AEM_CONTROL_ARRAY_INT64 0x001b
778 #define AEM_CONTROL_ARRAY_UINT64 0x001c
779 #define AEM_CONTROL_ARRAY_FLOAT 0x001d
780 #define AEM_CONTROL_ARRAY_DOUBLE 0x001e
781 #define AEM_CONTROL_UTF8 0x001f
782 #define AEM_CONTROL_BODE_PLOT 0x0020
783 #define AEM_CONTROL_SMPTE_TIME 0x0021
784 #define AEM_CONTROL_SAMPLE_RATE 0x0022
785 #define AEM_CONTROL_GPTP_TIME 0x0023
786 /* 0x0024-0x3ffd RESERVED Reserved for future use. */
787 #define AEM_CONTROL_VENDOR 0x3ffe
788 /* 0x3fff EXPANSION Reserved for future expansion. */
790 /* AEM CLOCK_SOURCE Types */
791 /* IEEE 1722.1 draft D21 TABLE 7.17 */
792 #define AEM_CLOCK_INTERNAL 0x0000
793 #define AEM_CLOCK_EXTERNAL 0x0001
794 #define AEM_CLOCK_INPUT_STREAM 0x0002
795 #define AEM_CLOCK_MEDIA_CLOCK_STREAM 0x0003
796 /* 0x0004-0xfffe RESERVED Reserved for future use. */
797 /* 0xffff EXPANSION Reserved for future expansion. */
799 /* AEM Stream Format Definitions */
800 /* IEEE 1722.1 draft D21 TABLE 7.65 */
801 #define IEC_61883_IIDC_SUBTYPE 0x00
802 #define MMA_SUBTYPE 0x01
803 #define AVTP_AUDIO_SUBTYPE 0x02
804 #define AVTP_VIDEO_SUBTYPE 0x03
805 #define AVTP_CONTROL_SUBTYPE 0x04
806 /* 0x05-0x7e RESERVED Reserved for future protocols. */
807 #define EXPERIMENTAL_SUBTYPE 0x7f
810 /* AEM Descriptor Offsets */
811 /* IEEE 1722.1 draft D21 sections 7.2.1 - 7.2.33 */
812 #define AEM_OFFSET_DESCRIPTOR_TYPE 0
813 #define AEM_OFFSET_DESCRIPTOR_ID 2
815 #define ENTITY_OFFSET_ENTITY_GUID 4
816 #define ENTITY_OFFSET_ENTITY_MODEL_ID 12
817 #define ENTITY_OFFSET_ENTITY_CAPABILITIES 20
818 #define ENTITY_OFFSET_TALKER_STREAM_SOURCES 24
819 #define ENTITY_OFFSET_TALKER_CAPABILITIES 26
820 #define ENTITY_OFFSET_LISTENER_STREAM_SINKS 28
821 #define ENTITY_OFFSET_LISTENER_CAPABILITIES 30
822 #define ENTITY_OFFSET_CONTROLLER_CAPABILITIES 32
823 #define ENTITY_OFFSET_AVAILABLE_INDEX 36
824 #define ENTITY_OFFSET_ASSOCIATION_ID 40
825 #define ENTITY_OFFSET_ENTITY_NAME 48
826 #define ENTITY_OFFSET_VENDOR_NAME_STRING 112
827 #define ENTITY_OFFSET_MODEL_NAME_STRING 114
828 #define ENTITY_OFFSET_FIRMWARE_VERSION 116
829 #define ENTITY_OFFSET_GROUP_NAME 180
830 #define ENTITY_OFFSET_SERIAL_NUMBER 244
831 #define ENTITY_OFFSET_CONFIGURATIONS_COUNT 308
832 #define ENTITY_OFFSET_CURRENT_CONFIGURATION 310
834 #define CONFIGURATION_OFFSET_OBJECT_NAME 4
835 #define CONFIGURATION_OFFSET_LOCALIZED_DESCRIPTION 68
836 #define CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_COUNT 70
837 #define CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_OFFSET 72
838 #define CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS 74
840 #define AUDIO_UNIT_OFFSET_OBJECT_NAME 4
841 #define AUDIO_UNIT_OFFSET_LOCALIZED_DESCRIPTION 68
842 #define AUDIO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX 70
843 #define AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS 72
844 #define AUDIO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT 74
845 #define AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS 76
846 #define AUDIO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT 78
847 #define AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS 80
848 #define AUDIO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT 82
849 #define AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS 84
850 #define AUDIO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT 86
851 #define AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS 88
852 #define AUDIO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT 90
853 #define AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS 92
854 #define AUDIO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT 94
855 #define AUDIO_UNIT_OFFSET_NUMBER_OF_CONTROLS 96
856 #define AUDIO_UNIT_OFFSET_BASE_CONTROL 98
857 #define AUDIO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS 100
858 #define AUDIO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR 102
859 #define AUDIO_UNIT_OFFSET_NUMBER_MIXERS 104
860 #define AUDIO_UNIT_OFFSET_BASE_MIXER 106
861 #define AUDIO_UNIT_OFFSET_NUMBER_MATRICES 108
862 #define AUDIO_UNIT_OFFSET_BASE_MATRIX 110
863 #define AUDIO_UNIT_OFFSET_NUMBER_SPLITTERS 112
864 #define AUDIO_UNIT_OFFSET_BASE_SPLITTER 114
865 #define AUDIO_UNIT_OFFSET_NUMBER_COMBINERS 116
866 #define AUDIO_UNIT_OFFSET_BASE_COMBINER 118
867 #define AUDIO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS 120
868 #define AUDIO_UNIT_OFFSET_BASE_DEMULTIPLEXER 122
869 #define AUDIO_UNIT_OFFSET_NUMBER_MULTIPLEXERS 124
870 #define AUDIO_UNIT_OFFSET_BASE_MULTIPLEXER 126
871 #define AUDIO_UNIT_OFFSET_NUMBER_TRANSCODERS 128
872 #define AUDIO_UNIT_OFFSET_BASE_TRANSCODER 130
873 #define AUDIO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS 132
874 #define AUDIO_UNIT_OFFSET_BASE_CONTROL_BLOCK 134
875 #define AUDIO_UNIT_OFFSET_CURRENT_SAMPLE_RATE 136
876 #define AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET 140
877 #define AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT 142
879 #define VIDEO_UNIT_OFFSET_OBJECT_NAME 4
880 #define VIDEO_UNIT_OFFSET_LOCALIZED_DESCRIPTION 68
881 #define VIDEO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX 70
882 #define VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS 72
883 #define VIDEO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT 74
884 #define VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS 76
885 #define VIDEO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT 78
886 #define VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS 80
887 #define VIDEO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT 82
888 #define VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS 84
889 #define VIDEO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT 86
890 #define VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS 88
891 #define VIDEO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT 90
892 #define VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS 92
893 #define VIDEO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT 94
894 #define VIDEO_UNIT_OFFSET_NUMBER_OF_CONTROLS 96
895 #define VIDEO_UNIT_OFFSET_BASE_CONTROL 98
896 #define VIDEO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS 100
897 #define VIDEO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR 102
898 #define VIDEO_UNIT_OFFSET_NUMBER_MIXERS 104
899 #define VIDEO_UNIT_OFFSET_BASE_MIXER 106
900 #define VIDEO_UNIT_OFFSET_NUMBER_MATRICES 108
901 #define VIDEO_UNIT_OFFSET_BASE_MATRIX 110
902 #define VIDEO_UNIT_OFFSET_NUMBER_SPLITTERS 112
903 #define VIDEO_UNIT_OFFSET_BASE_SPLITTER 114
904 #define VIDEO_UNIT_OFFSET_NUMBER_COMBINERS 116
905 #define VIDEO_UNIT_OFFSET_BASE_COMBINER 118
906 #define VIDEO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS 120
907 #define VIDEO_UNIT_OFFSET_BASE_DEMULTIPLEXER 122
908 #define VIDEO_UNIT_OFFSET_NUMBER_MULTIPLEXERS 124
909 #define VIDEO_UNIT_OFFSET_BASE_MULTIPLEXER 126
910 #define VIDEO_UNIT_OFFSET_NUMBER_TRANSCODERS 128
911 #define VIDEO_UNIT_OFFSET_BASE_TRANSCODER 130
912 #define VIDEO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS 132
913 #define VIDEO_UNIT_OFFSET_BASE_CONTROL_BLOCK 134
915 #define SENSOR_UNIT_OFFSET_OBJECT_NAME 4
916 #define SENSOR_UNIT_OFFSET_LOCALIZED_DESCRIPTION 68
917 #define SENSOR_UNIT_OFFSET_CLOCK_DOMAIN_INDEX 70
918 #define SENSOR_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS 72
919 #define SENSOR_UNIT_OFFSET_BASE_STREAM_INPUT_PORT 74
920 #define SENSOR_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS 76
921 #define SENSOR_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT 78
922 #define SENSOR_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS 80
923 #define SENSOR_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT 82
924 #define SENSOR_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS 84
925 #define SENSOR_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT 86
926 #define SENSOR_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS 88
927 #define SENSOR_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT 90
928 #define SENSOR_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS 92
929 #define SENSOR_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT 94
930 #define SENSOR_UNIT_OFFSET_NUMBER_OF_CONTROLS 96
931 #define SENSOR_UNIT_OFFSET_BASE_CONTROL 98
932 #define SENSOR_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS 100
933 #define SENSOR_UNIT_OFFSET_BASE_SIGNAL_SELECTOR 102
934 #define SENSOR_UNIT_OFFSET_NUMBER_MIXERS 104
935 #define SENSOR_UNIT_OFFSET_BASE_MIXER 106
936 #define SENSOR_UNIT_OFFSET_NUMBER_MATRICES 108
937 #define SENSOR_UNIT_OFFSET_BASE_MATRIX 110
938 #define SENSOR_UNIT_OFFSET_NUMBER_SPLITTERS 112
939 #define SENSOR_UNIT_OFFSET_BASE_SPLITTER 114
940 #define SENSOR_UNIT_OFFSET_NUMBER_COMBINERS 116
941 #define SENSOR_UNIT_OFFSET_BASE_COMBINER 118
942 #define SENSOR_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS 120
943 #define SENSOR_UNIT_OFFSET_BASE_DEMULTIPLEXER 122
944 #define SENSOR_UNIT_OFFSET_NUMBER_MULTIPLEXERS 124
945 #define SENSOR_UNIT_OFFSET_BASE_MULTIPLEXER 126
946 #define SENSOR_UNIT_OFFSET_NUMBER_TRANSCODERS 128
947 #define SENSOR_UNIT_OFFSET_BASE_TRANSCODER 130
948 #define SENSOR_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS 132
949 #define SENSOR_UNIT_OFFSET_BASE_CONTROL_BLOCK 134
951 #define STREAM_OFFSET_OBJECT_NAME 4
952 #define STREAM_OFFSET_LOCALIZED_DESCRIPTION 68
953 #define STREAM_OFFSET_CLOCK_DOMAIN_INDEX 70
954 #define STREAM_OFFSET_STREAM_FLAGS 72
955 #define STREAM_OFFSET_CURRENT_FORMAT 74
956 #define STREAM_OFFSET_FORMATS_OFFSET 82
957 #define STREAM_OFFSET_NUMBER_OF_FORMATS 84
958 #define STREAM_OFFSET_BACKUP_TALKER_GUID_0 86
959 #define STREAM_OFFSET_BACKUP_TALKER_UNIQUE_0 94
960 #define STREAM_OFFSET_BACKUP_TALKER_GUID_1 96
961 #define STREAM_OFFSET_BACKUP_TALKER_UNIQUE_1 104
962 #define STREAM_OFFSET_BACKUP_TALKER_GUID_2 106
963 #define STREAM_OFFSET_BACKUP_TALKER_UNIQUE_2 114
964 #define STREAM_OFFSET_BACKEDUP_TALKER_GUID 116
965 #define STREAM_OFFSET_BACKEDUP_TALKER_UNIQUE_ID 124
966 #define STREAM_OFFSET_AVB_INTERFACE_ID 126
967 #define STREAM_OFFSET_BUFFER_LENGTH 128
969 #define JACK_OFFSET_OBJECT_NAME 4
970 #define JACK_OFFSET_LOCALIZED_DESCRIPTION 68
971 #define JACK_OFFSET_JACK_FLAGS 70
972 #define JACK_OFFSET_JACK_TYPE 72
973 #define JACK_OFFSET_JACK_NUMBER_OF_CONTROLS 74
974 #define JACK_OFFSET_JACK_BASE_CONTROL 76
976 #define AVB_INTERFACE_OFFSET_OBJECT_NAME 4
977 #define AVB_INTERFACE_OFFSET_LOCALIZED_DESCRIPTION 68
978 #define AVB_INTERFACE_OFFSET_MAC_ADDRESS 70
979 #define AVB_INTERFACE_OFFSET_INTERFACE_FLAGS 76
980 #define AVB_INTERFACE_OFFSET_CLOCK_IDENTITY 78
981 #define AVB_INTERFACE_OFFSET_PRIORITY1 86
982 #define AVB_INTERFACE_OFFSET_CLOCK_CLASS 87
983 #define AVB_INTERFACE_OFFSET_OFFSET_SCALED_LOG_VARIANCE 88
984 #define AVB_INTERFACE_OFFSET_CLOCK_ACCURACY 90
985 #define AVB_INTERFACE_OFFSET_PRIORITY2 91
986 #define AVB_INTERFACE_OFFSET_DOMAIN_NUMBER 92
987 #define AVB_INTERFACE_OFFSET_LOG_SYNC_INTERVAL 93
989 #define CLOCK_SOURCE_OFFSET_OBJECT_NAME 4
990 #define CLOCK_SOURCE_OFFSET_LOCALIZED_DESCRIPTION 68
991 #define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_FLAGS 70
992 #define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_TYPE 72
993 #define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_IDENTIFIER 74
994 #define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_TYPE 82
995 #define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_INDEX 84
997 #define MEMORY_OBJECT_OFFSET_OBJECT_NAME 4
998 #define MEMORY_OBJECT_OFFSET_LOCALIZED_DESCRIPTION 68
999 #define MEMORY_OBJECT_OFFSET_MEMORY_OBJECT_TYPE 70
1000 #define MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_TYPE 72
1001 #define MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_INDEX 74
1002 #define MEMORY_OBJECT_OFFSET_START_ADDRESS 76
1003 #define MEMORY_OBJECT_OFFSET_LENGTH 84
1005 #define LOCALE_OFFSET_LOCALE_IDENTIFIER 4
1006 #define LOCALE_OFFSET_NUMBER_OF_STRINGS 68
1007 #define LOCALE_OFFSET_BASE_STRINGS 70
1009 #define STRINGS_OFFSET_STRING0 4
1011 #define STREAM_PORT_OFFSET_CLOCK_DOMAIN_INDEX 4
1012 #define STREAM_PORT_OFFSET_PORT_FLAGS 6
1013 #define STREAM_PORT_OFFSET_NUMBER_OF_CONTROLS 8
1014 #define STREAM_PORT_OFFSET_BASE_CONTROL 10
1015 #define STREAM_PORT_OFFSET_NUMBER_OF_CLUSTERS 12
1016 #define STREAM_PORT_OFFSET_BASE_CLUSTER 14
1017 #define STREAM_PORT_OFFSET_NUMBER_AUDIO_MAPS 16
1018 #define STREAM_PORT_OFFSET_BASE_AUDIO_MAP 18
1020 #define EXTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX 4
1021 #define EXTERNAL_PORT_OFFSET_PORT_FLAGS 6
1022 #define EXTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS 8
1023 #define EXTERNAL_PORT_OFFSET_BASE_CONTROL 10
1024 #define EXTERNAL_PORT_OFFSET_SIGNAL_TYPE 12
1025 #define EXTERNAL_PORT_OFFSET_SIGNAL_INDEX 14
1026 #define EXTERNAL_PORT_OFFSET_SIGNAL_OUTPUT 16
1027 #define EXTERNAL_PORT_OFFSET_BLOCK_LATENCY 18
1028 #define EXTERNAL_PORT_OFFSET_JACK_INDEX 22
1030 #define INTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX 4
1031 #define INTERNAL_PORT_OFFSET_PORT_FLAGS 6
1032 #define INTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS 8
1033 #define INTERNAL_PORT_OFFSET_BASE_CONTROL 10
1034 #define INTERNAL_PORT_OFFSET_SIGNAL_TYPE 12
1035 #define INTERNAL_PORT_OFFSET_SIGNAL_INDEX 14
1036 #define INTERNAL_PORT_OFFSET_SIGNAL_OUTPUT 16
1037 #define INTERNAL_PORT_OFFSET_BLOCK_LATENCY 18
1038 #define INTERNAL_PORT_OFFSET_INTERNAL_INDEX 22
1040 #define AUDIO_CLUSTER_OFFSET_OBJECT_NAME 4
1041 #define AUDIO_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION 68
1042 #define AUDIO_CLUSTER_OFFSET_SIGNAL_TYPE 70
1043 #define AUDIO_CLUSTER_OFFSET_SIGNAL_ID 72
1044 #define AUDIO_CLUSTER_OFFSET_SIGNAL_OUTPUT 74
1045 #define AUDIO_CLUSTER_OFFSET_PATH_LATENCY 76
1046 #define AUDIO_CLUSTER_OFFSET_BLOCK_LATENCY 80
1047 #define AUDIO_CLUSTER_OFFSET_CHANNEL_COUNT 84
1048 #define AUDIO_CLUSTER_OFFSET_FORMAT 86
1050 #define VIDEO_CLUSTER_OFFSET_OBJECT_NAME 4
1051 #define VIDEO_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION 68
1052 #define VIDEO_CLUSTER_OFFSET_SIGNAL_TYPE 70
1053 #define VIDEO_CLUSTER_OFFSET_SIGNAL_ID 72
1054 #define VIDEO_CLUSTER_OFFSET_SIGNAL_OUTPUT 74
1055 #define VIDEO_CLUSTER_OFFSET_PATH_LATENCY 76
1056 #define VIDEO_CLUSTER_OFFSET_BLOCK_LATENCY 80
1057 #define VIDEO_CLUSTER_OFFSET_FORMAT 84
1058 #define VIDEO_CLUSTER_OFFSET_CURRENT_FORMAT_SPECIFIC 85
1059 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_FORMAT_SPECIFICS_OFFSET 89
1060 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_FORMAT_SPECIFICS_COUNT 91
1061 #define VIDEO_CLUSTER_OFFSET_CURRENT_SAMPLING_RATE 93
1062 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_OFFSET 97
1063 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_COUNT 99
1064 #define VIDEO_CLUSTER_OFFSET_CURRENT_ASPECT_RATIO 101
1065 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_ASPECT_RATIOS_OFFSET 103
1066 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_ASPECT_RATIOS_COUNT 105
1067 #define VIDEO_CLUSTER_OFFSET_CURRENT_SIZE 107
1068 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_SIZES_OFFSET 111
1069 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_SIZES_COUNT 113
1070 #define VIDEO_CLUSTER_OFFSET_CURRENT_COLOR_SPACE 115
1071 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_COLOR_SPACES_OFFSET 117
1072 #define VIDEO_CLUSTER_OFFSET_SUPPORTED_COLOR_SPACES_COUNT 119
1074 #define SENSOR_CLUSTER_OFFSET_OBJECT_NAME 4
1075 #define SENSOR_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION 68
1076 #define SENSOR_CLUSTER_OFFSET_SIGNAL_TYPE 70
1077 #define SENSOR_CLUSTER_OFFSET_SIGNAL_ID 72
1078 #define SENSOR_CLUSTER_OFFSET_SIGNAL_OUTPUT 74
1079 #define SENSOR_CLUSTER_OFFSET_PATH_LATENCY 76
1080 #define SENSOR_CLUSTER_OFFSET_BLOCK_LATENCY 80
1081 #define SENSOR_CLUSTER_OFFSET_CURRENT_FORMAT 84
1082 #define SENSOR_CLUSTER_OFFSET_SUPPORTED_FORMATS_OFFSET 92
1083 #define SENSOR_CLUSTER_OFFSET_SUPPORTED_FORMATS_COUNT 94
1084 #define SENSOR_CLUSTER_OFFSET_CURRENT_SAMPLING_RATE 96
1085 #define SENSOR_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_OFFSET 100
1086 #define SENSOR_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_COUNT 102
1088 #define AUDIO_MAP_OFFSET_MAPPINGS_OFFSET 4
1089 #define AUDIO_MAP_OFFSET_NUMBER_OF_MAPPINGS 6
1091 #define VIDEO_MAP_OFFSET_MAPPINGS_OFFSET 4
1092 #define VIDEO_MAP_OFFSET_NUMBER_OF_MAPPINGS 6
1094 #define SENSOR_MAP_OFFSET_MAPPINGS_OFFSET 4
1095 #define SENSOR_MAP_OFFSET_NUMBER_OF_MAPPINGS 6
1097 #define CONTROL_OFFSET_OBJECT_NAME 4
1098 #define CONTROL_OFFSET_LOCALIZED_DESCRIPTION 68
1099 #define CONTROL_OFFSET_BLOCK_LATENCY 70
1100 #define CONTROL_OFFSET_CONTROL_LATENCY 74
1101 #define CONTROL_OFFSET_CONTROL_DOMAIN 78
1102 #define CONTROL_OFFSET_CONTROL_VALUE_TYPE 80
1103 #define CONTROL_OFFSET_CONTROL_TYPE 82
1104 #define CONTROL_OFFSET_RESET_TIME 90
1105 #define CONTROL_OFFSET_VALUES_OFFSET 94
1106 #define CONTROL_OFFSET_NUMBER_OF_VALUES 96
1107 #define CONTROL_OFFSET_SIGNAL_TYPE 98
1108 #define CONTROL_OFFSET_SIGNAL_INDEX 100
1109 #define CONTROL_OFFSET_SIGNAL_OUTPUT 102
1111 #define SIGNAL_SELECTOR_OFFSET_OBJECT_NAME 4
1112 #define SIGNAL_SELECTOR_OFFSET_LOCALIZED_DESCRIPTION 68
1113 #define SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY 70
1114 #define SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY 74
1115 #define SIGNAL_SELECTOR_OFFSET_CONTROL_DOMAIN 78
1116 #define SIGNAL_SELECTOR_OFFSET_SOURCES_OFFSET 80
1117 #define SIGNAL_SELECTOR_OFFSET_NUMBER_OF_SOURCES 82
1118 #define SIGNAL_SELECTOR_OFFSET_CURRENT_SIGNAL_TYPE 84
1119 #define SIGNAL_SELECTOR_OFFSET_CURRENT_SIGNAL_INDEX 86
1120 #define SIGNAL_SELECTOR_OFFSET_CURRENT_SIGNAL_OUTPUT 88
1121 #define SIGNAL_SELECTOR_OFFSET_DEFAULT_SOURCE_TYPE 90
1122 #define SIGNAL_SELECTOR_OFFSET_DEFAULT_SOURCE_INDEX 92
1123 #define SIGNAL_SELECTOR_OFFSET_DEFAULT_SIGNAL_OUTPUT 94
1125 #define MIXER_OFFSET_OBJECT_NAME 4
1126 #define MIXER_OFFSET_LOCALIZED_DESCRIPTION 68
1127 #define MIXER_OFFSET_BLOCK_LATENCY 70
1128 #define MIXER_OFFSET_CONTROL_LATENCY 74
1129 #define MIXER_OFFSET_CONTROL_DOMAIN 78
1130 #define MIXER_OFFSET_CONTROL_VALUE_TYPE 80
1131 #define MIXER_OFFSET_SOURCES_OFFSET 82
1132 #define MIXER_OFFSET_NUMBER_OF_SOURCES 84
1133 #define MIXER_OFFSET_VALUE_OFFSET 86
1135 #define MATRIX_OFFSET_OBJECT_NAME 4
1136 #define MATRIX_OFFSET_LOCALIZED_DESCRIPTION 68
1137 #define MATRIX_OFFSET_BLOCK_LATENCY 70
1138 #define MATRIX_OFFSET_CONTROL_LATENCY 74
1139 #define MATRIX_OFFSET_CONTROL_DOMAIN 78
1140 #define MATRIX_OFFSET_CONTROL_VALUE_TYPE 80
1141 #define MATRIX_OFFSET_CONTROL_TYPE 82
1142 #define MATRIX_OFFSET_WIDTH 90
1143 #define MATRIX_OFFSET_HEIGHT 92
1144 #define MATRIX_OFFSET_VALUES_OFFSET 94
1145 #define MATRIX_OFFSET_NUMBER_OF_VALUES 96
1146 #define MATRIX_OFFSET_NUMBER_OF_SOURCES 98
1147 #define MATRIX_OFFSET_BASE_SOURCE 100
1149 #define MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT 4
1150 #define MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET 6
1152 #define SIGNAL_SPLITTER_OFFSET_OBJECT_NAME 4
1153 #define SIGNAL_SPLITTER_OFFSET_LOCALIZED_DESCRIPTION 68
1154 #define SIGNAL_SPLITTER_OFFSET_BLOCK_LATENCY 70
1155 #define SIGNAL_SPLITTER_OFFSET_CONTROL_LATENCY 74
1156 #define SIGNAL_SPLITTER_OFFSET_CONTROL_DOMAIN 78
1157 #define SIGNAL_SPLITTER_OFFSET_SIGNAL_TYPE 80
1158 #define SIGNAL_SPLITTER_OFFSET_SIGNAL_INDEX 82
1159 #define SIGNAL_SPLITTER_OFFSET_SIGNAL_OUTPUT 84
1160 #define SIGNAL_SPLITTER_OFFSET_NUMBER_OF_OUTPUTS 86
1161 #define SIGNAL_SPLITTER_OFFSET_SPLITTER_MAP_COUNT 88
1162 #define SIGNAL_SPLITTER_OFFSET_SPLITTER_MAP_OFFSET 90
1164 #define SIGNAL_COMBINER_OFFSET_OBJECT_NAME 4
1165 #define SIGNAL_COMBINER_OFFSET_LOCALIZED_DESCRIPTION 68
1166 #define SIGNAL_COMBINER_OFFSET_BLOCK_LATENCY 70
1167 #define SIGNAL_COMBINER_OFFSET_CONTROL_LATENCY 74
1168 #define SIGNAL_COMBINER_OFFSET_CONTROL_DOMAIN 78
1169 #define SIGNAL_COMBINER_OFFSET_COMBINER_MAP_COUNT 80
1170 #define SIGNAL_COMBINER_OFFSET_COMBINER_MAP_OFFSET 82
1171 #define SIGNAL_COMBINER_OFFSET_SOURCES_OFFSET 84
1172 #define SIGNAL_COMBINER_OFFSET_NUMBER_OF_SOURCES 86
1174 #define SIGNAL_DEMULTIPLEXER_OFFSET_OBJECT_NAME 4
1175 #define SIGNAL_DEMULTIPLEXER_OFFSET_LOCALIZED_DESCRIPTION 68
1176 #define SIGNAL_DEMULTIPLEXER_OFFSET_BLOCK_LATENCY 70
1177 #define SIGNAL_DEMULTIPLEXER_OFFSET_CONTROL_LATENCY 74
1178 #define SIGNAL_DEMULTIPLEXER_OFFSET_CONTROL_DOMAIN 78
1179 #define SIGNAL_DEMULTIPLEXER_OFFSET_SIGNAL_TYPE 80
1180 #define SIGNAL_DEMULTIPLEXER_OFFSET_SIGNAL_INDEX 82
1181 #define SIGNAL_DEMULTIPLEXER_OFFSET_SIGNAL_OUTPUT 84
1182 #define SIGNAL_DEMULTIPLEXER_OFFSET_NUMBER_OF_OUTPUTS 86
1183 #define SIGNAL_DEMULTIPLEXER_OFFSET_DEMULTIPLEXER_MAP_COUNT 88
1184 #define SIGNAL_DEMULTIPLEXER_OFFSET_DEMULTIPLEXER_MAP_OFFSET 90
1186 #define SIGNAL_MULTIPLEXER_OFFSET_OBJECT_NAME 4
1187 #define SIGNAL_MULTIPLEXER_OFFSET_LOCALIZED_DESCRIPTION 68
1188 #define SIGNAL_MULTIPLEXER_OFFSET_BLOCK_LATENCY 70
1189 #define SIGNAL_MULTIPLEXER_OFFSET_CONTROL_LATENCY 74
1190 #define SIGNAL_MULTIPLEXER_OFFSET_CONTROL_DOMAIN 78
1191 #define SIGNAL_MULTIPLEXER_OFFSET_MULTIPLEXER_MAP_COUNT 80
1192 #define SIGNAL_MULTIPLEXER_OFFSET_MULTIPLEXER_MAP_OFFSET 82
1193 #define SIGNAL_MULTIPLEXER_OFFSET_SOURCES_OFFSET 84
1194 #define SIGNAL_MULTIPLEXER_OFFSET_NUMBER_OF_SOURCES 86
1196 #define SIGNAL_TRANSCODER_OFFSET_OBJECT_NAME 4
1197 #define SIGNAL_TRANSCODER_OFFSET_LOCALIZED_DESCRIPTION 68
1198 #define SIGNAL_TRANSCODER_OFFSET_BLOCK_LATENCY 70
1199 #define SIGNAL_TRANSCODER_OFFSET_CONTROL_LATENCY 74
1200 #define SIGNAL_TRANSCODER_OFFSET_CONTROL_DOMAIN 78
1201 #define SIGNAL_TRANSCODER_OFFSET_CONTROL_VALUE_TYPE 80
1202 #define SIGNAL_TRANSCODER_OFFSET_VALUES_OFFSET 82
1203 #define SIGNAL_TRANSCODER_OFFSET_NUMBER_OF_VALUES 84
1204 #define SIGNAL_TRANSCODER_OFFSET_SIGNAL_TYPE 86
1205 #define SIGNAL_TRANSCODER_OFFSET_SIGNAL_INDEX 88
1206 #define SIGNAL_TRANSCODER_OFFSET_SIGNAL_OUTPUT 90
1208 #define CLOCK_DOMAIN_OFFSET_OBJECT_NAME 4
1209 #define CLOCK_DOMAIN_OFFSET_LOCALIZED_DESCRIPTION 68
1210 #define CLOCK_DOMAIN_OFFSET_CLOCK_SOURCE_INDEX 70
1211 #define CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_OFFSET 72
1212 #define CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_COUNT 74
1214 #define CONTROL_BLOCK_OFFSET_OBJECT_NAME 4
1215 #define CONTROL_BLOCK_OFFSET_LOCALIZED_DESCRIPTION 68
1216 #define CONTROL_BLOCK_OFFSET_NUMBER_OF_CONTROLS 70
1217 #define CONTROL_BLOCK_OFFSET_BASE_CONTROL 72
1218 #define CONTROL_BLOCK_OFFSET_FINAL_CONTROL_INDEX 74
1221 /* AEM Stream Format Offsets */
1222 /* IEEE 1722.1 draft D21 section 7.3.2 */
1223 #define AEM_OFFSET_SF_SUBTYPE 0
1225 #define AEM_OFFSET_SF_VERSION 0
1228 #define AEM_OFFSET_SF 1
1229 #define AEM_OFFSET_IIDC_FORMAT 5
1230 #define AEM_OFFSET_IIDC_MODE 6
1231 #define AEM_OFFSET_IIDC_RATE 7
1234 #define AEM_OFFSET_FMT 1
1237 #define AEM_OFFSET_FDF_EVT 2
1238 #define AEM_OFFSET_FDF_SFC 2
1239 #define AEM_OFFSET_DBS 3
1240 #define AEM_OFFSET_B 4
1241 #define AEM_OFFSET_NB 4
1244 #define AEM_OFFSET_LABEL_IEC_60958_CNT 5
1245 #define AEM_OFFSET_LABEL_MBLA_CNT 6
1246 #define AEM_OFFSET_LABEL_MIDI_CNT 7
1247 #define AEM_OFFSET_LABEL_SMPTE_CNT 7
1250 #define AEM_OFFSET_VIDEO_MODE 5
1251 #define AEM_OFFSET_COMPRESS_MODE 6
1252 #define AEM_OFFSET_COLOR_SPACE 7
1254 /* AECP Vendor Unique Command Specific Offsets */
1255 #define AECP_VUC_OFFSET_PROTOCOL_ID 22
1257 /* AECP Video Cluster Format Offsets */
1258 /* IEEE 1722.1 draft D21 section 7.3.7 */
1259 #if 0 /* TODO: These are all different in D21 */
1260 #define AEM_OFFSET_MFD_TYPE 3
1261 #define AEM_OFFSET_DIV 4
1262 #define AEM_OFFSET_INTERLACE 4
1263 #define AEM_OFFSET_CHANNELS 4
1264 #define AEM_OFFSET_COLOR_FORMAT 4
1265 #define AEM_OFFSET_BPP 5
1266 #define AEM_OFFSET_ASPECT_X 6
1267 #define AEM_OFFSET_ASPECT_Y 7
1268 #define AEM_OFFSET_FRAME_RATE 8
1269 #define AEM_OFFSET_COMP1 9
1270 #define AEM_OFFSET_COMP2 10
1271 #define AEM_OFFSET_COMP3 10
1272 #define AEM_OFFSET_COMP4 11
1273 #define AEM_OFFSET_SVMF_WIDTH 12
1274 #define AEM_OFFSET_SVMF_HEIGHT 14
1276 #define AEM_OFFSET_CS_EUI64 8
1280 #define AECP_STATUS_CODE_MASK 0xf8
1281 #define AECP_TOKEN_LENGTH_MASK 0x07ff
1282 #define AECP_KEY_PART_MASK 0x78
1283 #define AECP_CONTINUED_MASK 0x80
1284 #define AECP_CD_LENGTH_MASK 0x07ff
1285 #define AECP_COMMAND_TYPE_MASK 0x7fff
1286 #define AECP_KEYCHAIN_ID_MASK 0xe0
1287 #define AECP_KEYTYPE_MASK 0x1c
1288 #define AECP_KEY_COUNT_MASK 0x0fff
1289 #define AECP_KEY_LENGTH_MASK 0x07ff
1290 #define AECP_KEY_NUMBER_MASK 0x04ff
1291 #define AECP_MATRIX_DIRECTION_MASK 0x70
1292 #define AECP_MATRIX_REP_MASK 0x80
1293 #define AECP_MATRIX_VALUE_COUNT_MASK 0x0fff
1294 #define AECP_MSG_TYPE_MASK 0x0f
1295 #define AECP_PERSISTENT_FLAG_MASK 0x00000001
1296 #define AECP_RELEASE_FLAG_MASK 0x80000000
1297 #define AECP_SIGNATURE_ID_MASK 0x0fff
1298 #define AECP_SIGNATURE_INFO_MASK 0x00f0
1299 #define AECP_SIGNATURE_LENGTH_MASK 0x3ff
1300 #define AECP_UNLOCK_FLAG_MASK 0x01
1301 #define AECP_U_FLAG_MASK 0x80
1302 #define AECP_MSRP_MAPPINGS_COUNT_MASK 0x00
1303 #define AECP_AS_CAPABLE_FLAG_MASK 0x01
1304 #define AECP_GPTP_ENABLED_FLAG_MASK 0x02
1305 #define AECP_SRP_ENABLED_FLAG_MASK 0x04
1308 /* AECP Sampling Rate masks */
1309 #define AECP_SAMPLING_RATE_PULL_MASK 0xE0000000
1310 #define AECP_SAMPLING_RATE_BASE_FREQ_MASK 0x1FFFFFFF
1312 /* Stream Flags (7.130) */
1313 #define AECP_STREAM_VLAN_ID_VALID_FLAG_MASK 0x02000000
1314 #define AECP_CONNECTED_FLAG_MASK 0x04000000
1315 #define AECP_MSRP_FAILURE_VALID_FLAG_MASK 0x08000000
1316 #define AECP_DEST_MAC_VALID_FLAG_MASK 0x10000000
1317 #define AECP_MSRP_ACC_LAT_VALID_FLAG_MASK 0x20000000
1318 #define AECP_STREAM_ID_VALID_FLAG_MASK 0x40000000
1319 #define AECP_STREAM_FORMAT_VALID_FLAG_MASK 0x80000000
1321 /* key permission flag masks */
1322 #define AECP_PRIVATE_KEY_READ_FLAG_MASK 0x80000000
1323 #define AECP_PRIVATE_KEY_WRITE_FLAG_MASK 0x40000000
1324 #define AECP_PUBLIC_KEY_WRITE_FLAG_MASK 0x20000000
1325 #define AECP_CONNECTION_FLAG_MASK 0x10000000
1326 #define AECP_CONTROL_ADMIN_FLAG_MASK 0x08000000
1327 #define AECP_MEM_OBJ_ADMIN_FLAG_MASK 0x04000000
1328 #define AECP_MEM_OBJ_SETTINGS_FLAG_MASK 0x02000000
1329 #define AECP_CONTROL_USER_L1_FLAG_MASK 0x00000008
1330 #define AECP_CONTROL_USER_L2_FLAG_MASK 0x00000004
1331 #define AECP_CONTROL_USER_L3_FLAG_MASK 0x00000002
1332 #define AECP_CONTROL_USER_L4_FLAG_MASK 0x00000001
1334 /* 7.133-139 counters_valid flag masks */
1335 #define AECP_COUNTERS_VALID_LINK_UP 0x00000001
1336 #define AECP_COUNTERS_VALID_LINK_DOWN 0x00000002
1337 #define AECP_COUNTERS_VALID_PACKETS_TX 0x00000004
1338 #define AECP_COUNTERS_VALID_PACKETS_RX 0x00000008
1339 #define AECP_COUNTERS_VALID_RX_CRC_ERROR 0x00000010
1340 #define AECP_COUNTERS_VALID_GPTP_GM_CHANGED 0x00000020
1342 #define AECP_COUNTERS_VALID_CLOCK_DOMAIN_LOCKED 0x00000001
1343 #define AECP_COUNTERS_VALID_CLOCK_DOMAIN_UNLOCKED 0x00000002
1345 #define AECP_COUNTERS_VALID_MEDIA_LOCKED 0x00000001
1346 #define AECP_COUNTERS_VALID_MEDIA_UNLOCKED 0x00000002
1347 #define AECP_COUNTERS_VALID_STREAM_RESET 0x00000004
1348 #define AECP_COUNTERS_VALID_SEQ_NUM_MISMATCH 0x00000008
1349 #define AECP_COUNTERS_VALID_MEDIA_RESET 0x00000010
1350 #define AECP_COUNTERS_VALID_TIMESTAMP_UNCERTAIN 0x00000020
1351 #define AECP_COUNTERS_VALID_TIMESTAMP_VALID 0x00000040
1352 #define AECP_COUNTERS_VALID_TIMESTAMP_NOT_VALID 0x00000080
1353 #define AECP_COUNTERS_VALID_UNSUPPORTED_FORMAT 0x00000100
1354 #define AECP_COUNTERS_VALID_LATE_TIMESTAMP 0x00000200
1355 #define AECP_COUNTERS_VALID_EARLY_TIMESTAMP 0x00000400
1356 #define AECP_COUNTERS_VALID_STREAM_PACKETS_RX 0x00000800
1357 #define AECP_COUNTERS_VALID_STREAM_PACKETS_TX 0x00001000
1359 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_8 0x01000000
1360 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_7 0x02000000
1361 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_6 0x04000000
1362 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_5 0x08000000
1363 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_4 0x10000000
1364 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_3 0x20000000
1365 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_2 0x40000000
1366 #define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_1 0x80000000
1368 #define AEM_CLOCK_SYNC_SOURCE_FLAG_MASK 0x0001
1369 #define AEM_ASYNC_SAMPLE_RATE_CONV_FLAG_MASK 0x0002
1370 #define AEM_SYNC_SAMPLE_RATE_CONV_FLAG_MASK 0x0004
1372 #define AEM_BASE_FREQUENCY_MASK 0x1fffffff
1373 #define AEM_CAPTIVE_FLAG_MASK 0x0002
1374 #define AEM_CLASS_A_FLAG_MASK 0x0002
1375 #define AEM_CLASS_B_FLAG_MASK 0x0004
1377 #define AEM_MASK_B 0x80
1378 #define AEM_MASK_BPP 0x3F
1379 #define AEM_MASK_CHANNELS 0x3C
1380 #define AEM_MASK_COLOR_FORMAT 0x03C0
1381 #define AEM_MASK_COMP1 0x0F80
1382 #define AEM_MASK_COMP2 0x7C
1383 #define AEM_MASK_COMP3 0x03E0
1384 #define AEM_MASK_COMP4 0x1F
1385 #define AEM_MASK_DIV 0x80
1386 #define AEM_MASK_FDF_EVT 0xF8
1387 #define AEM_MASK_FDF_SFC 0x07
1388 #define AEM_MASK_FMT 0x3F
1389 #define AEM_MASK_INTERLACE 0x40
1390 #define AEM_MASK_LABEL_MIDI_CNT 0xF0
1391 #define AEM_MASK_LABEL_SMPTE_CNT 0x0F
1392 #define AEM_MASK_NB 0x40
1393 #define AEM_MASK_OUI24 0xFFFFFF00
1394 #define AEM_MASK_SF 0x80
1395 #define AEM_MASK_SF_SUBTYPE 0x7F
1396 #define AEM_MASK_SF_VERSION 0x80
1397 #define AEM_PULL_FIELD_MASK 0xe0
1400 #define MFD_TYPE_VIDEO 0x00
1401 #define MFD_TYPE_TRANSPORT_STRM 0x01
1402 #define MFD_TYPE_MIDI 0x02
1403 #define MFD_TYPE_TIME_CODE 0x03
1404 #define MFD_TYPE_CONTROL_PROTO 0x04
1406 #define COLOR_FORMAT_MONO 0x0
1407 #define COLOR_FORMAT_RGB 0x1
1408 #define COLOR_FORMAT_RGBA 0x2
1409 #define COLOR_FORMAT_BGRA 0x3
1410 #define COLOR_FORMAT_CMYK 0x4
1411 #define COLOR_FORMAT_HSL 0x5
1412 #define COLOR_FORMAT_YUV 0x6
1413 #define COLOR_FORMAT_YCBCR 0x7
1414 #define COLOR_FORMAT_YPBPR 0x08
1416 #define OUI24_STANDARD_MEDIA_FORMAT 0x90e0f0
1418 #define MEMORY_OBJECT_TYPE_FIRMWARE_IMAGE 0x0000
1419 #define MEMORY_OBJECT_TYPE_VENDOR_SPECIFIC 0x0001
1420 #define MEMORY_OBJECT_TYPE_CRASH_DUMP 0x0002
1421 #define MEMORY_OBJECT_TYPE_LOG_OBJECT 0x0003
1422 #define MEMORY_OBJECT_TYPE_AUTOSTART_SETTINGS 0x0004
1423 #define MEMORY_OBJECT_TYPE_SNAPSHOT_SETTINGS 0x0005
1425 #define KEY_TYPE_NONE 0
1426 #define KEY_TYPE_SHA256 1
1427 #define KEY_TYPE_AES128 2
1428 #define KEY_TYPE_AES256 3
1429 #define KEY_TYPE_RSA1024_PUBLIC 4
1430 #define KEY_TYPE_RSA1024_PRIVATE 5
1431 #define KEY_TYPE_X509 6
1433 static const value_string aecp_key_type_type_vals
[] = {
1434 {KEY_TYPE_NONE
, "NO_KEY"},
1435 {KEY_TYPE_SHA256
, "SHA256"},
1436 {KEY_TYPE_AES128
, "AES128"},
1437 {KEY_TYPE_AES256
, "AES256"},
1438 {KEY_TYPE_RSA1024_PUBLIC
, "RSA1024_PUBLIC"},
1439 {KEY_TYPE_RSA1024_PRIVATE
, "RSA1024_PRIVATE"},
1440 {KEY_TYPE_X509
, "RSA1024_X509"},
1444 static const value_string aem_memory_object_type_vals
[] = {
1445 {MEMORY_OBJECT_TYPE_FIRMWARE_IMAGE
, "FIRMWARE_IMAGE"},
1446 {MEMORY_OBJECT_TYPE_VENDOR_SPECIFIC
, "VENDOR_SPECIFIC"},
1447 {MEMORY_OBJECT_TYPE_CRASH_DUMP
, "CRASH_DUMP"},
1448 {MEMORY_OBJECT_TYPE_LOG_OBJECT
, "LOG_OBJECT"},
1449 {MEMORY_OBJECT_TYPE_AUTOSTART_SETTINGS
, "AUTOSTART_SETTINGS"},
1450 {MEMORY_OBJECT_TYPE_SNAPSHOT_SETTINGS
, "SNAPSHOT_SETTINGS"},
1455 static const value_string aem_stream_format_subtype_vals
[] = {
1456 {IEC_61883_IIDC_SUBTYPE
, "IEC_61883_IIDC_SUBTYPE"},
1457 {MMA_SUBTYPE
, "MMA_SUBTYPE"},
1458 {AVTP_AUDIO_SUBTYPE
, "AVTP_AUDIO_SUBTYPE"},
1459 {AVTP_VIDEO_SUBTYPE
, "AVTP_VIDEO_SUBTYPE"},
1460 {EXPERIMENTAL_SUBTYPE
, "EXPERIMENTAL_SUBTYPE"},
1464 static const value_string aem_color_format_type_vals
[] = {
1465 {COLOR_FORMAT_MONO
, "Monochrome"},
1466 {COLOR_FORMAT_RGB
, "RGB"},
1467 {COLOR_FORMAT_RGBA
, "RGBA"},
1468 {COLOR_FORMAT_BGRA
, "BGRA"},
1469 {COLOR_FORMAT_CMYK
, "CMYK"},
1470 {COLOR_FORMAT_HSL
, "HSL"},
1471 {COLOR_FORMAT_YUV
, "YUV"},
1472 {COLOR_FORMAT_YCBCR
, "YCbCr"},
1473 {COLOR_FORMAT_YPBPR
, "YPbPr"},
1477 static const value_string aem_mfd_type_vals
[] = {
1478 {MFD_TYPE_VIDEO
, "VIDEO"},
1479 {MFD_TYPE_TRANSPORT_STRM
, "TRANSPORT_STREAM"},
1480 {MFD_TYPE_MIDI
, "MIDI"},
1481 {MFD_TYPE_TIME_CODE
, "TIME_CODE"},
1482 {MFD_TYPE_CONTROL_PROTO
, "CONTROL_PROTOCOL"},
1487 static const value_string aem_clock_source_type_vals
[] = {
1488 {AEM_CLOCK_INTERNAL
, "INTERNAL"},
1489 {AEM_CLOCK_EXTERNAL
, "EXTERNAL"},
1490 {AEM_CLOCK_INPUT_STREAM
, "INPUT STREAM"},
1491 {AEM_CLOCK_MEDIA_CLOCK_STREAM
, "MEDIA CLOCK STREAM"},
1495 /* frequency multipliers from table 7.6 pull field values */
1496 static const value_string aem_frequency_multiplier_type_vals
[] = {
1505 static const value_string aem_control_value_type_vals
[] = {
1506 {AEM_CONTROL_LINEAR_INT8
,"CONTROL_LINEAR_INT8"},
1507 {AEM_CONTROL_LINEAR_UINT8
,"CONTROL_LINEAR_UINT8"},
1508 {AEM_CONTROL_LINEAR_INT16
,"CONTROL_LINEAR_INT16"},
1509 {AEM_CONTROL_LINEAR_UINT16
,"CONTROL_LINEAR_UINT16"},
1510 {AEM_CONTROL_LINEAR_INT32
,"CONTROL_LINEAR_INT32"},
1511 {AEM_CONTROL_LINEAR_UINT32
,"CONTROL_LINEAR_UINT32"},
1512 {AEM_CONTROL_LINEAR_INT64
,"CONTROL_LINEAR_INT64"},
1513 {AEM_CONTROL_LINEAR_UINT64
,"CONTROL_LINEAR_UINT64"},
1514 {AEM_CONTROL_LINEAR_FLOAT
,"CONTROL_LINEAR_FLOAT"},
1515 {AEM_CONTROL_LINEAR_DOUBLE
,"CONTROL_LINEAR_DOUBLE"},
1516 {AEM_CONTROL_SELECTOR_INT8
,"CONTROL_SELECTOR_INT8"},
1517 {AEM_CONTROL_SELECTOR_UINT8
,"CONTROL_SELECTOR_UINT8"},
1518 {AEM_CONTROL_SELECTOR_INT16
,"CONTROL_SELECTOR_INT16"},
1519 {AEM_CONTROL_SELECTOR_UINT16
,"CONTROL_SELECTOR_UINT16"},
1520 {AEM_CONTROL_SELECTOR_INT32
,"CONTROL_SELECTOR_INT32"},
1521 {AEM_CONTROL_SELECTOR_UINT32
,"CONTROL_SELECTOR_UINT32"},
1522 {AEM_CONTROL_SELECTOR_INT64
,"CONTROL_SELECTOR_INT64"},
1523 {AEM_CONTROL_SELECTOR_UINT64
,"CONTROL_SELECTOR_UINT64"},
1524 {AEM_CONTROL_SELECTOR_FLOAT
,"CONTROL_SELECTOR_FLOAT"},
1525 {AEM_CONTROL_SELECTOR_DOUBLE
,"CONTROL_SELECTOR_DOUBLE"},
1526 {AEM_CONTROL_UTF8
,"CONTROL_UTF8"},
1527 {AEM_CONTROL_BODE_PLOT
,"CONTROL_BODE_PLOT"},
1528 {AEM_CONTROL_ARRAY_INT8
,"CONTROL_ARRAY_INT8"},
1529 {AEM_CONTROL_ARRAY_UINT8
,"CONTROL_ARRAY_UINT8"},
1530 {AEM_CONTROL_ARRAY_INT16
,"CONTROL_ARRAY_INT16"},
1531 {AEM_CONTROL_ARRAY_UINT16
,"CONTROL_ARRAY_UINT16"},
1532 {AEM_CONTROL_ARRAY_INT32
,"CONTROL_ARRAY_INT32"},
1533 {AEM_CONTROL_ARRAY_UINT32
,"CONTROL_ARRAY_UINT32"},
1534 {AEM_CONTROL_ARRAY_INT64
,"CONTROL_ARRAY_INT64"},
1535 {AEM_CONTROL_ARRAY_UINT64
,"CONTROL_ARRAY_UINT64"},
1536 {AEM_CONTROL_ARRAY_FLOAT
,"CONTROL_ARRAY_FLOAT"},
1537 {AEM_CONTROL_ARRAY_DOUBLE
,"CONTROL_ARRAY_DOUBLE"},
1538 {AEM_CONTROL_VENDOR
,"CONTROL_CONTROL_VENDOR"},
1542 static const value_string aem_jack_type_vals
[] = {
1543 {AEM_JACKTYPE_SPEAKER
,"SPEAKER" },
1544 {AEM_JACKTYPE_HEADPHONE
,"HEADPHONE" },
1545 {AEM_JACKTYPE_ANALOG_MICROPHONE
,"ANALOG_MICROPHONE" },
1546 {AEM_JACKTYPE_SPDIF
,"SPDIF" },
1547 {AEM_JACKTYPE_ADAT
,"ADAT" },
1548 {AEM_JACKTYPE_TDIF
,"TDIF" },
1549 {AEM_JACKTYPE_MADI
,"MADI" },
1550 {AEM_JACKTYPE_UNBALANCED_ANALOG
,"UNBALANCED_ANALOG" },
1551 {AEM_JACKTYPE_BALANCED_ANALOG
,"BALANCED_ANALOG" },
1552 {AEM_JACKTYPE_DIGITAL
,"DIGITAL" },
1553 {AEM_JACKTYPE_MIDI
,"MIDI" },
1554 {AEM_JACKTYPE_AES_EBU
,"AES_EBU" },
1555 {AEM_JACKTYPE_COMPOSITE_VIDEO
,"COMPOSITE_VIDEO" },
1556 {AEM_JACKTYPE_S_VHS_VIDEO
,"S_VHS_VIDEO" },
1557 {AEM_JACKTYPE_COMPONENT_VIDEO
,"COMPONENT_VIDEO" },
1558 {AEM_JACKTYPE_DVI
,"DVI" },
1559 {AEM_JACKTYPE_HDMI
,"HDMI" },
1560 {AEM_JACKTYPE_UDI
,"UDI" },
1561 {AEM_JACKTYPE_DISPLAYPORT
,"DISPLAYPORT" },
1562 {AEM_JACKTYPE_ANTENNA
,"ANTENNA" },
1563 {AEM_JACKTYPE_ANALOG_TUNER
,"ANALOG_TUNER" },
1564 {AEM_JACKTYPE_ETHERNET
,"ETHERNET" },
1565 {AEM_JACKTYPE_WIFI
,"WIFI" },
1566 {AEM_JACKTYPE_USB
,"USB" },
1567 {AEM_JACKTYPE_PCI
,"PCI" },
1568 {AEM_JACKTYPE_PCI_E
,"PDI_E" },
1569 {AEM_JACKTYPE_SCSI
,"SCSI" },
1570 {AEM_JACKTYPE_ATA
,"ATA" },
1571 {AEM_JACKTYPE_IMAGER
,"IMAGER" },
1572 {AEM_JACKTYPE_IR
,"IR" },
1573 {AEM_JACKTYPE_THUNDERBOLT
,"THUNDERBOLT" },
1574 {AEM_JACKTYPE_SATA
,"SATA" },
1575 {AEM_JACKTYPE_SMPTE_LTC
,"SMPTE_LTC" },
1576 {AEM_JACKTYPE_DIGITAL_MICROPHONE
,"DIGITAL_MICROPHONE" },
1580 /* value_string uses a 32 bit integer id, control uses 64.
1581 * TODO - make custom formatter for hf_aem_control_type
1582 static const value_string aem_control_type_vals [] = {
1583 {AEM_CONTROL_ENABLE , "ENABLE"},
1584 {AEM_CONTROL_DELAY , "DELAY"},
1585 {AEM_CONTROL_POW_LINE_FREQ , "POW_LINE_FREQ"},
1586 {AEM_CONTROL_ROLLPITCHYAW_ABS , "ROLLPITCHYAW_ABS"},
1587 {AEM_CONTROL_ROLLPITCHYAW_REL , "ROLLPITCHYAW_REL"},
1588 {AEM_CONTROL_SURGESWAYHEAVE_ABS , "SURGESWAYHEAVE_ABS"},
1589 {AEM_CONTROL_SURGESWAYHEAVE_REL , "SURGESWAYHEAVE_REL"},
1590 {AEM_CONTROL_IDENTIFY , "IDENTIFY"},
1591 {AEM_CONTROL_POWER_STATUS , "POWER_STATUS"},
1592 {AEM_CONTROL_FAN_STATUS , "FAN_STATUS"},
1593 {AEN_CONTROL_TEMPERATURE , "TEMPERATURE"},
1594 {AEM_CONTROL_TEMPERATURE_SENSOR , "TEMPERATURE_SENSOR"},
1595 {AEM_CONTROL_ALTITUDE , "ALTITUDE"},
1596 {AEM_CONTROL_HUMIDITY , "HUMIDITY"},
1597 {AEM_CONTROL_MUTE , "MUTE"},
1598 {AEM_CONTROL_VOLUME , "VOLUME"},
1599 {AEM_CONTROL_INVERT , "INVERT"},
1600 {AEM_CONTROL_PANPOT , "PANPOT"},
1601 {AEM_CONTROL_ISOLATE , "ISOLATE"},
1602 {AEM_CONTROL_POSITION , "POSITION"},
1603 {AEM_CONTROL_PHANTOM , "PHANTOM"},
1604 {AEM_CONTROL_AUDIO_SCALE , "AUDIO_SCALE"},
1605 {AEM_CONTROL_AUDIO_METERS , "AUDIO_METERS"},
1606 {AEM_CONTROL_AUDIO_SPECTRUM , "AUDIO_SPECTRUM"},
1607 {AEM_CONTROL_FILTER_RESPONSE , "FILTER_RESPONSE"},
1608 {AEM_CONTROL_SCANNING_MODE , "SCANNING_MODE"},
1609 {AEM_CONTROL_AUTO_EXP_MODE , "AUTO_EXP_MODE"},
1610 {AEM_CONTROL_AUTO_EXP_PRIO , "AUTO_EXP_PRIO"},
1611 {AEM_CONTROL_EXP_TIME_ABS , "EXP_TIME_ABS"},
1612 {AEM_CONTROL_EXP_TIME_REL , "EXP_TIME_REL"},
1613 {AEM_CONTROL_FOCUS_ABS , "FOCUS_ABS"},
1614 {AEM_CONTROL_FOCUS_REL , "FOCUS_REL"},
1615 {AEM_CONTROL_FOCUS_AUTO , "FOCUS_AUTO"},
1616 {AEM_CONTROL_IRIS_ABS , "IRIS_ABS"},
1617 {AEM_CONTROL_IRIS_REL , "IRIS_REL"},
1618 {AEM_CONTROL_ZOOM_ABS , "ZOOM_ABS"},
1619 {AEM_CONTROL_ZOOM_REL , "ZOOM_REL"},
1620 {AEM_CONTROL_PRIVACY , "PRIVACY"},
1621 {AEM_CONTROL_BACKLIGHT , "BACKLIGHT"},
1622 {AEM_CONTROL_BRIGHTNESS , "BRIGHTNESS"},
1623 {AEM_CONTROL_CONTRAST , "CONTRAST"},
1624 {AEM_CONTROL_GAIN , "GAIN"},
1625 {AEM_CONTROL_HUE , "HUE"},
1626 {AEM_CONTROL_SATURATION , "SATURATION"},
1627 {AEM_CONTROL_SHARPNESS , "SHARPNESS"},
1628 {AEM_CONTROL_GAMMA , "GAMMA"},
1629 {AEM_CONTROL_WHITE_BAL_TEMP , "WHITE_BAL_TEMP"},
1630 {AEM_CONTROL_WHITE_BAL_TENP_AUTO , "WHITE_BAL_TEMP_AUTO"},
1631 {AEM_CONTROL_WHITE_BAL_COMP , "WHITE_BAL_COMP"},
1632 {AEM_CONTROL_WHITE_BAL_COMP_AUTO , "WHITE_BAL_COMP_AUTO"},
1633 {AEM_CONTROL_DIGITAL_ZOOM , "DIGITAL_ZOOM"},
1639 static const value_string aecp_address_type_vals
[] = {
1640 {AECP_ADDRESS_MAC
, "MAC"},
1641 {AECP_ADDRESS_IPV4
, "IPV4"},
1642 {AECP_ADDRESS_IPV6
, "IPV6"},
1647 static const value_string aecp_keychain_id_type_vals
[] = {
1648 {AECP_KEYCHAIN_NONE
, "NONE"},
1649 {AECP_KEYCHAIN_MANUFACTURER
, "MANUFACTURER"},
1650 {AECP_KEYCHAIN_PRODUCT
, "PRODUCT"},
1651 {AECP_KEYCHAIN_ENTITY
, "ENTITY"},
1652 {AECP_KEYCHAIN_USER
, "USER"},
1656 static const value_string aecp_direction_type_vals
[] = {
1657 {AECP_DIRECTION_HORIZONTAL
, "HORIZONTAL"},
1658 {AECP_DIRECTION_VERTICAL
, "VERTICAL"},
1662 static const value_string aem_descriptor_type_vals
[] = {
1663 {AEM_DESCRIPTOR_ENTITY
, "ENTITY"},
1664 {AEM_DESCRIPTOR_CONFIGURATION
, "CONFIGURATION"},
1665 {AEM_DESCRIPTOR_AUDIO_UNIT
, "AUDIO_UNIT"},
1666 {AEM_DESCRIPTOR_VIDEO_UNIT
, "VIDEO_UNIT"},
1667 {AEM_DESCRIPTOR_SENSOR_UNIT
, "SENSOR_UNIT"},
1668 {AEM_DESCRIPTOR_STREAM_INPUT
, "STREAM_INPUT"},
1669 {AEM_DESCRIPTOR_STREAM_OUTPUT
, "STREAM_OUTPUT"},
1670 {AEM_DESCRIPTOR_JACK_INPUT
, "JACK_INPUT"},
1671 {AEM_DESCRIPTOR_JACK_OUTPUT
, "JACK_OUTPUT"},
1672 {AEM_DESCRIPTOR_STREAM_PORT_INPUT
, "STREAM_PORT_INPUT"},
1673 {AEM_DESCRIPTOR_STREAM_PORT_OUTPUT
, "STREAM_PORT_OUTPUT"},
1674 {AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT
, "EXTERNAL_PORT_INPUT"},
1675 {AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT
, "EXTERNAL_PORT_OUTPUT"},
1676 {AEM_DESCRIPTOR_INTERNAL_PORT_INPUT
, "INTERNAL_PORT_INPUT"},
1677 {AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT
, "INTERNAL_PORT_OUTPUT"},
1678 {AEM_DESCRIPTOR_AVB_INTERFACE
, "AVB_INTERFACE"},
1679 {AEM_DESCRIPTOR_CLOCK_SOURCE
, "CLOCK_SOURCE"},
1680 {AEM_DESCRIPTOR_AUDIO_CLUSTER
, "AUDIO_CLUSTER"},
1681 {AEM_DESCRIPTOR_VIDEO_CLUSTER
, "VIDEO_CLUSTER"},
1682 {AEM_DESCRIPTOR_SENSOR_CLUSTER
, "SENSOR_CLUSTER"},
1683 {AEM_DESCRIPTOR_AUDIO_MAP
, "AUDIO_MAP"},
1684 {AEM_DESCRIPTOR_VIDEO_MAP
, "VIDEO_MAP"},
1685 {AEM_DESCRIPTOR_SENSOR_MAP
, "SENSOR_MAP"},
1686 {AEM_DESCRIPTOR_CONTROL
, "CONTROL"},
1687 {AEM_DESCRIPTOR_SIGNAL_SELECTOR
, "SIGNAL_SELECTOR"},
1688 {AEM_DESCRIPTOR_MIXER
, "MIXER"},
1689 {AEM_DESCRIPTOR_MATRIX
, "MATRIX"},
1690 {AEM_DESCRIPTOR_LOCALE
, "LOCALE"},
1691 {AEM_DESCRIPTOR_STRINGS
, "STRINGS"},
1692 {AEM_DESCRIPTOR_MATRIX_SIGNAL
, "MATRIX_SIGNAL"},
1693 {AEM_DESCRIPTOR_MEMORY_OBJECT
, "MEMORY_OBJECT"},
1694 {AEM_DESCRIPTOR_SIGNAL_SPLITTER
, "SIGNAL_SPLITTER"},
1695 {AEM_DESCRIPTOR_SIGNAL_COMBINER
, "SIGNAL_COMBINER"},
1696 {AEM_DESCRIPTOR_SIGNAL_DEMULTIPLEXER
, "SIGNAL_DEMULTIPLEXER"},
1697 {AEM_DESCRIPTOR_SIGNAL_MULTIPLEXER
, "SIGNAL_MULTIPLEXER"},
1698 {AEM_DESCRIPTOR_SIGNAL_TRANSCODER
, "SIGNAL_TRANSCODER"},
1699 {AEM_DESCRIPTOR_CLOCK_DOMAIN
, "CLOCK_DOMAIN"},
1700 {AEM_DESCRIPTOR_CONTROL_BLOCK
, "CONTROL_BLOCK"},
1704 static const value_string aem_status_type_vals
[] = {
1705 {AEM_STATUS_SUCCESS
, "SUCCESS"},
1706 {AEM_STATUS_NOT_IMPLEMENTED
, "NOT_IMPLEMENTED"},
1707 {AEM_STATUS_NO_SUCH_DESCRIPTOR
, "NO_SUCH_DESCRIPTOR"},
1708 {AEM_STATUS_ENTITY_LOCKED
, "ENTITY_LOCKED"},
1709 {AEM_STATUS_ENTITY_ACQUIRED
, "ENTITY_ACQUIRED"},
1710 {AEM_STATUS_NOT_AUTHENTICATED
, "NOT_AUTHENTICATED"},
1711 {AEM_STATUS_AUTHENTICATION_DISABLED
, "AUTHENTICATION_DISABLED"},
1712 {AEM_STATUS_BAD_ARGUMENTS
, "BAD_ARGUMENTS"},
1713 {AEM_STATUS_NO_RESOURCES
, "NO_RESOURCES"},
1714 {AEM_STATUS_IN_PROGRESS
, "IN_PROGRESS"},
1715 {AEM_STATUS_ENTITY_MISBEHAVING
, "ENTITY_MISBEHAVING"},
1716 {AEM_STATUS_NOT_SUPPORTED
, "NOT_SUPPORTED"},
1717 {AEM_STATUS_STREAM_IS_RUNNING
, "STREAM_IS_RUNNING"},
1721 static const value_string aecp_message_type_vals
[] = {
1722 {AECP_AEM_COMMAND_MESSAGE
, "AEM_COMMAND"},
1723 {AECP_AEM_RESPONSE_MESSAGE
, "AEM_RESPONSE"},
1724 {AECP_ADDRESS_ACCESS_COMMAND_MESSAGE
, "ADDRESS_ACCESS_COMMAND"},
1725 {AECP_ADDRESS_ACCESS_RESPONSE_MESSAGE
, "ADDRESS_ACCESS_RESPONSE"},
1726 {AECP_AVC_COMMAND_MESSAGE
, "AVC_COMMAND"},
1727 {AECP_AVC_RESPONSE_MESSAGE
, "AVC_RESPONSE"},
1728 {AECP_VENDOR_UNIQUE_COMMAND_MESSAGE
, "VENDOR_UNIQUE_COMMAND"},
1729 {AECP_VENDOR_UNIQUE_RESPONSE_MESSAGE
, "VENDOR_UNIQUE_RESPONSE"},
1730 {AECP_EXTENDED_COMMAND_MESSAGE
, "EXTENDED_COMMAND"},
1731 {AECP_EXTENDED_RESPONSE_MESSAGE
, "EXTENDED_RESPONSE"},
1735 static const value_string aecp_command_type_vals
[] = {
1736 {AECP_COMMAND_ACQUIRE_ENTITY
, "ACQUIRE_ENTITY"},
1737 {AECP_COMMAND_LOCK_ENTITY
, "LOCK_ENTITY"},
1738 {AECP_COMMAND_ENTITY_AVAILABLE
, "ENTITY_AVAILABLE"},
1739 {AECP_COMMAND_CONTROLLER_AVAILABLE
, "CONTROLLER_AVAILABLE"},
1740 {AECP_COMMAND_READ_DESCRIPTOR
, "READ_DESCRIPTOR"},
1741 {AECP_COMMAND_WRITE_DESCRIPTOR
, "WRITE_DESCRIPTOR"},
1742 {AECP_COMMAND_SET_CONFIGURATION
, "SET_CONFIGURATION"},
1743 {AECP_COMMAND_GET_CONFIGURATION
, "GET_CONFIGURATION"},
1744 {AECP_COMMAND_SET_STREAM_FORMAT
, "SET_STREAM_FORMAT"},
1745 {AECP_COMMAND_GET_STREAM_FORMAT
, "GET_STREAM_FORMAT"},
1746 {AECP_COMMAND_SET_VIDEO_FORMAT
, "SET_VIDEO_FORMAT"},
1747 {AECP_COMMAND_GET_VIDEO_FORMAT
, "GET_VIDEO_FORMAT"},
1748 {AECP_COMMAND_SET_SENSOR_FORMAT
, "SET_SENSOR_FORMAT"},
1749 {AECP_COMMAND_GET_SENSOR_FORMAT
, "GET_SENSOR_FORMAT"},
1750 {AECP_COMMAND_SET_STREAM_INFO
, "SET_STREAM_INFO"},
1751 {AECP_COMMAND_GET_STREAM_INFO
, "GET_STREAM_INFO"},
1752 {AECP_COMMAND_SET_NAME
, "SET_NAME"},
1753 {AECP_COMMAND_GET_NAME
, "GET_NAME"},
1754 {AECP_COMMAND_SET_ASSOCIATION_ID
, "SET_ASSOCIATION_ID"},
1755 {AECP_COMMAND_GET_ASSOCIATION_ID
, "GET_ASSOCIATION_ID"},
1756 {AECP_COMMAND_SET_SAMPLING_RATE
, "SET_SAMPLING_RATE"},
1757 {AECP_COMMAND_GET_SAMPLING_RATE
, "GET_SAMPLING_RATE"},
1758 {AECP_COMMAND_SET_CLOCK_SOURCE
, "SET_CLOCK_SOURCE"},
1759 {AECP_COMMAND_GET_CLOCK_SOURCE
, "GET_CLOCK_SOURCE"},
1760 {AECP_COMMAND_SET_CONTROL_VALUE
, "SET_CONTROL_VALUE"},
1761 {AECP_COMMAND_GET_CONTROL_VALUE
, "GET_CONTROL_VALUE"},
1762 {AECP_COMMAND_INCREMENT_CONTROL
, "INCREMENT_CONTROL"},
1763 {AECP_COMMAND_DECREMENT_CONTROL
, "DECREMENT_CONTROL"},
1764 {AECP_COMMAND_SET_SIGNAL_SELECTOR
, "SET_SIGNAL_SELECTOR"},
1765 {AECP_COMMAND_GET_SIGNAL_SELECTOR
, "GET_SIGNAL_SELECTOR"},
1766 {AECP_COMMAND_SET_MIXER
, "SET_MIXER"},
1767 {AECP_COMMAND_GET_MIXER
, "GET_MIXER"},
1768 {AECP_COMMAND_SET_MATRIX
, "SET_MATRIX"},
1769 {AECP_COMMAND_GET_MATRIX
, "GET_MATRIX"},
1770 {AECP_COMMAND_START_STREAMING
, "START_STREAMING"},
1771 {AECP_COMMAND_STOP_STREAMING
, "STOP_STREAMING"},
1772 {AECP_COMMAND_REGISTER_UNSOL_NOTIFICATION
, "REGISTER_UNSOL_NOTIFICATION"},
1773 {AECP_COMMAND_DEREGISTER_UNSOL_NOTIFICATION
, "DEREGISTER_UNSOL_NOTIFICATION"},
1774 {AECP_COMMAND_IDENTIFY_NOTIFICATION
, "IDENTIFY_NOTIFICATION"},
1775 {AECP_COMMAND_GET_AVB_INFO
, "GET_AVB_INFO"},
1776 {AECP_COMMAND_GET_AS_PATH
, "GET_AS_PATH"},
1777 {AECP_COMMAND_GET_COUNTERS
, "GET_COUNTERS"},
1778 {AECP_COMMAND_REBOOT
, "REBOOT"},
1779 {AECP_COMMAND_GET_AUDIO_MAP
, "GET_AUDIO_MAP"},
1780 {AECP_COMMAND_ADD_AUDIO_MAPPINGS
, "ADD_AUDIO_MAPPINGS"},
1781 {AECP_COMMAND_REMOVE_AUDIO_MAPPINGS
, "REMOVE_AUDIO_MAPPINGS"},
1782 {AECP_COMMAND_GET_VIDEO_MAP
, "GET_VIDEO_MAP"},
1783 {AECP_COMMAND_ADD_VIDEO_MAPPINGS
, "ADD_VIDEO_MAPPINGS"},
1784 {AECP_COMMAND_REMOVE_VIDEO_MAPPINGS
, "REMOVE_VIDEO_MAPPINGS"},
1785 {AECP_COMMAND_GET_SENSOR_MAP
, "GET_SENSOR_MAP"},
1786 {AECP_COMMAND_ADD_SENSOR_MAPPINGS
, "ADD_SENSOR_MAPPINGS"},
1787 {AECP_COMMAND_REMOVE_SENSOR_MAPPINGS
, "REMOVE_SENSOR_MAPPINGS"},
1788 {AECP_COMMAND_START_OPERATION
, "START_OPERATION"},
1789 {AECP_COMMAND_ABORT_OPERATION
, "ABORT_OPERATION"},
1790 {AECP_COMMAND_OPERATION_STATUS
, "OPERATION_STATUS"},
1791 {AECP_COMMAND_AUTH_ADD_KEY
, "AUTH_ADD_KEY"},
1792 {AECP_COMMAND_AUTH_DELETE_KEY
, "AUTH_DELETE_KEY"},
1793 {AECP_COMMAND_AUTH_GET_KEY_LIST
, "AUTH_GET_KEY_LIST"},
1794 {AECP_COMMAND_AUTH_GET_KEY
, "AUTH_GET_KEY"},
1795 {AECP_COMMAND_AUTH_ADD_KEY_TO_CHAIN
, "AUTH_ADD_KEY_TO_CHAIN"},
1796 {AECP_COMMAND_AUTH_DELETE_KEY_FROM_CHAIN
, "AUTH_DELETE_KEY_FROM_CHAIN"},
1797 {AECP_COMMAND_AUTH_GET_KEYCHAIN_LIST
, "AUTH_GET_KEYCHAIN_LIST"},
1798 {AECP_COMMAND_AUTH_GET_IDENTITY
, "AUTH_GET_IDENTITY"},
1799 {AECP_COMMAND_AUTH_ADD_TOKEN
, "AUTH_ADD_TOKEN"},
1800 {AECP_COMMAND_AUTH_DELETE_TOKEN
, "AUTH_DELETE_TOKEN"},
1801 {AECP_COMMAND_AUTHENTICATE
, "AUTHENTICATE"},
1802 {AECP_COMMAND_DEAUTHENTICATE
, "DEAUTHENTICATE"},
1803 {AECP_COMMAND_ENABLE_TRANSPORT_SECURITY
, "ENABLE_TRANSPORT_SECURITY"},
1804 {AECP_COMMAND_DISABLE_TRANSPORT_SECURITY
, "DISABLE_TRANSPORT_SECURITY"},
1805 {AECP_COMMAND_ENABLE_STREAM_ENCRYPTION
, "ENABLE_STREAM_ENCRYPTION"},
1806 {AECP_COMMAND_DISABLE_STREAM_ENCRYPTION
, "DISABLE_STREAM_ENCRYPTION"},
1807 {AECP_COMMAND_SET_STREAM_BACKUP
, "SET_STREAM_BACKUP"},
1808 {AECP_COMMAND_GET_STREAM_BACKUP
, "GET_STREAM_BACKUP"},
1813 static const value_string adp_message_type_vals
[] = {
1814 {ADP_ENTITY_AVAILABLE_MESSAGE
, "ENTITY_AVAILABLE"},
1815 {ADP_ENTITY_DEPARTING_MESSAGE
, "ENTITY_DEPARTING"},
1816 {ADP_ENTITY_DISCOVER_MESSAGE
, "ENTITY_DISCOVER"},
1820 static const value_string acmp_message_type_vals
[] = {
1821 {ACMP_CONNECT_TX_COMMAND
, "CONNECT_TX_COMMAND"},
1822 {ACMP_CONNECT_TX_RESPONSE
, "CONNECT_TX_RESPONSE"},
1823 {ACMP_DISCONNECT_TX_COMMAND
, "DISCONNECT_TX_COMMAND"},
1824 {ACMP_DISCONNECT_TX_RESPONSE
, "DISCONNECT_TX_RESPONSE"},
1825 {ACMP_GET_TX_STATE_COMMAND
, "GET_TX_STATE_COMMAND"},
1826 {ACMP_GET_TX_STATE_RESPONSE
, "GET_TX_STATE_RESPONSE"},
1827 {ACMP_CONNECT_RX_COMMAND
, "CONNECT_RX_COMMAND"},
1828 {ACMP_CONNECT_RX_RESPONSE
, "CONNECT_RX_RESPONSE"},
1829 {ACMP_DISCONNECT_RX_COMMAND
, "DISCONNECT_RX_COMMAND"},
1830 {ACMP_DISCONNECT_RX_RESPONSE
, "DISCONNECT_RX_RESPONSE"},
1831 {ACMP_GET_RX_STATE_COMMAND
, "GET_RX_STATE_COMMAND"},
1832 {ACMP_GET_RX_STATE_RESPONSE
, "GET_RX_STATE_RESPONSE"},
1833 {ACMP_GET_TX_CONNECTION_COMMAND
, "GET_TX_CONNECTION_COMMAND"},
1834 {ACMP_GET_TX_CONNECTION_RESPONSE
, "GET_TX_CONNECTION_RESPONSE"},
1838 static const value_string acmp_status_field_vals
[] = {
1839 {ACMP_STATUS_SUCCESS
, "SUCCESS"},
1840 {ACMP_STATUS_LISTENER_UNKNOWN_ID
, "LISTENER_UNKNOWN_ID"},
1841 {ACMP_STATUS_TALKER_UNKNOWN_ID
, "TALKER_UNKNOWN_ID"},
1842 {ACMP_STATUS_TALKER_DEST_MAC_FAIL
, "TALKER_DEST_MAC_FAIL"},
1843 {ACMP_STATUS_TALKER_NO_STREAM_INDEX
, "TALKER_NO_STREAM_INDEX"},
1844 {ACMP_STATUS_TALKER_NO_BANDWIDTH
, "TALKER_NO_BANDWIDTH"},
1845 {ACMP_STATUS_TALKER_EXCLUSIVE
, "TALKER_EXCLUSIVE"},
1846 {ACMP_STATUS_LISTENER_TALKER_TIMEOUT
, "LISTENER_TALKER_TIMEOUT"},
1847 {ACMP_STATUS_LISTENER_EXCLUSIVE
, "LISTENER_EXCLUSIVE"},
1848 {ACMP_STATUS_STATE_UNAVAILABLE
, "STATE_UNAVAILABLE"},
1849 {ACMP_STATUS_NOT_CONNECTED
, "NOT_CONNECTED"},
1850 {ACMP_STATUS_NO_SUCH_CONNECTION
, "NO_SUCH_CONNECTION"},
1851 {ACMP_STATUS_COULD_NOT_SEND_MESSAGE
, "COULD_NOT_SEND_MESSAGE"},
1852 {ACMP_STATUS_DEFAULT_SET_DIFFERENT
, "DEFAULT_SET_DIFFERENT"},
1853 {ACMP_STATUS_NOT_SUPPORTED
, "NOT_SUPPORTED"},
1857 static const value_string aecp_sampling_rate_pull_field_vals
[] = {
1858 {0, "Multiply by 1.0"},
1859 {1, "Multiply by 1/1.001"},
1860 {2, "Multiply by 1.001"},
1861 {3, "Multiply by 24/25"},
1862 {4, "Multiply by 25/24"},
1867 /**********************************************************/
1868 /* Initialize the protocol and registered fields */
1869 /**********************************************************/
1870 static int proto_17221
;
1872 /* AVDECC Discovery Protocol Data Unit (ADPDU) */
1873 static int hf_adp_message_type
;
1874 static int hf_adp_valid_time
;
1875 static int hf_adp_cd_length
;
1876 static int hf_adp_entity_id
;
1877 static int hf_adp_entity_model_id
;
1878 static int hf_adp_entity_cap
;
1879 static int hf_adp_talker_stream_srcs
;
1880 static int hf_adp_talker_cap
;
1881 static int hf_adp_listener_stream_sinks
;
1882 static int hf_adp_listener_cap
;
1883 static int hf_adp_controller_cap
;
1884 static int hf_adp_avail_index
;
1885 static int hf_adp_gptp_gm_id
;
1886 /* static int hf_adp_def_aud_format; */
1887 /* static int hf_adp_def_vid_format; */
1888 static int hf_adp_assoc_id
;
1889 /* static int hf_adp_entity_type; */
1891 /* Entity Capabilities Flags */
1892 static int hf_adp_entity_cap_efu_mode
;
1893 static int hf_adp_entity_cap_address_access_supported
;
1894 static int hf_adp_entity_cap_gateway_entity
;
1895 static int hf_adp_entity_cap_aem_supported
;
1896 static int hf_adp_entity_cap_legacy_avc
;
1897 static int hf_adp_entity_cap_assoc_id_support
;
1898 static int hf_adp_entity_cap_assoc_id_valid
;
1899 static int hf_adp_entity_cap_vendor_unique
;
1900 static int hf_adp_entity_cap_class_a_supported
;
1901 static int hf_adp_entity_cap_class_b_supported
;
1902 static int hf_adp_entity_cap_gptp_supported
;
1904 /* Talker Capabilities Flags */
1905 static int hf_adp_talk_cap_implement
;
1906 static int hf_adp_talk_cap_other_src
;
1907 static int hf_adp_talk_cap_control_src
;
1908 static int hf_adp_talk_cap_media_clk_src
;
1909 static int hf_adp_talk_cap_smpte_src
;
1910 static int hf_adp_talk_cap_midi_src
;
1911 static int hf_adp_talk_cap_audio_src
;
1912 static int hf_adp_talk_cap_video_src
;
1914 /* Listener Capabilities Flags */
1915 static int hf_adp_list_cap_implement
;
1916 static int hf_adp_list_cap_other_sink
;
1917 static int hf_adp_list_cap_control_sink
;
1918 static int hf_adp_list_cap_media_clk_sink
;
1919 static int hf_adp_list_cap_smpte_sink
;
1920 static int hf_adp_list_cap_midi_sink
;
1921 static int hf_adp_list_cap_audio_sink
;
1922 static int hf_adp_list_cap_video_sink
;
1924 /* Controller Capabilities Flags */
1925 static int hf_adp_cont_cap_implement
;
1926 static int hf_adp_cont_cap_layer3_proxy
;
1929 /* Default Audio Format */
1930 static int hf_adp_def_aud_sample_rates
;
1931 static int hf_adp_def_aud_max_chan
;
1932 static int hf_adp_def_aud_saf_flag
;
1933 static int hf_adp_def_aud_float_flag
;
1934 static int hf_adp_def_aud_chan_formats
;
1936 /* Default Audio Sample Rates */
1937 static int hf_adp_samp_rate_44k1
;
1938 static int hf_adp_samp_rate_48k
;
1939 static int hf_adp_samp_rate_88k2
;
1940 static int hf_adp_samp_rate_96k
;
1941 static int hf_adp_samp_rate_176k4
;
1942 static int hf_adp_samp_rate_192k
;
1944 /* Audio Channel Formats */
1945 static int hf_adp_chan_format_mono
;
1946 static int hf_adp_chan_format_2ch
;
1947 static int hf_adp_chan_format_3ch
;
1948 static int hf_adp_chan_format_4ch
;
1949 static int hf_adp_chan_format_5ch
;
1950 static int hf_adp_chan_format_6ch
;
1951 static int hf_adp_chan_format_7ch
;
1952 static int hf_adp_chan_format_8ch
;
1953 static int hf_adp_chan_format_10ch
;
1954 static int hf_adp_chan_format_12ch
;
1955 static int hf_adp_chan_format_14ch
;
1956 static int hf_adp_chan_format_16ch
;
1957 static int hf_adp_chan_format_18ch
;
1958 static int hf_adp_chan_format_20ch
;
1959 static int hf_adp_chan_format_22ch
;
1960 static int hf_adp_chan_format_24ch
;
1963 /* AECP Vendor Unique Protocol Dissector table */
1964 static dissector_table_t vendor_unique_protocol_dissector_table
;
1966 /* ***************************************************************** */
1967 /* AVDECC Enumeration and Control Protocol Data Unit (AECPDU) */
1968 /* ***************************************************************** */
1970 static int hf_aecp_aa_count
;
1971 static int hf_aecp_aa_tlv_mode
;
1972 static int hf_aecp_aa_tlv_length
;
1973 static int hf_aecp_aa_tlv_address
;
1975 /* static int hf_aecp_address_type; */
1976 static int hf_aecp_association_id
;
1977 static int hf_aecp_as_path_count
;
1978 static int hf_aecp_as_path_sequences
;
1979 static int ett_aecp_get_as_path_sequences
;
1980 static int hf_aecp_get_as_info_clock_id
;
1981 static int hf_aecp_auth_token
;
1982 static int hf_aecp_avb_interface_gptp_gm_changed_valid
;
1983 static int hf_aecp_avb_interface_gptp_gm_changed
;
1984 static int hf_aecp_avb_interface_link_up_valid
;
1985 static int hf_aecp_avb_interface_link_up
;
1986 static int hf_aecp_avb_interface_link_down_valid
;
1987 static int hf_aecp_avb_interface_link_down
;
1988 static int hf_aecp_avb_interface_packets_tx_valid
;
1989 static int hf_aecp_avb_interface_packets_tx
;
1990 static int hf_aecp_avb_interface_packets_rx_valid
;
1991 static int hf_aecp_avb_interface_packets_rx
;
1992 static int hf_aecp_avb_interface_rx_crc_error_valid
;
1993 static int hf_aecp_avb_interface_rx_crc_error
;
1994 static int hf_aecp_cd_length
;
1995 static int hf_aecp_clock_domain_locked_valid
;
1996 static int hf_aecp_clock_domain_locked
;
1997 static int hf_aecp_clock_domain_unlocked_valid
;
1998 static int hf_aecp_clock_domain_unlocked
;
1999 static int hf_aecp_clock_source_id
;
2000 static int hf_aecp_command_type
;
2001 static int hf_aecp_configuration
;
2002 static int hf_aecp_configuration_index
;
2003 static int hf_aecp_connected_flag
;
2004 /* static int hf_aecp_continued_flag; */
2005 /* static int hf_aecp_control_admin_flag; */
2006 /* static int hf_aecp_control_user_l1; */
2007 /* static int hf_aecp_control_user_l2; */
2008 /* static int hf_aecp_control_user_l3; */
2009 /* static int hf_aecp_control_user_l4; */
2010 static int hf_aecp_controller_guid
;
2011 /* static int hf_aecp_count; */
2012 static int hf_aecp_descriptor_index
;
2013 static int hf_aecp_descriptor_type
;
2014 /* static int hf_aecp_descriptors; */
2015 static int hf_aecp_dest_mac_valid_flag
;
2016 static int hf_aecp_entity_specific1
;
2017 static int hf_aecp_entity_specific1_valid
;
2018 static int hf_aecp_entity_specific2
;
2019 static int hf_aecp_entity_specific2_valid
;
2020 static int hf_aecp_entity_specific3
;
2021 static int hf_aecp_entity_specific3_valid
;
2022 static int hf_aecp_entity_specific4
;
2023 static int hf_aecp_entity_specific4_valid
;
2024 static int hf_aecp_entity_specific5
;
2025 static int hf_aecp_entity_specific5_valid
;
2026 static int hf_aecp_entity_specific6
;
2027 static int hf_aecp_entity_specific6_valid
;
2028 static int hf_aecp_entity_specific7
;
2029 static int hf_aecp_entity_specific7_valid
;
2030 static int hf_aecp_entity_specific8
;
2031 static int hf_aecp_entity_specific8_valid
;
2032 static int hf_aecp_flags_32
;
2033 /* static int hf_aecp_ipv4_address; */
2034 /* static int hf_aecp_ipv6_address; */
2035 static int hf_aecp_key
;
2036 static int hf_aecp_key_eui
;
2037 static int hf_aecp_key_length
;
2038 /* static int hf_aecp_key_number; */
2039 /* static int hf_aecp_key_part; */
2040 static int hf_aecp_keychain_id
;
2041 static int hf_aecp_keychain_id_small
;
2042 static int hf_aecp_keychain_list_index
;
2043 static int hf_aecp_keychain_number_of_keys
;
2044 static int hf_aecp_keychain_number_of_lists
;
2045 static int hf_aecp_key_signature
;
2046 static int hf_aecp_key_type
;
2047 static int hf_aecp_locked_guid
;
2048 static int hf_aecp_mac_address
;
2049 static int hf_aecp_map_index
;
2050 /* static int hf_aecp_matrix_affected_item_count; */
2051 static int hf_aecp_matrix_column
;
2052 static int hf_aecp_matrix_direction
;
2053 static int hf_aecp_matrix_item_offset
;
2054 static int hf_aecp_matrix_region_height
;
2055 static int hf_aecp_matrix_region_width
;
2056 static int hf_aecp_matrix_rep
;
2057 static int hf_aecp_matrix_row
;
2058 static int hf_aecp_matrix_value_count
;
2059 /* static int hf_aecp_media_format; */
2060 /* static int hf_aecp_mem_obj_admin_flag; */
2061 /* static int hf_aecp_mem_obj_settings_flag; */
2062 static int hf_aecp_message_type
;
2063 static int hf_aecp_msrp_acc_lat_valid_flag
;
2064 static int hf_aecp_msrp_accumulated_latency
;
2065 static int hf_aecp_msrp_failure_bridge_id
;
2066 static int hf_aecp_msrp_failure_code
;
2067 static int hf_aecp_msrp_failure_valid_flag
;
2068 /* static int hf_aecp_stream_vlan_id; */
2069 static int hf_aecp_name
;
2070 static int hf_aecp_name_index
;
2071 static int hf_aecp_number_of_maps
;
2072 static int hf_aecp_operation_id
;
2073 static int hf_aecp_operation_type
;
2074 static int hf_aecp_owner_guid
;
2075 static int hf_aecp_percent_complete
;
2076 static int hf_aecp_persistent_flag
;
2077 /* static int hf_aecp_private_key_read_flag; */
2078 /* static int hf_aecp_private_key_write_flag; */
2079 /* static int hf_aecp_public_key_write_flag; */
2080 /* static int hf_aecp_query_id; */
2081 /* static int hf_aecp_query_limit; */
2082 /* static int hf_aecp_query_period; */
2083 /* static int hf_aecp_query_type; */
2084 static int hf_aecp_release_flag
;
2085 static int hf_aecp_sampling_rate_base_frequency
;
2086 static int hf_aecp_sampling_rate_pull
;
2087 static int hf_aecp_sequence_id
;
2088 static int hf_aecp_signal_index
;
2089 static int hf_aecp_signal_type
;
2090 static int hf_aecp_signal_output
;
2091 static int hf_aecp_stream_format
;
2092 static int hf_aecp_stream_format_valid_flag
;
2093 static int hf_aecp_stream_id_valid_flag
;
2094 static int hf_aecp_stream_input_early_timestamp_valid
;
2095 static int hf_aecp_stream_input_early_timestamp
;
2096 static int hf_aecp_stream_input_late_timestamp_valid
;
2097 static int hf_aecp_stream_input_late_timestamp
;
2098 static int hf_aecp_stream_input_media_locked_valid
;
2099 static int hf_aecp_stream_input_media_locked
;
2100 static int hf_aecp_stream_input_media_unlocked_valid
;
2101 static int hf_aecp_stream_input_media_unlocked
;
2102 static int hf_aecp_stream_input_media_reset_valid
;
2103 static int hf_aecp_stream_input_media_reset
;
2104 static int hf_aecp_stream_input_packets_rx_valid
;
2105 static int hf_aecp_stream_input_packets_rx
;
2106 static int hf_aecp_stream_input_packets_tx_valid
;
2107 static int hf_aecp_stream_input_packets_tx
;
2108 static int hf_aecp_stream_input_seq_num_mismatch_valid
;
2109 static int hf_aecp_stream_input_seq_num_mismatch
;
2110 static int hf_aecp_stream_input_stream_reset_valid
;
2111 static int hf_aecp_stream_input_stream_reset
;
2112 static int hf_aecp_stream_input_timestamp_uncertain_valid
;
2113 static int hf_aecp_stream_input_timestamp_uncertain
;
2114 static int hf_aecp_stream_input_timestamp_valid_valid
;
2115 static int hf_aecp_stream_input_timestamp_valid
;
2116 static int hf_aecp_stream_input_timestamp_not_valid_valid
;
2117 static int hf_aecp_stream_input_timestamp_not_valid
;
2118 static int hf_aecp_stream_input_unsupported_format_valid
;
2119 static int hf_aecp_stream_input_unsupported_format
;
2120 static int hf_aecp_stream_vlan_id_valid_flag
;
2121 static int hf_aecp_target_guid
;
2122 static int hf_aecp_token_length
;
2123 static int hf_aecp_u_flag
;
2124 static int hf_aecp_unlock_flag
;
2125 /* static int hf_aecp_values; */
2126 /* static int hf_aecp_values_count; */
2127 static int hf_aecp_vendor_unique_protocol_id
;
2128 static int hf_aecp_video_format
;
2129 static int hf_aecp_status_code
;
2130 static int hf_aecp_backup_talker_entity_id_0
;
2131 static int hf_aecp_backup_talker_entity_id_1
;
2132 static int hf_aecp_backup_talker_entity_id_2
;
2133 static int hf_aecp_backup_talker_unique_id_0
;
2134 static int hf_aecp_backup_talker_unique_id_1
;
2135 static int hf_aecp_backup_talker_unique_id_2
;
2136 static int hf_aecp_backedup_talker_entity_id
;
2137 static int hf_aecp_backedup_talker_unique_id
;
2138 static int hf_aecp_avb_info_ptp_grandmaster_id
;
2139 static int hf_aecp_avb_info_propegation_delay
;
2140 static int hf_aecp_avb_info_gptp_domain_number
;
2141 /* static int hf_aecp_avb_info_flags; */
2142 static int hf_aecp_as_capable_flag
;
2143 static int hf_aecp_gptp_enabled_flag
;
2144 static int hf_aecp_srp_enabled_flag
;
2145 static int hf_aecp_avb_info_msrp_mappings_count
;
2146 static int hf_aecp_avb_info_msrp_mappings
;
2147 static int hf_aecp_avb_info_msrp_mapping_traffic_class
;
2148 static int hf_aecp_avb_info_msrp_mapping_priority
;
2150 static int hf_aecp_get_avb_info_msrp_vlan_id
;
2152 /* ***************************************************************** */
2153 /* AVDECC Entity Model (AEM) */
2154 /* ***************************************************************** */
2155 static int hf_aem_am824_label
;
2156 /* static int hf_aem_aspect_x; */
2157 /* static int hf_aem_aspect_y; */
2158 /* static int hf_aem_audio_channels; */
2159 static int hf_aem_avb_interface_id
;
2160 static int hf_aem_buffer_length
;
2161 static int hf_aem_b_flag
;
2162 static int hf_aem_backedup_talker_guid
;
2163 static int hf_aem_backedup_talker_unique
;
2164 static int hf_aem_backup_talker_guid_0
;
2165 static int hf_aem_backup_talker_guid_1
;
2166 static int hf_aem_backup_talker_guid_2
;
2167 static int hf_aem_backup_talker_unique_0
;
2168 static int hf_aem_backup_talker_unique_1
;
2169 static int hf_aem_backup_talker_unique_2
;
2170 static int hf_aem_base_audio_map
;
2171 static int hf_aem_base_cluster
;
2172 static int hf_aem_base_control
;
2173 static int hf_aem_base_control_block
;
2174 /* static int hf_aem_base_destination; */
2175 static int hf_aem_base_external_input_port
;
2176 static int hf_aem_base_external_output_port
;
2177 static int hf_aem_base_frequency
;
2178 static int hf_aem_base_internal_input_port
;
2179 static int hf_aem_base_internal_output_port
;
2180 static int hf_aem_base_matrix
;
2181 static int hf_aem_base_mixer
;
2182 static int hf_aem_base_signal_selector
;
2183 /* static int hf_aem_base_source; */
2184 static int hf_aem_number_splitters
;
2185 static int hf_aem_base_splitter
;
2186 static int hf_aem_number_combiners
;
2187 static int hf_aem_base_combiner
;
2188 static int hf_aem_number_demultiplexers
;
2189 static int hf_aem_base_demultiplexer
;
2190 static int hf_aem_number_multiplexers
;
2191 static int hf_aem_base_multiplexer
;
2192 static int hf_aem_number_transcoders
;
2193 static int hf_aem_base_transcoder
;
2194 static int hf_aem_base_stream_input_port
;
2195 static int hf_aem_base_stream_output_port
;
2196 static int hf_aem_base_strings
;
2197 static int hf_aem_binary_blob
;
2198 static int hf_aem_blob_size
;
2199 static int hf_aem_block_latency
;
2200 static int hf_aem_reset_time
;
2201 /* static int hf_aem_bpp; */
2202 static int hf_aem_channel_count
;
2203 /* static int hf_aem_channels; */
2204 static int hf_aem_clock_source_flags
;
2205 static int hf_aem_clock_source_id
;
2206 static int hf_aem_clock_domain_id
;
2207 static int hf_aem_clock_sources_offset
;
2208 static int hf_aem_clock_source_index
;
2209 static int hf_aem_clock_sources_count
;
2210 static int hf_aem_clock_sources
;
2211 static int hf_aem_clock_sources_array
;
2212 static int hf_aem_clock_source_location_id
;
2213 static int hf_aem_clock_source_location_type
;
2214 static int hf_aem_clock_source_name
;
2215 static int hf_aem_clock_source_name_string
;
2216 static int hf_aem_clock_source_type
;
2217 /* static int hf_aem_cluster_name; */
2218 /* static int hf_aem_cluster_name_string; */
2219 /* static int hf_aem_color_format; */
2220 static int hf_aem_color_space
;
2221 /* static int hf_aem_comp1; */
2222 /* static int hf_aem_comp2; */
2223 /* static int hf_aem_comp3; */
2224 /* static int hf_aem_comp4; */
2225 static int hf_aem_compress_mode
;
2226 static int hf_aem_configuration_name
;
2227 static int hf_aem_configuration_name_string
;
2228 static int hf_aem_configurations_count
;
2229 static int hf_aem_control_domain
;
2230 static int hf_aem_control_latency
;
2231 /* static int hf_aem_control_location_id; */
2232 /* static int hf_aem_control_location_type; */
2233 static int hf_aem_control_type
;
2234 static int hf_aem_control_value_type
;
2235 static int hf_aem_count
;
2236 /* static int hf_aem_cs_eui64; */
2237 static int hf_aem_ctrl_double
;
2238 static int hf_aem_ctrl_float
;
2239 static int hf_aem_ctrl_int16
;
2240 static int hf_aem_ctrl_int32
;
2241 static int hf_aem_ctrl_int64
;
2242 static int hf_aem_ctrl_int8
;
2243 static int hf_aem_ctrl_uint16
;
2244 static int hf_aem_ctrl_uint32
;
2245 static int hf_aem_ctrl_uint64
;
2246 static int hf_aem_ctrl_uint8
;
2247 static int hf_aem_ctrl_vals
;
2248 static int hf_aem_current_configuration
;
2249 static int hf_aem_current_sample_rate
;
2250 /* static int hf_aem_current_signal_id; */
2251 /* static int hf_aem_current_signal_type; */
2252 static int hf_aem_dbs
;
2253 /* static int hf_aem_default_signal_id; */
2254 /* static int hf_aem_default_signal_type; */
2255 static int hf_aem_descriptor_counts_count
;
2256 static int hf_aem_descriptor_counts_offset
;
2257 /* static int hf_aem_div; */
2258 static int hf_aem_entity_id
;
2259 static int hf_aem_entity_model_id
;
2260 static int hf_aem_entity_name
;
2261 static int hf_aem_fdf_evt
;
2262 static int hf_aem_fdf_sfc
;
2263 static int hf_aem_firmware_version
;
2264 static int hf_aem_flags_async_sample_rate_conv
;
2265 static int hf_aem_flags_captive
;
2266 static int hf_aem_flags_class_a
;
2267 static int hf_aem_flags_class_b
;
2268 static int hf_aem_flags_clock_sync_source
;
2269 static int hf_aem_flags_sync_sample_rate_conv
;
2270 static int hf_aem_fmt
;
2271 /* static int hf_aem_formats_count; */
2272 static int hf_aem_formats_offset
;
2273 /* static int hf_aem_frame_rate; */
2274 static int hf_aem_frequency
;
2275 static int hf_aem_group_name
;
2276 static int hf_aem_guid
;
2277 /* static int hf_aem_height; */
2278 static int hf_aem_iidc_format
;
2279 static int hf_aem_iidc_mode
;
2280 static int hf_aem_iidc_rate
;
2281 static int hf_aem_interface_name
;
2282 static int hf_aem_interface_name_string
;
2283 /* static int hf_aem_interlace; */
2284 /* static int hf_aem_internal_id; */
2285 static int hf_aem_jack_flags
;
2286 static int hf_aem_jack_id
;
2287 static int hf_aem_jack_name
;
2288 static int hf_aem_jack_name_string
;
2289 static int hf_aem_jack_type
;
2290 static int hf_aem_label_iec_60958_cnt
;
2291 static int hf_aem_label_mbla_cnt
;
2292 static int hf_aem_label_midi_cnt
;
2293 static int hf_aem_label_smpte_cnt
;
2294 static int hf_aem_length
;
2295 static int hf_aem_locale_identifier
;
2296 static int hf_aem_mapping_cluster_offset
;
2297 static int hf_aem_mapping_cluster_channel
;
2298 static int hf_aem_mapping_stream_channel
;
2299 static int hf_aem_mapping_stream_index
;
2300 static int hf_aem_mappings
;
2301 static int hf_aem_mappings_offset
;
2302 static int hf_aem_memory_object_type
;
2303 /* static int hf_aem_mf_height; */
2304 /* static int hf_aem_mf_width; */
2305 /* static int hf_aem_mfd_type; */
2306 static int hf_aem_model_name_string
;
2307 static int hf_aem_avb_interface_flags
;
2308 static int hf_aem_avb_clock_identity
;
2309 static int hf_aem_avb_priority1
;
2310 static int hf_aem_avb_clock_class
;
2311 static int hf_aem_avb_offset_scaled_log_variance
;
2312 static int hf_aem_avb_clock_accuracy
;
2313 static int hf_aem_avb_priority2
;
2314 static int hf_aem_avb_domain_number
;
2315 static int hf_aem_avb_log_sync_interval
;
2316 /* static int hf_aem_avb_propagation_delay; */
2317 static int hf_aem_nb_flag
;
2318 static int hf_aem_number_audio_maps
;
2319 /* static int hf_aem_number_destinations; */
2320 static int hf_aem_number_matrices
;
2321 static int hf_aem_number_mixers
;
2322 static int hf_aem_number_of_clusters
;
2323 static int hf_aem_number_of_controls
;
2324 static int hf_aem_number_control_blocks
;
2325 static int hf_aem_number_of_external_input_ports
;
2326 static int hf_aem_number_of_external_output_ports
;
2327 static int hf_aem_number_of_formats
;
2328 static int hf_aem_number_of_internal_input_ports
;
2329 static int hf_aem_number_of_internal_output_ports
;
2330 static int hf_aem_number_of_mappings
;
2331 /* static int hf_aem_number_of_sources; */
2332 static int hf_aem_number_of_stream_input_ports
;
2333 static int hf_aem_number_of_stream_output_ports
;
2334 static int hf_aem_number_of_strings
;
2335 static int hf_aem_number_of_values
;
2336 static int hf_aem_number_signal_selectors
;
2337 static int hf_aem_object_name
;
2338 static int hf_aem_localized_description
;
2339 /* static int hf_aem_oui24; */
2340 static int hf_aem_path_latency
;
2341 static int hf_aem_port_flags
;
2342 static int hf_aem_pull_field
;
2343 static int hf_aem_sample_rates
;
2344 static int hf_aem_sample_rates_count
;
2345 static int hf_aem_sample_rates_offset
;
2346 static int hf_aem_serial_number
;
2347 static int hf_aem_sf
;
2348 static int hf_aem_sf_version
;
2349 static int hf_aem_sf_subtype
;
2350 static int hf_aem_signal_index
;
2351 static int hf_aem_signal_output
;
2352 static int hf_aem_signal_type
;
2353 static int hf_aem_signals_count
;
2354 static int hf_aem_signals_offset
;
2355 static int hf_aem_sources
;
2356 /* static int hf_aem_sources_offset; */
2357 static int hf_aem_start_address
;
2358 /* static int hf_aem_stream_channels; */
2359 static int hf_aem_stream_flags
;
2360 static int hf_aem_stream_format
;
2361 static int hf_aem_stream_formats
;
2362 /* static int hf_aem_stream_id; */
2363 static int hf_aem_stream_name
;
2364 static int hf_aem_stream_name_string
;
2365 static int hf_aem_string
;
2366 static int hf_aem_string_ref
;
2367 static int hf_aem_target_descriptor_id
;
2368 static int hf_aem_target_descriptor_type
;
2369 static int hf_aem_unit
;
2370 static int hf_aem_unknown_descriptor
;
2371 /* static int hf_aem_value_offset; */
2372 static int hf_aem_values_offset
;
2373 static int hf_aem_vendor_name_string
;
2374 static int hf_aem_video_mode
;
2375 /* static int hf_aem_width; */
2377 /****************************************************************** */
2378 /* AVDECC Connection Management Protocol Data Unit (ACMPDU) */
2379 /* **************************************************************** */
2380 static int hf_acmp_message_type
;
2381 static int hf_acmp_status_field
;
2382 static int hf_acmp_cd_length
;
2383 static int hf_acmp_stream_id
;
2384 static int hf_acmp_controller_guid
;
2385 static int hf_acmp_talker_guid
;
2386 static int hf_acmp_listener_guid
;
2387 static int hf_acmp_talker_unique_id
;
2388 static int hf_acmp_listener_unique_id
;
2389 static int hf_acmp_stream_dest_mac
;
2390 static int hf_acmp_connection_count
;
2391 static int hf_acmp_sequence_id
;
2392 static int hf_acmp_flags
;
2393 static int hf_acmp_vlan_id
;
2395 /* ACMP Flags (8.2.1.17) */
2396 static int hf_acmp_flags_class_b
;
2397 static int hf_acmp_flags_fast_connect
;
2398 static int hf_acmp_flags_saved_state
;
2399 static int hf_acmp_flags_streaming_wait
;
2400 static int hf_acmp_flags_supports_encrypted
;
2401 static int hf_acmp_flags_encrypted_pdu
;
2402 static int hf_acmp_flags_talker_failed
;
2404 /* Initialize the subtree pointers */
2405 static int ett_17221
;
2407 static int ett_adp_ent_cap
;
2408 static int ett_adp_talk_cap
;
2409 static int ett_adp_list_cap
;
2410 static int ett_adp_cont_cap
;
2411 /* static int ett_adp_aud_format; */
2412 static int ett_adp_samp_rates
;
2413 static int ett_adp_chan_format
;
2415 static int ett_acmp_flags
;
2417 static int ett_aem_descriptor
;
2418 static int ett_aem_desc_counts
;
2419 static int ett_aem_sample_rates
;
2420 static int ett_aem_stream_flags
;
2421 static int ett_aem_clock_sources
;
2422 static int ett_aem_stream_formats
;
2423 static int ett_aem_jack_flags
;
2424 static int ett_aem_port_flags
;
2425 static int ett_aecp_get_avb_info_msrp_mappings
;
2426 static int ett_aem_clock_source_flags
;
2427 static int ett_aem_mappings
;
2428 static int ett_aem_ctrl_vals
;
2429 static int ett_aem_sources
;
2430 /* static int ett_aem_media_format; */
2431 static int ett_aem_stream_format
;
2433 static int ett_aecp_descriptors
;
2434 static int ett_aecp_flags_32
;
2441 /* convenience function */
2442 static inline ctrl_ref_vals
2443 get_ctrl_ref_vals(uint16_t ctrl_val_type
)
2447 switch(ctrl_val_type
) {
2448 case AEM_CONTROL_LINEAR_INT8
:
2449 case AEM_CONTROL_SELECTOR_INT8
:
2450 case AEM_CONTROL_ARRAY_INT8
:
2451 ret
.hf
= hf_aem_ctrl_int8
;
2454 case AEM_CONTROL_LINEAR_UINT8
:
2455 case AEM_CONTROL_SELECTOR_UINT8
:
2456 case AEM_CONTROL_ARRAY_UINT8
:
2457 ret
.hf
= hf_aem_ctrl_uint8
;
2460 case AEM_CONTROL_LINEAR_INT16
:
2461 case AEM_CONTROL_SELECTOR_INT16
:
2462 case AEM_CONTROL_ARRAY_INT16
:
2463 ret
.hf
= hf_aem_ctrl_int16
;
2466 case AEM_CONTROL_LINEAR_UINT16
:
2467 case AEM_CONTROL_SELECTOR_UINT16
:
2468 case AEM_CONTROL_ARRAY_UINT16
:
2469 ret
.hf
= hf_aem_ctrl_uint16
;
2472 case AEM_CONTROL_LINEAR_INT32
:
2473 case AEM_CONTROL_SELECTOR_INT32
:
2474 case AEM_CONTROL_ARRAY_INT32
:
2475 ret
.hf
= hf_aem_ctrl_int32
;
2478 case AEM_CONTROL_LINEAR_UINT32
:
2479 case AEM_CONTROL_SELECTOR_UINT32
:
2480 case AEM_CONTROL_ARRAY_UINT32
:
2481 ret
.hf
= hf_aem_ctrl_uint32
;
2484 case AEM_CONTROL_LINEAR_FLOAT
:
2485 case AEM_CONTROL_SELECTOR_FLOAT
:
2486 case AEM_CONTROL_ARRAY_FLOAT
:
2487 ret
.hf
= hf_aem_ctrl_float
;
2490 case AEM_CONTROL_LINEAR_INT64
:
2491 case AEM_CONTROL_SELECTOR_INT64
:
2492 case AEM_CONTROL_ARRAY_INT64
:
2493 ret
.hf
= hf_aem_ctrl_int64
;
2496 case AEM_CONTROL_LINEAR_UINT64
:
2497 case AEM_CONTROL_SELECTOR_UINT64
:
2498 case AEM_CONTROL_ARRAY_UINT64
:
2499 ret
.hf
= hf_aem_ctrl_uint64
;
2502 case AEM_CONTROL_LINEAR_DOUBLE
:
2503 case AEM_CONTROL_SELECTOR_DOUBLE
:
2504 case AEM_CONTROL_ARRAY_DOUBLE
:
2505 ret
.hf
= hf_aem_ctrl_double
;
2508 case AEM_CONTROL_BODE_PLOT
:
2521 dissect_17221_stream_format(tvbuff_t
*tvb
, proto_tree
*tree
)
2523 proto_item
*stream_tree
;
2524 proto_item
*stream_ti
;
2532 stream_ti
= proto_tree_add_item(tree
, hf_aem_stream_format
, tvb
,
2534 stream_tree
= proto_item_add_subtree(stream_ti
, ett_aem_stream_format
);
2537 version
= tvb_get_uint8(tvb
, 0) & AEM_MASK_SF_VERSION
;
2539 /* add the version to the tree */
2540 proto_tree_add_item(stream_tree
, hf_aem_sf_version
, tvb
,
2541 AEM_OFFSET_SF_VERSION
, 1, ENC_BIG_ENDIAN
);
2543 if (version
== 0) { /* stream format version 0 */
2545 subtype
= tvb_get_uint8(tvb
, AEM_OFFSET_SF_SUBTYPE
) & AEM_MASK_SF_SUBTYPE
;
2547 proto_tree_add_item(stream_tree
, hf_aem_sf_subtype
, tvb
,
2548 AEM_OFFSET_SF_SUBTYPE
, 1, ENC_BIG_ENDIAN
);
2551 case IEC_61883_IIDC_SUBTYPE
:
2553 sf
= tvb_get_uint8(tvb
, 1) & AEM_MASK_SF
;
2554 proto_tree_add_item(stream_tree
, hf_aem_sf
, tvb
,
2555 AEM_OFFSET_SF
, 1, ENC_BIG_ENDIAN
);
2557 if (sf
== 0) { /* IIDC Stream Format */
2558 proto_tree_add_item(stream_tree
, hf_aem_iidc_format
, tvb
,
2559 AEM_OFFSET_IIDC_FORMAT
, 1, ENC_BIG_ENDIAN
);
2560 proto_tree_add_item(stream_tree
, hf_aem_iidc_mode
, tvb
,
2561 AEM_OFFSET_IIDC_MODE
, 1, ENC_BIG_ENDIAN
);
2562 proto_tree_add_item(stream_tree
, hf_aem_iidc_rate
, tvb
,
2563 AEM_OFFSET_IIDC_RATE
, 1, ENC_BIG_ENDIAN
);
2565 } else { /* 61883 Stream Format */
2566 proto_tree_add_item(stream_tree
, hf_aem_fmt
, tvb
,
2567 AEM_OFFSET_FMT
, 1, ENC_BIG_ENDIAN
);
2568 fmt
= tvb_get_uint8(tvb
, AEM_OFFSET_FMT
) & 0x7F;
2569 if (fmt
== 0x20) { /* 61883-6 Stream Format */
2570 proto_tree_add_item(stream_tree
, hf_aem_fdf_evt
, tvb
,
2571 AEM_OFFSET_FDF_EVT
, 1, ENC_BIG_ENDIAN
);
2572 proto_tree_add_item(stream_tree
, hf_aem_fdf_sfc
, tvb
,
2573 AEM_OFFSET_FDF_SFC
, 1, ENC_BIG_ENDIAN
);
2574 proto_tree_add_item(stream_tree
, hf_aem_dbs
, tvb
,
2575 AEM_OFFSET_DBS
, 1, ENC_BIG_ENDIAN
);
2577 fdf_evt
= tvb_get_uint8(tvb
, AEM_OFFSET_FDF_EVT
) & AEM_MASK_FDF_EVT
;
2579 proto_tree_add_item(stream_tree
, hf_aem_b_flag
, tvb
,
2580 AEM_OFFSET_B
, 1, ENC_BIG_ENDIAN
);
2581 proto_tree_add_item(stream_tree
, hf_aem_nb_flag
, tvb
,
2582 AEM_OFFSET_NB
, 1, ENC_BIG_ENDIAN
);
2584 if (fdf_evt
== 0x00) { /* 61883-6 AM824 Stream Format */
2585 proto_tree_add_item(stream_tree
, hf_aem_label_iec_60958_cnt
, tvb
,
2586 AEM_OFFSET_LABEL_IEC_60958_CNT
, 1, ENC_BIG_ENDIAN
);
2587 proto_tree_add_item(stream_tree
, hf_aem_label_mbla_cnt
, tvb
,
2588 AEM_OFFSET_LABEL_MBLA_CNT
, 1, ENC_BIG_ENDIAN
);
2589 proto_tree_add_item(stream_tree
, hf_aem_label_midi_cnt
, tvb
,
2590 AEM_OFFSET_LABEL_MIDI_CNT
, 1, ENC_BIG_ENDIAN
);
2591 proto_tree_add_item(stream_tree
, hf_aem_label_smpte_cnt
, tvb
,
2592 AEM_OFFSET_LABEL_SMPTE_CNT
, 1, ENC_BIG_ENDIAN
);
2594 } else if (fmt
== 0x01) { /* 61883-8 Stream Format */
2595 proto_tree_add_item(stream_tree
, hf_aem_video_mode
, tvb
,
2596 AEM_OFFSET_VIDEO_MODE
, 1, ENC_BIG_ENDIAN
);
2597 proto_tree_add_item(stream_tree
, hf_aem_compress_mode
, tvb
,
2598 AEM_OFFSET_COMPRESS_MODE
, 1, ENC_BIG_ENDIAN
);
2599 proto_tree_add_item(stream_tree
, hf_aem_color_space
, tvb
,
2600 AEM_OFFSET_COLOR_SPACE
, 1, ENC_BIG_ENDIAN
);
2605 /* Defined by the MMA */
2607 case AVTP_AUDIO_SUBTYPE
:
2608 /* Defined by the AVTP */
2610 case AVTP_VIDEO_SUBTYPE
:
2611 /* Defined by the AVTP */
2613 case EXPERIMENTAL_SUBTYPE
:
2614 /* used for experimental formats for development purposes only */
2617 /* unknown or unimplemented subtype */
2618 /* possibly a weather baloon, or swamp gas */
2625 dissect_17221_video_format(tvbuff_t
*tvb
, proto_tree
*tree
)
2628 proto_tree_add_item(tree
, hf_aecp_video_format
, tvb
,
2633 dissect_17221_video_aspect_ratio(tvbuff_t
*tvb
, proto_tree
*tree
)
2636 proto_tree_add_item(tree
, hf_aecp_video_format
, tvb
,
2641 dissect_17221_video_frame_size(tvbuff_t
*tvb
, proto_tree
*tree
)
2644 proto_tree_add_item(tree
, hf_aecp_video_format
, tvb
,
2649 dissect_17221_sensor_format(tvbuff_t
*tvb
, proto_tree
*tree
)
2652 proto_tree_add_item(tree
, hf_aecp_video_format
, tvb
,
2656 #if 0 /* old, prior to D21. Fix for D21 video format */
2658 dissect_17221_media_format(tvbuff_t
*tvb
, proto_tree
*tree
)
2660 proto_item
*media_tree
;
2661 proto_item
*media_ti
;
2665 /* grab the oui24 and mfd_type */
2666 oui24
= tvb_get_ntoh24(tvb
, 0);
2667 mfd_type
= tvb_get_uint8(tvb
, 3);
2670 media_ti
= proto_tree_add_item(tree
, hf_aecp_media_format
, tvb
,
2672 media_tree
= proto_item_add_subtree(media_ti
, ett_aem_media_format
);
2674 /* standard media formats */
2675 if (oui24
== OUI24_STANDARD_MEDIA_FORMAT
) {
2676 /* Standard Media Format Fields */
2677 proto_tree_add_item(media_tree
, hf_aem_oui24
, tvb
,
2678 0, 3, ENC_BIG_ENDIAN
);
2679 proto_tree_add_item(media_tree
, hf_aem_mfd_type
, tvb
,
2680 AEM_OFFSET_MFD_TYPE
, 1, ENC_BIG_ENDIAN
);
2682 /* break down the standard media format types */
2684 case MFD_TYPE_VIDEO
:
2685 proto_tree_add_item(media_tree
, hf_aem_div
, tvb
,
2686 AEM_OFFSET_DIV
, 1, ENC_BIG_ENDIAN
);
2687 proto_tree_add_item(media_tree
, hf_aem_interlace
, tvb
,
2688 AEM_OFFSET_INTERLACE
, 2, ENC_BIG_ENDIAN
);
2689 proto_tree_add_item(media_tree
, hf_aem_channels
, tvb
,
2690 AEM_OFFSET_CHANNELS
, 1, ENC_BIG_ENDIAN
);
2691 proto_tree_add_item(media_tree
, hf_aem_color_format
, tvb
,
2692 AEM_OFFSET_COLOR_FORMAT
, 2, ENC_BIG_ENDIAN
);
2693 proto_tree_add_item(media_tree
, hf_aem_bpp
, tvb
,
2694 AEM_OFFSET_BPP
, 1, ENC_BIG_ENDIAN
);
2695 proto_tree_add_item(media_tree
, hf_aem_aspect_x
, tvb
,
2696 AEM_OFFSET_ASPECT_X
, 1, ENC_BIG_ENDIAN
);
2697 proto_tree_add_item(media_tree
, hf_aem_aspect_y
, tvb
,
2698 AEM_OFFSET_ASPECT_Y
, 1 ,ENC_BIG_ENDIAN
);
2699 proto_tree_add_item(media_tree
, hf_aem_frame_rate
, tvb
,
2700 AEM_OFFSET_FRAME_RATE
, 1, ENC_BIG_ENDIAN
);
2701 proto_tree_add_item(media_tree
, hf_aem_comp1
, tvb
,
2702 AEM_OFFSET_COMP1
, 2, ENC_BIG_ENDIAN
);
2703 proto_tree_add_item(media_tree
, hf_aem_comp2
, tvb
,
2704 AEM_OFFSET_COMP2
, 1, ENC_BIG_ENDIAN
);
2705 proto_tree_add_item(media_tree
, hf_aem_comp3
, tvb
,
2706 AEM_OFFSET_COMP3
, 2, ENC_BIG_ENDIAN
);
2707 proto_tree_add_item(media_tree
, hf_aem_comp4
, tvb
,
2708 AEM_OFFSET_COMP4
, 1, ENC_BIG_ENDIAN
);
2709 proto_tree_add_item(media_tree
, hf_aem_mf_width
, tvb
,
2710 AEM_OFFSET_SVMF_WIDTH
, 2, ENC_BIG_ENDIAN
);
2711 proto_tree_add_item(media_tree
, hf_aem_mf_height
, tvb
,
2712 AEM_OFFSET_SVMF_HEIGHT
, 2, ENC_BIG_ENDIAN
);
2714 case MFD_TYPE_TRANSPORT_STRM
:
2718 case MFD_TYPE_TIME_CODE
:
2720 case MFD_TYPE_CONTROL_PROTO
:
2721 proto_tree_add_item(media_tree
, hf_aem_cs_eui64
, tvb
,
2722 AEM_OFFSET_CS_EUI64
, 8, ENC_BIG_ENDIAN
);
2725 /* unsupported MFD type */
2728 } else { /* vendor specific media formats */
2730 /* these are not the media formats you are looking for */
2736 /* TODO following updates in Draft 18 and the pending Draft 19 this section will require major overhaul */
2738 dissect_17221_ctrl_val(tvbuff_t
*tvb
, proto_tree
*tree
, uint16_t num_ctrl_vals
, uint16_t ctrl_val_type
,
2739 uint16_t ctrl_offset
)
2741 proto_item
*ctrl_item
;
2742 proto_item
*ctrl_subtree
;
2744 uint32_t bin_blob_size
;
2747 /* set up control values tree */
2748 ctrl_item
= proto_tree_add_item(tree
, hf_aem_ctrl_vals
, tvb
,
2750 ctrl_subtree
= proto_item_add_subtree(ctrl_item
, ett_aem_ctrl_vals
);
2752 /* ctrl_val_type's are dissected below in this if/else block */
2753 /* for now only a few value types are in use, if I have time to come
2754 back to it I will add more fields to this but for now when viewing
2755 control_values you will need a copy of the spec handy to figure
2756 out what you are looking at, the get_ctrl_ref_vals function above
2757 will ideally be eliminated and this section will be a lot cleaner
2758 if/when that happens */
2760 ref
= get_ctrl_ref_vals(ctrl_val_type
);
2763 if (ctrl_val_type
< 0xa) {
2764 for(i
= 0; i
< num_ctrl_vals
; ++i
) {
2765 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2766 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2767 ctrl_offset
+= ref
.size
;
2768 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2769 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2770 ctrl_offset
+= ref
.size
;
2771 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2772 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2773 ctrl_offset
+= ref
.size
;
2774 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2775 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2776 ctrl_offset
+= ref
.size
;
2777 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2778 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2779 ctrl_offset
+= ref
.size
;
2780 proto_tree_add_item(ctrl_subtree
, hf_aem_unit
, tvb
,
2781 ctrl_offset
, 2, ENC_BIG_ENDIAN
);
2783 proto_tree_add_item(ctrl_subtree
, hf_aem_string_ref
, tvb
,
2784 ctrl_offset
, 2, ENC_BIG_ENDIAN
);
2788 /* SELECTOR TYPES */
2789 } else if (ctrl_val_type
> 0x9 && ctrl_val_type
< 0x14) {
2790 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2791 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2793 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2794 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2796 for(i
= 0; i
< num_ctrl_vals
; ++i
) {
2797 proto_tree_add_item(ctrl_subtree
, ref
.hf
, tvb
,
2798 ctrl_offset
, ref
.size
, ENC_BIG_ENDIAN
);
2801 proto_tree_add_item(ctrl_subtree
, hf_aem_unit
, tvb
,
2802 ctrl_offset
, 2, ENC_BIG_ENDIAN
);
2804 /* UTF8 STRING TYPE */
2805 } else if (ctrl_val_type
== 0x14) {
2806 proto_tree_add_item(ctrl_subtree
, hf_aem_string
, tvb
,
2807 ctrl_offset
, -1, ENC_ASCII
);
2809 /* BODE_PLOT TYPE */
2810 } else if (ctrl_val_type
== 0x15) {
2811 for(i
= 0; i
< 12 + (num_ctrl_vals
* 3); ++i
) {
2812 proto_tree_add_item(ctrl_subtree
, hf_aem_ctrl_float
, tvb
,
2813 ctrl_offset
, 4, ENC_BIG_ENDIAN
);
2818 } else if (ctrl_val_type
> 0x15 && ctrl_val_type
< 0x1f) {
2819 /* VENDOR CONTROL TYPE */
2820 } else if (ctrl_val_type
== 0xfffe) {
2821 proto_tree_add_item(ctrl_subtree
, hf_aem_guid
, tvb
,
2822 ctrl_offset
, 8, ENC_BIG_ENDIAN
);
2824 bin_blob_size
= tvb_get_ntohl(tvb
, ctrl_offset
);
2825 proto_tree_add_item(ctrl_subtree
, hf_aem_blob_size
, tvb
,
2826 ctrl_offset
, 4, ENC_BIG_ENDIAN
);
2828 proto_tree_add_item(ctrl_subtree
, hf_aem_binary_blob
, tvb
,
2829 ctrl_offset
, bin_blob_size
, ENC_NA
);
2833 /* dissect descriptors from the AVDECC Entity Model (AEM) */
2834 /* this dissector is not registered */
2836 dissect_17221_aem(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2839 uint16_t ctrl_val_type
;
2840 uint16_t num_ctrl_vals
;
2844 /* Mr. Subtree and Mr. Counter will be used as the loop limit and
2845 * subtree object for arrays in the descriptors, rather than declaring
2846 * a separate variable for each possible case in the switch which uses
2849 proto_item
*mr_subtree
;
2850 proto_item
*mr_item
;
2852 uint16_t mr_counter
;
2858 proto_item
*aem_tree
;
2859 /* used in creation of descriptor subtree */
2860 proto_item
*desc_ti
;
2863 /* get the type of this descriptor */
2864 desc_type
= tvb_get_ntohs(tvb
, 0);
2866 /* Load the descriptor type and id fields, add subtree */
2867 desc_ti
= proto_tree_add_item(tree
, hf_aecp_descriptor_type
, tvb
,
2868 AEM_OFFSET_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
2869 aem_tree
= proto_item_add_subtree(desc_ti
, ett_aem_descriptor
);
2871 proto_tree_add_item(aem_tree
, hf_aecp_descriptor_index
, tvb
,
2872 AEM_OFFSET_DESCRIPTOR_ID
, 2, ENC_BIG_ENDIAN
);
2874 /* Dissect descriptors based on type. Where possible multiple cases *
2875 * will fall through to the same code */
2877 case AEM_DESCRIPTOR_ENTITY
:
2878 proto_tree_add_item(aem_tree
, hf_aem_entity_id
, tvb
,
2879 ENTITY_OFFSET_ENTITY_GUID
, 8, ENC_BIG_ENDIAN
);
2880 proto_tree_add_item(aem_tree
, hf_aem_entity_model_id
, tvb
,
2881 ENTITY_OFFSET_ENTITY_MODEL_ID
, 8, ENC_BIG_ENDIAN
);
2883 proto_tree_add_item(aem_tree
, hf_adp_entity_cap
, tvb
,
2884 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2885 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_efu_mode
, tvb
,
2886 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2887 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_address_access_supported
, tvb
,
2888 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2889 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_gateway_entity
, tvb
,
2890 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2891 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_aem_supported
, tvb
,
2892 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2893 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_legacy_avc
, tvb
,
2894 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2895 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_assoc_id_support
, tvb
,
2896 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2897 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_assoc_id_valid
, tvb
,
2898 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2899 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_vendor_unique
, tvb
,
2900 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2901 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_class_a_supported
, tvb
,
2902 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2903 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_class_b_supported
, tvb
,
2904 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2905 proto_tree_add_item(aem_tree
, hf_adp_entity_cap_gptp_supported
, tvb
,
2906 ENTITY_OFFSET_ENTITY_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2908 proto_tree_add_item(aem_tree
, hf_adp_talker_stream_srcs
, tvb
,
2909 ENTITY_OFFSET_TALKER_STREAM_SOURCES
, 2, ENC_BIG_ENDIAN
);
2911 proto_tree_add_item(aem_tree
, hf_adp_talker_cap
, tvb
,
2912 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2913 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_implement
, tvb
,
2914 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2915 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_other_src
, tvb
,
2916 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2917 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_control_src
, tvb
,
2918 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2919 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_media_clk_src
, tvb
,
2920 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2921 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_smpte_src
, tvb
,
2922 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2923 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_midi_src
, tvb
,
2924 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2925 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_audio_src
, tvb
,
2926 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2927 proto_tree_add_item(aem_tree
, hf_adp_talk_cap_video_src
, tvb
,
2928 ENTITY_OFFSET_TALKER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2930 proto_tree_add_item(aem_tree
, hf_adp_listener_stream_sinks
, tvb
,
2931 ENTITY_OFFSET_LISTENER_STREAM_SINKS
, 2, ENC_BIG_ENDIAN
);
2933 proto_tree_add_item(aem_tree
, hf_adp_listener_cap
, tvb
,
2934 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2935 proto_tree_add_item(aem_tree
, hf_adp_list_cap_implement
, tvb
,
2936 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2937 proto_tree_add_item(aem_tree
, hf_adp_list_cap_other_sink
, tvb
,
2938 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2939 proto_tree_add_item(aem_tree
, hf_adp_list_cap_control_sink
, tvb
,
2940 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2941 proto_tree_add_item(aem_tree
, hf_adp_list_cap_media_clk_sink
, tvb
,
2942 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2943 proto_tree_add_item(aem_tree
, hf_adp_list_cap_smpte_sink
, tvb
,
2944 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2945 proto_tree_add_item(aem_tree
, hf_adp_list_cap_midi_sink
, tvb
,
2946 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2947 proto_tree_add_item(aem_tree
, hf_adp_list_cap_audio_sink
, tvb
,
2948 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2949 proto_tree_add_item(aem_tree
, hf_adp_list_cap_video_sink
, tvb
,
2950 ENTITY_OFFSET_LISTENER_CAPABILITIES
, 2, ENC_BIG_ENDIAN
);
2952 proto_tree_add_item(aem_tree
, hf_adp_controller_cap
, tvb
,
2953 ENTITY_OFFSET_CONTROLLER_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2954 proto_tree_add_item(aem_tree
, hf_adp_cont_cap_implement
, tvb
,
2955 ENTITY_OFFSET_CONTROLLER_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2956 proto_tree_add_item(aem_tree
, hf_adp_cont_cap_layer3_proxy
, tvb
,
2957 ENTITY_OFFSET_CONTROLLER_CAPABILITIES
, 4, ENC_BIG_ENDIAN
);
2959 proto_tree_add_item(aem_tree
, hf_adp_avail_index
, tvb
,
2960 ENTITY_OFFSET_AVAILABLE_INDEX
, 4, ENC_BIG_ENDIAN
);
2961 proto_tree_add_item(aem_tree
, hf_aecp_association_id
, tvb
,
2962 ENTITY_OFFSET_ASSOCIATION_ID
, 8, ENC_BIG_ENDIAN
);
2963 proto_tree_add_item(aem_tree
, hf_aem_entity_name
, tvb
,
2964 ENTITY_OFFSET_ENTITY_NAME
, 64, ENC_ASCII
);
2965 proto_tree_add_item(aem_tree
, hf_aem_vendor_name_string
, tvb
,
2966 ENTITY_OFFSET_VENDOR_NAME_STRING
, 2, ENC_BIG_ENDIAN
);
2967 proto_tree_add_item(aem_tree
, hf_aem_model_name_string
, tvb
,
2968 ENTITY_OFFSET_MODEL_NAME_STRING
, 2, ENC_BIG_ENDIAN
);
2969 proto_tree_add_item(aem_tree
, hf_aem_firmware_version
, tvb
,
2970 ENTITY_OFFSET_FIRMWARE_VERSION
, 64, ENC_ASCII
);
2971 proto_tree_add_item(aem_tree
, hf_aem_group_name
, tvb
,
2972 ENTITY_OFFSET_GROUP_NAME
, 64, ENC_ASCII
);
2973 proto_tree_add_item(aem_tree
, hf_aem_serial_number
, tvb
,
2974 ENTITY_OFFSET_SERIAL_NUMBER
, 64, ENC_ASCII
);
2975 proto_tree_add_item(aem_tree
, hf_aem_configurations_count
, tvb
,
2976 ENTITY_OFFSET_CONFIGURATIONS_COUNT
, 2, ENC_BIG_ENDIAN
);
2977 proto_tree_add_item(aem_tree
, hf_aem_current_configuration
, tvb
,
2978 ENTITY_OFFSET_CURRENT_CONFIGURATION
, 2, ENC_BIG_ENDIAN
);
2980 case AEM_DESCRIPTOR_CONFIGURATION
:
2981 proto_tree_add_item(aem_tree
, hf_aem_configuration_name
, tvb
,
2982 CONFIGURATION_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
2983 proto_tree_add_item(aem_tree
, hf_aem_configuration_name_string
, tvb
,
2984 CONFIGURATION_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
2985 proto_tree_add_item(aem_tree
, hf_aem_descriptor_counts_count
, tvb
,
2986 CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_COUNT
, 2, ENC_BIG_ENDIAN
);
2988 /* set up subtree, counter, and offset for sample rates array */
2989 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_descriptor_counts_offset
, tvb
,
2990 CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_OFFSET
, 2, ENC_BIG_ENDIAN
);
2991 mr_counter
= tvb_get_ntohs(tvb
, CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_COUNT
);
2992 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_desc_counts
);
2993 mr_offset
= CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS
;
2995 for(i
= 0; i
< mr_counter
; ++i
)
2997 proto_tree_add_item(mr_subtree
, hf_aecp_descriptor_type
, tvb
, mr_offset
, 2, ENC_BIG_ENDIAN
);
2999 proto_tree_add_item(mr_subtree
, hf_aem_count
, tvb
, mr_offset
, 2, ENC_BIG_ENDIAN
);
3003 case AEM_DESCRIPTOR_AUDIO_UNIT
:
3004 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3005 AUDIO_UNIT_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3006 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3007 AUDIO_UNIT_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3009 /* D20 clock domain */
3010 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3011 AUDIO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3013 proto_tree_add_item(aem_tree
, hf_aem_number_of_stream_input_ports
, tvb
,
3014 AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3015 proto_tree_add_item(aem_tree
, hf_aem_base_stream_input_port
, tvb
,
3016 AUDIO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3017 proto_tree_add_item(aem_tree
, hf_aem_number_of_stream_output_ports
, tvb
,
3018 AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3019 proto_tree_add_item(aem_tree
, hf_aem_base_stream_output_port
, tvb
,
3020 AUDIO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3021 proto_tree_add_item(aem_tree
, hf_aem_number_of_external_input_ports
, tvb
,
3022 AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3023 proto_tree_add_item(aem_tree
, hf_aem_base_external_input_port
, tvb
,
3024 AUDIO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3025 proto_tree_add_item(aem_tree
, hf_aem_number_of_external_output_ports
, tvb
,
3026 AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3027 proto_tree_add_item(aem_tree
, hf_aem_base_external_output_port
, tvb
,
3028 AUDIO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3029 proto_tree_add_item(aem_tree
, hf_aem_number_of_internal_input_ports
, tvb
,
3030 AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3031 proto_tree_add_item(aem_tree
, hf_aem_base_internal_input_port
, tvb
,
3032 AUDIO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3033 proto_tree_add_item(aem_tree
, hf_aem_number_of_internal_output_ports
, tvb
,
3034 AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3035 proto_tree_add_item(aem_tree
, hf_aem_base_internal_output_port
, tvb
,
3036 AUDIO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3037 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3038 AUDIO_UNIT_OFFSET_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3039 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3040 AUDIO_UNIT_OFFSET_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3041 proto_tree_add_item(aem_tree
, hf_aem_number_signal_selectors
, tvb
,
3042 AUDIO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS
, 2, ENC_BIG_ENDIAN
);
3043 proto_tree_add_item(aem_tree
, hf_aem_base_signal_selector
, tvb
,
3044 AUDIO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR
, 2, ENC_BIG_ENDIAN
);
3045 proto_tree_add_item(aem_tree
, hf_aem_number_mixers
, tvb
,
3046 AUDIO_UNIT_OFFSET_NUMBER_MIXERS
, 2, ENC_BIG_ENDIAN
);
3047 proto_tree_add_item(aem_tree
, hf_aem_base_mixer
, tvb
,
3048 AUDIO_UNIT_OFFSET_BASE_MIXER
, 2, ENC_BIG_ENDIAN
);
3049 proto_tree_add_item(aem_tree
, hf_aem_number_matrices
, tvb
,
3050 AUDIO_UNIT_OFFSET_NUMBER_MATRICES
, 2, ENC_BIG_ENDIAN
);
3051 proto_tree_add_item(aem_tree
, hf_aem_base_matrix
, tvb
,
3052 AUDIO_UNIT_OFFSET_BASE_MATRIX
, 2, ENC_BIG_ENDIAN
);
3053 proto_tree_add_item(aem_tree
, hf_aem_number_splitters
, tvb
,
3054 AUDIO_UNIT_OFFSET_NUMBER_SPLITTERS
, 2, ENC_BIG_ENDIAN
);
3055 proto_tree_add_item(aem_tree
, hf_aem_base_splitter
, tvb
,
3056 AUDIO_UNIT_OFFSET_BASE_SPLITTER
, 2, ENC_BIG_ENDIAN
);
3057 proto_tree_add_item(aem_tree
, hf_aem_number_combiners
, tvb
,
3058 AUDIO_UNIT_OFFSET_NUMBER_COMBINERS
, 2, ENC_BIG_ENDIAN
);
3059 proto_tree_add_item(aem_tree
, hf_aem_base_combiner
, tvb
,
3060 AUDIO_UNIT_OFFSET_BASE_COMBINER
, 2, ENC_BIG_ENDIAN
);
3061 proto_tree_add_item(aem_tree
, hf_aem_number_demultiplexers
, tvb
,
3062 AUDIO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS
, 2, ENC_BIG_ENDIAN
);
3063 proto_tree_add_item(aem_tree
, hf_aem_base_demultiplexer
, tvb
,
3064 AUDIO_UNIT_OFFSET_BASE_DEMULTIPLEXER
, 2, ENC_BIG_ENDIAN
);
3065 proto_tree_add_item(aem_tree
, hf_aem_number_multiplexers
, tvb
,
3066 AUDIO_UNIT_OFFSET_NUMBER_MULTIPLEXERS
, 2, ENC_BIG_ENDIAN
);
3067 proto_tree_add_item(aem_tree
, hf_aem_base_multiplexer
, tvb
,
3068 AUDIO_UNIT_OFFSET_BASE_MULTIPLEXER
, 2, ENC_BIG_ENDIAN
);
3069 proto_tree_add_item(aem_tree
, hf_aem_number_transcoders
, tvb
,
3070 AUDIO_UNIT_OFFSET_NUMBER_TRANSCODERS
, 2, ENC_BIG_ENDIAN
);
3071 proto_tree_add_item(aem_tree
, hf_aem_base_transcoder
, tvb
,
3072 AUDIO_UNIT_OFFSET_BASE_TRANSCODER
, 2, ENC_BIG_ENDIAN
);
3075 proto_tree_add_item(aem_tree
, hf_aem_number_control_blocks
, tvb
,
3076 AUDIO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS
, 2, ENC_BIG_ENDIAN
);
3077 proto_tree_add_item(aem_tree
, hf_aem_base_control_block
, tvb
,
3078 AUDIO_UNIT_OFFSET_BASE_CONTROL_BLOCK
, 2, ENC_BIG_ENDIAN
);
3081 proto_tree_add_item(aem_tree
, hf_aem_current_sample_rate
, tvb
,
3082 AUDIO_UNIT_OFFSET_CURRENT_SAMPLE_RATE
, 4, ENC_BIG_ENDIAN
);
3084 proto_tree_add_item(aem_tree
, hf_aem_sample_rates_offset
, tvb
,
3085 AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET
, 2, ENC_BIG_ENDIAN
);
3086 proto_tree_add_item(aem_tree
, hf_aem_sample_rates_count
, tvb
,
3087 AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT
, 2, ENC_BIG_ENDIAN
);
3089 /* set up subtree, counter, and offset for sample rates array */
3090 mr_offset
= tvb_get_ntohs(tvb
, AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET
);
3091 mr_counter
= tvb_get_ntohs(tvb
, AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT
);
3092 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_sample_rates
, tvb
,
3093 mr_offset
, mr_counter
* 4, ENC_NA
);
3094 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_sample_rates
);
3096 /* loop to get the array values */
3097 for(i
= 0; i
< mr_counter
; ++i
) {
3098 proto_tree_add_item(mr_subtree
, hf_aem_pull_field
, tvb
,
3099 mr_offset
, 1, ENC_BIG_ENDIAN
);
3100 proto_tree_add_item(mr_subtree
, hf_aem_base_frequency
, tvb
,
3101 mr_offset
, 4, ENC_BIG_ENDIAN
);
3102 base_freq
= tvb_get_ntohl(tvb
, mr_offset
);
3103 freq_mult
= base_freq
;
3105 freq_mult
&= 0xe0000000;
3106 freq_mult
= freq_mult
>> 29;
3107 base_freq
&= 0x1fffffff;
3108 /* replace this with something not horrible */
3109 frequency
= freq_mult
== 0 ? 1 :
3110 freq_mult
== 1 ? 1 / (float)1.001 :
3111 freq_mult
== 2 ? (float)1.001 :
3112 freq_mult
== 3 ? 24 / 25 :
3113 freq_mult
== 4 ? 54 / 24 : 0;
3115 frequency
*= base_freq
;
3116 proto_tree_add_float(mr_subtree
, hf_aem_frequency
, tvb
, mr_offset
, 4, frequency
);
3121 case AEM_DESCRIPTOR_VIDEO_UNIT
:
3122 case AEM_DESCRIPTOR_SENSOR_UNIT
:
3123 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3124 VIDEO_UNIT_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3125 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3126 VIDEO_UNIT_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3128 /* D20 clock domain */
3129 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3130 AUDIO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3132 proto_tree_add_item(aem_tree
, hf_aem_number_of_stream_input_ports
, tvb
,
3133 VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3134 proto_tree_add_item(aem_tree
, hf_aem_base_stream_input_port
, tvb
,
3135 VIDEO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3136 proto_tree_add_item(aem_tree
, hf_aem_number_of_stream_output_ports
, tvb
,
3137 VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3138 proto_tree_add_item(aem_tree
, hf_aem_base_stream_output_port
, tvb
,
3139 VIDEO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3140 proto_tree_add_item(aem_tree
, hf_aem_number_of_external_input_ports
, tvb
,
3141 VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3142 proto_tree_add_item(aem_tree
, hf_aem_base_external_input_port
, tvb
,
3143 VIDEO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3144 proto_tree_add_item(aem_tree
, hf_aem_number_of_external_output_ports
, tvb
,
3145 VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3146 proto_tree_add_item(aem_tree
, hf_aem_base_external_output_port
, tvb
,
3147 VIDEO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3148 proto_tree_add_item(aem_tree
, hf_aem_number_of_internal_input_ports
, tvb
,
3149 VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3150 proto_tree_add_item(aem_tree
, hf_aem_base_internal_input_port
, tvb
,
3151 VIDEO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3152 proto_tree_add_item(aem_tree
, hf_aem_number_of_internal_output_ports
, tvb
,
3153 VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS
, 2, ENC_BIG_ENDIAN
);
3154 proto_tree_add_item(aem_tree
, hf_aem_base_internal_output_port
, tvb
,
3155 VIDEO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT
, 2, ENC_BIG_ENDIAN
);
3156 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3157 VIDEO_UNIT_OFFSET_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3158 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3159 VIDEO_UNIT_OFFSET_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3160 proto_tree_add_item(aem_tree
, hf_aem_number_signal_selectors
, tvb
,
3161 VIDEO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS
, 2, ENC_BIG_ENDIAN
);
3162 proto_tree_add_item(aem_tree
, hf_aem_base_signal_selector
, tvb
,
3163 VIDEO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR
, 2, ENC_BIG_ENDIAN
);
3164 proto_tree_add_item(aem_tree
, hf_aem_number_mixers
, tvb
,
3165 VIDEO_UNIT_OFFSET_NUMBER_MIXERS
, 2, ENC_BIG_ENDIAN
);
3166 proto_tree_add_item(aem_tree
, hf_aem_base_mixer
, tvb
,
3167 VIDEO_UNIT_OFFSET_BASE_MIXER
, 2, ENC_BIG_ENDIAN
);
3168 proto_tree_add_item(aem_tree
, hf_aem_number_matrices
, tvb
,
3169 VIDEO_UNIT_OFFSET_NUMBER_MATRICES
, 2, ENC_BIG_ENDIAN
);
3170 proto_tree_add_item(aem_tree
, hf_aem_base_matrix
, tvb
,
3171 VIDEO_UNIT_OFFSET_BASE_MATRIX
, 2, ENC_BIG_ENDIAN
);
3172 proto_tree_add_item(aem_tree
, hf_aem_number_splitters
, tvb
,
3173 VIDEO_UNIT_OFFSET_NUMBER_SPLITTERS
, 2, ENC_BIG_ENDIAN
);
3174 proto_tree_add_item(aem_tree
, hf_aem_base_splitter
, tvb
,
3175 VIDEO_UNIT_OFFSET_BASE_SPLITTER
, 2, ENC_BIG_ENDIAN
);
3176 proto_tree_add_item(aem_tree
, hf_aem_number_combiners
, tvb
,
3177 VIDEO_UNIT_OFFSET_NUMBER_COMBINERS
, 2, ENC_BIG_ENDIAN
);
3178 proto_tree_add_item(aem_tree
, hf_aem_base_combiner
, tvb
,
3179 VIDEO_UNIT_OFFSET_BASE_COMBINER
, 2, ENC_BIG_ENDIAN
);
3180 proto_tree_add_item(aem_tree
, hf_aem_number_demultiplexers
, tvb
,
3181 VIDEO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS
, 2, ENC_BIG_ENDIAN
);
3182 proto_tree_add_item(aem_tree
, hf_aem_base_demultiplexer
, tvb
,
3183 VIDEO_UNIT_OFFSET_BASE_DEMULTIPLEXER
, 2, ENC_BIG_ENDIAN
);
3184 proto_tree_add_item(aem_tree
, hf_aem_number_multiplexers
, tvb
,
3185 VIDEO_UNIT_OFFSET_NUMBER_MULTIPLEXERS
, 2, ENC_BIG_ENDIAN
);
3186 proto_tree_add_item(aem_tree
, hf_aem_base_multiplexer
, tvb
,
3187 VIDEO_UNIT_OFFSET_BASE_MULTIPLEXER
, 2, ENC_BIG_ENDIAN
);
3188 proto_tree_add_item(aem_tree
, hf_aem_number_transcoders
, tvb
,
3189 VIDEO_UNIT_OFFSET_NUMBER_TRANSCODERS
, 2, ENC_BIG_ENDIAN
);
3190 proto_tree_add_item(aem_tree
, hf_aem_base_transcoder
, tvb
,
3191 VIDEO_UNIT_OFFSET_BASE_TRANSCODER
, 2, ENC_BIG_ENDIAN
);
3194 proto_tree_add_item(aem_tree
, hf_aem_number_control_blocks
, tvb
,
3195 VIDEO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS
, 2, ENC_BIG_ENDIAN
);
3196 proto_tree_add_item(aem_tree
, hf_aem_base_control_block
, tvb
,
3197 VIDEO_UNIT_OFFSET_BASE_CONTROL_BLOCK
, 2, ENC_BIG_ENDIAN
);
3199 case AEM_DESCRIPTOR_STREAM_INPUT
:
3200 case AEM_DESCRIPTOR_STREAM_OUTPUT
:
3201 proto_tree_add_item(aem_tree
, hf_aem_stream_name
, tvb
,
3202 STREAM_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3203 proto_tree_add_item(aem_tree
, hf_aem_stream_name_string
, tvb
,
3204 STREAM_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3206 /* D20 clock domain */
3207 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3208 STREAM_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3210 /* set up a flags subtree */
3211 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_stream_flags
, tvb
,
3212 STREAM_OFFSET_STREAM_FLAGS
, 2, ENC_BIG_ENDIAN
);
3213 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_stream_flags
);
3214 /* add flags to new subtree */
3215 proto_tree_add_item(mr_subtree
, hf_aem_flags_clock_sync_source
, tvb
,
3216 STREAM_OFFSET_STREAM_FLAGS
, 2, ENC_BIG_ENDIAN
);
3217 proto_tree_add_item(mr_subtree
, hf_aem_flags_class_a
, tvb
,
3218 STREAM_OFFSET_STREAM_FLAGS
, 2, ENC_BIG_ENDIAN
);
3219 proto_tree_add_item(mr_subtree
, hf_aem_flags_class_b
, tvb
,
3220 STREAM_OFFSET_STREAM_FLAGS
, 2, ENC_BIG_ENDIAN
);
3221 /* done adding flags, continue with fields */
3222 /* stream format dissection */
3223 next_tvb
= tvb_new_subset_length(tvb
, STREAM_OFFSET_CURRENT_FORMAT
, 8);
3224 dissect_17221_stream_format(next_tvb
, aem_tree
);
3226 proto_tree_add_item(aem_tree
, hf_aem_formats_offset
, tvb
,
3227 STREAM_OFFSET_FORMATS_OFFSET
, 2, ENC_BIG_ENDIAN
);
3228 proto_tree_add_item(aem_tree
, hf_aem_number_of_formats
, tvb
,
3229 STREAM_OFFSET_NUMBER_OF_FORMATS
, 2, ENC_BIG_ENDIAN
);
3230 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_guid_0
, tvb
,
3231 STREAM_OFFSET_BACKUP_TALKER_GUID_0
, 8, ENC_BIG_ENDIAN
);
3232 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_unique_0
, tvb
,
3233 STREAM_OFFSET_BACKUP_TALKER_UNIQUE_0
, 2, ENC_BIG_ENDIAN
);
3234 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_guid_1
, tvb
,
3235 STREAM_OFFSET_BACKUP_TALKER_GUID_1
, 8, ENC_BIG_ENDIAN
);
3236 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_unique_1
, tvb
,
3237 STREAM_OFFSET_BACKUP_TALKER_UNIQUE_1
, 2, ENC_BIG_ENDIAN
);
3238 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_guid_2
, tvb
,
3239 STREAM_OFFSET_BACKUP_TALKER_GUID_2
, 8, ENC_BIG_ENDIAN
);
3240 proto_tree_add_item(aem_tree
, hf_aem_backup_talker_unique_2
, tvb
,
3241 STREAM_OFFSET_BACKUP_TALKER_UNIQUE_2
, 2, ENC_BIG_ENDIAN
);
3242 proto_tree_add_item(aem_tree
, hf_aem_backedup_talker_guid
, tvb
,
3243 STREAM_OFFSET_BACKEDUP_TALKER_GUID
, 8, ENC_BIG_ENDIAN
);
3244 proto_tree_add_item(aem_tree
, hf_aem_backedup_talker_unique
, tvb
,
3245 STREAM_OFFSET_BACKEDUP_TALKER_UNIQUE_ID
, 2, ENC_BIG_ENDIAN
);
3246 proto_tree_add_item(aem_tree
, hf_aem_avb_interface_id
, tvb
,
3247 STREAM_OFFSET_AVB_INTERFACE_ID
, 2, ENC_BIG_ENDIAN
);
3249 proto_tree_add_item(aem_tree
, hf_aem_buffer_length
, tvb
,
3250 STREAM_OFFSET_BUFFER_LENGTH
, 2, ENC_BIG_ENDIAN
);
3252 mr_offset
= tvb_get_ntohs(tvb
, STREAM_OFFSET_FORMATS_OFFSET
);
3253 mr_counter
= tvb_get_ntohs(tvb
, STREAM_OFFSET_NUMBER_OF_FORMATS
);
3255 /* set up subtree, counter, and offset for formats array */
3256 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_stream_formats
, tvb
,
3257 mr_offset
, mr_counter
* 8, ENC_NA
);
3258 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_stream_formats
);
3260 for(i
= 0; i
< mr_counter
; ++i
) {
3261 next_tvb
= tvb_new_subset_length(tvb
, mr_offset
, 8);
3262 dissect_17221_stream_format(next_tvb
, mr_subtree
);
3266 case AEM_DESCRIPTOR_JACK_INPUT
:
3267 case AEM_DESCRIPTOR_JACK_OUTPUT
:
3268 proto_tree_add_item(aem_tree
, hf_aem_jack_name
, tvb
,
3269 JACK_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3270 proto_tree_add_item(aem_tree
, hf_aem_jack_name_string
, tvb
,
3271 JACK_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3273 /* set up jack flags subtree */
3274 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_jack_flags
, tvb
,
3275 JACK_OFFSET_JACK_FLAGS
, 2, ENC_BIG_ENDIAN
);
3276 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_jack_flags
);
3277 proto_tree_add_item(mr_subtree
, hf_aem_flags_captive
, tvb
,
3278 JACK_OFFSET_JACK_FLAGS
, 2, ENC_BIG_ENDIAN
);
3279 proto_tree_add_item(mr_subtree
, hf_aem_flags_clock_sync_source
, tvb
,
3280 JACK_OFFSET_JACK_FLAGS
, 2, ENC_BIG_ENDIAN
);
3281 /* end jack flags subtree */
3283 proto_tree_add_item(aem_tree
, hf_aem_jack_type
, tvb
,
3284 JACK_OFFSET_JACK_TYPE
, 2, ENC_BIG_ENDIAN
);
3286 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3287 JACK_OFFSET_JACK_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3288 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3289 JACK_OFFSET_JACK_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3291 case AEM_DESCRIPTOR_STREAM_PORT_INPUT
:
3292 case AEM_DESCRIPTOR_STREAM_PORT_OUTPUT
:
3293 /* D20 clock domain */
3294 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3295 STREAM_PORT_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3297 /* set up port_flags subtree */
3298 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_port_flags
, tvb
,
3299 STREAM_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3300 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_port_flags
);
3301 proto_tree_add_item(mr_subtree
, hf_aem_flags_clock_sync_source
, tvb
,
3302 STREAM_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3303 proto_tree_add_item(mr_subtree
, hf_aem_flags_async_sample_rate_conv
, tvb
,
3304 STREAM_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3305 proto_tree_add_item(mr_subtree
, hf_aem_flags_sync_sample_rate_conv
, tvb
,
3306 STREAM_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3307 /* end port_flags subtree */
3309 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3310 STREAM_PORT_OFFSET_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3311 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3312 STREAM_PORT_OFFSET_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3313 proto_tree_add_item(aem_tree
, hf_aem_number_of_clusters
, tvb
,
3314 STREAM_PORT_OFFSET_NUMBER_OF_CLUSTERS
, 2, ENC_BIG_ENDIAN
);
3315 proto_tree_add_item(aem_tree
, hf_aem_base_cluster
, tvb
,
3316 STREAM_PORT_OFFSET_BASE_CLUSTER
, 2, ENC_BIG_ENDIAN
);
3317 proto_tree_add_item(aem_tree
, hf_aem_number_audio_maps
, tvb
,
3318 STREAM_PORT_OFFSET_NUMBER_AUDIO_MAPS
, 2, ENC_BIG_ENDIAN
);
3319 proto_tree_add_item(aem_tree
, hf_aem_base_audio_map
, tvb
,
3320 STREAM_PORT_OFFSET_BASE_AUDIO_MAP
, 2, ENC_BIG_ENDIAN
);
3322 case AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT
:
3323 case AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT
:
3324 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3325 EXTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3327 /* set up port_flags subtree */
3328 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_port_flags
, tvb
,
3329 EXTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3330 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_port_flags
);
3331 proto_tree_add_item(mr_subtree
, hf_aem_flags_clock_sync_source
, tvb
,
3332 EXTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3333 proto_tree_add_item(mr_subtree
, hf_aem_flags_async_sample_rate_conv
, tvb
,
3334 EXTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3335 proto_tree_add_item(mr_subtree
, hf_aem_flags_sync_sample_rate_conv
, tvb
,
3336 EXTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3337 /* end port_flags subtree */
3339 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3340 EXTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3341 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3342 EXTERNAL_PORT_OFFSET_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3343 proto_tree_add_item(aem_tree
, hf_aem_signal_type
, tvb
,
3344 EXTERNAL_PORT_OFFSET_SIGNAL_TYPE
, 2, ENC_BIG_ENDIAN
);
3345 proto_tree_add_item(aem_tree
, hf_aem_signal_index
, tvb
,
3346 EXTERNAL_PORT_OFFSET_SIGNAL_INDEX
, 2, ENC_BIG_ENDIAN
);
3347 proto_tree_add_item(aem_tree
, hf_aem_signal_output
, tvb
,
3348 EXTERNAL_PORT_OFFSET_SIGNAL_OUTPUT
, 2, ENC_BIG_ENDIAN
);
3349 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3350 EXTERNAL_PORT_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3351 proto_tree_add_item(aem_tree
, hf_aem_jack_id
, tvb
,
3352 EXTERNAL_PORT_OFFSET_JACK_INDEX
, 2, ENC_BIG_ENDIAN
);
3354 case AEM_DESCRIPTOR_INTERNAL_PORT_INPUT
:
3355 case AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT
:
3356 proto_tree_add_item(aem_tree
, hf_aem_clock_domain_id
, tvb
,
3357 INTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX
, 2, ENC_BIG_ENDIAN
);
3359 /* set up port_flags subtree */
3360 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_port_flags
, tvb
,
3361 INTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3362 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_port_flags
);
3363 proto_tree_add_item(mr_subtree
, hf_aem_flags_clock_sync_source
, tvb
,
3364 INTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3365 proto_tree_add_item(mr_subtree
, hf_aem_flags_async_sample_rate_conv
, tvb
,
3366 INTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3367 proto_tree_add_item(mr_subtree
, hf_aem_flags_sync_sample_rate_conv
, tvb
,
3368 INTERNAL_PORT_OFFSET_PORT_FLAGS
, 2, ENC_BIG_ENDIAN
);
3369 /* end port_flags subtree */
3371 proto_tree_add_item(aem_tree
, hf_aem_number_of_controls
, tvb
,
3372 INTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS
, 2, ENC_BIG_ENDIAN
);
3373 proto_tree_add_item(aem_tree
, hf_aem_base_control
, tvb
,
3374 INTERNAL_PORT_OFFSET_BASE_CONTROL
, 2, ENC_BIG_ENDIAN
);
3375 proto_tree_add_item(aem_tree
, hf_aem_signal_type
, tvb
,
3376 INTERNAL_PORT_OFFSET_SIGNAL_TYPE
, 2, ENC_BIG_ENDIAN
);
3377 proto_tree_add_item(aem_tree
, hf_aem_signal_index
, tvb
,
3378 INTERNAL_PORT_OFFSET_SIGNAL_INDEX
, 2, ENC_BIG_ENDIAN
);
3379 proto_tree_add_item(aem_tree
, hf_aem_signal_output
, tvb
,
3380 INTERNAL_PORT_OFFSET_SIGNAL_OUTPUT
, 2, ENC_BIG_ENDIAN
);
3381 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3382 INTERNAL_PORT_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3383 proto_tree_add_item(aem_tree
, hf_aem_jack_id
, tvb
,
3384 INTERNAL_PORT_OFFSET_INTERNAL_INDEX
, 2, ENC_BIG_ENDIAN
);
3386 case AEM_DESCRIPTOR_AVB_INTERFACE
:
3387 proto_tree_add_item(aem_tree
, hf_aem_interface_name
, tvb
,
3388 AVB_INTERFACE_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3389 proto_tree_add_item(aem_tree
, hf_aem_interface_name_string
, tvb
,
3390 AVB_INTERFACE_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3392 proto_tree_add_item(aem_tree
, hf_aecp_mac_address
, tvb
,
3393 AVB_INTERFACE_OFFSET_MAC_ADDRESS
, 6, ENC_NA
);
3395 proto_tree_add_item(aem_tree
, hf_aem_avb_interface_flags
, tvb
,
3396 AVB_INTERFACE_OFFSET_INTERFACE_FLAGS
, 2, ENC_BIG_ENDIAN
);
3397 proto_tree_add_item(aem_tree
, hf_aem_avb_clock_identity
, tvb
,
3398 AVB_INTERFACE_OFFSET_CLOCK_IDENTITY
, 8, ENC_BIG_ENDIAN
);
3399 proto_tree_add_item(aem_tree
, hf_aem_avb_priority1
, tvb
,
3400 AVB_INTERFACE_OFFSET_PRIORITY1
, 1, ENC_BIG_ENDIAN
);
3401 proto_tree_add_item(aem_tree
, hf_aem_avb_clock_class
, tvb
,
3402 AVB_INTERFACE_OFFSET_CLOCK_CLASS
, 1, ENC_BIG_ENDIAN
);
3403 proto_tree_add_item(aem_tree
, hf_aem_avb_offset_scaled_log_variance
, tvb
,
3404 AVB_INTERFACE_OFFSET_OFFSET_SCALED_LOG_VARIANCE
, 2, ENC_BIG_ENDIAN
);
3405 proto_tree_add_item(aem_tree
, hf_aem_avb_clock_accuracy
, tvb
,
3406 AVB_INTERFACE_OFFSET_CLOCK_ACCURACY
, 1, ENC_BIG_ENDIAN
);
3407 proto_tree_add_item(aem_tree
, hf_aem_avb_priority2
, tvb
,
3408 AVB_INTERFACE_OFFSET_PRIORITY2
, 1, ENC_BIG_ENDIAN
);
3409 proto_tree_add_item(aem_tree
, hf_aem_avb_domain_number
, tvb
,
3410 AVB_INTERFACE_OFFSET_DOMAIN_NUMBER
, 1, ENC_BIG_ENDIAN
);
3411 proto_tree_add_item(aem_tree
, hf_aem_avb_log_sync_interval
, tvb
,
3412 AVB_INTERFACE_OFFSET_LOG_SYNC_INTERVAL
, 1, ENC_BIG_ENDIAN
);
3414 case AEM_DESCRIPTOR_CLOCK_SOURCE
:
3415 proto_tree_add_item(aem_tree
, hf_aem_clock_source_name
, tvb
,
3416 CLOCK_SOURCE_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3417 proto_tree_add_item(aem_tree
, hf_aem_clock_source_name_string
, tvb
,
3418 CLOCK_SOURCE_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3419 /* set up clock_source_flags subtree */
3420 /*mr_item = */proto_tree_add_item(aem_tree
, hf_aem_clock_source_flags
, tvb
,
3421 CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_FLAGS
, 2, ENC_BIG_ENDIAN
);
3422 /* mr_subtree = proto_item_add_subtree(mr_item, ett_aem_clock_source_flags);*/
3423 /* all flags reserved */
3424 /* end clock_source_flags subtree */
3425 proto_tree_add_item(aem_tree
, hf_aem_clock_source_type
, tvb
,
3426 CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_TYPE
, 2, ENC_BIG_ENDIAN
);
3427 proto_tree_add_item(aem_tree
, hf_aecp_clock_source_id
, tvb
,
3428 CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_IDENTIFIER
, 8, ENC_BIG_ENDIAN
);
3429 proto_tree_add_item(aem_tree
, hf_aem_clock_source_location_type
, tvb
,
3430 CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_TYPE
, 2, ENC_BIG_ENDIAN
);
3431 proto_tree_add_item(aem_tree
, hf_aem_clock_source_location_id
, tvb
,
3432 CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_INDEX
, 2, ENC_BIG_ENDIAN
);
3434 case AEM_DESCRIPTOR_AUDIO_MAP
:
3435 proto_tree_add_item(aem_tree
, hf_aem_mappings_offset
, tvb
,
3436 AUDIO_MAP_OFFSET_MAPPINGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
3437 proto_tree_add_item(aem_tree
, hf_aem_number_of_mappings
, tvb
,
3438 AUDIO_MAP_OFFSET_NUMBER_OF_MAPPINGS
, 2, ENC_BIG_ENDIAN
);
3440 /* prepare mappings subtree */
3441 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_mappings
, tvb
,
3443 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_mappings
);
3444 mr_offset
= tvb_get_ntohs(tvb
, AUDIO_MAP_OFFSET_MAPPINGS_OFFSET
);
3445 mr_counter
= tvb_get_ntohs(tvb
, AUDIO_MAP_OFFSET_NUMBER_OF_MAPPINGS
);
3446 proto_item_set_len(mr_item
, mr_counter
* 8);
3448 for(i
= 0; i
< mr_counter
; i
++) {
3449 proto_tree_add_item(mr_subtree
, hf_aem_mapping_stream_index
, tvb
,
3450 mr_offset
, 2, ENC_BIG_ENDIAN
);
3452 proto_tree_add_item(mr_subtree
, hf_aem_mapping_stream_channel
, tvb
,
3453 mr_offset
, 2, ENC_BIG_ENDIAN
);
3455 proto_tree_add_item(mr_subtree
, hf_aem_mapping_cluster_offset
, tvb
,
3456 mr_offset
, 2, ENC_BIG_ENDIAN
);
3458 proto_tree_add_item(mr_subtree
, hf_aem_mapping_cluster_channel
, tvb
,
3459 mr_offset
, 2, ENC_BIG_ENDIAN
);
3463 case AEM_DESCRIPTOR_AUDIO_CLUSTER
:
3464 proto_tree_add_item(aem_tree
, hf_aem_configuration_name
, tvb
,
3465 AUDIO_CLUSTER_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3466 proto_tree_add_item(aem_tree
, hf_aem_configuration_name_string
, tvb
,
3467 AUDIO_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3469 proto_tree_add_item(aem_tree
, hf_aem_signal_type
, tvb
,
3470 AUDIO_CLUSTER_OFFSET_SIGNAL_TYPE
, 2, ENC_BIG_ENDIAN
);
3471 proto_tree_add_item(aem_tree
, hf_aem_signal_index
, tvb
,
3472 AUDIO_CLUSTER_OFFSET_SIGNAL_ID
, 2, ENC_BIG_ENDIAN
);
3473 proto_tree_add_item(aem_tree
, hf_aem_signal_output
, tvb
,
3474 AUDIO_CLUSTER_OFFSET_SIGNAL_OUTPUT
, 2, ENC_BIG_ENDIAN
);
3476 proto_tree_add_item(aem_tree
, hf_aem_path_latency
, tvb
,
3477 AUDIO_CLUSTER_OFFSET_PATH_LATENCY
, 4, ENC_BIG_ENDIAN
);
3478 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3479 AUDIO_CLUSTER_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3481 proto_tree_add_item(aem_tree
, hf_aem_channel_count
, tvb
,
3482 AUDIO_CLUSTER_OFFSET_CHANNEL_COUNT
, 2, ENC_BIG_ENDIAN
);
3484 proto_tree_add_item(aem_tree
, hf_aem_am824_label
, tvb
,
3485 AUDIO_CLUSTER_OFFSET_FORMAT
, 1, ENC_BIG_ENDIAN
);
3488 case AEM_DESCRIPTOR_CONTROL
:
3489 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3490 CONTROL_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3491 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3492 CONTROL_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3494 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3495 CONTROL_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3496 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3497 CONTROL_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3498 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3499 CONTROL_OFFSET_CONTROL_DOMAIN
, 2, ENC_BIG_ENDIAN
);
3500 proto_tree_add_item(aem_tree
, hf_aem_control_value_type
, tvb
,
3501 CONTROL_OFFSET_CONTROL_VALUE_TYPE
, 2, ENC_BIG_ENDIAN
);
3502 proto_tree_add_item(aem_tree
, hf_aem_control_type
, tvb
,
3503 CONTROL_OFFSET_CONTROL_TYPE
, 8, ENC_BIG_ENDIAN
);
3505 proto_tree_add_item(aem_tree
, hf_aem_reset_time
, tvb
,
3506 CONTROL_OFFSET_RESET_TIME
, 4, ENC_BIG_ENDIAN
);
3508 proto_tree_add_item(aem_tree
, hf_aem_values_offset
, tvb
,
3509 CONTROL_OFFSET_VALUES_OFFSET
, 2, ENC_BIG_ENDIAN
);
3510 proto_tree_add_item(aem_tree
, hf_aem_number_of_values
, tvb
,
3511 CONTROL_OFFSET_NUMBER_OF_VALUES
, 2, ENC_BIG_ENDIAN
);
3512 proto_tree_add_item(aem_tree
, hf_aem_signal_type
, tvb
,
3513 CONTROL_OFFSET_SIGNAL_TYPE
, 2, ENC_BIG_ENDIAN
);
3514 proto_tree_add_item(aem_tree
, hf_aem_signal_index
, tvb
,
3515 CONTROL_OFFSET_SIGNAL_INDEX
, 2, ENC_BIG_ENDIAN
);
3516 proto_tree_add_item(aem_tree
, hf_aem_signal_output
, tvb
,
3517 CONTROL_OFFSET_SIGNAL_OUTPUT
, 2, ENC_BIG_ENDIAN
);
3519 ctrl_val_type
= tvb_get_ntohs(tvb
, CONTROL_OFFSET_CONTROL_VALUE_TYPE
);
3520 num_ctrl_vals
= tvb_get_ntohs(tvb
, CONTROL_OFFSET_NUMBER_OF_VALUES
);
3521 mr_offset
= tvb_get_ntohs(tvb
, CONTROL_OFFSET_VALUES_OFFSET
);
3522 dissect_17221_ctrl_val(tvb
, aem_tree
, num_ctrl_vals
, ctrl_val_type
,
3526 case AEM_DESCRIPTOR_SIGNAL_SELECTOR
:
3527 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3528 SIGNAL_SELECTOR_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3529 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3530 SIGNAL_SELECTOR_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3532 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3533 SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3534 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3535 SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3536 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3537 SIGNAL_SELECTOR_OFFSET_CONTROL_DOMAIN
, 2, ENC_BIG_ENDIAN
);
3540 proto_tree_add_item(aem_tree
, hf_aem_control_location_type
, tvb
,
3541 AEM_OFFSET_CONTROL_LOCATION_TYPE_SIGS
, 2, ENC_BIG_ENDIAN
);
3542 proto_tree_add_item(aem_tree
, hf_aem_control_location_id
, tvb
,
3543 AEM_OFFSET_CONTROL_LOCATION_ID_SIGS
, 2, ENC_BIG_ENDIAN
);
3544 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3545 AEM_OFFSET_CONTROL_DOMAIN_SIGS
, 2, ENC_BIG_ENDIAN
);
3546 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3547 AEM_OFFSET_CONTROL_NAME_SIGS
, 64, ENC_ASCII
);
3548 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3549 AEM_OFFSET_CONTROL_NAME_STRING_SIGS
, 2, ENC_BIG_ENDIAN
);
3550 proto_tree_add_item(aem_tree
, hf_aem_sources_offset
, tvb
,
3551 AEM_OFFSET_SOURCES_OFFSET_SIGS
, 2, ENC_BIG_ENDIAN
);
3552 proto_tree_add_item(aem_tree
, hf_aem_number_of_sources
, tvb
,
3553 AEM_OFFSET_NUMBER_OF_SOURCES_SIGS
, 2, ENC_BIG_ENDIAN
);
3554 proto_tree_add_item(aem_tree
, hf_aem_current_signal_type
, tvb
,
3555 AEM_OFFSET_CURRENT_SOURCE_TYPE_SIGS
, 2, ENC_BIG_ENDIAN
);
3556 proto_tree_add_item(aem_tree
, hf_aem_current_signal_index
, tvb
,
3557 AEM_OFFSET_CURRENT_SOURCE_ID_SIGS
, 2, ENC_BIG_ENDIAN
);
3558 proto_tree_add_item(aem_tree
, hf_aem_default_signal_type
, tvb
,
3559 AEM_OFFSET_DEFAULT_SOURCE_TYPE_SIGS
, 2, ENC_BIG_ENDIAN
);
3560 proto_tree_add_item(aem_tree
, hf_aem_default_signal_index
, tvb
,
3561 AEM_OFFSET_DEFAULT_SOURCE_ID_SIGS
, 2, ENC_BIG_ENDIAN
);
3562 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3563 SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3564 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3565 SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3567 /* set up sources subtree */
3568 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_sources
, tvb
,
3570 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_sources
);
3571 mr_counter
= tvb_get_ntohs(tvb
, AEM_OFFSET_NUMBER_OF_SOURCES_SIGS
);
3572 mr_offset
= SIGNAL_SELECTOR_OFFSET_SOURCES
;
3573 proto_item_set_len(mr_item
, mr_counter
* 4);
3575 for(i
= 0; i
< mr_counter
; ++i
) {
3576 proto_tree_add_item(mr_subtree
, hf_aem_signal_type
, tvb
,
3577 mr_offset
, 2, ENC_BIG_ENDIAN
);
3579 proto_tree_add_item(mr_subtree
, hf_aem_signal_index
, tvb
,
3580 mr_offset
, 2, ENC_BIG_ENDIAN
);
3585 case AEM_DESCRIPTOR_MIXER
:
3586 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3587 MIXER_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3588 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3589 MIXER_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3591 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3592 MIXER_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3593 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3594 MIXER_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3595 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3596 MIXER_OFFSET_CONTROL_DOMAIN
, 2, ENC_BIG_ENDIAN
);
3599 proto_tree_add_item(aem_tree
, hf_aem_control_location_type
, tvb
,
3600 AEM_OFFSET_CONTROL_LOCATION_TYPE_MXR
, 2, ENC_BIG_ENDIAN
);
3601 proto_tree_add_item(aem_tree
, hf_aem_control_location_id
, tvb
,
3602 AEM_OFFSET_CONTROL_LOCATION_ID_MXR
, 2, ENC_BIG_ENDIAN
);
3603 proto_tree_add_item(aem_tree
, hf_aem_control_value_type
, tvb
,
3604 AEM_OFFSET_CONTROL_VALUE_TYPE_MXR
, 2, ENC_BIG_ENDIAN
);
3605 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3606 AEM_OFFSET_CONTROL_DOMAIN_MXR
, 2 ,ENC_BIG_ENDIAN
);
3607 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3608 AEM_OFFSET_CONTROL_NAME_MXR
, 64, ENC_ASCII
);
3609 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3610 AEM_OFFSET_CONTROL_NAME_STRING_MXR
, 2, ENC_BIG_ENDIAN
);
3611 proto_tree_add_item(aem_tree
, hf_aem_sources_offset
, tvb
,
3612 AEM_OFFSET_SOURCES_OFFSET_MXR
, 2, ENC_BIG_ENDIAN
);
3613 proto_tree_add_item(aem_tree
, hf_aem_number_of_sources
, tvb
,
3614 AEM_OFFSET_NUMBER_OF_SOURCES_MXR
, 2, ENC_BIG_ENDIAN
);
3615 proto_tree_add_item(aem_tree
, hf_aem_value_offset
, tvb
,
3616 AEM_OFFSET_VALUE_OFFSET_MXR
, 2, ENC_BIG_ENDIAN
);
3617 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3618 MIXER_OFFSET_BLOCK_LATENCY
, 2, ENC_BIG_ENDIAN
);
3619 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3620 MIXER_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3622 /* set up subtree for sources */
3623 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_sources
, tvb
,
3625 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_sources
);
3626 mr_counter
= tvb_get_ntohs(tvb
, AEM_OFFSET_NUMBER_OF_SOURCES_MXR
);
3627 mr_offset
= MIXER_OFFSET_SOURCES
;
3628 proto_item_set_len(mr_item
, mr_counter
* 4);
3630 for(i
= 0; i
< mr_counter
; ++i
) {
3631 proto_tree_add_item(mr_subtree
, hf_aem_signal_type
, tvb
,
3632 mr_offset
, 2, ENC_BIG_ENDIAN
);
3634 proto_tree_add_item(mr_subtree
, hf_aem_signal_index
, tvb
,
3635 mr_offset
, 2, ENC_BIG_ENDIAN
);
3639 /* end sources subtree */
3641 ctrl_val_type
= tvb_get_ntohs(tvb
, AEM_OFFSET_CONTROL_VALUE_TYPE_MXR
);
3643 dissect_17221_ctrl_val(tvb
, aem_tree
, num_ctrl_vals
, ctrl_val_type
,
3644 MIXER_OFFSET_SOURCES
+ (tvb_get_ntohs(tvb
, AEM_OFFSET_NUMBER_OF_SOURCES_MXR
) * 4));
3647 case AEM_DESCRIPTOR_MATRIX
:
3648 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3649 MATRIX_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3650 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3651 MATRIX_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3653 proto_tree_add_item(aem_tree
, hf_aem_block_latency
, tvb
,
3654 MATRIX_OFFSET_BLOCK_LATENCY
, 4, ENC_BIG_ENDIAN
);
3655 proto_tree_add_item(aem_tree
, hf_aem_control_latency
, tvb
,
3656 MATRIX_OFFSET_CONTROL_LATENCY
, 4, ENC_BIG_ENDIAN
);
3657 proto_tree_add_item(aem_tree
, hf_aem_control_domain
, tvb
,
3658 MATRIX_OFFSET_CONTROL_DOMAIN
, 2, ENC_BIG_ENDIAN
);
3661 proto_tree_add_item(aem_tree, hf_aem_control_type, tvb,
3662 AEM_OFFSET_CONTROL_TYPE_MTRX, 8, ENC_BIG_ENDIAN);
3663 proto_tree_add_item(aem_tree, hf_aem_control_location_type, tvb,
3664 AEM_OFFSET_CONTROL_LOCATION_TYPE_MTRX, 2, ENC_BIG_ENDIAN);
3665 proto_tree_add_item(aem_tree, hf_aem_control_location_id, tvb,
3666 AEM_OFFSET_CONTROL_LOCATION_ID_MTRX, 2, ENC_BIG_ENDIAN);
3667 proto_tree_add_item(aem_tree, hf_aem_control_value_type, tvb,
3668 AEM_OFFSET_CONTROL_VALUE_TYPE_MTRX, 2, ENC_BIG_ENDIAN);
3669 proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
3670 AEM_OFFSET_CONTROL_DOMAIN_MTRX, 2 ,ENC_BIG_ENDIAN);
3671 proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
3672 AEM_OFFSET_CONTROL_NAME_MTRX, 64, ENC_ASCII);
3673 proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
3674 AEM_OFFSET_CONTROL_NAME_STRING_MTRX, 2, ENC_BIG_ENDIAN);
3675 proto_tree_add_item(aem_tree, hf_aem_width, tvb,
3676 AEM_OFFSET_WIDTH_MTRX, 2, ENC_BIG_ENDIAN);
3677 proto_tree_add_item(aem_tree, hf_aem_height, tvb,
3678 AEM_OFFSET_HEIGHT_MTRX, 2, ENC_BIG_ENDIAN);
3679 proto_tree_add_item(aem_tree, hf_aem_values_offset, tvb,
3680 AEM_OFFSET_VALUES_OFFSET_MTRX, 2, ENC_BIG_ENDIAN);
3681 proto_tree_add_item(aem_tree, hf_aem_number_of_values, tvb,
3682 AEM_OFFSET_NUMBER_OF_VALUES_MTRX, 2, ENC_BIG_ENDIAN);
3684 proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
3685 MATRIX_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
3686 proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
3687 MATRIX_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
3688 proto_tree_add_item(aem_tree, hf_aem_number_of_sources, tvb,
3689 MATRIX_OFFSET_NUMBER_SOURCES, 2, ENC_BIG_ENDIAN);
3690 proto_tree_add_item(aem_tree, hf_aem_base_source, tvb,
3691 MATRIX_OFFSET_BASE_SOURCE, 2, ENC_BIG_ENDIAN);
3692 proto_tree_add_item(aem_tree, hf_aem_number_destinations, tvb,
3693 MATRIX_OFFSET_NUMBER_DESTINATIONS, 2, ENC_BIG_ENDIAN);
3694 proto_tree_add_item(aem_tree, hf_aem_base_destination, tvb,
3695 MATRIX_OFFSET_BASE_DESTINATION, 2, ENC_BIG_ENDIAN);
3697 ctrl_val_type = tvb_get_ntohs(tvb, AEM_OFFSET_CONTROL_VALUE_TYPE_MTRX);
3698 num_ctrl_vals = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_VALUES_MTRX);
3699 dissect_17221_ctrl_val(tvb, aem_tree, num_ctrl_vals, ctrl_val_type,
3700 MATRIX_OFFSET_VALUE_DETAILS);
3703 case AEM_DESCRIPTOR_LOCALE
:
3704 proto_tree_add_item(aem_tree
, hf_aem_locale_identifier
, tvb
,
3705 LOCALE_OFFSET_LOCALE_IDENTIFIER
, 64, ENC_ASCII
);
3706 proto_tree_add_item(aem_tree
, hf_aem_number_of_strings
, tvb
,
3707 LOCALE_OFFSET_NUMBER_OF_STRINGS
, 2, ENC_BIG_ENDIAN
);
3708 proto_tree_add_item(aem_tree
, hf_aem_base_strings
, tvb
,
3709 LOCALE_OFFSET_BASE_STRINGS
, 2, ENC_BIG_ENDIAN
);
3711 case AEM_DESCRIPTOR_STRINGS
:
3712 mr_offset
= STRINGS_OFFSET_STRING0
;
3713 for(i
= 0; i
< 7; ++i
) {
3714 proto_tree_add_item(aem_tree
, hf_aem_string
, tvb
,
3715 mr_offset
, 64, ENC_ASCII
);
3719 case AEM_DESCRIPTOR_MATRIX_SIGNAL
:
3720 proto_tree_add_item(aem_tree
, hf_aem_signals_count
, tvb
,
3721 MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT
, 2, ENC_BIG_ENDIAN
);
3722 proto_tree_add_item(aem_tree
, hf_aem_signals_offset
, tvb
,
3723 MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET
, 2, ENC_BIG_ENDIAN
);
3724 /* set up subtree for signals */
3725 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_sources
, tvb
,
3727 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_sources
);
3728 mr_counter
= tvb_get_ntohs(tvb
, MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT
);
3729 mr_offset
= MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET
;
3730 proto_item_set_len(mr_item
, mr_counter
* 4);
3732 for(i
= 0; i
< mr_counter
; ++i
)
3734 proto_tree_add_item(mr_subtree
, hf_aem_signal_type
, tvb
,
3735 mr_offset
, 2, ENC_BIG_ENDIAN
);
3737 proto_tree_add_item(mr_subtree
, hf_aem_signal_index
, tvb
,
3738 mr_offset
, 2, ENC_BIG_ENDIAN
);
3742 case AEM_DESCRIPTOR_MEMORY_OBJECT
:
3743 proto_tree_add_item(aem_tree
, hf_aem_memory_object_type
, tvb
,
3744 MEMORY_OBJECT_OFFSET_MEMORY_OBJECT_TYPE
, 2, ENC_BIG_ENDIAN
);
3745 proto_tree_add_item(aem_tree
, hf_aem_target_descriptor_type
, tvb
,
3746 MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3747 proto_tree_add_item(aem_tree
, hf_aem_target_descriptor_id
, tvb
,
3748 MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3749 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3750 MEMORY_OBJECT_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3751 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3752 MEMORY_OBJECT_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3753 proto_tree_add_item(aem_tree
, hf_aem_start_address
, tvb
,
3754 MEMORY_OBJECT_OFFSET_START_ADDRESS
, 8, ENC_BIG_ENDIAN
);
3755 proto_tree_add_item(aem_tree
, hf_aem_length
, tvb
,
3756 MEMORY_OBJECT_OFFSET_LENGTH
, 8, ENC_BIG_ENDIAN
);
3758 case AEM_DESCRIPTOR_CLOCK_DOMAIN
:
3759 proto_tree_add_item(aem_tree
, hf_aem_object_name
, tvb
,
3760 CLOCK_DOMAIN_OFFSET_OBJECT_NAME
, 64, ENC_ASCII
);
3761 proto_tree_add_item(aem_tree
, hf_aem_localized_description
, tvb
,
3762 CLOCK_DOMAIN_OFFSET_LOCALIZED_DESCRIPTION
, 2, ENC_BIG_ENDIAN
);
3763 proto_tree_add_item(aem_tree
, hf_aem_clock_source_index
, tvb
,
3764 CLOCK_DOMAIN_OFFSET_CLOCK_SOURCE_INDEX
, 2, ENC_BIG_ENDIAN
);
3765 proto_tree_add_item(aem_tree
, hf_aem_clock_sources_offset
, tvb
,
3766 CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_OFFSET
, 2, ENC_BIG_ENDIAN
);
3767 proto_tree_add_item(aem_tree
, hf_aem_clock_sources_count
, tvb
,
3768 CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_COUNT
, 2, ENC_BIG_ENDIAN
);
3770 /* set up a clock sources subtree */
3771 mr_counter
= tvb_get_ntohs(tvb
, CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_COUNT
);
3772 mr_offset
= tvb_get_ntohs(tvb
, CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_OFFSET
);
3773 mr_item
= proto_tree_add_item(aem_tree
, hf_aem_clock_sources_array
, tvb
,
3774 mr_offset
, mr_counter
* 2, ENC_NA
);
3775 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aem_clock_sources
);
3776 /* add clocks to new subtree */
3777 for(i
= 0; i
< mr_counter
; ++i
)
3779 proto_tree_add_item(mr_subtree
, hf_aem_clock_sources
, tvb
,
3780 mr_offset
, 2, ENC_BIG_ENDIAN
);
3786 proto_tree_add_item(aem_tree
, hf_aem_unknown_descriptor
, tvb
,
3787 4, tvb_captured_length(tvb
) - 4, ENC_NA
);
3792 /* dissect enumeration and control packets */
3794 dissect_17221_aecp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*aecp_tree
)
3797 /*uint16_t addr_type;*/
3798 /*uint16_t ctrl_data_len;*/
3799 uint16_t mess_status
;
3801 uint16_t mr_counter
;
3803 proto_item
*mr_subtree
;
3804 proto_item
*mr_item
;
3806 uint64_t vendor_unique_protocol_id
;
3807 char *vendor_unique_protocol_id_string
;
3808 /* next tvb for use in subdissection */
3810 proto_tree
*flags_tree
;
3811 proto_item
*flags_ti
;
3814 /* AECP Common Format Fields */
3815 proto_tree_add_item(aecp_tree
, hf_aecp_message_type
, tvb
,
3816 AECP_OFFSET_VERSION
, 1, ENC_BIG_ENDIAN
);
3817 proto_tree_add_item(aecp_tree
, hf_aecp_status_code
, tvb
,
3818 AECP_OFFSET_STATUS_CODE
, 1, ENC_BIG_ENDIAN
);
3819 proto_tree_add_item(aecp_tree
, hf_aecp_cd_length
, tvb
,
3820 AECP_OFFSET_CD_LENGTH
, 2, ENC_BIG_ENDIAN
);
3821 proto_tree_add_item(aecp_tree
, hf_aecp_target_guid
, tvb
,
3822 AECP_OFFSET_TARGET_GUID
, 8, ENC_BIG_ENDIAN
);
3823 proto_tree_add_item(aecp_tree
, hf_aecp_controller_guid
, tvb
,
3824 AECP_OFFSET_CONTROLLER_GUID
, 8, ENC_BIG_ENDIAN
);
3825 proto_tree_add_item(aecp_tree
, hf_aecp_sequence_id
, tvb
,
3826 AECP_OFFSET_SEQUENCE_ID
, 2, ENC_BIG_ENDIAN
);
3828 /* get the message type */
3829 mess_type
= tvb_get_ntohs(tvb
, 0) & AECP_MSG_TYPE_MASK
;
3831 if ((mess_type
== AECP_AEM_COMMAND_MESSAGE
) || (mess_type
== AECP_AEM_RESPONSE_MESSAGE
))
3833 proto_tree_add_item(aecp_tree
, hf_aecp_u_flag
, tvb
,
3834 AECP_OFFSET_U_FLAG
, 1, ENC_BIG_ENDIAN
);
3835 proto_tree_add_item(aecp_tree
, hf_aecp_command_type
, tvb
,
3836 AECP_OFFSET_COMMAND_TYPE
, 2, ENC_BIG_ENDIAN
);
3838 /* get the command type for detailed dissection */
3839 c_type
= tvb_get_ntohs(tvb
, AECP_OFFSET_COMMAND_TYPE
) & AECP_COMMAND_TYPE_MASK
;
3841 /* get the control data length field - number of octets following target_guid */
3842 /*ctrl_data_len = tvb_get_ntohs(tvb, AECP_OFFSET_CD_LENGTH) & AECP_CD_LENGTH_MASK;*/
3845 /* get the status */
3846 mess_status
= tvb_get_ntohs(tvb
, 2) & 0xF800;
3848 /* break dissection down by command type */
3849 /* fields are added in the order they are listed by 1722.1 */
3851 case AECP_COMMAND_ACQUIRE_ENTITY
:
3852 /* set up the flags subtree */
3853 flags_ti
= proto_tree_add_item(aecp_tree
, hf_aecp_flags_32
, tvb
,
3854 AECP_OFFSET_ACQUIRE_ENTITY_FLAGS
, 4, ENC_BIG_ENDIAN
);
3855 flags_tree
= proto_item_add_subtree(flags_ti
, ett_acmp_flags
);
3856 proto_tree_add_item(flags_tree
, hf_aecp_persistent_flag
, tvb
,
3857 AECP_OFFSET_ACQUIRE_ENTITY_FLAGS
, 4, ENC_BIG_ENDIAN
);
3858 proto_tree_add_item(aecp_tree
, hf_aecp_release_flag
, tvb
,
3859 AECP_OFFSET_ACQUIRE_ENTITY_FLAGS
, 4, ENC_BIG_ENDIAN
);
3860 /* end flags subtree */
3862 proto_tree_add_item(aecp_tree
, hf_aecp_owner_guid
, tvb
,
3863 AECP_OFFSET_ACQUIRE_ENTITY_OWNER_GUID
, 8, ENC_BIG_ENDIAN
);
3864 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3865 AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3866 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3867 AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3869 case AECP_COMMAND_LOCK_ENTITY
:
3870 proto_tree_add_item(aecp_tree
, hf_aecp_unlock_flag
, tvb
,
3871 AECP_OFFSET_LOCK_ENTITY_FLAGS
, 4, ENC_BIG_ENDIAN
);
3872 proto_tree_add_item(aecp_tree
, hf_aecp_locked_guid
, tvb
,
3873 AECP_OFFSET_LOCK_ENTITY_LOCKED_GUID
, 8, ENC_BIG_ENDIAN
);
3875 case AECP_COMMAND_READ_DESCRIPTOR
:
3876 proto_tree_add_item(aecp_tree
, hf_aecp_configuration
, tvb
,
3877 AECP_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX
, 2, ENC_BIG_ENDIAN
);
3879 if ((mess_type
== AECP_AEM_COMMAND_MESSAGE
)||(mess_status
!= 0))
3881 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3882 AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3883 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3884 AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3888 next_tvb
= tvb_new_subset_remaining(tvb
, AECP_OFFSET_DESCRIPTOR_DESCRIPTOR
);
3889 dissect_17221_aem(next_tvb
, pinfo
, aecp_tree
);
3892 case AECP_COMMAND_WRITE_DESCRIPTOR
:
3893 proto_tree_add_item(aecp_tree
, hf_aecp_configuration
, tvb
,
3894 AECP_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX
, 2, ENC_BIG_ENDIAN
);
3896 /* on command descriptor is value to write
3897 * on response descriptor is command value if successful
3898 * or old value if unsuccessful */
3899 next_tvb
= tvb_new_subset_remaining(tvb
, AECP_OFFSET_DESCRIPTOR_DESCRIPTOR
);
3900 dissect_17221_aem(next_tvb
, pinfo
, aecp_tree
);
3902 case AECP_COMMAND_SET_CONFIGURATION
:
3903 case AECP_COMMAND_GET_CONFIGURATION
:
3904 proto_tree_add_item(aecp_tree
, hf_aecp_configuration
,
3905 tvb
, AECP_OFFSET_CONFIGURATION_CONFIGURATION_INDEX
, 2, ENC_BIG_ENDIAN
);
3907 case AECP_COMMAND_SET_STREAM_FORMAT
:
3908 case AECP_COMMAND_GET_STREAM_FORMAT
:
3909 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3910 AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3911 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3912 AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3914 if ((mess_type
!= AECP_AEM_COMMAND_MESSAGE
)||(c_type
== AECP_COMMAND_SET_STREAM_FORMAT
))
3916 next_tvb
= tvb_new_subset_length(tvb
, AECP_OFFSET_STREAM_FORMAT_STREAM_FORMAT
, 8);
3917 dissect_17221_stream_format(next_tvb
, aecp_tree
);
3920 case AECP_COMMAND_SET_VIDEO_FORMAT
:
3921 case AECP_COMMAND_GET_VIDEO_FORMAT
:
3922 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3923 AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3924 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3925 AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3927 if ((mess_type
!= AECP_AEM_COMMAND_MESSAGE
)||(c_type
== AECP_COMMAND_SET_VIDEO_FORMAT
))
3929 next_tvb
= tvb_new_subset_length(tvb
, AECP_OFFSET_VIDEO_FORMAT_FORMAT_SPECIFIC
, 4);
3930 dissect_17221_video_format(next_tvb
, aecp_tree
);
3932 next_tvb
= tvb_new_subset_length(tvb
, AECP_OFFSET_VIDEO_FORMAT_ASPECT_RATIO
, 2);
3933 dissect_17221_video_aspect_ratio(next_tvb
, aecp_tree
);
3935 proto_tree_add_item(aecp_tree
, hf_aem_color_space
, tvb
,
3936 AECP_OFFSET_VIDEO_FORMAT_COLOR_SPACE
, 2, ENC_BIG_ENDIAN
);
3938 next_tvb
= tvb_new_subset_length(tvb
, AECP_OFFSET_VIDEO_FORMAT_FRAME_SIZE
, 4);
3939 dissect_17221_video_frame_size(next_tvb
, aecp_tree
);
3942 case AECP_COMMAND_SET_SENSOR_FORMAT
:
3943 case AECP_COMMAND_GET_SENSOR_FORMAT
:
3944 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3945 AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3946 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3947 AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3949 if ((mess_type
!= AECP_AEM_COMMAND_MESSAGE
)||(c_type
== AECP_COMMAND_SET_SENSOR_FORMAT
))
3951 next_tvb
= tvb_new_subset_length(tvb
, AECP_OFFSET_SENSOR_FORMAT_SENSOR_FORMAT
, 8);
3952 dissect_17221_sensor_format(next_tvb
, aecp_tree
);
3955 case AECP_COMMAND_SET_STREAM_INFO
:
3956 case AECP_COMMAND_GET_STREAM_INFO
:
3957 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
3958 AECP_OFFSET_STREAM_INFO_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
3959 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
3960 AECP_OFFSET_STREAM_INFO_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
3961 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_SET_STREAM_INFO
)) {
3962 proto_tree_add_item(aecp_tree
, hf_acmp_flags_class_b
, tvb
,
3963 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3964 proto_tree_add_item(aecp_tree
, hf_acmp_flags_fast_connect
, tvb
,
3965 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3966 proto_tree_add_item(aecp_tree
, hf_acmp_flags_saved_state
, tvb
,
3967 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3968 proto_tree_add_item(aecp_tree
, hf_acmp_flags_streaming_wait
, tvb
,
3969 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3970 proto_tree_add_item(aecp_tree
, hf_acmp_flags_supports_encrypted
, tvb
,
3971 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3972 proto_tree_add_item(aecp_tree
, hf_acmp_flags_encrypted_pdu
, tvb
,
3973 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3974 proto_tree_add_item(aecp_tree
, hf_acmp_flags_talker_failed
, tvb
,
3975 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3977 proto_tree_add_item(aecp_tree
, hf_aecp_stream_vlan_id_valid_flag
, tvb
,
3978 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3979 proto_tree_add_item(aecp_tree
, hf_aecp_connected_flag
, tvb
,
3980 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3981 proto_tree_add_item(aecp_tree
, hf_aecp_msrp_failure_valid_flag
, tvb
,
3982 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3983 proto_tree_add_item(aecp_tree
, hf_aecp_dest_mac_valid_flag
, tvb
,
3984 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3985 proto_tree_add_item(aecp_tree
, hf_aecp_msrp_acc_lat_valid_flag
, tvb
,
3986 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3987 proto_tree_add_item(aecp_tree
, hf_aecp_stream_id_valid_flag
, tvb
,
3988 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3989 proto_tree_add_item(aecp_tree
, hf_aecp_stream_format_valid_flag
, tvb
,
3990 AECP_OFFSET_STREAM_INFO_FLAGS
, 4, ENC_BIG_ENDIAN
);
3992 proto_tree_add_item(aecp_tree
, hf_aecp_stream_format
, tvb
,
3993 AECP_OFFSET_STREAM_INFO_STREAM_FORMAT
, 8, ENC_BIG_ENDIAN
);
3994 proto_tree_add_item(aecp_tree
, hf_acmp_stream_id
, tvb
,
3995 AECP_OFFSET_STREAM_INFO_STREAM_ID
, 8, ENC_BIG_ENDIAN
);
3997 proto_tree_add_item(aecp_tree
, hf_aecp_msrp_accumulated_latency
, tvb
,
3998 AECP_OFFSET_STREAM_INFO_MSRP_ACCUMULATED_LATENCY
, 4, ENC_BIG_ENDIAN
);
3999 proto_tree_add_item(aecp_tree
, hf_acmp_stream_dest_mac
, tvb
,
4000 AECP_OFFSET_STREAM_INFO_STREAM_DEST_MAC
, 6, ENC_NA
);
4001 proto_tree_add_item(aecp_tree
, hf_aecp_msrp_failure_code
, tvb
,
4002 AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_CODE
, 1, ENC_BIG_ENDIAN
);
4003 proto_tree_add_item(aecp_tree
, hf_aecp_msrp_failure_bridge_id
, tvb
,
4004 AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_BRIDGE_ID
, 8, ENC_NA
);
4007 case AECP_COMMAND_SET_NAME
:
4008 case AECP_COMMAND_GET_NAME
:
4009 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4010 AECP_OFFSET_NAME_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4011 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4012 AECP_OFFSET_NAME_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4013 proto_tree_add_item(aecp_tree
, hf_aecp_name_index
, tvb
,
4014 AECP_OFFSET_NAME_NAME_INDEX
, 2, ENC_BIG_ENDIAN
);
4015 proto_tree_add_item(aecp_tree
, hf_aecp_configuration_index
, tvb
,
4016 AECP_OFFSET_NAME_CONFIGURATION_INDEX
, 2, ENC_BIG_ENDIAN
);
4018 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_SET_NAME
)) {
4019 proto_tree_add_item(aecp_tree
, hf_aecp_name
, tvb
,
4020 AECP_OFFSET_NAME_NAME
, 64, ENC_ASCII
);
4023 case AECP_COMMAND_SET_ASSOCIATION_ID
:
4024 case AECP_COMMAND_GET_ASSOCIATION_ID
:
4025 proto_tree_add_item(aecp_tree
, hf_aecp_association_id
, tvb
,
4026 AECP_OFFSET_ASSOCIATION_ID_ASSOCIATION_ID
, 8, ENC_BIG_ENDIAN
);
4028 case AECP_COMMAND_SET_SAMPLING_RATE
:
4029 case AECP_COMMAND_GET_SAMPLING_RATE
:
4030 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4031 AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4032 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4033 AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4034 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_SET_SAMPLING_RATE
)) {
4035 proto_tree_add_item(aecp_tree
,hf_aecp_sampling_rate_pull
, tvb
,
4036 AECP_OFFSET_SAMPLING_RATE_SAMPLING_RATE
, 1, ENC_BIG_ENDIAN
);
4037 proto_tree_add_item(aecp_tree
, hf_aecp_sampling_rate_base_frequency
, tvb
,
4038 AECP_OFFSET_SAMPLING_RATE_SAMPLING_RATE
, 4, ENC_BIG_ENDIAN
);
4041 case AECP_COMMAND_SET_CLOCK_SOURCE
:
4042 case AECP_COMMAND_GET_CLOCK_SOURCE
:
4043 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4044 AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4045 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4046 AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4047 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_SET_CLOCK_SOURCE
)) {
4048 proto_tree_add_item(aecp_tree
, hf_aem_clock_source_id
, tvb
,
4049 AECP_OFFSET_CLOCK_SOURCE_CLOCK_SOURCE_INDEX
, 2, ENC_BIG_ENDIAN
);
4052 case AECP_COMMAND_SET_CONTROL_VALUE
:
4053 case AECP_COMMAND_GET_CONTROL_VALUE
:
4054 case AECP_COMMAND_SET_MIXER
:
4055 case AECP_COMMAND_GET_MIXER
:
4056 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4057 AECP_OFFSET_CONTROL_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4058 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4059 AECP_OFFSET_CONTROL_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4060 /* TODO: dissect control/mixer values */
4062 case AECP_COMMAND_INCREMENT_CONTROL
:
4063 case AECP_COMMAND_DECREMENT_CONTROL
:
4064 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4065 AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4066 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4067 AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4068 /* TODO: dissect control index list (message) or values (response) */
4070 case AECP_COMMAND_SET_SIGNAL_SELECTOR
:
4071 case AECP_COMMAND_GET_SIGNAL_SELECTOR
:
4072 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4073 AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4074 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4075 AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4076 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_SET_SIGNAL_SELECTOR
)) {
4077 proto_tree_add_item(aecp_tree
, hf_aecp_signal_type
, tvb
,
4078 AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_TYPE
, 2, ENC_BIG_ENDIAN
);
4079 proto_tree_add_item(aecp_tree
, hf_aecp_signal_index
, tvb
,
4080 AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_INDEX
, 2, ENC_BIG_ENDIAN
);
4081 proto_tree_add_item(aecp_tree
, hf_aecp_signal_output
, tvb
,
4082 AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_OUTPUT
, 2, ENC_BIG_ENDIAN
);
4085 case AECP_COMMAND_GET_MATRIX
:
4086 case AECP_COMMAND_SET_MATRIX
:
4087 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4088 AECP_OFFSET_MATRIX_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4089 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4090 AECP_OFFSET_MATRIX_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4091 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_column
, tvb
,
4092 AECP_OFFSET_MATRIX_MATRIX_COLUMN
, 2, ENC_BIG_ENDIAN
);
4093 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_row
, tvb
,
4094 AECP_OFFSET_MATRIX_MATRIX_ROW
, 2, ENC_BIG_ENDIAN
);
4095 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_region_width
, tvb
,
4096 AECP_OFFSET_MATRIX_REGION_WIDTH
, 2, ENC_BIG_ENDIAN
);
4097 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
,
4098 AECP_OFFSET_MATRIX_REP
, 1, ENC_BIG_ENDIAN
);
4099 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_direction
, tvb
,
4100 AECP_OFFSET_MATRIX_DIRECTION
, 1, ENC_BIG_ENDIAN
);
4101 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_value_count
, tvb
,
4102 AECP_OFFSET_MATRIX_VALUE_COUNT
, 2, ENC_BIG_ENDIAN
);
4103 proto_tree_add_item(aecp_tree
, hf_aecp_matrix_item_offset
, tvb
,
4104 AECP_OFFSET_MATRIX_ITEM_OFFSET
, 2, ENC_BIG_ENDIAN
);
4106 if ((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) || (c_type
== AECP_COMMAND_GET_MATRIX
)) {
4107 /* TODO: dissect matrix values */
4110 case AECP_COMMAND_START_STREAMING
:
4111 case AECP_COMMAND_STOP_STREAMING
:
4112 case AECP_COMMAND_REBOOT
:
4113 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4114 AECP_OFFSET_STREAMING_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4115 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4116 AECP_OFFSET_STREAMING_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4118 case AECP_COMMAND_REGISTER_UNSOL_NOTIFICATION
:
4119 case AECP_COMMAND_DEREGISTER_UNSOL_NOTIFICATION
:
4120 /* No additional fields in these command types */
4122 case AECP_COMMAND_IDENTIFY_NOTIFICATION
:
4123 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4124 AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4125 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4126 AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4128 case AECP_COMMAND_GET_AVB_INFO
:
4129 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4130 AECP_OFFSET_AVB_INFO_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4131 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4132 AECP_OFFSET_AVB_INFO_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4133 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4134 proto_tree_add_item(aecp_tree
, hf_aecp_avb_info_ptp_grandmaster_id
, tvb
,
4135 AECP_OFFSET_AVB_INFO_AS_GRANDMASTER_ID
, 8, ENC_BIG_ENDIAN
);
4136 proto_tree_add_item(aecp_tree
, hf_aecp_avb_info_propegation_delay
, tvb
,
4137 AECP_OFFSET_AVB_INFO_PROPAGATION_DELAY
, 4, ENC_BIG_ENDIAN
);
4138 proto_tree_add_item(aecp_tree
, hf_aecp_avb_info_gptp_domain_number
, tvb
,
4139 AECP_OFFSET_AVB_INFO_AS_DOMAIN_NUMBER
, 1, ENC_BIG_ENDIAN
);
4140 proto_tree_add_item(aecp_tree
, hf_aecp_as_capable_flag
, tvb
,
4141 AECP_OFFSET_AVB_INFO_FLAGS
, 1, ENC_BIG_ENDIAN
);
4142 proto_tree_add_item(aecp_tree
, hf_aecp_gptp_enabled_flag
, tvb
,
4143 AECP_OFFSET_AVB_INFO_FLAGS
, 1, ENC_BIG_ENDIAN
);
4144 proto_tree_add_item(aecp_tree
, hf_aecp_srp_enabled_flag
, tvb
,
4145 AECP_OFFSET_AVB_INFO_FLAGS
, 1, ENC_BIG_ENDIAN
);
4146 proto_tree_add_item(aecp_tree
, hf_aecp_avb_info_msrp_mappings_count
, tvb
,
4147 AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS_COUNT
, 2, ENC_BIG_ENDIAN
);
4149 /* prepare msrp mappings subtree */
4150 mr_item
= proto_tree_add_item(aecp_tree
, hf_aecp_avb_info_msrp_mappings
, tvb
,
4152 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aecp_get_avb_info_msrp_mappings
);
4153 mr_counter
= tvb_get_ntohs(tvb
, AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS_COUNT
);
4155 mr_offset
= AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS
;
4156 for (i
= 0; i
< mr_counter
; i
++) {
4157 proto_tree_add_item(mr_subtree
, hf_aecp_avb_info_msrp_mapping_traffic_class
, tvb
,
4158 mr_offset
, 1, ENC_BIG_ENDIAN
);
4160 proto_tree_add_item(mr_subtree
, hf_aecp_avb_info_msrp_mapping_priority
, tvb
,
4161 mr_offset
, 1, ENC_BIG_ENDIAN
);
4163 proto_tree_add_item(mr_subtree
, hf_aecp_get_avb_info_msrp_vlan_id
, tvb
,
4164 mr_offset
, 2, ENC_BIG_ENDIAN
);
4169 case AECP_COMMAND_GET_AS_PATH
:
4170 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4171 AECP_OFFSET_AS_PATH_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4172 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4173 proto_tree_add_item(aecp_tree
, hf_aecp_as_path_count
, tvb
,
4174 AECP_OFFSET_AS_PATH_COUNT
, 2, ENC_BIG_ENDIAN
);
4175 mr_item
= proto_tree_add_item(aecp_tree
, hf_aecp_as_path_sequences
, tvb
,
4177 mr_subtree
= proto_item_add_subtree(mr_item
, ett_aecp_get_as_path_sequences
);
4178 mr_counter
= tvb_get_ntohs(tvb
, AECP_OFFSET_AS_PATH_COUNT
);
4179 mr_offset
= AECP_OFFSET_AS_PATH_PATH_SEQUENCE
;
4180 for (i
= 0; i
< mr_counter
; i
++) {
4181 proto_tree_add_item(mr_subtree
, hf_aecp_get_as_info_clock_id
, tvb
,
4182 mr_offset
, 8, ENC_BIG_ENDIAN
);
4187 case AECP_COMMAND_GET_COUNTERS
:
4188 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4189 AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4190 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4191 AECP_OFFSET_COUNTERS_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4192 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4194 /*flags_ti = */ proto_tree_add_item(aecp_tree
, hf_aecp_flags_32
, tvb
,
4195 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4196 /*flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);*/
4198 /* begin counters_valid flags field */
4199 switch (tvb_get_ntohs(tvb
, AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE
)) {
4200 case AEM_DESCRIPTOR_ENTITY
:
4202 case AEM_DESCRIPTOR_AVB_INTERFACE
:
4203 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_link_up_valid
, tvb
,
4204 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4205 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_link_down_valid
, tvb
,
4206 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4207 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_packets_tx_valid
, tvb
,
4208 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4209 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_packets_rx_valid
, tvb
,
4210 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4211 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_rx_crc_error_valid
, tvb
,
4212 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4213 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_gptp_gm_changed_valid
, tvb
,
4214 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4216 case AEM_DESCRIPTOR_CLOCK_DOMAIN
:
4217 proto_tree_add_item(aecp_tree
, hf_aecp_clock_domain_locked_valid
, tvb
,
4218 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4219 proto_tree_add_item(aecp_tree
, hf_aecp_clock_domain_unlocked_valid
, tvb
,
4220 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4222 case AEM_DESCRIPTOR_STREAM_INPUT
:
4223 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_locked_valid
, tvb
,
4224 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4225 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_unlocked_valid
, tvb
,
4226 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4227 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_stream_reset_valid
, tvb
,
4228 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4229 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_seq_num_mismatch_valid
, tvb
,
4230 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4231 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_reset_valid
, tvb
,
4232 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4233 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_uncertain_valid
, tvb
,
4234 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4235 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_valid_valid
, tvb
,
4236 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4237 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_not_valid_valid
, tvb
,
4238 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4239 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_unsupported_format_valid
, tvb
,
4240 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4241 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_late_timestamp_valid
, tvb
,
4242 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4243 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_early_timestamp_valid
, tvb
,
4244 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4245 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_packets_tx_valid
, tvb
,
4246 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4247 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_packets_rx_valid
, tvb
,
4248 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4254 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific1_valid
, tvb
,
4255 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4256 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific2_valid
, tvb
,
4257 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4258 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific3_valid
, tvb
,
4259 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4260 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific4_valid
, tvb
,
4261 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4262 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific5_valid
, tvb
,
4263 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4264 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific6_valid
, tvb
,
4265 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4266 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific7_valid
, tvb
,
4267 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4268 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific8_valid
, tvb
,
4269 AECP_OFFSET_COUNTERS_VALID
, 4, ENC_BIG_ENDIAN
);
4272 /* end counters_valid flags field */
4275 switch (tvb_get_ntohs(tvb
, AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE
)) {
4276 case AEM_DESCRIPTOR_ENTITY
:
4278 case AEM_DESCRIPTOR_AVB_INTERFACE
:
4279 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_link_up
, tvb
,
4280 AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_UP
, 4, ENC_BIG_ENDIAN
);
4281 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_link_down
, tvb
,
4282 AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_DOWN
, 4, ENC_BIG_ENDIAN
);
4283 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_packets_tx
, tvb
,
4284 AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_TX
, 4, ENC_BIG_ENDIAN
);
4285 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_packets_rx
, tvb
,
4286 AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_RX
, 4, ENC_BIG_ENDIAN
);
4287 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_rx_crc_error
, tvb
,
4288 AECP_OFFSET_COUNTERS_AVB_INTERFACE_RX_CRC_ERROR
, 4, ENC_BIG_ENDIAN
);
4289 proto_tree_add_item(aecp_tree
, hf_aecp_avb_interface_gptp_gm_changed
, tvb
,
4290 AECP_OFFSET_COUNTERS_AVB_INTERFACE_GPTP_GM_CHANGED
, 4, ENC_BIG_ENDIAN
);
4292 case AEM_DESCRIPTOR_CLOCK_DOMAIN
:
4293 proto_tree_add_item(aecp_tree
, hf_aecp_clock_domain_locked
, tvb
,
4294 AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_LOCKED
, 4, ENC_BIG_ENDIAN
);
4295 proto_tree_add_item(aecp_tree
, hf_aecp_clock_domain_unlocked
, tvb
,
4296 AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_UNLOCKED
, 4, ENC_BIG_ENDIAN
);
4298 case AEM_DESCRIPTOR_STREAM_INPUT
:
4299 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_locked
, tvb
,
4300 AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_LOCKED
, 4, ENC_BIG_ENDIAN
);
4301 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_unlocked
, tvb
,
4302 AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_UNLOCKED
, 4, ENC_BIG_ENDIAN
);
4303 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_stream_reset
, tvb
,
4304 AECP_OFFSET_COUNTERS_STREAM_INPUT_STREAM_RESET
, 4, ENC_BIG_ENDIAN
);
4305 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_seq_num_mismatch
, tvb
,
4306 AECP_OFFSET_COUNTERS_STREAM_INPUT_SEQ_NUM_MISMATCH
, 4, ENC_BIG_ENDIAN
);
4307 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_media_reset
, tvb
,
4308 AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_RESET
, 4, ENC_BIG_ENDIAN
);
4309 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_uncertain
, tvb
,
4310 AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_UNCERTAIN
, 4, ENC_BIG_ENDIAN
);
4311 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_valid
, tvb
,
4312 AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_VALID
, 4, ENC_BIG_ENDIAN
);
4313 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_timestamp_not_valid
, tvb
,
4314 AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_NOT_VALID
, 4, ENC_BIG_ENDIAN
);
4315 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_unsupported_format
, tvb
,
4316 AECP_OFFSET_COUNTERS_STREAM_INPUT_UNSUPPORTED_FORMAT
, 4, ENC_BIG_ENDIAN
);
4317 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_late_timestamp
, tvb
,
4318 AECP_OFFSET_COUNTERS_STREAM_INPUT_LATE_TIMESTAMP
, 4, ENC_BIG_ENDIAN
);
4319 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_early_timestamp
, tvb
,
4320 AECP_OFFSET_COUNTERS_STREAM_INPUT_EARLY_TIMESTAMP
, 4, ENC_BIG_ENDIAN
);
4321 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_packets_tx
, tvb
,
4322 AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_TX
, 4, ENC_BIG_ENDIAN
);
4323 proto_tree_add_item(aecp_tree
, hf_aecp_stream_input_packets_rx
, tvb
,
4324 AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_RX
, 4, ENC_BIG_ENDIAN
);
4330 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific1
, tvb
,
4331 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_1
, 4, ENC_BIG_ENDIAN
);
4332 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific2
, tvb
,
4333 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_2
, 4, ENC_BIG_ENDIAN
);
4334 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific3
, tvb
,
4335 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_3
, 4, ENC_BIG_ENDIAN
);
4336 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific4
, tvb
,
4337 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_4
, 4, ENC_BIG_ENDIAN
);
4338 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific5
, tvb
,
4339 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_5
, 4, ENC_BIG_ENDIAN
);
4340 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific6
, tvb
,
4341 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_6
, 4, ENC_BIG_ENDIAN
);
4342 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific7
, tvb
,
4343 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_7
, 4, ENC_BIG_ENDIAN
);
4344 proto_tree_add_item(aecp_tree
, hf_aecp_entity_specific8
, tvb
,
4345 AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_8
, 4, ENC_BIG_ENDIAN
);
4349 case AECP_COMMAND_GET_AUDIO_MAP
:
4350 case AECP_COMMAND_GET_VIDEO_MAP
:
4351 case AECP_COMMAND_GET_SENSOR_MAP
:
4352 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4353 AECP_OFFSET_MAP_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4354 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4355 AECP_OFFSET_MAP_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4356 proto_tree_add_item(aecp_tree
, hf_aecp_map_index
, tvb
,
4357 AECP_OFFSET_MAP_MAP_INDEX
, 2, ENC_BIG_ENDIAN
);
4358 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4359 proto_tree_add_item(aecp_tree
, hf_aecp_number_of_maps
, tvb
,
4360 AECP_OFFSET_MAP_NUMBER_OF_MAPS
, 2, ENC_BIG_ENDIAN
);
4361 proto_tree_add_item(aecp_tree
, hf_aecp_number_of_maps
, tvb
,
4362 AECP_OFFSET_MAP_NUMBER_OF_MAPPINGS
, 2, ENC_BIG_ENDIAN
);
4363 /* TODO: dissect mappings */
4366 case AECP_COMMAND_ADD_AUDIO_MAPPINGS
:
4367 case AECP_COMMAND_REMOVE_AUDIO_MAPPINGS
:
4368 case AECP_COMMAND_ADD_VIDEO_MAPPINGS
:
4369 case AECP_COMMAND_REMOVE_VIDEO_MAPPINGS
:
4370 case AECP_COMMAND_ADD_SENSOR_MAPPINGS
:
4371 case AECP_COMMAND_REMOVE_SENSOR_MAPPINGS
:
4372 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4373 AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4374 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4375 AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4376 proto_tree_add_item(aecp_tree
, hf_aecp_number_of_maps
, tvb
,
4377 AECP_OFFSET_ADDREM_MAP_NUMBER_OF_MAPPINGS
, 2, ENC_BIG_ENDIAN
);
4378 /* TODO: dissect mappings */
4380 case AECP_COMMAND_START_OPERATION
:
4381 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4382 AECP_OFFSET_START_OPERATION_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4383 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4384 AECP_OFFSET_START_OPERATION_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4385 proto_tree_add_item(aecp_tree
, hf_aecp_operation_id
, tvb
,
4386 AECP_OFFSET_START_OPERATION_OPERATION_ID
, 2, ENC_BIG_ENDIAN
);
4387 proto_tree_add_item(aecp_tree
, hf_aecp_operation_type
, tvb
,
4388 AECP_OFFSET_START_OPERATION_OPERATION_TYPE
, 2, ENC_BIG_ENDIAN
);
4389 /* TODO: add values support when operation types are defined */
4391 case AECP_COMMAND_ABORT_OPERATION
:
4392 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4393 AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4394 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4395 AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4396 proto_tree_add_item(aecp_tree
, hf_aecp_operation_id
, tvb
,
4397 AECP_OFFSET_ABORT_OPERATION_OPERATION_ID
, 2, ENC_BIG_ENDIAN
);
4399 case AECP_COMMAND_OPERATION_STATUS
:
4400 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4401 AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4402 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4403 AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4404 proto_tree_add_item(aecp_tree
, hf_aecp_operation_id
, tvb
,
4405 AECP_OFFSET_OPERATION_STATUS_OPERATION_ID
, 2, ENC_BIG_ENDIAN
);
4406 proto_tree_add_item(aecp_tree
, hf_aecp_percent_complete
, tvb
,
4407 AECP_OFFSET_OPERATION_STATUS_PERCENT_COMPLETE
, 2, ENC_BIG_ENDIAN
);
4409 case AECP_COMMAND_AUTH_ADD_KEY
:
4410 case AECP_COMMAND_AUTH_DELETE_KEY
:
4411 case AECP_COMMAND_AUTH_GET_KEY
:
4412 proto_tree_add_item(aecp_tree
, hf_aecp_key_eui
, tvb
,
4413 AECP_OFFSET_AUTH_KEY_KEY_EUI
, 8, ENC_BIG_ENDIAN
);
4414 proto_tree_add_item(aecp_tree
, hf_aecp_key_type
, tvb
,
4415 AECP_OFFSET_AUTH_KEY_KEY_TYPE
, 1, ENC_BIG_ENDIAN
);
4416 proto_tree_add_item(aecp_tree
, hf_aecp_key_length
, tvb
,
4417 AECP_OFFSET_AUTH_KEY_KEY_LENGTH
, 2, ENC_BIG_ENDIAN
);
4419 if (((mess_type
== AECP_AEM_RESPONSE_MESSAGE
) && (c_type
== AECP_COMMAND_AUTH_GET_KEY
)) ||
4420 ((mess_type
== AECP_AEM_COMMAND_MESSAGE
) && (c_type
== AECP_COMMAND_AUTH_ADD_KEY
))) {
4422 mr_counter
= tvb_get_ntohs(tvb
, AECP_OFFSET_AUTH_KEY_KEY_LENGTH
) & AECP_KEY_LENGTH_MASK
;
4423 proto_tree_add_item(aecp_tree
, hf_aecp_key
, tvb
,
4424 AECP_OFFSET_AUTH_KEY_KEY
, mr_counter
, ENC_NA
);
4427 case AECP_COMMAND_AUTH_GET_KEY_LIST
:
4428 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_id_small
, tvb
,
4429 AECP_OFFSET_AUTH_GET_KEY_LIST_KEYCHAIN_ID
, 1, ENC_BIG_ENDIAN
);
4430 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4431 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_id_small
, tvb
,
4432 AECP_OFFSET_AUTH_GET_KEY_LIST_NUMBER_OF_KEYS
, 1, ENC_BIG_ENDIAN
);
4435 case AECP_COMMAND_AUTH_ADD_KEY_TO_CHAIN
:
4436 case AECP_COMMAND_AUTH_DELETE_KEY_FROM_CHAIN
:
4437 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_id
, tvb
,
4438 AECP_OFFSET_AUTH_KEYCHAIN_KEYCHAIN_ID
, 2, ENC_BIG_ENDIAN
);
4439 proto_tree_add_item(aecp_tree
, hf_aecp_key_eui
, tvb
,
4440 AECP_OFFSET_AUTH_KEYCHAIN_KEY_EUI
, 8, ENC_BIG_ENDIAN
);
4442 case AECP_COMMAND_AUTH_GET_KEYCHAIN_LIST
:
4443 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_id
, tvb
,
4444 AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_KEYCHAIN_ID
, 2, ENC_BIG_ENDIAN
);
4445 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_list_index
, tvb
,
4446 AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_LIST_INDEX
, 2, ENC_BIG_ENDIAN
);
4447 if (mess_type
== AECP_AEM_RESPONSE_MESSAGE
) {
4448 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_number_of_lists
, tvb
,
4449 AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_LISTS
, 2, ENC_BIG_ENDIAN
);
4450 proto_tree_add_item(aecp_tree
, hf_aecp_keychain_number_of_keys
, tvb
,
4451 AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_KEYS
, 2, ENC_BIG_ENDIAN
);
4452 /* TODO: dissect key euis */
4455 case AECP_COMMAND_AUTH_GET_IDENTITY
:
4456 proto_tree_add_item(aecp_tree
, hf_aecp_key_eui
, tvb
,
4457 AECP_OFFSET_AUTH_GET_IDENTITY_KEY_GUID
, 8, ENC_BIG_ENDIAN
);
4458 proto_tree_add_item(aecp_tree
, hf_aecp_key_signature
, tvb
,
4459 AECP_OFFSET_AUTH_GET_IDENTITY_SIGNATURE
, 28, ENC_NA
);
4461 case AECP_COMMAND_AUTH_ADD_TOKEN
:
4462 if (mess_type
== AECP_AEM_COMMAND_MESSAGE
) {
4463 uint32_t token_length
= tvb_get_ntohl(tvb
, AECP_OFFSET_AUTH_TOKEN_TOKEN_LENGTH
);
4464 proto_tree_add_item(aecp_tree
, hf_aecp_key_length
, tvb
,
4465 AECP_OFFSET_AUTH_TOKEN_TOKEN_LENGTH
, 2, ENC_BIG_ENDIAN
);
4466 proto_tree_add_item(aecp_tree
, hf_aecp_key_signature
, tvb
,
4467 AECP_OFFSET_AUTH_TOKEN_AUTHENTICATION_TOKEN
, token_length
, ENC_NA
);
4470 case AECP_COMMAND_AUTH_DELETE_TOKEN
:
4471 /* No command specific fields */
4473 case AECP_COMMAND_AUTHENTICATE
:
4474 case AECP_COMMAND_DEAUTHENTICATE
:
4475 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4476 AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4477 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4478 AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4479 proto_tree_add_item(aecp_tree
, hf_aecp_token_length
, tvb
,
4480 AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH
, 2, ENC_BIG_ENDIAN
);
4482 mr_counter
= tvb_get_ntohs(tvb
, AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH
)
4483 & AECP_TOKEN_LENGTH_MASK
;
4484 proto_tree_add_item(aecp_tree
, hf_aecp_auth_token
, tvb
,
4485 AECP_OFFSET_AUTHENTICATE_AUTH_TOKEN
, mr_counter
, ENC_NA
);
4487 case AECP_COMMAND_ENABLE_TRANSPORT_SECURITY
:
4488 proto_tree_add_item(aecp_tree
, hf_aecp_key_eui
, tvb
,
4489 AECP_OFFSET_TRANSPORT_SECURITY_KEY_EUI
, 8, ENC_BIG_ENDIAN
);
4491 case AECP_COMMAND_DISABLE_TRANSPORT_SECURITY
:
4492 /* No command specific fields */
4494 case AECP_COMMAND_ENABLE_STREAM_ENCRYPTION
:
4495 case AECP_COMMAND_DISABLE_STREAM_ENCRYPTION
:
4496 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4497 AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4498 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4499 AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4500 if (c_type
== AECP_COMMAND_ENABLE_STREAM_ENCRYPTION
) {
4501 proto_tree_add_item(aecp_tree
, hf_aecp_key_eui
, tvb
,
4502 AECP_OFFSET_STREAM_ENCRYPTION_KEY_EUI
, 8, ENC_BIG_ENDIAN
);
4506 case AECP_COMMAND_SET_STREAM_BACKUP
:
4507 case AECP_COMMAND_GET_STREAM_BACKUP
:
4508 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_type
, tvb
,
4509 AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_TYPE
, 2, ENC_BIG_ENDIAN
);
4510 proto_tree_add_item(aecp_tree
, hf_aecp_descriptor_index
, tvb
,
4511 AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_INDEX
, 2, ENC_BIG_ENDIAN
);
4512 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_entity_id_0
, tvb
,
4513 AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_0
, 8, ENC_BIG_ENDIAN
);
4514 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_unique_id_0
, tvb
,
4515 AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_0
, 2, ENC_BIG_ENDIAN
);
4516 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_entity_id_1
, tvb
,
4517 AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_1
, 8, ENC_BIG_ENDIAN
);
4518 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_unique_id_1
, tvb
,
4519 AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_1
, 2, ENC_BIG_ENDIAN
);
4520 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_entity_id_2
, tvb
,
4521 AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_2
, 8, ENC_BIG_ENDIAN
);
4522 proto_tree_add_item(aecp_tree
, hf_aecp_backup_talker_unique_id_2
, tvb
,
4523 AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_2
, 2, ENC_BIG_ENDIAN
);
4524 proto_tree_add_item(aecp_tree
, hf_aecp_backedup_talker_entity_id
, tvb
,
4525 AECP_OFFSET_STREAM_BACKEDUP_TALKER_ENTITY_ID
, 8, ENC_BIG_ENDIAN
);
4526 proto_tree_add_item(aecp_tree
, hf_aecp_backedup_talker_unique_id
, tvb
,
4527 AECP_OFFSET_STREAM_BACKEDUP_TALKER_UNIQUE_ID
, 2, ENC_BIG_ENDIAN
);
4529 /* * * * AEM COMMON FORMAT PACKETS * * * */
4530 case AECP_COMMAND_CONTROLLER_AVAILABLE
:
4533 /* the command type is not one of the valid spec values */
4536 } /* AECP AEM Command */
4537 else if ((mess_type
== AECP_ADDRESS_ACCESS_COMMAND_MESSAGE
) || (mess_type
== AECP_ADDRESS_ACCESS_RESPONSE_MESSAGE
))
4539 proto_tree_add_item(aecp_tree
, hf_aecp_aa_count
, tvb
,
4540 AECP_AA_OFFSET_COUNT
, 2, ENC_BIG_ENDIAN
);
4541 proto_tree_add_item(aecp_tree
, hf_aecp_aa_tlv_mode
, tvb
,
4542 AECP_AA_OFFSET_TLVS_START
, 1, ENC_BIG_ENDIAN
);
4543 proto_tree_add_item(aecp_tree
, hf_aecp_aa_tlv_length
, tvb
,
4544 AECP_AA_OFFSET_TLVS_START
, 2, ENC_BIG_ENDIAN
);
4545 proto_tree_add_item(aecp_tree
, hf_aecp_aa_tlv_address
, tvb
,
4546 AECP_AA_OFFSET_TLVS_START
+2, 8, ENC_BIG_ENDIAN
);
4547 } /* AECP Vendor Unique Command/Response */
4548 else if ((mess_type
== AECP_VENDOR_UNIQUE_COMMAND_MESSAGE
) || (mess_type
== AECP_VENDOR_UNIQUE_RESPONSE_MESSAGE
))
4550 proto_tree_add_item(aecp_tree
, hf_aecp_vendor_unique_protocol_id
, tvb
,
4551 AECP_VUC_OFFSET_PROTOCOL_ID
, 6, ENC_BIG_ENDIAN
);
4553 /* attempt to dissect the payload specific data */
4554 next_tvb
= tvb_new_subset_remaining(tvb
, AECP_VUC_OFFSET_PROTOCOL_ID
);
4555 vendor_unique_protocol_id
= tvb_get_uint48(tvb
, AECP_VUC_OFFSET_PROTOCOL_ID
, ENC_BIG_ENDIAN
);
4556 vendor_unique_protocol_id_string
= wmem_strdup_printf(pinfo
->pool
, "%012" PRIx64
, vendor_unique_protocol_id
);
4557 dissector_try_string(vendor_unique_protocol_dissector_table
, vendor_unique_protocol_id_string
, next_tvb
, pinfo
, aecp_tree
, NULL
);
4562 dissect_17221_adp(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*adp_tree
)
4564 proto_item
*ent_cap_ti
;
4565 proto_item
*talk_cap_ti
;
4566 proto_item
*list_cap_ti
;
4567 proto_item
*cont_cap_ti
;
4569 proto_tree
*ent_cap_flags_tree
;
4570 proto_tree
*talk_cap_flags_tree
;
4571 proto_tree
*list_cap_flags_tree
;
4572 proto_tree
*cont_cap_flags_tree
;
4575 proto_tree_add_item(adp_tree
, hf_adp_message_type
, tvb
, ADP_VERSION_OFFSET
, 1, ENC_BIG_ENDIAN
);
4576 proto_tree_add_item(adp_tree
, hf_adp_valid_time
, tvb
, ADP_VALID_TIME_OFFSET
, 1, ENC_BIG_ENDIAN
);
4577 proto_tree_add_item(adp_tree
, hf_adp_cd_length
, tvb
, ADP_CD_LENGTH_OFFSET
, 1, ENC_BIG_ENDIAN
);
4578 proto_tree_add_item(adp_tree
, hf_adp_entity_id
, tvb
, ADP_ENTITY_ID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4579 proto_tree_add_item(adp_tree
, hf_adp_entity_model_id
, tvb
, ADP_ENTITY_MODEL_ID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4581 /* Subtree for entity_capabilities field */
4582 ent_cap_ti
= proto_tree_add_item(adp_tree
, hf_adp_entity_cap
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4583 ent_cap_flags_tree
= proto_item_add_subtree(ent_cap_ti
, ett_adp_ent_cap
);
4585 proto_tree_add_item(ent_cap_flags_tree
,
4586 hf_adp_entity_cap_efu_mode
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4587 proto_tree_add_item(ent_cap_flags_tree
,
4588 hf_adp_entity_cap_address_access_supported
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4589 proto_tree_add_item(ent_cap_flags_tree
,
4590 hf_adp_entity_cap_gateway_entity
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4591 proto_tree_add_item(ent_cap_flags_tree
,
4592 hf_adp_entity_cap_aem_supported
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4593 proto_tree_add_item(ent_cap_flags_tree
,
4594 hf_adp_entity_cap_legacy_avc
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4595 proto_tree_add_item(ent_cap_flags_tree
,
4596 hf_adp_entity_cap_assoc_id_support
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4597 proto_tree_add_item(ent_cap_flags_tree
,
4598 hf_adp_entity_cap_assoc_id_valid
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4599 proto_tree_add_item(ent_cap_flags_tree
,
4600 hf_adp_entity_cap_vendor_unique
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4601 proto_tree_add_item(ent_cap_flags_tree
,
4602 hf_adp_entity_cap_class_a_supported
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4603 proto_tree_add_item(ent_cap_flags_tree
,
4604 hf_adp_entity_cap_class_b_supported
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4605 proto_tree_add_item(ent_cap_flags_tree
,
4606 hf_adp_entity_cap_gptp_supported
, tvb
, ADP_ENTITY_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4608 proto_tree_add_item(adp_tree
, hf_adp_talker_stream_srcs
, tvb
, ADP_TALKER_STREAM_SRCS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4610 talk_cap_ti
= proto_tree_add_item(adp_tree
, hf_adp_talker_cap
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4611 talk_cap_flags_tree
= proto_item_add_subtree(talk_cap_ti
, ett_adp_talk_cap
);
4613 proto_tree_add_item(talk_cap_flags_tree
,
4614 hf_adp_talk_cap_implement
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4615 proto_tree_add_item(talk_cap_flags_tree
,
4616 hf_adp_talk_cap_other_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4617 proto_tree_add_item(talk_cap_flags_tree
,
4618 hf_adp_talk_cap_control_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4619 proto_tree_add_item(talk_cap_flags_tree
,
4620 hf_adp_talk_cap_media_clk_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4621 proto_tree_add_item(talk_cap_flags_tree
,
4622 hf_adp_talk_cap_smpte_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4623 proto_tree_add_item(talk_cap_flags_tree
,
4624 hf_adp_talk_cap_midi_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4625 proto_tree_add_item(talk_cap_flags_tree
,
4626 hf_adp_talk_cap_audio_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4627 proto_tree_add_item(talk_cap_flags_tree
,
4628 hf_adp_talk_cap_video_src
, tvb
, ADP_TALKER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4630 proto_tree_add_item(adp_tree
, hf_adp_listener_stream_sinks
,
4631 tvb
, ADP_LISTENER_STREAM_SINKS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4633 list_cap_ti
= proto_tree_add_item(adp_tree
, hf_adp_listener_cap
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4634 list_cap_flags_tree
= proto_item_add_subtree(list_cap_ti
, ett_adp_list_cap
);
4636 proto_tree_add_item(list_cap_flags_tree
,
4637 hf_adp_list_cap_implement
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4638 proto_tree_add_item(list_cap_flags_tree
,
4639 hf_adp_list_cap_other_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4640 proto_tree_add_item(list_cap_flags_tree
,
4641 hf_adp_list_cap_control_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4642 proto_tree_add_item(list_cap_flags_tree
,
4643 hf_adp_list_cap_media_clk_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4644 proto_tree_add_item(list_cap_flags_tree
,
4645 hf_adp_list_cap_smpte_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4646 proto_tree_add_item(list_cap_flags_tree
,
4647 hf_adp_list_cap_midi_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4648 proto_tree_add_item(list_cap_flags_tree
,
4649 hf_adp_list_cap_audio_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4650 proto_tree_add_item(list_cap_flags_tree
,
4651 hf_adp_list_cap_video_sink
, tvb
, ADP_LISTENER_CAP_OFFSET
, 2, ENC_BIG_ENDIAN
);
4653 cont_cap_ti
= proto_tree_add_item(adp_tree
, hf_adp_controller_cap
, tvb
, ADP_CONTROLLER_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4654 cont_cap_flags_tree
= proto_item_add_subtree(cont_cap_ti
, ett_adp_cont_cap
);
4656 proto_tree_add_item(cont_cap_flags_tree
,
4657 hf_adp_cont_cap_implement
, tvb
, ADP_CONTROLLER_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4658 proto_tree_add_item(cont_cap_flags_tree
,
4659 hf_adp_cont_cap_layer3_proxy
, tvb
, ADP_CONTROLLER_CAP_OFFSET
, 4, ENC_BIG_ENDIAN
);
4661 proto_tree_add_item(adp_tree
, hf_adp_avail_index
, tvb
, ADP_AVAIL_INDEX_OFFSET
, 4, ENC_BIG_ENDIAN
);
4662 proto_tree_add_item(adp_tree
, hf_adp_gptp_gm_id
, tvb
, ADP_AS_GM_ID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4664 proto_tree_add_item(adp_tree
, hf_adp_assoc_id
, tvb
, ADP_ASSOC_ID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4668 dissect_17221_acmp(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*acmp_tree
)
4670 proto_item
*flags_ti
;
4671 proto_tree
*flags_tree
;
4673 proto_tree_add_item(acmp_tree
, hf_acmp_message_type
, tvb
, ACMP_VERSION_OFFSET
, 1, ENC_BIG_ENDIAN
);
4674 proto_tree_add_item(acmp_tree
, hf_acmp_status_field
, tvb
, ACMP_STATUS_FIELD_OFFSET
, 1, ENC_BIG_ENDIAN
);
4675 proto_tree_add_item(acmp_tree
, hf_acmp_cd_length
, tvb
, ACMP_CD_LENGTH_OFFSET
, 2, ENC_BIG_ENDIAN
);
4676 proto_tree_add_item(acmp_tree
, hf_acmp_stream_id
, tvb
, ACMP_STREAM_ID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4677 proto_tree_add_item(acmp_tree
, hf_acmp_controller_guid
, tvb
, ACMP_CONTROLLER_GUID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4678 proto_tree_add_item(acmp_tree
, hf_acmp_talker_guid
, tvb
, ACMP_TALKER_GUID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4679 proto_tree_add_item(acmp_tree
, hf_acmp_listener_guid
, tvb
, ACMP_LISTENER_GUID_OFFSET
, 8, ENC_BIG_ENDIAN
);
4680 proto_tree_add_item(acmp_tree
, hf_acmp_talker_unique_id
, tvb
, ACMP_TALKER_UNIQUE_ID_OFFSET
, 2, ENC_BIG_ENDIAN
);
4681 proto_tree_add_item(acmp_tree
, hf_acmp_listener_unique_id
, tvb
, ACMP_LISTENER_UNIQUE_ID_OFFSET
, 2, ENC_BIG_ENDIAN
);
4682 proto_tree_add_item(acmp_tree
, hf_acmp_stream_dest_mac
, tvb
, ACMP_DEST_MAC_OFFSET
, 6, ENC_NA
);
4683 proto_tree_add_item(acmp_tree
, hf_acmp_connection_count
, tvb
, ACMP_CONNECTION_COUNT_OFFSET
, 2, ENC_BIG_ENDIAN
);
4684 proto_tree_add_item(acmp_tree
, hf_acmp_sequence_id
, tvb
, ACMP_SEQUENCE_ID_OFFSET
, 2, ENC_BIG_ENDIAN
);
4686 flags_ti
= proto_tree_add_item(acmp_tree
, hf_acmp_flags
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4687 flags_tree
= proto_item_add_subtree(flags_ti
, ett_acmp_flags
);
4689 proto_tree_add_item(flags_tree
, hf_acmp_flags_class_b
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4690 proto_tree_add_item(flags_tree
, hf_acmp_flags_fast_connect
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4691 proto_tree_add_item(flags_tree
, hf_acmp_flags_saved_state
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4692 proto_tree_add_item(flags_tree
, hf_acmp_flags_streaming_wait
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4693 proto_tree_add_item(flags_tree
, hf_acmp_flags_supports_encrypted
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4694 proto_tree_add_item(flags_tree
, hf_acmp_flags_encrypted_pdu
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4695 proto_tree_add_item(flags_tree
, hf_acmp_flags_talker_failed
, tvb
, ACMP_FLAGS_OFFSET
, 2, ENC_BIG_ENDIAN
);
4697 proto_tree_add_item(acmp_tree
, hf_acmp_vlan_id
, tvb
, ACMP_VLAN_ID_OFFSET
, 2, ENC_BIG_ENDIAN
);
4701 dissect_17221(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
4703 uint8_t subtype
= 0;
4704 proto_item
*ieee17221_item
;
4705 proto_tree
*ieee17221_tree
;
4706 subtype
= tvb_get_uint8(tvb
, 0);
4709 /* Make entries in Protocol column and Info column on summary display */
4710 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "IEEE1722-1");
4712 ieee17221_item
= proto_tree_add_item(tree
, proto_17221
, tvb
, 0, -1, ENC_NA
);
4713 ieee17221_tree
= proto_item_add_subtree(ieee17221_item
, ett_17221
);
4719 col_set_str(pinfo
->cinfo
, COL_INFO
, "AVDECC Discovery Protocol");
4721 dissect_17221_adp(tvb
, pinfo
, ieee17221_tree
);
4726 col_set_str(pinfo
->cinfo
, COL_INFO
, "AVDECC Enumeration and Control Protocol");
4728 dissect_17221_aecp(tvb
, pinfo
, ieee17221_tree
);
4733 col_set_str(pinfo
->cinfo
, COL_INFO
, "AVDECC Connection Management Protocol");
4735 dissect_17221_acmp(tvb
, pinfo
, ieee17221_tree
);
4740 /* Shouldn't get here */
4741 col_set_str(pinfo
->cinfo
, COL_INFO
, "1722.1 Unknown");
4746 return tvb_captured_length(tvb
);
4749 /* Register the protocol with Wireshark */
4751 proto_register_17221(void)
4753 static hf_register_info hf
[] = {
4754 { &hf_adp_message_type
,
4755 { "Message Type", "ieee17221.message_type",
4756 FT_UINT8
, BASE_DEC
, VALS(adp_message_type_vals
), ADP_MSG_TYPE_MASK
, NULL
, HFILL
}
4758 { &hf_adp_valid_time
,
4759 { "Valid Time", "ieee17221.valid_time",
4760 FT_UINT8
, BASE_DEC
, NULL
, ADP_VALID_TIME_MASK
, NULL
, HFILL
}
4762 { &hf_adp_cd_length
,
4763 { "Control Data Length", "ieee17221.control_data_length",
4764 FT_UINT16
, BASE_DEC
, NULL
, ADP_CD_LENGTH_MASK
, NULL
, HFILL
}
4766 { &hf_adp_entity_id
,
4767 { "Entity ID", "ieee17221.entity_id",
4768 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4770 { &hf_adp_entity_model_id
,
4771 { "Entity Model ID", "ieee17221.entity_model_id",
4772 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4774 { &hf_adp_entity_cap
,
4775 { "Entity Capabilities", "ieee17221.entity_capabilities",
4776 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4778 /* Entity Capability Flags Begin */
4779 { &hf_adp_entity_cap_efu_mode
,
4780 { "EFU_MODE", "ieee17221.entity_capabilities.efu_mode",
4781 FT_BOOLEAN
, 32, NULL
, ADP_EFU_MODE_BITMASK
, NULL
, HFILL
}
4783 { &hf_adp_entity_cap_address_access_supported
,
4784 { "ADDRESS_ACCESS", "ieee17221.entity_capabilities.address_access",
4785 FT_BOOLEAN
, 32, NULL
, ADP_ADDRESS_ACCESS_BITMASK
, NULL
, HFILL
}
4787 { &hf_adp_entity_cap_gateway_entity
,
4788 { "GATEWAY_ENTITY", "ieee17221.entity_capabilities.gateway_entity",
4789 FT_BOOLEAN
, 32, NULL
, ADP_GATEWAY_ENTITY_BITMASK
, NULL
, HFILL
}
4791 { &hf_adp_entity_cap_aem_supported
,
4792 { "AEM", "ieee17221.entity_capabilities.aem_supported",
4793 FT_BOOLEAN
, 32, NULL
, ADP_AEM_SUPPORTED_BITMASK
, NULL
, HFILL
}
4795 { &hf_adp_entity_cap_legacy_avc
,
4796 { "LEGACY_AVC", "ieee17221.entity_capabilities.legacy_avc",
4797 FT_BOOLEAN
, 32, NULL
, ADP_LEGACY_AVC_BITMASK
, NULL
, HFILL
}
4799 { &hf_adp_entity_cap_assoc_id_support
,
4800 { "ASSOCIATION_ID_SUPPORTED", "ieee17221.entity_capabilities.association_id_supported",
4801 FT_BOOLEAN
, 32, NULL
, ADP_ASSOC_ID_SUPPORT_BITMASK
, NULL
, HFILL
}
4803 { &hf_adp_entity_cap_assoc_id_valid
,
4804 { "ASSOCIATION_ID_VALID", "ieee17221.entity_capabilities.association_id_valid",
4805 FT_BOOLEAN
, 32, NULL
, ADP_ASSOC_ID_VALID_BITMASK
, NULL
, HFILL
}
4807 { &hf_adp_entity_cap_vendor_unique
,
4808 { "VENDOR_UNIQUE", "ieee17221.entity_capabilities.vendor_unique",
4809 FT_BOOLEAN
, 32, NULL
, ADP_VENDOR_UNIQUE_BITMASK
, NULL
, HFILL
}
4811 { &hf_adp_entity_cap_class_a_supported
,
4812 { "CLASS_A", "ieee17221.entity_capabilities.class_a",
4813 FT_BOOLEAN
, 32, NULL
, ADP_CLASS_A_SUPPORTED_BITMASK
, NULL
, HFILL
}
4815 { &hf_adp_entity_cap_class_b_supported
,
4816 { "CLASS_B", "ieee17221.entity_capabilities.class_b",
4817 FT_BOOLEAN
, 32, NULL
, ADP_CLASS_B_SUPPORTED_BITMASK
, NULL
, HFILL
}
4819 { &hf_adp_entity_cap_gptp_supported
,
4820 { "gPTP Supported", "ieee17221.entity_capabilities.gptp_supported",
4821 FT_BOOLEAN
, 32, NULL
, ADP_AS_SUPPORTED_BITMASK
, NULL
, HFILL
}
4823 /* Entity Capability Flags End */
4824 { &hf_adp_talker_stream_srcs
,
4825 { "Talker Stream Sources", "ieee17221.talker_stream_sources",
4826 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
4828 { &hf_adp_talker_cap
,
4829 { "Talker Capabilities", "ieee17221.talker_capabilities",
4830 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4832 /* Talker Capability Flags Begin */
4833 { &hf_adp_talk_cap_implement
,
4834 { "IMPLEMENTED", "ieee17221.talker_capabilities.implemented",
4835 FT_BOOLEAN
, 16, NULL
, ADP_TALK_IMPLEMENTED_BITMASK
, NULL
, HFILL
}
4837 { &hf_adp_talk_cap_other_src
,
4838 { "OTHER_SOURCE", "ieee17221.talker_capabilities.other_source",
4839 FT_BOOLEAN
, 16, NULL
, ADP_TALK_OTHER_SRC_BITMASK
, NULL
, HFILL
}
4841 { &hf_adp_talk_cap_control_src
,
4842 { "CONTROL_SOURCE", "ieee17221.talker_capabilities.control_source",
4843 FT_BOOLEAN
, 16, NULL
, ADP_TALK_CONTROL_SRC_BITMASK
, NULL
, HFILL
}
4845 { &hf_adp_talk_cap_media_clk_src
,
4846 { "MEDIA_CLOCK_SOURCE", "ieee17221.talker_capabilities.media_clock_source",
4847 FT_BOOLEAN
, 16, NULL
, ADP_TALK_MEDIA_CLK_SRC_BITMASK
, NULL
, HFILL
}
4849 { &hf_adp_talk_cap_smpte_src
,
4850 { "SMPTE_SOURCE", "ieee17221.talker_capabilities.smpte_source",
4851 FT_BOOLEAN
, 16, NULL
, ADP_TALK_SMPTE_SRC_BITMASK
, NULL
, HFILL
}
4853 { &hf_adp_talk_cap_midi_src
,
4854 { "MIDI_SOURCE", "ieee17221.talker_capabilities.midi_source",
4855 FT_BOOLEAN
, 16, NULL
, ADP_TALK_MIDI_SRC_BITMASK
, NULL
, HFILL
}
4857 { &hf_adp_talk_cap_audio_src
,
4858 { "AUDIO_SOURCE", "ieee17221.talker_capabilities.audio_source",
4859 FT_BOOLEAN
, 16, NULL
, ADP_TALK_AUDIO_SRC_BITMASK
, NULL
, HFILL
}
4861 { &hf_adp_talk_cap_video_src
,
4862 { "VIDEO_SOURCE", "ieee17221.talker_capabilities.video_source",
4863 FT_BOOLEAN
, 16, NULL
, ADP_TALK_VIDEO_SRC_BITMASK
, NULL
, HFILL
}
4865 /* Talker Capability Flags End */
4866 { &hf_adp_listener_stream_sinks
,
4867 { "Listener Stream Sinks", "ieee17221.listener_stream_sinks",
4868 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
4870 { &hf_adp_listener_cap
,
4871 { "Listener Capabilities", "ieee17221.listener_capabilities",
4872 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4874 /* Listener Capability Flags Begin */
4875 { &hf_adp_list_cap_implement
,
4876 { "IMPLEMENTED", "ieee17221.listener_capabilities.implemented",
4877 FT_BOOLEAN
, 16, NULL
, ADP_LIST_IMPLEMENTED_BITMASK
, NULL
, HFILL
}
4879 { &hf_adp_list_cap_other_sink
,
4880 { "OTHER_SINK", "ieee17221.listener_capabilities.other_source",
4881 FT_BOOLEAN
, 16, NULL
, ADP_LIST_OTHER_SINK_BITMASK
, NULL
, HFILL
}
4883 { &hf_adp_list_cap_control_sink
,
4884 { "CONTROL_SINK", "ieee17221.listener_capabilities.control_source",
4885 FT_BOOLEAN
, 16, NULL
, ADP_LIST_CONTROL_SINK_BITMASK
, NULL
, HFILL
}
4887 { &hf_adp_list_cap_media_clk_sink
,
4888 { "MEDIA_CLOCK_SINK", "ieee17221.listener_capabilities.media_clock_source",
4889 FT_BOOLEAN
, 16, NULL
, ADP_LIST_MEDIA_CLK_SINK_BITMASK
, NULL
, HFILL
}
4891 { &hf_adp_list_cap_smpte_sink
,
4892 { "SMPTE_SINK", "ieee17221.listener_capabilities.smpte_source",
4893 FT_BOOLEAN
, 16, NULL
, ADP_LIST_SMPTE_SINK_BITMASK
, NULL
, HFILL
}
4895 { &hf_adp_list_cap_midi_sink
,
4896 { "MIDI_SINK", "ieee17221.listener_capabilities.midi_source",
4897 FT_BOOLEAN
, 16, NULL
, ADP_LIST_MIDI_SINK_BITMASK
, NULL
, HFILL
}
4899 { &hf_adp_list_cap_audio_sink
,
4900 { "AUDIO_SINK", "ieee17221.listener_capabilities.audio_source",
4901 FT_BOOLEAN
, 16, NULL
, ADP_LIST_AUDIO_SINK_BITMASK
, NULL
, HFILL
}
4903 { &hf_adp_list_cap_video_sink
,
4904 { "VIDEO_SINK", "ieee17221.listener_capabilities.video_source",
4905 FT_BOOLEAN
, 16, NULL
, ADP_LIST_VIDEO_SINK_BITMASK
, NULL
, HFILL
}
4907 /* Listener Capability Flags End */
4908 { &hf_adp_controller_cap
,
4909 { "Controller Capabilities", "ieee17221.controller_capabilities",
4910 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4912 /* Controller Capability Flags Begin */
4913 { &hf_adp_cont_cap_implement
,
4914 { "IMPLEMENTED", "ieee17221.controller_capabilities.implemented",
4915 FT_BOOLEAN
, 16, NULL
, ADP_CONT_IMPLEMENTED_BITMASK
, NULL
, HFILL
}
4917 { &hf_adp_cont_cap_layer3_proxy
,
4918 { "LAYER3_PROXY", "ieee17221.controller_capabilities.layer3_proxy",
4919 FT_BOOLEAN
, 16, NULL
, ADP_CONT_LAYER3_PROXY_BITMASK
, NULL
, HFILL
}
4921 /* Controller Capability Flags End */
4922 { &hf_adp_avail_index
,
4923 { "Available Index", "ieee17221.available_index",
4924 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4926 { &hf_adp_gptp_gm_id
,
4927 { "gPTP Grandmaster ID", "ieee17221.gptp_grandmaster_id",
4928 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4931 { &hf_adp_def_aud_format
,
4932 { "Default Audio Format", "ieee17221.default_audio_format",
4933 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4937 /* Default Audio Formats Fields Begin */
4938 { &hf_adp_def_aud_sample_rates
,
4939 { "Sample Rates", "ieee17221.default_audio_format.sample_rates",
4940 FT_UINT8
, BASE_HEX
, NULL
, ADP_DEF_AUDIO_SAMPLE_RATES_MASK
, NULL
, HFILL
}
4942 /* Sample rates Begin */
4943 { &hf_adp_samp_rate_44k1
,
4944 { "44.1kHz", "ieee17221.default_audio_format.sample_rates.44k1",
4945 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_44K1_BITMASK
, NULL
, HFILL
}
4947 { &hf_adp_samp_rate_48k
,
4948 { "48kHz", "ieee17221.default_audio_format.sample_rates.48k",
4949 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_48K_BITMASK
, NULL
, HFILL
}
4951 { &hf_adp_samp_rate_88k2
,
4952 { "88.2kHz", "ieee17221.default_audio_format.sample_rates.88k2",
4953 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_88K2_BITMASK
, NULL
, HFILL
}
4955 { &hf_adp_samp_rate_96k
,
4956 { "96kHz", "ieee17221.default_audio_format.sample_rates.96k",
4957 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_96K_BITMASK
, NULL
, HFILL
}
4959 { &hf_adp_samp_rate_176k4
,
4960 { "176.4kHz", "ieee17221.default_audio_format.sample_rates.176k4",
4961 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_176K4_BITMASK
, NULL
, HFILL
}
4963 { &hf_adp_samp_rate_192k
,
4964 { "192kHz", "ieee17221.default_audio_format.sample_rates.192k",
4965 FT_BOOLEAN
, 8, NULL
, ADP_SAMP_RATE_192K_BITMASK
, NULL
, HFILL
}
4967 /* Sample rates End */
4968 { &hf_adp_def_aud_max_chan
,
4969 { "Max Channels", "ieee17221.default_audio_format.max_channels",
4970 FT_UINT16
, BASE_DEC
, NULL
, ADP_DEF_AUDIO_MAX_CHANS_MASK
, NULL
, HFILL
}
4972 { &hf_adp_def_aud_saf_flag
,
4973 { "saf", "ieee17221.default_audio_format.saf",
4974 FT_BOOLEAN
, 16, NULL
, ADP_DEF_AUDIO_SAF_MASK
, NULL
, HFILL
}
4976 { &hf_adp_def_aud_float_flag
,
4977 { "float", "ieee17221.default_audio_format.float",
4978 FT_BOOLEAN
, 16, NULL
, ADP_DEF_AUDIO_FLOAT_MASK
, NULL
, HFILL
}
4980 { &hf_adp_def_aud_chan_formats
,
4981 { "Channel Formats", "ieee17221.default_audio_format.channel_formats",
4982 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
4984 /* Channel Formats Fields Start */
4985 { &hf_adp_chan_format_mono
,
4986 { "MONO", "ieee17221.default_audio_format.channel_formats.mono",
4987 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_MONO
, NULL
, HFILL
}
4989 { &hf_adp_chan_format_2ch
,
4990 { "2_CH", "ieee17221.default_audio_format.channel_formats.2_ch",
4991 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_2CH
, NULL
, HFILL
}
4993 { &hf_adp_chan_format_3ch
,
4994 { "3_CH", "ieee17221.default_audio_format.channel_formats.3_ch",
4995 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_3CH
, NULL
, HFILL
}
4997 { &hf_adp_chan_format_4ch
,
4998 { "4_CH", "ieee17221.default_audio_format.channel_formats.4_ch",
4999 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_4CH
, NULL
, HFILL
}
5001 { &hf_adp_chan_format_5ch
,
5002 { "5_CH", "ieee17221.default_audio_format.channel_formats.5_ch",
5003 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_5CH
, NULL
, HFILL
}
5005 { &hf_adp_chan_format_6ch
,
5006 { "6_CH", "ieee17221.default_audio_format.channel_formats.6_ch",
5007 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_6CH
, NULL
, HFILL
}
5009 { &hf_adp_chan_format_7ch
,
5010 { "7_CH", "ieee17221.default_audio_format.channel_formats.7_ch",
5011 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_7CH
, NULL
, HFILL
}
5013 { &hf_adp_chan_format_8ch
,
5014 { "8_CH", "ieee17221.default_audio_format.channel_formats.8_ch",
5015 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_8CH
, NULL
, HFILL
}
5017 { &hf_adp_chan_format_10ch
,
5018 { "10_CH", "ieee17221.default_audio_format.channel_formats.10_ch",
5019 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_10CH
, NULL
, HFILL
}
5021 { &hf_adp_chan_format_12ch
,
5022 { "12_CH", "ieee17221.default_audio_format.channel_formats.12_ch",
5023 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_12CH
, NULL
, HFILL
}
5025 { &hf_adp_chan_format_14ch
,
5026 { "14_CH", "ieee17221.default_audio_format.channel_formats.14_ch",
5027 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_14CH
, NULL
, HFILL
}
5029 { &hf_adp_chan_format_16ch
,
5030 { "16_CH", "ieee17221.default_audio_format.channel_formats.16_ch",
5031 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_16CH
, NULL
, HFILL
}
5033 { &hf_adp_chan_format_18ch
,
5034 { "18_CH", "ieee17221.default_audio_format.channel_formats.18_ch",
5035 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_18CH
, NULL
, HFILL
}
5037 { &hf_adp_chan_format_20ch
,
5038 { "20_CH", "ieee17221.default_audio_format.channel_formats.20_ch",
5039 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_20CH
, NULL
, HFILL
}
5041 { &hf_adp_chan_format_22ch
,
5042 { "22_CH", "ieee17221.default_audio_format.channel_formats.22_ch",
5043 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_22CH
, NULL
, HFILL
}
5045 { &hf_adp_chan_format_24ch
,
5046 { "24_CH", "ieee17221.default_audio_format.channel_formats.24_ch",
5047 FT_BOOLEAN
, 16, NULL
, ADP_CHAN_FORMAT_24CH
, NULL
, HFILL
}
5050 /* Channel Formats Fields End */
5051 /* Default Audio Formats Fields End */
5053 { &hf_adp_def_vid_format
,
5054 { "Default Video Format", "ieee17221.default_video_format",
5055 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5059 { "Association ID", "ieee17221.association_id",
5060 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5063 { &hf_adp_entity_type
,
5064 { "Entity Type", "ieee17221.entity_type",
5065 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5068 /*******************************************************************/
5069 { &hf_acmp_message_type
,
5070 { "Message Type", "ieee17221.message_type",
5071 FT_UINT8
, BASE_DEC
, VALS(acmp_message_type_vals
), ACMP_MSG_TYPE_MASK
, NULL
, HFILL
}
5073 { &hf_acmp_status_field
,
5074 { "Status Field", "ieee17221.status_field",
5075 FT_UINT8
, BASE_DEC
, VALS(acmp_status_field_vals
), ACMP_STATUS_FIELD_MASK
, NULL
, HFILL
}
5077 { &hf_acmp_cd_length
,
5078 { "Control Data Length", "ieee17221.control_data_length",
5079 FT_UINT16
, BASE_DEC
, NULL
, ACMP_CD_LENGTH_MASK
, NULL
, HFILL
}
5081 { &hf_acmp_stream_id
,
5082 { "Stream ID", "ieee17221.stream_id",
5083 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5085 { &hf_acmp_controller_guid
,
5086 { "Controller GUID", "ieee17221.controller_guid",
5087 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5089 { &hf_acmp_talker_guid
,
5090 { "Talker GUID", "ieee17221.talker_guid",
5091 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5093 { &hf_acmp_listener_guid
,
5094 { "Listener GUID", "ieee17221.listener_guid",
5095 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5097 { &hf_acmp_talker_unique_id
,
5098 { "Talker Unique ID", "ieee17221.talker_unique_id",
5099 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5101 { &hf_acmp_listener_unique_id
,
5102 { "Listener Unique ID", "ieee17221.listener_unique_id",
5103 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5105 { &hf_acmp_stream_dest_mac
,
5106 { "Destination MAC address", "ieee17221.dest_mac",
5107 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5109 { &hf_acmp_connection_count
,
5110 { "Connection Count", "ieee17221.connection_count",
5111 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5113 { &hf_acmp_sequence_id
,
5114 { "Sequence ID", "ieee17221.sequence_id",
5115 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5118 { "Flags", "ieee17221.flags",
5119 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5121 /* ACMP Flags Begin */
5122 { &hf_acmp_flags_class_b
,
5123 { "CLASS_B", "ieee17221.flags.class_b",
5124 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_CLASS_B_BITMASK
, NULL
, HFILL
}
5126 { &hf_acmp_flags_fast_connect
,
5127 { "FAST_CONNECT", "ieee17221.flags.fast_connect",
5128 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_FAST_CONNECT_BITMASK
, NULL
, HFILL
}
5130 { &hf_acmp_flags_saved_state
,
5131 { "SAVED_STATE", "ieee17221.flags.saved_state",
5132 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_SAVED_STATE_BITMASK
, NULL
, HFILL
}
5134 { &hf_acmp_flags_streaming_wait
,
5135 { "STREAMING_WAIT", "ieee17221.flags.streaming_wait",
5136 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_STREAMING_WAIT_BITMASK
, NULL
, HFILL
}
5138 { &hf_acmp_flags_supports_encrypted
,
5139 { "SUPPORTS_ENCRYPTED", "ieee17221.flags.supports_encrypted",
5140 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_SUPPORTS_ENCRYPTED_BITMASK
, NULL
, HFILL
}
5142 { &hf_acmp_flags_encrypted_pdu
,
5143 { "ENCRYPTED_PDU", "ieee17221.flags.encrypted_pdu",
5144 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_ENCRYPTED_PDU_BITMASK
, NULL
, HFILL
}
5146 { &hf_acmp_flags_talker_failed
,
5147 { "TALKER_FAILED", "ieee17221.flags.talker_failed",
5148 FT_BOOLEAN
, 16, NULL
, ACMP_FLAG_TALKER_FAILED_BITMASK
, NULL
, HFILL
}
5150 /* ACMP Flags End */
5152 { "Stream VLAN Id", "ieee17221.vlan_id",
5153 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5155 /******* AECP ******/
5157 { &hf_aecp_message_type
,
5158 { "Message Type", "ieee17221.message_type",
5159 FT_UINT8
, BASE_DEC
, VALS(aecp_message_type_vals
), AECP_MSG_TYPE_MASK
, NULL
, HFILL
}
5161 { &hf_aecp_cd_length
,
5162 { "Control Data Length", "ieee17221.control_data_length",
5163 FT_UINT16
, BASE_DEC
, NULL
, AECP_CD_LENGTH_MASK
, NULL
, HFILL
}
5165 { &hf_aecp_target_guid
,
5166 { "Target GUID", "ieee17221.target_guid",
5167 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5169 { &hf_aecp_controller_guid
,
5170 { "Controller GUID", "ieee17221.controller_guid",
5171 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5173 { &hf_aecp_sequence_id
,
5174 { "Sequence ID", "ieee17221.sequence_id",
5175 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5178 { "U Flag", "ieee17221.u_flag",
5179 FT_BOOLEAN
, 8, NULL
, AECP_U_FLAG_MASK
, NULL
, HFILL
}
5181 { &hf_aecp_command_type
,
5182 { "Command Type", "ieee17221.command_type",
5183 FT_UINT16
, BASE_HEX
, VALS(aecp_command_type_vals
), AECP_COMMAND_TYPE_MASK
, NULL
, HFILL
}
5185 /* Address Access Fields */
5186 { &hf_aecp_aa_count
,
5187 { "Count", "ieee17221.count",
5188 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5190 { &hf_aecp_aa_tlv_mode
,
5191 { "Tlv Mode", "ieee17221.tlv_mode",
5192 FT_UINT8
, BASE_DEC
, NULL
, 0xF0, NULL
, HFILL
}
5194 { &hf_aecp_aa_tlv_length
,
5195 { "Tlv Length", "ieee17221.tlv_length",
5196 FT_UINT16
, BASE_DEC
, NULL
, 0x0FFF, NULL
, HFILL
}
5198 { &hf_aecp_aa_tlv_address
,
5199 { "Tlv Address", "ieee17221.tlv_address",
5200 FT_UINT64
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}
5203 /* SLIGHTLY LESS COMMON FIELDS */
5204 { &hf_aecp_descriptor_type
,
5205 { "Descriptor Type", "ieee17221.descriptor_type",
5206 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
5208 { &hf_aecp_descriptor_index
,
5209 {"Descriptor Index", "ieee17221.descriptor_index",
5210 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5213 /* AECP Commands and Responses 1722.1 Sec 7.4 */
5215 { &hf_aecp_unlock_flag
,
5216 { "UNLOCK Flag", "ieee17221.flags.unlock",
5217 FT_BOOLEAN
, 8, NULL
, AECP_UNLOCK_FLAG_MASK
, NULL
, HFILL
}
5219 { &hf_aecp_locked_guid
,
5220 { "Locked GUID", "ieee17221.locked_guid",
5221 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5224 /* READ_DESCRIPTOR */
5225 { &hf_aecp_configuration
,
5226 { "Configuration", "ieee17221.configuration",
5227 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5230 /* WRITE_DESCRIPTOR */
5232 /* ACQUIRE_ENTITY */
5233 { &hf_aecp_persistent_flag
,
5234 { "Persistent Flag", "ieee17221.flags.persistent",
5235 FT_BOOLEAN
, 32, NULL
, AECP_PERSISTENT_FLAG_MASK
, NULL
, HFILL
}
5237 { &hf_aecp_release_flag
,
5238 { "Release Flag", "ieee17221.flags.release",
5239 FT_BOOLEAN
, 32, NULL
, AECP_RELEASE_FLAG_MASK
, NULL
, HFILL
}
5241 { &hf_aecp_owner_guid
,
5242 { "Owner GUID", "ieee17221.owner_guid",
5243 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5246 /* CONTROLLER_AVAILABLE */
5248 /* SET_CLOCK_SOURCE / GET_CLOCK_SOURCE */
5249 { &hf_aecp_clock_source_id
,
5250 { "Clock Source ID", "ieee17221.clock_source_id64",
5251 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5254 /* SET_STREAM_FORMAT */
5255 { &hf_aecp_stream_format
,
5256 {"Stream Format", "ieee17221.stream_format64",
5257 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5259 /* GET_STREAM_FORMAT */
5261 /* SET_CONFIGURATION / GET_CONFIGURATION */
5263 /* SET_CONTROL_VALUE / GET_CONTROL_VALUE */
5265 /* SET_SIGNAL_SELECTOR / GET_SIGNAL_SELECTOR */
5266 { &hf_aecp_signal_type
,
5267 {"Signal Type", "ieee17221.signal_type",
5268 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5270 { &hf_aecp_signal_index
,
5271 {"Signal Index", "ieee17221.signal_index",
5272 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5274 { &hf_aecp_signal_output
,
5275 {"Signal Output", "ieee17221.signal_output",
5276 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5279 /* SET_MIXER / GET_MIXER */
5281 /* SET_MATRIX / GET_MATRIX */
5282 { &hf_aecp_matrix_column
,
5283 {"Matrix Column", "ieee17221.matrix_column",
5284 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5286 { &hf_aecp_matrix_row
,
5287 {"Matrix Row", "ieee17221.matrix_row",
5288 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5290 { &hf_aecp_matrix_region_width
,
5291 {"Region Width", "ieee17221.matrix_region_width",
5292 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5294 { &hf_aecp_matrix_region_height
,
5295 {"Region Height", "ieee17221.matrix_region_height",
5296 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5298 { &hf_aecp_matrix_rep
,
5299 {"Rep", "ieee17221.matrix_rep",
5300 FT_BOOLEAN
, 8, NULL
, AECP_MATRIX_REP_MASK
, NULL
, HFILL
}
5302 { &hf_aecp_matrix_direction
,
5303 {"Direction", "ieee17221.matrix_direction",
5304 FT_UINT8
, BASE_DEC
, VALS(aecp_direction_type_vals
), AECP_MATRIX_DIRECTION_MASK
, NULL
, HFILL
}
5306 { &hf_aecp_matrix_value_count
,
5307 {"Value Count", "ieee17221.matrix_value_count",
5308 FT_UINT16
, BASE_DEC
, NULL
, AECP_MATRIX_VALUE_COUNT_MASK
, NULL
, HFILL
}
5310 { &hf_aecp_matrix_item_offset
,
5311 {"Item Offset", "ieee17221.matrix_item_offset",
5312 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5315 { &hf_aecp_matrix_affected_item_count
,
5316 {"Affected Item Count", "ieee17221.matrix_affected_item_count",
5317 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5321 /* START_STREAMING */
5323 /* STOP_STREAMING */
5326 { &hf_aecp_avb_info_ptp_grandmaster_id
,
5327 {"gPTP Grandmaster ID", "ieee17221.avb_info_gptp_grandmaster_id",
5328 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5330 { &hf_aecp_avb_info_propegation_delay
,
5331 {"Propagation Delay", "ieee17221.avb_info_propagation_delay",
5332 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5334 { &hf_aecp_avb_info_gptp_domain_number
,
5335 {"gPTP Domain Number", "ieee17221.avb_info_gptp_domain_number",
5336 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5339 { &hf_aecp_avb_info_flags
,
5340 {"Flags", "ieee17221.avbinfo_flags",
5341 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5345 { &hf_aecp_as_capable_flag
,
5346 { "AS Capable Flag", "ieee17221.as_capable_flag",
5347 FT_BOOLEAN
, 8, NULL
, AECP_AS_CAPABLE_FLAG_MASK
, NULL
, HFILL
}
5350 { &hf_aecp_gptp_enabled_flag
,
5351 { "gPTP Enabled Flag", "ieee17221.gptp_enabled_flag",
5352 FT_BOOLEAN
, 8, NULL
, AECP_GPTP_ENABLED_FLAG_MASK
, NULL
, HFILL
}
5355 { &hf_aecp_srp_enabled_flag
,
5356 { "SRP Enabled Flag", "ieee17221.srp_enabled_flag",
5357 FT_BOOLEAN
, 8, NULL
, AECP_SRP_ENABLED_FLAG_MASK
, NULL
, HFILL
}
5360 { &hf_aecp_avb_info_msrp_mappings_count
,
5361 {"MSRP Mappings Count", "ieee17221.msrp_mappings_count",
5362 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5365 { &hf_aecp_avb_info_msrp_mappings
,
5366 {"MSRP Mappings", "ieee17221.msrp_mappings",
5367 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5370 { &hf_aecp_avb_info_msrp_mapping_traffic_class
,
5371 {"MSRP Mapping Traffic Class", "ieee17221.msrp_mapping_traffic_class",
5372 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5374 { &hf_aecp_avb_info_msrp_mapping_priority
,
5375 {"MSRP Mapping Priority", "ieee17221.msrp_mapping_priority",
5376 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5378 { &hf_aecp_get_avb_info_msrp_vlan_id
,
5379 {"MSRP VLAN ID", "ieee17221.msrp_vlan_id",
5380 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5383 { &hf_aecp_map_index
,
5384 {"Map Index", "ieee17221.map_index",
5385 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5387 { &hf_aecp_number_of_maps
,
5388 {"Number of Maps", "ieee17221.number_of_maps",
5389 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5392 /* GET_STREAM_INFO */
5393 { &hf_aecp_msrp_accumulated_latency
,
5394 {"MSRP Accumulated Latency", "ieee17221.msrp_accumulated_latency",
5395 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5397 { &hf_aecp_msrp_failure_code
,
5398 {"MSRP Failure Code", "ieee17221.msrp_failure_code",
5399 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5401 { &hf_aecp_msrp_failure_bridge_id
,
5402 {"MSRP Failure Bridge ID", "ieee17221.msrp_failure_bridge_id",
5403 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5406 { &hf_aecp_stream_vlan_id
,
5407 {"Stream VLAN ID", "ieee17221.stream_vlan_id",
5408 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5411 { &hf_aecp_stream_vlan_id_valid_flag
,
5412 {"Stream VLAN ID Valid Flag", "ieee17221.flags.stream_vlan_id_valid",
5413 FT_BOOLEAN
, 32, NULL
, AECP_STREAM_VLAN_ID_VALID_FLAG_MASK
, NULL
, HFILL
}
5415 { &hf_aecp_connected_flag
,
5416 {"Connected Flag", "ieee17221.flags.connected",
5417 FT_BOOLEAN
, 32, NULL
, AECP_CONNECTED_FLAG_MASK
, NULL
, HFILL
}
5419 { &hf_aecp_msrp_failure_valid_flag
,
5420 {"MSRP Failure Valid Flag", "ieee17221.flags.msrp_failure_valid",
5421 FT_BOOLEAN
, 32, NULL
, AECP_MSRP_FAILURE_VALID_FLAG_MASK
, NULL
, HFILL
}
5423 { &hf_aecp_dest_mac_valid_flag
,
5424 {"Dest MAC Valid Flag", "ieee17221.flags.dest_mac_valid",
5425 FT_BOOLEAN
, 32, NULL
, AECP_DEST_MAC_VALID_FLAG_MASK
, NULL
, HFILL
}
5427 { &hf_aecp_msrp_acc_lat_valid_flag
,
5428 {"MSRP Accumulated Latency Field Valid Flag", "ieee17221.flags.msrp_acc_lat_valid",
5429 FT_BOOLEAN
, 32, NULL
, AECP_MSRP_ACC_LAT_VALID_FLAG_MASK
, NULL
, HFILL
}
5431 { &hf_aecp_stream_id_valid_flag
,
5432 {"Stream ID Valid Flag", "ieee17221.flags.stream_id_valid",
5433 FT_BOOLEAN
, 32, NULL
, AECP_STREAM_ID_VALID_FLAG_MASK
, NULL
, HFILL
}
5435 { &hf_aecp_stream_format_valid_flag
,
5436 {"Stream Format Valid Flag", "ieee17221.flags.stream_format_valid",
5437 FT_BOOLEAN
, 32, NULL
, AECP_STREAM_FORMAT_VALID_FLAG_MASK
, NULL
, HFILL
}
5440 /* SET_NAME / GET_NAME */
5441 { &hf_aecp_name_index
,
5442 {"Name Index", "ieee17221.name_index",
5443 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5445 { &hf_aecp_configuration_index
,
5446 {"Configuration Index", "ieee17221.configuration_index",
5447 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5451 {"Name", "ieee17221.name",
5452 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5455 /* SET_ASSOCIATION_ID / GET_ASSOCIATION_ID */
5456 { &hf_aecp_association_id
,
5457 {"Association ID", "ieee17221.association_id",
5458 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5462 { &hf_aecp_as_path_count
,
5463 {"Count", "ieee17221.as_path_count",
5464 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5467 { &hf_aecp_as_path_sequences
,
5468 {"Path Sequence", "ieee17221.as_path_sequences",
5469 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5472 { &hf_aecp_get_as_info_clock_id
,
5473 { "ClockId", "ieee17221.get_as_info_clock_id",
5474 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5478 { &hf_aecp_keychain_id
,
5479 {"Keychain ID", "ieee17221.keychain_id",
5480 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5482 { &hf_aecp_keychain_id_small
,
5483 {"Keychain ID", "ieee17221.keychain_id_small",
5484 FT_UINT8
, BASE_HEX
, VALS(aecp_keychain_id_type_vals
), AECP_KEYCHAIN_ID_MASK
, NULL
, HFILL
}
5486 { &hf_aecp_key_type
,
5487 {"Key Type", "ieee17221.key_type",
5488 FT_UINT8
, BASE_HEX
, VALS(aecp_key_type_type_vals
), AECP_KEYTYPE_MASK
, NULL
, HFILL
}
5490 { &hf_aecp_key_signature
,
5491 {"Key Signature", "ieee17221.key_signature",
5492 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5495 { &hf_aecp_key_number
,
5496 {"Key ID", "ieee17221.key_id",
5497 FT_UINT16
, BASE_HEX
, NULL
, AECP_KEY_NUMBER_MASK
, NULL
, HFILL
}
5499 { &hf_aecp_continued_flag
,
5500 {"Continued", "ieee17221.continued",
5501 FT_BOOLEAN
, 8, NULL
, AECP_CONTINUED_MASK
, NULL
, HFILL
}
5503 { &hf_aecp_key_part
,
5504 {"Key Part", "ieee17221.key_part",
5505 FT_UINT8
, BASE_DEC
, NULL
, AECP_KEY_PART_MASK
, NULL
, HFILL
}
5509 { &hf_aecp_key_length
,
5510 {"Key Length", "ieee17221.key_length",
5511 FT_UINT16
, BASE_DEC
, NULL
, AECP_KEY_LENGTH_MASK
, NULL
, HFILL
}
5514 { &hf_aecp_private_key_read_flag
,
5515 {"Private Key Read Flag", "ieee17221.flags.private_key_read",
5516 FT_BOOLEAN
, 32, NULL
, AECP_PRIVATE_KEY_READ_FLAG_MASK
, NULL
, HFILL
}
5518 { &hf_aecp_private_key_write_flag
,
5519 {"Private Key Write Flag", "ieee17221.flags.private_key_write",
5520 FT_BOOLEAN
, 32, NULL
, AECP_PRIVATE_KEY_WRITE_FLAG_MASK
, NULL
, HFILL
}
5522 { &hf_aecp_public_key_write_flag
,
5523 {"Public Key Write Flag", "ieee17221.flags.public_key_write",
5524 FT_BOOLEAN
, 32, NULL
, AECP_PUBLIC_KEY_WRITE_FLAG_MASK
, NULL
, HFILL
}
5526 { &hf_aecp_control_admin_flag
,
5527 {"Control Admin Flag", "ieee17221.flags.control_admin",
5528 FT_BOOLEAN
, 32, NULL
, AECP_CONTROL_ADMIN_FLAG_MASK
, NULL
, HFILL
}
5530 { &hf_aecp_mem_obj_admin_flag
,
5531 {"Memory Object Admin", "ieee17221.mem_obj_admin",
5532 FT_BOOLEAN
, 32, NULL
, AECP_MEM_OBJ_ADMIN_FLAG_MASK
, NULL
, HFILL
}
5534 { &hf_aecp_mem_obj_settings_flag
,
5535 {"Memory Object Settings", "ieee17221.mem_obj_settings",
5536 FT_BOOLEAN
, 32, NULL
, AECP_MEM_OBJ_SETTINGS_FLAG_MASK
, NULL
, HFILL
}
5538 { &hf_aecp_control_user_l1
,
5539 {"Control User L1 flag", "ieee17221.flags.control_user_l1",
5540 FT_BOOLEAN
, 32, NULL
, AECP_CONTROL_USER_L1_FLAG_MASK
, NULL
, HFILL
}
5542 { &hf_aecp_control_user_l2
,
5543 {"Control User L2 flag", "ieee17221.flags.control_user_l2",
5544 FT_BOOLEAN
, 32, NULL
, AECP_CONTROL_USER_L2_FLAG_MASK
, NULL
, HFILL
}
5546 { &hf_aecp_control_user_l3
,
5547 {"Control User L3 flag", "ieee17221.flags.control_user_l3",
5548 FT_BOOLEAN
, 32, NULL
, AECP_CONTROL_USER_L3_FLAG_MASK
, NULL
, HFILL
}
5550 { &hf_aecp_control_user_l4
,
5551 {"Control User L4 flag", "ieee17221.flags.control_user_l4",
5552 FT_BOOLEAN
, 32, NULL
, AECP_CONTROL_USER_L4_FLAG_MASK
, NULL
, HFILL
}
5556 { &hf_aecp_keychain_list_index
,
5557 {"Keychain List Index", "ieee17221.keychain_list_index",
5558 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5560 { &hf_aecp_keychain_number_of_keys
,
5561 {"Keychain Number of Keys", "ieee17221.keychain_number_of_keys",
5562 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5564 { &hf_aecp_keychain_number_of_lists
,
5565 {"Keychain Number of Lists", "ieee17221.keychain_number_of_lists",
5566 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5570 {"Key EUI", "ieee17221.key_eui",
5571 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5573 { &hf_aecp_token_length
,
5574 {"Token Length", "ieee17221.token_length",
5575 FT_UINT16
, BASE_DEC
, NULL
, AECP_TOKEN_LENGTH_MASK
, NULL
, HFILL
}
5578 {"Key", "ieee17221.key",
5579 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5581 { &hf_aecp_auth_token
,
5582 {"Auth Token", "ieee17221.auth_token",
5583 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5585 { &hf_aecp_flags_32
,
5586 {"Flags", "ieee17221.flags",
5587 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5594 /* Counter valid bits */
5595 { &hf_aecp_avb_interface_link_up_valid
,
5596 {"Link Up Valid", "ieee17221.flags.link_up_valid",
5597 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_LINK_UP
, NULL
, HFILL
}
5599 { &hf_aecp_avb_interface_link_down_valid
,
5600 {"Link Down Valid", "ieee17221.flags.link_down_valid",
5601 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_LINK_DOWN
, NULL
, HFILL
}
5603 { &hf_aecp_avb_interface_packets_tx_valid
,
5604 {"Packets TX Valid", "ieee17221.flags.packets_tx_valid",
5605 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_PACKETS_TX
, NULL
, HFILL
}
5607 { &hf_aecp_avb_interface_packets_rx_valid
,
5608 {"Packets RX Valid", "ieee17221.flags.packets_rx_valid",
5609 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_PACKETS_RX
, NULL
, HFILL
}
5611 { &hf_aecp_avb_interface_rx_crc_error_valid
,
5612 {"RX CRC Error Valid", "ieee17221.flags.rx_crc_error_valid",
5613 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_RX_CRC_ERROR
, NULL
, HFILL
}
5615 { &hf_aecp_avb_interface_gptp_gm_changed_valid
,
5616 {"GPTP GM Changed Valid", "ieee17221.flags.gptp_gm_changed_valid",
5617 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_GPTP_GM_CHANGED
, NULL
, HFILL
}
5620 { &hf_aecp_clock_domain_unlocked_valid
,
5621 {"Clock Domain Unlocked Valid", "ieee17221.flags.clock_domain_unlocked_valid",
5622 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_CLOCK_DOMAIN_UNLOCKED
, NULL
, HFILL
}
5624 { &hf_aecp_clock_domain_locked_valid
,
5625 {"Clock_Domain Locked Valid", "ieee17221.flags.clock_domain_locked_valid",
5626 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_CLOCK_DOMAIN_LOCKED
, NULL
, HFILL
}
5629 { &hf_aecp_stream_input_media_unlocked_valid
,
5630 {"Media Unlocked Valid", "ieee17221.flags.media_unlocked_valid",
5631 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_MEDIA_UNLOCKED
, NULL
, HFILL
}
5633 { &hf_aecp_stream_input_media_locked_valid
,
5634 {"Media Locked Valid", "ieee17221.flags.media_locked_valid",
5635 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_MEDIA_LOCKED
, NULL
, HFILL
}
5637 { &hf_aecp_stream_input_stream_reset_valid
,
5638 {"Stream Reset Valid", "ieee17221.flags.stream_reset_valid",
5639 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_STREAM_RESET
, NULL
, HFILL
}
5641 { &hf_aecp_stream_input_seq_num_mismatch_valid
,
5642 {"Seq Num Mismatch Valid", "ieee17221.flags.seq_num_mismatch_valid",
5643 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_SEQ_NUM_MISMATCH
, NULL
, HFILL
}
5645 { &hf_aecp_stream_input_media_reset_valid
,
5646 {"Media Reset Valid", "ieee17221.flags.media_reset_valid",
5647 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_MEDIA_RESET
, NULL
, HFILL
}
5649 { &hf_aecp_stream_input_timestamp_uncertain_valid
,
5650 {"Timestamp Uncertain Valid", "ieee17221.flags.timestamp_uncertain_valid",
5651 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_TIMESTAMP_UNCERTAIN
, NULL
, HFILL
}
5653 { &hf_aecp_stream_input_timestamp_valid_valid
,
5654 {"Timestamp Valid Valid", "ieee17221.flags.timestamp_valid_valid",
5655 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_TIMESTAMP_VALID
, NULL
, HFILL
}
5657 { &hf_aecp_stream_input_timestamp_not_valid_valid
,
5658 {"Timestamp Not Valid Valid", "ieee17221.flags.timestamp_not_valid_valid",
5659 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_TIMESTAMP_NOT_VALID
, NULL
, HFILL
}
5661 { &hf_aecp_stream_input_unsupported_format_valid
,
5662 {"Unsupported Format Valid", "ieee17221.flags.unsupported_format_valid",
5663 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_UNSUPPORTED_FORMAT
, NULL
, HFILL
}
5665 { &hf_aecp_stream_input_late_timestamp_valid
,
5666 {"Late Timestamp Valid", "ieee17221.flags.late_timestamp_valid",
5667 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_LATE_TIMESTAMP
, NULL
, HFILL
}
5669 { &hf_aecp_stream_input_early_timestamp_valid
,
5670 {"Early Timestamp Valid", "ieee17221.flags.early_timestamp_valid",
5671 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_EARLY_TIMESTAMP
, NULL
, HFILL
}
5673 { &hf_aecp_stream_input_packets_tx_valid
,
5674 {"Stream Packets TX Valid", "ieee17221.flags.stream_packets_tx_valid",
5675 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_STREAM_PACKETS_TX
, NULL
, HFILL
}
5677 { &hf_aecp_stream_input_packets_rx_valid
,
5678 {"Stream Packets RX Valid", "ieee17221.flags.stream_packets_rx_valid",
5679 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_STREAM_PACKETS_RX
, NULL
, HFILL
}
5682 { &hf_aecp_entity_specific1_valid
,
5683 {"Entity Specific 1", "ieee17221.flags.entity_specific1_valid",
5684 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_1
, NULL
, HFILL
}
5686 { &hf_aecp_entity_specific2_valid
,
5687 {"Entity Specific 2", "ieee17221.flags.entity_specific2_valid",
5688 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_2
, NULL
, HFILL
}
5690 { &hf_aecp_entity_specific3_valid
,
5691 {"Entity Specific 3", "ieee17221.flags.entity_specific3_valid",
5692 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_3
, NULL
, HFILL
}
5694 { &hf_aecp_entity_specific4_valid
,
5695 {"Entity Specific 4", "ieee17221.flags.entity_specific4_valid",
5696 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_4
, NULL
, HFILL
}
5698 { &hf_aecp_entity_specific5_valid
,
5699 {"Entity Specific 5", "ieee17221.flags.entity_specific5_valid",
5700 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_5
, NULL
, HFILL
}
5702 { &hf_aecp_entity_specific6_valid
,
5703 {"Entity Specific 6", "ieee17221.flags.entity_specific6_valid",
5704 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_6
, NULL
, HFILL
}
5706 { &hf_aecp_entity_specific7_valid
,
5707 {"Entity Specific 7", "ieee17221.flags.entity_specific7_valid",
5708 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_7
, NULL
, HFILL
}
5710 { &hf_aecp_entity_specific8_valid
,
5711 {"Entity Specific 8", "ieee17221.flags.entity_specific8_valid",
5712 FT_BOOLEAN
, 32, NULL
, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_8
, NULL
, HFILL
}
5716 { &hf_aecp_avb_interface_link_up
,
5717 {"Link Up", "ieee17221.link_up",
5718 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5720 { &hf_aecp_avb_interface_link_down
,
5721 {"Link Down", "ieee17221.link_down",
5722 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5724 { &hf_aecp_avb_interface_packets_tx
,
5725 {"Frames TX", "ieee17221.frames_tx",
5726 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5728 { &hf_aecp_avb_interface_packets_rx
,
5729 {"Frames RX", "ieee17221.frames_rx",
5730 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5732 { &hf_aecp_avb_interface_rx_crc_error
,
5733 {"RX CRC Error", "ieee17221.rx_crc_error",
5734 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5736 { &hf_aecp_avb_interface_gptp_gm_changed
,
5737 {"GPTP GM Changed", "ieee17221.gptp_gm_changed",
5738 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5741 { &hf_aecp_clock_domain_unlocked
,
5742 {"Clock Domain Unlocked", "ieee17221.clock_domain_unlocked",
5743 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5745 { &hf_aecp_clock_domain_locked
,
5746 {"Clock_Domain Locked", "ieee17221.clock_domain_locked",
5747 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5750 { &hf_aecp_stream_input_media_unlocked
,
5751 {"Media Unlocked", "ieee17221.media_unlocked",
5752 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5754 { &hf_aecp_stream_input_media_locked
,
5755 {"Media Locked", "ieee17221.media_locked",
5756 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5758 { &hf_aecp_stream_input_stream_reset
,
5759 {"Stream Reset", "ieee17221.stream_reset",
5760 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5762 { &hf_aecp_stream_input_seq_num_mismatch
,
5763 {"Seq Num Mismatch", "ieee17221.seq_num_mismatch",
5764 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5766 { &hf_aecp_stream_input_media_reset
,
5767 {"Media Reset", "ieee17221.media_reset",
5768 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5770 { &hf_aecp_stream_input_timestamp_uncertain
,
5771 {"Timestamp Uncertain", "ieee17221.timestamp_uncertain",
5772 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5774 { &hf_aecp_stream_input_timestamp_valid
,
5775 {"Timestamp Valid", "ieee17221.timestamp",
5776 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5778 { &hf_aecp_stream_input_timestamp_not_valid
,
5779 {"Timestamp Not Valid", "ieee17221.timestamp_not",
5780 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5782 { &hf_aecp_stream_input_unsupported_format
,
5783 {"Unsupported Format", "ieee17221.unsupported_format",
5784 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5786 { &hf_aecp_stream_input_late_timestamp
,
5787 {"Late Timestamp", "ieee17221.late_timestamp",
5788 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5790 { &hf_aecp_stream_input_early_timestamp
,
5791 {"Early Timestamp", "ieee17221.early_timestamp",
5792 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5794 { &hf_aecp_stream_input_packets_tx
,
5795 {"Stream Packets TX", "ieee17221.stream_packets_tx",
5796 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5798 { &hf_aecp_stream_input_packets_rx
,
5799 {"Stream Packets RX", "ieee17221.stream_packets_rx",
5800 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5803 { &hf_aecp_entity_specific1
,
5804 {"Entity Specific 1", "ieee17221.entity_specific1",
5805 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5807 { &hf_aecp_entity_specific2
,
5808 {"Entity Specific 2", "ieee17221.entity_specific2",
5809 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5811 { &hf_aecp_entity_specific3
,
5812 {"Entity Specific 3", "ieee17221.entity_specific3",
5813 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5815 { &hf_aecp_entity_specific4
,
5816 {"Entity Specific 4", "ieee17221.entity_specific4",
5817 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5819 { &hf_aecp_entity_specific5
,
5820 {"Entity Specific 5", "ieee17221.entity_specific5",
5821 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5823 { &hf_aecp_entity_specific6
,
5824 {"Entity Specific 6", "ieee17221.entity_specific6",
5825 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5827 { &hf_aecp_entity_specific7
,
5828 {"Entity Specific 7", "ieee17221.entity_specific7",
5829 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5831 { &hf_aecp_entity_specific8
,
5832 {"Entity Specific 8", "ieee17221.entity_specific8",
5833 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5838 /* SET_MEDIA_FORMAT / GET_MEDIA_FORMAT */
5840 { &hf_aecp_media_format
,
5841 {"Media Format", "ieee17221.media_format",
5842 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5846 { &hf_aecp_video_format
,
5847 {"Video Format", "ieee17221.video_format",
5848 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5851 { &hf_aecp_sampling_rate_pull
,
5852 { "Sampling Rate Pull Value", "ieee17221.sampling_rate_pull",
5853 FT_UINT32
, BASE_HEX
, VALS(aecp_sampling_rate_pull_field_vals
), AECP_SAMPLING_RATE_PULL_MASK
, NULL
, HFILL
}
5856 { &hf_aecp_sampling_rate_base_frequency
,
5857 {"Sampling Rate Base Frequency", "ieee17221.sampling_rate_base_frequency",
5858 FT_UINT32
, BASE_DEC
, NULL
, AECP_SAMPLING_RATE_BASE_FREQ_MASK
, NULL
, HFILL
}
5861 /* REGISTER_STATE_NOTIFICATION */
5863 { &hf_aecp_address_type
,
5864 {"Address Type", "ieee17221.address_type",
5865 FT_UINT16
, BASE_HEX
, VALS(aecp_address_type_vals
), 0x00, NULL
, HFILL
}
5868 { &hf_aecp_mac_address
,
5869 { "MAC address", "ieee17221.mac_address",
5870 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5873 { &hf_aecp_ipv4_address
,
5874 {"IPV4 Address", "ieee17221.ipv4_address",
5875 FT_IPv4
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5877 { &hf_aecp_ipv6_address
,
5878 {"IPv6 Address", "ieee17221.ipv6_address",
5879 FT_IPv6
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5883 /* DEREGISTER_STATE_NOTIFICATION */
5885 /* REGISTER_QUERY_NOTIFICATION / DEREGISTER_QUERY_NOTIFICATION */
5887 { &hf_aecp_query_period
,
5888 {"Query Period (ms)", "ieee17221.query_period",
5889 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5891 { &hf_aecp_query_limit
,
5892 {"Query Limit", "ieee17221.query_limit",
5893 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5895 { &hf_aecp_query_type
,
5896 {"Query Type", "ieee17221.query_type",
5897 FT_UINT16
, BASE_HEX
, VALS(aecp_command_type_vals
), 0x00, NULL
, HFILL
}
5899 { &hf_aecp_query_id
,
5900 {"Query ID", "ieee17221.query_id",
5901 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5905 /* IDENTIFY_NOTIFICATION */
5907 /* STATE_CHANGE_NOTIFICATION */
5910 {"Count", "ieee17221.count",
5911 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5913 { &hf_aecp_descriptors
,
5914 {"Descriptors Array", "ieee17221.descriptors",
5915 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5918 /* INCREMENT_CONTROL_VALUE / DECREMENT_CONTROL_VALUE */
5919 { &hf_aecp_values_count
,
5920 {"Values Count", "ieee17221.values_count",
5921 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5925 /* START_OPERATION */
5926 { &hf_aecp_operation_id
,
5927 {"Operation ID", "ieee17221.operation_id",
5928 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5930 { &hf_aecp_operation_type
,
5931 {"Operation Type", "ieee17221.operation_type",
5932 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5933 },/* draft spec says this is defined by control_type field *
5934 * start_operation does not include a control type field *
5935 * There is an operation type table 7.83 that has not *
5936 * yet been defined. control_type may be part of a *
5937 * descriptor; will check */
5939 /* ABORT_OPERATION */
5941 /* OPERATION_STATUS */
5942 { &hf_aecp_percent_complete
,
5943 {"Percent Complete", "ieee17221.percent_complete",
5944 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5947 /* AUTH_GET_KEY_COUNT */
5949 /* * AVDECC ENTITY MODEL DESCRIPTOR FIELDS * */
5952 /* hf_aecp_descriptor_type */
5953 /* hf_aecp_descriptor_index */
5954 { &hf_aem_entity_id
,
5955 {"Entity ID", "ieee17221.entity_id",
5956 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5958 { &hf_aem_entity_model_id
,
5959 {"Entity Model ID", "ieee17221.entity_model_id",
5960 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
5962 /* hf_adp_entity_cap
5963 * hf_adp_entity_cap_avdecc_ip
5964 * hf_adp_entity_cap_zero_conf
5965 * hf_adp_entity_cap_gateway_entity
5966 * hf_adp_entity_cap_avdecc_control
5967 * hf_adp_entity_cap_legacy_avc
5968 * hf_adp_entity_cap_assoc_id_support
5969 * hf_adp_entity_cap_assoc_id_valid
5971 /* hf_adp_talker_stream_srcs */
5972 /* hf_adp_talker_cap & flags */
5973 /* hf_adp_listener_stream_sinks */
5974 /* hf_adp_listener_cap & flags */
5975 /* hf_adp_controller_cap & flags */
5976 /* hf_adp_avail_index */
5977 /* where appropriate use adp values */
5978 { &hf_aem_entity_name
,
5979 {"Entity Name", "ieee17221.entity_name",
5980 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5982 { &hf_aem_vendor_name_string
,
5983 {"Vendor Name String (ptr)", "ieee17221.vendor_name_string",
5984 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5986 { &hf_aem_model_name_string
,
5987 {"Model Name String (ptr)", "ieee17221.model_name_string",
5988 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
5990 { &hf_aem_firmware_version
,
5991 {"Firmware Version", "ieee17221.firmware_version",
5992 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5994 { &hf_aem_group_name
,
5995 {"Group Name", "ieee17221.group_name",
5996 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
5998 { &hf_aem_serial_number
,
5999 {"Serial Number", "ieee17221.serial_number",
6000 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6002 { &hf_aem_configurations_count
,
6003 {"Configurations Count", "ieee17221.configurations_count",
6004 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6006 { &hf_aem_current_configuration
,
6007 {"Current Configuration", "ieee17221.current_configuration",
6008 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6012 { &hf_aem_configuration_name
,
6013 {"Object Name", "ieee17221.configuration_name",
6014 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6016 { &hf_aem_configuration_name_string
,
6017 {"Localized Description", "ieee17221.configuration_name_string",
6018 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6020 { &hf_aem_descriptor_counts_count
,
6021 {"Descriptor Counts Count", "ieee17221.descriptor_counts_count",
6022 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6024 { &hf_aem_descriptor_counts_offset
,
6025 {"Descriptor Counts Offset", "ieee17221.descriptor_counts_offset",
6026 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6029 {"Count", "ieee17221.count",
6030 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6034 { &hf_aem_number_of_stream_input_ports
,
6035 {"Number Of Stream Input Ports", "ieee17221.number_of_stream_input_ports",
6036 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6038 { &hf_aem_base_stream_input_port
,
6039 {"Base Stream Input Port", "ieee17221.base_stream_input_port",
6040 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6042 { &hf_aem_number_of_stream_output_ports
,
6043 {"Number Of Stream Output Ports", "ieee17221.number_of_stream_output_ports",
6044 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6046 { &hf_aem_base_stream_output_port
,
6047 {"Base Stream Output Port", "ieee17221.base_stream_output_port",
6048 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6050 { &hf_aem_number_of_external_input_ports
,
6051 {"Number Of External Input Ports", "ieee17221.number_of_external_input_ports",
6052 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6054 { &hf_aem_base_external_input_port
,
6055 {"Base External Input Port", "ieee17221.base_external_input_port",
6056 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6058 { &hf_aem_number_of_external_output_ports
,
6059 {"Number Of External Output Ports", "ieee17221.number_of_external_output_ports",
6060 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6062 { &hf_aem_base_external_output_port
,
6063 {"Base External Output Port", "ieee17221.base_external_output_port",
6064 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6066 { &hf_aem_number_of_internal_input_ports
,
6067 {"Number Of Internal Input Ports", "ieee17221.number_of_internal_input_ports",
6068 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6070 { &hf_aem_base_internal_input_port
,
6071 {"Base Internal Input Port", "ieee17221.base_internal_input_port",
6072 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6074 { &hf_aem_number_of_internal_output_ports
,
6075 {"Number Of Internal Output Ports", "ieee17221.number_of_internal_output_ports",
6076 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6078 { &hf_aem_base_internal_output_port
,
6079 {"Base Internal Output Port", "ieee17221.base_internal_output_port",
6080 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6082 { &hf_aem_clock_source_id
,
6083 {"Clock Source ID", "ieee17221.clock_source_id",
6084 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6086 { &hf_aem_clock_domain_id
,
6087 {"Clock Domain ID", "ieee17221.clock_domain_id",
6088 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6090 { &hf_aem_clock_sources_offset
,
6091 {"Clock Sources Offset", "ieee17221.clock_sources_offset",
6092 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6094 { &hf_aem_clock_source_index
,
6095 {"Clock Source Index", "ieee17221.clock_source_index",
6096 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6098 { &hf_aem_clock_sources_count
,
6099 {"Clock Sources Count", "ieee17221.clock_sources_count",
6100 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6102 { &hf_aem_clock_sources
,
6103 {"Clock Sources", "ieee17221.clock_sources",
6104 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6106 { &hf_aem_clock_sources_array
,
6107 {"Clock Sources Array", "ieee17221.clock_sources_array",
6108 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6110 { &hf_aem_number_of_controls
,
6111 {"Number Of Controls", "ieee17221.number_of_controls",
6112 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6114 { &hf_aem_base_control
,
6115 {"Base Control", "ieee17221.base_control",
6116 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6118 { &hf_aem_number_control_blocks
,
6119 {"Number Of Control Blocks", "ieee17221.number_of_control_blocks",
6120 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6122 { &hf_aem_base_control_block
,
6123 {"Base Control Block", "ieee17221.base_control_block",
6124 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6126 { &hf_aem_object_name
,
6127 {"Object Name", "ieee17221.object_name",
6128 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6130 { &hf_aem_localized_description
,
6131 {"Localized Description", "ieee17221.localized_description",
6132 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6134 { &hf_aem_current_sample_rate
,
6135 {"Current Sample Rate", "ieee17221.current_sample_rate",
6136 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6138 { &hf_aem_number_signal_selectors
,
6139 {"Number of Signal Selectors", "ieee17221.num_signal_selectors",
6140 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6142 { &hf_aem_base_signal_selector
,
6143 {"Base Signal Selector", "ieee17221.base_signal_selector",
6144 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6146 { &hf_aem_number_mixers
,
6147 {"Number of Mixers", "ieee17221.num_mixers",
6148 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6150 { &hf_aem_base_mixer
,
6151 {"Base Mixer", "ieee17221.base_mixer",
6152 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6154 { &hf_aem_number_matrices
,
6155 {"Number of Matrices", "ieee17221.num_matrices",
6156 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6158 { &hf_aem_base_matrix
,
6159 {"Base Matrix", "ieee17221.base_matrix",
6160 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6162 { &hf_aem_number_splitters
,
6163 {"Number of Splitters", "ieee17221.num_splitters",
6164 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6166 { &hf_aem_base_splitter
,
6167 {"Base Splitter", "ieee17221.base_splitter",
6168 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6170 { &hf_aem_number_combiners
,
6171 {"Number of Combiners", "ieee17221.num_combiners",
6172 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6174 { &hf_aem_base_combiner
,
6175 {"Base Combiner", "ieee17221.base_combiner",
6176 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6178 { &hf_aem_number_demultiplexers
,
6179 {"Number of Demultiplexers", "ieee17221.num_demultiplexer",
6180 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6182 { &hf_aem_base_demultiplexer
,
6183 {"Base Demultiplexer", "ieee17221.base_demultiplexer",
6184 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6186 { &hf_aem_number_multiplexers
,
6187 {"Number of Multiplexers", "ieee17221.num_multiplexers",
6188 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6190 { &hf_aem_base_multiplexer
,
6191 {"Base Multiplexer", "ieee17221.base_multiplexer",
6192 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6194 { &hf_aem_number_transcoders
,
6195 {"Number of Transcoders", "ieee17221.num_transcoders",
6196 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6198 { &hf_aem_base_transcoder
,
6199 {"Base Transcoder", "ieee17221.base_transcoder",
6200 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6202 /* sample rate is 3 bit pull field multiplier and 29 bit base freq in Hz */
6203 { &hf_aem_sample_rates_offset
,
6204 {"Sample Rates Offset", "ieee17221.sample_rates_offset",
6205 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6207 { &hf_aem_sample_rates_count
,
6208 {"Sample Rates Count", "ieee17221.sample_rates_count",
6209 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6211 { &hf_aem_sample_rates
,
6212 {"Sample Rates", "ieee17221.sample_rates",
6213 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6216 { &hf_aem_base_frequency
,
6217 {"Base Frequency", "ieee17221.base_frequency",
6218 FT_UINT32
, BASE_DEC
, NULL
, AEM_BASE_FREQUENCY_MASK
, NULL
, HFILL
}
6220 { &hf_aem_pull_field
,
6221 {"Pull Field (frequency multiplier)", "ieee17221.pull_field",
6222 FT_UINT8
, BASE_HEX
, VALS(aem_frequency_multiplier_type_vals
), AEM_PULL_FIELD_MASK
, NULL
, HFILL
}
6231 { &hf_aem_stream_name
,
6232 {"Object Name", "ieee17221.stream_name",
6233 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6235 { &hf_aem_stream_name_string
,
6236 {"Localized Description", "ieee17221.stream_name_string",
6237 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6239 { &hf_aem_stream_flags
,
6240 {"Stream Flags", "ieee17221.stream_flags",
6241 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6243 { &hf_aem_flags_clock_sync_source
,
6244 {"Clock Sync Source Flag", "ieee17221.flags.clock_sync_source",
6245 FT_BOOLEAN
, 16, NULL
, AEM_CLOCK_SYNC_SOURCE_FLAG_MASK
, NULL
, HFILL
}
6247 { &hf_aem_flags_class_a
,
6248 {"Class A Flag", "ieee17221.flags.class_a",
6249 FT_BOOLEAN
, 16, NULL
, AEM_CLASS_A_FLAG_MASK
, NULL
, HFILL
}
6251 { &hf_aem_flags_class_b
,
6252 {"Class B Flag", "ieee17221.flags.class_b",
6253 FT_BOOLEAN
, 16, NULL
, AEM_CLASS_B_FLAG_MASK
, NULL
, HFILL
}
6256 { &hf_aem_stream_channels
,
6257 {"Stream Channels", "ieee17221.stream_channels",
6258 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6261 { &hf_aem_formats_offset
,
6262 {"Formats Offset", "ieee17221.formats_offset",
6263 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6265 { &hf_aem_number_of_formats
,
6266 {"Number Of Formats", "ieee17221.number_of_formats",
6267 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6269 { &hf_aem_backup_talker_guid_0
,
6270 {"Primary Backup Talker GUID", "ieee17221.backup_talker_guid_0",
6271 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6273 { &hf_aem_backup_talker_unique_0
,
6274 {"Primary Backup Talker Unique ID", "ieee17221.backup_talker_unique_0",
6275 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6277 { &hf_aem_backup_talker_guid_1
,
6278 {"Secondary Backup Talker GUID", "ieee17221.backup_talker_guid_1",
6279 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6281 { &hf_aem_backup_talker_unique_1
,
6282 {"Secondary Backup Talker Unique ID", "ieee17221.backup_talker_unique_1",
6283 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6285 { &hf_aem_backup_talker_guid_2
,
6286 {"Tertiary Backup Talker GUID", "ieee17221.backup_talker_guid_2",
6287 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6289 { &hf_aem_backup_talker_unique_2
,
6290 {"Tertiary Backup Talker Unique ID", "ieee17221.backup_talker_unique_2",
6291 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6293 { &hf_aem_backedup_talker_guid
,
6294 {"Backedup Talker GUID", "ieee17221.backedup_talker_guid",
6295 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6297 { &hf_aem_backedup_talker_unique
,
6298 {"Backedup Talker Unique ID", "ieee17221.backedup_talker_unique",
6299 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6301 { &hf_aem_avb_interface_id
,
6302 {"AVB Interface ID", "ieee17221.avb_interface_id",
6303 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6305 { &hf_aem_buffer_length
,
6306 {"Buffer Length", "ieee17221.buffer_length",
6307 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6310 /* array head. uses ett_aem_stream_formats */
6311 { &hf_aem_stream_formats
,
6312 {"Stream Formats Array", "ieee17221.stream_formats",
6313 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6316 /* EXTERNAL_JACK_INPUT */
6317 /* EXTERNAL_JACK_OUTPUT*/
6318 { &hf_aem_jack_name
,
6319 {"Object Name", "ieee17221.jack_name",
6320 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6322 { &hf_aem_jack_name_string
,
6323 {"Localized Description", "ieee17221.jack_name_string",
6324 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6326 { &hf_aem_interface_name
,
6327 {"Interface Name", "ieee17221.interface_name",
6328 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6330 { &hf_aem_interface_name_string
,
6331 {"Interface Name String", "ieee17221.interface_name_string",
6332 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6334 { &hf_aem_jack_flags
,
6335 {"Jack Flags", "ieee17221.jack_flags",
6336 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6338 { &hf_aem_flags_captive
,
6339 {"Captive Flag", "ieee17221.flags.captive",
6340 FT_BOOLEAN
, 16, NULL
, AEM_CAPTIVE_FLAG_MASK
, NULL
, HFILL
}
6342 { &hf_aem_jack_type
,
6343 {"Jack Type", "ieee17221.jack_type",
6344 FT_UINT16
, BASE_HEX
, VALS(aem_jack_type_vals
), 0x00, NULL
, HFILL
}
6346 /* AUDIO_PORT_INPUT */
6347 /* AUDIO_PORT_OUTPUT */
6348 { &hf_aem_port_flags
,
6349 {"Port Flags", "ieee17221.port_flags",
6350 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6352 { &hf_aem_flags_async_sample_rate_conv
,
6353 {"Asynchronous Sample Rate Converter Flag", "ieee17221.flags.async_sample_rate_conv",
6354 FT_BOOLEAN
, 16, NULL
, AEM_ASYNC_SAMPLE_RATE_CONV_FLAG_MASK
, NULL
, HFILL
}
6356 { &hf_aem_flags_sync_sample_rate_conv
,
6357 {"Synchronous Sample Rate Converter Flag", "ieee17221.flags.sync_sample_rate_conv",
6358 FT_BOOLEAN
, 16, NULL
, AEM_SYNC_SAMPLE_RATE_CONV_FLAG_MASK
, NULL
, HFILL
}
6361 { &hf_aem_audio_channels
,
6362 {"Audio Channels", "ieee17221.audio_channels",
6363 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6366 { &hf_aem_number_of_clusters
,
6367 {"Number of Clusters", "ieee17221.number_of_clusters",
6368 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6370 { &hf_aem_base_cluster
,
6371 {"Base Cluster", "ieee17221.base_cluster",
6372 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6374 { &hf_aem_base_audio_map
,
6375 {"Base Audio Map", "ieee17221.base_audio_map",
6376 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6378 { &hf_aem_number_audio_maps
,
6379 {"Number of Audio Maps", "ieee17221.num_audio_maps",
6380 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6382 /* VIDEO_PORT_INPUT */
6383 /* VIDEO_PORT_OUTPUT */
6385 { &hf_aem_stream_id
,
6386 {"Stream Descriptor ID", "ieee17221.stream_descriptor_id",
6387 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6389 { &hf_aem_formats_count
,
6390 {"Formats Count", "ieee17221.formats_count",
6391 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6395 /* EXTERNAL_PORT_INPUT */
6396 /* EXTERNAL_PORT_OUTPUT */
6398 {"Jack ID", "ieee17221.jack_id",
6399 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6401 /* SENSOR_PORT_INPUT */
6402 /* SENSOR_PORT_OUTPUT */
6403 /* INTERNAL_PORT_INPUT */
6404 /* INTERNAL_PORT_OUTPUT */
6406 { &hf_aem_internal_id
,
6407 {"Internal ID", "ieee17221.internal_id",
6408 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6412 { &hf_aem_avb_interface_flags
,
6413 {"Interface Flags", "ieee17221.interface_flags",
6414 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6416 { &hf_aem_avb_clock_identity
,
6417 {"Clock Identity", "ieee17221.clock_identity",
6418 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6420 { &hf_aem_avb_priority1
,
6421 {"Priority1", "ieee17221.priority1",
6422 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6424 { &hf_aem_avb_clock_class
,
6425 {"Clock Class", "ieee17221.clock_class",
6426 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6428 { &hf_aem_avb_offset_scaled_log_variance
,
6429 {"Scaled Log Variance", "ieee17221.offset_scaled_log_variance",
6430 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6432 { &hf_aem_avb_clock_accuracy
,
6433 {"Clock Accuracy", "ieee17221.clock_accuracy",
6434 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6436 { &hf_aem_avb_priority2
,
6437 {"Priority2", "ieee17221.priority2",
6438 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6440 { &hf_aem_avb_domain_number
,
6441 {"Domain Number", "ieee17221.domain_number",
6442 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6444 { &hf_aem_avb_log_sync_interval
,
6445 {"Log sync Interval", "ieee17221.log_sync_interval",
6446 FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6449 { &hf_aem_avb_propagation_delay
,
6450 {"Propagation Delay", "ieee17221.propagation_delay",
6451 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6456 { &hf_aem_clock_source_name
,
6457 {"Object Name", "ieee17221.clock_source_name",
6458 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6460 { &hf_aem_clock_source_name_string
,
6461 {"Localized Description", "ieee17221.clock_source_name_string",
6462 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6464 { &hf_aem_clock_source_flags
,
6465 {"Clock Source Flags", "ieee17221.clock_source_flags",
6466 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6467 }, /* no flags currently defined */
6468 { &hf_aem_clock_source_type
,
6469 {"Clock Source Type", "ieee17221.clock_source_type",
6470 FT_UINT16
, BASE_HEX
, VALS(aem_clock_source_type_vals
), 0x00, NULL
, HFILL
}
6472 { &hf_aem_clock_source_location_type
,
6473 {"Clock Source Location Type", "ieee17221.clock_source_location_type",
6474 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6476 { &hf_aem_clock_source_location_id
,
6477 {"Clock Source Location ID", "ieee17221.clock_source_location_id",
6478 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6481 { &hf_aem_mappings_offset
,
6482 {"Mappings Offset", "ieee17221.mappings_offset",
6483 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6485 { &hf_aem_number_of_mappings
,
6486 {"Number of Mappings", "ieee17221.number_of_mappings",
6487 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6490 {"Mappings", "ieee17221.mappings",
6491 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6493 { &hf_aem_mapping_stream_index
,
6494 {"Mapping Stream Index", "ieee17221.mapping_stream_index",
6495 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6497 { &hf_aem_mapping_stream_channel
,
6498 {"Mapping Stream Channel", "ieee17221.mapping_stream_channel",
6499 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6501 { &hf_aem_mapping_cluster_offset
,
6502 {"Mapping Cluster Offset", "ieee17221.mapping_cluster_offset",
6503 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6505 { &hf_aem_mapping_cluster_channel
,
6506 {"Mapping Cluster Channel", "ieee17221.mapping_cluster_channel",
6507 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6510 { &hf_aem_channel_count
,
6511 {"Channel Count", "ieee17221.channel_count",
6512 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6514 { &hf_aem_path_latency
,
6515 {"Path Latency", "ieee17221.path_latency",
6516 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6518 { &hf_aem_am824_label
,
6519 {"AM824 Label", "ieee17221.am824_label",
6520 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6523 { &hf_aem_cluster_name
,
6524 {"Cluster Name", "ieee17221.cluster_name",
6525 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6527 { &hf_aem_cluster_name_string
,
6528 {"Cluster Name String", "ieee17221.cluster_name_string",
6529 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6534 { &hf_aem_control_type
,
6535 {"Control Type", "ieee17221.control_type",
6536 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6539 { &hf_aem_control_location_type
,
6540 {"Control Location Type", "ieee17221.control_location_type",
6541 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6543 { &hf_aem_control_location_id
,
6544 {"Control Location ID", "ieee17221.control_location_id",
6545 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6548 { &hf_aem_control_value_type
,
6549 {"Control Value Type", "ieee17221.control_value_type",
6550 FT_UINT16
, BASE_HEX
, VALS(aem_control_value_type_vals
), 0x00, NULL
, HFILL
}
6552 { &hf_aem_control_domain
,
6553 {"Control Domain", "ieee17221.control_domain",
6554 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6556 { &hf_aem_values_offset
,
6557 {"Values Offset", "ieee17221.values_offset",
6558 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6560 { &hf_aem_number_of_values
,
6561 {"Number Of Values", "ieee17221.number_of_values",
6562 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6564 { &hf_aem_control_latency
,
6565 {"Control Latency", "ieee17221.control_latency",
6566 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6569 /* SIGNAL_SELECTOR */
6571 { &hf_aem_sources_offset
,
6572 {"Sources Offset", "ieee17221.sources_offset",
6573 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6575 { &hf_aem_current_signal_type
,
6576 {"Current Signal Type", "ieee17221.current_signal_type",
6577 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6579 { &hf_aem_current_signal_id
,
6580 {"Current Signal ID", "ieee17221.current_signal_id",
6581 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6583 { &hf_aem_default_signal_type
,
6584 {"Default Signal Type", "ieee17221.default_signal_type",
6585 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6587 { &hf_aem_default_signal_id
,
6588 {"Default Signal ID", "ieee17221.default_signal_id",
6589 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6592 { &hf_aem_block_latency
,
6593 {"Block Latency", "ieee17221.block_latency",
6594 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6596 { &hf_aem_reset_time
,
6597 {"Reset Time", "ieee17221.reset_time",
6598 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6600 { &hf_aem_signal_type
,
6601 {"Signal Type", "ieee17221.signal_type",
6602 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6604 { &hf_aem_signal_index
,
6605 {"Signal Index", "ieee17221.signal_index",
6606 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6608 { &hf_aem_signal_output
,
6609 {"Signal Output", "ieee17221.signal_output",
6610 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6615 { &hf_aem_number_of_sources
,
6616 {"Number of Sources", "ieee17221.number_of_sources",
6617 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6619 { &hf_aem_value_offset
,
6620 {"Value Offset", "ieee17221.value_offset",
6621 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6626 {"Width", "ieee17221.width",
6627 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6630 {"Height", "ieee17221.height",
6631 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6633 { &hf_aem_base_source
,
6634 {"Base Source", "ieee17221.base_source",
6635 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6637 { &hf_aem_number_destinations
,
6638 {"Number of Destinations", "ieee17221.num_destinations",
6639 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6641 { &hf_aem_base_destination
,
6642 {"Base Destination", "ieee17221.base_destination",
6643 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6648 { &hf_aem_locale_identifier
,
6649 {"Locale Identifier", "ieee17221.locale_identifier",
6650 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6652 { &hf_aem_number_of_strings
,
6653 {"Number of Strings", "ieee17221.number_of_strings",
6654 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6656 { &hf_aem_base_strings
,
6657 {"Base Strings", "ieee17221.base_strings",
6658 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6663 {"String", "ieee17221.string",
6664 FT_STRINGZ
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6668 { &hf_aem_signals_count
,
6669 {"Signals Count", "ieee17221.signals_count",
6670 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6672 { &hf_aem_signals_offset
,
6673 {"Signals Offset", "ieee17221.signals_offset",
6674 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6678 { &hf_aem_memory_object_type
,
6679 {"Memory Object Type", "ieee17221.memory_object_type",
6680 FT_UINT16
, BASE_HEX
, VALS(aem_memory_object_type_vals
), 0x00, NULL
, HFILL
}
6682 { &hf_aem_target_descriptor_type
,
6683 {"Target Descriptor Type", "ieee17221.target_descriptor_type",
6684 FT_UINT16
, BASE_HEX
, VALS(aem_descriptor_type_vals
), 0x00, NULL
, HFILL
}
6686 { &hf_aem_target_descriptor_id
,
6687 {"Target Descriptor ID", "ieee17221.target_descriptor_id",
6688 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6690 { &hf_aem_start_address
,
6691 {"Start Address", "ieee17221.start_address",
6692 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6695 {"Length", "ieee17221.length",
6696 FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6700 /* CONTROL VALUE TYPES */
6701 { &hf_aem_ctrl_int8
,
6702 {"Control INT8", "ieee17221.ctrl_int8",
6703 FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6705 { &hf_aem_ctrl_uint8
,
6706 {"Control UINT8", "ieee17221.ctrl_uint8",
6707 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6709 { &hf_aem_ctrl_int16
,
6710 {"Control INT16", "ieee17221.ctrl_int16",
6711 FT_INT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6713 { &hf_aem_ctrl_uint16
,
6714 {"Control UINT16", "ieee17221.ctrl_uint16",
6715 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6717 { &hf_aem_ctrl_int32
,
6718 {"Control INT32", "ieee17221.ctrl_int32",
6719 FT_INT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6721 { &hf_aem_ctrl_uint32
,
6722 {"Control UINT32", "ieee17221.ctrl_uint32",
6723 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6725 { &hf_aem_ctrl_int64
,
6726 {"Control INT64", "ieee17221.ctrl_int64",
6727 FT_INT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6729 { &hf_aem_ctrl_uint64
,
6730 {"Control UINT64", "ieee17221.ctrl_uint64",
6731 FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6733 { &hf_aem_ctrl_float
,
6734 {"Control FLOAT", "ieee17221.ctrl_float",
6735 FT_FLOAT
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6737 { &hf_aem_ctrl_double
,
6738 {"Control DOUBLE", "ieee17221.ctrl_double",
6739 FT_DOUBLE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6741 { &hf_aem_ctrl_vals
,
6742 {"Control Values", "ieee17221.ctrl_vals",
6743 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6746 {"Control Value Units", "ieee17221.units",
6747 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6749 { &hf_aem_string_ref
,
6750 {"String Reference", "ieee17221.string_ref",
6751 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6754 {"GUID", "ieee17221.guid",
6755 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6757 { &hf_aem_blob_size
,
6758 {"Blob Size", "ieee17221.blob_size",
6759 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6761 { &hf_aem_binary_blob
,
6762 {"Binary Blob", "ieee17221.binary_blob",
6763 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6766 {"Sources", "ieee17221.sources",
6767 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6769 { &hf_aem_unknown_descriptor
,
6770 {"Unknown or Malformed Descriptor", "ieee17221.unknown_descriptor",
6771 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6773 { &hf_aem_frequency
,
6774 {"Frequency", "ieee17221.frequency",
6775 FT_FLOAT
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6778 /* AEM MEDIA FORMAT FIELDS */
6779 /* Standard media formats are defined by always having the 24 most significant bits
6780 * of the EUI64 set to 0x90e0f0
6784 {"OUI-24", "ieee17221.oui24",
6785 FT_UINT24
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6788 {"MFD Type", "ieee17221.mfd_type",
6789 FT_UINT8
, BASE_HEX
, VALS(aem_mfd_type_vals
), 0x00, NULL
, HFILL
}
6792 {"Div Flag", "ieee17221.div",
6793 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6795 { &hf_aem_interlace
,
6796 {"Interlace Flag", "ieee17221.interlace",
6797 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6800 {"Video Channel Count", "ieee17221.channels",
6801 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_CHANNELS
, NULL
, HFILL
}
6803 { &hf_aem_color_format
,
6804 {"Color Format", "ieee17221.color_format",
6805 FT_UINT16
, BASE_HEX
, VALS(aem_color_format_type_vals
), AEM_MASK_COLOR_FORMAT
, NULL
, HFILL
}
6808 {"Bits Per Pixel", "ieee17221.bpp",
6809 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_BPP
, NULL
, HFILL
}
6812 {"Aspect X", "ieee17221.aspect_x",
6813 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6816 {"Aspect Y", "ieee17221.aspect_y",
6817 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6819 { &hf_aem_frame_rate
,
6820 {"Frame Rate", "ieee17221.frame_rate",
6821 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6824 {"Comp 1", "ieee17221.comp1",
6825 FT_UINT16
, BASE_DEC
, NULL
, AEM_MASK_COMP1
, NULL
, HFILL
}
6828 {"Comp 2", "ieee17221.comp2",
6829 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_COMP2
, NULL
, HFILL
}
6832 {"Comp 3", "ieee17221.comp3",
6833 FT_UINT16
, BASE_DEC
, NULL
, AEM_MASK_COMP3
, NULL
, HFILL
}
6836 {"Comp 4", "ieee17221.comp4",
6837 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_COMP4
, NULL
, HFILL
}
6840 {"Width", "ieee17221.width",
6841 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6843 { &hf_aem_mf_height
,
6844 {"Height", "ieee17221.height",
6845 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6848 {"CS EUI64", "ieee17221.cs_eui64",
6849 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6852 /* BEGIN STREAM FORMAT (SF) FIELDS */
6853 { &hf_aem_stream_format
,
6854 {"Stream Format", "ieee17221.stream_format",
6855 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6857 { &hf_aem_sf_version
,
6858 {"Version", "ieee17221.sf_version",
6859 FT_UINT8
, BASE_HEX
, NULL
, AEM_MASK_SF_VERSION
, NULL
, HFILL
}
6861 { &hf_aem_sf_subtype
,
6862 {"Subtype", "ieee17221.sf_subtype",
6863 FT_UINT8
, BASE_HEX
, NULL
, AEM_MASK_SF_SUBTYPE
, NULL
, HFILL
}
6867 {"SF", "ieee17221.sf",
6868 FT_BOOLEAN
, 8, NULL
, AEM_MASK_SF
, NULL
, HFILL
}
6870 { &hf_aem_iidc_format
,
6871 {"IIDC Format", "ieee17221.iidc_format",
6872 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6874 { &hf_aem_iidc_mode
,
6875 {"IIDC Mode", "ieee17221.iidc_mode",
6876 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6878 { &hf_aem_iidc_rate
,
6879 {"IIDC Rate", "ieee17221.iidc_rate",
6880 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6883 {"FMT", "ieee17221.fmt",
6884 FT_UINT8
, BASE_HEX
, NULL
, AEM_MASK_FMT
, NULL
, HFILL
}
6887 {"FDF EVT", "ieee17221.fdf_evt",
6888 FT_UINT8
, BASE_HEX
, NULL
, AEM_MASK_FDF_EVT
, NULL
, HFILL
}
6891 {"FDF SFC", "ieee17221.fdf_sfc",
6892 FT_UINT8
, BASE_HEX
, NULL
, AEM_MASK_FDF_SFC
, NULL
, HFILL
}
6895 {"DBS", "ieee17221.dbs",
6896 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6899 {"Blocking Flag", "ieee17221.flags.b",
6900 FT_BOOLEAN
, 8, NULL
, AEM_MASK_B
, NULL
, HFILL
}
6903 {"NonBlocking Flag", "ieee17221.flags.nb",
6904 FT_BOOLEAN
, 8, NULL
, AEM_MASK_NB
, NULL
, HFILL
}
6906 { &hf_aem_label_iec_60958_cnt
,
6907 {"Label IEC 60958 Count", "ieee17221.label_iec_60958_cnt",
6908 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6910 { &hf_aem_label_mbla_cnt
,
6911 {"Label Multi-Bit Linear Audio Count", "ieee17221.label_mbla_cnt",
6912 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6914 { &hf_aem_label_midi_cnt
,
6915 {"Label Midi Slot Count", "ieee17221.label_midi_cnt",
6916 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_LABEL_MIDI_CNT
, NULL
, HFILL
}
6918 { &hf_aem_label_smpte_cnt
,
6919 {"Label SMPTE Slot Count", "ieee17221.label_smpte_cnt",
6920 FT_UINT8
, BASE_DEC
, NULL
, AEM_MASK_LABEL_SMPTE_CNT
, NULL
, HFILL
}
6922 { &hf_aem_video_mode
,
6923 {"Video Mode", "ieee17221.video_mode",
6924 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6926 { &hf_aem_compress_mode
,
6927 {"Compress Mode", "ieee17221.compress_mode",
6928 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6930 { &hf_aem_color_space
,
6931 {"Color Space", "ieee17221.color_space",
6932 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6936 {"Values", "ieee17221.values",
6937 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
6940 { &hf_aecp_status_code
,
6941 {"Status", "ieee17221.status",
6942 FT_UINT8
, BASE_HEX
, VALS(aem_status_type_vals
), AECP_STATUS_CODE_MASK
, NULL
, HFILL
}
6944 /* END STREAM FORMAT (SF) FIELDS */
6946 /* SET/GET_STREAM_BACKUP */
6947 { &hf_aecp_backup_talker_entity_id_0
,
6948 {"Backup Talker Entity ID 0", "ieee17221.backup_talker_entity_id_0",
6949 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6951 { &hf_aecp_backup_talker_unique_id_0
,
6952 {"Backup Talker Unique ID 0", "ieee17221.backup_talker_unique_id_0",
6953 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6955 { &hf_aecp_backup_talker_entity_id_1
,
6956 {"Backup Talker Entity ID 1", "ieee17221.backup_talker_entity_id_1",
6957 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6959 { &hf_aecp_backup_talker_unique_id_1
,
6960 {"Backup Talker Unique ID 1", "ieee17221.backup_talker_unique_id_1",
6961 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6963 { &hf_aecp_backup_talker_entity_id_2
,
6964 {"Backup Talker Entity ID 2", "ieee17221.backup_talker_entity_id_2",
6965 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6967 { &hf_aecp_backup_talker_unique_id_2
,
6968 {"Backup Talker Unique ID 2", "ieee17221.backup_talker_unique_id_2",
6969 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6971 { &hf_aecp_backedup_talker_entity_id
,
6972 {"Backed up Talker Entity ID", "ieee17221.backedup_talker_entity_id",
6973 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6975 { &hf_aecp_backedup_talker_unique_id
,
6976 {"Backedup Talker Unique ID", "ieee17221.backedup_talker_unique_id",
6977 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
6979 { &hf_aecp_vendor_unique_protocol_id
,
6980 {"Vendor Unique Protocol ID", "ieee17221.protocol_id",
6981 FT_UINT48
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
6985 /* Setup protocol subtree array */
6986 static int *ett
[] = {
6992 /* &ett_adp_aud_format, */
6993 &ett_adp_samp_rates
,
6994 &ett_adp_chan_format
,
6996 &ett_aem_desc_counts
,
6997 &ett_aem_descriptor
,
6998 &ett_aem_sample_rates
,
6999 &ett_aem_stream_flags
,
7000 &ett_aem_clock_sources
,
7001 &ett_aem_stream_formats
,
7002 &ett_aem_jack_flags
,
7003 &ett_aem_port_flags
,
7004 &ett_aecp_get_avb_info_msrp_mappings
,
7005 &ett_aecp_get_as_path_sequences
,
7006 &ett_aem_clock_source_flags
,
7010 /* &ett_aem_media_format, */
7011 &ett_aecp_descriptors
,
7013 &ett_aem_stream_format
,
7016 /* Register the protocol name and description */
7017 proto_17221
= proto_register_protocol("IEEE 1722.1 Protocol", "IEEE1722.1", "ieee17221");
7018 avb17221_handle
= register_dissector("ieee17221", dissect_17221
, proto_17221
);
7020 /* Required function calls to register the header fields and subtrees used */
7021 proto_register_field_array(proto_17221
, hf
, array_length(hf
));
7022 proto_register_subtree_array(ett
, array_length(ett
));
7024 /* Register the custom handler for vendor specific messages */
7025 vendor_unique_protocol_dissector_table
= register_dissector_table("ieee17221.protocol_id", "Vendor Unique Protocol ID", proto_17221
, FT_STRING
, STRING_CASE_SENSITIVE
);
7029 proto_reg_handoff_17221(void)
7031 dissector_add_uint("ieee1722.subtype", 0xFA, avb17221_handle
);
7032 dissector_add_uint("ieee1722.subtype", 0xFB, avb17221_handle
);
7033 dissector_add_uint("ieee1722.subtype", 0xFC, avb17221_handle
);
7037 * Editor modelines - https://www.wireshark.org/tools/modelines.html
7042 * indent-tabs-mode: nil
7045 * vi: set shiftwidth=3 tabstop=8 expandtab:
7046 * :indentSize=3:tabSize=8:noTabs=true: