aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ieee17221.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2013-05-30 05:24:37 +0000
committerAnders Broman <anders.broman@ericsson.com>2013-05-30 05:24:37 +0000
commitaf28c2b9eb252d15e8129e7d139a6d63f56b5669 (patch)
treeaef22124d5d31862c4200ee47d37d104f680054a /epan/dissectors/packet-ieee17221.c
parent50bb0650ca6dcdf375dd9817ea99d4f18a8eac3e (diff)
From Chris Pane:
Updates to IEEE 1722.1 dissector for Draft 23R2. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8732 svn path=/trunk/; revision=49628
Diffstat (limited to 'epan/dissectors/packet-ieee17221.c')
-rw-r--r--epan/dissectors/packet-ieee17221.c1694
1 files changed, 957 insertions, 737 deletions
diff --git a/epan/dissectors/packet-ieee17221.c b/epan/dissectors/packet-ieee17221.c
index 13e21a55c4..c9eab6430b 100644
--- a/epan/dissectors/packet-ieee17221.c
+++ b/epan/dissectors/packet-ieee17221.c
@@ -81,8 +81,8 @@
#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_VENDOR_UNIQUE_BITMASK 0x80
+#define ADP_CLASS_A_SUPPORTED_BITMASK 0x100
#define ADP_CLASS_B_SUPPORTED_BITMASK 0x200
#define ADP_AS_SUPPORTED_BITMASK 0x400
@@ -160,7 +160,7 @@
#define ACMP_CONNECTION_COUNT_OFFSET 46
#define ACMP_SEQUENCE_ID_OFFSET 48
#define ACMP_FLAGS_OFFSET 50
-#define ACMP_DEFAULT_FORMAT_OFFSET 52
+#define ACMP_VLAN_ID_OFFSET 52
/* Bit Field Masks */
@@ -200,8 +200,6 @@
#define ACMP_STATUS_NOT_CONNECTED 10
#define ACMP_STATUS_NO_SUCH_CONNECTION 11
#define ACMP_STATUS_COULD_NOT_SEND_MESSAGE 12
-#define ACMP_STATUS_LISTENER_DEFAULT_FORMAT_INVALID 13
-#define ACMP_STATUS_TALKER_DEFAULT_FORMAT_INVALID 14
#define ACMP_STATUS_DEFAULT_SET_DIFFERENT 15
#define ACMP_STATUS_NOT_SUPPORTED 31
@@ -223,8 +221,11 @@
#define AECP_OFFSET_STATUS_CODE 2
-/* AECP Command Specific Offsets */
-/* IEEE 1722.1 draft D21 section 7.4.1 - 7.4.71 */
+/* AECP Address Access Command Specific Offsets */
+#define AECP_AA_OFFSET_COUNT 22
+#define AECP_AA_OFFSET_TLVS_START 24
+
+/* AECP AEM Command Specific Offsets */
/* Note that these values include the 12 byte common header */
/* ACQUIRE_ENTITY */
@@ -343,6 +344,8 @@
#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_AS_DOMAIN_NUMBER 40
+#define AECP_OFFSET_AVB_INFO_FLAGS 41
#define AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS_COUNT 42
#define AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS 44
@@ -460,6 +463,18 @@
#define AECP_OFFSET_STREAM_ENCRYPTION_DESCRIPTOR_INDEX 26
#define AECP_OFFSET_STREAM_ENCRYPTION_KEY_EUI 28
+/* Set/Get Stream Backup */
+#define AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_TYPE 24
+#define AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_INDEX 26
+#define AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_0 28
+#define AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_0 36
+#define AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_1 40
+#define AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_1 48
+#define AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_2 52
+#define AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_2 60
+#define AECP_OFFSET_STREAM_BACKEDUP_TALKER_ENTITY_ID 64
+#define AECP_OFFSET_STREAM_BACKEDUP_TALKER_UNIQUE_ID 72
+
/* aecp_message_type */
/* 1722.1 draft 2011-11-14 table 9.1 */
#define AECP_AEM_COMMAND_MESSAGE 0
@@ -570,6 +585,8 @@
#define AECP_COMMAND_DISABLE_TRANSPORT_SECURITY 0x0044
#define AECP_COMMAND_ENABLE_STREAM_ENCRYPTION 0x0045
#define AECP_COMMAND_DISABLE_STREAM_ENCRYPTION 0x0046
+#define AECP_COMMAND_SET_STREAM_BACKUP 0x0049
+#define AECP_COMMAND_GET_STREAM_BACKUP 0x004a
/* 0x002e - 0x7ffe RESERVED for future use */
#define AECP_COMMAND_EXPANSION 0x7fff /* reserved */
@@ -954,7 +971,7 @@
#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_BACKEDUP_TALKER_UNIQUE_ID 124
#define STREAM_OFFSET_AVB_INTERFACE_ID 126
#define STREAM_OFFSET_BUFFER_LENGTH 128
@@ -1274,7 +1291,6 @@
#define AECP_CD_LENGTH_MASK 0x07ff
#define AECP_COMMAND_TYPE_MASK 0x7fff
#define AECP_CONNECTED_FLAG_MASK 0x08000000
-#define AECP_DEFAULT_FORMAT_VALID_FLAG_MASK 0x80000000
#define AECP_DEST_MAC_VALID_FLAG_MASK 0x40000000
#define AECP_KEYCHAIN_ID_MASK 0xe0
#define AECP_KEYTYPE_MASK 0x1c
@@ -1294,6 +1310,10 @@
#define AECP_STREAM_ID_VALID_FLAG_MASK 0x10000000
#define AECP_UNLOCK_FLAG_MASK 0x00000001
#define AECP_U_FLAG_MASK 0x80
+#define AECP_MSRP_MAPPINGS_COUNT_MASK 0x00
+#define AECP_AS_CAPABLE_FLAG_MASK 0x01
+#define AECP_GPTP_ENABLED_FLAG_MASK 0x02
+#define AECP_SRP_ENABLED_FLAG_MASK 0x04
/* key permission flag masks */
#define AECP_PRIVATE_KEY_READ_FLAG_MASK 0x80000000
@@ -1777,6 +1797,8 @@ static const value_string aecp_command_type_vals[] = {
{AECP_COMMAND_DISABLE_TRANSPORT_SECURITY , "DISABLE_TRANSPORT_SECURITY"},
{AECP_COMMAND_ENABLE_STREAM_ENCRYPTION , "ENABLE_STREAM_ENCRYPTION"},
{AECP_COMMAND_DISABLE_STREAM_ENCRYPTION , "DISABLE_STREAM_ENCRYPTION"},
+ {AECP_COMMAND_SET_STREAM_BACKUP , "SET_STREAM_BACKUP"},
+ {AECP_COMMAND_GET_STREAM_BACKUP , "GET_STREAM_BACKUP"},
{0 , NULL}
};
@@ -1820,8 +1842,6 @@ static const value_string acmp_status_field_vals[] = {
{ACMP_STATUS_NOT_CONNECTED, "NOT_CONNECTED"},
{ACMP_STATUS_NO_SUCH_CONNECTION, "NO_SUCH_CONNECTION"},
{ACMP_STATUS_COULD_NOT_SEND_MESSAGE, "COULD_NOT_SEND_MESSAGE"},
- {ACMP_STATUS_LISTENER_DEFAULT_FORMAT_INVALID, "LISTENER_DEFAULT_FORMAT_INVALID"},
- {ACMP_STATUS_TALKER_DEFAULT_FORMAT_INVALID, "TALKER_DEFAULT_FORMAT_INVALID"},
{ACMP_STATUS_DEFAULT_SET_DIFFERENT, "DEFAULT_SET_DIFFERENT"},
{ACMP_STATUS_NOT_SUPPORTED, "NOT_SUPPORTED"},
{0, NULL }
@@ -1926,9 +1946,18 @@ static int hf_adp_chan_format_24ch = -1;
/* ***************************************************************** */
/* AVDECC Enumeration and Control Protocol Data Unit (AECPDU) */
/* ***************************************************************** */
+
+static int hf_aecp_aa_count = -1;
+static int hf_aecp_aa_tlv_mode = -1;
+static int hf_aecp_aa_tlv_length = -1;
+static int hf_aecp_aa_tlv_address = -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_as_path_sequences = -1;
+static int ett_aecp_get_as_path_sequences = -1;
+static int hf_aecp_get_as_info_clock_id = -1;
static int hf_aecp_auth_token = -1;
static int hf_aecp_avb_interface_gptp_gm_changed_valid = -1;
static int hf_aecp_avb_interface_gptp_gm_changed = -1;
@@ -1950,6 +1979,7 @@ 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_configuration_index = -1;
static int hf_aecp_connected_flag = -1;
/* static int hf_aecp_continued_flag = -1; */
/* static int hf_aecp_control_admin_flag = -1; */
@@ -2072,6 +2102,27 @@ static int hf_aecp_unlock_flag = -1;
/* static int hf_aecp_values_count = -1; */
static int hf_aecp_video_format = -1;
static int hf_aecp_status_code = -1;
+static int hf_aecp_backup_talker_entity_id_0 = -1;
+static int hf_aecp_backup_talker_entity_id_1 = -1;
+static int hf_aecp_backup_talker_entity_id_2 = -1;
+static int hf_aecp_backup_talker_unique_id_0 = -1;
+static int hf_aecp_backup_talker_unique_id_1 = -1;
+static int hf_aecp_backup_talker_unique_id_2 = -1;
+static int hf_aecp_backedup_talker_entity_id = -1;
+static int hf_aecp_backedup_talker_unique_id = -1;
+static int hf_aecp_avb_info_ptp_grandmaster_id = -1;
+static int hf_aecp_avb_info_propegation_delay = -1;
+static int hf_aecp_avb_info_gptp_domain_number = -1;
+static int hf_aecp_avb_info_flags = -1;
+static int hf_aecp_as_capable_flag = -1;
+static int hf_aecp_gptp_enabled_flag = -1;
+static int hf_aecp_srp_enabled_flag = -1;
+static int hf_aecp_avb_info_msrp_mappings_count = -1;
+static int hf_aecp_avb_info_msrp_mappings = -1;
+static int hf_aecp_avb_info_msrp_mapping_traffic_class = -1;
+static int hf_aecp_avb_info_msrp_mapping_priority = -1;
+
+static int hf_aecp_get_avb_info_msrp_vlan_id = -1;
/* ***************************************************************** */
/* AVDECC Entity Model (AEM) */
@@ -2154,15 +2205,13 @@ static int hf_aem_control_domain = -1;
static int hf_aem_control_latency = -1;
/* static int hf_aem_control_location_id = -1; */
/* static int hf_aem_control_location_type = -1; */
-static int hf_aem_control_name = -1;
-static int hf_aem_control_name_string = -1;
static int hf_aem_control_type = -1;
static int hf_aem_control_value_type = -1;
static int hf_aem_count = -1;
/* static int hf_aem_cs_eui64 = -1; */
static int hf_aem_ctrl_double = -1;
static int hf_aem_ctrl_float = -1;
-static int hf_aem_ctrl_int16 = -1;
+static int hf_aem_ctrl_int16 = -1;
static int hf_aem_ctrl_int32 = -1;
static int hf_aem_ctrl_int64 = -1;
static int hf_aem_ctrl_int8 = -1;
@@ -2230,11 +2279,6 @@ static int hf_aem_memory_object_type = -1;
/* static int hf_aem_mf_width = -1; */
/* static int hf_aem_mfd_type = -1; */
static int hf_aem_model_name_string = -1;
-/* static int hf_aem_msrp_mapping_priority = -1; */
-/* static int hf_aem_msrp_mapping_traffic_class = -1; */
-/* static int hf_aem_msrp_mappings = -1; */
-/* static int hf_aem_msrp_mappings_count = -1; */
-/* static int hf_aem_msrp_mappings_offset = -1; */
static int hf_aem_avb_interface_flags = -1;
static int hf_aem_avb_clock_identity = -1;
static int hf_aem_avb_priority1 = -1;
@@ -2245,7 +2289,6 @@ 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;
/* static int hf_aem_number_destinations = -1; */
@@ -2267,7 +2310,7 @@ static int hf_aem_number_of_strings = -1;
static int hf_aem_number_of_values = -1;
static int hf_aem_number_signal_selectors = -1;
static int hf_aem_object_name = -1;
-static int hf_aem_object_name_string = -1;
+static int hf_aem_localized_description = -1;
/* static int hf_aem_oui24 = -1; */
static int hf_aem_path_latency = -1;
static int hf_aem_port_flags = -1;
@@ -2278,6 +2321,7 @@ 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_sf_subtype = -1;
static int hf_aem_signal_index = -1;
static int hf_aem_signal_output = -1;
static int hf_aem_signal_type = -1;
@@ -2298,8 +2342,6 @@ static int hf_aem_string_ref = -1;
static int hf_aem_target_descriptor_id = -1;
static int hf_aem_target_descriptor_type = -1;
static int hf_aem_unit = -1;
-static int hf_aem_unit_name = -1;
-static int hf_aem_unit_name_string = -1;
static int hf_aem_unknown_descriptor = -1;
/* static int hf_aem_value_offset = -1; */
static int hf_aem_values_offset = -1;
@@ -2324,7 +2366,7 @@ static int hf_acmp_stream_dest_mac = -1;
static int hf_acmp_connection_count = -1;
static int hf_acmp_sequence_id = -1;
static int hf_acmp_flags = -1;
-static int hf_acmp_default_format = -1;
+static int hf_acmp_vlan_id = -1;
/* ACMP Flags */
static int hf_acmp_flags_class_b = -1;
@@ -2353,7 +2395,7 @@ 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;
-static int ett_aem_msrp_mappings = -1;
+static int ett_aecp_get_avb_info_msrp_mappings = -1;
static int ett_aem_clock_source_flags = -1;
static int ett_aem_mappings = -1;
static int ett_aem_ctrl_vals = -1;
@@ -2473,7 +2515,10 @@ dissect_17221_stream_format(tvbuff_t *tvb, proto_tree *tree)
if (version == 0) { /* stream format version 0 */
- subtype = tvb_get_guint8(tvb, 0) & AEM_MASK_SF_SUBTYPE;
+ subtype = tvb_get_guint8(tvb, AEM_OFFSET_SF_SUBTYPE) & AEM_MASK_SF_SUBTYPE;
+
+ proto_tree_add_item(stream_tree, hf_aem_sf_subtype, tvb,
+ AEM_OFFSET_SF_SUBTYPE, 1, ENC_BIG_ENDIAN);
switch(subtype) {
case IEC_61883_IIDC_SUBTYPE:
@@ -2933,9 +2978,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
}
break;
case AEM_DESCRIPTOR_AUDIO_UNIT:
- proto_tree_add_item(aem_tree, hf_aem_unit_name, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
AUDIO_UNIT_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_unit_name_string, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
AUDIO_UNIT_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
/* D20 clock domain */
@@ -3052,9 +3097,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
break;
case AEM_DESCRIPTOR_VIDEO_UNIT:
case AEM_DESCRIPTOR_SENSOR_UNIT:
- proto_tree_add_item(aem_tree, hf_aem_unit_name, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
VIDEO_UNIT_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_unit_name_string, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
VIDEO_UNIT_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
/* D20 clock domain */
@@ -3174,7 +3219,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
proto_tree_add_item(aem_tree, hf_aem_backedup_talker_guid, tvb,
STREAM_OFFSET_BACKEDUP_TALKER_GUID, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_backedup_talker_unique, tvb,
- STREAM_OFFSET_BACKEDUP_TALKER_UNIQUE, 2, ENC_BIG_ENDIAN);
+ STREAM_OFFSET_BACKEDUP_TALKER_UNIQUE_ID, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_avb_interface_id, tvb,
STREAM_OFFSET_AVB_INTERFACE_ID, 2, ENC_BIG_ENDIAN);
@@ -3368,6 +3413,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
AUDIO_MAP_OFFSET_MAPPINGS_OFFSET, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_number_of_mappings, tvb,
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);
@@ -3417,9 +3463,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
break;
case AEM_DESCRIPTOR_CONTROL:
- proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
CONTROL_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
CONTROL_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
@@ -3455,9 +3501,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
break;
case AEM_DESCRIPTOR_SIGNAL_SELECTOR:
- proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
SIGNAL_SELECTOR_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
SIGNAL_SELECTOR_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
@@ -3474,9 +3520,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
AEM_OFFSET_CONTROL_LOCATION_ID_SIGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
AEM_OFFSET_CONTROL_DOMAIN_SIGS, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
AEM_OFFSET_CONTROL_NAME_SIGS, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
AEM_OFFSET_CONTROL_NAME_STRING_SIGS, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_sources_offset, tvb,
AEM_OFFSET_SOURCES_OFFSET_SIGS, 2, ENC_BIG_ENDIAN);
@@ -3514,9 +3560,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
*/
break;
case AEM_DESCRIPTOR_MIXER:
- proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
MIXER_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
MIXER_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
@@ -3536,9 +3582,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
AEM_OFFSET_CONTROL_VALUE_TYPE_MXR, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
AEM_OFFSET_CONTROL_DOMAIN_MXR, 2 ,ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
AEM_OFFSET_CONTROL_NAME_MXR, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
AEM_OFFSET_CONTROL_NAME_STRING_MXR, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_sources_offset, tvb,
AEM_OFFSET_SOURCES_OFFSET_MXR, 2, ENC_BIG_ENDIAN);
@@ -3578,9 +3624,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
#endif
break;
case AEM_DESCRIPTOR_MATRIX:
- proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
MATRIX_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
MATRIX_OFFSET_LOCALIZED_DESCRIPTION, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_block_latency, tvb,
@@ -3601,9 +3647,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
AEM_OFFSET_CONTROL_VALUE_TYPE_MTRX, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_control_domain, tvb,
AEM_OFFSET_CONTROL_DOMAIN_MTRX, 2 ,ENC_BIG_ENDIAN);
- proto_tree_add_item(aem_tree, hf_aem_control_name, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
AEM_OFFSET_CONTROL_NAME_MTRX, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
AEM_OFFSET_CONTROL_NAME_STRING_MTRX, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(aem_tree, hf_aem_width, tvb,
AEM_OFFSET_WIDTH_MTRX, 2, ENC_BIG_ENDIAN);
@@ -3681,7 +3727,7 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
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,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, tvb,
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);
@@ -3689,9 +3735,9 @@ dissect_17221_aem(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
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,
+ proto_tree_add_item(aem_tree, hf_aem_object_name, tvb,
CLOCK_DOMAIN_OFFSET_OBJECT_NAME, 64, ENC_ASCII|ENC_NA);
- proto_tree_add_item(aem_tree, hf_aem_control_name_string, tvb,
+ proto_tree_add_item(aem_tree, hf_aem_localized_description, 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);
@@ -3732,654 +3778,737 @@ dissect_17221_aecp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aecp_tree)
guint16 mess_status;
guint16 mess_type;
guint16 mr_counter;
- /*proto_item *mr_subtree;*/
- /*proto_item *mr_item;*/
- /*int i;*/
+ guint32 mr_offset;
+ proto_item *mr_subtree;
+ proto_item *mr_item;
+ int i;
/* next tvb for use in subdissection */
tvbuff_t *next_tvb;
proto_tree *flags_tree;
proto_item *flags_ti;
- /* AEM Common Format Fields */
+ /* AECP Common Format Fields */
proto_tree_add_item(aecp_tree, hf_aecp_message_type, tvb,
AECP_OFFSET_VERSION, 1, ENC_BIG_ENDIAN);
-
proto_tree_add_item(aecp_tree, hf_aecp_status_code, tvb,
AECP_OFFSET_STATUS_CODE, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_cd_length, tvb,
AECP_OFFSET_CD_LENGTH, 2, ENC_BIG_ENDIAN);
-
proto_tree_add_item(aecp_tree, hf_aecp_target_guid, tvb,
AECP_OFFSET_TARGET_GUID, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_controller_guid, tvb,
AECP_OFFSET_CONTROLLER_GUID, 8, ENC_BIG_ENDIAN);
proto_tree_add_item(aecp_tree, hf_aecp_sequence_id, tvb,
AECP_OFFSET_SEQUENCE_ID, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_u_flag, tvb,
- AECP_OFFSET_U_FLAG, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_command_type, tvb,
- AECP_OFFSET_COMMAND_TYPE, 2, ENC_BIG_ENDIAN);
-
- /* get the command type for detailed dissection */
- 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 */
- /*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 */
- mess_status = tvb_get_ntohs(tvb, 2) & 0xF800;
-
- /* 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_OFFSET_LOCK_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_locked_guid, tvb,
- 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_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX, 2, ENC_BIG_ENDIAN);
+ mess_type = tvb_get_ntohs(tvb, 0) & AECP_MSG_TYPE_MASK;
- if ((mess_type == AECP_AEM_COMMAND_MESSAGE)||(mess_status != 0))
- {
+ if ((mess_type == AECP_AEM_COMMAND_MESSAGE) || (mess_type == AECP_AEM_RESPONSE_MESSAGE))
+ {
+ proto_tree_add_item(aecp_tree, hf_aecp_u_flag, tvb,
+ AECP_OFFSET_U_FLAG, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_command_type, tvb,
+ AECP_OFFSET_COMMAND_TYPE, 2, ENC_BIG_ENDIAN);
+
+ /* get the command type for detailed dissection */
+ 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 */
+ /*ctrl_data_len = tvb_get_ntohs(tvb, AECP_OFFSET_CD_LENGTH) & AECP_CD_LENGTH_MASK;*/
+
+
+ /* get the status */
+ mess_status = tvb_get_ntohs(tvb, 2) & 0xF800;
+
+ /* 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_OFFSET_LOCK_ENTITY_FLAGS, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_locked_guid, tvb,
+ 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_OFFSET_DESCRIPTOR_CONFIGURATION_INDEX, 2, ENC_BIG_ENDIAN);
+
+ if ((mess_type == AECP_AEM_COMMAND_MESSAGE)||(mess_status != 0))
+ {
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ 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, 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_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, AECP_OFFSET_DESCRIPTOR_DESCRIPTOR);
+ dissect_17221_aem(next_tvb, pinfo, aecp_tree);
+ break;
+ case AECP_COMMAND_SET_CONFIGURATION:
+ case AECP_COMMAND_GET_CONFIGURATION:
+ proto_tree_add_item(aecp_tree, hf_aecp_configuration,
+ tvb, AECP_OFFSET_CONFIGURATION_CONFIGURATION_INDEX, 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_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_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_SET_VIDEO_FORMAT:
+ case AECP_COMMAND_GET_VIDEO_FORMAT:
proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- 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, 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_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, AECP_OFFSET_DESCRIPTOR_DESCRIPTOR);
- dissect_17221_aem(next_tvb, pinfo, aecp_tree);
- break;
- case AECP_COMMAND_SET_CONFIGURATION:
- case AECP_COMMAND_GET_CONFIGURATION:
- proto_tree_add_item(aecp_tree, hf_aecp_configuration,
- tvb, AECP_OFFSET_CONFIGURATION_CONFIGURATION_INDEX, 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_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_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_SET_VIDEO_FORMAT:
- case AECP_COMMAND_GET_VIDEO_FORMAT:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
AECP_OFFSET_VIDEO_FORMAT_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ 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);
+ 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);
+ 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);
+ 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_SENSOR_FORMAT:
- case AECP_COMMAND_GET_SENSOR_FORMAT:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- 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);
-
- 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_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)) {
- /* FLAGS */
- proto_tree_add_item(aecp_tree, hf_acmp_flags_class_b, tvb,
- AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_acmp_flags_fast_connect, tvb,
- AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_acmp_flags_saved_state, tvb,
- AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_acmp_flags_streaming_wait, tvb,
- AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_connected_flag, tvb,
- AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_stream_id_valid_flag, tvb,
- AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_msrp_acc_lat_valid_flag, tvb,
- AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_dest_mac_valid_flag, tvb,
- AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(aecp_tree, hf_aecp_stream_format, tvb,
- AECP_OFFSET_STREAM_INFO_STREAM_FORMAT, 8, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_acmp_stream_id, tvb,
- AECP_OFFSET_STREAM_INFO_STREAM_ID, 8, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(aecp_tree, hf_aecp_msrp_accumulated_latency, tvb,
- AECP_OFFSET_STREAM_INFO_MSRP_ACCUMULATED_LATENCY, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_acmp_stream_dest_mac, tvb,
- 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);
-
- proto_tree_add_item(aecp_tree, hf_aecp_stream_vlan_id, tvb,
- AECP_OFFSET_STREAM_INFO_STREAM_VLAN_ID, 2, ENC_BIG_ENDIAN);
- }
- break;
- case AECP_COMMAND_SET_NAME:
- case AECP_COMMAND_GET_NAME:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- 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_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_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_OFFSET_ASSOCIATION_ID_ASSOCIATION_ID, 8, ENC_BIG_ENDIAN);
- break;
- 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_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_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_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_INCREMENT_CONTROL:
- case AECP_COMMAND_DECREMENT_CONTROL:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- 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_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_GET_MATRIX:
- case AECP_COMMAND_SET_MATRIX:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- 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_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_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_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) {
-
- 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,
+ 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_SENSOR_FORMAT:
+ case AECP_COMMAND_GET_SENSOR_FORMAT:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ 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);
+
+ 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_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_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_acmp_flags_fast_connect, tvb,
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_acmp_flags_saved_state, tvb,
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_acmp_flags_streaming_wait, tvb,
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_connected_flag, tvb,
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_id_valid_flag, tvb,
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_msrp_acc_lat_valid_flag, tvb,
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_dest_mac_valid_flag, tvb,
+ AECP_OFFSET_STREAM_INFO_FLAGS, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_format, tvb,
+ AECP_OFFSET_STREAM_INFO_STREAM_FORMAT, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_acmp_stream_id, tvb,
+ AECP_OFFSET_STREAM_INFO_STREAM_ID, 8, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(aecp_tree, hf_aecp_msrp_accumulated_latency, tvb,
+ AECP_OFFSET_STREAM_INFO_MSRP_ACCUMULATED_LATENCY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_acmp_stream_dest_mac, tvb,
+ 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);
+ }
+ case AECP_COMMAND_SET_NAME:
+ case AECP_COMMAND_GET_NAME:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ 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_OFFSET_NAME_NAME_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_configuration_index, tvb,
+ AECP_OFFSET_NAME_CONFIGURATION_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_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_OFFSET_ASSOCIATION_ID_ASSOCIATION_ID, 8, ENC_BIG_ENDIAN);
+ break;
+ 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_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_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_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_INCREMENT_CONTROL:
+ case AECP_COMMAND_DECREMENT_CONTROL:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ 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_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_GET_MATRIX:
+ case AECP_COMMAND_SET_MATRIX:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ 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_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_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_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) {
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_info_ptp_grandmaster_id, tvb,
+ AECP_OFFSET_AVB_INFO_AS_GRANDMASTER_ID, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_info_propegation_delay, tvb,
+ AECP_OFFSET_AVB_INFO_PROPAGATION_DELAY, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_info_gptp_domain_number, tvb,
+ AECP_OFFSET_AVB_INFO_AS_DOMAIN_NUMBER, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_as_capable_flag, tvb,
+ AECP_OFFSET_AVB_INFO_FLAGS, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_gptp_enabled_flag, tvb,
+ AECP_OFFSET_AVB_INFO_FLAGS, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_srp_enabled_flag, tvb,
+ AECP_OFFSET_AVB_INFO_FLAGS, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_info_msrp_mappings_count, tvb,
+ AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS_COUNT, 2, ENC_BIG_ENDIAN);
+
+ /* prepare msrp mappings subtree */
+ mr_item = proto_tree_add_item(aecp_tree, hf_aecp_avb_info_msrp_mappings, tvb,
+ 0, 0, ENC_NA);
+ mr_subtree = proto_item_add_subtree(mr_item, ett_aecp_get_avb_info_msrp_mappings);
+ mr_counter = tvb_get_ntohs(tvb, AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS_COUNT);
+
+ mr_offset = AECP_OFFSET_AVB_INFO_MSRP_MAPPINGS;
+ for (i = 0; i < mr_counter; i++) {
+ proto_tree_add_item(mr_subtree, hf_aecp_avb_info_msrp_mapping_traffic_class, tvb,
+ mr_offset, 1, ENC_BIG_ENDIAN);
+ mr_offset += 1;
+ proto_tree_add_item(mr_subtree, hf_aecp_avb_info_msrp_mapping_priority, tvb,
+ mr_offset, 1, ENC_BIG_ENDIAN);
+ mr_offset += 1;
+ proto_tree_add_item(mr_subtree, hf_aecp_get_avb_info_msrp_vlan_id, tvb,
+ mr_offset, 2, ENC_BIG_ENDIAN);
+ mr_offset += 2;
+ }
+ }
+ 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);
+
+ mr_item = proto_tree_add_item(aecp_tree, hf_aecp_as_path_sequences, tvb,
+ 0, 0, ENC_NA);
+ mr_subtree = proto_item_add_subtree(mr_item, ett_aecp_get_as_path_sequences);
+ mr_counter = tvb_get_ntohs(tvb, AECP_OFFSET_AS_PATH_COUNT);
+
+ mr_offset = AECP_OFFSET_AS_PATH_PATH_SEQUENCE;
+ for (i = 0; i < mr_counter; i++) {
+ proto_tree_add_item(mr_subtree, hf_aecp_get_as_info_clock_id, tvb,
+ mr_offset, 8, ENC_BIG_ENDIAN);
+ mr_offset += 8;
+ }
+ }
+ 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) {
+
+ flags_ti = proto_tree_add_item(aecp_tree, hf_aecp_flags_32, tvb,
AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_stream_input_timestamp_uncertain_valid, tvb,
+ flags_tree = proto_item_add_subtree(flags_ti, ett_acmp_flags);
+
+ /* begin counters_valid flags field */
+ switch (tvb_get_ntohs(tvb, AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE)) {
+ case AEM_DESCRIPTOR_ENTITY:
+ break;
+ case AEM_DESCRIPTOR_AVB_INTERFACE:
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_interface_link_up_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_interface_link_down_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_interface_packets_tx_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_interface_packets_rx_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_interface_rx_crc_error_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_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(aecp_tree, hf_aecp_clock_domain_locked_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_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(aecp_tree, hf_aecp_stream_input_media_locked_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_media_unlocked_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_stream_reset_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_seq_num_mismatch_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_media_reset_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_timestamp_uncertain_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_timestamp_valid_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_timestamp_not_valid_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_unsupported_format_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_late_timestamp_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_early_timestamp_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_packets_tx_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_packets_rx_valid, tvb,
+ AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
+ break;
+ default:
+ break;
+ }
+
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific1_valid, tvb,
AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_stream_input_timestamp_valid_valid, tvb,
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific2_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,
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific3_valid, tvb,
AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_stream_input_unsupported_format_valid, tvb,
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific4_valid, tvb,
AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_stream_input_late_timestamp_valid, tvb,
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific5_valid, tvb,
AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_stream_input_early_timestamp_valid, tvb,
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific6_valid, tvb,
AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_stream_input_packets_tx_valid, tvb,
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific7_valid, tvb,
AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(flags_tree, hf_aecp_stream_input_packets_rx_valid, tvb,
+ proto_tree_add_item(aecp_tree, hf_aecp_entity_specific8_valid, tvb,
AECP_OFFSET_COUNTERS_VALID, 4, ENC_BIG_ENDIAN);
- break;
- default:
- break;
+
+
+ /* end counters_valid flags field */
+
+
+ switch (tvb_get_ntohs(tvb, AECP_OFFSET_COUNTERS_DESCRIPTOR_TYPE)) {
+ case AEM_DESCRIPTOR_ENTITY:
+ break;
+ case AEM_DESCRIPTOR_AVB_INTERFACE:
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_interface_link_up, tvb,
+ AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_UP, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_interface_link_down, tvb,
+ AECP_OFFSET_COUNTERS_AVB_INTERFACE_LINK_DOWN, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_interface_packets_tx, tvb,
+ AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_TX, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_avb_interface_packets_rx, tvb,
+ AECP_OFFSET_COUNTERS_AVB_INTERFACE_PACKETS_RX, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_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(aecp_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(aecp_tree, hf_aecp_clock_domain_locked, tvb,
+ AECP_OFFSET_COUNTERS_CLOCK_DOMAIN_LOCKED, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_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(aecp_tree, hf_aecp_stream_input_media_locked, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_LOCKED, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_media_unlocked, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_UNLOCKED, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_stream_reset, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_STREAM_RESET, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_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(aecp_tree, hf_aecp_stream_input_media_reset, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_MEDIA_RESET, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_timestamp_uncertain, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_UNCERTAIN, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_timestamp_valid, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_TIMESTAMP_VALID, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_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(aecp_tree, hf_aecp_stream_input_unsupported_format, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_UNSUPPORTED_FORMAT, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_late_timestamp, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_LATE_TIMESTAMP, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_early_timestamp, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_EARLY_TIMESTAMP, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_packets_tx, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_TX, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_stream_input_packets_rx, tvb,
+ AECP_OFFSET_COUNTERS_STREAM_INPUT_PACKETS_RX, 4, ENC_BIG_ENDIAN);
+ break;
+ default:
+ break;
+ }
+
+ 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);
+
}
- /* 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_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_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_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_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);
+ 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_MAP_NUMBER_OF_MAPPINGS, 2, ENC_BIG_ENDIAN);
+ AECP_OFFSET_ADDREM_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:
- proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
- 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_OFFSET_START_OPERATION_OPERATION_ID, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_operation_type, tvb,
- 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_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_OFFSET_OPERATION_STATUS_OPERATION_ID, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(aecp_tree, hf_aecp_percent_complete, tvb,
- AECP_OFFSET_OPERATION_STATUS_PERCENT_COMPLETE, 2, ENC_BIG_ENDIAN);
- break;
- 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) {
- 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);
+ break;
+ case AECP_COMMAND_START_OPERATION:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ 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_OFFSET_START_OPERATION_OPERATION_ID, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_operation_type, tvb,
+ 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_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_OFFSET_OPERATION_STATUS_OPERATION_ID, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_percent_complete, tvb,
+ AECP_OFFSET_OPERATION_STATUS_PERCENT_COMPLETE, 2, ENC_BIG_ENDIAN);
+ break;
+ 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_TOKEN_TOKEN_LENGTH, 2, ENC_BIG_ENDIAN);
+ 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) {
+ 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_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:
- break;
- default:
- /* the command type is not one of the valid spec values */
- break;
+ 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;
+
+ case AECP_COMMAND_SET_STREAM_BACKUP:
+ case AECP_COMMAND_GET_STREAM_BACKUP:
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_type, tvb,
+ AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_TYPE, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_descriptor_index, tvb,
+ AECP_OFFSET_STREAM_BACKUP_DESCRIPTOR_INDEX, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_backup_talker_entity_id_0, tvb,
+ AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_0, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_backup_talker_unique_id_0, tvb,
+ AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_0, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_backup_talker_entity_id_1, tvb,
+ AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_1, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_backup_talker_unique_id_1, tvb,
+ AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_1, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_backup_talker_entity_id_2, tvb,
+ AECP_OFFSET_STREAM_BACKUP_TALKER_ENTITY_ID_2, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_backup_talker_unique_id_2, tvb,
+ AECP_OFFSET_STREAM_BACKUP_TALKER_UNIQUE_ID_2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_backedup_talker_entity_id, tvb,
+ AECP_OFFSET_STREAM_BACKEDUP_TALKER_ENTITY_ID, 8, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_backedup_talker_unique_id, tvb,
+ AECP_OFFSET_STREAM_BACKEDUP_TALKER_UNIQUE_ID, 2, ENC_BIG_ENDIAN);
+ break;
+ /* * * * AEM COMMON FORMAT PACKETS * * * */
+ case AECP_COMMAND_CONTROLLER_AVAILABLE:
+ break;
+ default:
+ /* the command type is not one of the valid spec values */
+ break;
+ }
+ } // AECP AEM Command
+ else if ((mess_type == AECP_ADDRESS_ACCESS_COMMAND_MESSAGE) || (mess_type == AECP_ADDRESS_ACCESS_RESPONSE_MESSAGE))
+ {
+ proto_tree_add_item(aecp_tree, hf_aecp_aa_count, tvb,
+ AECP_AA_OFFSET_COUNT, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_aa_tlv_mode, tvb,
+ AECP_AA_OFFSET_TLVS_START, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_aa_tlv_length, tvb,
+ AECP_AA_OFFSET_TLVS_START, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(aecp_tree, hf_aecp_aa_tlv_address, tvb,
+ AECP_AA_OFFSET_TLVS_START+2, 8, ENC_BIG_ENDIAN);
}
+
}
static void
@@ -4588,7 +4717,7 @@ dissect_17221_acmp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *acmp_tree)
proto_tree_add_item(flags_tree, hf_acmp_flags_saved_state, tvb, ACMP_FLAGS_OFFSET, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(flags_tree, hf_acmp_flags_streaming_wait, tvb, ACMP_FLAGS_OFFSET, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(acmp_tree, hf_acmp_default_format, tvb, ACMP_DEFAULT_FORMAT_OFFSET, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(acmp_tree, hf_acmp_vlan_id, tvb, ACMP_VLAN_ID_OFFSET, 2, ENC_BIG_ENDIAN);
}
static void
@@ -5027,9 +5156,9 @@ proto_register_17221(void)
FT_BOOLEAN, 16, NULL, ACMP_FLAG_STREAMING_WAIT_BITMASK, NULL, HFILL }
},
/* ACMP Flags End */
- { &hf_acmp_default_format,
- { "Default Format", "ieee17221.default_format",
- FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ { &hf_acmp_vlan_id,
+ { "Stream VLAN Id", "ieee17221.vlan_id",
+ FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
},
/******* AECP ******/
/* COMMON FIELDS */
@@ -5061,6 +5190,23 @@ proto_register_17221(void)
{ "Command Type", "ieee17221.command_type",
FT_UINT16, BASE_HEX, VALS(aecp_command_type_vals), AECP_COMMAND_TYPE_MASK, NULL, HFILL }
},
+ /* Address Access Fields */
+ { &hf_aecp_aa_count,
+ { "Count", "ieee17221.count",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_aa_tlv_mode,
+ { "Tlv Mode", "ieee17221.tlv_mode",
+ FT_UINT8, BASE_DEC, NULL, 0xF0, NULL, HFILL }
+ },
+ { &hf_aecp_aa_tlv_length,
+ { "Tlv Length", "ieee17221.tlv_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0FFF, NULL, HFILL }
+ },
+ { &hf_aecp_aa_tlv_address,
+ { "Tlv Address", "ieee17221.tlv_address",
+ FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL }
+ },
/* SLIGHTLY LESS COMMON FIELDS */
{ &hf_aecp_descriptor_type,
@@ -5184,11 +5330,62 @@ proto_register_17221(void)
/* STOP_STREAMING */
+ /* GET_AVB_INFO */
+ { &hf_aecp_avb_info_ptp_grandmaster_id,
+ {"gPTP Grandmaster ID", "ieee17221.avb_info_gptp_grandmaster_id",
+ FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_avb_info_propegation_delay,
+ {"Progagation Delay", "ieee17221.avb_info_propegation_delay",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_avb_info_gptp_domain_number,
+ {"gPTP Domain Number", "ieee17221.avb_info_gptp_domain_number",
+ FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_avb_info_flags,
+ {"Flags", "ieee17221.avbinfo_flags",
+ FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+
+ { &hf_aecp_as_capable_flag,
+ { "AS Capable Flag", "ieee17221.as_capable_flag",
+ FT_BOOLEAN, 8, NULL, AECP_AS_CAPABLE_FLAG_MASK, NULL, HFILL }
+ },
- { &hf_aecp_as_path_count,
- {"AS Path Count", "ieee17221.as_path_count",
+ { &hf_aecp_gptp_enabled_flag,
+ { "gPTP Enabled Flag", "ieee17221.gptp_enabled_flag",
+ FT_BOOLEAN, 8, NULL, AECP_GPTP_ENABLED_FLAG_MASK, NULL, HFILL }
+ },
+
+ { &hf_aecp_srp_enabled_flag,
+ { "SRP Enabled Flag", "ieee17221.srp_enabled_flag",
+ FT_BOOLEAN, 8, NULL, AECP_SRP_ENABLED_FLAG_MASK, NULL, HFILL }
+ },
+
+ { &hf_aecp_avb_info_msrp_mappings_count,
+ {"MSRP Mappings Count", "ieee17221.msrp_mappings",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+
+ { &hf_aecp_avb_info_msrp_mappings,
+ {"MSRP Mappings", "ieee17221.msrp_mappings",
+ FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+
+ { &hf_aecp_avb_info_msrp_mapping_traffic_class,
+ {"MSRP Mapping Traffic Class", "ieee17221.msrp_mapping_traffic_class",
+ FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_avb_info_msrp_mapping_priority,
+ {"MSRP Mapping Priority", "ieee17221.msrp_mapping_priority",
+ FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_get_avb_info_msrp_vlan_id,
+ {"MSRP VLAN ID", "ieee17221.msrp_vlan_id",
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 }
@@ -5237,6 +5434,11 @@ proto_register_17221(void)
{"Name Index", "ieee17221.name_index",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
+ { &hf_aecp_configuration_index,
+ {"Configuration Index", "ieee17221.configuration_index",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+
{ &hf_aecp_name,
{"Name", "ieee17221.name",
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
@@ -5248,6 +5450,22 @@ proto_register_17221(void)
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
},
+ /* GET_AS_PATH */
+ { &hf_aecp_as_path_count,
+ {"Count", "ieee17221.as_path_count",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+
+ { &hf_aecp_as_path_sequences,
+ {"Path Sequence", "ieee17221.as_path_sequences",
+ FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+
+ { &hf_aecp_get_as_info_clock_id,
+ { "ClockId", "ieee17221.get_as_info_clock_id",
+ FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+
/* AUTH_ADD_KEY */
{ &hf_aecp_keychain_id,
{"Keychain ID", "ieee17221.keychain_id",
@@ -5364,6 +5582,8 @@ proto_register_17221(void)
/* AUTH_GET_KEY */
/* AUTHENTICATE */
/* GET_COUNTERS */
+
+ /* Counter valid bits */
{ &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 }
@@ -5484,123 +5704,124 @@ proto_register_17221(void)
FT_BOOLEAN, 32, NULL, AECP_COUNTERS_VALID_ENTITY_SPECIFIC_8, NULL, HFILL }
},
+ /* Counters */
{ &hf_aecp_avb_interface_link_up,
- {"Link Up Valid", "ieee17221.flags.link_up",
+ {"Link Up", "ieee17221.link_up",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_avb_interface_link_down,
- {"Link Down Valid", "ieee17221.flags.link_up",
+ {"Link Down", "ieee17221.link_down",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_avb_interface_packets_tx,
- {"Packets TX Valid", "ieee17221.flags.packets_tx",
+ {"Frames TX", "ieee17221.frames_tx",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_avb_interface_packets_rx,
- {"Packets RX Valid", "ieee17221.flags.packets_rx",
+ {"Frames RX", "ieee17221.frames_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",
+ {"RX CRC Error", "ieee17221.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",
+ {"GPTP GM Changed", "ieee17221.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",
+ {"Clock Domain Unlocked", "ieee17221.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",
+ {"Clock_Domain Locked", "ieee17221.clock_domain_locked",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_stream_input_media_unlocked,
- {"Media Unlocked Valid", "ieee17221.flags.media_unlocked",
+ {"Media Unlocked", "ieee17221.media_unlocked",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_stream_input_media_locked,
- {"Media Locked Valid", "ieee17221.flags.media_locked",
+ {"Media Locked", "ieee17221.media_locked",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_stream_input_stream_reset,
- {"Stream Reset Valid", "ieee17221.flags.stream_reset",
+ {"Stream Reset", "ieee17221.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",
+ {"Seq Num Mismatch", "ieee17221.seq_num_mismatch",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_stream_input_media_reset,
- {"Media Reset Valid", "ieee17221.flags.media_reset",
+ {"Media Reset", "ieee17221.media_reset",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_stream_input_timestamp_uncertain,
- {"Timestamp Uncertain Valid", "ieee17221.flags.timestamp_uncertain",
+ {"Timestamp Uncertain", "ieee17221.timestamp_uncertain",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_stream_input_timestamp_valid,
- {"Timestamp Valid Valid", "ieee17221.flags.timestamp",
+ {"Timestamp Valid", "ieee17221.timestamp",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_stream_input_timestamp_not_valid,
- {"Timestamp Not Valid Valid", "ieee17221.flags.timestamp_not",
+ {"Timestamp Not Valid", "ieee17221.timestamp_not",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_stream_input_unsupported_format,
- {"Unsupported Format Valid", "ieee17221.flags.unsupported_format",
+ {"Unsupported Format", "ieee17221.unsupported_format",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_stream_input_late_timestamp,
- {"Late Timestamp Valid", "ieee17221.flags.late_timestamp",
+ {"Late Timestamp", "ieee17221.late_timestamp",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_stream_input_early_timestamp,
- {"Early Timestamp Valid", "ieee17221.flags.early_timestamp",
+ {"Early Timestamp", "ieee17221.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",
+ {"Stream Packets TX", "ieee17221.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",
+ {"Stream Packets RX", "ieee17221.stream_packets_rx",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_entity_specific1,
- {"Entity Specific 1", "ieee17221.flags.entity_specific1",
+ {"Entity Specific 1", "ieee17221.entity_specific1",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_entity_specific2,
- {"Entity Specific 2", "ieee17221.flags.entity_specific2",
+ {"Entity Specific 2", "ieee17221.entity_specific2",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_entity_specific3,
- {"Entity Specific 3", "ieee17221.flags.entity_specific3",
+ {"Entity Specific 3", "ieee17221.entity_specific3",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_entity_specific4,
- {"Entity Specific 4", "ieee17221.flags.entity_specific4",
+ {"Entity Specific 4", "ieee17221.entity_specific4",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_entity_specific5,
- {"Entity Specific 5", "ieee17221.flags.entity_specific5",
+ {"Entity Specific 5", "ieee17221.entity_specific5",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_entity_specific6,
- {"Entity Specific 6", "ieee17221.flags.entity_specific6",
+ {"Entity Specific 6", "ieee17221.entity_specific6",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_entity_specific7,
- {"Entity Specific 7", "ieee17221.flags.entity_specific7",
+ {"Entity Specific 7", "ieee17221.entity_specific7",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aecp_entity_specific8,
- {"Entity Specific 8", "ieee17221.flags.entity_specific8",
+ {"Entity Specific 8", "ieee17221.entity_specific8",
FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
@@ -5892,12 +6113,12 @@ proto_register_17221(void)
{"Base Control Block", "ieee17221.base_control_block",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
- { &hf_aem_unit_name,
- {"Unit Name", "ieee17221.unit_name",
+ { &hf_aem_object_name,
+ {"Object Name", "ieee17221.object_name",
FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
},
- { &hf_aem_unit_name_string,
- {"Unit Name String", "ieee17221.unit_name_string",
+ { &hf_aem_localized_description,
+ {"Localized Description", "ieee17221.localized_description",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
{ &hf_aem_current_sample_rate,
@@ -6176,33 +6397,9 @@ proto_register_17221(void)
{"Internal ID", "ieee17221.internal_id",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
- /* AVB_INTERFACE */
- { &hf_aem_msrp_mappings_offset,
- {"MSRP Mappings Offset", "ieee17221.msrp_mappings_offset",
- FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
- },
- { &hf_aem_msrp_mappings_count,
- {"MSRP Mappings Count", "ieee17221.msrp_mappings_count",
- FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
- },
- { &hf_aem_msrp_mappings,
- {"MSRP Mappings", "ieee17221.msrp_mappings",
- FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
- },
- { &hf_aem_msrp_mapping_traffic_class,
- {"MSRP Mapping Traffic Class", "ieee17221.msrp_mapping_traffic_class",
- FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
- },
- { &hf_aem_msrp_mapping_priority,
- {"MSRP Mapping Priority", "ieee17221.msrp_mapping_priority",
- FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
- },
- { &hf_aem_msrp_vlan_id,
- {"MSRP VLAN ID", "ieee17221.msrp_vlan_id",
- FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
- },
#endif
- { &hf_aem_avb_interface_flags,
+ /* AVB_INTERFACE */
+ { &hf_aem_avb_interface_flags,
{"Interface Flags", "ieee17221.interface_flags",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
@@ -6346,14 +6543,6 @@ proto_register_17221(void)
{"Control Domain", "ieee17221.control_domain",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
},
- { &hf_aem_control_name,
- {"Control Name", "ieee17221.control_name",
- FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
- },
- { &hf_aem_control_name_string,
- {"Control Name String", "ieee17221.control_name_string",
- FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
- },
{ &hf_aem_values_offset,
{"Values Offset", "ieee17221.values_offset",
FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
@@ -6488,14 +6677,6 @@ proto_register_17221(void)
{"Target Descriptor ID", "ieee17221.target_descriptor_id",
FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
},
- { &hf_aem_object_name,
- {"Object Name", "ieee17221.object_name",
- FT_STRING, BASE_NONE, NULL, 0x00, NULL, HFILL }
- },
- { &hf_aem_object_name_string,
- {"Object Name String", "ieee17221.object_name_string",
- FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL }
- },
{ &hf_aem_start_address,
{"Start Address", "ieee17221.start_address",
FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
@@ -6667,6 +6848,11 @@ proto_register_17221(void)
{"Version", "ieee17221.sf_version",
FT_UINT8, BASE_HEX, NULL, AEM_MASK_SF_VERSION, NULL, HFILL }
},
+ { &hf_aem_sf_subtype,
+ {"Subtype", "ieee17221.sf_subtype",
+ FT_UINT8, BASE_HEX, NULL, AEM_MASK_SF_SUBTYPE, NULL, HFILL }
+ },
+
{ &hf_aem_sf,
{"SF", "ieee17221.sf",
FT_BOOLEAN, 8, NULL, AEM_MASK_SF, NULL, HFILL }
@@ -6744,9 +6930,42 @@ proto_register_17221(void)
{ &hf_aecp_status_code,
{"Status", "ieee17221.status",
FT_UINT8, BASE_HEX, VALS(aem_status_type_vals), AECP_STATUS_CODE_MASK, NULL, HFILL }
- }
-
+ },
/* END STREAM FORMAT (SF) FIELDS */
+
+ /* SET/GET_STREAM_BACKUP */
+ { &hf_aecp_backup_talker_entity_id_0,
+ {"Backup Talker Entity ID 0", "ieee17221.backup_talker_entity_id_0",
+ FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_backup_talker_unique_id_0,
+ {"Backup Talker Unique ID 0", "ieee17221.backup_talker_unique_id_0",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_backup_talker_entity_id_1,
+ {"Backup Talker Entity ID 1", "ieee17221.backup_talker_entity_id_1",
+ FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_backup_talker_unique_id_1,
+ {"Backup Talker Unique ID 1", "ieee17221.backup_talker_unique_id_1",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_backup_talker_entity_id_2,
+ {"Backup Talker Entity ID 2", "ieee17221.backup_talker_entity_id_2",
+ FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_backup_talker_unique_id_2,
+ {"Backup Talker Unique ID 2", "ieee17221.backup_talker_unique_id_2",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_backedup_talker_entity_id,
+ {"Backed up Talker Entity ID", "ieee17221.backedup_talker_entity_id",
+ FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
+ },
+ { &hf_aecp_backedup_talker_unique_id,
+ {"Backedup Talker Unique ID", "ieee17221.backedup_talker_unique_id",
+ FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ }
};
/* Setup protocol subtree array */
@@ -6768,7 +6987,8 @@ proto_register_17221(void)
&ett_aem_stream_formats,
&ett_aem_jack_flags,
&ett_aem_port_flags,
- &ett_aem_msrp_mappings,
+ &ett_aecp_get_avb_info_msrp_mappings,
+ &ett_aecp_get_as_path_sequences,
&ett_aem_clock_source_flags,
&ett_aem_mappings,
&ett_aem_ctrl_vals,
@@ -6776,7 +6996,7 @@ proto_register_17221(void)
/* &ett_aem_media_format, */
&ett_aecp_descriptors,
&ett_aecp_flags_32,
- &ett_aem_stream_format
+ &ett_aem_stream_format,
};
/* Register the protocol name and description */