summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-ieee17221.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-10-09 08:49:40 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-10-09 08:49:40 +0000
commitde222a1b5a26d95bfabafc9ec995c6a4b169c8dc (patch)
treeb1b8a5a5ad183bbb8f7989ea5c5c7cc01bc160f9 /epan/dissectors/packet-ieee17221.c
parenteb618abad9a969fcdf32129ab807f6cf7c5acb55 (diff)
downloadwireshark-de222a1b5a26d95bfabafc9ec995c6a4b169c8dc.tar.gz
From Chris Wulff:
Minor bugfixes to packet-msrp.c and packet-mrp-mvrp.c Major updates to packet-ieee17221.c Changes to ieee17221.c update dissector from draft revision 18 / 19 code to draft revision 21. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7779 svn path=/trunk/; revision=45419
Diffstat (limited to 'epan/dissectors/packet-ieee17221.c')
-rw-r--r--epan/dissectors/packet-ieee17221.c4400
1 files changed, 2581 insertions, 1819 deletions
diff --git a/epan/dissectors/packet-ieee17221.c b/epan/dissectors/packet-ieee17221.c
index ea03a35916..0682c44b61 100644
--- a/epan/dissectors/packet-ieee17221.c
+++ b/epan/dissectors/packet-ieee17221.c
@@ -2,6 +2,7 @@
* Dissector for IEEE P1722.1
* Copyright 2011-2012, Thomas Bottom <tom.bottom@labxtechnologies.com>
* Chris Pane <chris.pane@labxtechnologies.com>
+ * Chris Wulff <chris.wulff@labxtechnologies.com>
*
* Copyright 2011, Andy Lucas <andy@xmos.com>
*
@@ -74,13 +75,17 @@
#define ADP_ENTITY_DISCOVER_MESSAGE 0x02
/* entity_capabilities_flags */
-#define ADP_AVDECC_IP_BITMASK 0x01
-#define ADP_ZERO_CONF_BITMASK 0x02
+#define ADP_EFU_MODE_BITMASK 0x01
+#define ADP_ADDRESS_ACCESS_BITMASK 0x02
#define ADP_GATEWAY_ENTITY_BITMASK 0x04
-#define ADP_AVDECC_CONTROL_BITMASK 0x08
+#define ADP_AEM_SUPPORTED_BITMASK 0x08
#define ADP_LEGACY_AVC_BITMASK 0x10
#define ADP_ASSOC_ID_SUPPORT_BITMASK 0x20
#define ADP_ASSOC_ID_VALID_BITMASK 0x40
+#define ADP_CLASS_A_SUPPORTED_BITMASK 0x80
+#define ADP_VENDOR_UNIQUE_BITMASK 0x100
+#define ADP_CLASS_B_SUPPORTED_BITMASK 0x200
+#define ADP_AS_SUPPORTED_BITMASK 0x400
/* talker capabilities flags */
#define ADP_TALK_IMPLEMENTED_BITMASK 0x0001
@@ -208,129 +213,252 @@
#define ACMP_FLAG_STREAMING_WAIT_BITMASK 0x0008
/******************************************************************************/
-/* 1722.1 AECP Offsets */
-#define AECP_STATUS_CODE_OFFSET 2
-
-#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 Common Offsets */
+#define AECP_OFFSET_VERSION 1
+#define AECP_OFFSET_CD_LENGTH 2
+#define AECP_OFFSET_TARGET_GUID 4
+#define AECP_OFFSET_CONTROLLER_GUID 12
+#define AECP_OFFSET_SEQUENCE_ID 20
+#define AECP_OFFSET_U_FLAG 22
+#define AECP_OFFSET_COMMAND_TYPE 22
+
+#define AECP_OFFSET_STATUS_CODE 2
+
+/* AECP Command Specific Offsets */
+/* IEEE 1722.1 draft D21 section 7.4.1 - 7.4.71 */
+/* Note that these values include the 12 byte common header */
+
+/* ACQUIRE_ENTITY */
+#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_INDEX 38
+
+/* LOCK_ENTITY */
+#define AECP_OFFSET_LOCK_ENTITY_FLAGS 24
+#define AECP_OFFSET_LOCK_ENTITY_LOCKED_GUID 28
+
+/* READ/WRITE_DESCRIPTOR */
+#define AECP_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX 24
+#define AECP_OFFSET_DESCRIPTOR_DESCRIPTOR 28
+#define AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_TYPE 28
+#define AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_INDEX 30
+
+/* GET/SET_CONFIGURATION */
+#define AECP_OFFSET_CONFIGURATION_CONFIGURATION_INDEX 26
+
+/* GET/SET_STREAM_FORMAT */
+#define AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_STREAM_FORMAT_STREAM_FORMAT 28
+
+/* GET/SET_VIDEO_FORMAT */
+#define AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_VIDEO_FORMAT_FORMAT_SPECIFIC 28
+#define AECP_OFFSET_VIDEO_FORMAT_ASPECT_RATIO 32
+#define AECP_OFFSET_VIDEO_FORMAT_COLOR_SPACE 34
+#define AECP_OFFSET_VIDEO_FORMAT_FRAME_SIZE 36
+
+/* GET/SET_SENSOR_FORMAT */
+#define AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_SENSOR_FORMAT_SENSOR_FORMAT 28
+
+/* GET/SET_STREAM_INFO */
+#define AECP_OFFSET_STREAM_INFO_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_STREAM_INFO_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_STREAM_INFO_FLAGS 28
+#define AECP_OFFSET_STREAM_INFO_STREAM_FORMAT 32
+#define AECP_OFFSET_STREAM_INFO_STREAM_ID 40
+#define AECP_OFFSET_STREAM_INFO_MSRP_ACCUMULATED_LATENCY 48
+#define AECP_OFFSET_STREAM_INFO_STREAM_DEST_MAC 52
+#define AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_CODE 58
+#define AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_BRIDGE_ID 60
+
+/* GET/SET_NAME */
+#define AECP_OFFSET_NAME_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_NAME_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_NAME_NAME_INDEX 28
+#define AECP_OFFSET_NAME_CONFIGURATION_INDEX 30
+#define AECP_OFFSET_NAME_NAME 32
+
+/* GET/SET_ASSOCIATION_ID */
+#define AECP_OFFSET_ASSOCIATION_ID_ASSOCIATION_ID 24
+
+/* GET/SET_SAMPLING_RATE */
+#define AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_SAMPLING_RATE_SAMPLING_RATE 28
+
+/* GET/SET_CLOCK_SOURCE */
+#define AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_CLOCK_SOURCE_CLOCK_SOURCE_INDEX 28
+
+/* GET/SET_CONTROL, GET/SET_MIXER */
+#define AECP_OFFSET_CONTROL_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_CONTROL_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_CONTROL_VALUES 28
+
+/* INCREMENT/DECREMENT_CONTROL */
+#define AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_INCDEC_CONTROL_INDEX_COUNT 28
+#define AECP_OFFSET_INCDEC_CONTROL_INDEX_LIST 32
+
+/* GET/SET_SIGNAL_SELECTOR */
+#define AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_TYPE 28
+#define AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_INDEX 30
+#define AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_OUTPUT 32
+
+/* GET/SET_MATRIX */
+#define AECP_OFFSET_MATRIX_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_MATRIX_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_MATRIX_MATRIX_COLUMN 28
+#define AECP_OFFSET_MATRIX_MATRIX_ROW 30
+#define AECP_OFFSET_MATRIX_REGION_WIDTH 32
+#define AECP_OFFSET_MATRIX_REGION_HEIGHT 34
+#define AECP_OFFSET_MATRIX_REP 36
+#define AECP_OFFSET_MATRIX_DIRECTION 36
+#define AECP_OFFSET_MATRIX_VALUE_COUNT 36
+#define AECP_OFFSET_MATRIX_ITEM_OFFSET 38
+#define AECP_OFFSET_MATRIX_VALUES 40
+
+/* START/STOP_STREAMING */
+#define AECP_OFFSET_STREAMING_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_STREAMING_DESCRIPTOR_INDEX 26
+
+/* REGISTER/DEREGISTER_UNSOLICITED_NOTIFICATION */
+/* No additional fields */
+
+/* IDENTIFY_NOTIFICATION */
+#define AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_INDEX 26
+
+/* GET_AVB_INFO */
+#define AECP_OFFSET_AVB_INFO_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_AVB_INFO_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_AVB_INFO_AS_GRANDMASTER_ID 28
+#define AECP_OFFSET_AVB_INFO_PROPAGATION_DELAY 36
+#define AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS_COUNT 42
+#define AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS 44
+
+/* GET_AS_PATH */
+#define AECP_OFFSET_AS_PATH_DESCRIPTOR_INDEX 24
+#define AECP_OFFSET_AS_PATH_COUNT 26
+#define AECP_OFFSET_AS_PATH_PATH_SEQUENCE 28
+
+/* GET_COUNTERS */
+#define AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_COUNTERS_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_COUNTERS_VALID 28
+#define AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_UP 32
+#define AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_DOWN 36
+#define AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_TX 40
+#define AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_RX 44
+#define AECP_OFFSET_COUNTERS_AVB_INTERFACE_RX_CRC_ERROR 48
+#define AECP_OFFSET_COUNTERS_AVB_INTERFACE_GPTP_GM_CHANGED 52
+#define AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_LOCKED 32
+#define AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_UNLOCKED 36
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_LOCKED 32
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_UNLOCKED 36
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_STREAM_RESET 40
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_SEQ_NUM_MISMATCH 44
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_RESET 48
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_UNCERTAIN 52
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_VALID 56
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_NOT_VALID 60
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_UNSUPPORTED_FORMAT 64
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_LATE_TIMESTAMP 68
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_EARLY_TIMESTAMP 72
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_TX 76
+#define AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_RX 80
+#define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_8 128
+#define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_7 132
+#define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_6 136
+#define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_5 140
+#define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_4 144
+#define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_3 148
+#define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_2 152
+#define AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_1 156
+
+/* GET_AUDIO_MAP, GET_VIDEO_MAP, GET_SENSOR_MAP */
+#define AECP_OFFSET_MAP_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_MAP_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_MAP_MAP_INDEX 28
+#define AECP_OFFSET_MAP_NUMBER_OF_MAPS 30
+#define AECP_OFFSET_MAP_NUMBER_OF_MAPPINGS 32
+#define AECP_OFFSET_MAP_MAPPINGS 36
+
+/* ADD/REMOVE_AUDIO_MAPPINGS, ADD/REMOVE_VIDEO_MAPPINGS, ADD/REMOVE_SENSOR_MAPPINGS */
+#define AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_ADDREM_MAP_NUMBER_OF_MAPPINGS 28
+#define AECP_OFFSET_ADDREM_MAP_MAPPINGS 32
+
+/* START_OPERATION */
+#define AECP_OFFSET_START_OPERATION_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_START_OPERATION_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_START_OPERATION_OPERATION_ID 28
+#define AECP_OFFSET_START_OPERATION_OPERATION_TYPE 30
+#define AECP_OFFSET_START_OPERATION_VALUES 32
+
+/* ABORT_OPERATION */
+#define AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_ABORT_OPERATION_OPERATION_ID 28
+
+/* OPERATION_STATUS */
+#define AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_OPERATION_STATUS_OPERATION_ID 28
+#define AECP_OFFSET_OPERATION_STATUS_PERCENT_COMPLETE 30
+
+/* AUTH_ADD/DELETE_KEY, AUTH_GET_KEY */
+#define AECP_OFFSET_AUTH_KEY_KEY_EUI 24
+#define AECP_OFFSET_AUTH_KEY_KEY_TYPE 32
+#define AECP_OFFSET_AUTH_KEY_KEY_LENGTH 32
+#define AECP_OFFSET_AUTH_KEY_KEY 36
+
+/* AUTH_GET_KEY_LIST */
+#define AECP_OFFSET_AUTH_GET_KEY_LIST_KEYCHAIN_ID 24
+#define AECP_OFFSET_AUTH_GET_KEY_LIST_NUMBER_OF_KEYS 24
+
+/* AUTH_ADD_KEY_TO_KEYCHAIN, AUTH_DELETE_KEY_FROM_KEYCHAIN */
+#define AECP_OFFSET_AUTH_KEYCHAIN_KEYCHAIN_ID 24
+#define AECP_OFFSET_AUTH_KEYCHAIN_KEY_EUI 28
+
+/* AUTH_GET_KEYCHAIN_LIST */
+#define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_KEYCHAIN_ID 24
+#define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_LIST_INDEX 26
+#define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_LISTS 28
+#define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_KEYS 30
+#define AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_KEY_EUIS 32
+
+/* AUTH_GET_IDENTITY */
+#define AECP_OFFSET_AUTH_GET_IDENTITY_KEY_GUID 24
+#define AECP_OFFSET_AUTH_GET_IDENTITY_SIGNATURE 32
+
+/* AUTH_ADD/DELETE_TOKEN */
+#define AECP_OFFSET_AUTH_TOKEN_TOKEN_LENGTH 24
+#define AECP_OFFSET_AUTH_TOKEN_AUTHENTICATION_TOKEN 28
+
+/* AUTHENTICATE/DEAUTHENTICATE */
+#define AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH 28
+#define AECP_OFFSET_AUTHENTICATE_AUTH_TOKEN 32
+
+/* ENABLE/DISABLE_TRANSPORT_SECURITY */
+#define AECP_OFFSET_TRANSPORT_SECURITY_KEY_EUI 24
+
+/* ENABLE/DISABLE_STREAM_ENCRYPTION */
+#define AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_STREAM_ENCRYPTION_KEY_EUI 28
/* aecp_message_type */
/* 1722.1 draft 2011-11-14 table 9.1 */
@@ -370,108 +498,142 @@
#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
+/* IEEE 1722.1 draft D21 Table 7.126 */
+#define AECP_COMMAND_ACQUIRE_ENTITY 0x0000
+#define AECP_COMMAND_LOCK_ENTITY 0x0001
+#define AECP_COMMAND_ENTITY_AVAILABLE 0x0002
+#define AECP_COMMAND_CONTROLLER_AVAILABLE 0x0003
+#define AECP_COMMAND_READ_DESCRIPTOR 0x0004
+#define AECP_COMMAND_WRITE_DESCRIPTOR 0x0005
+#define AECP_COMMAND_SET_CONFIGURATION 0x0006
+#define AECP_COMMAND_GET_CONFIGURATION 0x0007
+#define AECP_COMMAND_SET_STREAM_FORMAT 0x0008
+#define AECP_COMMAND_GET_STREAM_FORMAT 0x0009
+#define AECP_COMMAND_SET_VIDEO_FORMAT 0x000a
+#define AECP_COMMAND_GET_VIDEO_FORMAT 0x000b
+#define AECP_COMMAND_SET_SENSOR_FORMAT 0x000c
+#define AECP_COMMAND_GET_SENSOR_FORMAT 0x000d
+#define AECP_COMMAND_SET_STREAM_INFO 0x000e
+#define AECP_COMMAND_GET_STREAM_INFO 0x000f
+#define AECP_COMMAND_SET_NAME 0x0010
+#define AECP_COMMAND_GET_NAME 0x0011
+#define AECP_COMMAND_SET_ASSOCIATION_ID 0x0012
+#define AECP_COMMAND_GET_ASSOCIATION_ID 0x0013
+#define AECP_COMMAND_SET_SAMPLING_RATE 0x0014
+#define AECP_COMMAND_GET_SAMPLING_RATE 0x0015
+#define AECP_COMMAND_SET_CLOCK_SOURCE 0x0016
+#define AECP_COMMAND_GET_CLOCK_SOURCE 0x0017
+#define AECP_COMMAND_SET_CONTROL_VALUE 0x0018
+#define AECP_COMMAND_GET_CONTROL_VALUE 0x0019
+#define AECP_COMMAND_INCREMENT_CONTROL 0x001a
+#define AECP_COMMAND_DECREMENT_CONTROL 0x001b
+#define AECP_COMMAND_SET_SIGNAL_SELECTOR 0x001c
+#define AECP_COMMAND_GET_SIGNAL_SELECTOR 0x001d
+#define AECP_COMMAND_SET_MIXER 0x001e
+#define AECP_COMMAND_GET_MIXER 0x001f
+#define AECP_COMMAND_SET_MATRIX 0x0020
+#define AECP_COMMAND_GET_MATRIX 0x0021
+#define AECP_COMMAND_START_STREAMING 0x0022
+#define AECP_COMMAND_STOP_STREAMING 0x0023
+#define AECP_COMMAND_REGISTER_UNSOL_NOTIFICATION 0x0024
+#define AECP_COMMAND_DEREGISTER_UNSOL_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
+#define AECP_COMMAND_GET_AVB_INFO 0x0027
+#define AECP_COMMAND_GET_AS_PATH 0x0028
+#define AECP_COMMAND_GET_COUNTERS 0x0029
+#define AECP_COMMAND_REBOOT 0x002a
+#define AECP_COMMAND_GET_AUDIO_MAP 0x002b
+#define AECP_COMMAND_ADD_AUDIO_MAPPINGS 0x002c
+#define AECP_COMMAND_REMOVE_AUDIO_MAPPINGS 0x002d
+#define AECP_COMMAND_GET_VIDEO_MAP 0x002e
+#define AECP_COMMAND_ADD_VIDEO_MAPPINGS 0x002f
+#define AECP_COMMAND_REMOVE_VIDEO_MAPPINGS 0x0030
+#define AECP_COMMAND_GET_SENSOR_MAP 0x0031
+#define AECP_COMMAND_ADD_SENSOR_MAPPINGS 0x0032
+#define AECP_COMMAND_REMOVE_SENSOR_MAPPINGS 0x0033
+#define AECP_COMMAND_START_OPERATION 0x0034
+#define AECP_COMMAND_ABORT_OPERATION 0x0035
+#define AECP_COMMAND_OPERATION_STATUS 0x0036
+#define AECP_COMMAND_AUTH_ADD_KEY 0x0037
+#define AECP_COMMAND_AUTH_DELETE_KEY 0x0038
+#define AECP_COMMAND_AUTH_GET_KEY_LIST 0x0039
+#define AECP_COMMAND_AUTH_GET_KEY 0x003a
+#define AECP_COMMAND_AUTH_ADD_KEY_TO_CHAIN 0x003b
+#define AECP_COMMAND_AUTH_DELETE_KEY_FROM_CHAIN 0x003c
+#define AECP_COMMAND_AUTH_GET_KEYCHAIN_LIST 0x003d
+#define AECP_COMMAND_AUTH_GET_IDENTITY 0x003e
+#define AECP_COMMAND_AUTH_ADD_TOKEN 0x003f
+#define AECP_COMMAND_AUTH_DELETE_TOKEN 0x0040
+#define AECP_COMMAND_AUTHENTICATE 0x0041
+#define AECP_COMMAND_DEAUTHENTICATE 0x0042
+#define AECP_COMMAND_ENABLE_TRANSPORT_SECURITY 0x0043
+#define AECP_COMMAND_DISABLE_TRANSPORT_SECURITY 0x0044
+#define AECP_COMMAND_ENABLE_STREAM_ENCRYPTION 0x0045
+#define AECP_COMMAND_DISABLE_STREAM_ENCRYPTION 0x0046
/* 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 */
+/* IEEE 1722.1 draft D21 Table 7.127 */
#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_NOT_AUTHENTICATED 5
+#define AEM_STATUS_AUTHENTICATION_DISABLED 6
#define AEM_STATUS_BAD_ARGUMENTS 7
#define AEM_STATUS_NO_RESOURCES 8
#define AEM_STATUS_IN_PROGRESS 9
+#define AEM_STATUS_ENTITY_MISBEHAVING 10
+#define AEM_STATUS_NOT_SUPPORTED 11
+#define AEM_STATUS_STREAM_IS_RUNNING 12
/* 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) */
+/* AEM descriptor indices */
+/* IEEE 1722.1 draft D21 TABLE 7.1 */
+#define AEM_DESCRIPTOR_ENTITY 0x0000
+#define AEM_DESCRIPTOR_CONFIGURATION 0x0001
+#define AEM_DESCRIPTOR_AUDIO_UNIT 0x0002
+#define AEM_DESCRIPTOR_VIDEO_UNIT 0x0003
+#define AEM_DESCRIPTOR_SENSOR_UNIT 0x0004
+#define AEM_DESCRIPTOR_STREAM_INPUT 0x0005
+#define AEM_DESCRIPTOR_STREAM_OUTPUT 0x0006
+#define AEM_DESCRIPTOR_JACK_INPUT 0x0007
+#define AEM_DESCRIPTOR_JACK_OUTPUT 0x0008
+#define AEM_DESCRIPTOR_AVB_INTERFACE 0x0009
+#define AEM_DESCRIPTOR_CLOCK_SOURCE 0x000a
+#define AEM_DESCRIPTOR_MEMORY_OBJECT 0x000b
+#define AEM_DESCRIPTOR_LOCALE 0x000c
+#define AEM_DESCRIPTOR_STRINGS 0x000d
+#define AEM_DESCRIPTOR_STREAM_PORT_INPUT 0x000e
+#define AEM_DESCRIPTOR_STREAM_PORT_OUTPUT 0x000f
+#define AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT 0x0010
+#define AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT 0x0011
+#define AEM_DESCRIPTOR_INTERNAL_PORT_INPUT 0x0012
+#define AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT 0x0013
+#define AEM_DESCRIPTOR_AUDIO_CLUSTER 0x0014
+#define AEM_DESCRIPTOR_VIDEO_CLUSTER 0x0015
+#define AEM_DESCRIPTOR_SENSOR_CLUSTER 0x0016
+#define AEM_DESCRIPTOR_AUDIO_MAP 0x0017
+#define AEM_DESCRIPTOR_VIDEO_MAP 0x0018
+#define AEM_DESCRIPTOR_SENSOR_MAP 0x0019
+#define AEM_DESCRIPTOR_CONTROL 0x001a
+#define AEM_DESCRIPTOR_SIGNAL_SELECTOR 0x001b
+#define AEM_DESCRIPTOR_MIXER 0x001c
+#define AEM_DESCRIPTOR_MATRIX 0x001d
+#define AEM_DESCRIPTOR_MATRIX_SIGNAL 0x001e
+#define AEM_DESCRIPTOR_SIGNAL_SPLITTER 0x001f
+#define AEM_DESCRIPTOR_SIGNAL_COMBINER 0x0020
+#define AEM_DESCRIPTOR_SIGNAL_DEMULTIPLEXER 0x0021
+#define AEM_DESCRIPTOR_SIGNAL_MULTIPLEXER 0x0022
+#define AEM_DESCRIPTOR_SIGNAL_TRANSCODER 0x0023
+#define AEM_DESCRIPTOR_CLOCK_DOMAIN 0x0024
+#define AEM_DESCRIPTOR_CONTROL_BLOCK 0x0025
+#define AEM_DESCRIPTOR_INVALID 0xFFFF
+
+/* AEM JACK TYPES */
+/* IEEE 1722.1 draft D21 TABLE 7.12 */
#define AEM_JACKTYPE_SPEAKER 0x0000
#define AEM_JACKTYPE_HEADPHONE 0x0001
#define AEM_JACKTYPE_ANALOG_MICROPHONE 0x0002
@@ -507,62 +669,75 @@
#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) */
+/* CONTROL TYPES */
+/* IEEE 1722.1 draft D21 TABLE 7.94 */
+#define AEM_CONTROL_ENABLE 0x90e0f00000000000
+#define AEM_CONTROL_IDENTIFY 0x90e0f00000000001
+#define AEM_CONTROL_MUTE 0x90e0f00000000002
+#define AEM_CONTROL_INVERT 0x90e0f00000000003
+#define AEM_CONTROL_GAIN 0x90e0f00000000004
+#define AEM_CONTROL_ATTENUATE 0x90e0f00000000005
+#define AEM_CONTROL_DELAY 0x90e0f00000000006
+#define AEM_CONTROL_SRC_MODE 0x90e0f00000000007
+#define AEM_CONTROL_SNAPSHOT 0x90e0f00000000008
+#define AEM_CONTROL_POW_LINE_FREQ 0x90e0f00000000009
+#define AEM_CONTROL_POWER_STATUS 0x90e0f0000000000a
+#define AEM_CONTROL_FAN_STATUS 0x90e0f0000000000b
+#define AEM_CONTROL_TEMPERATURE 0x90e0f0000000000c
+#define AEM_CONTROL_ALTITUDE 0x90e0f0000000000d
+#define AEM_CONTROL_ABSOLUTE_HUMIDITY 0x90e0f0000000000e
+#define AEM_CONTROL_RELATIVE_HUMIDITY 0x90e0f0000000000f
+#define AEM_CONTROL_ORIENTATION 0x90e0f00000000010
+#define AEM_CONTROL_VELOCITY 0x90e0f00000000011
+#define AEM_CONTROL_ACCELERATION 0x90e0f00000000012
+#define AEM_CONTROL_FILTER_RESPONSE 0x90e0f00000000013
+/* 0x90e0f00000000014 - 0x90e0f0000000ffff reserved */
+#define AEM_CONTROL_PANPOT 0x90e0f00000010000
+#define AEM_CONTROL_PHANTOM 0x90e0f00000010001
+#define AEM_CONTROL_AUDIO_SCALE 0x90e0f00000010002
+#define AEM_CONTROL_AUDIO_METERS 0x90e0f00000010003
+#define AEM_CONTROL_AUDIO_SPECTRUM 0x90e0f00000010004
+/* 0x90e0f00000010005 - 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 0x90e0f00000020003
+#define AEM_CONTROL_FOCUS 0x90e0f00000020004
+#define AEM_CONTROL_FOCUS_AUTO 0x90e0f00000020005
+#define AEM_CONTROL_IRIS 0x90e0f00000020006
+#define AEM_CONTROL_ZOOM 0x90e0f00000020007
+#define AEM_CONTROL_PRIVACY 0x90e0f00000020008
+#define AEM_CONTROL_BACKLIGHT 0x90e0f00000020009
+#define AEM_CONTROL_BRIGHTNESS 0x90e0f0000002000a
+#define AEM_CONTROL_CONTRAST 0x90e0f0000002000b
+#define AEM_CONTROL_HUE 0x90e0f0000002000c
+#define AEM_CONTROL_SATURATION 0x90e0f0000002000d
+#define AEM_CONTROL_SHARPNESS 0x90e0f0000002000e
+#define AEM_CONTROL_GAMMA 0x90e0f0000002000f
+#define AEM_CONTROL_WHITE_BAL_TEMP 0x90e0f00000020010
+#define AEM_CONTROL_WHITE_BAL_TEMP_AUTO 0x90e0f00000020011
+#define AEM_CONTROL_WHITE_BAL_COMP 0x90e0f00000020012
+#define AEM_CONTROL_WHITE_BAL_COMP_AUTO 0x90e0f00000020013
+#define AEM_CONTROL_DIGITAL_ZOOM 0x90e0f00000020014
+/* 0x90e0f00000020015 - 0x90e0f0000002ffff reserved */
+#define AEM_CONTROL_MEDIA_PLAYLIST 0x90e0f00000030000
+#define AEM_CONTROL_MEDIA_PLAYLIST_NAME 0x90e0f00000030001
+#define AEM_CONTROL_MEDIA_DISK 0x90e0f00000030002
+#define AEM_CONTROL_MEDIA_DISK_NAME 0x90e0f00000030003
+#define AEM_CONTROL_MEDIA_TRACK 0x90e0f00000030004
+#define AEM_CONTROL_MEDIA_TRACK_NAME 0x90e0f00000030005
+#define AEM_CONTROL_MEDIA_SPEED 0x90e0f00000030006
+#define AEM_CONTROL_MEDIA_SAMPLE_POSITION 0x90e0f00000030007
+#define AEM_CONTROL_MEDIA_PLAYBACK_TRANSPORT 0x90e0f00000030008
+#define AEM_CONTROL_MEDIA_RECORD_TRANSPORT 0x90e0f00000030009
+/* 0x90e0f0000003000a - 0x90e0f0000003ffff reserved */
+#define AEM_CONTROL_FREQUENCY 0x90e0f00000040000
+#define AEM_CONTROL_MODULATION 0x90e0f00000040001
+#define AEM_CONTROL_POLARIZATION 0x90e0f00000040002
+/* 0x90e0f00000040003 - 0x90e0f0ffffffffff reserved */
+
+/* AEM Control Value Types */
+/* IEEE 1722.1 draft D21 TABLE 7.106 */
#define AEM_CONTROL_LINEAR_INT8 0x0000
#define AEM_CONTROL_LINEAR_UINT8 0x0001
#define AEM_CONTROL_LINEAR_INT16 0x0002
@@ -583,315 +758,495 @@
#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
+#define AEM_CONTROL_SELECTOR_STRING 0x0014
+#define AEM_CONTROL_ARRAY_INT8 0x0015
+#define AEM_CONTROL_ARRAY_UINT8 0x0016
+#define AEM_CONTROL_ARRAY_INT16 0x0017
+#define AEM_CONTROL_ARRAY_UINT16 0x0018
+#define AEM_CONTROL_ARRAY_INT32 0x0019
+#define AEM_CONTROL_ARRAY_UINT32 0x001a
+#define AEM_CONTROL_ARRAY_INT64 0x001b
+#define AEM_CONTROL_ARRAY_UINT64 0x001c
+#define AEM_CONTROL_ARRAY_FLOAT 0x001d
+#define AEM_CONTROL_ARRAY_DOUBLE 0x001e
+#define AEM_CONTROL_UTF8 0x001f
+#define AEM_CONTROL_BODE_PLOT 0x0020
+#define AEM_CONTROL_SMPTE_TIME 0x0021
+#define AEM_CONTROL_SAMPLE_RATE 0x0022
+#define AEM_CONTROL_GPTP_TIME 0x0023
+/* 0x0024-0x3ffd RESERVED Reserved for future use. */
+#define AEM_CONTROL_VENDOR 0x3ffe
+/* 0x3fff EXPANSION Reserved for future expansion. */
+
+/* AEM CLOCK_SOURCE Types */
+/* IEEE 1722.1 draft D21 TABLE 7.17 */
+#define AEM_CLOCK_INTERNAL 0x0000
+#define AEM_CLOCK_EXTERNAL 0x0001
+#define AEM_CLOCK_INPUT_STREAM 0x0002
+#define AEM_CLOCK_MEDIA_CLOCK_STREAM 0x0003
+/* 0x0004-0xfffe RESERVED Reserved for future use. */
+/* 0xffff EXPANSION Reserved for future expansion. */
/* AEM Stream Format Definitions */
-#define SF61883_IIDC_SUBTYPE 0x00
+/* IEEE 1722.1 draft D21 TABLE 7.65 */
+#define IEC_61883_IIDC_SUBTYPE 0x00
#define MMA_SUBTYPE 0x01
+#define AVTP_AUDIO_SUBTYPE 0x02
+#define AVTP_VIDEO_SUBTYPE 0x03
+#define AVTP_CONTROL_SUBTYPE 0x04
+/* 0x05-0x7e RESERVED Reserved for future protocols. */
#define EXPERIMENTAL_SUBTYPE 0x7f
+/* AEM Descriptor Offsets */
+/* IEEE 1722.1 draft D21 sections 7.2.1 - 7.2.33 */
+#define AEM_OFFSET_DESCRIPTOR_TYPE 0
+#define AEM_OFFSET_DESCRIPTOR_ID 2
+
+#define ENTITY_OFFSET_ENTITY_GUID 4
+#define ENTITY_OFFSET_VENDOR_ID 12
+#define ENTITY_OFFSET_ENTITY_MODEL_ID 16
+#define ENTITY_OFFSET_ENTITY_CAPABILITIES 20
+#define ENTITY_OFFSET_TALKER_STREAM_SOURCES 24
+#define ENTITY_OFFSET_TALKER_CAPABILITIES 26
+#define ENTITY_OFFSET_LISTENER_STREAM_SINKS 28
+#define ENTITY_OFFSET_LISTENER_CAPABILITIES 30
+#define ENTITY_OFFSET_CONTROLLER_CAPABILITIES 32
+#define ENTITY_OFFSET_AVAILABLE_INDEX 36
+#define ENTITY_OFFSET_ASSOCIATION_ID 40
+#define ENTITY_OFFSET_ENTITY_NAME 48
+#define ENTITY_OFFSET_VENDOR_NAME_STRING 112
+#define ENTITY_OFFSET_MODEL_NAME_STRING 114
+#define ENTITY_OFFSET_FIRMWARE_VERSION 116
+#define ENTITY_OFFSET_GROUP_NAME 180
+#define ENTITY_OFFSET_SERIAL_NUMBER 244
+#define ENTITY_OFFSET_CONFIGURATIONS_COUNT 308
+#define ENTITY_OFFSET_CURRENT_CONFIGURATION 310
+
+#define CONFIGURATION_OFFSET_OBJECT_NAME 4
+#define CONFIGURATION_OFFSET_LOCALIZED_DESCRIPTION 68
+#define CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_COUNT 70
+#define CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_OFFSET 72
+#define CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS 74
+
+#define AUDIO_UNIT_OFFSET_OBJECT_NAME 4
+#define AUDIO_UNIT_OFFSET_LOCALIZED_DESCRIPTION 68
+#define AUDIO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX 70
+#define AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS 72
+#define AUDIO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT 74
+#define AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS 76
+#define AUDIO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT 78
+#define AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS 80
+#define AUDIO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT 82
+#define AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS 84
+#define AUDIO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT 86
+#define AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS 88
+#define AUDIO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT 90
+#define AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS 92
+#define AUDIO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT 94
+#define AUDIO_UNIT_OFFSET_NUMBER_OF_CONTROLS 96
+#define AUDIO_UNIT_OFFSET_BASE_CONTROL 98
+#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_NUMBER_SPLITTERS 112
+#define AUDIO_UNIT_OFFSET_BASE_SPLITTER 114
+#define AUDIO_UNIT_OFFSET_NUMBER_COMBINERS 116
+#define AUDIO_UNIT_OFFSET_BASE_COMBINER 118
+#define AUDIO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS 120
+#define AUDIO_UNIT_OFFSET_BASE_DEMULTIPLEXER 122
+#define AUDIO_UNIT_OFFSET_NUMBER_MULTIPLEXERS 124
+#define AUDIO_UNIT_OFFSET_BASE_MULTIPLEXER 126
+#define AUDIO_UNIT_OFFSET_NUMBER_TRANSCODERS 128
+#define AUDIO_UNIT_OFFSET_BASE_TRANSCODER 130
+#define AUDIO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS 132
+#define AUDIO_UNIT_OFFSET_BASE_CONTROL_BLOCK 134
+#define AUDIO_UNIT_OFFSET_CURRENT_SAMPLE_RATE 136
+#define AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET 140
+#define AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT 142
+
+#define VIDEO_UNIT_OFFSET_OBJECT_NAME 4
+#define VIDEO_UNIT_OFFSET_LOCALIZED_DESCRIPTION 68
+#define VIDEO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX 70
+#define VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS 72
+#define VIDEO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT 74
+#define VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS 76
+#define VIDEO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT 78
+#define VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS 80
+#define VIDEO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT 82
+#define VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS 84
+#define VIDEO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT 86
+#define VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS 88
+#define VIDEO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT 90
+#define VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS 92
+#define VIDEO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT 94
+#define VIDEO_UNIT_OFFSET_NUMBER_OF_CONTROLS 96
+#define VIDEO_UNIT_OFFSET_BASE_CONTROL 98
+#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 VIDEO_UNIT_OFFSET_NUMBER_SPLITTERS 112
+#define VIDEO_UNIT_OFFSET_BASE_SPLITTER 114
+#define VIDEO_UNIT_OFFSET_NUMBER_COMBINERS 116
+#define VIDEO_UNIT_OFFSET_BASE_COMBINER 118
+#define VIDEO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS 120
+#define VIDEO_UNIT_OFFSET_BASE_DEMULTIPLEXER 122
+#define VIDEO_UNIT_OFFSET_NUMBER_MULTIPLEXERS 124
+#define VIDEO_UNIT_OFFSET_BASE_MULTIPLEXER 126
+#define VIDEO_UNIT_OFFSET_NUMBER_TRANSCODERS 128
+#define VIDEO_UNIT_OFFSET_BASE_TRANSCODER 130
+#define VIDEO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS 132
+#define VIDEO_UNIT_OFFSET_BASE_CONTROL_BLOCK 134
+
+#define SENSOR_UNIT_OFFSET_OBJECT_NAME 4
+#define SENSOR_UNIT_OFFSET_LOCALIZED_DESCRIPTION 68
+#define SENSOR_UNIT_OFFSET_CLOCK_DOMAIN_INDEX 70
+#define SENSOR_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS 72
+#define SENSOR_UNIT_OFFSET_BASE_STREAM_INPUT_PORT 74
+#define SENSOR_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS 76
+#define SENSOR_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT 78
+#define SENSOR_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS 80
+#define SENSOR_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT 82
+#define SENSOR_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS 84
+#define SENSOR_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT 86
+#define SENSOR_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS 88
+#define SENSOR_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT 90
+#define SENSOR_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS 92
+#define SENSOR_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT 94
+#define SENSOR_UNIT_OFFSET_NUMBER_OF_CONTROLS 96
+#define SENSOR_UNIT_OFFSET_BASE_CONTROL 98
+#define SENSOR_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS 100
+#define SENSOR_UNIT_OFFSET_BASE_SIGNAL_SELECTOR 102
+#define SENSOR_UNIT_OFFSET_NUMBER_MIXERS 104
+#define SENSOR_UNIT_OFFSET_BASE_MIXER 106
+#define SENSOR_UNIT_OFFSET_NUMBER_MATRICES 108
+#define SENSOR_UNIT_OFFSET_BASE_MATRIX 110
+#define SENSOR_UNIT_OFFSET_NUMBER_SPLITTERS 112
+#define SENSOR_UNIT_OFFSET_BASE_SPLITTER 114
+#define SENSOR_UNIT_OFFSET_NUMBER_COMBINERS 116
+#define SENSOR_UNIT_OFFSET_BASE_COMBINER 118
+#define SENSOR_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS 120
+#define SENSOR_UNIT_OFFSET_BASE_DEMULTIPLEXER 122
+#define SENSOR_UNIT_OFFSET_NUMBER_MULTIPLEXERS 124
+#define SENSOR_UNIT_OFFSET_BASE_MULTIPLEXER 126
+#define SENSOR_UNIT_OFFSET_NUMBER_TRANSCODERS 128
+#define SENSOR_UNIT_OFFSET_BASE_TRANSCODER 130
+#define SENSOR_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS 132
+#define SENSOR_UNIT_OFFSET_BASE_CONTROL_BLOCK 134
+
+#define STREAM_OFFSET_OBJECT_NAME 4
+#define STREAM_OFFSET_LOCALIZED_DESCRIPTION 68
+#define STREAM_OFFSET_CLOCK_DOMAIN_INDEX 70
+#define STREAM_OFFSET_STREAM_FLAGS 72
+#define STREAM_OFFSET_CURRENT_FORMAT 74
+#define STREAM_OFFSET_FORMATS_OFFSET 82
+#define STREAM_OFFSET_NUMBER_OF_FORMATS 84
+#define STREAM_OFFSET_BACKUP_TALKER_GUID_0 86
+#define STREAM_OFFSET_BACKUP_TALKER_UNIQUE_0 94
+#define STREAM_OFFSET_BACKUP_TALKER_GUID_1 96
+#define STREAM_OFFSET_BACKUP_TALKER_UNIQUE_1 104
+#define STREAM_OFFSET_BACKUP_TALKER_GUID_2 106
+#define STREAM_OFFSET_BACKUP_TALKER_UNIQUE_2 114
+#define STREAM_OFFSET_BACKEDUP_TALKER_GUID 116
+#define STREAM_OFFSET_BACKEDUP_TALKER_UNIQUE 124
+#define STREAM_OFFSET_AVB_INTERFACE_ID 126
+#define STREAM_OFFSET_BUFFER_LENGTH 128
+
+#define JACK_OFFSET_OBJECT_NAME 4
+#define JACK_OFFSET_LOCALIZED_DESCRIPTION 68
+#define JACK_OFFSET_JACK_FLAGS 70
+#define JACK_OFFSET_JACK_TYPE 72
+#define JACK_OFFSET_JACK_NUMBER_OF_CONTROLS 74
+#define JACK_OFFSET_JACK_BASE_CONTROL 76
+
+#define AVB_INTERFACE_OFFSET_OBJECT_NAME 4
+#define AVB_INTERFACE_OFFSET_LOCALIZED_DESCRIPTION 68
+#define AVB_INTERFACE_OFFSET_MAC_ADDRESS 70
+#define AVB_INTERFACE_OFFSET_INTERFACE_FLAGS 76
+#define AVB_INTERFACE_OFFSET_CLOCK_IDENTITY 78
+#define AVB_INTERFACE_OFFSET_PRIORITY1 86
+#define AVB_INTERFACE_OFFSET_CLOCK_CLASS 87
+#define AVB_INTERFACE_OFFSET_OFFSET_SCALED_LOG_VARIANCE 88
+#define AVB_INTERFACE_OFFSET_CLOCK_ACCURACY 90
+#define AVB_INTERFACE_OFFSET_PRIORITY2 91
+#define AVB_INTERFACE_OFFSET_DOMAIN_NUMBER 92
+#define AVB_INTERFACE_OFFSET_LOG_SYNC_INTERVAL 93
+
+#define CLOCK_SOURCE_OFFSET_OBJECT_NAME 4
+#define CLOCK_SOURCE_OFFSET_LOCALIZED_DESCRIPTION 68
+#define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_FLAGS 70
+#define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_TYPE 72
+#define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_IDENTIFIER 74
+#define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_TYPE 82
+#define CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_INDEX 84
+
+#define MEMORY_OBJECT_OFFSET_OBJECT_NAME 4
+#define MEMORY_OBJECT_OFFSET_LOCALIZED_DESCRIPTION 68
+#define MEMORY_OBJECT_OFFSET_MEMORY_OBJECT_TYPE 70
+#define MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_TYPE 72
+#define MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_INDEX 74
+#define MEMORY_OBJECT_OFFSET_START_ADDRESS 76
+#define MEMORY_OBJECT_OFFSET_LENGTH 84
+
+#define LOCALE_OFFSET_LOCALE_IDENTIFIER 4
+#define LOCALE_OFFSET_NUMBER_OF_STRINGS 68
+#define LOCALE_OFFSET_BASE_STRINGS 70
+
+#define STRINGS_OFFSET_STRING0 4
+
+#define STREAM_PORT_OFFSET_CLOCK_DOMAIN_INDEX 4
+#define STREAM_PORT_OFFSET_PORT_FLAGS 6
+#define STREAM_PORT_OFFSET_NUMBER_OF_CONTROLS 8
+#define STREAM_PORT_OFFSET_BASE_CONTROL 10
+#define STREAM_PORT_OFFSET_NUMBER_OF_CLUSTERS 12
+#define STREAM_PORT_OFFSET_BASE_CLUSTER 14
+#define STREAM_PORT_OFFSET_NUMBER_AUDIO_MAPS 16
+#define STREAM_PORT_OFFSET_BASE_AUDIO_MAP 18
+
+#define EXTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX 4
+#define EXTERNAL_PORT_OFFSET_PORT_FLAGS 6
+#define EXTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS 8
+#define EXTERNAL_PORT_OFFSET_BASE_CONTROL 10
+#define EXTERNAL_PORT_OFFSET_SIGNAL_TYPE 12
+#define EXTERNAL_PORT_OFFSET_SIGNAL_INDEX 14
+#define EXTERNAL_PORT_OFFSET_SIGNAL_OUTPUT 16
+#define EXTERNAL_PORT_OFFSET_BLOCK_LATENCY 18
+#define EXTERNAL_PORT_OFFSET_JACK_INDEX 22
+
+#define INTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX 4
+#define INTERNAL_PORT_OFFSET_PORT_FLAGS 6
+#define INTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS 8
+#define INTERNAL_PORT_OFFSET_BASE_CONTROL 10
+#define INTERNAL_PORT_OFFSET_SIGNAL_TYPE 12
+#define INTERNAL_PORT_OFFSET_SIGNAL_INDEX 14
+#define INTERNAL_PORT_OFFSET_SIGNAL_OUTPUT 16
+#define INTERNAL_PORT_OFFSET_BLOCK_LATENCY 18
+#define INTERNAL_PORT_OFFSET_INTERNAL_INDEX 22
+
+#define AUDIO_CLUSTER_OFFSET_OBJECT_NAME 4
+#define AUDIO_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION 68
+#define AUDIO_CLUSTER_OFFSET_SIGNAL_TYPE 70
+#define AUDIO_CLUSTER_OFFSET_SIGNAL_ID 72
+#define AUDIO_CLUSTER_OFFSET_SIGNAL_OUTPUT 74
+#define AUDIO_CLUSTER_OFFSET_PATH_LATENCY 76
+#define AUDIO_CLUSTER_OFFSET_BLOCK_LATENCY 80
+#define AUDIO_CLUSTER_OFFSET_CHANNEL_COUNT 84
+#define AUDIO_CLUSTER_OFFSET_FORMAT 86
+
+#define VIDEO_CLUSTER_OFFSET_OBJECT_NAME 4
+#define VIDEO_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION 68
+#define VIDEO_CLUSTER_OFFSET_SIGNAL_TYPE 70
+#define VIDEO_CLUSTER_OFFSET_SIGNAL_ID 72
+#define VIDEO_CLUSTER_OFFSET_SIGNAL_OUTPUT 74
+#define VIDEO_CLUSTER_OFFSET_PATH_LATENCY 76
+#define VIDEO_CLUSTER_OFFSET_BLOCK_LATENCY 80
+#define VIDEO_CLUSTER_OFFSET_FORMAT 84
+#define VIDEO_CLUSTER_OFFSET_CURRENT_FORMAT_SPECIFIC 85
+#define VIDEO_CLUSTER_OFFSET_SUPPORTED_FORMAT_SPECIFICS_OFFSET 89
+#define VIDEO_CLUSTER_OFFSET_SUPPORTED_FORMAT_SPECIFICS_COUNT 91
+#define VIDEO_CLUSTER_OFFSET_CURRENT_SAMPLING_RATE 93
+#define VIDEO_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_OFFSET 97
+#define VIDEO_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_COUNT 99
+#define VIDEO_CLUSTER_OFFSET_CURRENT_ASPECT_RATIO 101
+#define VIDEO_CLUSTER_OFFSET_SUPPORTED_ASPECT_RATIOS_OFFSET 103
+#define VIDEO_CLUSTER_OFFSET_SUPPORTED_ASPECT_RATIOS_COUNT 105
+#define VIDEO_CLUSTER_OFFSET_CURRENT_SIZE 107
+#define VIDEO_CLUSTER_OFFSET_SUPPORTED_SIZES_OFFSET 111
+#define VIDEO_CLUSTER_OFFSET_SUPPORTED_SIZES_COUNT 113
+#define VIDEO_CLUSTER_OFFSET_CURRENT_COLOR_SPACE 115
+#define VIDEO_CLUSTER_OFFSET_SUPPORTED_COLOR_SPACES_OFFSET 117
+#define VIDEO_CLUSTER_OFFSET_SUPPORTED_COLOR_SPACES_COUNT 119
+
+#define SENSOR_CLUSTER_OFFSET_OBJECT_NAME 4
+#define SENSOR_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION 68
+#define SENSOR_CLUSTER_OFFSET_SIGNAL_TYPE 70
+#define SENSOR_CLUSTER_OFFSET_SIGNAL_ID 72
+#define SENSOR_CLUSTER_OFFSET_SIGNAL_OUTPUT 74
+#define SENSOR_CLUSTER_OFFSET_PATH_LATENCY 76
+#define SENSOR_CLUSTER_OFFSET_BLOCK_LATENCY 80
+#define SENSOR_CLUSTER_OFFSET_CURRENT_FORMAT 84
+#define SENSOR_CLUSTER_OFFSET_SUPPORTED_FORMATS_OFFSET 92
+#define SENSOR_CLUSTER_OFFSET_SUPPORTED_FORMATS_COUNT 94
+#define SENSOR_CLUSTER_OFFSET_CURRENT_SAMPLING_RATE 96
+#define SENSOR_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_OFFSET 100
+#define SENSOR_CLUSTER_OFFSET_SUPPORTED_SAMPLING_RATES_COUNT 102
+
+#define AUDIO_MAP_OFFSET_MAPPINGS_OFFSET 4
+#define AUDIO_MAP_OFFSET_NUMBER_OF_MAPPINGS 6
+
+#define VIDEO_MAP_OFFSET_MAPPINGS_OFFSET 4
+#define VIDEO_MAP_OFFSET_NUMBER_OF_MAPPINGS 6
+
+#define SENSOR_MAP_OFFSET_MAPPINGS_OFFSET 4
+#define SENSOR_MAP_OFFSET_NUMBER_OF_MAPPINGS 6
+
+#define CONTROL_OFFSET_OBJECT_NAME 4
+#define CONTROL_OFFSET_LOCALIZED_DESCRIPTION 68
+#define CONTROL_OFFSET_BLOCK_LATENCY 70
+#define CONTROL_OFFSET_CONTROL_LATENCY 74
+#define CONTROL_OFFSET_CONTROL_DOMAIN 78
+#define CONTROL_OFFSET_CONTROL_VALUE_TYPE 80
+#define CONTROL_OFFSET_CONTROL_TYPE 82
+#define CONTROL_OFFSET_RESET_TIME 90
+#define CONTROL_OFFSET_VALUES_OFFSET 94
+#define CONTROL_OFFSET_NUMBER_OF_VALUES 96
+#define CONTROL_OFFSET_SIGNAL_TYPE 98
+#define CONTROL_OFFSET_SIGNAL_INDEX 100
+#define CONTROL_OFFSET_SIGNAL_OUTPUT 102
+
+#define SIGNAL_SELECTOR_OFFSET_OBJECT_NAME 4
+#define SIGNAL_SELECTOR_OFFSET_LOCALIZED_DESCRIPTION 68
+#define SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY 70
+#define SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY 74
+#define SIGNAL_SELECTOR_OFFSET_CONTROL_DOMAIN 78
+#define SIGNAL_SELECTOR_OFFSET_SOURCES_OFFSET 80
+#define SIGNAL_SELECTOR_OFFSET_NUMBER_OF_SOURCES 82
+#define SIGNAL_SELECTOR_OFFSET_CURRENT_SIGNAL_TYPE 84
+#define SIGNAL_SELECTOR_OFFSET_CURRENT_SIGNAL_INDEX 86
+#define SIGNAL_SELECTOR_OFFSET_CURRENT_SIGNAL_OUTPUT 88
+#define SIGNAL_SELECTOR_OFFSET_DEFAULT_SOURCE_TYPE 90
+#define SIGNAL_SELECTOR_OFFSET_DEFAULT_SOURCE_INDEX 92
+#define SIGNAL_SELECTOR_OFFSET_DEFAULT_SIGNAL_OUTPUT 94
+
+#define MIXER_OFFSET_OBJECT_NAME 4
+#define MIXER_OFFSET_LOCALIZED_DESCRIPTION 68
+#define MIXER_OFFSET_BLOCK_LATENCY 70
+#define MIXER_OFFSET_CONTROL_LATENCY 74
+#define MIXER_OFFSET_CONTROL_DOMAIN 78
+#define MIXER_OFFSET_CONTROL_VALUE_TYPE 80
+#define MIXER_OFFSET_SOURCES_OFFSET 82
+#define MIXER_OFFSET_NUMBER_OF_SOURCES 84
+#define MIXER_OFFSET_VALUE_OFFSET 86
+
+#define MATRIX_OFFSET_OBJECT_NAME 4
+#define MATRIX_OFFSET_LOCALIZED_DESCRIPTION 68
+#define MATRIX_OFFSET_BLOCK_LATENCY 70
+#define MATRIX_OFFSET_CONTROL_LATENCY 74
+#define MATRIX_OFFSET_CONTROL_DOMAIN 78
+#define MATRIX_OFFSET_CONTROL_VALUE_TYPE 80
+#define MATRIX_OFFSET_CONTROL_TYPE 82
+#define MATRIX_OFFSET_WIDTH 90
+#define MATRIX_OFFSET_HEIGHT 92
+#define MATRIX_OFFSET_VALUES_OFFSET 94
+#define MATRIX_OFFSET_NUMBER_OF_VALUES 96
+#define MATRIX_OFFSET_NUMBER_OF_SOURCES 98
+#define MATRIX_OFFSET_BASE_SOURCE 100
+
+#define MATRIX_SIGNAL_OFFSET_SIGNALS_COUNT 4
+#define MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET 6
+
+#define SIGNAL_SPLITTER_OFFSET_OBJECT_NAME 4
+#define SIGNAL_SPLITTER_OFFSET_LOCALIZED_DESCRIPTION 68
+#define SIGNAL_SPLITTER_OFFSET_BLOCK_LATENCY 70
+#define SIGNAL_SPLITTER_OFFSET_CONTROL_LATENCY 74
+#define SIGNAL_SPLITTER_OFFSET_CONTROL_DOMAIN 78
+#define SIGNAL_SPLITTER_OFFSET_SIGNAL_TYPE 80
+#define SIGNAL_SPLITTER_OFFSET_SIGNAL_INDEX 82
+#define SIGNAL_SPLITTER_OFFSET_SIGNAL_OUTPUT 84
+#define SIGNAL_SPLITTER_OFFSET_NUMBER_OF_OUTPUTS 86
+#define SIGNAL_SPLITTER_OFFSET_SPLITTER_MAP_COUNT 88
+#define SIGNAL_SPLITTER_OFFSET_SPLITTER_MAP_OFFSET 90
+
+#define SIGNAL_COMBINER_OFFSET_OBJECT_NAME 4
+#define SIGNAL_COMBINER_OFFSET_LOCALIZED_DESCRIPTION 68
+#define SIGNAL_COMBINER_OFFSET_BLOCK_LATENCY 70
+#define SIGNAL_COMBINER_OFFSET_CONTROL_LATENCY 74
+#define SIGNAL_COMBINER_OFFSET_CONTROL_DOMAIN 78
+#define SIGNAL_COMBINER_OFFSET_COMBINER_MAP_COUNT 80
+#define SIGNAL_COMBINER_OFFSET_COMBINER_MAP_OFFSET 82
+#define SIGNAL_COMBINER_OFFSET_SOURCES_OFFSET 84
+#define SIGNAL_COMBINER_OFFSET_NUMBER_OF_SOURCES 86
+
+#define SIGNAL_DEMULTIPLEXER_OFFSET_OBJECT_NAME 4
+#define SIGNAL_DEMULTIPLEXER_OFFSET_LOCALIZED_DESCRIPTION 68
+#define SIGNAL_DEMULTIPLEXER_OFFSET_BLOCK_LATENCY 70
+#define SIGNAL_DEMULTIPLEXER_OFFSET_CONTROL_LATENCY 74
+#define SIGNAL_DEMULTIPLEXER_OFFSET_CONTROL_DOMAIN 78
+#define SIGNAL_DEMULTIPLEXER_OFFSET_SIGNAL_TYPE 80
+#define SIGNAL_DEMULTIPLEXER_OFFSET_SIGNAL_INDEX 82
+#define SIGNAL_DEMULTIPLEXER_OFFSET_SIGNAL_OUTPUT 84
+#define SIGNAL_DEMULTIPLEXER_OFFSET_NUMBER_OF_OUTPUTS 86
+#define SIGNAL_DEMULTIPLEXER_OFFSET_DEMULTIPLEXER_MAP_COUNT 88
+#define SIGNAL_DEMULTIPLEXER_OFFSET_DEMULTIPLEXER_MAP_OFFSET 90
+
+#define SIGNAL_MULTIPLEXER_OFFSET_OBJECT_NAME 4
+#define SIGNAL_MULTIPLEXER_OFFSET_LOCALIZED_DESCRIPTION 68
+#define SIGNAL_MULTIPLEXER_OFFSET_BLOCK_LATENCY 70
+#define SIGNAL_MULTIPLEXER_OFFSET_CONTROL_LATENCY 74
+#define SIGNAL_MULTIPLEXER_OFFSET_CONTROL_DOMAIN 78
+#define SIGNAL_MULTIPLEXER_OFFSET_MULTIPLEXER_MAP_COUNT 80
+#define SIGNAL_MULTIPLEXER_OFFSET_MULTIPLEXER_MAP_OFFSET 82
+#define SIGNAL_MULTIPLEXER_OFFSET_SOURCES_OFFSET 84
+#define SIGNAL_MULTIPLEXER_OFFSET_NUMBER_OF_SOURCES 86
+
+#define SIGNAL_TRANSCODER_OFFSET_OBJECT_NAME 4
+#define SIGNAL_TRANSCODER_OFFSET_LOCALIZED_DESCRIPTION 68
+#define SIGNAL_TRANSCODER_OFFSET_BLOCK_LATENCY 70
+#define SIGNAL_TRANSCODER_OFFSET_CONTROL_LATENCY 74
+#define SIGNAL_TRANSCODER_OFFSET_CONTROL_DOMAIN 78
+#define SIGNAL_TRANSCODER_OFFSET_CONTROL_VALUE_TYPE 80
+#define SIGNAL_TRANSCODER_OFFSET_VALUES_OFFSET 82
+#define SIGNAL_TRANSCODER_OFFSET_NUMBER_OF_VALUES 84
+#define SIGNAL_TRANSCODER_OFFSET_SIGNAL_TYPE 86
+#define SIGNAL_TRANSCODER_OFFSET_SIGNAL_INDEX 88
+#define SIGNAL_TRANSCODER_OFFSET_SIGNAL_OUTPUT 90
+
+#define CLOCK_DOMAIN_OFFSET_OBJECT_NAME 4
+#define CLOCK_DOMAIN_OFFSET_LOCALIZED_DESCRIPTION 68
+#define CLOCK_DOMAIN_OFFSET_CLOCK_SOURCE_INDEX 70
+#define CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_OFFSET 72
+#define CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_COUNT 74
+
+#define CONTROL_BLOCK_OFFSET_OBJECT_NAME 4
+#define CONTROL_BLOCK_OFFSET_LOCALIZED_DESCRIPTION 68
+#define CONTROL_BLOCK_OFFSET_NUMBER_OF_CONTROLS 70
+#define CONTROL_BLOCK_OFFSET_BASE_CONTROL 72
+#define CONTROL_BLOCK_OFFSET_FINAL_CONTROL_INDEX 74
+
+
+/* AEM Stream Format Offsets */
+/* IEEE 1722.1 draft D21 section 7.3.2 */
+#define AEM_OFFSET_SF_SUBTYPE 0
-/* 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_VERSION 0
-#define AEM_OFFSET_SF_SUBTYPE 0
+/* IIDC */
+#define AEM_OFFSET_SF 1
+#define AEM_OFFSET_IIDC_FORMAT 5
+#define AEM_OFFSET_IIDC_MODE 6
+#define AEM_OFFSET_IIDC_RATE 7
+
+/* 61883 */
+#define AEM_OFFSET_FMT 1
+
+/* 61883-6 */
+#define AEM_OFFSET_FDF_EVT 2
+#define AEM_OFFSET_FDF_SFC 2
+#define AEM_OFFSET_DBS 3
+#define AEM_OFFSET_B 4
+#define AEM_OFFSET_NB 4
+
+/* 61883-6 AM824 */
+#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
+
+/* 61883-8 */
+#define AEM_OFFSET_VIDEO_MODE 5
+#define AEM_OFFSET_COMPRESS_MODE 6
+#define AEM_OFFSET_COLOR_SPACE 7
-#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
+/* AECP Video Cluster Format Offsets */
+/* IEEE 1722.1 draft D21 section 7.3.7 */
+#if 0 /* TODO: These are all different in D21 */
#define AEM_OFFSET_MFD_TYPE 3
#define AEM_OFFSET_DIV 4
#define AEM_OFFSET_INTERLACE 4
@@ -909,26 +1264,7 @@
#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
+#endif
/* Bitmasks */
#define AECP_STATUS_CODE_MASK 0xf8
@@ -972,44 +1308,49 @@
#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
+/* 7.133-139 counters_valid flag masks */
+#define AECP_COUNTERS_VALID_LINK_UP 0x00000001
+#define AECP_COUNTERS_VALID_LINK_DOWN 0x00000002
+#define AECP_COUNTERS_VALID_PACKETS_TX 0x00000004
+#define AECP_COUNTERS_VALID_PACKETS_RX 0x00000008
+#define AECP_COUNTERS_VALID_RX_CRC_ERROR 0x00000010
+#define AECP_COUNTERS_VALID_GPTP_GM_CHANGED 0x00000020
+
+#define AECP_COUNTERS_VALID_CLOCK_DOMAIN_LOCKED 0x00000001
+#define AECP_COUNTERS_VALID_CLOCK_DOMAIN_UNLOCKED 0x00000002
+
+#define AECP_COUNTERS_VALID_MEDIA_LOCKED 0x00000001
+#define AECP_COUNTERS_VALID_MEDIA_UNLOCKED 0x00000002
+#define AECP_COUNTERS_VALID_STREAM_RESET 0x00000004
+#define AECP_COUNTERS_VALID_SEQ_NUM_MISMATCH 0x00000008
+#define AECP_COUNTERS_VALID_MEDIA_RESET 0x00000010
+#define AECP_COUNTERS_VALID_TIMESTAMP_UNCERTAIN 0x00000020
+#define AECP_COUNTERS_VALID_TIMESTAMP_VALID 0x00000040
+#define AECP_COUNTERS_VALID_TIMESTAMP_NOT_VALID 0x00000080
+#define AECP_COUNTERS_VALID_UNSUPPORTED_FORMAT 0x00000100
+#define AECP_COUNTERS_VALID_LATE_TIMESTAMP 0x00000200
+#define AECP_COUNTERS_VALID_EARLY_TIMESTAMP 0x00000400
+#define AECP_COUNTERS_VALID_STREAM_PACKETS_RX 0x00000800
+#define AECP_COUNTERS_VALID_STREAM_PACKETS_TX 0x00001000
+
+#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_8 0x01000000
+#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_7 0x02000000
+#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_6 0x04000000
+#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_5 0x08000000
+#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_4 0x10000000
+#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_3 0x20000000
+#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_2 0x40000000
+#define AECP_COUNTERS_VALID_ENTITY_SPECIFIC_1 0x80000000
+#define AEM_CLOCK_SYNC_SOURCE_FLAG_MASK 0x00000001
#define AEM_ASYNC_SAMPLE_RATE_CONV_FLAG_MASK 0x00000002
+#define AEM_SYNC_SAMPLE_RATE_CONV_FLAG_MASK 0x00000004
+
#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
@@ -1027,11 +1368,11 @@
#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_MASK_SF 0x80
+#define AEM_MASK_SF_SUBTYPE 0x7F
+#define AEM_MASK_SF_VERSION 0x80
#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
@@ -1066,7 +1407,7 @@
#define KEY_TYPE_RSA1024_PRIVATE 5
#define KEY_TYPE_X509 6
-static const value_string aecp_keytype_type_vals [] = {
+static const value_string aecp_key_type_type_vals [] = {
{KEY_TYPE_NONE, "NO_KEY"},
{KEY_TYPE_SHA256, "SHA256"},
{KEY_TYPE_AES128, "AES128"},
@@ -1088,8 +1429,10 @@ static const value_string aem_memory_object_type_vals [] = {
};
static const value_string aem_stream_format_subtype_vals [] = {
- {SF61883_IIDC_SUBTYPE, "61883_IIDC_SUBTYPE"},
+ {IEC_61883_IIDC_SUBTYPE, "IEC_61883_IIDC_SUBTYPE"},
{MMA_SUBTYPE, "MMA_SUBTYPE"},
+ {AVTP_AUDIO_SUBTYPE, "AVTP_AUDIO_SUBTYPE"},
+ {AVTP_VIDEO_SUBTYPE, "AVTP_VIDEO_SUBTYPE"},
{EXPERIMENTAL_SUBTYPE, "EXPERIMENTAL_SUBTYPE"},
{0, NULL}
};
@@ -1117,13 +1460,10 @@ static const value_string aem_mfd_type_vals [] = {
};
static const value_string aem_clock_source_type_vals [] = {
- {AEM_CLOCK_LOCAL_OSCILLATOR , "LOCAL OSCILLATOR"},
+ {AEM_CLOCK_INTERNAL , "INTERNAL"},
+ {AEM_CLOCK_EXTERNAL , "EXTERNAL"},
{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"},
+ {AEM_CLOCK_MEDIA_CLOCK_STREAM, "MEDIA CLOCK STREAM"},
{0, NULL}
};
@@ -1295,27 +1635,27 @@ static const value_string aecp_direction_type_vals [] = {
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_AUDIO_UNIT , "AUDIO_UNIT"},
+ {AEM_DESCRIPTOR_VIDEO_UNIT , "VIDEO_UNIT"},
+ {AEM_DESCRIPTOR_SENSOR_UNIT , "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_JACK_INPUT , "JACK_INPUT"},
+ {AEM_DESCRIPTOR_JACK_OUTPUT, "JACK_OUTPUT"},
+ {AEM_DESCRIPTOR_STREAM_PORT_INPUT , "STREAM_PORT_INPUT"},
+ {AEM_DESCRIPTOR_STREAM_PORT_OUTPUT , "STREAM_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_VIDEO_CLUSTER , "VIDEO_CLUSTER"},
+ {AEM_DESCRIPTOR_SENSOR_CLUSTER , "SENSOR_CLUSTER"},
+ {AEM_DESCRIPTOR_AUDIO_MAP , "AUDIO_MAP"},
+ {AEM_DESCRIPTOR_VIDEO_MAP , "VIDEO_MAP"},
+ {AEM_DESCRIPTOR_SENSOR_MAP , "SENSOR_MAP"},
{AEM_DESCRIPTOR_CONTROL , "CONTROL"},
{AEM_DESCRIPTOR_SIGNAL_SELECTOR , "SIGNAL_SELECTOR"},
{AEM_DESCRIPTOR_MIXER , "MIXER"},
@@ -1324,6 +1664,13 @@ static const value_string aem_descriptor_type_vals[] = {
{AEM_DESCRIPTOR_STRINGS , "STRINGS"},
{AEM_DESCRIPTOR_MATRIX_SIGNAL , "MATRIX_SIGNAL"},
{AEM_DESCRIPTOR_MEMORY_OBJECT , "MEMORY_OBJECT"},
+ {AEM_DESCRIPTOR_SIGNAL_SPLITTER , "SIGNAL_SPLITTER"},
+ {AEM_DESCRIPTOR_SIGNAL_COMBINER , "SIGNAL_COMBINER"},
+ {AEM_DESCRIPTOR_SIGNAL_DEMULTIPLEXER, "SIGNAL_DEMULTIPLEXER"},
+ {AEM_DESCRIPTOR_SIGNAL_MULTIPLEXER , "SIGNAL_MULTIPLEXER"},
+ {AEM_DESCRIPTOR_SIGNAL_TRANSCODER , "SIGNAL_TRANSCODER"},
+ {AEM_DESCRIPTOR_CLOCK_DOMAIN , "CLOCK_DOMAIN"},
+ {AEM_DESCRIPTOR_CONTROL_BLOCK , "CONTROL_BLOCK"},
{0 , NULL}
};
@@ -1333,11 +1680,14 @@ static const value_string aem_status_type_vals[] = {
{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_NOT_AUTHENTICATED , "NOT_AUTHENTICATED"},
+ {AEM_STATUS_AUTHENTICATION_DISABLED, "AUTHENTICATION_DISABLED"},
{AEM_STATUS_BAD_ARGUMENTS , "BAD_ARGUMENTS"},
{AEM_STATUS_NO_RESOURCES , "NO_RESOURCES"},
{AEM_STATUS_IN_PROGRESS , "IN_PROGRESS"},
+ {AEM_STATUS_ENTITY_MISBEHAVING , "ENTITY_MISBEHAVING"},
+ {AEM_STATUS_NOT_SUPPORTED , "NOT_SUPPORTED"},
+ {AEM_STATUS_STREAM_IS_RUNNING , "STREAM_IS_RUNNING"},
{0 , NULL}
};
@@ -1356,19 +1706,34 @@ static const value_string aecp_message_type_vals[] = {
};
static const value_string aecp_command_type_vals[] = {
- {AECP_COMMAND_LOCK_ENTITY , "LOCK_ENTIY"},
+ {AECP_COMMAND_ACQUIRE_ENTITY , "ACQUIRE_ENTIY"},
+ {AECP_COMMAND_LOCK_ENTITY , "LOCK_ENTITY"},
+ {AECP_COMMAND_ENTITY_AVAILABLE , "ENTITY_AVAILABLE"},
+ {AECP_COMMAND_CONTROLLER_AVAILABLE , "CONTROLLER_AVAILABLE"},
{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_STREAM_FORMAT , "SET_STREAM_FORMAT"},
+ {AECP_COMMAND_GET_STREAM_FORMAT , "GET_STREAM_FORMAT"},
+ {AECP_COMMAND_SET_VIDEO_FORMAT , "SET_VIDEO_FORMAT"},
+ {AECP_COMMAND_GET_VIDEO_FORMAT , "GET_VIDEO_FORMAT"},
+ {AECP_COMMAND_SET_SENSOR_FORMAT , "SET_SENSOR_FORMAT"},
+ {AECP_COMMAND_GET_SENSOR_FORMAT , "GET_SENSOR_FORMAT"},
+ {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_SET_SAMPLING_RATE , "SET_SAMPLING_RATE"},
+ {AECP_COMMAND_GET_SAMPLING_RATE , "GET_SAMPLING_RATE"},
+ {AECP_COMMAND_SET_CLOCK_SOURCE , "SET_CLOCK_SOURCE"},
+ {AECP_COMMAND_GET_CLOCK_SOURCE , "GET_CLOCK_SOURCE"},
{AECP_COMMAND_SET_CONTROL_VALUE , "SET_CONTROL_VALUE"},
{AECP_COMMAND_GET_CONTROL_VALUE , "GET_CONTROL_VALUE"},
+ {AECP_COMMAND_INCREMENT_CONTROL , "INCREMENT_CONTROL"},
+ {AECP_COMMAND_DECREMENT_CONTROL , "DECREMENT_CONTROL"},
{AECP_COMMAND_SET_SIGNAL_SELECTOR , "SET_SIGNAL_SELECTOR"},
{AECP_COMMAND_GET_SIGNAL_SELECTOR , "GET_SIGNAL_SELECTOR"},
{AECP_COMMAND_SET_MIXER , "SET_MIXER"},
@@ -1377,35 +1742,41 @@ static const value_string aecp_command_type_vals[] = {
{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_REGISTER_UNSOL_NOTIFICATION , "REGISTER_UNSOL_NOTIFICATION"},
+ {AECP_COMMAND_DEREGISTER_UNSOL_NOTIFICATION , "DEREGISTER_UNSOL_NOTIFICATION"},
+ {AECP_COMMAND_IDENTIFY_NOTIFICATION , "IDENTIFY_NOTIFICATION"},
+ {AECP_COMMAND_GET_AVB_INFO , "GET_AVB_INFO"},
+ {AECP_COMMAND_GET_AS_PATH , "GET_AS_PATH"},
{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_GET_AUDIO_MAP , "GET_AUDIO_MAP"},
+ {AECP_COMMAND_ADD_AUDIO_MAPPINGS , "ADD_AUDIO_MAPPINGS"},
+ {AECP_COMMAND_REMOVE_AUDIO_MAPPINGS , "REMOVE_AUDIO_MAPPINGS"},
+ {AECP_COMMAND_GET_VIDEO_MAP , "GET_VIDEO_MAP"},
+ {AECP_COMMAND_ADD_VIDEO_MAPPINGS , "ADD_VIDEO_MAPPINGS"},
+ {AECP_COMMAND_REMOVE_VIDEO_MAPPINGS , "REMOVE_VIDEO_MAPPINGS"},
+ {AECP_COMMAND_GET_SENSOR_MAP , "GET_SENSOR_MAP"},
+ {AECP_COMMAND_ADD_SENSOR_MAPPINGS , "ADD_SENSOR_MAPPINGS"},
+ {AECP_COMMAND_REMOVE_SENSOR_MAPPINGS , "REMOVE_SENSOR_MAPPINGS"},
{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_AUTH_ADD_KEY , "AUTH_ADD_KEY"},
+ {AECP_COMMAND_AUTH_DELETE_KEY , "AUTH_DELETE_KEY"},
+ {AECP_COMMAND_AUTH_GET_KEY_LIST , "AUTH_GET_KEY_LIST"},
+ {AECP_COMMAND_AUTH_GET_KEY , "AUTH_GET_KEY"},
+ {AECP_COMMAND_AUTH_ADD_KEY_TO_CHAIN , "AUTH_ADD_KEY_TO_CHAIN"},
+ {AECP_COMMAND_AUTH_DELETE_KEY_FROM_CHAIN , "AUTH_DELETE_KEY_FROM_CHAIN"},
+ {AECP_COMMAND_AUTH_GET_KEYCHAIN_LIST , "AUTH_GET_KEYCHAIN_LIST"},
+ {AECP_COMMAND_AUTH_GET_IDENTITY , "AUTH_GET_IDENTITY"},
+ {AECP_COMMAND_AUTH_ADD_TOKEN , "AUTH_ADD_TOKEN"},
+ {AECP_COMMAND_AUTH_DELETE_TOKEN , "AUTH_DELETE_TOKEN"},
+ {AECP_COMMAND_AUTHENTICATE , "AUTHENTICATE"},
{AECP_COMMAND_DEAUTHENTICATE , "DEAUTHENTICATE"},
- {AECP_COMMAND_AUTH_REVOKE_KEY , "AUTH_REVOKE_KEY"},
+ {AECP_COMMAND_ENABLE_TRANSPORT_SECURITY , "ENABLE_TRANSPORT_SECURITY"},
+ {AECP_COMMAND_DISABLE_TRANSPORT_SECURITY , "DISABLE_TRANSPORT_SECURITY"},
+ {AECP_COMMAND_ENABLE_STREAM_ENCRYPTION , "ENABLE_STREAM_ENCRYPTION"},
+ {AECP_COMMAND_DISABLE_STREAM_ENCRYPTION , "DISABLE_STREAM_ENCRYPTION"},
{0 , NULL}
};
@@ -1482,13 +1853,17 @@ 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_efu_mode = -1;
+static int hf_adp_entity_cap_address_access_supported = -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_aem_supported = -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;
+static int hf_adp_entity_cap_vendor_unique = -1;
+static int hf_adp_entity_cap_class_a_supported = -1;
+static int hf_adp_entity_cap_class_b_supported = -1;
+static int hf_adp_entity_cap_as_supported = -1;
/* Talker Capabilities Flags */
static int hf_adp_talk_cap_implement = -1;
@@ -1553,17 +1928,29 @@ static int hf_adp_chan_format_24ch = -1;
/* ***************************************************************** */
static int hf_aecp_address_type = -1;
static int hf_aecp_association_id = -1;
+static int hf_aecp_as_path_count = -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_avb_interface_gptp_gm_changed_valid = -1;
+static int hf_aecp_avb_interface_gptp_gm_changed = -1;
+static int hf_aecp_avb_interface_link_up_valid = -1;
+static int hf_aecp_avb_interface_link_up = -1;
+static int hf_aecp_avb_interface_link_down_valid = -1;
+static int hf_aecp_avb_interface_link_down = -1;
+static int hf_aecp_avb_interface_packets_tx_valid = -1;
+static int hf_aecp_avb_interface_packets_tx = -1;
+static int hf_aecp_avb_interface_packets_rx_valid = -1;
+static int hf_aecp_avb_interface_packets_rx = -1;
+static int hf_aecp_avb_interface_rx_crc_error_valid = -1;
+static int hf_aecp_avb_interface_rx_crc_error = -1;
+static int hf_aecp_cd_length = -1;
+static int hf_aecp_clock_domain_locked_valid = -1;
+static int hf_aecp_clock_domain_locked = -1;
+static int hf_aecp_clock_domain_unlocked_valid = -1;
+static int hf_aecp_clock_domain_unlocked = -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;
@@ -1572,7 +1959,7 @@ 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_index = -1;
static int hf_aecp_descriptor_type = -1;
static int hf_aecp_descriptors = -1;
static int hf_aecp_dest_mac_valid_flag = -1;
@@ -1593,22 +1980,23 @@ 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_eui = -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_keychain_id_small = -1;
+static int hf_aecp_keychain_list_index = -1;
+static int hf_aecp_keychain_number_of_keys = -1;
+static int hf_aecp_keychain_number_of_lists = -1;
+static int hf_aecp_key_signature = -1;
+static int hf_aecp_key_type = -1;
static int hf_aecp_locked_guid = -1;
static int hf_aecp_mac_address = -1;
+static int hf_aecp_map_index = -1;
static int hf_aecp_matrix_affected_item_count = -1;
static int hf_aecp_matrix_column = -1;
static int hf_aecp_matrix_direction = -1;
@@ -1618,32 +2006,20 @@ 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_msrp_failure_bridge_id = -1;
+static int hf_aecp_msrp_failure_code = -1;
static int hf_aecp_name = -1;
static int hf_aecp_name_index = -1;
+static int hf_aecp_number_of_maps = -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;
@@ -1653,39 +2029,47 @@ 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_sampling_rate = -1;
static int hf_aecp_sequence_id = -1;
-static int hf_aecp_signal_id = -1;
+static int hf_aecp_signal_index = -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_signal_output = -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_stream_input_early_timestamp_valid = -1;
+static int hf_aecp_stream_input_early_timestamp = -1;
+static int hf_aecp_stream_input_late_timestamp_valid = -1;
+static int hf_aecp_stream_input_late_timestamp = -1;
+static int hf_aecp_stream_input_media_locked_valid = -1;
+static int hf_aecp_stream_input_media_locked = -1;
+static int hf_aecp_stream_input_media_unlocked_valid = -1;
+static int hf_aecp_stream_input_media_unlocked = -1;
+static int hf_aecp_stream_input_media_reset_valid = -1;
+static int hf_aecp_stream_input_media_reset = -1;
+static int hf_aecp_stream_input_packets_rx_valid = -1;
+static int hf_aecp_stream_input_packets_rx = -1;
+static int hf_aecp_stream_input_packets_tx_valid = -1;
+static int hf_aecp_stream_input_packets_tx = -1;
+static int hf_aecp_stream_input_seq_num_mismatch_valid = -1;
+static int hf_aecp_stream_input_seq_num_mismatch = -1;
+static int hf_aecp_stream_input_stream_reset_valid = -1;
+static int hf_aecp_stream_input_stream_reset = -1;
+static int hf_aecp_stream_input_timestamp_uncertain_valid = -1;
+static int hf_aecp_stream_input_timestamp_uncertain = -1;
+static int hf_aecp_stream_input_timestamp_valid_valid = -1;
+static int hf_aecp_stream_input_timestamp_valid = -1;
+static int hf_aecp_stream_input_timestamp_not_valid_valid = -1;
+static int hf_aecp_stream_input_timestamp_not_valid = -1;
+static int hf_aecp_stream_input_unsupported_format_valid = -1;
+static int hf_aecp_stream_input_unsupported_format = -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;
+static int hf_aecp_video_format = -1;
static int hf_aecp_status_code = -1;
/* ***************************************************************** */
@@ -1696,6 +2080,7 @@ 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_buffer_length = -1;
static int hf_aem_b_flag = -1;
static int hf_aem_backedup_talker_guid = -1;
static int hf_aem_backedup_talker_unique = -1;
@@ -1708,6 +2093,7 @@ 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_control_block = -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;
@@ -1718,17 +2104,34 @@ 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_number_splitters = -1;
+static int hf_aem_base_splitter = -1;
+static int hf_aem_number_combiners = -1;
+static int hf_aem_base_combiner = -1;
+static int hf_aem_number_demultiplexers = -1;
+static int hf_aem_base_demultiplexer = -1;
+static int hf_aem_number_multiplexers = -1;
+static int hf_aem_base_multiplexer = -1;
+static int hf_aem_number_transcoders = -1;
+static int hf_aem_base_transcoder = -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_reset_time = -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_domain_id = -1;
+static int hf_aem_clock_sources_offset = -1;
+static int hf_aem_clock_source_index = -1;
+static int hf_aem_clock_sources_count = -1;
+static int hf_aem_clock_sources = -1;
+static int hf_aem_clock_sources_array = -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;
@@ -1815,7 +2218,8 @@ 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_cluster_offset = -1;
+static int hf_aem_mapping_cluster_channel = -1;
static int hf_aem_mapping_stream_channel = -1;
static int hf_aem_mapping_stream_index = -1;
static int hf_aem_mappings = -1;
@@ -1830,6 +2234,16 @@ 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_avb_interface_flags = -1;
+static int hf_aem_avb_clock_identity = -1;
+static int hf_aem_avb_priority1 = -1;
+static int hf_aem_avb_clock_class = -1;
+static int hf_aem_avb_offset_scaled_log_variance = -1;
+static int hf_aem_avb_clock_accuracy = -1;
+static int hf_aem_avb_priority2 = -1;
+static int hf_aem_avb_domain_number = -1;
+static int hf_aem_avb_log_sync_interval = -1;
+static int hf_aem_avb_propagation_delay = -1;
static int hf_aem_msrp_vlan_id = -1;
static int hf_aem_nb_flag = -1;
static int hf_aem_number_audio_maps = -1;
@@ -1838,6 +2252,7 @@ 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_control_blocks = -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;
@@ -1862,7 +2277,8 @@ 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_index = -1;
+static int hf_aem_signal_output = -1;
static int hf_aem_signal_type = -1;
static int hf_aem_signals_count = -1;
static int hf_aem_signals_offset = -1;
@@ -1932,6 +2348,7 @@ 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_clock_sources = -1;
static int ett_aem_stream_formats = -1;
static int ett_aem_jack_flags = -1;
static int ett_aem_port_flags = -1;
@@ -2036,7 +2453,7 @@ dissect_17221_stream_format(tvbuff_t *tvb, proto_tree *tree)
proto_item *stream_tree;
proto_item *stream_ti;
guint8 version;
- guint16 subtype;
+ guint8 subtype;
guint8 sf;
guint8 fmt;
guint8 fdf_evt;
@@ -2047,24 +2464,20 @@ dissect_17221_stream_format(tvbuff_t *tvb, proto_tree *tree)
stream_tree = proto_item_add_subtree(stream_ti, ett_aem_stream_format);
/* get version */
- version = tvb_get_guint8(tvb, 0) & 0xC0;
+ version = tvb_get_guint8(tvb, 0) & AEM_MASK_SF_VERSION;
/* add the version to the tree */
proto_tree_add_item(stream_tree, hf_aem_sf_version, tvb,
AEM_OFFSET_SF_VERSION, 1, ENC_BIG_ENDIAN);
-
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,
- AEM_OFFSET_SF_SUBTYPE, 2, ENC_BIG_ENDIAN);
+ subtype = tvb_get_guint8(tvb, 0) & AEM_MASK_SF_SUBTYPE;
switch(subtype) {
- case SF61883_IIDC_SUBTYPE:
+ case IEC_61883_IIDC_SUBTYPE:
/* get sf */
- sf = tvb_get_guint8(tvb, 1) & 0x40;
+ sf = tvb_get_guint8(tvb, 1) & AEM_MASK_SF;
proto_tree_add_item(stream_tree, hf_aem_sf, tvb,
AEM_OFFSET_SF, 1, ENC_BIG_ENDIAN);
@@ -2079,8 +2492,8 @@ dissect_17221_stream_format(tvbuff_t *tvb, proto_tree *tree)
} else { /* 61883 Stream Format */
proto_tree_add_item(stream_tree, hf_aem_fmt, tvb,
AEM_OFFSET_FMT, 1, ENC_BIG_ENDIAN);
- fmt = tvb_get_guint8(tvb, AEM_OFFSET_FMT) & 0x3F;
- if (fmt == 0x40) { /* 61883-6 Stream Format */
+ fmt = tvb_get_guint8(tvb, AEM_OFFSET_FMT) & 0x7F;
+ if (fmt == 0x20) { /* 61883-6 Stream Format */
proto_tree_add_item(stream_tree, hf_aem_fdf_evt, tvb,
AEM_OFFSET_FDF_EVT, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(stream_tree, hf_aem_fdf_sfc, tvb,
@@ -2118,6 +2531,12 @@ dissect_17221_stream_format(tvbuff_t *tvb, proto_tree *tree)
case MMA_SUBTYPE:
/* Defined by the MMA */
break;
+ case AVTP_AUDIO_SUBTYPE:
+ /* Defined by the AVTP */
+ break;
+ case AVTP_VIDEO_SUBTYPE:
+ /* Defined by the AVTP */
+ break;
case EXPERIMENTAL_SUBTYPE:
/* used for experimental formats for development purposes only */
break;
@@ -2130,6 +2549,39 @@ dissect_17221_stream_format(tvbuff_t *tvb, proto_tree *tree)
}
static void
+dissect_17221_video_format(tvbuff_t *tvb, proto_tree *tree)
+{
+ /* TODO */
+ proto_tree_add_item(tree, hf_aecp_video_format, tvb,
+ 0, 4, ENC_NA);
+}
+
+static void
+dissect_17221_video_aspect_ratio(tvbuff_t *tvb, proto_tree *tree)
+{
+ /* TODO */
+ proto_tree_add_item(tree, hf_aecp_video_format, tvb,
+ 0, 2, ENC_NA);
+}
+
+static void
+dissect_17221_video_frame_size(tvbuff_t *tvb, proto_tree *tree)
+{
+ /* TODO */
+ proto_tree_add_item(tree, hf_aecp_video_format, tvb,
+ 0, 4, ENC_NA);
+}
+
+static void
+dissect_17221_sensor_format(tvbuff_t *tvb, proto_tree *tree)
+{
+ /* TODO */
+ proto_tree_add_item(tree, hf_aecp_video_format, tvb,
+ 0, 8, ENC_NA);
+}
+
+#if 0 /* old, prior to D21. Fix for D21 video format */
+static void
dissect_17221_media_format(tvbuff_t *tvb, proto_tree *tree)
{
proto_item *media_tree;
@@ -2206,7 +2658,7 @@ dissect_17221_media_format(tvbuff_t *tvb, proto_tree *tree)
}
}
-
+#endif
/* TODO following updates in Draft 18 and the pending Draft 19 this section will require major overhaul */
static void
@@ -2345,7 +2797,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
AEM_OFFSET_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
aem_tree = proto_item_add_subtree(desc_ti, ett_aem_descriptor);
- proto_tree_add_item(aem_tree, hf_aecp_descriptor_id, tvb,
+ proto_tree_add_item(aem_tree, hf_aecp_descriptor_index, tvb,
AEM_OFFSET_DESCRIPTOR_ID, 2, ENC_BIG_ENDIAN);
/* Dissect descriptors based on type. Where possible multiple cases *
@@ -2353,119 +2805,123 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
switch(desc_type) {
case AEM_DESCRIPTOR_ENTITY:
proto_tree_add_item(aem_tree, hf_aem_entity_guid, tvb,
- AEM_OFFSET_ENTITY_GUID, 8, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_ENTITY_GUID, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_vendor_id, tvb,
- AEM_OFFSET_VENDOR_ID, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_VENDOR_ID, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_entity_model_id, tvb,
- AEM_OFFSET_ENTITY_MODEL_ID, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_ENTITY_MODEL_ID, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_entity_cap, tvb,
- AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_adp_entity_cap_avdecc_ip, tvb,
- AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_adp_entity_cap_zero_conf, tvb,
- AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_adp_entity_cap_efu_mode, tvb,
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_adp_entity_cap_address_access_supported, tvb,
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_entity_cap_gateway_entity, tvb,
- AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_adp_entity_cap_avdecc_control, tvb,
- AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_adp_entity_cap_aem_supported, tvb,
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_entity_cap_legacy_avc, tvb,
- AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_entity_cap_assoc_id_support, tvb,
- AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_entity_cap_assoc_id_valid, tvb,
- AEM_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_adp_entity_cap_vendor_unique, tvb,
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_adp_entity_cap_class_a_supported, tvb,
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_adp_entity_cap_class_b_supported, tvb,
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_adp_entity_cap_as_supported, tvb,
+ ENTITY_OFFSET_ENTITY_CAPABILITIES, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_talker_stream_srcs, tvb,
- AEM_OFFSET_TALKER_STREAM_SOURCES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_TALKER_STREAM_SOURCES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_talker_cap, tvb,
- AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_talk_cap_implement, tvb,
- AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_talk_cap_other_src, tvb,
- AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_talk_cap_control_src, tvb,
- AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_talk_cap_media_clk_src, tvb,
- AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_talk_cap_smpte_src, tvb,
- AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_talk_cap_midi_src, tvb,
- AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_talk_cap_audio_src, tvb,
- AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_talk_cap_video_src, tvb,
- AEM_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_TALKER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_listener_stream_sinks, tvb,
- AEM_OFFSET_LISTENER_STREAM_SINKS, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_LISTENER_STREAM_SINKS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_listener_cap, tvb,
- AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_list_cap_implement, tvb,
- AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_list_cap_other_sink, tvb,
- AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_list_cap_control_sink, tvb,
- AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_list_cap_media_clk_sink, tvb,
- AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_list_cap_smpte_sink, tvb,
- AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_list_cap_midi_sink, tvb,
- AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_list_cap_audio_sink, tvb,
- AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_list_cap_video_sink, tvb,
- AEM_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_LISTENER_CAPABILITIES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_controller_cap, tvb,
- AEM_OFFSET_CONTROLLER_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_CONTROLLER_CAPABILITIES, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_cont_cap_implement, tvb,
- AEM_OFFSET_CONTROLLER_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_CONTROLLER_CAPABILITIES, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_cont_cap_layer3_proxy, tvb,
- AEM_OFFSET_CONTROLLER_CAPABILITIES, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_CONTROLLER_CAPABILITIES, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_adp_avail_index, tvb,
- AEM_OFFSET_AVAILABLE_INDEX, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_adp_as_gm_id, tvb,
- AEM_OFFSET_AS_GRANDMASTER_ID, 8, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_AVAILABLE_INDEX, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aecp_association_id, tvb,
- AEM_OFFSET_ASSOCIATION_ID, 8, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_adp_entity_type, tvb,
- AEM_OFFSET_ENTITY_TYPE, 4, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_ASSOCIATION_ID, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_entity_name, tvb,
- AEM_OFFSET_ENTITY_NAME, 64, ENC_ASCII|ENC_NA);
+ ENTITY_OFFSET_ENTITY_NAME, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_vendor_name_string, tvb,
- AEM_OFFSET_VENDOR_NAME_STRING, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_VENDOR_NAME_STRING, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_model_name_string, tvb,
- AEM_OFFSET_MODEL_NAME_STRING, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_MODEL_NAME_STRING, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_firmware_version, tvb,
- AEM_OFFSET_FIRMWARE_VERSION, 64, ENC_ASCII|ENC_NA);
+ ENTITY_OFFSET_FIRMWARE_VERSION, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_group_name, tvb,
- AEM_OFFSET_GROUP_NAME, 64, ENC_ASCII|ENC_NA);
+ ENTITY_OFFSET_GROUP_NAME, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_serial_number, tvb,
- AEM_OFFSET_SERIAL_NUMBER, 64, ENC_ASCII|ENC_NA);
+ ENTITY_OFFSET_SERIAL_NUMBER, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_configurations_count, tvb,
- AEM_OFFSET_CONFIGURATIONS_COUNT, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_CONFIGURATIONS_COUNT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_current_configuration, tvb,
- AEM_OFFSET_CURRENT_CONFIGURATION, 2, ENC_BIG_ENDIAN);
+ ENTITY_OFFSET_CURRENT_CONFIGURATION, 2, ENC_BIG_ENDIAN);
break;
case AEM_DESCRIPTOR_CONFIGURATION:
proto_tree_add_item(aem_tree, hf_aem_configuration_name, tvb,
- AEM_OFFSET_CONFIGURATION_NAME, 64, ENC_ASCII|ENC_NA);
+ CONFIGURATION_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_configuration_name_string, tvb,
- AEM_OFFSET_CONFIGURATION_NAME_STRING, 2, ENC_BIG_ENDIAN);
+ CONFIGURATION_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_descriptor_counts_count, tvb,
- AEM_OFFSET_DESCRIPTOR_COUNTS_COUNT, 2, ENC_BIG_ENDIAN);
+ CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_COUNT, 2, ENC_BIG_ENDIAN);
/* set up subtree, counter, and offset for sample rates array */
mr_item = proto_tree_add_item(aem_tree, hf_aem_descriptor_counts_offset, tvb,
- AEM_OFFSET_DESCRIPTOR_COUNTS_OFFSET, 2, ENC_BIG_ENDIAN);
- mr_counter = tvb_get_ntohs(tvb, AEM_OFFSET_DESCRIPTOR_COUNTS_COUNT);
+ CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_OFFSET, 2, ENC_BIG_ENDIAN);
+ mr_counter = tvb_get_ntohs(tvb, CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS_COUNT);
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_desc_counts);
- mr_offset = AEM_OFFSET_DESCRIPTOR_COUNTS;
+ mr_offset = CONFIGURATION_OFFSET_DESCRIPTOR_COUNTS;
for(i = 0; i < mr_counter; ++i)
{
@@ -2475,42 +2931,44 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
mr_offset += 2;
}
break;
- case AEM_DESCRIPTOR_AUDIO:
+ case AEM_DESCRIPTOR_AUDIO_UNIT:
+ proto_tree_add_item(aem_tree, hf_aem_unit_name, tvb,
+ AUDIO_UNIT_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(aem_tree, hf_aem_unit_name_string, tvb,
+ AUDIO_UNIT_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
+
+ /* D20 clock domain */
+ proto_tree_add_item(aem_tree, hf_aem_clock_domain_id, tvb,
+ AUDIO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX, 2, ENC_BIG_ENDIAN);
+
proto_tree_add_item(aem_tree, hf_aem_number_of_stream_input_ports, tvb,
- AEM_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_stream_input_port, tvb,
- AEM_OFFSET_BASE_STREAM_INPUT_PORT, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_stream_output_ports, tvb,
- AEM_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_stream_output_port, tvb,
- AEM_OFFSET_BASE_STREAM_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_external_input_ports, tvb,
- AEM_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_external_input_port, tvb,
- AEM_OFFSET_BASE_EXTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_external_output_ports, tvb,
- AEM_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_external_output_port, tvb,
- AEM_OFFSET_BASE_EXTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_internal_input_ports, tvb,
- AEM_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_internal_input_port, tvb,
- AEM_OFFSET_BASE_INTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_internal_output_ports, tvb,
- AEM_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_internal_output_port, tvb,
- AEM_OFFSET_BASE_INTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_clock_source_id, tvb,
- AEM_OFFSET_CLOCK_SOURCE_ID, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_controls, tvb,
- AEM_OFFSET_NUMBER_OF_CONTROLS, 2, ENC_BIG_ENDIAN);
+ AUDIO_UNIT_OFFSET_NUMBER_OF_CONTROLS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_control, tvb,
- AEM_OFFSET_BASE_CONTROL, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_unit_name, tvb,
- AEM_OFFSET_UNIT_NAME, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_unit_name_string, tvb,
- AEM_OFFSET_UNIT_NAME_STRING, 2, ENC_BIG_ENDIAN);
-
+ AUDIO_UNIT_OFFSET_BASE_CONTROL, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_signal_selectors, tvb,
AUDIO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_signal_selector, tvb,
@@ -2523,21 +2981,49 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
AUDIO_UNIT_OFFSET_NUMBER_MATRICES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_matrix, tvb,
AUDIO_UNIT_OFFSET_BASE_MATRIX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_splitters, tvb,
+ AUDIO_UNIT_OFFSET_NUMBER_SPLITTERS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_splitter, tvb,
+ AUDIO_UNIT_OFFSET_BASE_SPLITTER, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_combiners, tvb,
+ AUDIO_UNIT_OFFSET_NUMBER_COMBINERS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_combiner, tvb,
+ AUDIO_UNIT_OFFSET_BASE_COMBINER, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_demultiplexers, tvb,
+ AUDIO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_demultiplexer, tvb,
+ AUDIO_UNIT_OFFSET_BASE_DEMULTIPLEXER, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_multiplexers, tvb,
+ AUDIO_UNIT_OFFSET_NUMBER_MULTIPLEXERS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_multiplexer, tvb,
+ AUDIO_UNIT_OFFSET_BASE_MULTIPLEXER, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_transcoders, tvb,
+ AUDIO_UNIT_OFFSET_NUMBER_TRANSCODERS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_transcoder, tvb,
+ AUDIO_UNIT_OFFSET_BASE_TRANSCODER, 2, ENC_BIG_ENDIAN);
+
+
+ proto_tree_add_item(aem_tree, hf_aem_number_control_blocks, tvb,
+ AUDIO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_control_block, tvb,
+ AUDIO_UNIT_OFFSET_BASE_CONTROL_BLOCK, 2, ENC_BIG_ENDIAN);
+
proto_tree_add_item(aem_tree, hf_aem_current_sample_rate, tvb,
AUDIO_UNIT_OFFSET_CURRENT_SAMPLE_RATE, 4, ENC_BIG_ENDIAN);
+
proto_tree_add_item(aem_tree, hf_aem_sample_rates_offset, tvb,
AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_sample_rates_count, tvb,
AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT, 2, ENC_BIG_ENDIAN);
/* set up subtree, counter, and offset for sample rates array */
- mr_item = proto_tree_add_item(aem_tree, hf_aem_sample_rates, tvb,
- 0, 0, ENC_NA);
+ mr_offset = tvb_get_ntohs(tvb, AUDIO_UNIT_OFFSET_SAMPLE_RATES_OFFSET);
mr_counter = tvb_get_ntohs(tvb, AUDIO_UNIT_OFFSET_SAMPLE_RATES_COUNT);
+ mr_item = proto_tree_add_item(aem_tree, hf_aem_sample_rates, tvb,
+ mr_offset, mr_counter * 4, ENC_NA);
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sample_rates);
- mr_offset = AUDIO_UNIT_OFFSET_SAMPLE_RATES;
- proto_item_set_len(mr_item, 4 * mr_counter);
+
/* loop to get the array values */
for(i = 0; i < mr_counter; ++i) {
proto_tree_add_item(mr_subtree, hf_aem_pull_field, tvb,
@@ -2563,43 +3049,45 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
mr_offset += 4;
}
break;
- case AEM_DESCRIPTOR_VIDEO:
- case AEM_DESCRIPTOR_SENSOR:
+ case AEM_DESCRIPTOR_VIDEO_UNIT:
+ case AEM_DESCRIPTOR_SENSOR_UNIT:
+ proto_tree_add_item(aem_tree, hf_aem_unit_name, tvb,
+ VIDEO_UNIT_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(aem_tree, hf_aem_unit_name_string, tvb,
+ VIDEO_UNIT_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
+
+ /* D20 clock domain */
+ proto_tree_add_item(aem_tree, hf_aem_clock_domain_id, tvb,
+ AUDIO_UNIT_OFFSET_CLOCK_DOMAIN_INDEX, 2, ENC_BIG_ENDIAN);
+
proto_tree_add_item(aem_tree, hf_aem_number_of_stream_input_ports, tvb,
- AEM_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_stream_input_port, tvb,
- AEM_OFFSET_BASE_STREAM_INPUT_PORT, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_BASE_STREAM_INPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_stream_output_ports, tvb,
- AEM_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_NUMBER_OF_STREAM_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_stream_output_port, tvb,
- AEM_OFFSET_BASE_STREAM_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_BASE_STREAM_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_external_input_ports, tvb,
- AEM_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_external_input_port, tvb,
- AEM_OFFSET_BASE_EXTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_BASE_EXTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_external_output_ports, tvb,
- AEM_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_NUMBER_OF_EXTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_external_output_port, tvb,
- AEM_OFFSET_BASE_EXTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_BASE_EXTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_internal_input_ports, tvb,
- AEM_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_INPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_internal_input_port, tvb,
- AEM_OFFSET_BASE_INTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_BASE_INTERNAL_INPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_internal_output_ports, tvb,
- AEM_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_NUMBER_OF_INTERNAL_OUTPUT_PORTS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_internal_output_port, tvb,
- AEM_OFFSET_BASE_INTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_clock_source_id, tvb,
- AEM_OFFSET_CLOCK_SOURCE_ID, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_BASE_INTERNAL_OUTPUT_PORT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_controls, tvb,
- AEM_OFFSET_NUMBER_OF_CONTROLS, 2, ENC_BIG_ENDIAN);
+ VIDEO_UNIT_OFFSET_NUMBER_OF_CONTROLS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_control, tvb,
- AEM_OFFSET_BASE_CONTROL, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_unit_name, tvb,
- AEM_OFFSET_UNIT_NAME, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_unit_name_string, tvb,
- AEM_OFFSET_UNIT_NAME_STRING, 2, ENC_BIG_ENDIAN);
-
+ VIDEO_UNIT_OFFSET_BASE_CONTROL, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_signal_selectors, tvb,
VIDEO_UNIT_OFFSET_NUMBER_SIGNAL_SELECTORS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_signal_selector, tvb,
@@ -2612,64 +3100,93 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
VIDEO_UNIT_OFFSET_NUMBER_MATRICES, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_matrix, tvb,
VIDEO_UNIT_OFFSET_BASE_MATRIX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_splitters, tvb,
+ VIDEO_UNIT_OFFSET_NUMBER_SPLITTERS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_splitter, tvb,
+ VIDEO_UNIT_OFFSET_BASE_SPLITTER, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_combiners, tvb,
+ VIDEO_UNIT_OFFSET_NUMBER_COMBINERS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_combiner, tvb,
+ VIDEO_UNIT_OFFSET_BASE_COMBINER, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_demultiplexers, tvb,
+ VIDEO_UNIT_OFFSET_NUMBER_DEMULTIPLEXERS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_demultiplexer, tvb,
+ VIDEO_UNIT_OFFSET_BASE_DEMULTIPLEXER, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_multiplexers, tvb,
+ VIDEO_UNIT_OFFSET_NUMBER_MULTIPLEXERS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_multiplexer, tvb,
+ VIDEO_UNIT_OFFSET_BASE_MULTIPLEXER, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_transcoders, tvb,
+ VIDEO_UNIT_OFFSET_NUMBER_TRANSCODERS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_transcoder, tvb,
+ VIDEO_UNIT_OFFSET_BASE_TRANSCODER, 2, ENC_BIG_ENDIAN);
+
+
+ proto_tree_add_item(aem_tree, hf_aem_number_control_blocks, tvb,
+ VIDEO_UNIT_OFFSET_NUMBER_CONTROL_BLOCKS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_control_block, tvb,
+ VIDEO_UNIT_OFFSET_BASE_CONTROL_BLOCK, 2, ENC_BIG_ENDIAN);
break;
case AEM_DESCRIPTOR_STREAM_INPUT:
case AEM_DESCRIPTOR_STREAM_OUTPUT:
proto_tree_add_item(aem_tree, hf_aem_stream_name, tvb,
- AEM_OFFSET_STREAM_NAME, 64, ENC_ASCII|ENC_NA);
+ STREAM_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_stream_name_string, tvb,
- AEM_OFFSET_STREAM_NAME_STRING, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
+
+ /* D20 clock domain */
+ proto_tree_add_item(aem_tree, hf_aem_clock_domain_id, tvb,
+ STREAM_OFFSET_CLOCK_DOMAIN_INDEX, 2, ENC_BIG_ENDIAN);
+
/* set up a flags subtree */
mr_item = proto_tree_add_item(aem_tree, hf_aem_stream_flags, tvb,
- AEM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
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,
- AEM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(mr_subtree, hf_aem_flags_class_a, tvb,
- AEM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(mr_subtree, hf_aem_flags_class_b, tvb,
- AEM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_STREAM_FLAGS, 2, ENC_BIG_ENDIAN);
/* done adding flags, continue with fields */
- proto_tree_add_item(aem_tree, hf_aem_stream_channels, tvb,
- AEM_OFFSET_STREAM_CHANNELS, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_clock_source_id, tvb,
- AEM_OFFSET_CLOCK_SOURCE_ID_STREAM, 2, ENC_BIG_ENDIAN);
-
/* stream format dissection */
- next_tvb = tvb_new_subset(tvb, AEM_OFFSET_CURRENT_FORMAT, 8, 8);
+ next_tvb = tvb_new_subset(tvb, STREAM_OFFSET_CURRENT_FORMAT, 8, 8);
dissect_17221_stream_format(next_tvb, aem_tree);
proto_tree_add_item(aem_tree, hf_aem_formats_offset, tvb,
- AEM_OFFSET_FORMATS_OFFSET, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_FORMATS_OFFSET, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_formats, tvb,
- AEM_OFFSET_NUMBER_OF_FORMATS, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_NUMBER_OF_FORMATS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_backup_talker_guid_0, tvb,
- AEM_OFFSET_BACKUP_TALKER_GUID_0, 8, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_BACKUP_TALKER_GUID_0, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_backup_talker_unique_0, tvb,
- AEM_OFFSET_BACKUP_TALKER_UNIQUE_0, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_BACKUP_TALKER_UNIQUE_0, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_backup_talker_guid_1, tvb,
- AEM_OFFSET_BACKUP_TALKER_GUID_1, 8, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_BACKUP_TALKER_GUID_1, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_backup_talker_unique_1, tvb,
- AEM_OFFSET_BACKUP_TALKER_UNIQUE_1, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_BACKUP_TALKER_UNIQUE_1, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_backup_talker_guid_2, tvb,
- AEM_OFFSET_BACKUP_TALKER_GUID_2, 8, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_BACKUP_TALKER_GUID_2, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_backup_talker_unique_2, tvb,
- AEM_OFFSET_BACKUP_TALKER_UNIQUE_2, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_BACKUP_TALKER_UNIQUE_2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_backedup_talker_guid, tvb,
- AEM_OFFSET_BACKEDUP_TALKER_GUID, 8, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_BACKEDUP_TALKER_GUID, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_backedup_talker_unique, tvb,
- AEM_OFFSET_BACKEDUP_TALKER_UNIQUE, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_BACKEDUP_TALKER_UNIQUE, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_avb_interface_id, tvb,
- AEM_OFFSET_AVB_INTERFACE_ID, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_AVB_INTERFACE_ID, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aem_tree, hf_aem_buffer_length, tvb,
+ STREAM_OFFSET_BUFFER_LENGTH, 2, ENC_BIG_ENDIAN);
+
+ mr_offset = tvb_get_ntohs(tvb, STREAM_OFFSET_FORMATS_OFFSET);
+ mr_counter = tvb_get_ntohs(tvb, STREAM_OFFSET_NUMBER_OF_FORMATS);
/* set up subtree, counter, and offset for formats array */
mr_item = proto_tree_add_item(aem_tree, hf_aem_stream_formats, tvb,
- 0, 0, ENC_NA);
+ mr_offset, mr_counter * 8, ENC_NA);
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;
- proto_item_set_len(mr_item, mr_counter * 8);
for(i = 0; i < mr_counter; ++i) {
next_tvb = tvb_new_subset(tvb, mr_offset, 8, 8);
@@ -2677,287 +3194,279 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
mr_offset += 8;
}
break;
- case AEM_DESCRIPTOR_EXTERNAL_JACK_INPUT:
- case AEM_DESCRIPTOR_EXTERNAL_JACK_OUTPUT:
+ case AEM_DESCRIPTOR_JACK_INPUT:
+ case AEM_DESCRIPTOR_JACK_OUTPUT:
proto_tree_add_item(aem_tree, hf_aem_jack_name, tvb,
- AEM_OFFSET_JACK_NAME, 64, ENC_ASCII|ENC_NA);
+ JACK_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_jack_name_string, tvb,
- AEM_OFFSET_JACK_NAME_STRING, 2, ENC_BIG_ENDIAN);
+ JACK_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
/* set up jack flags subtree */
mr_item = proto_tree_add_item(aem_tree, hf_aem_jack_flags, tvb,
- AEM_OFFSET_JACK_FLAGS, 2, ENC_BIG_ENDIAN);
+ JACK_OFFSET_JACK_FLAGS, 2, ENC_BIG_ENDIAN);
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_jack_flags);
proto_tree_add_item(mr_subtree, hf_aem_flags_captive, tvb,
- AEM_OFFSET_JACK_FLAGS, 2, ENC_BIG_ENDIAN);
+ JACK_OFFSET_JACK_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(mr_subtree, hf_aem_flags_clock_sync_source, tvb,
- AEM_OFFSET_JACK_FLAGS, 2, ENC_BIG_ENDIAN);
+ JACK_OFFSET_JACK_FLAGS, 2, ENC_BIG_ENDIAN);
/* end jack flags subtree */
proto_tree_add_item(aem_tree, hf_aem_jack_type, tvb,
- AEM_OFFSET_JACK_TYPE, 2, ENC_BIG_ENDIAN);
+ JACK_OFFSET_JACK_TYPE, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aem_tree, hf_aem_number_of_controls, tvb,
+ JACK_OFFSET_JACK_NUMBER_OF_CONTROLS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_control, tvb,
+ JACK_OFFSET_JACK_BASE_CONTROL, 2, ENC_BIG_ENDIAN);
break;
- case AEM_DESCRIPTOR_AUDIO_PORT_INPUT:
- case AEM_DESCRIPTOR_AUDIO_PORT_OUTPUT:
+ case AEM_DESCRIPTOR_STREAM_PORT_INPUT:
+ case AEM_DESCRIPTOR_STREAM_PORT_OUTPUT:
+ /* D20 clock domain */
+ proto_tree_add_item(aem_tree, hf_aem_clock_domain_id, tvb,
+ STREAM_PORT_OFFSET_CLOCK_DOMAIN_INDEX, 2, ENC_BIG_ENDIAN);
+
/* set up port_flags subtree */
mr_item = proto_tree_add_item(aem_tree, hf_aem_port_flags, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ STREAM_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
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,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ STREAM_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(mr_subtree, hf_aem_flags_async_sample_rate_conv, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ STREAM_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(mr_subtree, hf_aem_flags_sync_sample_rate_conv, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ STREAM_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
/* end port_flags subtree */
- proto_tree_add_item(aem_tree, hf_aem_audio_channels, tvb,
- AEM_OFFSET_AUDIO_CHANNELS, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aem_tree, hf_aem_number_of_controls, tvb,
+ STREAM_PORT_OFFSET_NUMBER_OF_CONTROLS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_control, tvb,
+ STREAM_PORT_OFFSET_BASE_CONTROL, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_clusters, tvb,
- AEM_OFFSET_NUMBER_OF_CLUSTERS, 2, ENC_BIG_ENDIAN);
+ STREAM_PORT_OFFSET_NUMBER_OF_CLUSTERS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_cluster, tvb,
- AEM_OFFSET_BASE_CLUSTER, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_base_audio_map, tvb,
- AUDIO_PORT_OFFSET_BASE_AUDIO_MAP, 2, ENC_BIG_ENDIAN);
+ STREAM_PORT_OFFSET_BASE_CLUSTER, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_audio_maps, tvb,
- AUDIO_PORT_OFFSET_NUMBER_AUDIO_MAPS, 2, ENC_BIG_ENDIAN);
- 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,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
- 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,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mr_subtree, hf_aem_flags_async_sample_rate_conv, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mr_subtree, hf_aem_flags_sync_sample_rate_conv, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
- /* 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,
- AEM_OFFSET_SOURCE_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
- AEM_OFFSET_SOURCE_ID, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_stream_id, tvb,
- AEM_OFFSET_STREAM_ID, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_formats_offset, tvb,
- AEM_OFFSET_FORMATS_OFFSET_VID, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_formats_count, tvb,
- AEM_OFFSET_FORMATS_COUNT_VID, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
- VIDEO_PORT_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
-
- /* 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;
- }
+ STREAM_PORT_OFFSET_NUMBER_AUDIO_MAPS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_audio_map, tvb,
+ STREAM_PORT_OFFSET_BASE_AUDIO_MAP, 2, ENC_BIG_ENDIAN);
break;
case AEM_DESCRIPTOR_EXTERNAL_PORT_INPUT:
case AEM_DESCRIPTOR_EXTERNAL_PORT_OUTPUT:
+ proto_tree_add_item(aem_tree, hf_aem_clock_domain_id, tvb,
+ EXTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX, 2, ENC_BIG_ENDIAN);
+
/* set up port_flags subtree */
mr_item = proto_tree_add_item(aem_tree, hf_aem_port_flags, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ EXTERNAL_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
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,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ EXTERNAL_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(mr_subtree, hf_aem_flags_async_sample_rate_conv, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ EXTERNAL_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(mr_subtree, hf_aem_flags_sync_sample_rate_conv, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ EXTERNAL_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
/* end port_flags subtree */
+
+ proto_tree_add_item(aem_tree, hf_aem_number_of_controls, tvb,
+ EXTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_control, tvb,
+ EXTERNAL_PORT_OFFSET_BASE_CONTROL, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
- AEM_OFFSET_SOURCE_TYPE_EXT, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
- AEM_OFFSET_SOURCE_ID_EXT, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_jack_id, tvb,
- EXTERNAL_PORT_OFFSET_JACK_ID, 2, ENC_BIG_ENDIAN);
+ EXTERNAL_PORT_OFFSET_SIGNAL_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_signal_index, tvb,
+ EXTERNAL_PORT_OFFSET_SIGNAL_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_signal_output, tvb,
+ EXTERNAL_PORT_OFFSET_SIGNAL_OUTPUT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
EXTERNAL_PORT_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
- 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,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
- 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,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mr_subtree, hf_aem_flags_async_sample_rate_conv, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mr_subtree, hf_aem_flags_sync_sample_rate_conv, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
- /* end port_flags subtree */
- proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
- AEM_OFFSET_SOURCE_TYPE_EXT, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
- AEM_OFFSET_SOURCE_ID_EXT, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_stream_id, tvb,
- AEM_OFFSET_STREAM_ID_SEN, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
- SENSOR_PORT_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_jack_id, tvb,
+ EXTERNAL_PORT_OFFSET_JACK_INDEX, 2, ENC_BIG_ENDIAN);
break;
case AEM_DESCRIPTOR_INTERNAL_PORT_INPUT:
case AEM_DESCRIPTOR_INTERNAL_PORT_OUTPUT:
+ proto_tree_add_item(aem_tree, hf_aem_clock_domain_id, tvb,
+ INTERNAL_PORT_OFFSET_CLOCK_DOMAIN_INDEX, 2, ENC_BIG_ENDIAN);
+
/* set up port_flags subtree */
mr_item = proto_tree_add_item(aem_tree, hf_aem_port_flags, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ INTERNAL_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
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,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ INTERNAL_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(mr_subtree, hf_aem_flags_async_sample_rate_conv, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ INTERNAL_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(mr_subtree, hf_aem_flags_sync_sample_rate_conv, tvb,
- AEM_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
+ INTERNAL_PORT_OFFSET_PORT_FLAGS, 2, ENC_BIG_ENDIAN);
/* end port_flags subtree */
+
+ proto_tree_add_item(aem_tree, hf_aem_number_of_controls, tvb,
+ INTERNAL_PORT_OFFSET_NUMBER_OF_CONTROLS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_base_control, tvb,
+ INTERNAL_PORT_OFFSET_BASE_CONTROL, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
- AEM_OFFSET_SOURCE_TYPE_EXT, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
- AEM_OFFSET_SOURCE_ID_EXT, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_internal_id, tvb,
- AEM_OFFSET_INTERNAL_ID, 2, ENC_BIG_ENDIAN);
+ INTERNAL_PORT_OFFSET_SIGNAL_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_signal_index, tvb,
+ INTERNAL_PORT_OFFSET_SIGNAL_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_signal_output, tvb,
+ INTERNAL_PORT_OFFSET_SIGNAL_OUTPUT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
INTERNAL_PORT_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_jack_id, tvb,
+ INTERNAL_PORT_OFFSET_INTERNAL_INDEX, 2, ENC_BIG_ENDIAN);
break;
case AEM_DESCRIPTOR_AVB_INTERFACE:
- proto_tree_add_item(aem_tree, hf_aecp_mac_address, tvb,
- AEM_OFFSET_MAC_ADDRESS, 6, ENC_NA);
- proto_tree_add_item(aem_tree, hf_adp_as_gm_id, tvb,
- AEM_OFFSET_AS_GRANDMASTER_ID_AVB, 8, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_msrp_mappings_offset, tvb,
- AEM_OFFSET_MSRP_MAPPINGS_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_msrp_mappings_count, tvb,
- AEM_OFFSET_MSRP_MAPPINGS_COUNT, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_interface_name, tvb,
- AVB_INTERFACE_OFFSET_INTERFACE_NAME, 64, ENC_ASCII|ENC_NA);
+ AVB_INTERFACE_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_interface_name_string, tvb,
- AVB_INTERFACE_OFFSET_INTERFACE_NAME_STRING, 2, ENC_BIG_ENDIAN);
+ AVB_INTERFACE_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
- /* set up subtree for mappings array */
- mr_item = proto_tree_add_item(aem_tree, hf_aem_msrp_mappings, tvb,
- AVB_INTERFACE_MSRP_MAPPINGS, 0, ENC_NA);
- 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,
- mr_offset, 1, ENC_BIG_ENDIAN);
- ++mr_offset;
- proto_tree_add_item(mr_subtree, hf_aem_msrp_mapping_priority, tvb,
- mr_offset, 1, ENC_BIG_ENDIAN);
- ++mr_offset;
- proto_tree_add_item(mr_subtree, hf_aem_msrp_vlan_id, tvb,
- mr_offset, 2, ENC_BIG_ENDIAN);
- mr_offset += 2;
- }
+ proto_tree_add_item(aem_tree, hf_aecp_mac_address, tvb,
+ AVB_INTERFACE_OFFSET_MAC_ADDRESS, 6, ENC_NA);
+
+ proto_tree_add_item(aem_tree, hf_aem_avb_interface_flags, tvb,
+ AVB_INTERFACE_OFFSET_INTERFACE_FLAGS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_avb_clock_identity, tvb,
+ AVB_INTERFACE_OFFSET_CLOCK_IDENTITY, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_avb_priority1, tvb,
+ AVB_INTERFACE_OFFSET_PRIORITY1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_avb_clock_class, tvb,
+ AVB_INTERFACE_OFFSET_CLOCK_CLASS, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_avb_offset_scaled_log_variance, tvb,
+ AVB_INTERFACE_OFFSET_OFFSET_SCALED_LOG_VARIANCE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_avb_clock_accuracy, tvb,
+ AVB_INTERFACE_OFFSET_CLOCK_ACCURACY, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_avb_priority2, tvb,
+ AVB_INTERFACE_OFFSET_PRIORITY2, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_avb_domain_number, tvb,
+ AVB_INTERFACE_OFFSET_DOMAIN_NUMBER, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_avb_log_sync_interval, tvb,
+ AVB_INTERFACE_OFFSET_LOG_SYNC_INTERVAL, 1, ENC_BIG_ENDIAN);
break;
case AEM_DESCRIPTOR_CLOCK_SOURCE:
proto_tree_add_item(aem_tree, hf_aem_clock_source_name, tvb,
- AEM_OFFSET_CLOCK_SOURCE_NAME, 64, ENC_ASCII|ENC_NA);
+ CLOCK_SOURCE_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_clock_source_name_string, tvb,
- AEM_OFFSET_CLOCK_SOURCE_NAME_STRING, 2, ENC_BIG_ENDIAN);
+ CLOCK_SOURCE_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
/* set up clock_source_flags subtree */
mr_item = proto_tree_add_item(aem_tree, hf_aem_clock_source_flags, tvb,
- AEM_OFFSET_CLOCK_SOURCE_FLAGS, 2, ENC_BIG_ENDIAN);
+ CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_FLAGS, 2, ENC_BIG_ENDIAN);
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_clock_source_flags);
/* all flags reserved */
/* end clock_source_flags subtree */
- proto_tree_add_item(mr_subtree, hf_aem_clock_source_type, tvb,
- AEM_OFFSET_CLOCK_SOURCE_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mr_subtree, hf_aecp_clock_source_id, tvb,
- AEM_OFFSET_CLOCK_SOURCE_ID_CLK, 8, ENC_BIG_ENDIAN);
- proto_tree_add_item(mr_subtree, hf_aem_clock_source_location_type, tvb,
- AEM_OFFSET_CLOCK_SOURCE_LOCATION_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(mr_subtree, hf_aem_clock_source_location_id, tvb,
- AEM_OFFSET_CLOCK_SOURCE_LOCATION_ID, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_clock_source_type, tvb,
+ CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aecp_clock_source_id, tvb,
+ CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_IDENTIFIER, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_clock_source_location_type, tvb,
+ CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_clock_source_location_id, tvb,
+ CLOCK_SOURCE_OFFSET_CLOCK_SOURCE_LOCATION_INDEX, 2, ENC_BIG_ENDIAN);
break;
case AEM_DESCRIPTOR_AUDIO_MAP:
proto_tree_add_item(aem_tree, hf_aem_mappings_offset, tvb,
- AEM_OFFSET_MAPPINGS_OFFSET, 2, ENC_BIG_ENDIAN);
+ AUDIO_MAP_OFFSET_MAPPINGS_OFFSET, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_mappings, tvb,
- AEM_OFFSET_NUMBER_OF_MAPPINGS, 2, ENC_BIG_ENDIAN);
+ AUDIO_MAP_OFFSET_NUMBER_OF_MAPPINGS, 2, ENC_BIG_ENDIAN);
/* prepare mappings subtree */
mr_item = proto_tree_add_item(aem_tree, hf_aem_mappings, tvb,
0, 0, ENC_NA);
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);
- proto_item_set_len(mr_item, mr_counter * 6);
+ mr_offset = tvb_get_ntohs(tvb, AUDIO_MAP_OFFSET_MAPPINGS_OFFSET);
+ mr_counter = tvb_get_ntohs(tvb, AUDIO_MAP_OFFSET_NUMBER_OF_MAPPINGS);
+ proto_item_set_len(mr_item, mr_counter * 8);
- for(i = 0; i < mr_counter; ++i) {
+ for(i = 0; i < mr_counter; i++) {
proto_tree_add_item(mr_subtree, hf_aem_mapping_stream_index, tvb,
mr_offset, 2, ENC_BIG_ENDIAN);
mr_offset += 2;
proto_tree_add_item(mr_subtree, hf_aem_mapping_stream_channel, tvb,
mr_offset, 2, ENC_BIG_ENDIAN);
mr_offset += 2;
- proto_tree_add_item(mr_subtree, hf_aem_mapping_audio_channel, tvb,
+ proto_tree_add_item(mr_subtree, hf_aem_mapping_cluster_offset, tvb,
+ mr_offset, 2, ENC_BIG_ENDIAN);
+ mr_offset += 2;
+ proto_tree_add_item(mr_subtree, hf_aem_mapping_cluster_channel, tvb,
mr_offset, 2, ENC_BIG_ENDIAN);
mr_offset += 2;
}
break;
case AEM_DESCRIPTOR_AUDIO_CLUSTER:
- proto_tree_add_item(aem_tree, hf_aem_channel_count, tvb,
- AUDIO_CLUSTER_OFFSET_CHANNEL_COUNT, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_path_latency, tvb,
- AUDIO_CLUSTER_OFFSET_PATH_LATENCY, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_am824_label, tvb,
- AUDIO_CLUSTER_OFFSET_AM824_LABEL, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_cluster_name, tvb,
- AUDIO_CLUSTER_OFFSET_CLUSTER_NAME, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_cluster_name_string, tvb,
- AUDIO_CLUSTER_OFFSET_CLUSTER_NAME_STRING, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_configuration_name, tvb,
+ AUDIO_CLUSTER_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(aem_tree, hf_aem_configuration_name_string, tvb,
+ AUDIO_CLUSTER_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
+
proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
AUDIO_CLUSTER_OFFSET_SIGNAL_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_signal_index, tvb,
AUDIO_CLUSTER_OFFSET_SIGNAL_ID, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_signal_output, tvb,
+ AUDIO_CLUSTER_OFFSET_SIGNAL_OUTPUT, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aem_tree, hf_aem_path_latency, tvb,
+ AUDIO_CLUSTER_OFFSET_PATH_LATENCY, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
AUDIO_CLUSTER_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aem_tree, hf_aem_channel_count, tvb,
+ AUDIO_CLUSTER_OFFSET_CHANNEL_COUNT, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aem_tree, hf_aem_am824_label, tvb,
+ AUDIO_CLUSTER_OFFSET_FORMAT, 1, ENC_BIG_ENDIAN);
+
break;
case AEM_DESCRIPTOR_CONTROL:
- proto_tree_add_item(aem_tree, hf_aem_control_type, tvb,
- AEM_OFFSET_CONTROL_TYPE, 8, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_control_location_type, tvb,
- AEM_OFFSET_CONTROL_LOCATION_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_control_location_id, tvb,
- AEM_OFFSET_CONTROL_LOCATION_ID, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_control_value_type, tvb,
- AEM_OFFSET_CONTROL_VALUE_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
- AEM_OFFSET_CONTROL_DOMAIN, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
- AEM_OFFSET_CONTROL_NAME, 64, ENC_ASCII|ENC_NA);
+ CONTROL_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
- AEM_OFFSET_CONTROL_NAME_STRING, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_values_offset, tvb,
- AEM_OFFSET_VALUES_OFFSET_CTRL, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_number_of_values, tvb,
- AEM_OFFSET_NUMBER_OF_VALUES_CTRL, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
- AEM_OFFSET_SOURCE_TYPE_CTRL, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_signal_id, tvb,
- AEM_OFFSET_SOURCE_ID_CTRL, 2, ENC_BIG_ENDIAN);
+ CONTROL_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
+
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
CONTROL_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
CONTROL_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
+ CONTROL_OFFSET_CONTROL_DOMAIN, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_control_value_type, tvb,
+ CONTROL_OFFSET_CONTROL_VALUE_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_control_type, tvb,
+ CONTROL_OFFSET_CONTROL_TYPE, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aem_tree, hf_aem_reset_time, tvb,
+ CONTROL_OFFSET_RESET_TIME, 4, ENC_BIG_ENDIAN);
- 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);
+ proto_tree_add_item(aem_tree, hf_aem_values_offset, tvb,
+ CONTROL_OFFSET_VALUES_OFFSET, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_number_of_values, tvb,
+ CONTROL_OFFSET_NUMBER_OF_VALUES, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_signal_type, tvb,
+ CONTROL_OFFSET_SIGNAL_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_signal_index, tvb,
+ CONTROL_OFFSET_SIGNAL_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_signal_output, tvb,
+ CONTROL_OFFSET_SIGNAL_OUTPUT, 2, ENC_BIG_ENDIAN);
+
+ ctrl_val_type = tvb_get_ntohs(tvb, CONTROL_OFFSET_CONTROL_VALUE_TYPE);
+ num_ctrl_vals = tvb_get_ntohs(tvb, CONTROL_OFFSET_NUMBER_OF_VALUES);
+ mr_offset = tvb_get_ntohs(tvb, CONTROL_OFFSET_VALUES_OFFSET);
dissect_17221_ctrl_val(tvb, aem_tree, num_ctrl_vals, ctrl_val_type,
- CONTROL_OFFSET_VALUE_DETAILS);
+ mr_offset);
break;
case AEM_DESCRIPTOR_SIGNAL_SELECTOR:
+ proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
+ SIGNAL_SELECTOR_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ SIGNAL_SELECTOR_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
+ SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
+ SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
+ SIGNAL_SELECTOR_OFFSET_CONTROL_DOMAIN, 2, ENC_BIG_ENDIAN);
+
+ /*
proto_tree_add_item(aem_tree, hf_aem_control_location_type, tvb,
AEM_OFFSET_CONTROL_LOCATION_TYPE_SIGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_control_location_id, tvb,
@@ -2974,18 +3483,18 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
AEM_OFFSET_NUMBER_OF_SOURCES_SIGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_current_signal_type, tvb,
AEM_OFFSET_CURRENT_SOURCE_TYPE_SIGS, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_current_signal_id, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_current_signal_index, tvb,
AEM_OFFSET_CURRENT_SOURCE_ID_SIGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_default_signal_type, tvb,
AEM_OFFSET_DEFAULT_SOURCE_TYPE_SIGS, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_default_signal_id, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_default_signal_index, tvb,
AEM_OFFSET_DEFAULT_SOURCE_ID_SIGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
SIGNAL_SELECTOR_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
SIGNAL_SELECTOR_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
- /* set up sources subtree */
+ // set up sources subtree
mr_item = proto_tree_add_item(aem_tree, hf_aem_sources, tvb,
0, 0, ENC_NA);
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sources);
@@ -2997,12 +3506,27 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
proto_tree_add_item(mr_subtree, hf_aem_signal_type, tvb,
mr_offset, 2, ENC_BIG_ENDIAN);
mr_offset += 2;
- proto_tree_add_item(mr_subtree, hf_aem_signal_id, tvb,
+ proto_tree_add_item(mr_subtree, hf_aem_signal_index, tvb,
mr_offset, 2, ENC_BIG_ENDIAN);
mr_offset += 2;
}
+ */
break;
case AEM_DESCRIPTOR_MIXER:
+ proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
+ MIXER_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ MIXER_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
+ MIXER_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
+ MIXER_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
+ MIXER_OFFSET_CONTROL_DOMAIN, 2, ENC_BIG_ENDIAN);
+
+
+ /*
proto_tree_add_item(aem_tree, hf_aem_control_location_type, tvb,
AEM_OFFSET_CONTROL_LOCATION_TYPE_MXR, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_control_location_id, tvb,
@@ -3026,7 +3550,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
MIXER_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
- /* set up subtree for sources */
+ // set up subtree for sources
mr_item = proto_tree_add_item(aem_tree, hf_aem_sources, tvb,
0, 0, ENC_NA);
mr_subtree = proto_item_add_subtree(mr_item, ett_aem_sources);
@@ -3038,19 +3562,33 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
proto_tree_add_item(mr_subtree, hf_aem_signal_type, tvb,
mr_offset, 2, ENC_BIG_ENDIAN);
mr_offset += 2;
- proto_tree_add_item(mr_subtree, hf_aem_signal_id, tvb,
+ proto_tree_add_item(mr_subtree, hf_aem_signal_index, tvb,
mr_offset, 2, ENC_BIG_ENDIAN);
mr_offset += 2;
}
- /* end sources subtree */
+ // 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_name, tvb,
+ MATRIX_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ MATRIX_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
+ MATRIX_OFFSET_BLOCK_LATENCY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_control_latency, tvb,
+ MATRIX_OFFSET_CONTROL_LATENCY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
+ MATRIX_OFFSET_CONTROL_DOMAIN, 2, ENC_BIG_ENDIAN);
+
+ /*
proto_tree_add_item(aem_tree, hf_aem_control_type, tvb,
AEM_OFFSET_CONTROL_TYPE_MTRX, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_control_location_type, tvb,
@@ -3091,17 +3629,18 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
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,
- AEM_OFFSET_LOCALE_IDENTIFIER, 64, ENC_ASCII|ENC_NA);
+ LOCALE_OFFSET_LOCALE_IDENTIFIER, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_number_of_strings, tvb,
- AEM_OFFSET_NUMBER_OF_STRINGS, 2, ENC_BIG_ENDIAN);
+ LOCALE_OFFSET_NUMBER_OF_STRINGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_base_strings, tvb,
- AEM_OFFSET_BASE_STRINGS, 2, ENC_BIG_ENDIAN);
+ LOCALE_OFFSET_BASE_STRINGS, 2, ENC_BIG_ENDIAN);
break;
case AEM_DESCRIPTOR_STRINGS:
- mr_offset = AEM_OFFSET_STRING0;
+ mr_offset = STRINGS_OFFSET_STRING0;
for(i = 0; i < 7; ++i) {
proto_tree_add_item(aem_tree, hf_aem_string, tvb,
mr_offset, 64, ENC_ASCII|ENC_NA);
@@ -3121,11 +3660,12 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
mr_offset = MATRIX_SIGNAL_OFFSET_SIGNALS_OFFSET;
proto_item_set_len(mr_item, mr_counter * 4);
- for(i = 0; i < mr_counter; ++i) {
+ for(i = 0; i < mr_counter; ++i)
+ {
proto_tree_add_item(mr_subtree, hf_aem_signal_type, tvb,
mr_offset, 2, ENC_BIG_ENDIAN);
mr_offset += 2;
- proto_tree_add_item(mr_subtree, hf_aem_signal_id, tvb,
+ proto_tree_add_item(mr_subtree, hf_aem_signal_index, tvb,
mr_offset, 2, ENC_BIG_ENDIAN);
mr_offset += 2;
}
@@ -3136,16 +3676,43 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
proto_tree_add_item(aem_tree, hf_aem_target_descriptor_type, tvb,
MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_target_descriptor_id, tvb,
- MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_ID, 2, ENC_BIG_ENDIAN);
+ MEMORY_OBJECT_OFFSET_TARGET_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
MEMORY_OBJECT_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
proto_tree_add_item(aem_tree, hf_aem_object_name_string, tvb,
- MEMORY_OBJECT_OFFSET_OBJECT_NAME_STRING, 2, ENC_BIG_ENDIAN);
+ MEMORY_OBJECT_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_start_address, tvb,
MEMORY_OBJECT_OFFSET_START_ADDRESS, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_length, tvb,
MEMORY_OBJECT_OFFSET_LENGTH, 8, ENC_BIG_ENDIAN);
break;
+ case AEM_DESCRIPTOR_CLOCK_DOMAIN:
+ proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
+ CLOCK_DOMAIN_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ CLOCK_DOMAIN_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_clock_source_index, tvb,
+ CLOCK_DOMAIN_OFFSET_CLOCK_SOURCE_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_clock_sources_offset, tvb,
+ CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_OFFSET, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aem_tree, hf_aem_clock_sources_count, tvb,
+ CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_COUNT, 2, ENC_BIG_ENDIAN);
+
+ /* set up a clock sources subtree */
+ mr_counter = tvb_get_ntohs(tvb, CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_COUNT);
+ mr_offset = tvb_get_ntohs(tvb, CLOCK_DOMAIN_OFFSET_CLOCK_SOURCES_OFFSET);
+ mr_item = proto_tree_add_item(aem_tree, hf_aem_clock_sources_array, tvb,
+ mr_offset, mr_counter * 2, ENC_NA);
+ mr_subtree = proto_item_add_subtree(mr_item, ett_aem_clock_sources);
+ /* add clocks to new subtree */
+ for(i = 0; i < mr_counter; ++i)
+ {
+ proto_tree_add_item(mr_subtree, hf_aem_clock_sources, tvb,
+ mr_offset, 2, ENC_BIG_ENDIAN);
+ mr_offset += 2;
+ }
+ break;
+
default:
proto_tree_add_item(aem_tree, hf_aem_unknown_descriptor, tvb,
4, tvb_length(tvb) - 4, ENC_NA);
@@ -3158,17 +3725,14 @@ static void
dissect_17221_aecp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aecp_tree)
{
guint16 c_type;
- guint16 addr_type;
-#if 0
+ //guint16 addr_type;
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;
+ //proto_item *mr_subtree;
+ //proto_item *mr_item;
+ //int i;
/* next tvb for use in subdissection */
tvbuff_t *next_tvb;
proto_tree *flags_tree;
@@ -3177,632 +3741,633 @@ dissect_17221_aecp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aecp_tree)
/* AEM Common Format Fields */
proto_tree_add_item(aecp_tree, hf_aecp_message_type, tvb,
- AECP_VERSION_OFFSET, 1, ENC_BIG_ENDIAN);
+ AECP_OFFSET_VERSION, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_status_code, tvb,
- AECP_STATUS_CODE_OFFSET, 1, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STATUS_CODE, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_cd_length, tvb,
- AECP_CD_LENGTH_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_CD_LENGTH, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_target_guid, tvb,
- AECP_TARGET_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
+ AECP_OFFSET_TARGET_GUID, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_controller_guid, tvb,
- AECP_CONTROLLER_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
+ AECP_OFFSET_CONTROLLER_GUID, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_sequence_id, tvb,
- AECP_SEQUENCE_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_SEQUENCE_ID, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_u_flag, tvb,
- AECP_U_FLAG_OFFSET, 1, ENC_BIG_ENDIAN);
+ AECP_OFFSET_U_FLAG, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_command_type, tvb,
- AECP_COMMAND_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_COMMAND_TYPE, 2, ENC_BIG_ENDIAN);
/* get the command type for detailed dissection */
- c_type = tvb_get_ntohs(tvb, AECP_COMMAND_TYPE_OFFSET) & AECP_COMMAND_TYPE_MASK;
+ c_type = tvb_get_ntohs(tvb, AECP_OFFSET_COMMAND_TYPE) & 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
+ ctrl_data_len = tvb_get_ntohs(tvb, AECP_OFFSET_CD_LENGTH) & AECP_CD_LENGTH_MASK;
/* 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_ACQUIRE_ENTITY:
+ /* set up the flags subtree */
+ flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
+ AECP_OFFSET_ACQUIRE_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
+ flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
+ proto_tree_add_item(flags_tree, hf_aecp_persistent_flag, tvb,
+ AECP_OFFSET_ACQUIRE_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_release_flag, tvb,
+ AECP_OFFSET_ACQUIRE_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
+ /* end flags subtree */
+
+ proto_tree_add_item(aecp_tree, hf_aecp_owner_guid, tvb,
+ AECP_OFFSET_ACQUIRE_ENTITY_OWNER_GUID, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ break;
case AECP_COMMAND_LOCK_ENTITY:
proto_tree_add_item(aecp_tree, hf_aecp_unlock_flag, tvb,
- AECP_FLAGS_OFFSET, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_LOCK_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_locked_guid, tvb,
- AECP_LOCKED_GUID_OFFSET, 8, ENC_BIG_ENDIAN);
+ AECP_OFFSET_LOCK_ENTITY_LOCKED_GUID, 8, ENC_BIG_ENDIAN);
break;
case AECP_COMMAND_READ_DESCRIPTOR:
proto_tree_add_item(aecp_tree, hf_aecp_configuration, tvb,
- AECP_CONFIGURATION_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX, 2, ENC_BIG_ENDIAN);
- if (mess_type == AECP_AEM_COMMAND_MESSAGE)
+ if ((mess_type == AECP_AEM_COMMAND_MESSAGE)||(mess_status != 0))
{
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET_28, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET_30, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_DESCRIPTOR_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
}
else
{
- next_tvb = tvb_new_subset_remaining(tvb, 28);
+ next_tvb = tvb_new_subset_remaining(tvb, AECP_OFFSET_DESCRIPTOR_DESCRIPTOR);
dissect_17221_aem(next_tvb, pinfo, aecp_tree);
}
break;
case AECP_COMMAND_WRITE_DESCRIPTOR:
proto_tree_add_item(aecp_tree, hf_aecp_configuration, tvb,
- AECP_CONFIGURATION_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX, 2, ENC_BIG_ENDIAN);
/* on command descriptor is value to write
* on response descriptor is command value if successful
* or old value if unsuccessful */
- next_tvb = tvb_new_subset_remaining(tvb, 28);
+ next_tvb = tvb_new_subset_remaining(tvb, AECP_OFFSET_DESCRIPTOR_DESCRIPTOR);
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,
- AECP_OFFSET_ACQUIRE_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
- flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
- proto_tree_add_item(flags_tree, hf_aecp_persistent_flag, tvb,
- AECP_OFFSET_ACQUIRE_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_release_flag, tvb,
- AECP_OFFSET_ACQUIRE_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
- /* end flags subtree */
- proto_tree_add_item(aecp_tree, hf_aecp_owner_guid, tvb,
- AECP_OFFSET_ACQUIRE_ENTITY_OWNER_GUID, 8, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_OFFSET_ACQUIRE_ENTITY_DESCRIPTOR_ID, 2, ENC_BIG_ENDIAN);
- break;
- case AECP_COMMAND_SET_CLOCK_SOURCE:
- case AECP_COMMAND_GET_CLOCK_SOURCE:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_ID, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aem_clock_source_id, tvb,
- AECP_OFFSET_CLOCK_SOURCE_CLOCK_SOURCE_ID, 2, ENC_BIG_ENDIAN);
- break;
- case AECP_COMMAND_SET_STREAM_FORMAT:
- case AECP_COMMAND_GET_STREAM_FORMAT:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- 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,
- tvb, AECP_CONFIGURATION_OFFSET, 2, ENC_BIG_ENDIAN);
- 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,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- break;
- case AECP_COMMAND_SET_SIGNAL_SELECTOR:
- case AECP_COMMAND_GET_SIGNAL_SELECTOR:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_signal_type, tvb,
- AECP_SOURCE_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_signal_id, tvb,
- AECP_SOURCE_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ tvb, AECP_OFFSET_CONFIGURATION_CONFIGURATION_INDEX, 2, ENC_BIG_ENDIAN);
break;
- case AECP_COMMAND_SET_MATRIX:
+ case AECP_COMMAND_SET_STREAM_FORMAT:
+ case AECP_COMMAND_GET_STREAM_FORMAT:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_column, tvb,
- AECP_MATRIX_COLUMN_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_row, tvb,
- AECP_MATRIX_ROW_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_region_width, tvb,
- AECP_MATRIX_REGION_WIDTH_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_region_height, tvb,
- AECP_MATRIX_REGION_HEIGHT_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_rep, tvb,
- AECP_MATRIX_REP_OFFSET, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_direction, tvb,
- AECP_MATRIX_DIRECTION_OFFSET, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_value_count, tvb,
- AECP_MATRIX_VALUE_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_item_offset, tvb,
- AECP_MATRIX_ITEM_OFFSET_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_STREAM_FORMAT_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
- if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_affected_item_count, tvb,
- AECP_MATRIX_AFFECTED_ITEM_COUNT_OFFSET, 4, ENC_BIG_ENDIAN);
+ if ((mess_type != AECP_AEM_COMMAND_MESSAGE)||(c_type == AECP_COMMAND_SET_STREAM_FORMAT))
+ {
+ next_tvb = tvb_new_subset(tvb, AECP_OFFSET_STREAM_FORMAT_STREAM_FORMAT, 8, 8);
+ dissect_17221_stream_format(next_tvb, aecp_tree);
}
break;
- case AECP_COMMAND_GET_MATRIX:
+ case AECP_COMMAND_SET_VIDEO_FORMAT:
+ case AECP_COMMAND_GET_VIDEO_FORMAT:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_column, tvb,
- AECP_MATRIX_COLUMN_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_row, tvb,
- AECP_MATRIX_ROW_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_region_width, tvb,
- AECP_MATRIX_REGION_WIDTH_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_region_height, tvb,
- AECP_MATRIX_REGION_HEIGHT_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_direction, tvb,
- AECP_MATRIX_DIRECTION_OFFSET, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_value_count, tvb,
- AECP_MATRIX_VALUE_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_matrix_item_offset, tvb,
- AECP_MATRIX_ITEM_OFFSET_OFFSET, 2, ENC_BIG_ENDIAN);
- /* 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,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+
+ if ((mess_type != AECP_AEM_COMMAND_MESSAGE)||(c_type == AECP_COMMAND_SET_VIDEO_FORMAT))
+ {
+ next_tvb = tvb_new_subset(tvb, AECP_OFFSET_VIDEO_FORMAT_FORMAT_SPECIFIC, 4, 4);
+ dissect_17221_video_format(next_tvb, aecp_tree);
+
+ next_tvb = tvb_new_subset(tvb, AECP_OFFSET_VIDEO_FORMAT_ASPECT_RATIO, 2, 2);
+ dissect_17221_video_aspect_ratio(next_tvb, aecp_tree);
+
+ proto_tree_add_item(aecp_tree, hf_aem_color_space, tvb,
+ AECP_OFFSET_VIDEO_FORMAT_COLOR_SPACE, 2, ENC_BIG_ENDIAN);
+
+ next_tvb = tvb_new_subset(tvb, AECP_OFFSET_VIDEO_FORMAT_FRAME_SIZE, 4, 4);
+ dissect_17221_video_frame_size(next_tvb, aecp_tree);
+ }
break;
- case AECP_COMMAND_SET_STREAM_INFO:
+ case AECP_COMMAND_SET_SENSOR_FORMAT:
+ case AECP_COMMAND_GET_SENSOR_FORMAT:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_SENSOR_FORMAT_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
- /* set up the flags subtree */
- flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
- AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
- flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
- proto_tree_add_item(flags_tree, hf_acmp_flags_class_b, tvb,
- AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_acmp_flags_fast_connect, tvb,
- AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_acmp_flags_saved_state, tvb,
- AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_acmp_flags_streaming_wait, tvb,
- AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_msrp_acc_lat_valid_flag, tvb,
- AECP_FLAGS_32_OFFSET, 4, ENC_BIG_ENDIAN);
- /* end flags subtree */
- proto_tree_add_item(aecp_tree, hf_aecp_msrp_accumulated_latency, tvb,
- AECP_SET_MSRP_ACC_LAT_OFFSET, 4, ENC_BIG_ENDIAN);
+ if ((mess_type != AECP_AEM_COMMAND_MESSAGE)||(c_type == AECP_COMMAND_SET_SENSOR_FORMAT))
+ {
+ next_tvb = tvb_new_subset(tvb, AECP_OFFSET_SENSOR_FORMAT_SENSOR_FORMAT, 8, 8);
+ dissect_17221_sensor_format(next_tvb, aecp_tree);
+ }
break;
+ case AECP_COMMAND_SET_STREAM_INFO:
case AECP_COMMAND_GET_STREAM_INFO:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- if (mess_type == AECP_AEM_RESPONSE_MESSAGE) { /* if response */
+ AECP_OFFSET_STREAM_INFO_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_STREAM_INFO_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ if ((mess_type == AECP_AEM_RESPONSE_MESSAGE) || (c_type == AECP_COMMAND_SET_STREAM_INFO)) {
proto_tree_add_item(aecp_tree, hf_acmp_flags_class_b, tvb,
- AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_acmp_flags_fast_connect, tvb,
- AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_acmp_flags_saved_state, tvb,
- AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_acmp_flags_streaming_wait, tvb,
- AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_connected_flag, tvb,
- AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_stream_id_valid_flag, tvb,
- AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_msrp_acc_lat_valid_flag, tvb,
- AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_dest_mac_valid_flag, tvb,
- AECP_FLAGS28_OFFSET, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_stream_format, tvb,
- AECP_OFFSET_GET_STREAM_INFO_STREAM_FORMAT, 8, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_STREAM_FORMAT, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_acmp_stream_id, tvb,
- AECP_OFFSET_GET_STREAM_INFO_STREAM_ID, 8, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_STREAM_ID, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_msrp_accumulated_latency, tvb,
- AECP_MSRP_ACC_LAT_OFFSET, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_MSRP_ACCUMULATED_LATENCY, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_acmp_stream_dest_mac, tvb,
- AECP_DEST_MAC_OFFSET, 6, ENC_NA);
- proto_tree_add_item(aecp_tree, hf_aem_clock_source_id, tvb,
- AECP_STREAM_CLOCK_SOURCE_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_STREAM_INFO_STREAM_DEST_MAC, 6, ENC_NA);
+ proto_tree_add_item(aecp_tree, hf_aecp_msrp_failure_code, tvb,
+ AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_CODE, 1, ENC_NA);
+ proto_tree_add_item(aecp_tree, hf_aecp_msrp_failure_bridge_id, tvb,
+ AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_BRIDGE_ID, 8, ENC_NA);
}
- break;
case AECP_COMMAND_SET_NAME:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_name_index, tvb,
- AECP_NAME_INDEX_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_name, tvb,
- AECP_NAME_OFFSET, 64, ENC_ASCII|ENC_NA);
- break;
case AECP_COMMAND_GET_NAME:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_NAME_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_NAME_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_name_index, tvb,
- AECP_NAME_INDEX_OFFSET, 2, ENC_BIG_ENDIAN);
- if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
+ AECP_OFFSET_NAME_NAME_INDEX, 2, ENC_BIG_ENDIAN);
+ if ((mess_type == AECP_AEM_RESPONSE_MESSAGE) || (c_type == AECP_COMMAND_SET_NAME)) {
proto_tree_add_item(aecp_tree, hf_aecp_name, tvb,
- AECP_NAME_OFFSET, 64, ENC_ASCII|ENC_NA);
+ AECP_OFFSET_NAME_NAME, 64, ENC_ASCII|ENC_NA);
}
break;
case AECP_COMMAND_SET_ASSOCIATION_ID:
case AECP_COMMAND_GET_ASSOCIATION_ID:
proto_tree_add_item(aecp_tree, hf_aecp_association_id, tvb,
- AECP_ASSOCIATION_ID_OFFSET, 8, ENC_BIG_ENDIAN);
+ AECP_OFFSET_ASSOCIATION_ID_ASSOCIATION_ID, 8, ENC_BIG_ENDIAN);
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,
- AECP_KEYCHAIN_ID_OFFSET, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_keytype, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEYTYPE, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_key_number, tvb,
- AECP_KEY_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_continued_flag, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_CONTINUED, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_key_part, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PART, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_key_length, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_LENGTH, 2, ENC_BIG_ENDIAN);
-
- /* set up key permissions flag subtree */
- flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
-
- proto_tree_add_item(flags_tree, hf_aecp_private_key_read_flag, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_private_key_write_flag, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_public_key_write_flag, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_connection_flag, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_control_admin_flag, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_mem_obj_admin_flag, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_mem_obj_settings_flag, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_control_user_l4, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_control_user_l3, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_control_user_l2, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_control_user_l1, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- /* end key permissions flag subtree */
-
- proto_tree_add_item(aecp_tree, hf_aecp_key_guid, tvb,
- AECP_OFFSET_AUTH_ADD_KEY_KEY_GUID, 8, ENC_BIG_ENDIAN);
-
- 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,
- mr_offset, mr_counter, ENC_NA);
+ case AECP_COMMAND_SET_SAMPLING_RATE:
+ case AECP_COMMAND_GET_SAMPLING_RATE:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_SAMPLING_RATE_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ if ((mess_type == AECP_AEM_RESPONSE_MESSAGE) || (c_type == AECP_COMMAND_SET_SAMPLING_RATE)) {
+ proto_tree_add_item(aecp_tree, hf_aecp_sampling_rate, tvb,
+ AECP_OFFSET_SAMPLING_RATE_SAMPLING_RATE, 64, ENC_BIG_ENDIAN);
+ }
break;
- case AECP_COMMAND_AUTHENTICATE:
- case AECP_COMMAND_DEAUTHENTICATE:
- proto_tree_add_item(aecp_tree, hf_aecp_token_length, tvb,
- AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH, 2, ENC_BIG_ENDIAN);
- /* set up key permissions flag subtree */
- flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
-
- proto_tree_add_item(flags_tree, hf_aecp_private_key_read_flag, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_private_key_write_flag, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_public_key_write_flag, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_connection_flag, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_control_admin_flag, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_mem_obj_admin_flag, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_mem_obj_settings_flag, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_control_user_l4, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_control_user_l3, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_control_user_l2, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_control_user_l1, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_PERMISSIONS, 4, ENC_BIG_ENDIAN);
- /* end key permissions flag subtree */
- proto_tree_add_item(aecp_tree, hf_aecp_key_guid, tvb,
- AECP_OFFSET_AUTHENTICATE_KEY_GUID, 8, ENC_BIG_ENDIAN);
-
- 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,
- mr_offset, mr_counter, ENC_NA);
+ case AECP_COMMAND_SET_CLOCK_SOURCE:
+ case AECP_COMMAND_GET_CLOCK_SOURCE:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_CLOCK_SOURCE_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ if ((mess_type == AECP_AEM_RESPONSE_MESSAGE) || (c_type == AECP_COMMAND_SET_CLOCK_SOURCE)) {
+ proto_tree_add_item(aecp_tree, hf_aem_clock_source_id, tvb,
+ AECP_OFFSET_CLOCK_SOURCE_CLOCK_SOURCE_INDEX, 2, ENC_BIG_ENDIAN);
+ }
break;
- case AECP_COMMAND_GET_COUNTERS:
+ 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,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- /* begin counters_valid flags field */
- flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
-
- proto_tree_add_item(flags_tree, hf_aecp_gptp_unlocked_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_gtpt_locked_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_media_unlocked_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_media_locked_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_stream_reset_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_srp_refused_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_backup_stream_switch_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_missed_avdecc_response_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_refused_avdecc_command_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_seq_num_mismatch_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_media_clock_toggles_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_timestamp_uncertains_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_timestamp_valids_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_unsupported_formats_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_bad_presentation_times_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_srp_latency_violations_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_packets_tx_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_packets_rx_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_packets_interest_rx_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_talker_bw_reserved_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_reserved1_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_reserved2_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_entity_specific1_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_entity_specific2_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_entity_specific3_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_entity_specific4_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_entity_specific5_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_entity_specific6_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_entity_specific7_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_entity_specific8_valid, tvb,
- AECP_OFFSET_GET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- /* end counters_valid flags field */
-
- proto_tree_add_item(aecp_tree, hf_aecp_gptp_gm_changed, tvb,
- AECP_OFFSET_COUNTERS_VALID_GPTP_GM_CHANGED, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_gptp_unlocked, tvb,
- AECP_OFFSET_COUNTERS_VALID_GPTP_UNLOCKED, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_gptp_locked, tvb,
- AECP_OFFSET_COUNTERS_VALID_GPTP_LOCKED, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_media_unlocked, tvb,
- AECP_OFFSET_COUNTERS_VALID_MEDIA_UNLOCKED, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_media_locked, tvb,
- AECP_OFFSET_COUNTERS_VALID_MEDIA_LOCKED, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_media_seq_error, tvb,
- AECP_OFFSET_COUNTERS_VALID_MEDIA_SEQ_ERROR, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_stream_reset, tvb,
- AECP_OFFSET_COUNTERS_VALID_STREAM_RESET, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_srp_refused, tvb,
- AECP_OFFSET_COUNTERS_VALID_SRP_REFUSED, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_backup_stream_switch, tvb,
- AECP_OFFSET_COUNTERS_VALID_BACKUP_STREAM_SWITCH, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_missed_avdecc_response, tvb,
- AECP_OFFSET_COUNTERS_VALID_MISSED_AVDECC_RESPONSE, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_refused_avdecc_command, tvb,
- AECP_OFFSET_COUNTERS_VALID_REFUSED_AVDECC_COMMAND, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_seq_num_mismatch, tvb,
- AECP_OFFSET_COUNTERS_VALID_SEQ_NUM_MISMATCH, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_media_clock_toggles, tvb,
- AECP_OFFSET_COUNTERS_VALID_MEDIA_CLOCK_TOGGLES, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_timestamp_uncertains, tvb,
- AECP_OFFSET_COUNTERS_VALID_TIMESTAMP_UNCERTAINS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_timestamp_valids, tvb,
- AECP_OFFSET_COUNTERS_VALID_TIMESTAMP_VALIDS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_unsupported_formats, tvb,
- AECP_OFFSET_COUNTERS_VALID_UNSUPPORTED_FORMATS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_bad_presentation_times, tvb,
- AECP_OFFSET_COUNTERS_VALID_BAD_PRESENTATION_TIMES, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_srp_latency_violations, tvb,
- AECP_OFFSET_COUNTERS_VALID_SRP_LATENCY_VIOLATIONS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_packets_tx, tvb,
- AECP_OFFSET_COUNTERS_VALID_PACKETS_TX, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_packets_rx, tvb,
- AECP_OFFSET_COUNTERS_VALID_PACKETS_RX, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_packets_interest_rx, tvb,
- AECP_OFFSET_COUNTERS_VALID_PACKETS_OF_INTEREST_RX, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_talker_bw_reserved, tvb,
- AECP_OFFSET_COUNTERS_VALID_TALKER_BW_RESERVED, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_reserved_counter, tvb,
- AECP_OFFSET_COUNTERS_VALID_RESERVED1, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_reserved_counter, tvb,
- AECP_OFFSET_COUNTERS_VALID_RESERVED2, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_entity_specific1, tvb,
- AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_1, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_entity_specific2, tvb,
- AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_2, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_entity_specific3, tvb,
- AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_3, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_entity_specific4, tvb,
- AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_entity_specific5, tvb,
- AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_5, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_entity_specific6, tvb,
- AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_6, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_entity_specific7, tvb,
- AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_7, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_entity_specific8, tvb,
- AECP_OFFSET_COUNTERS_VALID_ENTITY_SPECIFIC_8, 4, ENC_BIG_ENDIAN);
+ AECP_OFFSET_CONTROL_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_CONTROL_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ /* TODO: dissect control/mixer values */
break;
- case AECP_COMMAND_SET_MEDIA_FORMAT:
- case AECP_COMMAND_GET_MEDIA_FORMAT:
+ case AECP_COMMAND_INCREMENT_CONTROL:
+ case AECP_COMMAND_DECREMENT_CONTROL:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_media_format, tvb,
- AECP_MEDIA_FORMAT_OFFSET, 16, ENC_NA);
- next_tvb = tvb_new_subset(tvb, AECP_OFFSET_SETMF_MEDIA_FMT, 16, 16);
- dissect_17221_media_format(next_tvb, aecp_tree);
+ AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_INCDEC_CONTROL_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ /* TODO: dissect control index list (message) or values (response) */
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,
- AECP_ADDRESS_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- 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,
- AECP_ADDRESS_OFFSET, 6, ENC_NA);
- } else if (addr_type == AECP_ADDRESS_IPV4) {
- proto_tree_add_item(aecp_tree, hf_aecp_ipv4_address, tvb,
- AECP_ADDRESS_OFFSET, 4, ENC_BIG_ENDIAN);
- } else if (addr_type == AECP_ADDRESS_IPV6) {
- proto_tree_add_item(aecp_tree, hf_aecp_ipv6_address, tvb,
- AECP_ADDRESS_OFFSET, 8, ENC_NA);
- }
+ case AECP_COMMAND_SET_SIGNAL_SELECTOR:
+ case AECP_COMMAND_GET_SIGNAL_SELECTOR:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_SIGNAL_SELECTOR_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ if ((mess_type == AECP_AEM_RESPONSE_MESSAGE) || (c_type == AECP_COMMAND_SET_SIGNAL_SELECTOR)) {
+ proto_tree_add_item(aecp_tree, hf_aecp_signal_type, tvb,
+ AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_signal_index, tvb,
+ AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_signal_output, tvb,
+ AECP_OFFSET_SIGNAL_SELECTOR_SIGNAL_OUTPUT, 2, ENC_BIG_ENDIAN);
}
break;
- case AECP_COMMAND_REGISTER_QUERY_NOTIFICATION:
- proto_tree_add_item(aecp_tree, hf_aecp_query_period, tvb,
- AECP_QUERY_PERIOD_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_query_limit, tvb,
- AECP_QUERY_LIMIT_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_query_type, tvb,
- AECP_QUERY_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_query_id, tvb,
- AECP_QUERY_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ case AECP_COMMAND_GET_MATRIX:
+ case AECP_COMMAND_SET_MATRIX:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_QUERY_DESC_T_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_QUERY_DESC_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- /* TODO - add query specific fields */
+ AECP_OFFSET_MATRIX_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_MATRIX_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_matrix_column, tvb,
+ AECP_OFFSET_MATRIX_MATRIX_COLUMN, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_matrix_row, tvb,
+ AECP_OFFSET_MATRIX_MATRIX_ROW, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_matrix_region_width, tvb,
+ AECP_OFFSET_MATRIX_REGION_WIDTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_matrix_region_height, tvb,
+ AECP_OFFSET_MATRIX_REGION_HEIGHT, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_matrix_rep, tvb,
+ AECP_OFFSET_MATRIX_REP, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_matrix_direction, tvb,
+ AECP_OFFSET_MATRIX_DIRECTION, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_matrix_value_count, tvb,
+ AECP_OFFSET_MATRIX_VALUE_COUNT, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_matrix_item_offset, tvb,
+ AECP_OFFSET_MATRIX_ITEM_OFFSET, 2, ENC_BIG_ENDIAN);
+
+ if ((mess_type == AECP_AEM_RESPONSE_MESSAGE) || (c_type == AECP_COMMAND_GET_MATRIX)) {
+ /* TODO: dissect matrix values */
+ }
break;
- case AECP_COMMAND_DEREGISTER_QUERY_NOTIFICATION:
- proto_tree_add_item(aecp_tree, hf_aecp_query_id, tvb,
- AECP_DEREG_QUERY_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ 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,
+ AECP_OFFSET_STREAMING_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_STREAMING_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ break;
+ case AECP_COMMAND_REGISTER_UNSOL_NOTIFICATION:
+ case AECP_COMMAND_DEREGISTER_UNSOL_NOTIFICATION:
+ /* No additional fields in these command types */
break;
case AECP_COMMAND_IDENTIFY_NOTIFICATION:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_IDENTIFY_NOTIFICATION_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
break;
- case AECP_COMMAND_STATE_CHANGE_NOTIFICATION:
- proto_tree_add_item(aecp_tree, hf_aecp_count, tvb,
- AECP_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
-
- 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,
- mr_offset, mr_counter * 4, ENC_NA);
- mr_subtree = proto_item_add_subtree(mr_item, ett_aecp_descriptors);
+ case AECP_COMMAND_GET_AVB_INFO:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_AVB_INFO_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_AVB_INFO_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
+ /* TODO: dissect AVB INFO */
+ }
+ break;
+ case AECP_COMMAND_GET_AS_PATH:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_AS_PATH_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
+ proto_tree_add_item(aecp_tree, hf_aecp_as_path_count, tvb,
+ AECP_OFFSET_AS_PATH_COUNT, 2, ENC_BIG_ENDIAN);
+ /* TODO: dissect AS path entries */
+ }
+ break;
+ case AECP_COMMAND_GET_COUNTERS:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_COUNTERS_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
- for(i = 0; i < mr_counter; ++i) {
- proto_tree_add_item(mr_subtree, hf_aecp_descriptor_type, tvb,
- mr_offset, 2, ENC_BIG_ENDIAN);
- mr_offset += 2;
- proto_tree_add_item(mr_subtree, hf_aecp_descriptor_id, tvb,
- mr_offset, 2, ENC_BIG_ENDIAN);
- mr_offset += 2;
+ flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
+
+ /* begin counters_valid flags field */
+ proto_tree_add_item(flags_tree, hf_aecp_entity_specific1_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_entity_specific2_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_entity_specific3_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_entity_specific4_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_entity_specific5_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_entity_specific6_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_entity_specific7_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_entity_specific8_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+
+ switch (tvb_get_ntohs(tvb, AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE)) {
+ case AEM_DESCRIPTOR_ENTITY:
+ break;
+ case AEM_DESCRIPTOR_AVB_INTERFACE:
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_link_up_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_link_down_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_packets_tx_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_packets_rx_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_rx_crc_error_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_gptp_gm_changed_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ break;
+ case AEM_DESCRIPTOR_CLOCK_DOMAIN:
+ proto_tree_add_item(flags_tree, hf_aecp_clock_domain_locked_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_clock_domain_unlocked_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ break;
+ case AEM_DESCRIPTOR_STREAM_INPUT:
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_media_locked_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_media_unlocked_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_stream_reset_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_seq_num_mismatch_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_media_reset_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_timestamp_uncertain_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_timestamp_valid_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_timestamp_not_valid_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_unsupported_format_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_late_timestamp_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_early_timestamp_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_packets_tx_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_packets_rx_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ break;
+ default:
+ break;
+ }
+ /* end counters_valid flags field */
+
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific1, tvb,
+ AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_1, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific2, tvb,
+ AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_2, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific3, tvb,
+ AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_3, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific4, tvb,
+ AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_4, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific5, tvb,
+ AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_5, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific6, tvb,
+ AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_6, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific7, tvb,
+ AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_7, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific8, tvb,
+ AECP_OFFSET_COUNTERS_ENTITY_SPECIFIC_8, 4, ENC_BIG_ENDIAN);
+
+ switch (tvb_get_ntohs(tvb, AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE)) {
+ case AEM_DESCRIPTOR_ENTITY:
+ break;
+ case AEM_DESCRIPTOR_AVB_INTERFACE:
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_link_up, tvb,
+ AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_UP, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_link_down, tvb,
+ AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_DOWN, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_packets_tx, tvb,
+ AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_TX, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_packets_rx, tvb,
+ AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_RX, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_rx_crc_error, tvb,
+ AECP_OFFSET_COUNTERS_AVB_INTERFACE_RX_CRC_ERROR, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_avb_interface_gptp_gm_changed, tvb,
+ AECP_OFFSET_COUNTERS_AVB_INTERFACE_GPTP_GM_CHANGED, 4, ENC_BIG_ENDIAN);
+ break;
+ case AEM_DESCRIPTOR_CLOCK_DOMAIN:
+ proto_tree_add_item(flags_tree, hf_aecp_clock_domain_locked, tvb,
+ AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_LOCKED, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_clock_domain_unlocked, tvb,
+ AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_UNLOCKED, 4, ENC_BIG_ENDIAN);
+ break;
+ case AEM_DESCRIPTOR_STREAM_INPUT:
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_media_locked, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_LOCKED, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_media_unlocked, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_UNLOCKED, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_stream_reset, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_STREAM_RESET, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_seq_num_mismatch, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_SEQ_NUM_MISMATCH, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_media_reset, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_RESET, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_timestamp_uncertain, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_UNCERTAIN, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_timestamp_valid, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_timestamp_not_valid, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_NOT_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_unsupported_format, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_UNSUPPORTED_FORMAT, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_late_timestamp, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_LATE_TIMESTAMP, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_early_timestamp, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_EARLY_TIMESTAMP, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_packets_tx, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_TX, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_aecp_stream_input_packets_rx, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_RX, 4, ENC_BIG_ENDIAN);
+ break;
+ default:
+ break;
+ }
}
break;
- case AECP_COMMAND_INCREMENT_CONTROL_VALUE:
- case AECP_COMMAND_DECREMENT_CONTROL_VALUE:
+ case AECP_COMMAND_GET_AUDIO_MAP:
+ case AECP_COMMAND_GET_VIDEO_MAP:
+ case AECP_COMMAND_GET_SENSOR_MAP:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
- if (mess_type == AECP_AEM_COMMAND_MESSAGE) {
- proto_tree_add_item(aecp_tree, hf_aecp_values_count, tvb,
- AECP_VALUES_COUNT_OFFSET, 2, ENC_BIG_ENDIAN);
- mr_counter = tvb_get_ntohs(tvb, AECP_VALUES_COUNT_OFFSET);
- proto_tree_add_item(aecp_tree, hf_aecp_values, tvb,
- AECP_VALUES_OFFSET, mr_counter, ENC_NA);
+ AECP_OFFSET_MAP_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_MAP_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_map_index, tvb,
+ AECP_OFFSET_MAP_MAP_INDEX, 2, ENC_BIG_ENDIAN);
+ if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
+ proto_tree_add_item(aecp_tree, hf_aecp_number_of_maps, tvb,
+ AECP_OFFSET_MAP_NUMBER_OF_MAPS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_number_of_maps, tvb,
+ AECP_OFFSET_MAP_NUMBER_OF_MAPPINGS, 2, ENC_BIG_ENDIAN);
+ /* TODO: dissect mappings */
}
break;
+ case AECP_COMMAND_ADD_AUDIO_MAPPINGS:
+ case AECP_COMMAND_REMOVE_AUDIO_MAPPINGS:
+ case AECP_COMMAND_ADD_VIDEO_MAPPINGS:
+ case AECP_COMMAND_REMOVE_VIDEO_MAPPINGS:
+ case AECP_COMMAND_ADD_SENSOR_MAPPINGS:
+ case AECP_COMMAND_REMOVE_SENSOR_MAPPINGS:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_ADDREM_MAP_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_number_of_maps, tvb,
+ AECP_OFFSET_ADDREM_MAP_NUMBER_OF_MAPPINGS, 2, ENC_BIG_ENDIAN);
+ /* TODO: dissect mappings */
+ break;
case AECP_COMMAND_START_OPERATION:
- case AECP_COMMAND_ABORT_OPERATION:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_START_OPERATION_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_START_OPERATION_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_operation_id, tvb,
- AECP_OPERATION_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_START_OPERATION_OPERATION_ID, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_operation_type, tvb,
- AECP_OPERATION_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- /* TODO - add values support when operation types are defined */
+ AECP_OFFSET_START_OPERATION_OPERATION_TYPE, 2, ENC_BIG_ENDIAN);
+ /* TODO: add values support when operation types are defined */
+ break;
+ case AECP_COMMAND_ABORT_OPERATION:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_ABORT_OPERATION_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_operation_id, tvb,
+ AECP_OFFSET_ABORT_OPERATION_OPERATION_ID, 2, ENC_BIG_ENDIAN);
break;
case AECP_COMMAND_OPERATION_STATUS:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_OPERATION_STATUS_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_operation_id, tvb,
- AECP_OPERATION_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_OPERATION_STATUS_OPERATION_ID, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_percent_complete, tvb,
- AECP_PERCENT_COMPLETE_OFFSET, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_OPERATION_STATUS_PERCENT_COMPLETE, 2, ENC_BIG_ENDIAN);
break;
- case AECP_COMMAND_GET_AS_PATH:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- AECP_DESCRIPTOR_TYPE_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_id, tvb,
- AECP_DESCRIPTOR_ID_OFFSET, 2, ENC_BIG_ENDIAN);
+ case AECP_COMMAND_AUTH_ADD_KEY:
+ case AECP_COMMAND_AUTH_DELETE_KEY:
+ case AECP_COMMAND_AUTH_GET_KEY:
+ proto_tree_add_item(aecp_tree, hf_aecp_key_eui, tvb,
+ AECP_OFFSET_AUTH_KEY_KEY_EUI, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_key_type, tvb,
+ AECP_OFFSET_AUTH_KEY_KEY_TYPE, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_key_length, tvb,
+ AECP_OFFSET_AUTH_KEY_KEY_LENGTH, 2, ENC_BIG_ENDIAN);
+
+ if (((mess_type == AECP_AEM_RESPONSE_MESSAGE) && (c_type == AECP_COMMAND_AUTH_GET_KEY)) ||
+ ((mess_type == AECP_AEM_COMMAND_MESSAGE) && (c_type == AECP_COMMAND_AUTH_ADD_KEY))) {
+
+ mr_counter = tvb_get_ntohs(tvb, AECP_OFFSET_AUTH_KEY_KEY_LENGTH) & AECP_KEY_LENGTH_MASK;
+ proto_tree_add_item(aecp_tree, hf_aecp_key, tvb,
+ AECP_OFFSET_AUTH_KEY_KEY, mr_counter, ENC_NA);
+ }
+ break;
+ case AECP_COMMAND_AUTH_GET_KEY_LIST:
+ proto_tree_add_item(aecp_tree, hf_aecp_keychain_id_small, tvb,
+ AECP_OFFSET_AUTH_GET_KEY_LIST_KEYCHAIN_ID, 1, ENC_BIG_ENDIAN);
+ if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
+ proto_tree_add_item(aecp_tree, hf_aecp_keychain_id_small, tvb,
+ AECP_OFFSET_AUTH_GET_KEY_LIST_NUMBER_OF_KEYS, 1, ENC_BIG_ENDIAN);
+ }
+ break;
+ case AECP_COMMAND_AUTH_ADD_KEY_TO_CHAIN:
+ case AECP_COMMAND_AUTH_DELETE_KEY_FROM_CHAIN:
+ proto_tree_add_item(aecp_tree, hf_aecp_keychain_id, tvb,
+ AECP_OFFSET_AUTH_KEYCHAIN_KEYCHAIN_ID, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_key_eui, tvb,
+ AECP_OFFSET_AUTH_KEYCHAIN_KEY_EUI, 8, ENC_BIG_ENDIAN);
+ break;
+ case AECP_COMMAND_AUTH_GET_KEYCHAIN_LIST:
+ proto_tree_add_item(aecp_tree, hf_aecp_keychain_id, tvb,
+ AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_KEYCHAIN_ID, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_keychain_list_index, tvb,
+ AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_LIST_INDEX, 2, ENC_BIG_ENDIAN);
if (mess_type == AECP_AEM_RESPONSE_MESSAGE) {
- /* TODO - how big is path sequence? */
+ proto_tree_add_item(aecp_tree, hf_aecp_keychain_number_of_lists, tvb,
+ AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_LISTS, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_keychain_number_of_keys, tvb,
+ AECP_OFFSET_AUTH_GET_KEYCHAIN_LIST_NUMBER_OF_KEYS, 2, ENC_BIG_ENDIAN);
+ /* TODO: dissect key euis */
}
break;
+ case AECP_COMMAND_AUTH_GET_IDENTITY:
+ proto_tree_add_item(aecp_tree, hf_aecp_key_eui, tvb,
+ AECP_OFFSET_AUTH_GET_IDENTITY_KEY_GUID, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_key_signature, tvb,
+ AECP_OFFSET_AUTH_GET_IDENTITY_SIGNATURE, 28, ENC_NA);
+ break;
+ case AECP_COMMAND_AUTH_ADD_TOKEN:
+ if (mess_type == AECP_AEM_COMMAND_MESSAGE) {
+ guint32 token_length = tvb_get_ntohl(tvb, AECP_OFFSET_AUTH_TOKEN_TOKEN_LENGTH);
+ proto_tree_add_item(aecp_tree, hf_aecp_key_length, tvb,
+ AECP_OFFSET_AUTH_TOKEN_TOKEN_LENGTH, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_key_signature, tvb,
+ AECP_OFFSET_AUTH_TOKEN_AUTHENTICATION_TOKEN, token_length, ENC_NA);
+ }
+ break;
+ case AECP_COMMAND_AUTH_DELETE_TOKEN:
+ /* No command specific fields */
+ break;
+ case AECP_COMMAND_AUTHENTICATE:
+ case AECP_COMMAND_DEAUTHENTICATE:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_AUTHENTICATE_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_token_length, tvb,
+ AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH, 2, ENC_BIG_ENDIAN);
+ mr_counter = tvb_get_ntohs(tvb, AECP_OFFSET_AUTHENTICATE_TOKEN_LENGTH)
+ & AECP_TOKEN_LENGTH_MASK;
+ proto_tree_add_item(aecp_tree, hf_aecp_auth_token, tvb,
+ AECP_OFFSET_AUTHENTICATE_AUTH_TOKEN, mr_counter, ENC_NA);
+ break;
+ case AECP_COMMAND_ENABLE_TRANSPORT_SECURITY:
+ proto_tree_add_item(aecp_tree, hf_aecp_key_eui, tvb,
+ AECP_OFFSET_TRANSPORT_SECURITY_KEY_EUI, 8, ENC_BIG_ENDIAN);
+ break;
+ case AECP_COMMAND_DISABLE_TRANSPORT_SECURITY:
+ /* No command specific fields */
+ break;
+ case AECP_COMMAND_ENABLE_STREAM_ENCRYPTION:
+ case AECP_COMMAND_DISABLE_STREAM_ENCRYPTION:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ if (c_type == AECP_COMMAND_ENABLE_STREAM_ENCRYPTION) {
+ proto_tree_add_item(aecp_tree, hf_aecp_key_eui, tvb,
+ AECP_OFFSET_STREAM_ENCRYPTION_KEY_EUI, 8, ENC_BIG_ENDIAN);
+ }
+ 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 */
@@ -3842,19 +4407,27 @@ dissect_17221_adp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *adp_tree)
ent_cap_flags_tree = proto_item_add_subtree(ent_cap_ti, ett_adp_ent_cap);
proto_tree_add_item(ent_cap_flags_tree,
- hf_adp_entity_cap_avdecc_ip, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
+ hf_adp_entity_cap_efu_mode, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(ent_cap_flags_tree,
- hf_adp_entity_cap_zero_conf, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
+ hf_adp_entity_cap_address_access_supported, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(ent_cap_flags_tree,
hf_adp_entity_cap_gateway_entity, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(ent_cap_flags_tree,
- hf_adp_entity_cap_avdecc_control, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
+ hf_adp_entity_cap_aem_supported, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(ent_cap_flags_tree,
hf_adp_entity_cap_legacy_avc, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(ent_cap_flags_tree,
hf_adp_entity_cap_assoc_id_support, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(ent_cap_flags_tree,
hf_adp_entity_cap_assoc_id_valid, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ent_cap_flags_tree,
+ hf_adp_entity_cap_vendor_unique, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ent_cap_flags_tree,
+ hf_adp_entity_cap_class_a_supported, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ent_cap_flags_tree,
+ hf_adp_entity_cap_class_b_supported, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ent_cap_flags_tree,
+ hf_adp_entity_cap_as_supported, tvb, ADP_ENTITY_CAP_OFFSET, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(adp_tree, hf_adp_talker_stream_srcs, tvb, ADP_TALKER_STREAM_SRCS_OFFSET, 2, ENC_BIG_ENDIAN);
@@ -4095,21 +4668,21 @@ proto_register_17221(void)
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",
- FT_BOOLEAN, 32, NULL, ADP_AVDECC_IP_BITMASK, NULL, HFILL }
+ { &hf_adp_entity_cap_efu_mode,
+ { "EFU_MODE", "ieee17221.entity_capabilities.efu_mode",
+ FT_BOOLEAN, 32, NULL, ADP_EFU_MODE_BITMASK, NULL, HFILL }
},
- { &hf_adp_entity_cap_zero_conf,
- { "ZERO_CONF", "ieee17221.entity_capabilities.zero_conf",
- FT_BOOLEAN, 32, NULL, ADP_ZERO_CONF_BITMASK, NULL, HFILL }
+ { &hf_adp_entity_cap_address_access_supported,
+ { "ADDRESS_ACCESS", "ieee17221.entity_capabilities.address_access",
+ FT_BOOLEAN, 32, NULL, ADP_ADDRESS_ACCESS_BITMASK, NULL, HFILL }
},
{ &hf_adp_entity_cap_gateway_entity,
{ "GATEWAY_ENTITY", "ieee17221.entity_capabilities.gateway_entity",
FT_BOOLEAN, 32, NULL, ADP_GATEWAY_ENTITY_BITMASK, NULL, HFILL }
},
- { &hf_adp_entity_cap_avdecc_control,
- { "AVDECC_CONTROL", "ieee17221.entity_capabilities.avdecc_control",
- FT_BOOLEAN, 32, NULL, ADP_AVDECC_CONTROL_BITMASK, NULL, HFILL }
+ { &hf_adp_entity_cap_aem_supported,
+ { "AEM", "ieee17221.entity_capabilities.aem_supported",
+ FT_BOOLEAN, 32, NULL, ADP_AEM_SUPPORTED_BITMASK, NULL, HFILL }
},
{ &hf_adp_entity_cap_legacy_avc,
{ "LEGACY_AVC", "ieee17221.entity_capabilities.legacy_avc",
@@ -4123,6 +4696,22 @@ proto_register_17221(void)
{ "ASSOCIATION_ID_VALID", "ieee17221.entity_capabilities.association_id_valid",
FT_BOOLEAN, 32, NULL, ADP_ASSOC_ID_VALID_BITMASK, NULL, HFILL }
},
+ { &hf_adp_entity_cap_vendor_unique,
+ { "VENDOR_UNIQUE", "ieee17221.entity_capabilities.vendor_unique",
+ FT_BOOLEAN, 32, NULL, ADP_VENDOR_UNIQUE_BITMASK, NULL, HFILL }
+ },
+ { &hf_adp_entity_cap_class_a_supported,
+ { "CLASS_A", "ieee17221.entity_capabilities.class_a",
+ FT_BOOLEAN, 32, NULL, ADP_CLASS_A_SUPPORTED_BITMASK, NULL, HFILL }
+ },
+ { &hf_adp_entity_cap_class_b_supported,
+ { "CLASS_B", "ieee17221.entity_capabilities.class_b",
+ FT_BOOLEAN, 32, NULL, ADP_CLASS_B_SUPPORTED_BITMASK, NULL, HFILL }
+ },
+ { &hf_adp_entity_cap_as_supported,
+ { "AS", "ieee17221.entity_capabilities.as",
+ FT_BOOLEAN, 32, NULL, ADP_AS_SUPPORTED_BITMASK, NULL, HFILL }
+ },
/* Entity Capability Flags End */
{ &hf_adp_talker_stream_srcs,
{ "Talker Stream Sources", "ieee17221.talker_stream_sources",
@@ -4471,8 +5060,8 @@ proto_register_17221(void)
{ "Descriptor Type", "ieee17221.descriptor_type",
FT_UINT16, BASE_HEX, VALS(aem_descriptor_type_vals), 0x00, NULL, HFILL }
},
- { &hf_aecp_descriptor_id,
- {"Descriptor ID", "ieee17221.descriptor_id",
+ { &hf_aecp_descriptor_index,
+ {"Descriptor Index", "ieee17221.descriptor_index",
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
},
@@ -4489,7 +5078,7 @@ proto_register_17221(void)
/* READ_DESCRIPTOR */
{ &hf_aecp_configuration,
- { "Configuration", "ieee17221.configuration",
+ { "Configuration", "ieee17221._configuration",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
@@ -4513,7 +5102,7 @@ proto_register_17221(void)
/* SET_CLOCK_SOURCE / GET_CLOCK_SOURCE */
{ &hf_aecp_clock_source_id,
- { "Clock Source ID", "ieee17221.aecp_clock_source_id",
+ { "Clock Source ID", "ieee17221.clock_source_id",
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
},
@@ -4533,8 +5122,12 @@ proto_register_17221(void)
{"Signal Type", "ieee17221.signal_type",
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
},
- { &hf_aecp_signal_id,
- {"Signal ID", "ieee17221.signal_id",
+ { &hf_aecp_signal_index,
+ {"Signal Index", "ieee17221.signal_index",
+ FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_signal_output,
+ {"Signal Output", "ieee17221.signal_output",
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
},
@@ -4583,11 +5176,32 @@ proto_register_17221(void)
/* STOP_STREAMING */
+ { &hf_aecp_as_path_count,
+ {"AS Path Count", "ieee17221.as_path_count",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_map_index,
+ {"Map Index", "ieee17221.map_index",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_number_of_maps,
+ {"Number of Maps", "ieee17221.number_of_maps",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+
/* 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_msrp_failure_code,
+ {"MSRP Failure Code", "ieee17221.msrp_failure_code",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_msrp_failure_bridge_id,
+ {"MSRP Failure Bridge ID", "ieee17221.msrp_failure_bridge_id",
+ FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
{ &hf_aecp_connected_flag,
{"Connected Flag", "ieee17221.flags.connected",
FT_BOOLEAN, 32, NULL, AECP_CONNECTED_FLAG_MASK, NULL, HFILL }
@@ -4624,11 +5238,19 @@ proto_register_17221(void)
/* AUTH_ADD_KEY */
{ &hf_aecp_keychain_id,
{"Keychain ID", "ieee17221.keychain_id",
+ FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_keychain_id_small,
+ {"Keychain ID", "ieee17221.keychain_id_small",
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_type,
+ {"Key Type", "ieee17221.key_type",
+ FT_UINT8, BASE_HEX, VALS(aecp_key_type_type_vals), AECP_KEYTYPE_MASK, NULL, HFILL }
+ },
+ { &hf_aecp_key_signature,
+ {"Key Signature", "ieee17221.key_signature",
+ FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_key_number,
{"Key ID", "ieee17221.key_id",
@@ -4659,10 +5281,6 @@ proto_register_17221(void)
{"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 }
@@ -4692,132 +5310,21 @@ proto_register_17221(void)
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_keychain_list_index,
+ {"Keychain List Index", "ieee17221.keychain_list_index",
+ FT_UINT16, BASE_HEX, 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_keychain_number_of_keys,
+ {"Keychain Number of Keys", "ieee17221.keychain_number_of_keys",
+ FT_UINT16, 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_keychain_number_of_lists,
+ {"Keychain Number of Lists", "ieee17221.keychain_number_of_lists",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
- { &hf_aecp_key_guid,
- {"Key GUID", "ieee17221.key_guid",
+
+ { &hf_aecp_key_eui,
+ {"Key EUI", "ieee17221.key_eui",
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_token_length,
@@ -4840,94 +5347,93 @@ proto_register_17221(void)
/* 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_avb_interface_link_up_valid,
+ {"Link Up Valid", "ieee17221.flags.link_up_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_LINK_UP, NULL, HFILL }
+ },
+ { &hf_aecp_avb_interface_link_down_valid,
+ {"Link Down Valid", "ieee17221.flags.link_up_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_LINK_DOWN, 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_avb_interface_packets_tx_valid,
+ {"Packets TX Valid", "ieee17221.flags.packets_tx_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_PACKETS_TX, NULL, HFILL }
},
- { &hf_aecp_media_unlocked_valid,
+ { &hf_aecp_avb_interface_packets_rx_valid,
+ {"Packets RX Valid", "ieee17221.flags.packets_rx_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_PACKETS_RX, NULL, HFILL }
+ },
+ { &hf_aecp_avb_interface_rx_crc_error_valid,
+ {"RX CRC Error Valid", "ieee17221.flags.rx_crc_error_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_RX_CRC_ERROR, NULL, HFILL }
+ },
+ { &hf_aecp_avb_interface_gptp_gm_changed_valid,
+ {"GPTP GM Changed Valid", "ieee17221.flags.gptp_gm_changed_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_GPTP_GM_CHANGED, NULL, HFILL }
+ },
+
+ { &hf_aecp_clock_domain_unlocked_valid,
+ {"Clock Domain Unlocked Valid", "ieee17221.flags.clock_domain_unlocked_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_CLOCK_DOMAIN_UNLOCKED, NULL, HFILL }
+ },
+ { &hf_aecp_clock_domain_locked_valid,
+ {"Clock_Domain Locked Valid", "ieee17221.flags.clock_domain_locked_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_CLOCK_DOMAIN_LOCKED, NULL, HFILL }
+ },
+
+ { &hf_aecp_stream_input_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,
- {"Media Locked Valid", "ieee17221.flags.valid",
+ { &hf_aecp_stream_input_media_locked_valid,
+ {"Media Locked Valid", "ieee17221.flags.media_locked_valid",
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_MEDIA_LOCKED, NULL, HFILL }
},
- { &hf_aecp_stream_reset_valid,
+ { &hf_aecp_stream_input_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,
+ { &hf_aecp_stream_input_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_stream_input_media_reset_valid,
+ {"Media Reset Valid", "ieee17221.flags.media_reset_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_MEDIA_RESET, 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_stream_input_timestamp_uncertain_valid,
+ {"Timestamp Uncertain Valid", "ieee17221.flags.timestamp_uncertain_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_TIMESTAMP_UNCERTAIN, 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_stream_input_timestamp_valid_valid,
+ {"Timestamp Valid Valid", "ieee17221.flags.timestamp_valid_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_TIMESTAMP_VALID, 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_stream_input_timestamp_not_valid_valid,
+ {"Timestamp Not Valid Valid", "ieee17221.flags.timestamp_not_valid_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_TIMESTAMP_NOT_VALID, 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_stream_input_unsupported_format_valid,
+ {"Unsupported Format Valid", "ieee17221.flags.unsupported_format_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_UNSUPPORTED_FORMAT, 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_stream_input_late_timestamp_valid,
+ {"Late Timestamp Valid", "ieee17221.flags.late_timestamp_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_LATE_TIMESTAMP, 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_stream_input_early_timestamp_valid,
+ {"Early Timestamp Valid", "ieee17221.flags.early_timestamp_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_EARLY_TIMESTAMP, 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_stream_input_packets_tx_valid,
+ {"Stream Packets TX Valid", "ieee17221.flags.stream_packets_tx_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_STREAM_PACKETS_TX, 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_stream_input_packets_rx_valid,
+ {"Stream Packets RX Valid", "ieee17221.flags.stream_packets_rx_valid",
+ FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_STREAM_PACKETS_RX, 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 }
@@ -4961,6 +5467,126 @@ proto_register_17221(void)
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_8, NULL, HFILL }
},
+ { &hf_aecp_avb_interface_link_up,
+ {"Link Up Valid", "ieee17221.flags.link_up",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_avb_interface_link_down,
+ {"Link Down Valid", "ieee17221.flags.link_up",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_avb_interface_packets_tx,
+ {"Packets TX Valid", "ieee17221.flags.packets_tx",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_avb_interface_packets_rx,
+ {"Packets RX Valid", "ieee17221.flags.packets_rx",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_avb_interface_rx_crc_error,
+ {"RX CRC Error Valid", "ieee17221.flags.rx_crc_error",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_avb_interface_gptp_gm_changed,
+ {"GPTP GM Changed Valid", "ieee17221.flags.gptp_gm_changed",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+
+ { &hf_aecp_clock_domain_unlocked,
+ {"Clock Domain Unlocked Valid", "ieee17221.flags.clock_domain_unlocked",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_clock_domain_locked,
+ {"Clock_Domain Locked Valid", "ieee17221.flags.clock_domain_locked",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+
+ { &hf_aecp_stream_input_media_unlocked,
+ {"Media Unlocked Valid", "ieee17221.flags.media_unlocked",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_media_locked,
+ {"Media Locked Valid", "ieee17221.flags.media_locked",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_stream_reset,
+ {"Stream Reset Valid", "ieee17221.flags.stream_reset",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_seq_num_mismatch,
+ {"Seq Num Mismatch Valid", "ieee17221.flags.seq_num_mismatch",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_media_reset,
+ {"Media Reset Valid", "ieee17221.flags.media_reset",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_timestamp_uncertain,
+ {"Timestamp Uncertain Valid", "ieee17221.flags.timestamp_uncertain",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_timestamp_valid,
+ {"Timestamp Valid Valid", "ieee17221.flags.timestamp",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_timestamp_not_valid,
+ {"Timestamp Not Valid Valid", "ieee17221.flags.timestamp_not",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_unsupported_format,
+ {"Unsupported Format Valid", "ieee17221.flags.unsupported_format",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_late_timestamp,
+ {"Late Timestamp Valid", "ieee17221.flags.late_timestamp",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_early_timestamp,
+ {"Early Timestamp Valid", "ieee17221.flags.early_timestamp",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_packets_tx,
+ {"Stream Packets TX Valid", "ieee17221.flags.stream_packets_tx",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_stream_input_packets_rx,
+ {"Stream Packets RX Valid", "ieee17221.flags.stream_packets_rx",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+
+ { &hf_aecp_entity_specific1,
+ {"Entity Specific 1", "ieee17221.flags.entity_specific1",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_entity_specific2,
+ {"Entity Specific 2", "ieee17221.flags.entity_specific2",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_entity_specific3,
+ {"Entity Specific 3", "ieee17221.flags.entity_specific3",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_entity_specific4,
+ {"Entity Specific 4", "ieee17221.flags.entity_specific4",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_entity_specific5,
+ {"Entity Specific 5", "ieee17221.flags.entity_specific5",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_entity_specific6,
+ {"Entity Specific 6", "ieee17221.flags.entity_specific6",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_entity_specific7,
+ {"Entity Specific 7", "ieee17221.flags.entity_specific7",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_entity_specific8,
+ {"Entity Specific 8", "ieee17221.flags.entity_specific8",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+
/* REBOOT */
/* SET_MEDIA_FORMAT / GET_MEDIA_FORMAT */
@@ -4969,6 +5595,15 @@ proto_register_17221(void)
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
},
+ { &hf_aecp_video_format,
+ {"Video Format", "ieee17221.video_format",
+ FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_sampling_rate,
+ {"Sampling Rate", "ieee17221.sampling_rate",
+ FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+
/* REGISTER_STATE_NOTIFICATION */
{ &hf_aecp_address_type,
{"Address Type", "ieee17221.address_type",
@@ -5053,7 +5688,7 @@ proto_register_17221(void)
/* ENTITY */
/* hf_aecp_descriptor_type */
- /* hf_aecp_descriptor_id */
+ /* hf_aecp_descriptor_index */
{ &hf_aem_entity_guid,
{"Entity GUID", "ieee17221.entity_guid",
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
@@ -5117,11 +5752,11 @@ proto_register_17221(void)
/* CONFIGURATION */
{ &hf_aem_configuration_name,
- {"Configuration Name", "ieee17221.configuration_name",
+ {"Object Name", "ieee17221.configuration_name",
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_configuration_name_string,
- {"Configuration Name String", "ieee17221.configuration_name_string",
+ {"Localized Description", "ieee17221.configuration_name_string",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_descriptor_counts_count,
@@ -5190,6 +5825,30 @@ proto_register_17221(void)
{"Clock Source ID", "ieee17221.clock_source_id",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
+ { &hf_aem_clock_domain_id,
+ {"Clock Domain ID", "ieee17221.clock_domain_id",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_clock_sources_offset,
+ {"Clock Sources Offset", "ieee17221.clock_sources_offset",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_clock_source_index,
+ {"Clock Source Index", "ieee17221.clock_source_index",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_clock_sources_count,
+ {"Clock Sources Count", "ieee17221.clock_sources_count",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_clock_sources,
+ {"Clock Sources", "ieee17221.clock_sources",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_clock_sources_array,
+ {"Clock Sources Array", "ieee17221.clock_sources_array",
+ FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
{ &hf_aem_number_of_controls,
{"Number Of Controls", "ieee17221.number_of_controls",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
@@ -5198,6 +5857,14 @@ proto_register_17221(void)
{"Base Control", "ieee17221.base_control",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
+ { &hf_aem_number_control_blocks,
+ {"Number Of Control Blocks", "ieee17221.number_of_control_blocks",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_base_control_block,
+ {"Base Control Block", "ieee17221.base_control_block",
+ 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 }
@@ -5216,7 +5883,7 @@ proto_register_17221(void)
},
{ &hf_aem_base_signal_selector,
{"Base Signal Selector", "ieee17221.base_signal_selector",
- FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_number_mixers,
{"Number of Mixers", "ieee17221.num_mixers",
@@ -5224,7 +5891,7 @@ proto_register_17221(void)
},
{ &hf_aem_base_mixer,
{"Base Mixer", "ieee17221.base_mixer",
- FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_number_matrices,
{"Number of Matrices", "ieee17221.num_matrices",
@@ -5232,7 +5899,47 @@ proto_register_17221(void)
},
{ &hf_aem_base_matrix,
{"Base Matrix", "ieee17221.base_matrix",
- FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_number_splitters,
+ {"Number of Splitters", "ieee17221.num_splitters",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_base_splitter,
+ {"Base Splitter", "ieee17221.base_splitter",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_number_combiners,
+ {"Number of Combiners", "ieee17221.num_combiners",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_base_combiner,
+ {"Base Combiner", "ieee17221.base_combiner",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_number_demultiplexers,
+ {"Number of Demultiplexers", "ieee17221.num_demultiplexer",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_base_demultiplexer,
+ {"Base Demultiplexer", "ieee17221.base_demultiplexer",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_number_multiplexers,
+ {"Number of Multiplexers", "ieee17221.num_multiplexers",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_base_multiplexer,
+ {"Base Multiplexer", "ieee17221.base_multiplexer",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_number_transcoders,
+ {"Number of Transcoders", "ieee17221.num_transcoders",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_base_transcoder,
+ {"Base Transcoder", "ieee17221.base_transcoder",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
/* sample rate is 3 bit pull field multiplier and 29 bit base freq in Hz */
{ &hf_aem_sample_rates_offset,
@@ -5264,11 +5971,11 @@ proto_register_17221(void)
/* STREAM_INPUT */
/* STREAM_OUTPUT */
{ &hf_aem_stream_name,
- {"Stream Name", "ieee17221.stream_name",
+ {"Object Name", "ieee17221.stream_name",
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_stream_name_string,
- {"Stream Name String", "ieee17221.stream_name_string",
+ {"Localized Description", "ieee17221.stream_name_string",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_stream_flags,
@@ -5335,7 +6042,10 @@ proto_register_17221(void)
{"AVB Interface ID", "ieee17221.avb_interface_id",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
-
+ { &hf_aem_buffer_length,
+ {"Buffer Length", "ieee17221.buffer_length",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
/* array head. uses ett_aem_stream_formats */
{ &hf_aem_stream_formats,
@@ -5346,11 +6056,11 @@ proto_register_17221(void)
/* EXTERNAL_JACK_INPUT */
/* EXTERNAL_JACK_OUTPUT*/
{ &hf_aem_jack_name,
- {"Jack Name", "ieee17221.jack_name",
+ {"Object Name", "ieee17221.jack_name",
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_jack_name_string,
- {"Jack Name String", "ieee17221.jack_name_string",
+ {"Localized Description", "ieee17221.jack_name_string",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_interface_name,
@@ -5401,7 +6111,7 @@ proto_register_17221(void)
},
{ &hf_aem_base_audio_map,
{"Base Audio Map", "ieee17221.base_audio_map",
- FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_number_audio_maps,
{"Number of Audio Maps", "ieee17221.num_audio_maps",
@@ -5409,7 +6119,7 @@ proto_register_17221(void)
},
/* VIDEO_PORT_INPUT */
/* VIDEO_PORT_OUTPUT */
- { & hf_aem_stream_id,
+ { &hf_aem_stream_id,
{"Stream Descriptor ID", "ieee17221.stream_descriptor_id",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
@@ -5457,15 +6167,54 @@ proto_register_17221(void)
{"MSRP VLAN ID", "ieee17221.msrp_vlan_id",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
-
+ { &hf_aem_avb_interface_flags,
+ {"Interface Flags", "ieee17221.interface_flags",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_avb_clock_identity,
+ {"Clock Identity", "ieee17221.clock_identity",
+ FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_avb_priority1,
+ {"Priority1", "ieee17221.priority1",
+ FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_avb_clock_class,
+ {"Clock Class", "ieee17221.clock_class",
+ FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_avb_offset_scaled_log_variance,
+ {"Scaled Log Variance", "ieee17221.offset_scaled_log_varianc",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_avb_clock_accuracy,
+ {"Clock Accuracy", "ieee17221.clock_accuracy",
+ FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_avb_priority2,
+ {"Priority2", "ieee17221.priority2",
+ FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_avb_domain_number,
+ {"Domain Number", "ieee17221.domain_number",
+ FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_avb_log_sync_interval,
+ {"Log sync Interval", "ieee17221.log_sync_interval",
+ FT_INT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_avb_propagation_delay,
+ {"Propagation Delay", "ieee17221.propagation_delay",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
/* CLOCK_SOURCE */
{ &hf_aem_clock_source_name,
- {"Clock Source Name", "ieee17221.clock_source_name",
+ {"Object 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",
+ {"Localized Description", "ieee17221.clock_source_name_string",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_clock_source_flags,
@@ -5505,8 +6254,12 @@ proto_register_17221(void)
{"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",
+ { &hf_aem_mapping_cluster_offset,
+ {"Mapping Cluster Offset", "ieee17221.mapping_cluster_offset",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_mapping_cluster_channel,
+ {"Mapping Cluster Channel", "ieee17221.mapping_cluster_channel",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
/* AUDIO_CLUSTER */
@@ -5598,12 +6351,20 @@ proto_register_17221(void)
{"Block Latency", "ieee17221.block_latency",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
+ { &hf_aem_reset_time,
+ {"Reset Time", "ieee17221.reset_time",
+ 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",
+ { &hf_aem_signal_index,
+ {"Signal Index", "ieee17221.signal_index",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aem_signal_output,
+ {"Signal Output", "ieee17221.signal_output",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
@@ -5852,7 +6613,7 @@ proto_register_17221(void)
},
/* BEGIN STREAM FORMAT (SF) FIELDS */
{ &hf_aem_stream_format,
- {"Stream Format", "ieee17221.aem_stream_format",
+ {"Stream Format", "ieee17221.stream_format",
FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_sf_version,
@@ -5954,6 +6715,7 @@ proto_register_17221(void)
&ett_aem_descriptor,
&ett_aem_sample_rates,
&ett_aem_stream_flags,
+ &ett_aem_clock_sources,
&ett_aem_stream_formats,
&ett_aem_jack_flags,
&ett_aem_port_flags,