2012-03-02 03:30:30 +00:00
|
|
|
/* packet-ieee17221.c
|
|
|
|
* Dissector for IEEE P1722.1
|
|
|
|
* Copyright 2011-2012, Thomas Bottom <tom.bottom@labxtechnologies.com>
|
|
|
|
* Chris Pane <chris.pane@labxtechnologies.com>
|
|
|
|
*
|
|
|
|
* Copyright 2011, Andy Lucas <andy@xmos.com>
|
|
|
|
*
|
|
|
|
* $Id$
|
|
|
|
*
|
|
|
|
* Wireshark - Network traffic analyzer
|
|
|
|
* By Gerald Combs <gerald@wireshark.org>
|
|
|
|
* Copyright 1998 Gerald Combs
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
2012-06-28 23:18:38 +00:00
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
2012-03-02 03:30:30 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* DEV NOTES
|
|
|
|
* This file uses 3 space indentation
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
2012-03-03 21:58:38 +00:00
|
|
|
/* #include <stdio.h> */
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
#include <epan/packet.h>
|
|
|
|
#include <epan/etypes.h>
|
|
|
|
|
|
|
|
/* 1722.1 ADP Offsets */
|
|
|
|
#define ADP_CD_OFFSET 0
|
|
|
|
#define ADP_VERSION_OFFSET 1
|
|
|
|
#define ADP_VALID_TIME_OFFSET 2
|
|
|
|
#define ADP_CD_LENGTH_OFFSET 3
|
|
|
|
#define ADP_ENTITY_GUID_OFFSET 4
|
|
|
|
#define ADP_VENDOR_ID_OFFSET 12
|
|
|
|
#define ADP_MODEL_ID_OFFSET 16
|
|
|
|
#define ADP_ENTITY_CAP_OFFSET 20
|
|
|
|
#define ADP_TALKER_STREAM_SRCS_OFFSET 24
|
|
|
|
#define ADP_TALKER_CAP_OFFSET 26
|
|
|
|
#define ADP_LISTENER_STREAM_SINKS_OFFSET 28
|
|
|
|
#define ADP_LISTENER_CAP_OFFSET 30
|
|
|
|
#define ADP_CONTROLLER_CAP_OFFSET 32
|
|
|
|
#define ADP_AVAIL_INDEX_OFFSET 36
|
|
|
|
#define ADP_AS_GM_ID_OFFSET 40
|
|
|
|
#define ADP_DEF_AUDIO_FORMAT_OFFSET 48
|
|
|
|
#define ADP_CHAN_FORMAT_OFFSET 50
|
|
|
|
#define ADP_DEF_VIDEO_FORMAT_OFFSET 52
|
|
|
|
#define ADP_ASSOC_ID_OFFSET 56
|
|
|
|
#define ADP_ENTITY_TYPE_OFFSET 64
|
|
|
|
|
|
|
|
/* Bit Field Masks */
|
|
|
|
|
|
|
|
#define ADP_MSG_TYPE_MASK 0x0f
|
|
|
|
#define ADP_VALID_TIME_MASK 0xf8
|
|
|
|
#define ADP_CD_LENGTH_MASK 0x07ff
|
|
|
|
|
|
|
|
/* message_type */
|
|
|
|
|
|
|
|
#define ADP_ENTITY_AVAILABLE_MESSAGE 0x00
|
|
|
|
#define ADP_ENTITY_DEPARTING_MESSAGE 0x01
|
|
|
|
#define ADP_ENTITY_DISCOVER_MESSAGE 0x02
|
|
|
|
|
|
|
|
/* entity_capabilities_flags */
|
|
|
|
#define ADP_AVDECC_IP_BITMASK 0x01
|
|
|
|
#define ADP_ZERO_CONF_BITMASK 0x02
|
|
|
|
#define ADP_GATEWAY_ENTITY_BITMASK 0x04
|
|
|
|
#define ADP_AVDECC_CONTROL_BITMASK 0x08
|
|
|
|
#define ADP_LEGACY_AVC_BITMASK 0x10
|
|
|
|
#define ADP_ASSOC_ID_SUPPORT_BITMASK 0x20
|
|
|
|
#define ADP_ASSOC_ID_VALID_BITMASK 0x40
|
|
|
|
|
|
|
|
/* talker capabilities flags */
|
|
|
|
#define ADP_TALK_IMPLEMENTED_BITMASK 0x0001
|
|
|
|
#define ADP_TALK_OTHER_SRC_BITMASK 0x0200
|
|
|
|
#define ADP_TALK_CONTROL_SRC_BITMASK 0x0400
|
|
|
|
#define ADP_TALK_MEDIA_CLK_SRC_BITMASK 0x0800
|
|
|
|
#define ADP_TALK_SMPTE_SRC_BITMASK 0x1000
|
|
|
|
|
|
|
|
#define ADP_TALK_MIDI_SRC_BITMASK 0x2000
|
|
|
|
#define ADP_TALK_AUDIO_SRC_BITMASK 0x4000
|
|
|
|
#define ADP_TALK_VIDEO_SRC_BITMASK 0x8000
|
|
|
|
|
|
|
|
/* listener capabilities flags */
|
|
|
|
#define ADP_LIST_IMPLEMENTED_BITMASK 0x0001
|
|
|
|
#define ADP_LIST_OTHER_SINK_BITMASK 0x0200
|
|
|
|
#define ADP_LIST_CONTROL_SINK_BITMASK 0x0400
|
|
|
|
#define ADP_LIST_MEDIA_CLK_SINK_BITMASK 0x0800
|
|
|
|
#define ADP_LIST_SMPTE_SINK_BITMASK 0x1000
|
|
|
|
#define ADP_LIST_MIDI_SINK_BITMASK 0x2000
|
|
|
|
#define ADP_LIST_AUDIO_SINK_BITMASK 0x4000
|
|
|
|
#define ADP_LIST_VIDEO_SINK_BITMASK 0x8000
|
|
|
|
|
|
|
|
/* Controller capabilities flags */
|
|
|
|
#define ADP_CONT_IMPLEMENTED_BITMASK 0x00000001
|
|
|
|
#define ADP_CONT_LAYER3_PROXY_BITMASK 0x00000002
|
|
|
|
|
|
|
|
/* Default audio formats fields */
|
|
|
|
#define ADP_DEF_AUDIO_SAMPLE_RATES_MASK 0xFC
|
|
|
|
#define ADP_DEF_AUDIO_MAX_CHANS_MASK 0x03FC
|
|
|
|
#define ADP_DEF_AUDIO_SAF_MASK 0x0002
|
|
|
|
#define ADP_DEF_AUDIO_FLOAT_MASK 0x0001
|
|
|
|
|
|
|
|
/* Default sample rates flags */
|
|
|
|
#define ADP_SAMP_RATE_44K1_BITMASK 0x01<<2
|
|
|
|
#define ADP_SAMP_RATE_48K_BITMASK 0x02<<2
|
|
|
|
#define ADP_SAMP_RATE_88K2_BITMASK 0x04<<2
|
|
|
|
#define ADP_SAMP_RATE_96K_BITMASK 0x08<<2
|
|
|
|
#define ADP_SAMP_RATE_176K4_BITMASK 0x10<<2
|
|
|
|
#define ADP_SAMP_RATE_192K_BITMASK 0x20<<2
|
|
|
|
|
|
|
|
/* channel_formats flags */
|
|
|
|
|
|
|
|
#define ADP_CHAN_FORMAT_MONO (0x00000001)
|
|
|
|
#define ADP_CHAN_FORMAT_2CH (0x00000002)
|
|
|
|
#define ADP_CHAN_FORMAT_3CH (0x00000004)
|
|
|
|
#define ADP_CHAN_FORMAT_4CH (0x00000008)
|
|
|
|
#define ADP_CHAN_FORMAT_5CH (0x00000010)
|
|
|
|
#define ADP_CHAN_FORMAT_6CH (0x00000020)
|
|
|
|
#define ADP_CHAN_FORMAT_7CH (0x00000040)
|
|
|
|
#define ADP_CHAN_FORMAT_8CH (0x00000080)
|
|
|
|
#define ADP_CHAN_FORMAT_10CH (0x00000100)
|
|
|
|
#define ADP_CHAN_FORMAT_12CH (0x00000200)
|
|
|
|
#define ADP_CHAN_FORMAT_14CH (0x00000400)
|
|
|
|
#define ADP_CHAN_FORMAT_16CH (0x00000800)
|
|
|
|
#define ADP_CHAN_FORMAT_18CH (0x00001000)
|
|
|
|
#define ADP_CHAN_FORMAT_20CH (0x00002000)
|
|
|
|
#define ADP_CHAN_FORMAT_22CH (0x00004000)
|
|
|
|
#define ADP_CHAN_FORMAT_24CH (0x00008000)
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
/* 1722.1 ACMP Offsets */
|
|
|
|
#define ACMP_CD_OFFSET 0
|
|
|
|
#define ACMP_VERSION_OFFSET 1
|
|
|
|
#define ACMP_STATUS_FIELD_OFFSET 2
|
2012-03-23 01:18:06 +00:00
|
|
|
#define ACMP_CD_LENGTH_OFFSET 2
|
2012-03-02 03:30:30 +00:00
|
|
|
#define ACMP_STREAM_ID_OFFSET 4
|
|
|
|
#define ACMP_CONTROLLER_GUID_OFFSET 12
|
|
|
|
#define ACMP_TALKER_GUID_OFFSET 20
|
|
|
|
#define ACMP_LISTENER_GUID_OFFSET 28
|
|
|
|
#define ACMP_TALKER_UNIQUE_ID_OFFSET 36
|
|
|
|
#define ACMP_LISTENER_UNIQUE_ID_OFFSET 38
|
|
|
|
#define ACMP_DEST_MAC_OFFSET 40
|
|
|
|
#define ACMP_CONNECTION_COUNT_OFFSET 46
|
|
|
|
#define ACMP_SEQUENCE_ID_OFFSET 48
|
|
|
|
#define ACMP_FLAGS_OFFSET 50
|
|
|
|
#define ACMP_DEFAULT_FORMAT_OFFSET 52
|
|
|
|
|
|
|
|
/* Bit Field Masks */
|
|
|
|
|
2012-03-23 01:18:06 +00:00
|
|
|
#define ACMP_MSG_TYPE_MASK 0x0F
|
|
|
|
#define ACMP_STATUS_FIELD_MASK 0xF8
|
|
|
|
#define ACMP_CD_LENGTH_MASK 0x07FF
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* message_type */
|
|
|
|
|
|
|
|
#define ACMP_CONNECT_TX_COMMAND 0
|
|
|
|
#define ACMP_CONNECT_TX_RESPONSE 1
|
|
|
|
#define ACMP_DISCONNECT_TX_COMMAND 2
|
|
|
|
#define ACMP_DISCONNECT_TX_RESPONSE 3
|
|
|
|
#define ACMP_GET_TX_STATE_COMMAND 4
|
|
|
|
#define ACMP_GET_TX_STATE_RESPONSE 5
|
|
|
|
#define ACMP_CONNECT_RX_COMMAND 6
|
|
|
|
#define ACMP_CONNECT_RX_RESPONSE 7
|
|
|
|
#define ACMP_DISCONNECT_RX_COMMAND 8
|
|
|
|
#define ACMP_DISCONNECT_RX_RESPONSE 9
|
|
|
|
#define ACMP_GET_RX_STATE_COMMAND 10
|
|
|
|
#define ACMP_GET_RX_STATE_RESPONSE 11
|
|
|
|
#define ACMP_GET_TX_CONNECTION_COMMAND 12
|
|
|
|
#define ACMP_GET_TX_CONNECTION_RESPONSE 13
|
|
|
|
|
|
|
|
/* status_field */
|
|
|
|
|
|
|
|
#define ACMP_STATUS_SUCCESS 0
|
|
|
|
#define ACMP_STATUS_LISTENER_UNKNOWN_ID 1
|
|
|
|
#define ACMP_STATUS_TALKER_UNKNOWN_ID 2
|
|
|
|
#define ACMP_STATUS_TALKER_DEST_MAC_FAIL 3
|
|
|
|
#define ACMP_STATUS_TALKER_NO_STREAM_INDEX 4
|
|
|
|
#define ACMP_STATUS_TALKER_NO_BANDWIDTH 5
|
|
|
|
#define ACMP_STATUS_TALKER_EXCLUSIVE 6
|
|
|
|
#define ACMP_STATUS_LISTENER_TALKER_TIMEOUT 7
|
|
|
|
#define ACMP_STATUS_LISTENER_EXCLUSIVE 8
|
|
|
|
#define ACMP_STATUS_STATE_UNAVAILABLE 9
|
|
|
|
#define ACMP_STATUS_NOT_CONNECTED 10
|
|
|
|
#define ACMP_STATUS_NO_SUCH_CONNECTION 11
|
|
|
|
#define ACMP_STATUS_COULD_NOT_SEND_MESSAGE 12
|
|
|
|
#define ACMP_STATUS_LISTENER_DEFAULT_FORMAT_INVALID 13
|
|
|
|
#define ACMP_STATUS_TALKER_DEFAULT_FORMAT_INVALID 14
|
|
|
|
#define ACMP_STATUS_DEFAULT_SET_DIFFERENT 15
|
|
|
|
#define ACMP_STATUS_NOT_SUPPORTED 31
|
|
|
|
|
|
|
|
/* ACMP flags */
|
|
|
|
#define ACMP_FLAG_CLASS_B_BITMASK 0x0001
|
|
|
|
#define ACMP_FLAG_FAST_CONNECT_BITMASK 0x0002
|
|
|
|
#define ACMP_FLAG_SAVED_STATE_BITMASK 0x0004
|
|
|
|
#define ACMP_FLAG_STREAMING_WAIT_BITMASK 0x0008
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
/* 1722.1 AECP Offsets */
|
2012-04-27 17:36:53 +00:00
|
|
|
#define AECP_STATUS_CODE_OFFSET 2
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
#define AECP_VERSION_OFFSET 1
|
|
|
|
#define AECP_TARGET_GUID_OFFSET 4
|
|
|
|
#define AECP_CONTROLLER_GUID_OFFSET 12
|
|
|
|
#define AECP_SEQUENCE_ID_OFFSET 20
|
|
|
|
#define AECP_U_FLAG_OFFSET 22
|
|
|
|
#define AECP_COMMAND_TYPE_OFFSET 22
|
|
|
|
#define AECP_UNLOCK_FLAG_OFFSET 27
|
|
|
|
#define AECP_LOCKED_GUID_OFFSET 28
|
|
|
|
#define AECP_CD_LENGTH_OFFSET 2
|
|
|
|
#define AECP_FLAGS_OFFSET 24
|
|
|
|
#define AECP_LOCKED_GUID_OFFSET 28
|
|
|
|
#define AECP_CONFIGURATION_OFFSET 24
|
|
|
|
#define AECP_DESCRIPTOR_TYPE_OFFSET_28 28
|
|
|
|
#define AECP_DESCRIPTOR_ID_OFFSET_30 30
|
|
|
|
#define AECP_DESCRIPTOR_TYPE_OFFSET 24
|
|
|
|
#define AECP_DESCRIPTOR_ID_OFFSET 26
|
|
|
|
#define AECP_PERSISTENT_FLAG_OFFSET 24
|
|
|
|
#define AECP_OWNER_GUID_OFFSET 28
|
|
|
|
#define AECP_CLOCK_SOURCE_ID_OFFSET 24
|
|
|
|
#define AECP_SOURCE_TYPE_OFFSET 28
|
|
|
|
#define AECP_SOURCE_ID_OFFSET 30
|
|
|
|
#define AECP_MATRIX_COLUMN_OFFSET 28
|
|
|
|
#define AECP_MATRIX_ROW_OFFSET 30
|
|
|
|
#define AECP_MATRIX_REGION_WIDTH_OFFSET 32
|
|
|
|
#define AECP_MATRIX_REGION_HEIGHT_OFFSET 34
|
|
|
|
#define AECP_MATRIX_REP_OFFSET 36
|
|
|
|
#define AECP_MATRIX_DIRECTION_OFFSET 36
|
|
|
|
#define AECP_MATRIX_VALUE_COUNT_OFFSET 36
|
|
|
|
#define AECP_MATRIX_ITEM_OFFSET_OFFSET 38
|
|
|
|
#define AECP_MATRIX_AFFECTED_ITEM_COUNT_OFFSET 40
|
|
|
|
#define AECP_FLAGS28_OFFSET 28
|
|
|
|
#define AECP_STREAM_CLOCK_SOURCE_ID_OFFSET 58
|
|
|
|
#define AECP_STREAM_FORMAT_OFFSET 28
|
|
|
|
#define AECP_OFFSET_GET_STREAM_INFO_STREAM_FORMAT 32
|
|
|
|
#define AECP_OFFSET_GET_STREAM_INFO_STREAM_ID 40
|
|
|
|
#define AECP_MSRP_ACC_LAT_OFFSET 56
|
|
|
|
#define AECP_SET_MSRP_ACC_LAT_OFFSET 32
|
|
|
|
#define AECP_DEST_MAC_OFFSET 60
|
|
|
|
#define AECP_DEFAULT_FORMAT_OFFSET 68
|
|
|
|
#define AECP_NAME_INDEX_OFFSET 28
|
|
|
|
#define AECP_NAME_OFFSET 32
|
|
|
|
#define AECP_KEYCHAIN_ID_OFFSET 24
|
|
|
|
#define AECP_KEY_ID_OFFSET 24
|
|
|
|
#define AECP_KEY_LENGTH_OFFSET 26
|
|
|
|
#define AECP_SIGNATURE_INFO_OFFSET 28
|
|
|
|
#define AECP_SIGNATURE_ID_OFFSET 28
|
|
|
|
#define AECP_SIGNATURE_LENGTH_OFFSET 30
|
|
|
|
#define AECP_KEY_PERMISSIONS_OFFSET 32
|
|
|
|
#define AECP_KEY_AND_SIG_OFFSET 36
|
|
|
|
#define AECP_AUTH_SIG_INFO_OFFSET 24
|
|
|
|
#define AECP_AUTH_SIG_ID_OFFSET 24
|
|
|
|
#define AECP_AUTH_SIG_LENGTH_OFFSET 26
|
|
|
|
#define AECP_AUTH_KEY_PERM_OFFSET 28
|
|
|
|
#define AECP_AUTH_SIG_OFFSET 32
|
|
|
|
#define AECP_MEDIA_FORMAT_OFFSET 28
|
|
|
|
#define AECP_ADDRESS_TYPE_OFFSET 24
|
|
|
|
#define AECP_ADDRESS_OFFSET 28
|
|
|
|
#define AECP_QUERY_PERIOD_OFFSET 24
|
|
|
|
#define AECP_QUERY_LIMIT_OFFSET 26
|
|
|
|
#define AECP_QUERY_TYPE_OFFSET 28
|
|
|
|
#define AECP_QUERY_ID_OFFSET 30
|
|
|
|
#define AECP_QUERY_DESC_T_OFFSET 32
|
|
|
|
#define AECP_QUERY_DESC_ID_OFFSET 34
|
|
|
|
#define AECP_DEREG_QUERY_ID_OFFSET 24
|
|
|
|
#define AECP_COUNT_OFFSET 24
|
|
|
|
#define AECP_VALUES_COUNT_OFFSET 28
|
|
|
|
#define AECP_VALUES_OFFSET 30
|
|
|
|
#define AECP_OPERATION_ID_OFFSET 28
|
|
|
|
#define AECP_OPERATION_TYPE_OFFSET 30
|
|
|
|
#define AECP_PERCENT_COMPLETE_OFFSET 30
|
|
|
|
#define AECP_KEY_COUNT_OFFSET 24
|
|
|
|
#define AECP_RELEASE_FLAG_OFFSET 24
|
|
|
|
#define AECP_ASSOCIATION_ID_OFFSET 56
|
|
|
|
#define AECP_DESCRIPTORS_OFFSET_DQN 28
|
|
|
|
|
|
|
|
|
|
|
|
#define AECP_FLAGS_32_OFFSET 28
|
|
|
|
|
|
|
|
#define AECP_OFFSET_ACQUIRE_ENTITY_FLAGS 24
|
|
|
|
#define AECP_OFFSET_ACQUIRE_ENTITY_OWNER_GUID 28
|
|
|
|
#define AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_TYPE 36
|
|
|
|
#define AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_ID 38
|
|
|
|
|
|
|
|
#define AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_TYPE 24
|
|
|
|
#define AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_ID 26
|
|
|
|
#define AECP_OFFSET_CLOCK_SOURCE_CLOCK_SOURCE_ID 28
|
|
|
|
|
|
|
|
/* counters offsets */
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_GPTP_GM_CHANGED 0
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_GPTP_UNLOCKED 4
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_GPTP_LOCKED 8
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_MEDIA_UNLOCKED 12
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_MEDIA_LOCKED 16
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_MEDIA_SEQ_ERROR 20
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_STREAM_RESET 24
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_SRP_REFUSED 28
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_BACKUP_STREAM_SWITCH 32
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_MISSED_AVDECC_RESPONSE 36
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_REFUSED_AVDECC_COMMAND 40
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_SEQ_NUM_MISMATCH 44
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_MEDIA_CLOCK_TOGGLES 48
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_TIMESTAMP_UNCERTAINS 52
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_TIMESTAMP_VALIDS 56
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_UNSUPPORTED_FORMATS 60
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_BAD_PRESENTATION_TIMES 64
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_SRP_LATENCY_VIOLATIONS 68
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_PACKETS_TX 72
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_PACKETS_RX 76
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_PACKETS_OF_INTEREST_RX 80
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_TALKER_BW_RESERVED 84
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_RESERVED1 88
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_RESERVED2 92
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_1 96
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_2 100
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_3 104
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_4 108
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_5 112
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_6 116
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_7 120
|
|
|
|
#define AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_8 124
|
|
|
|
|
|
|
|
/* aecp_message_type */
|
|
|
|
/* 1722.1 draft 2011-11-14 table 9.1 */
|
|
|
|
#define AECP_AEM_COMMAND_MESSAGE 0
|
|
|
|
#define AECP_AEM_RESPONSE_MESSAGE 1
|
|
|
|
#define AECP_ADDRESS_ACCESS_COMMAND_MESSAGE 2
|
|
|
|
#define AECP_ADDRESS_ACCESS_RESPONSE_MESSAGE 3
|
|
|
|
#define AECP_AVC_COMMAND_MESSAGE 4
|
|
|
|
#define AECP_AVC_RESPONSE_MESSAGE 5
|
|
|
|
#define AECP_VENDOR_UNIQUE_COMMAND_MESSAGE 6
|
|
|
|
#define AECP_VENDOR_UNIQUE_RESPONSE_MESSAGE 7
|
|
|
|
#define AECP_EXTENDED_COMMAND_MESSAGE 14
|
|
|
|
#define AECP_EXTENDED_RESPONSE_MESSAGE 15
|
|
|
|
|
|
|
|
/* aecp status field */
|
|
|
|
/* 1722.1 draft 2011-11-14 table 9.2 */
|
|
|
|
#define AECP_STATUS_SUCCESS 0
|
|
|
|
#define AECP_STATUS_NOT_IMPLEMENTED 1
|
|
|
|
|
|
|
|
/* AECP Address Type */
|
|
|
|
/* 1722.1 draft 2011-11-14 sec 7.4.35.1 table 7.82 */
|
|
|
|
#define AECP_ADDRESS_MAC 0x0000
|
|
|
|
#define AECP_ADDRESS_IPV4 0x0001
|
|
|
|
#define AECP_ADDRESS_IPV6 0x0002
|
|
|
|
|
|
|
|
/* AECP Direction Field Values */
|
|
|
|
/* 1722.1 draft 2011-11-14 table 7.78 */
|
|
|
|
#define AECP_DIRECTION_HORIZONTAL 0
|
|
|
|
#define AECP_DIRECTION_VERTICAL 1
|
|
|
|
|
|
|
|
/* AECP Keychain Type Values */
|
|
|
|
/* 1722.1 draft 2011-11-14 table 7.80 */
|
|
|
|
#define AECP_KEYCHAIN_NONE 0x0
|
|
|
|
#define AECP_KEYCHAIN_MANUFACTURER 0x1
|
|
|
|
#define AECP_KEYCHAIN_PRODUCT 0x2
|
|
|
|
#define AECP_KEYCHAIN_ENTITY 0x3
|
|
|
|
#define AECP_KEYCHAIN_USER 0x4
|
|
|
|
|
|
|
|
/* AECP Command Codes */
|
|
|
|
/* IEEE 1722.1 draft 2011-11-14 Table 7.74 */
|
|
|
|
#define AECP_COMMAND_LOCK_ENTITY 0x0000
|
|
|
|
#define AECP_COMMAND_READ_DESCRIPTOR 0x0001
|
|
|
|
#define AECP_COMMAND_WRITE_DESCRIPTOR 0x0002
|
|
|
|
#define AECP_COMMAND_ACQUIRE_ENTITY 0x0003
|
|
|
|
#define AECP_COMMAND_CONTROLLER_AVAILABLE 0x0004
|
|
|
|
#define AECP_COMMAND_SET_CLOCK_SOURCE 0x0005
|
|
|
|
#define AECP_COMMAND_GET_CLOCK_SOURCE 0x0006
|
|
|
|
#define AECP_COMMAND_SET_STREAM_FORMAT 0x0007
|
|
|
|
#define AECP_COMMAND_GET_STREAM_FORMAT 0x0008
|
|
|
|
#define AECP_COMMAND_SET_CONFIGURATION 0x0009
|
|
|
|
#define AECP_COMMAND_GET_CONFIGURATION 0x000a
|
|
|
|
#define AECP_COMMAND_SET_CONTROL_VALUE 0x000b
|
|
|
|
#define AECP_COMMAND_GET_CONTROL_VALUE 0x000c
|
|
|
|
#define AECP_COMMAND_SET_SIGNAL_SELECTOR 0x000d
|
|
|
|
#define AECP_COMMAND_GET_SIGNAL_SELECTOR 0x000e
|
|
|
|
#define AECP_COMMAND_SET_MIXER 0x000f
|
|
|
|
#define AECP_COMMAND_GET_MIXER 0x0010
|
|
|
|
#define AECP_COMMAND_SET_MATRIX 0x0011
|
|
|
|
#define AECP_COMMAND_GET_MATRIX 0x0012
|
|
|
|
#define AECP_COMMAND_START_STREAMING 0x0013
|
|
|
|
#define AECP_COMMAND_STOP_STREAMING 0x0014
|
|
|
|
#define AECP_COMMAND_SET_STREAM_INFO 0x0015
|
|
|
|
#define AECP_COMMAND_GET_STREAM_INFO 0x0016
|
|
|
|
#define AECP_COMMAND_SET_NAME 0x0017
|
|
|
|
#define AECP_COMMAND_GET_NAME 0x0018
|
|
|
|
#define AECP_COMMAND_SET_ASSOCIATION_ID 0x0019
|
|
|
|
#define AECP_COMMAND_GET_ASSOCIATION_ID 0x001a
|
|
|
|
#define AECP_COMMAND_AUTH_ADD_KEY 0x001b
|
|
|
|
#define AECP_COMMAND_AUTH_GET_KEY 0x001c
|
|
|
|
#define AECP_COMMAND_AUTHENTICATE 0x001d
|
|
|
|
#define AECP_COMMAND_GET_COUNTERS 0x001e
|
|
|
|
#define AECP_COMMAND_REBOOT 0x001f
|
|
|
|
#define AECP_COMMAND_SET_MEDIA_FORMAT 0x0020
|
|
|
|
#define AECP_COMMAND_GET_MEDIA_FORMAT 0x0021
|
|
|
|
#define AECP_COMMAND_REGISTER_STATE_NOTIFICATION 0x0022
|
|
|
|
#define AECP_COMMAND_DEREGISTER_STATE_NOTIFICATION 0x0023
|
|
|
|
#define AECP_COMMAND_REGISTER_QUERY_NOTIFICATION 0x0024
|
|
|
|
#define AECP_COMMAND_DEREGISTER_QUERY_NOTIFICATION 0x0025
|
|
|
|
#define AECP_COMMAND_IDENTIFY_NOTIFICATION 0x0026
|
|
|
|
#define AECP_COMMAND_STATE_CHANGE_NOTIFICATION 0x0027
|
|
|
|
#define AECP_COMMAND_INCREMENT_CONTROL_VALUE 0x0028
|
|
|
|
#define AECP_COMMAND_DECREMENT_CONTROL_VALUE 0x0029
|
|
|
|
#define AECP_COMMAND_START_OPERATION 0x002a
|
|
|
|
#define AECP_COMMAND_ABORT_OPERATION 0x002b
|
|
|
|
#define AECP_COMMAND_OPERATION_STATUS 0x002c
|
|
|
|
#define AECP_COMMAND_AUTH_GET_KEY_COUNT 0x002d
|
|
|
|
#define AECP_COMMAND_GET_AS_PATH 0x002e
|
|
|
|
#define AECP_COMMAND_DEAUTHENTICATE 0x002f
|
|
|
|
#define AECP_COMMAND_AUTH_REVOKE_KEY 0x0030
|
|
|
|
/* 0x002e - 0x7ffe RESERVED for future use */
|
|
|
|
#define AECP_COMMAND_EXPANSION 0x7fff /* reserved */
|
|
|
|
|
|
|
|
/* AEM common format packet STATUS field values */
|
|
|
|
/* IEEE 1722.1 draft 2011-11-14 Table 7.75 */
|
|
|
|
#define AEM_STATUS_SUCCESS 0
|
|
|
|
#define AEM_STATUS_NOT_IMPLEMENTED 1
|
|
|
|
#define AEM_STATUS_NO_SUCH_DESCRIPTOR 2
|
|
|
|
#define AEM_STATUS_ENTITY_LOCKED 3
|
|
|
|
#define AEM_STATUS_ENTITY_ACQUIRED 4
|
|
|
|
#define AEM_STATUS_NOT_AUTHORIZED 5
|
|
|
|
#define AEM_STATUS_INSUFFICIENT_PRIVILEGES 6
|
|
|
|
#define AEM_STATUS_BAD_ARGUMENTS 7
|
|
|
|
#define AEM_STATUS_NO_RESOURCES 8
|
|
|
|
#define AEM_STATUS_IN_PROGRESS 9
|
|
|
|
/* 10 - 31 RESERVED */
|
|
|
|
|
|
|
|
/* * * * AEM DESCRIPTOR TYPES - TABLE 7.1 * * * */
|
|
|
|
#define AEM_DESCRIPTOR_ENTITY 0x0000
|
|
|
|
#define AEM_DESCRIPTOR_CONFIGURATION 0x0001
|
|
|
|
#define AEM_DESCRIPTOR_AUDIO 0x0002
|
|
|
|
#define AEM_DESCRIPTOR_VIDEO 0x0003
|
|
|
|
#define AEM_DESCRIPTOR_SENSOR 0x0004
|
|
|
|
#define AEM_DESCRIPTOR_STREAM_INPUT 0x0005
|
|
|
|
#define AEM_DESCRIPTOR_STREAM_OUTPUT 0x0006
|
|
|
|
#define AEM_DESCRIPTOR_EXTERNAL_JACK_INPUT 0x0007
|
|
|
|
#define AEM_DESCRIPTOR_EXTERNAL_JACK_OUTPUT 0x0008
|
|
|
|
#define AEM_DESCRIPTOR_AUDIO_PORT_INPUT 0x0009
|
|
|
|
#define AEM_DESCRIPTOR_AUDIO_PORT_OUTPUT 0x000a
|
|
|
|
#define AEM_DESCRIPTOR_VIDEO_PORT_INPUT 0x000b
|
|
|
|
#define AEM_DESCRIPTOR_VIDEO_PORT_OUTPUT 0x000c
|
|
|
|
#define AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT 0x000d
|
|
|
|
#define AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT 0x000e
|
|
|
|
#define AEM_DESCRIPTOR_SENSOR_PORT_INPUT 0x000f
|
|
|
|
#define AEM_DESCRIPTOR_SENSOR_PORT_OUTPUT 0x0010
|
|
|
|
#define AEM_DESCRIPTOR_INTERNAL_PORT_INPUT 0x0011
|
|
|
|
#define AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT 0x0012
|
|
|
|
#define AEM_DESCRIPTOR_AVB_INTERFACE 0x0013
|
|
|
|
#define AEM_DESCRIPTOR_CLOCK_SOURCE 0x0014
|
|
|
|
#define AEM_DESCRIPTOR_AUDIO_MAP 0x0015
|
|
|
|
#define AEM_DESCRIPTOR_AUDIO_CLUSTER 0x0016
|
|
|
|
#define AEM_DESCRIPTOR_CONTROL 0x0017
|
|
|
|
#define AEM_DESCRIPTOR_SIGNAL_SELECTOR 0x0018
|
|
|
|
#define AEM_DESCRIPTOR_MIXER 0x0019
|
|
|
|
#define AEM_DESCRIPTOR_MATRIX 0x001a
|
|
|
|
#define AEM_DESCRIPTOR_LOCALE 0x001b
|
|
|
|
#define AEM_DESCRIPTOR_STRINGS 0x001c
|
|
|
|
#define AEM_DESCRIPTOR_MATRIX_SIGNAL 0x001d
|
|
|
|
#define AEM_DESCRIPTOR_MEMORY_OBJECT 0x001e
|
|
|
|
#define AEM_DESCRIPTOR_INVALID 0xffff
|
|
|
|
|
|
|
|
/* AEM JACK TYPES (Table 7.14) */
|
|
|
|
#define AEM_JACKTYPE_SPEAKER 0x0000
|
|
|
|
#define AEM_JACKTYPE_HEADPHONE 0x0001
|
|
|
|
#define AEM_JACKTYPE_ANALOG_MICROPHONE 0x0002
|
|
|
|
#define AEM_JACKTYPE_SPDIF 0x0003
|
|
|
|
#define AEM_JACKTYPE_ADAT 0x0004
|
|
|
|
#define AEM_JACKTYPE_TDIF 0x0005
|
|
|
|
#define AEM_JACKTYPE_MADI 0x0006
|
|
|
|
#define AEM_JACKTYPE_UNBALANCED_ANALOG 0x0007
|
|
|
|
#define AEM_JACKTYPE_BALANCED_ANALOG 0x0008
|
|
|
|
#define AEM_JACKTYPE_DIGITAL 0x0009
|
|
|
|
#define AEM_JACKTYPE_MIDI 0x000a
|
|
|
|
#define AEM_JACKTYPE_AES_EBU 0x000b
|
|
|
|
#define AEM_JACKTYPE_COMPOSITE_VIDEO 0x000c
|
|
|
|
#define AEM_JACKTYPE_S_VHS_VIDEO 0x000d
|
|
|
|
#define AEM_JACKTYPE_COMPONENT_VIDEO 0x000e
|
|
|
|
#define AEM_JACKTYPE_DVI 0x000f
|
|
|
|
#define AEM_JACKTYPE_HDMI 0x0010
|
|
|
|
#define AEM_JACKTYPE_UDI 0x0011
|
|
|
|
#define AEM_JACKTYPE_DISPLAYPORT 0x0012
|
|
|
|
#define AEM_JACKTYPE_ANTENNA 0x0013
|
|
|
|
#define AEM_JACKTYPE_ANALOG_TUNER 0x0014
|
|
|
|
#define AEM_JACKTYPE_ETHERNET 0x0015
|
|
|
|
#define AEM_JACKTYPE_WIFI 0x0016
|
|
|
|
#define AEM_JACKTYPE_USB 0x0017
|
|
|
|
#define AEM_JACKTYPE_PCI 0x0018
|
|
|
|
#define AEM_JACKTYPE_PCI_E 0x0019
|
|
|
|
#define AEM_JACKTYPE_SCSI 0x001a
|
|
|
|
#define AEM_JACKTYPE_ATA 0x001b
|
|
|
|
#define AEM_JACKTYPE_IMAGER 0x001c
|
|
|
|
#define AEM_JACKTYPE_IR 0x001d
|
|
|
|
#define AEM_JACKTYPE_THUNDERBOLT 0x001e
|
|
|
|
#define AEM_JACKTYPE_SATA 0x001f
|
|
|
|
#define AEM_JACKTYPE_SMPTE_LTC 0x0020
|
|
|
|
#define AEM_JACKTYPE_DIGITAL_MICROPHONE 0x0021
|
|
|
|
|
|
|
|
#define AEM_CONTROL_ENABLE 0x90e0f00000000000
|
|
|
|
#define AEM_CONTROL_DELAY 0x90e0f00000000001
|
|
|
|
#define AEM_CONTROL_POW_LINE_FREQ 0x90e0f00000000002
|
|
|
|
#define AEM_CONTROL_ROLLPITCHYAW_ABS 0x90e0f00000000003
|
|
|
|
#define AEM_CONTROL_ROLLPITCHYAW_REL 0x90e0f00000000004
|
|
|
|
#define AEM_CONTROL_SURGESWAYHEAVE_ABS 0x90e0f00000000005
|
|
|
|
#define AEM_CONTROL_SURGESWAYHEAVE_REL 0x90e0f00000000006
|
|
|
|
#define AEM_CONTROL_IDENTIFY 0x90e0f00000000007
|
|
|
|
#define AEM_CONTROL_POWER_STATUS 0x90e0f00000000008
|
|
|
|
#define AEM_CONTROL_FAN_STATUS 0x90e0f00000000009
|
|
|
|
#define AEN_CONTROL_TEMPERATURE 0x90e0f0000000000a
|
|
|
|
#define AEM_CONTROL_TEMPERATURE_SENSOR 0x90e0f0000000000b
|
|
|
|
#define AEM_CONTROL_ALTITUDE 0x90e0f0000000000c
|
|
|
|
#define AEM_CONTROL_HUMIDITY 0x90e0f0000000000d
|
|
|
|
/* 0x90e0f0000000000e - 0x90e0f0000000ffff reserved */
|
|
|
|
#define AEM_CONTROL_MUTE 0x90e0f00000010000
|
|
|
|
#define AEM_CONTROL_VOLUME 0x90e0f00000010001
|
|
|
|
#define AEM_CONTROL_INVERT 0x90e0f00000010002
|
|
|
|
#define AEM_CONTROL_PANPOT 0x90e0f00000010003
|
|
|
|
#define AEM_CONTROL_ISOLATE 0x90e0f00000010004
|
|
|
|
#define AEM_CONTROL_POSITION 0x90e0f00000010005
|
|
|
|
#define AEM_CONTROL_PHANTOM 0x90e0f00000010006
|
|
|
|
#define AEM_CONTROL_AUDIO_SCALE 0x90e0f00000010007
|
|
|
|
#define AEM_CONTROL_AUDIO_METERS 0x90e0f00000010008
|
|
|
|
#define AEM_CONTROL_AUDIO_SPECTRUM 0x90e0f00000010009
|
|
|
|
#define AEM_CONTROL_FILTER_RESPONSE 0x90e0f0000001000a
|
|
|
|
/* 0x90e0f0000001000b - 0x90e0f0000001ffff reserved */
|
|
|
|
#define AEM_CONTROL_SCANNING_MODE 0x90e0f00000020000
|
|
|
|
#define AEM_CONTROL_AUTO_EXP_MODE 0x90e0f00000020001
|
|
|
|
#define AEM_CONTROL_AUTO_EXP_PRIO 0x90e0f00000020002
|
|
|
|
#define AEM_CONTROL_EXP_TIME_ABS 0x90e0f00000020003
|
|
|
|
#define AEM_CONTROL_EXP_TIME_REL 0x90e0f00000020004
|
|
|
|
#define AEM_CONTROL_FOCUS_ABS 0x90e0f00000020005
|
|
|
|
#define AEM_CONTROL_FOCUS_REL 0x90e0f00000020006
|
|
|
|
#define AEM_CONTROL_FOCUS_AUTO 0x90e0f00000020007
|
|
|
|
#define AEM_CONTROL_IRIS_ABS 0x90e0f00000020008
|
|
|
|
#define AEM_CONTROL_IRIS_REL 0x90e0f00000020009
|
|
|
|
#define AEM_CONTROL_ZOOM_ABS 0x90e0f0000002000a
|
|
|
|
#define AEM_CONTROL_ZOOM_REL 0x90e0f0000002000b
|
|
|
|
#define AEM_CONTROL_PRIVACY 0x90e0f0000002000c
|
|
|
|
#define AEM_CONTROL_BACKLIGHT 0x90e0f0000002000d
|
|
|
|
#define AEM_CONTROL_BRIGHTNESS 0x90e0f0000002000e
|
|
|
|
#define AEM_CONTROL_CONTRAST 0x90e0f0000002000f
|
|
|
|
#define AEM_CONTROL_GAIN 0x90e0f00000020010
|
|
|
|
#define AEM_CONTROL_HUE 0x90e0f00000020011
|
|
|
|
#define AEM_CONTROL_SATURATION 0x90e0f00000020012
|
|
|
|
#define AEM_CONTROL_SHARPNESS 0x90e0f00000020013
|
|
|
|
#define AEM_CONTROL_GAMMA 0x90e0f00000020014
|
|
|
|
#define AEM_CONTROL_WHITE_BAL_TEMP 0x90e0f00000020015
|
|
|
|
#define AEM_CONTROL_WHITE_BAL_TENP_AUTO 0x90e0f00000020016
|
|
|
|
#define AEM_CONTROL_WHITE_BAL_COMP 0x90e0f00000020017
|
|
|
|
#define AEM_CONTROL_WHITE_BAL_COMP_AUTO 0x90e0f00000020018
|
|
|
|
#define AEM_CONTROL_DIGITAL_ZOOM 0x90e0f00000020019
|
|
|
|
/* 0x90e0f0000002001a - 0x90e0f0ffffffffff reserved */
|
|
|
|
|
|
|
|
/* AEM Control Value Types (7.31) */
|
|
|
|
#define AEM_CONTROL_LINEAR_INT8 0x0000
|
|
|
|
#define AEM_CONTROL_LINEAR_UINT8 0x0001
|
|
|
|
#define AEM_CONTROL_LINEAR_INT16 0x0002
|
|
|
|
#define AEM_CONTROL_LINEAR_UINT16 0x0003
|
|
|
|
#define AEM_CONTROL_LINEAR_INT32 0x0004
|
|
|
|
#define AEM_CONTROL_LINEAR_UINT32 0x0005
|
|
|
|
#define AEM_CONTROL_LINEAR_INT64 0x0006
|
|
|
|
#define AEM_CONTROL_LINEAR_UINT64 0x0007
|
|
|
|
#define AEM_CONTROL_LINEAR_FLOAT 0x0008
|
|
|
|
#define AEM_CONTROL_LINEAR_DOUBLE 0x0009
|
|
|
|
#define AEM_CONTROL_SELECTOR_INT8 0x000a
|
|
|
|
#define AEM_CONTROL_SELECTOR_UINT8 0x000b
|
|
|
|
#define AEM_CONTROL_SELECTOR_INT16 0x000c
|
|
|
|
#define AEM_CONTROL_SELECTOR_UINT16 0x000d
|
|
|
|
#define AEM_CONTROL_SELECTOR_INT32 0x000e
|
|
|
|
#define AEM_CONTROL_SELECTOR_UINT32 0x000f
|
|
|
|
#define AEM_CONTROL_SELECTOR_INT64 0x0010
|
|
|
|
#define AEM_CONTROL_SELECTOR_UINT64 0x0011
|
|
|
|
#define AEM_CONTROL_SELECTOR_FLOAT 0x0012
|
|
|
|
#define AEM_CONTROL_SELECTOR_DOUBLE 0x0013
|
|
|
|
#define AEM_CONTROL_UTF8 0x0014
|
|
|
|
#define AEM_CONTROL_BODE_PLOT 0x0015
|
|
|
|
#define AEM_CONTROL_ARRAY_INT8 0x0016
|
|
|
|
#define AEM_CONTROL_ARRAY_UINT8 0x0017
|
|
|
|
#define AEM_CONTROL_ARRAY_INT16 0x0018
|
|
|
|
#define AEM_CONTROL_ARRAY_UINT16 0x0019
|
|
|
|
#define AEM_CONTROL_ARRAY_INT32 0x001a
|
|
|
|
#define AEM_CONTROL_ARRAY_UINT32 0x001b
|
|
|
|
#define AEM_CONTROL_ARRAY_INT64 0x001c
|
|
|
|
#define AEM_CONTROL_ARRAY_UINT64 0x001d
|
|
|
|
#define AEM_CONTROL_ARRAY_FLOAT 0x001e
|
|
|
|
#define AEM_CONTROL_ARRAY_DOUBLE 0x001f
|
|
|
|
/* 0x0020-0xfffd RESERVED Reserved for future use. */
|
|
|
|
#define AEM_CONTROL_VENDOR 0xfffe /* TODO - update value in D18 */
|
|
|
|
/* 0xffff EXPANSION Reserved for future use. */
|
|
|
|
|
|
|
|
/* AEM Clock Source Types (Table 7.25) */
|
|
|
|
#define AEM_CLOCK_LOCAL_OSCILLATOR 0x0000
|
|
|
|
#define AEM_CLOCK_INPUT_STREAM 0x0001
|
|
|
|
#define AEM_CLOCK_WORLD_CLOCK 0x0002
|
|
|
|
#define AEM_CLOCK_ANALOG_INPUT 0x0003
|
|
|
|
#define AEM_CLOCK_DIGITAL_INPUT 0x0004
|
|
|
|
#define AEM_CLOCK_8021_AS 0x0005
|
|
|
|
#define AEM_CLOCK_THUNDERBOLT 0x0006
|
|
|
|
|
|
|
|
/* AEM Stream Format Definitions */
|
|
|
|
#define SF61883_IIDC_SUBTYPE 0x00
|
|
|
|
#define MMA_SUBTYPE 0x01
|
|
|
|
#define EXPERIMENTAL_SUBTYPE 0x7f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* AEM Offset Values */
|
|
|
|
|
|
|
|
#define AEM_OFFSET_DESCRIPTOR_TYPE 0
|
|
|
|
#define AEM_OFFSET_DESCRIPTOR_ID 2
|
|
|
|
#define AEM_OFFSET_ENTITY_GUID 4
|
|
|
|
#define AEM_OFFSET_VENDOR_ID 12
|
|
|
|
#define AEM_OFFSET_ENTITY_MODEL_ID 16
|
|
|
|
#define AEM_OFFSET_ENTITY_CAPABILITIES 20
|
|
|
|
#define AEM_OFFSET_TALKER_STREAM_SOURCES 24
|
|
|
|
#define AEM_OFFSET_TALKER_CAPABILITIES 26
|
|
|
|
#define AEM_OFFSET_LISTENER_STREAM_SINKS 28
|
|
|
|
#define AEM_OFFSET_LISTENER_CAPABILITIES 30
|
|
|
|
#define AEM_OFFSET_CONTROLLER_CAPABILITIES 32
|
|
|
|
#define AEM_OFFSET_AVAILABLE_INDEX 36
|
|
|
|
#define AEM_OFFSET_AS_GRANDMASTER_ID 40
|
|
|
|
#define AEM_OFFSET_ASSOCIATION_ID 48
|
|
|
|
#define AEM_OFFSET_ENTITY_TYPE 56
|
|
|
|
#define AEM_OFFSET_ENTITY_NAME 60
|
|
|
|
#define AEM_OFFSET_VENDOR_NAME_STRING 124
|
|
|
|
#define AEM_OFFSET_MODEL_NAME_STRING 126
|
|
|
|
#define AEM_OFFSET_FIRMWARE_VERSION 128
|
|
|
|
#define AEM_OFFSET_GROUP_NAME 192
|
|
|
|
#define AEM_OFFSET_SERIAL_NUMBER 256
|
|
|
|
#define AEM_OFFSET_CONFIGURATIONS_COUNT 320
|
|
|
|
#define AEM_OFFSET_CURRENT_CONFIGURATION 322
|
|
|
|
|
|
|
|
#define AEM_OFFSET_CONFIGURATION_NAME 4
|
|
|
|
#define AEM_OFFSET_CONFIGURATION_NAME_STRING 68
|
|
|
|
#define AEM_OFFSET_DESCRIPTOR_COUNTS_COUNT 70
|
|
|
|
#define AEM_OFFSET_DESCRIPTOR_COUNTS_OFFSET 72
|
|
|
|
#define AEM_OFFSET_DESCRIPTOR_COUNTS 74
|
|
|
|
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS 4
|
|
|
|
#define AEM_OFFSET_BASE_STREAM_INPUT_PORT 6
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS 8
|
|
|
|
#define AEM_OFFSET_BASE_STREAM_OUTPUT_PORT 10
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS 12
|
|
|
|
#define AEM_OFFSET_BASE_EXTERNAL_INPUT_PORT 14
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS 16
|
|
|
|
#define AEM_OFFSET_BASE_EXTERNAL_OUTPUT_PORT 18
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS 20
|
|
|
|
#define AEM_OFFSET_BASE_INTERNAL_INPUT_PORT 22
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS 24
|
|
|
|
#define AEM_OFFSET_BASE_INTERNAL_OUTPUT_PORT 26
|
|
|
|
#define AEM_OFFSET_CLOCK_SOURCE_ID 28
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_CONTROLS 30
|
|
|
|
#define AEM_OFFSET_BASE_CONTROL 32
|
|
|
|
#define AEM_OFFSET_UNIT_NAME 34
|
|
|
|
#define AEM_OFFSET_UNIT_NAME_STRING 98
|
|
|
|
#define AEM_OFFSET_CURRENT_SAMPLE_RATE 100
|
|
|
|
#define AEM_OFFSET_SAMPLE_RATES_OFFSET 104
|
|
|
|
#define AEM_OFFSET_SAMPLE_RATES_COUNT 106
|
|
|
|
#define AEM_OFFSET_SAMPLE_RATES 108
|
|
|
|
|
|
|
|
/* starting with the draft 18 updates the naming scheme for offsets will be changing *
|
|
|
|
* to DESCRIPTOR_NAME_OFFSET_FIELD to make maintenance easier. Eventually all of the *
|
|
|
|
* offsets will be changed to this form. For now, all changes will be added in this *
|
|
|
|
* format to avoid breaking anything that used the same offset in multiple places */
|
|
|
|
#define AUDIO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS 100
|
|
|
|
#define AUDIO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR 102
|
|
|
|
#define AUDIO_UNIT_OFFSET_NUMBER_MIXERS 104
|
|
|
|
#define AUDIO_UNIT_OFFSET_BASE_MIXER 106
|
|
|
|
#define AUDIO_UNIT_OFFSET_NUMBER_MATRICES 108
|
|
|
|
#define AUDIO_UNIT_OFFSET_BASE_MATRIX 110
|
|
|
|
#define AUDIO_UNIT_OFFSET_CURRENT_SAMPLE_RATE 112
|
|
|
|
#define AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET 116
|
|
|
|
#define AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT 118
|
|
|
|
#define AUDIO_UNIT_OFFSET_SAMPLE_RATES 120
|
|
|
|
|
|
|
|
#define VIDEO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS 100
|
|
|
|
#define VIDEO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR 102
|
|
|
|
#define VIDEO_UNIT_OFFSET_NUMBER_MIXERS 104
|
|
|
|
#define VIDEO_UNIT_OFFSET_BASE_MIXER 106
|
|
|
|
#define VIDEO_UNIT_OFFSET_NUMBER_MATRICES 108
|
|
|
|
#define VIDEO_UNIT_OFFSET_BASE_MATRIX 110
|
|
|
|
|
|
|
|
#define AEM_OFFSET_STREAM_NAME 4
|
|
|
|
#define AEM_OFFSET_STREAM_NAME_STRING 68
|
|
|
|
#define AEM_OFFSET_STREAM_FLAGS 70
|
|
|
|
#define AEM_OFFSET_STREAM_CHANNELS 72
|
|
|
|
#define AEM_OFFSET_CLOCK_SOURCE_ID_STREAM 74
|
|
|
|
|
|
|
|
#define AEM_OFFSET_MAPPINGS_OFFSET 4
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_MAPPINGS 6
|
|
|
|
#define AEM_OFFSET_MAPPINGS 8
|
|
|
|
|
|
|
|
#define AEM_OFFSET_SF_SUBTYPE 0
|
|
|
|
|
|
|
|
#define AECP_OFFSET_SETMF_MEDIA_FMT 28
|
|
|
|
#define AECP_OFFSET_AUTH_ADD_KEY_KEYTYPE 24
|
|
|
|
#define AECP_OFFSET_AUTH_ADD_KEY_CONTINUED 26
|
|
|
|
#define AECP_OFFSET_AUTH_ADD_KEY_KEY_PART 26
|
|
|
|
#define AECP_OFFSET_AUTH_ADD_KEY_LENGTH 24
|
|
|
|
#define AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS 28
|
|
|
|
#define AECP_OFFSET_AUTH_ADD_KEY_KEY_GUID 32
|
|
|
|
#define AECP_OFFSET_AUTH_ADD_KEY_KEY 40
|
|
|
|
|
|
|
|
#define AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH 26
|
|
|
|
#define AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS 28
|
|
|
|
#define AECP_OFFSET_AUTHENTICATE_KEY_GUID 32
|
|
|
|
#define AECP_OFFSET_AUTHENTICATE_AUTH_TOKEN 40
|
|
|
|
|
|
|
|
#define AECP_OFFSET_GET_COUNTERS_VALID 28
|
|
|
|
#define AECP_OFFSET_GET_COUNTERS_BLOCK 32
|
|
|
|
|
|
|
|
#define AEM_OFFSET_CURRENT_FORMAT 76
|
|
|
|
#define AEM_OFFSET_FORMATS_OFFSET 84
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_FORMATS 86
|
|
|
|
#define AEM_OFFSET_BACKUP_TALKER_GUID_0 88
|
|
|
|
#define AEM_OFFSET_BACKUP_TALKER_UNIQUE_0 96
|
|
|
|
#define AEM_OFFSET_BACKUP_TALKER_GUID_1 98
|
|
|
|
#define AEM_OFFSET_BACKUP_TALKER_UNIQUE_1 106
|
|
|
|
#define AEM_OFFSET_BACKUP_TALKER_GUID_2 108
|
|
|
|
#define AEM_OFFSET_BACKUP_TALKER_UNIQUE_2 116
|
|
|
|
#define AEM_OFFSET_BACKEDUP_TALKER_GUID 118
|
|
|
|
#define AEM_OFFSET_BACKEDUP_TALKER_UNIQUE 126
|
|
|
|
#define AEM_OFFSET_AVB_INTERFACE_ID 128
|
|
|
|
#define AEM_OFFSET_FORMATS 130
|
|
|
|
|
|
|
|
#define AEM_OFFSET_JACK_NAME 4
|
|
|
|
#define AEM_OFFSET_JACK_NAME_STRING 68
|
|
|
|
#define AEM_OFFSET_JACK_FLAGS 70
|
|
|
|
#define AEM_OFFSET_JACK_TYPE 72
|
|
|
|
|
|
|
|
#define AEM_OFFSET_PORT_FLAGS 4
|
|
|
|
#define AEM_OFFSET_AUDIO_CHANNELS 6
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_CLUSTERS 8
|
|
|
|
#define AEM_OFFSET_BASE_CLUSTER 10
|
|
|
|
#define AEM_OFFSET_AUDIO_MAP_ID 12
|
|
|
|
|
|
|
|
#define AUDIO_PORT_OFFSET_BASE_AUDIO_MAP 12
|
|
|
|
#define AUDIO_PORT_OFFSET_NUMBER_AUDIO_MAPS 14
|
|
|
|
|
|
|
|
|
|
|
|
#define AEM_OFFSET_CURRENT_FORMAT_VID 6
|
|
|
|
#define AEM_OFFSET_SOURCE_TYPE 22
|
|
|
|
#define AEM_OFFSET_SOURCE_ID 24
|
|
|
|
#define AEM_OFFSET_STREAM_ID 26
|
|
|
|
#define AEM_OFFSET_FORMATS_OFFSET_VID 28
|
|
|
|
#define AEM_OFFSET_FORMATS_COUNT_VID 30
|
|
|
|
|
|
|
|
#define VIDEO_PORT_OFFSET_BLOCK_LATENCY 32
|
|
|
|
#define VIDEO_PORT_OFFSET_FORMATS 36
|
|
|
|
|
|
|
|
#define AEM_OFFSET_MEDIA_FORMATS_VID 32
|
|
|
|
|
|
|
|
#define AEM_OFFSET_STREAM_FORMATS 32
|
|
|
|
|
|
|
|
#define AEM_OFFSET_SOURCE_TYPE_EXT 6
|
|
|
|
#define AEM_OFFSET_SOURCE_ID_EXT 8
|
|
|
|
#define EXTERNAL_PORT_OFFSET_JACK_ID 10
|
|
|
|
#define EXTERNAL_PORT_OFFSET_BLOCK_LATENCY 12
|
|
|
|
|
|
|
|
#define AEM_OFFSET_STREAM_ID_SEN 10
|
|
|
|
#define SENSOR_PORT_OFFSET_BLOCK_LATENCY 12
|
|
|
|
|
|
|
|
#define INTERNAL_PORT_OFFSET_BLOCK_LATENCY 12
|
|
|
|
|
|
|
|
#define AEM_OFFSET_INTERNAL_ID 10
|
|
|
|
|
|
|
|
#define AEM_OFFSET_MAC_ADDRESS 4
|
|
|
|
#define AEM_OFFSET_AS_GRANDMASTER_ID_AVB 10
|
|
|
|
#define AEM_OFFSET_MSRP_MAPPINGS_OFFSET 18
|
|
|
|
#define AEM_OFFSET_MSRP_MAPPINGS_COUNT 20
|
|
|
|
|
|
|
|
#define AVB_INTERFACE_OFFSET_INTERFACE_NAME 22
|
|
|
|
#define AVB_INTERFACE_OFFSET_INTERFACE_NAME_STRING 86
|
|
|
|
#define AVB_INTERFACE_MSRP_MAPPINGS 88
|
|
|
|
|
|
|
|
#define AEM_OFFSET_CLOCK_SOURCE_NAME 4
|
|
|
|
#define AEM_OFFSET_CLOCK_SOURCE_NAME_STRING 68
|
|
|
|
#define AEM_OFFSET_CLOCK_SOURCE_FLAGS 70
|
|
|
|
#define AEM_OFFSET_CLOCK_SOURCE_TYPE 72
|
|
|
|
#define AEM_OFFSET_CLOCK_SOURCE_ID_CLK 74
|
|
|
|
#define AEM_OFFSET_CLOCK_SOURCE_LOCATION_TYPE 82
|
|
|
|
#define AEM_OFFSET_CLOCK_SOURCE_LOCATION_ID 84
|
|
|
|
|
|
|
|
#define AUDIO_CLUSTER_OFFSET_CHANNEL_COUNT 4
|
|
|
|
#define AUDIO_CLUSTER_OFFSET_PATH_LATENCY 6
|
|
|
|
#define AUDIO_CLUSTER_OFFSET_AM824_LABEL 10
|
|
|
|
#define AUDIO_CLUSTER_OFFSET_CLUSTER_NAME 11
|
|
|
|
#define AUDIO_CLUSTER_OFFSET_CLUSTER_NAME_STRING 75
|
|
|
|
#define AUDIO_CLUSTER_OFFSET_SIGNAL_TYPE 77
|
|
|
|
#define AUDIO_CLUSTER_OFFSET_SIGNAL_ID 79
|
|
|
|
#define AUDIO_CLUSTER_OFFSET_BLOCK_LATENCY 81
|
|
|
|
|
|
|
|
#define AEM_OFFSET_AM824_LABEL 10
|
|
|
|
#define AEM_OFFSET_CLUSTER_NAME 11
|
|
|
|
#define AEM_OFFSET_CLUSTER_NAME_STRING 75
|
|
|
|
#define AEM_OFFSET_SOURCE_TYPE_CLU 77
|
|
|
|
#define AEM_OFFSET_SOURCE_ID_CLU 79
|
|
|
|
|
|
|
|
#define AEM_OFFSET_CONTROL_TYPE 4
|
|
|
|
#define AEM_OFFSET_CONTROL_LOCATION_TYPE 12
|
|
|
|
#define AEM_OFFSET_CONTROL_LOCATION_ID 14
|
|
|
|
#define AEM_OFFSET_CONTROL_VALUE_TYPE 16
|
|
|
|
#define AEM_OFFSET_CONTROL_DOMAIN 18
|
|
|
|
#define AEM_OFFSET_CONTROL_NAME 20
|
|
|
|
#define AEM_OFFSET_CONTROL_NAME_STRING 84
|
|
|
|
#define AEM_OFFSET_VALUES_OFFSET_CTRL 86
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_VALUES_CTRL 88
|
|
|
|
#define AEM_OFFSET_SOURCE_TYPE_CTRL 90
|
|
|
|
#define AEM_OFFSET_SOURCE_ID_CTRL 92
|
|
|
|
|
|
|
|
#define CONTROL_OFFSET_BLOCK_LATENCY 94
|
|
|
|
#define CONTROL_OFFSET_CONTROL_LATENCY 98
|
|
|
|
#define CONTROL_OFFSET_VALUE_DETAILS 102
|
|
|
|
|
|
|
|
#define AEM_OFFSET_CONTROL_LOCATION_TYPE_SIGS 4
|
|
|
|
#define AEM_OFFSET_CONTROL_LOCATION_ID_SIGS 6
|
|
|
|
#define AEM_OFFSET_CONTROL_DOMAIN_SIGS 8
|
|
|
|
#define AEM_OFFSET_CONTROL_NAME_SIGS 10
|
|
|
|
#define AEM_OFFSET_CONTROL_NAME_STRING_SIGS 74
|
|
|
|
#define AEM_OFFSET_SOURCES_OFFSET_SIGS 76
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_SOURCES_SIGS 78
|
|
|
|
#define AEM_OFFSET_CURRENT_SOURCE_TYPE_SIGS 80
|
|
|
|
#define AEM_OFFSET_CURRENT_SOURCE_ID_SIGS 82
|
|
|
|
#define AEM_OFFSET_DEFAULT_SOURCE_TYPE_SIGS 84
|
|
|
|
#define AEM_OFFSET_DEFAULT_SOURCE_ID_SIGS 86
|
|
|
|
|
|
|
|
#define SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY 88
|
|
|
|
#define SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY 92
|
|
|
|
#define SIGNAL_SELECTOR_OFFSET_SOURCES 96
|
|
|
|
|
|
|
|
#define AEM_OFFSET_CONTROL_LOCATION_TYPE_MXR 4
|
|
|
|
#define AEM_OFFSET_CONTROL_LOCATION_ID_MXR 6
|
|
|
|
#define AEM_OFFSET_CONTROL_VALUE_TYPE_MXR 8
|
|
|
|
#define AEM_OFFSET_CONTROL_DOMAIN_MXR 10
|
|
|
|
#define AEM_OFFSET_CONTROL_NAME_MXR 12
|
|
|
|
#define AEM_OFFSET_CONTROL_NAME_STRING_MXR 76
|
|
|
|
#define AEM_OFFSET_SOURCES_OFFSET_MXR 78
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_SOURCES_MXR 80
|
|
|
|
#define AEM_OFFSET_VALUE_OFFSET_MXR 82
|
|
|
|
|
|
|
|
#define MIXER_OFFSET_BLOCK_LATENCY 84
|
|
|
|
#define MIXER_OFFSET_CONTROL_LATENCY 88
|
|
|
|
#define MIXER_OFFSET_SOURCES 92
|
|
|
|
|
|
|
|
#define AEM_OFFSET_CONTROL_TYPE_MTRX 4
|
|
|
|
#define AEM_OFFSET_CONTROL_LOCATION_TYPE_MTRX 12
|
|
|
|
#define AEM_OFFSET_CONTROL_LOCATION_ID_MTRX 14
|
|
|
|
#define AEM_OFFSET_CONTROL_VALUE_TYPE_MTRX 16
|
|
|
|
#define AEM_OFFSET_CONTROL_DOMAIN_MTRX 18
|
|
|
|
#define AEM_OFFSET_CONTROL_NAME_MTRX 20
|
|
|
|
#define AEM_OFFSET_CONTROL_NAME_STRING_MTRX 84
|
|
|
|
#define AEM_OFFSET_WIDTH_MTRX 86
|
|
|
|
#define AEM_OFFSET_HEIGHT_MTRX 88
|
|
|
|
#define AEM_OFFSET_VALUES_OFFSET_MTRX 90
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_VALUES_MTRX 92
|
|
|
|
#define AEM_OFFSET_VALUES_MTRX 94
|
|
|
|
|
|
|
|
#define MATRIX_OFFSET_BLOCK_LATENCY 94
|
|
|
|
#define MATRIX_OFFSET_CONTROL_LATENCY 98
|
|
|
|
#define MATRIX_OFFSET_NUMBER_SOURCES 102
|
|
|
|
#define MATRIX_OFFSET_BASE_SOURCE 104
|
|
|
|
#define MATRIX_OFFSET_NUMBER_DESTINATIONS 106
|
|
|
|
#define MATRIX_OFFSET_BASE_DESTINATION 108
|
|
|
|
#define MATRIX_OFFSET_VALUE_DETAILS 110
|
|
|
|
|
|
|
|
#define AEM_OFFSET_LOCALE_IDENTIFIER 4
|
|
|
|
#define AEM_OFFSET_NUMBER_OF_STRINGS 68
|
|
|
|
#define AEM_OFFSET_BASE_STRINGS 70
|
|
|
|
|
|
|
|
#define AEM_OFFSET_STRING0 4
|
|
|
|
|
|
|
|
#define MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT 4
|
|
|
|
#define MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET 6
|
|
|
|
#define MATRIX_SIGNAL_OFFSET_SIGNALS 8
|
|
|
|
|
|
|
|
#define MEMORY_OBJECT_OFFSET_MEMORY_OBJECT_TYPE 4
|
|
|
|
#define MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_TYPE 6
|
|
|
|
#define MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_ID 8
|
|
|
|
#define MEMORY_OBJECT_OFFSET_OBJECT_NAME 10
|
|
|
|
#define MEMORY_OBJECT_OFFSET_OBJECT_NAME_STRING 74
|
|
|
|
#define MEMORY_OBJECT_OFFSET_START_ADDRESS 76
|
|
|
|
#define MEMORY_OBJECT_OFFSET_LENGTH 84
|
|
|
|
|
|
|
|
#define AEM_OFFSET_MFD_TYPE 3
|
|
|
|
#define AEM_OFFSET_DIV 4
|
|
|
|
#define AEM_OFFSET_INTERLACE 4
|
|
|
|
#define AEM_OFFSET_CHANNELS 4
|
|
|
|
#define AEM_OFFSET_COLOR_FORMAT 4
|
|
|
|
#define AEM_OFFSET_BPP 5
|
|
|
|
#define AEM_OFFSET_ASPECT_X 6
|
|
|
|
#define AEM_OFFSET_ASPECT_Y 7
|
|
|
|
#define AEM_OFFSET_FRAME_RATE 8
|
|
|
|
#define AEM_OFFSET_COMP1 9
|
|
|
|
#define AEM_OFFSET_COMP2 10
|
|
|
|
#define AEM_OFFSET_COMP3 10
|
|
|
|
#define AEM_OFFSET_COMP4 11
|
|
|
|
#define AEM_OFFSET_SVMF_WIDTH 12
|
|
|
|
#define AEM_OFFSET_SVMF_HEIGHT 14
|
|
|
|
|
|
|
|
#define AEM_OFFSET_CS_EUI64 8
|
|
|
|
|
|
|
|
#define AEM_OFFSET_SF_VERSION 0
|
|
|
|
#define AEM_OFFSET_SF 1
|
|
|
|
#define AEM_OFFSET_IIDC_FORMAT 5
|
|
|
|
#define AEM_OFFSET_IIDC_MODE 6
|
|
|
|
#define AEM_OFFSET_IIDC_RATE 7
|
|
|
|
#define AEM_OFFSET_FDF_EVT 2
|
|
|
|
#define AEM_OFFSET_FDF_SFC 2
|
|
|
|
#define AEM_OFFSET_DBS 3
|
|
|
|
#define AEM_OFFSET_FMT 1
|
|
|
|
#define AEM_OFFSET_B 4
|
|
|
|
#define AEM_OFFSET_NB 4
|
|
|
|
#define AEM_OFFSET_LABEL_IEC_60958_CNT 5
|
|
|
|
#define AEM_OFFSET_LABEL_MBLA_CNT 6
|
|
|
|
#define AEM_OFFSET_LABEL_MIDI_CNT 7
|
|
|
|
#define AEM_OFFSET_LABEL_SMPTE_CNT 7
|
|
|
|
|
|
|
|
#define AEM_OFFSET_VIDEO_MODE 5
|
|
|
|
#define AEM_OFFSET_COMPRESS_MODE 6
|
|
|
|
#define AEM_OFFSET_COLOR_SPACE 7
|
|
|
|
|
|
|
|
/* Bitmasks */
|
2012-04-27 17:36:53 +00:00
|
|
|
#define AECP_STATUS_CODE_MASK 0xf8
|
2012-03-02 03:30:30 +00:00
|
|
|
#define AECP_TOKEN_LENGTH_MASK 0x07ff
|
|
|
|
#define AECP_KEY_PART_MASK 0x78
|
|
|
|
#define AECP_CONTINUED_MASK 0x80
|
|
|
|
#define AECP_CD_LENGTH_MASK 0x07ff
|
|
|
|
#define AECP_COMMAND_TYPE_MASK 0x7fff
|
|
|
|
#define AECP_CONNECTED_FLAG_MASK 0x08000000
|
|
|
|
#define AECP_DEFAULT_FORMAT_VALID_FLAG_MASK 0x80000000
|
|
|
|
#define AECP_DEST_MAC_VALID_FLAG_MASK 0x40000000
|
|
|
|
#define AECP_KEYCHAIN_ID_MASK 0xe0
|
|
|
|
#define AECP_KEYTYPE_MASK 0x1c
|
|
|
|
#define AECP_KEY_COUNT_MASK 0x0fff
|
|
|
|
#define AECP_KEY_LENGTH_MASK 0x07ff
|
|
|
|
#define AECP_KEY_NUMBER_MASK 0x04ff
|
|
|
|
#define AECP_MATRIX_DIRECTION_MASK 0x70
|
|
|
|
#define AECP_MATRIX_REP_MASK 0x80
|
|
|
|
#define AECP_MATRIX_VALUE_COUNT_MASK 0xfff
|
|
|
|
#define AECP_MSG_TYPE_MASK 0x0f
|
|
|
|
#define AECP_MSRP_ACC_LAT_VALID_FLAG_MASK 0x20000000
|
|
|
|
#define AECP_PERSISTENT_FLAG_MASK 0x00000001
|
|
|
|
#define AECP_RELEASE_FLAG_MASK 0x80000000
|
|
|
|
#define AECP_SIGNATURE_ID_MASK 0x0fff
|
|
|
|
#define AECP_SIGNATURE_INFO_MASK 0x00f0
|
|
|
|
#define AECP_SIGNATURE_LENGTH_MASK 0x3ff
|
|
|
|
#define AECP_STREAM_ID_VALID_FLAG_MASK 0x10000000
|
|
|
|
#define AECP_UNLOCK_FLAG_MASK 0x00000001
|
|
|
|
#define AECP_U_FLAG_MASK 0x80
|
|
|
|
|
|
|
|
/* key permission flag masks */
|
|
|
|
#define AECP_PRIVATE_KEY_READ_FLAG_MASK 0x80000000
|
|
|
|
#define AECP_PRIVATE_KEY_WRITE_FLAG_MASK 0x40000000
|
|
|
|
#define AECP_PUBLIC_KEY_WRITE_FLAG_MASK 0x20000000
|
|
|
|
#define AECP_CONNECTION_FLAG_MASK 0x10000000
|
|
|
|
#define AECP_CONTROL_ADMIN_FLAG_MASK 0x08000000
|
|
|
|
#define AECP_MEM_OBJ_ADMIN_FLAG_MASK 0x04000000
|
|
|
|
#define AECP_MEM_OBJ_SETTINGS_FLAG_MASK 0x02000000
|
|
|
|
#define AECP_CONTROL_USER_L1_FLAG_MASK 0x00000008
|
|
|
|
#define AECP_CONTROL_USER_L2_FLAG_MASK 0x00000004
|
|
|
|
#define AECP_CONTROL_USER_L3_FLAG_MASK 0x00000002
|
|
|
|
#define AECP_CONTROL_USER_L4_FLAG_MASK 0x00000001
|
|
|
|
|
|
|
|
/* 7.105 counters_valid flag masks */
|
|
|
|
#define AECP_COUNTERS_VALID_GPTP_UNLOCKED 0x40000000
|
|
|
|
#define AECP_COUNTERS_VALID_GPTP_LOCKED 0x20000000
|
|
|
|
#define AECP_COUNTERS_VALID_MEDIA_UNLOCKED 0x10000000
|
|
|
|
#define AECP_COUNTERS_VALID_MEDIA_LOCKED 0x08000000
|
|
|
|
#define AECP_COUNTERS_VALID_STREAM_RESET 0x02000000
|
|
|
|
#define AECP_COUNTERS_VALID_SRP_REFUSED 0x01000000
|
|
|
|
#define AECP_COUNTERS_VALID_BACKUP_STREAM_SWITCH 0x00800000
|
|
|
|
#define AECP_COUNTERS_VALID_MISSED_AVDECC_RESPONSE 0x00400000
|
|
|
|
#define AECP_COUNTERS_VALID_REFUSED_AVDECC_COMMAND 0x00200000
|
|
|
|
#define AECP_COUNTERS_VALID_SEQ_NUM_MISMATCH 0x00100000
|
|
|
|
#define AECP_COUNTERS_VALID_MEDIA_CLOCK_TOGGLES 0x00080000
|
|
|
|
#define AECP_COUNTERS_VALID_TIMESTAMP_UNCERTAINS 0x00040000
|
|
|
|
#define AECP_COUNTERS_VALID_TIMESTAMP_VALIDS 0x00020000
|
|
|
|
#define AECP_COUNTERS_VALID_UNSUPPORTED_FORMATS 0x00010000
|
|
|
|
#define AECP_COUNTERS_VALID_BAD_PRESENTATION_TIMES 0x00008000
|
|
|
|
#define AECP_COUNTERS_VALID_SRP_LATENCY_VIOLATIONS 0x00004000
|
|
|
|
#define AECP_COUNTERS_VALID_PACKETS_TX 0x00002000
|
|
|
|
#define AECP_COUNTERS_VALID_PACKETS_RX 0x00001000
|
|
|
|
#define AECP_COUNTERS_VALID_PACKETS_OF_INTEREST_RX 0x00000800
|
|
|
|
#define AECP_COUNTERS_VALID_TALKER_BW_RESERVED 0x00000400
|
|
|
|
#define AECP_COUNTERS_VALID_RESERVED1 0x00000200
|
|
|
|
#define AECP_COUNTERS_VALID_RESERVED2 0x00000100
|
|
|
|
#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_1 0x00000080
|
|
|
|
#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_2 0x00000040
|
|
|
|
#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_3 0x00000020
|
|
|
|
#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_4 0x00000010
|
|
|
|
#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_5 0x00000008
|
|
|
|
#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_6 0x00000004
|
|
|
|
#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_7 0x00000002
|
|
|
|
#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_8 0x00000001
|
|
|
|
|
|
|
|
#define AEM_ASYNC_SAMPLE_RATE_CONV_FLAG_MASK 0x00000002
|
|
|
|
#define AEM_BASE_FREQUENCY_MASK 0x1fffffff
|
|
|
|
#define AEM_CAPTIVE_FLAG_MASK 0x00000002
|
|
|
|
#define AEM_CLASS_A_FLAG_MASK 0x00000002
|
|
|
|
#define AEM_CLASS_B_FLAG_MASK 0x00000004
|
|
|
|
#define AEM_CLOCK_SYNC_SOURCE_FLAG_MASK 0x00000001
|
|
|
|
#define AEM_MASK_B 0x80
|
|
|
|
#define AEM_MASK_BPP 0x3F
|
|
|
|
#define AEM_MASK_CHANNELS 0x3C
|
|
|
|
#define AEM_MASK_COLOR_FORMAT 0x03C0
|
|
|
|
#define AEM_MASK_COMP1 0x0F80
|
|
|
|
#define AEM_MASK_COMP2 0x7C
|
|
|
|
#define AEM_MASK_COMP3 0x03E0
|
|
|
|
#define AEM_MASK_COMP4 0x1F
|
|
|
|
#define AEM_MASK_DIV 0x80
|
|
|
|
#define AEM_MASK_FDF_EVT 0xF8
|
|
|
|
#define AEM_MASK_FDF_SFC 0x07
|
|
|
|
#define AEM_MASK_FMT 0x3F
|
|
|
|
#define AEM_MASK_INTERLACE 0x40
|
|
|
|
#define AEM_MASK_LABEL_MIDI_CNT 0xF0
|
|
|
|
#define AEM_MASK_LABEL_SMPTE_CNT 0x0F
|
|
|
|
#define AEM_MASK_NB 0x40
|
|
|
|
#define AEM_MASK_OUI24 0xFFFFFF00
|
|
|
|
#define AEM_MASK_SF 0x40
|
|
|
|
#define AEM_MASK_SF_SUBTYPE 0x3F80
|
|
|
|
#define AEM_MASK_SF_VERSION 0xC0
|
|
|
|
#define AEM_PULL_FIELD_MASK 0xe0
|
|
|
|
#define AEM_SYNC_SAMPLE_RATE_CONV_FLAG_MASK 0x00000001
|
|
|
|
|
|
|
|
#define MFD_TYPE_VIDEO 0x00
|
|
|
|
#define MFD_TYPE_TRANSPORT_STRM 0x01
|
|
|
|
#define MFD_TYPE_MIDI 0x02
|
|
|
|
#define MFD_TYPE_TIME_CODE 0x03
|
|
|
|
#define MFD_TYPE_CONTROL_PROTO 0x04
|
|
|
|
|
|
|
|
#define COLOR_FORMAT_MONO 0x0
|
|
|
|
#define COLOR_FORMAT_RGB 0x1
|
|
|
|
#define COLOR_FORMAT_RGBA 0x2
|
|
|
|
#define COLOR_FORMAT_BGRA 0x3
|
|
|
|
#define COLOR_FORMAT_CMYK 0x4
|
|
|
|
#define COLOR_FORMAT_HSL 0x5
|
|
|
|
#define COLOR_FORMAT_YUV 0x6
|
|
|
|
#define COLOR_FORMAT_YCBCR 0x7
|
|
|
|
#define COLOR_FORMAT_YPBPR 0x08
|
|
|
|
|
|
|
|
#define OUI24_STANDARD_MEDIA_FORMAT 0x90e0f0
|
|
|
|
|
|
|
|
#define MEMORY_OBJECT_TYPE_FIRMWARE_IMAGE 0x0000
|
|
|
|
#define MEMORY_OBJECT_TYPE_VENDOR_SPECIFIC 0x0001
|
|
|
|
#define MEMORY_OBJECT_TYPE_CRASH_DUMP 0x0002
|
|
|
|
#define MEMORY_OBJECT_TYPE_LOG_OBJECT 0x0003
|
|
|
|
#define MEMORY_OBJECT_TYPE_AUTOSTART_SETTINGS 0x0004
|
|
|
|
#define MEMORY_OBJECT_TYPE_SNAPSHOT_SETTINGS 0x0005
|
|
|
|
|
|
|
|
#define KEY_TYPE_NONE 0
|
|
|
|
#define KEY_TYPE_SHA256 1
|
|
|
|
#define KEY_TYPE_AES128 2
|
|
|
|
#define KEY_TYPE_AES256 3
|
|
|
|
#define KEY_TYPE_RSA1024_PUBLIC 4
|
|
|
|
#define KEY_TYPE_RSA1024_PRIVATE 5
|
|
|
|
#define KEY_TYPE_X509 6
|
|
|
|
|
|
|
|
static const value_string aecp_keytype_type_vals [] = {
|
|
|
|
{KEY_TYPE_NONE, "NO_KEY"},
|
|
|
|
{KEY_TYPE_SHA256, "SHA256"},
|
|
|
|
{KEY_TYPE_AES128, "AES128"},
|
|
|
|
{KEY_TYPE_AES256, "AES256"},
|
|
|
|
{KEY_TYPE_RSA1024_PUBLIC, "RSA1024_PUBLIC"},
|
|
|
|
{KEY_TYPE_RSA1024_PRIVATE, "RSA1024_PRIVATE"},
|
|
|
|
{KEY_TYPE_X509, "RSA1024_X509"},
|
|
|
|
{0, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aem_memory_object_type_vals [] = {
|
|
|
|
{MEMORY_OBJECT_TYPE_FIRMWARE_IMAGE, "FIRMWARE_IMAGE"},
|
|
|
|
{MEMORY_OBJECT_TYPE_VENDOR_SPECIFIC, "VENDOR_SPECIFIC"},
|
|
|
|
{MEMORY_OBJECT_TYPE_CRASH_DUMP, "CRASH_DUMP"},
|
|
|
|
{MEMORY_OBJECT_TYPE_LOG_OBJECT, "LOG_OBJECT"},
|
|
|
|
{MEMORY_OBJECT_TYPE_AUTOSTART_SETTINGS, "AUTOSTART_SETTINGS"},
|
|
|
|
{MEMORY_OBJECT_TYPE_SNAPSHOT_SETTINGS, "SNAPSHOT_SETTINGS"},
|
|
|
|
{0, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aem_stream_format_subtype_vals [] = {
|
|
|
|
{SF61883_IIDC_SUBTYPE, "61883_IIDC_SUBTYPE"},
|
|
|
|
{MMA_SUBTYPE, "MMA_SUBTYPE"},
|
|
|
|
{EXPERIMENTAL_SUBTYPE, "EXPERIMENTAL_SUBTYPE"},
|
|
|
|
{0, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aem_color_format_type_vals [] = {
|
|
|
|
{COLOR_FORMAT_MONO, "Monochrome"},
|
|
|
|
{COLOR_FORMAT_RGB, "RGB"},
|
|
|
|
{COLOR_FORMAT_RGBA, "RGBA"},
|
|
|
|
{COLOR_FORMAT_BGRA, "BGRA"},
|
|
|
|
{COLOR_FORMAT_CMYK, "CMYK"},
|
|
|
|
{COLOR_FORMAT_HSL, "HSL"},
|
|
|
|
{COLOR_FORMAT_YUV, "YUV"},
|
|
|
|
{COLOR_FORMAT_YCBCR, "YCbCr"},
|
|
|
|
{COLOR_FORMAT_YPBPR, "YPbPr"},
|
|
|
|
{0, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aem_mfd_type_vals [] = {
|
|
|
|
{MFD_TYPE_VIDEO, "VIDEO"},
|
|
|
|
{MFD_TYPE_TRANSPORT_STRM, "TRANSPORT_STREAM"},
|
|
|
|
{MFD_TYPE_MIDI, "MIDI"},
|
|
|
|
{MFD_TYPE_TIME_CODE, "TIME_CODE"},
|
|
|
|
{MFD_TYPE_CONTROL_PROTO, "CONTROL_PROTOCOL"},
|
|
|
|
{0, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aem_clock_source_type_vals [] = {
|
|
|
|
{AEM_CLOCK_LOCAL_OSCILLATOR , "LOCAL OSCILLATOR"},
|
|
|
|
{AEM_CLOCK_INPUT_STREAM , "INPUT STREAM"},
|
|
|
|
{AEM_CLOCK_WORLD_CLOCK , "WORLD CLOCK"},
|
|
|
|
{AEM_CLOCK_ANALOG_INPUT , "ANALOG INPUT"},
|
|
|
|
{AEM_CLOCK_DIGITAL_INPUT , "DIGITAL INPUT"},
|
|
|
|
{AEM_CLOCK_8021_AS , "8021_AS"},
|
|
|
|
{AEM_CLOCK_THUNDERBOLT , "THUNDERBOLT"},
|
|
|
|
{0, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
/* frequency multipliers from table 7.6 pull field values */
|
|
|
|
static const value_string aem_frequency_multiplier_type_vals [] = {
|
|
|
|
{0, "1.0"},
|
|
|
|
{1, "1/1.001"},
|
|
|
|
{2, "1.001"},
|
|
|
|
{3, "24/25"},
|
|
|
|
{4, "25/24"},
|
|
|
|
{0, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aem_control_value_type_vals [] = {
|
|
|
|
{AEM_CONTROL_LINEAR_INT8 ,"CONTROL_LINEAR_INT8"},
|
|
|
|
{AEM_CONTROL_LINEAR_UINT8 ,"CONTROL_LINEAR_UINT8"},
|
|
|
|
{AEM_CONTROL_LINEAR_INT16 ,"CONTROL_LINEAR_INT16"},
|
|
|
|
{AEM_CONTROL_LINEAR_UINT16 ,"CONTROL_LINEAR_UINT16"},
|
|
|
|
{AEM_CONTROL_LINEAR_INT32 ,"CONTROL_LINEAR_INT32"},
|
|
|
|
{AEM_CONTROL_LINEAR_UINT32 ,"CONTROL_LINEAR_UINT32"},
|
|
|
|
{AEM_CONTROL_LINEAR_INT64 ,"CONTROL_LINEAR_INT64"},
|
|
|
|
{AEM_CONTROL_LINEAR_UINT64 ,"CONTROL_LINEAR_UINT64"},
|
|
|
|
{AEM_CONTROL_LINEAR_FLOAT ,"CONTROL_LINEAR_FLOAT"},
|
|
|
|
{AEM_CONTROL_LINEAR_DOUBLE ,"CONTROL_LINEAR_DOUBLE"},
|
|
|
|
{AEM_CONTROL_SELECTOR_INT8 ,"CONTROL_SELECTOR_INT8"},
|
|
|
|
{AEM_CONTROL_SELECTOR_UINT8 ,"CONTROL_SELECTOR_UINT8"},
|
|
|
|
{AEM_CONTROL_SELECTOR_INT16 ,"CONTROL_SELECTOR_INT16"},
|
|
|
|
{AEM_CONTROL_SELECTOR_UINT16 ,"CONTROL_SELECTOR_UINT16"},
|
|
|
|
{AEM_CONTROL_SELECTOR_INT32 ,"CONTROL_SELECTOR_INT32"},
|
|
|
|
{AEM_CONTROL_SELECTOR_UINT32 ,"CONTROL_SELECTOR_UINT32"},
|
|
|
|
{AEM_CONTROL_SELECTOR_INT64 ,"CONTROL_SELECTOR_INT64"},
|
|
|
|
{AEM_CONTROL_SELECTOR_UINT64 ,"CONTROL_SELECTOR_UINT64"},
|
|
|
|
{AEM_CONTROL_SELECTOR_FLOAT ,"CONTROL_SELECTOR_FLOAT"},
|
|
|
|
{AEM_CONTROL_SELECTOR_DOUBLE ,"CONTROL_SELECTOR_DOUBLE"},
|
|
|
|
{AEM_CONTROL_UTF8 ,"CONTROL_UTF8"},
|
|
|
|
{AEM_CONTROL_BODE_PLOT ,"CONTROL_BODE_PLOT"},
|
|
|
|
{AEM_CONTROL_ARRAY_INT8 ,"CONTROL_ARRAY_INT8"},
|
|
|
|
{AEM_CONTROL_ARRAY_UINT8 ,"CONTROL_ARRAY_UINT8"},
|
|
|
|
{AEM_CONTROL_ARRAY_INT16 ,"CONTROL_ARRAY_INT16"},
|
|
|
|
{AEM_CONTROL_ARRAY_UINT16 ,"CONTROL_ARRAY_UINT16"},
|
|
|
|
{AEM_CONTROL_ARRAY_INT32 ,"CONTROL_ARRAY_INT32"},
|
|
|
|
{AEM_CONTROL_ARRAY_UINT32 ,"CONTROL_ARRAY_UINT32"},
|
|
|
|
{AEM_CONTROL_ARRAY_INT64 ,"CONTROL_ARRAY_INT64"},
|
|
|
|
{AEM_CONTROL_ARRAY_UINT64 ,"CONTROL_ARRAY_UINT64"},
|
|
|
|
{AEM_CONTROL_ARRAY_FLOAT ,"CONTROL_ARRAY_FLOAT"},
|
|
|
|
{AEM_CONTROL_ARRAY_DOUBLE ,"CONTROL_ARRAY_DOUBLE"},
|
|
|
|
{AEM_CONTROL_VENDOR ,"CONTROL_CONTROL_VENDOR"},
|
|
|
|
{0 , NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aem_jack_type_vals [] = {
|
|
|
|
{AEM_JACKTYPE_SPEAKER ,"SPEAKER" },
|
|
|
|
{AEM_JACKTYPE_HEADPHONE ,"HEADPHONE" },
|
|
|
|
{AEM_JACKTYPE_ANALOG_MICROPHONE ,"ANALOG_MICROPHONE" },
|
|
|
|
{AEM_JACKTYPE_SPDIF ,"SPDIF" },
|
|
|
|
{AEM_JACKTYPE_ADAT ,"ADAT" },
|
|
|
|
{AEM_JACKTYPE_TDIF ,"TDIF" },
|
|
|
|
{AEM_JACKTYPE_MADI ,"MADI" },
|
|
|
|
{AEM_JACKTYPE_UNBALANCED_ANALOG ,"UNBALANCED_ANALOG" },
|
|
|
|
{AEM_JACKTYPE_BALANCED_ANALOG ,"BALANCED_ANALOG" },
|
|
|
|
{AEM_JACKTYPE_DIGITAL ,"DIGITAL" },
|
|
|
|
{AEM_JACKTYPE_MIDI ,"MIDI" },
|
|
|
|
{AEM_JACKTYPE_AES_EBU ,"AES_EBU" },
|
|
|
|
{AEM_JACKTYPE_COMPOSITE_VIDEO ,"COMPOSITE_VIDEO" },
|
|
|
|
{AEM_JACKTYPE_S_VHS_VIDEO ,"S_VHS_VIDEO" },
|
|
|
|
{AEM_JACKTYPE_COMPONENT_VIDEO ,"COMPONENT_VIDEO" },
|
|
|
|
{AEM_JACKTYPE_DVI ,"DVI" },
|
|
|
|
{AEM_JACKTYPE_HDMI ,"HDMI" },
|
|
|
|
{AEM_JACKTYPE_UDI ,"UDI" },
|
|
|
|
{AEM_JACKTYPE_DISPLAYPORT ,"DISPLAYPORT" },
|
|
|
|
{AEM_JACKTYPE_ANTENNA ,"ANTENNA" },
|
|
|
|
{AEM_JACKTYPE_ANALOG_TUNER ,"ANALOG_TUNER" },
|
|
|
|
{AEM_JACKTYPE_ETHERNET ,"ETHERNET" },
|
|
|
|
{AEM_JACKTYPE_WIFI ,"WIFI" },
|
|
|
|
{AEM_JACKTYPE_USB ,"USB" },
|
|
|
|
{AEM_JACKTYPE_PCI ,"PCI" },
|
|
|
|
{AEM_JACKTYPE_PCI_E ,"PDI_E" },
|
|
|
|
{AEM_JACKTYPE_SCSI ,"SCSI" },
|
|
|
|
{AEM_JACKTYPE_ATA ,"ATA" },
|
|
|
|
{AEM_JACKTYPE_IMAGER ,"IMAGER" },
|
|
|
|
{AEM_JACKTYPE_IR ,"IR" },
|
|
|
|
{AEM_JACKTYPE_THUNDERBOLT ,"THUNDERBOLT" },
|
|
|
|
{AEM_JACKTYPE_SATA ,"SATA" },
|
|
|
|
{AEM_JACKTYPE_SMPTE_LTC ,"SMPTE_LTC" },
|
|
|
|
{AEM_JACKTYPE_DIGITAL_MICROPHONE ,"DIGITAL_MICROPHONE" },
|
|
|
|
{0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
/* value_string uses a 32 bit integer id, control uses 64.
|
|
|
|
* TODO - make custom formatter for hf_aem_control_type
|
|
|
|
static const value_string aem_control_type_vals [] = {
|
|
|
|
{AEM_CONTROL_ENABLE , "ENABLE"},
|
|
|
|
{AEM_CONTROL_DELAY , "DELAY"},
|
|
|
|
{AEM_CONTROL_POW_LINE_FREQ , "POW_LINE_FREQ"},
|
|
|
|
{AEM_CONTROL_ROLLPITCHYAW_ABS , "ROLLPITCHYAW_ABS"},
|
|
|
|
{AEM_CONTROL_ROLLPITCHYAW_REL , "ROLLPITCHYAW_REL"},
|
|
|
|
{AEM_CONTROL_SURGESWAYHEAVE_ABS , "SURGESWAYHEAVE_ABS"},
|
|
|
|
{AEM_CONTROL_SURGESWAYHEAVE_REL , "SURGESWAYHEAVE_REL"},
|
|
|
|
{AEM_CONTROL_IDENTIFY , "IDENTIFY"},
|
|
|
|
{AEM_CONTROL_POWER_STATUS , "POWER_STATUS"},
|
|
|
|
{AEM_CONTROL_FAN_STATUS , "FAN_STATUS"},
|
|
|
|
{AEN_CONTROL_TEMPERATURE , "TEMPERATURE"},
|
|
|
|
{AEM_CONTROL_TEMPERATURE_SENSOR , "TEMPERATURE_SENSOR"},
|
|
|
|
{AEM_CONTROL_ALTITUDE , "ALTITUDE"},
|
|
|
|
{AEM_CONTROL_HUMIDITY , "HUMIDITY"},
|
|
|
|
{AEM_CONTROL_MUTE , "MUTE"},
|
|
|
|
{AEM_CONTROL_VOLUME , "VOLUME"},
|
|
|
|
{AEM_CONTROL_INVERT , "INVERT"},
|
|
|
|
{AEM_CONTROL_PANPOT , "PANPOT"},
|
|
|
|
{AEM_CONTROL_ISOLATE , "ISOLATE"},
|
|
|
|
{AEM_CONTROL_POSITION , "POSITION"},
|
|
|
|
{AEM_CONTROL_PHANTOM , "PHANTOM"},
|
|
|
|
{AEM_CONTROL_AUDIO_SCALE , "AUDIO_SCALE"},
|
|
|
|
{AEM_CONTROL_AUDIO_METERS , "AUDIO_METERS"},
|
|
|
|
{AEM_CONTROL_AUDIO_SPECTRUM , "AUDIO_SPECTRUM"},
|
|
|
|
{AEM_CONTROL_FILTER_RESPONSE , "FILTER_RESPONSE"},
|
|
|
|
{AEM_CONTROL_SCANNING_MODE , "SCANNING_MODE"},
|
|
|
|
{AEM_CONTROL_AUTO_EXP_MODE , "AUTO_EXP_MODE"},
|
|
|
|
{AEM_CONTROL_AUTO_EXP_PRIO , "AUTO_EXP_PRIO"},
|
|
|
|
{AEM_CONTROL_EXP_TIME_ABS , "EXP_TIME_ABS"},
|
|
|
|
{AEM_CONTROL_EXP_TIME_REL , "EXP_TIME_REL"},
|
|
|
|
{AEM_CONTROL_FOCUS_ABS , "FOCUS_ABS"},
|
|
|
|
{AEM_CONTROL_FOCUS_REL , "FOCUS_REL"},
|
|
|
|
{AEM_CONTROL_FOCUS_AUTO , "FOCUS_AUTO"},
|
|
|
|
{AEM_CONTROL_IRIS_ABS , "IRIS_ABS"},
|
|
|
|
{AEM_CONTROL_IRIS_REL , "IRIS_REL"},
|
|
|
|
{AEM_CONTROL_ZOOM_ABS , "ZOOM_ABS"},
|
|
|
|
{AEM_CONTROL_ZOOM_REL , "ZOOM_REL"},
|
|
|
|
{AEM_CONTROL_PRIVACY , "PRIVACY"},
|
|
|
|
{AEM_CONTROL_BACKLIGHT , "BACKLIGHT"},
|
|
|
|
{AEM_CONTROL_BRIGHTNESS , "BRIGHTNESS"},
|
|
|
|
{AEM_CONTROL_CONTRAST , "CONTRAST"},
|
|
|
|
{AEM_CONTROL_GAIN , "GAIN"},
|
|
|
|
{AEM_CONTROL_HUE , "HUE"},
|
|
|
|
{AEM_CONTROL_SATURATION , "SATURATION"},
|
|
|
|
{AEM_CONTROL_SHARPNESS , "SHARPNESS"},
|
|
|
|
{AEM_CONTROL_GAMMA , "GAMMA"},
|
|
|
|
{AEM_CONTROL_WHITE_BAL_TEMP , "WHITE_BAL_TEMP"},
|
|
|
|
{AEM_CONTROL_WHITE_BAL_TENP_AUTO , "WHITE_BAL_TEMP_AUTO"},
|
|
|
|
{AEM_CONTROL_WHITE_BAL_COMP , "WHITE_BAL_COMP"},
|
|
|
|
{AEM_CONTROL_WHITE_BAL_COMP_AUTO , "WHITE_BAL_COMP_AUTO"},
|
|
|
|
{AEM_CONTROL_DIGITAL_ZOOM , "DIGITAL_ZOOM"},
|
|
|
|
{0 , NULL}
|
|
|
|
};
|
|
|
|
*/
|
|
|
|
|
|
|
|
static const value_string aecp_address_type_vals [] = {
|
|
|
|
{AECP_ADDRESS_MAC , "MAC"},
|
|
|
|
{AECP_ADDRESS_IPV4 , "IPV4"},
|
|
|
|
{AECP_ADDRESS_IPV6 , "IPV6"},
|
|
|
|
{0 , NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aecp_keychain_id_type_vals [] = {
|
|
|
|
{AECP_KEYCHAIN_NONE , "NONE"},
|
|
|
|
{AECP_KEYCHAIN_MANUFACTURER , "MANUFACTURER"},
|
|
|
|
{AECP_KEYCHAIN_PRODUCT , "PRODUCT"},
|
|
|
|
{AECP_KEYCHAIN_ENTITY , "ENTITY"},
|
|
|
|
{AECP_KEYCHAIN_USER , "USER"},
|
|
|
|
{0 , NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aecp_direction_type_vals [] = {
|
|
|
|
{AECP_DIRECTION_HORIZONTAL , "HORIZONTAL"},
|
|
|
|
{AECP_DIRECTION_VERTICAL , "VERTICAL"},
|
|
|
|
{0 , NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aem_descriptor_type_vals[] = {
|
|
|
|
{AEM_DESCRIPTOR_ENTITY , "ENTITY"},
|
|
|
|
{AEM_DESCRIPTOR_CONFIGURATION , "CONFIGURATION"},
|
|
|
|
{AEM_DESCRIPTOR_AUDIO , "AUDIO_UNIT"},
|
|
|
|
{AEM_DESCRIPTOR_VIDEO , "VIDEO_UNIT"},
|
|
|
|
{AEM_DESCRIPTOR_SENSOR , "SENSOR_UNIT"},
|
|
|
|
{AEM_DESCRIPTOR_STREAM_INPUT , "STREAM_INPUT"},
|
|
|
|
{AEM_DESCRIPTOR_STREAM_OUTPUT , "STREAM_OUTPUT"},
|
|
|
|
{AEM_DESCRIPTOR_EXTERNAL_JACK_INPUT , "JACK_INPUT"},
|
|
|
|
{AEM_DESCRIPTOR_EXTERNAL_JACK_OUTPUT, "JACK_OUTPUT"},
|
|
|
|
{AEM_DESCRIPTOR_AUDIO_PORT_INPUT , "AUDIO_PORT_INPUT"},
|
|
|
|
{AEM_DESCRIPTOR_AUDIO_PORT_OUTPUT , "AUDIO_PORT_OUTPUT"},
|
|
|
|
{AEM_DESCRIPTOR_VIDEO_PORT_INPUT , "VIDEO_PORT_INPUT"},
|
|
|
|
{AEM_DESCRIPTOR_VIDEO_PORT_OUTPUT , "VIDEO_PORT_OUTPUT"},
|
|
|
|
{AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT , "EXTERNAL_PORT_INPUT"},
|
|
|
|
{AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT, "EXTERNAL_PORT_OUTPUT"},
|
|
|
|
{AEM_DESCRIPTOR_SENSOR_PORT_INPUT , "SENSOR_PORT_INPUT"},
|
|
|
|
{AEM_DESCRIPTOR_SENSOR_PORT_OUTPUT , "SENSOR_PORT_OUTPUT"},
|
|
|
|
{AEM_DESCRIPTOR_INTERNAL_PORT_INPUT , "INTERNAL_PORT_INPUT"},
|
|
|
|
{AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT, "INTERNAL_PORT_OUTPUT"},
|
|
|
|
{AEM_DESCRIPTOR_AVB_INTERFACE , "AVB_INTERFACE"},
|
|
|
|
{AEM_DESCRIPTOR_CLOCK_SOURCE , "CLOCK_SOURCE"},
|
|
|
|
{AEM_DESCRIPTOR_AUDIO_MAP , "AUDIO_MAP"},
|
|
|
|
{AEM_DESCRIPTOR_AUDIO_CLUSTER , "AUDIO_CLUSTER"},
|
|
|
|
{AEM_DESCRIPTOR_CONTROL , "CONTROL"},
|
|
|
|
{AEM_DESCRIPTOR_SIGNAL_SELECTOR , "SIGNAL_SELECTOR"},
|
|
|
|
{AEM_DESCRIPTOR_MIXER , "MIXER"},
|
|
|
|
{AEM_DESCRIPTOR_MATRIX , "MATRIX"},
|
|
|
|
{AEM_DESCRIPTOR_LOCALE , "LOCALE"},
|
|
|
|
{AEM_DESCRIPTOR_STRINGS , "STRINGS"},
|
|
|
|
{AEM_DESCRIPTOR_MATRIX_SIGNAL , "MATRIX_SIGNAL"},
|
|
|
|
{AEM_DESCRIPTOR_MEMORY_OBJECT , "MEMORY_OBJECT"},
|
|
|
|
{0 , NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aem_status_type_vals[] = {
|
2012-04-27 08:32:06 +00:00
|
|
|
{AEM_STATUS_SUCCESS , "SUCCESS"},
|
|
|
|
{AEM_STATUS_NOT_IMPLEMENTED , "NOT_IMPLEMENTED"},
|
|
|
|
{AEM_STATUS_NO_SUCH_DESCRIPTOR , "NO_SUCH_DESCRIPTOR"},
|
|
|
|
{AEM_STATUS_ENTITY_LOCKED , "ENTITY_LOCKED"},
|
|
|
|
{AEM_STATUS_ENTITY_ACQUIRED , "ENTITY_ACQUIRED"},
|
|
|
|
{AEM_STATUS_NOT_AUTHORIZED , "NOT_AUTHORIZED"},
|
|
|
|
{AEM_STATUS_INSUFFICIENT_PRIVILEGES, "INSUFFICIENT_PRIVILEGES"},
|
|
|
|
{AEM_STATUS_BAD_ARGUMENTS , "BAD_ARGUMENTS"},
|
|
|
|
{AEM_STATUS_NO_RESOURCES , "NO_RESOURCES"},
|
|
|
|
{AEM_STATUS_IN_PROGRESS , "IN_PROGRESS"},
|
2012-03-02 03:30:30 +00:00
|
|
|
{0 , NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aecp_message_type_vals[] = {
|
|
|
|
{AECP_AEM_COMMAND_MESSAGE, "AEM_COMMAND"},
|
|
|
|
{AECP_AEM_RESPONSE_MESSAGE, "AEM_RESPONSE"},
|
|
|
|
{AECP_ADDRESS_ACCESS_COMMAND_MESSAGE, "ADDRESS_ACCESS_COMMAND"},
|
|
|
|
{AECP_ADDRESS_ACCESS_RESPONSE_MESSAGE, "ADDRESS_ACCESS_RESPONSE"},
|
|
|
|
{AECP_AVC_COMMAND_MESSAGE, "AVC_COMMAND"},
|
|
|
|
{AECP_AVC_RESPONSE_MESSAGE, "AVC_RESPONSE"},
|
|
|
|
{AECP_VENDOR_UNIQUE_COMMAND_MESSAGE, "VENDOR_UNIQUE_COMMAND"},
|
|
|
|
{AECP_VENDOR_UNIQUE_RESPONSE_MESSAGE, "VENDOR_UNIQUEU_RESPONSE"},
|
|
|
|
{AECP_EXTENDED_COMMAND_MESSAGE, "EXTENDED_COMMAND"},
|
|
|
|
{AECP_EXTENDED_RESPONSE_MESSAGE, "EXTENDED_RESPONSE"},
|
|
|
|
{0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string aecp_command_type_vals[] = {
|
|
|
|
{AECP_COMMAND_LOCK_ENTITY , "LOCK_ENTIY"},
|
|
|
|
{AECP_COMMAND_READ_DESCRIPTOR , "READ_DESCRIPTOR"},
|
|
|
|
{AECP_COMMAND_WRITE_DESCRIPTOR , "WRITE_DESCRIPTOR"},
|
|
|
|
{AECP_COMMAND_ACQUIRE_ENTITY , "ACQUIRE_ENTITY"},
|
|
|
|
{AECP_COMMAND_CONTROLLER_AVAILABLE , "CONTROLLER_AVAILABLE"},
|
|
|
|
{AECP_COMMAND_SET_CLOCK_SOURCE , "SET_CLOCK_SOURCE"},
|
|
|
|
{AECP_COMMAND_GET_CLOCK_SOURCE , "GET_CLOCK_SOURCE"},
|
|
|
|
{AECP_COMMAND_SET_STREAM_FORMAT , "SET_STREAM_FORMAT"},
|
|
|
|
{AECP_COMMAND_GET_STREAM_FORMAT , "GET_STREAM_FORMAT"},
|
|
|
|
{AECP_COMMAND_SET_CONFIGURATION , "SET_CONFIGURATION"},
|
|
|
|
{AECP_COMMAND_GET_CONFIGURATION , "GET_CONFIGURATION"},
|
|
|
|
{AECP_COMMAND_SET_CONTROL_VALUE , "SET_CONTROL_VALUE"},
|
|
|
|
{AECP_COMMAND_GET_CONTROL_VALUE , "GET_CONTROL_VALUE"},
|
|
|
|
{AECP_COMMAND_SET_SIGNAL_SELECTOR , "SET_SIGNAL_SELECTOR"},
|
|
|
|
{AECP_COMMAND_GET_SIGNAL_SELECTOR , "GET_SIGNAL_SELECTOR"},
|
|
|
|
{AECP_COMMAND_SET_MIXER , "SET_MIXER"},
|
|
|
|
{AECP_COMMAND_GET_MIXER , "GET_MIXER"},
|
|
|
|
{AECP_COMMAND_SET_MATRIX , "SET_MATRIX"},
|
|
|
|
{AECP_COMMAND_GET_MATRIX , "GET_MATRIX"},
|
|
|
|
{AECP_COMMAND_START_STREAMING , "START_STREAMING"},
|
|
|
|
{AECP_COMMAND_STOP_STREAMING , "STOP_STREAMING"},
|
|
|
|
{AECP_COMMAND_SET_STREAM_INFO , "SET_STREAM_INFO"},
|
|
|
|
{AECP_COMMAND_GET_STREAM_INFO , "GET_STREAM_INFO"},
|
|
|
|
{AECP_COMMAND_SET_NAME , "SET_NAME"},
|
|
|
|
{AECP_COMMAND_GET_NAME , "GET_NAME"},
|
|
|
|
{AECP_COMMAND_SET_ASSOCIATION_ID , "SET_ASSOCIATION_ID"},
|
|
|
|
{AECP_COMMAND_GET_ASSOCIATION_ID , "GET_ASSOCIATION_ID"},
|
|
|
|
{AECP_COMMAND_AUTH_ADD_KEY , "AUTH_ADD_KEY"},
|
|
|
|
{AECP_COMMAND_AUTH_GET_KEY , "AUTH_GET_KEY"},
|
|
|
|
{AECP_COMMAND_AUTHENTICATE , "AUTHENTICATE"},
|
|
|
|
{AECP_COMMAND_GET_COUNTERS , "GET_COUNTERS"},
|
|
|
|
{AECP_COMMAND_REBOOT , "REBOOT"},
|
|
|
|
{AECP_COMMAND_SET_MEDIA_FORMAT , "SET_MEDIA_FORMAT"},
|
|
|
|
{AECP_COMMAND_GET_MEDIA_FORMAT , "GET_MEDIA_FORMAT"},
|
|
|
|
{AECP_COMMAND_REGISTER_STATE_NOTIFICATION , "REGISTER_STATE_NOTIFICATION"},
|
|
|
|
{AECP_COMMAND_DEREGISTER_STATE_NOTIFICATION , "DEREGISTER_STATE_NOTIFICATION"},
|
|
|
|
{AECP_COMMAND_REGISTER_QUERY_NOTIFICATION , "REGISTER_QUERY_NOTIFICATION"},
|
|
|
|
{AECP_COMMAND_DEREGISTER_QUERY_NOTIFICATION , "DEREGISTER_QUERY_NOTIFICATION"},
|
|
|
|
{AECP_COMMAND_IDENTIFY_NOTIFICATION , "IDENTIFY_NOTIFICATION"},
|
|
|
|
{AECP_COMMAND_STATE_CHANGE_NOTIFICATION , "STATE_CHANGE_NOTIFICATION"},
|
|
|
|
{AECP_COMMAND_INCREMENT_CONTROL_VALUE , "INCREMENT_CONTROL_VALUE"},
|
|
|
|
{AECP_COMMAND_DECREMENT_CONTROL_VALUE , "DECREMENT_CONTROL_VALUE"},
|
|
|
|
{AECP_COMMAND_START_OPERATION , "START_OPERATION"},
|
|
|
|
{AECP_COMMAND_ABORT_OPERATION , "ABORT_OPERATION"},
|
|
|
|
{AECP_COMMAND_OPERATION_STATUS , "OPERATION_STATUS"},
|
|
|
|
{AECP_COMMAND_AUTH_GET_KEY_COUNT , "AUTH_GET_KEY_COUNT"},
|
|
|
|
{AECP_COMMAND_EXPANSION , "EXPANSION_RESERVED"},
|
|
|
|
{AECP_COMMAND_GET_AS_PATH , "GET_AS_PATH"},
|
|
|
|
{AECP_COMMAND_DEAUTHENTICATE , "DEAUTHENTICATE"},
|
|
|
|
{AECP_COMMAND_AUTH_REVOKE_KEY , "AUTH_REVOKE_KEY"},
|
|
|
|
{0 , NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
static const value_string adp_message_type_vals[] = {
|
|
|
|
{ADP_ENTITY_AVAILABLE_MESSAGE, "ENTITY_AVAILABLE"},
|
|
|
|
{ADP_ENTITY_DEPARTING_MESSAGE, "ENTITY_DEPARTING"},
|
|
|
|
{ADP_ENTITY_DISCOVER_MESSAGE, "ENTITY_DISCOVER"},
|
|
|
|
{0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string acmp_message_type_vals[] = {
|
|
|
|
{ACMP_CONNECT_TX_COMMAND, "CONNECT_TX_COMMAND"},
|
|
|
|
{ACMP_CONNECT_TX_RESPONSE, "CONNECT_TX_RESPONSE"},
|
|
|
|
{ACMP_DISCONNECT_TX_COMMAND, "DISCONNECT_TX_COMMAND"},
|
|
|
|
{ACMP_DISCONNECT_TX_RESPONSE, "DISCONNECT_TX_RESPONSE"},
|
|
|
|
{ACMP_GET_TX_STATE_COMMAND, "GET_TX_STATE_COMMAND"},
|
|
|
|
{ACMP_GET_TX_STATE_RESPONSE, "GET_TX_STATE_RESPONSE"},
|
|
|
|
{ACMP_CONNECT_RX_COMMAND, "CONNECT_RX_COMMAND"},
|
|
|
|
{ACMP_CONNECT_RX_RESPONSE, "CONNECT_RX_RESPONSE"},
|
|
|
|
{ACMP_DISCONNECT_RX_COMMAND, "DISCONNECT_RX_COMMAND"},
|
|
|
|
{ACMP_DISCONNECT_RX_RESPONSE, "DISCONNECT_RX_RESPONSE"},
|
|
|
|
{ACMP_GET_RX_STATE_COMMAND, "GET_RX_STATE_COMMAND"},
|
|
|
|
{ACMP_GET_RX_STATE_RESPONSE, "GET_RX_STATE_RESPONSE"},
|
|
|
|
{ACMP_GET_TX_CONNECTION_COMMAND, "GET_TX_CONNECTION_COMMAND"},
|
|
|
|
{ACMP_GET_TX_CONNECTION_RESPONSE, "GET_TX_CONNECTION_RESPONSE"},
|
|
|
|
{0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
static const value_string acmp_status_field_vals[] = {
|
|
|
|
{ACMP_STATUS_SUCCESS, "SUCCESS"},
|
|
|
|
{ACMP_STATUS_LISTENER_UNKNOWN_ID, "LISTENER_UNKNOWN_ID"},
|
|
|
|
{ACMP_STATUS_TALKER_UNKNOWN_ID, "TALKER_UNKNOWN_ID"},
|
|
|
|
{ACMP_STATUS_TALKER_DEST_MAC_FAIL, "TALKER_DEST_MAC_FAIL"},
|
|
|
|
{ACMP_STATUS_TALKER_NO_STREAM_INDEX, "TALKER_NO_STREAM_INDEX"},
|
|
|
|
{ACMP_STATUS_TALKER_NO_BANDWIDTH, "TALKER_NO_BANDWIDTH"},
|
|
|
|
{ACMP_STATUS_TALKER_EXCLUSIVE, "TALKER_EXCLUSIVE"},
|
|
|
|
{ACMP_STATUS_LISTENER_TALKER_TIMEOUT, "LISTENER_TALKER_TIMEOUT"},
|
|
|
|
{ACMP_STATUS_LISTENER_EXCLUSIVE, "LISTENER_EXCLUSIVE"},
|
|
|
|
{ACMP_STATUS_STATE_UNAVAILABLE, "STATE_UNAVAILABLE"},
|
|
|
|
{ACMP_STATUS_NOT_CONNECTED, "NOT_CONNECTED"},
|
|
|
|
{ACMP_STATUS_NO_SUCH_CONNECTION, "NO_SUCH_CONNECTION"},
|
|
|
|
{ACMP_STATUS_COULD_NOT_SEND_MESSAGE, "COULD_NOT_SEND_MESSAGE"},
|
|
|
|
{ACMP_STATUS_LISTENER_DEFAULT_FORMAT_INVALID, "LISTENER_DEFAULT_FORMAT_INVALID"},
|
|
|
|
{ACMP_STATUS_TALKER_DEFAULT_FORMAT_INVALID, "TALKER_DEFAULT_FORMAT_INVALID"},
|
|
|
|
{ACMP_STATUS_DEFAULT_SET_DIFFERENT, "DEFAULT_SET_DIFFERENT"},
|
|
|
|
{ACMP_STATUS_NOT_SUPPORTED, "NOT_SUPPORTED"},
|
|
|
|
{0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
/**********************************************************/
|
|
|
|
/* Initialize the protocol and registered fields */
|
|
|
|
/**********************************************************/
|
|
|
|
static int proto_17221 = -1;
|
|
|
|
|
|
|
|
/* AVDECC Discovery Protocol Data Unit (ADPDU) */
|
|
|
|
static int hf_adp_message_type = -1;
|
|
|
|
static int hf_adp_valid_time = -1;
|
|
|
|
static int hf_adp_cd_length = -1;
|
|
|
|
static int hf_adp_entity_guid = -1;
|
|
|
|
static int hf_adp_vendor_id = -1;
|
|
|
|
static int hf_adp_model_id = -1;
|
|
|
|
static int hf_adp_entity_cap = -1;
|
|
|
|
static int hf_adp_talker_stream_srcs = -1;
|
|
|
|
static int hf_adp_talker_cap = -1;
|
|
|
|
static int hf_adp_listener_stream_sinks = -1;
|
|
|
|
static int hf_adp_listener_cap = -1;
|
|
|
|
static int hf_adp_controller_cap = -1;
|
|
|
|
static int hf_adp_avail_index = -1;
|
|
|
|
static int hf_adp_as_gm_id = -1;
|
|
|
|
static int hf_adp_def_aud_format = -1;
|
|
|
|
static int hf_adp_def_vid_format = -1;
|
|
|
|
static int hf_adp_assoc_id = -1;
|
|
|
|
static int hf_adp_entity_type = -1;
|
|
|
|
|
|
|
|
/* Entity Capabilties Flags */
|
|
|
|
static int hf_adp_entity_cap_avdecc_ip = -1;
|
|
|
|
static int hf_adp_entity_cap_zero_conf = -1;
|
|
|
|
static int hf_adp_entity_cap_gateway_entity = -1;
|
|
|
|
static int hf_adp_entity_cap_avdecc_control = -1;
|
|
|
|
static int hf_adp_entity_cap_legacy_avc = -1;
|
|
|
|
static int hf_adp_entity_cap_assoc_id_support = -1;
|
|
|
|
static int hf_adp_entity_cap_assoc_id_valid = -1;
|
|
|
|
|
|
|
|
/* Talker Capabilities Flags */
|
|
|
|
static int hf_adp_talk_cap_implement = -1;
|
|
|
|
static int hf_adp_talk_cap_other_src = -1;
|
|
|
|
static int hf_adp_talk_cap_control_src = -1;
|
|
|
|
static int hf_adp_talk_cap_media_clk_src = -1;
|
|
|
|
static int hf_adp_talk_cap_smpte_src = -1;
|
|
|
|
static int hf_adp_talk_cap_midi_src = -1;
|
|
|
|
static int hf_adp_talk_cap_audio_src = -1;
|
|
|
|
static int hf_adp_talk_cap_video_src = -1;
|
|
|
|
|
|
|
|
/* Listener Capabilities Flags */
|
|
|
|
static int hf_adp_list_cap_implement = -1;
|
|
|
|
static int hf_adp_list_cap_other_sink = -1;
|
|
|
|
static int hf_adp_list_cap_control_sink = -1;
|
|
|
|
static int hf_adp_list_cap_media_clk_sink = -1;
|
|
|
|
static int hf_adp_list_cap_smpte_sink = -1;
|
|
|
|
static int hf_adp_list_cap_midi_sink = -1;
|
|
|
|
static int hf_adp_list_cap_audio_sink = -1;
|
|
|
|
static int hf_adp_list_cap_video_sink = -1;
|
|
|
|
|
|
|
|
/* Controller Capabilities Flags */
|
|
|
|
static int hf_adp_cont_cap_implement = -1;
|
|
|
|
static int hf_adp_cont_cap_layer3_proxy = -1;
|
|
|
|
|
|
|
|
/* Default Audio Format */
|
|
|
|
static int hf_adp_def_aud_sample_rates = -1;
|
|
|
|
static int hf_adp_def_aud_max_chan = -1;
|
|
|
|
static int hf_adp_def_aud_saf_flag = -1;
|
|
|
|
static int hf_adp_def_aud_float_flag = -1;
|
|
|
|
static int hf_adp_def_aud_chan_formats = -1;
|
|
|
|
|
|
|
|
/* Default Audio Sample Rates */
|
|
|
|
static int hf_adp_samp_rate_44k1 = -1;
|
|
|
|
static int hf_adp_samp_rate_48k = -1;
|
|
|
|
static int hf_adp_samp_rate_88k2 = -1;
|
|
|
|
static int hf_adp_samp_rate_96k = -1;
|
|
|
|
static int hf_adp_samp_rate_176k4 = -1;
|
|
|
|
static int hf_adp_samp_rate_192k = -1;
|
|
|
|
|
|
|
|
/* Audio Channel Formats */
|
|
|
|
static int hf_adp_chan_format_mono = -1;
|
|
|
|
static int hf_adp_chan_format_2ch = -1;
|
|
|
|
static int hf_adp_chan_format_3ch = -1;
|
|
|
|
static int hf_adp_chan_format_4ch = -1;
|
|
|
|
static int hf_adp_chan_format_5ch = -1;
|
|
|
|
static int hf_adp_chan_format_6ch = -1;
|
|
|
|
static int hf_adp_chan_format_7ch = -1;
|
|
|
|
static int hf_adp_chan_format_8ch = -1;
|
|
|
|
static int hf_adp_chan_format_10ch = -1;
|
|
|
|
static int hf_adp_chan_format_12ch = -1;
|
|
|
|
static int hf_adp_chan_format_14ch = -1;
|
|
|
|
static int hf_adp_chan_format_16ch = -1;
|
|
|
|
static int hf_adp_chan_format_18ch = -1;
|
|
|
|
static int hf_adp_chan_format_20ch = -1;
|
|
|
|
static int hf_adp_chan_format_22ch = -1;
|
|
|
|
static int hf_adp_chan_format_24ch = -1;
|
|
|
|
|
|
|
|
|
|
|
|
/* ***************************************************************** */
|
|
|
|
/* AVDECC Enumeration and Control Protocol Data Unit (AECPDU) */
|
|
|
|
/* ***************************************************************** */
|
|
|
|
static int hf_aecp_address_type = -1;
|
|
|
|
static int hf_aecp_association_id = -1;
|
|
|
|
static int hf_aecp_auth_token = -1;
|
|
|
|
static int hf_aecp_backup_stream_switch = -1;
|
|
|
|
static int hf_aecp_backup_stream_switch_valid = -1;
|
|
|
|
static int hf_aecp_bad_presentation_times = -1;
|
|
|
|
static int hf_aecp_bad_presentation_times_valid = -1;
|
|
|
|
static int hf_aecp_cd_length = -1;
|
|
|
|
static int hf_aecp_clock_source_id = -1;
|
|
|
|
static int hf_aecp_command_type = -1;
|
|
|
|
static int hf_aecp_configuration = -1;
|
|
|
|
static int hf_aecp_connected_flag = -1;
|
|
|
|
static int hf_aecp_connection_flag = -1;
|
|
|
|
static int hf_aecp_continued_flag = -1;
|
|
|
|
static int hf_aecp_control_admin_flag = -1;
|
|
|
|
static int hf_aecp_control_user_l1 = -1;
|
|
|
|
static int hf_aecp_control_user_l2 = -1;
|
|
|
|
static int hf_aecp_control_user_l3 = -1;
|
|
|
|
static int hf_aecp_control_user_l4 = -1;
|
|
|
|
static int hf_aecp_controller_guid = -1;
|
|
|
|
static int hf_aecp_count = -1;
|
|
|
|
static int hf_aecp_descriptor_id = -1;
|
|
|
|
static int hf_aecp_descriptor_type = -1;
|
|
|
|
static int hf_aecp_descriptors = -1;
|
|
|
|
static int hf_aecp_dest_mac_valid_flag = -1;
|
|
|
|
static int hf_aecp_entity_specific1 = -1;
|
|
|
|
static int hf_aecp_entity_specific1_valid = -1;
|
|
|
|
static int hf_aecp_entity_specific2 = -1;
|
|
|
|
static int hf_aecp_entity_specific2_valid = -1;
|
|
|
|
static int hf_aecp_entity_specific3 = -1;
|
|
|
|
static int hf_aecp_entity_specific3_valid = -1;
|
|
|
|
static int hf_aecp_entity_specific4 = -1;
|
|
|
|
static int hf_aecp_entity_specific4_valid = -1;
|
|
|
|
static int hf_aecp_entity_specific5 = -1;
|
|
|
|
static int hf_aecp_entity_specific5_valid = -1;
|
|
|
|
static int hf_aecp_entity_specific6 = -1;
|
|
|
|
static int hf_aecp_entity_specific6_valid = -1;
|
|
|
|
static int hf_aecp_entity_specific7 = -1;
|
|
|
|
static int hf_aecp_entity_specific7_valid = -1;
|
|
|
|
static int hf_aecp_entity_specific8 = -1;
|
|
|
|
static int hf_aecp_entity_specific8_valid = -1;
|
|
|
|
static int hf_aecp_flags_32 = -1;
|
|
|
|
static int hf_aecp_gptp_gm_changed = -1;
|
|
|
|
static int hf_aecp_gptp_locked = -1;
|
|
|
|
static int hf_aecp_gptp_unlocked = -1;
|
|
|
|
static int hf_aecp_gptp_unlocked_valid = -1;
|
|
|
|
static int hf_aecp_gtpt_locked_valid = -1;
|
|
|
|
static int hf_aecp_ipv4_address = -1;
|
|
|
|
static int hf_aecp_ipv6_address = -1;
|
|
|
|
static int hf_aecp_key = -1;
|
|
|
|
static int hf_aecp_key_guid = -1;
|
|
|
|
static int hf_aecp_key_length = -1;
|
|
|
|
static int hf_aecp_key_number = -1;
|
|
|
|
static int hf_aecp_key_part = -1;
|
|
|
|
static int hf_aecp_keychain_id = -1;
|
|
|
|
static int hf_aecp_keytype = -1;
|
|
|
|
static int hf_aecp_locked_guid = -1;
|
|
|
|
static int hf_aecp_mac_address = -1;
|
|
|
|
static int hf_aecp_matrix_affected_item_count = -1;
|
|
|
|
static int hf_aecp_matrix_column = -1;
|
|
|
|
static int hf_aecp_matrix_direction = -1;
|
|
|
|
static int hf_aecp_matrix_item_offset = -1;
|
|
|
|
static int hf_aecp_matrix_region_height = -1;
|
|
|
|
static int hf_aecp_matrix_region_width = -1;
|
|
|
|
static int hf_aecp_matrix_rep = -1;
|
|
|
|
static int hf_aecp_matrix_row = -1;
|
|
|
|
static int hf_aecp_matrix_value_count = -1;
|
|
|
|
static int hf_aecp_media_clock_toggles = -1;
|
|
|
|
static int hf_aecp_media_clock_toggles_valid = -1;
|
|
|
|
static int hf_aecp_media_format = -1;
|
|
|
|
static int hf_aecp_media_locked = -1;
|
|
|
|
static int hf_aecp_media_locked_valid = -1;
|
|
|
|
static int hf_aecp_media_seq_error = -1;
|
|
|
|
static int hf_aecp_media_unlocked = -1;
|
|
|
|
static int hf_aecp_media_unlocked_valid = -1;
|
|
|
|
static int hf_aecp_mem_obj_admin_flag = -1;
|
|
|
|
static int hf_aecp_mem_obj_settings_flag = -1;
|
|
|
|
static int hf_aecp_message_type = -1;
|
|
|
|
static int hf_aecp_missed_avdecc_response = -1;
|
|
|
|
static int hf_aecp_missed_avdecc_response_valid = -1;
|
|
|
|
static int hf_aecp_msrp_acc_lat_valid_flag = -1;
|
|
|
|
static int hf_aecp_msrp_accumulated_latency = -1;
|
|
|
|
static int hf_aecp_name = -1;
|
|
|
|
static int hf_aecp_name_index = -1;
|
|
|
|
static int hf_aecp_operation_id = -1;
|
|
|
|
static int hf_aecp_operation_type = -1;
|
|
|
|
static int hf_aecp_owner_guid = -1;
|
|
|
|
static int hf_aecp_packets_interest_rx = -1;
|
|
|
|
static int hf_aecp_packets_interest_rx_valid = -1;
|
|
|
|
static int hf_aecp_packets_rx = -1;
|
|
|
|
static int hf_aecp_packets_rx_valid = -1;
|
|
|
|
static int hf_aecp_packets_tx = -1;
|
|
|
|
static int hf_aecp_packets_tx_valid = -1;
|
|
|
|
static int hf_aecp_percent_complete = -1;
|
|
|
|
static int hf_aecp_persistent_flag = -1;
|
|
|
|
static int hf_aecp_private_key_read_flag = -1;
|
|
|
|
static int hf_aecp_private_key_write_flag = -1;
|
|
|
|
static int hf_aecp_public_key_write_flag = -1;
|
|
|
|
static int hf_aecp_query_id = -1;
|
|
|
|
static int hf_aecp_query_limit = -1;
|
|
|
|
static int hf_aecp_query_period = -1;
|
|
|
|
static int hf_aecp_query_type = -1;
|
|
|
|
static int hf_aecp_refused_avdecc_command = -1;
|
|
|
|
static int hf_aecp_refused_avdecc_command_valid = -1;
|
|
|
|
static int hf_aecp_release_flag = -1;
|
|
|
|
static int hf_aecp_reserved1_valid = -1;
|
|
|
|
static int hf_aecp_reserved2_valid = -1;
|
|
|
|
static int hf_aecp_reserved_counter = -1;
|
|
|
|
static int hf_aecp_seq_num_mismatch = -1;
|
|
|
|
static int hf_aecp_seq_num_mismatch_valid = -1;
|
|
|
|
static int hf_aecp_sequence_id = -1;
|
|
|
|
static int hf_aecp_signal_id = -1;
|
|
|
|
static int hf_aecp_signal_type = -1;
|
|
|
|
static int hf_aecp_srp_latency_violations = -1;
|
|
|
|
static int hf_aecp_srp_latency_violations_valid = -1;
|
|
|
|
static int hf_aecp_srp_refused = -1;
|
|
|
|
static int hf_aecp_srp_refused_valid = -1;
|
|
|
|
static int hf_aecp_stream_format = -1;
|
|
|
|
static int hf_aecp_stream_id_valid_flag = -1;
|
|
|
|
static int hf_aecp_stream_reset = -1;
|
|
|
|
static int hf_aecp_stream_reset_valid = -1;
|
|
|
|
static int hf_aecp_talker_bw_reserved = -1;
|
|
|
|
static int hf_aecp_talker_bw_reserved_valid = -1;
|
|
|
|
static int hf_aecp_target_guid = -1;
|
|
|
|
static int hf_aecp_timestamp_uncertains = -1;
|
|
|
|
static int hf_aecp_timestamp_uncertains_valid = -1;
|
|
|
|
static int hf_aecp_timestamp_valids = -1;
|
|
|
|
static int hf_aecp_timestamp_valids_valid = -1;
|
|
|
|
static int hf_aecp_token_length = -1;
|
|
|
|
static int hf_aecp_u_flag = -1;
|
|
|
|
static int hf_aecp_unlock_flag = -1;
|
|
|
|
static int hf_aecp_unsupported_formats = -1;
|
|
|
|
static int hf_aecp_unsupported_formats_valid = -1;
|
|
|
|
static int hf_aecp_values = -1;
|
|
|
|
static int hf_aecp_values_count = -1;
|
2012-04-27 17:36:53 +00:00
|
|
|
static int hf_aecp_status_code = -1;
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* ***************************************************************** */
|
|
|
|
/* AVDECC Entity Model (AEM) */
|
|
|
|
/* ***************************************************************** */
|
|
|
|
static int hf_aem_am824_label = -1;
|
|
|
|
static int hf_aem_aspect_x = -1;
|
|
|
|
static int hf_aem_aspect_y = -1;
|
|
|
|
static int hf_aem_audio_channels = -1;
|
|
|
|
static int hf_aem_avb_interface_id = -1;
|
|
|
|
static int hf_aem_b_flag = -1;
|
|
|
|
static int hf_aem_backedup_talker_guid = -1;
|
|
|
|
static int hf_aem_backedup_talker_unique = -1;
|
|
|
|
static int hf_aem_backup_talker_guid_0 = -1;
|
|
|
|
static int hf_aem_backup_talker_guid_1 = -1;
|
|
|
|
static int hf_aem_backup_talker_guid_2 = -1;
|
|
|
|
static int hf_aem_backup_talker_unique_0 = -1;
|
|
|
|
static int hf_aem_backup_talker_unique_1 = -1;
|
|
|
|
static int hf_aem_backup_talker_unique_2 = -1;
|
|
|
|
static int hf_aem_base_audio_map = -1;
|
|
|
|
static int hf_aem_base_cluster = -1;
|
|
|
|
static int hf_aem_base_control = -1;
|
|
|
|
static int hf_aem_base_destination = -1;
|
|
|
|
static int hf_aem_base_external_input_port = -1;
|
|
|
|
static int hf_aem_base_external_output_port = -1;
|
|
|
|
static int hf_aem_base_frequency = -1;
|
|
|
|
static int hf_aem_base_internal_input_port = -1;
|
|
|
|
static int hf_aem_base_internal_output_port = -1;
|
|
|
|
static int hf_aem_base_matrix = -1;
|
|
|
|
static int hf_aem_base_mixer = -1;
|
|
|
|
static int hf_aem_base_signal_selector = -1;
|
|
|
|
static int hf_aem_base_source = -1;
|
|
|
|
static int hf_aem_base_stream_input_port = -1;
|
|
|
|
static int hf_aem_base_stream_output_port = -1;
|
|
|
|
static int hf_aem_base_strings = -1;
|
|
|
|
static int hf_aem_binary_blob = -1;
|
|
|
|
static int hf_aem_blob_size = -1;
|
|
|
|
static int hf_aem_block_latency = -1;
|
|
|
|
static int hf_aem_bpp = -1;
|
|
|
|
static int hf_aem_channel_count = -1;
|
|
|
|
static int hf_aem_channels = -1;
|
|
|
|
static int hf_aem_clock_source_flags = -1;
|
|
|
|
static int hf_aem_clock_source_id = -1;
|
|
|
|
static int hf_aem_clock_source_location_id = -1;
|
|
|
|
static int hf_aem_clock_source_location_type = -1;
|
|
|
|
static int hf_aem_clock_source_name = -1;
|
|
|
|
static int hf_aem_clock_source_name_string = -1;
|
|
|
|
static int hf_aem_clock_source_type = -1;
|
|
|
|
static int hf_aem_cluster_name = -1;
|
|
|
|
static int hf_aem_cluster_name_string = -1;
|
|
|
|
static int hf_aem_color_format = -1;
|
|
|
|
static int hf_aem_color_space = -1;
|
|
|
|
static int hf_aem_comp1 = -1;
|
|
|
|
static int hf_aem_comp2 = -1;
|
|
|
|
static int hf_aem_comp3 = -1;
|
|
|
|
static int hf_aem_comp4 = -1;
|
|
|
|
static int hf_aem_compress_mode = -1;
|
|
|
|
static int hf_aem_configuration_name = -1;
|
|
|
|
static int hf_aem_configuration_name_string = -1;
|
|
|
|
static int hf_aem_configurations_count = -1;
|
|
|
|
static int hf_aem_control_domain = -1;
|
|
|
|
static int hf_aem_control_latency = -1;
|
|
|
|
static int hf_aem_control_location_id = -1;
|
|
|
|
static int hf_aem_control_location_type = -1;
|
|
|
|
static int hf_aem_control_name = -1;
|
|
|
|
static int hf_aem_control_name_string = -1;
|
|
|
|
static int hf_aem_control_type = -1;
|
|
|
|
static int hf_aem_control_value_type = -1;
|
|
|
|
static int hf_aem_count = -1;
|
|
|
|
static int hf_aem_cs_eui64 = -1;
|
|
|
|
static int hf_aem_ctrl_double = -1;
|
|
|
|
static int hf_aem_ctrl_float = -1;
|
|
|
|
static int hf_aem_ctrl_int16 = -1;
|
|
|
|
static int hf_aem_ctrl_int32 = -1;
|
|
|
|
static int hf_aem_ctrl_int64 = -1;
|
|
|
|
static int hf_aem_ctrl_int8 = -1;
|
|
|
|
static int hf_aem_ctrl_uint16 = -1;
|
|
|
|
static int hf_aem_ctrl_uint32 = -1;
|
|
|
|
static int hf_aem_ctrl_uint64 = -1;
|
|
|
|
static int hf_aem_ctrl_uint8 = -1;
|
|
|
|
static int hf_aem_ctrl_vals = -1;
|
|
|
|
static int hf_aem_current_configuration = -1;
|
|
|
|
static int hf_aem_current_sample_rate = -1;
|
|
|
|
static int hf_aem_current_signal_id = -1;
|
|
|
|
static int hf_aem_current_signal_type = -1;
|
|
|
|
static int hf_aem_dbs = -1;
|
|
|
|
static int hf_aem_default_signal_id = -1;
|
|
|
|
static int hf_aem_default_signal_type = -1;
|
|
|
|
static int hf_aem_descriptor_counts_count = -1;
|
|
|
|
static int hf_aem_descriptor_counts_offset = -1;
|
|
|
|
static int hf_aem_div = -1;
|
|
|
|
static int hf_aem_entity_guid = -1;
|
|
|
|
static int hf_aem_entity_model_id = -1;
|
|
|
|
static int hf_aem_entity_name = -1;
|
|
|
|
static int hf_aem_fdf_evt = -1;
|
|
|
|
static int hf_aem_fdf_sfc = -1;
|
|
|
|
static int hf_aem_firmware_version = -1;
|
|
|
|
static int hf_aem_flags_async_sample_rate_conv = -1;
|
|
|
|
static int hf_aem_flags_captive = -1;
|
|
|
|
static int hf_aem_flags_class_a = -1;
|
|
|
|
static int hf_aem_flags_class_b = -1;
|
|
|
|
static int hf_aem_flags_clock_sync_source = -1;
|
|
|
|
static int hf_aem_flags_sync_sample_rate_conv = -1;
|
|
|
|
static int hf_aem_fmt = -1;
|
|
|
|
static int hf_aem_formats_count = -1;
|
|
|
|
static int hf_aem_formats_offset = -1;
|
|
|
|
static int hf_aem_frame_rate = -1;
|
|
|
|
static int hf_aem_frequency = -1;
|
|
|
|
static int hf_aem_group_name = -1;
|
|
|
|
static int hf_aem_guid = -1;
|
|
|
|
static int hf_aem_height = -1;
|
|
|
|
static int hf_aem_iidc_format = -1;
|
|
|
|
static int hf_aem_iidc_mode = -1;
|
|
|
|
static int hf_aem_iidc_rate = -1;
|
|
|
|
static int hf_aem_interface_name = -1;
|
|
|
|
static int hf_aem_interface_name_string = -1;
|
|
|
|
static int hf_aem_interlace = -1;
|
|
|
|
static int hf_aem_internal_id = -1;
|
|
|
|
static int hf_aem_jack_flags = -1;
|
|
|
|
static int hf_aem_jack_id = -1;
|
|
|
|
static int hf_aem_jack_name = -1;
|
|
|
|
static int hf_aem_jack_name_string = -1;
|
|
|
|
static int hf_aem_jack_type = -1;
|
|
|
|
static int hf_aem_label_iec_60958_cnt = -1;
|
|
|
|
static int hf_aem_label_mbla_cnt = -1;
|
|
|
|
static int hf_aem_label_midi_cnt = -1;
|
|
|
|
static int hf_aem_label_smpte_cnt = -1;
|
|
|
|
static int hf_aem_length = -1;
|
|
|
|
static int hf_aem_locale_identifier = -1;
|
|
|
|
static int hf_aem_mapping_audio_channel = -1;
|
|
|
|
static int hf_aem_mapping_stream_channel = -1;
|
|
|
|
static int hf_aem_mapping_stream_index = -1;
|
|
|
|
static int hf_aem_mappings = -1;
|
|
|
|
static int hf_aem_mappings_offset = -1;
|
|
|
|
static int hf_aem_memory_object_type = -1;
|
|
|
|
static int hf_aem_mf_height = -1;
|
|
|
|
static int hf_aem_mf_width = -1;
|
|
|
|
static int hf_aem_mfd_type = -1;
|
|
|
|
static int hf_aem_model_name_string = -1;
|
|
|
|
static int hf_aem_msrp_mapping_priority = -1;
|
|
|
|
static int hf_aem_msrp_mapping_traffic_class = -1;
|
|
|
|
static int hf_aem_msrp_mappings = -1;
|
|
|
|
static int hf_aem_msrp_mappings_count = -1;
|
|
|
|
static int hf_aem_msrp_mappings_offset = -1;
|
|
|
|
static int hf_aem_msrp_vlan_id = -1;
|
|
|
|
static int hf_aem_nb_flag = -1;
|
|
|
|
static int hf_aem_number_audio_maps = -1;
|
|
|
|
static int hf_aem_number_destinations = -1;
|
|
|
|
static int hf_aem_number_matrices = -1;
|
|
|
|
static int hf_aem_number_mixers = -1;
|
|
|
|
static int hf_aem_number_of_clusters = -1;
|
|
|
|
static int hf_aem_number_of_controls = -1;
|
|
|
|
static int hf_aem_number_of_external_input_ports = -1;
|
|
|
|
static int hf_aem_number_of_external_output_ports = -1;
|
|
|
|
static int hf_aem_number_of_formats = -1;
|
|
|
|
static int hf_aem_number_of_internal_input_ports = -1;
|
|
|
|
static int hf_aem_number_of_internal_output_ports = -1;
|
|
|
|
static int hf_aem_number_of_mappings = -1;
|
|
|
|
static int hf_aem_number_of_sources = -1;
|
|
|
|
static int hf_aem_number_of_stream_input_ports = -1;
|
|
|
|
static int hf_aem_number_of_stream_output_ports = -1;
|
|
|
|
static int hf_aem_number_of_strings = -1;
|
|
|
|
static int hf_aem_number_of_values = -1;
|
|
|
|
static int hf_aem_number_signal_selectors = -1;
|
|
|
|
static int hf_aem_object_name = -1;
|
|
|
|
static int hf_aem_object_name_string = -1;
|
|
|
|
static int hf_aem_oui24 = -1;
|
|
|
|
static int hf_aem_path_latency = -1;
|
|
|
|
static int hf_aem_port_flags = -1;
|
|
|
|
static int hf_aem_pull_field = -1;
|
|
|
|
static int hf_aem_sample_rates = -1;
|
|
|
|
static int hf_aem_sample_rates_count = -1;
|
|
|
|
static int hf_aem_sample_rates_offset = -1;
|
|
|
|
static int hf_aem_serial_number = -1;
|
|
|
|
static int hf_aem_sf = -1;
|
|
|
|
static int hf_aem_sf_version = -1;
|
|
|
|
static int hf_aem_signal_id = -1;
|
|
|
|
static int hf_aem_signal_type = -1;
|
|
|
|
static int hf_aem_signals_count = -1;
|
|
|
|
static int hf_aem_signals_offset = -1;
|
|
|
|
static int hf_aem_sources = -1;
|
|
|
|
static int hf_aem_sources_offset = -1;
|
|
|
|
static int hf_aem_start_address = -1;
|
|
|
|
static int hf_aem_stream_channels = -1;
|
|
|
|
static int hf_aem_stream_flags = -1;
|
|
|
|
static int hf_aem_stream_format = -1;
|
|
|
|
static int hf_aem_stream_formats = -1;
|
|
|
|
static int hf_aem_stream_id = -1;
|
|
|
|
static int hf_aem_stream_name = -1;
|
|
|
|
static int hf_aem_stream_name_string = -1;
|
|
|
|
static int hf_aem_string = -1;
|
|
|
|
static int hf_aem_string_ref = -1;
|
|
|
|
static int hf_aem_target_descriptor_id = -1;
|
|
|
|
static int hf_aem_target_descriptor_type = -1;
|
|
|
|
static int hf_aem_unit = -1;
|
|
|
|
static int hf_aem_unit_name = -1;
|
|
|
|
static int hf_aem_unit_name_string = -1;
|
|
|
|
static int hf_aem_unknown_descriptor = -1;
|
|
|
|
static int hf_aem_value_offset = -1;
|
|
|
|
static int hf_aem_values_offset = -1;
|
|
|
|
static int hf_aem_vendor_id = -1;
|
|
|
|
static int hf_aem_vendor_name_string = -1;
|
|
|
|
static int hf_aem_video_mode = -1;
|
|
|
|
static int hf_aem_width = -1;
|
|
|
|
|
|
|
|
/****************************************************************** */
|
|
|
|
/* AVDECC Connection Management Protocol Data Unit (ACMPDU) */
|
|
|
|
/* **************************************************************** */
|
|
|
|
static int hf_acmp_message_type = -1;
|
|
|
|
static int hf_acmp_status_field = -1;
|
|
|
|
static int hf_acmp_cd_length = -1;
|
|
|
|
static int hf_acmp_stream_id = -1;
|
|
|
|
static int hf_acmp_controller_guid = -1;
|
|
|
|
static int hf_acmp_talker_guid = -1;
|
|
|
|
static int hf_acmp_listener_guid = -1;
|
|
|
|
static int hf_acmp_talker_unique_id = -1;
|
|
|
|
static int hf_acmp_listener_unique_id = -1;
|
|
|
|
static int hf_acmp_stream_dest_mac = -1;
|
|
|
|
static int hf_acmp_connection_count = -1;
|
|
|
|
static int hf_acmp_sequence_id = -1;
|
|
|
|
static int hf_acmp_flags = -1;
|
|
|
|
static int hf_acmp_default_format = -1;
|
|
|
|
|
|
|
|
/* ACMP Flags */
|
|
|
|
static int hf_acmp_flags_class_b = -1;
|
|
|
|
static int hf_acmp_flags_fast_connect = -1;
|
|
|
|
static int hf_acmp_flags_saved_state = -1;
|
|
|
|
static int hf_acmp_flags_streaming_wait = -1;
|
|
|
|
|
|
|
|
/* Initialize the subtree pointers */
|
|
|
|
static int ett_17221 = -1;
|
|
|
|
/* ADP */
|
|
|
|
static int ett_adp_ent_cap = -1;
|
|
|
|
static int ett_adp_talk_cap = -1;
|
|
|
|
static int ett_adp_list_cap = -1;
|
|
|
|
static int ett_adp_cont_cap = -1;
|
|
|
|
static int ett_adp_aud_format = -1;
|
|
|
|
static int ett_adp_samp_rates = -1;
|
|
|
|
static int ett_adp_chan_format = -1;
|
|
|
|
/* ACMP */
|
|
|
|
static int ett_acmp_flags = -1;
|
|
|
|
/* AEM */
|
|
|
|
static int ett_aem_descriptor = -1;
|
|
|
|
static int ett_aem_desc_counts = -1;
|
|
|
|
static int ett_aem_sample_rates = -1;
|
|
|
|
static int ett_aem_stream_flags = -1;
|
|
|
|
static int ett_aem_stream_formats = -1;
|
|
|
|
static int ett_aem_jack_flags = -1;
|
|
|
|
static int ett_aem_port_flags = -1;
|
|
|
|
static int ett_aem_msrp_mappings = -1;
|
|
|
|
static int ett_aem_clock_source_flags = -1;
|
|
|
|
static int ett_aem_mappings = -1;
|
|
|
|
static int ett_aem_ctrl_vals = -1;
|
|
|
|
static int ett_aem_sources = -1;
|
|
|
|
static int ett_aem_media_format = -1;
|
|
|
|
static int ett_aem_stream_format = -1;
|
|
|
|
|
|
|
|
static int ett_aecp_descriptors = -1;
|
|
|
|
static int ett_aecp_flags_32 = -1;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
int hf;
|
|
|
|
guint16 size;
|
|
|
|
} ctrl_ref_vals;
|
|
|
|
|
|
|
|
/* convenience function */
|
|
|
|
static inline ctrl_ref_vals
|
|
|
|
get_ctrl_ref_vals(guint16 ctrl_val_type)
|
|
|
|
{
|
|
|
|
ctrl_ref_vals ret;
|
|
|
|
|
|
|
|
switch(ctrl_val_type) {
|
|
|
|
case AEM_CONTROL_LINEAR_INT8:
|
|
|
|
case AEM_CONTROL_SELECTOR_INT8:
|
|
|
|
case AEM_CONTROL_ARRAY_INT8:
|
|
|
|
ret.hf = hf_aem_ctrl_int8;
|
|
|
|
ret.size = 1;
|
|
|
|
break;
|
|
|
|
case AEM_CONTROL_LINEAR_UINT8:
|
|
|
|
case AEM_CONTROL_SELECTOR_UINT8:
|
|
|
|
case AEM_CONTROL_ARRAY_UINT8:
|
|
|
|
ret.hf = hf_aem_ctrl_uint8;
|
|
|
|
ret.size = 1;
|
|
|
|
break;
|
|
|
|
case AEM_CONTROL_LINEAR_INT16:
|
|
|
|
case AEM_CONTROL_SELECTOR_INT16:
|
|
|
|
case AEM_CONTROL_ARRAY_INT16:
|
|
|
|
ret.hf = hf_aem_ctrl_int16;
|
|
|
|
ret.size = 2;
|
|
|
|
break;
|
|
|
|
case AEM_CONTROL_LINEAR_UINT16:
|
|
|
|
case AEM_CONTROL_SELECTOR_UINT16:
|
|
|
|
case AEM_CONTROL_ARRAY_UINT16:
|
|
|
|
ret.hf = hf_aem_ctrl_uint16;
|
|
|
|
ret.size = 2;
|
|
|
|
break;
|
|
|
|
case AEM_CONTROL_LINEAR_INT32:
|
|
|
|
case AEM_CONTROL_SELECTOR_INT32:
|
|
|
|
case AEM_CONTROL_ARRAY_INT32:
|
|
|
|
ret.hf = hf_aem_ctrl_int32;
|
|
|
|
ret.size = 4;
|
|
|
|
break;
|
|
|
|
case AEM_CONTROL_LINEAR_UINT32:
|
|
|
|
case AEM_CONTROL_SELECTOR_UINT32:
|
|
|
|
case AEM_CONTROL_ARRAY_UINT32:
|
|
|
|
ret.hf = hf_aem_ctrl_uint32;
|
|
|
|
ret.size = 4;
|
|
|
|
break;
|
|
|
|
case AEM_CONTROL_LINEAR_FLOAT:
|
|
|
|
case AEM_CONTROL_SELECTOR_FLOAT:
|
|
|
|
case AEM_CONTROL_ARRAY_FLOAT:
|
|
|
|
ret.hf = hf_aem_ctrl_float;
|
|
|
|
ret.size = 4;
|
|
|
|
break;
|
|
|
|
case AEM_CONTROL_LINEAR_INT64:
|
|
|
|
case AEM_CONTROL_SELECTOR_INT64:
|
|
|
|
case AEM_CONTROL_ARRAY_INT64:
|
|
|
|
ret.hf = hf_aem_ctrl_int64;
|
|
|
|
ret.size = 8;
|
|
|
|
break;
|
|
|
|
case AEM_CONTROL_LINEAR_UINT64:
|
|
|
|
case AEM_CONTROL_SELECTOR_UINT64:
|
|
|
|
case AEM_CONTROL_ARRAY_UINT64:
|
|
|
|
ret.hf = hf_aem_ctrl_uint64;
|
|
|
|
ret.size = 8;
|
|
|
|
break;
|
|
|
|
case AEM_CONTROL_LINEAR_DOUBLE:
|
|
|
|
case AEM_CONTROL_SELECTOR_DOUBLE:
|
|
|
|
case AEM_CONTROL_ARRAY_DOUBLE:
|
|
|
|
ret.hf = hf_aem_ctrl_double;
|
|
|
|
ret.size = 8;
|
|
|
|
break;
|
|
|
|
case AEM_CONTROL_BODE_PLOT:
|
|
|
|
ret.hf = -1;
|
|
|
|
ret.size = 12;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
ret.size = 0;
|
|
|
|
ret.hf = -1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
dissect_17221_stream_format(tvbuff_t *tvb, proto_tree *tree)
|
|
|
|
{
|
|
|
|
proto_item *stream_tree;
|
|
|
|
proto_item *stream_ti;
|
|
|
|
guint8 version;
|
|
|
|
guint16 subtype;
|
|
|
|
guint8 sf;
|
|
|
|
guint8 fmt;
|
|
|
|
guint8 fdf_evt;
|
|
|
|
|
|
|
|
/* subtree */
|
|
|
|
stream_ti = proto_tree_add_item(tree, hf_aem_stream_format, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
0, 8, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
stream_tree = proto_item_add_subtree(stream_ti, ett_aem_stream_format);
|
|
|
|
|
|
|
|
/* get version */
|
|
|
|
version = tvb_get_guint8(tvb, 0) & 0xC0;
|
|
|
|
|
|
|
|
/* add the version to the tree */
|
|
|
|
proto_tree_add_item(stream_tree, hf_aem_sf_version, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SF_VERSION, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
if (version == 0) { /* stream format version 0 */
|
|
|
|
|
|
|
|
subtype = tvb_get_ntohs(tvb, 0) & AEM_MASK_SF_SUBTYPE;
|
|
|
|
|
|
|
|
proto_tree_add_item(stream_tree, hf_aem_sf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SF_SUBTYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
switch(subtype) {
|
|
|
|
case SF61883_IIDC_SUBTYPE:
|
|
|
|
/* get sf */
|
|
|
|
sf = tvb_get_guint8(tvb, 1) & 0x40;
|
|
|
|
proto_tree_add_item(stream_tree, hf_aem_sf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SF, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
if (sf == 0) { /* IIDC Stream Format */
|
|
|
|
proto_tree_add_item(stream_tree, hf_aem_iidc_format, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_IIDC_FORMAT, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(stream_tree, hf_aem_iidc_mode, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_IIDC_MODE, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(stream_tree, hf_aem_iidc_rate, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_IIDC_RATE, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
} else { /* 61883 Stream Format */
|
|
|
|
proto_tree_add_item(stream_tree, hf_aem_fmt, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_FMT, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
fmt = tvb_get_guint8(tvb, AEM_OFFSET_FMT) & 0x3F;
|
|
|
|
if (fmt == 0x40) { /* 61883-6 Stream Format */
|
|
|
|
proto_tree_add_item(stream_tree, hf_aem_fdf_evt, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_FDF_EVT, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(stream_tree, hf_aem_fdf_sfc, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_FDF_SFC, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(stream_tree, hf_aem_dbs, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_DBS, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
fdf_evt = tvb_get_guint8(tvb, AEM_OFFSET_FDF_EVT) & AEM_MASK_FDF_EVT;
|
|
|
|
|
|
|
|
proto_tree_add_item(stream_tree, hf_aem_b_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_B, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(stream_tree, hf_aem_nb_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NB, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
if (fdf_evt == 0x00) { /* 61883-6 AM824 Stream Format */
|
|
|
|
proto_tree_add_item(stream_tree, hf_aem_label_iec_60958_cnt, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LABEL_IEC_60958_CNT, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(stream_tree, hf_aem_label_mbla_cnt, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LABEL_MBLA_CNT, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(stream_tree, hf_aem_label_midi_cnt, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LABEL_MIDI_CNT, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(stream_tree, hf_aem_label_smpte_cnt, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LABEL_SMPTE_CNT, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
} else if (fmt == 0x01) { /* 61883-8 Stream Format */
|
|
|
|
proto_tree_add_item(stream_tree, hf_aem_video_mode, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_VIDEO_MODE, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(stream_tree, hf_aem_compress_mode, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_COMPRESS_MODE, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(stream_tree, hf_aem_color_space, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_COLOR_SPACE, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case MMA_SUBTYPE:
|
|
|
|
/* Defined by the MMA */
|
|
|
|
break;
|
|
|
|
case EXPERIMENTAL_SUBTYPE:
|
|
|
|
/* used for experimental formats for development purposes only */
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
/* unknown or unimplemented subtype */
|
|
|
|
/* possibly a weather baloon, or swamp gas */
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
dissect_17221_media_format(tvbuff_t *tvb, proto_tree *tree)
|
|
|
|
{
|
|
|
|
proto_item *media_tree;
|
|
|
|
proto_item *media_ti;
|
|
|
|
guint32 oui24;
|
|
|
|
guint8 mfd_type;
|
|
|
|
|
|
|
|
/* grab the oui24 and mfd_type */
|
|
|
|
oui24 = tvb_get_ntoh24(tvb, 0);
|
|
|
|
mfd_type = tvb_get_guint8(tvb, 3);
|
|
|
|
|
|
|
|
/* subtree */
|
|
|
|
media_ti = proto_tree_add_item(tree, hf_aecp_media_format, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
0, 16, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
media_tree = proto_item_add_subtree(media_ti, ett_aem_media_format);
|
|
|
|
|
|
|
|
/* standard media formats */
|
|
|
|
if (oui24 == OUI24_STANDARD_MEDIA_FORMAT) {
|
|
|
|
/* Standard Media Format Fields */
|
|
|
|
proto_tree_add_item(media_tree, hf_aem_oui24, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
0, 3, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_mfd_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_MFD_TYPE, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* break down the standard media format types */
|
|
|
|
switch(mfd_type) {
|
|
|
|
case MFD_TYPE_VIDEO:
|
|
|
|
proto_tree_add_item(media_tree, hf_aem_div, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_DIV, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_interlace, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_INTERLACE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_channels, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CHANNELS, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_color_format, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_COLOR_FORMAT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_bpp, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BPP, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_aspect_x, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ASPECT_X, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_aspect_y, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ASPECT_Y, 1 ,ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_frame_rate, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_FRAME_RATE, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_comp1, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_COMP1, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_comp2, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_COMP2, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_comp3, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_COMP3, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_comp4, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_COMP4, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_mf_width, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SVMF_WIDTH, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(media_tree, hf_aem_mf_height, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SVMF_HEIGHT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case MFD_TYPE_TRANSPORT_STRM:
|
|
|
|
break;
|
|
|
|
case MFD_TYPE_MIDI:
|
|
|
|
break;
|
|
|
|
case MFD_TYPE_TIME_CODE:
|
|
|
|
break;
|
|
|
|
case MFD_TYPE_CONTROL_PROTO:
|
|
|
|
proto_tree_add_item(media_tree, hf_aem_cs_eui64, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CS_EUI64, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
/* unsupported MFD type */
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} else { /* vendor specific media formats */
|
|
|
|
|
|
|
|
/* these are not the media formats you are looking for */
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* TODO following updates in Draft 18 and the pending Draft 19 this section will require major overhaul */
|
|
|
|
static void
|
|
|
|
dissect_17221_ctrl_val(tvbuff_t *tvb, proto_tree *tree, guint16 num_ctrl_vals, guint16 ctrl_val_type,
|
|
|
|
guint16 ctrl_offset)
|
|
|
|
{
|
|
|
|
proto_item *ctrl_item;
|
|
|
|
proto_item *ctrl_subtree;
|
|
|
|
int i;
|
|
|
|
guint32 bin_blob_size;
|
|
|
|
gint string_length;
|
|
|
|
ctrl_ref_vals ref;
|
|
|
|
|
|
|
|
/* set up control values tree */
|
|
|
|
ctrl_item = proto_tree_add_item(tree, hf_aem_ctrl_vals, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
0, 0, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_subtree = proto_item_add_subtree(ctrl_item, ett_aem_ctrl_vals);
|
|
|
|
|
|
|
|
/* ctrl_val_type's are dissected below in this if/else block */
|
|
|
|
/* for now only a few value types are in use, if I have time to come
|
|
|
|
back to it I will add more fields to this but for now when viewing
|
|
|
|
control_values you will need a copy of the spec handy to figure
|
|
|
|
out what you are looking at, the get_ctrl_ref_vals function above
|
|
|
|
will ideally be eliminated and this section will be a lot cleaner
|
|
|
|
if/when that happens */
|
|
|
|
|
|
|
|
ref = get_ctrl_ref_vals(ctrl_val_type);
|
|
|
|
|
|
|
|
/* LINEAR TYPES */
|
|
|
|
if (ctrl_val_type < 0xa) {
|
|
|
|
for(i = 0; i < num_ctrl_vals; ++i) {
|
|
|
|
proto_tree_add_item(ctrl_subtree, ref.hf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, ref.size, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += ref.size;
|
|
|
|
proto_tree_add_item(ctrl_subtree, ref.hf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, ref.size, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += ref.size;
|
|
|
|
proto_tree_add_item(ctrl_subtree, ref.hf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, ref.size, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += ref.size;
|
|
|
|
proto_tree_add_item(ctrl_subtree, ref.hf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, ref.size, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += ref.size;
|
|
|
|
proto_tree_add_item(ctrl_subtree, ref.hf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, ref.size, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += ref.size;
|
|
|
|
proto_tree_add_item(ctrl_subtree, hf_aem_unit, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += 2;
|
|
|
|
proto_tree_add_item(ctrl_subtree, hf_aem_string_ref, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* SELECTOR TYPES */
|
|
|
|
} else if (ctrl_val_type > 0x9 && ctrl_val_type < 0x14) {
|
|
|
|
proto_tree_add_item(ctrl_subtree, ref.hf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, ref.size, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += 2;
|
|
|
|
proto_tree_add_item(ctrl_subtree, ref.hf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, ref.size, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += 2;
|
|
|
|
for(i = 0; i < num_ctrl_vals; ++i) {
|
|
|
|
proto_tree_add_item(ctrl_subtree, ref.hf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, ref.size, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += 2;
|
|
|
|
}
|
|
|
|
proto_tree_add_item(ctrl_subtree, hf_aem_unit, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* UTF8 STRING TYPE */
|
|
|
|
} else if (ctrl_val_type == 0x14) {
|
|
|
|
tvb_get_const_stringz(tvb, ctrl_offset, &string_length);
|
|
|
|
proto_tree_add_item(ctrl_subtree, hf_aem_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, string_length, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* BODE_PLOT TYPE */
|
|
|
|
} else if (ctrl_val_type == 0x15) {
|
|
|
|
for(i = 0; i < 12 + (num_ctrl_vals * 3); ++i) {
|
|
|
|
proto_tree_add_item(ctrl_subtree, hf_aem_ctrl_float, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ARRAY TYPES */
|
|
|
|
} else if (ctrl_val_type > 0x15 && ctrl_val_type < 0x1f) {
|
|
|
|
/* VENDOR CONTROL TYPE */
|
|
|
|
} else if (ctrl_val_type == 0xfffe) {
|
|
|
|
proto_tree_add_item(ctrl_subtree, hf_aem_guid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += 8;
|
|
|
|
bin_blob_size = tvb_get_ntohl(tvb, ctrl_offset);
|
|
|
|
proto_tree_add_item(ctrl_subtree, hf_aem_blob_size, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ctrl_offset += 4;
|
|
|
|
proto_tree_add_item(ctrl_subtree, hf_aem_binary_blob, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
ctrl_offset, bin_blob_size, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* dissect descriptors from the AVDECC Entity Model (AEM) */
|
|
|
|
/* this dissector is not registered */
|
|
|
|
static void
|
|
|
|
dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
|
|
|
|
{
|
|
|
|
guint16 desc_type;
|
|
|
|
guint16 ctrl_val_type;
|
|
|
|
guint16 num_ctrl_vals;
|
|
|
|
tvbuff_t *next_tvb;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
/* Mr. Subtree and Mr. Counter will be used as the loop limit and
|
|
|
|
* subtree object for arrays in the descriptors, rather than declaring
|
|
|
|
* a separate variable for each possible case in the switch which uses
|
|
|
|
* arrays.
|
|
|
|
*/
|
|
|
|
proto_item *mr_subtree;
|
|
|
|
proto_item *mr_item;
|
|
|
|
guint32 mr_offset;
|
|
|
|
guint16 mr_counter;
|
|
|
|
|
2012-03-23 01:18:06 +00:00
|
|
|
gfloat frequency;
|
2012-03-02 03:30:30 +00:00
|
|
|
gint freq_mult;
|
|
|
|
gint base_freq;
|
|
|
|
|
|
|
|
proto_item *aem_tree;
|
|
|
|
/* used in creation of descriptor subtree */
|
|
|
|
proto_item *desc_ti;
|
|
|
|
|
|
|
|
|
|
|
|
/* get the type of this descriptor */
|
|
|
|
desc_type = tvb_get_ntohs(tvb, 0);
|
|
|
|
|
|
|
|
/* Load the descriptor type and id fields, add subtree */
|
|
|
|
desc_ti = proto_tree_add_item(tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
aem_tree = proto_item_add_subtree(desc_ti, ett_aem_descriptor);
|
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_DESCRIPTOR_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* Dissect descriptors based on type. Where possible multiple cases *
|
|
|
|
* will fall through to the same code */
|
|
|
|
switch(desc_type) {
|
|
|
|
case AEM_DESCRIPTOR_ENTITY:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_entity_guid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_GUID, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_vendor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_VENDOR_ID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_entity_model_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_MODEL_ID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_adp_entity_cap, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_entity_cap_avdecc_ip, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_entity_cap_zero_conf, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_entity_cap_gateway_entity, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_entity_cap_avdecc_control, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_entity_cap_legacy_avc, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_entity_cap_assoc_id_support, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_entity_cap_assoc_id_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_adp_talker_stream_srcs, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_TALKER_STREAM_SOURCES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_adp_talker_cap, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_talk_cap_implement, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_talk_cap_other_src, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_talk_cap_control_src, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_talk_cap_media_clk_src, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_talk_cap_smpte_src, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_talk_cap_midi_src, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_talk_cap_audio_src, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_talk_cap_video_src, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_adp_listener_stream_sinks, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LISTENER_STREAM_SINKS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_adp_listener_cap, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_list_cap_implement, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_list_cap_other_sink, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_list_cap_control_sink, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_list_cap_media_clk_sink, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_list_cap_smpte_sink, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_list_cap_midi_sink, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_list_cap_audio_sink, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_list_cap_video_sink, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_adp_controller_cap, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROLLER_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_cont_cap_implement, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROLLER_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_cont_cap_layer3_proxy, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROLLER_CAPABILITIES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_adp_avail_index, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_AVAILABLE_INDEX, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_as_gm_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_AS_GRANDMASTER_ID, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aecp_association_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ASSOCIATION_ID, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_entity_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_TYPE, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_entity_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_ENTITY_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_vendor_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_VENDOR_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_model_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_MODEL_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_firmware_version, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_FIRMWARE_VERSION, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_group_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_GROUP_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_serial_number, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SERIAL_NUMBER, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_configurations_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONFIGURATIONS_COUNT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_current_configuration, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CURRENT_CONFIGURATION, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_CONFIGURATION:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_configuration_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONFIGURATION_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_configuration_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONFIGURATION_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_descriptor_counts_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_DESCRIPTOR_COUNTS_COUNT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* set up subtree, counter, and offset for sample rates array */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_descriptor_counts_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_DESCRIPTOR_COUNTS_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_DESCRIPTOR_COUNTS_COUNT);
|
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_desc_counts);
|
|
|
|
mr_offset = AEM_OFFSET_DESCRIPTOR_COUNTS;
|
|
|
|
|
|
|
|
for(i = 0; i < mr_counter; ++i)
|
|
|
|
{
|
2012-03-02 05:10:02 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aecp_descriptor_type, tvb, mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
2012-03-02 05:10:02 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_count, tvb, mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_AUDIO:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_stream_input_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_stream_input_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_STREAM_INPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_stream_output_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_stream_output_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_STREAM_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_external_input_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_external_input_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_EXTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_external_output_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_external_output_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_EXTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_internal_input_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_internal_input_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_INTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_internal_output_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_internal_output_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_INTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_clock_source_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CLOCK_SOURCE_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_controls, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_CONTROLS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_control, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_CONTROL, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_unit_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_UNIT_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_unit_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_UNIT_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_signal_selectors, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_signal_selector, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_mixers, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_UNIT_OFFSET_NUMBER_MIXERS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_mixer, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_UNIT_OFFSET_BASE_MIXER, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_matrices, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_UNIT_OFFSET_NUMBER_MATRICES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_matrix, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_UNIT_OFFSET_BASE_MATRIX, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_current_sample_rate, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_UNIT_OFFSET_CURRENT_SAMPLE_RATE, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_sample_rates_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_sample_rates_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* set up subtree, counter, and offset for sample rates array */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_sample_rates, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
0, 0, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_counter = tvb_get_ntohs(tvb, AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT);
|
2012-04-13 20:22:31 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sample_rates);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset = AUDIO_UNIT_OFFSET_SAMPLE_RATES;
|
2012-03-23 01:18:06 +00:00
|
|
|
proto_item_set_len(mr_item, 4 * mr_counter);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* loop to get the array values */
|
|
|
|
for(i = 0; i < mr_counter; ++i) {
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_pull_field, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_base_frequency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
base_freq = tvb_get_ntohl(tvb, mr_offset);
|
|
|
|
freq_mult = base_freq;
|
|
|
|
|
|
|
|
freq_mult &= 0xe0000000;
|
|
|
|
freq_mult = freq_mult >> 29;
|
|
|
|
base_freq &= 0x1fffffff;
|
|
|
|
/* replace this with something not horrible */
|
|
|
|
frequency = freq_mult == 0 ? 1 :
|
2012-03-23 01:58:46 +00:00
|
|
|
freq_mult == 1 ? 1 / (gfloat)1.001 :
|
|
|
|
freq_mult == 2 ? (gfloat)1.001 :
|
2012-03-02 03:30:30 +00:00
|
|
|
freq_mult == 3 ? 24 / 25 :
|
|
|
|
freq_mult == 4 ? 54 / 24 : 0;
|
|
|
|
|
|
|
|
frequency *= base_freq;
|
2012-03-23 01:18:06 +00:00
|
|
|
proto_tree_add_float(mr_subtree, hf_aem_frequency, tvb, mr_offset, 4, frequency);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
mr_offset += 4;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_VIDEO:
|
|
|
|
case AEM_DESCRIPTOR_SENSOR:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_stream_input_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_stream_input_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_STREAM_INPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_stream_output_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_stream_output_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_STREAM_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_external_input_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_external_input_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_EXTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_external_output_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_external_output_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_EXTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_internal_input_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_internal_input_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_INTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_internal_output_ports, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_internal_output_port, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_INTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_clock_source_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CLOCK_SOURCE_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_controls, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_CONTROLS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_control, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_CONTROL, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_unit_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_UNIT_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_unit_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_UNIT_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_signal_selectors, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
VIDEO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_signal_selector, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
VIDEO_UNIT_OFFSET_BASE_SIGNAL_SELECTOR, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_mixers, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
VIDEO_UNIT_OFFSET_NUMBER_MIXERS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_mixer, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
VIDEO_UNIT_OFFSET_BASE_MIXER, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_matrices, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
VIDEO_UNIT_OFFSET_NUMBER_MATRICES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_matrix, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
VIDEO_UNIT_OFFSET_BASE_MATRIX, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_STREAM_INPUT:
|
|
|
|
case AEM_DESCRIPTOR_STREAM_OUTPUT:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_stream_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_STREAM_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_stream_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_STREAM_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* set up a flags subtree */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_stream_flags, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_stream_flags);
|
|
|
|
/* add flags to new subtree */
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_clock_sync_source, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_class_a, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_class_b, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* done adding flags, continue with fields */
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_stream_channels, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_STREAM_CHANNELS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_clock_source_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CLOCK_SOURCE_ID_STREAM, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* stream format dissection */
|
|
|
|
next_tvb = tvb_new_subset(tvb, AEM_OFFSET_CURRENT_FORMAT, 8, 8);
|
|
|
|
dissect_17221_stream_format(next_tvb, aem_tree);
|
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_formats_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_FORMATS_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_formats, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_FORMATS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_backup_talker_guid_0, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BACKUP_TALKER_GUID_0, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_backup_talker_unique_0, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BACKUP_TALKER_UNIQUE_0, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_backup_talker_guid_1, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BACKUP_TALKER_GUID_1, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_backup_talker_unique_1, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BACKUP_TALKER_UNIQUE_1, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_backup_talker_guid_2, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BACKUP_TALKER_GUID_2, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_backup_talker_unique_2, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BACKUP_TALKER_UNIQUE_2, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_backedup_talker_guid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BACKEDUP_TALKER_GUID, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_backedup_talker_unique, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BACKEDUP_TALKER_UNIQUE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_avb_interface_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_AVB_INTERFACE_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* set up subtree, counter, and offset for formats array */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_stream_formats, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
0, 0, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_stream_formats);
|
|
|
|
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_FORMATS);
|
|
|
|
mr_offset = AEM_OFFSET_FORMATS;
|
2012-03-23 01:18:06 +00:00
|
|
|
proto_item_set_len(mr_item, mr_counter * 8);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
for(i = 0; i < mr_counter; ++i) {
|
|
|
|
next_tvb = tvb_new_subset(tvb, mr_offset, 8, 8);
|
2012-03-02 20:17:36 +00:00
|
|
|
dissect_17221_stream_format(next_tvb, mr_subtree);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 8;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_EXTERNAL_JACK_INPUT:
|
|
|
|
case AEM_DESCRIPTOR_EXTERNAL_JACK_OUTPUT:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_jack_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_JACK_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_jack_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_JACK_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* set up jack flags subtree */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_jack_flags, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_JACK_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_jack_flags);
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_captive, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_JACK_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_clock_sync_source, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_JACK_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end jack flags subtree */
|
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_jack_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_JACK_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_AUDIO_PORT_INPUT:
|
|
|
|
case AEM_DESCRIPTOR_AUDIO_PORT_OUTPUT:
|
|
|
|
/* set up port_flags subtree */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_port_flags, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_port_flags);
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_clock_sync_source, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_async_sample_rate_conv, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_sync_sample_rate_conv, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end port_flags subtree */
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_audio_channels, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_AUDIO_CHANNELS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_clusters, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_CLUSTERS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_cluster, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_CLUSTER, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_audio_map, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_PORT_OFFSET_BASE_AUDIO_MAP, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_audio_maps, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_PORT_OFFSET_NUMBER_AUDIO_MAPS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_VIDEO_PORT_INPUT:
|
|
|
|
case AEM_DESCRIPTOR_VIDEO_PORT_OUTPUT:
|
|
|
|
/* set up port_flags subtree */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_port_flags, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_port_flags);
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_clock_sync_source, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_async_sample_rate_conv, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_sync_sample_rate_conv, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end port_flags subtree */
|
|
|
|
|
|
|
|
/* media format subdissection */
|
|
|
|
next_tvb = tvb_new_subset(tvb, 6, 16, 16);
|
|
|
|
dissect_17221_media_format(next_tvb, aem_tree);
|
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCE_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCE_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_stream_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_STREAM_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_formats_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_FORMATS_OFFSET_VID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_formats_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_FORMATS_COUNT_VID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
VIDEO_PORT_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* load formats array */
|
|
|
|
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_FORMATS_COUNT_VID);
|
|
|
|
mr_offset = VIDEO_PORT_OFFSET_FORMATS;
|
|
|
|
for(i = 0; i < mr_counter; ++i) {
|
|
|
|
next_tvb = tvb_new_subset(tvb, mr_offset, 16, 16);
|
|
|
|
dissect_17221_media_format(next_tvb, aem_tree);
|
|
|
|
mr_offset += 16;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT:
|
|
|
|
case AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT:
|
|
|
|
/* set up port_flags subtree */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_port_flags, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_port_flags);
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_clock_sync_source, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_async_sample_rate_conv, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_sync_sample_rate_conv, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end port_flags subtree */
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCE_TYPE_EXT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCE_ID_EXT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_jack_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
EXTERNAL_PORT_OFFSET_JACK_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
EXTERNAL_PORT_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_SENSOR_PORT_INPUT:
|
|
|
|
case AEM_DESCRIPTOR_SENSOR_PORT_OUTPUT:
|
|
|
|
/* set up port_flags subtree */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_port_flags, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_port_flags);
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_clock_sync_source, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_async_sample_rate_conv, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_sync_sample_rate_conv, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end port_flags subtree */
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCE_TYPE_EXT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCE_ID_EXT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_stream_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_STREAM_ID_SEN, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
SENSOR_PORT_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_INTERNAL_PORT_INPUT:
|
|
|
|
case AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT:
|
|
|
|
/* set up port_flags subtree */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_port_flags, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_port_flags);
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_clock_sync_source, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_async_sample_rate_conv, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_flags_sync_sample_rate_conv, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end port_flags subtree */
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCE_TYPE_EXT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCE_ID_EXT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_internal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_INTERNAL_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
INTERNAL_PORT_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_AVB_INTERFACE:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aecp_mac_address, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_MAC_ADDRESS, 6, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_adp_as_gm_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_AS_GRANDMASTER_ID_AVB, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_msrp_mappings_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_MSRP_MAPPINGS_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_msrp_mappings_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_MSRP_MAPPINGS_COUNT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_interface_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AVB_INTERFACE_OFFSET_INTERFACE_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_interface_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AVB_INTERFACE_OFFSET_INTERFACE_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* set up subtree for mappings array */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_msrp_mappings, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AVB_INTERFACE_MSRP_MAPPINGS, 0, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_msrp_mappings);
|
|
|
|
mr_offset = AVB_INTERFACE_MSRP_MAPPINGS;
|
|
|
|
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_MSRP_MAPPINGS_COUNT);
|
|
|
|
|
|
|
|
for(i = 0; i < mr_counter; ++i) {
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_msrp_mapping_traffic_class, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
++mr_offset;
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_msrp_mapping_priority, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
++mr_offset;
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_msrp_vlan_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_CLOCK_SOURCE:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_clock_source_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CLOCK_SOURCE_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_clock_source_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CLOCK_SOURCE_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* set up clock_source_flags subtree */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_clock_source_flags, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CLOCK_SOURCE_FLAGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_clock_source_flags);
|
|
|
|
/* all flags reserved */
|
|
|
|
/* end clock_source_flags subtree */
|
2012-03-02 20:17:36 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_clock_source_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CLOCK_SOURCE_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 20:17:36 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aecp_clock_source_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CLOCK_SOURCE_ID_CLK, 8, ENC_BIG_ENDIAN);
|
2012-03-02 20:17:36 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_clock_source_location_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CLOCK_SOURCE_LOCATION_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 20:17:36 +00:00
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_clock_source_location_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CLOCK_SOURCE_LOCATION_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_AUDIO_MAP:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_mappings_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_MAPPINGS_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_mappings, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_MAPPINGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* prepare mappings subtree */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_mappings, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
0, 0, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_mappings);
|
|
|
|
mr_offset = AEM_OFFSET_MAPPINGS;
|
|
|
|
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_MAPPINGS);
|
2012-03-23 01:18:06 +00:00
|
|
|
proto_item_set_len(mr_item, mr_counter * 6);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
for(i = 0; i < mr_counter; ++i) {
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_mapping_stream_index, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_mapping_stream_channel, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_mapping_audio_channel, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_AUDIO_CLUSTER:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_channel_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_CLUSTER_OFFSET_CHANNEL_COUNT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_path_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_CLUSTER_OFFSET_PATH_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_am824_label, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_CLUSTER_OFFSET_AM824_LABEL, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_cluster_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_CLUSTER_OFFSET_CLUSTER_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_cluster_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_CLUSTER_OFFSET_CLUSTER_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_CLUSTER_OFFSET_SIGNAL_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_CLUSTER_OFFSET_SIGNAL_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AUDIO_CLUSTER_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_CONTROL:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_TYPE, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_location_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_LOCATION_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_location_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_LOCATION_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_value_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_VALUE_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_DOMAIN, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_values_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_VALUES_OFFSET_CTRL, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_values, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_VALUES_CTRL, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCE_TYPE_CTRL, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCE_ID_CTRL, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
CONTROL_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
CONTROL_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
ctrl_val_type = tvb_get_ntohs(tvb, AEM_OFFSET_CONTROL_VALUE_TYPE);
|
|
|
|
num_ctrl_vals = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_VALUES_CTRL);
|
|
|
|
dissect_17221_ctrl_val(tvb, aem_tree, num_ctrl_vals, ctrl_val_type,
|
|
|
|
CONTROL_OFFSET_VALUE_DETAILS);
|
|
|
|
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_SIGNAL_SELECTOR:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_location_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_LOCATION_TYPE_SIGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_location_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_LOCATION_ID_SIGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_DOMAIN_SIGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_NAME_SIGS, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_NAME_STRING_SIGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_sources_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCES_OFFSET_SIGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_sources, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_SOURCES_SIGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_current_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CURRENT_SOURCE_TYPE_SIGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_current_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CURRENT_SOURCE_ID_SIGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_default_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_DEFAULT_SOURCE_TYPE_SIGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_default_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_DEFAULT_SOURCE_ID_SIGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* set up sources subtree */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_sources, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
0, 0, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sources);
|
|
|
|
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_SOURCES_SIGS);
|
|
|
|
mr_offset = SIGNAL_SELECTOR_OFFSET_SOURCES;
|
2012-03-23 01:18:06 +00:00
|
|
|
proto_item_set_len(mr_item, mr_counter * 4);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
for(i = 0; i < mr_counter; ++i) {
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_MIXER:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_location_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_LOCATION_TYPE_MXR, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_location_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_LOCATION_ID_MXR, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_value_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_VALUE_TYPE_MXR, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_DOMAIN_MXR, 2 ,ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_NAME_MXR, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_NAME_STRING_MXR, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_sources_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_SOURCES_OFFSET_MXR, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_sources, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_SOURCES_MXR, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_value_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_VALUE_OFFSET_MXR, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MIXER_OFFSET_BLOCK_LATENCY, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
|
2012-03-23 01:18:06 +00:00
|
|
|
MIXER_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* set up subtree for sources */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_sources, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
0, 0, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sources);
|
|
|
|
mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_SOURCES_MXR);
|
|
|
|
mr_offset = MIXER_OFFSET_SOURCES;
|
2012-03-23 01:18:06 +00:00
|
|
|
proto_item_set_len(mr_item, mr_counter * 4);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
for(i = 0; i < mr_counter; ++i) {
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* end sources subtree */
|
|
|
|
|
|
|
|
ctrl_val_type = tvb_get_ntohs(tvb, AEM_OFFSET_CONTROL_VALUE_TYPE_MXR);
|
|
|
|
num_ctrl_vals = 1;
|
|
|
|
dissect_17221_ctrl_val(tvb, aem_tree, num_ctrl_vals, ctrl_val_type,
|
|
|
|
MIXER_OFFSET_SOURCES + (tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_SOURCES_MXR) * 4));
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_MATRIX:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_TYPE_MTRX, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_location_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_LOCATION_TYPE_MTRX, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_location_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_LOCATION_ID_MTRX, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_value_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_VALUE_TYPE_MTRX, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_DOMAIN_MTRX, 2 ,ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_NAME_MTRX, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_CONTROL_NAME_STRING_MTRX, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_width, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_WIDTH_MTRX, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_height, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_HEIGHT_MTRX, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_values_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_VALUES_OFFSET_MTRX, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_values, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_VALUES_MTRX, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MATRIX_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MATRIX_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_sources, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MATRIX_OFFSET_NUMBER_SOURCES, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_source, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MATRIX_OFFSET_BASE_SOURCE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_destinations, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MATRIX_OFFSET_NUMBER_DESTINATIONS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_destination, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MATRIX_OFFSET_BASE_DESTINATION, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
ctrl_val_type = tvb_get_ntohs(tvb, AEM_OFFSET_CONTROL_VALUE_TYPE_MTRX);
|
|
|
|
num_ctrl_vals = tvb_get_ntohs(tvb, AEM_OFFSET_NUMBER_OF_VALUES_MTRX);
|
|
|
|
dissect_17221_ctrl_val(tvb, aem_tree, num_ctrl_vals, ctrl_val_type,
|
|
|
|
MATRIX_OFFSET_VALUE_DETAILS);
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_LOCALE:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_locale_identifier, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_LOCALE_IDENTIFIER, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_number_of_strings, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_NUMBER_OF_STRINGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_base_strings, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AEM_OFFSET_BASE_STRINGS, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_STRINGS:
|
|
|
|
mr_offset = AEM_OFFSET_STRING0;
|
|
|
|
for(i = 0; i < 7; ++i) {
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 20:17:36 +00:00
|
|
|
mr_offset += 64;
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_MATRIX_SIGNAL:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signals_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_signals_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* set up subtree for signals */
|
|
|
|
mr_item = proto_tree_add_item(aem_tree, hf_aem_sources, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
0, 0, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sources);
|
|
|
|
mr_counter = tvb_get_ntohs(tvb, MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT);
|
|
|
|
mr_offset = MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET;
|
2012-03-23 01:18:06 +00:00
|
|
|
proto_item_set_len(mr_item, mr_counter * 4);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
for(i = 0; i < mr_counter; ++i) {
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aem_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AEM_DESCRIPTOR_MEMORY_OBJECT:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_memory_object_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MEMORY_OBJECT_OFFSET_MEMORY_OBJECT_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_target_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_target_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MEMORY_OBJECT_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_object_name_string, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MEMORY_OBJECT_OFFSET_OBJECT_NAME_STRING, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_start_address, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MEMORY_OBJECT_OFFSET_START_ADDRESS, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aem_tree, hf_aem_length, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
MEMORY_OBJECT_OFFSET_LENGTH, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
proto_tree_add_item(aem_tree, hf_aem_unknown_descriptor, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
4, tvb_length(tvb) - 4, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* dissect enumeration and control packets */
|
|
|
|
static void
|
|
|
|
dissect_17221_aecp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aecp_tree)
|
|
|
|
{
|
|
|
|
guint16 c_type;
|
|
|
|
guint16 addr_type;
|
|
|
|
#if 0
|
|
|
|
guint16 ctrl_data_len;
|
|
|
|
guint16 mess_status;
|
|
|
|
#endif
|
|
|
|
guint16 mess_type;
|
|
|
|
guint32 mr_offset;
|
|
|
|
guint16 mr_counter;
|
|
|
|
proto_item *mr_subtree;
|
|
|
|
proto_item *mr_item;
|
|
|
|
int i;
|
|
|
|
/* next tvb for use in subdissection */
|
|
|
|
tvbuff_t *next_tvb;
|
|
|
|
proto_tree *flags_tree;
|
|
|
|
proto_item *flags_ti;
|
|
|
|
|
|
|
|
|
|
|
|
/* AEM Common Format Fields */
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_message_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-23 01:18:06 +00:00
|
|
|
|
2012-04-27 17:36:53 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_status_code, tvb,
|
|
|
|
AECP_STATUS_CODE_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_cd_length, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_CD_LENGTH_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-23 01:18:06 +00:00
|
|
|
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_target_guid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_TARGET_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_controller_guid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_CONTROLLER_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_sequence_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_SEQUENCE_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_u_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_U_FLAG_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_command_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_COMMAND_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* get the command type for detailed dissection */
|
|
|
|
c_type = tvb_get_ntohs(tvb, AECP_COMMAND_TYPE_OFFSET) & AECP_COMMAND_TYPE_MASK;
|
|
|
|
|
|
|
|
/* get the control data length field - number of octets following target_guid */
|
|
|
|
#if 0
|
|
|
|
ctrl_data_len = tvb_get_ntohs(tvb, AECP_CD_LENGTH_OFFSET) & AECP_CD_LENGTH_MASK;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* get the message type */
|
|
|
|
mess_type = tvb_get_ntohs(tvb, 0) & ACMP_MSG_TYPE_MASK;
|
|
|
|
|
|
|
|
/* get the status */
|
|
|
|
#if 0
|
|
|
|
mess_status = tvb_get_ntohs(tvb, 2) & 0xF800;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* break dissection down by command type */
|
|
|
|
/* fields are added in the order they are listed by 1722.1 */
|
|
|
|
switch(c_type) {
|
|
|
|
case AECP_COMMAND_LOCK_ENTITY:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_unlock_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_locked_guid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_LOCKED_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_READ_DESCRIPTOR:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_configuration, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_CONFIGURATION_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
if (mess_type == AECP_AEM_COMMAND_MESSAGE)
|
|
|
|
{
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET_28, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET_30, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2012-03-06 17:24:21 +00:00
|
|
|
next_tvb = tvb_new_subset_remaining(tvb, 28);
|
2012-03-02 03:30:30 +00:00
|
|
|
dissect_17221_aem(next_tvb, pinfo, aecp_tree);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_WRITE_DESCRIPTOR:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_configuration, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_CONFIGURATION_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* on command descriptor is value to write
|
|
|
|
* on response descriptor is command value if successful
|
|
|
|
* or old value if unsuccessful */
|
2012-03-06 17:24:21 +00:00
|
|
|
next_tvb = tvb_new_subset_remaining(tvb, 28);
|
2012-03-02 03:30:30 +00:00
|
|
|
dissect_17221_aem(next_tvb, pinfo, aecp_tree);
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_ACQUIRE_ENTITY:
|
|
|
|
/* set up the flags subtree */
|
|
|
|
flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_ACQUIRE_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
|
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_persistent_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_ACQUIRE_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_release_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_ACQUIRE_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end flags subtree */
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_owner_guid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_ACQUIRE_ENTITY_OWNER_GUID, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_SET_CLOCK_SOURCE:
|
|
|
|
case AECP_COMMAND_GET_CLOCK_SOURCE:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aem_clock_source_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_CLOCK_SOURCE_CLOCK_SOURCE_ID, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_SET_STREAM_FORMAT:
|
|
|
|
case AECP_COMMAND_GET_STREAM_FORMAT:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
next_tvb = tvb_new_subset(tvb, AECP_STREAM_FORMAT_OFFSET, 8, 8);
|
|
|
|
dissect_17221_stream_format(next_tvb, aecp_tree);
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_SET_CONFIGURATION:
|
|
|
|
case AECP_COMMAND_GET_CONFIGURATION:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_configuration,
|
2012-03-02 05:10:02 +00:00
|
|
|
tvb, AECP_CONFIGURATION_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_SET_CONTROL_VALUE:
|
|
|
|
case AECP_COMMAND_GET_CONTROL_VALUE:
|
|
|
|
case AECP_COMMAND_SET_MIXER:
|
|
|
|
case AECP_COMMAND_GET_MIXER:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_SET_SIGNAL_SELECTOR:
|
|
|
|
case AECP_COMMAND_GET_SIGNAL_SELECTOR:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_signal_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_SOURCE_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_signal_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_SOURCE_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_SET_MATRIX:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_column, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_COLUMN_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_row, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_ROW_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_region_width, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_REGION_WIDTH_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_region_height, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_REGION_HEIGHT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_rep, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_REP_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_direction, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_DIRECTION_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_value_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_VALUE_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_item_offset, tvb,
|
2012-03-23 01:18:06 +00:00
|
|
|
AECP_MATRIX_ITEM_OFFSET_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_affected_item_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_AFFECTED_ITEM_COUNT_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_GET_MATRIX:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_column, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_COLUMN_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_row, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_ROW_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_region_width, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_REGION_WIDTH_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_region_height, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_REGION_HEIGHT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_direction, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_DIRECTION_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_value_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_VALUE_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_matrix_item_offset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MATRIX_ITEM_OFFSET_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* values */
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_START_STREAMING:
|
|
|
|
case AECP_COMMAND_STOP_STREAMING:
|
|
|
|
case AECP_COMMAND_REBOOT:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_SET_STREAM_INFO:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* set up the flags subtree */
|
|
|
|
flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
|
|
|
|
proto_tree_add_item(flags_tree, hf_acmp_flags_class_b, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_acmp_flags_fast_connect, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_acmp_flags_saved_state, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_acmp_flags_streaming_wait, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_msrp_acc_lat_valid_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end flags subtree */
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_msrp_accumulated_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_SET_MSRP_ACC_LAT_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_GET_STREAM_INFO:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
if (mess_type == AECP_AEM_RESPONSE_MESSAGE) { /* if response */
|
|
|
|
proto_tree_add_item(aecp_tree, hf_acmp_flags_class_b, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_acmp_flags_fast_connect, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_acmp_flags_saved_state, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_acmp_flags_streaming_wait, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_connected_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_stream_id_valid_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_msrp_acc_lat_valid_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_dest_mac_valid_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_stream_format, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_STREAM_INFO_STREAM_FORMAT, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_acmp_stream_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_STREAM_INFO_STREAM_ID, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_msrp_accumulated_latency, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MSRP_ACC_LAT_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_acmp_stream_dest_mac, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DEST_MAC_OFFSET, 6, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aem_clock_source_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_STREAM_CLOCK_SOURCE_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_SET_NAME:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_name_index, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_NAME_INDEX_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_NAME_OFFSET, 64, ENC_ASCII|ENC_NA);
|
2012-03-21 01:27:22 +00:00
|
|
|
break;
|
2012-03-02 03:30:30 +00:00
|
|
|
case AECP_COMMAND_GET_NAME:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_name_index, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_NAME_INDEX_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_name, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_NAME_OFFSET, 64, ENC_ASCII|ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_SET_ASSOCIATION_ID:
|
|
|
|
case AECP_COMMAND_GET_ASSOCIATION_ID:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_association_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_ASSOCIATION_ID_OFFSET, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_AUTH_ADD_KEY:
|
|
|
|
case AECP_COMMAND_AUTH_GET_KEY:
|
|
|
|
case AECP_COMMAND_AUTH_GET_KEY_COUNT:
|
|
|
|
case AECP_COMMAND_AUTH_REVOKE_KEY:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_keychain_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_KEYCHAIN_ID_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_keytype, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEYTYPE, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_key_number, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_KEY_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_continued_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_CONTINUED, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_key_part, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PART, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_key_length, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_LENGTH, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* set up key permissions flag subtree */
|
|
|
|
flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_private_key_read_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_private_key_write_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_public_key_write_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_connection_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_control_admin_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_mem_obj_admin_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_mem_obj_settings_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_control_user_l4, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_control_user_l3, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_control_user_l2, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_control_user_l1, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end key permissions flag subtree */
|
|
|
|
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_key_guid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTH_ADD_KEY_KEY_GUID, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
mr_counter = tvb_get_ntohs(tvb, AECP_OFFSET_AUTH_ADD_KEY_LENGTH) & AECP_KEY_LENGTH_MASK;
|
|
|
|
mr_offset = AECP_OFFSET_AUTH_ADD_KEY_KEY;
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_key, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, mr_counter, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_AUTHENTICATE:
|
|
|
|
case AECP_COMMAND_DEAUTHENTICATE:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_token_length, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* set up key permissions flag subtree */
|
|
|
|
flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_private_key_read_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_private_key_write_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_public_key_write_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_connection_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_control_admin_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_mem_obj_admin_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_mem_obj_settings_flag, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_control_user_l4, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_control_user_l3, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_control_user_l2, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_control_user_l1, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end key permissions flag subtree */
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_key_guid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_AUTHENTICATE_KEY_GUID, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
mr_counter = tvb_get_ntohs(tvb, AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH)
|
|
|
|
& AECP_TOKEN_LENGTH_MASK;
|
|
|
|
mr_offset = AECP_OFFSET_AUTHENTICATE_AUTH_TOKEN;
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_auth_token, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, mr_counter, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_GET_COUNTERS:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* begin counters_valid flags field */
|
|
|
|
flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_gptp_unlocked_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_gtpt_locked_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_media_unlocked_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_media_locked_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_stream_reset_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_srp_refused_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_backup_stream_switch_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_missed_avdecc_response_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_refused_avdecc_command_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_seq_num_mismatch_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_media_clock_toggles_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_timestamp_uncertains_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_timestamp_valids_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_unsupported_formats_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_bad_presentation_times_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_srp_latency_violations_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_packets_tx_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_packets_rx_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_packets_interest_rx_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_talker_bw_reserved_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_reserved1_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_reserved2_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_entity_specific1_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_entity_specific2_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_entity_specific3_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_entity_specific4_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_entity_specific5_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_entity_specific6_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_entity_specific7_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_aecp_entity_specific8_valid, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* end counters_valid flags field */
|
|
|
|
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_gptp_gm_changed, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_GPTP_GM_CHANGED, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_gptp_unlocked, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_GPTP_UNLOCKED, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_gptp_locked, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_GPTP_LOCKED, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_media_unlocked, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_MEDIA_UNLOCKED, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_media_locked, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_MEDIA_LOCKED, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_media_seq_error, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_MEDIA_SEQ_ERROR, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_stream_reset, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_STREAM_RESET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_srp_refused, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_SRP_REFUSED, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_backup_stream_switch, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_BACKUP_STREAM_SWITCH, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_missed_avdecc_response, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_MISSED_AVDECC_RESPONSE, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_refused_avdecc_command, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_REFUSED_AVDECC_COMMAND, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_seq_num_mismatch, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_SEQ_NUM_MISMATCH, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_media_clock_toggles, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_MEDIA_CLOCK_TOGGLES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_timestamp_uncertains, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_TIMESTAMP_UNCERTAINS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_timestamp_valids, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_TIMESTAMP_VALIDS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_unsupported_formats, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_UNSUPPORTED_FORMATS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_bad_presentation_times, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_BAD_PRESENTATION_TIMES, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_srp_latency_violations, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_SRP_LATENCY_VIOLATIONS, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_packets_tx, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_PACKETS_TX, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_packets_rx, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_PACKETS_RX, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_packets_interest_rx, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_PACKETS_OF_INTEREST_RX, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_talker_bw_reserved, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_TALKER_BW_RESERVED, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_reserved_counter, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_RESERVED1, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_reserved_counter, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_RESERVED2, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_entity_specific1, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_1, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_entity_specific2, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_2, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_entity_specific3, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_3, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_entity_specific4, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_4, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_entity_specific5, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_5, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_entity_specific6, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_6, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_entity_specific7, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_7, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_entity_specific8, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_8, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_SET_MEDIA_FORMAT:
|
|
|
|
case AECP_COMMAND_GET_MEDIA_FORMAT:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_media_format, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_MEDIA_FORMAT_OFFSET, 16, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
next_tvb = tvb_new_subset(tvb, AECP_OFFSET_SETMF_MEDIA_FMT, 16, 16);
|
|
|
|
dissect_17221_media_format(next_tvb, aecp_tree);
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_REGISTER_STATE_NOTIFICATION:
|
|
|
|
if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_address_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_ADDRESS_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
addr_type = tvb_get_ntohs(tvb, AECP_ADDRESS_TYPE_OFFSET);
|
|
|
|
if (addr_type == AECP_ADDRESS_MAC) {
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_mac_address, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_ADDRESS_OFFSET, 6, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
} else if (addr_type == AECP_ADDRESS_IPV4) {
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_ipv4_address, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_ADDRESS_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
} else if (addr_type == AECP_ADDRESS_IPV6) {
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_ipv6_address, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_ADDRESS_OFFSET, 8, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_REGISTER_QUERY_NOTIFICATION:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_query_period, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_QUERY_PERIOD_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_query_limit, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_QUERY_LIMIT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_query_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_QUERY_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_query_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_QUERY_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_QUERY_DESC_T_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_QUERY_DESC_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* TODO - add query specific fields */
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_DEREGISTER_QUERY_NOTIFICATION:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_query_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DEREG_QUERY_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_IDENTIFY_NOTIFICATION:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_STATE_CHANGE_NOTIFICATION:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
mr_counter = tvb_get_ntohs(tvb, AECP_COUNT_OFFSET);
|
|
|
|
mr_offset = AECP_DESCRIPTORS_OFFSET_DQN;
|
|
|
|
mr_item = proto_tree_add_item(aecp_tree, hf_aecp_descriptors, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, mr_counter * 4, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_subtree = proto_item_add_subtree(mr_item, ett_aecp_descriptors);
|
|
|
|
|
|
|
|
for(i = 0; i < mr_counter; ++i) {
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
proto_tree_add_item(mr_subtree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
mr_offset, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_offset += 2;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_INCREMENT_CONTROL_VALUE:
|
|
|
|
case AECP_COMMAND_DECREMENT_CONTROL_VALUE:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
if (mess_type == AECP_AEM_COMMAND_MESSAGE) {
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_values_count, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_VALUES_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
mr_counter = tvb_get_ntohs(tvb, AECP_VALUES_COUNT_OFFSET);
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_values, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_VALUES_OFFSET, mr_counter, ENC_NA);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_START_OPERATION:
|
|
|
|
case AECP_COMMAND_ABORT_OPERATION:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_operation_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OPERATION_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_operation_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OPERATION_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
/* TODO - add values support when operation types are defined */
|
|
|
|
break;
|
|
|
|
case AECP_COMMAND_OPERATION_STATUS:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_operation_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_OPERATION_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_percent_complete, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_PERCENT_COMPLETE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
break;
|
|
|
|
case AECP_COMMAND_GET_AS_PATH:
|
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
|
2012-03-02 05:10:02 +00:00
|
|
|
AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
|
|
|
|
/* TODO - how big is path sequence? */
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
/* * * * AEM COMMON FORMAT PACKETS * * * */
|
|
|
|
case AECP_COMMAND_CONTROLLER_AVAILABLE:
|
|
|
|
case AECP_COMMAND_DEREGISTER_STATE_NOTIFICATION:
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
/* the command type is not one of the valid spec values */
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
dissect_17221_adp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *adp_tree)
|
|
|
|
{
|
|
|
|
proto_item *ent_cap_ti;
|
|
|
|
proto_item *talk_cap_ti;
|
|
|
|
proto_item *list_cap_ti;
|
|
|
|
proto_item *cont_cap_ti;
|
|
|
|
proto_item *aud_format_ti;
|
|
|
|
proto_item *samp_rates_ti;
|
|
|
|
proto_item *chan_format_ti;
|
|
|
|
|
|
|
|
proto_tree *ent_cap_flags_tree;
|
|
|
|
proto_tree *talk_cap_flags_tree;
|
|
|
|
proto_tree *list_cap_flags_tree;
|
|
|
|
proto_tree *cont_cap_flags_tree;
|
|
|
|
proto_tree *aud_format_tree;
|
|
|
|
proto_tree *samp_rates_tree;
|
|
|
|
proto_tree *chan_format_tree;
|
|
|
|
|
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
proto_tree_add_item(adp_tree, hf_adp_message_type, tvb, ADP_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(adp_tree, hf_adp_valid_time, tvb, ADP_VALID_TIME_OFFSET, 1, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(adp_tree, hf_adp_cd_length, tvb, ADP_CD_LENGTH_OFFSET, 1, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(adp_tree, hf_adp_entity_guid, tvb, ADP_ENTITY_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(adp_tree, hf_adp_vendor_id, tvb, ADP_VENDOR_ID_OFFSET, 4, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(adp_tree, hf_adp_model_id, tvb, ADP_MODEL_ID_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
/* Subtree for entity_capabilities field */
|
2012-03-02 05:10:02 +00:00
|
|
|
ent_cap_ti = proto_tree_add_item(adp_tree, hf_adp_entity_cap, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
ent_cap_flags_tree = proto_item_add_subtree(ent_cap_ti, ett_adp_ent_cap);
|
|
|
|
|
|
|
|
proto_tree_add_item(ent_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_entity_cap_avdecc_ip, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(ent_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_entity_cap_zero_conf, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(ent_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_entity_cap_gateway_entity, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(ent_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_entity_cap_avdecc_control, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(ent_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_entity_cap_legacy_avc, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(ent_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_entity_cap_assoc_id_support, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(ent_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_entity_cap_assoc_id_valid, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
proto_tree_add_item(adp_tree, hf_adp_talker_stream_srcs, tvb, ADP_TALKER_STREAM_SRCS_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
talk_cap_ti = proto_tree_add_item(adp_tree, hf_adp_talker_cap, tvb, ADP_TALKER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
talk_cap_flags_tree = proto_item_add_subtree(talk_cap_ti, ett_adp_talk_cap);
|
|
|
|
|
|
|
|
proto_tree_add_item(talk_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_talk_cap_implement, tvb, ADP_TALKER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(talk_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_talk_cap_other_src, tvb, ADP_TALKER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(talk_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_talk_cap_control_src, tvb, ADP_TALKER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(talk_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_talk_cap_media_clk_src, tvb, ADP_TALKER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(talk_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_talk_cap_smpte_src, tvb, ADP_TALKER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(talk_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_talk_cap_midi_src, tvb, ADP_TALKER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(talk_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_talk_cap_audio_src, tvb, ADP_TALKER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(talk_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_talk_cap_video_src, tvb, ADP_TALKER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(adp_tree, hf_adp_listener_stream_sinks,
|
2012-03-02 05:10:02 +00:00
|
|
|
tvb, ADP_LISTENER_STREAM_SINKS_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
list_cap_ti = proto_tree_add_item(adp_tree, hf_adp_listener_cap, tvb, ADP_LISTENER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
list_cap_flags_tree = proto_item_add_subtree(list_cap_ti, ett_adp_list_cap);
|
|
|
|
|
|
|
|
proto_tree_add_item(list_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_list_cap_implement, tvb, ADP_LISTENER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(list_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_list_cap_other_sink, tvb, ADP_LISTENER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(list_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_list_cap_control_sink, tvb, ADP_LISTENER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(list_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_list_cap_media_clk_sink, tvb, ADP_LISTENER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(list_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_list_cap_smpte_sink, tvb, ADP_LISTENER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(list_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_list_cap_midi_sink, tvb, ADP_LISTENER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(list_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_list_cap_audio_sink, tvb, ADP_LISTENER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(list_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_list_cap_video_sink, tvb, ADP_LISTENER_CAP_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
cont_cap_ti = proto_tree_add_item(adp_tree, hf_adp_controller_cap, tvb, ADP_CONTROLLER_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
cont_cap_flags_tree = proto_item_add_subtree(cont_cap_ti, ett_adp_cont_cap);
|
|
|
|
|
|
|
|
proto_tree_add_item(cont_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_cont_cap_implement, tvb, ADP_CONTROLLER_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(cont_cap_flags_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_cont_cap_layer3_proxy, tvb, ADP_CONTROLLER_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
proto_tree_add_item(adp_tree, hf_adp_avail_index, tvb, ADP_AVAIL_INDEX_OFFSET, 4, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(adp_tree, hf_adp_as_gm_id, tvb, ADP_AS_GM_ID_OFFSET, 8, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
aud_format_ti = proto_tree_add_item(adp_tree, hf_adp_def_aud_format, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
aud_format_tree = proto_item_add_subtree(aud_format_ti, ett_adp_aud_format);
|
|
|
|
|
|
|
|
samp_rates_ti = proto_tree_add_item(aud_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_def_aud_sample_rates, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
samp_rates_tree = proto_item_add_subtree(samp_rates_ti, ett_adp_samp_rates);
|
|
|
|
|
|
|
|
proto_tree_add_item(samp_rates_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_samp_rate_44k1, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(samp_rates_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_samp_rate_48k, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(samp_rates_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_samp_rate_88k2, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(samp_rates_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_samp_rate_96k, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(samp_rates_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_samp_rate_176k4, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(samp_rates_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_samp_rate_192k, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
proto_tree_add_item(aud_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_def_aud_max_chan, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aud_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_def_aud_saf_flag, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(aud_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_def_aud_float_flag, tvb, ADP_DEF_AUDIO_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
|
|
|
chan_format_ti = proto_tree_add_item(aud_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_def_aud_chan_formats, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
chan_format_tree = proto_item_add_subtree(chan_format_ti, ett_adp_chan_format);
|
|
|
|
|
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_mono, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_2ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_3ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_4ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_5ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_6ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_7ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_8ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_10ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_12ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_14ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_16ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_18ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_20ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_22ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
proto_tree_add_item(chan_format_tree,
|
2012-03-02 05:10:02 +00:00
|
|
|
hf_adp_chan_format_24ch, tvb, ADP_CHAN_FORMAT_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
proto_tree_add_item(adp_tree, hf_adp_def_vid_format, tvb, ADP_DEF_VIDEO_FORMAT_OFFSET, 4, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(adp_tree, hf_adp_assoc_id, tvb, ADP_ASSOC_ID_OFFSET, 8, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(adp_tree, hf_adp_entity_type, tvb, ADP_ENTITY_TYPE_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
dissect_17221_acmp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *acmp_tree)
|
|
|
|
{
|
|
|
|
proto_item *flags_ti;
|
|
|
|
proto_tree *flags_tree;
|
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_message_type, tvb, ACMP_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_status_field, tvb, ACMP_STATUS_FIELD_OFFSET, 1, ENC_BIG_ENDIAN);
|
2012-03-23 01:18:06 +00:00
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_cd_length, tvb, ACMP_CD_LENGTH_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 05:10:02 +00:00
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_stream_id, tvb, ACMP_STREAM_ID_OFFSET, 8, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_controller_guid, tvb, ACMP_CONTROLLER_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_talker_guid, tvb, ACMP_TALKER_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_listener_guid, tvb, ACMP_LISTENER_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_talker_unique_id, tvb, ACMP_TALKER_UNIQUE_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_listener_unique_id, tvb, ACMP_LISTENER_UNIQUE_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_stream_dest_mac, tvb, ACMP_DEST_MAC_OFFSET, 6, ENC_NA);
|
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_connection_count, tvb, ACMP_CONNECTION_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_sequence_id, tvb, ACMP_SEQUENCE_ID_OFFSET, 2, ENC_BIG_ENDIAN);
|
|
|
|
|
|
|
|
flags_ti = proto_tree_add_item(acmp_tree, hf_acmp_flags, tvb, ACMP_FLAGS_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
|
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
proto_tree_add_item(flags_tree, hf_acmp_flags_class_b, tvb, ACMP_FLAGS_OFFSET, 2, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(flags_tree, hf_acmp_flags_fast_connect, tvb, ACMP_FLAGS_OFFSET, 2, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(flags_tree, hf_acmp_flags_saved_state, tvb, ACMP_FLAGS_OFFSET, 2, ENC_BIG_ENDIAN);
|
|
|
|
proto_tree_add_item(flags_tree, hf_acmp_flags_streaming_wait, tvb, ACMP_FLAGS_OFFSET, 2, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
proto_tree_add_item(acmp_tree, hf_acmp_default_format, tvb, ACMP_DEFAULT_FORMAT_OFFSET, 4, ENC_BIG_ENDIAN);
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
dissect_17221(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|
|
|
{
|
|
|
|
guint8 subtype = 0;
|
|
|
|
proto_item *ieee17221_item;
|
|
|
|
proto_tree *ieee17221_tree;
|
|
|
|
subtype = tvb_get_guint8(tvb, 0);
|
|
|
|
subtype &= 0x7F;
|
|
|
|
|
|
|
|
/* fprintf(stderr, "subtype: %d\n", subtype); */
|
|
|
|
|
|
|
|
/* Make entries in Protocol column and Info column on summary display */
|
|
|
|
col_set_str(pinfo->cinfo, COL_PROTOCOL, "IEEE1722-1");
|
|
|
|
|
|
|
|
ieee17221_item = proto_tree_add_item(tree, proto_17221, tvb, 0, -1, ENC_NA);
|
|
|
|
ieee17221_tree = proto_item_add_subtree(ieee17221_item, ett_17221);
|
|
|
|
|
|
|
|
switch (subtype)
|
|
|
|
{
|
|
|
|
case 0x7A:
|
|
|
|
{
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "AVDECC Discovery Protocol");
|
|
|
|
if (tree)
|
|
|
|
dissect_17221_adp(tvb, pinfo, ieee17221_tree);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 0x7B:
|
|
|
|
{
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "AVDECC Enumeration and Control Protocol");
|
|
|
|
if (tree)
|
|
|
|
dissect_17221_aecp(tvb, pinfo, ieee17221_tree);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 0x7C:
|
|
|
|
{
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "AVDECC Connection Management Protocol");
|
|
|
|
if (tree)
|
|
|
|
dissect_17221_acmp(tvb, pinfo, ieee17221_tree);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
/* Shouldn't get here */
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "1722.1 Unknown");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Register the protocol with Wireshark */
|
2012-03-02 05:10:02 +00:00
|
|
|
void
|
|
|
|
proto_register_17221(void)
|
2012-03-02 03:30:30 +00:00
|
|
|
{
|
|
|
|
static hf_register_info hf[] = {
|
|
|
|
{ &hf_adp_message_type,
|
|
|
|
{ "Message Type", "ieee17221.message_type",
|
|
|
|
FT_UINT8, BASE_DEC, VALS(adp_message_type_vals), ADP_MSG_TYPE_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_valid_time,
|
|
|
|
{ "Valid Time", "ieee17221.valid_time",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, ADP_VALID_TIME_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_cd_length,
|
|
|
|
{ "Control Data Length", "ieee17221.control_data_length",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, ADP_CD_LENGTH_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_entity_guid,
|
|
|
|
{ "Entity GUID", "ieee17221.entity_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_vendor_id,
|
|
|
|
{ "Vendor ID", "ieee17221.vendor_id",
|
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_model_id,
|
|
|
|
{ "Model ID", "ieee17221.model_id",
|
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_entity_cap,
|
|
|
|
{ "Entity Capabilities", "ieee17221.entity_capabilities",
|
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* Entity Capability Flags Begin */
|
|
|
|
{ &hf_adp_entity_cap_avdecc_ip,
|
|
|
|
{ "AVDECC_IP", "ieee17221.entity_capabilities.avdecc_ip",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 32, NULL, ADP_AVDECC_IP_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_entity_cap_zero_conf,
|
|
|
|
{ "ZERO_CONF", "ieee17221.entity_capabilities.zero_conf",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 32, NULL, ADP_ZERO_CONF_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_entity_cap_gateway_entity,
|
|
|
|
{ "GATEWAY_ENTITY", "ieee17221.entity_capabilities.gateway_entity",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 32, NULL, ADP_GATEWAY_ENTITY_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_entity_cap_avdecc_control,
|
|
|
|
{ "AVDECC_CONTROL", "ieee17221.entity_capabilities.avdecc_control",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 32, NULL, ADP_AVDECC_CONTROL_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_entity_cap_legacy_avc,
|
|
|
|
{ "LEGACY_AVC", "ieee17221.entity_capabilities.legacy_avc",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 32, NULL, ADP_LEGACY_AVC_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_entity_cap_assoc_id_support,
|
|
|
|
{ "ASSOCIATION_ID_SUPPORTED", "ieee17221.entity_capabilities.association_id_supported",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 32, NULL, ADP_ASSOC_ID_SUPPORT_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_entity_cap_assoc_id_valid,
|
|
|
|
{ "ASSOCIATION_ID_VALID", "ieee17221.entity_capabilities.association_id_valid",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 32, NULL, ADP_ASSOC_ID_VALID_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
/* Entity Capability Flags End */
|
|
|
|
{ &hf_adp_talker_stream_srcs,
|
|
|
|
{ "Talker Stream Sources", "ieee17221.talker_stream_sources",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_talker_cap,
|
|
|
|
{ "Talker Capabilities", "ieee17221.talker_capabilities",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* Talker Capability Flags Begin */
|
|
|
|
{ &hf_adp_talk_cap_implement,
|
|
|
|
{ "IMPLEMENTED", "ieee17221.talker_capabilities.implemented",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_TALK_IMPLEMENTED_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_talk_cap_other_src,
|
|
|
|
{ "OTHER_SOURCE", "ieee17221.talker_capabilities.other_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_TALK_OTHER_SRC_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_talk_cap_control_src,
|
|
|
|
{ "CONTROL_SOURCE", "ieee17221.talker_capabilities.control_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_TALK_CONTROL_SRC_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_talk_cap_media_clk_src,
|
|
|
|
{ "MEDIA_CLOCK_SOURCE", "ieee17221.talker_capabilities.media_clock_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_TALK_MEDIA_CLK_SRC_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_talk_cap_smpte_src,
|
|
|
|
{ "SMPTE_SOURCE", "ieee17221.talker_capabilities.smpte_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_TALK_SMPTE_SRC_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_talk_cap_midi_src,
|
|
|
|
{ "MIDI_SOURCE", "ieee17221.talker_capabilities.midi_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_TALK_MIDI_SRC_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_talk_cap_audio_src,
|
|
|
|
{ "AUDIO_SOURCE", "ieee17221.talker_capabilities.audio_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_TALK_AUDIO_SRC_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_talk_cap_video_src,
|
|
|
|
{ "VIDEO_SOURCE", "ieee17221.talker_capabilities.video_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_TALK_VIDEO_SRC_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
/* Talker Capability Flags End */
|
|
|
|
{ &hf_adp_listener_stream_sinks,
|
|
|
|
{ "Listener Stream Sinks", "ieee17221.listener_stream_sinks",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_listener_cap,
|
|
|
|
{ "Listener Capabilities", "ieee17221.listener_capabilities",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* Listener Capability Flags Begin */
|
|
|
|
{ &hf_adp_list_cap_implement,
|
|
|
|
{ "IMPLEMENTED", "ieee17221.listener_capabilities.implemented",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_LIST_IMPLEMENTED_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_list_cap_other_sink,
|
|
|
|
{ "OTHER_SINK", "ieee17221.listener_capabilities.other_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_LIST_OTHER_SINK_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_list_cap_control_sink,
|
|
|
|
{ "CONTROL_SINK", "ieee17221.listener_capabilities.control_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_LIST_CONTROL_SINK_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_list_cap_media_clk_sink,
|
|
|
|
{ "MEDIA_CLOCK_SINK", "ieee17221.listener_capabilities.media_clock_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_LIST_MEDIA_CLK_SINK_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_list_cap_smpte_sink,
|
|
|
|
{ "SMPTE_SINK", "ieee17221.listener_capabilities.smpte_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_LIST_SMPTE_SINK_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_list_cap_midi_sink,
|
|
|
|
{ "MIDI_SINK", "ieee17221.listener_capabilities.midi_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_LIST_MIDI_SINK_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_list_cap_audio_sink,
|
|
|
|
{ "AUDIO_SINK", "ieee17221.listener_capabilities.audio_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_LIST_AUDIO_SINK_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_list_cap_video_sink,
|
|
|
|
{ "VIDEO_SINK", "ieee17221.listener_capabilities.video_source",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_LIST_VIDEO_SINK_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
/* Listener Capability Flags End */
|
|
|
|
{ &hf_adp_controller_cap,
|
|
|
|
{ "Controller Capabilities", "ieee17221.controller_capabilities",
|
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* Controller Capability Flags Begin */
|
|
|
|
{ &hf_adp_cont_cap_implement,
|
|
|
|
{ "IMPLEMENTED", "ieee17221.controller_capabilities.implemented",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CONT_IMPLEMENTED_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_cont_cap_layer3_proxy,
|
|
|
|
{ "LAYER3_PROXY", "ieee17221.controller_capabilities.layer3_proxy",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CONT_LAYER3_PROXY_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
2012-03-03 21:58:38 +00:00
|
|
|
/* Controller Capability Flags End */
|
2012-03-02 03:30:30 +00:00
|
|
|
{ &hf_adp_avail_index,
|
|
|
|
{ "Available Index", "ieee17221.available_index",
|
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_as_gm_id,
|
|
|
|
{ "AS Grandmaster ID", "ieee17221.as_grandmaster_id",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_def_aud_format,
|
|
|
|
{ "Default Audio Format", "ieee17221.default_audio_format",
|
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* Default Audio Formats Fields Begin */
|
|
|
|
{ &hf_adp_def_aud_sample_rates,
|
|
|
|
{ "Sample Rates", "ieee17221.default_audio_format.sample_rates",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, ADP_DEF_AUDIO_SAMPLE_RATES_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* Sample rates Begin */
|
|
|
|
{ &hf_adp_samp_rate_44k1,
|
|
|
|
{ "44.1kHz", "ieee17221.default_audio_format.sample_rates.44k1",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 8, NULL, ADP_SAMP_RATE_44K1_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_samp_rate_48k,
|
|
|
|
{ "48kHz", "ieee17221.default_audio_format.sample_rates.48k",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 8, NULL, ADP_SAMP_RATE_48K_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_samp_rate_88k2,
|
|
|
|
{ "88.2kHz", "ieee17221.default_audio_format.sample_rates.88k2",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 8, NULL, ADP_SAMP_RATE_88K2_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_samp_rate_96k,
|
|
|
|
{ "96kHz", "ieee17221.default_audio_format.sample_rates.96k",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 8, NULL, ADP_SAMP_RATE_96K_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_samp_rate_176k4,
|
|
|
|
{ "176.4kHz", "ieee17221.default_audio_format.sample_rates.176k4",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 8, NULL, ADP_SAMP_RATE_176K4_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_samp_rate_192k,
|
|
|
|
{ "192kHz", "ieee17221.default_audio_format.sample_rates.192k",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 8, NULL, ADP_SAMP_RATE_192K_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
/* Sample rates End */
|
|
|
|
{ &hf_adp_def_aud_max_chan,
|
|
|
|
{ "Max Channels", "ieee17221.default_audio_format.max_channels",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, ADP_DEF_AUDIO_MAX_CHANS_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_def_aud_saf_flag,
|
|
|
|
{ "saf", "ieee17221.default_audio_format.saf",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_DEF_AUDIO_SAF_MASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_def_aud_float_flag,
|
|
|
|
{ "float", "ieee17221.default_audio_format.float",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_DEF_AUDIO_FLOAT_MASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_def_aud_chan_formats,
|
|
|
|
{ "Channel Formats", "ieee17221.default_audio_format.channel_formats",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* Channel Formats Fields Start */
|
|
|
|
{ &hf_adp_chan_format_mono,
|
|
|
|
{ "MONO", "ieee17221.default_audio_format.channel_formats.mono",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_MONO, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_2ch,
|
|
|
|
{ "2_CH", "ieee17221.default_audio_format.channel_formats.2_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_2CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_3ch,
|
|
|
|
{ "3_CH", "ieee17221.default_audio_format.channel_formats.3_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_3CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_4ch,
|
|
|
|
{ "4_CH", "ieee17221.default_audio_format.channel_formats.4_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_4CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_5ch,
|
|
|
|
{ "5_CH", "ieee17221.default_audio_format.channel_formats.5_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_5CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_6ch,
|
|
|
|
{ "6_CH", "ieee17221.default_audio_format.channel_formats.6_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_6CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_7ch,
|
|
|
|
{ "7_CH", "ieee17221.default_audio_format.channel_formats.7_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_7CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_8ch,
|
|
|
|
{ "8_CH", "ieee17221.default_audio_format.channel_formats.8_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_8CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_10ch,
|
|
|
|
{ "10_CH", "ieee17221.default_audio_format.channel_formats.10_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_10CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_12ch,
|
|
|
|
{ "12_CH", "ieee17221.default_audio_format.channel_formats.12_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_12CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_14ch,
|
|
|
|
{ "14_CH", "ieee17221.default_audio_format.channel_formats.14_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_14CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_16ch,
|
|
|
|
{ "16_CH", "ieee17221.default_audio_format.channel_formats.16_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_16CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_18ch,
|
|
|
|
{ "18_CH", "ieee17221.default_audio_format.channel_formats.18_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_18CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_20ch,
|
|
|
|
{ "20_CH", "ieee17221.default_audio_format.channel_formats.20_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_20CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_22ch,
|
|
|
|
{ "22_CH", "ieee17221.default_audio_format.channel_formats.22_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_22CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_adp_chan_format_24ch,
|
|
|
|
{ "24_CH", "ieee17221.default_audio_format.channel_formats.24_ch",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ADP_CHAN_FORMAT_24CH, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
/* Channel Formats Fields End */
|
|
|
|
/* Default Audio Formats Fields End */
|
|
|
|
{ &hf_adp_def_vid_format,
|
|
|
|
{ "Default Video Format", "ieee17221.default_video_format",
|
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_assoc_id,
|
|
|
|
{ "Assocation ID", "ieee17221.assocation_id",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_adp_entity_type,
|
|
|
|
{ "Entity Type", "ieee17221.entity_type",
|
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/*******************************************************************/
|
|
|
|
{ &hf_acmp_message_type,
|
|
|
|
{ "Message Type", "ieee17221.message_type",
|
|
|
|
FT_UINT8, BASE_DEC, VALS(acmp_message_type_vals), ACMP_MSG_TYPE_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_status_field,
|
|
|
|
{ "Status Field", "ieee17221.status_field",
|
|
|
|
FT_UINT8, BASE_DEC, VALS(acmp_status_field_vals), ACMP_STATUS_FIELD_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_cd_length,
|
|
|
|
{ "Control Data Length", "ieee17221.control_data_length",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, ACMP_CD_LENGTH_MASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_acmp_stream_id,
|
|
|
|
{ "Stream ID", "ieee17221.stream_id",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_controller_guid,
|
|
|
|
{ "Controller GUID", "ieee17221.controller_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_talker_guid,
|
|
|
|
{ "Talker GUID", "ieee17221.talker_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_listener_guid,
|
|
|
|
{ "Listener GUID", "ieee17221.listener_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_talker_unique_id,
|
|
|
|
{ "Talker Unique ID", "ieee17221.talker_unique_id",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_listener_unique_id,
|
|
|
|
{ "Listener Unique ID", "ieee17221.listener_unique_id",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_stream_dest_mac,
|
|
|
|
{ "Destination MAC address", "ieee17221.dest_mac",
|
|
|
|
FT_ETHER, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_connection_count,
|
|
|
|
{ "Connection Count", "ieee17221.connection_count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_sequence_id,
|
|
|
|
{ "Sequence ID", "ieee17221.sequence_id",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_acmp_flags,
|
|
|
|
{ "Flags", "ieee17221.flags",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* ACMP Flags Begin */
|
|
|
|
{ &hf_acmp_flags_class_b,
|
|
|
|
{ "CLASS_B", "ieee17221.flags.class_b",
|
2012-03-23 01:18:06 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ACMP_FLAG_CLASS_B_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_acmp_flags_fast_connect,
|
|
|
|
{ "FAST_CONNECT", "ieee17221.flags.fast_connect",
|
2012-03-23 01:18:06 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ACMP_FLAG_FAST_CONNECT_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_acmp_flags_saved_state,
|
|
|
|
{ "SAVED_STATE", "ieee17221.flags.saved_state",
|
2012-03-23 01:18:06 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ACMP_FLAG_SAVED_STATE_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_acmp_flags_streaming_wait,
|
|
|
|
{ "STREAMING_WAIT", "ieee17221.flags.streaming_wait",
|
2012-03-23 01:18:06 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, ACMP_FLAG_STREAMING_WAIT_BITMASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
/* ACMP Flags End */
|
|
|
|
{ &hf_acmp_default_format,
|
|
|
|
{ "Default Format", "ieee17221.default_format",
|
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/******* AECP ******/
|
|
|
|
/* COMMON FIELDS */
|
|
|
|
{ &hf_aecp_message_type,
|
|
|
|
{ "Message Type", "ieee17221.message_type",
|
|
|
|
FT_UINT8, BASE_DEC, VALS(aecp_message_type_vals), AECP_MSG_TYPE_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_cd_length,
|
|
|
|
{ "Control Data Length", "ieee17221.control_data_length",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, AECP_CD_LENGTH_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_target_guid,
|
|
|
|
{ "Target GUID", "ieee17221.target_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_controller_guid,
|
|
|
|
{ "Controller GUID", "ieee17221.controller_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_sequence_id,
|
|
|
|
{ "Sequence ID", "ieee17221.sequence_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_u_flag,
|
|
|
|
{ "U Flag", "ieee17221.u_flag",
|
|
|
|
FT_BOOLEAN, 8, NULL, AECP_U_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_command_type,
|
|
|
|
{ "Command Type", "ieee17221.command_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aecp_command_type_vals), AECP_COMMAND_TYPE_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* SLIGHTLY LESS COMMON FIELDS */
|
|
|
|
{ &hf_aecp_descriptor_type,
|
|
|
|
{ "Descriptor Type", "ieee17221.descriptor_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_descriptor_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_descriptor_id,
|
2012-08-01 02:59:17 +00:00
|
|
|
{"Descriptor ID", "ieee17221.descriptor_id",
|
2012-03-02 03:30:30 +00:00
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* AECP Commands and Responses 1722.1 Sec 7.4 */
|
|
|
|
/* LOCK_ENTITY */
|
|
|
|
{ &hf_aecp_unlock_flag,
|
|
|
|
{ "UNLOCK Flag", "ieee17221.flags.unlock",
|
|
|
|
FT_BOOLEAN, 8, NULL, AECP_UNLOCK_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_locked_guid,
|
|
|
|
{ "Locked GUID", "ieee17221.locked_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
|
|
|
|
/* READ_DESCRIPTOR */
|
|
|
|
{ &hf_aecp_configuration,
|
2012-08-01 02:59:17 +00:00
|
|
|
{ "Configuration", "ieee17221.configuration",
|
2012-03-02 03:30:30 +00:00
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* WRITE_DESCRIPTOR */
|
|
|
|
|
|
|
|
/* ACQUIRE_ENTITY */
|
|
|
|
{ &hf_aecp_persistent_flag,
|
|
|
|
{ "Peristent Flag", "ieee17221.flags.persistent",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_PERSISTENT_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_release_flag,
|
|
|
|
{ "Release Flag", "ieee17221.flags.release",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_RELEASE_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_owner_guid,
|
|
|
|
{ "Owner GUID", "ieee17221.owner_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CONTROLLER_AVAILABLE */
|
|
|
|
|
|
|
|
/* SET_CLOCK_SOURCE / GET_CLOCK_SOURCE */
|
|
|
|
{ &hf_aecp_clock_source_id,
|
2012-06-23 15:04:13 +00:00
|
|
|
{ "Clock Source ID", "ieee17221.aecp_clock_source_id",
|
2012-03-02 03:30:30 +00:00
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* SET_STREAM_FORMAT */
|
|
|
|
{ &hf_aecp_stream_format,
|
|
|
|
{"Stream Format", "ieee17221.stream_format",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* GET_STREAM_FORMAT */
|
|
|
|
|
|
|
|
/* SET_CONFIGURATION / GET_CONFIGURATION */
|
|
|
|
|
|
|
|
/* SET_CONTROL_VALUE / GET_CONTROL_VALUE */
|
|
|
|
|
|
|
|
/* SET_SIGNAL_SELECTOR / GET_SIGNAL_SELECTOR */
|
|
|
|
{ &hf_aecp_signal_type,
|
|
|
|
{"Signal Type", "ieee17221.signal_type",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_signal_id,
|
|
|
|
{"Signal ID", "ieee17221.signal_id",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* SET_MIXER / GET_MIXER */
|
|
|
|
|
|
|
|
/* SET_MATRIX / GET_MATRIX */
|
|
|
|
{ &hf_aecp_matrix_column,
|
|
|
|
{"Matrix Column", "ieee17221.matrix_column",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_matrix_row,
|
|
|
|
{"Matrix Row", "ieee17221.matrix_row",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_matrix_region_width,
|
|
|
|
{"Region Width", "ieee17221.matrix_region_width",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_matrix_region_height,
|
|
|
|
{"Region Height", "ieee17221.matrix_region_height",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_matrix_rep,
|
|
|
|
{"Rep", "ieee17221.matrix_rep",
|
|
|
|
FT_BOOLEAN, 8, NULL, AECP_MATRIX_REP_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_matrix_direction,
|
|
|
|
{"Direction", "ieee17221.matrix_direction",
|
|
|
|
FT_UINT8, BASE_DEC, VALS(aecp_direction_type_vals), AECP_MATRIX_DIRECTION_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_matrix_value_count,
|
|
|
|
{"Value Count", "ieee17221.matrix_value_count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, AECP_MATRIX_VALUE_COUNT_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_matrix_item_offset,
|
|
|
|
{"Item Offset", "ieee17221.matrix_item_offset",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_matrix_affected_item_count,
|
|
|
|
{"Affected Item Count", "ieee17221.matrix_affected_item_count",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* START_STREAMING */
|
|
|
|
|
|
|
|
/* STOP_STREAMING */
|
|
|
|
|
|
|
|
|
|
|
|
/* GET_STREAM_INFO */
|
|
|
|
{ &hf_aecp_msrp_accumulated_latency,
|
|
|
|
{"MSRP Accumulated Latency", "ieee17221.msrp_accumulated_latency",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_connected_flag,
|
|
|
|
{"Connected Flag", "ieee17221.flags.connected",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_CONNECTED_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_stream_id_valid_flag,
|
|
|
|
{"Stream ID Valid Flag", "ieee17221.flags.stream_id_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_STREAM_ID_VALID_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_msrp_acc_lat_valid_flag,
|
|
|
|
{"MSRP Accumulated Latency Field Valid Flag", "ieee17221.flags.msrp_acc_lat_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_MSRP_ACC_LAT_VALID_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_dest_mac_valid_flag,
|
|
|
|
{"Dest MAC Valid Flag", "ieee17221.flags.dest_mac_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_DEST_MAC_VALID_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* SET_NAME / GET_NAME */
|
|
|
|
{ &hf_aecp_name_index,
|
|
|
|
{"Name Index", "ieee17221.name_index",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_name,
|
|
|
|
{"Name", "ieee17221.name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* SET_ASSOCIATION_ID / GET_ASSOCIATION_ID */
|
|
|
|
{ &hf_aecp_association_id,
|
|
|
|
{"Association ID", "ieee17221.association_id",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* AUTH_ADD_KEY */
|
|
|
|
{ &hf_aecp_keychain_id,
|
|
|
|
{"Keychain ID", "ieee17221.keychain_id",
|
|
|
|
FT_UINT8, BASE_HEX, VALS(aecp_keychain_id_type_vals), AECP_KEYCHAIN_ID_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_keytype,
|
|
|
|
{"Key Type", "ieee17221.keytype",
|
|
|
|
FT_UINT8, BASE_HEX, VALS(aecp_keytype_type_vals), AECP_KEYTYPE_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_key_number,
|
|
|
|
{"Key ID", "ieee17221.key_id",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, AECP_KEY_NUMBER_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_continued_flag,
|
|
|
|
{"Continued", "ieee17221.continued",
|
|
|
|
FT_BOOLEAN, 8, NULL, AECP_CONTINUED_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_key_part,
|
|
|
|
{"Key Part", "ieee17221.key_part",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, AECP_KEY_PART_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
{ &hf_aecp_key_length,
|
|
|
|
{"Key Length", "ieee17221.key_length",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, AECP_KEY_LENGTH_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_private_key_read_flag,
|
|
|
|
{"Private Key Read Flag", "ieee17221.flags.private_key_read",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_PRIVATE_KEY_READ_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_private_key_write_flag,
|
|
|
|
{"Private Key Write Flag", "ieee17221.flags.private_key_write",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_PRIVATE_KEY_WRITE_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_public_key_write_flag,
|
|
|
|
{"Public Key Write Flag", "ieee17221.flags.public_key_write",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_PUBLIC_KEY_WRITE_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_connection_flag,
|
|
|
|
{"Connection Flag", "ieee17221.flags.connection",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_CONNECTION_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_control_admin_flag,
|
|
|
|
{"Control Admin Flag", "ieee17221.flags.control_admin",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_CONTROL_ADMIN_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_mem_obj_admin_flag,
|
|
|
|
{"Memory Object Admin", "ieee17221.mem_obj_admin",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_MEM_OBJ_ADMIN_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_mem_obj_settings_flag,
|
|
|
|
{"Memory Object Settings", "ieee17221.mem_obj_settings",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_MEM_OBJ_SETTINGS_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_control_user_l1,
|
|
|
|
{"Control User L1 flag", "ieee17221.flags.control_user_l1",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_CONTROL_USER_L1_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_control_user_l2,
|
|
|
|
{"Control User L2 flag", "ieee17221.flags.control_user_l2",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_CONTROL_USER_L2_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_control_user_l3,
|
|
|
|
{"Control User L3 flag", "ieee17221.flags.control_user_l3",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_CONTROL_USER_L3_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_control_user_l4,
|
|
|
|
{"Control User L4 flag", "ieee17221.flags.control_user_l4",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_CONTROL_USER_L4_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
{ &hf_aecp_gptp_gm_changed,
|
|
|
|
{"GPTP GM Changed", "ieee17221.gtptp_gm_changed",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_gptp_unlocked,
|
|
|
|
{"GPTP Unlocked", "ieee17221.gptp_unlocked",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_gptp_locked,
|
|
|
|
{"GPTP Locked", "ieee17221.gptp_locked",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_media_unlocked,
|
|
|
|
{"Media Unlocked", "ieee17221.media_unlocked",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_media_locked,
|
|
|
|
{"Media Locked", "ieee17221.media_locked",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_media_seq_error,
|
|
|
|
{"Media Seq Error", "ieee17221.media_seq_error",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_stream_reset,
|
|
|
|
{"stream_reset", "ieee17221.stream_reset",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_srp_refused,
|
|
|
|
{"SRP Refused", "ieee17221.srp_refused",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_backup_stream_switch,
|
|
|
|
{"Backup Stream Switch", "ieee17221.backup_stream_switch",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_missed_avdecc_response,
|
|
|
|
{"Missed Avdecc Response", "ieee17221.missed_avdecc_response",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_refused_avdecc_command,
|
|
|
|
{"Refused Avdecc Command", "ieee17221.refused_avdecc_command",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_seq_num_mismatch,
|
|
|
|
{"Seq Num Mismatch", "ieee17221.seq_num_mismatch",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_media_clock_toggles,
|
|
|
|
{"Media Clock Toggles", "ieee17221.media_clock_toggles",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_timestamp_uncertains,
|
|
|
|
{"Timestamp Uncertains", "ieee17221.timestamp_uncertains",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_timestamp_valids,
|
|
|
|
{"Timestamp Valids", "ieee17221.timestamp_valids",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_unsupported_formats,
|
|
|
|
{"Unsupported Formats", "ieee17221.unsupported_formats",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_bad_presentation_times,
|
|
|
|
{"Bad Presentation Times", "ieee17221.bad_presentation_times",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_srp_latency_violations,
|
|
|
|
{"SRP Latency Violations", "ieee17221.srp_latency_violations",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_packets_tx,
|
|
|
|
{"Packets TX", "ieee17221.packets_tx",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_packets_rx,
|
|
|
|
{"Packets RX", "ieee17221.packets_rx",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_packets_interest_rx,
|
|
|
|
{"Packets of Interest RX", "ieee17221.packets_interest_rx",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_talker_bw_reserved,
|
|
|
|
{"Talker BW Reserved", "ieee17221.talker_bw_reserved",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_reserved_counter,
|
|
|
|
{"RESERVED", "ieee17221.reserved",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific1,
|
|
|
|
{"Entity Specific #1", "ieee17221.entity_specific_1",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific2,
|
|
|
|
{"Entity Specific #2", "ieee17221.entity_specific_2",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific3,
|
|
|
|
{"Entity Specific #3", "ieee17221.entity_specific_3",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific4,
|
|
|
|
{"Entity Specific #4", "ieee17221.entity_specific_4",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific5,
|
|
|
|
{"Entity Specific #5", "ieee17221.entity_specific_5",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific6,
|
|
|
|
{"Entity Specific #6", "ieee17221.entity_specific_6",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific7,
|
|
|
|
{"Entity Specific #7", "ieee17221.entity_specific_7",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific8,
|
|
|
|
{"Entity Specific #8", "ieee17221.entity_specific_8",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL}
|
|
|
|
},
|
|
|
|
{ &hf_aecp_key_guid,
|
|
|
|
{"Key GUID", "ieee17221.key_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_token_length,
|
|
|
|
{"Token Length", "ieee17221.token_length",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, AECP_TOKEN_LENGTH_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_key,
|
|
|
|
{"Key", "ieee17221.key",
|
|
|
|
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_auth_token,
|
|
|
|
{"Auth Token", "ieee17221.auth_token",
|
|
|
|
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_flags_32,
|
|
|
|
{"Flags", "ieee17221.flags",
|
|
|
|
FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* AUTH_GET_KEY */
|
|
|
|
/* AUTHENTICATE */
|
|
|
|
/* GET_COUNTERS */
|
|
|
|
{ &hf_aecp_gptp_unlocked_valid,
|
|
|
|
{"GPTP Unlocked Valid", "ieee17221.flags.gptp_unlocked_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_GPTP_UNLOCKED, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_gtpt_locked_valid,
|
|
|
|
{"GPTP Locked Valid", "ieee17221.flags.gptp_locked_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_GPTP_LOCKED, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_media_unlocked_valid,
|
|
|
|
{"Media Unlocked Valid", "ieee17221.flags.media_unlocked_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_MEDIA_UNLOCKED, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_media_locked_valid,
|
2012-08-01 02:59:17 +00:00
|
|
|
{"Media Locked Valid", "ieee17221.flags.valid",
|
2012-03-02 03:30:30 +00:00
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_MEDIA_LOCKED, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_stream_reset_valid,
|
|
|
|
{"Stream Reset Valid", "ieee17221.flags.stream_reset_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_STREAM_RESET, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_srp_refused_valid,
|
|
|
|
{"SRP Refused Valid", "ieee17221.flags.srt_refused_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_SRP_REFUSED, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_backup_stream_switch_valid,
|
|
|
|
{"Backup Stream Switch Valid", "ieee17221.flags.backup_stream_switch_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_BACKUP_STREAM_SWITCH, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_missed_avdecc_response_valid,
|
|
|
|
{"Missed Avdecc Response Valid", "ieee17221.flags.missed_avdecc_response_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_MISSED_AVDECC_RESPONSE, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_refused_avdecc_command_valid,
|
|
|
|
{"Refused Avdecc Command Valid", "ieee17221.flags.refused_avdecc_command_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_REFUSED_AVDECC_COMMAND, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_seq_num_mismatch_valid,
|
|
|
|
{"Seq Num Mismatch Valid", "ieee17221.flags.seq_num_mismatch_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_SEQ_NUM_MISMATCH, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_media_clock_toggles_valid,
|
|
|
|
{"Media Clock Toggles Valid", "ieee17221.flags.media_clock_toggles_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_MEDIA_CLOCK_TOGGLES, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_timestamp_uncertains_valid,
|
|
|
|
{"Timestamp Uncertains Valid", "ieee17221.flags.timestamp_uncertains_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_TIMESTAMP_UNCERTAINS, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_timestamp_valids_valid,
|
|
|
|
{"Timestamp Valids Valid", "ieee17221.flags.timestamp_valids_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_TIMESTAMP_VALIDS, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_unsupported_formats_valid,
|
|
|
|
{"Unsupported Formats Valid", "ieee17221.flags.unsupported_formats_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_UNSUPPORTED_FORMATS, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_bad_presentation_times_valid,
|
|
|
|
{"Bad Presentation Times Valid", "ieee17221.flags.bad_presentation_times_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_BAD_PRESENTATION_TIMES, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_srp_latency_violations_valid,
|
|
|
|
{"SRP Latency Violations Valid", "ieee17221.flags.srp_latency_violations_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_SRP_LATENCY_VIOLATIONS, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_packets_tx_valid,
|
|
|
|
{"Packets TX Valid", "ieee17221.flags.packets_tx_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_PACKETS_TX, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_packets_rx_valid,
|
|
|
|
{"Packets RX Valid", "ieee17221.flags.packets_rx_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_PACKETS_RX, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_packets_interest_rx_valid,
|
|
|
|
{"Packets of Interest RX Valid", "ieee17221.flags.packets_interest_rx_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_PACKETS_OF_INTEREST_RX, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_talker_bw_reserved_valid,
|
|
|
|
{"Talker BW Reserved Valid", "ieee17221.flags.talker_bw_reserved_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_TALKER_BW_RESERVED, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_reserved1_valid,
|
|
|
|
{"RESERVED", "ieee17221.flags.reserved",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_RESERVED1, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_reserved2_valid,
|
|
|
|
{"RESERVED", "ieee17221.flags.reserved",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_RESERVED2, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific1_valid,
|
|
|
|
{"Entity Specific 1", "ieee17221.flags.entity_specific1_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_1, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific2_valid,
|
|
|
|
{"Entity Specific 2", "ieee17221.flags.entity_specific2_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_2, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific3_valid,
|
|
|
|
{"Entity Specific 3", "ieee17221.flags.entity_specific3_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_3, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific4_valid,
|
|
|
|
{"Entity Specific 4", "ieee17221.flags.entity_specific4_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_4, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific5_valid,
|
|
|
|
{"Entity Specific 5", "ieee17221.flags.entity_specific5_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_5, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific6_valid,
|
|
|
|
{"Entity Specific 6", "ieee17221.flags.entity_specific6_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_6, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific7_valid,
|
|
|
|
{"Entity Specific 7", "ieee17221.flags.entity_specific7_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_7, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_entity_specific8_valid,
|
|
|
|
{"Entity Specific 8", "ieee17221.flags.entity_specific8_valid",
|
|
|
|
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_8, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* REBOOT */
|
|
|
|
|
|
|
|
/* SET_MEDIA_FORMAT / GET_MEDIA_FORMAT */
|
|
|
|
{ &hf_aecp_media_format,
|
|
|
|
{"Media Format", "ieee17221.media_format",
|
|
|
|
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* REGISTER_STATE_NOTIFICATION */
|
|
|
|
{ &hf_aecp_address_type,
|
|
|
|
{"Address Type", "ieee17221.address_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aecp_address_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_mac_address,
|
|
|
|
{ "MAC address", "ieee17221.mac_address",
|
|
|
|
FT_ETHER, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_ipv4_address,
|
|
|
|
{"IPV4 Address", "ieee17221.ipv4_address",
|
|
|
|
FT_IPv4, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_ipv6_address,
|
|
|
|
{"IPv6 Address", "ieee17221.ipv6_address",
|
|
|
|
FT_IPv6, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* DEREGISTER_STATE_NOTIFICATION */
|
|
|
|
|
|
|
|
/* REGISTER_QUERY_NOTIFICATION / DEREGISTER_QUERY_NOTIFICATION */
|
|
|
|
{ &hf_aecp_query_period,
|
|
|
|
{"Query Period (ms)", "ieee17221.query_period",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_query_limit,
|
|
|
|
{"Query Limit", "ieee17221.query_limit",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_query_type,
|
|
|
|
{"Query Type", "ieee17221.query_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aecp_command_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_query_id,
|
|
|
|
{"Query ID", "ieee17221.query_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* IDENTIFY_NOTIFICATION */
|
|
|
|
|
|
|
|
/* STATE_CHANGE_NOTIFICATION */
|
|
|
|
{ &hf_aecp_count,
|
|
|
|
{"Count", "ieee17221.count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_descriptors,
|
|
|
|
{"Descriptors Array", "ieee17221.descriptors",
|
|
|
|
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* INCREMENT_CONTROL_VALUE / DECREMENT_CONTROL_VALUE */
|
|
|
|
{ &hf_aecp_values_count,
|
|
|
|
{"Values Count", "ieee17221.values_count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* START_OPERATION */
|
|
|
|
{ &hf_aecp_operation_id,
|
|
|
|
{"Operation ID", "ieee17221.operation_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_operation_type,
|
|
|
|
{"Operation Type", "ieee17221.operation_type",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},/* draft spec says this is defined by control_type field *
|
|
|
|
* start_operation does not include a control type field *
|
|
|
|
* There is an operation type table 7.83 that has not *
|
|
|
|
* yet beed defined. control_type may be part of a *
|
|
|
|
* descriptor; will check */
|
|
|
|
|
|
|
|
/* ABORT_OPERATION */
|
|
|
|
|
|
|
|
/* OPERATION_STATUS */
|
|
|
|
{ &hf_aecp_percent_complete,
|
|
|
|
{"Percent Complete", "ieee17221.percent_complete",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* AUTH_GET_KEY_COUNT */
|
|
|
|
|
|
|
|
/* * AVDECC ENTITY MODEL DESCRIPTOR FIELDS * */
|
|
|
|
|
|
|
|
/* ENTITY */
|
|
|
|
/* hf_aecp_descriptor_type */
|
|
|
|
/* hf_aecp_descriptor_id */
|
|
|
|
{ &hf_aem_entity_guid,
|
|
|
|
{"Entity GUID", "ieee17221.entity_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_vendor_id,
|
|
|
|
{"Vendor ID", "ieee17221.vendor_id",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_entity_model_id,
|
|
|
|
{"Entity Model ID", "ieee17221.entity_model_id",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* hf_adp_entity_cap
|
|
|
|
* hf_adp_entity_cap_avdecc_ip
|
|
|
|
* hf_adp_entity_cap_zero_conf
|
|
|
|
* hf_adp_entity_cap_gateway_entity
|
|
|
|
* hf_adp_entity_cap_avdecc_control
|
|
|
|
* hf_adp_entity_cap_legacy_avc
|
|
|
|
* hf_adp_entity_cap_assoc_id_support
|
|
|
|
* hf_adp_entity_cap_assoc_id_valid
|
|
|
|
*/
|
|
|
|
/* hf_adp_talker_stream_srcs */
|
|
|
|
/* hf_adp_talker_cap & flags */
|
|
|
|
/* hf_adp_listener_stream_sinks */
|
|
|
|
/* hf_adp_listener_cap & flags */
|
|
|
|
/* hf_adp_controller_cap & flags */
|
|
|
|
/* hf_adp_avail_index */
|
|
|
|
/* where appropriate use adp values */
|
|
|
|
{ &hf_aem_entity_name,
|
|
|
|
{"Entity Name", "ieee17221.entity_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_vendor_name_string,
|
|
|
|
{"Vendor Name String (ptr)", "ieee17221.vendor_name_string",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_model_name_string,
|
|
|
|
{"Model Name String (ptr)", "ieee17221.model_name_string",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_firmware_version,
|
|
|
|
{"Firmware Version", "ieee17221.firmware_version",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_group_name,
|
|
|
|
{"Group Name", "ieee17221.group_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_serial_number,
|
|
|
|
{"Serial Number", "ieee17221.serial_number",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_configurations_count,
|
|
|
|
{"Configurations Count", "ieee17221.configurations_count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_current_configuration,
|
|
|
|
{"Current Configuration", "ieee17221.current_configuration",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CONFIGURATION */
|
|
|
|
{ &hf_aem_configuration_name,
|
|
|
|
{"Configuration Name", "ieee17221.configuration_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_configuration_name_string,
|
|
|
|
{"Configuration Name String", "ieee17221.configuration_name_string",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_descriptor_counts_count,
|
|
|
|
{"Descriptor Counts Count", "ieee17221.descriptor_counts_count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_descriptor_counts_offset,
|
|
|
|
{"Descriptor Counts Offset", "ieee17221.descriptor_counts_offset",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_count,
|
|
|
|
{"Count", "ieee17221.count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* AUDIO */
|
|
|
|
{ &hf_aem_number_of_stream_input_ports,
|
|
|
|
{"Number Of Stream Input Ports", "ieee17221.number_of_stream_input_ports",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_stream_input_port,
|
|
|
|
{"Base Stream Input Port", "ieee17221.base_stream_input_port",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_stream_output_ports,
|
|
|
|
{"Number Of Stream Output Ports", "ieee17221.number_of_stream_output_ports",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_stream_output_port,
|
|
|
|
{"Base Stream Output Port", "ieee17221.base_stream_output_port",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_external_input_ports,
|
|
|
|
{"Number Of External Input Ports", "ieee17221.number_of_external_input_ports",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_external_input_port,
|
|
|
|
{"Base External Input Port", "ieee17221.base_external_input_port",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_external_output_ports,
|
|
|
|
{"Number Of External Output Ports", "ieee17221.number_of_external_output_ports",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_external_output_port,
|
|
|
|
{"Base External Output Port", "ieee17221.base_external_output_port",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_internal_input_ports,
|
|
|
|
{"Number Of Internal Input Ports", "ieee17221.number_of_internal_input_ports",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_internal_input_port,
|
|
|
|
{"Base Internal Input Port", "ieee17221.base_internal_input_port",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_internal_output_ports,
|
|
|
|
{"Number Of Internal Output Ports", "ieee17221.number_of_internal_output_ports",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_internal_output_port,
|
|
|
|
{"Base Internal Output Port", "ieee17221.base_internal_output_port",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_clock_source_id,
|
|
|
|
{"Clock Source ID", "ieee17221.clock_source_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_controls,
|
|
|
|
{"Number Of Controls", "ieee17221.number_of_controls",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_control,
|
|
|
|
{"Base Control", "ieee17221.base_control",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_unit_name,
|
|
|
|
{"Unit Name", "ieee17221.unit_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_unit_name_string,
|
|
|
|
{"Unit Name String", "ieee17221.unit_name_string",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_current_sample_rate,
|
|
|
|
{"Current Sample Rate", "ieee17221.current_sample_rate",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_signal_selectors,
|
|
|
|
{"Number of Signal Selectors", "ieee17221.num_signal_selectors",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_signal_selector,
|
|
|
|
{"Base Signal Selector", "ieee17221.base_signal_selector",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_mixers,
|
|
|
|
{"Number of Mixers", "ieee17221.num_mixers",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_mixer,
|
|
|
|
{"Base Mixer", "ieee17221.base_mixer",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_matrices,
|
|
|
|
{"Number of Matrices", "ieee17221.num_matrices",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_matrix,
|
|
|
|
{"Base Matrix", "ieee17221.base_matrix",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* sample rate is 3 bit pull field multiplier and 29 bit base freq in Hz */
|
|
|
|
{ &hf_aem_sample_rates_offset,
|
|
|
|
{"Sample Rates Offset", "ieee17221.sample_rates_offset",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_sample_rates_count,
|
|
|
|
{"Sample Rates Count", "ieee17221.sample_rates_count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_sample_rates,
|
|
|
|
{"Sample Rates", "ieee17221.sample_rates",
|
|
|
|
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
{ &hf_aem_base_frequency,
|
|
|
|
{"Base Frequency", "ieee17221.base_frequency",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, AEM_BASE_FREQUENCY_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_pull_field,
|
|
|
|
{"Pull Field (frequency multiplier)", "ieee17221.pull_field",
|
|
|
|
FT_UINT8, BASE_HEX, VALS(aem_frequency_multiplier_type_vals), AEM_PULL_FIELD_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* VIDEO */
|
|
|
|
|
|
|
|
/* SENSOR */
|
|
|
|
|
|
|
|
/* STREAM_INPUT */
|
|
|
|
/* STREAM_OUTPUT */
|
|
|
|
{ &hf_aem_stream_name,
|
|
|
|
{"Stream Name", "ieee17221.stream_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_stream_name_string,
|
|
|
|
{"Stream Name String", "ieee17221.stream_name_string",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_stream_flags,
|
|
|
|
{"Stream Flags", "ieee17221.stream_flags",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_flags_clock_sync_source,
|
|
|
|
{"Clock Sync Source Flag", "ieee17221.flags.clock_sync_source",
|
|
|
|
FT_BOOLEAN, 16, NULL, AEM_CLOCK_SYNC_SOURCE_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_flags_class_a,
|
|
|
|
{"Class A Flag", "ieee17221.flags.class_a",
|
|
|
|
FT_BOOLEAN, 16, NULL, AEM_CLASS_A_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_flags_class_b,
|
|
|
|
{"Class B Flag", "ieee17221.flags.class_b",
|
|
|
|
FT_BOOLEAN, 16, NULL, AEM_CLASS_B_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_stream_channels,
|
|
|
|
{"Stream Channels", "ieee17221.stream_channels",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_formats_offset,
|
|
|
|
{"Formats Offset", "ieee17221.formats_offset",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_formats,
|
|
|
|
{"Number Of Formats", "ieee17221.number_of_formats",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_backup_talker_guid_0,
|
|
|
|
{"Primary Backup Talker GUID", "ieee17221.backup_talker_guid_0",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_backup_talker_unique_0,
|
|
|
|
{"Primary Backup Talker Unique ID", "ieee17221.backup_talker_unique_0",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_backup_talker_guid_1,
|
|
|
|
{"Secondary Backup Talker GUID", "ieee17221.backup_talker_guid_1",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_backup_talker_unique_1,
|
|
|
|
{"Secondary Backup Talker Unique ID", "ieee17221.backup_talker_unique_1",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_backup_talker_guid_2,
|
|
|
|
{"Tertiary Backup Talker GUID", "ieee17221.backup_talker_guid_2",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_backup_talker_unique_2,
|
|
|
|
{"Tertiary Backup Talker Unique ID", "ieee17221.backup_talker_unique_2",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_backedup_talker_guid,
|
|
|
|
{"Backedup Talker GUID", "ieee17221.backedup_talker_guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_backedup_talker_unique,
|
|
|
|
{"Backedup Talker Unique ID", "ieee17221.backedup_talker_unique",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_avb_interface_id,
|
|
|
|
{"AVB Interface ID", "ieee17221.avb_interface_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
/* array head. uses ett_aem_stream_formats */
|
|
|
|
{ &hf_aem_stream_formats,
|
|
|
|
{"Stream Formats Array", "ieee17221.stream_formats",
|
|
|
|
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* EXTERNAL_JACK_INPUT */
|
|
|
|
/* EXTERNAL_JACK_OUTPUT*/
|
|
|
|
{ &hf_aem_jack_name,
|
|
|
|
{"Jack Name", "ieee17221.jack_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_jack_name_string,
|
|
|
|
{"Jack Name String", "ieee17221.jack_name_string",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_interface_name,
|
|
|
|
{"Interface Name", "ieee17221.interface_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_interface_name_string,
|
|
|
|
{"Interface Name String", "ieee17221.interface_name_string",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_jack_flags,
|
|
|
|
{"Jack Flags", "ieee17221.jack_flags",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_flags_captive,
|
|
|
|
{"Captive Flag", "ieee17221.flags.captive",
|
2012-03-23 01:18:06 +00:00
|
|
|
FT_BOOLEAN, 16, NULL, AEM_CAPTIVE_FLAG_MASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_aem_jack_type,
|
|
|
|
{"Jack Type", "ieee17221.jack_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_jack_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* AUDIO_PORT_INPUT */
|
|
|
|
/* AUDIO_PORT_OUTPUT */
|
|
|
|
{ &hf_aem_port_flags,
|
|
|
|
{"Port Flags", "ieee17221.port_flags",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_flags_async_sample_rate_conv,
|
|
|
|
{"Asynchronous Sample Rate Converter Flag", "ieee17221.flags.async_sample_rate_conv",
|
|
|
|
FT_BOOLEAN, 16, NULL, AEM_ASYNC_SAMPLE_RATE_CONV_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_flags_sync_sample_rate_conv,
|
|
|
|
{"Synchronous Sample Rate Converter Flag", "ieee17221.flags.sync_sample_rate_conv",
|
|
|
|
FT_BOOLEAN, 16, NULL, AEM_SYNC_SAMPLE_RATE_CONV_FLAG_MASK, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_audio_channels,
|
|
|
|
{"Audio Channels", "ieee17221.audio_channels",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_clusters,
|
|
|
|
{"Number of Clusters", "ieee17221.number_of_clusters",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_cluster,
|
|
|
|
{"Base Cluster", "ieee17221.base_cluster",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_audio_map,
|
|
|
|
{"Base Audio Map", "ieee17221.base_audio_map",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_audio_maps,
|
|
|
|
{"Number of Audio Maps", "ieee17221.num_audio_maps",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* VIDEO_PORT_INPUT */
|
|
|
|
/* VIDEO_PORT_OUTPUT */
|
|
|
|
{ & hf_aem_stream_id,
|
|
|
|
{"Stream Descriptor ID", "ieee17221.stream_descriptor_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_formats_count,
|
|
|
|
{"Formats Count", "ieee17221.formats_count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* EXTERNAL_PORT_INPUT */
|
|
|
|
/* EXTERNAL_PORT_OUTPUT */
|
|
|
|
{ &hf_aem_jack_id,
|
|
|
|
{"Jack ID", "ieee17221.jack_id",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* SENSOR_PORT_INPUT */
|
|
|
|
/* SENSOR_PORT_OUTPUT */
|
|
|
|
/* INTERNAL_PORT_INPUT */
|
|
|
|
/* INTERNAL_PORT_OUTPUT */
|
|
|
|
{ &hf_aem_internal_id,
|
|
|
|
{"Internal ID", "ieee17221.internal_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* AVB_INTERFACE */
|
|
|
|
{ &hf_aem_msrp_mappings_offset,
|
|
|
|
{"MSRP Mappings Offset", "ieee17221.msrp_mappings_offset",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_msrp_mappings_count,
|
|
|
|
{"MSRP Mappings Count", "ieee17221.msrp_mappings_count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_msrp_mappings,
|
|
|
|
{"MSRP Mappings", "ieee17221.msrp_mappings",
|
|
|
|
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_msrp_mapping_traffic_class,
|
|
|
|
{"MSRP Mapping Traffic Class", "ieee17221.msrp_mapping_traffic_class",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_msrp_mapping_priority,
|
|
|
|
{"MSRP Mapping Priority", "ieee17221.msrp_mapping_priority",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_msrp_vlan_id,
|
|
|
|
{"MSRP VLAN ID", "ieee17221.msrp_vlan_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
/* CLOCK_SOURCE */
|
|
|
|
{ &hf_aem_clock_source_name,
|
|
|
|
{"Clock Source Name", "ieee17221.clock_source_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_clock_source_name_string,
|
|
|
|
{"Clock Source Name String", "ieee17221.clock_source_name_string",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_clock_source_flags,
|
|
|
|
{"Clock Source Flags", "ieee17221.clock_source_flags",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
}, /* no flags currently defined */
|
|
|
|
{ &hf_aem_clock_source_type,
|
|
|
|
{"Clock Source Type", "ieee17221.clock_source_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_clock_source_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_clock_source_location_type,
|
|
|
|
{"Clock Source Location Type", "ieee17221.clock_source_location_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_descriptor_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_clock_source_location_id,
|
|
|
|
{"Clock Source Location ID", "ieee17221.clock_source_location_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* AUDIO_MAP */
|
|
|
|
{ &hf_aem_mappings_offset,
|
|
|
|
{"Mappings Offset", "ieee17221.mappings_offset",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_mappings,
|
|
|
|
{"Number of Mappings", "ieee17221.number_of_mappings",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_mappings,
|
|
|
|
{"Mappings", "ieee17221.mappings",
|
|
|
|
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_mapping_stream_index,
|
|
|
|
{"Mapping Stream Index", "ieee17221.mapping_stream_index",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_mapping_stream_channel,
|
|
|
|
{"Mapping Stream Channel", "ieee17221.mapping_stream_channel",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_mapping_audio_channel,
|
|
|
|
{"Mapping Audio Channel", "ieee17221.mapping_audio_channel",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* AUDIO_CLUSTER */
|
|
|
|
{ &hf_aem_channel_count,
|
|
|
|
{"Channel Count", "ieee17221.channel_count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_path_latency,
|
|
|
|
{"Path Latency", "ieee17221.path_latency",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_am824_label,
|
|
|
|
{"AM824 Label", "ieee17221.am824_label",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_cluster_name,
|
|
|
|
{"Cluster Name", "ieee17221.cluster_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_cluster_name_string,
|
|
|
|
{"Cluster Name String", "ieee17221.cluster_name_string",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CONTROL */
|
|
|
|
{ &hf_aem_control_type,
|
|
|
|
{"Control Type", "ieee17221.control_type",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_control_location_type,
|
|
|
|
{"Control Location Type", "ieee17221.control_location_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_descriptor_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_control_location_id,
|
|
|
|
{"Control Location ID", "ieee17221.control_location_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_control_value_type,
|
|
|
|
{"Control Value Type", "ieee17221.control_value_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_control_value_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_control_domain,
|
|
|
|
{"Control Domain", "ieee17221.control_domain",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_control_name,
|
|
|
|
{"Control Name", "ieee17221.control_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_control_name_string,
|
|
|
|
{"Control Name String", "ieee17221.control_name_string",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_values_offset,
|
|
|
|
{"Values Offset", "ieee17221.values_offset",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_values,
|
|
|
|
{"Number Of Values", "ieee17221.number_of_values",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_control_latency,
|
|
|
|
{"Control Latency", "ieee17221.control_latency",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* SIGNAL_SELECTOR */
|
|
|
|
{ &hf_aem_sources_offset,
|
|
|
|
{"Sources Offset", "ieee17221.sources_offset",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_current_signal_type,
|
|
|
|
{"Current Signal Type", "ieee17221.current_signal_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_descriptor_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_current_signal_id,
|
|
|
|
{"Current Signal ID", "ieee17221.current_signal_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_default_signal_type,
|
|
|
|
{"Default Signal Type", "ieee17221.default_signal_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_descriptor_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_default_signal_id,
|
|
|
|
{"Default Signal ID", "ieee17221.default_signal_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_block_latency,
|
|
|
|
{"Block Latency", "ieee17221.block_latency",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_signal_type,
|
|
|
|
{"Signal Type", "ieee17221.signal_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_descriptor_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_signal_id,
|
|
|
|
{"Signal ID", "ieee17221.signal_id",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* MIXER */
|
|
|
|
{ &hf_aem_number_of_sources,
|
|
|
|
{"Number of Sources", "ieee17221.number_of_sources",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_value_offset,
|
|
|
|
{"Value Offset", "ieee17221.value_offset",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* MATRIX */
|
|
|
|
{ &hf_aem_width,
|
|
|
|
{"Width", "ieee17221.width",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_height,
|
|
|
|
{"Height", "ieee17221.height",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_source,
|
|
|
|
{"Base Source", "ieee17221.base_source",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_destinations,
|
|
|
|
{"Number of Destinations", "ieee17221.num_destinations",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_destination,
|
|
|
|
{"Base Destination", "ieee17221.base_destination",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* LOCALE */
|
|
|
|
{ &hf_aem_locale_identifier,
|
|
|
|
{"Locale Identifier", "ieee17221.locale_identifier",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_number_of_strings,
|
|
|
|
{"Number of Strings", "ieee17221.number_of_strings",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_base_strings,
|
|
|
|
{"Base Strings", "ieee17221.base_strings",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* STRINGS */
|
|
|
|
{ &hf_aem_string,
|
|
|
|
{"String", "ieee17221.string",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* MATRIX SIGNAL */
|
|
|
|
{ &hf_aem_signals_count,
|
|
|
|
{"Signals Count", "ieee17221.signals_count",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_signals_offset,
|
|
|
|
{"Signals Offset", "ieee17221.signals_offset",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
/* MEMORY OBJECT */
|
|
|
|
{ &hf_aem_memory_object_type,
|
|
|
|
{"Memory Object Type", "ieee17221.memory_object_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_memory_object_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_target_descriptor_type,
|
|
|
|
{"Target Descriptor Type", "ieee17221.target_descriptor_type",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_descriptor_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_target_descriptor_id,
|
|
|
|
{"Target Descriptor ID", "ieee17221.target_descriptor_id",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_object_name,
|
|
|
|
{"Object Name", "ieee17221.object_name",
|
|
|
|
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_object_name_string,
|
|
|
|
{"Object Name String", "ieee17221.object_name_string",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_start_address,
|
|
|
|
{"Start Address", "ieee17221.start_address",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_length,
|
|
|
|
{"Length", "ieee17221.length",
|
|
|
|
FT_UINT64, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
/* CONTROL VALUE TYPES */
|
|
|
|
{ &hf_aem_ctrl_int8,
|
|
|
|
{"Control INT8", "ieee17221.ctrl_int8",
|
|
|
|
FT_INT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_ctrl_uint8,
|
|
|
|
{"Control UINT8", "ieee17221.ctrl_uint8",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_ctrl_int16,
|
|
|
|
{"Control INT16", "ieee17221.ctrl_int16",
|
|
|
|
FT_INT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_ctrl_uint16,
|
|
|
|
{"Control UINT16", "ieee17221.ctrl_uint16",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_ctrl_int32,
|
|
|
|
{"Control INT32", "ieee17221.ctrl_int32",
|
|
|
|
FT_INT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_ctrl_uint32,
|
|
|
|
{"Control UINT32", "ieee17221.ctrl_uint32",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_ctrl_int64,
|
|
|
|
{"Control INT64", "ieee17221.ctrl_int64",
|
|
|
|
FT_INT64, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_ctrl_uint64,
|
|
|
|
{"Control UINT64", "ieee17221.ctrl_uint64",
|
|
|
|
FT_UINT64, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_ctrl_float,
|
|
|
|
{"Control FLOAT", "ieee17221.ctrl_float",
|
|
|
|
FT_FLOAT, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_ctrl_double,
|
|
|
|
{"Control DOUBLE", "ieee17221.ctrl_double",
|
|
|
|
FT_DOUBLE, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_ctrl_vals,
|
|
|
|
{"Control Values", "ieee17221.ctrl_vals",
|
|
|
|
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_unit,
|
|
|
|
{"Control Value Units", "ieee17221.units",
|
|
|
|
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_string_ref,
|
|
|
|
{"String Reference", "ieee17221.string_ref",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_guid,
|
|
|
|
{"GUID", "ieee17221.guid",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_blob_size,
|
|
|
|
{"Blob Size", "ieee17221.blob_size",
|
|
|
|
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_binary_blob,
|
|
|
|
{"Binary Blob", "ieee17221.binary_blob",
|
|
|
|
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_sources,
|
|
|
|
{"Sources", "ieee17221.sources",
|
|
|
|
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_unknown_descriptor,
|
|
|
|
{"Unknown or Malformed Descriptor", "ieee17221.unknown_descriptor",
|
|
|
|
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_frequency,
|
|
|
|
{"Frequency", "ieee17221.frequency",
|
2012-03-23 01:18:06 +00:00
|
|
|
FT_FLOAT, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
/* AEM MEDIA FORMAT FIELDS */
|
|
|
|
/* Standard media formats are defined by always having the 24 most significant bits
|
|
|
|
* of the EUI64 set to 0x90e0f0
|
|
|
|
*/
|
|
|
|
{ &hf_aem_oui24,
|
|
|
|
{"OUI-24", "ieee17221.oui24",
|
2012-03-23 01:18:06 +00:00
|
|
|
FT_UINT24, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_aem_mfd_type,
|
|
|
|
{"MFD Type", "ieee17221.mfd_type",
|
|
|
|
FT_UINT8, BASE_HEX, VALS(aem_mfd_type_vals), 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_div,
|
|
|
|
{"Div Flag", "ieee17221.div",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_aem_interlace,
|
|
|
|
{"Interlace Flag", "ieee17221.interlace",
|
2012-03-03 21:58:38 +00:00
|
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
},
|
|
|
|
{ &hf_aem_channels,
|
2012-03-05 20:50:25 +00:00
|
|
|
{"Video Channel Count", "ieee17221.channels",
|
2012-03-02 03:30:30 +00:00
|
|
|
FT_UINT8, BASE_DEC, NULL, AEM_MASK_CHANNELS, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_color_format,
|
|
|
|
{"Color Format", "ieee17221.color_format",
|
|
|
|
FT_UINT16, BASE_HEX, VALS(aem_color_format_type_vals), AEM_MASK_COLOR_FORMAT, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_bpp,
|
|
|
|
{"Bits Per Pixel", "ieee17221.bpp",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, AEM_MASK_BPP, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_aspect_x,
|
|
|
|
{"Aspect X", "ieee17221.aspect_x",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_aspect_y,
|
|
|
|
{"Aspect Y", "ieee17221.aspect_y",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_frame_rate,
|
|
|
|
{"Frame Rate", "ieee17221.frame_rate",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_comp1,
|
|
|
|
{"Comp 1", "ieee17221.comp1",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, AEM_MASK_COMP1, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_comp2,
|
|
|
|
{"Comp 2", "ieee17221.comp2",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, AEM_MASK_COMP2, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_comp3,
|
|
|
|
{"Comp 3", "ieee17221.comp3",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, AEM_MASK_COMP3, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_comp4,
|
|
|
|
{"Comp 4", "ieee17221.comp4",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, AEM_MASK_COMP4, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_mf_width,
|
|
|
|
{"Width", "ieee17221.width",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_mf_height,
|
|
|
|
{"Height", "ieee17221.height",
|
|
|
|
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_cs_eui64,
|
|
|
|
{"CS EUI64", "ieee17221.cs_eui64",
|
|
|
|
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
/* BEGIN STREAM FORMAT (SF) FIELDS */
|
|
|
|
{ &hf_aem_stream_format,
|
2012-06-23 15:04:13 +00:00
|
|
|
{"Stream Format", "ieee17221.aem_stream_format",
|
2012-03-02 03:30:30 +00:00
|
|
|
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_sf_version,
|
|
|
|
{"Version", "ieee17221.sf_version",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, AEM_MASK_SF_VERSION, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_sf,
|
|
|
|
{"SF", "ieee17221.sf",
|
|
|
|
FT_BOOLEAN, 8, NULL, AEM_MASK_SF, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_iidc_format,
|
|
|
|
{"IIDC Format", "ieee17221.iidc_format",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_iidc_mode,
|
|
|
|
{"IIDC Mode", "ieee17221.iidc_mode",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_iidc_rate,
|
|
|
|
{"IIDC Rate", "ieee17221.iidc_rate",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_fmt,
|
|
|
|
{"FMT", "ieee17221.fmt",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, AEM_MASK_FMT, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_fdf_evt,
|
|
|
|
{"FDF EVT", "ieee17221.fdf_evt",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, AEM_MASK_FDF_EVT, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_fdf_sfc,
|
|
|
|
{"FDF SFC", "ieee17221.fdf_sfc",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, AEM_MASK_FDF_SFC, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_dbs,
|
|
|
|
{"DBS", "ieee17221.dbs",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_b_flag,
|
|
|
|
{"Blocking Flag", "ieee17221.flags.b",
|
|
|
|
FT_BOOLEAN, 8, NULL, AEM_MASK_B, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_nb_flag,
|
|
|
|
{"NonBlocking Flag", "ieee17221.flags.nb",
|
|
|
|
FT_BOOLEAN, 8, NULL, AEM_MASK_NB, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_label_iec_60958_cnt,
|
|
|
|
{"Label IEC 60958 Count", "ieee17221.label_iec_60958_cnt",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_label_mbla_cnt,
|
|
|
|
{"Label Multi-Bit Linear Audio Count", "ieee17221.label_mbla_cnt",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_label_midi_cnt,
|
|
|
|
{"Label Midi Slot Count", "ieee17221.label_midi_cnt",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, AEM_MASK_LABEL_MIDI_CNT, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_label_smpte_cnt,
|
|
|
|
{"Label SMPTE Slot Count", "ieee17221.label_smpte_cnt",
|
|
|
|
FT_UINT8, BASE_DEC, NULL, AEM_MASK_LABEL_SMPTE_CNT, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_video_mode,
|
|
|
|
{"Video Mode", "ieee17221.video_mode",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_compress_mode,
|
|
|
|
{"Compress Mode", "ieee17221.compress_mode",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aem_color_space,
|
|
|
|
{"Color Space", "ieee17221.color_sapce",
|
|
|
|
FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
|
|
|
|
},
|
|
|
|
{ &hf_aecp_values,
|
|
|
|
{"Values", "ieee17221.values",
|
|
|
|
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
|
2012-04-27 17:36:53 +00:00
|
|
|
},
|
|
|
|
{ &hf_aecp_status_code,
|
|
|
|
{"Status", "ieee17221.status",
|
|
|
|
FT_UINT8, BASE_HEX, VALS(aem_status_type_vals), AECP_STATUS_CODE_MASK, NULL, HFILL }
|
2012-03-02 03:30:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* END STREAM FORMAT (SF) FIELDS */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Setup protocol subtree array */
|
|
|
|
static gint *ett[] = {
|
|
|
|
&ett_17221,
|
|
|
|
&ett_adp_ent_cap,
|
|
|
|
&ett_adp_talk_cap,
|
|
|
|
&ett_adp_list_cap,
|
|
|
|
&ett_adp_cont_cap,
|
|
|
|
&ett_adp_aud_format,
|
|
|
|
&ett_adp_samp_rates,
|
|
|
|
&ett_adp_chan_format,
|
|
|
|
&ett_acmp_flags,
|
|
|
|
&ett_aem_desc_counts,
|
|
|
|
&ett_aem_descriptor,
|
|
|
|
&ett_aem_sample_rates,
|
|
|
|
&ett_aem_stream_flags,
|
|
|
|
&ett_aem_stream_formats,
|
|
|
|
&ett_aem_jack_flags,
|
|
|
|
&ett_aem_port_flags,
|
|
|
|
&ett_aem_msrp_mappings,
|
|
|
|
&ett_aem_clock_source_flags,
|
|
|
|
&ett_aem_mappings,
|
|
|
|
&ett_aem_ctrl_vals,
|
|
|
|
&ett_aem_sources,
|
|
|
|
&ett_aem_media_format,
|
|
|
|
&ett_aecp_descriptors,
|
|
|
|
&ett_aecp_flags_32,
|
|
|
|
&ett_aem_stream_format
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Register the protocol name and description */
|
|
|
|
proto_17221 = proto_register_protocol("IEEE 1722.1 Protocol", "IEEE1722.1", "ieee17221");
|
|
|
|
|
|
|
|
/* Required function calls to register the header fields and subtrees used */
|
|
|
|
proto_register_field_array(proto_17221, hf, array_length(hf));
|
|
|
|
proto_register_subtree_array(ett, array_length(ett));
|
|
|
|
}
|
|
|
|
|
2012-03-02 05:10:02 +00:00
|
|
|
void
|
|
|
|
proto_reg_handoff_17221(void)
|
2012-03-02 03:30:30 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
dissector_handle_t avb17221_handle;
|
|
|
|
|
|
|
|
/* avb17221_handle = find_dissector("ieee1722"); */
|
|
|
|
|
|
|
|
avb17221_handle = create_dissector_handle(dissect_17221, proto_17221);
|
|
|
|
dissector_add_uint("ieee1722.subtype", 0x7A, avb17221_handle);
|
|
|
|
dissector_add_uint("ieee1722.subtype", 0x7B, avb17221_handle);
|
|
|
|
dissector_add_uint("ieee1722.subtype", 0x7C, avb17221_handle);
|
|
|
|
}
|
2012-03-03 21:58:38 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Editor modelines - http://www.wireshark.org/tools/modelines.html
|
|
|
|
*
|
|
|
|
* Local variables:
|
|
|
|
* c-basic-offset: 3
|
|
|
|
* tab-width: 8
|
|
|
|
* indent-tabs-mode: nil
|
|
|
|
* End:
|
|
|
|
*
|
|
|
|
* vi: set shiftwidth=3 tabstop=8 expandtab:
|
|
|
|
* :indentSize=3:tabSize=8:noTabs=true:
|
|
|
|
*/
|