![Alexis La Goutte](/assets/img/avatar_default.png)
(Using sed : sed -i '/^ \* \$Id\$/,+1 d') Fix manually some typo (in export_object_dicom.c and crc16-plain.c) Change-Id: I4c1ae68d1c4afeace8cb195b53c715cf9e1227a8 Reviewed-on: https://code.wireshark.org/review/497 Reviewed-by: Anders Broman <a.broman58@gmail.com>
16129 lines
503 KiB
C
16129 lines
503 KiB
C
/* packet-ff.c
|
|
* Routines for FF-HSE packet disassembly
|
|
*
|
|
* FF-588-1.3: HSE Field Device Access Agent
|
|
* 6. Field Device Access Agent Interface
|
|
*
|
|
* (c) Copyright 2008, Yukiyo Akisada <Yukiyo.Akisada@jp.yokogawa.com>
|
|
*
|
|
* Wireshark - Network traffic analyzer
|
|
* By Gerald Combs <gerald@wireshark.org>
|
|
* Copyright 1998 Gerald Combs
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
|
|
/*
|
|
* /etc/services
|
|
* ---------------------------------------------------------------------
|
|
* ff-annunc 1089/tcp # FF Annunciation
|
|
* ff-annunc 1089/udp # FF Annunciation
|
|
* ff-fms 1090/tcp # FF Fieldbus Message Specification
|
|
* ff-fms 1090/udp # FF Fieldbus Message Specification
|
|
* ff-sm 1091/tcp # FF System Management
|
|
* ff-sm 1091/udp # FF System Management
|
|
* ff-lr-port 3622/tcp # FF LAN Redundancy Port
|
|
* ff-lr-port 3622/udp # FF LAN Redundancy Port
|
|
* ---------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include <glib.h>
|
|
|
|
#include <epan/packet.h>
|
|
#include "packet-ff.h"
|
|
#include "packet-tcp.h"
|
|
|
|
void proto_register_ff(void);
|
|
void proto_reg_handoff_ff(void);
|
|
|
|
static int proto_ff = -1;
|
|
static gint ett_ff = -1;
|
|
|
|
static gboolean ff_desegment = TRUE; /* desegmentation of FF over TCP */
|
|
|
|
static dissector_handle_t ff_udp_handle;
|
|
static dissector_handle_t ff_tcp_handle;
|
|
|
|
|
|
|
|
/*
|
|
* 6.3. Message Header
|
|
*/
|
|
static int hf_ff_fda_msg_hdr = -1;
|
|
|
|
static int hf_ff_fda_msg_hdr_ver = -1;
|
|
static int hf_ff_fda_msg_hdr_fda_addr = -1;
|
|
static int hf_ff_fda_msg_hdr_len = -1;
|
|
|
|
static gint ett_ff_fda_msg_hdr = -1;
|
|
static gint ett_ff_fda_msg_hdr_proto_and_type = -1;
|
|
static gint ett_ff_fda_msg_hdr_opts = -1;
|
|
static gint ett_ff_fda_msg_hdr_srv = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.4. Message Trailer
|
|
*/
|
|
static int hf_ff_fda_msg_trailer = -1;
|
|
|
|
static int hf_ff_fda_msg_trailer_msg_num = -1;
|
|
static int hf_ff_fda_msg_trailer_invoke_id = -1;
|
|
static int hf_ff_fda_msg_trailer_time_stamp = -1;
|
|
static int hf_ff_fda_msg_trailer_extended_control_field = -1;
|
|
|
|
static gint ett_ff_fda_msg_trailer = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1 FDA Session Management Services
|
|
*/
|
|
static int hf_ff_fda = -1;
|
|
static int hf_ff_hdr_srv_confirm_flag = -1;
|
|
static int hf_ff_hdr_srv_service_id = -1;
|
|
static int hf_ff_hdr_srv_fda_service_id_confirm = -1;
|
|
static int hf_ff_hdr_srv_fda_service_id_unconfirm = -1;
|
|
static int hf_ff_hdr_srv_sm_service_id_confirm = -1;
|
|
static int hf_ff_hdr_srv_sm_service_id_unconfirm = -1;
|
|
static int hf_ff_hdr_srv_fms_service_id_confirm = -1;
|
|
static int hf_ff_hdr_srv_fms_service_id_unconfirm = -1;
|
|
static int hf_ff_hdr_srv_lan_service_id_confirm = -1;
|
|
static int hf_ff_hdr_srv_lan_service_id_unconfirm = -1;
|
|
static int hf_ff_hdr_proto_id = -1;
|
|
static int hf_ff_hdr_confirm_msg_type = -1;
|
|
static int hf_ff_hdr_opts_msg_num = -1;
|
|
static int hf_ff_hdr_opts_invoke_id = -1;
|
|
static int hf_ff_hdr_opts_timestamp = -1;
|
|
static int hf_ff_hdr_opts_reserved = -1;
|
|
static int hf_ff_hdr_opts_ext_ctrl = -1;
|
|
static int hf_ff_hdr_opts_pad = -1;
|
|
|
|
/*
|
|
* 6.5.1.1. FDA Open Session (Confirmed Service Id = 1)
|
|
*/
|
|
static int hf_ff_fda_open_sess = -1;
|
|
|
|
static int hf_ff_fda_open_sess_req = -1;
|
|
static int hf_ff_fda_open_sess_req_sess_idx = -1;
|
|
static int hf_ff_fda_open_sess_req_max_buf_siz = -1;
|
|
static int hf_ff_fda_open_sess_req_max_msg_len = -1;
|
|
static int hf_ff_fda_open_sess_req_reserved = -1;
|
|
static int hf_ff_fda_open_sess_req_nma_conf_use = -1;
|
|
static int hf_ff_fda_open_sess_req_inactivity_close_time = -1;
|
|
static int hf_ff_fda_open_sess_req_transmit_delay_time = -1;
|
|
static int hf_ff_fda_open_sess_req_pd_tag = -1;
|
|
|
|
static int hf_ff_fda_open_sess_rsp = -1;
|
|
static int hf_ff_fda_open_sess_rsp_sess_idx = -1;
|
|
static int hf_ff_fda_open_sess_rsp_max_buf_siz = -1;
|
|
static int hf_ff_fda_open_sess_rsp_max_msg_len = -1;
|
|
static int hf_ff_fda_open_sess_rsp_reserved = -1;
|
|
static int hf_ff_fda_open_sess_rsp_nma_conf_use = -1;
|
|
static int hf_ff_fda_open_sess_rsp_inactivity_close_time = -1;
|
|
static int hf_ff_fda_open_sess_rsp_transmit_delay_time = -1;
|
|
static int hf_ff_fda_open_sess_rsp_pd_tag = -1;
|
|
|
|
static int hf_ff_fda_open_sess_err = -1;
|
|
static int hf_ff_fda_open_sess_err_err_class = -1;
|
|
static int hf_ff_fda_open_sess_err_err_code = -1;
|
|
static int hf_ff_fda_open_sess_err_additional_code = -1;
|
|
static int hf_ff_fda_open_sess_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fda_open_sess_req = -1;
|
|
static gint ett_ff_fda_open_sess_rsp = -1;
|
|
static gint ett_ff_fda_open_sess_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.2. FDA Idle (Confirmed Service Id = 3)
|
|
*/
|
|
static int hf_ff_fda_idle = -1;
|
|
|
|
static int hf_ff_fda_idle_req = -1;
|
|
|
|
static int hf_ff_fda_idle_rsp = -1;
|
|
|
|
static int hf_ff_fda_idle_err = -1;
|
|
static int hf_ff_fda_idle_err_err_class = -1;
|
|
static int hf_ff_fda_idle_err_err_code = -1;
|
|
static int hf_ff_fda_idle_err_additional_code = -1;
|
|
static int hf_ff_fda_idle_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fda_idle_req = -1;
|
|
static gint ett_ff_fda_idle_rsp = -1;
|
|
static gint ett_ff_fda_idle_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2. SM Services
|
|
*/
|
|
static int hf_ff_sm = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.1. SM Find Tag Query (Unconfirmed Service Id = 1)
|
|
*/
|
|
static int hf_ff_sm_find_tag_query = -1;
|
|
|
|
static int hf_ff_sm_find_tag_query_req = -1;
|
|
static int hf_ff_sm_find_tag_query_req_query_type = -1;
|
|
static int hf_ff_sm_find_tag_query_req_idx = -1;
|
|
static int hf_ff_sm_find_tag_query_req_tag = -1;
|
|
static int hf_ff_sm_find_tag_query_req_vfd_tag = -1;
|
|
|
|
static gint ett_ff_sm_find_tag_query_req = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.2. SM Find Tag Reply (Unconfirmed Service Id = 2)
|
|
*/
|
|
static int hf_ff_sm_find_tag_reply = -1;
|
|
|
|
static int hf_ff_sm_find_tag_reply_req = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_query_type = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_h1_node_addr = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_fda_addr_link_id = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_vfd_ref = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_od_idx = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_ip_addr = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_od_ver = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_dev_id = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_pd_tag = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_reserved = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_num_of_fda_addr_selectors = -1;
|
|
static int hf_ff_sm_find_tag_reply_req_fda_addr_selector = -1;
|
|
static int hf_ff_sm_find_tag_reply_dup_reserved = -1;
|
|
static int hf_ff_sm_find_tag_reply_dup_pd_tag = -1;
|
|
static int hf_ff_sm_find_tag_reply_dup_device = -1;
|
|
|
|
static gint ett_ff_sm_find_tag_reply_req = -1;
|
|
static gint ett_ff_sm_find_tag_reply_req_dup_detection_state = -1;
|
|
static gint ett_ff_sm_find_tag_reply_req_list_of_fda_addr_selectors = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.3. SM Identify (Confirmed Service Id = 3)
|
|
*/
|
|
static int hf_ff_sm_id = -1;
|
|
|
|
static int hf_ff_sm_id_req = -1;
|
|
|
|
static int hf_ff_sm_id_rsp = -1;
|
|
static int hf_ff_sm_id_rsp_dev_idx = -1;
|
|
static int hf_ff_sm_id_rsp_max_dev_idx = -1;
|
|
static int hf_ff_sm_id_rsp_operational_ip_addr = -1;
|
|
static int hf_ff_sm_id_rsp_dev_id = -1;
|
|
static int hf_ff_sm_id_rsp_pd_tag = -1;
|
|
static int hf_ff_sm_id_rsp_hse_repeat_time = -1;
|
|
static int hf_ff_sm_id_rsp_lr_port = -1;
|
|
static int hf_ff_sm_id_rsp_reserved = -1;
|
|
static int hf_ff_sm_id_rsp_annunc_ver_num = -1;
|
|
static int hf_ff_sm_id_rsp_hse_dev_ver_num = -1;
|
|
static int hf_ff_sm_id_rsp_num_of_entries = -1;
|
|
static int hf_ff_sm_id_rsp_h1_live_list_h1_link_id = -1;
|
|
static int hf_ff_sm_id_rsp_h1_live_list_reserved = -1;
|
|
static int hf_ff_sm_id_rsp_h1_live_list_ver_num = -1;
|
|
static int hf_ff_sm_id_rsp_h1_node_addr_ver_num_h1_node_addr = -1;
|
|
static int hf_ff_sm_id_rsp_h1_node_addr_ver_num_ver_num = -1;
|
|
static int hf_ff_sm_id_rsp_smk_state_name = -1;
|
|
static int hf_ff_sm_id_rsp_smk_state_sync = -1;
|
|
static int hf_ff_sm_id_rsp_dev_type_link = -1;
|
|
static int hf_ff_sm_id_rsp_dev_type_iogateway = -1;
|
|
static int hf_ff_sm_id_rsp_dev_type_hse = -1;
|
|
static int hf_ff_sm_id_rsp_dev_type_h1 = -1;
|
|
static int hf_ff_sm_id_rsp_dev_type_reserved = -1;
|
|
static int hf_ff_sm_id_rsp_dev_type_redundant_caps = -1;
|
|
static int hf_ff_sm_id_rsp_dev_redundancy_state_reserved = -1;
|
|
static int hf_ff_sm_id_rsp_dev_redundancy_state_role = -1;
|
|
static int hf_ff_sm_id_rsp_dev_redundancy_state_type = -1;
|
|
static int hf_ff_sm_id_rsp_dup_detection_state_reserved = -1;
|
|
static int hf_ff_sm_id_rsp_dup_detection_state_pd_tag = -1;
|
|
static int hf_ff_sm_id_rsp_dup_detection_state_device = -1;
|
|
|
|
static int hf_ff_sm_id_err = -1;
|
|
static int hf_ff_sm_id_err_err_class = -1;
|
|
static int hf_ff_sm_id_err_err_code = -1;
|
|
static int hf_ff_sm_id_err_additional_code = -1;
|
|
static int hf_ff_sm_id_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_sm_id_req = -1;
|
|
static gint ett_ff_sm_id_rsp = -1;
|
|
static gint ett_ff_sm_id_rsp_smk_state = -1;
|
|
static gint ett_ff_sm_id_rsp_dev_type = -1;
|
|
static gint ett_ff_sm_id_rsp_dev_redundancy_state = -1;
|
|
static gint ett_ff_sm_id_rsp_dup_detection_state = -1;
|
|
static gint ett_ff_sm_id_rsp_entries_h1_live_list = -1;
|
|
static gint ett_ff_sm_id_rsp_h1_live_list = -1;
|
|
static gint ett_ff_sm_id_rsp_entries_node_addr = -1;
|
|
static gint ett_ff_sm_id_rsp_h1_node_addr = -1;
|
|
static gint ett_ff_sm_id_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.4. SM Clear Address (Confirmed Service Id = 12)
|
|
*/
|
|
static int hf_ff_sm_clear_addr = -1;
|
|
|
|
static int hf_ff_sm_clear_addr_req = -1;
|
|
static int hf_ff_sm_clear_addr_req_dev_id = -1;
|
|
static int hf_ff_sm_clear_addr_req_pd_tag = -1;
|
|
static int hf_ff_sm_clear_addr_req_interface_to_clear = -1;
|
|
|
|
static int hf_ff_sm_clear_addr_rsp = -1;
|
|
|
|
static int hf_ff_sm_clear_addr_err = -1;
|
|
static int hf_ff_sm_clear_addr_err_err_class = -1;
|
|
static int hf_ff_sm_clear_addr_err_err_code = -1;
|
|
static int hf_ff_sm_clear_addr_err_additional_code = -1;
|
|
static int hf_ff_sm_clear_addr_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_sm_clear_addr_req = -1;
|
|
static gint ett_ff_sm_clear_addr_rsp = -1;
|
|
static gint ett_ff_sm_clear_addr_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.5. SM Set Assignment Info (Confirmed Service Id = 14)
|
|
*/
|
|
static int hf_ff_sm_set_assign_info = -1;
|
|
|
|
static int hf_ff_sm_set_assign_info_req_dev_redundancy_state_reserved = -1;
|
|
static int hf_ff_sm_set_assign_info_req_dev_redundancy_state_role = -1;
|
|
static int hf_ff_sm_set_assign_info_req_dev_redundancy_state_type = -1;
|
|
static int hf_ff_sm_set_assign_info_req_clear_dup_detection_state_reserved = -1;
|
|
static int hf_ff_sm_set_assign_info_req_clear_dup_detection_state_pd_tag = -1;
|
|
static int hf_ff_sm_set_assign_info_req_clear_dup_detection_state_device_index = -1;
|
|
|
|
static int hf_ff_sm_set_assign_info_req = -1;
|
|
static int hf_ff_sm_set_assign_info_req_dev_id = -1;
|
|
static int hf_ff_sm_set_assign_info_req_pd_tag = -1;
|
|
static int hf_ff_sm_set_assign_info_req_h1_new_addr = -1;
|
|
static int hf_ff_sm_set_assign_info_req_lr_port = -1;
|
|
static int hf_ff_sm_set_assign_info_req_hse_repeat_time = -1;
|
|
static int hf_ff_sm_set_assign_info_req_dev_idx = -1;
|
|
static int hf_ff_sm_set_assign_info_req_max_dev_idx = -1;
|
|
static int hf_ff_sm_set_assign_info_req_operational_ip_addr = -1;
|
|
|
|
static int hf_ff_sm_set_assign_info_rsp = -1;
|
|
static int hf_ff_sm_set_assign_info_rsp_reserved = -1;
|
|
static int hf_ff_sm_set_assign_info_rsp_max_dev_idx = -1;
|
|
static int hf_ff_sm_set_assign_info_rsp_hse_repeat_time = -1;
|
|
|
|
static int hf_ff_sm_set_assign_info_err = -1;
|
|
static int hf_ff_sm_set_assign_info_err_err_class = -1;
|
|
static int hf_ff_sm_set_assign_info_err_err_code = -1;
|
|
static int hf_ff_sm_set_assign_info_err_additional_code = -1;
|
|
static int hf_ff_sm_set_assign_info_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_sm_set_assign_info_req = -1;
|
|
static gint ett_ff_sm_set_assign_info_req_dev_redundancy_state = -1;
|
|
static gint ett_ff_sm_set_assign_info_req_clear_dup_detection_state = -1;
|
|
static gint ett_ff_sm_set_assign_info_rsp = -1;
|
|
static gint ett_ff_sm_set_assign_info_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.6. SM Clear Assignment Info (Confirmed Service Id = 15)
|
|
*/
|
|
static int hf_ff_sm_clear_assign_info = -1;
|
|
|
|
static int hf_ff_sm_clear_assign_info_req = -1;
|
|
static int hf_ff_sm_clear_assign_info_req_dev_id = -1;
|
|
static int hf_ff_sm_clear_assign_info_req_pd_tag = -1;
|
|
|
|
static int hf_ff_sm_clear_assign_info_rsp = -1;
|
|
|
|
static int hf_ff_sm_clear_assign_info_err = -1;
|
|
static int hf_ff_sm_clear_assign_info_err_err_class = -1;
|
|
static int hf_ff_sm_clear_assign_info_err_err_code = -1;
|
|
static int hf_ff_sm_clear_assign_info_err_additional_code = -1;
|
|
static int hf_ff_sm_clear_assign_info_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_sm_clear_assign_info_req = -1;
|
|
static gint ett_ff_sm_clear_assign_info_rsp = -1;
|
|
static gint ett_ff_sm_clear_assign_info_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.7. SM Device Annunciation (Unconfirmed Service Id = 16)
|
|
*/
|
|
static int hf_ff_sm_dev_annunc = -1;
|
|
|
|
static int hf_ff_sm_dev_annunc_req = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_idx = -1;
|
|
static int hf_ff_sm_dev_annunc_req_max_dev_idx = -1;
|
|
static int hf_ff_sm_dev_annunc_req_operational_ip_addr = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_id = -1;
|
|
static int hf_ff_sm_dev_annunc_req_pd_tag = -1;
|
|
static int hf_ff_sm_dev_annunc_req_hse_repeat_time = -1;
|
|
static int hf_ff_sm_dev_annunc_req_lr_port = -1;
|
|
static int hf_ff_sm_dev_annunc_req_reserved = -1;
|
|
static int hf_ff_sm_dev_annunc_req_annunc_ver_num = -1;
|
|
static int hf_ff_sm_dev_annunc_req_hse_dev_ver_num = -1;
|
|
static int hf_ff_sm_dev_annunc_req_num_of_entries = -1;
|
|
static int hf_ff_sm_dev_annunc_req_h1_live_list_h1_link_id = -1;
|
|
static int hf_ff_sm_dev_annunc_req_h1_live_list_reserved = -1;
|
|
static int hf_ff_sm_dev_annunc_req_h1_live_list_ver_num = -1;
|
|
static int hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_h1_node_addr = -1;
|
|
static int hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_ver_num = -1;
|
|
static int hf_ff_sm_dev_annunc_req_smk_state_name = -1;
|
|
static int hf_ff_sm_dev_annunc_req_smk_state_sync = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_type_link = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_type_iogateway = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_type_hse = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_type_h1 = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_type_reserved = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_type_redundant_caps = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_redundancy_state_reserved = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_redundancy_state_role = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dev_redundancy_state_type = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dup_detection_state_reserved = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dup_detection_state_pd_tag = -1;
|
|
static int hf_ff_sm_dev_annunc_req_dup_detection_state_device = -1;
|
|
|
|
static gint ett_ff_sm_dev_annunc_req = -1;
|
|
static gint ett_ff_sm_dev_annunc_req_smk_state = -1;
|
|
static gint ett_ff_sm_dev_annunc_req_dev_type = -1;
|
|
static gint ett_ff_sm_dev_annunc_req_dev_redundancy_state = -1;
|
|
static gint ett_ff_sm_dev_annunc_req_dup_detection_state = -1;
|
|
static gint ett_ff_sm_dev_annunc_req_entries_h1_live_list = -1;
|
|
static gint ett_ff_sm_dev_annunc_req_h1_live_list = -1;
|
|
static gint ett_ff_sm_dev_annunc_req_entries_node_addr = -1;
|
|
static gint ett_ff_sm_dev_annunc_req_h1_node_addr = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3. FMS Services
|
|
*/
|
|
static int hf_ff_fms = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.2. FMS Initiate (Confirmed Service Id = 96)
|
|
*/
|
|
static int hf_ff_fms_init = -1;
|
|
|
|
static int hf_ff_fms_init_req = -1;
|
|
static int hf_ff_fms_init_req_conn_opt = -1;
|
|
static int hf_ff_fms_init_req_access_protection_supported_calling = -1;
|
|
static int hf_ff_fms_init_req_passwd_and_access_grps_calling = -1;
|
|
static int hf_ff_fms_init_req_ver_od_calling = -1;
|
|
static int hf_ff_fms_init_req_prof_num_calling = -1;
|
|
static int hf_ff_fms_init_req_pd_tag = -1;
|
|
|
|
static int hf_ff_fms_init_rsp = -1;
|
|
static int hf_ff_fms_init_rsp_ver_od_called = -1;
|
|
static int hf_ff_fms_init_rsp_prof_num_called = -1;
|
|
|
|
static int hf_ff_fms_init_err = -1;
|
|
static int hf_ff_fms_init_err_err_class = -1;
|
|
static int hf_ff_fms_init_err_err_code = -1;
|
|
static int hf_ff_fms_init_err_additional_code = -1;
|
|
static int hf_ff_fms_init_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_init_req = -1;
|
|
static gint ett_ff_fms_init_rep = -1;
|
|
static gint ett_ff_fms_init_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.3. FMS Abort (Unconfirmed Service Id = 112)
|
|
*/
|
|
static int hf_ff_fms_abort = -1;
|
|
|
|
static int hf_ff_fms_abort_req = -1;
|
|
static int hf_ff_fms_abort_req_abort_id = -1;
|
|
static int hf_ff_fms_abort_req_reason_code = -1;
|
|
static int hf_ff_fms_abort_req_reserved = -1;
|
|
|
|
static gint ett_ff_fms_abort_req = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.4. FMS Status (Confirmed Service Id = 0)
|
|
*/
|
|
static int hf_ff_fms_status = -1;
|
|
|
|
static int hf_ff_fms_status_req = -1;
|
|
|
|
static int hf_ff_fms_status_rsp = -1;
|
|
static int hf_ff_fms_status_rsp_logical_status = -1;
|
|
static int hf_ff_fms_status_rsp_physical_status = -1;
|
|
static int hf_ff_fms_status_rsp_reserved = -1;
|
|
|
|
static int hf_ff_fms_status_err = -1;
|
|
static int hf_ff_fms_status_err_err_class = -1;
|
|
static int hf_ff_fms_status_err_err_code = -1;
|
|
static int hf_ff_fms_status_err_additional_code = -1;
|
|
static int hf_ff_fms_status_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_status_req = -1;
|
|
static gint ett_ff_fms_status_rsp = -1;
|
|
static gint ett_ff_fms_status_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.5. FMS Unsolicited Status (Unconfirmed Service Id = 1)
|
|
*/
|
|
static int hf_ff_fms_unsolicited_status = -1;
|
|
|
|
static int hf_ff_fms_unsolicited_status_req = -1;
|
|
static int hf_ff_fms_unsolicited_status_req_logical_status = -1;
|
|
static int hf_ff_fms_unsolicited_status_req_physical_status = -1;
|
|
static int hf_ff_fms_unsolicited_status_req_reserved = -1;
|
|
|
|
static gint ett_ff_fms_unsolicited_status_req = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.6. FMS Identify (Confirmed Service Id = 1)
|
|
*/
|
|
static int hf_ff_fms_id = -1;
|
|
|
|
static int hf_ff_fms_id_req = -1;
|
|
|
|
static int hf_ff_fms_id_rsp = -1;
|
|
static int hf_ff_fms_id_rsp_vendor_name = -1;
|
|
static int hf_ff_fms_id_rsp_model_name = -1;
|
|
static int hf_ff_fms_id_rsp_revision = -1;
|
|
|
|
static int hf_ff_fms_id_err = -1;
|
|
static int hf_ff_fms_id_err_err_class = -1;
|
|
static int hf_ff_fms_id_err_err_code = -1;
|
|
static int hf_ff_fms_id_err_additional_code = -1;
|
|
static int hf_ff_fms_id_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_id_req = -1;
|
|
static gint ett_ff_fms_id_rsp = -1;
|
|
static gint ett_ff_fms_id_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.7. FMS Get OD (Confirmed Service Id = 4)
|
|
*/
|
|
static int hf_ff_fms_get_od = -1;
|
|
|
|
static int hf_ff_fms_get_od_req = -1;
|
|
static int hf_ff_fms_get_od_req_all_attrs = -1;
|
|
static int hf_ff_fms_get_od_req_start_idx_flag = -1;
|
|
static int hf_ff_fms_get_od_req_reserved = -1;
|
|
static int hf_ff_fms_get_od_req_idx = -1;
|
|
|
|
static int hf_ff_fms_get_od_rsp = -1;
|
|
static int hf_ff_fms_get_od_rsp_more_follows = -1;
|
|
static int hf_ff_fms_get_od_rsp_num_of_obj_desc = -1;
|
|
static int hf_ff_fms_get_od_rsp_reserved = -1;
|
|
|
|
static int hf_ff_fms_get_od_err = -1;
|
|
static int hf_ff_fms_get_od_err_err_class = -1;
|
|
static int hf_ff_fms_get_od_err_err_code = -1;
|
|
static int hf_ff_fms_get_od_err_additional_code = -1;
|
|
static int hf_ff_fms_get_od_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_get_od_req = -1;
|
|
static gint ett_ff_fms_get_od_rsp = -1;
|
|
static gint ett_ff_fms_get_od_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.8. FMS Initiate Put OD (Confirmed Service Id = 28)
|
|
*/
|
|
static int hf_ff_fms_init_put_od = -1;
|
|
|
|
static int hf_ff_fms_init_put_od_req = -1;
|
|
static int hf_ff_fms_init_put_od_req_reserved = -1;
|
|
static int hf_ff_fms_init_put_od_req_consequence = -1;
|
|
|
|
static int hf_ff_fms_init_put_od_rsp = -1;
|
|
|
|
static int hf_ff_fms_init_put_od_err = -1;
|
|
static int hf_ff_fms_init_put_od_err_err_class = -1;
|
|
static int hf_ff_fms_init_put_od_err_err_code = -1;
|
|
static int hf_ff_fms_init_put_od_err_additional_code = -1;
|
|
static int hf_ff_fms_init_put_od_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_init_put_od_req = -1;
|
|
static gint ett_ff_fms_init_put_od_rsp = -1;
|
|
static gint ett_ff_fms_init_put_od_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.9. FMS Put OD (Confirmed Service Id = 29)
|
|
*/
|
|
static int hf_ff_fms_put_od = -1;
|
|
|
|
static int hf_ff_fms_put_od_req = -1;
|
|
static int hf_ff_fms_put_od_req_num_of_obj_desc = -1;
|
|
|
|
static int hf_ff_fms_put_od_rsp = -1;
|
|
|
|
static int hf_ff_fms_put_od_err = -1;
|
|
static int hf_ff_fms_put_od_err_err_class = -1;
|
|
static int hf_ff_fms_put_od_err_err_code = -1;
|
|
static int hf_ff_fms_put_od_err_additional_code = -1;
|
|
static int hf_ff_fms_put_od_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_put_od_req = -1;
|
|
static gint ett_ff_fms_put_od_rsp = -1;
|
|
static gint ett_ff_fms_put_od_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.10. FMS Terminate Put OD (Confirmed Service Id = 30)
|
|
*/
|
|
static int hf_ff_fms_terminate_put_od = -1;
|
|
|
|
static int hf_ff_fms_terminate_put_od_req = -1;
|
|
|
|
static int hf_ff_fms_terminate_put_od_rsp = -1;
|
|
|
|
static int hf_ff_fms_terminate_put_od_err = -1;
|
|
static int hf_ff_fms_terminate_put_od_err_index = -1;
|
|
static int hf_ff_fms_terminate_put_od_err_err_class = -1;
|
|
static int hf_ff_fms_terminate_put_od_err_err_code = -1;
|
|
static int hf_ff_fms_terminate_put_od_err_additional_code = -1;
|
|
static int hf_ff_fms_terminate_put_od_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_terminate_put_od_req = -1;
|
|
static gint ett_ff_fms_terminate_put_od_rsp = -1;
|
|
static gint ett_ff_fms_terminate_put_od_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.11. FMS Generic Initiate Download Sequence (Confirmed Service Id = 31)
|
|
*/
|
|
static int hf_ff_fms_gen_init_download_seq = -1;
|
|
|
|
static int hf_ff_fms_gen_init_download_seq_req = -1;
|
|
static int hf_ff_fms_gen_init_download_seq_req_idx = -1;
|
|
|
|
static int hf_ff_fms_gen_init_download_seq_rsp = -1;
|
|
|
|
static int hf_ff_fms_gen_init_download_seq_err = -1;
|
|
static int hf_ff_fms_gen_init_download_seq_err_err_class = -1;
|
|
static int hf_ff_fms_gen_init_download_seq_err_err_code = -1;
|
|
static int hf_ff_fms_gen_init_download_seq_err_additional_code = -1;
|
|
static int hf_ff_fms_gen_init_download_seq_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_gen_init_download_seq_req = -1;
|
|
static gint ett_ff_fms_gen_init_download_seq_rep = -1;
|
|
static gint ett_ff_fms_gen_init_download_seq_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.12. FMS Generic Download Segment (Confirmed Service Id = 32)
|
|
*/
|
|
static int hf_ff_fms_gen_download_seg = -1;
|
|
|
|
static int hf_ff_fms_gen_download_seg_req = -1;
|
|
static int hf_ff_fms_gen_download_seg_req_idx = -1;
|
|
static int hf_ff_fms_gen_download_seg_req_more_follows = -1;
|
|
|
|
static int hf_ff_fms_gen_download_seg_rsp = -1;
|
|
|
|
static int hf_ff_fms_gen_download_seg_err = -1;
|
|
static int hf_ff_fms_gen_download_seg_err_err_class = -1;
|
|
static int hf_ff_fms_gen_download_seg_err_err_code = -1;
|
|
static int hf_ff_fms_gen_download_seg_err_additional_code = -1;
|
|
static int hf_ff_fms_gen_download_seg_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_gen_download_seg_req = -1;
|
|
static gint ett_ff_fms_gen_download_seg_rsp = -1;
|
|
static gint ett_ff_fms_gen_download_seg_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.13. FMS Generic Terminate Download Sequence (Confirmed Service Id = 33)
|
|
*/
|
|
static int hf_ff_fms_gen_terminate_download_seq = -1;
|
|
|
|
static int hf_ff_fms_gen_terminate_download_seq_req = -1;
|
|
static int hf_ff_fms_gen_terminate_download_seq_req_idx = -1;
|
|
|
|
static int hf_ff_fms_gen_terminate_download_seq_rsp = -1;
|
|
static int hf_ff_fms_gen_terminate_download_seq_rsp_final_result = -1;
|
|
|
|
static int hf_ff_fms_gen_terminate_download_seq_err = -1;
|
|
static int hf_ff_fms_gen_terminate_download_seq_err_err_class = -1;
|
|
static int hf_ff_fms_gen_terminate_download_seq_err_err_code = -1;
|
|
static int hf_ff_fms_gen_terminate_download_seq_err_additional_code = -1;
|
|
static int hf_ff_fms_gen_terminate_download_seq_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_gen_terminate_download_seq_req = -1;
|
|
static gint ett_ff_fms_gen_terminate_download_seq_rsp = -1;
|
|
static gint ett_ff_fms_gen_terminate_download_seq_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.14. FMS Initiate Download Sequence (Confirmed Service Id = 9)
|
|
*/
|
|
static int hf_ff_fms_init_download_seq = -1;
|
|
|
|
static int hf_ff_fms_init_download_seq_req = -1;
|
|
static int hf_ff_fms_init_download_seq_req_idx = -1;
|
|
|
|
static int hf_ff_fms_init_download_seq_rsp = -1;
|
|
|
|
static int hf_ff_fms_init_download_seq_err = -1;
|
|
static int hf_ff_fms_init_download_seq_err_err_class = -1;
|
|
static int hf_ff_fms_init_download_seq_err_err_code = -1;
|
|
static int hf_ff_fms_init_download_seq_err_additional_code = -1;
|
|
static int hf_ff_fms_init_download_seq_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_init_download_seq_req = -1;
|
|
static gint ett_ff_fms_init_download_seq_rsp = -1;
|
|
static gint ett_ff_fms_init_download_seq_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.15. FMS Download Segment (Confirmed Service Id = 10)
|
|
*/
|
|
static int hf_ff_fms_download_seg = -1;
|
|
static int hf_ff_fms_download_seg_req = -1;
|
|
static int hf_ff_fms_download_seg_req_idx = -1;
|
|
|
|
static int hf_ff_fms_download_seg_rsp = -1;
|
|
static int hf_ff_fms_download_seg_rsp_more_follows = -1;
|
|
|
|
static int hf_ff_fms_download_seg_err = -1;
|
|
static int hf_ff_fms_download_seg_err_err_class = -1;
|
|
static int hf_ff_fms_download_seg_err_err_code = -1;
|
|
static int hf_ff_fms_download_seg_err_additional_code = -1;
|
|
static int hf_ff_fms_download_seg_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_download_seg_req = -1;
|
|
static gint ett_ff_fms_download_seg_rsp = -1;
|
|
static gint ett_ff_fms_download_seg_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.16. FMS Terminate Download Sequence (Confirmed Service Id = 11)
|
|
*/
|
|
static int hf_ff_fms_terminate_download_seq = -1;
|
|
|
|
static int hf_ff_fms_terminate_download_seq_req = -1;
|
|
static int hf_ff_fms_terminate_download_seq_req_idx = -1;
|
|
static int hf_ff_fms_terminate_download_seq_req_final_result = -1;
|
|
|
|
static int hf_ff_fms_terminate_download_seq_rsp = -1;
|
|
|
|
static int hf_ff_fms_terminate_download_seq_err = -1;
|
|
static int hf_ff_fms_terminate_download_seq_err_err_class = -1;
|
|
static int hf_ff_fms_terminate_download_seq_err_err_code = -1;
|
|
static int hf_ff_fms_terminate_download_seq_err_additional_code = -1;
|
|
static int hf_ff_fms_terminate_download_seq_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_terminate_download_seq_req = -1;
|
|
static gint ett_ff_fms_terminate_download_seq_rsp = -1;
|
|
static gint ett_ff_fms_terminate_download_seq_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.17. FMS Initiate Upload Sequence (Confirmed Service Id = 12)
|
|
*/
|
|
static int hf_ff_fms_init_upload_seq = -1;
|
|
|
|
static int hf_ff_fms_init_upload_seq_req = -1;
|
|
static int hf_ff_fms_init_upload_seq_req_idx = -1;
|
|
|
|
static int hf_ff_fms_init_upload_seq_rsp = -1;
|
|
|
|
static int hf_ff_fms_init_upload_seq_err = -1;
|
|
static int hf_ff_fms_init_upload_seq_err_err_class = -1;
|
|
static int hf_ff_fms_init_upload_seq_err_err_code = -1;
|
|
static int hf_ff_fms_init_upload_seq_err_additional_code = -1;
|
|
static int hf_ff_fms_init_upload_seq_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_init_upload_seq_req = -1;
|
|
static gint ett_ff_fms_init_upload_seq_rsp = -1;
|
|
static gint ett_ff_fms_init_upload_seq_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.18. FMS Upload Segment (Confirmed Service Id = 13)
|
|
*/
|
|
static int hf_ff_fms_upload_seg = -1;
|
|
|
|
static int hf_ff_fms_upload_seg_req = -1;
|
|
static int hf_ff_fms_upload_seg_req_idx = -1;
|
|
|
|
static int hf_ff_fms_upload_seg_rsp = -1;
|
|
static int hf_ff_fms_upload_seg_rsp_more_follows = -1;
|
|
|
|
static int hf_ff_fms_upload_seg_err = -1;
|
|
static int hf_ff_fms_upload_seg_err_err_class = -1;
|
|
static int hf_ff_fms_upload_seg_err_err_code = -1;
|
|
static int hf_ff_fms_upload_seg_err_additional_code = -1;
|
|
static int hf_ff_fms_upload_seg_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_upload_seg_req = -1;
|
|
static gint ett_ff_fms_upload_seg_rsp = -1;
|
|
static gint ett_ff_fms_upload_seg_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.19. FMS Terminate Upload Sequence (Confirmed Service Id = 14)
|
|
*/
|
|
static int hf_ff_fms_terminate_upload_seq = -1;
|
|
|
|
static int hf_ff_fms_terminate_upload_seq_req = -1;
|
|
static int hf_ff_fms_terminate_upload_seq_req_idx = -1;
|
|
|
|
static int hf_ff_fms_terminate_upload_seq_rsp = -1;
|
|
|
|
static int hf_ff_fms_terminate_upload_seq_err = -1;
|
|
static int hf_ff_fms_terminate_upload_seq_err_err_class = -1;
|
|
static int hf_ff_fms_terminate_upload_seq_err_err_code = -1;
|
|
static int hf_ff_fms_terminate_upload_seq_err_additional_code = -1;
|
|
static int hf_ff_fms_terminate_upload_seq_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_terminate_upload_seq_req = -1;
|
|
static gint ett_ff_fms_terminate_upload_seq_rsp = -1;
|
|
static gint ett_ff_fms_terminate_upload_seq_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.20. FMS Request Domain Download (Confirmed Service Id = 15)
|
|
*/
|
|
static int hf_ff_fms_req_dom_download = -1;
|
|
|
|
static int hf_ff_fms_req_dom_download_req = -1;
|
|
static int hf_ff_fms_req_dom_download_req_idx = -1;
|
|
static int hf_ff_fms_req_dom_download_req_additional_info = -1;
|
|
|
|
static int hf_ff_fms_req_dom_download_rsp = -1;
|
|
|
|
static int hf_ff_fms_req_dom_download_err = -1;
|
|
static int hf_ff_fms_req_dom_download_err_err_class = -1;
|
|
static int hf_ff_fms_req_dom_download_err_err_code = -1;
|
|
static int hf_ff_fms_req_dom_download_err_additional_code = -1;
|
|
static int hf_ff_fms_req_dom_download_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_req_dom_download_req = -1;
|
|
static gint ett_ff_fms_req_dom_download_rsp = -1;
|
|
static gint ett_ff_fms_req_dom_download_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.21. FMS Request Domain Upload (Confirmed Service Id = 16)
|
|
*/
|
|
static int hf_ff_fms_req_dom_upload = -1;
|
|
|
|
static int hf_ff_fms_req_dom_upload_req = -1;
|
|
static int hf_ff_fms_req_dom_upload_req_idx = -1;
|
|
static int hf_ff_fms_req_dom_upload_req_additional_info = -1;
|
|
|
|
static int hf_ff_fms_req_dom_upload_rsp = -1;
|
|
|
|
static int hf_ff_fms_req_dom_upload_err = -1;
|
|
static int hf_ff_fms_req_dom_upload_err_err_class = -1;
|
|
static int hf_ff_fms_req_dom_upload_err_err_code = -1;
|
|
static int hf_ff_fms_req_dom_upload_err_additional_code = -1;
|
|
static int hf_ff_fms_req_dom_upload_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_req_dom_upload_req = -1;
|
|
static gint ett_ff_fms_req_dom_upload_rsp = -1;
|
|
static gint ett_ff_fms_req_dom_upload_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.22. FMS Create Program Invocation (Confirmed Service Id = 17)
|
|
*/
|
|
static int hf_ff_fms_create_pi = -1;
|
|
|
|
static int hf_ff_fms_create_pi_req = -1;
|
|
static int hf_ff_fms_create_pi_req_reusable = -1;
|
|
static int hf_ff_fms_create_pi_req_reserved = -1;
|
|
static int hf_ff_fms_create_pi_req_num_of_dom_idxes = -1;
|
|
static int hf_ff_fms_create_pi_req_dom_idx = -1;
|
|
|
|
static int hf_ff_fms_create_pi_rsp = -1;
|
|
static int hf_ff_fms_create_pi_rsp_idx = -1;
|
|
|
|
static int hf_ff_fms_create_pi_err = -1;
|
|
static int hf_ff_fms_create_pi_err_err_class = -1;
|
|
static int hf_ff_fms_create_pi_err_err_code = -1;
|
|
static int hf_ff_fms_create_pi_err_additional_code = -1;
|
|
static int hf_ff_fms_create_pi_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_create_pi_req = -1;
|
|
static gint ett_ff_fms_create_pi_req_list_of_dom_idxes = -1;
|
|
static gint ett_ff_fms_create_pi_rsp = -1;
|
|
static gint ett_ff_fms_create_pi_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.23. FMS Delete Program Invocation (Confirmed Service Id = 18)
|
|
*/
|
|
static int hf_ff_fms_del_pi = -1;
|
|
static int hf_ff_fms_del_pi_req = -1;
|
|
static int hf_ff_fms_del_pi_req_idx = -1;
|
|
|
|
static int hf_ff_fms_del_pi_rsp = -1;
|
|
|
|
static int hf_ff_fms_del_pi_err = -1;
|
|
static int hf_ff_fms_del_pi_err_err_class = -1;
|
|
static int hf_ff_fms_del_pi_err_err_code = -1;
|
|
static int hf_ff_fms_del_pi_err_additional_code = -1;
|
|
static int hf_ff_fms_del_pi_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_del_pi_req = -1;
|
|
static gint ett_ff_fms_del_pi_rsp = -1;
|
|
static gint ett_ff_fms_del_pi_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.24. FMS Start (Confirmed Service Id = 19)
|
|
*/
|
|
static int hf_ff_fms_start = -1;
|
|
static int hf_ff_fms_start_req = -1;
|
|
static int hf_ff_fms_start_req_idx = -1;
|
|
|
|
static int hf_ff_fms_start_rsp = -1;
|
|
|
|
static int hf_ff_fms_start_err = -1;
|
|
static int hf_ff_fms_start_err_pi_state = -1;
|
|
static int hf_ff_fms_start_err_err_class = -1;
|
|
static int hf_ff_fms_start_err_err_code = -1;
|
|
static int hf_ff_fms_start_err_additional_code = -1;
|
|
static int hf_ff_fms_start_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_start_req = -1;
|
|
static gint ett_ff_fms_start_rsp = -1;
|
|
static gint ett_ff_fms_start_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.25. FMS Stop (Confirmed Service Id = 20)
|
|
*/
|
|
static int hf_ff_fms_stop = -1;
|
|
|
|
static int hf_ff_fms_stop_req = -1;
|
|
static int hf_ff_fms_stop_req_idx = -1;
|
|
|
|
static int hf_ff_fms_stop_rsp = -1;
|
|
|
|
static int hf_ff_fms_stop_err = -1;
|
|
static int hf_ff_fms_stop_err_pi_state = -1;
|
|
static int hf_ff_fms_stop_err_err_class = -1;
|
|
static int hf_ff_fms_stop_err_err_code = -1;
|
|
static int hf_ff_fms_stop_err_additional_code = -1;
|
|
static int hf_ff_fms_stop_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_stop_req = -1;
|
|
static gint ett_ff_fms_stop_rsp = -1;
|
|
static gint ett_ff_fms_stop_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.26. FMS Resume (Confirmed Service Id = 21)
|
|
*/
|
|
static int hf_ff_fms_resume = -1;
|
|
static int hf_ff_fms_resume_req = -1;
|
|
static int hf_ff_fms_resume_req_idx = -1;
|
|
|
|
static int hf_ff_fms_resume_rsp = -1;
|
|
|
|
static int hf_ff_fms_resume_err = -1;
|
|
static int hf_ff_fms_resume_err_pi_state = -1;
|
|
static int hf_ff_fms_resume_err_err_class = -1;
|
|
static int hf_ff_fms_resume_err_err_code = -1;
|
|
static int hf_ff_fms_resume_err_additional_code = -1;
|
|
static int hf_ff_fms_resume_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_resume_req = -1;
|
|
static gint ett_ff_fms_resume_rsp = -1;
|
|
static gint ett_ff_fms_resume_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.27. FMS Reset (Confirmed Service Id = 22)
|
|
*/
|
|
static int hf_ff_fms_reset = -1;
|
|
static int hf_ff_fms_reset_req = -1;
|
|
static int hf_ff_fms_reset_req_idx = -1;
|
|
|
|
static int hf_ff_fms_reset_rsp = -1;
|
|
|
|
static int hf_ff_fms_reset_err = -1;
|
|
static int hf_ff_fms_reset_err_pi_state = -1;
|
|
static int hf_ff_fms_reset_err_err_class = -1;
|
|
static int hf_ff_fms_reset_err_err_code = -1;
|
|
static int hf_ff_fms_reset_err_additional_code = -1;
|
|
static int hf_ff_fms_reset_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_reset_req = -1;
|
|
static gint ett_ff_fms_reset_rsp = -1;
|
|
static gint ett_ff_fms_reset_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.28. FMS Kill (Confirmed Service Id = 23)
|
|
*/
|
|
static int hf_ff_fms_kill = -1;
|
|
static int hf_ff_fms_kill_req = -1;
|
|
static int hf_ff_fms_kill_req_idx = -1;
|
|
|
|
static int hf_ff_fms_kill_rsp = -1;
|
|
|
|
static int hf_ff_fms_kill_err = -1;
|
|
static int hf_ff_fms_kill_err_err_class = -1;
|
|
static int hf_ff_fms_kill_err_err_code = -1;
|
|
static int hf_ff_fms_kill_err_additional_code = -1;
|
|
static int hf_ff_fms_kill_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_kill_req = -1;
|
|
static gint ett_ff_fms_kill_rsp = -1;
|
|
static gint ett_ff_fms_kill_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.29. FMS Read (Confirmed Service Id = 2)
|
|
*/
|
|
static int hf_ff_fms_read = -1;
|
|
|
|
static int hf_ff_fms_read_req = -1;
|
|
static int hf_ff_fms_read_req_idx = -1;
|
|
|
|
static int hf_ff_fms_read_rsp = -1;
|
|
|
|
static int hf_ff_fms_read_err = -1;
|
|
static int hf_ff_fms_read_err_err_class = -1;
|
|
static int hf_ff_fms_read_err_err_code = -1;
|
|
static int hf_ff_fms_read_err_additional_code = -1;
|
|
static int hf_ff_fms_read_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_read_req = -1;
|
|
static gint ett_ff_fms_read_rsp = -1;
|
|
static gint ett_ff_fms_read_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.30. FMS Read with Subindex (Confirmed Service Id = 82)
|
|
*/
|
|
static int hf_ff_fms_read_with_subidx = -1;
|
|
|
|
static int hf_ff_fms_read_with_subidx_req = -1;
|
|
static int hf_ff_fms_read_with_subidx_req_idx = -1;
|
|
static int hf_ff_fms_read_with_subidx_req_subidx = -1;
|
|
|
|
static int hf_ff_fms_read_with_subidx_rsp = -1;
|
|
|
|
static int hf_ff_fms_read_with_subidx_err = -1;
|
|
static int hf_ff_fms_read_with_subidx_err_err_class = -1;
|
|
static int hf_ff_fms_read_with_subidx_err_err_code = -1;
|
|
static int hf_ff_fms_read_with_subidx_err_additional_code = -1;
|
|
static int hf_ff_fms_read_with_subidx_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_read_with_subidx_req = -1;
|
|
static gint ett_ff_fms_read_with_subidx_rsp = -1;
|
|
static gint ett_ff_fms_read_with_subidx_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.31. FMS Write (Confirmed Service Id = 3)
|
|
*/
|
|
static int hf_ff_fms_write = -1;
|
|
static int hf_ff_fms_write_req = -1;
|
|
static int hf_ff_fms_write_req_idx = -1;
|
|
|
|
static int hf_ff_fms_write_rsp = -1;
|
|
|
|
static int hf_ff_fms_write_err = -1;
|
|
static int hf_ff_fms_write_err_err_class = -1;
|
|
static int hf_ff_fms_write_err_err_code = -1;
|
|
static int hf_ff_fms_write_err_additional_code = -1;
|
|
static int hf_ff_fms_write_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_write_req = -1;
|
|
static gint ett_ff_fms_write_rsp = -1;
|
|
static gint ett_ff_fms_write_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.32. FMS Write with Subindex (Confirmed Service Id = 83)
|
|
*/
|
|
static int hf_ff_fms_write_with_subidx = -1;
|
|
|
|
static int hf_ff_fms_write_with_subidx_req = -1;
|
|
static int hf_ff_fms_write_with_subidx_req_idx = -1;
|
|
static int hf_ff_fms_write_with_subidx_req_subidx = -1;
|
|
|
|
static int hf_ff_fms_write_with_subidx_rsp = -1;
|
|
|
|
static int hf_ff_fms_write_with_subidx_err = -1;
|
|
static int hf_ff_fms_write_with_subidx_err_err_class = -1;
|
|
static int hf_ff_fms_write_with_subidx_err_err_code = -1;
|
|
static int hf_ff_fms_write_with_subidx_err_additional_code = -1;
|
|
static int hf_ff_fms_write_with_subidx_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_write_with_subidx_req = -1;
|
|
static gint ett_ff_fms_write_with_subidx_rsp = -1;
|
|
static gint ett_ff_fms_write_with_subidx_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.33. FMS Define Variable List (Confirmed Service Id = 7)
|
|
*/
|
|
static int hf_ff_fms_def_variable_list = -1;
|
|
|
|
static int hf_ff_fms_def_variable_list_req = -1;
|
|
static int hf_ff_fms_def_variable_list_req_num_of_idxes = -1;
|
|
static int hf_ff_fms_def_variable_list_req_idx = -1;
|
|
|
|
static int hf_ff_fms_def_variable_list_rsp = -1;
|
|
static int hf_ff_fms_def_variable_list_rsp_idx = -1;
|
|
|
|
static int hf_ff_fms_def_variable_list_err = -1;
|
|
static int hf_ff_fms_def_variable_list_err_err_class = -1;
|
|
static int hf_ff_fms_def_variable_list_err_err_code = -1;
|
|
static int hf_ff_fms_def_variable_list_err_additional_code = -1;
|
|
static int hf_ff_fms_def_variable_list_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_def_variable_list_req = -1;
|
|
static gint ett_ff_fms_def_variable_list_req_list_of_idxes = -1;
|
|
static gint ett_ff_fms_def_variable_list_rsp = -1;
|
|
static gint ett_ff_fms_def_variable_list_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.34. FMS Delete Variable List (Confirmed Service Id = 8)
|
|
*/
|
|
static int hf_ff_fms_del_variable_list = -1;
|
|
|
|
static int hf_ff_fms_del_variable_list_req = -1;
|
|
static int hf_ff_fms_del_variable_list_req_idx = -1;
|
|
|
|
static int hf_ff_fms_del_variable_list_rsp = -1;
|
|
|
|
static int hf_ff_fms_del_variable_list_err = -1;
|
|
static int hf_ff_fms_del_variable_list_err_err_class = -1;
|
|
static int hf_ff_fms_del_variable_list_err_err_code = -1;
|
|
static int hf_ff_fms_del_variable_list_err_additional_code = -1;
|
|
static int hf_ff_fms_del_variable_list_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_del_variable_list_req = -1;
|
|
static gint ett_ff_fms_del_variable_list_rsp = -1;
|
|
static gint ett_ff_fms_del_variable_list_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.35. FMS Information Report (Unconfirmed Service Id = 0)
|
|
*/
|
|
static int hf_ff_fms_info_report = -1;
|
|
|
|
static int hf_ff_fms_info_report_req = -1;
|
|
static int hf_ff_fms_info_report_req_idx = -1;
|
|
|
|
static gint ett_ff_fms_info_report_req = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.36. FMS Information Report with Subindex (Unconfirmed Service Id = 16)
|
|
*/
|
|
static int hf_ff_fms_info_report_with_subidx = -1;
|
|
|
|
static int hf_ff_fms_info_report_with_subidx_req = -1;
|
|
static int hf_ff_fms_info_report_with_subidx_req_idx = -1;
|
|
static int hf_ff_fms_info_report_with_subidx_req_subidx = -1;
|
|
|
|
static gint ett_ff_fms_info_report_with_subidx_req = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.37. FMS Information Report On Change (Unconfirmed Service Id = 17)
|
|
*/
|
|
static int hf_ff_fms_info_report_on_change = -1;
|
|
|
|
static int hf_ff_fms_info_report_on_change_req = -1;
|
|
static int hf_ff_fms_info_report_on_change_req_idx = -1;
|
|
|
|
static gint ett_ff_fms_info_report_on_change_req = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.38. FMS Information Report On Change with Subindex
|
|
* (Unconfirmed Service Id = 18)
|
|
*/
|
|
static int hf_ff_fms_info_report_on_change_with_subidx = -1;
|
|
|
|
static int hf_ff_fms_info_report_on_change_with_subidx_req = -1;
|
|
static int hf_ff_fms_info_report_on_change_with_subidx_req_idx = -1;
|
|
static int hf_ff_fms_info_report_on_change_with_subidx_req_subidx = -1;
|
|
|
|
static gint ett_ff_fms_info_report_on_change_with_subidx_req = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.39. FMS Event Notification (Unconfirmed Service Id = 2)
|
|
*/
|
|
static int hf_ff_fms_ev_notification = -1;
|
|
|
|
static int hf_ff_fms_ev_notification_req = -1;
|
|
static int hf_ff_fms_ev_notification_req_idx = -1;
|
|
static int hf_ff_fms_ev_notification_req_ev_num = -1;
|
|
|
|
static gint ett_ff_fms_ev_notification_req = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.40. FMS Alter Event Condition Monitoring (Confirmed Service Id = 24)
|
|
*/
|
|
static int hf_ff_fms_alter_ev_condition_monitoring = -1;
|
|
|
|
static int hf_ff_fms_alter_ev_condition_monitoring_req = -1;
|
|
static int hf_ff_fms_alter_ev_condition_monitoring_req_idx = -1;
|
|
static int hf_ff_fms_alter_ev_condition_monitoring_req_enabled = -1;
|
|
|
|
static int hf_ff_fms_alter_ev_condition_monitoring_rsp = -1;
|
|
|
|
static int hf_ff_fms_alter_ev_condition_monitoring_err = -1;
|
|
static int hf_ff_fms_alter_ev_condition_monitoring_err_err_class = -1;
|
|
static int hf_ff_fms_alter_ev_condition_monitoring_err_err_code = -1;
|
|
static int hf_ff_fms_alter_ev_condition_monitoring_err_additional_code = -1;
|
|
static int hf_ff_fms_alter_ev_condition_monitoring_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_alter_ev_condition_monitoring_req = -1;
|
|
static gint ett_ff_fms_alter_ev_condition_monitoring_rsp = -1;
|
|
static gint ett_ff_fms_alter_ev_condition_monitoring_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.41. FMS Acknowledge Event Notification (Confirmed Service Id = 25)
|
|
*/
|
|
static int hf_ff_fms_ack_ev_notification = -1;
|
|
|
|
static int hf_ff_fms_ack_ev_notification_req = -1;
|
|
static int hf_ff_fms_ack_ev_notification_req_idx = -1;
|
|
static int hf_ff_fms_ack_ev_notification_req_ev_num = -1;
|
|
|
|
static int hf_ff_fms_ack_ev_notification_rsp = -1;
|
|
|
|
static int hf_ff_fms_ack_ev_notification_err = -1;
|
|
static int hf_ff_fms_ack_ev_notification_err_err_class = -1;
|
|
static int hf_ff_fms_ack_ev_notification_err_err_code = -1;
|
|
static int hf_ff_fms_ack_ev_notification_err_additional_code = -1;
|
|
static int hf_ff_fms_ack_ev_notification_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_fms_ack_ev_notification_req = -1;
|
|
static gint ett_ff_fms_ack_ev_notification_rsp = -1;
|
|
static gint ett_ff_fms_ack_ev_notification_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4. LAN Redundancy Services
|
|
*/
|
|
static int hf_ff_lr = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.1. LAN Redundancy Get Information (Confirmed Service Id = 1)
|
|
*/
|
|
static int hf_ff_lr_get_info = -1;
|
|
|
|
static int hf_ff_lr_get_info_req = -1;
|
|
|
|
static int hf_ff_lr_get_info_rsp = -1;
|
|
static int hf_ff_lr_get_info_rsp_lr_attrs_ver = -1;
|
|
static int hf_ff_lr_get_info_rsp_lr_max_msg_num_diff = -1;
|
|
static int hf_ff_lr_get_info_rsp_reserved = -1;
|
|
static int hf_ff_lr_get_info_rsp_diagnostic_msg_intvl = -1;
|
|
static int hf_ff_lr_get_info_rsp_aging_time = -1;
|
|
static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_send_addr = -1;
|
|
static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_recv_addr = -1;
|
|
static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_send_addr = -1;
|
|
static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_recv_addr = -1;
|
|
static int hf_ff_lr_get_info_rsp_lr_flags_reserved = -1;
|
|
static int hf_ff_lr_get_info_rsp_lr_flags_load_balance = -1;
|
|
static int hf_ff_lr_get_info_rsp_lr_flags_diag = -1;
|
|
static int hf_ff_lr_get_info_rsp_lr_flags_multi_recv = -1;
|
|
static int hf_ff_lr_get_info_rsp_lr_flags_cross_cable = -1;
|
|
static int hf_ff_lr_get_info_rsp_lr_flags_multi_trans = -1;
|
|
|
|
static int hf_ff_lr_get_info_err = -1;
|
|
static int hf_ff_lr_get_info_err_err_class = -1;
|
|
static int hf_ff_lr_get_info_err_err_code = -1;
|
|
static int hf_ff_lr_get_info_err_additional_code = -1;
|
|
static int hf_ff_lr_get_info_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_lr_get_info_req = -1;
|
|
static gint ett_ff_lr_get_info_rsp = -1;
|
|
static gint ett_ff_lr_get_info_rsp_lr_flags = -1;
|
|
static gint ett_ff_lr_get_info_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.2. LAN Redundancy Put Information (Confirmed Service Id = 2)
|
|
*/
|
|
static int hf_ff_lr_put_info = -1;
|
|
|
|
static int hf_ff_lr_put_info_req = -1;
|
|
static int hf_ff_lr_put_info_req_lr_attrs_ver = -1;
|
|
static int hf_ff_lr_put_info_req_lr_max_msg_num_diff = -1;
|
|
static int hf_ff_lr_put_info_req_reserved = -1;
|
|
static int hf_ff_lr_put_info_req_diagnostic_msg_intvl = -1;
|
|
static int hf_ff_lr_put_info_req_aging_time = -1;
|
|
static int hf_ff_lr_put_info_req_diagnostic_msg_if_a_send_addr = -1;
|
|
static int hf_ff_lr_put_info_req_diagnostic_msg_if_a_recv_addr = -1;
|
|
static int hf_ff_lr_put_info_req_diagnostic_msg_if_b_send_addr = -1;
|
|
static int hf_ff_lr_put_info_req_diagnostic_msg_if_b_recv_addr = -1;
|
|
static int hf_ff_lr_put_info_req_lr_flags_reserved = -1;
|
|
static int hf_ff_lr_put_info_req_lr_flags_load_balance = -1;
|
|
static int hf_ff_lr_put_info_req_lr_flags_diag = -1;
|
|
static int hf_ff_lr_put_info_req_lr_flags_multi_recv = -1;
|
|
static int hf_ff_lr_put_info_req_lr_flags_cross_cable = -1;
|
|
static int hf_ff_lr_put_info_req_lr_flags_multi_trans = -1;
|
|
|
|
static int hf_ff_lr_put_info_rsp = -1;
|
|
static int hf_ff_lr_put_info_rsp_lr_attrs_ver = -1;
|
|
static int hf_ff_lr_put_info_rsp_lr_max_msg_num_diff = -1;
|
|
static int hf_ff_lr_put_info_rsp_reserved = -1;
|
|
static int hf_ff_lr_put_info_rsp_diagnostic_msg_intvl = -1;
|
|
static int hf_ff_lr_put_info_rsp_aging_time = -1;
|
|
static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_send_addr = -1;
|
|
static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_recv_addr = -1;
|
|
static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_send_addr = -1;
|
|
static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_recv_addr = -1;
|
|
static int hf_ff_lr_put_info_rsp_lr_flags_reserved = -1;
|
|
static int hf_ff_lr_put_info_rsp_lr_flags_load_balance = -1;
|
|
static int hf_ff_lr_put_info_rsp_lr_flags_diag = -1;
|
|
static int hf_ff_lr_put_info_rsp_lr_flags_multi_recv = -1;
|
|
static int hf_ff_lr_put_info_rsp_lr_flags_cross_cable = -1;
|
|
static int hf_ff_lr_put_info_rsp_lr_flags_multi_trans = -1;
|
|
|
|
static int hf_ff_lr_put_info_err = -1;
|
|
static int hf_ff_lr_put_info_err_err_class = -1;
|
|
static int hf_ff_lr_put_info_err_err_code = -1;
|
|
static int hf_ff_lr_put_info_err_additional_code = -1;
|
|
static int hf_ff_lr_put_info_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_lr_put_info_req = -1;
|
|
static gint ett_ff_lr_put_info_req_lr_flags = -1;
|
|
static gint ett_ff_lr_put_info_rsp = -1;
|
|
static gint ett_ff_lr_put_info_rsp_lr_flags = -1;
|
|
static gint ett_ff_lr_put_info_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.3. LAN Redundancy Get Statistics (Confirmed Service Id = 3)
|
|
*/
|
|
static int hf_ff_lr_get_statistics = -1;
|
|
|
|
static int hf_ff_lr_get_statistics_req = -1;
|
|
|
|
static int hf_ff_lr_get_statistics_rsp = -1;
|
|
static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_a = -1;
|
|
static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_a = -1;
|
|
static int hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_a = -1;
|
|
static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_b = -1;
|
|
static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_b = -1;
|
|
static int hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_b = -1;
|
|
static int hf_ff_lr_get_statistics_rsp_num_x_cable_stat = -1;
|
|
static int hf_ff_lr_get_statistics_rsp_x_cable_stat = -1;
|
|
|
|
static int hf_ff_lr_get_statistics_err = -1;
|
|
static int hf_ff_lr_get_statistics_err_err_class = -1;
|
|
static int hf_ff_lr_get_statistics_err_err_code = -1;
|
|
static int hf_ff_lr_get_statistics_err_additional_code = -1;
|
|
static int hf_ff_lr_get_statistics_err_additional_desc = -1;
|
|
|
|
static gint ett_ff_lr_get_statistics_req = -1;
|
|
static gint ett_ff_lr_get_statistics_rsp = -1;
|
|
static gint ett_ff_lr_get_statistics_rsp_list_of_x_cable_stat = -1;
|
|
static gint ett_ff_lr_get_statistics_err = -1;
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.4. Diagnostic Message (Unconfirmed Service Id = 1)
|
|
*/
|
|
static int hf_ff_lr_diagnostic_msg = -1;
|
|
|
|
static int hf_ff_lr_diagnostic_msg_req = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_dev_idx = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_num_of_network_ifs = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_transmission_if = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_diagnostic_msg_intvl = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_pd_tag = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_reserved = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_num_of_if_statuses = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_if_a_to_a_status = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_if_b_to_a_status = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_if_a_to_b_status = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_if_b_to_b_status = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_dup_detection_state_reserved = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_dup_detection_state_pd_tag = -1;
|
|
static int hf_ff_lr_diagnostic_msg_req_dup_detection_state_device = -1;
|
|
|
|
static gint ett_ff_lr_diagnostic_msg_req = -1;
|
|
static gint ett_ff_lr_diagnostic_msg_req_dup_detection_stat = -1;
|
|
static gint ett_ff_lr_diagnostic_msg_req_a_to_a_status = -1;
|
|
static gint ett_ff_lr_diagnostic_msg_req_b_to_a_status = -1;
|
|
static gint ett_ff_lr_diagnostic_msg_req_a_to_b_status = -1;
|
|
static gint ett_ff_lr_diagnostic_msg_req_b_to_b_status = -1;
|
|
|
|
|
|
|
|
#if 0
|
|
static const value_string names_pad_len[] = {
|
|
{ 0x00, "No padding" },
|
|
{ OPTION_PAD_4BYTE, "pad to 4 byte boundary" },
|
|
{ OPTION_PAD_8BYTE, "pad to 8 byte boundary" },
|
|
{ 0, NULL }
|
|
};
|
|
#endif
|
|
|
|
|
|
static const value_string names_proto[] = {
|
|
{ 0x00, "Unused"},
|
|
{ PROTOCOL_FDA, "FDA Session Management" },
|
|
{ PROTOCOL_SM, "SM" },
|
|
{ PROTOCOL_FMS, "FMS" },
|
|
{ PROTOCOL_LAN, "LAN Redundancy" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_type[] = {
|
|
{ TYPE_REQUEST, "Request Message" },
|
|
{ TYPE_RESPONSE, "Response Message" },
|
|
{ TYPE_ERROR, "Error Message" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_nma_conf_use[] = {
|
|
{ 0, "NMA Configuration Not Permitted" },
|
|
{ 1, "NMA Configuration Permitted" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_query_type[] = {
|
|
{ 0, "PD Tag query for primary device" },
|
|
{ 1, "VFD tag query" },
|
|
{ 2, "Function-Block tag query" },
|
|
{ 3, "Element Id query" },
|
|
{ 4, "PD Tag/VFD Reference query" },
|
|
{ 5, "Device Index query" },
|
|
{ 6, "PD Tag query for secondary or member of redundant set" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_smk_state[] = {
|
|
{ 0x02, "NO_TAG" }, /* 0000 0010 */
|
|
{ 0x04, "OPERATIONAL" }, /* 0000 0100 */
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_dev_type[] = {
|
|
{ 0x00, "Type D-1 Device" }, /* 0000 0000 */
|
|
{ 0x01, "Type D-2 Device" }, /* 0000 0001 */
|
|
{ 0x02, "Type D-3 Device" }, /* 0000 0010 */
|
|
{ 0x03, "Type D-3 and Type D-2 Device" }, /* 0000 0011 */
|
|
{ 0x04, "Not used" }, /* 0000 0100 */
|
|
{ 0x05, "Type D-2 and Type D-1 Device" }, /* 0000 0101 */
|
|
{ 0x06, "Type D-3 and Type D-1 Device" }, /* 0000 0110 */
|
|
{ 0x07, "Type D-3 and D-2 and Type D-1 Device" }, /* 0000 0111 */
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_dev_redundancy_role[] = {
|
|
{ 0x04, "Primary" }, /* 0000 0100 */
|
|
{ 0x08, "Secondary" }, /* 0000 1000 */
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_assigned_redundant_dev_type[] = {
|
|
{ 0x00, "Type D-1 Device" }, /* 0000 0000 */
|
|
{ 0x01, "Type D-2 Device" }, /* 0000 0001 */
|
|
{ 0x02, "Type D-3 Device" }, /* 0000 0010 */
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_type_d2_dev_redundancy_role[] = {
|
|
{ 0x00, "Not used" }, /* 0000 0000 */
|
|
{ 0x04, "Type D-2 Device Primary" }, /* 0000 0100 */
|
|
{ 0x08, "Type D-2 Device Secondary" }, /* 0000 1000 */
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_conn_opt[] = {
|
|
{ 1, "VCR Selector" },
|
|
{ 2, "NMA Access" },
|
|
{ 3, "FBAP Access" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_fda_unconfirmed[] = {
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_fda_confirmed[] = {
|
|
{ FDA_OPEN_SESSION, "FDA Open Session" },
|
|
{ FDA_IDLE, "FDA Idle" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_sm_unconfirmed[] = {
|
|
{ HSE_SM_FIND_TAG_QUERY, "SM Find Tag Query" },
|
|
{ HSE_SM_FIND_TAG_REPLY, "SM Find Tag Reply" },
|
|
{ HSE_SM_DEVICE_ANNUNCIATION, "SM Device Annunciation" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_sm_confirmed[] = {
|
|
{ HSE_SM_IDENTIFY, "SM Identify" },
|
|
{ HSE_SM_CLEAR_ADDRESS, "SM Clear Address" },
|
|
{ HSE_SM_SET_ASSIGNMENT, "SM Set Assignment Info" },
|
|
{ HSE_SM_CLEAR_ASSIGNMENT, "SM Clear Assignment Info" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_fms_unconfirmed[] = {
|
|
{ HSE_FMS_INFORMATION_REPORT, "FMS Information Report" },
|
|
{ HSE_FMS_UNSOLICITED_STATUS, "FMS Unsolicited Status" },
|
|
{ HSE_FMS_EVENT_NOTIFICATION, "FMS Event Notification" },
|
|
{ HSE_FMS_INFORMATION_REPORT_WITH_SUBINDEX,
|
|
"FMS Information Report with Subindex" },
|
|
{ HSE_FMS_INFORMATION_REPORT_ON_CHANGE,
|
|
"FMS Information Report On Change" },
|
|
{ HSE_FMS_INFORMATION_REPORT_ON_CHANGE_WITH_SUBINDEX,
|
|
"FMS Information Report On Change with Subindex" },
|
|
{ HSE_FMS_ABORT, "FMS Abort" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_fms_confirmed[] = {
|
|
{ HSE_FMS_STATUS, "FMS Status" },
|
|
{ HSE_FMS_IDENTIFY, "FMS Identify" },
|
|
{ HSE_FMS_READ, "FMS Read" },
|
|
{ HSE_FMS_WRITE, "FMS Write" },
|
|
{ HSE_FMS_GET_OD, "FMS Get OD" },
|
|
{ HSE_FMS_DEFINE_VARIABLE_LIST, "FMS Define Variable List" },
|
|
{ HSE_FMS_DELETE_VARIABLE_LIST, "FMS Delete Variable List" },
|
|
{ HSE_FMS_INITIATE_DOWNLOAD_SEQUENCE, "FMS Initiate Download Sequence" },
|
|
{ HSE_FMS_DOWNLOAD_SEGMENT, "FMS Download Segment" },
|
|
{ HSE_FMS_TERMINATE_DOWNLOAD_SEQUENCE, "FMS Terminate Download Sequence" },
|
|
{ HSE_FMS_INITIATE_UPLOAD_SEQUENCE, "FMS Initiate Upload Sequence" },
|
|
{ HSE_FMS_UPLOAD_SEGMENT, "FMS Upload Segment" },
|
|
{ HSE_FMS_TERMINATE_UPLOAD_SEQUENCE, "FMS Terminate Upload Sequence" },
|
|
{ HSE_FMS_REQUEST_DOMAIN_DOWNLOAD, "FMS Request Domain Download" },
|
|
{ HSE_FMS_REQUEST_DOMAIN_UPLOAD, "FMS Request Domain Upload" },
|
|
{ HSE_FMS_CREATE_PROGRAM_INVOCATION, "FMS Create Program Invocation" },
|
|
{ HSE_FMS_DELETE_PROGRAM_INVOCATION, "FMS Delete Program Invocation" },
|
|
{ HSE_FMS_START, "FMS Start" },
|
|
{ HSE_FMS_STOP, "FMS Stop" },
|
|
{ HSE_FMS_RESUME, "FMS Resume" },
|
|
{ HSE_FMS_RESET, "FMS Reset" },
|
|
{ HSE_FMS_KILL, "FMS Kill" },
|
|
{ HSE_FMS_ALTER_EVENT_CONDITION_MONITORING,
|
|
"FMS Alter Event Condition Monitoring" },
|
|
{ HSE_FMS_ACKNOWLEDGE_EVENT_NOTIFICATION,
|
|
"FMS Acknowledge Event Notification" },
|
|
{ HSE_FMS_INITIATE_PUT_OD, "FMS Initiate Put OD" },
|
|
{ HSE_FMS_PUT_OD, "FMS Put OD" },
|
|
{ HSE_FMS_TERMINATE_PUT_OD, "FMS Terminate Put OD" },
|
|
{ HSE_FMS_GENERIC_INITIATE_DOWNLOAD_SEQUENCE,
|
|
"FMS Generic Initiate Download Sequence" },
|
|
{ HSE_FMS_GENERIC_DOWNLOAD_SEGMENT, "FMS Generic Download Segment" },
|
|
{ HSE_FMS_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE,
|
|
"FMS Generic Terminate Download Sequence" },
|
|
{ HSE_FMS_READ_WITH_SUBINDEX, "FMS Read with Subindex" },
|
|
{ HSE_FMS_WRITE_WITH_SUBINDEX, "FMS Write with Subindex" },
|
|
{ HSE_FMS_INITIATE, "FMS Initiate" },
|
|
{ 0, NULL }
|
|
};
|
|
static value_string_ext names_fms_confirmed_ext = VALUE_STRING_EXT_INIT(names_fms_confirmed);
|
|
|
|
|
|
static const value_string names_lan_unconfirmed[] = {
|
|
{ LAN_DIAG, "Diagnostic Message" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_lan_confirmed[] = {
|
|
{ LAN_GET_INFO, "LAN Redundancy Get Information" },
|
|
{ LAN_PUT_INFO, "LAN Redundancy Put Information" },
|
|
{ LAN_GET_STATISTICS, "LAN Redundancy Get Statistics" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_transmission_interface[] = {
|
|
{ 0, "Interface A" },
|
|
{ 1, "Interface B" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_err_class[] = {
|
|
{ 1, "vfd state" },
|
|
{ 2, "application reference" },
|
|
{ 3, "definition" },
|
|
{ 4, "resource" },
|
|
{ 5, "service" },
|
|
{ 6, "access" },
|
|
{ 7, "od" },
|
|
{ 8, "other" },
|
|
{ 9, "reject" },
|
|
{ 10, "h1 sm reason code" },
|
|
{ 11, "fms initiate" },
|
|
{ 0, NULL }
|
|
};
|
|
static value_string_ext names_err_class_ext = VALUE_STRING_EXT_INIT(names_err_class);
|
|
|
|
|
|
static const value_string names_err_code_vfd_state[] = {
|
|
{ 0, "other" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_err_code_appl_ref[] = {
|
|
{ 0, "other" },
|
|
{ 1, "object undefined" },
|
|
{ 2, "object attributes inconsistent" },
|
|
{ 3, "name already exists" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_err_code_def[] = {
|
|
{ 0, "other" },
|
|
{ 1, "application unreachable" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_err_code_res[] = {
|
|
{ 0, "other" },
|
|
{ 1, "memory unavailable" },
|
|
{ 2, "max outstanding requests per session exceeded" },
|
|
{ 3, "max sessions exceeded" },
|
|
{ 4, "object creation failure" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_err_code_srv[] = {
|
|
{ 0, "other" },
|
|
{ 1, "object state conflict" },
|
|
{ 2, "pdu size" },
|
|
{ 3, "object constraint conflict" },
|
|
{ 4, "parameter inconsistent" },
|
|
{ 5, "illegal parameter" },
|
|
{ 6, "unsupported service" },
|
|
{ 7, "unsupported version" },
|
|
{ 8, "invalid options" },
|
|
{ 9, "unsupported protocol" },
|
|
{ 10, "reserved" },
|
|
{ 11, "key parameter mismatch" },
|
|
{ 12, "assignments already made" },
|
|
{ 13, "unsupported device redundancy state" },
|
|
{ 14, "response time-out" },
|
|
{ 15, "duplicate PD Tag detected" },
|
|
{ 0, NULL }
|
|
};
|
|
static value_string_ext names_err_code_srv_ext = VALUE_STRING_EXT_INIT(names_err_code_srv);
|
|
|
|
|
|
static const value_string names_err_code_access[] = {
|
|
{ 0, "other" },
|
|
{ 1, "object invalidated" },
|
|
{ 2, "hardware fault" },
|
|
{ 3, "object access denied" },
|
|
{ 4, "invalid address" },
|
|
{ 5, "object attribute inconsistent" },
|
|
{ 6, "object access unsupported" },
|
|
{ 7, "object non existent" },
|
|
{ 8, "type conflict" },
|
|
{ 9, "named access unsupported" },
|
|
{ 10, "access to element unsupported" },
|
|
{ 11, "config access already open" },
|
|
{ 12, "reserved" },
|
|
{ 13, "unrecognized FDA Address" },
|
|
{ 0, NULL }
|
|
};
|
|
static value_string_ext names_err_code_access_ext = VALUE_STRING_EXT_INIT(names_err_code_access);
|
|
|
|
|
|
|
|
static const value_string names_err_code_od[] = {
|
|
{ 0, "other" },
|
|
{ 1, "name length overflow" },
|
|
{ 2, "od overflow" },
|
|
{ 3, "od write protected" },
|
|
{ 4, "extension length overflow" },
|
|
{ 5, "od description length overflow" },
|
|
{ 6, "operational problem" },
|
|
{ 7, "hse to h1 format conversion not supported" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_err_code_other[] = {
|
|
{ 0, "other" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_err_code_reject[] = {
|
|
{ 5, "pdu size" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
|
|
|
|
static const value_string names_err_code_h1_sm_reason_code[] = {
|
|
{ 0, "other" },
|
|
{ 1, "DLL Error - insufficient resources" },
|
|
{ 2, "DLL Error - sending queue full" },
|
|
{ 3, "DLL Error - time-out before transmission" },
|
|
{ 4, "DLL Error - reason unspecified" },
|
|
{ 5, "Device failed to respond to SET_PD_TAG" },
|
|
{ 6, "Device failed to respond to WHO_HAS_PD_TAG" },
|
|
{ 7, "Device failed to respond to SET_ADDR" },
|
|
{ 8, "Device failed to respond to IDENTIFY" },
|
|
{ 9, "Device failed to respond to ENABLE_SM_OP" },
|
|
{ 10, "Device failed to respond to CLEAR_ADDRESS" },
|
|
{ 11, "Multiple Response from WHO_HAS_PD_TAG" },
|
|
{ 12, "Non-Matching PD_TAG from WHO_HAS_PD_TAG" },
|
|
{ 13, "Non-Matching PD_TAG from IDENTIFY" },
|
|
{ 14, "Non-Matching DEV_ID from IDENTIFY" },
|
|
{ 15, "Remote Error Invalid State" },
|
|
{ 16, "Remote Error PD-Tag doesn't match" },
|
|
{ 17, "Remote Error Dev-ID doesn't match" },
|
|
{ 18, "Remote Error SMIB object write failed" },
|
|
{ 19, "Remote Error Starting SM Operational" },
|
|
{ 0, NULL }
|
|
};
|
|
static value_string_ext names_err_code_h1_sm_reason_code_ext = VALUE_STRING_EXT_INIT(names_err_code_h1_sm_reason_code);
|
|
|
|
|
|
static const value_string names_err_code_fms_init[] = {
|
|
{ 0, "other" },
|
|
{ 1, "max-fms-pdu-size-insufficient" },
|
|
{ 2, "feature-not-supported" },
|
|
{ 3, "version-od-incompatible" },
|
|
{ 4, "user-initiate-denied" },
|
|
{ 5, "password-error" },
|
|
{ 6, "profile-number-incompatible" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
static const char *
|
|
val_to_str_err_code(guint8 errclass, guint8 code)
|
|
{
|
|
switch (errclass) {
|
|
case 1:
|
|
return (val_to_str_const(code, names_err_code_vfd_state, "Unknown"));
|
|
|
|
case 2:
|
|
return (val_to_str_const(code, names_err_code_appl_ref, "Unknown"));
|
|
|
|
case 3:
|
|
return (val_to_str_const(code, names_err_code_def, "Unknown"));
|
|
|
|
case 4:
|
|
return (val_to_str_const(code, names_err_code_res, "Unknown"));
|
|
|
|
case 5:
|
|
return (val_to_str_ext_const(code, &names_err_code_srv_ext, "Unknown"));
|
|
|
|
case 6:
|
|
return (val_to_str_ext_const(code, &names_err_code_access_ext, "Unknown"));
|
|
|
|
case 7:
|
|
return (val_to_str_const(code, names_err_code_od, "Unknown"));
|
|
|
|
case 8:
|
|
return (val_to_str_const(code, names_err_code_other, "Unknown"));
|
|
|
|
case 9:
|
|
return (val_to_str_const(code, names_err_code_reject, "Unknown"));
|
|
|
|
case 10:
|
|
return (val_to_str_ext_const(code,
|
|
&names_err_code_h1_sm_reason_code_ext, "Unknown"));
|
|
|
|
case 11:
|
|
return (val_to_str_const(code, names_err_code_fms_init, "Unknown"));
|
|
|
|
default:
|
|
return ("Unknown");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.1. FDA Open Session (Confirmed Service Id = 1)
|
|
* 6.5.1.1.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fda_open_sess_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FDA Open Session Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FDA Open Session Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fda_open_sess_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_req_sess_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_req_max_buf_siz, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_req_max_msg_len, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_req_nma_conf_use, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_req_inactivity_close_time, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_req_transmit_delay_time, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.1.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fda_open_sess_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FDA Open Session Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FDA Open Session Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fda_open_sess_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_rsp_sess_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_rsp_max_buf_siz, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_rsp_max_msg_len, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_rsp_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_rsp_nma_conf_use, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_rsp_inactivity_close_time, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_rsp_transmit_delay_time, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_rsp_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.1.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fda_open_sess_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FDA Open Session Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FDA Open Session Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fda_open_sess_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fda_open_sess_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_open_sess_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.2. FDA Idle (Confirmed Service Id = 3)
|
|
* 6.5.1.2.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fda_idle_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FDA Idle Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FDA Idle Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fda_idle_req);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.2.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fda_idle_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FDA Idle Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FDA Idle Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fda_idle_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.2.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fda_idle_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FDA Idle Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FDA Idle Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fda_idle_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_idle_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fda_idle_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_idle_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_idle_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.1. SM Find Tag Query (Unconfirmed Service Id = 1)
|
|
* 6.5.2.1.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_find_tag_query_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Find Tag Query Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Find Tag Query Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_sm_find_tag_query_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_query_req_query_type, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_query_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_query_req_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_query_req_vfd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.2. SM Find Tag Reply (Unconfirmed Service Id = 2)
|
|
* 6.5.2.2.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_find_tag_reply_req_dup_detection_state(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Duplicate Detection State: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_find_tag_reply_req_dup_detection_state);
|
|
|
|
/*
|
|
* Bits 3-8: Reserved, set to 0.
|
|
* Bit 2: 1 = Duplicate PD Tag Detected
|
|
* 0 = Duplicate PD Tag Not Detected
|
|
* Bit 1: 1 = Duplicate Device Index Detected
|
|
* 0 = Duplicate Device Index Not Detected
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_find_tag_reply_dup_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_find_tag_reply_dup_pd_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_find_tag_reply_dup_device, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_find_tag_reply_req_list_of_fda_addr_selectors(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint16 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 2 * value,
|
|
"List of FDA Address Selectors (%u bytes)", 2 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_find_tag_reply_req_list_of_fda_addr_selectors);
|
|
|
|
for (d = 0; d < value; d++) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_fda_addr_selector,
|
|
tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
|
|
offset += 2;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_find_tag_reply_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 DuplicateDetectionState;
|
|
guint16 NumOfFDAAddrSelectors;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Find Tag Reply Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Find Tag Reply Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_sm_find_tag_reply_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_query_type, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_h1_node_addr, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_fda_addr_link_id, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_vfd_ref, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_od_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_ip_addr, tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_od_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
DuplicateDetectionState = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_find_tag_reply_req_dup_detection_state(tvb,
|
|
offset, sub_tree, DuplicateDetectionState);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
NumOfFDAAddrSelectors = tvb_get_ntohs(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_find_tag_reply_req_num_of_fda_addr_selectors,
|
|
tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
if (NumOfFDAAddrSelectors) {
|
|
dissect_ff_msg_sm_find_tag_reply_req_list_of_fda_addr_selectors(tvb,
|
|
offset, sub_tree, NumOfFDAAddrSelectors);
|
|
offset += 2 * NumOfFDAAddrSelectors;
|
|
length -= 2 * NumOfFDAAddrSelectors;
|
|
}
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.3. SM Identify (Confirmed Service Id = 3)
|
|
* 6.5.2.3.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_id_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Identify Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Identify Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_sm_id_req);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.3.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_id_rsp_h1_node_addr(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 2,
|
|
"H1 Node Address Version Number (%u bytes)", 2);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_id_rsp_h1_node_addr);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_h1_node_addr_ver_num_h1_node_addr,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_h1_node_addr_ver_num_ver_num, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
/*offset += 1;*/
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_id_rsp_entries_node_addr(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint32 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"Version Number List (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_id_rsp_entries_node_addr);
|
|
|
|
for (d = 0; d < value * 2; d++) {
|
|
dissect_ff_msg_sm_id_rsp_h1_node_addr(tvb, offset, sub_tree);
|
|
offset += 2;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_id_rsp_h1_live_list(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4,
|
|
"H1 Live-list Version Number (%u bytes)", 4);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_id_rsp_h1_live_list);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_h1_live_list_h1_link_id, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_h1_live_list_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_h1_live_list_ver_num, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
/*offset += 1;*/
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_id_rsp_entries_link_id(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint32 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"Version Number List (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_id_rsp_entries_h1_live_list);
|
|
|
|
for (d = 0; d < value; d++) {
|
|
dissect_ff_msg_sm_id_rsp_h1_live_list(tvb, offset, sub_tree);
|
|
offset += 4;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_id_rsp_smk_state(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"SMK State: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_id_rsp_smk_state);
|
|
|
|
/*
|
|
* Bits 2-8:
|
|
* 0 = Reserved
|
|
* 1 = NO_TAG
|
|
* 2 = OPERATIONAL
|
|
* 3 127 = Reserved
|
|
* Bit 1:
|
|
* 0 = Not Synchronized with SNTP Time Server
|
|
* 1 = Synchronized with SNTP Time Server
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_smk_state_name, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_smk_state_sync, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_id_rsp_dev_type(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Device Type: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_id_rsp_dev_type);
|
|
|
|
/*
|
|
* Bit 8 = Linking Device
|
|
* Bit 7 = I/O Gateway
|
|
* Bit 6 = HSE Field Device
|
|
* Bit 5 = H1 Device
|
|
* Bit 4 = Reserved
|
|
* Bits 1 - 3 Redundant Device Type Capability*
|
|
* 0 = Type D-1 Device
|
|
* 1 = Type D-2 Device
|
|
* 2 = Type D-3 Device
|
|
* 3 = Type D-3 and Type D-2 Device
|
|
* 4 = Not used
|
|
* 5 = Type D-2 and Type D-1 Device
|
|
* 6 = Type D-3 and Type D-1 Device
|
|
* 7 = Type D-3 and D-2 and Type D-1 Device
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_link, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_iogateway, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_hse, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_h1, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_redundant_caps, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_id_rsp_dev_redundancy_state(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Device Redundancy State: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_id_rsp_dev_redundancy_state);
|
|
|
|
/*
|
|
* Bits 5-8 = Reserved, set to 0
|
|
* Bits 3 & 4 Device Redundancy Role
|
|
* 0 = Reserved
|
|
* 1 = Primary
|
|
* 2 = Secondary
|
|
* Bits 1 & 2 Assigned Redundant Device Type*
|
|
* 0 = Type D-1 Device
|
|
* 1 = Type D-2 Device
|
|
* 2 = Type D-3 Device
|
|
*/
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_redundancy_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_redundancy_state_role, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_redundancy_state_type, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_id_rsp_dup_detection_state(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Duplicate Detection State: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_id_rsp_dup_detection_state);
|
|
|
|
/*
|
|
* Bits 3-8: Reserved, set to 0.
|
|
* Bit 2: 1 = Duplicate PD Tag Detected
|
|
* 0 = Duplicate PD Tag Not Detected
|
|
* Bit 1: 1 = Duplicate Device Index Detected
|
|
* 0 = Duplicate Device Index Not Detected
|
|
*/
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dup_detection_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dup_detection_state_pd_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dup_detection_state_device, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_id_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree, guint32 FDAAddress)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
guint8 SMKState;
|
|
guint8 DeviceType;
|
|
guint8 DeviceRedundancyState;
|
|
guint8 DuplicateDetectionState;
|
|
guint32 NumOfEntriesInVerNumList;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Identify Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "SM Identify Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_id_rsp);
|
|
|
|
SMKState = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_id_rsp_smk_state(tvb, offset, sub_tree, SMKState);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
DeviceType = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_id_rsp_dev_type(tvb, offset, sub_tree, DeviceType);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
DeviceRedundancyState = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_id_rsp_dev_redundancy_state(tvb,
|
|
offset, sub_tree, DeviceRedundancyState);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
DuplicateDetectionState = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_id_rsp_dup_detection_state(tvb,
|
|
offset, sub_tree, DuplicateDetectionState);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_operational_ip_addr, tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_lr_port, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_annunc_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_hse_dev_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
NumOfEntriesInVerNumList = tvb_get_ntohl(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_rsp_num_of_entries, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (NumOfEntriesInVerNumList) {
|
|
guint16 LinkId;
|
|
/* 11111111 11111111 00000000 00000000 */
|
|
LinkId = (guint16)(FDAAddress >> 16);
|
|
if (LinkId) {
|
|
dissect_ff_msg_sm_id_rsp_entries_node_addr(tvb,
|
|
offset, sub_tree, NumOfEntriesInVerNumList);
|
|
} else {
|
|
dissect_ff_msg_sm_id_rsp_entries_link_id(tvb,
|
|
offset, sub_tree, NumOfEntriesInVerNumList);
|
|
}
|
|
|
|
offset += 4 * NumOfEntriesInVerNumList;
|
|
length -= 4 * NumOfEntriesInVerNumList;
|
|
}
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.3.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_id_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Identify Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "SM Identify Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_sm_id_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_sm_id_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_id_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.4. SM Clear Address (Confirmed Service Id = 12)
|
|
* 6.5.2.4.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_clear_addr_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Address Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Clear Address Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_sm_id_err);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_addr_req_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_addr_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_addr_req_interface_to_clear, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.4.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_clear_addr_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Address Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Clear Address Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_sm_clear_addr_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.4.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_clear_addr_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Address Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Clear Address Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_sm_clear_addr_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_addr_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_sm_clear_addr_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_addr_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_addr_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.5. SM Set Assignment Info (Confirmed Service Id = 14)
|
|
* 6.5.2.5.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_set_assign_info_req_dev_redundancy_state(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Device Redundancy State: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_set_assign_info_req_dev_redundancy_state);
|
|
|
|
/*
|
|
* Bits 5-8 = Reserved, set to 0
|
|
* Bits 3 & 4 Type D-2 Device Redundancy Role
|
|
* 0 = Not used
|
|
* 1 = Type D-2 Device Primary
|
|
* 2 = Type D-2 Device Secondary
|
|
* Bits 1 & 2 Assigned Device Redundancy Type
|
|
* 0 = Type D-1 Device
|
|
* 1 = Type D-2 Device
|
|
* 2 = Type D-3 Device
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_set_assign_info_req_dev_redundancy_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_set_assign_info_req_dev_redundancy_state_role, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_set_assign_info_req_dev_redundancy_state_type, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_set_assign_info_req_clear_dup_detection_state(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Clear Duplicate Detection State: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_set_assign_info_req_clear_dup_detection_state);
|
|
|
|
/*
|
|
* Bits 3-8: Reserved, set to 0.
|
|
* Bit 2: 1 = Do not clear Duplicate PD Tag Detected
|
|
* 0 = Clear Duplicate PD Tag Detected
|
|
* Bit 1: 1 = Do not clear Duplicate Device Index Detected
|
|
* 0 = Clear Duplicate Device Index Detected
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_set_assign_info_req_clear_dup_detection_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_set_assign_info_req_clear_dup_detection_state_pd_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_set_assign_info_req_clear_dup_detection_state_device_index, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_set_assign_info_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 DeviceRedundancyState;
|
|
guint8 ClearDuplicateDetectionState;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Set Assignment Info Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Set Assignment Info Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_set_assign_info_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_req_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_req_h1_new_addr, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
DeviceRedundancyState = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_set_assign_info_req_dev_redundancy_state(tvb,
|
|
offset, sub_tree, DeviceRedundancyState);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_req_lr_port, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_req_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_req_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_req_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_req_operational_ip_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
ClearDuplicateDetectionState = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_set_assign_info_req_clear_dup_detection_state(tvb,
|
|
offset, sub_tree, ClearDuplicateDetectionState);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.5.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_set_assign_info_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Set Assignment Info Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Set Assignment Info Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_set_assign_info_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_rsp_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_rsp_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.5.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_set_assign_info_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Set Assignment Info Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Set Assignment Info Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_sm_set_assign_info_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_sm_set_assign_info_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_set_assign_info_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.6. SM Clear Assignment Info (Confirmed Service Id = 15)
|
|
* 6.5.2.6.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_clear_assign_info_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Assignment Info Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Clear Assignment Info Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_clear_assign_info_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_assign_info_req_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_assign_info_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.6.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_clear_assign_info_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Assignment Info Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Clear Assignment Info Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_clear_assign_info_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.6.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_clear_assign_info_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Assignment Info Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Clear Assignment Info Error");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_clear_assign_info_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_assign_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_sm_clear_assign_info_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_assign_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_clear_assign_info_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.7. SM Device Annunciation (Unconfirmed Service Id = 16)
|
|
* 6.5.2.7.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_sm_dev_annunc_req_h1_node_addr(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 2,
|
|
"H1 Node Address Version Number (%u bytes)", 2);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_dev_annunc_req_h1_node_addr);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_h1_node_addr,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_ver_num,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
/*offset += 1;*/
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_dev_annunc_req_entries_node_addr(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint32 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"Version Number List (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_dev_annunc_req_entries_node_addr);
|
|
|
|
for (d = 0; d < value * 2; d++) {
|
|
dissect_ff_msg_sm_dev_annunc_req_h1_node_addr(tvb, offset, sub_tree);
|
|
offset += 2;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_dev_annunc_req_h1_live_list(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4,
|
|
"H1 Live-list Version Number (%u bytes)", 4);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_dev_annunc_req_h1_live_list);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_h1_live_list_h1_link_id, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_h1_live_list_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_h1_live_list_ver_num, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
/*offset += 1;*/
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_dev_annunc_req_entries_link_id(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint32 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"Version Number List (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_dev_annunc_req_entries_h1_live_list);
|
|
|
|
for (d = 0; d < value; d++) {
|
|
dissect_ff_msg_sm_dev_annunc_req_h1_live_list(tvb, offset, sub_tree);
|
|
offset += 4;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_dev_annunc_req_smk_state(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"SMK State: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_dev_annunc_req_smk_state);
|
|
|
|
/*
|
|
* Bits 2-8:
|
|
* 0 = Reserved
|
|
* 1 = NO_TAG
|
|
* 2 = OPERATIONAL
|
|
* 3 127 = Reserved
|
|
* Bit 1:
|
|
* 0 = Not Synchronized with SNTP Time Server
|
|
* 1 = Synchronized with SNTP Time Server
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_smk_state_name, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_smk_state_sync, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_dev_annunc_req_dev_type(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Device Type: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_dev_annunc_req_dev_type);
|
|
|
|
/*
|
|
* Bit 8 = Linking Device
|
|
* Bit 7 = I/O Gateway
|
|
* Bit 6 = HSE Field Device
|
|
* Bit 5 = H1 Device
|
|
* Bit 4 = Reserved
|
|
* Bits 1 - 3 Redundant Device Type Capability*
|
|
* 0 = Type D-1 Device
|
|
* 1 = Type D-2 Device
|
|
* 2 = Type D-3 Device
|
|
* 3 = Type D-3 and Type D-2 Device
|
|
* 4 = Not used
|
|
* 5 = Type D-2 and Type D-1 Device
|
|
* 6 = Type D-3 and Type D-1 Device
|
|
* 7 = Type D-3 and D-2 and Type D-1 Device
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_link, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_iogateway, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_hse, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_h1, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_redundant_caps, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_dev_annunc_req_dev_redundancy_state(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Device Redundancy State: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_dev_annunc_req_dev_redundancy_state);
|
|
|
|
/*
|
|
* Bits 5-8 = Reserved, set to 0
|
|
* Bits 3 & 4 Device Redundancy Role
|
|
* 0 = Reserved
|
|
* 1 = Primary
|
|
* 2 = Secondary
|
|
* Bits 1 & 2 Assigned Redundant Device Type*
|
|
* 0 = Type D-1 Device
|
|
* 1 = Type D-2 Device
|
|
* 2 = Type D-3 Device
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_redundancy_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_redundancy_state_role, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_redundancy_state_type, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_dev_annunc_req_dup_detection_state(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Duplicate Detection State: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_dev_annunc_req_dup_detection_state);
|
|
|
|
/*
|
|
* Bits 3-8: Reserved, set to 0.
|
|
* Bit 2: 1 = Duplicate PD Tag Detected
|
|
* 0 = Duplicate PD Tag Not Detected
|
|
* Bit 1: 1 = Duplicate Device Index Detected
|
|
* 0 = Duplicate Device Index Not Detected
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dup_detection_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dup_detection_state_pd_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dup_detection_state_device, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_sm_dev_annunc_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree, guint32 FDAAddress)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
guint8 SMKState;
|
|
guint8 DeviceType;
|
|
guint8 DeviceRedundancyState;
|
|
guint8 DuplicateDetectionState;
|
|
guint32 NumOfEntriesInVerNumList;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "SM Device Annunciation Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"SM Device Annunciation Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_sm_dev_annunc_req);
|
|
|
|
SMKState = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_dev_annunc_req_smk_state(tvb, offset, sub_tree, SMKState);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
DeviceType = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_dev_annunc_req_dev_type(tvb,
|
|
offset, sub_tree, DeviceType);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
DeviceRedundancyState = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_dev_annunc_req_dev_redundancy_state(tvb,
|
|
offset, sub_tree, DeviceRedundancyState);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
DuplicateDetectionState = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_sm_dev_annunc_req_dup_detection_state(tvb,
|
|
offset, sub_tree, DuplicateDetectionState);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_operational_ip_addr, tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_lr_port, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_annunc_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_hse_dev_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
NumOfEntriesInVerNumList = tvb_get_ntohl(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_sm_dev_annunc_req_num_of_entries, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (NumOfEntriesInVerNumList) {
|
|
guint16 LinkId;
|
|
/* 11111111 11111111 00000000 00000000 */
|
|
LinkId = (guint16)(FDAAddress >> 16);
|
|
if (LinkId) {
|
|
dissect_ff_msg_sm_dev_annunc_req_entries_node_addr(tvb,
|
|
offset, sub_tree, NumOfEntriesInVerNumList);
|
|
} else {
|
|
dissect_ff_msg_sm_dev_annunc_req_entries_link_id(tvb,
|
|
offset, sub_tree, NumOfEntriesInVerNumList);
|
|
}
|
|
|
|
offset += 4 * NumOfEntriesInVerNumList;
|
|
length -= 4 * NumOfEntriesInVerNumList;
|
|
}
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.2. FMS Initiate (Confirmed Service Id = 96)
|
|
* 6.5.3.2.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Initiate Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_req_conn_opt, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_req_access_protection_supported_calling,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_req_passwd_and_access_grps_calling,
|
|
tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_req_ver_od_calling, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_req_prof_num_calling, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.2.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Initiate Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_rep);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_rsp_ver_od_called, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_rsp_prof_num_called, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.2.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Initiate Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_init_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.3. FMS Abort (Unconfirmed Service Id = 112)
|
|
* 6.5.3.3.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_abort_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Abort Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Abort Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_abort_req);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 16,
|
|
"Abort Detail (%u bytes)", 16);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_abort_req_abort_id, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_abort_req_reason_code, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_abort_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.4. FMS Status (Confirmed Service Id = 0)
|
|
* 6.5.3.4.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_status_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Status Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Status Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_status_req);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.4.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_status_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Status Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Status Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_status_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_status_rsp_logical_status, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_status_rsp_physical_status, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_status_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 4,
|
|
"Local Detail (%u bytes)", 4);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.4.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_status_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Status Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Status Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_status_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_status_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_status_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_status_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_status_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.5. FMS Unsolicited Status (Unconfirmed Service Id = 1)
|
|
* 6.5.3.5.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_unsolicited_status_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Unsolicited Status Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Unsolicited Status Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_unsolicited_status_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_unsolicited_status_req_logical_status, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_unsolicited_status_req_physical_status,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_unsolicited_status_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 4,
|
|
"Local Detail (%u bytes)", 4);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.6. FMS Identify (Confirmed Service Id = 1)
|
|
* 6.5.3.6.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_id_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Identify Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Identify Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_id_req);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.6.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_id_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Identify Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Identify Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_id_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_id_rsp_vendor_name, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_id_rsp_model_name, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_id_rsp_revision, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.6.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_id_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Identify Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Identify Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_id_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_id_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_id_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_id_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_id_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.7. FMS Get OD (Confirmed Service Id = 4)
|
|
* 6.5.3.7.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_get_od_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Get OD Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Get OD Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_get_od_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_get_od_req_all_attrs, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_get_od_req_start_idx_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_get_od_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_get_od_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.7.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_get_od_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Get OD Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Get OD Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_get_od_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_get_od_rsp_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_get_od_rsp_num_of_obj_desc, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_get_od_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"List of Object Descriptions (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.7.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_get_od_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Get OD Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Get OD Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_get_od_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_get_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_get_od_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_get_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_get_od_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.8. FMS Initiate Put OD (Confirmed Service Id = 28)
|
|
* 6.5.3.8.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_put_od_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Put OD Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Initiate Put OD Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_put_od_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_put_od_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_put_od_req_consequence, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.8.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_put_od_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Put OD Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Initiate Put OD Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_put_od_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.8.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_put_od_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Put OD Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Initiate Put OD Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_put_od_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_put_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_init_put_od_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_put_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_init_put_od_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.9. FMS Put OD (Confirmed Service Id = 29)
|
|
* 6.5.3.9.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_put_od_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Put OD Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Put OD Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_put_od_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_put_od_req_num_of_obj_desc, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"List of Object Descriptions (%u bytes)", length);
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.9.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_put_od_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Put OD Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Put OD Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_put_od_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.9.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_put_od_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Put OD Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Put OD Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_put_od_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_put_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_put_od_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_put_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_put_od_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.10. FMS Terminate Put OD (Confirmed Service Id = 30)
|
|
* 6.5.3.10.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_terminate_put_od_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Put OD Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Terminate Put OD Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_terminate_put_od_req);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.10.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_terminate_put_od_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Put OD Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Terminate Put OD Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_terminate_put_od_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.10.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_terminate_put_od_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Put OD Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Terminate Put OD Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_terminate_put_od_err);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_put_od_err_index, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_put_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_terminate_put_od_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_put_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_put_od_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.11. FMS Generic Initiate Download Sequence
|
|
* (Confirmed Service Id = 31)
|
|
* 6.5.3.11.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_generic_init_download_sequence_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Initiate Download Sequence Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Generic Initiate Download Sequence Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_gen_init_download_seq_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_init_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.11.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_generic_init_download_sequence_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Initiate Download Sequence Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Generic Initiate Download Sequence Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_gen_init_download_seq_rep);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.11.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_generic_init_download_sequence_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Initiate Download Sequence Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Generic Initiate Download Sequence Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_gen_init_download_seq_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_init_download_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_gen_init_download_seq_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_init_download_seq_err_additional_code,
|
|
tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_init_download_seq_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.12. FMS Generic Download Segment (Confirmed Service Id = 32)
|
|
* 6.5.3.12.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_generic_download_segment_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Download Segment Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Generic Download Segment Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_gen_download_seg_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_download_seg_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_download_seg_req_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Load Data (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.12.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_generic_download_segment_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Download Segment Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Generic Download Segment Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_gen_download_seg_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.12.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_generic_download_segment_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Download Segment Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Generic Download Segment Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_gen_download_seg_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_download_seg_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_gen_download_seg_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_download_seg_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_download_seg_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.13. FMS Generic Terminate Download Sequence
|
|
* (Confirmed Service Id = 33)
|
|
* 6.5.3.13.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_generic_terminate_download_sequence_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Terminate Download Sequence Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Generic Terminate Download Sequence Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_gen_terminate_download_seq_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_terminate_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.13.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_generic_terminate_download_sequence_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Terminate Download Sequence Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Generic Terminate Download Sequence Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_gen_terminate_download_seq_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_terminate_download_seq_rsp_final_result,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.13.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_generic_terminate_download_sequence_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Terminate Download Sequence Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Generic Terminate Download Sequence Error");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_gen_terminate_download_seq_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_terminate_download_seq_err_err_class,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_gen_terminate_download_seq_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_terminate_download_seq_err_additional_code,
|
|
tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_gen_terminate_download_seq_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.14. FMS Initiate Download Sequence (Confirmed Service Id = 9)
|
|
* 6.5.3.14.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_download_sequence_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Download Sequence Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Initiate Download Sequence Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_init_download_seq_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.14.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_download_sequence_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Download Sequence Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Initiate Download Sequence Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_init_download_seq_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.14.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_download_sequence_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Download Sequence Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Initiate Download Sequence Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_download_seq_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_download_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_init_download_seq_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_download_seq_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_download_seq_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.15. FMS Download Segment (Confirmed Service Id = 10)
|
|
* 6.5.3.15.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_download_segment_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Download Segment Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Download Segment Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_download_seg_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_download_seg_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.15.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_download_segment_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Download Segment Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Download Segment Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_download_seg_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_download_seg_rsp_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Load Data (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.15.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_download_segment_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Download Segment Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Download Segment Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_download_seg_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_download_seg_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_download_seg_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_download_seg_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_download_seg_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.16. FMS Terminate Download Sequence (Confirmed Service Id = 11)
|
|
* 6.5.3.16.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_terminate_download_sequence_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Download Sequence Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Terminate Download Sequence Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_terminate_download_seq_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_download_seq_req_final_result,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.16.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_terminate_download_sequence_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Download Sequence Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Terminate Download Sequence Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_terminate_download_seq_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.16.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_terminate_download_sequence_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Download Sequence Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Terminate Download Sequence Error");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_terminate_download_seq_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_download_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_terminate_download_seq_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_download_seq_err_additional_code,
|
|
tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_download_seq_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.17. FMS Initiate Upload Sequence (Confirmed Service Id = 12)
|
|
* 6.5.3.17.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_upload_seq_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Upload Sequence Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Initiate Upload Sequence Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_upload_seq_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_upload_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.17.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_upload_seq_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Upload Sequence Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Initiate Upload Sequence Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_upload_seq_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.17.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_init_upload_seq_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Upload Sequence Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Initiate Upload Sequence Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_upload_seq_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_upload_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_init_upload_seq_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_init_upload_seq_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_init_upload_seq_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.18. FMS Upload Segment (Confirmed Service Id = 13)
|
|
* 6.5.3.18.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_upload_segment_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Upload Segment Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Upload Segment Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_upload_seg_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_upload_seg_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.18.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_upload_segment_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Upload Segment Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Upload Segment Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_upload_seg_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_upload_seg_rsp_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Final Result (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.18.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_upload_segment_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Upload Segment Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Upload Segment Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_upload_seg_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_upload_seg_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_upload_seg_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_upload_seg_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_upload_seg_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.19. FMS Terminate Upload Sequence (Confirmed Service Id = 14)
|
|
* 6.5.3.19.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_terminate_upload_seq_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Upload Sequence Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Terminate Upload Sequence Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_terminate_upload_seq_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_upload_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.19.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_terminate_upload_seq_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Upload Sequence Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Terminate Upload Sequence Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_terminate_upload_seq_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.19.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_terminate_upload_seq_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Upload Sequence Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Terminate Upload Sequence Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_terminate_upload_seq_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_upload_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_terminate_upload_seq_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_upload_seq_err_additional_code,
|
|
tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_terminate_upload_seq_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.20. FMS Request Domain Download (Confirmed Service Id = 15)
|
|
* 6.5.3.20.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_req_dom_download_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Download Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Request Domain Download Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_req_dom_download_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_req_dom_download_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_req_dom_download_req_additional_info,
|
|
tvb, offset, length, ENC_ASCII|ENC_NA);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.20.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_req_dom_download_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Download Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Request Domain Download Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_req_dom_download_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.20.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_req_dom_download_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Download Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Request Domain Download Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_req_dom_download_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_req_dom_download_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_req_dom_download_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_req_dom_download_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_req_dom_download_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.21. FMS Request Domain Upload (Confirmed Service Id = 16)
|
|
* 6.5.3.21.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_req_dom_upload_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Upload Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Request Domain Upload Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_req_dom_upload_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_req_dom_upload_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_req_dom_upload_req_additional_info,
|
|
tvb, offset, length, ENC_ASCII|ENC_NA);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.21.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_req_dom_upload_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Upload Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Request Domain Upload Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_req_dom_upload_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.21.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_req_dom_upload_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Upload Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Request Domain Upload Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_req_dom_upload_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_req_dom_upload_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_req_dom_upload_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_req_dom_upload_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_req_dom_upload_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.22. FMS Create Program Invocation (Confirmed Service Id = 17)
|
|
* 6.5.3.22.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_create_pi_req_dom_idxes(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint16 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"List Of Domain Indexes (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_create_pi_req_list_of_dom_idxes);
|
|
|
|
for (d = 0; d < value; d++) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_create_pi_req_dom_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
|
|
offset += 4;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_fms_create_pi_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint16 NumOfDomIdxes;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Create Program Invocation Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Create Program Invocation Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_create_pi_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_create_pi_req_reusable, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_create_pi_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
NumOfDomIdxes = tvb_get_ntohs(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_create_pi_req_num_of_dom_idxes, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
if (NumOfDomIdxes) {
|
|
dissect_ff_msg_fms_create_pi_req_dom_idxes(tvb,
|
|
offset, sub_tree, NumOfDomIdxes);
|
|
|
|
offset += 4 * NumOfDomIdxes;
|
|
length -= 4 * NumOfDomIdxes;
|
|
}
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.22.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_create_pi_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Create Program Invocation Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Create Program Invocation Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_create_pi_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_create_pi_rsp_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.22.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_create_pi_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Create Program Invocation Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Create Program Invocation Error");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_create_pi_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_create_pi_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_create_pi_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_create_pi_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_create_pi_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.23. FMS Delete Program Invocation (Confirmed Service Id = 18)
|
|
* 6.5.3.23.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_del_pi_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Program Invocation Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Delete Program Invocation Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_del_pi_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_del_pi_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.23.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_del_pi_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Program Invocation Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Delete Program Invocation Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_del_pi_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.23.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_del_pi_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Program Invocation Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Delete Program Invocation Error");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_del_pi_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_del_pi_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_del_pi_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_del_pi_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_del_pi_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.24. FMS Start (Confirmed Service Id = 19)
|
|
* 6.5.3.24.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_start_pi_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Start Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Start Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_start_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_start_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Execution Argument (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.24.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_start_pi_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Start Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Start Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_start_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.24.3. PI Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_start_pi_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Start Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Start Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_start_err);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_start_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_start_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_start_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_start_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_start_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.25. FMS Stop (Confirmed Service Id = 20)
|
|
* 6.5.3.25.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_stop_pi_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Stop Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Stop Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_stop_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_stop_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.25.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_stop_pi_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Stop Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Stop Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_stop_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.25.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_stop_pi_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Stop Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Stop Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_stop_err);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_stop_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_stop_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_stop_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_stop_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_stop_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.26. FMS Resume (Confirmed Service Id = 21)
|
|
* 6.5.3.26.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_resume_pi_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Resume Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Resume Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_resume_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_resume_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Execution Argument (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.26.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_resume_pi_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Resume Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Resume Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_resume_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.26.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_resume_pi_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Resume Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Resume Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_resume_err);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_resume_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_resume_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_resume_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_resume_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_resume_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.27. FMS Reset (Confirmed Service Id = 22)
|
|
* 6.5.3.27.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_reset_pi_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Reset Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Reset Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_reset_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_reset_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.27.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_reset_pi_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Reset Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Reset Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_reset_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.27.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_reset_pi_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Reset Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Reset Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_reset_err);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_reset_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_reset_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_reset_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_reset_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_reset_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.28. FMS Kill (Confirmed Service Id = 23)
|
|
* 6.5.3.28.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_kill_pi_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Kill Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Kill Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_kill_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_kill_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.28.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_kill_pi_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Kill Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Kill Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_kill_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.28.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_kill_pi_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Kill Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Kill Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_kill_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_kill_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_kill_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_kill_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_kill_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.29. FMS Read (Confirmed Service Id = 2)
|
|
* 6.5.3.29.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_read_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Read Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Read Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_read_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.29.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_read_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Read Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Read Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Data (%u bytes)", length);
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.29.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_read_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Read Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Read Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_read_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_read_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_read_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_read_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.30. FMS Read with Subindex (Confirmed Service Id = 82)
|
|
* 6.5.3.30.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_read_subindex_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Read with Subindex Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Read with Subindex Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_with_subidx_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_read_with_subidx_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_read_with_subidx_req_subidx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.30.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_read_subindex_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Read with Subindex Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Read with Subindex Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_with_subidx_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Data (%u bytes)", length);
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.30.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_read_subindex_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Read with Subindex Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Read with Subindex Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_with_subidx_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_read_with_subidx_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_read_with_subidx_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_read_with_subidx_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_read_with_subidx_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.31. FMS Write (Confirmed Service Id = 3)
|
|
* 6.5.3.31.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_write_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Write Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Write Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_write_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Data (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.31.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_write_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Write Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Write Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.31.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_write_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Write Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Write Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_write_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_write_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_write_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_fms_write_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.32. FMS Write with Subindex (Confirmed Service Id = 83)
|
|
* 6.5.3.32.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_write_subindex_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Write with Subindex Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Write with Subindex Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_with_subidx_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_write_with_subidx_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_write_with_subidx_req_subidx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Data (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.32.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_write_subindex_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Write with Subindex Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Write with Subindex Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_with_subidx_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.32.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_write_subindex_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Write with Subindex Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Write with Subindex Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_with_subidx_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_write_with_subidx_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_write_with_subidx_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_write_with_subidx_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_write_with_subidx_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.33. FMS Define Variable List (Confirmed Service Id = 7)
|
|
* 6.5.3.33.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_def_variable_list_req_list_of_idxes(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint32 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"List Of Indexes (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_def_variable_list_req_list_of_idxes);
|
|
|
|
for (d = 0; d < value; d++) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_def_variable_list_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_fms_def_variable_list_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint32 NumOfIndexes;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Define Variable List Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Define Variable List Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_def_variable_list_req);
|
|
|
|
NumOfIndexes = tvb_get_ntohl(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_def_variable_list_req_num_of_idxes, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (NumOfIndexes) {
|
|
dissect_ff_msg_fms_def_variable_list_req_list_of_idxes(tvb,
|
|
offset, sub_tree, NumOfIndexes);
|
|
offset += 4 * NumOfIndexes;
|
|
length -= 4 * NumOfIndexes;
|
|
}
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.33.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_def_variable_list_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Define Variable List Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Define Variable List Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_def_variable_list_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_def_variable_list_rsp_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.33.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_def_variable_list_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Define Variable List Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Define Variable List Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_def_variable_list_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_def_variable_list_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_def_variable_list_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_def_variable_list_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_def_variable_list_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.34. FMS Delete Variable List (Confirmed Service Id = 8)
|
|
* 6.5.3.34.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_del_variable_list_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Variable List Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Delete Variable List Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_del_variable_list_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_del_variable_list_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.34.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_del_variable_list_rsp(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Variable List Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Delete Variable List Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_del_variable_list_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.34.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_del_variable_list_err(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Variable List Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Delete Variable List Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_del_variable_list_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_del_variable_list_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_del_variable_list_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_del_variable_list_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_del_variable_list_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.35. FMS Information Report (Unconfirmed Service Id = 0)
|
|
* 6.5.3.35.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_info_report_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Information Report Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_info_report_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_info_report_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Data (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.36. FMS Information Report with Subindex
|
|
* (Unconfirmed Service Id = 16)
|
|
* 6.5.3.36.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_info_report_subindex_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report with Subindex Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Information Report with Subindex Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_info_report_with_subidx_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_info_report_with_subidx_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_info_report_with_subidx_req_subidx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Data (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.37. FMS Information Report On Change (Unconfirmed Service Id = 17)
|
|
* 6.5.3.37.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_info_report_change_req(tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report On Change Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Information Report On Change Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_info_report_on_change_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_info_report_on_change_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Data (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.38. FMS Information Report On Change with Subindex
|
|
* (Unconfirmed Service Id = 18)
|
|
* 6.5.3.38.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_info_report_change_subindex_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report On Change with Subindex Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Information Report On Change with Subindex Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_info_report_on_change_with_subidx_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_info_report_on_change_with_subidx_req_idx,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_info_report_on_change_with_subidx_req_subidx,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Data (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.39. FMS Event Notification (Unconfirmed Service Id = 2)
|
|
* 6.5.3.39.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_ev_notification_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Event Notification Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Event Notification Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_ev_notification_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_ev_notification_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_ev_notification_req_ev_num, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"Data (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.40. FMS Alter Event Condition Monitoring (Confirmed Service Id = 24)
|
|
* 6.5.3.40.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Alter Event Condition Monitoring Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Alter Event Condition Monitoring Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_alter_ev_condition_monitoring_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
|
|
offset += 3;
|
|
length -= 3;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring_req_enabled,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.40.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Alter Event Condition Monitoring Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Alter Event Condition Monitoring Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_alter_ev_condition_monitoring_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.40.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Alter Event Condition Monitoring Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Alter Event Condition Monitoring Error");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_alter_ev_condition_monitoring_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring_err_err_class,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring_err_additional_code,
|
|
tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.41. FMS Acknowledge Event Notification (Confirmed Service Id = 25)
|
|
* 6.5.3.41.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_ack_ev_notification_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Acknowledge Event Notification Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Acknowledge Event Notification Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_ack_ev_notification_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_ack_ev_notification_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_ack_ev_notification_req_ev_num, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.41.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_ack_ev_notification_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Acknowledge Event Notification Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Acknowledge Event Notification Response");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fms_ack_ev_notification_rsp);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.41.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_fms_ack_ev_notification_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "FMS Acknowledge Event Notification Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"FMS Acknowledge Event Notification Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fms_ack_ev_notification_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_ack_ev_notification_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_fms_ack_ev_notification_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_ack_ev_notification_err_additional_code,
|
|
tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fms_ack_ev_notification_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.1. LAN Redundancy Get Information (Confirmed Service Id = 1)
|
|
* 6.5.4.1.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_lr_get_info_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Information Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"LAN Redundancy Get Information Request");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_lr_get_info_req);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.1.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_lr_get_info_rsp_lr_flags(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"LAN Redundancy Flags: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_get_info_rsp_lr_flags);
|
|
|
|
/*
|
|
* Bits 6-8: Reserved (not used) = 0
|
|
* Bit 5: Load Balancing Enabled
|
|
* 0 = False Do not do load balancing
|
|
* 1 = True Do load balancing
|
|
* Bit 4: Diagnosis Using Own Messages Enabled
|
|
* 0 = False Do not use own diagnostic messages for diagnosis
|
|
* 1 = True Use own diagnostic messages for diagnosis
|
|
* Bit 3: Single Multicast Message Reception Interface Enabled
|
|
* 0 = False Listen for multicast addresses
|
|
* on both interfaces
|
|
* 1 = True Listen for multicast addresses
|
|
* on one interface
|
|
* if zero or one fault detected
|
|
* in network status table
|
|
* Bit 2: Crossed Cable Detection Enabled
|
|
* 0 = False Do not detect crossed cables
|
|
* 1 = True Detect crossed cables
|
|
* B1 (lsb): Single Multicast Message Transmission Interface Enabled
|
|
* 0 = False Transmit on both interfaces
|
|
* 1 = True Transmit on one interface
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_load_balance, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_diag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_multi_recv, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_cross_cable, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_multi_trans, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_lr_get_info_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 MaxMsgNumDiff;
|
|
guint8 LRFlags;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Information Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"LAN Redundancy Get Information Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_get_info_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_rsp_lr_attrs_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
MaxMsgNumDiff = tvb_get_guint8(tvb, offset);
|
|
switch (MaxMsgNumDiff) {
|
|
case 0:
|
|
case 1:
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_lr_get_info_rsp_lr_max_msg_num_diff,
|
|
tvb, offset, 1, MaxMsgNumDiff,
|
|
"Do not detect a fault (%u)",
|
|
MaxMsgNumDiff);
|
|
break;
|
|
|
|
default:
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_rsp_lr_max_msg_num_diff,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
LRFlags = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_lr_get_info_rsp_lr_flags(tvb, offset, sub_tree, LRFlags);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_rsp_diagnostic_msg_intvl, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_rsp_aging_time, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_send_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_recv_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_send_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_recv_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.1.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_lr_get_info_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Information Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"LAN Redundancy Get Information Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_get_info_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_lr_get_info_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_info_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.2. LAN Redundancy Put Information (Confirmed Service Id = 2)
|
|
* 6.5.4.2.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_lr_put_info_req_lr_flags(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"LAN Redundancy Flags: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_put_info_req_lr_flags);
|
|
|
|
/*
|
|
* Bits 6-8: Reserved (not used) = 0
|
|
* Bit 5: Load Balancing Enabled
|
|
* 0 = False Do not do load balancing
|
|
* 1 = True Do load balancing
|
|
* Bit 4: Diagnosis Using Own Messages Enabled
|
|
* 0 = False Do not use own diagnostic messages for diagnosis
|
|
* 1 = True Use own diagnostic messages for diagnosis
|
|
* Bit 3: Single Multicast Message Reception Interface Enabled
|
|
* 0 = False Listen for multicast addresses
|
|
* on both interfaces
|
|
* 1 = True Listen for multicast addresses
|
|
* on one interface
|
|
* if zero or one fault detected
|
|
* in network status table
|
|
* Bit 2: Crossed Cable Detection Enabled
|
|
* 0 = False Do not detect crossed cables
|
|
* 1 = True Detect crossed cables
|
|
* B1 (lsb): Single Multicast Message Transmission Interface Enabled
|
|
* 0 = False Transmit on both interfaces
|
|
* 1 = True Transmit on one interface
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_load_balance, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_diag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_multi_recv, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_cross_cable, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_multi_trans, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_lr_put_info_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 MaxMsgNumDiff;
|
|
guint8 LRFlags;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Put Information Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"LAN Redundancy Put Information Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_put_info_req);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_req_lr_attrs_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
MaxMsgNumDiff = tvb_get_guint8(tvb, offset);
|
|
switch (MaxMsgNumDiff) {
|
|
case 0:
|
|
case 1:
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_lr_put_info_req_lr_max_msg_num_diff,
|
|
tvb, offset, 1, MaxMsgNumDiff,
|
|
"Do not detect a fault (%u)",
|
|
MaxMsgNumDiff);
|
|
break;
|
|
|
|
default:
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_req_lr_max_msg_num_diff,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
LRFlags = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_lr_put_info_req_lr_flags(tvb, offset, sub_tree, LRFlags);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_req_diagnostic_msg_intvl, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_req_aging_time, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_req_diagnostic_msg_if_a_send_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_req_diagnostic_msg_if_a_recv_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_req_diagnostic_msg_if_b_send_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_req_diagnostic_msg_if_b_recv_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.2.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_lr_put_info_rsp_lr_flags(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"LAN Redundancy Flags: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_put_info_rsp_lr_flags);
|
|
|
|
/*
|
|
* Bits 6-8: Reserved (not used) = 0
|
|
* Bit 5: Load Balancing Enabled
|
|
* 0 = False Do not do load balancing
|
|
* 1 = True Do load balancing
|
|
* Bit 4: Diagnosis Using Own Messages Enabled
|
|
* 0 = False Do not use own diagnostic messages for diagnosis
|
|
* 1 = True Use own diagnostic messages for diagnosis
|
|
* Bit 3: Single Multicast Message Reception Interface Enabled
|
|
* 0 = False Listen for multicast addresses
|
|
* on both interfaces
|
|
* 1 = True Listen for multicast addresses
|
|
* on one interface
|
|
* if zero or one fault detected
|
|
* in network status table
|
|
* Bit 2: Crossed Cable Detection Enabled
|
|
* 0 = False Do not detect crossed cables
|
|
* 1 = True Detect crossed cables
|
|
* B1 (lsb): Single Multicast Message Transmission Interface Enabled
|
|
* 0 = False Transmit on both interfaces
|
|
* 1 = True Transmit on one interface
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_load_balance, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_diag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_multi_recv, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_cross_cable, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_multi_trans, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_lr_put_info_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 MaxMsgNumDiff;
|
|
guint8 LRFlags;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Put Information Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"LAN Redundancy Put Information Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_put_info_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_rsp_lr_attrs_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
MaxMsgNumDiff = tvb_get_guint8(tvb, offset);
|
|
switch (MaxMsgNumDiff) {
|
|
case 0:
|
|
case 1:
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_lr_put_info_rsp_lr_max_msg_num_diff,
|
|
tvb, offset, 1, MaxMsgNumDiff,
|
|
"Do not detect a fault (%u)",
|
|
MaxMsgNumDiff);
|
|
break;
|
|
|
|
default:
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_rsp_lr_max_msg_num_diff,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
LRFlags = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_lr_put_info_rsp_lr_flags(tvb, offset, sub_tree, LRFlags);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_rsp_diagnostic_msg_intvl, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_rsp_aging_time, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_send_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_recv_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_send_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_recv_addr,
|
|
tvb, offset, 16, ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.2.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_lr_put_info_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Put Information Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"LAN Redundancy Put Information Error");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_put_info_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree, hf_ff_lr_put_info_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_put_info_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.3. LAN Redundancy Get Statistics (Confirmed Service Id = 3)
|
|
* 6.5.4.3.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_lr_get_statistics_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Statistics Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
if (length) {
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"LAN Redundancy Get Statistics Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_get_statistics_req);
|
|
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.3.2. Response Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_lr_get_statistics_rsp_x_cable_stat(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint32 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"List of Crossed Cable Status (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_lr_get_statistics_rsp_list_of_x_cable_stat);
|
|
|
|
for (d = 0; d < value; d++) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_rsp_x_cable_stat, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
|
|
offset += 4;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_lr_get_statistics_rsp(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint32 NumXcableStat;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Statistics Response");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"LAN Redundancy Get Statistics Response");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_get_statistics_rsp);
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_a,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_a,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_a,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_b,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_b,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_b,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
NumXcableStat = tvb_get_ntohl(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_rsp_num_x_cable_stat, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
if (NumXcableStat) {
|
|
dissect_ff_msg_lr_get_statistics_rsp_x_cable_stat(tvb,
|
|
offset, sub_tree, NumXcableStat);
|
|
offset += 4 * NumXcableStat;
|
|
length -= 4 * NumXcableStat;
|
|
}
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.3.3. Error Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_lr_get_statistics_err(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint8 ErrorClass;
|
|
guint8 ErrorCode;
|
|
const char *error_code;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Statistics Error");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"LAN Redundancy Get Statistics Error");
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_lr_get_statistics_err);
|
|
|
|
ErrorClass = tvb_get_guint8(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
ErrorCode = tvb_get_guint8(tvb, offset);
|
|
error_code = val_to_str_err_code(ErrorClass, ErrorCode);
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_lr_get_statistics_err_err_code,
|
|
tvb, offset, 1, ErrorCode,
|
|
"%s (%u)", error_code, ErrorCode);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_get_statistics_err_additional_desc,
|
|
tvb, offset, 16, ENC_ASCII|ENC_NA);
|
|
offset += 16;
|
|
length -= 16;
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.4. Diagnostic Message (Unconfirmed Service Id = 1)
|
|
* 6.5.4.4.1. Request Message Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_diagnostic_msg_req_dup_detection_stat(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Duplicate Detection State: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_lr_diagnostic_msg_req_dup_detection_stat);
|
|
|
|
/*
|
|
* Bits 3-8: Reserved, set to 0.
|
|
* Bit 2: 1 = Duplicate PD Tag Detected
|
|
* 0 = Duplicate PD Tag Not Detected
|
|
* Bit 18: 1 = Duplicate Device Index Detected
|
|
* 0 = Duplicate Device Index Not Detected
|
|
*/
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_diagnostic_msg_req_dup_detection_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_diagnostic_msg_req_dup_detection_state_pd_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_lr_diagnostic_msg_req_dup_detection_state_device, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_diagnostic_msg_req_if_a_to_a_status(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint32 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"List of Interface AtoA Statuses (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_lr_diagnostic_msg_req_a_to_a_status);
|
|
|
|
for (d = 0; d < value; d++) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_if_a_to_a_status,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
|
|
offset += 4;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_diagnostic_msg_req_if_b_to_a_status(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint32 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"List of Interface BtoA Statuses (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_lr_diagnostic_msg_req_b_to_a_status);
|
|
|
|
for (d = 0; d < value; d++) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_if_b_to_a_status,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
|
|
offset += 4;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_diagnostic_msg_req_if_a_to_b_status(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint32 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"List of Interface AtoB Statuses (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_lr_diagnostic_msg_req_a_to_b_status);
|
|
|
|
for (d = 0; d < value; d++) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_if_a_to_b_status,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
|
|
offset += 4;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_diagnostic_msg_req_if_b_to_b_status(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint32 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint d;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
|
|
"List of Interface BtoB Statuses (%u bytes)", 4 * value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_lr_diagnostic_msg_req_b_to_b_status);
|
|
|
|
for (d = 0; d < value; d++) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_if_b_to_b_status,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
|
|
offset += 4;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
dissect_ff_msg_diagnostic_msg_req(
|
|
tvbuff_t *tvb, gint offset,
|
|
guint32 length, packet_info *pinfo, proto_tree *tree)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
guint16 DeviceIndex;
|
|
guint8 DuplicateDetectionState;
|
|
guint16 NumOfInterfaceStatuses;
|
|
|
|
col_set_str(pinfo->cinfo, COL_INFO, "Diagnostic Message Request");
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, length,
|
|
"Diagnostic Message Request");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_lr_diagnostic_msg_req);
|
|
|
|
DeviceIndex = tvb_get_ntohs(tvb, offset);
|
|
if (DeviceIndex) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
} else {
|
|
proto_tree_add_uint_format_value(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_dev_idx,
|
|
tvb, offset, 2, DeviceIndex,
|
|
"Index not assigned (%u)", DeviceIndex);
|
|
}
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_num_of_network_ifs,
|
|
tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_transmission_if, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_diagnostic_msg_intvl,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
length -= 4;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
|
|
offset += 32;
|
|
length -= 32;
|
|
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
DuplicateDetectionState = tvb_get_guint8(tvb, offset);
|
|
dissect_ff_msg_diagnostic_msg_req_dup_detection_stat(tvb,
|
|
offset, sub_tree, DuplicateDetectionState);
|
|
offset += 1;
|
|
length -= 1;
|
|
|
|
NumOfInterfaceStatuses = tvb_get_ntohs(tvb, offset);
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_lr_diagnostic_msg_req_num_of_if_statuses, tvb, offset, 2, ENC_BIG_ENDIAN);
|
|
offset += 2;
|
|
length -= 2;
|
|
|
|
if (NumOfInterfaceStatuses) {
|
|
dissect_ff_msg_diagnostic_msg_req_if_a_to_a_status(tvb,
|
|
offset, sub_tree, NumOfInterfaceStatuses);
|
|
offset += 4 * NumOfInterfaceStatuses;
|
|
length -= 4 * NumOfInterfaceStatuses;
|
|
|
|
dissect_ff_msg_diagnostic_msg_req_if_b_to_a_status(tvb,
|
|
offset, sub_tree, NumOfInterfaceStatuses);
|
|
offset += 4 * NumOfInterfaceStatuses;
|
|
length -= 4 * NumOfInterfaceStatuses;
|
|
|
|
dissect_ff_msg_diagnostic_msg_req_if_a_to_b_status(tvb,
|
|
offset, sub_tree, NumOfInterfaceStatuses);
|
|
offset += 4 * NumOfInterfaceStatuses;
|
|
length -= 4 * NumOfInterfaceStatuses;
|
|
|
|
dissect_ff_msg_diagnostic_msg_req_if_b_to_b_status(tvb,
|
|
offset, sub_tree, NumOfInterfaceStatuses);
|
|
offset += 4 * NumOfInterfaceStatuses;
|
|
length -= 4 * NumOfInterfaceStatuses;
|
|
}
|
|
|
|
if (length) {
|
|
proto_tree_add_text(sub_tree, tvb, offset, length,
|
|
"[Unknown] (%u bytes)", length);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.5. Service-Specific Parameters
|
|
*/
|
|
static void
|
|
dissect_ff_msg_body(tvbuff_t *tvb, gint offset, guint32 length,
|
|
packet_info *pinfo, proto_tree *tree,
|
|
guint8 ProtocolAndType, guint8 Service, guint32 FDAAddress)
|
|
{
|
|
proto_item *hidden_item;
|
|
guint16 message = 0;
|
|
|
|
message = ((guint16)ProtocolAndType) << 8;
|
|
message |= (guint16)Service;
|
|
|
|
switch (message) {
|
|
case FDA_MSG_SESSION_OPEN_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_open_sess, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_open_sess_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fda_open_sess_req(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case FDA_MSG_SESSION_OPEN_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_open_sess, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_open_sess_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fda_open_sess_rsp(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case FDA_MSG_SESSION_OPEN_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_open_sess, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_open_sess_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fda_open_sess_err(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case FDA_MSG_SESSION_IDLE_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_idle, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_idle_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fda_idle_req(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case FDA_MSG_SESSION_IDLE_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_idle, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_idle_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fda_idle_rsp(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case FDA_MSG_SESSION_IDLE_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_idle, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fda_idle_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fda_idle_err(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_FIND_TAG_QUERY_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_find_tag_query, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_find_tag_query_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_find_tag_query_req(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_FIND_TAG_REPLY_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_find_tag_reply, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_find_tag_reply_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_find_tag_reply_req(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_IDENTIFY_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_id, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_id_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_id_req(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_IDENTIFY_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_id, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_id_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_id_rsp(tvb, offset, length,
|
|
pinfo, tree, FDAAddress);
|
|
break;
|
|
|
|
case SM_MSG_IDENTIFY_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_id, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_id_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_id_err(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_CLEAR_ADDRESS_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_addr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_addr_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_clear_addr_req(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_CLEAR_ADDRESS_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_addr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_addr_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_clear_addr_rsp(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_CLEAR_ADDRESS_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_addr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_addr_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_clear_addr_err(tvb, offset, length,
|
|
pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_SET_ASSIGNMENT_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_set_assign_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_set_assign_info_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_set_assign_info_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_SET_ASSIGNMENT_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_set_assign_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_set_assign_info_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_set_assign_info_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_SET_ASSIGNMENT_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_set_assign_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_set_assign_info_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_set_assign_info_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_CLEAR_ASSIGNMENT_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_assign_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_assign_info_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_clear_assign_info_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_CLEAR_ASSIGNMENT_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_assign_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_assign_info_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_clear_assign_info_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_CLEAR_ASSIGNMENT_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_assign_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_clear_assign_info_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_clear_assign_info_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case SM_MSG_DEVICE_ANNUNCIATION_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_dev_annunc, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_sm_dev_annunc_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_sm_dev_annunc_req(tvb, offset,
|
|
length, pinfo, tree, FDAAddress);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_ABORT_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_abort, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_abort_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_abort_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_STATUS_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_status, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_status_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_status_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_STATUS_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_status, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_status_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_status_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_STATUS_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_status, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_status_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_status_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_UNSOLICITED_STATUS_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_unsolicited_status, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_unsolicited_status_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_unsolicited_status_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_IDENTIFY_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_id, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_id_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_id_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_IDENTIFY_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_id, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_id_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_id_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_IDENTIFY_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_id, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_id_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_id_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GET_OD_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_get_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_get_od_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_get_od_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GET_OD_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_get_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_get_od_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_get_od_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GET_OD_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_get_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_get_od_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_get_od_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_PUT_OD_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_put_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_put_od_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_put_od_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_PUT_OD_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_put_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_put_od_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_put_od_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_PUT_OD_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_put_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_put_od_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_put_od_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_PUT_OD_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_put_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_put_od_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_put_od_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_PUT_OD_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_put_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_put_od_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_put_od_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_PUT_OD_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_put_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_put_od_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_put_od_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_TERMINATE_PUT_OD_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_put_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_put_od_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_terminate_put_od_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_TERMINATE_PUT_OD_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_put_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_put_od_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_terminate_put_od_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_TERMINATE_PUT_OD_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_put_od, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_put_od_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_terminate_put_od_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GENERIC_INITIATE_DOWNLOAD_SEQUENCE_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_init_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_init_download_seq_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_generic_init_download_sequence_req(
|
|
tvb, offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GENERIC_INITIATE_DOWNLOAD_SEQUENCE_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_init_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_init_download_seq_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_generic_init_download_sequence_rsp(
|
|
tvb, offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GENERIC_INITIATE_DOWNLOAD_SEQUENCE_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_init_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_init_download_seq_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_generic_init_download_sequence_err(
|
|
tvb, offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GENERIC_DOWNLOAD_SEGMENT_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_download_seg, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_download_seg_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_generic_download_segment_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GENERIC_DOWNLOAD_SEGMENT_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_download_seg, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_download_seg_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_generic_download_segment_rsp(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GENERIC_DOWNLOAD_SEGMENT_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_download_seg, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_download_seg_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_generic_download_segment_err(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_terminate_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_terminate_download_seq_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_generic_terminate_download_sequence_req(
|
|
tvb, offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_terminate_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_terminate_download_seq_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_generic_terminate_download_sequence_rsp(
|
|
tvb, offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_terminate_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_gen_terminate_download_seq_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_generic_terminate_download_sequence_err(
|
|
tvb, offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_DOWNLOAD_SEQUENCE_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_download_seq_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_download_sequence_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_DOWNLOAD_SEQUENCE_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_download_seq_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_download_sequence_rsp(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_DOWNLOAD_SEQUENCE_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_download_seq_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_download_sequence_err(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DOWNLOAD_SEGMENT_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_download_seg, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_download_seg_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_download_segment_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DOWNLOAD_SEGMENT_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_download_seg, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_download_seg_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_download_segment_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DOWNLOAD_SEGMENT_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_download_seg, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_download_seg_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_download_segment_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_TERMINATE_DOWNLOAD_SEQUENCE_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_download_seq_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_terminate_download_sequence_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_TERMINATE_DOWNLOAD_SEQUENCE_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_download_seq_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_terminate_download_sequence_rsp(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_TERMINATE_DOWNLOAD_SEQUENCE_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_download_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_download_seq_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_terminate_download_sequence_err(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_UPLOAD_SEQUENCE_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_upload_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_upload_seq_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_upload_seq_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_UPLOAD_SEQUENCE_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_upload_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_upload_seq_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_upload_seq_rsp(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INITIATE_UPLOAD_SEQUENCE_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_upload_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_init_upload_seq_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_init_upload_seq_err(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_UPLOAD_SEGMENT_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_upload_seg, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_upload_seg_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_upload_segment_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_UPLOAD_SEGMENT_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_upload_seg, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_upload_seg_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_upload_segment_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_UPLOAD_SEGMENT_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_upload_seg, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_upload_seg_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_upload_segment_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_TERMINATE_UPLOAD_SEQUENCE_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_upload_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_upload_seq_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_terminate_upload_seq_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_TERMINATE_UPLOAD_SEQUENCE_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_upload_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_upload_seq_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_terminate_upload_seq_rsp(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_TERMINATE_UPLOAD_SEQUENCE_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_upload_seq, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_terminate_upload_seq_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_terminate_upload_seq_err(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_REQUEST_DOMAIN_DOWNLOAD_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_download, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_download_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_req_dom_download_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_REQUEST_DOMAIN_DOWNLOAD_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_download, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_download_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_req_dom_download_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_REQUEST_DOMAIN_DOWNLOAD_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_download, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_download_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_req_dom_download_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_REQUEST_DOMAIN_UPLOAD_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_upload, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_upload_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_req_dom_upload_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_REQUEST_DOMAIN_UPLOAD_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_upload, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_upload_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_req_dom_upload_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_REQUEST_DOMAIN_UPLOAD_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_upload, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_req_dom_upload_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_req_dom_upload_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_CREATE_PI_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_create_pi, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_create_pi_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_create_pi_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_CREATE_PI_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_create_pi, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_create_pi_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_create_pi_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_CREATE_PI_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_create_pi, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_create_pi_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_create_pi_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DELETE_PI_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_pi, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_pi_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_del_pi_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DELETE_PI_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_pi, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_pi_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_del_pi_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DELETE_PI_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_pi, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_pi_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_del_pi_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_START_PI_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_start, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_start_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_start_pi_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_START_PI_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_start, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_start_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_start_pi_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_START_PI_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_start, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_start_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_start_pi_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_STOP_PI_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_stop, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_stop_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_stop_pi_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_STOP_PI_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_stop, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_stop_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_stop_pi_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_STOP_PI_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_stop, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_stop_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_stop_pi_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_RESUME_PI_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_resume, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_resume_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_resume_pi_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_RESUME_PI_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_resume, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_resume_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_resume_pi_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_RESUME_PI_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_resume, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_resume_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_resume_pi_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_RESET_PI_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_reset, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_reset_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_reset_pi_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_RESET_PI_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_reset, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_reset_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_reset_pi_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_RESET_PI_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_reset, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_reset_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_reset_pi_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_KILL_PI_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_kill, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_kill_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_kill_pi_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_KILL_PI_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_kill, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_kill_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_kill_pi_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_KILL_PI_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_kill, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_kill_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_kill_pi_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_READ_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_read_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_READ_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_read_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_READ_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_read_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_READ_SUBINDEX_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read_with_subidx, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read_with_subidx_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_read_subindex_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_READ_SUBINDEX_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read_with_subidx, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read_with_subidx_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_read_subindex_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_READ_SUBINDEX_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read_with_subidx, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_read_with_subidx_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_read_subindex_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_WRITE_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_write_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_WRITE_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_write_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_WRITE_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_write_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_WRITE_SUBINDEX_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write_with_subidx, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write_with_subidx_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_write_subindex_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_WRITE_SUBINDEX_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write_with_subidx, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write_with_subidx_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_write_subindex_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_WRITE_SUBINDEX_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write_with_subidx, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_write_with_subidx_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_write_subindex_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DEFINE_VARIABLE_LIST_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_def_variable_list, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_def_variable_list_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_def_variable_list_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DEFINE_VARIABLE_LIST_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_def_variable_list, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_def_variable_list_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_def_variable_list_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DEFINE_VARIABLE_LIST_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_def_variable_list, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_def_variable_list_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_def_variable_list_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DELETE_VARIABLE_LIST_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_variable_list, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_variable_list_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_del_variable_list_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DELETE_VARIABLE_LIST_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_variable_list, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_variable_list_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_del_variable_list_rsp(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_DELETE_VARIABLE_LIST_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_variable_list, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_del_variable_list_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_del_variable_list_err(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INFO_REPORT_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_info_report, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_info_report_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_info_report_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INFO_REPORT_SUBINDEX_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_info_report_with_subidx, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_info_report_with_subidx_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_info_report_subindex_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INFO_REPORT_CHANGE_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_info_report_on_change, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_info_report_on_change_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_info_report_change_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_INFO_REPORT_CHANGE_SUBINDEX_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_info_report_on_change_with_subidx, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_info_report_on_change_with_subidx_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_info_report_change_subindex_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_EVENT_NOTIFICATION_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_ev_notification, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_ev_notification_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_ev_notification_req(tvb, offset,
|
|
length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_ALTER_EVENT_CONDITION_MONITORING_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_req(
|
|
tvb, offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_ALTER_EVENT_CONDITION_MONITORING_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_rsp(
|
|
tvb, offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_ALTER_EVENT_CONDITION_MONITORING_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_alter_ev_condition_monitoring_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_err(
|
|
tvb, offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_ACKNOWLEDGE_EVENT_NOTIFICATION_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_ack_ev_notification, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_ack_ev_notification_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_ack_ev_notification_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_ACKNOWLEDGE_EVENT_NOTIFICATION_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_ack_ev_notification, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_ack_ev_notification_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_ack_ev_notification_rsp(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case FMS_MSG_ACKNOWLEDGE_EVENT_NOTIFICATION_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_ack_ev_notification, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_fms_ack_ev_notification_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_fms_ack_ev_notification_err(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case LAN_MSG_GET_INFO_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_info_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_lr_get_info_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case LAN_MSG_GET_INFO_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_info_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_lr_get_info_rsp(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case LAN_MSG_GET_INFO_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_info_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_lr_get_info_err(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case LAN_MSG_PUT_INFO_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_put_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_put_info_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_lr_put_info_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case LAN_MSG_PUT_INFO_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_put_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_put_info_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_lr_put_info_rsp(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case LAN_MSG_PUT_INFO_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_put_info, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_put_info_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_lr_put_info_err(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case LAN_MSG_GET_STATISTICS_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_statistics, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_statistics_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_lr_get_statistics_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case LAN_MSG_GET_STATISTICS_RSP:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_statistics, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_statistics_rsp, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_lr_get_statistics_rsp(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case LAN_MSG_GET_STATISTICS_ERR:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_statistics, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_get_statistics_err, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_lr_get_statistics_err(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
case LAN_MSG_DIAG_REQ:
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_diagnostic_msg, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
hidden_item = proto_tree_add_boolean(tree,
|
|
hf_ff_lr_diagnostic_msg_req, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
dissect_ff_msg_diagnostic_msg_req(tvb,
|
|
offset, length, pinfo, tree);
|
|
break;
|
|
|
|
default:
|
|
col_add_fstr(pinfo->cinfo, COL_INFO,
|
|
"Unknown Service (Protocol Id: %u, Confirmed Msg Type: %u) "
|
|
"(%s Service Id = %u)",
|
|
(ProtocolAndType & PROTOCOL_MASK) >> 2,
|
|
ProtocolAndType & TYPE_MASK,
|
|
(Service & SERVICE_CONFIRMED_FLAG_MASK)?
|
|
"Confirmed": "Unconfirmed",
|
|
Service & SERVICE_SERVICE_ID_MASK);
|
|
|
|
if (length) {
|
|
proto_tree_add_text(tree, tvb, offset, length,
|
|
"[Unknown Service] (%u bytes)", length);
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.4. Message Trailer
|
|
*/
|
|
static void
|
|
dissect_ff_msg_trailer(tvbuff_t *tvb,
|
|
gint offset, guint32 length, proto_tree *tree, guint8 Options)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
proto_item *hidden_item;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
hidden_item = proto_tree_add_boolean(tree, hf_ff_fda_msg_trailer, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
ti = proto_tree_add_text(tree,
|
|
tvb, offset, length, "FDA Message Trailer");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fda_msg_trailer);
|
|
|
|
if (Options & OPTION_MESSAGE_NUMBER_MASK) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_msg_trailer_msg_num, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
}
|
|
|
|
if (Options & OPTION_INVOKE_ID_MASK) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_msg_trailer_invoke_id, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
}
|
|
|
|
if (Options & OPTION_TIME_STAMP_MASK) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_msg_trailer_time_stamp, tvb, offset, 8, ENC_BIG_ENDIAN);
|
|
offset += 8;
|
|
}
|
|
|
|
if (Options & OPTION_EXTENDED_CNTRL_MASK) {
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_msg_trailer_extended_control_field,
|
|
tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
/* offset += 4; */
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* Service
|
|
*/
|
|
|
|
static void
|
|
dissect_ff_msg_hdr_srv(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 proto_and_type, guint8 service)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1, "Service: 0x%02x", service);
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fda_msg_hdr_srv);
|
|
|
|
/* Bit 8: Confirmed Flag */
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_srv_confirm_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
|
|
/* Bits 1-7 Service Id of the service */
|
|
switch (proto_and_type & PROTOCOL_MASK) {
|
|
case PROTOCOL_FDA:
|
|
if (service & SERVICE_CONFIRMED_FLAG_MASK) {
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fda_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
} else {
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fda_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
break;
|
|
|
|
case PROTOCOL_SM:
|
|
if (service & SERVICE_CONFIRMED_FLAG_MASK) {
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_srv_sm_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
} else {
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_srv_sm_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
break;
|
|
|
|
case PROTOCOL_FMS:
|
|
if (service & SERVICE_CONFIRMED_FLAG_MASK) {
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fms_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
} else {
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fms_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
break;
|
|
|
|
case PROTOCOL_LAN:
|
|
if (service & SERVICE_CONFIRMED_FLAG_MASK) {
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_srv_lan_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
} else {
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_srv_lan_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_srv_service_id, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* Protocol Id And Confirmed Msg Type
|
|
*/
|
|
|
|
static void
|
|
dissect_ff_msg_hdr_proto_and_type(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1,
|
|
"Protocol Id And Confirmed Msg Type: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti,
|
|
ett_ff_fda_msg_hdr_proto_and_type);
|
|
|
|
if (!sub_tree) {
|
|
return;
|
|
}
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_proto_id, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_confirm_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* Options
|
|
*/
|
|
|
|
static void
|
|
dissect_ff_msg_hdr_opts(tvbuff_t *tvb,
|
|
gint offset, proto_tree *tree, guint8 value)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
ti = proto_tree_add_text(tree, tvb, offset, 1, "Options: 0x%02x", value);
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fda_msg_hdr_opts);
|
|
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_opts_msg_num, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_opts_invoke_id, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_opts_timestamp, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_opts_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_opts_ext_ctrl, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
proto_tree_add_item(sub_tree, hf_ff_hdr_opts_pad, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* 6.3. Message Header
|
|
*/
|
|
static void
|
|
dissect_ff_msg_hdr(tvbuff_t *tvb,
|
|
proto_tree *tree, guint8 Options, guint8 ProtocolAndType, guint8 Service)
|
|
{
|
|
proto_tree *sub_tree;
|
|
proto_item *ti;
|
|
proto_item *hidden_item;
|
|
gint offset = 0;
|
|
|
|
if (!tree) {
|
|
return;
|
|
}
|
|
|
|
hidden_item = proto_tree_add_boolean(tree, hf_ff_fda_msg_hdr, tvb, 0, 0, 1);
|
|
PROTO_ITEM_SET_HIDDEN(hidden_item);
|
|
|
|
ti = proto_tree_add_text(tree,
|
|
tvb, offset, 12, "FDA Message Header");
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff_fda_msg_hdr);
|
|
|
|
/* FDA Message Version */
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_msg_hdr_ver, tvb, offset, 1, ENC_BIG_ENDIAN);
|
|
offset += 1;
|
|
|
|
/* Options */
|
|
dissect_ff_msg_hdr_opts(tvb, offset, sub_tree, Options);
|
|
offset += 1;
|
|
|
|
/* Protocol Id And Confirmed Msg Type */
|
|
dissect_ff_msg_hdr_proto_and_type(tvb,
|
|
offset, sub_tree, ProtocolAndType);
|
|
offset += 1;
|
|
|
|
/* Service */
|
|
dissect_ff_msg_hdr_srv(tvb,
|
|
offset, sub_tree, ProtocolAndType, Service);
|
|
offset += 1;
|
|
|
|
/* FDA Address */
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_msg_hdr_fda_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
offset += 4;
|
|
|
|
/* Message Length */
|
|
proto_tree_add_item(sub_tree,
|
|
hf_ff_fda_msg_hdr_len, tvb, offset, 4, ENC_BIG_ENDIAN);
|
|
/* offset += 4; */
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_ff(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
|
|
{
|
|
proto_tree *sub_tree = NULL;
|
|
proto_item *ti = NULL;
|
|
gint offset = 0;
|
|
|
|
guint8 Options = 0; /* Options */
|
|
guint8 ProtocolAndType = 0; /* Protocol Id And Confirmed Msg Type */
|
|
guint8 Service = 0; /* Service */
|
|
guint32 FDAAddress = 0; /* FDA Address */
|
|
guint32 length = 0; /* Message Length */
|
|
|
|
guint32 trailer_len = 0;
|
|
|
|
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FF");
|
|
|
|
Options = tvb_get_guint8(tvb, 1);
|
|
ProtocolAndType = tvb_get_guint8(tvb, 2);
|
|
Service = tvb_get_guint8(tvb, 3);
|
|
FDAAddress = tvb_get_ntohl(tvb, 4);
|
|
length = tvb_get_ntohl(tvb, 8);
|
|
|
|
if (tree) {
|
|
ti = proto_tree_add_item(tree, proto_ff, tvb, offset, length, ENC_NA);
|
|
sub_tree = proto_item_add_subtree(ti, ett_ff);
|
|
}
|
|
|
|
if (Options & OPTION_MESSAGE_NUMBER_MASK) {
|
|
length -= 4;
|
|
trailer_len += 4;
|
|
}
|
|
|
|
if (Options & OPTION_INVOKE_ID_MASK) {
|
|
length -= 4;
|
|
trailer_len += 4;
|
|
}
|
|
|
|
if (Options & OPTION_TIME_STAMP_MASK) {
|
|
length -= 8;
|
|
trailer_len += 8;
|
|
}
|
|
|
|
if (Options & OPTION_EXTENDED_CNTRL_MASK) {
|
|
length -= 4;
|
|
trailer_len += 4;
|
|
}
|
|
|
|
/*
|
|
* Header
|
|
*/
|
|
dissect_ff_msg_hdr(tvb, sub_tree, Options, ProtocolAndType, Service);
|
|
offset += 12;
|
|
length -= 12;
|
|
|
|
/*
|
|
* Service-Specific Parameters + User Data (optional)
|
|
*/
|
|
dissect_ff_msg_body(tvb, offset, length, pinfo, sub_tree,
|
|
ProtocolAndType, Service, FDAAddress);
|
|
offset += length;
|
|
|
|
/*
|
|
* Trailer (optional)
|
|
*/
|
|
if (trailer_len) {
|
|
dissect_ff_msg_trailer(tvb,
|
|
offset, trailer_len, sub_tree, Options);
|
|
/*offset += trailer_len;*/
|
|
}
|
|
|
|
return tvb_length(tvb);
|
|
}
|
|
|
|
|
|
static guint
|
|
get_ff_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
|
|
{
|
|
return (tvb_get_ntohl(tvb, offset + 8));
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_ff_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
|
|
{
|
|
/*
|
|
*
|
|
* 6.3. Message Header
|
|
*
|
|
* 0 1 2 3
|
|
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
* | Version | Options | Protocol/Type | Service |
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
* | FDA Address |
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
* | Message Length |
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
*
|
|
*/
|
|
|
|
tcp_dissect_pdus(tvb, pinfo, tree, ff_desegment,
|
|
12, get_ff_pdu_len, dissect_ff, data);
|
|
|
|
return tvb_reported_length(tvb);
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
dissect_ff_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
|
|
{
|
|
guint32 length;
|
|
|
|
/* Make sure at least the header is there */
|
|
if (tvb_length(tvb) < 12)
|
|
return 0;
|
|
|
|
length = tvb_get_ntohl(tvb, 8);
|
|
|
|
/* Make sure the length field is valid */
|
|
if ((length > tvb_reported_length(tvb)) ||
|
|
(length < 12))
|
|
return 0;
|
|
|
|
dissect_ff(tvb, pinfo, tree, data);
|
|
return tvb_reported_length(tvb);
|
|
}
|
|
|
|
|
|
|
|
void
|
|
proto_register_ff(void)
|
|
{
|
|
static hf_register_info hf[] = {
|
|
/*
|
|
* 6.3. Message Header
|
|
*/
|
|
{ &hf_ff_fda_msg_hdr,
|
|
{ "Message Header", "ff.hdr",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_msg_hdr_ver,
|
|
{ "FDA Message Version", "ff.hdr.ver",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_msg_hdr_fda_addr,
|
|
{ "FDA Address", "ff.hdr.fda_addr",
|
|
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_msg_hdr_len,
|
|
{ "Message Length", "ff.hdr.len",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.4. Message Trailer
|
|
*/
|
|
{ &hf_ff_fda_msg_trailer,
|
|
{ "Message Trailer", "ff.trailer",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_msg_trailer_msg_num,
|
|
{ "Message Number", "ff.trailer.msg_num",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_msg_trailer_invoke_id,
|
|
{ "Invoke Id", "ff.trailer.invoke_id",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_msg_trailer_time_stamp,
|
|
{ "Time Stamp", "ff.trailer.time_stamp",
|
|
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_msg_trailer_extended_control_field,
|
|
{ "Extended Control Field", "ff.trailer.extended_control_field",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1. FDA Session Management Services
|
|
*/
|
|
{ &hf_ff_fda,
|
|
{ "FDA Session Management Service", "ff.fda",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_srv_confirm_flag,
|
|
{ "Confirmed Flag", "ff.hdr_srv.confirm_flag",
|
|
FT_BOOLEAN, 8, TFS(&tfs_confirmed_unconfirmed), SERVICE_CONFIRMED_FLAG_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_srv_service_id,
|
|
{ "Service Id (Unknown)", "ff.hdr_srv.service_id",
|
|
FT_UINT8, BASE_DEC, NULL, SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_srv_fda_service_id_confirm,
|
|
{ "Service Id", "ff.hdr_srv.fda.service_id.confirm",
|
|
FT_UINT8, BASE_DEC, VALS(names_fda_confirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_srv_fda_service_id_unconfirm,
|
|
{ "Service Id", "ff.hdr_srv.fda.service_id.unconfirm",
|
|
FT_UINT8, BASE_DEC, VALS(names_fda_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_srv_sm_service_id_confirm,
|
|
{ "Service Id", "ff.hdr_srv.sm.service_id.confirm",
|
|
FT_UINT8, BASE_DEC, VALS(names_sm_confirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_srv_sm_service_id_unconfirm,
|
|
{ "Service Id", "ff.hdr_srv.sm.service_id.unconfirm",
|
|
FT_UINT8, BASE_DEC, VALS(names_sm_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_srv_fms_service_id_confirm,
|
|
{ "Service Id", "ff.hdr_srv.fms.service_id.confirm",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_fms_confirmed_ext, SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_srv_fms_service_id_unconfirm,
|
|
{ "Service Id", "ff.hdr_srv.fms.service_id.unconfirm",
|
|
FT_UINT8, BASE_DEC, VALS(names_fms_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_srv_lan_service_id_confirm,
|
|
{ "Service Id", "ff.hdr_srv.lan.service_id.confirm",
|
|
FT_UINT8, BASE_DEC, VALS(names_lan_confirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_srv_lan_service_id_unconfirm,
|
|
{ "Service Id", "ff.hdr_srv.lan.service_id.unconfirm",
|
|
FT_UINT8, BASE_DEC, VALS(names_lan_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_proto_id,
|
|
{ "Service Id", "ff.hdr.proto_id",
|
|
FT_UINT8, BASE_DEC, VALS(names_proto), PROTOCOL_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_confirm_msg_type,
|
|
{ "Service Id", "ff.hdr.confirm_msg_type",
|
|
FT_UINT8, BASE_DEC, VALS(names_type), TYPE_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_opts_msg_num,
|
|
{ "Message Number in the Trailer", "ff.hdr.opts.msg_num",
|
|
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_MESSAGE_NUMBER_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_opts_invoke_id,
|
|
{ "Invoke Id in the Trailer", "ff.hdr.opts.invoke_id",
|
|
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_INVOKE_ID_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_opts_timestamp,
|
|
{ "Time Stamp in the Trailer", "ff.hdr.opts.timestamp",
|
|
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_TIME_STAMP_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_opts_reserved,
|
|
{ "Reserved", "ff.hdr.opts.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, OPTION_RESERVED_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_opts_ext_ctrl,
|
|
{ "Extended Control in the Trailer", "ff.hdr.opts.ext_ctrl",
|
|
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_EXTENDED_CNTRL_MASK, NULL, HFILL } },
|
|
|
|
{ &hf_ff_hdr_opts_pad,
|
|
{ "Pad Length", "ff.hdr.opts.pad",
|
|
FT_UINT8, BASE_HEX, NULL, OPTION_PAD_LENGTH_MASK, NULL, HFILL } },
|
|
|
|
|
|
/*
|
|
* 6.5.1.1. FDA Open Session (Confirmed Service Id = 1)
|
|
*/
|
|
{ &hf_ff_fda_open_sess,
|
|
{ "FDA Open Session", "ff.fda.open_sess",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.1.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fda_open_sess_req,
|
|
{ "FDA Open Session Request", "ff.fda.open_sess.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_req_sess_idx,
|
|
{ "Session Index", "ff.fda.open_sess.req.sess_idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_req_max_buf_siz,
|
|
{ "Max Buffer Size", "ff.fda.open_sess.req.max_buf_siz",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_req_max_msg_len,
|
|
{ "Max Message Length", "ff.fda.open_sess.req.max_msg_len",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_req_reserved,
|
|
{ "Reserved", "ff.fda.open_sess.req.reserved",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_req_nma_conf_use,
|
|
{ "NMA Configuration Use", "ff.fda.open_sess.req.nma_conf_use",
|
|
FT_UINT8, BASE_DEC, VALS(names_nma_conf_use), 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_req_inactivity_close_time,
|
|
{ "Inactivity Close Time",
|
|
"ff.fda.open_sess.req.inactivity_close_time",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_req_transmit_delay_time,
|
|
{ "Transmit Delay Time", "ff.fda.open_sess.req.transmit_delay_time",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_req_pd_tag,
|
|
{ "PD Tag", "ff.fda.open_sess.req.pd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.1.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fda_open_sess_rsp,
|
|
{ "FDA Open Session Response", "ff.fda.open_sess.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_rsp_sess_idx,
|
|
{ "Session Index", "ff.fda.open_sess.rsp.sess_idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_rsp_max_buf_siz,
|
|
{ "Max Buffer Size", "ff.fda.open_sess.rsp.max_buf_siz",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_rsp_max_msg_len,
|
|
{ "Max Message Length", "ff.fda.open_sess.rsp.max_msg_len",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_rsp_reserved,
|
|
{ "Reserved", "ff.fda.open_sess.rsp.reserved",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_rsp_nma_conf_use,
|
|
{ "NMA Configuration Use", "ff.fda.open_sess.rsp.nma_conf_use",
|
|
FT_UINT8, BASE_DEC, VALS(names_nma_conf_use), 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_rsp_inactivity_close_time,
|
|
{ "Inactivity Close Time",
|
|
"ff.fda.open_sess.rsp.inactivity_close_time",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_rsp_transmit_delay_time,
|
|
{ "Transmit Delay Time", "ff.fda.open_sess.rsp.transmit_delay_time",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_rsp_pd_tag,
|
|
{ "PD Tag", "ff.fda.open_sess.rsp.pd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.1.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fda_open_sess_err,
|
|
{ "FDA Open Session Error", "ff.fda.open_sess.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_err_err_class,
|
|
{ "Error Class", "ff.fda.open_sess.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_err_err_code,
|
|
{ "Error Code", "ff.fda.open_sess.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_err_additional_code,
|
|
{ "Additional Code", "ff.fda.open_sess.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_open_sess_err_additional_desc,
|
|
{ "Additional Description", "ff.fda.open_sess.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.2. FDA Idle (Confirmed Service Id = 3)
|
|
*/
|
|
{ &hf_ff_fda_idle,
|
|
{ "FDA Idle", "ff.fda.idle",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.2.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fda_idle_req,
|
|
{ "FDA Idle Request", "ff.fda.idle.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.2.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fda_idle_rsp,
|
|
{ "FDA Idle Response", "ff.fda.idle.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.1.2.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fda_idle_err,
|
|
{ "FDA Idle Error", "ff.fda.idle.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_idle_err_err_class,
|
|
{ "Error Class", "ff.fda.idle.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_idle_err_err_code,
|
|
{ "Error Code", "ff.fda.idle.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_idle_err_additional_code,
|
|
{ "Additional Code", "ff.fda.idle.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fda_idle_err_additional_desc,
|
|
{ "Additional Description", "ff.fda.idle.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2. SM Services
|
|
*/
|
|
{ &hf_ff_sm,
|
|
{ "SM Service", "ff.sm",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.1. SM Find Tag Query (Unconfirmed Service Id = 1)
|
|
*/
|
|
{ &hf_ff_sm_find_tag_query,
|
|
{ "SM Find Tag Query", "ff.sm.find_tag_query",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.1.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_find_tag_query_req,
|
|
{ "SM Find Tag Query Request", "ff.sm.find_tag_query.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_query_req_query_type,
|
|
{ "Query Type", "ff.sm.find_tag_query.req.query_type",
|
|
FT_UINT8, BASE_DEC, VALS(names_query_type), 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_query_req_idx,
|
|
{ "Element Id or VFD Reference or Device Index",
|
|
"ff.sm.find_tag_query.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_query_req_tag,
|
|
{ "PD Tag or Function Block Tag", "ff.sm.find_tag_query.req.tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_query_req_vfd_tag,
|
|
{ "VFD Tag", "ff.sm.find_tag_query.req.vfd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.2. SM Find Tag Reply (Unconfirmed Service Id = 2)
|
|
*/
|
|
{ &hf_ff_sm_find_tag_reply,
|
|
{ "SM Find Tag Reply", "ff.sm.find_tag_reply",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.2.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_find_tag_reply_req,
|
|
{ "SM Find Tag Reply Request", "ff.sm.find_tag_reply.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_query_type,
|
|
{ "Query Type", "ff.sm.find_tag_reply.req.query_type",
|
|
FT_UINT8, BASE_DEC, VALS(names_query_type), 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_h1_node_addr,
|
|
{ "Queried Object H1 Node Address",
|
|
"ff.sm.find_tag_reply.req.h1_node_addr",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_fda_addr_link_id,
|
|
{ "Queried Object FDA Address Link Id",
|
|
"ff.sm.find_tag_reply.req.fda_addr_link_id",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_vfd_ref,
|
|
{ "Queried Object VFD Reference",
|
|
"ff.sm.find_tag_reply.req.vfd_ref",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_od_idx,
|
|
{ "Queried Object OD Index", "ff.sm.find_tag_reply.req.od_idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_ip_addr,
|
|
{ "Queried Object IP Address", "ff.sm.find_tag_reply.req.ip_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_od_ver,
|
|
{ "Queried Object OD Version", "ff.sm.find_tag_reply.req.od_ver",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_dev_id,
|
|
{ "Queried Object Device ID", "ff.sm.find_tag_reply.req.dev_id",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_pd_tag,
|
|
{ "Queried Object PD Tag", "ff.sm.find_tag_reply.req.pd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_reserved,
|
|
{ "Reserved", "ff.sm.find_tag_reply.req.reserved",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_num_of_fda_addr_selectors,
|
|
{ "Number Of FDA Address Selectors",
|
|
"ff.sm.find_tag_reply.req.num_of_fda_addr_selectors",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_req_fda_addr_selector,
|
|
{ "FDA Address Selector",
|
|
"ff.sm.find_tag_reply.req.fda_addr_selector.fda_addr_selector",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_dup_reserved,
|
|
{ "Reserved",
|
|
"ff.sm.find_tag_reply.dup_reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_dup_pd_tag,
|
|
{ "Duplicate PD Tag",
|
|
"ff.sm.find_tag_reply.dup_pd_tag",
|
|
FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_find_tag_reply_dup_device,
|
|
{ "Duplicate Device Index",
|
|
"ff.sm.find_tag_reply.dup_device",
|
|
FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
|
|
|
|
|
|
/*
|
|
* 6.5.2.7. SM Identify (Unconfirmed Service Id = 16)
|
|
*/
|
|
{ &hf_ff_sm_id,
|
|
{ "SM Identify", "ff.sm.id",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
/*
|
|
* 6.5.2.3.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_id_req,
|
|
{ "SM Identify Request", "ff.sm.id.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.3.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_id_rsp,
|
|
{ "SM Identify Response", "ff.sm.id.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_idx,
|
|
{ "Device Index", "ff.sm.id.rsp.dev_idx",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_max_dev_idx,
|
|
{ "Max Device Index", "ff.sm.id.rsp.max_dev_idx",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_operational_ip_addr,
|
|
{ "Operational IP Address", "ff.sm.id.rsp.operational_ip_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_id,
|
|
{ "Device ID", "ff.sm.id.rsp.dev_id",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_pd_tag,
|
|
{ "PD Tag", "ff.sm.id.rsp.pd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_hse_repeat_time,
|
|
{ "HSE Repeat Time", "ff.sm.id.rsp.hse_repeat_time",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_lr_port,
|
|
{ "LAN Redundancy Port", "ff.sm.id.rsp.lr_port",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_reserved,
|
|
{ "Reserved", "ff.sm.id.rsp.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_annunc_ver_num,
|
|
{ "Annunciation Version Number", "ff.sm.id.rsp.annunc_ver_num",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_hse_dev_ver_num,
|
|
{ "HSE Device Version Number", "ff.sm.id.rsp.hse_dev_ver_num",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_num_of_entries,
|
|
{ "Number of Entries in Version Number List",
|
|
"ff.sm.id.rsp.num_of_entries",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_h1_live_list_h1_link_id,
|
|
{ "H1 Link Id", "ff.sm.id.rsp.h1_live_list.h1_link_id",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_h1_live_list_reserved,
|
|
{ "Reserved", "ff.sm.id.rsp.h1_live_list.reserved",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_h1_live_list_ver_num,
|
|
{ "Version Number", "ff.sm.id.rsp.h1_live_list.ver_num",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_h1_node_addr_ver_num_h1_node_addr,
|
|
{ "H1 Node Address",
|
|
"ff.sm.id.rsp.h1_node_addr_ver_num.h1_node_addr",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_h1_node_addr_ver_num_ver_num,
|
|
{ "Version Number", "ff.sm.id.rsp.h1_node_addr_ver_num.ver_num",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_smk_state_name,
|
|
{ "Name", "ff.sm.id.rsp.smk_state_name",
|
|
FT_UINT8, BASE_DEC, VALS(names_smk_state), 0xFE, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_smk_state_sync,
|
|
{ "Synchronized with SNTP Time Server", "ff.sm.id.rsp.smk_state_sync",
|
|
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_type_link,
|
|
{ "Linking Device", "ff.sm.id.rsp.dev_type.link",
|
|
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x80, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_type_iogateway,
|
|
{ "I/O Gateway", "ff.sm.id.rsp.dev_type.iogateway",
|
|
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_type_hse,
|
|
{ "HSE Field Device", "ff.sm.id.rsp.dev_type.hse",
|
|
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_type_h1,
|
|
{ "H1 Device", "ff.sm.id.rsp.dev_type.h1",
|
|
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_type_reserved,
|
|
{ "Reserved", "ff.sm.id.rsp.dev_type.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_type_redundant_caps,
|
|
{ "Redundant Device Type Capability", "ff.sm.id.rsp.dev_type.redundant_caps",
|
|
FT_UINT8, BASE_DEC, VALS(names_dev_type), 0x07, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_redundancy_state_reserved,
|
|
{ "Reserved", "ff.sm.id.rsp.dev_redundancy_state.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_redundancy_state_role,
|
|
{ "Device Redundancy Role", "ff.sm.id.rsp.dev_redundancy_state.role",
|
|
FT_UINT8, BASE_DEC, VALS(names_dev_redundancy_role), 0x0C, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dev_redundancy_state_type,
|
|
{ "Assigned Redundant Device Type", "ff.sm.id.rsp.dev_redundancy_state.type",
|
|
FT_UINT8, BASE_DEC, VALS(names_assigned_redundant_dev_type), 0x03, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dup_detection_state_reserved,
|
|
{ "Reserved", "ff.sm.id.rsp.dup_detection_state.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dup_detection_state_pd_tag,
|
|
{ "Duplicate PD Tag", "ff.sm.id.rsp.dup_detection_state.pd_tag",
|
|
FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_rsp_dup_detection_state_device,
|
|
{ "Duplicate Device Index", "ff.sm.id.rsp.dup_detection_state.device",
|
|
FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
|
|
|
|
|
|
/*
|
|
* 6.5.2.3.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_id_err,
|
|
{ "SM Identify Error", "ff.sm.id.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_err_err_class,
|
|
{ "Error Class", "ff.sm.id.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_err_err_code,
|
|
{ "Error Code", "ff.sm.id.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_err_additional_code,
|
|
{ "Additional Code", "ff.sm.id.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_id_err_additional_desc,
|
|
{ "Additional Description", "ff.sm.id.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.4. SM Clear Address (Confirmed Service Id = 12)
|
|
*/
|
|
{ &hf_ff_sm_clear_addr,
|
|
{ "SM Clear Address", "ff.sm.clear_addr",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.4.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_clear_addr_req,
|
|
{ "SM Clear Address Request", "ff.sm.clear_addr.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_addr_req_dev_id,
|
|
{ "Device ID", "ff.sm.clear_addr.req.dev_id",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_addr_req_pd_tag,
|
|
{ "PD Tag", "ff.sm.clear_addr.req.pd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_addr_req_interface_to_clear,
|
|
{ "Interface to Clear", "ff.sm.clear_addr.req.interface_to_clear",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.4.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_clear_addr_rsp,
|
|
{ "SM Clear Address Response", "ff.sm.clear_addr.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.4.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_clear_addr_err,
|
|
{ "SM Clear Address Error", "ff.sm.clear_addr.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_addr_err_err_class,
|
|
{ "Error Class", "ff.sm.clear_addr.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_addr_err_err_code,
|
|
{ "Error Code", "ff.sm.clear_addr.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_addr_err_additional_code,
|
|
{ "Additional Code", "ff.sm.clear_addr.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_addr_err_additional_desc,
|
|
{ "Additional Description", "ff.sm.clear_addr.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.5. SM Set Assignment Info (Confirmed Service Id = 14)
|
|
*/
|
|
{ &hf_ff_sm_set_assign_info,
|
|
{ "SM Set Assignment Info", "ff.sm.set_assign_info",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.5.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_set_assign_info_req_dev_redundancy_state_reserved,
|
|
{ "Reserved", "ff.sm.set_assign_info.req_dev_redundancy_state.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_dev_redundancy_state_role,
|
|
{ "Type D-2 Device Redundancy Role", "ff.sm.set_assign_info.req_dev_redundancy_state.role",
|
|
FT_UINT8, BASE_DEC, VALS(names_type_d2_dev_redundancy_role), 0x0C, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_dev_redundancy_state_type,
|
|
{ "Assigned Device Redundancy Type", "ff.sm.set_assign_info.req_dev_redundancy_state.type",
|
|
FT_UINT8, BASE_DEC, VALS(names_assigned_redundant_dev_type), 0x03, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_reserved,
|
|
{ "Reserved", "ff.sm.set_assign_info.req_clear_dup_detection_state.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_pd_tag,
|
|
{ "Duplicate PD Tag Detected", "ff.sm.set_assign_info.req_clear_dup_detection_state.pd_tag",
|
|
FT_BOOLEAN, 8, TFS(&tfs_do_not_clear_clear), 0x02, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_device_index,
|
|
{ "Duplicate Device Index Detected", "ff.sm.set_assign_info.req_clear_dup_detection_state.device_index",
|
|
FT_BOOLEAN, 8, TFS(&tfs_do_not_clear_clear), 0x01, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req,
|
|
{ "SM Set Assignment Info Request", "ff.sm.set_assign_info.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_dev_id,
|
|
{ "Device ID", "ff.sm.set_assign_info.req.dev_id",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_pd_tag,
|
|
{ "PD Tag", "ff.sm.set_assign_info.req.pd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_h1_new_addr,
|
|
{ "H1 New Address", "ff.sm.set_assign_info.req.h1_new_addr",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_lr_port,
|
|
{ "LAN Redundancy Port",
|
|
"ff.sm.set_assign_info.req.lr_port",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_hse_repeat_time,
|
|
{ "HSE Repeat Time", "ff.sm.set_assign_info.req.hse_repeat_time",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_dev_idx,
|
|
{ "Device Index", "ff.sm.set_assign_info.req.dev_idx",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_max_dev_idx,
|
|
{ "Max Device Index", "ff.sm.set_assign_info.req.max_dev_idx",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_req_operational_ip_addr,
|
|
{ "Operational IP Address",
|
|
"ff.sm.set_assign_info.req.operational_ip_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.5.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_set_assign_info_rsp,
|
|
{ "SM Set Assignment Info Response", "ff.sm.set_assign_info.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_rsp_reserved,
|
|
{ "Reserved", "ff.sm.set_assign_info.rsp.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_rsp_max_dev_idx,
|
|
{ "Max Device Index", "ff.sm.set_assign_info.rsp.max_dev_idx",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_rsp_hse_repeat_time,
|
|
{ "HSE Repeat Time", "ff.sm.set_assign_info.rsp.hse_repeat_time",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.5.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_set_assign_info_err,
|
|
{ "SM Set Assignment Info Error", "ff.sm.set_assign_info.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_err_err_class,
|
|
{ "Error Class", "ff.sm.set_assign_info.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_err_err_code,
|
|
{ "Error Code", "ff.sm.set_assign_info.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_err_additional_code,
|
|
{ "Additional Code", "ff.sm.set_assign_info.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_set_assign_info_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.sm.set_assign_info.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.6. SM Clear Assignment Info (Confirmed Service Id = 15)
|
|
*/
|
|
{ &hf_ff_sm_clear_assign_info,
|
|
{ "SM Clear Assignment Info", "ff.sm.clear_assign_info",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.6.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_clear_assign_info_req,
|
|
{ "SM Clear Assignment Info Request", "ff.sm.clear_assign_info.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_assign_info_req_dev_id,
|
|
{ "Device ID", "ff.sm.clear_assign_info.req.dev_id",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_assign_info_req_pd_tag,
|
|
{ "PD Tag", "ff.sm.clear_assign_info.req.pd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.6.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_clear_assign_info_rsp,
|
|
{ "SM Clear Assignment Info Response",
|
|
"ff.sm.clear_assign_info.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.6.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_clear_assign_info_err,
|
|
{ "SM Clear Assignment Info Error", "ff.sm.clear_assign_info.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_assign_info_err_err_class,
|
|
{ "Error Class", "ff.sm.clear_assign_info.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_assign_info_err_err_code,
|
|
{ "Error Code", "ff.sm.clear_assign_info.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_assign_info_err_additional_code,
|
|
{ "Additional Code", "ff.sm.clear_assign_info.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_clear_assign_info_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.sm.clear_assign_info.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.7. SM Device Annunciation (Unconfirmed Service Id = 16)
|
|
*/
|
|
{ &hf_ff_sm_dev_annunc,
|
|
{ "SM Device Annunciation", "ff.sm.dev_annunc",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.2.7.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_sm_dev_annunc_req,
|
|
{ "SM Device Annunciation Request", "ff.sm.dev_annunc.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_idx,
|
|
{ "Device Index", "ff.sm.dev_annunc.req.dev_idx",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_max_dev_idx,
|
|
{ "Max Device Index", "ff.sm.dev_annunc.req.max_dev_idx",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_operational_ip_addr,
|
|
{ "Operational IP Address",
|
|
"ff.sm.dev_annunc.req.operational_ip_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_id,
|
|
{ "Device ID", "ff.sm.dev_annunc.req.dev_id",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_pd_tag,
|
|
{ "PD Tag", "ff.sm.dev_annunc.req.pd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_hse_repeat_time,
|
|
{ "HSE Repeat Time", "ff.sm.dev_annunc.req.hse_repeat_time",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_lr_port,
|
|
{ "LAN Redundancy Port", "ff.sm.dev_annunc.req.lr_port",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_reserved,
|
|
{ "Reserved", "ff.sm.dev_annunc.req.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_annunc_ver_num,
|
|
{ "Annunciation Version Number",
|
|
"ff.sm.dev_annunc.req.annunc_ver_num",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_hse_dev_ver_num,
|
|
{ "HSE Device Version Number",
|
|
"ff.sm.dev_annunc.req.hse_dev_ver_num",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_num_of_entries,
|
|
{ "Number of Entries in Version Number List",
|
|
"ff.sm.dev_annunc.req.num_of_entries",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_h1_live_list_h1_link_id,
|
|
{ "H1 Link Id", "ff.sm.dev_annunc.req.h1_live_list.h1_link_id",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_h1_live_list_reserved,
|
|
{ "Reserved", "ff.sm.dev_annunc.req.h1_live_list.reserved",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_h1_live_list_ver_num,
|
|
{ "Version Number", "ff.sm.dev_annunc.req.h1_live_list.ver_num",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_h1_node_addr,
|
|
{ "H1 Node Address",
|
|
"ff.sm.dev_annunc.req.h1_node_addr_ver_num.h1_node_addr",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_ver_num,
|
|
{ "Version Number",
|
|
"ff.sm.dev_annunc.req.h1_node_addr_ver_num.ver_num",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_smk_state_name,
|
|
{ "Name", "ff.sm.dev_annunc.req.smk_state_name",
|
|
FT_UINT8, BASE_DEC, VALS(names_smk_state), 0xFE, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_smk_state_sync,
|
|
{ "Synchronized with SNTP Time Server", "ff.sm.dev_annunc.req.smk_state_sync",
|
|
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_type_link,
|
|
{ "Linking Device", "ff.sm.dev_annunc.req.dev_type.link",
|
|
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x80, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_type_iogateway,
|
|
{ "I/O Gateway", "ff.sm.dev_annunc.req.dev_type.iogateway",
|
|
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_type_hse,
|
|
{ "HSE Field Device", "ff.sm.dev_annunc.req.dev_type.hse",
|
|
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_type_h1,
|
|
{ "H1 Device", "ff.sm.dev_annunc.req.dev_type.h1",
|
|
FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_type_reserved,
|
|
{ "Reserved", "ff.sm.dev_annunc.req.dev_type.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_type_redundant_caps,
|
|
{ "Redundant Device Type Capability", "ff.sm.dev_annunc.req.dev_type.redundant_caps",
|
|
FT_UINT8, BASE_DEC, VALS(names_dev_type), 0x07, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_redundancy_state_reserved,
|
|
{ "Reserved", "ff.sm.dev_annunc.req_dev_redundancy_state.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_redundancy_state_role,
|
|
{ "Type D-2 Device Redundancy Role", "ff.sm.dev_annunc.req_dev_redundancy_state.role",
|
|
FT_UINT8, BASE_DEC, VALS(names_type_d2_dev_redundancy_role), 0x0C, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dev_redundancy_state_type,
|
|
{ "Assigned Device Redundancy Type", "ff.sm.dev_annunc.req_dev_redundancy_state.type",
|
|
FT_UINT8, BASE_DEC, VALS(names_assigned_redundant_dev_type), 0x03, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dup_detection_state_reserved,
|
|
{ "Reserved", "ff.sm.dev_annunc.req.dup_detection_state.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dup_detection_state_pd_tag,
|
|
{ "Duplicate PD Tag", "ff.sm.dev_annunc.req.dup_detection_state.pd_tag",
|
|
FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
|
|
|
|
{ &hf_ff_sm_dev_annunc_req_dup_detection_state_device,
|
|
{ "Duplicate Device Index", "ff.sm.dev_annunc.req.dup_detection_state.device",
|
|
FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
|
|
|
|
|
|
/*
|
|
* 6.5.3. FMS Services
|
|
*/
|
|
{ &hf_ff_fms,
|
|
{ "FMS Service", "ff.fms",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.2. FMS Initiate (Confirmed Service Id = 96)
|
|
*/
|
|
{ &hf_ff_fms_init,
|
|
{ "FMS Initiate", "ff.fms.init",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.2.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_req,
|
|
{ "FMS Initiate Request", "ff.fms.init.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_req_conn_opt,
|
|
{ "Connect Option", "ff.fms.init.req.conn_opt",
|
|
FT_UINT8, BASE_DEC, VALS(names_conn_opt), 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_req_access_protection_supported_calling,
|
|
{ "Access Protection Supported Calling",
|
|
"ff.fms.init.req.access_protection_supported_calling",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_req_passwd_and_access_grps_calling,
|
|
{ "Password and Access Groups Calling",
|
|
"ff.fms.init.req.passwd_and_access_grps_calling",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_req_ver_od_calling,
|
|
{ "Version OD Calling", "ff.fms.init.req.ver_od_calling",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_req_prof_num_calling,
|
|
{ "Profile Number Calling", "ff.fms.init.req.prof_num_calling",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_req_pd_tag,
|
|
{ "PD Tag", "ff.fms.init.req.pd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.2.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_rsp,
|
|
{ "FMS Initiate Response", "ff.fms.init.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_rsp_ver_od_called,
|
|
{ "Version OD Called", "ff.fms.init.rsp.ver_od_called",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_rsp_prof_num_called,
|
|
{ "Profile Number Called", "ff.fms.init.rsp.prof_num_called",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.2.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_err,
|
|
{ "FMS Initiate Error", "ff.fms.init.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_err_err_class,
|
|
{ "Error Class", "ff.fms.init.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_err_err_code,
|
|
{ "Error Code", "ff.fms.init.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_err_additional_code,
|
|
{ "Additional Code", "ff.fms.init.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.init.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.3. FMS Abort (Unconfirmed Service Id = 112)
|
|
*/
|
|
{ &hf_ff_fms_abort,
|
|
{ "FMS Abort", "ff.fms.abort",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.3.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_abort_req,
|
|
{ "FMS Abort Request", "ff.fms.abort.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_abort_req_abort_id,
|
|
{ "Abort Identifier", "ff.fms.abort.req.abort_id",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_abort_req_reason_code,
|
|
{ "Reason Code", "ff.fms.abort.req.reason_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_abort_req_reserved,
|
|
{ "Reserved", "ff.fms.abort.req.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.4. FMS Status (Confirmed Service Id = 0)
|
|
*/
|
|
{ &hf_ff_fms_status,
|
|
{ "FMS Status", "ff.fms.status",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.4.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_status_req,
|
|
{ "FMS Status Request", "ff.fms.status.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.4.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_status_rsp,
|
|
{ "FMS Status Response", "ff.fms.status.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_status_rsp_logical_status,
|
|
{ "Logical Status", "ff.fms.status.rsp.logical_status",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_status_rsp_physical_status,
|
|
{ "Physical Status", "ff.fms.status.rsp.physical_status",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_status_rsp_reserved,
|
|
{ "Reserved", "ff.fms.status.rsp.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.4.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_status_err,
|
|
{ "FMS Status Error", "ff.fms.status.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_status_err_err_class,
|
|
{ "Error Class", "ff.fms.status.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_status_err_err_code,
|
|
{ "Error Code", "ff.fms.status.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_status_err_additional_code,
|
|
{ "Additional Code", "ff.fms.status.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_status_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.status.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.5. FMS Unsolicited Status (Unconfirmed Service Id = 1)
|
|
*/
|
|
{ &hf_ff_fms_unsolicited_status,
|
|
{ "FMS Unsolicited Status", "ff.fms.unsolicited_status",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.5.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_unsolicited_status_req,
|
|
{ "FMS Unsolicited Status Request", "ff.fms.unsolicited_status.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_unsolicited_status_req_logical_status,
|
|
{ "Logical Status", "ff.fms.unsolicited_status.req.logical_status",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_unsolicited_status_req_physical_status,
|
|
{ "Physical Status",
|
|
"ff.fms.unsolicited_status.req.physical_status",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_unsolicited_status_req_reserved,
|
|
{ "Reserved", "ff.fms.unsolicited_status.req.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.6. FMS Identify (Confirmed Service Id = 1)
|
|
*/
|
|
{ &hf_ff_fms_id,
|
|
{ "FMS Identify", "ff.fms.id",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.6.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_id_req,
|
|
{ "FMS Identify Request", "ff.fms.id.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.6.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_id_rsp,
|
|
{ "FMS Identify Response", "ff.fms.id.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_id_rsp_vendor_name,
|
|
{ "Vendor Name", "ff.fms.id.rsp.vendor_name",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_id_rsp_model_name,
|
|
{ "Model Name", "ff.fms.id.rsp.model_name",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_id_rsp_revision,
|
|
{ "Revision", "ff.fms.id.rsp.revision",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.6.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_id_err,
|
|
{ "FMS Identify Error", "ff.fms.id.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_id_err_err_class,
|
|
{ "Error Class", "ff.fms.id.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_id_err_err_code,
|
|
{ "Error Code", "ff.fms.id.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_id_err_additional_code,
|
|
{ "Additional Code", "ff.fms.id.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_id_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.id.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.7. FMS Get OD (Confirmed Service Id = 4)
|
|
*/
|
|
{ &hf_ff_fms_get_od,
|
|
{ "FMS Get OD", "ff.fms.get_od",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.7.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_get_od_req,
|
|
{ "FMS Get OD Request", "ff.fms.get_od.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_req_all_attrs,
|
|
{ "All Attributes", "ff.fms.get_od.req.all_attrs",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_req_start_idx_flag,
|
|
{ "Start Index Flag", "ff.fms.get_od.req.start_idx_flag",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_req_reserved,
|
|
{ "Reserved", "ff.fms.get_od.req.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_req_idx,
|
|
{ "Index", "ff.fms.get_od.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.7.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_get_od_rsp,
|
|
{ "FMS Get OD Response", "ff.fms.get_od.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_rsp_more_follows,
|
|
{ "More Follows", "ff.fms.get_od.rsp.more_follows",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_rsp_num_of_obj_desc,
|
|
{ "Number of Object Descriptions",
|
|
"ff.fms.get_od.rsp.num_of_obj_desc",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_rsp_reserved,
|
|
{ "Reserved", "ff.fms.get_od.rsp.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.7.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_get_od_err,
|
|
{ "FMS Get OD Error", "ff.fms.get_od.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_err_err_class,
|
|
{ "Error Class", "ff.fms.get_od.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_err_err_code,
|
|
{ "Error Code", "ff.fms.get_od.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_err_additional_code,
|
|
{ "Additional Code", "ff.fms.get_od.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_get_od_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.get_od.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.8. FMS Initiate Put OD (Confirmed Service Id = 28)
|
|
*/
|
|
{ &hf_ff_fms_init_put_od,
|
|
{ "FMS Initiate Put OD", "ff.fms.init_put_od",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.8.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_put_od_req,
|
|
{ "FMS Initiate Put OD Request", "ff.fms.init_put_od.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_put_od_req_reserved,
|
|
{ "Reserved", "ff.fms.init_put_od.req.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_put_od_req_consequence,
|
|
{ "Consequence", "ff.fms.init_put_od.req.consequence",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.8.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_put_od_rsp,
|
|
{ "FMS Initiate Put OD Response", "ff.fms.init_put_od.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.8.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_put_od_err,
|
|
{ "FMS Initiate Put OD Error", "ff.fms.init_put_od.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_put_od_err_err_class,
|
|
{ "Error Class", "ff.fms.init_put_od.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_put_od_err_err_code,
|
|
{ "Error Code", "ff.fms.init_put_od.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_put_od_err_additional_code,
|
|
{ "Additional Code", "ff.fms.init_put_od.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_put_od_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.init_put_od.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.9. FMS Put OD (Confirmed Service Id = 29)
|
|
*/
|
|
{ &hf_ff_fms_put_od,
|
|
{ "FMS Put OD", "ff.fms.put_od",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.9.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_put_od_req,
|
|
{ "FMS Put OD Request", "ff.fms.put_od.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_put_od_req_num_of_obj_desc,
|
|
{ "Number of Object Descriptions",
|
|
"ff.fms.put_od.req.num_of_obj_desc",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.9.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_put_od_rsp,
|
|
{ "FMS Put OD Response", "ff.fms.put_od.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.9.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_put_od_err,
|
|
{ "FMS Put OD Error", "ff.fms.put_od.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_put_od_err_err_class,
|
|
{ "Error Class", "ff.fms.put_od.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_put_od_err_err_code,
|
|
{ "Error Code", "ff.fms.put_od.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_put_od_err_additional_code,
|
|
{ "Additional Code", "ff.fms.put_od.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_put_od_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.put_od.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.10. FMS Terminate Put OD (Confirmed Service Id = 30)
|
|
*/
|
|
{ &hf_ff_fms_terminate_put_od,
|
|
{ "FMS Terminate Put OD", "ff.fms.terminate_put_od",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.10.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_terminate_put_od_req,
|
|
{ "FMS Terminate Put OD Request", "ff.fms.terminate_put_od.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.10.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_terminate_put_od_rsp,
|
|
{ "FMS Terminate Put OD Response", "ff.fms.terminate_put_od.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.10.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_terminate_put_od_err,
|
|
{ "FMS Terminate Put OD Error", "ff.fms.terminate_put_od.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_put_od_err_index,
|
|
{ "Index", "ff.fms.terminate_put_od.err.index",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_put_od_err_err_class,
|
|
{ "Error Class", "ff.fms.terminate_put_od.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_put_od_err_err_code,
|
|
{ "Error Code", "ff.fms.terminate_put_od.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_put_od_err_additional_code,
|
|
{ "Additional Code", "ff.fms.terminate_put_od.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_put_od_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.terminate_put_od.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.11. FMS Generic Initiate Download Sequence
|
|
* (Confirmed Service Id = 31)
|
|
*/
|
|
{ &hf_ff_fms_gen_init_download_seq,
|
|
{ "FMS Generic Initiate Download Sequence",
|
|
"ff.fms.gen_init_download_seq",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.11.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_gen_init_download_seq_req,
|
|
{ "FMS Generic Initiate Download Sequence Request",
|
|
"ff.fms.gen_init_download_seq.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_init_download_seq_req_idx,
|
|
{ "Index",
|
|
"ff.fms.gen_init_download_seq.req.idx",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.11.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_gen_init_download_seq_rsp,
|
|
{ "FMS Generic Initiate Download Sequence Response",
|
|
"ff.fms.gen_init_download_seq.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.11.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_gen_init_download_seq_err,
|
|
{ "FMS Generic Initiate Download Sequence Error",
|
|
"ff.fms.gen_init_download_seq.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_init_download_seq_err_err_class,
|
|
{ "Error Class", "ff.fms.gen_init_download_seq.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_init_download_seq_err_err_code,
|
|
{ "Error Code", "ff.fms.gen_init_download_seq.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_init_download_seq_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.fms.gen_init_download_seq.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_init_download_seq_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.gen_init_download_seq.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.12. FMS Generic Download Segment (Confirmed Service Id = 32)
|
|
*/
|
|
{ &hf_ff_fms_gen_download_seg,
|
|
{ "FMS Generic Download Segment", "ff.fms.gen_download_seg",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.12.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_gen_download_seg_req,
|
|
{ "FMS Generic Download Segment Request",
|
|
"ff.fms.gen_download_seg.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_download_seg_req_idx,
|
|
{ "Index", "ff.fms.gen_download_seg.req.idx",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_download_seg_req_more_follows,
|
|
{ "More Follows", "ff.fms.gen_download_seg.req.more_follows",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.12.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_gen_download_seg_rsp,
|
|
{ "FMS Generic Download Segment Response",
|
|
"ff.fms.gen_download_seg.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.12.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_gen_download_seg_err,
|
|
{ "FMS Generic Download Segment Error",
|
|
"ff.fms.gen_download_seg.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_download_seg_err_err_class,
|
|
{ "Error Class", "ff.fms.gen_download_seg.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_download_seg_err_err_code,
|
|
{ "Error Code", "ff.fms.gen_download_seg.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_download_seg_err_additional_code,
|
|
{ "Additional Code", "ff.fms.gen_download_seg.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_download_seg_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.gen_download_seg.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.13. FMS Generic Terminate Download Sequence
|
|
* (Confirmed Service Id = 33)
|
|
*/
|
|
{ &hf_ff_fms_gen_terminate_download_seq,
|
|
{ "FMS Generic Terminate Download Sequence",
|
|
"ff.fms.gen_terminate_download_seq",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.13.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_gen_terminate_download_seq_req,
|
|
{ "FMS Generic Terminate Download Sequence Request",
|
|
"ff.fms.gen_terminate_download_seq.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_terminate_download_seq_req_idx,
|
|
{ "Index", "ff.fms.gen_terminate_download_seq.req.idx",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.13.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_gen_terminate_download_seq_rsp,
|
|
{ "FMS Generic Terminate Download Sequence Response",
|
|
"ff.fms.gen_terminate_download_seq.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_terminate_download_seq_rsp_final_result,
|
|
{ "Final Result",
|
|
"ff.fms.gen_terminate_download_seq.rsp.final_result",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.13.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_gen_terminate_download_seq_err,
|
|
{ "FMS Generic Terminate Download Sequence Error",
|
|
"ff.fms.gen_terminate_download_seq.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_terminate_download_seq_err_err_class,
|
|
{ "Error Class", "ff.fms.gen_terminate_download_seq.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_terminate_download_seq_err_err_code,
|
|
{ "Error Code", "ff.fms.gen_terminate_download_seq.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_terminate_download_seq_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.fms.gen_terminate_download_seq.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_gen_terminate_download_seq_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.gen_terminate_download_seq.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.14. FMS Initiate Download Sequence (Confirmed Service Id = 9)
|
|
*/
|
|
{ &hf_ff_fms_init_download_seq,
|
|
{ "FMS Initiate Download Sequence",
|
|
"ff.fms.init_download_seq",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.14.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_download_seq_req,
|
|
{ "FMS Initiate Download Sequence Request",
|
|
"ff.fms.init_download_seq.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_download_seq_req_idx,
|
|
{ "Index", "ff.fms.init_download_seq.req.idx",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.14.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_download_seq_rsp,
|
|
{ "FMS Initiate Download Sequence Response",
|
|
"ff.fms.init_download_seq.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.14.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_download_seq_err,
|
|
{ "FMS Initiate Download Sequence Error",
|
|
"ff.fms.init_download_seq.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_download_seq_err_err_class,
|
|
{ "Error Class", "ff.fms.init_download_seq.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_download_seq_err_err_code,
|
|
{ "Error Code", "ff.fms.init_download_seq.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_download_seq_err_additional_code,
|
|
{ "Additional Code", "ff.fms.init_download_seq.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_download_seq_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.init_download_seq.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.15. FMS Download Segment (Confirmed Service Id = 10)
|
|
*/
|
|
{ &hf_ff_fms_download_seg,
|
|
{ "FMS Download Segment", "ff.fms.download_seg",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.15.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_download_seg_req,
|
|
{ "FMS Download Segment Request", "ff.fms.download_seg.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_download_seg_req_idx,
|
|
{ "Index", "ff.fms.download_seg.req.idx",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.15.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_download_seg_rsp,
|
|
{ "FMS Download Segment Response", "ff.fms.download_seg.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_download_seg_rsp_more_follows,
|
|
{ "Final Result", "ff.fms.download_seg.rsp.more_follows",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.15.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_download_seg_err,
|
|
{ "FMS Download Segment Error", "ff.fms.download_seg.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_download_seg_err_err_class,
|
|
{ "Error Class", "ff.fms.download_seg.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_download_seg_err_err_code,
|
|
{ "Error Code", "ff.fms.download_seg.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_download_seg_err_additional_code,
|
|
{ "Additional Code", "ff.fms.download_seg.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_download_seg_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.download_seg.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.16. FMS Terminate Download Sequence (Confirmed Service Id = 11)
|
|
*/
|
|
{ &hf_ff_fms_terminate_download_seq,
|
|
{ "FMS Terminate Download Sequence",
|
|
"ff.fms.terminate_download_seq",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.16.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_terminate_download_seq_req,
|
|
{ "FMS Terminate Download Sequence Request",
|
|
"ff.fms.terminate_download_seq.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_download_seq_req_idx,
|
|
{ "Index", "ff.fms.terminate_download_seq.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_download_seq_req_final_result,
|
|
{ "Final Result", "ff.fms.terminate_download_seq.req.final_result",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.16.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_terminate_download_seq_rsp,
|
|
{ "FMS Terminate Download Sequence Response",
|
|
"ff.fms.terminate_download_seq.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.16.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_terminate_download_seq_err,
|
|
{ "FMS Terminate Download Sequence Error",
|
|
"ff.fms.terminate_download_seq.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_download_seq_err_err_class,
|
|
{ "Error Class", "ff.fms.terminate_download_seq.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_download_seq_err_err_code,
|
|
{ "Error Code", "ff.fms.terminate_download_seq.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_download_seq_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.fms.terminate_download_seq.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_download_seq_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.terminate_download_seq.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.17. FMS Initiate Upload Sequence (Confirmed Service Id = 12)
|
|
*/
|
|
{ &hf_ff_fms_init_upload_seq,
|
|
{ "FMS Initiate Upload Sequence", "ff.fms.init_upload_seq",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.17.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_upload_seq_req,
|
|
{ "FMS Initiate Upload Sequence Request",
|
|
"ff.fms.init_upload_seq.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_upload_seq_req_idx,
|
|
{ "Index", "ff.fms.init_upload_seq.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.17.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_upload_seq_rsp,
|
|
{ "FMS Initiate Upload Sequence Response",
|
|
"ff.fms.init_upload_seq.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.17.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_init_upload_seq_err,
|
|
{ "FMS Initiate Upload Sequence Error",
|
|
"ff.fms.init_upload_seq.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_upload_seq_err_err_class,
|
|
{ "Error Class", "ff.fms.init_upload_seq.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_upload_seq_err_err_code,
|
|
{ "Error Code", "ff.fms.init_upload_seq.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_upload_seq_err_additional_code,
|
|
{ "Additional Code", "ff.fms.init_upload_seq.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_init_upload_seq_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.init_upload_seq.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.18. FMS Upload Segment (Confirmed Service Id = 13)
|
|
*/
|
|
{ &hf_ff_fms_upload_seg,
|
|
{ "FMS Upload Segment", "ff.fms.upload_seg",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.18.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_upload_seg_req,
|
|
{ "FMS Upload Segment Request", "ff.fms.upload_seg.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_upload_seg_req_idx,
|
|
{ "Index", "ff.fms.upload_seg.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.18.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_upload_seg_rsp,
|
|
{ "FMS Upload Segment Response", "ff.fms.upload_seg.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_upload_seg_rsp_more_follows,
|
|
{ "More Follows", "ff.fms.upload_seg.rsp.more_follows",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.18.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_upload_seg_err,
|
|
{ "FMS Upload Segment Error", "ff.fms.upload_seg.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_upload_seg_err_err_class,
|
|
{ "Error Class", "ff.fms.upload_seg.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_upload_seg_err_err_code,
|
|
{ "Error Code", "ff.fms.upload_seg.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_upload_seg_err_additional_code,
|
|
{ "Additional Code", "ff.fms.upload_seg.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_upload_seg_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.upload_seg.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.19. FMS Terminate Upload Sequence (Confirmed Service Id = 14)
|
|
*/
|
|
{ &hf_ff_fms_terminate_upload_seq,
|
|
{ "FMS Terminate Upload Sequence",
|
|
"ff.fms.terminate_upload_seq",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.19.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_terminate_upload_seq_req,
|
|
{ "FMS Terminate Upload Sequence Request",
|
|
"ff.fms.terminate_upload_seq.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_upload_seq_req_idx,
|
|
{ "Index", "ff.fms.terminate_upload_seq.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.19.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_terminate_upload_seq_rsp,
|
|
{ "FMS Terminate Upload Sequence Response",
|
|
"ff.fms.terminate_upload_seq.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.19.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_terminate_upload_seq_err,
|
|
{ "FMS Terminate Upload Sequence Error",
|
|
"ff.fms.terminate_upload_seq.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_upload_seq_err_err_class,
|
|
{ "Error Class", "ff.fms.terminate_upload_seq.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_upload_seq_err_err_code,
|
|
{ "Error Code", "ff.fms.terminate_upload_seq.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_upload_seq_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.fms.terminate_upload_seq.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_terminate_upload_seq_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.terminate_upload_seq.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.20. FMS Request Domain Download (Confirmed Service Id = 15)
|
|
*/
|
|
{ &hf_ff_fms_req_dom_download,
|
|
{ "FMS Request Domain Download", "ff.fms.req_dom_download",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.20.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_req_dom_download_req,
|
|
{ "FMS Request Domain Download Request",
|
|
"ff.fms.req_dom_download.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_download_req_idx,
|
|
{ "Index", "ff.fms.req_dom_download.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_download_req_additional_info,
|
|
{ "Additional Description",
|
|
"ff.fms.req_dom_download.req.additional_info",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.20.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_req_dom_download_rsp,
|
|
{ "FMS Request Domain Download Response",
|
|
"ff.fms.req_dom_download.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
/*
|
|
* 6.5.3.20.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_req_dom_download_err,
|
|
{ "FMS Request Domain Download Error",
|
|
"ff.fms.req_dom_download.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_download_err_err_class,
|
|
{ "Error Class", "ff.fms.req_dom_download.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_download_err_err_code,
|
|
{ "Error Code", "ff.fms.req_dom_download.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_download_err_additional_code,
|
|
{ "Additional Code", "ff.fms.req_dom_download.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_download_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.req_dom_download.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.21. FMS Request Domain Upload (Confirmed Service Id = 16)
|
|
*/
|
|
{ &hf_ff_fms_req_dom_upload,
|
|
{ "FMS Request Domain Upload", "ff.fms.req_dom_upload",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.21.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_req_dom_upload_req,
|
|
{ "FMS Request Domain Upload Request", "ff.fms.req_dom_upload.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_upload_req_idx,
|
|
{ "Index", "ff.fms.req_dom_upload.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_upload_req_additional_info,
|
|
{ "Additional Description",
|
|
"ff.fms.req_dom_upload.req.additional_info",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.21.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_req_dom_upload_rsp,
|
|
{ "FMS Request Domain Upload Response", "ff.fms.req_dom_upload.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.21.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_req_dom_upload_err,
|
|
{ "FMS Request Domain Upload Error", "ff.fms.req_dom_upload.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_upload_err_err_class,
|
|
{ "Error Class", "ff.fms.req_dom_upload.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_upload_err_err_code,
|
|
{ "Error Code", "ff.fms.req_dom_upload.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_upload_err_additional_code,
|
|
{ "Additional Code", "ff.fms.req_dom_upload.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_req_dom_upload_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.req_dom_upload.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.22. FMS Create Program Invocation (Confirmed Service Id = 17)
|
|
*/
|
|
{ &hf_ff_fms_create_pi,
|
|
{ "FMS Create Program Invocation", "ff.fms.create_pi",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.22.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_create_pi_req,
|
|
{ "FMS Create Program Invocation Request", "ff.fms.create_pi.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_create_pi_req_reusable,
|
|
{ "Reusable", "ff.fms.create_pi.req.reusable",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_create_pi_req_reserved,
|
|
{ "Reserved", "ff.fms.create_pi.req.reserved",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_create_pi_req_num_of_dom_idxes,
|
|
{ "Number of Domain Indexes",
|
|
"ff.fms.create_pi.req.num_of_dom_idxes",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_create_pi_req_dom_idx,
|
|
{ "Domain Index", "ff.fms.create_pi.req.list_of_dom_idxes.dom_idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.22.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_create_pi_rsp,
|
|
{ "FMS Create Program Invocation Response", "ff.fms.create_pi.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_create_pi_rsp_idx,
|
|
{ "Index", "ff.fms.create_pi.rsp.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.22.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_create_pi_err,
|
|
{ "FMS Create Program Invocation Error", "ff.fms.create_pi.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_create_pi_err_err_class,
|
|
{ "Error Class", "ff.fms.create_pi.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_create_pi_err_err_code,
|
|
{ "Error Code", "ff.fms.create_pi.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_create_pi_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.fms.create_pi.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_create_pi_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.create_pi.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.23. FMS Delete Program Invocation (Confirmed Service Id = 18)
|
|
*/
|
|
{ &hf_ff_fms_del_pi ,
|
|
{ "FMS Delete Program Invocation", "ff.fms.del_pi",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.23.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_del_pi_req,
|
|
{ "FMS Delete Program Invocation Request", "ff.fms.del_pi.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_del_pi_req_idx,
|
|
{ "Index", "ff.fms.del_pi.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.23.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_del_pi_rsp,
|
|
{ "FMS Delete Program Invocation Response", "ff.fms.del_pi.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.23.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_del_pi_err,
|
|
{ "FMS Delete Program Invocation Error", "ff.fms.del_pi.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_del_pi_err_err_class,
|
|
{ "Error Class", "ff.fms.del_pi.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_del_pi_err_err_code,
|
|
{ "Error Code", "ff.fms.del_pi.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_del_pi_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.fms.del_pi.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_del_pi_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.del_pi.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.24. FMS Start (Confirmed Service Id = 19)
|
|
*/
|
|
{ &hf_ff_fms_start,
|
|
{ "FMS Start", "ff.fms.start",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.24.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_start_req,
|
|
{ "FMS Start Request", "ff.fms.start.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_start_req_idx,
|
|
{ "Index", "ff.fms.start.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.24.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_start_rsp,
|
|
{ "FMS Start Response", "ff.fms.start.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.24.3. PI Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_start_err,
|
|
{ "FMS Start Error", "ff.fms.start.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_start_err_pi_state,
|
|
{ "Pi State", "ff.fms.start.err.pi_state",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_start_err_err_class,
|
|
{ "Error Class", "ff.fms.start.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_start_err_err_code,
|
|
{ "Error Code", "ff.fms.start.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_start_err_additional_code,
|
|
{ "Additional Code", "ff.fms.start.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_start_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.start.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.25. FMS Stop (Confirmed Service Id = 20)
|
|
*/
|
|
{ &hf_ff_fms_stop,
|
|
{ "FMS Stop", "ff.fms.stop",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.25.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_stop_req,
|
|
{ "FMS Stop Request", "ff.fms.stop.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_stop_req_idx,
|
|
{ "Index", "ff.fms.stop.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.25.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_stop_rsp,
|
|
{ "FMS Stop Response", "ff.fms.stop.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.25.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_stop_err,
|
|
{ "FMS Stop Error", "ff.fms.stop.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_stop_err_pi_state,
|
|
{ "Pi State", "ff.fms.stop.err.pi_state",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_stop_err_err_class,
|
|
{ "Error Class", "ff.fms.stop.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_stop_err_err_code,
|
|
{ "Error Code", "ff.fms.stop.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_stop_err_additional_code,
|
|
{ "Additional Code", "ff.fms.stop.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_stop_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.stop.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.26. FMS Resume (Confirmed Service Id = 21)
|
|
*/
|
|
{ &hf_ff_fms_resume,
|
|
{ "FMS Resume", "ff.fms.resume",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.26.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_resume_req,
|
|
{ "FMS Resume Request", "ff.fms.resume.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_resume_req_idx,
|
|
{ "Index", "ff.fms.resume.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.26.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_resume_rsp,
|
|
{ "FMS Resume Response", "ff.fms.resume.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.26.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_resume_err,
|
|
{ "FMS Resume Error", "ff.fms.resume.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_resume_err_pi_state,
|
|
{ "Pi State", "ff.fms.resume.err.pi_state",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_resume_err_err_class,
|
|
{ "Error Class", "ff.fms.resume.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_resume_err_err_code,
|
|
{ "Error Code", "ff.fms.resume.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_resume_err_additional_code,
|
|
{ "Additional Code", "ff.fms.resume.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_resume_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.resume.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.27. FMS Reset (Confirmed Service Id = 22)
|
|
*/
|
|
{ &hf_ff_fms_reset,
|
|
{ "FMS Reset", "ff.fms.reset",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.27.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_reset_req,
|
|
{ "FMS Reset Request", "ff.fms.reset.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_reset_req_idx,
|
|
{ "Index", "ff.fms.reset.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.27.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_reset_rsp,
|
|
{ "FMS Reset Response", "ff.fms.reset.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.27.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_reset_err,
|
|
{ "FMS Reset Error", "ff.fms.reset.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_reset_err_pi_state,
|
|
{ "Pi State", "ff.fms.reset.err.pi_state",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_reset_err_err_class,
|
|
{ "Error Class", "ff.fms.reset.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_reset_err_err_code,
|
|
{ "Error Code", "ff.fms.reset.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_reset_err_additional_code,
|
|
{ "Additional Code", "ff.fms.reset.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_reset_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.reset.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.28. FMS Kill (Confirmed Service Id = 23)
|
|
*/
|
|
{ &hf_ff_fms_kill,
|
|
{ "FMS Kill", "ff.fms.kill",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.28.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_kill_req,
|
|
{ "FMS Kill Request", "ff.fms.kill.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.28.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_kill_rsp,
|
|
{ "FMS Kill Response", "ff.fms.kill.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.28.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_kill_err,
|
|
{ "FMS Kill Error", "ff.fms.kill.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_kill_req_idx,
|
|
{ "Index", "ff.fms.kill.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_kill_err_err_class,
|
|
{ "Error Class", "ff.fms.kill.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_kill_err_err_code,
|
|
{ "Error Code", "ff.fms.kill.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_kill_err_additional_code,
|
|
{ "Additional Code", "ff.fms.kill.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_kill_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.kill.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.29. FMS Read (Confirmed Service Id = 2)
|
|
*/
|
|
{ &hf_ff_fms_read,
|
|
{ "FMS Read", "ff.fms.read",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.29.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_read_req,
|
|
{ "FMS Read Request", "ff.fms.read.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_req_idx,
|
|
{ "Index", "ff.fms.read.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.29.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_read_rsp,
|
|
{ "FMS Read Response", "ff.fms.read.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.29.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_read_err,
|
|
{ "FMS Read Error", "ff.fms.read.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_err_err_class,
|
|
{ "Error Class", "ff.fms.read.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_err_err_code,
|
|
{ "Error Code", "ff.fms.read.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_err_additional_code,
|
|
{ "Additional Code", "ff.fms.read.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.read.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.30. FMS Read with Subindex (Confirmed Service Id = 82)
|
|
*/
|
|
{ &hf_ff_fms_read_with_subidx,
|
|
{ "FMS Read with Subindex", "ff.fms.read_with_subidx",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.30.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_read_with_subidx_req,
|
|
{ "FMS Read with Subindex Request", "ff.fms.read_with_subidx.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_with_subidx_req_idx,
|
|
{ "Index", "ff.fms.read_with_subidx.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_with_subidx_req_subidx,
|
|
{ "Index", "ff.fms.read_with_subidx.req.subidx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.30.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_read_with_subidx_rsp,
|
|
{ "FMS Read with Subindex Response", "ff.fms.read_with_subidx.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.30.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_read_with_subidx_err,
|
|
{ "FMS Read with Subindex Error", "ff.fms.read_with_subidx.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_with_subidx_err_err_class,
|
|
{ "Error Class", "ff.fms.read_with_subidx.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_with_subidx_err_err_code,
|
|
{ "Error Code", "ff.fms.read_with_subidx.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_with_subidx_err_additional_code,
|
|
{ "Additional Code", "ff.fms.read_with_subidx.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_read_with_subidx_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.read_with_subidx.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.31. FMS Write (Confirmed Service Id = 3)
|
|
*/
|
|
{ &hf_ff_fms_write,
|
|
{ "FMS Write", "ff.fms.write",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.31.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_write_req,
|
|
{ "FMS Write Request", "ff.fms.write.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_req_idx,
|
|
{ "Index", "ff.fms.write.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.31.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_write_rsp,
|
|
{ "FMS Write Response", "ff.fms.write.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.31.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_write_err,
|
|
{ "FMS Write Error", "ff.fms.write.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_err_err_class,
|
|
{ "Error Class", "ff.fms.write.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_err_err_code,
|
|
{ "Error Code", "ff.fms.write.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_err_additional_code,
|
|
{ "Additional Code", "ff.fms.write.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_err_additional_desc,
|
|
{ "Additional Description", "ff.fms.write.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.32. FMS Write with Subindex (Confirmed Service Id = 83)
|
|
*/
|
|
{ &hf_ff_fms_write_with_subidx,
|
|
{ "FMS Write with Subindex", "ff.fms.write_with_subidx",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.32.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_write_with_subidx_req,
|
|
{ "FMS Write with Subindex Request", "ff.fms.write_with_subidx.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_with_subidx_req_idx,
|
|
{ "Index", "ff.fms.write_with_subidx.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_with_subidx_req_subidx,
|
|
{ "Index", "ff.fms.write_with_subidx.req.subidx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.32.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_write_with_subidx_rsp,
|
|
{ "FMS Write with Subindex Response",
|
|
"ff.fms.write_with_subidx.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.32.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_write_with_subidx_err,
|
|
{ "FMS Write with Subindex Error", "ff.fms.write_with_subidx.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_with_subidx_err_err_class,
|
|
{ "Error Class", "ff.fms.write_with_subidx.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_with_subidx_err_err_code,
|
|
{ "Error Code", "ff.fms.write_with_subidx.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_with_subidx_err_additional_code,
|
|
{ "Additional Code", "ff.fms.write_with_subidx.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_write_with_subidx_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.write_with_subidx.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.33. FMS Define Variable List (Confirmed Service Id = 7)
|
|
*/
|
|
{ &hf_ff_fms_def_variable_list,
|
|
{ "FMS Define Variable List", "ff.fms.def_variable_list",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.33.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_def_variable_list_req,
|
|
{ "FMS Define Variable List Request",
|
|
"ff.fms.def_variable_list.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_def_variable_list_req_num_of_idxes,
|
|
{ "Number of Indexes", "ff.fms.def_variable_list.req.num_of_idxes",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_def_variable_list_req_idx,
|
|
{ "Index", "ff.fms.def_variable_list.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.33.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_def_variable_list_rsp,
|
|
{ "FMS Define Variable List Response",
|
|
"ff.fms.def_variable_list.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_def_variable_list_rsp_idx,
|
|
{ "Index", "ff.fms.def_variable_list.rsp.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.33.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_def_variable_list_err,
|
|
{ "FMS Define Variable List Error", "ff.fms.def_variable_list.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_def_variable_list_err_err_class,
|
|
{ "Error Class", "ff.fms.def_variable_list.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_def_variable_list_err_err_code,
|
|
{ "Error Code", "ff.fms.def_variable_list.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_def_variable_list_err_additional_code,
|
|
{ "Additional Code", "ff.fms.def_variable_list.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_def_variable_list_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.def_variable_list.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.34. FMS Delete Variable List (Confirmed Service Id = 8)
|
|
*/
|
|
{ &hf_ff_fms_del_variable_list,
|
|
{ "FMS Delete Variable List", "ff.fms.del_variable_list",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.34.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_del_variable_list_req,
|
|
{ "FMS Delete Variable List Request",
|
|
"ff.fms.del_variable_list.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_del_variable_list_req_idx,
|
|
{ "Index", "ff.fms.del_variable_list.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.34.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_del_variable_list_rsp,
|
|
{ "FMS Delete Variable List Response",
|
|
"ff.fms.del_variable_list.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.34.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_del_variable_list_err,
|
|
{ "FMS Delete Variable List Error", "ff.fms.del_variable_list.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_del_variable_list_err_err_class,
|
|
{ "Error Class", "ff.fms.del_variable_list.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_del_variable_list_err_err_code,
|
|
{ "Error Code", "ff.fms.del_variable_list.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_del_variable_list_err_additional_code,
|
|
{ "Additional Code", "ff.fms.del_variable_list.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_del_variable_list_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.del_variable_list.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.35. FMS Information Report (Unconfirmed Service Id = 0)
|
|
*/
|
|
{ &hf_ff_fms_info_report,
|
|
{ "FMS Information Report", "ff.fms.info_report",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.35.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_info_report_req,
|
|
{ "FMS Information Report Request", "ff.fms.info_report.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_info_report_req_idx,
|
|
{ "Index", "ff.fms.info_report.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.36. FMS Information Report with Subindex
|
|
* (Unconfirmed Service Id = 16)
|
|
*/
|
|
{ &hf_ff_fms_info_report_with_subidx,
|
|
{ "FMS Information Report with Subindex",
|
|
"ff.fms.info_report_with_subidx",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.36.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_info_report_with_subidx_req,
|
|
{ "FMS Information Report with Subindex Request",
|
|
"ff.fms.info_report_with_subidx.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_info_report_with_subidx_req_idx,
|
|
{ "Index", "ff.fms.info_report_with_subidx.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_info_report_with_subidx_req_subidx,
|
|
{ "Subindex", "ff.fms.info_report_with_subidx.req.subidx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.37. FMS Information Report On Change
|
|
* (Unconfirmed Service Id = 17)
|
|
*/
|
|
{ &hf_ff_fms_info_report_on_change,
|
|
{ "FMS Information Report On Change with Subindex",
|
|
"ff.fms.info_report_on_change",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.37.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_info_report_on_change_req,
|
|
{ "FMS Information Report On Change with Subindex Request",
|
|
"ff.fms.info_report_on_change.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_info_report_on_change_req_idx,
|
|
{ "Index", "ff.fms.info_report_on_change.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.38. FMS Information Report On Change with Subindex
|
|
* (Unconfirmed Service Id = 18)
|
|
*/
|
|
{ &hf_ff_fms_info_report_on_change_with_subidx,
|
|
{ "FMS Information Report On Change",
|
|
"ff.fms.info_report_on_change_with_subidx",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.38.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_info_report_on_change_with_subidx_req,
|
|
{ "FMS Information Report On Change Request",
|
|
"ff.fms.info_report_on_change_with_subidx.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_info_report_on_change_with_subidx_req_idx,
|
|
{ "Index", "ff.fms.info_report_on_change_with_subidx.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_info_report_on_change_with_subidx_req_subidx,
|
|
{ "Subindex", "ff.fms.info_report_on_change_with_subidx.req.subidx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.39. FMS Event Notification (Unconfirmed Service Id = 2)
|
|
*/
|
|
{ &hf_ff_fms_ev_notification,
|
|
{ "FMS Event Notification", "ff.fms.ev_notification",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.39.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_ev_notification_req,
|
|
{ "FMS Event Notification Request", "ff.fms.ev_notification.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_ev_notification_req_idx,
|
|
{ "Index", "ff.fms.ev_notification.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_ev_notification_req_ev_num,
|
|
{ "Event Number", "ff.fms.ev_notification.req.ev_num",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.40. FMS Alter Event Condition Monitoring
|
|
* (Confirmed Service Id = 24)
|
|
*/
|
|
{ &hf_ff_fms_alter_ev_condition_monitoring,
|
|
{ "FMS Alter Event Condition Monitoring",
|
|
"ff.fms.alter_ev_condition_monitoring",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.40.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_alter_ev_condition_monitoring_req,
|
|
{ "FMS Alter Event Condition Monitoring Request",
|
|
"ff.fms.alter_ev_condition_monitoring.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_alter_ev_condition_monitoring_req_idx,
|
|
{ "Index", "ff.fms.alter_ev_condition_monitoring.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_alter_ev_condition_monitoring_req_enabled,
|
|
{ "Enabled", "ff.fms.alter_ev_condition_monitoring.req.enabled",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.40.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_alter_ev_condition_monitoring_rsp,
|
|
{ "FMS Alter Event Condition Monitoring Response",
|
|
"ff.fms.alter_ev_condition_monitoring.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.40.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_alter_ev_condition_monitoring_err,
|
|
{ "FMS Alter Event Condition Monitoring Error",
|
|
"ff.fms.alter_ev_condition_monitoring.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_alter_ev_condition_monitoring_err_err_class,
|
|
{ "Error Class",
|
|
"ff.fms.alter_ev_condition_monitoring.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_alter_ev_condition_monitoring_err_err_code,
|
|
{ "Error Code", "ff.fms.alter_ev_condition_monitoring.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_alter_ev_condition_monitoring_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.fms.alter_ev_condition_monitoring.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_alter_ev_condition_monitoring_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.alter_ev_condition_monitoring.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.41. FMS Acknowledge Event Notification
|
|
* (Confirmed Service Id = 25)
|
|
*/
|
|
{ &hf_ff_fms_ack_ev_notification,
|
|
{ "FMS Acknowledge Event Notification",
|
|
"ff.fms.ack_ev_notification",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.41.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_ack_ev_notification_req,
|
|
{ "FMS Acknowledge Event Notification Request",
|
|
"ff.fms.ack_ev_notification.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_ack_ev_notification_req_idx,
|
|
{ "Index", "ff.fms.ack_ev_notification.req.idx",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_ack_ev_notification_req_ev_num,
|
|
{ "Event Number", "ff.fms.ack_ev_notification.req.ev_num",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.41.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_ack_ev_notification_rsp,
|
|
{ "FMS Acknowledge Event Notification Response",
|
|
"ff.fms.ack_ev_notification.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.3.41.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_fms_ack_ev_notification_err,
|
|
{ "FMS Acknowledge Event Notification Error",
|
|
"ff.fms.ack_ev_notification.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_ack_ev_notification_err_err_class,
|
|
{ "Error Class", "ff.fms.ack_ev_notification.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_ack_ev_notification_err_err_code,
|
|
{ "Error Code", "ff.fms.ack_ev_notification.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_ack_ev_notification_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.fms.ack_ev_notification.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_fms_ack_ev_notification_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.fms.ack_ev_notification.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4. LAN Redundancy Services
|
|
*/
|
|
{ &hf_ff_lr,
|
|
{ "LAN Redundancy Service", "ff.lr",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.1. LAN Redundancy Get Information (Confirmed Service Id = 1)
|
|
*/
|
|
{ &hf_ff_lr_get_info,
|
|
{ "LAN Redundancy Get Information",
|
|
"ff.lr.get_info",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.1.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_lr_get_info_req,
|
|
{ "LAN Redundancy Get Information Request",
|
|
"ff.lr.get_info.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.1.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_lr_get_info_rsp,
|
|
{ "LAN Redundancy Get Information Response",
|
|
"ff.lr.get_info.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_lr_attrs_ver,
|
|
{ "LAN Redundancy Attributes Version",
|
|
"ff.lr.get_info.rsp.lr_attrs_ver",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_lr_max_msg_num_diff,
|
|
{ "Max Message Number Difference",
|
|
"ff.lr.get_info.rsp.max_msg_num_diff",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_reserved,
|
|
{ "Reserved",
|
|
"ff.lr.get_info.rsp.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_diagnostic_msg_intvl,
|
|
{ "Diagnostic Message Interval",
|
|
"ff.lr.get_info.rsp.diagnostic_msg_intvl",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_aging_time,
|
|
{ "Aging Time",
|
|
"ff.lr.get_info.rsp.aging_time",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_send_addr,
|
|
{ "Diagnostic Message Interface A Send Address",
|
|
"ff.lr.get_info.rsp.diagnostic_msg_if_a_send_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_recv_addr,
|
|
{ "Diagnostic Message Interface A Receive Address",
|
|
"ff.lr.get_info.rsp.diagnostic_msg_if_a_recv_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_send_addr,
|
|
{ "Diagnostic Message Interface B Send Address",
|
|
"ff.lr.get_info.rsp.diagnostic_msg_if_b_send_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_recv_addr,
|
|
{ "Diagnostic Message Interface B Receive Address",
|
|
"ff.lr.get_info.rsp.diagnostic_msg_if_b_recv_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_lr_flags_reserved,
|
|
{ "Reserved",
|
|
"ff.lr.get_info.rsp.lr_flags.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_lr_flags_load_balance,
|
|
{ "Load Balancing",
|
|
"ff.lr.get_info.rsp.lr_flags.load_balance",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_lr_flags_diag,
|
|
{ "Diagnosis Using Own Messages",
|
|
"ff.lr.get_info.rsp.lr_flags.diag",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_lr_flags_multi_recv,
|
|
{ "Single Multicast Message Reception Interface",
|
|
"ff.lr.get_info.rsp.lr_flags.multi_recv",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_lr_flags_cross_cable,
|
|
{ "Crossed Cable Detection",
|
|
"ff.lr.get_info.rsp.lr_flags.cross_cable",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_rsp_lr_flags_multi_trans,
|
|
{ "Single Multicast Message Transmission Interface",
|
|
"ff.lr.get_info.rsp.lr_flags.multi_trans",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.1.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_lr_get_info_err,
|
|
{ "LAN Redundancy Get Information Error",
|
|
"ff.lr.get_info.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_err_err_class,
|
|
{ "Error Class", "ff.lr.get_info.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_err_err_code,
|
|
{ "Error Code", "ff.lr.get_info.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.lr.get_info.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_info_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.lr.get_info.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.2. LAN Redundancy Put Information (Confirmed Service Id = 2)
|
|
*/
|
|
{ &hf_ff_lr_put_info,
|
|
{ "LAN Redundancy Put Information", "ff.lr.put_info",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.2.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_lr_put_info_req,
|
|
{ "LAN Redundancy Put Information Request", "ff.lr.put_info.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_lr_attrs_ver,
|
|
{ "LAN Redundancy Attributes Version",
|
|
"ff.lr.put_info.req.lr_attrs_ver",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_lr_max_msg_num_diff,
|
|
{ "Max Message Number Difference",
|
|
"ff.lr.put_info.req.max_msg_num_diff",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_reserved,
|
|
{ "Reserved",
|
|
"ff.lr.put_info.req.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_diagnostic_msg_intvl,
|
|
{ "Diagnostic Message Interval",
|
|
"ff.lr.put_info.req.diagnostic_msg_intvl",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_aging_time,
|
|
{ "Aging Time",
|
|
"ff.lr.put_info.req.aging_time",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_diagnostic_msg_if_a_send_addr,
|
|
{ "Diagnostic Message Interface A Send Address",
|
|
"ff.lr.put_info.req.diagnostic_msg_if_a_send_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_diagnostic_msg_if_a_recv_addr,
|
|
{ "Diagnostic Message Interface A Receive Address",
|
|
"ff.lr.put_info.req.diagnostic_msg_if_a_recv_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_diagnostic_msg_if_b_send_addr,
|
|
{ "Diagnostic Message Interface B Send Address",
|
|
"ff.lr.put_info.req.diagnostic_msg_if_b_send_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_diagnostic_msg_if_b_recv_addr,
|
|
{ "Diagnostic Message Interface B Receive Address",
|
|
"ff.lr.put_info.req.diagnostic_msg_if_b_recv_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_lr_flags_reserved,
|
|
{ "Reserved",
|
|
"ff.lr.put_info.req.lr_flags.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_lr_flags_load_balance,
|
|
{ "Load Balancing",
|
|
"ff.lr.put_info.req.lr_flags.load_balance",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_lr_flags_diag,
|
|
{ "Diagnosis Using Own Messages",
|
|
"ff.lr.put_info.req.lr_flags.diag",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_lr_flags_multi_recv,
|
|
{ "Single Multicast Message Reception Interface",
|
|
"ff.lr.put_info.req.lr_flags.multi_recv",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_lr_flags_cross_cable,
|
|
{ "Crossed Cable Detection",
|
|
"ff.lr.put_info.req.lr_flags.cross_cable",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_req_lr_flags_multi_trans,
|
|
{ "Single Multicast Message Transmission Interface",
|
|
"ff.lr.put_info.req.lr_flags.multi_trans",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL } },
|
|
|
|
|
|
/*
|
|
* 6.5.4.2.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_lr_put_info_rsp,
|
|
{ "LAN Redundancy Put Information Response",
|
|
"ff.lr.put_info.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_lr_attrs_ver,
|
|
{ "LAN Redundancy Attributes Version",
|
|
"ff.lr.put_info.rsp.lr_attrs_ver",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_lr_max_msg_num_diff,
|
|
{ "Max Message Number Difference",
|
|
"ff.lr.put_info.rsp.max_msg_num_diff",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_reserved,
|
|
{ "Reserved",
|
|
"ff.lr.put_info.rsp.reserved",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_diagnostic_msg_intvl,
|
|
{ "Diagnostic Message Interval",
|
|
"ff.lr.put_info.rsp.diagnostic_msg_intvl",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_aging_time,
|
|
{ "Aging Time",
|
|
"ff.lr.put_info.rsp.aging_time",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_send_addr,
|
|
{ "Diagnostic Message Interface A Send Address",
|
|
"ff.lr.put_info.rsp.diagnostic_msg_if_a_send_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_recv_addr,
|
|
{ "Diagnostic Message Interface A Receive Address",
|
|
"ff.lr.put_info.rsp.diagnostic_msg_if_a_recv_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_send_addr,
|
|
{ "Diagnostic Message Interface B Send Address",
|
|
"ff.lr.put_info.rsp.diagnostic_msg_if_b_send_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_recv_addr,
|
|
{ "Diagnostic Message Interface B Receive Address",
|
|
"ff.lr.put_info.rsp.diagnostic_msg_if_b_recv_addr",
|
|
FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_lr_flags_reserved,
|
|
{ "Reserved",
|
|
"ff.lr.put_info.rsp.lr_flags.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_lr_flags_load_balance,
|
|
{ "Load Balancing",
|
|
"ff.lr.put_info.rsp.lr_flags.load_balance",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_lr_flags_diag,
|
|
{ "Diagnosis Using Own Messages",
|
|
"ff.lr.put_info.rsp.lr_flags.diag",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_lr_flags_multi_recv,
|
|
{ "Single Multicast Message Reception Interface",
|
|
"ff.lr.put_info.rsp.lr_flags.multi_recv",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_lr_flags_cross_cable,
|
|
{ "Crossed Cable Detection",
|
|
"ff.lr.put_info.rsp.lr_flags.cross_cable",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_rsp_lr_flags_multi_trans,
|
|
{ "Single Multicast Message Transmission Interface",
|
|
"ff.lr.put_info.rsp.lr_flags.multi_trans",
|
|
FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL } },
|
|
|
|
|
|
/*
|
|
* 6.5.4.2.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_lr_put_info_err,
|
|
{ "LAN Redundancy Put Information Error", "ff.lr.put_info.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_err_err_class,
|
|
{ "Error Class", "ff.lr.put_info.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_err_err_code,
|
|
{ "Error Code", "ff.lr.put_info.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.lr.put_info.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_put_info_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.lr.put_info.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.3. LAN Redundancy Get Statistics (Confirmed Service Id = 3)
|
|
*/
|
|
{ &hf_ff_lr_get_statistics,
|
|
{ "LAN Redundancy Get Statistics",
|
|
"ff.lr.get_statistics",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.3.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_lr_get_statistics_req,
|
|
{ "LAN Redundancy Get Statistics Request",
|
|
"ff.lr.get_statistics.req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.3.2. Response Message Parameters
|
|
*/
|
|
{ &hf_ff_lr_get_statistics_rsp,
|
|
{ "LAN Redundancy Get Statistics Response",
|
|
"ff.lr.get_statistics.rsp",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_a,
|
|
{ "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_recv_a",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_a,
|
|
{ "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_miss_a",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_a,
|
|
{ "Error Code",
|
|
"ff.lr.get_statistics.rsp.num_rem_dev_diag_recv_fault_a",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_b,
|
|
{ "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_recv_b",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_b,
|
|
{ "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_miss_b",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_b,
|
|
{ "Error Code",
|
|
"ff.lr.get_statistics.rsp.num_rem_dev_diag_recv_fault_b",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_rsp_num_x_cable_stat,
|
|
{ "Error Code", "ff.lr.get_statistics.rsp.num_x_cable_stat",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_rsp_x_cable_stat,
|
|
{ "Error Code", "ff.lr.get_statistics.rsp.x_cable_stat",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.3.3. Error Message Parameters
|
|
*/
|
|
{ &hf_ff_lr_get_statistics_err,
|
|
{ "LAN Redundancy Get Statistics Error",
|
|
"ff.lr.get_statistics.err",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_err_err_class,
|
|
{ "Error Class", "ff.lr.get_statistics.err.err_class",
|
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_err_err_code,
|
|
{ "Error Code", "ff.lr.get_statistics.err.err_code",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_err_additional_code,
|
|
{ "Additional Code",
|
|
"ff.lr.get_statistics.err.additional_code",
|
|
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_get_statistics_err_additional_desc,
|
|
{ "Additional Description",
|
|
"ff.lr.get_statistics.err.additional_desc",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.4 Diagnostic Message (Unconfirmed Service Id = 1)
|
|
*/
|
|
{ &hf_ff_lr_diagnostic_msg,
|
|
{ "Diagnostic Message", "ff.lr.diagnostic_msg",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
|
|
|
|
/*
|
|
* 6.5.4.4.1. Request Message Parameters
|
|
*/
|
|
{ &hf_ff_lr_diagnostic_msg_req,
|
|
{ "Diagnostic Message Request", "ff.lr.diagnostic_msg_req",
|
|
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_dev_idx,
|
|
{ "Device Index", "ff.lr.diagnostic_msg.req.dev_idx",
|
|
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_num_of_network_ifs,
|
|
{ "Number of Network Interfaces",
|
|
"ff.lr.diagnostic_msg.req.num_of_network_ifs",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_transmission_if,
|
|
{ "Transmission Interface",
|
|
"ff.lr.diagnostic_msg.req.transmission_if",
|
|
FT_UINT8, BASE_DEC, VALS(names_transmission_interface), 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_diagnostic_msg_intvl,
|
|
{ "Diagnostic Message Interval",
|
|
"ff.lr.diagnostic_msg.req.diagnostic_msg_intvl",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_pd_tag,
|
|
{ "PD Tag", "ff.lr.diagnostic_msg.req.pd_tag",
|
|
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_reserved,
|
|
{ "Reserved", "ff.lr.diagnostic_msg.req.reserved",
|
|
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_num_of_if_statuses,
|
|
{ "Number of Interface Statuses",
|
|
"ff.lr.diagnostic_msg.req.num_of_if_statuses",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_if_a_to_a_status,
|
|
{ "Interface AtoA Status",
|
|
"ff.lr.diagnostic_msg.req.if_a_to_a_status",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_if_b_to_a_status,
|
|
{ "Interface BtoA Status",
|
|
"ff.lr.diagnostic_msg.req.if_b_to_a_status",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_if_a_to_b_status,
|
|
{ "Interface AtoB Status",
|
|
"ff.lr.diagnostic_msg.req.if_a_to_b_status",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_if_b_to_b_status,
|
|
{ "Interface BtoB Status",
|
|
"ff.lr.diagnostic_msg.req.if_b_to_b_status",
|
|
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_dup_detection_state_reserved,
|
|
{ "Reserved", "ff.lr.diagnostic_msg.req.dup_detection_state.reserved",
|
|
FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_dup_detection_state_pd_tag,
|
|
{ "Duplicate PD Tag", "ff.lr.diagnostic_msg.req.dup_detection_state.pd_tag",
|
|
FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
|
|
|
|
{ &hf_ff_lr_diagnostic_msg_req_dup_detection_state_device,
|
|
{ "Duplicate Device Index", "ff.lr.diagnostic_msg.req.dup_detection_state.device",
|
|
FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
|
|
|
|
};
|
|
|
|
|
|
|
|
static gint *ett[] = {
|
|
&ett_ff,
|
|
&ett_ff_fda_msg_hdr,
|
|
&ett_ff_fda_msg_hdr_proto_and_type,
|
|
&ett_ff_fda_msg_hdr_opts,
|
|
&ett_ff_fda_msg_hdr_srv,
|
|
|
|
&ett_ff_fda_msg_trailer,
|
|
|
|
&ett_ff_fda_open_sess_req,
|
|
&ett_ff_fda_open_sess_rsp,
|
|
&ett_ff_fda_open_sess_err,
|
|
|
|
&ett_ff_fda_idle_req,
|
|
&ett_ff_fda_idle_rsp,
|
|
&ett_ff_fda_idle_err,
|
|
|
|
&ett_ff_sm_find_tag_query_req,
|
|
&ett_ff_sm_find_tag_reply_req,
|
|
&ett_ff_sm_find_tag_reply_req_dup_detection_state,
|
|
&ett_ff_sm_find_tag_reply_req_list_of_fda_addr_selectors,
|
|
|
|
&ett_ff_sm_id_req,
|
|
&ett_ff_sm_id_rsp,
|
|
&ett_ff_sm_id_rsp_smk_state,
|
|
&ett_ff_sm_id_rsp_dev_type,
|
|
&ett_ff_sm_id_rsp_dev_redundancy_state,
|
|
&ett_ff_sm_id_rsp_dup_detection_state,
|
|
&ett_ff_sm_id_rsp_entries_h1_live_list,
|
|
&ett_ff_sm_id_rsp_h1_live_list,
|
|
&ett_ff_sm_id_rsp_entries_node_addr,
|
|
&ett_ff_sm_id_rsp_h1_node_addr,
|
|
&ett_ff_sm_id_err,
|
|
|
|
&ett_ff_sm_clear_addr_req,
|
|
&ett_ff_sm_clear_addr_rsp,
|
|
&ett_ff_sm_clear_addr_err,
|
|
|
|
&ett_ff_sm_set_assign_info_req,
|
|
&ett_ff_sm_set_assign_info_req_dev_redundancy_state,
|
|
&ett_ff_sm_set_assign_info_req_clear_dup_detection_state,
|
|
&ett_ff_sm_set_assign_info_rsp,
|
|
&ett_ff_sm_set_assign_info_err,
|
|
|
|
&ett_ff_sm_clear_assign_info_req,
|
|
&ett_ff_sm_clear_assign_info_rsp,
|
|
&ett_ff_sm_clear_assign_info_err,
|
|
|
|
&ett_ff_sm_dev_annunc_req,
|
|
&ett_ff_sm_dev_annunc_req_smk_state,
|
|
&ett_ff_sm_dev_annunc_req_dev_type,
|
|
&ett_ff_sm_dev_annunc_req_dev_redundancy_state,
|
|
&ett_ff_sm_dev_annunc_req_dup_detection_state,
|
|
&ett_ff_sm_dev_annunc_req_entries_h1_live_list,
|
|
&ett_ff_sm_dev_annunc_req_h1_live_list,
|
|
&ett_ff_sm_dev_annunc_req_entries_node_addr,
|
|
&ett_ff_sm_dev_annunc_req_h1_node_addr,
|
|
|
|
&ett_ff_fms_init_req,
|
|
&ett_ff_fms_init_rep,
|
|
&ett_ff_fms_init_err,
|
|
|
|
&ett_ff_fms_abort_req,
|
|
|
|
&ett_ff_fms_status_req,
|
|
&ett_ff_fms_status_rsp,
|
|
&ett_ff_fms_status_err,
|
|
|
|
&ett_ff_fms_unsolicited_status_req,
|
|
|
|
&ett_ff_fms_id_req,
|
|
&ett_ff_fms_id_rsp,
|
|
&ett_ff_fms_id_err,
|
|
|
|
&ett_ff_fms_get_od_req,
|
|
&ett_ff_fms_get_od_rsp,
|
|
&ett_ff_fms_get_od_err,
|
|
|
|
&ett_ff_fms_init_put_od_req,
|
|
&ett_ff_fms_init_put_od_rsp,
|
|
&ett_ff_fms_init_put_od_err,
|
|
|
|
&ett_ff_fms_put_od_req,
|
|
&ett_ff_fms_put_od_rsp,
|
|
&ett_ff_fms_put_od_err,
|
|
|
|
&ett_ff_fms_terminate_put_od_req,
|
|
&ett_ff_fms_terminate_put_od_rsp,
|
|
&ett_ff_fms_terminate_put_od_err,
|
|
|
|
&ett_ff_fms_gen_init_download_seq_req,
|
|
&ett_ff_fms_gen_init_download_seq_rep,
|
|
&ett_ff_fms_gen_init_download_seq_err,
|
|
|
|
&ett_ff_fms_gen_download_seg_req,
|
|
&ett_ff_fms_gen_download_seg_rsp,
|
|
&ett_ff_fms_gen_download_seg_err,
|
|
|
|
&ett_ff_fms_gen_terminate_download_seq_req,
|
|
&ett_ff_fms_gen_terminate_download_seq_rsp,
|
|
&ett_ff_fms_gen_terminate_download_seq_err,
|
|
|
|
&ett_ff_fms_init_download_seq_req,
|
|
&ett_ff_fms_init_download_seq_rsp,
|
|
&ett_ff_fms_init_download_seq_err,
|
|
|
|
&ett_ff_fms_download_seg_req,
|
|
&ett_ff_fms_download_seg_rsp,
|
|
&ett_ff_fms_download_seg_err,
|
|
|
|
&ett_ff_fms_terminate_download_seq_req,
|
|
&ett_ff_fms_terminate_download_seq_rsp,
|
|
&ett_ff_fms_terminate_download_seq_err,
|
|
|
|
&ett_ff_fms_init_upload_seq_req,
|
|
&ett_ff_fms_init_upload_seq_rsp,
|
|
&ett_ff_fms_init_upload_seq_err,
|
|
|
|
&ett_ff_fms_upload_seg_req,
|
|
&ett_ff_fms_upload_seg_rsp,
|
|
&ett_ff_fms_upload_seg_err,
|
|
|
|
&ett_ff_fms_terminate_upload_seq_req,
|
|
&ett_ff_fms_terminate_upload_seq_rsp,
|
|
&ett_ff_fms_terminate_upload_seq_err,
|
|
|
|
&ett_ff_fms_req_dom_download_req,
|
|
&ett_ff_fms_req_dom_download_rsp,
|
|
&ett_ff_fms_req_dom_download_err,
|
|
|
|
&ett_ff_fms_req_dom_upload_req,
|
|
&ett_ff_fms_req_dom_upload_rsp,
|
|
&ett_ff_fms_req_dom_upload_err,
|
|
|
|
&ett_ff_fms_create_pi_req,
|
|
&ett_ff_fms_create_pi_req_list_of_dom_idxes,
|
|
&ett_ff_fms_create_pi_rsp,
|
|
&ett_ff_fms_create_pi_err,
|
|
|
|
&ett_ff_fms_del_pi_req,
|
|
&ett_ff_fms_del_pi_rsp,
|
|
&ett_ff_fms_del_pi_err,
|
|
|
|
&ett_ff_fms_start_req,
|
|
&ett_ff_fms_start_rsp,
|
|
&ett_ff_fms_start_err,
|
|
|
|
&ett_ff_fms_stop_req,
|
|
&ett_ff_fms_stop_rsp,
|
|
&ett_ff_fms_stop_err,
|
|
|
|
&ett_ff_fms_resume_req,
|
|
&ett_ff_fms_resume_rsp,
|
|
&ett_ff_fms_resume_err,
|
|
|
|
&ett_ff_fms_reset_req,
|
|
&ett_ff_fms_reset_rsp,
|
|
&ett_ff_fms_reset_err,
|
|
|
|
&ett_ff_fms_kill_req,
|
|
&ett_ff_fms_kill_rsp,
|
|
&ett_ff_fms_kill_err,
|
|
|
|
&ett_ff_fms_read_req,
|
|
&ett_ff_fms_read_rsp,
|
|
&ett_ff_fms_read_err,
|
|
|
|
&ett_ff_fms_read_with_subidx_req,
|
|
&ett_ff_fms_read_with_subidx_rsp,
|
|
&ett_ff_fms_read_with_subidx_err,
|
|
|
|
&ett_ff_fms_write_req,
|
|
&ett_ff_fms_write_rsp,
|
|
&ett_ff_fms_write_err,
|
|
|
|
&ett_ff_fms_write_with_subidx_req,
|
|
&ett_ff_fms_write_with_subidx_rsp,
|
|
&ett_ff_fms_write_with_subidx_err,
|
|
|
|
&ett_ff_fms_def_variable_list_req,
|
|
&ett_ff_fms_def_variable_list_req_list_of_idxes,
|
|
&ett_ff_fms_def_variable_list_rsp,
|
|
&ett_ff_fms_def_variable_list_err,
|
|
|
|
&ett_ff_fms_del_variable_list_req,
|
|
&ett_ff_fms_del_variable_list_rsp,
|
|
&ett_ff_fms_del_variable_list_err,
|
|
|
|
&ett_ff_fms_info_report_req,
|
|
|
|
&ett_ff_fms_info_report_with_subidx_req,
|
|
|
|
&ett_ff_fms_info_report_on_change_req,
|
|
|
|
&ett_ff_fms_info_report_on_change_with_subidx_req,
|
|
|
|
&ett_ff_fms_ev_notification_req,
|
|
|
|
&ett_ff_fms_alter_ev_condition_monitoring_req,
|
|
&ett_ff_fms_alter_ev_condition_monitoring_rsp,
|
|
&ett_ff_fms_alter_ev_condition_monitoring_err,
|
|
|
|
&ett_ff_fms_ack_ev_notification_req,
|
|
&ett_ff_fms_ack_ev_notification_rsp,
|
|
&ett_ff_fms_ack_ev_notification_err,
|
|
|
|
&ett_ff_lr_get_info_req,
|
|
&ett_ff_lr_get_info_rsp,
|
|
&ett_ff_lr_get_info_rsp_lr_flags,
|
|
&ett_ff_lr_get_info_err,
|
|
|
|
&ett_ff_lr_put_info_req,
|
|
&ett_ff_lr_put_info_req_lr_flags,
|
|
&ett_ff_lr_put_info_rsp,
|
|
&ett_ff_lr_put_info_rsp_lr_flags,
|
|
&ett_ff_lr_put_info_err,
|
|
|
|
&ett_ff_lr_get_statistics_req,
|
|
&ett_ff_lr_get_statistics_rsp,
|
|
&ett_ff_lr_get_statistics_rsp_list_of_x_cable_stat,
|
|
&ett_ff_lr_get_statistics_err,
|
|
|
|
&ett_ff_lr_diagnostic_msg_req,
|
|
&ett_ff_lr_diagnostic_msg_req_dup_detection_stat,
|
|
&ett_ff_lr_diagnostic_msg_req_a_to_a_status,
|
|
&ett_ff_lr_diagnostic_msg_req_b_to_a_status,
|
|
&ett_ff_lr_diagnostic_msg_req_a_to_b_status,
|
|
&ett_ff_lr_diagnostic_msg_req_b_to_b_status,
|
|
};
|
|
|
|
proto_ff = proto_register_protocol("FOUNDATION Fieldbus", "FF", "ff");
|
|
proto_register_field_array(proto_ff, hf, array_length(hf));
|
|
proto_register_subtree_array(ett, array_length(ett));
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void
|
|
proto_reg_handoff_ff(void)
|
|
{
|
|
/*
|
|
* 4.8. Using UDP and TCP
|
|
*/
|
|
ff_udp_handle = new_create_dissector_handle(dissect_ff_udp, proto_ff);
|
|
ff_tcp_handle = new_create_dissector_handle(dissect_ff_tcp, proto_ff);
|
|
|
|
/*
|
|
* 4.8.4.2. Use
|
|
*
|
|
* - Device Annunciation
|
|
*/
|
|
dissector_add_uint("udp.port", UDP_PORT_FF_ANNUNC, ff_udp_handle);
|
|
|
|
/*
|
|
* 4.8.4.2. Use
|
|
*
|
|
* - Client / Server
|
|
*/
|
|
dissector_add_uint("udp.port", UDP_PORT_FF_FMS, ff_udp_handle);
|
|
dissector_add_uint("tcp.port", TCP_PORT_FF_FMS, ff_tcp_handle);
|
|
|
|
/*
|
|
* 4.8.4.2. Use
|
|
*
|
|
* - Set/Clear Assignment Info and Clear Address
|
|
* - SM Identify
|
|
* - SM Find Tag
|
|
*/
|
|
dissector_add_uint("udp.port", UDP_PORT_FF_SM, ff_udp_handle);
|
|
|
|
/*
|
|
* 4.8.4.2. Use
|
|
*
|
|
* - LAN Redundancy Get and Put Information
|
|
*/
|
|
dissector_add_uint("udp.port", UDP_PORT_FF_LR_PORT, ff_udp_handle);
|
|
|
|
return;
|
|
}
|