HACK: pinfo->private_data points to smb_info again
[wireshark-wip.git] / epan / dissectors / packet-ff.c
blob0bd5e27fc504a9d7ab0559f05b12c3aacea0fc95
1 /* packet-ff.c
2 * Routines for FF-HSE packet disassembly
4 * FF-588-1.3: HSE Field Device Access Agent
5 * 6. Field Device Access Agent Interface
7 * (c) Copyright 2008, Yukiyo Akisada <Yukiyo.Akisada@jp.yokogawa.com>
9 * $Id$
11 * Wireshark - Network traffic analyzer
12 * By Gerald Combs <gerald@wireshark.org>
13 * Copyright 1998 Gerald Combs
15 * This program is free software; you can redistribute it and/or
16 * modify it under the terms of the GNU General Public License
17 * as published by the Free Software Foundation; either version 2
18 * of the License, or (at your option) any later version.
20 * This program is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
25 * You should have received a copy of the GNU General Public License
26 * along with this program; if not, write to the Free Software
27 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
31 * /etc/services
32 * ---------------------------------------------------------------------
33 * ff-annunc 1089/tcp # FF Annunciation
34 * ff-annunc 1089/udp # FF Annunciation
35 * ff-fms 1090/tcp # FF Fieldbus Message Specification
36 * ff-fms 1090/udp # FF Fieldbus Message Specification
37 * ff-sm 1091/tcp # FF System Management
38 * ff-sm 1091/udp # FF System Management
39 * ff-lr-port 3622/tcp # FF LAN Redundancy Port
40 * ff-lr-port 3622/udp # FF LAN Redundancy Port
41 * ---------------------------------------------------------------------
44 #include "config.h"
46 #include <glib.h>
48 #include <epan/packet.h>
49 #include "packet-ff.h"
50 #include "packet-tcp.h"
54 static int proto_ff = -1;
55 static gint ett_ff = -1;
57 static gboolean ff_desegment = TRUE; /* desegmentation of FF over TCP */
59 static dissector_handle_t ff_udp_handle;
60 static dissector_handle_t ff_tcp_handle;
65 * 6.3. Message Header
67 static int hf_ff_fda_msg_hdr = -1;
69 static int hf_ff_fda_msg_hdr_ver = -1;
70 static int hf_ff_fda_msg_hdr_fda_addr = -1;
71 static int hf_ff_fda_msg_hdr_len = -1;
73 static gint ett_ff_fda_msg_hdr = -1;
74 static gint ett_ff_fda_msg_hdr_proto_and_type = -1;
75 static gint ett_ff_fda_msg_hdr_opts = -1;
76 static gint ett_ff_fda_msg_hdr_srv = -1;
81 * 6.4. Message Trailer
83 static int hf_ff_fda_msg_trailer = -1;
85 static int hf_ff_fda_msg_trailer_msg_num = -1;
86 static int hf_ff_fda_msg_trailer_invoke_id = -1;
87 static int hf_ff_fda_msg_trailer_time_stamp = -1;
88 static int hf_ff_fda_msg_trailer_extended_control_field = -1;
90 static gint ett_ff_fda_msg_trailer = -1;
95 * 6.5.1 FDA Session Management Services
97 static int hf_ff_fda = -1;
98 static int hf_ff_hdr_srv_confirm_flag = -1;
99 static int hf_ff_hdr_srv_service_id = -1;
100 static int hf_ff_hdr_srv_fda_service_id_confirm = -1;
101 static int hf_ff_hdr_srv_fda_service_id_unconfirm = -1;
102 static int hf_ff_hdr_srv_sm_service_id_confirm = -1;
103 static int hf_ff_hdr_srv_sm_service_id_unconfirm = -1;
104 static int hf_ff_hdr_srv_fms_service_id_confirm = -1;
105 static int hf_ff_hdr_srv_fms_service_id_unconfirm = -1;
106 static int hf_ff_hdr_srv_lan_service_id_confirm = -1;
107 static int hf_ff_hdr_srv_lan_service_id_unconfirm = -1;
108 static int hf_ff_hdr_proto_id = -1;
109 static int hf_ff_hdr_confirm_msg_type = -1;
110 static int hf_ff_hdr_opts_msg_num = -1;
111 static int hf_ff_hdr_opts_invoke_id = -1;
112 static int hf_ff_hdr_opts_timestamp = -1;
113 static int hf_ff_hdr_opts_reserved = -1;
114 static int hf_ff_hdr_opts_ext_ctrl = -1;
115 static int hf_ff_hdr_opts_pad = -1;
118 * 6.5.1.1. FDA Open Session (Confirmed Service Id = 1)
120 static int hf_ff_fda_open_sess = -1;
122 static int hf_ff_fda_open_sess_req = -1;
123 static int hf_ff_fda_open_sess_req_sess_idx = -1;
124 static int hf_ff_fda_open_sess_req_max_buf_siz = -1;
125 static int hf_ff_fda_open_sess_req_max_msg_len = -1;
126 static int hf_ff_fda_open_sess_req_reserved = -1;
127 static int hf_ff_fda_open_sess_req_nma_conf_use = -1;
128 static int hf_ff_fda_open_sess_req_inactivity_close_time = -1;
129 static int hf_ff_fda_open_sess_req_transmit_delay_time = -1;
130 static int hf_ff_fda_open_sess_req_pd_tag = -1;
132 static int hf_ff_fda_open_sess_rsp = -1;
133 static int hf_ff_fda_open_sess_rsp_sess_idx = -1;
134 static int hf_ff_fda_open_sess_rsp_max_buf_siz = -1;
135 static int hf_ff_fda_open_sess_rsp_max_msg_len = -1;
136 static int hf_ff_fda_open_sess_rsp_reserved = -1;
137 static int hf_ff_fda_open_sess_rsp_nma_conf_use = -1;
138 static int hf_ff_fda_open_sess_rsp_inactivity_close_time = -1;
139 static int hf_ff_fda_open_sess_rsp_transmit_delay_time = -1;
140 static int hf_ff_fda_open_sess_rsp_pd_tag = -1;
142 static int hf_ff_fda_open_sess_err = -1;
143 static int hf_ff_fda_open_sess_err_err_class = -1;
144 static int hf_ff_fda_open_sess_err_err_code = -1;
145 static int hf_ff_fda_open_sess_err_additional_code = -1;
146 static int hf_ff_fda_open_sess_err_additional_desc = -1;
148 static gint ett_ff_fda_open_sess_req = -1;
149 static gint ett_ff_fda_open_sess_rsp = -1;
150 static gint ett_ff_fda_open_sess_err = -1;
155 * 6.5.1.2. FDA Idle (Confirmed Service Id = 3)
157 static int hf_ff_fda_idle = -1;
159 static int hf_ff_fda_idle_req = -1;
161 static int hf_ff_fda_idle_rsp = -1;
163 static int hf_ff_fda_idle_err = -1;
164 static int hf_ff_fda_idle_err_err_class = -1;
165 static int hf_ff_fda_idle_err_err_code = -1;
166 static int hf_ff_fda_idle_err_additional_code = -1;
167 static int hf_ff_fda_idle_err_additional_desc = -1;
169 static gint ett_ff_fda_idle_req = -1;
170 static gint ett_ff_fda_idle_rsp = -1;
171 static gint ett_ff_fda_idle_err = -1;
176 * 6.5.2. SM Services
178 static int hf_ff_sm = -1;
183 * 6.5.2.1. SM Find Tag Query (Unconfirmed Service Id = 1)
185 static int hf_ff_sm_find_tag_query = -1;
187 static int hf_ff_sm_find_tag_query_req = -1;
188 static int hf_ff_sm_find_tag_query_req_query_type = -1;
189 static int hf_ff_sm_find_tag_query_req_idx = -1;
190 static int hf_ff_sm_find_tag_query_req_tag = -1;
191 static int hf_ff_sm_find_tag_query_req_vfd_tag = -1;
193 static gint ett_ff_sm_find_tag_query_req = -1;
198 * 6.5.2.2. SM Find Tag Reply (Unconfirmed Service Id = 2)
200 static int hf_ff_sm_find_tag_reply = -1;
202 static int hf_ff_sm_find_tag_reply_req = -1;
203 static int hf_ff_sm_find_tag_reply_req_query_type = -1;
204 static int hf_ff_sm_find_tag_reply_req_h1_node_addr = -1;
205 static int hf_ff_sm_find_tag_reply_req_fda_addr_link_id = -1;
206 static int hf_ff_sm_find_tag_reply_req_vfd_ref = -1;
207 static int hf_ff_sm_find_tag_reply_req_od_idx = -1;
208 static int hf_ff_sm_find_tag_reply_req_ip_addr = -1;
209 static int hf_ff_sm_find_tag_reply_req_od_ver = -1;
210 static int hf_ff_sm_find_tag_reply_req_dev_id = -1;
211 static int hf_ff_sm_find_tag_reply_req_pd_tag = -1;
212 static int hf_ff_sm_find_tag_reply_req_reserved = -1;
213 static int hf_ff_sm_find_tag_reply_req_num_of_fda_addr_selectors = -1;
214 static int hf_ff_sm_find_tag_reply_req_fda_addr_selector = -1;
215 static int hf_ff_sm_find_tag_reply_dup_reserved = -1;
216 static int hf_ff_sm_find_tag_reply_dup_pd_tag = -1;
217 static int hf_ff_sm_find_tag_reply_dup_device = -1;
219 static gint ett_ff_sm_find_tag_reply_req = -1;
220 static gint ett_ff_sm_find_tag_reply_req_dup_detection_state = -1;
221 static gint ett_ff_sm_find_tag_reply_req_list_of_fda_addr_selectors = -1;
226 * 6.5.2.3. SM Identify (Confirmed Service Id = 3)
228 static int hf_ff_sm_id = -1;
230 static int hf_ff_sm_id_req = -1;
232 static int hf_ff_sm_id_rsp = -1;
233 static int hf_ff_sm_id_rsp_dev_idx = -1;
234 static int hf_ff_sm_id_rsp_max_dev_idx = -1;
235 static int hf_ff_sm_id_rsp_operational_ip_addr = -1;
236 static int hf_ff_sm_id_rsp_dev_id = -1;
237 static int hf_ff_sm_id_rsp_pd_tag = -1;
238 static int hf_ff_sm_id_rsp_hse_repeat_time = -1;
239 static int hf_ff_sm_id_rsp_lr_port = -1;
240 static int hf_ff_sm_id_rsp_reserved = -1;
241 static int hf_ff_sm_id_rsp_annunc_ver_num = -1;
242 static int hf_ff_sm_id_rsp_hse_dev_ver_num = -1;
243 static int hf_ff_sm_id_rsp_num_of_entries = -1;
244 static int hf_ff_sm_id_rsp_h1_live_list_h1_link_id = -1;
245 static int hf_ff_sm_id_rsp_h1_live_list_reserved = -1;
246 static int hf_ff_sm_id_rsp_h1_live_list_ver_num = -1;
247 static int hf_ff_sm_id_rsp_h1_node_addr_ver_num_h1_node_addr = -1;
248 static int hf_ff_sm_id_rsp_h1_node_addr_ver_num_ver_num = -1;
249 static int hf_ff_sm_id_rsp_smk_state_name = -1;
250 static int hf_ff_sm_id_rsp_smk_state_sync = -1;
251 static int hf_ff_sm_id_rsp_dev_type_link = -1;
252 static int hf_ff_sm_id_rsp_dev_type_iogateway = -1;
253 static int hf_ff_sm_id_rsp_dev_type_hse = -1;
254 static int hf_ff_sm_id_rsp_dev_type_h1 = -1;
255 static int hf_ff_sm_id_rsp_dev_type_reserved = -1;
256 static int hf_ff_sm_id_rsp_dev_type_redundant_caps = -1;
257 static int hf_ff_sm_id_rsp_dev_redundancy_state_reserved = -1;
258 static int hf_ff_sm_id_rsp_dev_redundancy_state_role = -1;
259 static int hf_ff_sm_id_rsp_dev_redundancy_state_type = -1;
260 static int hf_ff_sm_id_rsp_dup_detection_state_reserved = -1;
261 static int hf_ff_sm_id_rsp_dup_detection_state_pd_tag = -1;
262 static int hf_ff_sm_id_rsp_dup_detection_state_device = -1;
264 static int hf_ff_sm_id_err = -1;
265 static int hf_ff_sm_id_err_err_class = -1;
266 static int hf_ff_sm_id_err_err_code = -1;
267 static int hf_ff_sm_id_err_additional_code = -1;
268 static int hf_ff_sm_id_err_additional_desc = -1;
270 static gint ett_ff_sm_id_req = -1;
271 static gint ett_ff_sm_id_rsp = -1;
272 static gint ett_ff_sm_id_rsp_smk_state = -1;
273 static gint ett_ff_sm_id_rsp_dev_type = -1;
274 static gint ett_ff_sm_id_rsp_dev_redundancy_state = -1;
275 static gint ett_ff_sm_id_rsp_dup_detection_state = -1;
276 static gint ett_ff_sm_id_rsp_entries_h1_live_list = -1;
277 static gint ett_ff_sm_id_rsp_h1_live_list = -1;
278 static gint ett_ff_sm_id_rsp_entries_node_addr = -1;
279 static gint ett_ff_sm_id_rsp_h1_node_addr = -1;
280 static gint ett_ff_sm_id_err = -1;
285 * 6.5.2.4. SM Clear Address (Confirmed Service Id = 12)
287 static int hf_ff_sm_clear_addr = -1;
289 static int hf_ff_sm_clear_addr_req = -1;
290 static int hf_ff_sm_clear_addr_req_dev_id = -1;
291 static int hf_ff_sm_clear_addr_req_pd_tag = -1;
292 static int hf_ff_sm_clear_addr_req_interface_to_clear = -1;
294 static int hf_ff_sm_clear_addr_rsp = -1;
296 static int hf_ff_sm_clear_addr_err = -1;
297 static int hf_ff_sm_clear_addr_err_err_class = -1;
298 static int hf_ff_sm_clear_addr_err_err_code = -1;
299 static int hf_ff_sm_clear_addr_err_additional_code = -1;
300 static int hf_ff_sm_clear_addr_err_additional_desc = -1;
302 static gint ett_ff_sm_clear_addr_req = -1;
303 static gint ett_ff_sm_clear_addr_rsp = -1;
304 static gint ett_ff_sm_clear_addr_err = -1;
309 * 6.5.2.5. SM Set Assignment Info (Confirmed Service Id = 14)
311 static int hf_ff_sm_set_assign_info = -1;
313 static int hf_ff_sm_set_assign_info_req_dev_redundancy_state_reserved = -1;
314 static int hf_ff_sm_set_assign_info_req_dev_redundancy_state_role = -1;
315 static int hf_ff_sm_set_assign_info_req_dev_redundancy_state_type = -1;
316 static int hf_ff_sm_set_assign_info_req_clear_dup_detection_state_reserved = -1;
317 static int hf_ff_sm_set_assign_info_req_clear_dup_detection_state_pd_tag = -1;
318 static int hf_ff_sm_set_assign_info_req_clear_dup_detection_state_device_index = -1;
320 static int hf_ff_sm_set_assign_info_req = -1;
321 static int hf_ff_sm_set_assign_info_req_dev_id = -1;
322 static int hf_ff_sm_set_assign_info_req_pd_tag = -1;
323 static int hf_ff_sm_set_assign_info_req_h1_new_addr = -1;
324 static int hf_ff_sm_set_assign_info_req_lr_port = -1;
325 static int hf_ff_sm_set_assign_info_req_hse_repeat_time = -1;
326 static int hf_ff_sm_set_assign_info_req_dev_idx = -1;
327 static int hf_ff_sm_set_assign_info_req_max_dev_idx = -1;
328 static int hf_ff_sm_set_assign_info_req_operational_ip_addr = -1;
330 static int hf_ff_sm_set_assign_info_rsp = -1;
331 static int hf_ff_sm_set_assign_info_rsp_reserved = -1;
332 static int hf_ff_sm_set_assign_info_rsp_max_dev_idx = -1;
333 static int hf_ff_sm_set_assign_info_rsp_hse_repeat_time = -1;
335 static int hf_ff_sm_set_assign_info_err = -1;
336 static int hf_ff_sm_set_assign_info_err_err_class = -1;
337 static int hf_ff_sm_set_assign_info_err_err_code = -1;
338 static int hf_ff_sm_set_assign_info_err_additional_code = -1;
339 static int hf_ff_sm_set_assign_info_err_additional_desc = -1;
341 static gint ett_ff_sm_set_assign_info_req = -1;
342 static gint ett_ff_sm_set_assign_info_req_dev_redundancy_state = -1;
343 static gint ett_ff_sm_set_assign_info_req_clear_dup_detection_state = -1;
344 static gint ett_ff_sm_set_assign_info_rsp = -1;
345 static gint ett_ff_sm_set_assign_info_err = -1;
350 * 6.5.2.6. SM Clear Assignment Info (Confirmed Service Id = 15)
352 static int hf_ff_sm_clear_assign_info = -1;
354 static int hf_ff_sm_clear_assign_info_req = -1;
355 static int hf_ff_sm_clear_assign_info_req_dev_id = -1;
356 static int hf_ff_sm_clear_assign_info_req_pd_tag = -1;
358 static int hf_ff_sm_clear_assign_info_rsp = -1;
360 static int hf_ff_sm_clear_assign_info_err = -1;
361 static int hf_ff_sm_clear_assign_info_err_err_class = -1;
362 static int hf_ff_sm_clear_assign_info_err_err_code = -1;
363 static int hf_ff_sm_clear_assign_info_err_additional_code = -1;
364 static int hf_ff_sm_clear_assign_info_err_additional_desc = -1;
366 static gint ett_ff_sm_clear_assign_info_req = -1;
367 static gint ett_ff_sm_clear_assign_info_rsp = -1;
368 static gint ett_ff_sm_clear_assign_info_err = -1;
373 * 6.5.2.7. SM Device Annunciation (Unconfirmed Service Id = 16)
375 static int hf_ff_sm_dev_annunc = -1;
377 static int hf_ff_sm_dev_annunc_req = -1;
378 static int hf_ff_sm_dev_annunc_req_dev_idx = -1;
379 static int hf_ff_sm_dev_annunc_req_max_dev_idx = -1;
380 static int hf_ff_sm_dev_annunc_req_operational_ip_addr = -1;
381 static int hf_ff_sm_dev_annunc_req_dev_id = -1;
382 static int hf_ff_sm_dev_annunc_req_pd_tag = -1;
383 static int hf_ff_sm_dev_annunc_req_hse_repeat_time = -1;
384 static int hf_ff_sm_dev_annunc_req_lr_port = -1;
385 static int hf_ff_sm_dev_annunc_req_reserved = -1;
386 static int hf_ff_sm_dev_annunc_req_annunc_ver_num = -1;
387 static int hf_ff_sm_dev_annunc_req_hse_dev_ver_num = -1;
388 static int hf_ff_sm_dev_annunc_req_num_of_entries = -1;
389 static int hf_ff_sm_dev_annunc_req_h1_live_list_h1_link_id = -1;
390 static int hf_ff_sm_dev_annunc_req_h1_live_list_reserved = -1;
391 static int hf_ff_sm_dev_annunc_req_h1_live_list_ver_num = -1;
392 static int hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_h1_node_addr = -1;
393 static int hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_ver_num = -1;
394 static int hf_ff_sm_dev_annunc_req_smk_state_name = -1;
395 static int hf_ff_sm_dev_annunc_req_smk_state_sync = -1;
396 static int hf_ff_sm_dev_annunc_req_dev_type_link = -1;
397 static int hf_ff_sm_dev_annunc_req_dev_type_iogateway = -1;
398 static int hf_ff_sm_dev_annunc_req_dev_type_hse = -1;
399 static int hf_ff_sm_dev_annunc_req_dev_type_h1 = -1;
400 static int hf_ff_sm_dev_annunc_req_dev_type_reserved = -1;
401 static int hf_ff_sm_dev_annunc_req_dev_type_redundant_caps = -1;
402 static int hf_ff_sm_dev_annunc_req_dev_redundancy_state_reserved = -1;
403 static int hf_ff_sm_dev_annunc_req_dev_redundancy_state_role = -1;
404 static int hf_ff_sm_dev_annunc_req_dev_redundancy_state_type = -1;
405 static int hf_ff_sm_dev_annunc_req_dup_detection_state_reserved = -1;
406 static int hf_ff_sm_dev_annunc_req_dup_detection_state_pd_tag = -1;
407 static int hf_ff_sm_dev_annunc_req_dup_detection_state_device = -1;
409 static gint ett_ff_sm_dev_annunc_req = -1;
410 static gint ett_ff_sm_dev_annunc_req_smk_state = -1;
411 static gint ett_ff_sm_dev_annunc_req_dev_type = -1;
412 static gint ett_ff_sm_dev_annunc_req_dev_redundancy_state = -1;
413 static gint ett_ff_sm_dev_annunc_req_dup_detection_state = -1;
414 static gint ett_ff_sm_dev_annunc_req_entries_h1_live_list = -1;
415 static gint ett_ff_sm_dev_annunc_req_h1_live_list = -1;
416 static gint ett_ff_sm_dev_annunc_req_entries_node_addr = -1;
417 static gint ett_ff_sm_dev_annunc_req_h1_node_addr = -1;
422 * 6.5.3. FMS Services
424 static int hf_ff_fms = -1;
429 * 6.5.3.2. FMS Initiate (Confirmed Service Id = 96)
431 static int hf_ff_fms_init = -1;
433 static int hf_ff_fms_init_req = -1;
434 static int hf_ff_fms_init_req_conn_opt = -1;
435 static int hf_ff_fms_init_req_access_protection_supported_calling = -1;
436 static int hf_ff_fms_init_req_passwd_and_access_grps_calling = -1;
437 static int hf_ff_fms_init_req_ver_od_calling = -1;
438 static int hf_ff_fms_init_req_prof_num_calling = -1;
439 static int hf_ff_fms_init_req_pd_tag = -1;
441 static int hf_ff_fms_init_rsp = -1;
442 static int hf_ff_fms_init_rsp_ver_od_called = -1;
443 static int hf_ff_fms_init_rsp_prof_num_called = -1;
445 static int hf_ff_fms_init_err = -1;
446 static int hf_ff_fms_init_err_err_class = -1;
447 static int hf_ff_fms_init_err_err_code = -1;
448 static int hf_ff_fms_init_err_additional_code = -1;
449 static int hf_ff_fms_init_err_additional_desc = -1;
451 static gint ett_ff_fms_init_req = -1;
452 static gint ett_ff_fms_init_rep = -1;
453 static gint ett_ff_fms_init_err = -1;
458 * 6.5.3.3. FMS Abort (Unconfirmed Service Id = 112)
460 static int hf_ff_fms_abort = -1;
462 static int hf_ff_fms_abort_req = -1;
463 static int hf_ff_fms_abort_req_abort_id = -1;
464 static int hf_ff_fms_abort_req_reason_code = -1;
465 static int hf_ff_fms_abort_req_reserved = -1;
467 static gint ett_ff_fms_abort_req = -1;
472 * 6.5.3.4. FMS Status (Confirmed Service Id = 0)
474 static int hf_ff_fms_status = -1;
476 static int hf_ff_fms_status_req = -1;
478 static int hf_ff_fms_status_rsp = -1;
479 static int hf_ff_fms_status_rsp_logical_status = -1;
480 static int hf_ff_fms_status_rsp_physical_status = -1;
481 static int hf_ff_fms_status_rsp_reserved = -1;
483 static int hf_ff_fms_status_err = -1;
484 static int hf_ff_fms_status_err_err_class = -1;
485 static int hf_ff_fms_status_err_err_code = -1;
486 static int hf_ff_fms_status_err_additional_code = -1;
487 static int hf_ff_fms_status_err_additional_desc = -1;
489 static gint ett_ff_fms_status_req = -1;
490 static gint ett_ff_fms_status_rsp = -1;
491 static gint ett_ff_fms_status_err = -1;
496 * 6.5.3.5. FMS Unsolicited Status (Unconfirmed Service Id = 1)
498 static int hf_ff_fms_unsolicited_status = -1;
500 static int hf_ff_fms_unsolicited_status_req = -1;
501 static int hf_ff_fms_unsolicited_status_req_logical_status = -1;
502 static int hf_ff_fms_unsolicited_status_req_physical_status = -1;
503 static int hf_ff_fms_unsolicited_status_req_reserved = -1;
505 static gint ett_ff_fms_unsolicited_status_req = -1;
510 * 6.5.3.6. FMS Identify (Confirmed Service Id = 1)
512 static int hf_ff_fms_id = -1;
514 static int hf_ff_fms_id_req = -1;
516 static int hf_ff_fms_id_rsp = -1;
517 static int hf_ff_fms_id_rsp_vendor_name = -1;
518 static int hf_ff_fms_id_rsp_model_name = -1;
519 static int hf_ff_fms_id_rsp_revision = -1;
521 static int hf_ff_fms_id_err = -1;
522 static int hf_ff_fms_id_err_err_class = -1;
523 static int hf_ff_fms_id_err_err_code = -1;
524 static int hf_ff_fms_id_err_additional_code = -1;
525 static int hf_ff_fms_id_err_additional_desc = -1;
527 static gint ett_ff_fms_id_req = -1;
528 static gint ett_ff_fms_id_rsp = -1;
529 static gint ett_ff_fms_id_err = -1;
534 * 6.5.3.7. FMS Get OD (Confirmed Service Id = 4)
536 static int hf_ff_fms_get_od = -1;
538 static int hf_ff_fms_get_od_req = -1;
539 static int hf_ff_fms_get_od_req_all_attrs = -1;
540 static int hf_ff_fms_get_od_req_start_idx_flag = -1;
541 static int hf_ff_fms_get_od_req_reserved = -1;
542 static int hf_ff_fms_get_od_req_idx = -1;
544 static int hf_ff_fms_get_od_rsp = -1;
545 static int hf_ff_fms_get_od_rsp_more_follows = -1;
546 static int hf_ff_fms_get_od_rsp_num_of_obj_desc = -1;
547 static int hf_ff_fms_get_od_rsp_reserved = -1;
549 static int hf_ff_fms_get_od_err = -1;
550 static int hf_ff_fms_get_od_err_err_class = -1;
551 static int hf_ff_fms_get_od_err_err_code = -1;
552 static int hf_ff_fms_get_od_err_additional_code = -1;
553 static int hf_ff_fms_get_od_err_additional_desc = -1;
555 static gint ett_ff_fms_get_od_req = -1;
556 static gint ett_ff_fms_get_od_rsp = -1;
557 static gint ett_ff_fms_get_od_err = -1;
562 * 6.5.3.8. FMS Initiate Put OD (Confirmed Service Id = 28)
564 static int hf_ff_fms_init_put_od = -1;
566 static int hf_ff_fms_init_put_od_req = -1;
567 static int hf_ff_fms_init_put_od_req_reserved = -1;
568 static int hf_ff_fms_init_put_od_req_consequence = -1;
570 static int hf_ff_fms_init_put_od_rsp = -1;
572 static int hf_ff_fms_init_put_od_err = -1;
573 static int hf_ff_fms_init_put_od_err_err_class = -1;
574 static int hf_ff_fms_init_put_od_err_err_code = -1;
575 static int hf_ff_fms_init_put_od_err_additional_code = -1;
576 static int hf_ff_fms_init_put_od_err_additional_desc = -1;
578 static gint ett_ff_fms_init_put_od_req = -1;
579 static gint ett_ff_fms_init_put_od_rsp = -1;
580 static gint ett_ff_fms_init_put_od_err = -1;
585 * 6.5.3.9. FMS Put OD (Confirmed Service Id = 29)
587 static int hf_ff_fms_put_od = -1;
589 static int hf_ff_fms_put_od_req = -1;
590 static int hf_ff_fms_put_od_req_num_of_obj_desc = -1;
592 static int hf_ff_fms_put_od_rsp = -1;
594 static int hf_ff_fms_put_od_err = -1;
595 static int hf_ff_fms_put_od_err_err_class = -1;
596 static int hf_ff_fms_put_od_err_err_code = -1;
597 static int hf_ff_fms_put_od_err_additional_code = -1;
598 static int hf_ff_fms_put_od_err_additional_desc = -1;
600 static gint ett_ff_fms_put_od_req = -1;
601 static gint ett_ff_fms_put_od_rsp = -1;
602 static gint ett_ff_fms_put_od_err = -1;
607 * 6.5.3.10. FMS Terminate Put OD (Confirmed Service Id = 30)
609 static int hf_ff_fms_terminate_put_od = -1;
611 static int hf_ff_fms_terminate_put_od_req = -1;
613 static int hf_ff_fms_terminate_put_od_rsp = -1;
615 static int hf_ff_fms_terminate_put_od_err = -1;
616 static int hf_ff_fms_terminate_put_od_err_index = -1;
617 static int hf_ff_fms_terminate_put_od_err_err_class = -1;
618 static int hf_ff_fms_terminate_put_od_err_err_code = -1;
619 static int hf_ff_fms_terminate_put_od_err_additional_code = -1;
620 static int hf_ff_fms_terminate_put_od_err_additional_desc = -1;
622 static gint ett_ff_fms_terminate_put_od_req = -1;
623 static gint ett_ff_fms_terminate_put_od_rsp = -1;
624 static gint ett_ff_fms_terminate_put_od_err = -1;
629 * 6.5.3.11. FMS Generic Initiate Download Sequence (Confirmed Service Id = 31)
631 static int hf_ff_fms_gen_init_download_seq = -1;
633 static int hf_ff_fms_gen_init_download_seq_req = -1;
634 static int hf_ff_fms_gen_init_download_seq_req_idx = -1;
636 static int hf_ff_fms_gen_init_download_seq_rsp = -1;
638 static int hf_ff_fms_gen_init_download_seq_err = -1;
639 static int hf_ff_fms_gen_init_download_seq_err_err_class = -1;
640 static int hf_ff_fms_gen_init_download_seq_err_err_code = -1;
641 static int hf_ff_fms_gen_init_download_seq_err_additional_code = -1;
642 static int hf_ff_fms_gen_init_download_seq_err_additional_desc = -1;
644 static gint ett_ff_fms_gen_init_download_seq_req = -1;
645 static gint ett_ff_fms_gen_init_download_seq_rep = -1;
646 static gint ett_ff_fms_gen_init_download_seq_err = -1;
651 * 6.5.3.12. FMS Generic Download Segment (Confirmed Service Id = 32)
653 static int hf_ff_fms_gen_download_seg = -1;
655 static int hf_ff_fms_gen_download_seg_req = -1;
656 static int hf_ff_fms_gen_download_seg_req_idx = -1;
657 static int hf_ff_fms_gen_download_seg_req_more_follows = -1;
659 static int hf_ff_fms_gen_download_seg_rsp = -1;
661 static int hf_ff_fms_gen_download_seg_err = -1;
662 static int hf_ff_fms_gen_download_seg_err_err_class = -1;
663 static int hf_ff_fms_gen_download_seg_err_err_code = -1;
664 static int hf_ff_fms_gen_download_seg_err_additional_code = -1;
665 static int hf_ff_fms_gen_download_seg_err_additional_desc = -1;
667 static gint ett_ff_fms_gen_download_seg_req = -1;
668 static gint ett_ff_fms_gen_download_seg_rsp = -1;
669 static gint ett_ff_fms_gen_download_seg_err = -1;
674 * 6.5.3.13. FMS Generic Terminate Download Sequence (Confirmed Service Id = 33)
676 static int hf_ff_fms_gen_terminate_download_seq = -1;
678 static int hf_ff_fms_gen_terminate_download_seq_req = -1;
679 static int hf_ff_fms_gen_terminate_download_seq_req_idx = -1;
681 static int hf_ff_fms_gen_terminate_download_seq_rsp = -1;
682 static int hf_ff_fms_gen_terminate_download_seq_rsp_final_result = -1;
684 static int hf_ff_fms_gen_terminate_download_seq_err = -1;
685 static int hf_ff_fms_gen_terminate_download_seq_err_err_class = -1;
686 static int hf_ff_fms_gen_terminate_download_seq_err_err_code = -1;
687 static int hf_ff_fms_gen_terminate_download_seq_err_additional_code = -1;
688 static int hf_ff_fms_gen_terminate_download_seq_err_additional_desc = -1;
690 static gint ett_ff_fms_gen_terminate_download_seq_req = -1;
691 static gint ett_ff_fms_gen_terminate_download_seq_rsp = -1;
692 static gint ett_ff_fms_gen_terminate_download_seq_err = -1;
697 * 6.5.3.14. FMS Initiate Download Sequence (Confirmed Service Id = 9)
699 static int hf_ff_fms_init_download_seq = -1;
701 static int hf_ff_fms_init_download_seq_req = -1;
702 static int hf_ff_fms_init_download_seq_req_idx = -1;
704 static int hf_ff_fms_init_download_seq_rsp = -1;
706 static int hf_ff_fms_init_download_seq_err = -1;
707 static int hf_ff_fms_init_download_seq_err_err_class = -1;
708 static int hf_ff_fms_init_download_seq_err_err_code = -1;
709 static int hf_ff_fms_init_download_seq_err_additional_code = -1;
710 static int hf_ff_fms_init_download_seq_err_additional_desc = -1;
712 static gint ett_ff_fms_init_download_seq_req = -1;
713 static gint ett_ff_fms_init_download_seq_rsp = -1;
714 static gint ett_ff_fms_init_download_seq_err = -1;
719 * 6.5.3.15. FMS Download Segment (Confirmed Service Id = 10)
721 static int hf_ff_fms_download_seg = -1;
722 static int hf_ff_fms_download_seg_req = -1;
723 static int hf_ff_fms_download_seg_req_idx = -1;
725 static int hf_ff_fms_download_seg_rsp = -1;
726 static int hf_ff_fms_download_seg_rsp_more_follows = -1;
728 static int hf_ff_fms_download_seg_err = -1;
729 static int hf_ff_fms_download_seg_err_err_class = -1;
730 static int hf_ff_fms_download_seg_err_err_code = -1;
731 static int hf_ff_fms_download_seg_err_additional_code = -1;
732 static int hf_ff_fms_download_seg_err_additional_desc = -1;
734 static gint ett_ff_fms_download_seg_req = -1;
735 static gint ett_ff_fms_download_seg_rsp = -1;
736 static gint ett_ff_fms_download_seg_err = -1;
741 * 6.5.3.16. FMS Terminate Download Sequence (Confirmed Service Id = 11)
743 static int hf_ff_fms_terminate_download_seq = -1;
745 static int hf_ff_fms_terminate_download_seq_req = -1;
746 static int hf_ff_fms_terminate_download_seq_req_idx = -1;
747 static int hf_ff_fms_terminate_download_seq_req_final_result = -1;
749 static int hf_ff_fms_terminate_download_seq_rsp = -1;
751 static int hf_ff_fms_terminate_download_seq_err = -1;
752 static int hf_ff_fms_terminate_download_seq_err_err_class = -1;
753 static int hf_ff_fms_terminate_download_seq_err_err_code = -1;
754 static int hf_ff_fms_terminate_download_seq_err_additional_code = -1;
755 static int hf_ff_fms_terminate_download_seq_err_additional_desc = -1;
757 static gint ett_ff_fms_terminate_download_seq_req = -1;
758 static gint ett_ff_fms_terminate_download_seq_rsp = -1;
759 static gint ett_ff_fms_terminate_download_seq_err = -1;
764 * 6.5.3.17. FMS Initiate Upload Sequence (Confirmed Service Id = 12)
766 static int hf_ff_fms_init_upload_seq = -1;
768 static int hf_ff_fms_init_upload_seq_req = -1;
769 static int hf_ff_fms_init_upload_seq_req_idx = -1;
771 static int hf_ff_fms_init_upload_seq_rsp = -1;
773 static int hf_ff_fms_init_upload_seq_err = -1;
774 static int hf_ff_fms_init_upload_seq_err_err_class = -1;
775 static int hf_ff_fms_init_upload_seq_err_err_code = -1;
776 static int hf_ff_fms_init_upload_seq_err_additional_code = -1;
777 static int hf_ff_fms_init_upload_seq_err_additional_desc = -1;
779 static gint ett_ff_fms_init_upload_seq_req = -1;
780 static gint ett_ff_fms_init_upload_seq_rsp = -1;
781 static gint ett_ff_fms_init_upload_seq_err = -1;
786 * 6.5.3.18. FMS Upload Segment (Confirmed Service Id = 13)
788 static int hf_ff_fms_upload_seg = -1;
790 static int hf_ff_fms_upload_seg_req = -1;
791 static int hf_ff_fms_upload_seg_req_idx = -1;
793 static int hf_ff_fms_upload_seg_rsp = -1;
794 static int hf_ff_fms_upload_seg_rsp_more_follows = -1;
796 static int hf_ff_fms_upload_seg_err = -1;
797 static int hf_ff_fms_upload_seg_err_err_class = -1;
798 static int hf_ff_fms_upload_seg_err_err_code = -1;
799 static int hf_ff_fms_upload_seg_err_additional_code = -1;
800 static int hf_ff_fms_upload_seg_err_additional_desc = -1;
802 static gint ett_ff_fms_upload_seg_req = -1;
803 static gint ett_ff_fms_upload_seg_rsp = -1;
804 static gint ett_ff_fms_upload_seg_err = -1;
809 * 6.5.3.19. FMS Terminate Upload Sequence (Confirmed Service Id = 14)
811 static int hf_ff_fms_terminate_upload_seq = -1;
813 static int hf_ff_fms_terminate_upload_seq_req = -1;
814 static int hf_ff_fms_terminate_upload_seq_req_idx = -1;
816 static int hf_ff_fms_terminate_upload_seq_rsp = -1;
818 static int hf_ff_fms_terminate_upload_seq_err = -1;
819 static int hf_ff_fms_terminate_upload_seq_err_err_class = -1;
820 static int hf_ff_fms_terminate_upload_seq_err_err_code = -1;
821 static int hf_ff_fms_terminate_upload_seq_err_additional_code = -1;
822 static int hf_ff_fms_terminate_upload_seq_err_additional_desc = -1;
824 static gint ett_ff_fms_terminate_upload_seq_req = -1;
825 static gint ett_ff_fms_terminate_upload_seq_rsp = -1;
826 static gint ett_ff_fms_terminate_upload_seq_err = -1;
831 * 6.5.3.20. FMS Request Domain Download (Confirmed Service Id = 15)
833 static int hf_ff_fms_req_dom_download = -1;
835 static int hf_ff_fms_req_dom_download_req = -1;
836 static int hf_ff_fms_req_dom_download_req_idx = -1;
837 static int hf_ff_fms_req_dom_download_req_additional_info = -1;
839 static int hf_ff_fms_req_dom_download_rsp = -1;
841 static int hf_ff_fms_req_dom_download_err = -1;
842 static int hf_ff_fms_req_dom_download_err_err_class = -1;
843 static int hf_ff_fms_req_dom_download_err_err_code = -1;
844 static int hf_ff_fms_req_dom_download_err_additional_code = -1;
845 static int hf_ff_fms_req_dom_download_err_additional_desc = -1;
847 static gint ett_ff_fms_req_dom_download_req = -1;
848 static gint ett_ff_fms_req_dom_download_rsp = -1;
849 static gint ett_ff_fms_req_dom_download_err = -1;
854 * 6.5.3.21. FMS Request Domain Upload (Confirmed Service Id = 16)
856 static int hf_ff_fms_req_dom_upload = -1;
858 static int hf_ff_fms_req_dom_upload_req = -1;
859 static int hf_ff_fms_req_dom_upload_req_idx = -1;
860 static int hf_ff_fms_req_dom_upload_req_additional_info = -1;
862 static int hf_ff_fms_req_dom_upload_rsp = -1;
864 static int hf_ff_fms_req_dom_upload_err = -1;
865 static int hf_ff_fms_req_dom_upload_err_err_class = -1;
866 static int hf_ff_fms_req_dom_upload_err_err_code = -1;
867 static int hf_ff_fms_req_dom_upload_err_additional_code = -1;
868 static int hf_ff_fms_req_dom_upload_err_additional_desc = -1;
870 static gint ett_ff_fms_req_dom_upload_req = -1;
871 static gint ett_ff_fms_req_dom_upload_rsp = -1;
872 static gint ett_ff_fms_req_dom_upload_err = -1;
877 * 6.5.3.22. FMS Create Program Invocation (Confirmed Service Id = 17)
879 static int hf_ff_fms_create_pi = -1;
881 static int hf_ff_fms_create_pi_req = -1;
882 static int hf_ff_fms_create_pi_req_reusable = -1;
883 static int hf_ff_fms_create_pi_req_reserved = -1;
884 static int hf_ff_fms_create_pi_req_num_of_dom_idxes = -1;
885 static int hf_ff_fms_create_pi_req_dom_idx = -1;
887 static int hf_ff_fms_create_pi_rsp = -1;
888 static int hf_ff_fms_create_pi_rsp_idx = -1;
890 static int hf_ff_fms_create_pi_err = -1;
891 static int hf_ff_fms_create_pi_err_err_class = -1;
892 static int hf_ff_fms_create_pi_err_err_code = -1;
893 static int hf_ff_fms_create_pi_err_additional_code = -1;
894 static int hf_ff_fms_create_pi_err_additional_desc = -1;
896 static gint ett_ff_fms_create_pi_req = -1;
897 static gint ett_ff_fms_create_pi_req_list_of_dom_idxes = -1;
898 static gint ett_ff_fms_create_pi_rsp = -1;
899 static gint ett_ff_fms_create_pi_err = -1;
904 * 6.5.3.23. FMS Delete Program Invocation (Confirmed Service Id = 18)
906 static int hf_ff_fms_del_pi = -1;
907 static int hf_ff_fms_del_pi_req = -1;
908 static int hf_ff_fms_del_pi_req_idx = -1;
910 static int hf_ff_fms_del_pi_rsp = -1;
912 static int hf_ff_fms_del_pi_err = -1;
913 static int hf_ff_fms_del_pi_err_err_class = -1;
914 static int hf_ff_fms_del_pi_err_err_code = -1;
915 static int hf_ff_fms_del_pi_err_additional_code = -1;
916 static int hf_ff_fms_del_pi_err_additional_desc = -1;
918 static gint ett_ff_fms_del_pi_req = -1;
919 static gint ett_ff_fms_del_pi_rsp = -1;
920 static gint ett_ff_fms_del_pi_err = -1;
925 * 6.5.3.24. FMS Start (Confirmed Service Id = 19)
927 static int hf_ff_fms_start = -1;
928 static int hf_ff_fms_start_req = -1;
929 static int hf_ff_fms_start_req_idx = -1;
931 static int hf_ff_fms_start_rsp = -1;
933 static int hf_ff_fms_start_err = -1;
934 static int hf_ff_fms_start_err_pi_state = -1;
935 static int hf_ff_fms_start_err_err_class = -1;
936 static int hf_ff_fms_start_err_err_code = -1;
937 static int hf_ff_fms_start_err_additional_code = -1;
938 static int hf_ff_fms_start_err_additional_desc = -1;
940 static gint ett_ff_fms_start_req = -1;
941 static gint ett_ff_fms_start_rsp = -1;
942 static gint ett_ff_fms_start_err = -1;
947 * 6.5.3.25. FMS Stop (Confirmed Service Id = 20)
949 static int hf_ff_fms_stop = -1;
951 static int hf_ff_fms_stop_req = -1;
952 static int hf_ff_fms_stop_req_idx = -1;
954 static int hf_ff_fms_stop_rsp = -1;
956 static int hf_ff_fms_stop_err = -1;
957 static int hf_ff_fms_stop_err_pi_state = -1;
958 static int hf_ff_fms_stop_err_err_class = -1;
959 static int hf_ff_fms_stop_err_err_code = -1;
960 static int hf_ff_fms_stop_err_additional_code = -1;
961 static int hf_ff_fms_stop_err_additional_desc = -1;
963 static gint ett_ff_fms_stop_req = -1;
964 static gint ett_ff_fms_stop_rsp = -1;
965 static gint ett_ff_fms_stop_err = -1;
970 * 6.5.3.26. FMS Resume (Confirmed Service Id = 21)
972 static int hf_ff_fms_resume = -1;
973 static int hf_ff_fms_resume_req = -1;
974 static int hf_ff_fms_resume_req_idx = -1;
976 static int hf_ff_fms_resume_rsp = -1;
978 static int hf_ff_fms_resume_err = -1;
979 static int hf_ff_fms_resume_err_pi_state = -1;
980 static int hf_ff_fms_resume_err_err_class = -1;
981 static int hf_ff_fms_resume_err_err_code = -1;
982 static int hf_ff_fms_resume_err_additional_code = -1;
983 static int hf_ff_fms_resume_err_additional_desc = -1;
985 static gint ett_ff_fms_resume_req = -1;
986 static gint ett_ff_fms_resume_rsp = -1;
987 static gint ett_ff_fms_resume_err = -1;
992 * 6.5.3.27. FMS Reset (Confirmed Service Id = 22)
994 static int hf_ff_fms_reset = -1;
995 static int hf_ff_fms_reset_req = -1;
996 static int hf_ff_fms_reset_req_idx = -1;
998 static int hf_ff_fms_reset_rsp = -1;
1000 static int hf_ff_fms_reset_err = -1;
1001 static int hf_ff_fms_reset_err_pi_state = -1;
1002 static int hf_ff_fms_reset_err_err_class = -1;
1003 static int hf_ff_fms_reset_err_err_code = -1;
1004 static int hf_ff_fms_reset_err_additional_code = -1;
1005 static int hf_ff_fms_reset_err_additional_desc = -1;
1007 static gint ett_ff_fms_reset_req = -1;
1008 static gint ett_ff_fms_reset_rsp = -1;
1009 static gint ett_ff_fms_reset_err = -1;
1014 * 6.5.3.28. FMS Kill (Confirmed Service Id = 23)
1016 static int hf_ff_fms_kill = -1;
1017 static int hf_ff_fms_kill_req = -1;
1018 static int hf_ff_fms_kill_req_idx = -1;
1020 static int hf_ff_fms_kill_rsp = -1;
1022 static int hf_ff_fms_kill_err = -1;
1023 static int hf_ff_fms_kill_err_err_class = -1;
1024 static int hf_ff_fms_kill_err_err_code = -1;
1025 static int hf_ff_fms_kill_err_additional_code = -1;
1026 static int hf_ff_fms_kill_err_additional_desc = -1;
1028 static gint ett_ff_fms_kill_req = -1;
1029 static gint ett_ff_fms_kill_rsp = -1;
1030 static gint ett_ff_fms_kill_err = -1;
1035 * 6.5.3.29. FMS Read (Confirmed Service Id = 2)
1037 static int hf_ff_fms_read = -1;
1039 static int hf_ff_fms_read_req = -1;
1040 static int hf_ff_fms_read_req_idx = -1;
1042 static int hf_ff_fms_read_rsp = -1;
1044 static int hf_ff_fms_read_err = -1;
1045 static int hf_ff_fms_read_err_err_class = -1;
1046 static int hf_ff_fms_read_err_err_code = -1;
1047 static int hf_ff_fms_read_err_additional_code = -1;
1048 static int hf_ff_fms_read_err_additional_desc = -1;
1050 static gint ett_ff_fms_read_req = -1;
1051 static gint ett_ff_fms_read_rsp = -1;
1052 static gint ett_ff_fms_read_err = -1;
1057 * 6.5.3.30. FMS Read with Subindex (Confirmed Service Id = 82)
1059 static int hf_ff_fms_read_with_subidx = -1;
1061 static int hf_ff_fms_read_with_subidx_req = -1;
1062 static int hf_ff_fms_read_with_subidx_req_idx = -1;
1063 static int hf_ff_fms_read_with_subidx_req_subidx = -1;
1065 static int hf_ff_fms_read_with_subidx_rsp = -1;
1067 static int hf_ff_fms_read_with_subidx_err = -1;
1068 static int hf_ff_fms_read_with_subidx_err_err_class = -1;
1069 static int hf_ff_fms_read_with_subidx_err_err_code = -1;
1070 static int hf_ff_fms_read_with_subidx_err_additional_code = -1;
1071 static int hf_ff_fms_read_with_subidx_err_additional_desc = -1;
1073 static gint ett_ff_fms_read_with_subidx_req = -1;
1074 static gint ett_ff_fms_read_with_subidx_rsp = -1;
1075 static gint ett_ff_fms_read_with_subidx_err = -1;
1080 * 6.5.3.31. FMS Write (Confirmed Service Id = 3)
1082 static int hf_ff_fms_write = -1;
1083 static int hf_ff_fms_write_req = -1;
1084 static int hf_ff_fms_write_req_idx = -1;
1086 static int hf_ff_fms_write_rsp = -1;
1088 static int hf_ff_fms_write_err = -1;
1089 static int hf_ff_fms_write_err_err_class = -1;
1090 static int hf_ff_fms_write_err_err_code = -1;
1091 static int hf_ff_fms_write_err_additional_code = -1;
1092 static int hf_ff_fms_write_err_additional_desc = -1;
1094 static gint ett_ff_fms_write_req = -1;
1095 static gint ett_ff_fms_write_rsp = -1;
1096 static gint ett_ff_fms_write_err = -1;
1101 * 6.5.3.32. FMS Write with Subindex (Confirmed Service Id = 83)
1103 static int hf_ff_fms_write_with_subidx = -1;
1105 static int hf_ff_fms_write_with_subidx_req = -1;
1106 static int hf_ff_fms_write_with_subidx_req_idx = -1;
1107 static int hf_ff_fms_write_with_subidx_req_subidx = -1;
1109 static int hf_ff_fms_write_with_subidx_rsp = -1;
1111 static int hf_ff_fms_write_with_subidx_err = -1;
1112 static int hf_ff_fms_write_with_subidx_err_err_class = -1;
1113 static int hf_ff_fms_write_with_subidx_err_err_code = -1;
1114 static int hf_ff_fms_write_with_subidx_err_additional_code = -1;
1115 static int hf_ff_fms_write_with_subidx_err_additional_desc = -1;
1117 static gint ett_ff_fms_write_with_subidx_req = -1;
1118 static gint ett_ff_fms_write_with_subidx_rsp = -1;
1119 static gint ett_ff_fms_write_with_subidx_err = -1;
1124 * 6.5.3.33. FMS Define Variable List (Confirmed Service Id = 7)
1126 static int hf_ff_fms_def_variable_list = -1;
1128 static int hf_ff_fms_def_variable_list_req = -1;
1129 static int hf_ff_fms_def_variable_list_req_num_of_idxes = -1;
1130 static int hf_ff_fms_def_variable_list_req_idx = -1;
1132 static int hf_ff_fms_def_variable_list_rsp = -1;
1133 static int hf_ff_fms_def_variable_list_rsp_idx = -1;
1135 static int hf_ff_fms_def_variable_list_err = -1;
1136 static int hf_ff_fms_def_variable_list_err_err_class = -1;
1137 static int hf_ff_fms_def_variable_list_err_err_code = -1;
1138 static int hf_ff_fms_def_variable_list_err_additional_code = -1;
1139 static int hf_ff_fms_def_variable_list_err_additional_desc = -1;
1141 static gint ett_ff_fms_def_variable_list_req = -1;
1142 static gint ett_ff_fms_def_variable_list_req_list_of_idxes = -1;
1143 static gint ett_ff_fms_def_variable_list_rsp = -1;
1144 static gint ett_ff_fms_def_variable_list_err = -1;
1149 * 6.5.3.34. FMS Delete Variable List (Confirmed Service Id = 8)
1151 static int hf_ff_fms_del_variable_list = -1;
1153 static int hf_ff_fms_del_variable_list_req = -1;
1154 static int hf_ff_fms_del_variable_list_req_idx = -1;
1156 static int hf_ff_fms_del_variable_list_rsp = -1;
1158 static int hf_ff_fms_del_variable_list_err = -1;
1159 static int hf_ff_fms_del_variable_list_err_err_class = -1;
1160 static int hf_ff_fms_del_variable_list_err_err_code = -1;
1161 static int hf_ff_fms_del_variable_list_err_additional_code = -1;
1162 static int hf_ff_fms_del_variable_list_err_additional_desc = -1;
1164 static gint ett_ff_fms_del_variable_list_req = -1;
1165 static gint ett_ff_fms_del_variable_list_rsp = -1;
1166 static gint ett_ff_fms_del_variable_list_err = -1;
1171 * 6.5.3.35. FMS Information Report (Unconfirmed Service Id = 0)
1173 static int hf_ff_fms_info_report = -1;
1175 static int hf_ff_fms_info_report_req = -1;
1176 static int hf_ff_fms_info_report_req_idx = -1;
1178 static gint ett_ff_fms_info_report_req = -1;
1183 * 6.5.3.36. FMS Information Report with Subindex (Unconfirmed Service Id = 16)
1185 static int hf_ff_fms_info_report_with_subidx = -1;
1187 static int hf_ff_fms_info_report_with_subidx_req = -1;
1188 static int hf_ff_fms_info_report_with_subidx_req_idx = -1;
1189 static int hf_ff_fms_info_report_with_subidx_req_subidx = -1;
1191 static gint ett_ff_fms_info_report_with_subidx_req = -1;
1196 * 6.5.3.37. FMS Information Report On Change (Unconfirmed Service Id = 17)
1198 static int hf_ff_fms_info_report_on_change = -1;
1200 static int hf_ff_fms_info_report_on_change_req = -1;
1201 static int hf_ff_fms_info_report_on_change_req_idx = -1;
1203 static gint ett_ff_fms_info_report_on_change_req = -1;
1208 * 6.5.3.38. FMS Information Report On Change with Subindex
1209 * (Unconfirmed Service Id = 18)
1211 static int hf_ff_fms_info_report_on_change_with_subidx = -1;
1213 static int hf_ff_fms_info_report_on_change_with_subidx_req = -1;
1214 static int hf_ff_fms_info_report_on_change_with_subidx_req_idx = -1;
1215 static int hf_ff_fms_info_report_on_change_with_subidx_req_subidx = -1;
1217 static gint ett_ff_fms_info_report_on_change_with_subidx_req = -1;
1222 * 6.5.3.39. FMS Event Notification (Unconfirmed Service Id = 2)
1224 static int hf_ff_fms_ev_notification = -1;
1226 static int hf_ff_fms_ev_notification_req = -1;
1227 static int hf_ff_fms_ev_notification_req_idx = -1;
1228 static int hf_ff_fms_ev_notification_req_ev_num = -1;
1230 static gint ett_ff_fms_ev_notification_req = -1;
1235 * 6.5.3.40. FMS Alter Event Condition Monitoring (Confirmed Service Id = 24)
1237 static int hf_ff_fms_alter_ev_condition_monitoring = -1;
1239 static int hf_ff_fms_alter_ev_condition_monitoring_req = -1;
1240 static int hf_ff_fms_alter_ev_condition_monitoring_req_idx = -1;
1241 static int hf_ff_fms_alter_ev_condition_monitoring_req_enabled = -1;
1243 static int hf_ff_fms_alter_ev_condition_monitoring_rsp = -1;
1245 static int hf_ff_fms_alter_ev_condition_monitoring_err = -1;
1246 static int hf_ff_fms_alter_ev_condition_monitoring_err_err_class = -1;
1247 static int hf_ff_fms_alter_ev_condition_monitoring_err_err_code = -1;
1248 static int hf_ff_fms_alter_ev_condition_monitoring_err_additional_code = -1;
1249 static int hf_ff_fms_alter_ev_condition_monitoring_err_additional_desc = -1;
1251 static gint ett_ff_fms_alter_ev_condition_monitoring_req = -1;
1252 static gint ett_ff_fms_alter_ev_condition_monitoring_rsp = -1;
1253 static gint ett_ff_fms_alter_ev_condition_monitoring_err = -1;
1258 * 6.5.3.41. FMS Acknowledge Event Notification (Confirmed Service Id = 25)
1260 static int hf_ff_fms_ack_ev_notification = -1;
1262 static int hf_ff_fms_ack_ev_notification_req = -1;
1263 static int hf_ff_fms_ack_ev_notification_req_idx = -1;
1264 static int hf_ff_fms_ack_ev_notification_req_ev_num = -1;
1266 static int hf_ff_fms_ack_ev_notification_rsp = -1;
1268 static int hf_ff_fms_ack_ev_notification_err = -1;
1269 static int hf_ff_fms_ack_ev_notification_err_err_class = -1;
1270 static int hf_ff_fms_ack_ev_notification_err_err_code = -1;
1271 static int hf_ff_fms_ack_ev_notification_err_additional_code = -1;
1272 static int hf_ff_fms_ack_ev_notification_err_additional_desc = -1;
1274 static gint ett_ff_fms_ack_ev_notification_req = -1;
1275 static gint ett_ff_fms_ack_ev_notification_rsp = -1;
1276 static gint ett_ff_fms_ack_ev_notification_err = -1;
1281 * 6.5.4. LAN Redundancy Services
1283 static int hf_ff_lr = -1;
1288 * 6.5.4.1. LAN Redundancy Get Information (Confirmed Service Id = 1)
1290 static int hf_ff_lr_get_info = -1;
1292 static int hf_ff_lr_get_info_req = -1;
1294 static int hf_ff_lr_get_info_rsp = -1;
1295 static int hf_ff_lr_get_info_rsp_lr_attrs_ver = -1;
1296 static int hf_ff_lr_get_info_rsp_lr_max_msg_num_diff = -1;
1297 static int hf_ff_lr_get_info_rsp_reserved = -1;
1298 static int hf_ff_lr_get_info_rsp_diagnostic_msg_intvl = -1;
1299 static int hf_ff_lr_get_info_rsp_aging_time = -1;
1300 static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_send_addr = -1;
1301 static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_recv_addr = -1;
1302 static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_send_addr = -1;
1303 static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_recv_addr = -1;
1304 static int hf_ff_lr_get_info_rsp_lr_flags_reserved = -1;
1305 static int hf_ff_lr_get_info_rsp_lr_flags_load_balance = -1;
1306 static int hf_ff_lr_get_info_rsp_lr_flags_diag = -1;
1307 static int hf_ff_lr_get_info_rsp_lr_flags_multi_recv = -1;
1308 static int hf_ff_lr_get_info_rsp_lr_flags_cross_cable = -1;
1309 static int hf_ff_lr_get_info_rsp_lr_flags_multi_trans = -1;
1311 static int hf_ff_lr_get_info_err = -1;
1312 static int hf_ff_lr_get_info_err_err_class = -1;
1313 static int hf_ff_lr_get_info_err_err_code = -1;
1314 static int hf_ff_lr_get_info_err_additional_code = -1;
1315 static int hf_ff_lr_get_info_err_additional_desc = -1;
1317 static gint ett_ff_lr_get_info_req = -1;
1318 static gint ett_ff_lr_get_info_rsp = -1;
1319 static gint ett_ff_lr_get_info_rsp_lr_flags = -1;
1320 static gint ett_ff_lr_get_info_err = -1;
1325 * 6.5.4.2. LAN Redundancy Put Information (Confirmed Service Id = 2)
1327 static int hf_ff_lr_put_info = -1;
1329 static int hf_ff_lr_put_info_req = -1;
1330 static int hf_ff_lr_put_info_req_lr_attrs_ver = -1;
1331 static int hf_ff_lr_put_info_req_lr_max_msg_num_diff = -1;
1332 static int hf_ff_lr_put_info_req_reserved = -1;
1333 static int hf_ff_lr_put_info_req_diagnostic_msg_intvl = -1;
1334 static int hf_ff_lr_put_info_req_aging_time = -1;
1335 static int hf_ff_lr_put_info_req_diagnostic_msg_if_a_send_addr = -1;
1336 static int hf_ff_lr_put_info_req_diagnostic_msg_if_a_recv_addr = -1;
1337 static int hf_ff_lr_put_info_req_diagnostic_msg_if_b_send_addr = -1;
1338 static int hf_ff_lr_put_info_req_diagnostic_msg_if_b_recv_addr = -1;
1339 static int hf_ff_lr_put_info_req_lr_flags_reserved = -1;
1340 static int hf_ff_lr_put_info_req_lr_flags_load_balance = -1;
1341 static int hf_ff_lr_put_info_req_lr_flags_diag = -1;
1342 static int hf_ff_lr_put_info_req_lr_flags_multi_recv = -1;
1343 static int hf_ff_lr_put_info_req_lr_flags_cross_cable = -1;
1344 static int hf_ff_lr_put_info_req_lr_flags_multi_trans = -1;
1346 static int hf_ff_lr_put_info_rsp = -1;
1347 static int hf_ff_lr_put_info_rsp_lr_attrs_ver = -1;
1348 static int hf_ff_lr_put_info_rsp_lr_max_msg_num_diff = -1;
1349 static int hf_ff_lr_put_info_rsp_reserved = -1;
1350 static int hf_ff_lr_put_info_rsp_diagnostic_msg_intvl = -1;
1351 static int hf_ff_lr_put_info_rsp_aging_time = -1;
1352 static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_send_addr = -1;
1353 static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_recv_addr = -1;
1354 static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_send_addr = -1;
1355 static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_recv_addr = -1;
1356 static int hf_ff_lr_put_info_rsp_lr_flags_reserved = -1;
1357 static int hf_ff_lr_put_info_rsp_lr_flags_load_balance = -1;
1358 static int hf_ff_lr_put_info_rsp_lr_flags_diag = -1;
1359 static int hf_ff_lr_put_info_rsp_lr_flags_multi_recv = -1;
1360 static int hf_ff_lr_put_info_rsp_lr_flags_cross_cable = -1;
1361 static int hf_ff_lr_put_info_rsp_lr_flags_multi_trans = -1;
1363 static int hf_ff_lr_put_info_err = -1;
1364 static int hf_ff_lr_put_info_err_err_class = -1;
1365 static int hf_ff_lr_put_info_err_err_code = -1;
1366 static int hf_ff_lr_put_info_err_additional_code = -1;
1367 static int hf_ff_lr_put_info_err_additional_desc = -1;
1369 static gint ett_ff_lr_put_info_req = -1;
1370 static gint ett_ff_lr_put_info_req_lr_flags = -1;
1371 static gint ett_ff_lr_put_info_rsp = -1;
1372 static gint ett_ff_lr_put_info_rsp_lr_flags = -1;
1373 static gint ett_ff_lr_put_info_err = -1;
1378 * 6.5.4.3. LAN Redundancy Get Statistics (Confirmed Service Id = 3)
1380 static int hf_ff_lr_get_statistics = -1;
1382 static int hf_ff_lr_get_statistics_req = -1;
1384 static int hf_ff_lr_get_statistics_rsp = -1;
1385 static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_a = -1;
1386 static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_a = -1;
1387 static int hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_a = -1;
1388 static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_b = -1;
1389 static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_b = -1;
1390 static int hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_b = -1;
1391 static int hf_ff_lr_get_statistics_rsp_num_x_cable_stat = -1;
1392 static int hf_ff_lr_get_statistics_rsp_x_cable_stat = -1;
1394 static int hf_ff_lr_get_statistics_err = -1;
1395 static int hf_ff_lr_get_statistics_err_err_class = -1;
1396 static int hf_ff_lr_get_statistics_err_err_code = -1;
1397 static int hf_ff_lr_get_statistics_err_additional_code = -1;
1398 static int hf_ff_lr_get_statistics_err_additional_desc = -1;
1400 static gint ett_ff_lr_get_statistics_req = -1;
1401 static gint ett_ff_lr_get_statistics_rsp = -1;
1402 static gint ett_ff_lr_get_statistics_rsp_list_of_x_cable_stat = -1;
1403 static gint ett_ff_lr_get_statistics_err = -1;
1408 * 6.5.4.4. Diagnostic Message (Unconfirmed Service Id = 1)
1410 static int hf_ff_lr_diagnostic_msg = -1;
1412 static int hf_ff_lr_diagnostic_msg_req = -1;
1413 static int hf_ff_lr_diagnostic_msg_req_dev_idx = -1;
1414 static int hf_ff_lr_diagnostic_msg_req_num_of_network_ifs = -1;
1415 static int hf_ff_lr_diagnostic_msg_req_transmission_if = -1;
1416 static int hf_ff_lr_diagnostic_msg_req_diagnostic_msg_intvl = -1;
1417 static int hf_ff_lr_diagnostic_msg_req_pd_tag = -1;
1418 static int hf_ff_lr_diagnostic_msg_req_reserved = -1;
1419 static int hf_ff_lr_diagnostic_msg_req_num_of_if_statuses = -1;
1420 static int hf_ff_lr_diagnostic_msg_req_if_a_to_a_status = -1;
1421 static int hf_ff_lr_diagnostic_msg_req_if_b_to_a_status = -1;
1422 static int hf_ff_lr_diagnostic_msg_req_if_a_to_b_status = -1;
1423 static int hf_ff_lr_diagnostic_msg_req_if_b_to_b_status = -1;
1424 static int hf_ff_lr_diagnostic_msg_req_dup_detection_state_reserved = -1;
1425 static int hf_ff_lr_diagnostic_msg_req_dup_detection_state_pd_tag = -1;
1426 static int hf_ff_lr_diagnostic_msg_req_dup_detection_state_device = -1;
1428 static gint ett_ff_lr_diagnostic_msg_req = -1;
1429 static gint ett_ff_lr_diagnostic_msg_req_dup_detection_stat = -1;
1430 static gint ett_ff_lr_diagnostic_msg_req_a_to_a_status = -1;
1431 static gint ett_ff_lr_diagnostic_msg_req_b_to_a_status = -1;
1432 static gint ett_ff_lr_diagnostic_msg_req_a_to_b_status = -1;
1433 static gint ett_ff_lr_diagnostic_msg_req_b_to_b_status = -1;
1437 #if 0
1438 static const value_string names_pad_len[] = {
1439 { 0x00, "No padding" },
1440 { OPTION_PAD_4BYTE, "pad to 4 byte boundary" },
1441 { OPTION_PAD_8BYTE, "pad to 8 byte boundary" },
1442 { 0, NULL }
1444 #endif
1447 static const value_string names_proto[] = {
1448 { 0x00, "Unused"},
1449 { PROTOCOL_FDA, "FDA Session Management" },
1450 { PROTOCOL_SM, "SM" },
1451 { PROTOCOL_FMS, "FMS" },
1452 { PROTOCOL_LAN, "LAN Redundancy" },
1453 { 0, NULL }
1458 static const value_string names_type[] = {
1459 { TYPE_REQUEST, "Request Message" },
1460 { TYPE_RESPONSE, "Response Message" },
1461 { TYPE_ERROR, "Error Message" },
1462 { 0, NULL }
1467 static const value_string names_nma_conf_use[] = {
1468 { 0, "NMA Configuration Not Permitted" },
1469 { 1, "NMA Configuration Permitted" },
1470 { 0, NULL }
1475 static const value_string names_query_type[] = {
1476 { 0, "PD Tag query for primary device" },
1477 { 1, "VFD tag query" },
1478 { 2, "Function-Block tag query" },
1479 { 3, "Element Id query" },
1480 { 4, "PD Tag/VFD Reference query" },
1481 { 5, "Device Index query" },
1482 { 6, "PD Tag query for secondary or member of redundant set" },
1483 { 0, NULL }
1488 static const value_string names_smk_state[] = {
1489 { 0x02, "NO_TAG" }, /* 0000 0010 */
1490 { 0x04, "OPERATIONAL" }, /* 0000 0100 */
1491 { 0, NULL }
1496 static const value_string names_dev_type[] = {
1497 { 0x00, "Type D-1 Device" }, /* 0000 0000 */
1498 { 0x01, "Type D-2 Device" }, /* 0000 0001 */
1499 { 0x02, "Type D-3 Device" }, /* 0000 0010 */
1500 { 0x03, "Type D-3 and Type D-2 Device" }, /* 0000 0011 */
1501 { 0x04, "Not used" }, /* 0000 0100 */
1502 { 0x05, "Type D-2 and Type D-1 Device" }, /* 0000 0101 */
1503 { 0x06, "Type D-3 and Type D-1 Device" }, /* 0000 0110 */
1504 { 0x07, "Type D-3 and D-2 and Type D-1 Device" }, /* 0000 0111 */
1505 { 0, NULL }
1510 static const value_string names_dev_redundancy_role[] = {
1511 { 0x04, "Primary" }, /* 0000 0100 */
1512 { 0x08, "Secondary" }, /* 0000 1000 */
1513 { 0, NULL }
1518 static const value_string names_assigned_redundant_dev_type[] = {
1519 { 0x00, "Type D-1 Device" }, /* 0000 0000 */
1520 { 0x01, "Type D-2 Device" }, /* 0000 0001 */
1521 { 0x02, "Type D-3 Device" }, /* 0000 0010 */
1522 { 0, NULL }
1527 static const value_string names_type_d2_dev_redundancy_role[] = {
1528 { 0x00, "Not used" }, /* 0000 0000 */
1529 { 0x04, "Type D-2 Device Primary" }, /* 0000 0100 */
1530 { 0x08, "Type D-2 Device Secondary" }, /* 0000 1000 */
1531 { 0, NULL }
1536 static const value_string names_conn_opt[] = {
1537 { 1, "VCR Selector" },
1538 { 2, "NMA Access" },
1539 { 3, "FBAP Access" },
1540 { 0, NULL }
1545 static const value_string names_fda_unconfirmed[] = {
1546 { 0, NULL }
1551 static const value_string names_fda_confirmed[] = {
1552 { FDA_OPEN_SESSION, "FDA Open Session" },
1553 { FDA_IDLE, "FDA Idle" },
1554 { 0, NULL }
1559 static const value_string names_sm_unconfirmed[] = {
1560 { HSE_SM_FIND_TAG_QUERY, "SM Find Tag Query" },
1561 { HSE_SM_FIND_TAG_REPLY, "SM Find Tag Reply" },
1562 { HSE_SM_DEVICE_ANNUNCIATION, "SM Device Annunciation" },
1563 { 0, NULL }
1568 static const value_string names_sm_confirmed[] = {
1569 { HSE_SM_IDENTIFY, "SM Identify" },
1570 { HSE_SM_CLEAR_ADDRESS, "SM Clear Address" },
1571 { HSE_SM_SET_ASSIGNMENT, "SM Set Assignment Info" },
1572 { HSE_SM_CLEAR_ASSIGNMENT, "SM Clear Assignment Info" },
1573 { 0, NULL }
1578 static const value_string names_fms_unconfirmed[] = {
1579 { HSE_FMS_INFORMATION_REPORT, "FMS Information Report" },
1580 { HSE_FMS_UNSOLICITED_STATUS, "FMS Unsolicited Status" },
1581 { HSE_FMS_EVENT_NOTIFICATION, "FMS Event Notification" },
1582 { HSE_FMS_INFORMATION_REPORT_WITH_SUBINDEX,
1583 "FMS Information Report with Subindex" },
1584 { HSE_FMS_INFORMATION_REPORT_ON_CHANGE,
1585 "FMS Information Report On Change" },
1586 { HSE_FMS_INFORMATION_REPORT_ON_CHANGE_WITH_SUBINDEX,
1587 "FMS Information Report On Change with Subindex" },
1588 { HSE_FMS_ABORT, "FMS Abort" },
1589 { 0, NULL }
1594 static const value_string names_fms_confirmed[] = {
1595 { HSE_FMS_STATUS, "FMS Status" },
1596 { HSE_FMS_IDENTIFY, "FMS Identify" },
1597 { HSE_FMS_READ, "FMS Read" },
1598 { HSE_FMS_WRITE, "FMS Write" },
1599 { HSE_FMS_GET_OD, "FMS Get OD" },
1600 { HSE_FMS_DEFINE_VARIABLE_LIST, "FMS Define Variable List" },
1601 { HSE_FMS_DELETE_VARIABLE_LIST, "FMS Delete Variable List" },
1602 { HSE_FMS_INITIATE_DOWNLOAD_SEQUENCE, "FMS Initiate Download Sequence" },
1603 { HSE_FMS_DOWNLOAD_SEGMENT, "FMS Download Segment" },
1604 { HSE_FMS_TERMINATE_DOWNLOAD_SEQUENCE, "FMS Terminate Download Sequence" },
1605 { HSE_FMS_INITIATE_UPLOAD_SEQUENCE, "FMS Initiate Upload Sequence" },
1606 { HSE_FMS_UPLOAD_SEGMENT, "FMS Upload Segment" },
1607 { HSE_FMS_TERMINATE_UPLOAD_SEQUENCE, "FMS Terminate Upload Sequence" },
1608 { HSE_FMS_REQUEST_DOMAIN_DOWNLOAD, "FMS Request Domain Download" },
1609 { HSE_FMS_REQUEST_DOMAIN_UPLOAD, "FMS Request Domain Upload" },
1610 { HSE_FMS_CREATE_PROGRAM_INVOCATION, "FMS Create Program Invocation" },
1611 { HSE_FMS_DELETE_PROGRAM_INVOCATION, "FMS Delete Program Invocation" },
1612 { HSE_FMS_START, "FMS Start" },
1613 { HSE_FMS_STOP, "FMS Stop" },
1614 { HSE_FMS_RESUME, "FMS Resume" },
1615 { HSE_FMS_RESET, "FMS Reset" },
1616 { HSE_FMS_KILL, "FMS Kill" },
1617 { HSE_FMS_ALTER_EVENT_CONDITION_MONITORING,
1618 "FMS Alter Event Condition Monitoring" },
1619 { HSE_FMS_ACKNOWLEDGE_EVENT_NOTIFICATION,
1620 "FMS Acknowledge Event Notification" },
1621 { HSE_FMS_INITIATE_PUT_OD, "FMS Initiate Put OD" },
1622 { HSE_FMS_PUT_OD, "FMS Put OD" },
1623 { HSE_FMS_TERMINATE_PUT_OD, "FMS Terminate Put OD" },
1624 { HSE_FMS_GENERIC_INITIATE_DOWNLOAD_SEQUENCE,
1625 "FMS Generic Initiate Download Sequence" },
1626 { HSE_FMS_GENERIC_DOWNLOAD_SEGMENT, "FMS Generic Download Segment" },
1627 { HSE_FMS_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE,
1628 "FMS Generic Terminate Download Sequence" },
1629 { HSE_FMS_READ_WITH_SUBINDEX, "FMS Read with Subindex" },
1630 { HSE_FMS_WRITE_WITH_SUBINDEX, "FMS Write with Subindex" },
1631 { HSE_FMS_INITIATE, "FMS Initiate" },
1632 { 0, NULL }
1634 static value_string_ext names_fms_confirmed_ext = VALUE_STRING_EXT_INIT(names_fms_confirmed);
1637 static const value_string names_lan_unconfirmed[] = {
1638 { LAN_DIAG, "Diagnostic Message" },
1639 { 0, NULL }
1644 static const value_string names_lan_confirmed[] = {
1645 { LAN_GET_INFO, "LAN Redundancy Get Information" },
1646 { LAN_PUT_INFO, "LAN Redundancy Put Information" },
1647 { LAN_GET_STATISTICS, "LAN Redundancy Get Statistics" },
1648 { 0, NULL }
1653 static const value_string names_transmission_interface[] = {
1654 { 0, "Interface A" },
1655 { 1, "Interface B" },
1656 { 0, NULL }
1661 static const value_string names_err_class[] = {
1662 { 1, "vfd state" },
1663 { 2, "application reference" },
1664 { 3, "definition" },
1665 { 4, "resource" },
1666 { 5, "service" },
1667 { 6, "access" },
1668 { 7, "od" },
1669 { 8, "other" },
1670 { 9, "reject" },
1671 { 10, "h1 sm reason code" },
1672 { 11, "fms initiate" },
1673 { 0, NULL }
1675 static value_string_ext names_err_class_ext = VALUE_STRING_EXT_INIT(names_err_class);
1678 static const value_string names_err_code_vfd_state[] = {
1679 { 0, "other" },
1680 { 0, NULL }
1685 static const value_string names_err_code_appl_ref[] = {
1686 { 0, "other" },
1687 { 1, "object undefined" },
1688 { 2, "object attributes inconsistent" },
1689 { 3, "name already exists" },
1690 { 0, NULL }
1695 static const value_string names_err_code_def[] = {
1696 { 0, "other" },
1697 { 1, "application unreachable" },
1698 { 0, NULL }
1703 static const value_string names_err_code_res[] = {
1704 { 0, "other" },
1705 { 1, "memory unavailable" },
1706 { 2, "max outstanding requests per session exceeded" },
1707 { 3, "max sessions exceeded" },
1708 { 4, "object creation failure" },
1709 { 0, NULL }
1714 static const value_string names_err_code_srv[] = {
1715 { 0, "other" },
1716 { 1, "object state conflict" },
1717 { 2, "pdu size" },
1718 { 3, "object constraint conflict" },
1719 { 4, "parameter inconsistent" },
1720 { 5, "illegal parameter" },
1721 { 6, "unsupported service" },
1722 { 7, "unsupported version" },
1723 { 8, "invalid options" },
1724 { 9, "unsupported protocol" },
1725 { 10, "reserved" },
1726 { 11, "key parameter mismatch" },
1727 { 12, "assignments already made" },
1728 { 13, "unsupported device redundancy state" },
1729 { 14, "response time-out" },
1730 { 15, "duplicate PD Tag detected" },
1731 { 0, NULL }
1733 static value_string_ext names_err_code_srv_ext = VALUE_STRING_EXT_INIT(names_err_code_srv);
1736 static const value_string names_err_code_access[] = {
1737 { 0, "other" },
1738 { 1, "object invalidated" },
1739 { 2, "hardware fault" },
1740 { 3, "object access denied" },
1741 { 4, "invalid address" },
1742 { 5, "object attribute inconsistent" },
1743 { 6, "object access unsupported" },
1744 { 7, "object non existent" },
1745 { 8, "type conflict" },
1746 { 9, "named access unsupported" },
1747 { 10, "access to element unsupported" },
1748 { 11, "config access already open" },
1749 { 12, "reserved" },
1750 { 13, "unrecognized FDA Address" },
1751 { 0, NULL }
1753 static value_string_ext names_err_code_access_ext = VALUE_STRING_EXT_INIT(names_err_code_access);
1757 static const value_string names_err_code_od[] = {
1758 { 0, "other" },
1759 { 1, "name length overflow" },
1760 { 2, "od overflow" },
1761 { 3, "od write protected" },
1762 { 4, "extension length overflow" },
1763 { 5, "od description length overflow" },
1764 { 6, "operational problem" },
1765 { 7, "hse to h1 format conversion not supported" },
1766 { 0, NULL }
1771 static const value_string names_err_code_other[] = {
1772 { 0, "other" },
1773 { 0, NULL }
1778 static const value_string names_err_code_reject[] = {
1779 { 5, "pdu size" },
1780 { 0, NULL }
1785 static const value_string names_err_code_h1_sm_reason_code[] = {
1786 { 0, "other" },
1787 { 1, "DLL Error - insufficient resources" },
1788 { 2, "DLL Error - sending queue full" },
1789 { 3, "DLL Error - time-out before transmission" },
1790 { 4, "DLL Error - reason unspecified" },
1791 { 5, "Device failed to respond to SET_PD_TAG" },
1792 { 6, "Device failed to respond to WHO_HAS_PD_TAG" },
1793 { 7, "Device failed to respond to SET_ADDR" },
1794 { 8, "Device failed to respond to IDENTIFY" },
1795 { 9, "Device failed to respond to ENABLE_SM_OP" },
1796 { 10, "Device failed to respond to CLEAR_ADDRESS" },
1797 { 11, "Multiple Response from WHO_HAS_PD_TAG" },
1798 { 12, "Non-Matching PD_TAG from WHO_HAS_PD_TAG" },
1799 { 13, "Non-Matching PD_TAG from IDENTIFY" },
1800 { 14, "Non-Matching DEV_ID from IDENTIFY" },
1801 { 15, "Remote Error Invalid State" },
1802 { 16, "Remote Error PD-Tag doesn't match" },
1803 { 17, "Remote Error Dev-ID doesn't match" },
1804 { 18, "Remote Error SMIB object write failed" },
1805 { 19, "Remote Error Starting SM Operational" },
1806 { 0, NULL }
1808 static value_string_ext names_err_code_h1_sm_reason_code_ext = VALUE_STRING_EXT_INIT(names_err_code_h1_sm_reason_code);
1811 static const value_string names_err_code_fms_init[] = {
1812 { 0, "other" },
1813 { 1, "max-fms-pdu-size-insufficient" },
1814 { 2, "feature-not-supported" },
1815 { 3, "version-od-incompatible" },
1816 { 4, "user-initiate-denied" },
1817 { 5, "password-error" },
1818 { 6, "profile-number-incompatible" },
1819 { 0, NULL }
1822 static const char *
1823 val_to_str_err_code(guint8 errclass, guint8 code)
1825 switch (errclass) {
1826 case 1:
1827 return (val_to_str_const(code, names_err_code_vfd_state, "Unknown"));
1829 case 2:
1830 return (val_to_str_const(code, names_err_code_appl_ref, "Unknown"));
1832 case 3:
1833 return (val_to_str_const(code, names_err_code_def, "Unknown"));
1835 case 4:
1836 return (val_to_str_const(code, names_err_code_res, "Unknown"));
1838 case 5:
1839 return (val_to_str_ext_const(code, &names_err_code_srv_ext, "Unknown"));
1841 case 6:
1842 return (val_to_str_ext_const(code, &names_err_code_access_ext, "Unknown"));
1844 case 7:
1845 return (val_to_str_const(code, names_err_code_od, "Unknown"));
1847 case 8:
1848 return (val_to_str_const(code, names_err_code_other, "Unknown"));
1850 case 9:
1851 return (val_to_str_const(code, names_err_code_reject, "Unknown"));
1853 case 10:
1854 return (val_to_str_ext_const(code,
1855 &names_err_code_h1_sm_reason_code_ext, "Unknown"));
1857 case 11:
1858 return (val_to_str_const(code, names_err_code_fms_init, "Unknown"));
1860 default:
1861 return ("Unknown");
1868 * 6.5.1.1. FDA Open Session (Confirmed Service Id = 1)
1869 * 6.5.1.1.1. Request Message Parameters
1871 static void
1872 dissect_ff_msg_fda_open_sess_req(tvbuff_t *tvb, gint offset,
1873 guint32 length, packet_info *pinfo, proto_tree *tree)
1875 proto_tree *sub_tree;
1876 proto_item *ti;
1878 col_set_str(pinfo->cinfo, COL_INFO, "FDA Open Session Request");
1880 if (!tree) {
1881 return;
1884 ti = proto_tree_add_text(tree, tvb, offset, length,
1885 "FDA Open Session Request");
1886 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_open_sess_req);
1888 proto_tree_add_item(sub_tree,
1889 hf_ff_fda_open_sess_req_sess_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
1890 offset += 4;
1891 length -= 4;
1893 proto_tree_add_item(sub_tree,
1894 hf_ff_fda_open_sess_req_max_buf_siz, tvb, offset, 4, ENC_BIG_ENDIAN);
1895 offset += 4;
1896 length -= 4;
1898 proto_tree_add_item(sub_tree,
1899 hf_ff_fda_open_sess_req_max_msg_len, tvb, offset, 4, ENC_BIG_ENDIAN);
1900 offset += 4;
1901 length -= 4;
1903 proto_tree_add_item(sub_tree,
1904 hf_ff_fda_open_sess_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1905 offset += 1;
1906 length -= 1;
1908 proto_tree_add_item(sub_tree,
1909 hf_ff_fda_open_sess_req_nma_conf_use, tvb, offset, 1, ENC_BIG_ENDIAN);
1910 offset += 1;
1911 length -= 1;
1913 proto_tree_add_item(sub_tree,
1914 hf_ff_fda_open_sess_req_inactivity_close_time, tvb, offset, 2, ENC_BIG_ENDIAN);
1915 offset += 2;
1916 length -= 2;
1918 proto_tree_add_item(sub_tree,
1919 hf_ff_fda_open_sess_req_transmit_delay_time, tvb, offset, 4, ENC_BIG_ENDIAN);
1920 offset += 4;
1921 length -= 4;
1923 proto_tree_add_item(sub_tree,
1924 hf_ff_fda_open_sess_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
1925 offset += 32;
1926 length -= 32;
1928 if (length) {
1929 proto_tree_add_text(sub_tree, tvb, offset, length,
1930 "[Unknown] (%u bytes)", length);
1933 return;
1939 * 6.5.1.1.2. Response Message Parameters
1941 static void
1942 dissect_ff_msg_fda_open_sess_rsp(tvbuff_t *tvb, gint offset,
1943 guint32 length, packet_info *pinfo, proto_tree *tree)
1945 proto_tree *sub_tree;
1946 proto_item *ti;
1948 col_set_str(pinfo->cinfo, COL_INFO, "FDA Open Session Response");
1950 if (!tree) {
1951 return;
1954 ti = proto_tree_add_text(tree, tvb, offset, length,
1955 "FDA Open Session Response");
1956 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_open_sess_rsp);
1958 proto_tree_add_item(sub_tree,
1959 hf_ff_fda_open_sess_rsp_sess_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
1960 offset += 4;
1961 length -= 4;
1963 proto_tree_add_item(sub_tree,
1964 hf_ff_fda_open_sess_rsp_max_buf_siz, tvb, offset, 4, ENC_BIG_ENDIAN);
1965 offset += 4;
1966 length -= 4;
1968 proto_tree_add_item(sub_tree,
1969 hf_ff_fda_open_sess_rsp_max_msg_len, tvb, offset, 4, ENC_BIG_ENDIAN);
1970 offset += 4;
1971 length -= 4;
1973 proto_tree_add_item(sub_tree,
1974 hf_ff_fda_open_sess_rsp_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1975 offset += 1;
1976 length -= 1;
1978 proto_tree_add_item(sub_tree,
1979 hf_ff_fda_open_sess_rsp_nma_conf_use, tvb, offset, 1, ENC_BIG_ENDIAN);
1980 offset += 1;
1981 length -= 1;
1983 proto_tree_add_item(sub_tree,
1984 hf_ff_fda_open_sess_rsp_inactivity_close_time, tvb, offset, 2, ENC_BIG_ENDIAN);
1985 offset += 2;
1986 length -= 2;
1988 proto_tree_add_item(sub_tree,
1989 hf_ff_fda_open_sess_rsp_transmit_delay_time, tvb, offset, 4, ENC_BIG_ENDIAN);
1990 offset += 4;
1991 length -= 4;
1993 proto_tree_add_item(sub_tree,
1994 hf_ff_fda_open_sess_rsp_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
1995 offset += 32;
1996 length -= 32;
1998 if (length) {
1999 proto_tree_add_text(sub_tree, tvb, offset, length,
2000 "[Unknown] (%u bytes)", length);
2003 return;
2009 * 6.5.1.1.3. Error Message Parameters
2011 static void
2012 dissect_ff_msg_fda_open_sess_err(tvbuff_t *tvb, gint offset,
2013 guint32 length, packet_info *pinfo, proto_tree *tree)
2015 proto_tree *sub_tree;
2016 proto_item *ti;
2017 guint8 ErrorClass;
2018 guint8 ErrorCode;
2019 const char *error_code;
2021 col_set_str(pinfo->cinfo, COL_INFO, "FDA Open Session Error");
2023 if (!tree) {
2024 return;
2027 ti = proto_tree_add_text(tree, tvb, offset, length,
2028 "FDA Open Session Error");
2029 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_open_sess_err);
2031 ErrorClass = tvb_get_guint8(tvb, offset);
2032 proto_tree_add_item(sub_tree,
2033 hf_ff_fda_open_sess_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
2034 offset += 1;
2035 length -= 1;
2037 ErrorCode = tvb_get_guint8(tvb, offset);
2038 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
2039 proto_tree_add_uint_format_value(sub_tree, hf_ff_fda_open_sess_err_err_code,
2040 tvb, offset, 1, ErrorCode,
2041 "%s (%u)", error_code, ErrorCode);
2042 offset += 1;
2043 length -= 1;
2045 proto_tree_add_item(sub_tree,
2046 hf_ff_fda_open_sess_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2047 offset += 2;
2048 length -= 2;
2050 proto_tree_add_item(sub_tree,
2051 hf_ff_fda_open_sess_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
2052 offset += 16;
2053 length -= 16;
2055 if (length) {
2056 proto_tree_add_text(sub_tree, tvb, offset, length,
2057 "[Unknown] (%u bytes)", length);
2060 return;
2066 * 6.5.1.2. FDA Idle (Confirmed Service Id = 3)
2067 * 6.5.1.2.1. Request Message Parameters
2069 static void
2070 dissect_ff_msg_fda_idle_req(tvbuff_t *tvb, gint offset,
2071 guint32 length, packet_info *pinfo, proto_tree *tree)
2073 proto_tree *sub_tree;
2074 proto_item *ti;
2076 col_set_str(pinfo->cinfo, COL_INFO, "FDA Idle Request");
2078 if (!tree) {
2079 return;
2082 if (length) {
2083 ti = proto_tree_add_text(tree, tvb, offset, length,
2084 "FDA Idle Request");
2085 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_idle_req);
2087 proto_tree_add_text(sub_tree, tvb, offset, length,
2088 "[Unknown] (%u bytes)", length);
2091 return;
2097 * 6.5.1.2.2. Response Message Parameters
2099 static void
2100 dissect_ff_msg_fda_idle_rsp(tvbuff_t *tvb, gint offset,
2101 guint32 length, packet_info *pinfo, proto_tree *tree)
2103 proto_tree *sub_tree;
2104 proto_item *ti;
2106 col_set_str(pinfo->cinfo, COL_INFO, "FDA Idle Response");
2108 if (!tree) {
2109 return;
2112 if (length) {
2113 ti = proto_tree_add_text(tree, tvb, offset, length,
2114 "FDA Idle Response");
2115 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_idle_rsp);
2117 proto_tree_add_text(sub_tree, tvb, offset, length,
2118 "[Unknown] (%u bytes)", length);
2121 return;
2127 * 6.5.1.2.3. Error Message Parameters
2129 static void
2130 dissect_ff_msg_fda_idle_err(tvbuff_t *tvb, gint offset,
2131 guint32 length, packet_info *pinfo, proto_tree *tree)
2133 proto_tree *sub_tree;
2134 proto_item *ti;
2135 guint8 ErrorClass;
2136 guint8 ErrorCode;
2137 const char *error_code;
2139 col_set_str(pinfo->cinfo, COL_INFO, "FDA Idle Error");
2141 if (!tree) {
2142 return;
2145 ti = proto_tree_add_text(tree, tvb, offset, length,
2146 "FDA Idle Error");
2147 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_idle_err);
2149 ErrorClass = tvb_get_guint8(tvb, offset);
2150 proto_tree_add_item(sub_tree,
2151 hf_ff_fda_idle_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
2152 offset += 1;
2153 length -= 1;
2155 ErrorCode = tvb_get_guint8(tvb, offset);
2156 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
2157 proto_tree_add_uint_format_value(sub_tree, hf_ff_fda_idle_err_err_code,
2158 tvb, offset, 1, ErrorCode,
2159 "%s (%u)", error_code, ErrorCode);
2160 offset += 1;
2161 length -= 1;
2163 proto_tree_add_item(sub_tree,
2164 hf_ff_fda_idle_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2165 offset += 2;
2166 length -= 2;
2168 proto_tree_add_item(sub_tree,
2169 hf_ff_fda_idle_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
2170 offset += 16;
2171 length -= 16;
2173 if (length) {
2174 proto_tree_add_text(sub_tree, tvb, offset, length,
2175 "[Unknown] (%u bytes)", length);
2178 return;
2184 * 6.5.2.1. SM Find Tag Query (Unconfirmed Service Id = 1)
2185 * 6.5.2.1.1. Request Message Parameters
2187 static void
2188 dissect_ff_msg_sm_find_tag_query_req(tvbuff_t *tvb, gint offset,
2189 guint32 length, packet_info *pinfo, proto_tree *tree)
2191 proto_tree *sub_tree;
2192 proto_item *ti;
2194 col_set_str(pinfo->cinfo, COL_INFO, "SM Find Tag Query Request");
2196 if (!tree) {
2197 return;
2200 ti = proto_tree_add_text(tree, tvb, offset, length,
2201 "SM Find Tag Query Request");
2202 sub_tree = proto_item_add_subtree(ti, ett_ff_sm_find_tag_query_req);
2204 proto_tree_add_item(sub_tree,
2205 hf_ff_sm_find_tag_query_req_query_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2206 offset += 1;
2207 length -= 1;
2209 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
2210 offset += 3;
2211 length -= 3;
2213 proto_tree_add_item(sub_tree,
2214 hf_ff_sm_find_tag_query_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
2215 offset += 4;
2216 length -= 4;
2218 proto_tree_add_item(sub_tree,
2219 hf_ff_sm_find_tag_query_req_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
2220 offset += 32;
2221 length -= 32;
2223 proto_tree_add_item(sub_tree,
2224 hf_ff_sm_find_tag_query_req_vfd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
2225 offset += 32;
2226 length -= 32;
2228 if (length) {
2229 proto_tree_add_text(sub_tree, tvb, offset, length,
2230 "[Unknown] (%u bytes)", length);
2233 return;
2239 * 6.5.2.2. SM Find Tag Reply (Unconfirmed Service Id = 2)
2240 * 6.5.2.2.1. Request Message Parameters
2242 static void
2243 dissect_ff_msg_sm_find_tag_reply_req_dup_detection_state(tvbuff_t *tvb,
2244 gint offset, proto_tree *tree, guint8 value)
2246 proto_tree *sub_tree;
2247 proto_item *ti;
2249 if (!tree) {
2250 return;
2253 ti = proto_tree_add_text(tree, tvb, offset, 1,
2254 "Duplicate Detection State: 0x%02x", value);
2255 sub_tree = proto_item_add_subtree(ti,
2256 ett_ff_sm_find_tag_reply_req_dup_detection_state);
2259 * Bits 3-8: Reserved, set to 0.
2260 * Bit 2: 1 = Duplicate PD Tag Detected
2261 * 0 = Duplicate PD Tag Not Detected
2262 * Bit 1: 1 = Duplicate Device Index Detected
2263 * 0 = Duplicate Device Index Not Detected
2265 proto_tree_add_item(sub_tree, hf_ff_sm_find_tag_reply_dup_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
2266 proto_tree_add_item(sub_tree, hf_ff_sm_find_tag_reply_dup_pd_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
2267 proto_tree_add_item(sub_tree, hf_ff_sm_find_tag_reply_dup_device, tvb, offset, 1, ENC_BIG_ENDIAN);
2272 static void
2273 dissect_ff_msg_sm_find_tag_reply_req_list_of_fda_addr_selectors(tvbuff_t *tvb,
2274 gint offset, proto_tree *tree, guint16 value)
2276 proto_tree *sub_tree;
2277 proto_item *ti;
2278 guint d;
2280 if (!tree) {
2281 return;
2284 ti = proto_tree_add_text(tree, tvb, offset, 2 * value,
2285 "List of FDA Address Selectors (%u bytes)", 2 * value);
2286 sub_tree = proto_item_add_subtree(ti,
2287 ett_ff_sm_find_tag_reply_req_list_of_fda_addr_selectors);
2289 for (d = 0; d < value; d++) {
2290 proto_tree_add_item(sub_tree,
2291 hf_ff_sm_find_tag_reply_req_fda_addr_selector,
2292 tvb, offset, 2, ENC_BIG_ENDIAN);
2294 offset += 2;
2297 return;
2302 static void
2303 dissect_ff_msg_sm_find_tag_reply_req(tvbuff_t *tvb, gint offset,
2304 guint32 length, packet_info *pinfo, proto_tree *tree)
2306 proto_tree *sub_tree;
2307 proto_item *ti;
2308 guint8 DuplicateDetectionState;
2309 guint16 NumOfFDAAddrSelectors;
2311 col_set_str(pinfo->cinfo, COL_INFO, "SM Find Tag Reply Request");
2313 if (!tree) {
2314 return;
2317 ti = proto_tree_add_text(tree, tvb, offset, length,
2318 "SM Find Tag Reply Request");
2319 sub_tree = proto_item_add_subtree(ti, ett_ff_sm_find_tag_reply_req);
2321 proto_tree_add_item(sub_tree,
2322 hf_ff_sm_find_tag_reply_req_query_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2323 offset += 1;
2324 length -= 1;
2326 proto_tree_add_item(sub_tree,
2327 hf_ff_sm_find_tag_reply_req_h1_node_addr, tvb, offset, 1, ENC_BIG_ENDIAN);
2328 offset += 1;
2329 length -= 1;
2331 proto_tree_add_item(sub_tree,
2332 hf_ff_sm_find_tag_reply_req_fda_addr_link_id, tvb, offset, 2, ENC_BIG_ENDIAN);
2333 offset += 2;
2334 length -= 2;
2336 proto_tree_add_item(sub_tree,
2337 hf_ff_sm_find_tag_reply_req_vfd_ref, tvb, offset, 4, ENC_BIG_ENDIAN);
2338 offset += 4;
2339 length -= 4;
2341 proto_tree_add_item(sub_tree,
2342 hf_ff_sm_find_tag_reply_req_od_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
2343 offset += 4;
2344 length -= 4;
2346 proto_tree_add_item(sub_tree,
2347 hf_ff_sm_find_tag_reply_req_ip_addr, tvb, offset, 16, ENC_NA);
2348 offset += 16;
2349 length -= 16;
2351 proto_tree_add_item(sub_tree,
2352 hf_ff_sm_find_tag_reply_req_od_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
2353 offset += 4;
2354 length -= 4;
2356 proto_tree_add_item(sub_tree,
2357 hf_ff_sm_find_tag_reply_req_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
2358 offset += 32;
2359 length -= 32;
2361 proto_tree_add_item(sub_tree,
2362 hf_ff_sm_find_tag_reply_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
2363 offset += 32;
2364 length -= 32;
2366 DuplicateDetectionState = tvb_get_guint8(tvb, offset);
2367 dissect_ff_msg_sm_find_tag_reply_req_dup_detection_state(tvb,
2368 offset, sub_tree, DuplicateDetectionState);
2369 offset += 1;
2370 length -= 1;
2372 proto_tree_add_item(sub_tree,
2373 hf_ff_sm_find_tag_reply_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
2374 offset += 1;
2375 length -= 1;
2377 NumOfFDAAddrSelectors = tvb_get_ntohs(tvb, offset);
2378 proto_tree_add_item(sub_tree,
2379 hf_ff_sm_find_tag_reply_req_num_of_fda_addr_selectors,
2380 tvb, offset, 2, ENC_BIG_ENDIAN);
2381 offset += 2;
2382 length -= 2;
2384 if (NumOfFDAAddrSelectors) {
2385 dissect_ff_msg_sm_find_tag_reply_req_list_of_fda_addr_selectors(tvb,
2386 offset, sub_tree, NumOfFDAAddrSelectors);
2387 offset += 2 * NumOfFDAAddrSelectors;
2388 length -= 2 * NumOfFDAAddrSelectors;
2391 if (length) {
2392 proto_tree_add_text(sub_tree, tvb, offset, length,
2393 "[Unknown] (%u bytes)", length);
2396 return;
2402 * 6.5.2.3. SM Identify (Confirmed Service Id = 3)
2403 * 6.5.2.3.1. Request Message Parameters
2405 static void
2406 dissect_ff_msg_sm_id_req(tvbuff_t *tvb, gint offset,
2407 guint32 length, packet_info *pinfo, proto_tree *tree)
2409 proto_tree *sub_tree;
2410 proto_item *ti;
2412 col_set_str(pinfo->cinfo, COL_INFO, "SM Identify Request");
2414 if (!tree) {
2415 return;
2418 if (length) {
2419 ti = proto_tree_add_text(tree, tvb, offset, length,
2420 "SM Identify Request");
2421 sub_tree = proto_item_add_subtree(ti, ett_ff_sm_id_req);
2423 proto_tree_add_text(sub_tree, tvb, offset, length,
2424 "[Unknown] (%u bytes)", length);
2427 return;
2433 * 6.5.2.3.2. Response Message Parameters
2435 static void
2436 dissect_ff_msg_sm_id_rsp_h1_node_addr(tvbuff_t *tvb,
2437 gint offset, proto_tree *tree)
2439 proto_tree *sub_tree;
2440 proto_item *ti;
2442 if (!tree) {
2443 return;
2446 ti = proto_tree_add_text(tree, tvb, offset, 2,
2447 "H1 Node Address Version Number (%u bytes)", 2);
2448 sub_tree = proto_item_add_subtree(ti,
2449 ett_ff_sm_id_rsp_h1_node_addr);
2451 proto_tree_add_item(sub_tree,
2452 hf_ff_sm_id_rsp_h1_node_addr_ver_num_h1_node_addr,
2453 tvb, offset, 1, ENC_BIG_ENDIAN);
2454 offset += 1;
2456 proto_tree_add_item(sub_tree,
2457 hf_ff_sm_id_rsp_h1_node_addr_ver_num_ver_num, tvb, offset, 1, ENC_BIG_ENDIAN);
2458 /*offset += 1;*/
2460 return;
2465 static void
2466 dissect_ff_msg_sm_id_rsp_entries_node_addr(tvbuff_t *tvb,
2467 gint offset, proto_tree *tree, guint32 value)
2469 proto_tree *sub_tree;
2470 proto_item *ti;
2471 guint d;
2473 if (!tree) {
2474 return;
2477 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
2478 "Version Number List (%u bytes)", 4 * value);
2479 sub_tree = proto_item_add_subtree(ti,
2480 ett_ff_sm_id_rsp_entries_node_addr);
2482 for (d = 0; d < value * 2; d++) {
2483 dissect_ff_msg_sm_id_rsp_h1_node_addr(tvb, offset, sub_tree);
2484 offset += 2;
2487 return;
2492 static void
2493 dissect_ff_msg_sm_id_rsp_h1_live_list(tvbuff_t *tvb,
2494 gint offset, proto_tree *tree)
2496 proto_tree *sub_tree;
2497 proto_item *ti;
2499 if (!tree) {
2500 return;
2503 ti = proto_tree_add_text(tree, tvb, offset, 4,
2504 "H1 Live-list Version Number (%u bytes)", 4);
2505 sub_tree = proto_item_add_subtree(ti,
2506 ett_ff_sm_id_rsp_h1_live_list);
2508 proto_tree_add_item(sub_tree,
2509 hf_ff_sm_id_rsp_h1_live_list_h1_link_id, tvb, offset, 2, ENC_BIG_ENDIAN);
2510 offset += 2;
2512 proto_tree_add_item(sub_tree,
2513 hf_ff_sm_id_rsp_h1_live_list_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
2514 offset += 1;
2516 proto_tree_add_item(sub_tree,
2517 hf_ff_sm_id_rsp_h1_live_list_ver_num, tvb, offset, 1, ENC_BIG_ENDIAN);
2518 /*offset += 1;*/
2520 return;
2525 static void
2526 dissect_ff_msg_sm_id_rsp_entries_link_id(tvbuff_t *tvb,
2527 gint offset, proto_tree *tree, guint32 value)
2529 proto_tree *sub_tree;
2530 proto_item *ti;
2531 guint d;
2533 if (!tree) {
2534 return;
2537 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
2538 "Version Number List (%u bytes)", 4 * value);
2539 sub_tree = proto_item_add_subtree(ti,
2540 ett_ff_sm_id_rsp_entries_h1_live_list);
2542 for (d = 0; d < value; d++) {
2543 dissect_ff_msg_sm_id_rsp_h1_live_list(tvb, offset, sub_tree);
2544 offset += 4;
2547 return;
2552 static void
2553 dissect_ff_msg_sm_id_rsp_smk_state(tvbuff_t *tvb,
2554 gint offset, proto_tree *tree, guint8 value)
2556 proto_tree *sub_tree;
2557 proto_item *ti;
2559 if (!tree) {
2560 return;
2563 ti = proto_tree_add_text(tree, tvb, offset, 1,
2564 "SMK State: 0x%02x", value);
2565 sub_tree = proto_item_add_subtree(ti,
2566 ett_ff_sm_id_rsp_smk_state);
2569 * Bits 2-8:
2570 * 0 = Reserved
2571 * 1 = NO_TAG
2572 * 2 = OPERATIONAL
2573 * 3 127 = Reserved
2574 * Bit 1:
2575 * 0 = Not Synchronized with SNTP Time Server
2576 * 1 = Synchronized with SNTP Time Server
2578 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_smk_state_name, tvb, offset, 1, ENC_BIG_ENDIAN);
2579 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_smk_state_sync, tvb, offset, 1, ENC_BIG_ENDIAN);
2584 static void
2585 dissect_ff_msg_sm_id_rsp_dev_type(tvbuff_t *tvb,
2586 gint offset, proto_tree *tree, guint8 value)
2588 proto_tree *sub_tree;
2589 proto_item *ti;
2591 if (!tree) {
2592 return;
2595 ti = proto_tree_add_text(tree, tvb, offset, 1,
2596 "Device Type: 0x%02x", value);
2597 sub_tree = proto_item_add_subtree(ti,
2598 ett_ff_sm_id_rsp_dev_type);
2601 * Bit 8 = Linking Device
2602 * Bit 7 = I/O Gateway
2603 * Bit 6 = HSE Field Device
2604 * Bit 5 = H1 Device
2605 * Bit 4 = Reserved
2606 * Bits 1 - 3 Redundant Device Type Capability*
2607 * 0 = Type D-1 Device
2608 * 1 = Type D-2 Device
2609 * 2 = Type D-3 Device
2610 * 3 = Type D-3 and Type D-2 Device
2611 * 4 = Not used
2612 * 5 = Type D-2 and Type D-1 Device
2613 * 6 = Type D-3 and Type D-1 Device
2614 * 7 = Type D-3 and D-2 and Type D-1 Device
2616 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_link, tvb, offset, 1, ENC_BIG_ENDIAN);
2617 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_iogateway, tvb, offset, 1, ENC_BIG_ENDIAN);
2618 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_hse, tvb, offset, 1, ENC_BIG_ENDIAN);
2619 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_h1, tvb, offset, 1, ENC_BIG_ENDIAN);
2620 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
2621 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_type_redundant_caps, tvb, offset, 1, ENC_BIG_ENDIAN);
2626 static void
2627 dissect_ff_msg_sm_id_rsp_dev_redundancy_state(tvbuff_t *tvb,
2628 gint offset, proto_tree *tree, guint8 value)
2630 proto_tree *sub_tree;
2631 proto_item *ti;
2633 if (!tree) {
2634 return;
2637 ti = proto_tree_add_text(tree, tvb, offset, 1,
2638 "Device Redundancy State: 0x%02x", value);
2639 sub_tree = proto_item_add_subtree(ti,
2640 ett_ff_sm_id_rsp_dev_redundancy_state);
2643 * Bits 5-8 = Reserved, set to 0
2644 * Bits 3 & 4 Device Redundancy Role
2645 * 0 = Reserved
2646 * 1 = Primary
2647 * 2 = Secondary
2648 * Bits 1 & 2 Assigned Redundant Device Type*
2649 * 0 = Type D-1 Device
2650 * 1 = Type D-2 Device
2651 * 2 = Type D-3 Device
2654 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_redundancy_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
2655 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_redundancy_state_role, tvb, offset, 1, ENC_BIG_ENDIAN);
2656 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dev_redundancy_state_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2661 static void
2662 dissect_ff_msg_sm_id_rsp_dup_detection_state(tvbuff_t *tvb,
2663 gint offset, proto_tree *tree, guint8 value)
2665 proto_tree *sub_tree;
2666 proto_item *ti;
2668 if (!tree) {
2669 return;
2672 ti = proto_tree_add_text(tree, tvb, offset, 1,
2673 "Duplicate Detection State: 0x%02x", value);
2674 sub_tree = proto_item_add_subtree(ti,
2675 ett_ff_sm_id_rsp_dup_detection_state);
2678 * Bits 3-8: Reserved, set to 0.
2679 * Bit 2: 1 = Duplicate PD Tag Detected
2680 * 0 = Duplicate PD Tag Not Detected
2681 * Bit 1: 1 = Duplicate Device Index Detected
2682 * 0 = Duplicate Device Index Not Detected
2685 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dup_detection_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
2686 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dup_detection_state_pd_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
2687 proto_tree_add_item(sub_tree, hf_ff_sm_id_rsp_dup_detection_state_device, tvb, offset, 1, ENC_BIG_ENDIAN);
2692 static void
2693 dissect_ff_msg_sm_id_rsp(tvbuff_t *tvb, gint offset,
2694 guint32 length, packet_info *pinfo, proto_tree *tree, guint32 FDAAddress)
2696 proto_tree *sub_tree;
2697 proto_item *ti;
2699 guint8 SMKState;
2700 guint8 DeviceType;
2701 guint8 DeviceRedundancyState;
2702 guint8 DuplicateDetectionState;
2703 guint32 NumOfEntriesInVerNumList;
2705 col_set_str(pinfo->cinfo, COL_INFO, "SM Identify Response");
2707 if (!tree) {
2708 return;
2711 ti = proto_tree_add_text(tree, tvb, offset, length, "SM Identify Response");
2712 sub_tree = proto_item_add_subtree(ti,
2713 ett_ff_sm_id_rsp);
2715 SMKState = tvb_get_guint8(tvb, offset);
2716 dissect_ff_msg_sm_id_rsp_smk_state(tvb, offset, sub_tree, SMKState);
2717 offset += 1;
2718 length -= 1;
2720 DeviceType = tvb_get_guint8(tvb, offset);
2721 dissect_ff_msg_sm_id_rsp_dev_type(tvb, offset, sub_tree, DeviceType);
2722 offset += 1;
2723 length -= 1;
2725 DeviceRedundancyState = tvb_get_guint8(tvb, offset);
2726 dissect_ff_msg_sm_id_rsp_dev_redundancy_state(tvb,
2727 offset, sub_tree, DeviceRedundancyState);
2728 offset += 1;
2729 length -= 1;
2731 DuplicateDetectionState = tvb_get_guint8(tvb, offset);
2732 dissect_ff_msg_sm_id_rsp_dup_detection_state(tvb,
2733 offset, sub_tree, DuplicateDetectionState);
2734 offset += 1;
2735 length -= 1;
2737 proto_tree_add_item(sub_tree,
2738 hf_ff_sm_id_rsp_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
2739 offset += 2;
2740 length -= 2;
2742 proto_tree_add_item(sub_tree,
2743 hf_ff_sm_id_rsp_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
2744 offset += 2;
2745 length -= 2;
2747 proto_tree_add_item(sub_tree,
2748 hf_ff_sm_id_rsp_operational_ip_addr, tvb, offset, 16, ENC_NA);
2749 offset += 16;
2750 length -= 16;
2752 proto_tree_add_item(sub_tree,
2753 hf_ff_sm_id_rsp_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
2754 offset += 32;
2755 length -= 32;
2757 proto_tree_add_item(sub_tree,
2758 hf_ff_sm_id_rsp_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
2759 offset += 32;
2760 length -= 32;
2762 proto_tree_add_item(sub_tree,
2763 hf_ff_sm_id_rsp_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
2764 offset += 4;
2765 length -= 4;
2767 proto_tree_add_item(sub_tree,
2768 hf_ff_sm_id_rsp_lr_port, tvb, offset, 2, ENC_BIG_ENDIAN);
2769 offset += 2;
2770 length -= 2;
2772 proto_tree_add_item(sub_tree,
2773 hf_ff_sm_id_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
2774 offset += 2;
2775 length -= 2;
2777 proto_tree_add_item(sub_tree,
2778 hf_ff_sm_id_rsp_annunc_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
2779 offset += 4;
2780 length -= 4;
2782 proto_tree_add_item(sub_tree,
2783 hf_ff_sm_id_rsp_hse_dev_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
2784 offset += 4;
2785 length -= 4;
2787 NumOfEntriesInVerNumList = tvb_get_ntohl(tvb, offset);
2788 proto_tree_add_item(sub_tree,
2789 hf_ff_sm_id_rsp_num_of_entries, tvb, offset, 4, ENC_BIG_ENDIAN);
2790 offset += 4;
2791 length -= 4;
2793 if (NumOfEntriesInVerNumList) {
2794 guint16 LinkId;
2795 /* 11111111 11111111 00000000 00000000 */
2796 LinkId = (guint16)(FDAAddress >> 16);
2797 if (LinkId) {
2798 dissect_ff_msg_sm_id_rsp_entries_node_addr(tvb,
2799 offset, sub_tree, NumOfEntriesInVerNumList);
2800 } else {
2801 dissect_ff_msg_sm_id_rsp_entries_link_id(tvb,
2802 offset, sub_tree, NumOfEntriesInVerNumList);
2805 offset += 4 * NumOfEntriesInVerNumList;
2806 length -= 4 * NumOfEntriesInVerNumList;
2809 if (length) {
2810 proto_tree_add_text(sub_tree, tvb, offset, length,
2811 "[Unknown] (%u bytes)", length);
2814 return;
2820 * 6.5.2.3.3. Error Message Parameters
2822 static void
2823 dissect_ff_msg_sm_id_err(tvbuff_t *tvb, gint offset,
2824 guint32 length, packet_info *pinfo, proto_tree *tree)
2826 proto_tree *sub_tree;
2827 proto_item *ti;
2828 guint8 ErrorClass;
2829 guint8 ErrorCode;
2830 const char *error_code;
2832 col_set_str(pinfo->cinfo, COL_INFO, "SM Identify Error");
2834 if (!tree) {
2835 return;
2838 ti = proto_tree_add_text(tree, tvb, offset, length, "SM Identify Error");
2839 sub_tree = proto_item_add_subtree(ti, ett_ff_sm_id_err);
2841 ErrorClass = tvb_get_guint8(tvb, offset);
2842 proto_tree_add_item(sub_tree,
2843 hf_ff_sm_id_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
2844 offset += 1;
2845 length -= 1;
2847 ErrorCode = tvb_get_guint8(tvb, offset);
2848 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
2849 proto_tree_add_uint_format_value(sub_tree, hf_ff_sm_id_err_err_code,
2850 tvb, offset, 1, ErrorCode,
2851 "%s (%u)", error_code, ErrorCode);
2852 offset += 1;
2853 length -= 1;
2855 proto_tree_add_item(sub_tree,
2856 hf_ff_sm_id_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2857 offset += 2;
2858 length -= 2;
2860 proto_tree_add_item(sub_tree,
2861 hf_ff_sm_id_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
2862 offset += 16;
2863 length -= 16;
2865 if (length) {
2866 proto_tree_add_text(sub_tree, tvb, offset, length,
2867 "[Unknown] (%u bytes)", length);
2870 return;
2876 * 6.5.2.4. SM Clear Address (Confirmed Service Id = 12)
2877 * 6.5.2.4.1. Request Message Parameters
2879 static void
2880 dissect_ff_msg_sm_clear_addr_req(tvbuff_t *tvb, gint offset,
2881 guint32 length, packet_info *pinfo, proto_tree *tree)
2883 proto_tree *sub_tree;
2884 proto_item *ti;
2886 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Address Request");
2888 if (!tree) {
2889 return;
2892 ti = proto_tree_add_text(tree, tvb, offset, length,
2893 "SM Clear Address Request");
2894 sub_tree = proto_item_add_subtree(ti, ett_ff_sm_id_err);
2896 proto_tree_add_item(sub_tree,
2897 hf_ff_sm_clear_addr_req_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
2898 offset += 32;
2899 length -= 32;
2901 proto_tree_add_item(sub_tree,
2902 hf_ff_sm_clear_addr_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
2903 offset += 32;
2904 length -= 32;
2906 proto_tree_add_item(sub_tree,
2907 hf_ff_sm_clear_addr_req_interface_to_clear, tvb, offset, 1, ENC_BIG_ENDIAN);
2908 offset += 1;
2909 length -= 1;
2911 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
2912 offset += 3;
2913 length -= 3;
2915 if (length) {
2916 proto_tree_add_text(sub_tree, tvb, offset, length,
2917 "[Unknown] (%u bytes)", length);
2920 return;
2926 * 6.5.2.4.2. Response Message Parameters
2928 static void
2929 dissect_ff_msg_sm_clear_addr_rsp(tvbuff_t *tvb, gint offset,
2930 guint32 length, packet_info *pinfo, proto_tree *tree)
2932 proto_tree *sub_tree;
2933 proto_item *ti;
2935 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Address Response");
2937 if (!tree) {
2938 return;
2941 if (length) {
2942 ti = proto_tree_add_text(tree, tvb, offset, length,
2943 "SM Clear Address Response");
2944 sub_tree = proto_item_add_subtree(ti, ett_ff_sm_clear_addr_rsp);
2946 proto_tree_add_text(sub_tree, tvb, offset, length,
2947 "[Unknown] (%u bytes)", length);
2950 return;
2956 * 6.5.2.4.3. Error Message Parameters
2958 static void
2959 dissect_ff_msg_sm_clear_addr_err(tvbuff_t *tvb, gint offset,
2960 guint32 length, packet_info *pinfo, proto_tree *tree)
2962 proto_tree *sub_tree;
2963 proto_item *ti;
2964 guint8 ErrorClass;
2965 guint8 ErrorCode;
2966 const char *error_code;
2968 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Address Error");
2970 if (!tree) {
2971 return;
2974 ti = proto_tree_add_text(tree, tvb, offset, length,
2975 "SM Clear Address Error");
2976 sub_tree = proto_item_add_subtree(ti, ett_ff_sm_clear_addr_err);
2978 ErrorClass = tvb_get_guint8(tvb, offset);
2979 proto_tree_add_item(sub_tree,
2980 hf_ff_sm_clear_addr_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
2981 offset += 1;
2982 length -= 1;
2984 ErrorCode = tvb_get_guint8(tvb, offset);
2985 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
2986 proto_tree_add_uint_format_value(sub_tree, hf_ff_sm_clear_addr_err_err_code,
2987 tvb, offset, 1, ErrorCode,
2988 "%s (%u)", error_code, ErrorCode);
2989 offset += 1;
2990 length -= 1;
2992 proto_tree_add_item(sub_tree,
2993 hf_ff_sm_clear_addr_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2994 offset += 2;
2995 length -= 2;
2997 proto_tree_add_item(sub_tree,
2998 hf_ff_sm_clear_addr_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
2999 offset += 16;
3000 length -= 16;
3002 if (length) {
3003 proto_tree_add_text(sub_tree, tvb, offset, length,
3004 "[Unknown] (%u bytes)", length);
3007 return;
3013 * 6.5.2.5. SM Set Assignment Info (Confirmed Service Id = 14)
3014 * 6.5.2.5.1. Request Message Parameters
3016 static void
3017 dissect_ff_msg_sm_set_assign_info_req_dev_redundancy_state(tvbuff_t *tvb,
3018 gint offset, proto_tree *tree, guint8 value)
3020 proto_tree *sub_tree;
3021 proto_item *ti;
3023 if (!tree) {
3024 return;
3027 ti = proto_tree_add_text(tree, tvb, offset, 1,
3028 "Device Redundancy State: 0x%02x", value);
3029 sub_tree = proto_item_add_subtree(ti,
3030 ett_ff_sm_set_assign_info_req_dev_redundancy_state);
3033 * Bits 5-8 = Reserved, set to 0
3034 * Bits 3 & 4 Type D-2 Device Redundancy Role
3035 * 0 = Not used
3036 * 1 = Type D-2 Device Primary
3037 * 2 = Type D-2 Device Secondary
3038 * Bits 1 & 2 Assigned Device Redundancy Type
3039 * 0 = Type D-1 Device
3040 * 1 = Type D-2 Device
3041 * 2 = Type D-3 Device
3043 proto_tree_add_item(sub_tree, hf_ff_sm_set_assign_info_req_dev_redundancy_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
3044 proto_tree_add_item(sub_tree, hf_ff_sm_set_assign_info_req_dev_redundancy_state_role, tvb, offset, 1, ENC_BIG_ENDIAN);
3045 proto_tree_add_item(sub_tree, hf_ff_sm_set_assign_info_req_dev_redundancy_state_type, tvb, offset, 1, ENC_BIG_ENDIAN);
3050 static void
3051 dissect_ff_msg_sm_set_assign_info_req_clear_dup_detection_state(tvbuff_t *tvb,
3052 gint offset, proto_tree *tree, guint8 value)
3054 proto_tree *sub_tree;
3055 proto_item *ti;
3057 if (!tree) {
3058 return;
3061 ti = proto_tree_add_text(tree, tvb, offset, 1,
3062 "Clear Duplicate Detection State: 0x%02x", value);
3063 sub_tree = proto_item_add_subtree(ti,
3064 ett_ff_sm_set_assign_info_req_clear_dup_detection_state);
3067 * Bits 3-8: Reserved, set to 0.
3068 * Bit 2: 1 = Do not clear Duplicate PD Tag Detected
3069 * 0 = Clear Duplicate PD Tag Detected
3070 * Bit 1: 1 = Do not clear Duplicate Device Index Detected
3071 * 0 = Clear Duplicate Device Index Detected
3073 proto_tree_add_item(sub_tree, hf_ff_sm_set_assign_info_req_clear_dup_detection_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
3074 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);
3075 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);
3080 static void
3081 dissect_ff_msg_sm_set_assign_info_req(tvbuff_t *tvb, gint offset,
3082 guint32 length, packet_info *pinfo, proto_tree *tree)
3084 proto_tree *sub_tree;
3085 proto_item *ti;
3086 guint8 DeviceRedundancyState;
3087 guint8 ClearDuplicateDetectionState;
3089 col_set_str(pinfo->cinfo, COL_INFO, "SM Set Assignment Info Request");
3091 if (!tree) {
3092 return;
3095 ti = proto_tree_add_text(tree, tvb, offset, length,
3096 "SM Set Assignment Info Request");
3097 sub_tree = proto_item_add_subtree(ti,
3098 ett_ff_sm_set_assign_info_req);
3100 proto_tree_add_item(sub_tree,
3101 hf_ff_sm_set_assign_info_req_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
3102 offset += 32;
3103 length -= 32;
3105 proto_tree_add_item(sub_tree,
3106 hf_ff_sm_set_assign_info_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
3107 offset += 32;
3108 length -= 32;
3110 proto_tree_add_item(sub_tree,
3111 hf_ff_sm_set_assign_info_req_h1_new_addr, tvb, offset, 1, ENC_BIG_ENDIAN);
3112 offset += 1;
3113 length -= 1;
3115 DeviceRedundancyState = tvb_get_guint8(tvb, offset);
3116 dissect_ff_msg_sm_set_assign_info_req_dev_redundancy_state(tvb,
3117 offset, sub_tree, DeviceRedundancyState);
3118 offset += 1;
3119 length -= 1;
3121 proto_tree_add_item(sub_tree,
3122 hf_ff_sm_set_assign_info_req_lr_port, tvb, offset, 2, ENC_BIG_ENDIAN);
3123 offset += 2;
3124 length -= 2;
3126 proto_tree_add_item(sub_tree,
3127 hf_ff_sm_set_assign_info_req_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
3128 offset += 4;
3129 length -= 4;
3131 proto_tree_add_item(sub_tree,
3132 hf_ff_sm_set_assign_info_req_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
3133 offset += 2;
3134 length -= 2;
3136 proto_tree_add_item(sub_tree,
3137 hf_ff_sm_set_assign_info_req_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
3138 offset += 2;
3139 length -= 2;
3141 proto_tree_add_item(sub_tree,
3142 hf_ff_sm_set_assign_info_req_operational_ip_addr,
3143 tvb, offset, 16, ENC_NA);
3144 offset += 16;
3145 length -= 16;
3147 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
3148 offset += 3;
3149 length -= 3;
3151 ClearDuplicateDetectionState = tvb_get_guint8(tvb, offset);
3152 dissect_ff_msg_sm_set_assign_info_req_clear_dup_detection_state(tvb,
3153 offset, sub_tree, ClearDuplicateDetectionState);
3154 offset += 1;
3155 length -= 1;
3157 if (length) {
3158 proto_tree_add_text(sub_tree, tvb, offset, length,
3159 "[Unknown] (%u bytes)", length);
3162 return;
3168 * 6.5.2.5.2. Response Message Parameters
3170 static void
3171 dissect_ff_msg_sm_set_assign_info_rsp(tvbuff_t *tvb, gint offset,
3172 guint32 length, packet_info *pinfo, proto_tree *tree)
3174 proto_tree *sub_tree;
3175 proto_item *ti;
3177 col_set_str(pinfo->cinfo, COL_INFO, "SM Set Assignment Info Response");
3179 if (!tree) {
3180 return;
3183 ti = proto_tree_add_text(tree, tvb, offset, length,
3184 "SM Set Assignment Info Response");
3185 sub_tree = proto_item_add_subtree(ti,
3186 ett_ff_sm_set_assign_info_rsp);
3188 proto_tree_add_item(sub_tree,
3189 hf_ff_sm_set_assign_info_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
3190 offset += 2;
3191 length -= 2;
3193 proto_tree_add_item(sub_tree,
3194 hf_ff_sm_set_assign_info_rsp_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
3195 offset += 2;
3196 length -= 2;
3198 proto_tree_add_item(sub_tree,
3199 hf_ff_sm_set_assign_info_rsp_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
3200 offset += 4;
3201 length -= 4;
3203 if (length) {
3204 proto_tree_add_text(sub_tree, tvb, offset, length,
3205 "[Unknown] (%u bytes)", length);
3208 return;
3214 * 6.5.2.5.3. Error Message Parameters
3216 static void
3217 dissect_ff_msg_sm_set_assign_info_err(tvbuff_t *tvb, gint offset,
3218 guint32 length, packet_info *pinfo, proto_tree *tree)
3220 proto_tree *sub_tree;
3221 proto_item *ti;
3222 guint8 ErrorClass;
3223 guint8 ErrorCode;
3224 const char *error_code;
3226 col_set_str(pinfo->cinfo, COL_INFO, "SM Set Assignment Info Error");
3228 if (!tree) {
3229 return;
3232 ti = proto_tree_add_text(tree, tvb, offset, length,
3233 "SM Set Assignment Info Error");
3234 sub_tree = proto_item_add_subtree(ti, ett_ff_sm_set_assign_info_err);
3236 ErrorClass = tvb_get_guint8(tvb, offset);
3237 proto_tree_add_item(sub_tree,
3238 hf_ff_sm_set_assign_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
3239 offset += 1;
3240 length -= 1;
3242 ErrorCode = tvb_get_guint8(tvb, offset);
3243 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
3244 proto_tree_add_uint_format_value(sub_tree,
3245 hf_ff_sm_set_assign_info_err_err_code,
3246 tvb, offset, 1, ErrorCode,
3247 "%s (%u)", error_code, ErrorCode);
3248 offset += 1;
3249 length -= 1;
3251 proto_tree_add_item(sub_tree,
3252 hf_ff_sm_set_assign_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
3253 offset += 2;
3254 length -= 2;
3256 proto_tree_add_item(sub_tree,
3257 hf_ff_sm_set_assign_info_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
3258 offset += 16;
3259 length -= 16;
3261 if (length) {
3262 proto_tree_add_text(sub_tree, tvb, offset, length,
3263 "[Unknown] (%u bytes)", length);
3266 return;
3272 * 6.5.2.6. SM Clear Assignment Info (Confirmed Service Id = 15)
3273 * 6.5.2.6.1. Request Message Parameters
3275 static void
3276 dissect_ff_msg_sm_clear_assign_info_req(tvbuff_t *tvb, gint offset,
3277 guint32 length, packet_info *pinfo, proto_tree *tree)
3279 proto_tree *sub_tree;
3280 proto_item *ti;
3282 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Assignment Info Request");
3284 if (!tree) {
3285 return;
3288 ti = proto_tree_add_text(tree, tvb, offset, length,
3289 "SM Clear Assignment Info Request");
3290 sub_tree = proto_item_add_subtree(ti,
3291 ett_ff_sm_clear_assign_info_req);
3293 proto_tree_add_item(sub_tree,
3294 hf_ff_sm_clear_assign_info_req_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
3295 offset += 32;
3296 length -= 32;
3298 proto_tree_add_item(sub_tree,
3299 hf_ff_sm_clear_assign_info_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
3300 offset += 32;
3301 length -= 32;
3303 if (length) {
3304 proto_tree_add_text(sub_tree, tvb, offset, length,
3305 "[Unknown] (%u bytes)", length);
3308 return;
3314 * 6.5.2.6.2. Response Message Parameters
3316 static void
3317 dissect_ff_msg_sm_clear_assign_info_rsp(tvbuff_t *tvb, gint offset,
3318 guint32 length, packet_info *pinfo, proto_tree *tree)
3320 proto_tree *sub_tree;
3321 proto_item *ti;
3323 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Assignment Info Response");
3325 if (!tree) {
3326 return;
3329 if (length) {
3330 ti = proto_tree_add_text(tree, tvb, offset, length,
3331 "SM Clear Assignment Info Response");
3332 sub_tree = proto_item_add_subtree(ti,
3333 ett_ff_sm_clear_assign_info_rsp);
3335 proto_tree_add_text(sub_tree, tvb, offset, length,
3336 "[Unknown] (%u bytes)", length);
3339 return;
3345 * 6.5.2.6.3. Error Message Parameters
3347 static void
3348 dissect_ff_msg_sm_clear_assign_info_err(tvbuff_t *tvb, gint offset,
3349 guint32 length, packet_info *pinfo, proto_tree *tree)
3351 proto_tree *sub_tree;
3352 proto_item *ti;
3353 guint8 ErrorClass;
3354 guint8 ErrorCode;
3355 const char *error_code;
3357 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Assignment Info Error");
3359 if (!tree) {
3360 return;
3363 ti = proto_tree_add_text(tree, tvb, offset, length,
3364 "SM Clear Assignment Info Error");
3365 sub_tree = proto_item_add_subtree(ti,
3366 ett_ff_sm_clear_assign_info_err);
3368 ErrorClass = tvb_get_guint8(tvb, offset);
3369 proto_tree_add_item(sub_tree,
3370 hf_ff_sm_clear_assign_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
3371 offset += 1;
3372 length -= 1;
3374 ErrorCode = tvb_get_guint8(tvb, offset);
3375 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
3376 proto_tree_add_uint_format_value(sub_tree,
3377 hf_ff_sm_clear_assign_info_err_err_code,
3378 tvb, offset, 1, ErrorCode,
3379 "%s (%u)", error_code, ErrorCode);
3380 offset += 1;
3381 length -= 1;
3383 proto_tree_add_item(sub_tree,
3384 hf_ff_sm_clear_assign_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
3385 offset += 2;
3386 length -= 2;
3388 proto_tree_add_item(sub_tree,
3389 hf_ff_sm_clear_assign_info_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
3390 offset += 16;
3391 length -= 16;
3393 if (length) {
3394 proto_tree_add_text(sub_tree, tvb, offset, length,
3395 "[Unknown] (%u bytes)", length);
3398 return;
3404 * 6.5.2.7. SM Device Annunciation (Unconfirmed Service Id = 16)
3405 * 6.5.2.7.1. Request Message Parameters
3407 static void
3408 dissect_ff_msg_sm_dev_annunc_req_h1_node_addr(tvbuff_t *tvb,
3409 gint offset, proto_tree *tree)
3411 proto_tree *sub_tree;
3412 proto_item *ti;
3414 if (!tree) {
3415 return;
3418 ti = proto_tree_add_text(tree, tvb, offset, 2,
3419 "H1 Node Address Version Number (%u bytes)", 2);
3420 sub_tree = proto_item_add_subtree(ti,
3421 ett_ff_sm_dev_annunc_req_h1_node_addr);
3423 proto_tree_add_item(sub_tree,
3424 hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_h1_node_addr,
3425 tvb, offset, 1, ENC_BIG_ENDIAN);
3426 offset += 1;
3428 proto_tree_add_item(sub_tree,
3429 hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_ver_num,
3430 tvb, offset, 1, ENC_BIG_ENDIAN);
3431 /*offset += 1;*/
3433 return;
3438 static void
3439 dissect_ff_msg_sm_dev_annunc_req_entries_node_addr(tvbuff_t *tvb,
3440 gint offset, proto_tree *tree, guint32 value)
3442 proto_tree *sub_tree;
3443 proto_item *ti;
3444 guint d;
3446 if (!tree) {
3447 return;
3450 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
3451 "Version Number List (%u bytes)", 4 * value);
3452 sub_tree = proto_item_add_subtree(ti,
3453 ett_ff_sm_dev_annunc_req_entries_node_addr);
3455 for (d = 0; d < value * 2; d++) {
3456 dissect_ff_msg_sm_dev_annunc_req_h1_node_addr(tvb, offset, sub_tree);
3457 offset += 2;
3460 return;
3465 static void
3466 dissect_ff_msg_sm_dev_annunc_req_h1_live_list(tvbuff_t *tvb,
3467 gint offset, proto_tree *tree)
3469 proto_tree *sub_tree;
3470 proto_item *ti;
3472 if (!tree) {
3473 return;
3476 ti = proto_tree_add_text(tree, tvb, offset, 4,
3477 "H1 Live-list Version Number (%u bytes)", 4);
3478 sub_tree = proto_item_add_subtree(ti,
3479 ett_ff_sm_dev_annunc_req_h1_live_list);
3481 proto_tree_add_item(sub_tree,
3482 hf_ff_sm_dev_annunc_req_h1_live_list_h1_link_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3483 offset += 2;
3485 proto_tree_add_item(sub_tree,
3486 hf_ff_sm_dev_annunc_req_h1_live_list_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
3487 offset += 1;
3489 proto_tree_add_item(sub_tree,
3490 hf_ff_sm_dev_annunc_req_h1_live_list_ver_num, tvb, offset, 1, ENC_BIG_ENDIAN);
3491 /*offset += 1;*/
3493 return;
3498 static void
3499 dissect_ff_msg_sm_dev_annunc_req_entries_link_id(tvbuff_t *tvb,
3500 gint offset, proto_tree *tree, guint32 value)
3502 proto_tree *sub_tree;
3503 proto_item *ti;
3504 guint d;
3506 if (!tree) {
3507 return;
3510 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
3511 "Version Number List (%u bytes)", 4 * value);
3512 sub_tree = proto_item_add_subtree(ti,
3513 ett_ff_sm_dev_annunc_req_entries_h1_live_list);
3515 for (d = 0; d < value; d++) {
3516 dissect_ff_msg_sm_dev_annunc_req_h1_live_list(tvb, offset, sub_tree);
3517 offset += 4;
3520 return;
3525 static void
3526 dissect_ff_msg_sm_dev_annunc_req_smk_state(tvbuff_t *tvb,
3527 gint offset, proto_tree *tree, guint8 value)
3529 proto_tree *sub_tree;
3530 proto_item *ti;
3532 if (!tree) {
3533 return;
3536 ti = proto_tree_add_text(tree, tvb, offset, 1,
3537 "SMK State: 0x%02x", value);
3538 sub_tree = proto_item_add_subtree(ti,
3539 ett_ff_sm_dev_annunc_req_smk_state);
3542 * Bits 2-8:
3543 * 0 = Reserved
3544 * 1 = NO_TAG
3545 * 2 = OPERATIONAL
3546 * 3 127 = Reserved
3547 * Bit 1:
3548 * 0 = Not Synchronized with SNTP Time Server
3549 * 1 = Synchronized with SNTP Time Server
3551 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_smk_state_name, tvb, offset, 1, ENC_BIG_ENDIAN);
3552 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_smk_state_sync, tvb, offset, 1, ENC_BIG_ENDIAN);
3557 static void
3558 dissect_ff_msg_sm_dev_annunc_req_dev_type(tvbuff_t *tvb,
3559 gint offset, proto_tree *tree, guint8 value)
3561 proto_tree *sub_tree;
3562 proto_item *ti;
3564 if (!tree) {
3565 return;
3568 ti = proto_tree_add_text(tree, tvb, offset, 1,
3569 "Device Type: 0x%02x", value);
3570 sub_tree = proto_item_add_subtree(ti,
3571 ett_ff_sm_dev_annunc_req_dev_type);
3574 * Bit 8 = Linking Device
3575 * Bit 7 = I/O Gateway
3576 * Bit 6 = HSE Field Device
3577 * Bit 5 = H1 Device
3578 * Bit 4 = Reserved
3579 * Bits 1 - 3 Redundant Device Type Capability*
3580 * 0 = Type D-1 Device
3581 * 1 = Type D-2 Device
3582 * 2 = Type D-3 Device
3583 * 3 = Type D-3 and Type D-2 Device
3584 * 4 = Not used
3585 * 5 = Type D-2 and Type D-1 Device
3586 * 6 = Type D-3 and Type D-1 Device
3587 * 7 = Type D-3 and D-2 and Type D-1 Device
3589 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_link, tvb, offset, 1, ENC_BIG_ENDIAN);
3590 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_iogateway, tvb, offset, 1, ENC_BIG_ENDIAN);
3591 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_hse, tvb, offset, 1, ENC_BIG_ENDIAN);
3592 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_h1, tvb, offset, 1, ENC_BIG_ENDIAN);
3593 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
3594 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_type_redundant_caps, tvb, offset, 1, ENC_BIG_ENDIAN);
3599 static void
3600 dissect_ff_msg_sm_dev_annunc_req_dev_redundancy_state(tvbuff_t *tvb,
3601 gint offset, proto_tree *tree, guint8 value)
3603 proto_tree *sub_tree;
3604 proto_item *ti;
3606 if (!tree) {
3607 return;
3610 ti = proto_tree_add_text(tree, tvb, offset, 1,
3611 "Device Redundancy State: 0x%02x", value);
3612 sub_tree = proto_item_add_subtree(ti,
3613 ett_ff_sm_dev_annunc_req_dev_redundancy_state);
3616 * Bits 5-8 = Reserved, set to 0
3617 * Bits 3 & 4 Device Redundancy Role
3618 * 0 = Reserved
3619 * 1 = Primary
3620 * 2 = Secondary
3621 * Bits 1 & 2 Assigned Redundant Device Type*
3622 * 0 = Type D-1 Device
3623 * 1 = Type D-2 Device
3624 * 2 = Type D-3 Device
3626 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_redundancy_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
3627 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_redundancy_state_role, tvb, offset, 1, ENC_BIG_ENDIAN);
3628 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dev_redundancy_state_type, tvb, offset, 1, ENC_BIG_ENDIAN);
3633 static void
3634 dissect_ff_msg_sm_dev_annunc_req_dup_detection_state(tvbuff_t *tvb,
3635 gint offset, proto_tree *tree, guint8 value)
3637 proto_tree *sub_tree;
3638 proto_item *ti;
3640 if (!tree) {
3641 return;
3644 ti = proto_tree_add_text(tree, tvb, offset, 1,
3645 "Duplicate Detection State: 0x%02x", value);
3646 sub_tree = proto_item_add_subtree(ti,
3647 ett_ff_sm_dev_annunc_req_dup_detection_state);
3650 * Bits 3-8: Reserved, set to 0.
3651 * Bit 2: 1 = Duplicate PD Tag Detected
3652 * 0 = Duplicate PD Tag Not Detected
3653 * Bit 1: 1 = Duplicate Device Index Detected
3654 * 0 = Duplicate Device Index Not Detected
3656 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dup_detection_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
3657 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dup_detection_state_pd_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
3658 proto_tree_add_item(sub_tree, hf_ff_sm_dev_annunc_req_dup_detection_state_device, tvb, offset, 1, ENC_BIG_ENDIAN);
3663 static void
3664 dissect_ff_msg_sm_dev_annunc_req(tvbuff_t *tvb, gint offset,
3665 guint32 length, packet_info *pinfo, proto_tree *tree, guint32 FDAAddress)
3667 proto_tree *sub_tree;
3668 proto_item *ti;
3670 guint8 SMKState;
3671 guint8 DeviceType;
3672 guint8 DeviceRedundancyState;
3673 guint8 DuplicateDetectionState;
3674 guint32 NumOfEntriesInVerNumList;
3676 col_set_str(pinfo->cinfo, COL_INFO, "SM Device Annunciation Request");
3678 if (!tree) {
3679 return;
3682 ti = proto_tree_add_text(tree, tvb, offset, length,
3683 "SM Device Annunciation Request");
3684 sub_tree = proto_item_add_subtree(ti,
3685 ett_ff_sm_dev_annunc_req);
3687 SMKState = tvb_get_guint8(tvb, offset);
3688 dissect_ff_msg_sm_dev_annunc_req_smk_state(tvb, offset, sub_tree, SMKState);
3689 offset += 1;
3690 length -= 1;
3692 DeviceType = tvb_get_guint8(tvb, offset);
3693 dissect_ff_msg_sm_dev_annunc_req_dev_type(tvb,
3694 offset, sub_tree, DeviceType);
3695 offset += 1;
3696 length -= 1;
3698 DeviceRedundancyState = tvb_get_guint8(tvb, offset);
3699 dissect_ff_msg_sm_dev_annunc_req_dev_redundancy_state(tvb,
3700 offset, sub_tree, DeviceRedundancyState);
3701 offset += 1;
3702 length -= 1;
3704 DuplicateDetectionState = tvb_get_guint8(tvb, offset);
3705 dissect_ff_msg_sm_dev_annunc_req_dup_detection_state(tvb,
3706 offset, sub_tree, DuplicateDetectionState);
3707 offset += 1;
3708 length -= 1;
3710 proto_tree_add_item(sub_tree,
3711 hf_ff_sm_dev_annunc_req_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
3712 offset += 2;
3713 length -= 2;
3715 proto_tree_add_item(sub_tree,
3716 hf_ff_sm_dev_annunc_req_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
3717 offset += 2;
3718 length -= 2;
3720 proto_tree_add_item(sub_tree,
3721 hf_ff_sm_dev_annunc_req_operational_ip_addr, tvb, offset, 16, ENC_NA);
3722 offset += 16;
3723 length -= 16;
3725 proto_tree_add_item(sub_tree,
3726 hf_ff_sm_dev_annunc_req_dev_id, tvb, offset, 32, ENC_ASCII|ENC_NA);
3727 offset += 32;
3728 length -= 32;
3730 proto_tree_add_item(sub_tree,
3731 hf_ff_sm_dev_annunc_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
3732 offset += 32;
3733 length -= 32;
3735 proto_tree_add_item(sub_tree,
3736 hf_ff_sm_dev_annunc_req_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
3737 offset += 4;
3738 length -= 4;
3740 proto_tree_add_item(sub_tree,
3741 hf_ff_sm_dev_annunc_req_lr_port, tvb, offset, 2, ENC_BIG_ENDIAN);
3742 offset += 2;
3743 length -= 2;
3745 proto_tree_add_item(sub_tree,
3746 hf_ff_sm_dev_annunc_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
3747 offset += 2;
3748 length -= 2;
3750 proto_tree_add_item(sub_tree,
3751 hf_ff_sm_dev_annunc_req_annunc_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
3752 offset += 4;
3753 length -= 4;
3755 proto_tree_add_item(sub_tree,
3756 hf_ff_sm_dev_annunc_req_hse_dev_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
3757 offset += 4;
3758 length -= 4;
3760 NumOfEntriesInVerNumList = tvb_get_ntohl(tvb, offset);
3761 proto_tree_add_item(sub_tree,
3762 hf_ff_sm_dev_annunc_req_num_of_entries, tvb, offset, 4, ENC_BIG_ENDIAN);
3763 offset += 4;
3764 length -= 4;
3766 if (NumOfEntriesInVerNumList) {
3767 guint16 LinkId;
3768 /* 11111111 11111111 00000000 00000000 */
3769 LinkId = (guint16)(FDAAddress >> 16);
3770 if (LinkId) {
3771 dissect_ff_msg_sm_dev_annunc_req_entries_node_addr(tvb,
3772 offset, sub_tree, NumOfEntriesInVerNumList);
3773 } else {
3774 dissect_ff_msg_sm_dev_annunc_req_entries_link_id(tvb,
3775 offset, sub_tree, NumOfEntriesInVerNumList);
3778 offset += 4 * NumOfEntriesInVerNumList;
3779 length -= 4 * NumOfEntriesInVerNumList;
3782 if (length) {
3783 proto_tree_add_text(sub_tree, tvb, offset, length,
3784 "[Unknown] (%u bytes)", length);
3787 return;
3793 * 6.5.3.2. FMS Initiate (Confirmed Service Id = 96)
3794 * 6.5.3.2.1. Request Message Parameters
3796 static void
3797 dissect_ff_msg_fms_init_req(tvbuff_t *tvb, gint offset,
3798 guint32 length, packet_info *pinfo, proto_tree *tree)
3800 proto_tree *sub_tree;
3801 proto_item *ti;
3803 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Request");
3805 if (!tree) {
3806 return;
3809 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Initiate Request");
3810 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_req);
3812 proto_tree_add_item(sub_tree,
3813 hf_ff_fms_init_req_conn_opt, tvb, offset, 1, ENC_BIG_ENDIAN);
3814 offset += 1;
3815 length -= 1;
3817 proto_tree_add_item(sub_tree,
3818 hf_ff_fms_init_req_access_protection_supported_calling,
3819 tvb, offset, 1, ENC_BIG_ENDIAN);
3820 offset += 1;
3821 length -= 1;
3823 proto_tree_add_item(sub_tree,
3824 hf_ff_fms_init_req_passwd_and_access_grps_calling,
3825 tvb, offset, 2, ENC_BIG_ENDIAN);
3826 offset += 2;
3827 length -= 2;
3829 proto_tree_add_item(sub_tree,
3830 hf_ff_fms_init_req_ver_od_calling, tvb, offset, 2, ENC_BIG_ENDIAN);
3831 offset += 2;
3832 length -= 2;
3834 proto_tree_add_item(sub_tree,
3835 hf_ff_fms_init_req_prof_num_calling, tvb, offset, 2, ENC_BIG_ENDIAN);
3836 offset += 2;
3837 length -= 2;
3839 proto_tree_add_item(sub_tree,
3840 hf_ff_fms_init_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
3841 offset += 32;
3842 length -= 32;
3844 if (length) {
3845 proto_tree_add_text(sub_tree, tvb, offset, length,
3846 "[Unknown] (%u bytes)", length);
3849 return;
3855 * 6.5.3.2.2. Response Message Parameters
3857 static void
3858 dissect_ff_msg_fms_init_rsp(tvbuff_t *tvb, gint offset,
3859 guint32 length, packet_info *pinfo, proto_tree *tree)
3861 proto_tree *sub_tree;
3862 proto_item *ti;
3864 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Response");
3866 if (!tree) {
3867 return;
3870 ti = proto_tree_add_text(tree, tvb, offset, length,
3871 "FMS Initiate Response");
3872 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_rep);
3874 proto_tree_add_item(sub_tree,
3875 hf_ff_fms_init_rsp_ver_od_called, tvb, offset, 2, ENC_BIG_ENDIAN);
3876 offset += 2;
3877 length -= 2;
3879 proto_tree_add_item(sub_tree,
3880 hf_ff_fms_init_rsp_prof_num_called, tvb, offset, 2, ENC_BIG_ENDIAN);
3881 offset += 2;
3882 length -= 2;
3884 if (length) {
3885 proto_tree_add_text(sub_tree, tvb, offset, length,
3886 "[Unknown] (%u bytes)", length);
3889 return;
3895 * 6.5.3.2.3. Error Message Parameters
3897 static void
3898 dissect_ff_msg_fms_init_err(tvbuff_t *tvb, gint offset,
3899 guint32 length, packet_info *pinfo, proto_tree *tree)
3901 proto_tree *sub_tree;
3902 proto_item *ti;
3903 guint8 ErrorClass;
3904 guint8 ErrorCode;
3905 const char *error_code;
3907 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Error");
3909 if (!tree) {
3910 return;
3913 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Initiate Error");
3914 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_err);
3916 ErrorClass = tvb_get_guint8(tvb, offset);
3917 proto_tree_add_item(sub_tree,
3918 hf_ff_fms_init_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
3919 offset += 1;
3920 length -= 1;
3922 ErrorCode = tvb_get_guint8(tvb, offset);
3923 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
3924 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_init_err_err_code,
3925 tvb, offset, 1, ErrorCode,
3926 "%s (%u)", error_code, ErrorCode);
3927 offset += 1;
3928 length -= 1;
3930 proto_tree_add_item(sub_tree,
3931 hf_ff_fms_init_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
3932 offset += 2;
3933 length -= 2;
3935 proto_tree_add_item(sub_tree,
3936 hf_ff_fms_init_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
3937 offset += 16;
3938 length -= 16;
3940 if (length) {
3941 proto_tree_add_text(sub_tree, tvb, offset, length,
3942 "[Unknown] (%u bytes)", length);
3945 return;
3951 * 6.5.3.3. FMS Abort (Unconfirmed Service Id = 112)
3952 * 6.5.3.3.1. Request Message Parameters
3954 static void
3955 dissect_ff_msg_fms_abort_req(tvbuff_t *tvb, gint offset,
3956 guint32 length, packet_info *pinfo, proto_tree *tree)
3958 proto_tree *sub_tree;
3959 proto_item *ti;
3961 col_set_str(pinfo->cinfo, COL_INFO, "FMS Abort Request");
3963 if (!tree) {
3964 return;
3967 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Abort Request");
3968 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_abort_req);
3970 proto_tree_add_text(sub_tree, tvb, offset, 16,
3971 "Abort Detail (%u bytes)", 16);
3972 offset += 16;
3973 length -= 16;
3975 proto_tree_add_item(sub_tree,
3976 hf_ff_fms_abort_req_abort_id, tvb, offset, 1, ENC_BIG_ENDIAN);
3977 offset += 1;
3978 length -= 1;
3980 proto_tree_add_item(sub_tree,
3981 hf_ff_fms_abort_req_reason_code, tvb, offset, 1, ENC_BIG_ENDIAN);
3982 offset += 1;
3983 length -= 1;
3985 proto_tree_add_item(sub_tree,
3986 hf_ff_fms_abort_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
3987 offset += 2;
3988 length -= 2;
3990 if (length) {
3991 proto_tree_add_text(sub_tree, tvb, offset, length,
3992 "[Unknown] (%u bytes)", length);
3995 return;
4001 * 6.5.3.4. FMS Status (Confirmed Service Id = 0)
4002 * 6.5.3.4.1. Request Message Parameters
4004 static void
4005 dissect_ff_msg_fms_status_req(tvbuff_t *tvb, gint offset,
4006 guint32 length, packet_info *pinfo, proto_tree *tree)
4008 proto_tree *sub_tree;
4009 proto_item *ti;
4011 col_set_str(pinfo->cinfo, COL_INFO, "FMS Status Request");
4013 if (!tree) {
4014 return;
4017 if (length) {
4018 ti = proto_tree_add_text(tree, tvb, offset, length,
4019 "FMS Status Request");
4020 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_status_req);
4022 proto_tree_add_text(sub_tree, tvb, offset, length,
4023 "[Unknown] (%u bytes)", length);
4026 return;
4032 * 6.5.3.4.2. Response Message Parameters
4034 static void
4035 dissect_ff_msg_fms_status_rsp(tvbuff_t *tvb, gint offset,
4036 guint32 length, packet_info *pinfo, proto_tree *tree)
4038 proto_tree *sub_tree;
4039 proto_item *ti;
4041 col_set_str(pinfo->cinfo, COL_INFO, "FMS Status Response");
4043 if (!tree) {
4044 return;
4047 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Status Response");
4048 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_status_rsp);
4050 proto_tree_add_item(sub_tree,
4051 hf_ff_fms_status_rsp_logical_status, tvb, offset, 1, ENC_BIG_ENDIAN);
4052 offset += 1;
4053 length -= 1;
4055 proto_tree_add_item(sub_tree,
4056 hf_ff_fms_status_rsp_physical_status, tvb, offset, 1, ENC_BIG_ENDIAN);
4057 offset += 1;
4058 length -= 1;
4060 proto_tree_add_item(sub_tree,
4061 hf_ff_fms_status_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
4062 offset += 2;
4063 length -= 2;
4065 proto_tree_add_text(sub_tree, tvb, offset, 4,
4066 "Local Detail (%u bytes)", 4);
4067 offset += 4;
4068 length -= 4;
4070 if (length) {
4071 proto_tree_add_text(sub_tree, tvb, offset, length,
4072 "[Unknown] (%u bytes)", length);
4075 return;
4081 * 6.5.3.4.3. Error Message Parameters
4083 static void
4084 dissect_ff_msg_fms_status_err(tvbuff_t *tvb, gint offset,
4085 guint32 length, packet_info *pinfo, proto_tree *tree)
4087 proto_tree *sub_tree;
4088 proto_item *ti;
4089 guint8 ErrorClass;
4090 guint8 ErrorCode;
4091 const char *error_code;
4093 col_set_str(pinfo->cinfo, COL_INFO, "FMS Status Error");
4095 if (!tree) {
4096 return;
4099 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Status Error");
4100 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_status_err);
4102 ErrorClass = tvb_get_guint8(tvb, offset);
4103 proto_tree_add_item(sub_tree,
4104 hf_ff_fms_status_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4105 offset += 1;
4106 length -= 1;
4108 ErrorCode = tvb_get_guint8(tvb, offset);
4109 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4110 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_status_err_err_code,
4111 tvb, offset, 1, ErrorCode,
4112 "%s (%u)", error_code, ErrorCode);
4113 offset += 1;
4114 length -= 1;
4116 proto_tree_add_item(sub_tree,
4117 hf_ff_fms_status_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4118 offset += 2;
4119 length -= 2;
4121 proto_tree_add_item(sub_tree,
4122 hf_ff_fms_status_err_additional_desc, tvb, offset, 16, ENC_ASCII|ENC_NA);
4123 offset += 16;
4124 length -= 16;
4126 if (length) {
4127 proto_tree_add_text(sub_tree, tvb, offset, length,
4128 "[Unknown] (%u bytes)", length);
4131 return;
4137 * 6.5.3.5. FMS Unsolicited Status (Unconfirmed Service Id = 1)
4138 * 6.5.3.5.1. Request Message Parameters
4140 static void
4141 dissect_ff_msg_fms_unsolicited_status_req(tvbuff_t *tvb, gint offset,
4142 guint32 length, packet_info *pinfo, proto_tree *tree)
4144 proto_tree *sub_tree;
4145 proto_item *ti;
4147 col_set_str(pinfo->cinfo, COL_INFO, "FMS Unsolicited Status Request");
4149 if (!tree) {
4150 return;
4153 ti = proto_tree_add_text(tree, tvb, offset, length,
4154 "FMS Unsolicited Status Request");
4155 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_unsolicited_status_req);
4157 proto_tree_add_item(sub_tree,
4158 hf_ff_fms_unsolicited_status_req_logical_status, tvb, offset, 1, ENC_BIG_ENDIAN);
4159 offset += 1;
4160 length -= 1;
4162 proto_tree_add_item(sub_tree,
4163 hf_ff_fms_unsolicited_status_req_physical_status,
4164 tvb, offset, 1, ENC_BIG_ENDIAN);
4165 offset += 1;
4166 length -= 1;
4168 proto_tree_add_item(sub_tree,
4169 hf_ff_fms_unsolicited_status_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
4170 offset += 2;
4171 length -= 2;
4173 proto_tree_add_text(sub_tree, tvb, offset, 4,
4174 "Local Detail (%u bytes)", 4);
4175 offset += 4;
4176 length -= 4;
4178 if (length) {
4179 proto_tree_add_text(sub_tree, tvb, offset, length,
4180 "[Unknown] (%u bytes)", length);
4183 return;
4189 * 6.5.3.6. FMS Identify (Confirmed Service Id = 1)
4190 * 6.5.3.6.1. Request Message Parameters
4192 static void
4193 dissect_ff_msg_fms_id_req(tvbuff_t *tvb, gint offset,
4194 guint32 length, packet_info *pinfo, proto_tree *tree)
4196 proto_tree *sub_tree;
4197 proto_item *ti;
4199 col_set_str(pinfo->cinfo, COL_INFO, "FMS Identify Request");
4201 if (!tree) {
4202 return;
4205 if (length) {
4206 ti = proto_tree_add_text(tree, tvb, offset, length,
4207 "FMS Identify Request");
4208 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_id_req);
4210 proto_tree_add_text(sub_tree, tvb, offset, length,
4211 "[Unknown] (%u bytes)", length);
4214 return;
4220 * 6.5.3.6.2. Response Message Parameters
4222 static void
4223 dissect_ff_msg_fms_id_rsp(tvbuff_t *tvb, gint offset,
4224 guint32 length, packet_info *pinfo, proto_tree *tree)
4226 proto_tree *sub_tree;
4227 proto_item *ti;
4229 col_set_str(pinfo->cinfo, COL_INFO, "FMS Identify Response");
4231 if (!tree) {
4232 return;
4235 ti = proto_tree_add_text(tree, tvb, offset, length,
4236 "FMS Identify Response");
4237 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_id_rsp);
4239 proto_tree_add_item(sub_tree,
4240 hf_ff_fms_id_rsp_vendor_name, tvb, offset, 32, ENC_ASCII|ENC_NA);
4241 offset += 32;
4242 length -= 32;
4244 proto_tree_add_item(sub_tree,
4245 hf_ff_fms_id_rsp_model_name, tvb, offset, 32, ENC_ASCII|ENC_NA);
4246 offset += 32;
4247 length -= 32;
4249 proto_tree_add_item(sub_tree,
4250 hf_ff_fms_id_rsp_revision, tvb, offset, 32, ENC_ASCII|ENC_NA);
4251 offset += 32;
4252 length -= 32;
4254 if (length) {
4255 proto_tree_add_text(sub_tree, tvb, offset, length,
4256 "[Unknown] (%u bytes)", length);
4259 return;
4265 * 6.5.3.6.3. Error Message Parameters
4267 static void
4268 dissect_ff_msg_fms_id_err(tvbuff_t *tvb, gint offset,
4269 guint32 length, packet_info *pinfo, proto_tree *tree)
4271 proto_tree *sub_tree;
4272 proto_item *ti;
4273 guint8 ErrorClass;
4274 guint8 ErrorCode;
4275 const char *error_code;
4277 col_set_str(pinfo->cinfo, COL_INFO, "FMS Identify Error");
4279 if (!tree) {
4280 return;
4283 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Identify Error");
4284 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_id_err);
4286 ErrorClass = tvb_get_guint8(tvb, offset);
4287 proto_tree_add_item(sub_tree,
4288 hf_ff_fms_id_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4289 offset += 1;
4290 length -= 1;
4292 ErrorCode = tvb_get_guint8(tvb, offset);
4293 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4294 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_id_err_err_code,
4295 tvb, offset, 1, ErrorCode,
4296 "%s (%u)", error_code, ErrorCode);
4297 offset += 1;
4298 length -= 1;
4300 proto_tree_add_item(sub_tree,
4301 hf_ff_fms_id_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4302 offset += 2;
4303 length -= 2;
4305 proto_tree_add_item(sub_tree, hf_ff_fms_id_err_additional_desc,
4306 tvb, offset, 16, ENC_ASCII|ENC_NA);
4307 offset += 16;
4308 length -= 16;
4310 if (length) {
4311 proto_tree_add_text(sub_tree, tvb, offset, length,
4312 "[Unknown] (%u bytes)", length);
4315 return;
4321 * 6.5.3.7. FMS Get OD (Confirmed Service Id = 4)
4322 * 6.5.3.7.1. Request Message Parameters
4324 static void
4325 dissect_ff_msg_fms_get_od_req(tvbuff_t *tvb, gint offset,
4326 guint32 length, packet_info *pinfo, proto_tree *tree)
4328 proto_tree *sub_tree;
4329 proto_item *ti;
4331 col_set_str(pinfo->cinfo, COL_INFO, "FMS Get OD Request");
4333 if (!tree) {
4334 return;
4337 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Get OD Request");
4338 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_get_od_req);
4340 proto_tree_add_item(sub_tree,
4341 hf_ff_fms_get_od_req_all_attrs, tvb, offset, 1, ENC_BIG_ENDIAN);
4342 offset += 1;
4343 length -= 1;
4345 proto_tree_add_item(sub_tree,
4346 hf_ff_fms_get_od_req_start_idx_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
4347 offset += 1;
4348 length -= 1;
4350 proto_tree_add_item(sub_tree,
4351 hf_ff_fms_get_od_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
4352 offset += 2;
4353 length -= 2;
4355 proto_tree_add_item(sub_tree,
4356 hf_ff_fms_get_od_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
4357 offset += 4;
4358 length -= 4;
4360 if (length) {
4361 proto_tree_add_text(sub_tree, tvb, offset, length,
4362 "[Unknown] (%u bytes)", length);
4365 return;
4371 * 6.5.3.7.2. Response Message Parameters
4373 static void
4374 dissect_ff_msg_fms_get_od_rsp(tvbuff_t *tvb, gint offset,
4375 guint32 length, packet_info *pinfo, proto_tree *tree)
4377 proto_tree *sub_tree;
4378 proto_item *ti;
4380 col_set_str(pinfo->cinfo, COL_INFO, "FMS Get OD Response");
4382 if (!tree) {
4383 return;
4386 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Get OD Response");
4387 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_get_od_rsp);
4389 proto_tree_add_item(sub_tree,
4390 hf_ff_fms_get_od_rsp_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
4391 offset += 1;
4392 length -= 1;
4394 proto_tree_add_item(sub_tree,
4395 hf_ff_fms_get_od_rsp_num_of_obj_desc, tvb, offset, 1, ENC_BIG_ENDIAN);
4396 offset += 1;
4397 length -= 1;
4399 proto_tree_add_item(sub_tree,
4400 hf_ff_fms_get_od_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
4401 offset += 2;
4402 length -= 2;
4404 if (length) {
4405 proto_tree_add_text(sub_tree, tvb, offset, length,
4406 "List of Object Descriptions (%u bytes)", length);
4409 return;
4415 * 6.5.3.7.3. Error Message Parameters
4417 static void
4418 dissect_ff_msg_fms_get_od_err(tvbuff_t *tvb, gint offset,
4419 guint32 length, packet_info *pinfo, proto_tree *tree)
4421 proto_tree *sub_tree;
4422 proto_item *ti;
4423 guint8 ErrorClass;
4424 guint8 ErrorCode;
4425 const char *error_code;
4427 col_set_str(pinfo->cinfo, COL_INFO, "FMS Get OD Error");
4429 if (!tree) {
4430 return;
4433 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Get OD Error");
4434 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_get_od_err);
4436 ErrorClass = tvb_get_guint8(tvb, offset);
4437 proto_tree_add_item(sub_tree,
4438 hf_ff_fms_get_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4439 offset += 1;
4440 length -= 1;
4442 ErrorCode = tvb_get_guint8(tvb, offset);
4443 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4444 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_get_od_err_err_code,
4445 tvb, offset, 1, ErrorCode,
4446 "%s (%u)", error_code, ErrorCode);
4447 offset += 1;
4448 length -= 1;
4450 proto_tree_add_item(sub_tree,
4451 hf_ff_fms_get_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4452 offset += 2;
4453 length -= 2;
4455 proto_tree_add_item(sub_tree, hf_ff_fms_get_od_err_additional_desc,
4456 tvb, offset, 16, ENC_ASCII|ENC_NA);
4457 offset += 16;
4458 length -= 16;
4460 if (length) {
4461 proto_tree_add_text(sub_tree, tvb, offset, length,
4462 "[Unknown] (%u bytes)", length);
4465 return;
4471 * 6.5.3.8. FMS Initiate Put OD (Confirmed Service Id = 28)
4472 * 6.5.3.8.1. Request Message Parameters
4474 static void
4475 dissect_ff_msg_fms_init_put_od_req(tvbuff_t *tvb, gint offset,
4476 guint32 length, packet_info *pinfo, proto_tree *tree)
4478 proto_tree *sub_tree;
4479 proto_item *ti;
4481 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Put OD Request");
4483 if (!tree) {
4484 return;
4487 ti = proto_tree_add_text(tree, tvb, offset, length,
4488 "FMS Initiate Put OD Request");
4489 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_put_od_req);
4491 proto_tree_add_item(sub_tree,
4492 hf_ff_fms_init_put_od_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
4493 offset += 2;
4494 length -= 2;
4496 proto_tree_add_item(sub_tree,
4497 hf_ff_fms_init_put_od_req_consequence, tvb, offset, 2, ENC_BIG_ENDIAN);
4498 offset += 2;
4499 length -= 2;
4501 if (length) {
4502 proto_tree_add_text(sub_tree, tvb, offset, length,
4503 "[Unknown] (%u bytes)", length);
4506 return;
4512 * 6.5.3.8.2. Response Message Parameters
4514 static void
4515 dissect_ff_msg_fms_init_put_od_rsp(tvbuff_t *tvb, gint offset,
4516 guint32 length, packet_info *pinfo, proto_tree *tree)
4518 proto_tree *sub_tree;
4519 proto_item *ti;
4521 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Put OD Response");
4523 if (!tree) {
4524 return;
4527 if (length) {
4528 ti = proto_tree_add_text(tree, tvb, offset, length,
4529 "FMS Initiate Put OD Response");
4530 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_put_od_rsp);
4532 proto_tree_add_text(sub_tree, tvb, offset, length,
4533 "[Unknown] (%u bytes)", length);
4536 return;
4542 * 6.5.3.8.3. Error Message Parameters
4544 static void
4545 dissect_ff_msg_fms_init_put_od_err(tvbuff_t *tvb, gint offset,
4546 guint32 length, packet_info *pinfo, proto_tree *tree)
4548 proto_tree *sub_tree;
4549 proto_item *ti;
4550 guint8 ErrorClass;
4551 guint8 ErrorCode;
4552 const char *error_code;
4554 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Put OD Error");
4556 if (!tree) {
4557 return;
4560 ti = proto_tree_add_text(tree, tvb, offset, length,
4561 "FMS Initiate Put OD Error");
4562 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_put_od_err);
4564 ErrorClass = tvb_get_guint8(tvb, offset);
4565 proto_tree_add_item(sub_tree,
4566 hf_ff_fms_init_put_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4567 offset += 1;
4568 length -= 1;
4570 ErrorCode = tvb_get_guint8(tvb, offset);
4571 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4572 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_init_put_od_err_err_code,
4573 tvb, offset, 1, ErrorCode,
4574 "%s (%u)", error_code, ErrorCode);
4575 offset += 1;
4576 length -= 1;
4578 proto_tree_add_item(sub_tree,
4579 hf_ff_fms_init_put_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4580 offset += 2;
4581 length -= 2;
4583 proto_tree_add_item(sub_tree, hf_ff_fms_init_put_od_err_additional_desc,
4584 tvb, offset, 16, ENC_ASCII|ENC_NA);
4585 offset += 16;
4586 length -= 16;
4588 if (length) {
4589 proto_tree_add_text(sub_tree, tvb, offset, length,
4590 "[Unknown] (%u bytes)", length);
4593 return;
4599 * 6.5.3.9. FMS Put OD (Confirmed Service Id = 29)
4600 * 6.5.3.9.1. Request Message Parameters
4602 static void
4603 dissect_ff_msg_fms_put_od_req(tvbuff_t *tvb, gint offset,
4604 guint32 length, packet_info *pinfo, proto_tree *tree)
4606 proto_tree *sub_tree;
4607 proto_item *ti;
4609 col_set_str(pinfo->cinfo, COL_INFO, "FMS Put OD Request");
4611 if (!tree) {
4612 return;
4615 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Put OD Request");
4616 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_put_od_req);
4618 proto_tree_add_item(sub_tree,
4619 hf_ff_fms_put_od_req_num_of_obj_desc, tvb, offset, 1, ENC_BIG_ENDIAN);
4620 offset += 1;
4621 length -= 1;
4623 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
4624 offset += 3;
4625 length -= 3;
4627 proto_tree_add_text(sub_tree, tvb, offset, length,
4628 "List of Object Descriptions (%u bytes)", length);
4630 return;
4636 * 6.5.3.9.2. Response Message Parameters
4638 static void
4639 dissect_ff_msg_fms_put_od_rsp(tvbuff_t *tvb, gint offset,
4640 guint32 length, packet_info *pinfo, proto_tree *tree)
4642 proto_tree *sub_tree;
4643 proto_item *ti;
4645 col_set_str(pinfo->cinfo, COL_INFO, "FMS Put OD Response");
4647 if (!tree) {
4648 return;
4651 if (length) {
4652 ti = proto_tree_add_text(tree, tvb, offset, length,
4653 "FMS Put OD Response");
4654 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_put_od_rsp);
4656 proto_tree_add_text(sub_tree, tvb, offset, length,
4657 "[Unknown] (%u bytes)", length);
4660 return;
4666 * 6.5.3.9.3. Error Message Parameters
4668 static void
4669 dissect_ff_msg_fms_put_od_err(tvbuff_t *tvb, gint offset,
4670 guint32 length, packet_info *pinfo, proto_tree *tree)
4672 proto_tree *sub_tree;
4673 proto_item *ti;
4674 guint8 ErrorClass;
4675 guint8 ErrorCode;
4676 const char *error_code;
4678 col_set_str(pinfo->cinfo, COL_INFO, "FMS Put OD Error");
4680 if (!tree) {
4681 return;
4684 ti = proto_tree_add_text(tree, tvb, offset, length,
4685 "FMS Put OD Error");
4686 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_put_od_err);
4688 ErrorClass = tvb_get_guint8(tvb, offset);
4689 proto_tree_add_item(sub_tree,
4690 hf_ff_fms_put_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4691 offset += 1;
4692 length -= 1;
4694 ErrorCode = tvb_get_guint8(tvb, offset);
4695 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4696 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_put_od_err_err_code,
4697 tvb, offset, 1, ErrorCode,
4698 "%s (%u)", error_code, ErrorCode);
4699 offset += 1;
4700 length -= 1;
4702 proto_tree_add_item(sub_tree,
4703 hf_ff_fms_put_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4704 offset += 2;
4705 length -= 2;
4707 proto_tree_add_item(sub_tree, hf_ff_fms_put_od_err_additional_desc,
4708 tvb, offset, 16, ENC_ASCII|ENC_NA);
4709 offset += 16;
4710 length -= 16;
4712 if (length) {
4713 proto_tree_add_text(sub_tree, tvb, offset, length,
4714 "[Unknown] (%u bytes)", length);
4717 return;
4723 * 6.5.3.10. FMS Terminate Put OD (Confirmed Service Id = 30)
4724 * 6.5.3.10.1. Request Message Parameters
4726 static void
4727 dissect_ff_msg_fms_terminate_put_od_req(tvbuff_t *tvb, gint offset,
4728 guint32 length, packet_info *pinfo, proto_tree *tree)
4730 proto_tree *sub_tree;
4731 proto_item *ti;
4733 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Put OD Request");
4735 if (!tree) {
4736 return;
4739 if (length) {
4740 ti = proto_tree_add_text(tree, tvb, offset, length,
4741 "FMS Terminate Put OD Request");
4742 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_terminate_put_od_req);
4744 proto_tree_add_text(sub_tree, tvb, offset, length,
4745 "[Unknown] (%u bytes)", length);
4748 return;
4754 * 6.5.3.10.2. Response Message Parameters
4756 static void
4757 dissect_ff_msg_fms_terminate_put_od_rsp(tvbuff_t *tvb, gint offset,
4758 guint32 length, packet_info *pinfo, proto_tree *tree)
4760 proto_tree *sub_tree;
4761 proto_item *ti;
4763 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Put OD Response");
4765 if (!tree) {
4766 return;
4769 if (length) {
4770 ti = proto_tree_add_text(tree, tvb, offset, length,
4771 "FMS Terminate Put OD Response");
4772 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_terminate_put_od_rsp);
4774 proto_tree_add_text(sub_tree, tvb, offset, length,
4775 "[Unknown] (%u bytes)", length);
4778 return;
4784 * 6.5.3.10.3. Error Message Parameters
4786 static void
4787 dissect_ff_msg_fms_terminate_put_od_err(tvbuff_t *tvb, gint offset,
4788 guint32 length, packet_info *pinfo, proto_tree *tree)
4790 proto_tree *sub_tree;
4791 proto_item *ti;
4792 guint8 ErrorClass;
4793 guint8 ErrorCode;
4794 const char *error_code;
4796 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Put OD Error");
4798 if (!tree) {
4799 return;
4802 ti = proto_tree_add_text(tree, tvb, offset, length,
4803 "FMS Terminate Put OD Error");
4804 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_terminate_put_od_err);
4806 proto_tree_add_item(sub_tree,
4807 hf_ff_fms_terminate_put_od_err_index, tvb, offset, 4, ENC_BIG_ENDIAN);
4808 offset += 4;
4809 length -= 4;
4811 ErrorClass = tvb_get_guint8(tvb, offset);
4812 proto_tree_add_item(sub_tree,
4813 hf_ff_fms_terminate_put_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4814 offset += 1;
4815 length -= 1;
4817 ErrorCode = tvb_get_guint8(tvb, offset);
4818 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4819 proto_tree_add_uint_format_value(sub_tree,
4820 hf_ff_fms_terminate_put_od_err_err_code,
4821 tvb, offset, 1, ErrorCode,
4822 "%s (%u)", error_code, ErrorCode);
4823 offset += 1;
4824 length -= 1;
4826 proto_tree_add_item(sub_tree,
4827 hf_ff_fms_terminate_put_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4828 offset += 2;
4829 length -= 2;
4831 proto_tree_add_item(sub_tree,
4832 hf_ff_fms_terminate_put_od_err_additional_desc,
4833 tvb, offset, 16, ENC_ASCII|ENC_NA);
4834 offset += 16;
4835 length -= 16;
4837 if (length) {
4838 proto_tree_add_text(sub_tree, tvb, offset, length,
4839 "[Unknown] (%u bytes)", length);
4842 return;
4848 * 6.5.3.11. FMS Generic Initiate Download Sequence
4849 * (Confirmed Service Id = 31)
4850 * 6.5.3.11.1. Request Message Parameters
4852 static void
4853 dissect_ff_msg_fms_generic_init_download_sequence_req(
4854 tvbuff_t *tvb, gint offset,
4855 guint32 length, packet_info *pinfo, proto_tree *tree)
4857 proto_tree *sub_tree;
4858 proto_item *ti;
4860 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Initiate Download Sequence Request");
4862 if (!tree) {
4863 return;
4866 ti = proto_tree_add_text(tree, tvb, offset, length,
4867 "FMS Generic Initiate Download Sequence Request");
4868 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_gen_init_download_seq_req);
4870 proto_tree_add_item(sub_tree,
4871 hf_ff_fms_gen_init_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
4872 offset += 4;
4873 length -= 4;
4875 if (length) {
4876 proto_tree_add_text(sub_tree, tvb, offset, length,
4877 "[Unknown] (%u bytes)", length);
4880 return;
4886 * 6.5.3.11.2. Response Message Parameters
4888 static void
4889 dissect_ff_msg_fms_generic_init_download_sequence_rsp(
4890 tvbuff_t *tvb, gint offset,
4891 guint32 length, packet_info *pinfo, proto_tree *tree)
4893 proto_tree *sub_tree;
4894 proto_item *ti;
4896 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Initiate Download Sequence Response");
4898 if (!tree) {
4899 return;
4902 if (length) {
4903 ti = proto_tree_add_text(tree, tvb, offset, length,
4904 "FMS Generic Initiate Download Sequence Response");
4905 sub_tree = proto_item_add_subtree(ti,
4906 ett_ff_fms_gen_init_download_seq_rep);
4908 proto_tree_add_text(sub_tree, tvb, offset, length,
4909 "[Unknown] (%u bytes)", length);
4912 return;
4918 * 6.5.3.11.3. Error Message Parameters
4920 static void
4921 dissect_ff_msg_fms_generic_init_download_sequence_err(
4922 tvbuff_t *tvb, gint offset,
4923 guint32 length, packet_info *pinfo, proto_tree *tree)
4925 proto_tree *sub_tree;
4926 proto_item *ti;
4927 guint8 ErrorClass;
4928 guint8 ErrorCode;
4929 const char *error_code;
4931 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Initiate Download Sequence Error");
4933 if (!tree) {
4934 return;
4937 ti = proto_tree_add_text(tree, tvb, offset, length,
4938 "FMS Generic Initiate Download Sequence Error");
4939 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_gen_init_download_seq_err);
4941 ErrorClass = tvb_get_guint8(tvb, offset);
4942 proto_tree_add_item(sub_tree,
4943 hf_ff_fms_gen_init_download_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4944 offset += 1;
4945 length -= 1;
4947 ErrorCode = tvb_get_guint8(tvb, offset);
4948 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4949 proto_tree_add_uint_format_value(sub_tree,
4950 hf_ff_fms_gen_init_download_seq_err_err_code,
4951 tvb, offset, 1, ErrorCode,
4952 "%s (%u)", error_code, ErrorCode);
4953 offset += 1;
4954 length -= 1;
4956 proto_tree_add_item(sub_tree,
4957 hf_ff_fms_gen_init_download_seq_err_additional_code,
4958 tvb, offset, 2, ENC_BIG_ENDIAN);
4959 offset += 2;
4960 length -= 2;
4962 proto_tree_add_item(sub_tree,
4963 hf_ff_fms_gen_init_download_seq_err_additional_desc,
4964 tvb, offset, 16, ENC_ASCII|ENC_NA);
4965 offset += 16;
4966 length -= 16;
4968 if (length) {
4969 proto_tree_add_text(sub_tree, tvb, offset, length,
4970 "[Unknown] (%u bytes)", length);
4973 return;
4979 * 6.5.3.12. FMS Generic Download Segment (Confirmed Service Id = 32)
4980 * 6.5.3.12.1. Request Message Parameters
4982 static void
4983 dissect_ff_msg_fms_generic_download_segment_req(
4984 tvbuff_t *tvb, gint offset,
4985 guint32 length, packet_info *pinfo, proto_tree *tree)
4987 proto_tree *sub_tree;
4988 proto_item *ti;
4990 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Download Segment Request");
4992 if (!tree) {
4993 return;
4996 ti = proto_tree_add_text(tree, tvb, offset, length,
4997 "FMS Generic Download Segment Request");
4998 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_gen_download_seg_req);
5000 proto_tree_add_item(sub_tree,
5001 hf_ff_fms_gen_download_seg_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5002 offset += 4;
5003 length -= 4;
5005 proto_tree_add_item(sub_tree,
5006 hf_ff_fms_gen_download_seg_req_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
5007 offset += 1;
5008 length -= 1;
5010 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
5011 offset += 3;
5012 length -= 3;
5014 if (length) {
5015 proto_tree_add_text(sub_tree, tvb, offset, length,
5016 "Load Data (%u bytes)", length);
5019 return;
5025 * 6.5.3.12.2. Response Message Parameters
5027 static void
5028 dissect_ff_msg_fms_generic_download_segment_rsp(
5029 tvbuff_t *tvb, gint offset,
5030 guint32 length, packet_info *pinfo, proto_tree *tree)
5032 proto_tree *sub_tree;
5033 proto_item *ti;
5035 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Download Segment Response");
5037 if (!tree) {
5038 return;
5041 if (length) {
5042 ti = proto_tree_add_text(tree, tvb, offset, length,
5043 "FMS Generic Download Segment Response");
5044 sub_tree = proto_item_add_subtree(ti,
5045 ett_ff_fms_gen_download_seg_rsp);
5047 proto_tree_add_text(sub_tree, tvb, offset, length,
5048 "[Unknown] (%u bytes)", length);
5051 return;
5057 * 6.5.3.12.3. Error Message Parameters
5059 static void
5060 dissect_ff_msg_fms_generic_download_segment_err(
5061 tvbuff_t *tvb, gint offset,
5062 guint32 length, packet_info *pinfo, proto_tree *tree)
5064 proto_tree *sub_tree;
5065 proto_item *ti;
5066 guint8 ErrorClass;
5067 guint8 ErrorCode;
5068 const char *error_code;
5070 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Download Segment Error");
5072 if (!tree) {
5073 return;
5076 ti = proto_tree_add_text(tree, tvb, offset, length,
5077 "FMS Generic Download Segment Error");
5078 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_gen_download_seg_err);
5080 ErrorClass = tvb_get_guint8(tvb, offset);
5081 proto_tree_add_item(sub_tree,
5082 hf_ff_fms_gen_download_seg_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5083 offset += 1;
5084 length -= 1;
5086 ErrorCode = tvb_get_guint8(tvb, offset);
5087 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5088 proto_tree_add_uint_format_value(sub_tree,
5089 hf_ff_fms_gen_download_seg_err_err_code,
5090 tvb, offset, 1, ErrorCode,
5091 "%s (%u)", error_code, ErrorCode);
5092 offset += 1;
5093 length -= 1;
5095 proto_tree_add_item(sub_tree,
5096 hf_ff_fms_gen_download_seg_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5097 offset += 2;
5098 length -= 2;
5100 proto_tree_add_item(sub_tree,
5101 hf_ff_fms_gen_download_seg_err_additional_desc,
5102 tvb, offset, 16, ENC_ASCII|ENC_NA);
5103 offset += 16;
5104 length -= 16;
5106 if (length) {
5107 proto_tree_add_text(sub_tree, tvb, offset, length,
5108 "[Unknown] (%u bytes)", length);
5111 return;
5117 * 6.5.3.13. FMS Generic Terminate Download Sequence
5118 * (Confirmed Service Id = 33)
5119 * 6.5.3.13.1. Request Message Parameters
5121 static void
5122 dissect_ff_msg_fms_generic_terminate_download_sequence_req(
5123 tvbuff_t *tvb, gint offset,
5124 guint32 length, packet_info *pinfo, proto_tree *tree)
5126 proto_tree *sub_tree;
5127 proto_item *ti;
5129 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Terminate Download Sequence Request");
5131 if (!tree) {
5132 return;
5135 ti = proto_tree_add_text(tree, tvb, offset, length,
5136 "FMS Generic Terminate Download Sequence Request");
5137 sub_tree = proto_item_add_subtree(ti,
5138 ett_ff_fms_gen_terminate_download_seq_req);
5140 proto_tree_add_item(sub_tree,
5141 hf_ff_fms_gen_terminate_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5142 offset += 4;
5143 length -= 4;
5145 if (length) {
5146 proto_tree_add_text(sub_tree, tvb, offset, length,
5147 "[Unknown] (%u bytes)", length);
5150 return;
5156 * 6.5.3.13.2. Response Message Parameters
5158 static void
5159 dissect_ff_msg_fms_generic_terminate_download_sequence_rsp(
5160 tvbuff_t *tvb, gint offset,
5161 guint32 length, packet_info *pinfo, proto_tree *tree)
5163 proto_tree *sub_tree;
5164 proto_item *ti;
5166 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Terminate Download Sequence Response");
5168 if (!tree) {
5169 return;
5172 ti = proto_tree_add_text(tree, tvb, offset, length,
5173 "FMS Generic Terminate Download Sequence Response");
5174 sub_tree = proto_item_add_subtree(ti,
5175 ett_ff_fms_gen_terminate_download_seq_rsp);
5177 proto_tree_add_item(sub_tree,
5178 hf_ff_fms_gen_terminate_download_seq_rsp_final_result,
5179 tvb, offset, 1, ENC_BIG_ENDIAN);
5180 offset += 1;
5181 length -= 1;
5183 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
5184 offset += 3;
5185 length -= 3;
5187 if (length) {
5188 proto_tree_add_text(sub_tree, tvb, offset, length,
5189 "[Unknown] (%u bytes)", length);
5192 return;
5198 * 6.5.3.13.3. Error Message Parameters
5200 static void
5201 dissect_ff_msg_fms_generic_terminate_download_sequence_err(
5202 tvbuff_t *tvb, gint offset,
5203 guint32 length, packet_info *pinfo, proto_tree *tree)
5205 proto_tree *sub_tree;
5206 proto_item *ti;
5207 guint8 ErrorClass;
5208 guint8 ErrorCode;
5209 const char *error_code;
5211 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Terminate Download Sequence Error");
5213 if (!tree) {
5214 return;
5217 ti = proto_tree_add_text(tree, tvb, offset, length,
5218 "FMS Generic Terminate Download Sequence Error");
5219 sub_tree = proto_item_add_subtree(ti,
5220 ett_ff_fms_gen_terminate_download_seq_err);
5222 ErrorClass = tvb_get_guint8(tvb, offset);
5223 proto_tree_add_item(sub_tree,
5224 hf_ff_fms_gen_terminate_download_seq_err_err_class,
5225 tvb, offset, 1, ENC_BIG_ENDIAN);
5226 offset += 1;
5227 length -= 1;
5229 ErrorCode = tvb_get_guint8(tvb, offset);
5230 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5231 proto_tree_add_uint_format_value(sub_tree,
5232 hf_ff_fms_gen_terminate_download_seq_err_err_code,
5233 tvb, offset, 1, ErrorCode,
5234 "%s (%u)", error_code, ErrorCode);
5235 offset += 1;
5236 length -= 1;
5238 proto_tree_add_item(sub_tree,
5239 hf_ff_fms_gen_terminate_download_seq_err_additional_code,
5240 tvb, offset, 2, ENC_BIG_ENDIAN);
5241 offset += 2;
5242 length -= 2;
5244 proto_tree_add_item(sub_tree,
5245 hf_ff_fms_gen_terminate_download_seq_err_additional_desc,
5246 tvb, offset, 16, ENC_ASCII|ENC_NA);
5247 offset += 16;
5248 length -= 16;
5250 if (length) {
5251 proto_tree_add_text(sub_tree, tvb, offset, length,
5252 "[Unknown] (%u bytes)", length);
5255 return;
5261 * 6.5.3.14. FMS Initiate Download Sequence (Confirmed Service Id = 9)
5262 * 6.5.3.14.1. Request Message Parameters
5264 static void
5265 dissect_ff_msg_fms_init_download_sequence_req(
5266 tvbuff_t *tvb, gint offset,
5267 guint32 length, packet_info *pinfo, proto_tree *tree)
5269 proto_tree *sub_tree;
5270 proto_item *ti;
5272 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Download Sequence Request");
5274 if (!tree) {
5275 return;
5278 ti = proto_tree_add_text(tree, tvb, offset, length,
5279 "FMS Initiate Download Sequence Request");
5280 sub_tree = proto_item_add_subtree(ti,
5281 ett_ff_fms_init_download_seq_req);
5283 proto_tree_add_item(sub_tree,
5284 hf_ff_fms_init_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5285 offset += 4;
5286 length -= 4;
5288 if (length) {
5289 proto_tree_add_text(sub_tree, tvb, offset, length,
5290 "[Unknown] (%u bytes)", length);
5293 return;
5299 * 6.5.3.14.2. Response Message Parameters
5301 static void
5302 dissect_ff_msg_fms_init_download_sequence_rsp(
5303 tvbuff_t *tvb, gint offset,
5304 guint32 length, packet_info *pinfo, proto_tree *tree)
5306 proto_tree *sub_tree;
5307 proto_item *ti;
5309 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Download Sequence Response");
5311 if (!tree) {
5312 return;
5315 if (length) {
5316 ti = proto_tree_add_text(tree, tvb, offset, length,
5317 "FMS Initiate Download Sequence Response");
5318 sub_tree = proto_item_add_subtree(ti,
5319 ett_ff_fms_init_download_seq_rsp);
5321 proto_tree_add_text(sub_tree, tvb, offset, length,
5322 "[Unknown] (%u bytes)", length);
5325 return;
5331 * 6.5.3.14.3. Error Message Parameters
5333 static void
5334 dissect_ff_msg_fms_init_download_sequence_err(
5335 tvbuff_t *tvb, gint offset,
5336 guint32 length, packet_info *pinfo, proto_tree *tree)
5338 proto_tree *sub_tree;
5339 proto_item *ti;
5340 guint8 ErrorClass;
5341 guint8 ErrorCode;
5342 const char *error_code;
5344 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Download Sequence Error");
5346 if (!tree) {
5347 return;
5350 ti = proto_tree_add_text(tree, tvb, offset, length,
5351 "FMS Initiate Download Sequence Error");
5352 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_download_seq_err);
5354 ErrorClass = tvb_get_guint8(tvb, offset);
5355 proto_tree_add_item(sub_tree,
5356 hf_ff_fms_init_download_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5357 offset += 1;
5358 length -= 1;
5360 ErrorCode = tvb_get_guint8(tvb, offset);
5361 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5362 proto_tree_add_uint_format_value(sub_tree,
5363 hf_ff_fms_init_download_seq_err_err_code,
5364 tvb, offset, 1, ErrorCode,
5365 "%s (%u)", error_code, ErrorCode);
5366 offset += 1;
5367 length -= 1;
5369 proto_tree_add_item(sub_tree,
5370 hf_ff_fms_init_download_seq_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5371 offset += 2;
5372 length -= 2;
5374 proto_tree_add_item(sub_tree,
5375 hf_ff_fms_init_download_seq_err_additional_desc,
5376 tvb, offset, 16, ENC_ASCII|ENC_NA);
5377 offset += 16;
5378 length -= 16;
5380 if (length) {
5381 proto_tree_add_text(sub_tree, tvb, offset, length,
5382 "[Unknown] (%u bytes)", length);
5385 return;
5391 * 6.5.3.15. FMS Download Segment (Confirmed Service Id = 10)
5392 * 6.5.3.15.1. Request Message Parameters
5394 static void
5395 dissect_ff_msg_fms_download_segment_req(tvbuff_t *tvb, gint offset,
5396 guint32 length, packet_info *pinfo, proto_tree *tree)
5398 proto_tree *sub_tree;
5399 proto_item *ti;
5401 col_set_str(pinfo->cinfo, COL_INFO, "FMS Download Segment Request");
5403 if (!tree) {
5404 return;
5407 ti = proto_tree_add_text(tree, tvb, offset, length,
5408 "FMS Download Segment Request");
5409 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_download_seg_req);
5411 proto_tree_add_item(sub_tree,
5412 hf_ff_fms_download_seg_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5413 offset += 4;
5414 length -= 4;
5416 if (length) {
5417 proto_tree_add_text(sub_tree, tvb, offset, length,
5418 "[Unknown] (%u bytes)", length);
5421 return;
5427 * 6.5.3.15.2. Response Message Parameters
5429 static void
5430 dissect_ff_msg_fms_download_segment_rsp(tvbuff_t *tvb, gint offset,
5431 guint32 length, packet_info *pinfo, proto_tree *tree)
5433 proto_tree *sub_tree;
5434 proto_item *ti;
5436 col_set_str(pinfo->cinfo, COL_INFO, "FMS Download Segment Response");
5438 if (!tree) {
5439 return;
5442 ti = proto_tree_add_text(tree, tvb, offset, length,
5443 "FMS Download Segment Response");
5444 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_download_seg_rsp);
5446 proto_tree_add_item(sub_tree,
5447 hf_ff_fms_download_seg_rsp_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
5448 offset += 1;
5449 length -= 1;
5451 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
5452 offset += 3;
5453 length -= 3;
5455 if (length) {
5456 proto_tree_add_text(sub_tree, tvb, offset, length,
5457 "Load Data (%u bytes)", length);
5460 return;
5466 * 6.5.3.15.3. Error Message Parameters
5468 static void
5469 dissect_ff_msg_fms_download_segment_err(tvbuff_t *tvb, gint offset,
5470 guint32 length, packet_info *pinfo, proto_tree *tree)
5472 proto_tree *sub_tree;
5473 proto_item *ti;
5474 guint8 ErrorClass;
5475 guint8 ErrorCode;
5476 const char *error_code;
5478 col_set_str(pinfo->cinfo, COL_INFO, "FMS Download Segment Error");
5480 if (!tree) {
5481 return;
5484 ti = proto_tree_add_text(tree, tvb, offset, length,
5485 "FMS Download Segment Error");
5486 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_download_seg_err);
5488 ErrorClass = tvb_get_guint8(tvb, offset);
5489 proto_tree_add_item(sub_tree,
5490 hf_ff_fms_download_seg_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5491 offset += 1;
5492 length -= 1;
5494 ErrorCode = tvb_get_guint8(tvb, offset);
5495 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5496 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_download_seg_err_err_code,
5497 tvb, offset, 1, ErrorCode,
5498 "%s (%u)", error_code, ErrorCode);
5499 offset += 1;
5500 length -= 1;
5502 proto_tree_add_item(sub_tree,
5503 hf_ff_fms_download_seg_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5504 offset += 2;
5505 length -= 2;
5507 proto_tree_add_item(sub_tree,
5508 hf_ff_fms_download_seg_err_additional_desc,
5509 tvb, offset, 16, ENC_ASCII|ENC_NA);
5510 offset += 16;
5511 length -= 16;
5513 if (length) {
5514 proto_tree_add_text(sub_tree, tvb, offset, length,
5515 "[Unknown] (%u bytes)", length);
5518 return;
5524 * 6.5.3.16. FMS Terminate Download Sequence (Confirmed Service Id = 11)
5525 * 6.5.3.16.1. Request Message Parameters
5527 static void
5528 dissect_ff_msg_fms_terminate_download_sequence_req(
5529 tvbuff_t *tvb, gint offset,
5530 guint32 length, packet_info *pinfo, proto_tree *tree)
5532 proto_tree *sub_tree;
5533 proto_item *ti;
5535 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Download Sequence Request");
5537 if (!tree) {
5538 return;
5541 ti = proto_tree_add_text(tree, tvb, offset, length,
5542 "FMS Terminate Download Sequence Request");
5543 sub_tree = proto_item_add_subtree(ti,
5544 ett_ff_fms_terminate_download_seq_req);
5546 proto_tree_add_item(sub_tree,
5547 hf_ff_fms_terminate_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5548 offset += 4;
5549 length -= 4;
5551 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
5552 offset += 3;
5553 length -= 3;
5555 proto_tree_add_item(sub_tree,
5556 hf_ff_fms_terminate_download_seq_req_final_result,
5557 tvb, offset, 1, ENC_BIG_ENDIAN);
5558 offset += 1;
5559 length -= 1;
5561 if (length) {
5562 proto_tree_add_text(sub_tree, tvb, offset, length,
5563 "[Unknown] (%u bytes)", length);
5566 return;
5572 * 6.5.3.16.2. Response Message Parameters
5574 static void
5575 dissect_ff_msg_fms_terminate_download_sequence_rsp(
5576 tvbuff_t *tvb, gint offset,
5577 guint32 length, packet_info *pinfo, proto_tree *tree)
5579 proto_tree *sub_tree;
5580 proto_item *ti;
5582 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Download Sequence Response");
5584 if (!tree) {
5585 return;
5588 if (length) {
5589 ti = proto_tree_add_text(tree, tvb, offset, length,
5590 "FMS Terminate Download Sequence Response");
5591 sub_tree = proto_item_add_subtree(ti,
5592 ett_ff_fms_terminate_download_seq_rsp);
5594 proto_tree_add_text(sub_tree, tvb, offset, length,
5595 "[Unknown] (%u bytes)", length);
5598 return;
5604 * 6.5.3.16.3. Error Message Parameters
5606 static void
5607 dissect_ff_msg_fms_terminate_download_sequence_err(
5608 tvbuff_t *tvb, gint offset,
5609 guint32 length, packet_info *pinfo, proto_tree *tree)
5611 proto_tree *sub_tree;
5612 proto_item *ti;
5613 guint8 ErrorClass;
5614 guint8 ErrorCode;
5615 const char *error_code;
5617 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Download Sequence Error");
5619 if (!tree) {
5620 return;
5623 ti = proto_tree_add_text(tree, tvb, offset, length,
5624 "FMS Terminate Download Sequence Error");
5625 sub_tree = proto_item_add_subtree(ti,
5626 ett_ff_fms_terminate_download_seq_err);
5628 ErrorClass = tvb_get_guint8(tvb, offset);
5629 proto_tree_add_item(sub_tree,
5630 hf_ff_fms_terminate_download_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5631 offset += 1;
5632 length -= 1;
5634 ErrorCode = tvb_get_guint8(tvb, offset);
5635 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5636 proto_tree_add_uint_format_value(sub_tree,
5637 hf_ff_fms_terminate_download_seq_err_err_code,
5638 tvb, offset, 1, ErrorCode,
5639 "%s (%u)", error_code, ErrorCode);
5640 offset += 1;
5641 length -= 1;
5643 proto_tree_add_item(sub_tree,
5644 hf_ff_fms_terminate_download_seq_err_additional_code,
5645 tvb, offset, 2, ENC_BIG_ENDIAN);
5646 offset += 2;
5647 length -= 2;
5649 proto_tree_add_item(sub_tree,
5650 hf_ff_fms_terminate_download_seq_err_additional_desc,
5651 tvb, offset, 16, ENC_ASCII|ENC_NA);
5652 offset += 16;
5653 length -= 16;
5655 if (length) {
5656 proto_tree_add_text(sub_tree, tvb, offset, length,
5657 "[Unknown] (%u bytes)", length);
5660 return;
5666 * 6.5.3.17. FMS Initiate Upload Sequence (Confirmed Service Id = 12)
5667 * 6.5.3.17.1. Request Message Parameters
5669 static void
5670 dissect_ff_msg_fms_init_upload_seq_req(
5671 tvbuff_t *tvb, gint offset,
5672 guint32 length, packet_info *pinfo, proto_tree *tree)
5674 proto_tree *sub_tree;
5675 proto_item *ti;
5677 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Upload Sequence Request");
5679 if (!tree) {
5680 return;
5683 ti = proto_tree_add_text(tree, tvb, offset, length,
5684 "FMS Initiate Upload Sequence Request");
5685 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_upload_seq_req);
5687 proto_tree_add_item(sub_tree,
5688 hf_ff_fms_init_upload_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5689 offset += 4;
5690 length -= 4;
5692 if (length) {
5693 proto_tree_add_text(sub_tree, tvb, offset, length,
5694 "[Unknown] (%u bytes)", length);
5697 return;
5703 * 6.5.3.17.2. Response Message Parameters
5705 static void
5706 dissect_ff_msg_fms_init_upload_seq_rsp(
5707 tvbuff_t *tvb, gint offset,
5708 guint32 length, packet_info *pinfo, proto_tree *tree)
5710 proto_tree *sub_tree;
5711 proto_item *ti;
5713 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Upload Sequence Response");
5715 if (!tree) {
5716 return;
5719 if (length) {
5720 ti = proto_tree_add_text(tree, tvb, offset, length,
5721 "FMS Initiate Upload Sequence Response");
5722 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_upload_seq_rsp);
5724 proto_tree_add_text(sub_tree, tvb, offset, length,
5725 "[Unknown] (%u bytes)", length);
5728 return;
5734 * 6.5.3.17.3. Error Message Parameters
5736 static void
5737 dissect_ff_msg_fms_init_upload_seq_err(
5738 tvbuff_t *tvb, gint offset,
5739 guint32 length, packet_info *pinfo, proto_tree *tree)
5741 proto_tree *sub_tree;
5742 proto_item *ti;
5743 guint8 ErrorClass;
5744 guint8 ErrorCode;
5745 const char *error_code;
5747 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Upload Sequence Error");
5749 if (!tree) {
5750 return;
5753 ti = proto_tree_add_text(tree, tvb, offset, length,
5754 "FMS Initiate Upload Sequence Error");
5755 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_init_upload_seq_err);
5757 ErrorClass = tvb_get_guint8(tvb, offset);
5758 proto_tree_add_item(sub_tree,
5759 hf_ff_fms_init_upload_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5760 offset += 1;
5761 length -= 1;
5763 ErrorCode = tvb_get_guint8(tvb, offset);
5764 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5765 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_init_upload_seq_err_err_code,
5766 tvb, offset, 1, ErrorCode,
5767 "%s (%u)", error_code, ErrorCode);
5768 offset += 1;
5769 length -= 1;
5771 proto_tree_add_item(sub_tree,
5772 hf_ff_fms_init_upload_seq_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5773 offset += 2;
5774 length -= 2;
5776 proto_tree_add_item(sub_tree, hf_ff_fms_init_upload_seq_err_additional_desc,
5777 tvb, offset, 16, ENC_ASCII|ENC_NA);
5778 offset += 16;
5779 length -= 16;
5781 if (length) {
5782 proto_tree_add_text(sub_tree, tvb, offset, length,
5783 "[Unknown] (%u bytes)", length);
5786 return;
5792 * 6.5.3.18. FMS Upload Segment (Confirmed Service Id = 13)
5793 * 6.5.3.18.1. Request Message Parameters
5795 static void
5796 dissect_ff_msg_fms_upload_segment_req(tvbuff_t *tvb, gint offset,
5797 guint32 length, packet_info *pinfo, proto_tree *tree)
5799 proto_tree *sub_tree;
5800 proto_item *ti;
5802 col_set_str(pinfo->cinfo, COL_INFO, "FMS Upload Segment Request");
5804 if (!tree) {
5805 return;
5808 ti = proto_tree_add_text(tree, tvb, offset, length,
5809 "FMS Upload Segment Request");
5810 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_upload_seg_req);
5812 proto_tree_add_item(sub_tree,
5813 hf_ff_fms_upload_seg_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5814 offset += 4;
5815 length -= 4;
5817 if (length) {
5818 proto_tree_add_text(sub_tree, tvb, offset, length,
5819 "[Unknown] (%u bytes)", length);
5822 return;
5828 * 6.5.3.18.2. Response Message Parameters
5830 static void
5831 dissect_ff_msg_fms_upload_segment_rsp(tvbuff_t *tvb, gint offset,
5832 guint32 length, packet_info *pinfo, proto_tree *tree)
5834 proto_tree *sub_tree;
5835 proto_item *ti;
5837 col_set_str(pinfo->cinfo, COL_INFO, "FMS Upload Segment Response");
5839 if (!tree) {
5840 return;
5843 ti = proto_tree_add_text(tree, tvb, offset, length,
5844 "FMS Upload Segment Response");
5845 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_upload_seg_rsp);
5847 proto_tree_add_item(sub_tree,
5848 hf_ff_fms_upload_seg_rsp_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
5849 offset += 1;
5850 length -= 1;
5852 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
5853 offset += 3;
5854 length -= 3;
5856 if (length) {
5857 proto_tree_add_text(sub_tree, tvb, offset, length,
5858 "Final Result (%u bytes)", length);
5861 return;
5867 * 6.5.3.18.3. Error Message Parameters
5869 static void
5870 dissect_ff_msg_fms_upload_segment_err(tvbuff_t *tvb, gint offset,
5871 guint32 length, packet_info *pinfo, proto_tree *tree)
5873 proto_tree *sub_tree;
5874 proto_item *ti;
5875 guint8 ErrorClass;
5876 guint8 ErrorCode;
5877 const char *error_code;
5879 col_set_str(pinfo->cinfo, COL_INFO, "FMS Upload Segment Error");
5881 if (!tree) {
5882 return;
5885 ti = proto_tree_add_text(tree, tvb, offset, length,
5886 "FMS Upload Segment Error");
5887 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_upload_seg_err);
5889 ErrorClass = tvb_get_guint8(tvb, offset);
5890 proto_tree_add_item(sub_tree,
5891 hf_ff_fms_upload_seg_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5892 offset += 1;
5893 length -= 1;
5895 ErrorCode = tvb_get_guint8(tvb, offset);
5896 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5897 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_upload_seg_err_err_code,
5898 tvb, offset, 1, ErrorCode,
5899 "%s (%u)", error_code, ErrorCode);
5900 offset += 1;
5901 length -= 1;
5903 proto_tree_add_item(sub_tree,
5904 hf_ff_fms_upload_seg_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5905 offset += 2;
5906 length -= 2;
5908 proto_tree_add_item(sub_tree,
5909 hf_ff_fms_upload_seg_err_additional_desc,
5910 tvb, offset, 16, ENC_ASCII|ENC_NA);
5911 offset += 16;
5912 length -= 16;
5914 if (length) {
5915 proto_tree_add_text(sub_tree, tvb, offset, length,
5916 "[Unknown] (%u bytes)", length);
5919 return;
5925 * 6.5.3.19. FMS Terminate Upload Sequence (Confirmed Service Id = 14)
5926 * 6.5.3.19.1. Request Message Parameters
5928 static void
5929 dissect_ff_msg_fms_terminate_upload_seq_req(
5930 tvbuff_t *tvb, gint offset,
5931 guint32 length, packet_info *pinfo, proto_tree *tree)
5933 proto_tree *sub_tree;
5934 proto_item *ti;
5936 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Upload Sequence Request");
5938 if (!tree) {
5939 return;
5942 ti = proto_tree_add_text(tree, tvb, offset, length,
5943 "FMS Terminate Upload Sequence Request");
5944 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_terminate_upload_seq_req);
5946 proto_tree_add_item(sub_tree,
5947 hf_ff_fms_terminate_upload_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5948 offset += 4;
5949 length -= 4;
5951 if (length) {
5952 proto_tree_add_text(sub_tree, tvb, offset, length,
5953 "[Unknown] (%u bytes)", length);
5956 return;
5962 * 6.5.3.19.2. Response Message Parameters
5964 static void
5965 dissect_ff_msg_fms_terminate_upload_seq_rsp(
5966 tvbuff_t *tvb, gint offset,
5967 guint32 length, packet_info *pinfo, proto_tree *tree)
5969 proto_tree *sub_tree;
5970 proto_item *ti;
5972 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Upload Sequence Response");
5974 if (!tree) {
5975 return;
5978 if (length) {
5979 ti = proto_tree_add_text(tree, tvb, offset, length,
5980 "FMS Terminate Upload Sequence Response");
5981 sub_tree = proto_item_add_subtree(ti,
5982 ett_ff_fms_terminate_upload_seq_rsp);
5984 proto_tree_add_text(sub_tree, tvb, offset, length,
5985 "[Unknown] (%u bytes)", length);
5988 return;
5994 * 6.5.3.19.3. Error Message Parameters
5996 static void
5997 dissect_ff_msg_fms_terminate_upload_seq_err(
5998 tvbuff_t *tvb, gint offset,
5999 guint32 length, packet_info *pinfo, proto_tree *tree)
6001 proto_tree *sub_tree;
6002 proto_item *ti;
6003 guint8 ErrorClass;
6004 guint8 ErrorCode;
6005 const char *error_code;
6007 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Upload Sequence Error");
6009 if (!tree) {
6010 return;
6013 ti = proto_tree_add_text(tree, tvb, offset, length,
6014 "FMS Terminate Upload Sequence Error");
6015 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_terminate_upload_seq_err);
6017 ErrorClass = tvb_get_guint8(tvb, offset);
6018 proto_tree_add_item(sub_tree,
6019 hf_ff_fms_terminate_upload_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6020 offset += 1;
6021 length -= 1;
6023 ErrorCode = tvb_get_guint8(tvb, offset);
6024 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6025 proto_tree_add_uint_format_value(sub_tree,
6026 hf_ff_fms_terminate_upload_seq_err_err_code,
6027 tvb, offset, 1, ErrorCode,
6028 "%s (%u)", error_code, ErrorCode);
6029 offset += 1;
6030 length -= 1;
6032 proto_tree_add_item(sub_tree,
6033 hf_ff_fms_terminate_upload_seq_err_additional_code,
6034 tvb, offset, 2, ENC_BIG_ENDIAN);
6035 offset += 2;
6036 length -= 2;
6038 proto_tree_add_item(sub_tree,
6039 hf_ff_fms_terminate_upload_seq_err_additional_desc,
6040 tvb, offset, 16, ENC_ASCII|ENC_NA);
6041 offset += 16;
6042 length -= 16;
6044 if (length) {
6045 proto_tree_add_text(sub_tree, tvb, offset, length,
6046 "[Unknown] (%u bytes)", length);
6049 return;
6055 * 6.5.3.20. FMS Request Domain Download (Confirmed Service Id = 15)
6056 * 6.5.3.20.1. Request Message Parameters
6058 static void
6059 dissect_ff_msg_fms_req_dom_download_req(
6060 tvbuff_t *tvb, gint offset,
6061 guint32 length, packet_info *pinfo, proto_tree *tree)
6063 proto_tree *sub_tree;
6064 proto_item *ti;
6066 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Download Request");
6068 if (!tree) {
6069 return;
6072 ti = proto_tree_add_text(tree, tvb, offset, length,
6073 "FMS Request Domain Download Request");
6074 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_req_dom_download_req);
6076 proto_tree_add_item(sub_tree,
6077 hf_ff_fms_req_dom_download_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6078 offset += 4;
6079 length -= 4;
6081 if (length) {
6082 proto_tree_add_item(sub_tree,
6083 hf_ff_fms_req_dom_download_req_additional_info,
6084 tvb, offset, length, ENC_ASCII|ENC_NA);
6087 return;
6093 * 6.5.3.20.2. Response Message Parameters
6095 static void
6096 dissect_ff_msg_fms_req_dom_download_rsp(
6097 tvbuff_t *tvb, gint offset,
6098 guint32 length, packet_info *pinfo, proto_tree *tree)
6100 proto_tree *sub_tree;
6101 proto_item *ti;
6103 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Download Response");
6105 if (!tree) {
6106 return;
6109 if (length) {
6110 ti = proto_tree_add_text(tree, tvb, offset, length,
6111 "FMS Request Domain Download Response");
6112 sub_tree = proto_item_add_subtree(ti,
6113 ett_ff_fms_req_dom_download_rsp);
6115 proto_tree_add_text(sub_tree, tvb, offset, length,
6116 "[Unknown] (%u bytes)", length);
6119 return;
6125 * 6.5.3.20.3. Error Message Parameters
6127 static void
6128 dissect_ff_msg_fms_req_dom_download_err(
6129 tvbuff_t *tvb, gint offset,
6130 guint32 length, packet_info *pinfo, proto_tree *tree)
6132 proto_tree *sub_tree;
6133 proto_item *ti;
6134 guint8 ErrorClass;
6135 guint8 ErrorCode;
6136 const char *error_code;
6138 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Download Error");
6140 if (!tree) {
6141 return;
6144 ti = proto_tree_add_text(tree, tvb, offset, length,
6145 "FMS Request Domain Download Error");
6146 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_req_dom_download_err);
6148 ErrorClass = tvb_get_guint8(tvb, offset);
6149 proto_tree_add_item(sub_tree,
6150 hf_ff_fms_req_dom_download_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6151 offset += 1;
6152 length -= 1;
6154 ErrorCode = tvb_get_guint8(tvb, offset);
6155 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6156 proto_tree_add_uint_format_value(sub_tree,
6157 hf_ff_fms_req_dom_download_err_err_code,
6158 tvb, offset, 1, ErrorCode,
6159 "%s (%u)", error_code, ErrorCode);
6160 offset += 1;
6161 length -= 1;
6163 proto_tree_add_item(sub_tree,
6164 hf_ff_fms_req_dom_download_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6165 offset += 2;
6166 length -= 2;
6168 proto_tree_add_item(sub_tree,
6169 hf_ff_fms_req_dom_download_err_additional_desc,
6170 tvb, offset, 16, ENC_ASCII|ENC_NA);
6171 offset += 16;
6172 length -= 16;
6174 if (length) {
6175 proto_tree_add_text(sub_tree, tvb, offset, length,
6176 "[Unknown] (%u bytes)", length);
6179 return;
6185 * 6.5.3.21. FMS Request Domain Upload (Confirmed Service Id = 16)
6186 * 6.5.3.21.1. Request Message Parameters
6188 static void
6189 dissect_ff_msg_fms_req_dom_upload_req(
6190 tvbuff_t *tvb, gint offset,
6191 guint32 length, packet_info *pinfo, proto_tree *tree)
6193 proto_tree *sub_tree;
6194 proto_item *ti;
6196 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Upload Request");
6198 if (!tree) {
6199 return;
6202 ti = proto_tree_add_text(tree, tvb, offset, length,
6203 "FMS Request Domain Upload Request");
6204 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_req_dom_upload_req);
6206 proto_tree_add_item(sub_tree,
6207 hf_ff_fms_req_dom_upload_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6208 offset += 4;
6209 length -= 4;
6211 if (length) {
6212 proto_tree_add_item(sub_tree,
6213 hf_ff_fms_req_dom_upload_req_additional_info,
6214 tvb, offset, length, ENC_ASCII|ENC_NA);
6217 return;
6223 * 6.5.3.21.2. Response Message Parameters
6225 static void
6226 dissect_ff_msg_fms_req_dom_upload_rsp(
6227 tvbuff_t *tvb, gint offset,
6228 guint32 length, packet_info *pinfo, proto_tree *tree)
6230 proto_tree *sub_tree;
6231 proto_item *ti;
6233 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Upload Response");
6235 if (!tree) {
6236 return;
6239 if (length) {
6240 ti = proto_tree_add_text(tree, tvb, offset, length,
6241 "FMS Request Domain Upload Response");
6242 sub_tree = proto_item_add_subtree(ti,
6243 ett_ff_fms_req_dom_upload_rsp);
6245 proto_tree_add_text(sub_tree, tvb, offset, length,
6246 "[Unknown] (%u bytes)", length);
6249 return;
6255 * 6.5.3.21.3. Error Message Parameters
6257 static void
6258 dissect_ff_msg_fms_req_dom_upload_err(
6259 tvbuff_t *tvb, gint offset,
6260 guint32 length, packet_info *pinfo, proto_tree *tree)
6262 proto_tree *sub_tree;
6263 proto_item *ti;
6264 guint8 ErrorClass;
6265 guint8 ErrorCode;
6266 const char *error_code;
6268 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Upload Error");
6270 if (!tree) {
6271 return;
6274 ti = proto_tree_add_text(tree, tvb, offset, length,
6275 "FMS Request Domain Upload Error");
6276 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_req_dom_upload_err);
6278 ErrorClass = tvb_get_guint8(tvb, offset);
6279 proto_tree_add_item(sub_tree,
6280 hf_ff_fms_req_dom_upload_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6281 offset += 1;
6282 length -= 1;
6284 ErrorCode = tvb_get_guint8(tvb, offset);
6285 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6286 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_req_dom_upload_err_err_code,
6287 tvb, offset, 1, ErrorCode,
6288 "%s (%u)", error_code, ErrorCode);
6289 offset += 1;
6290 length -= 1;
6292 proto_tree_add_item(sub_tree,
6293 hf_ff_fms_req_dom_upload_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6294 offset += 2;
6295 length -= 2;
6297 proto_tree_add_item(sub_tree,
6298 hf_ff_fms_req_dom_upload_err_additional_desc,
6299 tvb, offset, 16, ENC_ASCII|ENC_NA);
6300 offset += 16;
6301 length -= 16;
6303 if (length) {
6304 proto_tree_add_text(sub_tree, tvb, offset, length,
6305 "[Unknown] (%u bytes)", length);
6308 return;
6314 * 6.5.3.22. FMS Create Program Invocation (Confirmed Service Id = 17)
6315 * 6.5.3.22.1. Request Message Parameters
6317 static void
6318 dissect_ff_msg_fms_create_pi_req_dom_idxes(tvbuff_t *tvb,
6319 gint offset, proto_tree *tree, guint16 value)
6321 proto_tree *sub_tree;
6322 proto_item *ti;
6323 guint d;
6325 if (!tree) {
6326 return;
6329 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
6330 "List Of Domain Indexes (%u bytes)", 4 * value);
6331 sub_tree = proto_item_add_subtree(ti,
6332 ett_ff_fms_create_pi_req_list_of_dom_idxes);
6334 for (d = 0; d < value; d++) {
6335 proto_tree_add_item(sub_tree,
6336 hf_ff_fms_create_pi_req_dom_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6338 offset += 4;
6341 return;
6346 static void
6347 dissect_ff_msg_fms_create_pi_req(tvbuff_t *tvb, gint offset,
6348 guint32 length, packet_info *pinfo, proto_tree *tree)
6350 proto_tree *sub_tree;
6351 proto_item *ti;
6352 guint16 NumOfDomIdxes;
6354 col_set_str(pinfo->cinfo, COL_INFO, "FMS Create Program Invocation Request");
6356 if (!tree) {
6357 return;
6360 ti = proto_tree_add_text(tree, tvb, offset, length,
6361 "FMS Create Program Invocation Request");
6362 sub_tree = proto_item_add_subtree(ti,
6363 ett_ff_fms_create_pi_req);
6365 proto_tree_add_item(sub_tree,
6366 hf_ff_fms_create_pi_req_reusable, tvb, offset, 1, ENC_BIG_ENDIAN);
6367 offset += 1;
6368 length -= 1;
6370 proto_tree_add_item(sub_tree,
6371 hf_ff_fms_create_pi_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
6372 offset += 1;
6373 length -= 1;
6375 NumOfDomIdxes = tvb_get_ntohs(tvb, offset);
6376 proto_tree_add_item(sub_tree,
6377 hf_ff_fms_create_pi_req_num_of_dom_idxes, tvb, offset, 2, ENC_BIG_ENDIAN);
6378 offset += 2;
6379 length -= 2;
6381 if (NumOfDomIdxes) {
6382 dissect_ff_msg_fms_create_pi_req_dom_idxes(tvb,
6383 offset, sub_tree, NumOfDomIdxes);
6385 offset += 4 * NumOfDomIdxes;
6386 length -= 4 * NumOfDomIdxes;
6389 if (length) {
6390 proto_tree_add_text(sub_tree, tvb, offset, length,
6391 "[Unknown] (%u bytes)", length);
6394 return;
6400 * 6.5.3.22.2. Response Message Parameters
6402 static void
6403 dissect_ff_msg_fms_create_pi_rsp(tvbuff_t *tvb, gint offset,
6404 guint32 length, packet_info *pinfo, proto_tree *tree)
6406 proto_tree *sub_tree;
6407 proto_item *ti;
6409 col_set_str(pinfo->cinfo, COL_INFO, "FMS Create Program Invocation Response");
6411 if (!tree) {
6412 return;
6415 ti = proto_tree_add_text(tree, tvb, offset, length,
6416 "FMS Create Program Invocation Response");
6417 sub_tree = proto_item_add_subtree(ti,
6418 ett_ff_fms_create_pi_rsp);
6420 proto_tree_add_item(sub_tree,
6421 hf_ff_fms_create_pi_rsp_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6422 offset += 4;
6423 length -= 4;
6425 if (length) {
6426 proto_tree_add_text(sub_tree, tvb, offset, length,
6427 "[Unknown] (%u bytes)", length);
6430 return;
6436 * 6.5.3.22.3. Error Message Parameters
6438 static void
6439 dissect_ff_msg_fms_create_pi_err(tvbuff_t *tvb, gint offset,
6440 guint32 length, packet_info *pinfo, proto_tree *tree)
6442 proto_tree *sub_tree;
6443 proto_item *ti;
6444 guint8 ErrorClass;
6445 guint8 ErrorCode;
6446 const char *error_code;
6448 col_set_str(pinfo->cinfo, COL_INFO, "FMS Create Program Invocation Error");
6450 if (!tree) {
6451 return;
6454 ti = proto_tree_add_text(tree, tvb, offset, length,
6455 "FMS Create Program Invocation Error");
6456 sub_tree = proto_item_add_subtree(ti,
6457 ett_ff_fms_create_pi_err);
6459 ErrorClass = tvb_get_guint8(tvb, offset);
6460 proto_tree_add_item(sub_tree,
6461 hf_ff_fms_create_pi_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6462 offset += 1;
6463 length -= 1;
6465 ErrorCode = tvb_get_guint8(tvb, offset);
6466 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6467 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_create_pi_err_err_code,
6468 tvb, offset, 1, ErrorCode,
6469 "%s (%u)", error_code, ErrorCode);
6470 offset += 1;
6471 length -= 1;
6473 proto_tree_add_item(sub_tree,
6474 hf_ff_fms_create_pi_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6475 offset += 2;
6476 length -= 2;
6478 proto_tree_add_item(sub_tree,
6479 hf_ff_fms_create_pi_err_additional_desc,
6480 tvb, offset, 16, ENC_ASCII|ENC_NA);
6481 offset += 16;
6482 length -= 16;
6484 if (length) {
6485 proto_tree_add_text(sub_tree, tvb, offset, length,
6486 "[Unknown] (%u bytes)", length);
6489 return;
6495 * 6.5.3.23. FMS Delete Program Invocation (Confirmed Service Id = 18)
6496 * 6.5.3.23.1. Request Message Parameters
6498 static void
6499 dissect_ff_msg_fms_del_pi_req(tvbuff_t *tvb, gint offset,
6500 guint32 length, packet_info *pinfo, proto_tree *tree)
6502 proto_tree *sub_tree;
6503 proto_item *ti;
6505 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Program Invocation Request");
6507 if (!tree) {
6508 return;
6511 ti = proto_tree_add_text(tree, tvb, offset, length,
6512 "FMS Delete Program Invocation Request");
6513 sub_tree = proto_item_add_subtree(ti,
6514 ett_ff_fms_del_pi_req);
6516 proto_tree_add_item(sub_tree,
6517 hf_ff_fms_del_pi_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6518 offset += 4;
6519 length -= 4;
6521 if (length) {
6522 proto_tree_add_text(sub_tree, tvb, offset, length,
6523 "[Unknown] (%u bytes)", length);
6526 return;
6532 * 6.5.3.23.2. Response Message Parameters
6534 static void
6535 dissect_ff_msg_fms_del_pi_rsp(tvbuff_t *tvb, gint offset,
6536 guint32 length, packet_info *pinfo, proto_tree *tree)
6538 proto_tree *sub_tree;
6539 proto_item *ti;
6541 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Program Invocation Response");
6543 if (!tree) {
6544 return;
6547 if (length) {
6548 ti = proto_tree_add_text(tree, tvb, offset, length,
6549 "FMS Delete Program Invocation Response");
6550 sub_tree = proto_item_add_subtree(ti,
6551 ett_ff_fms_del_pi_rsp);
6553 proto_tree_add_text(sub_tree, tvb, offset, length,
6554 "[Unknown] (%u bytes)", length);
6557 return;
6563 * 6.5.3.23.3. Error Message Parameters
6565 static void
6566 dissect_ff_msg_fms_del_pi_err(tvbuff_t *tvb, gint offset,
6567 guint32 length, packet_info *pinfo, proto_tree *tree)
6569 proto_tree *sub_tree;
6570 proto_item *ti;
6571 guint8 ErrorClass;
6572 guint8 ErrorCode;
6573 const char *error_code;
6575 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Program Invocation Error");
6577 if (!tree) {
6578 return;
6581 ti = proto_tree_add_text(tree, tvb, offset, length,
6582 "FMS Delete Program Invocation Error");
6583 sub_tree = proto_item_add_subtree(ti,
6584 ett_ff_fms_del_pi_err);
6586 ErrorClass = tvb_get_guint8(tvb, offset);
6587 proto_tree_add_item(sub_tree,
6588 hf_ff_fms_del_pi_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6589 offset += 1;
6590 length -= 1;
6592 ErrorCode = tvb_get_guint8(tvb, offset);
6593 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6594 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_del_pi_err_err_code,
6595 tvb, offset, 1, ErrorCode,
6596 "%s (%u)", error_code, ErrorCode);
6597 offset += 1;
6598 length -= 1;
6600 proto_tree_add_item(sub_tree,
6601 hf_ff_fms_del_pi_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6602 offset += 2;
6603 length -= 2;
6605 proto_tree_add_item(sub_tree,
6606 hf_ff_fms_del_pi_err_additional_desc,
6607 tvb, offset, 16, ENC_ASCII|ENC_NA);
6608 offset += 16;
6609 length -= 16;
6611 if (length) {
6612 proto_tree_add_text(sub_tree, tvb, offset, length,
6613 "[Unknown] (%u bytes)", length);
6616 return;
6622 * 6.5.3.24. FMS Start (Confirmed Service Id = 19)
6623 * 6.5.3.24.1. Request Message Parameters
6625 static void
6626 dissect_ff_msg_fms_start_pi_req(tvbuff_t *tvb, gint offset,
6627 guint32 length, packet_info *pinfo, proto_tree *tree)
6629 proto_tree *sub_tree;
6630 proto_item *ti;
6632 col_set_str(pinfo->cinfo, COL_INFO, "FMS Start Request");
6634 if (!tree) {
6635 return;
6638 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Start Request");
6639 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_start_req);
6641 proto_tree_add_item(sub_tree,
6642 hf_ff_fms_start_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6643 offset += 4;
6644 length -= 4;
6646 if (length) {
6647 proto_tree_add_text(sub_tree, tvb, offset, length,
6648 "Execution Argument (%u bytes)", length);
6651 return;
6657 * 6.5.3.24.2. Response Message Parameters
6659 static void
6660 dissect_ff_msg_fms_start_pi_rsp(tvbuff_t *tvb, gint offset,
6661 guint32 length, packet_info *pinfo, proto_tree *tree)
6663 proto_tree *sub_tree;
6664 proto_item *ti;
6666 col_set_str(pinfo->cinfo, COL_INFO, "FMS Start Response");
6668 if (!tree) {
6669 return;
6672 if (length) {
6673 ti = proto_tree_add_text(tree, tvb, offset, length,
6674 "FMS Start Response");
6675 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_start_rsp);
6677 proto_tree_add_text(sub_tree, tvb, offset, length,
6678 "[Unknown] (%u bytes)", length);
6681 return;
6687 * 6.5.3.24.3. PI Error Message Parameters
6689 static void
6690 dissect_ff_msg_fms_start_pi_err(tvbuff_t *tvb, gint offset,
6691 guint32 length, packet_info *pinfo, proto_tree *tree)
6693 proto_tree *sub_tree;
6694 proto_item *ti;
6695 guint8 ErrorClass;
6696 guint8 ErrorCode;
6697 const char *error_code;
6699 col_set_str(pinfo->cinfo, COL_INFO, "FMS Start Error");
6701 if (!tree) {
6702 return;
6705 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Start Error");
6706 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_start_err);
6708 proto_tree_add_item(sub_tree,
6709 hf_ff_fms_start_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
6710 offset += 1;
6711 length -= 1;
6713 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
6714 offset += 3;
6715 length -= 3;
6717 ErrorClass = tvb_get_guint8(tvb, offset);
6718 proto_tree_add_item(sub_tree,
6719 hf_ff_fms_start_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6720 offset += 1;
6721 length -= 1;
6723 ErrorCode = tvb_get_guint8(tvb, offset);
6724 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6725 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_start_err_err_code,
6726 tvb, offset, 1, ErrorCode,
6727 "%s (%u)", error_code, ErrorCode);
6728 offset += 1;
6729 length -= 1;
6731 proto_tree_add_item(sub_tree,
6732 hf_ff_fms_start_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6733 offset += 2;
6734 length -= 2;
6736 proto_tree_add_item(sub_tree, hf_ff_fms_start_err_additional_desc,
6737 tvb, offset, 16, ENC_ASCII|ENC_NA);
6738 offset += 16;
6739 length -= 16;
6741 if (length) {
6742 proto_tree_add_text(sub_tree, tvb, offset, length,
6743 "[Unknown] (%u bytes)", length);
6746 return;
6752 * 6.5.3.25. FMS Stop (Confirmed Service Id = 20)
6753 * 6.5.3.25.1. Request Message Parameters
6755 static void
6756 dissect_ff_msg_fms_stop_pi_req(tvbuff_t *tvb, gint offset,
6757 guint32 length, packet_info *pinfo, proto_tree *tree)
6759 proto_tree *sub_tree;
6760 proto_item *ti;
6762 col_set_str(pinfo->cinfo, COL_INFO, "FMS Stop Request");
6764 if (!tree) {
6765 return;
6768 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Stop Request");
6769 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_stop_req);
6771 proto_tree_add_item(sub_tree,
6772 hf_ff_fms_stop_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6773 offset += 4;
6774 length -= 4;
6776 if (length) {
6777 proto_tree_add_text(sub_tree, tvb, offset, length,
6778 "[Unknown] (%u bytes)", length);
6781 return;
6787 * 6.5.3.25.2. Response Message Parameters
6789 static void
6790 dissect_ff_msg_fms_stop_pi_rsp(tvbuff_t *tvb, gint offset,
6791 guint32 length, packet_info *pinfo, proto_tree *tree)
6793 proto_tree *sub_tree;
6794 proto_item *ti;
6796 col_set_str(pinfo->cinfo, COL_INFO, "FMS Stop Response");
6798 if (!tree) {
6799 return;
6802 if (length) {
6803 ti = proto_tree_add_text(tree, tvb, offset, length,
6804 "FMS Stop Response");
6805 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_stop_rsp);
6807 proto_tree_add_text(sub_tree, tvb, offset, length,
6808 "[Unknown] (%u bytes)", length);
6811 return;
6817 * 6.5.3.25.3. Error Message Parameters
6819 static void
6820 dissect_ff_msg_fms_stop_pi_err(tvbuff_t *tvb, gint offset,
6821 guint32 length, packet_info *pinfo, proto_tree *tree)
6823 proto_tree *sub_tree;
6824 proto_item *ti;
6825 guint8 ErrorClass;
6826 guint8 ErrorCode;
6827 const char *error_code;
6829 col_set_str(pinfo->cinfo, COL_INFO, "FMS Stop Error");
6831 if (!tree) {
6832 return;
6835 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Stop Error");
6836 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_stop_err);
6838 proto_tree_add_item(sub_tree,
6839 hf_ff_fms_stop_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
6840 offset += 1;
6841 length -= 1;
6843 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
6844 offset += 3;
6845 length -= 3;
6847 ErrorClass = tvb_get_guint8(tvb, offset);
6848 proto_tree_add_item(sub_tree,
6849 hf_ff_fms_stop_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6850 offset += 1;
6851 length -= 1;
6853 ErrorCode = tvb_get_guint8(tvb, offset);
6854 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6855 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_stop_err_err_code,
6856 tvb, offset, 1, ErrorCode,
6857 "%s (%u)", error_code, ErrorCode);
6858 offset += 1;
6859 length -= 1;
6861 proto_tree_add_item(sub_tree,
6862 hf_ff_fms_stop_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6863 offset += 2;
6864 length -= 2;
6866 proto_tree_add_item(sub_tree, hf_ff_fms_stop_err_additional_desc,
6867 tvb, offset, 16, ENC_ASCII|ENC_NA);
6868 offset += 16;
6869 length -= 16;
6871 if (length) {
6872 proto_tree_add_text(sub_tree, tvb, offset, length,
6873 "[Unknown] (%u bytes)", length);
6876 return;
6882 * 6.5.3.26. FMS Resume (Confirmed Service Id = 21)
6883 * 6.5.3.26.1. Request Message Parameters
6885 static void
6886 dissect_ff_msg_fms_resume_pi_req(tvbuff_t *tvb, gint offset,
6887 guint32 length, packet_info *pinfo, proto_tree *tree)
6889 proto_tree *sub_tree;
6890 proto_item *ti;
6892 col_set_str(pinfo->cinfo, COL_INFO, "FMS Resume Request");
6894 if (!tree) {
6895 return;
6898 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Resume Request");
6899 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_resume_req);
6901 proto_tree_add_item(sub_tree,
6902 hf_ff_fms_resume_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6903 offset += 4;
6904 length -= 4;
6906 if (length) {
6907 proto_tree_add_text(sub_tree, tvb, offset, length,
6908 "Execution Argument (%u bytes)", length);
6911 return;
6917 * 6.5.3.26.2. Response Message Parameters
6919 static void
6920 dissect_ff_msg_fms_resume_pi_rsp(tvbuff_t *tvb, gint offset,
6921 guint32 length, packet_info *pinfo, proto_tree *tree)
6923 proto_tree *sub_tree;
6924 proto_item *ti;
6926 col_set_str(pinfo->cinfo, COL_INFO, "FMS Resume Response");
6928 if (!tree) {
6929 return;
6932 if (length) {
6933 ti = proto_tree_add_text(tree, tvb, offset, length,
6934 "FMS Resume Response");
6935 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_resume_rsp);
6937 proto_tree_add_text(sub_tree, tvb, offset, length,
6938 "[Unknown] (%u bytes)", length);
6941 return;
6947 * 6.5.3.26.3. Error Message Parameters
6949 static void
6950 dissect_ff_msg_fms_resume_pi_err(tvbuff_t *tvb, gint offset,
6951 guint32 length, packet_info *pinfo, proto_tree *tree)
6953 proto_tree *sub_tree;
6954 proto_item *ti;
6955 guint8 ErrorClass;
6956 guint8 ErrorCode;
6957 const char *error_code;
6959 col_set_str(pinfo->cinfo, COL_INFO, "FMS Resume Error");
6961 if (!tree) {
6962 return;
6965 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Resume Error");
6966 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_resume_err);
6968 proto_tree_add_item(sub_tree,
6969 hf_ff_fms_resume_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
6970 offset += 1;
6971 length -= 1;
6973 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
6974 offset += 3;
6975 length -= 3;
6977 ErrorClass = tvb_get_guint8(tvb, offset);
6978 proto_tree_add_item(sub_tree,
6979 hf_ff_fms_resume_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6980 offset += 1;
6981 length -= 1;
6983 ErrorCode = tvb_get_guint8(tvb, offset);
6984 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6985 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_resume_err_err_code,
6986 tvb, offset, 1, ErrorCode,
6987 "%s (%u)", error_code, ErrorCode);
6988 offset += 1;
6989 length -= 1;
6991 proto_tree_add_item(sub_tree,
6992 hf_ff_fms_resume_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6993 offset += 2;
6994 length -= 2;
6996 proto_tree_add_item(sub_tree, hf_ff_fms_resume_err_additional_desc,
6997 tvb, offset, 16, ENC_ASCII|ENC_NA);
6998 offset += 16;
6999 length -= 16;
7001 if (length) {
7002 proto_tree_add_text(sub_tree, tvb, offset, length,
7003 "[Unknown] (%u bytes)", length);
7006 return;
7012 * 6.5.3.27. FMS Reset (Confirmed Service Id = 22)
7013 * 6.5.3.27.1. Request Message Parameters
7015 static void
7016 dissect_ff_msg_fms_reset_pi_req(tvbuff_t *tvb, gint offset,
7017 guint32 length, packet_info *pinfo, proto_tree *tree)
7019 proto_tree *sub_tree;
7020 proto_item *ti;
7022 col_set_str(pinfo->cinfo, COL_INFO, "FMS Reset Request");
7024 if (!tree) {
7025 return;
7028 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Reset Request");
7029 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_reset_req);
7031 proto_tree_add_item(sub_tree,
7032 hf_ff_fms_reset_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7033 offset += 4;
7034 length -= 4;
7036 if (length) {
7037 proto_tree_add_text(sub_tree, tvb, offset, length,
7038 "[Unknown] (%u bytes)", length);
7041 return;
7047 * 6.5.3.27.2. Response Message Parameters
7049 static void
7050 dissect_ff_msg_fms_reset_pi_rsp(tvbuff_t *tvb, gint offset,
7051 guint32 length, packet_info *pinfo, proto_tree *tree)
7053 proto_tree *sub_tree;
7054 proto_item *ti;
7056 col_set_str(pinfo->cinfo, COL_INFO, "FMS Reset Response");
7058 if (!tree) {
7059 return;
7062 if (length) {
7063 ti = proto_tree_add_text(tree, tvb, offset, length,
7064 "FMS Reset Response");
7065 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_reset_rsp);
7067 proto_tree_add_text(sub_tree, tvb, offset, length,
7068 "[Unknown] (%u bytes)", length);
7071 return;
7077 * 6.5.3.27.3. Error Message Parameters
7079 static void
7080 dissect_ff_msg_fms_reset_pi_err(tvbuff_t *tvb, gint offset,
7081 guint32 length, packet_info *pinfo, proto_tree *tree)
7083 proto_tree *sub_tree;
7084 proto_item *ti;
7085 guint8 ErrorClass;
7086 guint8 ErrorCode;
7087 const char *error_code;
7089 col_set_str(pinfo->cinfo, COL_INFO, "FMS Reset Error");
7091 if (!tree) {
7092 return;
7095 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Reset Error");
7096 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_reset_err);
7098 proto_tree_add_item(sub_tree,
7099 hf_ff_fms_reset_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
7100 offset += 1;
7101 length -= 1;
7103 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
7104 offset += 3;
7105 length -= 3;
7107 ErrorClass = tvb_get_guint8(tvb, offset);
7108 proto_tree_add_item(sub_tree,
7109 hf_ff_fms_reset_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7110 offset += 1;
7111 length -= 1;
7113 ErrorCode = tvb_get_guint8(tvb, offset);
7114 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7115 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_reset_err_err_code,
7116 tvb, offset, 1, ErrorCode,
7117 "%s (%u)", error_code, ErrorCode);
7118 offset += 1;
7119 length -= 1;
7121 proto_tree_add_item(sub_tree,
7122 hf_ff_fms_reset_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7123 offset += 2;
7124 length -= 2;
7126 proto_tree_add_item(sub_tree, hf_ff_fms_reset_err_additional_desc,
7127 tvb, offset, 16, ENC_ASCII|ENC_NA);
7128 offset += 16;
7129 length -= 16;
7131 if (length) {
7132 proto_tree_add_text(sub_tree, tvb, offset, length,
7133 "[Unknown] (%u bytes)", length);
7136 return;
7142 * 6.5.3.28. FMS Kill (Confirmed Service Id = 23)
7143 * 6.5.3.28.1. Request Message Parameters
7145 static void
7146 dissect_ff_msg_fms_kill_pi_req(tvbuff_t *tvb, gint offset,
7147 guint32 length, packet_info *pinfo, proto_tree *tree)
7149 proto_tree *sub_tree;
7150 proto_item *ti;
7152 col_set_str(pinfo->cinfo, COL_INFO, "FMS Kill Request");
7154 if (!tree) {
7155 return;
7158 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Kill Request");
7159 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_kill_req);
7161 proto_tree_add_item(sub_tree,
7162 hf_ff_fms_kill_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7163 offset += 4;
7164 length -= 4;
7166 if (length) {
7167 proto_tree_add_text(sub_tree, tvb, offset, length,
7168 "[Unknown] (%u bytes)", length);
7171 return;
7177 * 6.5.3.28.2. Response Message Parameters
7179 static void
7180 dissect_ff_msg_fms_kill_pi_rsp(tvbuff_t *tvb, gint offset,
7181 guint32 length, packet_info *pinfo, proto_tree *tree)
7183 proto_tree *sub_tree;
7184 proto_item *ti;
7186 col_set_str(pinfo->cinfo, COL_INFO, "FMS Kill Response");
7188 if (!tree) {
7189 return;
7192 if (length) {
7193 ti = proto_tree_add_text(tree, tvb, offset, length,
7194 "FMS Kill Response");
7195 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_kill_rsp);
7197 proto_tree_add_text(sub_tree, tvb, offset, length,
7198 "[Unknown] (%u bytes)", length);
7201 return;
7207 * 6.5.3.28.3. Error Message Parameters
7209 static void
7210 dissect_ff_msg_fms_kill_pi_err(tvbuff_t *tvb, gint offset,
7211 guint32 length, packet_info *pinfo, proto_tree *tree)
7213 proto_tree *sub_tree;
7214 proto_item *ti;
7215 guint8 ErrorClass;
7216 guint8 ErrorCode;
7217 const char *error_code;
7219 col_set_str(pinfo->cinfo, COL_INFO, "FMS Kill Error");
7221 if (!tree) {
7222 return;
7225 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Kill Error");
7226 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_kill_err);
7228 ErrorClass = tvb_get_guint8(tvb, offset);
7229 proto_tree_add_item(sub_tree,
7230 hf_ff_fms_kill_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7231 offset += 1;
7232 length -= 1;
7234 ErrorCode = tvb_get_guint8(tvb, offset);
7235 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7236 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_kill_err_err_code,
7237 tvb, offset, 1, ErrorCode,
7238 "%s (%u)", error_code, ErrorCode);
7239 offset += 1;
7240 length -= 1;
7242 proto_tree_add_item(sub_tree,
7243 hf_ff_fms_kill_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7244 offset += 2;
7245 length -= 2;
7247 proto_tree_add_item(sub_tree, hf_ff_fms_kill_err_additional_desc,
7248 tvb, offset, 16, ENC_ASCII|ENC_NA);
7249 offset += 16;
7250 length -= 16;
7252 if (length) {
7253 proto_tree_add_text(sub_tree, tvb, offset, length,
7254 "[Unknown] (%u bytes)", length);
7257 return;
7263 * 6.5.3.29. FMS Read (Confirmed Service Id = 2)
7264 * 6.5.3.29.1. Request Message Parameters
7266 static void
7267 dissect_ff_msg_fms_read_req(tvbuff_t *tvb, gint offset,
7268 guint32 length, packet_info *pinfo, proto_tree *tree)
7270 proto_tree *sub_tree;
7271 proto_item *ti;
7273 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read Request");
7275 if (!tree) {
7276 return;
7279 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Read Request");
7280 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_req);
7282 proto_tree_add_item(sub_tree,
7283 hf_ff_fms_read_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7284 offset += 4;
7285 length -= 4;
7287 if (length) {
7288 proto_tree_add_text(tree, tvb, offset, length,
7289 "[Unknown] (%u bytes)", length);
7292 return;
7298 * 6.5.3.29.2. Response Message Parameters
7300 static void
7301 dissect_ff_msg_fms_read_rsp(tvbuff_t *tvb, gint offset,
7302 guint32 length, packet_info *pinfo, proto_tree *tree)
7304 proto_tree *sub_tree;
7305 proto_item *ti;
7307 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read Response");
7309 if (!tree) {
7310 return;
7313 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Read Response");
7314 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_rsp);
7316 proto_tree_add_text(sub_tree, tvb, offset, length,
7317 "Data (%u bytes)", length);
7319 return;
7325 * 6.5.3.29.3. Error Message Parameters
7327 static void
7328 dissect_ff_msg_fms_read_err(tvbuff_t *tvb, gint offset,
7329 guint32 length, packet_info *pinfo, proto_tree *tree)
7331 proto_tree *sub_tree;
7332 proto_item *ti;
7333 guint8 ErrorClass;
7334 guint8 ErrorCode;
7335 const char *error_code;
7337 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read Error");
7339 if (!tree) {
7340 return;
7343 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Read Error");
7344 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_err);
7346 ErrorClass = tvb_get_guint8(tvb, offset);
7347 proto_tree_add_item(sub_tree,
7348 hf_ff_fms_read_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7349 offset += 1;
7350 length -= 1;
7352 ErrorCode = tvb_get_guint8(tvb, offset);
7353 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7354 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_read_err_err_code,
7355 tvb, offset, 1, ErrorCode,
7356 "%s (%u)", error_code, ErrorCode);
7357 offset += 1;
7358 length -= 1;
7360 proto_tree_add_item(sub_tree,
7361 hf_ff_fms_read_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7362 offset += 2;
7363 length -= 2;
7365 proto_tree_add_item(sub_tree, hf_ff_fms_read_err_additional_desc,
7366 tvb, offset, 16, ENC_ASCII|ENC_NA);
7367 offset += 16;
7368 length -= 16;
7370 if (length) {
7371 proto_tree_add_text(sub_tree, tvb, offset, length,
7372 "[Unknown] (%u bytes)", length);
7375 return;
7381 * 6.5.3.30. FMS Read with Subindex (Confirmed Service Id = 82)
7382 * 6.5.3.30.1. Request Message Parameters
7384 static void
7385 dissect_ff_msg_fms_read_subindex_req(tvbuff_t *tvb, gint offset,
7386 guint32 length, packet_info *pinfo, proto_tree *tree)
7388 proto_tree *sub_tree;
7389 proto_item *ti;
7391 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read with Subindex Request");
7393 if (!tree) {
7394 return;
7397 ti = proto_tree_add_text(tree, tvb, offset, length,
7398 "FMS Read with Subindex Request");
7399 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_with_subidx_req);
7401 proto_tree_add_item(sub_tree,
7402 hf_ff_fms_read_with_subidx_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7403 offset += 4;
7404 length -= 4;
7406 proto_tree_add_item(sub_tree,
7407 hf_ff_fms_read_with_subidx_req_subidx, tvb, offset, 4, ENC_BIG_ENDIAN);
7408 offset += 4;
7409 length -= 4;
7411 if (length) {
7412 proto_tree_add_text(tree, tvb, offset, length,
7413 "[Unknown] (%u bytes)", length);
7416 return;
7422 * 6.5.3.30.2. Response Message Parameters
7424 static void
7425 dissect_ff_msg_fms_read_subindex_rsp(tvbuff_t *tvb, gint offset,
7426 guint32 length, packet_info *pinfo, proto_tree *tree)
7428 proto_tree *sub_tree;
7429 proto_item *ti;
7431 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read with Subindex Response");
7433 if (!tree) {
7434 return;
7437 ti = proto_tree_add_text(tree, tvb, offset, length,
7438 "FMS Read with Subindex Response");
7439 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_with_subidx_rsp);
7441 proto_tree_add_text(sub_tree, tvb, offset, length,
7442 "Data (%u bytes)", length);
7444 return;
7450 * 6.5.3.30.3. Error Message Parameters
7452 static void
7453 dissect_ff_msg_fms_read_subindex_err(tvbuff_t *tvb, gint offset,
7454 guint32 length, packet_info *pinfo, proto_tree *tree)
7456 proto_tree *sub_tree;
7457 proto_item *ti;
7458 guint8 ErrorClass;
7459 guint8 ErrorCode;
7460 const char *error_code;
7462 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read with Subindex Error");
7464 if (!tree) {
7465 return;
7468 ti = proto_tree_add_text(tree, tvb, offset, length,
7469 "FMS Read with Subindex Error");
7470 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_read_with_subidx_err);
7472 ErrorClass = tvb_get_guint8(tvb, offset);
7473 proto_tree_add_item(sub_tree,
7474 hf_ff_fms_read_with_subidx_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7475 offset += 1;
7476 length -= 1;
7478 ErrorCode = tvb_get_guint8(tvb, offset);
7479 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7480 proto_tree_add_uint_format_value(sub_tree,
7481 hf_ff_fms_read_with_subidx_err_err_code,
7482 tvb, offset, 1, ErrorCode,
7483 "%s (%u)", error_code, ErrorCode);
7484 offset += 1;
7485 length -= 1;
7487 proto_tree_add_item(sub_tree,
7488 hf_ff_fms_read_with_subidx_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7489 offset += 2;
7490 length -= 2;
7492 proto_tree_add_item(sub_tree,
7493 hf_ff_fms_read_with_subidx_err_additional_desc,
7494 tvb, offset, 16, ENC_ASCII|ENC_NA);
7495 offset += 16;
7496 length -= 16;
7498 if (length) {
7499 proto_tree_add_text(sub_tree, tvb, offset, length,
7500 "[Unknown] (%u bytes)", length);
7503 return;
7509 * 6.5.3.31. FMS Write (Confirmed Service Id = 3)
7510 * 6.5.3.31.1. Request Message Parameters
7512 static void
7513 dissect_ff_msg_fms_write_req(tvbuff_t *tvb, gint offset,
7514 guint32 length, packet_info *pinfo, proto_tree *tree)
7516 proto_tree *sub_tree;
7517 proto_item *ti;
7519 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write Request");
7521 if (!tree) {
7522 return;
7525 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Write Request");
7526 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_req);
7528 proto_tree_add_item(sub_tree,
7529 hf_ff_fms_write_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7530 offset += 4;
7531 length -= 4;
7533 if (length) {
7534 proto_tree_add_text(sub_tree, tvb, offset, length,
7535 "Data (%u bytes)", length);
7538 return;
7544 * 6.5.3.31.2. Response Message Parameters
7546 static void
7547 dissect_ff_msg_fms_write_rsp(tvbuff_t *tvb, gint offset,
7548 guint32 length, packet_info *pinfo, proto_tree *tree)
7550 proto_tree *sub_tree;
7551 proto_item *ti;
7553 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write Response");
7555 if (!tree) {
7556 return;
7559 if (length) {
7560 ti = proto_tree_add_text(tree, tvb, offset, length,
7561 "FMS Write Response");
7562 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_rsp);
7564 proto_tree_add_text(sub_tree, tvb, offset, length,
7565 "[Unknown] (%u bytes)", length);
7568 return;
7574 * 6.5.3.31.3. Error Message Parameters
7576 static void
7577 dissect_ff_msg_fms_write_err(tvbuff_t *tvb, gint offset,
7578 guint32 length, packet_info *pinfo, proto_tree *tree)
7580 proto_tree *sub_tree;
7581 proto_item *ti;
7582 guint8 ErrorClass;
7583 guint8 ErrorCode;
7584 const char *error_code;
7586 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write Error");
7588 if (!tree) {
7589 return;
7592 ti = proto_tree_add_text(tree, tvb, offset, length, "FMS Write Error");
7593 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_err);
7595 ErrorClass = tvb_get_guint8(tvb, offset);
7596 proto_tree_add_item(sub_tree,
7597 hf_ff_fms_write_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7598 offset += 1;
7599 length -= 1;
7601 ErrorCode = tvb_get_guint8(tvb, offset);
7602 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7603 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_write_err_err_code,
7604 tvb, offset, 1, ErrorCode,
7605 "%s (%u)", error_code, ErrorCode);
7606 offset += 1;
7607 length -= 1;
7609 proto_tree_add_item(sub_tree,
7610 hf_ff_fms_write_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7611 offset += 2;
7612 length -= 2;
7614 proto_tree_add_item(sub_tree, hf_ff_fms_write_err_additional_desc,
7615 tvb, offset, 16, ENC_ASCII|ENC_NA);
7616 offset += 16;
7617 length -= 16;
7619 if (length) {
7620 proto_tree_add_text(sub_tree, tvb, offset, length,
7621 "[Unknown] (%u bytes)", length);
7624 return;
7630 * 6.5.3.32. FMS Write with Subindex (Confirmed Service Id = 83)
7631 * 6.5.3.32.1. Request Message Parameters
7633 static void
7634 dissect_ff_msg_fms_write_subindex_req(tvbuff_t *tvb, gint offset,
7635 guint32 length, packet_info *pinfo, proto_tree *tree)
7637 proto_tree *sub_tree;
7638 proto_item *ti;
7640 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write with Subindex Request");
7642 if (!tree) {
7643 return;
7646 ti = proto_tree_add_text(tree, tvb, offset, length,
7647 "FMS Write with Subindex Request");
7648 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_with_subidx_req);
7650 proto_tree_add_item(sub_tree,
7651 hf_ff_fms_write_with_subidx_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7652 offset += 4;
7653 length -= 4;
7655 proto_tree_add_item(sub_tree,
7656 hf_ff_fms_write_with_subidx_req_subidx, tvb, offset, 4, ENC_BIG_ENDIAN);
7657 offset += 4;
7658 length -= 4;
7660 if (length) {
7661 proto_tree_add_text(sub_tree, tvb, offset, length,
7662 "Data (%u bytes)", length);
7665 return;
7671 * 6.5.3.32.2. Response Message Parameters
7673 static void
7674 dissect_ff_msg_fms_write_subindex_rsp(tvbuff_t *tvb, gint offset,
7675 guint32 length, packet_info *pinfo, proto_tree *tree)
7677 proto_tree *sub_tree;
7678 proto_item *ti;
7680 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write with Subindex Response");
7682 if (!tree) {
7683 return;
7686 if (length) {
7687 ti = proto_tree_add_text(tree, tvb, offset, length,
7688 "FMS Write with Subindex Response");
7689 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_with_subidx_rsp);
7691 proto_tree_add_text(sub_tree, tvb, offset, length,
7692 "[Unknown] (%u bytes)", length);
7695 return;
7701 * 6.5.3.32.3. Error Message Parameters
7703 static void
7704 dissect_ff_msg_fms_write_subindex_err(tvbuff_t *tvb, gint offset,
7705 guint32 length, packet_info *pinfo, proto_tree *tree)
7707 proto_tree *sub_tree;
7708 proto_item *ti;
7709 guint8 ErrorClass;
7710 guint8 ErrorCode;
7711 const char *error_code;
7713 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write with Subindex Error");
7715 if (!tree) {
7716 return;
7719 ti = proto_tree_add_text(tree, tvb, offset, length,
7720 "FMS Write with Subindex Error");
7721 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_write_with_subidx_err);
7723 ErrorClass = tvb_get_guint8(tvb, offset);
7724 proto_tree_add_item(sub_tree,
7725 hf_ff_fms_write_with_subidx_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7726 offset += 1;
7727 length -= 1;
7729 ErrorCode = tvb_get_guint8(tvb, offset);
7730 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7731 proto_tree_add_uint_format_value(sub_tree,
7732 hf_ff_fms_write_with_subidx_err_err_code,
7733 tvb, offset, 1, ErrorCode,
7734 "%s (%u)", error_code, ErrorCode);
7735 offset += 1;
7736 length -= 1;
7738 proto_tree_add_item(sub_tree,
7739 hf_ff_fms_write_with_subidx_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7740 offset += 2;
7741 length -= 2;
7743 proto_tree_add_item(sub_tree,
7744 hf_ff_fms_write_with_subidx_err_additional_desc,
7745 tvb, offset, 16, ENC_ASCII|ENC_NA);
7746 offset += 16;
7747 length -= 16;
7749 if (length) {
7750 proto_tree_add_text(sub_tree, tvb, offset, length,
7751 "[Unknown] (%u bytes)", length);
7754 return;
7760 * 6.5.3.33. FMS Define Variable List (Confirmed Service Id = 7)
7761 * 6.5.3.33.1. Request Message Parameters
7763 static void
7764 dissect_ff_msg_fms_def_variable_list_req_list_of_idxes(tvbuff_t *tvb,
7765 gint offset, proto_tree *tree, guint32 value)
7767 proto_tree *sub_tree;
7768 proto_item *ti;
7769 guint d;
7771 if (!tree) {
7772 return;
7775 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
7776 "List Of Indexes (%u bytes)", 4 * value);
7777 sub_tree = proto_item_add_subtree(ti,
7778 ett_ff_fms_def_variable_list_req_list_of_idxes);
7780 for (d = 0; d < value; d++) {
7781 proto_tree_add_item(sub_tree,
7782 hf_ff_fms_def_variable_list_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7783 offset += 4;
7786 return;
7791 static void
7792 dissect_ff_msg_fms_def_variable_list_req(tvbuff_t *tvb, gint offset,
7793 guint32 length, packet_info *pinfo, proto_tree *tree)
7795 proto_tree *sub_tree;
7796 proto_item *ti;
7797 guint32 NumOfIndexes;
7799 col_set_str(pinfo->cinfo, COL_INFO, "FMS Define Variable List Request");
7801 if (!tree) {
7802 return;
7805 ti = proto_tree_add_text(tree, tvb, offset, length,
7806 "FMS Define Variable List Request");
7807 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_def_variable_list_req);
7809 NumOfIndexes = tvb_get_ntohl(tvb, offset);
7810 proto_tree_add_item(sub_tree,
7811 hf_ff_fms_def_variable_list_req_num_of_idxes, tvb, offset, 4, ENC_BIG_ENDIAN);
7812 offset += 4;
7813 length -= 4;
7815 if (NumOfIndexes) {
7816 dissect_ff_msg_fms_def_variable_list_req_list_of_idxes(tvb,
7817 offset, sub_tree, NumOfIndexes);
7818 offset += 4 * NumOfIndexes;
7819 length -= 4 * NumOfIndexes;
7822 if (length) {
7823 proto_tree_add_text(sub_tree, tvb, offset, length,
7824 "[Unknown] (%u bytes)", length);
7827 return;
7833 * 6.5.3.33.2. Response Message Parameters
7835 static void
7836 dissect_ff_msg_fms_def_variable_list_rsp(tvbuff_t *tvb, gint offset,
7837 guint32 length, packet_info *pinfo, proto_tree *tree)
7839 proto_tree *sub_tree;
7840 proto_item *ti;
7842 col_set_str(pinfo->cinfo, COL_INFO, "FMS Define Variable List Response");
7844 if (!tree) {
7845 return;
7848 ti = proto_tree_add_text(tree, tvb, offset, length,
7849 "FMS Define Variable List Response");
7850 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_def_variable_list_rsp);
7852 proto_tree_add_item(sub_tree,
7853 hf_ff_fms_def_variable_list_rsp_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7854 offset += 4;
7855 length -= 4;
7857 if (length) {
7858 proto_tree_add_text(sub_tree, tvb, offset, length,
7859 "[Unknown] (%u bytes)", length);
7862 return;
7868 * 6.5.3.33.3. Error Message Parameters
7870 static void
7871 dissect_ff_msg_fms_def_variable_list_err(tvbuff_t *tvb, gint offset,
7872 guint32 length, packet_info *pinfo, proto_tree *tree)
7874 proto_tree *sub_tree;
7875 proto_item *ti;
7876 guint8 ErrorClass;
7877 guint8 ErrorCode;
7878 const char *error_code;
7880 col_set_str(pinfo->cinfo, COL_INFO, "FMS Define Variable List Error");
7882 if (!tree) {
7883 return;
7886 ti = proto_tree_add_text(tree, tvb, offset, length,
7887 "FMS Define Variable List Error");
7888 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_def_variable_list_err);
7890 ErrorClass = tvb_get_guint8(tvb, offset);
7891 proto_tree_add_item(sub_tree,
7892 hf_ff_fms_def_variable_list_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7893 offset += 1;
7894 length -= 1;
7896 ErrorCode = tvb_get_guint8(tvb, offset);
7897 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7898 proto_tree_add_uint_format_value(sub_tree,
7899 hf_ff_fms_def_variable_list_err_err_code,
7900 tvb, offset, 1, ErrorCode,
7901 "%s (%u)", error_code, ErrorCode);
7902 offset += 1;
7903 length -= 1;
7905 proto_tree_add_item(sub_tree,
7906 hf_ff_fms_def_variable_list_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7907 offset += 2;
7908 length -= 2;
7910 proto_tree_add_item(sub_tree,
7911 hf_ff_fms_def_variable_list_err_additional_desc,
7912 tvb, offset, 16, ENC_ASCII|ENC_NA);
7913 offset += 16;
7914 length -= 16;
7916 if (length) {
7917 proto_tree_add_text(sub_tree, tvb, offset, length,
7918 "[Unknown] (%u bytes)", length);
7921 return;
7927 * 6.5.3.34. FMS Delete Variable List (Confirmed Service Id = 8)
7928 * 6.5.3.34.1. Request Message Parameters
7930 static void
7931 dissect_ff_msg_fms_del_variable_list_req(tvbuff_t *tvb, gint offset,
7932 guint32 length, packet_info *pinfo, proto_tree *tree)
7934 proto_tree *sub_tree;
7935 proto_item *ti;
7937 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Variable List Request");
7939 if (!tree) {
7940 return;
7943 ti = proto_tree_add_text(tree, tvb, offset, length,
7944 "FMS Delete Variable List Request");
7945 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_del_variable_list_req);
7947 proto_tree_add_item(sub_tree,
7948 hf_ff_fms_del_variable_list_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7949 offset += 4;
7950 length -= 4;
7952 if (length) {
7953 proto_tree_add_text(sub_tree, tvb, offset, length,
7954 "[Unknown] (%u bytes)", length);
7957 return;
7963 * 6.5.3.34.2. Response Message Parameters
7965 static void
7966 dissect_ff_msg_fms_del_variable_list_rsp(tvbuff_t *tvb, gint offset,
7967 guint32 length, packet_info *pinfo, proto_tree *tree)
7969 proto_tree *sub_tree;
7970 proto_item *ti;
7972 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Variable List Response");
7974 if (!tree) {
7975 return;
7978 if (length) {
7979 ti = proto_tree_add_text(tree, tvb, offset, length,
7980 "FMS Delete Variable List Response");
7981 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_del_variable_list_rsp);
7983 proto_tree_add_text(sub_tree, tvb, offset, length,
7984 "[Unknown] (%u bytes)", length);
7987 return;
7993 * 6.5.3.34.3. Error Message Parameters
7995 static void
7996 dissect_ff_msg_fms_del_variable_list_err(tvbuff_t *tvb, gint offset,
7997 guint32 length, packet_info *pinfo, proto_tree *tree)
7999 proto_tree *sub_tree;
8000 proto_item *ti;
8001 guint8 ErrorClass;
8002 guint8 ErrorCode;
8003 const char *error_code;
8005 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Variable List Error");
8007 if (!tree) {
8008 return;
8011 ti = proto_tree_add_text(tree, tvb, offset, length,
8012 "FMS Delete Variable List Error");
8013 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_del_variable_list_err);
8015 ErrorClass = tvb_get_guint8(tvb, offset);
8016 proto_tree_add_item(sub_tree,
8017 hf_ff_fms_del_variable_list_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
8018 offset += 1;
8019 length -= 1;
8021 ErrorCode = tvb_get_guint8(tvb, offset);
8022 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
8023 proto_tree_add_uint_format_value(sub_tree,
8024 hf_ff_fms_del_variable_list_err_err_code,
8025 tvb, offset, 1, ErrorCode,
8026 "%s (%u)", error_code, ErrorCode);
8027 offset += 1;
8028 length -= 1;
8030 proto_tree_add_item(sub_tree,
8031 hf_ff_fms_del_variable_list_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
8032 offset += 2;
8033 length -= 2;
8035 proto_tree_add_item(sub_tree,
8036 hf_ff_fms_del_variable_list_err_additional_desc,
8037 tvb, offset, 16, ENC_ASCII|ENC_NA);
8038 offset += 16;
8039 length -= 16;
8041 if (length) {
8042 proto_tree_add_text(sub_tree, tvb, offset, length,
8043 "[Unknown] (%u bytes)", length);
8046 return;
8052 * 6.5.3.35. FMS Information Report (Unconfirmed Service Id = 0)
8053 * 6.5.3.35.1. Request Message Parameters
8055 static void
8056 dissect_ff_msg_fms_info_report_req(tvbuff_t *tvb, gint offset,
8057 guint32 length, packet_info *pinfo, proto_tree *tree)
8059 proto_tree *sub_tree;
8060 proto_item *ti;
8062 col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report Request");
8064 if (!tree) {
8065 return;
8068 ti = proto_tree_add_text(tree, tvb, offset, length,
8069 "FMS Information Report Request");
8070 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_info_report_req);
8072 proto_tree_add_item(sub_tree,
8073 hf_ff_fms_info_report_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
8074 offset += 4;
8075 length -= 4;
8077 if (length) {
8078 proto_tree_add_text(sub_tree, tvb, offset, length,
8079 "Data (%u bytes)", length);
8082 return;
8088 * 6.5.3.36. FMS Information Report with Subindex
8089 * (Unconfirmed Service Id = 16)
8090 * 6.5.3.36.1. Request Message Parameters
8092 static void
8093 dissect_ff_msg_fms_info_report_subindex_req(tvbuff_t *tvb, gint offset,
8094 guint32 length, packet_info *pinfo, proto_tree *tree)
8096 proto_tree *sub_tree;
8097 proto_item *ti;
8099 col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report with Subindex Request");
8101 if (!tree) {
8102 return;
8105 ti = proto_tree_add_text(tree, tvb, offset, length,
8106 "FMS Information Report with Subindex Request");
8107 sub_tree = proto_item_add_subtree(ti,
8108 ett_ff_fms_info_report_with_subidx_req);
8110 proto_tree_add_item(sub_tree,
8111 hf_ff_fms_info_report_with_subidx_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
8112 offset += 4;
8113 length -= 4;
8115 proto_tree_add_item(sub_tree,
8116 hf_ff_fms_info_report_with_subidx_req_subidx, tvb, offset, 4, ENC_BIG_ENDIAN);
8117 offset += 4;
8118 length -= 4;
8120 if (length) {
8121 proto_tree_add_text(sub_tree, tvb, offset, length,
8122 "Data (%u bytes)", length);
8125 return;
8131 * 6.5.3.37. FMS Information Report On Change (Unconfirmed Service Id = 17)
8132 * 6.5.3.37.1. Request Message Parameters
8134 static void
8135 dissect_ff_msg_fms_info_report_change_req(tvbuff_t *tvb, gint offset,
8136 guint32 length, packet_info *pinfo, proto_tree *tree)
8138 proto_tree *sub_tree;
8139 proto_item *ti;
8141 col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report On Change Request");
8143 if (!tree) {
8144 return;
8147 ti = proto_tree_add_text(tree, tvb, offset, length,
8148 "FMS Information Report On Change Request");
8149 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_info_report_on_change_req);
8151 proto_tree_add_item(sub_tree,
8152 hf_ff_fms_info_report_on_change_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
8153 offset += 4;
8154 length -= 4;
8156 if (length) {
8157 proto_tree_add_text(sub_tree, tvb, offset, length,
8158 "Data (%u bytes)", length);
8161 return;
8167 * 6.5.3.38. FMS Information Report On Change with Subindex
8168 * (Unconfirmed Service Id = 18)
8169 * 6.5.3.38.1. Request Message Parameters
8171 static void
8172 dissect_ff_msg_fms_info_report_change_subindex_req(
8173 tvbuff_t *tvb, gint offset,
8174 guint32 length, packet_info *pinfo, proto_tree *tree)
8176 proto_tree *sub_tree;
8177 proto_item *ti;
8179 col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report On Change with Subindex Request");
8181 if (!tree) {
8182 return;
8185 ti = proto_tree_add_text(tree, tvb, offset, length,
8186 "FMS Information Report On Change with Subindex Request");
8187 sub_tree = proto_item_add_subtree(ti,
8188 ett_ff_fms_info_report_on_change_with_subidx_req);
8190 proto_tree_add_item(sub_tree,
8191 hf_ff_fms_info_report_on_change_with_subidx_req_idx,
8192 tvb, offset, 4, ENC_BIG_ENDIAN);
8193 offset += 4;
8194 length -= 4;
8196 proto_tree_add_item(sub_tree,
8197 hf_ff_fms_info_report_on_change_with_subidx_req_subidx,
8198 tvb, offset, 4, ENC_BIG_ENDIAN);
8199 offset += 4;
8200 length -= 4;
8202 if (length) {
8203 proto_tree_add_text(sub_tree, tvb, offset, length,
8204 "Data (%u bytes)", length);
8207 return;
8213 * 6.5.3.39. FMS Event Notification (Unconfirmed Service Id = 2)
8214 * 6.5.3.39.1. Request Message Parameters
8216 static void
8217 dissect_ff_msg_fms_ev_notification_req(
8218 tvbuff_t *tvb, gint offset,
8219 guint32 length, packet_info *pinfo, proto_tree *tree)
8221 proto_tree *sub_tree;
8222 proto_item *ti;
8224 col_set_str(pinfo->cinfo, COL_INFO, "FMS Event Notification Request");
8226 if (!tree) {
8227 return;
8230 ti = proto_tree_add_text(tree, tvb, offset, length,
8231 "FMS Event Notification Request");
8232 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_ev_notification_req);
8234 proto_tree_add_item(sub_tree,
8235 hf_ff_fms_ev_notification_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
8236 offset += 4;
8237 length -= 4;
8239 proto_tree_add_item(sub_tree,
8240 hf_ff_fms_ev_notification_req_ev_num, tvb, offset, 4, ENC_BIG_ENDIAN);
8241 offset += 4;
8242 length -= 4;
8244 if (length) {
8245 proto_tree_add_text(sub_tree, tvb, offset, length,
8246 "Data (%u bytes)", length);
8249 return;
8255 * 6.5.3.40. FMS Alter Event Condition Monitoring (Confirmed Service Id = 24)
8256 * 6.5.3.40.1. Request Message Parameters
8258 static void
8259 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_req(
8260 tvbuff_t *tvb, gint offset,
8261 guint32 length, packet_info *pinfo, proto_tree *tree)
8263 proto_tree *sub_tree;
8264 proto_item *ti;
8266 col_set_str(pinfo->cinfo, COL_INFO, "FMS Alter Event Condition Monitoring Request");
8268 if (!tree) {
8269 return;
8272 ti = proto_tree_add_text(tree, tvb, offset, length,
8273 "FMS Alter Event Condition Monitoring Request");
8274 sub_tree = proto_item_add_subtree(ti,
8275 ett_ff_fms_alter_ev_condition_monitoring_req);
8277 proto_tree_add_item(sub_tree,
8278 hf_ff_fms_alter_ev_condition_monitoring_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
8279 offset += 4;
8280 length -= 4;
8282 proto_tree_add_text(sub_tree, tvb, offset, 3, "Reserved (%u bytes)", 3);
8283 offset += 3;
8284 length -= 3;
8286 proto_tree_add_item(sub_tree,
8287 hf_ff_fms_alter_ev_condition_monitoring_req_enabled,
8288 tvb, offset, 1, ENC_BIG_ENDIAN);
8289 offset += 1;
8290 length -= 1;
8292 if (length) {
8293 proto_tree_add_text(sub_tree, tvb, offset, length,
8294 "[Unknown] (%u bytes)", length);
8297 return;
8303 * 6.5.3.40.2. Response Message Parameters
8305 static void
8306 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_rsp(
8307 tvbuff_t *tvb, gint offset,
8308 guint32 length, packet_info *pinfo, proto_tree *tree)
8310 proto_tree *sub_tree;
8311 proto_item *ti;
8313 col_set_str(pinfo->cinfo, COL_INFO, "FMS Alter Event Condition Monitoring Response");
8315 if (!tree) {
8316 return;
8319 if (length) {
8320 ti = proto_tree_add_text(tree, tvb, offset, length,
8321 "FMS Alter Event Condition Monitoring Response");
8322 sub_tree = proto_item_add_subtree(ti,
8323 ett_ff_fms_alter_ev_condition_monitoring_rsp);
8325 proto_tree_add_text(sub_tree, tvb, offset, length,
8326 "[Unknown] (%u bytes)", length);
8329 return;
8335 * 6.5.3.40.3. Error Message Parameters
8337 static void
8338 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_err(
8339 tvbuff_t *tvb, gint offset,
8340 guint32 length, packet_info *pinfo, proto_tree *tree)
8342 proto_tree *sub_tree;
8343 proto_item *ti;
8344 guint8 ErrorClass;
8345 guint8 ErrorCode;
8346 const char *error_code;
8348 col_set_str(pinfo->cinfo, COL_INFO, "FMS Alter Event Condition Monitoring Error");
8350 if (!tree) {
8351 return;
8354 ti = proto_tree_add_text(tree, tvb, offset, length,
8355 "FMS Alter Event Condition Monitoring Error");
8356 sub_tree = proto_item_add_subtree(ti,
8357 ett_ff_fms_alter_ev_condition_monitoring_err);
8359 ErrorClass = tvb_get_guint8(tvb, offset);
8360 proto_tree_add_item(sub_tree,
8361 hf_ff_fms_alter_ev_condition_monitoring_err_err_class,
8362 tvb, offset, 1, ENC_BIG_ENDIAN);
8363 offset += 1;
8364 length -= 1;
8366 ErrorCode = tvb_get_guint8(tvb, offset);
8367 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
8368 proto_tree_add_uint_format_value(sub_tree,
8369 hf_ff_fms_alter_ev_condition_monitoring_err_err_code,
8370 tvb, offset, 1, ErrorCode,
8371 "%s (%u)", error_code, ErrorCode);
8372 offset += 1;
8373 length -= 1;
8375 proto_tree_add_item(sub_tree,
8376 hf_ff_fms_alter_ev_condition_monitoring_err_additional_code,
8377 tvb, offset, 2, ENC_BIG_ENDIAN);
8378 offset += 2;
8379 length -= 2;
8381 proto_tree_add_item(sub_tree,
8382 hf_ff_fms_alter_ev_condition_monitoring_err_additional_desc,
8383 tvb, offset, 16, ENC_ASCII|ENC_NA);
8384 offset += 16;
8385 length -= 16;
8387 if (length) {
8388 proto_tree_add_text(sub_tree, tvb, offset, length,
8389 "[Unknown] (%u bytes)", length);
8392 return;
8398 * 6.5.3.41. FMS Acknowledge Event Notification (Confirmed Service Id = 25)
8399 * 6.5.3.41.1. Request Message Parameters
8401 static void
8402 dissect_ff_msg_fms_ack_ev_notification_req(
8403 tvbuff_t *tvb, gint offset,
8404 guint32 length, packet_info *pinfo, proto_tree *tree)
8406 proto_tree *sub_tree;
8407 proto_item *ti;
8409 col_set_str(pinfo->cinfo, COL_INFO, "FMS Acknowledge Event Notification Request");
8411 if (!tree) {
8412 return;
8415 ti = proto_tree_add_text(tree, tvb, offset, length,
8416 "FMS Acknowledge Event Notification Request");
8417 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_ack_ev_notification_req);
8419 proto_tree_add_item(sub_tree,
8420 hf_ff_fms_ack_ev_notification_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
8421 offset += 4;
8422 length -= 4;
8424 proto_tree_add_item(sub_tree,
8425 hf_ff_fms_ack_ev_notification_req_ev_num, tvb, offset, 4, ENC_BIG_ENDIAN);
8426 offset += 4;
8427 length -= 4;
8429 if (length) {
8430 proto_tree_add_text(sub_tree, tvb, offset, length,
8431 "[Unknown] (%u bytes)", length);
8434 return;
8440 * 6.5.3.41.2. Response Message Parameters
8442 static void
8443 dissect_ff_msg_fms_ack_ev_notification_rsp(
8444 tvbuff_t *tvb, gint offset,
8445 guint32 length, packet_info *pinfo, proto_tree *tree)
8447 proto_tree *sub_tree;
8448 proto_item *ti;
8450 col_set_str(pinfo->cinfo, COL_INFO, "FMS Acknowledge Event Notification Response");
8452 if (!tree) {
8453 return;
8456 if (length) {
8457 ti = proto_tree_add_text(tree, tvb, offset, length,
8458 "FMS Acknowledge Event Notification Response");
8459 sub_tree = proto_item_add_subtree(ti,
8460 ett_ff_fms_ack_ev_notification_rsp);
8462 proto_tree_add_text(sub_tree, tvb, offset, length,
8463 "[Unknown] (%u bytes)", length);
8466 return;
8472 * 6.5.3.41.3. Error Message Parameters
8474 static void
8475 dissect_ff_msg_fms_ack_ev_notification_err(
8476 tvbuff_t *tvb, gint offset,
8477 guint32 length, packet_info *pinfo, proto_tree *tree)
8479 proto_tree *sub_tree;
8480 proto_item *ti;
8481 guint8 ErrorClass;
8482 guint8 ErrorCode;
8483 const char *error_code;
8485 col_set_str(pinfo->cinfo, COL_INFO, "FMS Acknowledge Event Notification Error");
8487 if (!tree) {
8488 return;
8491 ti = proto_tree_add_text(tree, tvb, offset, length,
8492 "FMS Acknowledge Event Notification Error");
8493 sub_tree = proto_item_add_subtree(ti, ett_ff_fms_ack_ev_notification_err);
8495 ErrorClass = tvb_get_guint8(tvb, offset);
8496 proto_tree_add_item(sub_tree,
8497 hf_ff_fms_ack_ev_notification_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
8498 offset += 1;
8499 length -= 1;
8501 ErrorCode = tvb_get_guint8(tvb, offset);
8502 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
8503 proto_tree_add_uint_format_value(sub_tree,
8504 hf_ff_fms_ack_ev_notification_err_err_code,
8505 tvb, offset, 1, ErrorCode,
8506 "%s (%u)", error_code, ErrorCode);
8507 offset += 1;
8508 length -= 1;
8510 proto_tree_add_item(sub_tree,
8511 hf_ff_fms_ack_ev_notification_err_additional_code,
8512 tvb, offset, 2, ENC_BIG_ENDIAN);
8513 offset += 2;
8514 length -= 2;
8516 proto_tree_add_item(sub_tree,
8517 hf_ff_fms_ack_ev_notification_err_additional_desc,
8518 tvb, offset, 16, ENC_ASCII|ENC_NA);
8519 offset += 16;
8520 length -= 16;
8522 if (length) {
8523 proto_tree_add_text(sub_tree, tvb, offset, length,
8524 "[Unknown] (%u bytes)", length);
8527 return;
8533 * 6.5.4.1. LAN Redundancy Get Information (Confirmed Service Id = 1)
8534 * 6.5.4.1.1. Request Message Parameters
8536 static void
8537 dissect_ff_msg_lr_get_info_req(
8538 tvbuff_t *tvb, gint offset,
8539 guint32 length, packet_info *pinfo, proto_tree *tree)
8541 proto_tree *sub_tree;
8542 proto_item *ti;
8544 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Information Request");
8546 if (!tree) {
8547 return;
8550 if (length) {
8551 ti = proto_tree_add_text(tree, tvb, offset, length,
8552 "LAN Redundancy Get Information Request");
8553 sub_tree = proto_item_add_subtree(ti,
8554 ett_ff_lr_get_info_req);
8556 proto_tree_add_text(sub_tree, tvb, offset, length,
8557 "[Unknown] (%u bytes)", length);
8560 return;
8566 * 6.5.4.1.2. Response Message Parameters
8568 static void
8569 dissect_ff_msg_lr_get_info_rsp_lr_flags(tvbuff_t *tvb,
8570 gint offset, proto_tree *tree, guint8 value)
8572 proto_tree *sub_tree;
8573 proto_item *ti;
8575 if (!tree) {
8576 return;
8579 ti = proto_tree_add_text(tree, tvb, offset, 1,
8580 "LAN Redundancy Flags: 0x%02x", value);
8581 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_get_info_rsp_lr_flags);
8584 * Bits 6-8: Reserved (not used) = 0
8585 * Bit 5: Load Balancing Enabled
8586 * 0 = False Do not do load balancing
8587 * 1 = True Do load balancing
8588 * Bit 4: Diagnosis Using Own Messages Enabled
8589 * 0 = False Do not use own diagnostic messages for diagnosis
8590 * 1 = True Use own diagnostic messages for diagnosis
8591 * Bit 3: Single Multicast Message Reception Interface Enabled
8592 * 0 = False Listen for multicast addresses
8593 * on both interfaces
8594 * 1 = True Listen for multicast addresses
8595 * on one interface
8596 * if zero or one fault detected
8597 * in network status table
8598 * Bit 2: Crossed Cable Detection Enabled
8599 * 0 = False Do not detect crossed cables
8600 * 1 = True Detect crossed cables
8601 * B1 (lsb): Single Multicast Message Transmission Interface Enabled
8602 * 0 = False Transmit on both interfaces
8603 * 1 = True Transmit on one interface
8605 proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
8606 proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_load_balance, tvb, offset, 1, ENC_BIG_ENDIAN);
8607 proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_diag, tvb, offset, 1, ENC_BIG_ENDIAN);
8608 proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_multi_recv, tvb, offset, 1, ENC_BIG_ENDIAN);
8609 proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_cross_cable, tvb, offset, 1, ENC_BIG_ENDIAN);
8610 proto_tree_add_item(sub_tree, hf_ff_lr_get_info_rsp_lr_flags_multi_trans, tvb, offset, 1, ENC_BIG_ENDIAN);
8615 static void
8616 dissect_ff_msg_lr_get_info_rsp(
8617 tvbuff_t *tvb, gint offset,
8618 guint32 length, packet_info *pinfo, proto_tree *tree)
8620 proto_tree *sub_tree;
8621 proto_item *ti;
8622 guint8 MaxMsgNumDiff;
8623 guint8 LRFlags;
8625 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Information Response");
8627 if (!tree) {
8628 return;
8631 ti = proto_tree_add_text(tree, tvb, offset, length,
8632 "LAN Redundancy Get Information Response");
8633 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_get_info_rsp);
8635 proto_tree_add_item(sub_tree,
8636 hf_ff_lr_get_info_rsp_lr_attrs_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
8637 offset += 4;
8638 length -= 4;
8640 MaxMsgNumDiff = tvb_get_guint8(tvb, offset);
8641 switch (MaxMsgNumDiff) {
8642 case 0:
8643 case 1:
8644 proto_tree_add_uint_format_value(sub_tree,
8645 hf_ff_lr_get_info_rsp_lr_max_msg_num_diff,
8646 tvb, offset, 1, MaxMsgNumDiff,
8647 "Do not detect a fault (%u)",
8648 MaxMsgNumDiff);
8649 break;
8651 default:
8652 proto_tree_add_item(sub_tree,
8653 hf_ff_lr_get_info_rsp_lr_max_msg_num_diff,
8654 tvb, offset, 1, ENC_BIG_ENDIAN);
8656 offset += 1;
8657 length -= 1;
8659 LRFlags = tvb_get_guint8(tvb, offset);
8660 dissect_ff_msg_lr_get_info_rsp_lr_flags(tvb, offset, sub_tree, LRFlags);
8661 offset += 1;
8662 length -= 1;
8664 proto_tree_add_item(sub_tree,
8665 hf_ff_lr_get_info_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
8666 offset += 2;
8667 length -= 2;
8669 proto_tree_add_item(sub_tree,
8670 hf_ff_lr_get_info_rsp_diagnostic_msg_intvl, tvb, offset, 4, ENC_BIG_ENDIAN);
8671 offset += 4;
8672 length -= 4;
8674 proto_tree_add_item(sub_tree,
8675 hf_ff_lr_get_info_rsp_aging_time, tvb, offset, 4, ENC_BIG_ENDIAN);
8676 offset += 4;
8677 length -= 4;
8679 proto_tree_add_item(sub_tree,
8680 hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_send_addr,
8681 tvb, offset, 16, ENC_NA);
8682 offset += 16;
8683 length -= 16;
8685 proto_tree_add_item(sub_tree,
8686 hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_recv_addr,
8687 tvb, offset, 16, ENC_NA);
8688 offset += 16;
8689 length -= 16;
8691 proto_tree_add_item(sub_tree,
8692 hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_send_addr,
8693 tvb, offset, 16, ENC_NA);
8694 offset += 16;
8695 length -= 16;
8697 proto_tree_add_item(sub_tree,
8698 hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_recv_addr,
8699 tvb, offset, 16, ENC_NA);
8700 offset += 16;
8701 length -= 16;
8703 if (length) {
8704 proto_tree_add_text(sub_tree, tvb, offset, length,
8705 "[Unknown] (%u bytes)", length);
8708 return;
8714 * 6.5.4.1.3. Error Message Parameters
8716 static void
8717 dissect_ff_msg_lr_get_info_err(
8718 tvbuff_t *tvb, gint offset,
8719 guint32 length, packet_info *pinfo, proto_tree *tree)
8721 proto_tree *sub_tree;
8722 proto_item *ti;
8723 guint8 ErrorClass;
8724 guint8 ErrorCode;
8725 const char *error_code;
8727 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Information Error");
8729 if (!tree) {
8730 return;
8733 ti = proto_tree_add_text(tree, tvb, offset, length,
8734 "LAN Redundancy Get Information Error");
8735 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_get_info_err);
8737 ErrorClass = tvb_get_guint8(tvb, offset);
8738 proto_tree_add_item(sub_tree,
8739 hf_ff_lr_get_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
8740 offset += 1;
8741 length -= 1;
8743 ErrorCode = tvb_get_guint8(tvb, offset);
8744 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
8745 proto_tree_add_uint_format_value(sub_tree, hf_ff_lr_get_info_err_err_code,
8746 tvb, offset, 1, ErrorCode,
8747 "%s (%u)", error_code, ErrorCode);
8748 offset += 1;
8749 length -= 1;
8751 proto_tree_add_item(sub_tree,
8752 hf_ff_lr_get_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
8753 offset += 2;
8754 length -= 2;
8756 proto_tree_add_item(sub_tree,
8757 hf_ff_lr_get_info_err_additional_desc,
8758 tvb, offset, 16, ENC_ASCII|ENC_NA);
8759 offset += 16;
8760 length -= 16;
8762 if (length) {
8763 proto_tree_add_text(sub_tree, tvb, offset, length,
8764 "[Unknown] (%u bytes)", length);
8767 return;
8773 * 6.5.4.2. LAN Redundancy Put Information (Confirmed Service Id = 2)
8774 * 6.5.4.2.1. Request Message Parameters
8776 static void
8777 dissect_ff_msg_lr_put_info_req_lr_flags(tvbuff_t *tvb,
8778 gint offset, proto_tree *tree, guint8 value)
8780 proto_tree *sub_tree;
8781 proto_item *ti;
8783 if (!tree) {
8784 return;
8787 ti = proto_tree_add_text(tree, tvb, offset, 1,
8788 "LAN Redundancy Flags: 0x%02x", value);
8789 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_put_info_req_lr_flags);
8792 * Bits 6-8: Reserved (not used) = 0
8793 * Bit 5: Load Balancing Enabled
8794 * 0 = False Do not do load balancing
8795 * 1 = True Do load balancing
8796 * Bit 4: Diagnosis Using Own Messages Enabled
8797 * 0 = False Do not use own diagnostic messages for diagnosis
8798 * 1 = True Use own diagnostic messages for diagnosis
8799 * Bit 3: Single Multicast Message Reception Interface Enabled
8800 * 0 = False Listen for multicast addresses
8801 * on both interfaces
8802 * 1 = True Listen for multicast addresses
8803 * on one interface
8804 * if zero or one fault detected
8805 * in network status table
8806 * Bit 2: Crossed Cable Detection Enabled
8807 * 0 = False Do not detect crossed cables
8808 * 1 = True Detect crossed cables
8809 * B1 (lsb): Single Multicast Message Transmission Interface Enabled
8810 * 0 = False Transmit on both interfaces
8811 * 1 = True Transmit on one interface
8813 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
8814 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_load_balance, tvb, offset, 1, ENC_BIG_ENDIAN);
8815 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_diag, tvb, offset, 1, ENC_BIG_ENDIAN);
8816 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_multi_recv, tvb, offset, 1, ENC_BIG_ENDIAN);
8817 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_cross_cable, tvb, offset, 1, ENC_BIG_ENDIAN);
8818 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_req_lr_flags_multi_trans, tvb, offset, 1, ENC_BIG_ENDIAN);
8823 static void
8824 dissect_ff_msg_lr_put_info_req(
8825 tvbuff_t *tvb, gint offset,
8826 guint32 length, packet_info *pinfo, proto_tree *tree)
8828 proto_tree *sub_tree;
8829 proto_item *ti;
8830 guint8 MaxMsgNumDiff;
8831 guint8 LRFlags;
8833 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Put Information Request");
8835 if (!tree) {
8836 return;
8839 ti = proto_tree_add_text(tree, tvb, offset, length,
8840 "LAN Redundancy Put Information Request");
8841 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_put_info_req);
8843 proto_tree_add_item(sub_tree,
8844 hf_ff_lr_put_info_req_lr_attrs_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
8845 offset += 4;
8846 length -= 4;
8848 MaxMsgNumDiff = tvb_get_guint8(tvb, offset);
8849 switch (MaxMsgNumDiff) {
8850 case 0:
8851 case 1:
8852 proto_tree_add_uint_format_value(sub_tree,
8853 hf_ff_lr_put_info_req_lr_max_msg_num_diff,
8854 tvb, offset, 1, MaxMsgNumDiff,
8855 "Do not detect a fault (%u)",
8856 MaxMsgNumDiff);
8857 break;
8859 default:
8860 proto_tree_add_item(sub_tree,
8861 hf_ff_lr_put_info_req_lr_max_msg_num_diff,
8862 tvb, offset, 1, ENC_BIG_ENDIAN);
8864 offset += 1;
8865 length -= 1;
8867 LRFlags = tvb_get_guint8(tvb, offset);
8868 dissect_ff_msg_lr_put_info_req_lr_flags(tvb, offset, sub_tree, LRFlags);
8869 offset += 1;
8870 length -= 1;
8872 proto_tree_add_item(sub_tree,
8873 hf_ff_lr_put_info_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
8874 offset += 2;
8875 length -= 2;
8877 proto_tree_add_item(sub_tree,
8878 hf_ff_lr_put_info_req_diagnostic_msg_intvl, tvb, offset, 4, ENC_BIG_ENDIAN);
8879 offset += 4;
8880 length -= 4;
8882 proto_tree_add_item(sub_tree,
8883 hf_ff_lr_put_info_req_aging_time, tvb, offset, 4, ENC_BIG_ENDIAN);
8884 offset += 4;
8885 length -= 4;
8887 proto_tree_add_item(sub_tree,
8888 hf_ff_lr_put_info_req_diagnostic_msg_if_a_send_addr,
8889 tvb, offset, 16, ENC_NA);
8890 offset += 16;
8891 length -= 16;
8893 proto_tree_add_item(sub_tree,
8894 hf_ff_lr_put_info_req_diagnostic_msg_if_a_recv_addr,
8895 tvb, offset, 16, ENC_NA);
8896 offset += 16;
8897 length -= 16;
8899 proto_tree_add_item(sub_tree,
8900 hf_ff_lr_put_info_req_diagnostic_msg_if_b_send_addr,
8901 tvb, offset, 16, ENC_NA);
8902 offset += 16;
8903 length -= 16;
8905 proto_tree_add_item(sub_tree,
8906 hf_ff_lr_put_info_req_diagnostic_msg_if_b_recv_addr,
8907 tvb, offset, 16, ENC_NA);
8908 offset += 16;
8909 length -= 16;
8911 if (length) {
8912 proto_tree_add_text(sub_tree, tvb, offset, length,
8913 "[Unknown] (%u bytes)", length);
8916 return;
8922 * 6.5.4.2.2. Response Message Parameters
8924 static void
8925 dissect_ff_msg_lr_put_info_rsp_lr_flags(tvbuff_t *tvb,
8926 gint offset, proto_tree *tree, guint8 value)
8928 proto_tree *sub_tree;
8929 proto_item *ti;
8931 if (!tree) {
8932 return;
8935 ti = proto_tree_add_text(tree, tvb, offset, 1,
8936 "LAN Redundancy Flags: 0x%02x", value);
8937 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_put_info_rsp_lr_flags);
8940 * Bits 6-8: Reserved (not used) = 0
8941 * Bit 5: Load Balancing Enabled
8942 * 0 = False Do not do load balancing
8943 * 1 = True Do load balancing
8944 * Bit 4: Diagnosis Using Own Messages Enabled
8945 * 0 = False Do not use own diagnostic messages for diagnosis
8946 * 1 = True Use own diagnostic messages for diagnosis
8947 * Bit 3: Single Multicast Message Reception Interface Enabled
8948 * 0 = False Listen for multicast addresses
8949 * on both interfaces
8950 * 1 = True Listen for multicast addresses
8951 * on one interface
8952 * if zero or one fault detected
8953 * in network status table
8954 * Bit 2: Crossed Cable Detection Enabled
8955 * 0 = False Do not detect crossed cables
8956 * 1 = True Detect crossed cables
8957 * B1 (lsb): Single Multicast Message Transmission Interface Enabled
8958 * 0 = False Transmit on both interfaces
8959 * 1 = True Transmit on one interface
8961 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
8962 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_load_balance, tvb, offset, 1, ENC_BIG_ENDIAN);
8963 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_diag, tvb, offset, 1, ENC_BIG_ENDIAN);
8964 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_multi_recv, tvb, offset, 1, ENC_BIG_ENDIAN);
8965 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_cross_cable, tvb, offset, 1, ENC_BIG_ENDIAN);
8966 proto_tree_add_item(sub_tree, hf_ff_lr_put_info_rsp_lr_flags_multi_trans, tvb, offset, 1, ENC_BIG_ENDIAN);
8971 static void
8972 dissect_ff_msg_lr_put_info_rsp(
8973 tvbuff_t *tvb, gint offset,
8974 guint32 length, packet_info *pinfo, proto_tree *tree)
8976 proto_tree *sub_tree;
8977 proto_item *ti;
8978 guint8 MaxMsgNumDiff;
8979 guint8 LRFlags;
8981 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Put Information Response");
8983 if (!tree) {
8984 return;
8987 ti = proto_tree_add_text(tree, tvb, offset, length,
8988 "LAN Redundancy Put Information Response");
8989 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_put_info_rsp);
8991 proto_tree_add_item(sub_tree,
8992 hf_ff_lr_put_info_rsp_lr_attrs_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
8993 offset += 4;
8994 length -= 4;
8996 MaxMsgNumDiff = tvb_get_guint8(tvb, offset);
8997 switch (MaxMsgNumDiff) {
8998 case 0:
8999 case 1:
9000 proto_tree_add_uint_format_value(sub_tree,
9001 hf_ff_lr_put_info_rsp_lr_max_msg_num_diff,
9002 tvb, offset, 1, MaxMsgNumDiff,
9003 "Do not detect a fault (%u)",
9004 MaxMsgNumDiff);
9005 break;
9007 default:
9008 proto_tree_add_item(sub_tree,
9009 hf_ff_lr_put_info_rsp_lr_max_msg_num_diff,
9010 tvb, offset, 1, ENC_BIG_ENDIAN);
9012 offset += 1;
9013 length -= 1;
9015 LRFlags = tvb_get_guint8(tvb, offset);
9016 dissect_ff_msg_lr_put_info_rsp_lr_flags(tvb, offset, sub_tree, LRFlags);
9017 offset += 1;
9018 length -= 1;
9020 proto_tree_add_item(sub_tree,
9021 hf_ff_lr_put_info_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
9022 offset += 2;
9023 length -= 2;
9025 proto_tree_add_item(sub_tree,
9026 hf_ff_lr_put_info_rsp_diagnostic_msg_intvl, tvb, offset, 4, ENC_BIG_ENDIAN);
9027 offset += 4;
9028 length -= 4;
9030 proto_tree_add_item(sub_tree,
9031 hf_ff_lr_put_info_rsp_aging_time, tvb, offset, 4, ENC_BIG_ENDIAN);
9032 offset += 4;
9033 length -= 4;
9035 proto_tree_add_item(sub_tree,
9036 hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_send_addr,
9037 tvb, offset, 16, ENC_NA);
9038 offset += 16;
9039 length -= 16;
9041 proto_tree_add_item(sub_tree,
9042 hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_recv_addr,
9043 tvb, offset, 16, ENC_NA);
9044 offset += 16;
9045 length -= 16;
9047 proto_tree_add_item(sub_tree,
9048 hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_send_addr,
9049 tvb, offset, 16, ENC_NA);
9050 offset += 16;
9051 length -= 16;
9053 proto_tree_add_item(sub_tree,
9054 hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_recv_addr,
9055 tvb, offset, 16, ENC_NA);
9056 offset += 16;
9057 length -= 16;
9059 if (length) {
9060 proto_tree_add_text(sub_tree, tvb, offset, length,
9061 "[Unknown] (%u bytes)", length);
9064 return;
9070 * 6.5.4.2.3. Error Message Parameters
9072 static void
9073 dissect_ff_msg_lr_put_info_err(
9074 tvbuff_t *tvb, gint offset,
9075 guint32 length, packet_info *pinfo, proto_tree *tree)
9077 proto_tree *sub_tree;
9078 proto_item *ti;
9079 guint8 ErrorClass;
9080 guint8 ErrorCode;
9081 const char *error_code;
9083 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Put Information Error");
9085 if (!tree) {
9086 return;
9089 ti = proto_tree_add_text(tree, tvb, offset, length,
9090 "LAN Redundancy Put Information Error");
9091 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_put_info_err);
9093 ErrorClass = tvb_get_guint8(tvb, offset);
9094 proto_tree_add_item(sub_tree,
9095 hf_ff_lr_put_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
9096 offset += 1;
9097 length -= 1;
9099 ErrorCode = tvb_get_guint8(tvb, offset);
9100 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
9101 proto_tree_add_uint_format_value(sub_tree, hf_ff_lr_put_info_err_err_code,
9102 tvb, offset, 1, ErrorCode,
9103 "%s (%u)", error_code, ErrorCode);
9104 offset += 1;
9105 length -= 1;
9107 proto_tree_add_item(sub_tree,
9108 hf_ff_lr_put_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
9109 offset += 2;
9110 length -= 2;
9112 proto_tree_add_item(sub_tree,
9113 hf_ff_lr_put_info_err_additional_desc,
9114 tvb, offset, 16, ENC_ASCII|ENC_NA);
9115 offset += 16;
9116 length -= 16;
9118 if (length) {
9119 proto_tree_add_text(sub_tree, tvb, offset, length,
9120 "[Unknown] (%u bytes)", length);
9123 return;
9129 * 6.5.4.3. LAN Redundancy Get Statistics (Confirmed Service Id = 3)
9130 * 6.5.4.3.1. Request Message Parameters
9132 static void
9133 dissect_ff_msg_lr_get_statistics_req(
9134 tvbuff_t *tvb, gint offset,
9135 guint32 length, packet_info *pinfo, proto_tree *tree)
9137 proto_tree *sub_tree;
9138 proto_item *ti;
9140 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Statistics Request");
9142 if (!tree) {
9143 return;
9146 if (length) {
9147 ti = proto_tree_add_text(tree, tvb, offset, length,
9148 "LAN Redundancy Get Statistics Request");
9149 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_get_statistics_req);
9151 proto_tree_add_text(sub_tree, tvb, offset, length,
9152 "[Unknown] (%u bytes)", length);
9155 return;
9161 * 6.5.4.3.2. Response Message Parameters
9163 static void
9164 dissect_ff_msg_lr_get_statistics_rsp_x_cable_stat(tvbuff_t *tvb,
9165 gint offset, proto_tree *tree, guint32 value)
9167 proto_tree *sub_tree;
9168 proto_item *ti;
9169 guint d;
9171 if (!tree) {
9172 return;
9175 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
9176 "List of Crossed Cable Status (%u bytes)", 4 * value);
9177 sub_tree = proto_item_add_subtree(ti,
9178 ett_ff_lr_get_statistics_rsp_list_of_x_cable_stat);
9180 for (d = 0; d < value; d++) {
9181 proto_tree_add_item(sub_tree,
9182 hf_ff_lr_get_statistics_rsp_x_cable_stat, tvb, offset, 4, ENC_BIG_ENDIAN);
9184 offset += 4;
9187 return;
9192 static void
9193 dissect_ff_msg_lr_get_statistics_rsp(
9194 tvbuff_t *tvb, gint offset,
9195 guint32 length, packet_info *pinfo, proto_tree *tree)
9197 proto_tree *sub_tree;
9198 proto_item *ti;
9199 guint32 NumXcableStat;
9201 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Statistics Response");
9203 if (!tree) {
9204 return;
9207 ti = proto_tree_add_text(tree, tvb, offset, length,
9208 "LAN Redundancy Get Statistics Response");
9209 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_get_statistics_rsp);
9211 proto_tree_add_item(sub_tree,
9212 hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_a,
9213 tvb, offset, 4, ENC_BIG_ENDIAN);
9214 offset += 4;
9215 length -= 4;
9217 proto_tree_add_item(sub_tree,
9218 hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_a,
9219 tvb, offset, 4, ENC_BIG_ENDIAN);
9220 offset += 4;
9221 length -= 4;
9223 proto_tree_add_item(sub_tree,
9224 hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_a,
9225 tvb, offset, 4, ENC_BIG_ENDIAN);
9226 offset += 4;
9227 length -= 4;
9229 proto_tree_add_item(sub_tree,
9230 hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_b,
9231 tvb, offset, 4, ENC_BIG_ENDIAN);
9232 offset += 4;
9233 length -= 4;
9235 proto_tree_add_item(sub_tree,
9236 hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_b,
9237 tvb, offset, 4, ENC_BIG_ENDIAN);
9238 offset += 4;
9239 length -= 4;
9241 proto_tree_add_item(sub_tree,
9242 hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_b,
9243 tvb, offset, 4, ENC_BIG_ENDIAN);
9244 offset += 4;
9245 length -= 4;
9247 NumXcableStat = tvb_get_ntohl(tvb, offset);
9248 proto_tree_add_item(sub_tree,
9249 hf_ff_lr_get_statistics_rsp_num_x_cable_stat, tvb, offset, 4, ENC_BIG_ENDIAN);
9250 offset += 4;
9251 length -= 4;
9253 if (NumXcableStat) {
9254 dissect_ff_msg_lr_get_statistics_rsp_x_cable_stat(tvb,
9255 offset, sub_tree, NumXcableStat);
9256 offset += 4 * NumXcableStat;
9257 length -= 4 * NumXcableStat;
9260 if (length) {
9261 proto_tree_add_text(sub_tree, tvb, offset, length,
9262 "[Unknown] (%u bytes)", length);
9265 return;
9271 * 6.5.4.3.3. Error Message Parameters
9273 static void
9274 dissect_ff_msg_lr_get_statistics_err(
9275 tvbuff_t *tvb, gint offset,
9276 guint32 length, packet_info *pinfo, proto_tree *tree)
9278 proto_tree *sub_tree;
9279 proto_item *ti;
9280 guint8 ErrorClass;
9281 guint8 ErrorCode;
9282 const char *error_code;
9284 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Statistics Error");
9286 if (!tree) {
9287 return;
9290 ti = proto_tree_add_text(tree, tvb, offset, length,
9291 "LAN Redundancy Get Statistics Error");
9292 sub_tree = proto_item_add_subtree(ti,
9293 ett_ff_lr_get_statistics_err);
9295 ErrorClass = tvb_get_guint8(tvb, offset);
9296 proto_tree_add_item(sub_tree,
9297 hf_ff_lr_get_statistics_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
9298 offset += 1;
9299 length -= 1;
9301 ErrorCode = tvb_get_guint8(tvb, offset);
9302 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
9303 proto_tree_add_uint_format_value(sub_tree,
9304 hf_ff_lr_get_statistics_err_err_code,
9305 tvb, offset, 1, ErrorCode,
9306 "%s (%u)", error_code, ErrorCode);
9307 offset += 1;
9308 length -= 1;
9310 proto_tree_add_item(sub_tree,
9311 hf_ff_lr_get_statistics_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
9312 offset += 2;
9313 length -= 2;
9315 proto_tree_add_item(sub_tree,
9316 hf_ff_lr_get_statistics_err_additional_desc,
9317 tvb, offset, 16, ENC_ASCII|ENC_NA);
9318 offset += 16;
9319 length -= 16;
9321 if (length) {
9322 proto_tree_add_text(sub_tree, tvb, offset, length,
9323 "[Unknown] (%u bytes)", length);
9326 return;
9332 * 6.5.4.4. Diagnostic Message (Unconfirmed Service Id = 1)
9333 * 6.5.4.4.1. Request Message Parameters
9335 static void
9336 dissect_ff_msg_diagnostic_msg_req_dup_detection_stat(tvbuff_t *tvb,
9337 gint offset, proto_tree *tree, guint8 value)
9339 proto_tree *sub_tree;
9340 proto_item *ti;
9342 if (!tree) {
9343 return;
9346 ti = proto_tree_add_text(tree, tvb, offset, 1,
9347 "Duplicate Detection State: 0x%02x", value);
9348 sub_tree = proto_item_add_subtree(ti,
9349 ett_ff_lr_diagnostic_msg_req_dup_detection_stat);
9352 * Bits 3-8: Reserved, set to 0.
9353 * Bit 2: 1 = Duplicate PD Tag Detected
9354 * 0 = Duplicate PD Tag Not Detected
9355 * Bit 18: 1 = Duplicate Device Index Detected
9356 * 0 = Duplicate Device Index Not Detected
9358 proto_tree_add_item(sub_tree, hf_ff_lr_diagnostic_msg_req_dup_detection_state_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
9359 proto_tree_add_item(sub_tree, hf_ff_lr_diagnostic_msg_req_dup_detection_state_pd_tag, tvb, offset, 1, ENC_BIG_ENDIAN);
9360 proto_tree_add_item(sub_tree, hf_ff_lr_diagnostic_msg_req_dup_detection_state_device, tvb, offset, 1, ENC_BIG_ENDIAN);
9365 static void
9366 dissect_ff_msg_diagnostic_msg_req_if_a_to_a_status(tvbuff_t *tvb,
9367 gint offset, proto_tree *tree, guint32 value)
9369 proto_tree *sub_tree;
9370 proto_item *ti;
9371 guint d;
9373 if (!tree) {
9374 return;
9377 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
9378 "List of Interface AtoA Statuses (%u bytes)", 4 * value);
9379 sub_tree = proto_item_add_subtree(ti,
9380 ett_ff_lr_diagnostic_msg_req_a_to_a_status);
9382 for (d = 0; d < value; d++) {
9383 proto_tree_add_item(sub_tree,
9384 hf_ff_lr_diagnostic_msg_req_if_a_to_a_status,
9385 tvb, offset, 4, ENC_BIG_ENDIAN);
9387 offset += 4;
9390 return;
9395 static void
9396 dissect_ff_msg_diagnostic_msg_req_if_b_to_a_status(tvbuff_t *tvb,
9397 gint offset, proto_tree *tree, guint32 value)
9399 proto_tree *sub_tree;
9400 proto_item *ti;
9401 guint d;
9403 if (!tree) {
9404 return;
9407 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
9408 "List of Interface BtoA Statuses (%u bytes)", 4 * value);
9409 sub_tree = proto_item_add_subtree(ti,
9410 ett_ff_lr_diagnostic_msg_req_b_to_a_status);
9412 for (d = 0; d < value; d++) {
9413 proto_tree_add_item(sub_tree,
9414 hf_ff_lr_diagnostic_msg_req_if_b_to_a_status,
9415 tvb, offset, 4, ENC_BIG_ENDIAN);
9417 offset += 4;
9420 return;
9425 static void
9426 dissect_ff_msg_diagnostic_msg_req_if_a_to_b_status(tvbuff_t *tvb,
9427 gint offset, proto_tree *tree, guint32 value)
9429 proto_tree *sub_tree;
9430 proto_item *ti;
9431 guint d;
9433 if (!tree) {
9434 return;
9437 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
9438 "List of Interface AtoB Statuses (%u bytes)", 4 * value);
9439 sub_tree = proto_item_add_subtree(ti,
9440 ett_ff_lr_diagnostic_msg_req_a_to_b_status);
9442 for (d = 0; d < value; d++) {
9443 proto_tree_add_item(sub_tree,
9444 hf_ff_lr_diagnostic_msg_req_if_a_to_b_status,
9445 tvb, offset, 4, ENC_BIG_ENDIAN);
9447 offset += 4;
9450 return;
9455 static void
9456 dissect_ff_msg_diagnostic_msg_req_if_b_to_b_status(tvbuff_t *tvb,
9457 gint offset, proto_tree *tree, guint32 value)
9459 proto_tree *sub_tree;
9460 proto_item *ti;
9461 guint d;
9463 if (!tree) {
9464 return;
9467 ti = proto_tree_add_text(tree, tvb, offset, 4 * value,
9468 "List of Interface BtoB Statuses (%u bytes)", 4 * value);
9469 sub_tree = proto_item_add_subtree(ti,
9470 ett_ff_lr_diagnostic_msg_req_b_to_b_status);
9472 for (d = 0; d < value; d++) {
9473 proto_tree_add_item(sub_tree,
9474 hf_ff_lr_diagnostic_msg_req_if_b_to_b_status,
9475 tvb, offset, 4, ENC_BIG_ENDIAN);
9477 offset += 4;
9480 return;
9485 static void
9486 dissect_ff_msg_diagnostic_msg_req(
9487 tvbuff_t *tvb, gint offset,
9488 guint32 length, packet_info *pinfo, proto_tree *tree)
9490 proto_tree *sub_tree;
9491 proto_item *ti;
9492 guint16 DeviceIndex;
9493 guint8 DuplicateDetectionState;
9494 guint16 NumOfInterfaceStatuses;
9496 col_set_str(pinfo->cinfo, COL_INFO, "Diagnostic Message Request");
9498 if (!tree) {
9499 return;
9502 ti = proto_tree_add_text(tree, tvb, offset, length,
9503 "Diagnostic Message Request");
9504 sub_tree = proto_item_add_subtree(ti, ett_ff_lr_diagnostic_msg_req);
9506 DeviceIndex = tvb_get_ntohs(tvb, offset);
9507 if (DeviceIndex) {
9508 proto_tree_add_item(sub_tree,
9509 hf_ff_lr_diagnostic_msg_req_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
9510 } else {
9511 proto_tree_add_uint_format_value(sub_tree,
9512 hf_ff_lr_diagnostic_msg_req_dev_idx,
9513 tvb, offset, 2, DeviceIndex,
9514 "Index not assigned (%u)", DeviceIndex);
9516 offset += 2;
9517 length -= 2;
9519 proto_tree_add_item(sub_tree,
9520 hf_ff_lr_diagnostic_msg_req_num_of_network_ifs,
9521 tvb, offset, 1, ENC_BIG_ENDIAN);
9522 offset += 1;
9523 length -= 1;
9525 proto_tree_add_item(sub_tree,
9526 hf_ff_lr_diagnostic_msg_req_transmission_if, tvb, offset, 1, ENC_BIG_ENDIAN);
9527 offset += 1;
9528 length -= 1;
9530 proto_tree_add_item(sub_tree,
9531 hf_ff_lr_diagnostic_msg_req_diagnostic_msg_intvl,
9532 tvb, offset, 4, ENC_BIG_ENDIAN);
9533 offset += 4;
9534 length -= 4;
9536 proto_tree_add_item(sub_tree,
9537 hf_ff_lr_diagnostic_msg_req_pd_tag, tvb, offset, 32, ENC_ASCII|ENC_NA);
9538 offset += 32;
9539 length -= 32;
9541 proto_tree_add_item(sub_tree,
9542 hf_ff_lr_diagnostic_msg_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
9543 offset += 1;
9544 length -= 1;
9546 DuplicateDetectionState = tvb_get_guint8(tvb, offset);
9547 dissect_ff_msg_diagnostic_msg_req_dup_detection_stat(tvb,
9548 offset, sub_tree, DuplicateDetectionState);
9549 offset += 1;
9550 length -= 1;
9552 NumOfInterfaceStatuses = tvb_get_ntohs(tvb, offset);
9553 proto_tree_add_item(sub_tree,
9554 hf_ff_lr_diagnostic_msg_req_num_of_if_statuses, tvb, offset, 2, ENC_BIG_ENDIAN);
9555 offset += 2;
9556 length -= 2;
9558 if (NumOfInterfaceStatuses) {
9559 dissect_ff_msg_diagnostic_msg_req_if_a_to_a_status(tvb,
9560 offset, sub_tree, NumOfInterfaceStatuses);
9561 offset += 4 * NumOfInterfaceStatuses;
9562 length -= 4 * NumOfInterfaceStatuses;
9564 dissect_ff_msg_diagnostic_msg_req_if_b_to_a_status(tvb,
9565 offset, sub_tree, NumOfInterfaceStatuses);
9566 offset += 4 * NumOfInterfaceStatuses;
9567 length -= 4 * NumOfInterfaceStatuses;
9569 dissect_ff_msg_diagnostic_msg_req_if_a_to_b_status(tvb,
9570 offset, sub_tree, NumOfInterfaceStatuses);
9571 offset += 4 * NumOfInterfaceStatuses;
9572 length -= 4 * NumOfInterfaceStatuses;
9574 dissect_ff_msg_diagnostic_msg_req_if_b_to_b_status(tvb,
9575 offset, sub_tree, NumOfInterfaceStatuses);
9576 offset += 4 * NumOfInterfaceStatuses;
9577 length -= 4 * NumOfInterfaceStatuses;
9580 if (length) {
9581 proto_tree_add_text(sub_tree, tvb, offset, length,
9582 "[Unknown] (%u bytes)", length);
9585 return;
9591 * 6.5. Service-Specific Parameters
9593 static void
9594 dissect_ff_msg_body(tvbuff_t *tvb, gint offset, guint32 length,
9595 packet_info *pinfo, proto_tree *tree,
9596 guint8 ProtocolAndType, guint8 Service, guint32 FDAAddress)
9598 proto_item *hidden_item;
9599 guint16 message = 0;
9601 message = ((guint16)ProtocolAndType) << 8;
9602 message |= (guint16)Service;
9604 switch (message) {
9605 case FDA_MSG_SESSION_OPEN_REQ:
9606 hidden_item = proto_tree_add_boolean(tree,
9607 hf_ff_fda, tvb, 0, 0, 1);
9608 PROTO_ITEM_SET_HIDDEN(hidden_item);
9609 hidden_item = proto_tree_add_boolean(tree,
9610 hf_ff_fda_open_sess, tvb, 0, 0, 1);
9611 PROTO_ITEM_SET_HIDDEN(hidden_item);
9612 hidden_item = proto_tree_add_boolean(tree,
9613 hf_ff_fda_open_sess_req, tvb, 0, 0, 1);
9614 PROTO_ITEM_SET_HIDDEN(hidden_item);
9616 dissect_ff_msg_fda_open_sess_req(tvb, offset, length,
9617 pinfo, tree);
9618 break;
9620 case FDA_MSG_SESSION_OPEN_RSP:
9621 hidden_item = proto_tree_add_boolean(tree,
9622 hf_ff_fda, tvb, 0, 0, 1);
9623 PROTO_ITEM_SET_HIDDEN(hidden_item);
9624 hidden_item = proto_tree_add_boolean(tree,
9625 hf_ff_fda_open_sess, tvb, 0, 0, 1);
9626 PROTO_ITEM_SET_HIDDEN(hidden_item);
9627 hidden_item = proto_tree_add_boolean(tree,
9628 hf_ff_fda_open_sess_rsp, tvb, 0, 0, 1);
9629 PROTO_ITEM_SET_HIDDEN(hidden_item);
9631 dissect_ff_msg_fda_open_sess_rsp(tvb, offset, length,
9632 pinfo, tree);
9633 break;
9635 case FDA_MSG_SESSION_OPEN_ERR:
9636 hidden_item = proto_tree_add_boolean(tree,
9637 hf_ff_fda, tvb, 0, 0, 1);
9638 PROTO_ITEM_SET_HIDDEN(hidden_item);
9639 hidden_item = proto_tree_add_boolean(tree,
9640 hf_ff_fda_open_sess, tvb, 0, 0, 1);
9641 PROTO_ITEM_SET_HIDDEN(hidden_item);
9642 hidden_item = proto_tree_add_boolean(tree,
9643 hf_ff_fda_open_sess_err, tvb, 0, 0, 1);
9644 PROTO_ITEM_SET_HIDDEN(hidden_item);
9646 dissect_ff_msg_fda_open_sess_err(tvb, offset, length,
9647 pinfo, tree);
9648 break;
9650 case FDA_MSG_SESSION_IDLE_REQ:
9651 hidden_item = proto_tree_add_boolean(tree,
9652 hf_ff_fda, tvb, 0, 0, 1);
9653 PROTO_ITEM_SET_HIDDEN(hidden_item);
9654 hidden_item = proto_tree_add_boolean(tree,
9655 hf_ff_fda_idle, tvb, 0, 0, 1);
9656 PROTO_ITEM_SET_HIDDEN(hidden_item);
9657 hidden_item = proto_tree_add_boolean(tree,
9658 hf_ff_fda_idle_req, tvb, 0, 0, 1);
9659 PROTO_ITEM_SET_HIDDEN(hidden_item);
9661 dissect_ff_msg_fda_idle_req(tvb, offset, length,
9662 pinfo, tree);
9663 break;
9665 case FDA_MSG_SESSION_IDLE_RSP:
9666 hidden_item = proto_tree_add_boolean(tree,
9667 hf_ff_fda, tvb, 0, 0, 1);
9668 PROTO_ITEM_SET_HIDDEN(hidden_item);
9669 hidden_item = proto_tree_add_boolean(tree,
9670 hf_ff_fda_idle, tvb, 0, 0, 1);
9671 PROTO_ITEM_SET_HIDDEN(hidden_item);
9672 hidden_item = proto_tree_add_boolean(tree,
9673 hf_ff_fda_idle_rsp, tvb, 0, 0, 1);
9674 PROTO_ITEM_SET_HIDDEN(hidden_item);
9676 dissect_ff_msg_fda_idle_rsp(tvb, offset, length,
9677 pinfo, tree);
9678 break;
9680 case FDA_MSG_SESSION_IDLE_ERR:
9681 hidden_item = proto_tree_add_boolean(tree,
9682 hf_ff_fda, tvb, 0, 0, 1);
9683 PROTO_ITEM_SET_HIDDEN(hidden_item);
9684 hidden_item = proto_tree_add_boolean(tree,
9685 hf_ff_fda_idle, tvb, 0, 0, 1);
9686 PROTO_ITEM_SET_HIDDEN(hidden_item);
9687 hidden_item = proto_tree_add_boolean(tree,
9688 hf_ff_fda_idle_err, tvb, 0, 0, 1);
9689 PROTO_ITEM_SET_HIDDEN(hidden_item);
9691 dissect_ff_msg_fda_idle_err(tvb, offset, length,
9692 pinfo, tree);
9693 break;
9695 case SM_MSG_FIND_TAG_QUERY_REQ:
9696 hidden_item = proto_tree_add_boolean(tree,
9697 hf_ff_sm, tvb, 0, 0, 1);
9698 PROTO_ITEM_SET_HIDDEN(hidden_item);
9699 hidden_item = proto_tree_add_boolean(tree,
9700 hf_ff_sm_find_tag_query, tvb, 0, 0, 1);
9701 PROTO_ITEM_SET_HIDDEN(hidden_item);
9702 hidden_item = proto_tree_add_boolean(tree,
9703 hf_ff_sm_find_tag_query_req, tvb, 0, 0, 1);
9704 PROTO_ITEM_SET_HIDDEN(hidden_item);
9706 dissect_ff_msg_sm_find_tag_query_req(tvb, offset, length,
9707 pinfo, tree);
9708 break;
9710 case SM_MSG_FIND_TAG_REPLY_REQ:
9711 hidden_item = proto_tree_add_boolean(tree,
9712 hf_ff_sm, tvb, 0, 0, 1);
9713 PROTO_ITEM_SET_HIDDEN(hidden_item);
9714 hidden_item = proto_tree_add_boolean(tree,
9715 hf_ff_sm_find_tag_reply, tvb, 0, 0, 1);
9716 PROTO_ITEM_SET_HIDDEN(hidden_item);
9717 hidden_item = proto_tree_add_boolean(tree,
9718 hf_ff_sm_find_tag_reply_req, tvb, 0, 0, 1);
9719 PROTO_ITEM_SET_HIDDEN(hidden_item);
9721 dissect_ff_msg_sm_find_tag_reply_req(tvb, offset, length,
9722 pinfo, tree);
9723 break;
9725 case SM_MSG_IDENTIFY_REQ:
9726 hidden_item = proto_tree_add_boolean(tree,
9727 hf_ff_sm, tvb, 0, 0, 1);
9728 PROTO_ITEM_SET_HIDDEN(hidden_item);
9729 hidden_item = proto_tree_add_boolean(tree,
9730 hf_ff_sm_id, tvb, 0, 0, 1);
9731 PROTO_ITEM_SET_HIDDEN(hidden_item);
9732 hidden_item = proto_tree_add_boolean(tree,
9733 hf_ff_sm_id_req, tvb, 0, 0, 1);
9734 PROTO_ITEM_SET_HIDDEN(hidden_item);
9736 dissect_ff_msg_sm_id_req(tvb, offset, length,
9737 pinfo, tree);
9738 break;
9740 case SM_MSG_IDENTIFY_RSP:
9741 hidden_item = proto_tree_add_boolean(tree,
9742 hf_ff_sm, tvb, 0, 0, 1);
9743 PROTO_ITEM_SET_HIDDEN(hidden_item);
9744 hidden_item = proto_tree_add_boolean(tree,
9745 hf_ff_sm_id, tvb, 0, 0, 1);
9746 PROTO_ITEM_SET_HIDDEN(hidden_item);
9747 hidden_item = proto_tree_add_boolean(tree,
9748 hf_ff_sm_id_rsp, tvb, 0, 0, 1);
9749 PROTO_ITEM_SET_HIDDEN(hidden_item);
9751 dissect_ff_msg_sm_id_rsp(tvb, offset, length,
9752 pinfo, tree, FDAAddress);
9753 break;
9755 case SM_MSG_IDENTIFY_ERR:
9756 hidden_item = proto_tree_add_boolean(tree,
9757 hf_ff_sm, tvb, 0, 0, 1);
9758 PROTO_ITEM_SET_HIDDEN(hidden_item);
9759 hidden_item = proto_tree_add_boolean(tree,
9760 hf_ff_sm_id, tvb, 0, 0, 1);
9761 PROTO_ITEM_SET_HIDDEN(hidden_item);
9762 hidden_item = proto_tree_add_boolean(tree,
9763 hf_ff_sm_id_err, tvb, 0, 0, 1);
9764 PROTO_ITEM_SET_HIDDEN(hidden_item);
9766 dissect_ff_msg_sm_id_err(tvb, offset, length,
9767 pinfo, tree);
9768 break;
9770 case SM_MSG_CLEAR_ADDRESS_REQ:
9771 hidden_item = proto_tree_add_boolean(tree,
9772 hf_ff_sm, tvb, 0, 0, 1);
9773 PROTO_ITEM_SET_HIDDEN(hidden_item);
9774 hidden_item = proto_tree_add_boolean(tree,
9775 hf_ff_sm_clear_addr, tvb, 0, 0, 1);
9776 PROTO_ITEM_SET_HIDDEN(hidden_item);
9777 hidden_item = proto_tree_add_boolean(tree,
9778 hf_ff_sm_clear_addr_req, tvb, 0, 0, 1);
9779 PROTO_ITEM_SET_HIDDEN(hidden_item);
9781 dissect_ff_msg_sm_clear_addr_req(tvb, offset, length,
9782 pinfo, tree);
9783 break;
9785 case SM_MSG_CLEAR_ADDRESS_RSP:
9786 hidden_item = proto_tree_add_boolean(tree,
9787 hf_ff_sm, tvb, 0, 0, 1);
9788 PROTO_ITEM_SET_HIDDEN(hidden_item);
9789 hidden_item = proto_tree_add_boolean(tree,
9790 hf_ff_sm_clear_addr, tvb, 0, 0, 1);
9791 PROTO_ITEM_SET_HIDDEN(hidden_item);
9792 hidden_item = proto_tree_add_boolean(tree,
9793 hf_ff_sm_clear_addr_rsp, tvb, 0, 0, 1);
9794 PROTO_ITEM_SET_HIDDEN(hidden_item);
9796 dissect_ff_msg_sm_clear_addr_rsp(tvb, offset, length,
9797 pinfo, tree);
9798 break;
9800 case SM_MSG_CLEAR_ADDRESS_ERR:
9801 hidden_item = proto_tree_add_boolean(tree,
9802 hf_ff_sm, tvb, 0, 0, 1);
9803 PROTO_ITEM_SET_HIDDEN(hidden_item);
9804 hidden_item = proto_tree_add_boolean(tree,
9805 hf_ff_sm_clear_addr, tvb, 0, 0, 1);
9806 PROTO_ITEM_SET_HIDDEN(hidden_item);
9807 hidden_item = proto_tree_add_boolean(tree,
9808 hf_ff_sm_clear_addr_err, tvb, 0, 0, 1);
9809 PROTO_ITEM_SET_HIDDEN(hidden_item);
9811 dissect_ff_msg_sm_clear_addr_err(tvb, offset, length,
9812 pinfo, tree);
9813 break;
9815 case SM_MSG_SET_ASSIGNMENT_REQ:
9816 hidden_item = proto_tree_add_boolean(tree,
9817 hf_ff_sm, tvb, 0, 0, 1);
9818 PROTO_ITEM_SET_HIDDEN(hidden_item);
9819 hidden_item = proto_tree_add_boolean(tree,
9820 hf_ff_sm_set_assign_info, tvb, 0, 0, 1);
9821 PROTO_ITEM_SET_HIDDEN(hidden_item);
9822 hidden_item = proto_tree_add_boolean(tree,
9823 hf_ff_sm_set_assign_info_req, tvb, 0, 0, 1);
9824 PROTO_ITEM_SET_HIDDEN(hidden_item);
9826 dissect_ff_msg_sm_set_assign_info_req(tvb, offset,
9827 length, pinfo, tree);
9828 break;
9830 case SM_MSG_SET_ASSIGNMENT_RSP:
9831 hidden_item = proto_tree_add_boolean(tree,
9832 hf_ff_sm, tvb, 0, 0, 1);
9833 PROTO_ITEM_SET_HIDDEN(hidden_item);
9834 hidden_item = proto_tree_add_boolean(tree,
9835 hf_ff_sm_set_assign_info, tvb, 0, 0, 1);
9836 PROTO_ITEM_SET_HIDDEN(hidden_item);
9837 hidden_item = proto_tree_add_boolean(tree,
9838 hf_ff_sm_set_assign_info_rsp, tvb, 0, 0, 1);
9839 PROTO_ITEM_SET_HIDDEN(hidden_item);
9841 dissect_ff_msg_sm_set_assign_info_rsp(tvb, offset,
9842 length, pinfo, tree);
9843 break;
9845 case SM_MSG_SET_ASSIGNMENT_ERR:
9846 hidden_item = proto_tree_add_boolean(tree,
9847 hf_ff_sm, tvb, 0, 0, 1);
9848 PROTO_ITEM_SET_HIDDEN(hidden_item);
9849 hidden_item = proto_tree_add_boolean(tree,
9850 hf_ff_sm_set_assign_info, tvb, 0, 0, 1);
9851 PROTO_ITEM_SET_HIDDEN(hidden_item);
9852 hidden_item = proto_tree_add_boolean(tree,
9853 hf_ff_sm_set_assign_info_err, tvb, 0, 0, 1);
9854 PROTO_ITEM_SET_HIDDEN(hidden_item);
9856 dissect_ff_msg_sm_set_assign_info_err(tvb, offset,
9857 length, pinfo, tree);
9858 break;
9860 case SM_MSG_CLEAR_ASSIGNMENT_REQ:
9861 hidden_item = proto_tree_add_boolean(tree,
9862 hf_ff_sm, tvb, 0, 0, 1);
9863 PROTO_ITEM_SET_HIDDEN(hidden_item);
9864 hidden_item = proto_tree_add_boolean(tree,
9865 hf_ff_sm_clear_assign_info, tvb, 0, 0, 1);
9866 PROTO_ITEM_SET_HIDDEN(hidden_item);
9867 hidden_item = proto_tree_add_boolean(tree,
9868 hf_ff_sm_clear_assign_info_req, tvb, 0, 0, 1);
9869 PROTO_ITEM_SET_HIDDEN(hidden_item);
9871 dissect_ff_msg_sm_clear_assign_info_req(tvb, offset,
9872 length, pinfo, tree);
9873 break;
9875 case SM_MSG_CLEAR_ASSIGNMENT_RSP:
9876 hidden_item = proto_tree_add_boolean(tree,
9877 hf_ff_sm, tvb, 0, 0, 1);
9878 PROTO_ITEM_SET_HIDDEN(hidden_item);
9879 hidden_item = proto_tree_add_boolean(tree,
9880 hf_ff_sm_clear_assign_info, tvb, 0, 0, 1);
9881 PROTO_ITEM_SET_HIDDEN(hidden_item);
9882 hidden_item = proto_tree_add_boolean(tree,
9883 hf_ff_sm_clear_assign_info_rsp, tvb, 0, 0, 1);
9884 PROTO_ITEM_SET_HIDDEN(hidden_item);
9886 dissect_ff_msg_sm_clear_assign_info_rsp(tvb, offset,
9887 length, pinfo, tree);
9888 break;
9890 case SM_MSG_CLEAR_ASSIGNMENT_ERR:
9891 hidden_item = proto_tree_add_boolean(tree,
9892 hf_ff_sm, tvb, 0, 0, 1);
9893 PROTO_ITEM_SET_HIDDEN(hidden_item);
9894 hidden_item = proto_tree_add_boolean(tree,
9895 hf_ff_sm_clear_assign_info, tvb, 0, 0, 1);
9896 PROTO_ITEM_SET_HIDDEN(hidden_item);
9897 hidden_item = proto_tree_add_boolean(tree,
9898 hf_ff_sm_clear_assign_info_err, tvb, 0, 0, 1);
9899 PROTO_ITEM_SET_HIDDEN(hidden_item);
9901 dissect_ff_msg_sm_clear_assign_info_err(tvb, offset,
9902 length, pinfo, tree);
9903 break;
9905 case SM_MSG_DEVICE_ANNUNCIATION_REQ:
9906 hidden_item = proto_tree_add_boolean(tree,
9907 hf_ff_sm, tvb, 0, 0, 1);
9908 PROTO_ITEM_SET_HIDDEN(hidden_item);
9909 hidden_item = proto_tree_add_boolean(tree,
9910 hf_ff_sm_dev_annunc, tvb, 0, 0, 1);
9911 PROTO_ITEM_SET_HIDDEN(hidden_item);
9912 hidden_item = proto_tree_add_boolean(tree,
9913 hf_ff_sm_dev_annunc_req, tvb, 0, 0, 1);
9914 PROTO_ITEM_SET_HIDDEN(hidden_item);
9916 dissect_ff_msg_sm_dev_annunc_req(tvb, offset,
9917 length, pinfo, tree, FDAAddress);
9918 break;
9920 case FMS_MSG_INITIATE_REQ:
9921 hidden_item = proto_tree_add_boolean(tree,
9922 hf_ff_fms, tvb, 0, 0, 1);
9923 PROTO_ITEM_SET_HIDDEN(hidden_item);
9924 hidden_item = proto_tree_add_boolean(tree,
9925 hf_ff_fms_init, tvb, 0, 0, 1);
9926 PROTO_ITEM_SET_HIDDEN(hidden_item);
9927 hidden_item = proto_tree_add_boolean(tree,
9928 hf_ff_fms_init_req, tvb, 0, 0, 1);
9929 PROTO_ITEM_SET_HIDDEN(hidden_item);
9931 dissect_ff_msg_fms_init_req(tvb, offset,
9932 length, pinfo, tree);
9933 break;
9935 case FMS_MSG_INITIATE_RSP:
9936 hidden_item = proto_tree_add_boolean(tree,
9937 hf_ff_fms, tvb, 0, 0, 1);
9938 PROTO_ITEM_SET_HIDDEN(hidden_item);
9939 hidden_item = proto_tree_add_boolean(tree,
9940 hf_ff_fms_init, tvb, 0, 0, 1);
9941 PROTO_ITEM_SET_HIDDEN(hidden_item);
9942 hidden_item = proto_tree_add_boolean(tree,
9943 hf_ff_fms_init_rsp, tvb, 0, 0, 1);
9944 PROTO_ITEM_SET_HIDDEN(hidden_item);
9946 dissect_ff_msg_fms_init_rsp(tvb, offset,
9947 length, pinfo, tree);
9948 break;
9950 case FMS_MSG_INITIATE_ERR:
9951 hidden_item = proto_tree_add_boolean(tree,
9952 hf_ff_fms, tvb, 0, 0, 1);
9953 PROTO_ITEM_SET_HIDDEN(hidden_item);
9954 hidden_item = proto_tree_add_boolean(tree,
9955 hf_ff_fms_init, tvb, 0, 0, 1);
9956 PROTO_ITEM_SET_HIDDEN(hidden_item);
9957 hidden_item = proto_tree_add_boolean(tree,
9958 hf_ff_fms_init_err, tvb, 0, 0, 1);
9959 PROTO_ITEM_SET_HIDDEN(hidden_item);
9961 dissect_ff_msg_fms_init_err(tvb, offset,
9962 length, pinfo, tree);
9963 break;
9965 case FMS_MSG_ABORT_REQ:
9966 hidden_item = proto_tree_add_boolean(tree,
9967 hf_ff_fms, tvb, 0, 0, 1);
9968 PROTO_ITEM_SET_HIDDEN(hidden_item);
9969 hidden_item = proto_tree_add_boolean(tree,
9970 hf_ff_fms_abort, tvb, 0, 0, 1);
9971 PROTO_ITEM_SET_HIDDEN(hidden_item);
9972 hidden_item = proto_tree_add_boolean(tree,
9973 hf_ff_fms_abort_req, tvb, 0, 0, 1);
9974 PROTO_ITEM_SET_HIDDEN(hidden_item);
9976 dissect_ff_msg_fms_abort_req(tvb, offset,
9977 length, pinfo, tree);
9978 break;
9980 case FMS_MSG_STATUS_REQ:
9981 hidden_item = proto_tree_add_boolean(tree,
9982 hf_ff_fms, tvb, 0, 0, 1);
9983 PROTO_ITEM_SET_HIDDEN(hidden_item);
9984 hidden_item = proto_tree_add_boolean(tree,
9985 hf_ff_fms_status, tvb, 0, 0, 1);
9986 PROTO_ITEM_SET_HIDDEN(hidden_item);
9987 hidden_item = proto_tree_add_boolean(tree,
9988 hf_ff_fms_status_req, tvb, 0, 0, 1);
9989 PROTO_ITEM_SET_HIDDEN(hidden_item);
9991 dissect_ff_msg_fms_status_req(tvb, offset,
9992 length, pinfo, tree);
9993 break;
9995 case FMS_MSG_STATUS_RSP:
9996 hidden_item = proto_tree_add_boolean(tree,
9997 hf_ff_fms, tvb, 0, 0, 1);
9998 PROTO_ITEM_SET_HIDDEN(hidden_item);
9999 hidden_item = proto_tree_add_boolean(tree,
10000 hf_ff_fms_status, tvb, 0, 0, 1);
10001 PROTO_ITEM_SET_HIDDEN(hidden_item);
10002 hidden_item = proto_tree_add_boolean(tree,
10003 hf_ff_fms_status_rsp, tvb, 0, 0, 1);
10004 PROTO_ITEM_SET_HIDDEN(hidden_item);
10006 dissect_ff_msg_fms_status_rsp(tvb, offset,
10007 length, pinfo, tree);
10008 break;
10010 case FMS_MSG_STATUS_ERR:
10011 hidden_item = proto_tree_add_boolean(tree,
10012 hf_ff_fms, tvb, 0, 0, 1);
10013 PROTO_ITEM_SET_HIDDEN(hidden_item);
10014 hidden_item = proto_tree_add_boolean(tree,
10015 hf_ff_fms_status, tvb, 0, 0, 1);
10016 PROTO_ITEM_SET_HIDDEN(hidden_item);
10017 hidden_item = proto_tree_add_boolean(tree,
10018 hf_ff_fms_status_err, tvb, 0, 0, 1);
10019 PROTO_ITEM_SET_HIDDEN(hidden_item);
10021 dissect_ff_msg_fms_status_err(tvb, offset,
10022 length, pinfo, tree);
10023 break;
10025 case FMS_MSG_UNSOLICITED_STATUS_REQ:
10026 hidden_item = proto_tree_add_boolean(tree,
10027 hf_ff_fms, tvb, 0, 0, 1);
10028 PROTO_ITEM_SET_HIDDEN(hidden_item);
10029 hidden_item = proto_tree_add_boolean(tree,
10030 hf_ff_fms_unsolicited_status, tvb, 0, 0, 1);
10031 PROTO_ITEM_SET_HIDDEN(hidden_item);
10032 hidden_item = proto_tree_add_boolean(tree,
10033 hf_ff_fms_unsolicited_status_req, tvb, 0, 0, 1);
10034 PROTO_ITEM_SET_HIDDEN(hidden_item);
10036 dissect_ff_msg_fms_unsolicited_status_req(tvb, offset,
10037 length, pinfo, tree);
10038 break;
10040 case FMS_MSG_IDENTIFY_REQ:
10041 hidden_item = proto_tree_add_boolean(tree,
10042 hf_ff_fms, tvb, 0, 0, 1);
10043 PROTO_ITEM_SET_HIDDEN(hidden_item);
10044 hidden_item = proto_tree_add_boolean(tree,
10045 hf_ff_fms_id, tvb, 0, 0, 1);
10046 PROTO_ITEM_SET_HIDDEN(hidden_item);
10047 hidden_item = proto_tree_add_boolean(tree,
10048 hf_ff_fms_id_req, tvb, 0, 0, 1);
10049 PROTO_ITEM_SET_HIDDEN(hidden_item);
10051 dissect_ff_msg_fms_id_req(tvb, offset,
10052 length, pinfo, tree);
10053 break;
10055 case FMS_MSG_IDENTIFY_RSP:
10056 hidden_item = proto_tree_add_boolean(tree,
10057 hf_ff_fms, tvb, 0, 0, 1);
10058 PROTO_ITEM_SET_HIDDEN(hidden_item);
10059 hidden_item = proto_tree_add_boolean(tree,
10060 hf_ff_fms_id, tvb, 0, 0, 1);
10061 PROTO_ITEM_SET_HIDDEN(hidden_item);
10062 hidden_item = proto_tree_add_boolean(tree,
10063 hf_ff_fms_id_rsp, tvb, 0, 0, 1);
10064 PROTO_ITEM_SET_HIDDEN(hidden_item);
10066 dissect_ff_msg_fms_id_rsp(tvb, offset,
10067 length, pinfo, tree);
10068 break;
10070 case FMS_MSG_IDENTIFY_ERR:
10071 hidden_item = proto_tree_add_boolean(tree,
10072 hf_ff_fms, tvb, 0, 0, 1);
10073 PROTO_ITEM_SET_HIDDEN(hidden_item);
10074 hidden_item = proto_tree_add_boolean(tree,
10075 hf_ff_fms_id, tvb, 0, 0, 1);
10076 PROTO_ITEM_SET_HIDDEN(hidden_item);
10077 hidden_item = proto_tree_add_boolean(tree,
10078 hf_ff_fms_id_err, tvb, 0, 0, 1);
10079 PROTO_ITEM_SET_HIDDEN(hidden_item);
10081 dissect_ff_msg_fms_id_err(tvb, offset,
10082 length, pinfo, tree);
10083 break;
10085 case FMS_MSG_GET_OD_REQ:
10086 hidden_item = proto_tree_add_boolean(tree,
10087 hf_ff_fms, tvb, 0, 0, 1);
10088 PROTO_ITEM_SET_HIDDEN(hidden_item);
10089 hidden_item = proto_tree_add_boolean(tree,
10090 hf_ff_fms_get_od, tvb, 0, 0, 1);
10091 PROTO_ITEM_SET_HIDDEN(hidden_item);
10092 hidden_item = proto_tree_add_boolean(tree,
10093 hf_ff_fms_get_od_req, tvb, 0, 0, 1);
10094 PROTO_ITEM_SET_HIDDEN(hidden_item);
10096 dissect_ff_msg_fms_get_od_req(tvb, offset,
10097 length, pinfo, tree);
10098 break;
10100 case FMS_MSG_GET_OD_RSP:
10101 hidden_item = proto_tree_add_boolean(tree,
10102 hf_ff_fms, tvb, 0, 0, 1);
10103 PROTO_ITEM_SET_HIDDEN(hidden_item);
10104 hidden_item = proto_tree_add_boolean(tree,
10105 hf_ff_fms_get_od, tvb, 0, 0, 1);
10106 PROTO_ITEM_SET_HIDDEN(hidden_item);
10107 hidden_item = proto_tree_add_boolean(tree,
10108 hf_ff_fms_get_od_rsp, tvb, 0, 0, 1);
10109 PROTO_ITEM_SET_HIDDEN(hidden_item);
10111 dissect_ff_msg_fms_get_od_rsp(tvb, offset,
10112 length, pinfo, tree);
10113 break;
10115 case FMS_MSG_GET_OD_ERR:
10116 hidden_item = proto_tree_add_boolean(tree,
10117 hf_ff_fms, tvb, 0, 0, 1);
10118 PROTO_ITEM_SET_HIDDEN(hidden_item);
10119 hidden_item = proto_tree_add_boolean(tree,
10120 hf_ff_fms_get_od, tvb, 0, 0, 1);
10121 PROTO_ITEM_SET_HIDDEN(hidden_item);
10122 hidden_item = proto_tree_add_boolean(tree,
10123 hf_ff_fms_get_od_err, tvb, 0, 0, 1);
10124 PROTO_ITEM_SET_HIDDEN(hidden_item);
10126 dissect_ff_msg_fms_get_od_err(tvb, offset,
10127 length, pinfo, tree);
10128 break;
10130 case FMS_MSG_INITIATE_PUT_OD_REQ:
10131 hidden_item = proto_tree_add_boolean(tree,
10132 hf_ff_fms, tvb, 0, 0, 1);
10133 PROTO_ITEM_SET_HIDDEN(hidden_item);
10134 hidden_item = proto_tree_add_boolean(tree,
10135 hf_ff_fms_init_put_od, tvb, 0, 0, 1);
10136 PROTO_ITEM_SET_HIDDEN(hidden_item);
10137 hidden_item = proto_tree_add_boolean(tree,
10138 hf_ff_fms_init_put_od_req, tvb, 0, 0, 1);
10139 PROTO_ITEM_SET_HIDDEN(hidden_item);
10141 dissect_ff_msg_fms_init_put_od_req(tvb, offset,
10142 length, pinfo, tree);
10143 break;
10145 case FMS_MSG_INITIATE_PUT_OD_RSP:
10146 hidden_item = proto_tree_add_boolean(tree,
10147 hf_ff_fms, tvb, 0, 0, 1);
10148 PROTO_ITEM_SET_HIDDEN(hidden_item);
10149 hidden_item = proto_tree_add_boolean(tree,
10150 hf_ff_fms_init_put_od, tvb, 0, 0, 1);
10151 PROTO_ITEM_SET_HIDDEN(hidden_item);
10152 hidden_item = proto_tree_add_boolean(tree,
10153 hf_ff_fms_init_put_od_rsp, tvb, 0, 0, 1);
10154 PROTO_ITEM_SET_HIDDEN(hidden_item);
10156 dissect_ff_msg_fms_init_put_od_rsp(tvb, offset,
10157 length, pinfo, tree);
10158 break;
10160 case FMS_MSG_INITIATE_PUT_OD_ERR:
10161 hidden_item = proto_tree_add_boolean(tree,
10162 hf_ff_fms, tvb, 0, 0, 1);
10163 PROTO_ITEM_SET_HIDDEN(hidden_item);
10164 hidden_item = proto_tree_add_boolean(tree,
10165 hf_ff_fms_init_put_od, tvb, 0, 0, 1);
10166 PROTO_ITEM_SET_HIDDEN(hidden_item);
10167 hidden_item = proto_tree_add_boolean(tree,
10168 hf_ff_fms_init_put_od_err, tvb, 0, 0, 1);
10169 PROTO_ITEM_SET_HIDDEN(hidden_item);
10171 dissect_ff_msg_fms_init_put_od_err(tvb, offset,
10172 length, pinfo, tree);
10173 break;
10175 case FMS_MSG_PUT_OD_REQ:
10176 hidden_item = proto_tree_add_boolean(tree,
10177 hf_ff_fms, tvb, 0, 0, 1);
10178 PROTO_ITEM_SET_HIDDEN(hidden_item);
10179 hidden_item = proto_tree_add_boolean(tree,
10180 hf_ff_fms_put_od, tvb, 0, 0, 1);
10181 PROTO_ITEM_SET_HIDDEN(hidden_item);
10182 hidden_item = proto_tree_add_boolean(tree,
10183 hf_ff_fms_put_od_req, tvb, 0, 0, 1);
10184 PROTO_ITEM_SET_HIDDEN(hidden_item);
10186 dissect_ff_msg_fms_put_od_req(tvb, offset,
10187 length, pinfo, tree);
10188 break;
10190 case FMS_MSG_PUT_OD_RSP:
10191 hidden_item = proto_tree_add_boolean(tree,
10192 hf_ff_fms, tvb, 0, 0, 1);
10193 PROTO_ITEM_SET_HIDDEN(hidden_item);
10194 hidden_item = proto_tree_add_boolean(tree,
10195 hf_ff_fms_put_od, tvb, 0, 0, 1);
10196 PROTO_ITEM_SET_HIDDEN(hidden_item);
10197 hidden_item = proto_tree_add_boolean(tree,
10198 hf_ff_fms_put_od_rsp, tvb, 0, 0, 1);
10199 PROTO_ITEM_SET_HIDDEN(hidden_item);
10201 dissect_ff_msg_fms_put_od_rsp(tvb, offset,
10202 length, pinfo, tree);
10203 break;
10205 case FMS_MSG_PUT_OD_ERR:
10206 hidden_item = proto_tree_add_boolean(tree,
10207 hf_ff_fms, tvb, 0, 0, 1);
10208 PROTO_ITEM_SET_HIDDEN(hidden_item);
10209 hidden_item = proto_tree_add_boolean(tree,
10210 hf_ff_fms_put_od, tvb, 0, 0, 1);
10211 PROTO_ITEM_SET_HIDDEN(hidden_item);
10212 hidden_item = proto_tree_add_boolean(tree,
10213 hf_ff_fms_put_od_err, tvb, 0, 0, 1);
10214 PROTO_ITEM_SET_HIDDEN(hidden_item);
10216 dissect_ff_msg_fms_put_od_err(tvb, offset,
10217 length, pinfo, tree);
10218 break;
10220 case FMS_MSG_TERMINATE_PUT_OD_REQ:
10221 hidden_item = proto_tree_add_boolean(tree,
10222 hf_ff_fms, tvb, 0, 0, 1);
10223 PROTO_ITEM_SET_HIDDEN(hidden_item);
10224 hidden_item = proto_tree_add_boolean(tree,
10225 hf_ff_fms_terminate_put_od, tvb, 0, 0, 1);
10226 PROTO_ITEM_SET_HIDDEN(hidden_item);
10227 hidden_item = proto_tree_add_boolean(tree,
10228 hf_ff_fms_terminate_put_od_req, tvb, 0, 0, 1);
10229 PROTO_ITEM_SET_HIDDEN(hidden_item);
10231 dissect_ff_msg_fms_terminate_put_od_req(tvb, offset,
10232 length, pinfo, tree);
10233 break;
10235 case FMS_MSG_TERMINATE_PUT_OD_RSP:
10236 hidden_item = proto_tree_add_boolean(tree,
10237 hf_ff_fms, tvb, 0, 0, 1);
10238 PROTO_ITEM_SET_HIDDEN(hidden_item);
10239 hidden_item = proto_tree_add_boolean(tree,
10240 hf_ff_fms_terminate_put_od, tvb, 0, 0, 1);
10241 PROTO_ITEM_SET_HIDDEN(hidden_item);
10242 hidden_item = proto_tree_add_boolean(tree,
10243 hf_ff_fms_terminate_put_od_rsp, tvb, 0, 0, 1);
10244 PROTO_ITEM_SET_HIDDEN(hidden_item);
10246 dissect_ff_msg_fms_terminate_put_od_rsp(tvb, offset,
10247 length, pinfo, tree);
10248 break;
10250 case FMS_MSG_TERMINATE_PUT_OD_ERR:
10251 hidden_item = proto_tree_add_boolean(tree,
10252 hf_ff_fms, tvb, 0, 0, 1);
10253 PROTO_ITEM_SET_HIDDEN(hidden_item);
10254 hidden_item = proto_tree_add_boolean(tree,
10255 hf_ff_fms_terminate_put_od, tvb, 0, 0, 1);
10256 PROTO_ITEM_SET_HIDDEN(hidden_item);
10257 hidden_item = proto_tree_add_boolean(tree,
10258 hf_ff_fms_terminate_put_od_err, tvb, 0, 0, 1);
10259 PROTO_ITEM_SET_HIDDEN(hidden_item);
10261 dissect_ff_msg_fms_terminate_put_od_err(tvb, offset,
10262 length, pinfo, tree);
10263 break;
10265 case FMS_MSG_GENERIC_INITIATE_DOWNLOAD_SEQUENCE_REQ:
10266 hidden_item = proto_tree_add_boolean(tree,
10267 hf_ff_fms, tvb, 0, 0, 1);
10268 PROTO_ITEM_SET_HIDDEN(hidden_item);
10269 hidden_item = proto_tree_add_boolean(tree,
10270 hf_ff_fms_gen_init_download_seq, tvb, 0, 0, 1);
10271 PROTO_ITEM_SET_HIDDEN(hidden_item);
10272 hidden_item = proto_tree_add_boolean(tree,
10273 hf_ff_fms_gen_init_download_seq_req, tvb, 0, 0, 1);
10274 PROTO_ITEM_SET_HIDDEN(hidden_item);
10276 dissect_ff_msg_fms_generic_init_download_sequence_req(
10277 tvb, offset, length, pinfo, tree);
10278 break;
10280 case FMS_MSG_GENERIC_INITIATE_DOWNLOAD_SEQUENCE_RSP:
10281 hidden_item = proto_tree_add_boolean(tree,
10282 hf_ff_fms, tvb, 0, 0, 1);
10283 PROTO_ITEM_SET_HIDDEN(hidden_item);
10284 hidden_item = proto_tree_add_boolean(tree,
10285 hf_ff_fms_gen_init_download_seq, tvb, 0, 0, 1);
10286 PROTO_ITEM_SET_HIDDEN(hidden_item);
10287 hidden_item = proto_tree_add_boolean(tree,
10288 hf_ff_fms_gen_init_download_seq_rsp, tvb, 0, 0, 1);
10289 PROTO_ITEM_SET_HIDDEN(hidden_item);
10291 dissect_ff_msg_fms_generic_init_download_sequence_rsp(
10292 tvb, offset, length, pinfo, tree);
10293 break;
10295 case FMS_MSG_GENERIC_INITIATE_DOWNLOAD_SEQUENCE_ERR:
10296 hidden_item = proto_tree_add_boolean(tree,
10297 hf_ff_fms, tvb, 0, 0, 1);
10298 PROTO_ITEM_SET_HIDDEN(hidden_item);
10299 hidden_item = proto_tree_add_boolean(tree,
10300 hf_ff_fms_gen_init_download_seq, tvb, 0, 0, 1);
10301 PROTO_ITEM_SET_HIDDEN(hidden_item);
10302 hidden_item = proto_tree_add_boolean(tree,
10303 hf_ff_fms_gen_init_download_seq_err, tvb, 0, 0, 1);
10304 PROTO_ITEM_SET_HIDDEN(hidden_item);
10306 dissect_ff_msg_fms_generic_init_download_sequence_err(
10307 tvb, offset, length, pinfo, tree);
10308 break;
10310 case FMS_MSG_GENERIC_DOWNLOAD_SEGMENT_REQ:
10311 hidden_item = proto_tree_add_boolean(tree,
10312 hf_ff_fms, tvb, 0, 0, 1);
10313 PROTO_ITEM_SET_HIDDEN(hidden_item);
10314 hidden_item = proto_tree_add_boolean(tree,
10315 hf_ff_fms_gen_download_seg, tvb, 0, 0, 1);
10316 PROTO_ITEM_SET_HIDDEN(hidden_item);
10317 hidden_item = proto_tree_add_boolean(tree,
10318 hf_ff_fms_gen_download_seg_req, tvb, 0, 0, 1);
10319 PROTO_ITEM_SET_HIDDEN(hidden_item);
10321 dissect_ff_msg_fms_generic_download_segment_req(tvb,
10322 offset, length, pinfo, tree);
10323 break;
10325 case FMS_MSG_GENERIC_DOWNLOAD_SEGMENT_RSP:
10326 hidden_item = proto_tree_add_boolean(tree,
10327 hf_ff_fms, tvb, 0, 0, 1);
10328 PROTO_ITEM_SET_HIDDEN(hidden_item);
10329 hidden_item = proto_tree_add_boolean(tree,
10330 hf_ff_fms_gen_download_seg, tvb, 0, 0, 1);
10331 PROTO_ITEM_SET_HIDDEN(hidden_item);
10332 hidden_item = proto_tree_add_boolean(tree,
10333 hf_ff_fms_gen_download_seg_rsp, tvb, 0, 0, 1);
10334 PROTO_ITEM_SET_HIDDEN(hidden_item);
10336 dissect_ff_msg_fms_generic_download_segment_rsp(tvb,
10337 offset, length, pinfo, tree);
10338 break;
10340 case FMS_MSG_GENERIC_DOWNLOAD_SEGMENT_ERR:
10341 hidden_item = proto_tree_add_boolean(tree,
10342 hf_ff_fms, tvb, 0, 0, 1);
10343 PROTO_ITEM_SET_HIDDEN(hidden_item);
10344 hidden_item = proto_tree_add_boolean(tree,
10345 hf_ff_fms_gen_download_seg, tvb, 0, 0, 1);
10346 PROTO_ITEM_SET_HIDDEN(hidden_item);
10347 hidden_item = proto_tree_add_boolean(tree,
10348 hf_ff_fms_gen_download_seg_err, tvb, 0, 0, 1);
10349 PROTO_ITEM_SET_HIDDEN(hidden_item);
10351 dissect_ff_msg_fms_generic_download_segment_err(tvb,
10352 offset, length, pinfo, tree);
10353 break;
10355 case FMS_MSG_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE_REQ:
10356 hidden_item = proto_tree_add_boolean(tree,
10357 hf_ff_fms, tvb, 0, 0, 1);
10358 PROTO_ITEM_SET_HIDDEN(hidden_item);
10359 hidden_item = proto_tree_add_boolean(tree,
10360 hf_ff_fms_gen_terminate_download_seq, tvb, 0, 0, 1);
10361 PROTO_ITEM_SET_HIDDEN(hidden_item);
10362 hidden_item = proto_tree_add_boolean(tree,
10363 hf_ff_fms_gen_terminate_download_seq_req, tvb, 0, 0, 1);
10364 PROTO_ITEM_SET_HIDDEN(hidden_item);
10366 dissect_ff_msg_fms_generic_terminate_download_sequence_req(
10367 tvb, offset, length, pinfo, tree);
10368 break;
10370 case FMS_MSG_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE_RSP:
10371 hidden_item = proto_tree_add_boolean(tree,
10372 hf_ff_fms, tvb, 0, 0, 1);
10373 PROTO_ITEM_SET_HIDDEN(hidden_item);
10374 hidden_item = proto_tree_add_boolean(tree,
10375 hf_ff_fms_gen_terminate_download_seq, tvb, 0, 0, 1);
10376 PROTO_ITEM_SET_HIDDEN(hidden_item);
10377 hidden_item = proto_tree_add_boolean(tree,
10378 hf_ff_fms_gen_terminate_download_seq_rsp, tvb, 0, 0, 1);
10379 PROTO_ITEM_SET_HIDDEN(hidden_item);
10381 dissect_ff_msg_fms_generic_terminate_download_sequence_rsp(
10382 tvb, offset, length, pinfo, tree);
10383 break;
10385 case FMS_MSG_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE_ERR:
10386 hidden_item = proto_tree_add_boolean(tree,
10387 hf_ff_fms, tvb, 0, 0, 1);
10388 PROTO_ITEM_SET_HIDDEN(hidden_item);
10389 hidden_item = proto_tree_add_boolean(tree,
10390 hf_ff_fms_gen_terminate_download_seq, tvb, 0, 0, 1);
10391 PROTO_ITEM_SET_HIDDEN(hidden_item);
10392 hidden_item = proto_tree_add_boolean(tree,
10393 hf_ff_fms_gen_terminate_download_seq_err, tvb, 0, 0, 1);
10394 PROTO_ITEM_SET_HIDDEN(hidden_item);
10396 dissect_ff_msg_fms_generic_terminate_download_sequence_err(
10397 tvb, offset, length, pinfo, tree);
10398 break;
10400 case FMS_MSG_INITIATE_DOWNLOAD_SEQUENCE_REQ:
10401 hidden_item = proto_tree_add_boolean(tree,
10402 hf_ff_fms, tvb, 0, 0, 1);
10403 PROTO_ITEM_SET_HIDDEN(hidden_item);
10404 hidden_item = proto_tree_add_boolean(tree,
10405 hf_ff_fms_init_download_seq, tvb, 0, 0, 1);
10406 PROTO_ITEM_SET_HIDDEN(hidden_item);
10407 hidden_item = proto_tree_add_boolean(tree,
10408 hf_ff_fms_init_download_seq_req, tvb, 0, 0, 1);
10409 PROTO_ITEM_SET_HIDDEN(hidden_item);
10411 dissect_ff_msg_fms_init_download_sequence_req(tvb,
10412 offset, length, pinfo, tree);
10413 break;
10415 case FMS_MSG_INITIATE_DOWNLOAD_SEQUENCE_RSP:
10416 hidden_item = proto_tree_add_boolean(tree,
10417 hf_ff_fms, tvb, 0, 0, 1);
10418 PROTO_ITEM_SET_HIDDEN(hidden_item);
10419 hidden_item = proto_tree_add_boolean(tree,
10420 hf_ff_fms_init_download_seq, tvb, 0, 0, 1);
10421 PROTO_ITEM_SET_HIDDEN(hidden_item);
10422 hidden_item = proto_tree_add_boolean(tree,
10423 hf_ff_fms_init_download_seq_rsp, tvb, 0, 0, 1);
10424 PROTO_ITEM_SET_HIDDEN(hidden_item);
10426 dissect_ff_msg_fms_init_download_sequence_rsp(tvb,
10427 offset, length, pinfo, tree);
10428 break;
10430 case FMS_MSG_INITIATE_DOWNLOAD_SEQUENCE_ERR:
10431 hidden_item = proto_tree_add_boolean(tree,
10432 hf_ff_fms, tvb, 0, 0, 1);
10433 PROTO_ITEM_SET_HIDDEN(hidden_item);
10434 hidden_item = proto_tree_add_boolean(tree,
10435 hf_ff_fms_init_download_seq, tvb, 0, 0, 1);
10436 PROTO_ITEM_SET_HIDDEN(hidden_item);
10437 hidden_item = proto_tree_add_boolean(tree,
10438 hf_ff_fms_init_download_seq_err, tvb, 0, 0, 1);
10439 PROTO_ITEM_SET_HIDDEN(hidden_item);
10441 dissect_ff_msg_fms_init_download_sequence_err(tvb,
10442 offset, length, pinfo, tree);
10443 break;
10445 case FMS_MSG_DOWNLOAD_SEGMENT_REQ:
10446 hidden_item = proto_tree_add_boolean(tree,
10447 hf_ff_fms, tvb, 0, 0, 1);
10448 PROTO_ITEM_SET_HIDDEN(hidden_item);
10449 hidden_item = proto_tree_add_boolean(tree,
10450 hf_ff_fms_download_seg, tvb, 0, 0, 1);
10451 PROTO_ITEM_SET_HIDDEN(hidden_item);
10452 hidden_item = proto_tree_add_boolean(tree,
10453 hf_ff_fms_download_seg_req, tvb, 0, 0, 1);
10454 PROTO_ITEM_SET_HIDDEN(hidden_item);
10456 dissect_ff_msg_fms_download_segment_req(tvb, offset,
10457 length, pinfo, tree);
10458 break;
10460 case FMS_MSG_DOWNLOAD_SEGMENT_RSP:
10461 hidden_item = proto_tree_add_boolean(tree,
10462 hf_ff_fms, tvb, 0, 0, 1);
10463 PROTO_ITEM_SET_HIDDEN(hidden_item);
10464 hidden_item = proto_tree_add_boolean(tree,
10465 hf_ff_fms_download_seg, tvb, 0, 0, 1);
10466 PROTO_ITEM_SET_HIDDEN(hidden_item);
10467 hidden_item = proto_tree_add_boolean(tree,
10468 hf_ff_fms_download_seg_rsp, tvb, 0, 0, 1);
10469 PROTO_ITEM_SET_HIDDEN(hidden_item);
10471 dissect_ff_msg_fms_download_segment_rsp(tvb, offset,
10472 length, pinfo, tree);
10473 break;
10475 case FMS_MSG_DOWNLOAD_SEGMENT_ERR:
10476 hidden_item = proto_tree_add_boolean(tree,
10477 hf_ff_fms, tvb, 0, 0, 1);
10478 PROTO_ITEM_SET_HIDDEN(hidden_item);
10479 hidden_item = proto_tree_add_boolean(tree,
10480 hf_ff_fms_download_seg, tvb, 0, 0, 1);
10481 PROTO_ITEM_SET_HIDDEN(hidden_item);
10482 hidden_item = proto_tree_add_boolean(tree,
10483 hf_ff_fms_download_seg_err, tvb, 0, 0, 1);
10484 PROTO_ITEM_SET_HIDDEN(hidden_item);
10486 dissect_ff_msg_fms_download_segment_err(tvb, offset,
10487 length, pinfo, tree);
10488 break;
10490 case FMS_MSG_TERMINATE_DOWNLOAD_SEQUENCE_REQ:
10491 hidden_item = proto_tree_add_boolean(tree,
10492 hf_ff_fms, tvb, 0, 0, 1);
10493 PROTO_ITEM_SET_HIDDEN(hidden_item);
10494 hidden_item = proto_tree_add_boolean(tree,
10495 hf_ff_fms_terminate_download_seq, tvb, 0, 0, 1);
10496 PROTO_ITEM_SET_HIDDEN(hidden_item);
10497 hidden_item = proto_tree_add_boolean(tree,
10498 hf_ff_fms_terminate_download_seq_req, tvb, 0, 0, 1);
10499 PROTO_ITEM_SET_HIDDEN(hidden_item);
10501 dissect_ff_msg_fms_terminate_download_sequence_req(tvb,
10502 offset, length, pinfo, tree);
10503 break;
10505 case FMS_MSG_TERMINATE_DOWNLOAD_SEQUENCE_RSP:
10506 hidden_item = proto_tree_add_boolean(tree,
10507 hf_ff_fms, tvb, 0, 0, 1);
10508 PROTO_ITEM_SET_HIDDEN(hidden_item);
10509 hidden_item = proto_tree_add_boolean(tree,
10510 hf_ff_fms_terminate_download_seq, tvb, 0, 0, 1);
10511 PROTO_ITEM_SET_HIDDEN(hidden_item);
10512 hidden_item = proto_tree_add_boolean(tree,
10513 hf_ff_fms_terminate_download_seq_rsp, tvb, 0, 0, 1);
10514 PROTO_ITEM_SET_HIDDEN(hidden_item);
10516 dissect_ff_msg_fms_terminate_download_sequence_rsp(tvb,
10517 offset, length, pinfo, tree);
10518 break;
10520 case FMS_MSG_TERMINATE_DOWNLOAD_SEQUENCE_ERR:
10521 hidden_item = proto_tree_add_boolean(tree,
10522 hf_ff_fms, tvb, 0, 0, 1);
10523 PROTO_ITEM_SET_HIDDEN(hidden_item);
10524 hidden_item = proto_tree_add_boolean(tree,
10525 hf_ff_fms_terminate_download_seq, tvb, 0, 0, 1);
10526 PROTO_ITEM_SET_HIDDEN(hidden_item);
10527 hidden_item = proto_tree_add_boolean(tree,
10528 hf_ff_fms_terminate_download_seq_err, tvb, 0, 0, 1);
10529 PROTO_ITEM_SET_HIDDEN(hidden_item);
10531 dissect_ff_msg_fms_terminate_download_sequence_err(tvb,
10532 offset, length, pinfo, tree);
10533 break;
10535 case FMS_MSG_INITIATE_UPLOAD_SEQUENCE_REQ:
10536 hidden_item = proto_tree_add_boolean(tree,
10537 hf_ff_fms, tvb, 0, 0, 1);
10538 PROTO_ITEM_SET_HIDDEN(hidden_item);
10539 hidden_item = proto_tree_add_boolean(tree,
10540 hf_ff_fms_init_upload_seq, tvb, 0, 0, 1);
10541 PROTO_ITEM_SET_HIDDEN(hidden_item);
10542 hidden_item = proto_tree_add_boolean(tree,
10543 hf_ff_fms_init_upload_seq_req, tvb, 0, 0, 1);
10544 PROTO_ITEM_SET_HIDDEN(hidden_item);
10546 dissect_ff_msg_fms_init_upload_seq_req(tvb,
10547 offset, length, pinfo, tree);
10548 break;
10550 case FMS_MSG_INITIATE_UPLOAD_SEQUENCE_RSP:
10551 hidden_item = proto_tree_add_boolean(tree,
10552 hf_ff_fms, tvb, 0, 0, 1);
10553 PROTO_ITEM_SET_HIDDEN(hidden_item);
10554 hidden_item = proto_tree_add_boolean(tree,
10555 hf_ff_fms_init_upload_seq, tvb, 0, 0, 1);
10556 PROTO_ITEM_SET_HIDDEN(hidden_item);
10557 hidden_item = proto_tree_add_boolean(tree,
10558 hf_ff_fms_init_upload_seq_rsp, tvb, 0, 0, 1);
10559 PROTO_ITEM_SET_HIDDEN(hidden_item);
10561 dissect_ff_msg_fms_init_upload_seq_rsp(tvb,
10562 offset, length, pinfo, tree);
10563 break;
10565 case FMS_MSG_INITIATE_UPLOAD_SEQUENCE_ERR:
10566 hidden_item = proto_tree_add_boolean(tree,
10567 hf_ff_fms, tvb, 0, 0, 1);
10568 PROTO_ITEM_SET_HIDDEN(hidden_item);
10569 hidden_item = proto_tree_add_boolean(tree,
10570 hf_ff_fms_init_upload_seq, tvb, 0, 0, 1);
10571 PROTO_ITEM_SET_HIDDEN(hidden_item);
10572 hidden_item = proto_tree_add_boolean(tree,
10573 hf_ff_fms_init_upload_seq_err, tvb, 0, 0, 1);
10574 PROTO_ITEM_SET_HIDDEN(hidden_item);
10576 dissect_ff_msg_fms_init_upload_seq_err(tvb,
10577 offset, length, pinfo, tree);
10578 break;
10580 case FMS_MSG_UPLOAD_SEGMENT_REQ:
10581 hidden_item = proto_tree_add_boolean(tree,
10582 hf_ff_fms, tvb, 0, 0, 1);
10583 PROTO_ITEM_SET_HIDDEN(hidden_item);
10584 hidden_item = proto_tree_add_boolean(tree,
10585 hf_ff_fms_upload_seg, tvb, 0, 0, 1);
10586 PROTO_ITEM_SET_HIDDEN(hidden_item);
10587 hidden_item = proto_tree_add_boolean(tree,
10588 hf_ff_fms_upload_seg_req, tvb, 0, 0, 1);
10589 PROTO_ITEM_SET_HIDDEN(hidden_item);
10591 dissect_ff_msg_fms_upload_segment_req(tvb, offset,
10592 length, pinfo, tree);
10593 break;
10595 case FMS_MSG_UPLOAD_SEGMENT_RSP:
10596 hidden_item = proto_tree_add_boolean(tree,
10597 hf_ff_fms, tvb, 0, 0, 1);
10598 PROTO_ITEM_SET_HIDDEN(hidden_item);
10599 hidden_item = proto_tree_add_boolean(tree,
10600 hf_ff_fms_upload_seg, tvb, 0, 0, 1);
10601 PROTO_ITEM_SET_HIDDEN(hidden_item);
10602 hidden_item = proto_tree_add_boolean(tree,
10603 hf_ff_fms_upload_seg_rsp, tvb, 0, 0, 1);
10604 PROTO_ITEM_SET_HIDDEN(hidden_item);
10606 dissect_ff_msg_fms_upload_segment_rsp(tvb, offset,
10607 length, pinfo, tree);
10608 break;
10610 case FMS_MSG_UPLOAD_SEGMENT_ERR:
10611 hidden_item = proto_tree_add_boolean(tree,
10612 hf_ff_fms, tvb, 0, 0, 1);
10613 PROTO_ITEM_SET_HIDDEN(hidden_item);
10614 hidden_item = proto_tree_add_boolean(tree,
10615 hf_ff_fms_upload_seg, tvb, 0, 0, 1);
10616 PROTO_ITEM_SET_HIDDEN(hidden_item);
10617 hidden_item = proto_tree_add_boolean(tree,
10618 hf_ff_fms_upload_seg_err, tvb, 0, 0, 1);
10619 PROTO_ITEM_SET_HIDDEN(hidden_item);
10621 dissect_ff_msg_fms_upload_segment_err(tvb, offset,
10622 length, pinfo, tree);
10623 break;
10625 case FMS_MSG_TERMINATE_UPLOAD_SEQUENCE_REQ:
10626 hidden_item = proto_tree_add_boolean(tree,
10627 hf_ff_fms, tvb, 0, 0, 1);
10628 PROTO_ITEM_SET_HIDDEN(hidden_item);
10629 hidden_item = proto_tree_add_boolean(tree,
10630 hf_ff_fms_terminate_upload_seq, tvb, 0, 0, 1);
10631 PROTO_ITEM_SET_HIDDEN(hidden_item);
10632 hidden_item = proto_tree_add_boolean(tree,
10633 hf_ff_fms_terminate_upload_seq_req, tvb, 0, 0, 1);
10634 PROTO_ITEM_SET_HIDDEN(hidden_item);
10636 dissect_ff_msg_fms_terminate_upload_seq_req(tvb,
10637 offset, length, pinfo, tree);
10638 break;
10640 case FMS_MSG_TERMINATE_UPLOAD_SEQUENCE_RSP:
10641 hidden_item = proto_tree_add_boolean(tree,
10642 hf_ff_fms, tvb, 0, 0, 1);
10643 PROTO_ITEM_SET_HIDDEN(hidden_item);
10644 hidden_item = proto_tree_add_boolean(tree,
10645 hf_ff_fms_terminate_upload_seq, tvb, 0, 0, 1);
10646 PROTO_ITEM_SET_HIDDEN(hidden_item);
10647 hidden_item = proto_tree_add_boolean(tree,
10648 hf_ff_fms_terminate_upload_seq_rsp, tvb, 0, 0, 1);
10649 PROTO_ITEM_SET_HIDDEN(hidden_item);
10651 dissect_ff_msg_fms_terminate_upload_seq_rsp(tvb,
10652 offset, length, pinfo, tree);
10653 break;
10655 case FMS_MSG_TERMINATE_UPLOAD_SEQUENCE_ERR:
10656 hidden_item = proto_tree_add_boolean(tree,
10657 hf_ff_fms, tvb, 0, 0, 1);
10658 PROTO_ITEM_SET_HIDDEN(hidden_item);
10659 hidden_item = proto_tree_add_boolean(tree,
10660 hf_ff_fms_terminate_upload_seq, tvb, 0, 0, 1);
10661 PROTO_ITEM_SET_HIDDEN(hidden_item);
10662 hidden_item = proto_tree_add_boolean(tree,
10663 hf_ff_fms_terminate_upload_seq_err, tvb, 0, 0, 1);
10664 PROTO_ITEM_SET_HIDDEN(hidden_item);
10666 dissect_ff_msg_fms_terminate_upload_seq_err(tvb,
10667 offset, length, pinfo, tree);
10668 break;
10670 case FMS_MSG_REQUEST_DOMAIN_DOWNLOAD_REQ:
10671 hidden_item = proto_tree_add_boolean(tree,
10672 hf_ff_fms, tvb, 0, 0, 1);
10673 PROTO_ITEM_SET_HIDDEN(hidden_item);
10674 hidden_item = proto_tree_add_boolean(tree,
10675 hf_ff_fms_req_dom_download, tvb, 0, 0, 1);
10676 PROTO_ITEM_SET_HIDDEN(hidden_item);
10677 hidden_item = proto_tree_add_boolean(tree,
10678 hf_ff_fms_req_dom_download_req, tvb, 0, 0, 1);
10679 PROTO_ITEM_SET_HIDDEN(hidden_item);
10681 dissect_ff_msg_fms_req_dom_download_req(tvb, offset,
10682 length, pinfo, tree);
10683 break;
10685 case FMS_MSG_REQUEST_DOMAIN_DOWNLOAD_RSP:
10686 hidden_item = proto_tree_add_boolean(tree,
10687 hf_ff_fms, tvb, 0, 0, 1);
10688 PROTO_ITEM_SET_HIDDEN(hidden_item);
10689 hidden_item = proto_tree_add_boolean(tree,
10690 hf_ff_fms_req_dom_download, tvb, 0, 0, 1);
10691 PROTO_ITEM_SET_HIDDEN(hidden_item);
10692 hidden_item = proto_tree_add_boolean(tree,
10693 hf_ff_fms_req_dom_download_rsp, tvb, 0, 0, 1);
10694 PROTO_ITEM_SET_HIDDEN(hidden_item);
10696 dissect_ff_msg_fms_req_dom_download_rsp(tvb, offset,
10697 length, pinfo, tree);
10698 break;
10700 case FMS_MSG_REQUEST_DOMAIN_DOWNLOAD_ERR:
10701 hidden_item = proto_tree_add_boolean(tree,
10702 hf_ff_fms, tvb, 0, 0, 1);
10703 PROTO_ITEM_SET_HIDDEN(hidden_item);
10704 hidden_item = proto_tree_add_boolean(tree,
10705 hf_ff_fms_req_dom_download, tvb, 0, 0, 1);
10706 PROTO_ITEM_SET_HIDDEN(hidden_item);
10707 hidden_item = proto_tree_add_boolean(tree,
10708 hf_ff_fms_req_dom_download_err, tvb, 0, 0, 1);
10709 PROTO_ITEM_SET_HIDDEN(hidden_item);
10711 dissect_ff_msg_fms_req_dom_download_err(tvb, offset,
10712 length, pinfo, tree);
10713 break;
10715 case FMS_MSG_REQUEST_DOMAIN_UPLOAD_REQ:
10716 hidden_item = proto_tree_add_boolean(tree,
10717 hf_ff_fms, tvb, 0, 0, 1);
10718 PROTO_ITEM_SET_HIDDEN(hidden_item);
10719 hidden_item = proto_tree_add_boolean(tree,
10720 hf_ff_fms_req_dom_upload, tvb, 0, 0, 1);
10721 PROTO_ITEM_SET_HIDDEN(hidden_item);
10722 hidden_item = proto_tree_add_boolean(tree,
10723 hf_ff_fms_req_dom_upload_req, tvb, 0, 0, 1);
10724 PROTO_ITEM_SET_HIDDEN(hidden_item);
10726 dissect_ff_msg_fms_req_dom_upload_req(tvb, offset,
10727 length, pinfo, tree);
10728 break;
10730 case FMS_MSG_REQUEST_DOMAIN_UPLOAD_RSP:
10731 hidden_item = proto_tree_add_boolean(tree,
10732 hf_ff_fms, tvb, 0, 0, 1);
10733 PROTO_ITEM_SET_HIDDEN(hidden_item);
10734 hidden_item = proto_tree_add_boolean(tree,
10735 hf_ff_fms_req_dom_upload, tvb, 0, 0, 1);
10736 PROTO_ITEM_SET_HIDDEN(hidden_item);
10737 hidden_item = proto_tree_add_boolean(tree,
10738 hf_ff_fms_req_dom_upload_rsp, tvb, 0, 0, 1);
10739 PROTO_ITEM_SET_HIDDEN(hidden_item);
10741 dissect_ff_msg_fms_req_dom_upload_rsp(tvb, offset,
10742 length, pinfo, tree);
10743 break;
10745 case FMS_MSG_REQUEST_DOMAIN_UPLOAD_ERR:
10746 hidden_item = proto_tree_add_boolean(tree,
10747 hf_ff_fms, tvb, 0, 0, 1);
10748 PROTO_ITEM_SET_HIDDEN(hidden_item);
10749 hidden_item = proto_tree_add_boolean(tree,
10750 hf_ff_fms_req_dom_upload, tvb, 0, 0, 1);
10751 PROTO_ITEM_SET_HIDDEN(hidden_item);
10752 hidden_item = proto_tree_add_boolean(tree,
10753 hf_ff_fms_req_dom_upload_err, tvb, 0, 0, 1);
10754 PROTO_ITEM_SET_HIDDEN(hidden_item);
10756 dissect_ff_msg_fms_req_dom_upload_err(tvb, offset,
10757 length, pinfo, tree);
10758 break;
10760 case FMS_MSG_CREATE_PI_REQ:
10761 hidden_item = proto_tree_add_boolean(tree,
10762 hf_ff_fms, tvb, 0, 0, 1);
10763 PROTO_ITEM_SET_HIDDEN(hidden_item);
10764 hidden_item = proto_tree_add_boolean(tree,
10765 hf_ff_fms_create_pi, tvb, 0, 0, 1);
10766 PROTO_ITEM_SET_HIDDEN(hidden_item);
10767 hidden_item = proto_tree_add_boolean(tree,
10768 hf_ff_fms_create_pi_req, tvb, 0, 0, 1);
10769 PROTO_ITEM_SET_HIDDEN(hidden_item);
10771 dissect_ff_msg_fms_create_pi_req(tvb, offset,
10772 length, pinfo, tree);
10773 break;
10775 case FMS_MSG_CREATE_PI_RSP:
10776 hidden_item = proto_tree_add_boolean(tree,
10777 hf_ff_fms, tvb, 0, 0, 1);
10778 PROTO_ITEM_SET_HIDDEN(hidden_item);
10779 hidden_item = proto_tree_add_boolean(tree,
10780 hf_ff_fms_create_pi, tvb, 0, 0, 1);
10781 PROTO_ITEM_SET_HIDDEN(hidden_item);
10782 hidden_item = proto_tree_add_boolean(tree,
10783 hf_ff_fms_create_pi_rsp, tvb, 0, 0, 1);
10784 PROTO_ITEM_SET_HIDDEN(hidden_item);
10786 dissect_ff_msg_fms_create_pi_rsp(tvb, offset,
10787 length, pinfo, tree);
10788 break;
10790 case FMS_MSG_CREATE_PI_ERR:
10791 hidden_item = proto_tree_add_boolean(tree,
10792 hf_ff_fms, tvb, 0, 0, 1);
10793 PROTO_ITEM_SET_HIDDEN(hidden_item);
10794 hidden_item = proto_tree_add_boolean(tree,
10795 hf_ff_fms_create_pi, tvb, 0, 0, 1);
10796 PROTO_ITEM_SET_HIDDEN(hidden_item);
10797 hidden_item = proto_tree_add_boolean(tree,
10798 hf_ff_fms_create_pi_err, tvb, 0, 0, 1);
10799 PROTO_ITEM_SET_HIDDEN(hidden_item);
10801 dissect_ff_msg_fms_create_pi_err(tvb, offset,
10802 length, pinfo, tree);
10803 break;
10805 case FMS_MSG_DELETE_PI_REQ:
10806 hidden_item = proto_tree_add_boolean(tree,
10807 hf_ff_fms, tvb, 0, 0, 1);
10808 PROTO_ITEM_SET_HIDDEN(hidden_item);
10809 hidden_item = proto_tree_add_boolean(tree,
10810 hf_ff_fms_del_pi, tvb, 0, 0, 1);
10811 PROTO_ITEM_SET_HIDDEN(hidden_item);
10812 hidden_item = proto_tree_add_boolean(tree,
10813 hf_ff_fms_del_pi_req, tvb, 0, 0, 1);
10814 PROTO_ITEM_SET_HIDDEN(hidden_item);
10816 dissect_ff_msg_fms_del_pi_req(tvb, offset,
10817 length, pinfo, tree);
10818 break;
10820 case FMS_MSG_DELETE_PI_RSP:
10821 hidden_item = proto_tree_add_boolean(tree,
10822 hf_ff_fms, tvb, 0, 0, 1);
10823 PROTO_ITEM_SET_HIDDEN(hidden_item);
10824 hidden_item = proto_tree_add_boolean(tree,
10825 hf_ff_fms_del_pi, tvb, 0, 0, 1);
10826 PROTO_ITEM_SET_HIDDEN(hidden_item);
10827 hidden_item = proto_tree_add_boolean(tree,
10828 hf_ff_fms_del_pi_rsp, tvb, 0, 0, 1);
10829 PROTO_ITEM_SET_HIDDEN(hidden_item);
10831 dissect_ff_msg_fms_del_pi_rsp(tvb, offset,
10832 length, pinfo, tree);
10833 break;
10835 case FMS_MSG_DELETE_PI_ERR:
10836 hidden_item = proto_tree_add_boolean(tree,
10837 hf_ff_fms, tvb, 0, 0, 1);
10838 PROTO_ITEM_SET_HIDDEN(hidden_item);
10839 hidden_item = proto_tree_add_boolean(tree,
10840 hf_ff_fms_del_pi, tvb, 0, 0, 1);
10841 PROTO_ITEM_SET_HIDDEN(hidden_item);
10842 hidden_item = proto_tree_add_boolean(tree,
10843 hf_ff_fms_del_pi_err, tvb, 0, 0, 1);
10844 PROTO_ITEM_SET_HIDDEN(hidden_item);
10846 dissect_ff_msg_fms_del_pi_err(tvb, offset,
10847 length, pinfo, tree);
10848 break;
10850 case FMS_MSG_START_PI_REQ:
10851 hidden_item = proto_tree_add_boolean(tree,
10852 hf_ff_fms, tvb, 0, 0, 1);
10853 PROTO_ITEM_SET_HIDDEN(hidden_item);
10854 hidden_item = proto_tree_add_boolean(tree,
10855 hf_ff_fms_start, tvb, 0, 0, 1);
10856 PROTO_ITEM_SET_HIDDEN(hidden_item);
10857 hidden_item = proto_tree_add_boolean(tree,
10858 hf_ff_fms_start_req, tvb, 0, 0, 1);
10859 PROTO_ITEM_SET_HIDDEN(hidden_item);
10861 dissect_ff_msg_fms_start_pi_req(tvb, offset,
10862 length, pinfo, tree);
10863 break;
10865 case FMS_MSG_START_PI_RSP:
10866 hidden_item = proto_tree_add_boolean(tree,
10867 hf_ff_fms, tvb, 0, 0, 1);
10868 PROTO_ITEM_SET_HIDDEN(hidden_item);
10869 hidden_item = proto_tree_add_boolean(tree,
10870 hf_ff_fms_start, tvb, 0, 0, 1);
10871 PROTO_ITEM_SET_HIDDEN(hidden_item);
10872 hidden_item = proto_tree_add_boolean(tree,
10873 hf_ff_fms_start_rsp, tvb, 0, 0, 1);
10874 PROTO_ITEM_SET_HIDDEN(hidden_item);
10876 dissect_ff_msg_fms_start_pi_rsp(tvb, offset,
10877 length, pinfo, tree);
10878 break;
10880 case FMS_MSG_START_PI_ERR:
10881 hidden_item = proto_tree_add_boolean(tree,
10882 hf_ff_fms, tvb, 0, 0, 1);
10883 PROTO_ITEM_SET_HIDDEN(hidden_item);
10884 hidden_item = proto_tree_add_boolean(tree,
10885 hf_ff_fms_start, tvb, 0, 0, 1);
10886 PROTO_ITEM_SET_HIDDEN(hidden_item);
10887 hidden_item = proto_tree_add_boolean(tree,
10888 hf_ff_fms_start_err, tvb, 0, 0, 1);
10889 PROTO_ITEM_SET_HIDDEN(hidden_item);
10891 dissect_ff_msg_fms_start_pi_err(tvb, offset,
10892 length, pinfo, tree);
10893 break;
10895 case FMS_MSG_STOP_PI_REQ:
10896 hidden_item = proto_tree_add_boolean(tree,
10897 hf_ff_fms, tvb, 0, 0, 1);
10898 PROTO_ITEM_SET_HIDDEN(hidden_item);
10899 hidden_item = proto_tree_add_boolean(tree,
10900 hf_ff_fms_stop, tvb, 0, 0, 1);
10901 PROTO_ITEM_SET_HIDDEN(hidden_item);
10902 hidden_item = proto_tree_add_boolean(tree,
10903 hf_ff_fms_stop_req, tvb, 0, 0, 1);
10904 PROTO_ITEM_SET_HIDDEN(hidden_item);
10906 dissect_ff_msg_fms_stop_pi_req(tvb, offset,
10907 length, pinfo, tree);
10908 break;
10910 case FMS_MSG_STOP_PI_RSP:
10911 hidden_item = proto_tree_add_boolean(tree,
10912 hf_ff_fms, tvb, 0, 0, 1);
10913 PROTO_ITEM_SET_HIDDEN(hidden_item);
10914 hidden_item = proto_tree_add_boolean(tree,
10915 hf_ff_fms_stop, tvb, 0, 0, 1);
10916 PROTO_ITEM_SET_HIDDEN(hidden_item);
10917 hidden_item = proto_tree_add_boolean(tree,
10918 hf_ff_fms_stop_rsp, tvb, 0, 0, 1);
10919 PROTO_ITEM_SET_HIDDEN(hidden_item);
10921 dissect_ff_msg_fms_stop_pi_rsp(tvb, offset,
10922 length, pinfo, tree);
10923 break;
10925 case FMS_MSG_STOP_PI_ERR:
10926 hidden_item = proto_tree_add_boolean(tree,
10927 hf_ff_fms, tvb, 0, 0, 1);
10928 PROTO_ITEM_SET_HIDDEN(hidden_item);
10929 hidden_item = proto_tree_add_boolean(tree,
10930 hf_ff_fms_stop, tvb, 0, 0, 1);
10931 PROTO_ITEM_SET_HIDDEN(hidden_item);
10932 hidden_item = proto_tree_add_boolean(tree,
10933 hf_ff_fms_stop_err, tvb, 0, 0, 1);
10934 PROTO_ITEM_SET_HIDDEN(hidden_item);
10936 dissect_ff_msg_fms_stop_pi_err(tvb, offset,
10937 length, pinfo, tree);
10938 break;
10940 case FMS_MSG_RESUME_PI_REQ:
10941 hidden_item = proto_tree_add_boolean(tree,
10942 hf_ff_fms, tvb, 0, 0, 1);
10943 PROTO_ITEM_SET_HIDDEN(hidden_item);
10944 hidden_item = proto_tree_add_boolean(tree,
10945 hf_ff_fms_resume, tvb, 0, 0, 1);
10946 PROTO_ITEM_SET_HIDDEN(hidden_item);
10947 hidden_item = proto_tree_add_boolean(tree,
10948 hf_ff_fms_resume_req, tvb, 0, 0, 1);
10949 PROTO_ITEM_SET_HIDDEN(hidden_item);
10951 dissect_ff_msg_fms_resume_pi_req(tvb, offset,
10952 length, pinfo, tree);
10953 break;
10955 case FMS_MSG_RESUME_PI_RSP:
10956 hidden_item = proto_tree_add_boolean(tree,
10957 hf_ff_fms, tvb, 0, 0, 1);
10958 PROTO_ITEM_SET_HIDDEN(hidden_item);
10959 hidden_item = proto_tree_add_boolean(tree,
10960 hf_ff_fms_resume, tvb, 0, 0, 1);
10961 PROTO_ITEM_SET_HIDDEN(hidden_item);
10962 hidden_item = proto_tree_add_boolean(tree,
10963 hf_ff_fms_resume_rsp, tvb, 0, 0, 1);
10964 PROTO_ITEM_SET_HIDDEN(hidden_item);
10966 dissect_ff_msg_fms_resume_pi_rsp(tvb, offset,
10967 length, pinfo, tree);
10968 break;
10970 case FMS_MSG_RESUME_PI_ERR:
10971 hidden_item = proto_tree_add_boolean(tree,
10972 hf_ff_fms, tvb, 0, 0, 1);
10973 PROTO_ITEM_SET_HIDDEN(hidden_item);
10974 hidden_item = proto_tree_add_boolean(tree,
10975 hf_ff_fms_resume, tvb, 0, 0, 1);
10976 PROTO_ITEM_SET_HIDDEN(hidden_item);
10977 hidden_item = proto_tree_add_boolean(tree,
10978 hf_ff_fms_resume_err, tvb, 0, 0, 1);
10979 PROTO_ITEM_SET_HIDDEN(hidden_item);
10981 dissect_ff_msg_fms_resume_pi_err(tvb, offset,
10982 length, pinfo, tree);
10983 break;
10985 case FMS_MSG_RESET_PI_REQ:
10986 hidden_item = proto_tree_add_boolean(tree,
10987 hf_ff_fms, tvb, 0, 0, 1);
10988 PROTO_ITEM_SET_HIDDEN(hidden_item);
10989 hidden_item = proto_tree_add_boolean(tree,
10990 hf_ff_fms_reset, tvb, 0, 0, 1);
10991 PROTO_ITEM_SET_HIDDEN(hidden_item);
10992 hidden_item = proto_tree_add_boolean(tree,
10993 hf_ff_fms_reset_req, tvb, 0, 0, 1);
10994 PROTO_ITEM_SET_HIDDEN(hidden_item);
10996 dissect_ff_msg_fms_reset_pi_req(tvb, offset,
10997 length, pinfo, tree);
10998 break;
11000 case FMS_MSG_RESET_PI_RSP:
11001 hidden_item = proto_tree_add_boolean(tree,
11002 hf_ff_fms, tvb, 0, 0, 1);
11003 PROTO_ITEM_SET_HIDDEN(hidden_item);
11004 hidden_item = proto_tree_add_boolean(tree,
11005 hf_ff_fms_reset, tvb, 0, 0, 1);
11006 PROTO_ITEM_SET_HIDDEN(hidden_item);
11007 hidden_item = proto_tree_add_boolean(tree,
11008 hf_ff_fms_reset_rsp, tvb, 0, 0, 1);
11009 PROTO_ITEM_SET_HIDDEN(hidden_item);
11011 dissect_ff_msg_fms_reset_pi_rsp(tvb, offset,
11012 length, pinfo, tree);
11013 break;
11015 case FMS_MSG_RESET_PI_ERR:
11016 hidden_item = proto_tree_add_boolean(tree,
11017 hf_ff_fms, tvb, 0, 0, 1);
11018 PROTO_ITEM_SET_HIDDEN(hidden_item);
11019 hidden_item = proto_tree_add_boolean(tree,
11020 hf_ff_fms_reset, tvb, 0, 0, 1);
11021 PROTO_ITEM_SET_HIDDEN(hidden_item);
11022 hidden_item = proto_tree_add_boolean(tree,
11023 hf_ff_fms_reset_err, tvb, 0, 0, 1);
11024 PROTO_ITEM_SET_HIDDEN(hidden_item);
11026 dissect_ff_msg_fms_reset_pi_err(tvb, offset,
11027 length, pinfo, tree);
11028 break;
11030 case FMS_MSG_KILL_PI_REQ:
11031 hidden_item = proto_tree_add_boolean(tree,
11032 hf_ff_fms, tvb, 0, 0, 1);
11033 PROTO_ITEM_SET_HIDDEN(hidden_item);
11034 hidden_item = proto_tree_add_boolean(tree,
11035 hf_ff_fms_kill, tvb, 0, 0, 1);
11036 PROTO_ITEM_SET_HIDDEN(hidden_item);
11037 hidden_item = proto_tree_add_boolean(tree,
11038 hf_ff_fms_kill_req, tvb, 0, 0, 1);
11039 PROTO_ITEM_SET_HIDDEN(hidden_item);
11041 dissect_ff_msg_fms_kill_pi_req(tvb, offset,
11042 length, pinfo, tree);
11043 break;
11045 case FMS_MSG_KILL_PI_RSP:
11046 hidden_item = proto_tree_add_boolean(tree,
11047 hf_ff_fms, tvb, 0, 0, 1);
11048 PROTO_ITEM_SET_HIDDEN(hidden_item);
11049 hidden_item = proto_tree_add_boolean(tree,
11050 hf_ff_fms_kill, tvb, 0, 0, 1);
11051 PROTO_ITEM_SET_HIDDEN(hidden_item);
11052 hidden_item = proto_tree_add_boolean(tree,
11053 hf_ff_fms_kill_rsp, tvb, 0, 0, 1);
11054 PROTO_ITEM_SET_HIDDEN(hidden_item);
11056 dissect_ff_msg_fms_kill_pi_rsp(tvb, offset,
11057 length, pinfo, tree);
11058 break;
11060 case FMS_MSG_KILL_PI_ERR:
11061 hidden_item = proto_tree_add_boolean(tree,
11062 hf_ff_fms, tvb, 0, 0, 1);
11063 PROTO_ITEM_SET_HIDDEN(hidden_item);
11064 hidden_item = proto_tree_add_boolean(tree,
11065 hf_ff_fms_kill, tvb, 0, 0, 1);
11066 PROTO_ITEM_SET_HIDDEN(hidden_item);
11067 hidden_item = proto_tree_add_boolean(tree,
11068 hf_ff_fms_kill_err, tvb, 0, 0, 1);
11069 PROTO_ITEM_SET_HIDDEN(hidden_item);
11071 dissect_ff_msg_fms_kill_pi_err(tvb, offset,
11072 length, pinfo, tree);
11073 break;
11075 case FMS_MSG_READ_REQ:
11076 hidden_item = proto_tree_add_boolean(tree,
11077 hf_ff_fms, tvb, 0, 0, 1);
11078 PROTO_ITEM_SET_HIDDEN(hidden_item);
11079 hidden_item = proto_tree_add_boolean(tree,
11080 hf_ff_fms_read, tvb, 0, 0, 1);
11081 PROTO_ITEM_SET_HIDDEN(hidden_item);
11082 hidden_item = proto_tree_add_boolean(tree,
11083 hf_ff_fms_read_req, tvb, 0, 0, 1);
11084 PROTO_ITEM_SET_HIDDEN(hidden_item);
11086 dissect_ff_msg_fms_read_req(tvb, offset,
11087 length, pinfo, tree);
11088 break;
11090 case FMS_MSG_READ_RSP:
11091 hidden_item = proto_tree_add_boolean(tree,
11092 hf_ff_fms, tvb, 0, 0, 1);
11093 PROTO_ITEM_SET_HIDDEN(hidden_item);
11094 hidden_item = proto_tree_add_boolean(tree,
11095 hf_ff_fms_read, tvb, 0, 0, 1);
11096 PROTO_ITEM_SET_HIDDEN(hidden_item);
11097 hidden_item = proto_tree_add_boolean(tree,
11098 hf_ff_fms_read_rsp, tvb, 0, 0, 1);
11099 PROTO_ITEM_SET_HIDDEN(hidden_item);
11101 dissect_ff_msg_fms_read_rsp(tvb, offset,
11102 length, pinfo, tree);
11103 break;
11105 case FMS_MSG_READ_ERR:
11106 hidden_item = proto_tree_add_boolean(tree,
11107 hf_ff_fms, tvb, 0, 0, 1);
11108 PROTO_ITEM_SET_HIDDEN(hidden_item);
11109 hidden_item = proto_tree_add_boolean(tree,
11110 hf_ff_fms_read, tvb, 0, 0, 1);
11111 PROTO_ITEM_SET_HIDDEN(hidden_item);
11112 hidden_item = proto_tree_add_boolean(tree,
11113 hf_ff_fms_read_err, tvb, 0, 0, 1);
11114 PROTO_ITEM_SET_HIDDEN(hidden_item);
11116 dissect_ff_msg_fms_read_err(tvb, offset,
11117 length, pinfo, tree);
11118 break;
11120 case FMS_MSG_READ_SUBINDEX_REQ:
11121 hidden_item = proto_tree_add_boolean(tree,
11122 hf_ff_fms, tvb, 0, 0, 1);
11123 PROTO_ITEM_SET_HIDDEN(hidden_item);
11124 hidden_item = proto_tree_add_boolean(tree,
11125 hf_ff_fms_read_with_subidx, tvb, 0, 0, 1);
11126 PROTO_ITEM_SET_HIDDEN(hidden_item);
11127 hidden_item = proto_tree_add_boolean(tree,
11128 hf_ff_fms_read_with_subidx_req, tvb, 0, 0, 1);
11129 PROTO_ITEM_SET_HIDDEN(hidden_item);
11131 dissect_ff_msg_fms_read_subindex_req(tvb, offset,
11132 length, pinfo, tree);
11133 break;
11135 case FMS_MSG_READ_SUBINDEX_RSP:
11136 hidden_item = proto_tree_add_boolean(tree,
11137 hf_ff_fms, tvb, 0, 0, 1);
11138 PROTO_ITEM_SET_HIDDEN(hidden_item);
11139 hidden_item = proto_tree_add_boolean(tree,
11140 hf_ff_fms_read_with_subidx, tvb, 0, 0, 1);
11141 PROTO_ITEM_SET_HIDDEN(hidden_item);
11142 hidden_item = proto_tree_add_boolean(tree,
11143 hf_ff_fms_read_with_subidx_rsp, tvb, 0, 0, 1);
11144 PROTO_ITEM_SET_HIDDEN(hidden_item);
11146 dissect_ff_msg_fms_read_subindex_rsp(tvb, offset,
11147 length, pinfo, tree);
11148 break;
11150 case FMS_MSG_READ_SUBINDEX_ERR:
11151 hidden_item = proto_tree_add_boolean(tree,
11152 hf_ff_fms, tvb, 0, 0, 1);
11153 PROTO_ITEM_SET_HIDDEN(hidden_item);
11154 hidden_item = proto_tree_add_boolean(tree,
11155 hf_ff_fms_read_with_subidx, tvb, 0, 0, 1);
11156 PROTO_ITEM_SET_HIDDEN(hidden_item);
11157 hidden_item = proto_tree_add_boolean(tree,
11158 hf_ff_fms_read_with_subidx_err, tvb, 0, 0, 1);
11159 PROTO_ITEM_SET_HIDDEN(hidden_item);
11161 dissect_ff_msg_fms_read_subindex_err(tvb, offset,
11162 length, pinfo, tree);
11163 break;
11165 case FMS_MSG_WRITE_REQ:
11166 hidden_item = proto_tree_add_boolean(tree,
11167 hf_ff_fms, tvb, 0, 0, 1);
11168 PROTO_ITEM_SET_HIDDEN(hidden_item);
11169 hidden_item = proto_tree_add_boolean(tree,
11170 hf_ff_fms_write, tvb, 0, 0, 1);
11171 PROTO_ITEM_SET_HIDDEN(hidden_item);
11172 hidden_item = proto_tree_add_boolean(tree,
11173 hf_ff_fms_write_req, tvb, 0, 0, 1);
11174 PROTO_ITEM_SET_HIDDEN(hidden_item);
11176 dissect_ff_msg_fms_write_req(tvb, offset,
11177 length, pinfo, tree);
11178 break;
11180 case FMS_MSG_WRITE_RSP:
11181 hidden_item = proto_tree_add_boolean(tree,
11182 hf_ff_fms, tvb, 0, 0, 1);
11183 PROTO_ITEM_SET_HIDDEN(hidden_item);
11184 hidden_item = proto_tree_add_boolean(tree,
11185 hf_ff_fms_write, tvb, 0, 0, 1);
11186 PROTO_ITEM_SET_HIDDEN(hidden_item);
11187 hidden_item = proto_tree_add_boolean(tree,
11188 hf_ff_fms_write_rsp, tvb, 0, 0, 1);
11189 PROTO_ITEM_SET_HIDDEN(hidden_item);
11191 dissect_ff_msg_fms_write_rsp(tvb, offset,
11192 length, pinfo, tree);
11193 break;
11195 case FMS_MSG_WRITE_ERR:
11196 hidden_item = proto_tree_add_boolean(tree,
11197 hf_ff_fms, tvb, 0, 0, 1);
11198 PROTO_ITEM_SET_HIDDEN(hidden_item);
11199 hidden_item = proto_tree_add_boolean(tree,
11200 hf_ff_fms_write, tvb, 0, 0, 1);
11201 PROTO_ITEM_SET_HIDDEN(hidden_item);
11202 hidden_item = proto_tree_add_boolean(tree,
11203 hf_ff_fms_write_err, tvb, 0, 0, 1);
11204 PROTO_ITEM_SET_HIDDEN(hidden_item);
11206 dissect_ff_msg_fms_write_err(tvb, offset,
11207 length, pinfo, tree);
11208 break;
11210 case FMS_MSG_WRITE_SUBINDEX_REQ:
11211 hidden_item = proto_tree_add_boolean(tree,
11212 hf_ff_fms, tvb, 0, 0, 1);
11213 PROTO_ITEM_SET_HIDDEN(hidden_item);
11214 hidden_item = proto_tree_add_boolean(tree,
11215 hf_ff_fms_write_with_subidx, tvb, 0, 0, 1);
11216 PROTO_ITEM_SET_HIDDEN(hidden_item);
11217 hidden_item = proto_tree_add_boolean(tree,
11218 hf_ff_fms_write_with_subidx_req, tvb, 0, 0, 1);
11219 PROTO_ITEM_SET_HIDDEN(hidden_item);
11221 dissect_ff_msg_fms_write_subindex_req(tvb, offset,
11222 length, pinfo, tree);
11223 break;
11225 case FMS_MSG_WRITE_SUBINDEX_RSP:
11226 hidden_item = proto_tree_add_boolean(tree,
11227 hf_ff_fms, tvb, 0, 0, 1);
11228 PROTO_ITEM_SET_HIDDEN(hidden_item);
11229 hidden_item = proto_tree_add_boolean(tree,
11230 hf_ff_fms_write_with_subidx, tvb, 0, 0, 1);
11231 PROTO_ITEM_SET_HIDDEN(hidden_item);
11232 hidden_item = proto_tree_add_boolean(tree,
11233 hf_ff_fms_write_with_subidx_rsp, tvb, 0, 0, 1);
11234 PROTO_ITEM_SET_HIDDEN(hidden_item);
11236 dissect_ff_msg_fms_write_subindex_rsp(tvb, offset,
11237 length, pinfo, tree);
11238 break;
11240 case FMS_MSG_WRITE_SUBINDEX_ERR:
11241 hidden_item = proto_tree_add_boolean(tree,
11242 hf_ff_fms, tvb, 0, 0, 1);
11243 PROTO_ITEM_SET_HIDDEN(hidden_item);
11244 hidden_item = proto_tree_add_boolean(tree,
11245 hf_ff_fms_write_with_subidx, tvb, 0, 0, 1);
11246 PROTO_ITEM_SET_HIDDEN(hidden_item);
11247 hidden_item = proto_tree_add_boolean(tree,
11248 hf_ff_fms_write_with_subidx_err, tvb, 0, 0, 1);
11249 PROTO_ITEM_SET_HIDDEN(hidden_item);
11251 dissect_ff_msg_fms_write_subindex_err(tvb, offset,
11252 length, pinfo, tree);
11253 break;
11255 case FMS_MSG_DEFINE_VARIABLE_LIST_REQ:
11256 hidden_item = proto_tree_add_boolean(tree,
11257 hf_ff_fms, tvb, 0, 0, 1);
11258 PROTO_ITEM_SET_HIDDEN(hidden_item);
11259 hidden_item = proto_tree_add_boolean(tree,
11260 hf_ff_fms_def_variable_list, tvb, 0, 0, 1);
11261 PROTO_ITEM_SET_HIDDEN(hidden_item);
11262 hidden_item = proto_tree_add_boolean(tree,
11263 hf_ff_fms_def_variable_list_req, tvb, 0, 0, 1);
11264 PROTO_ITEM_SET_HIDDEN(hidden_item);
11266 dissect_ff_msg_fms_def_variable_list_req(tvb, offset,
11267 length, pinfo, tree);
11268 break;
11270 case FMS_MSG_DEFINE_VARIABLE_LIST_RSP:
11271 hidden_item = proto_tree_add_boolean(tree,
11272 hf_ff_fms, tvb, 0, 0, 1);
11273 PROTO_ITEM_SET_HIDDEN(hidden_item);
11274 hidden_item = proto_tree_add_boolean(tree,
11275 hf_ff_fms_def_variable_list, tvb, 0, 0, 1);
11276 PROTO_ITEM_SET_HIDDEN(hidden_item);
11277 hidden_item = proto_tree_add_boolean(tree,
11278 hf_ff_fms_def_variable_list_rsp, tvb, 0, 0, 1);
11279 PROTO_ITEM_SET_HIDDEN(hidden_item);
11281 dissect_ff_msg_fms_def_variable_list_rsp(tvb, offset,
11282 length, pinfo, tree);
11283 break;
11285 case FMS_MSG_DEFINE_VARIABLE_LIST_ERR:
11286 hidden_item = proto_tree_add_boolean(tree,
11287 hf_ff_fms, tvb, 0, 0, 1);
11288 PROTO_ITEM_SET_HIDDEN(hidden_item);
11289 hidden_item = proto_tree_add_boolean(tree,
11290 hf_ff_fms_def_variable_list, tvb, 0, 0, 1);
11291 PROTO_ITEM_SET_HIDDEN(hidden_item);
11292 hidden_item = proto_tree_add_boolean(tree,
11293 hf_ff_fms_def_variable_list_err, tvb, 0, 0, 1);
11294 PROTO_ITEM_SET_HIDDEN(hidden_item);
11296 dissect_ff_msg_fms_def_variable_list_err(tvb, offset,
11297 length, pinfo, tree);
11298 break;
11300 case FMS_MSG_DELETE_VARIABLE_LIST_REQ:
11301 hidden_item = proto_tree_add_boolean(tree,
11302 hf_ff_fms, tvb, 0, 0, 1);
11303 PROTO_ITEM_SET_HIDDEN(hidden_item);
11304 hidden_item = proto_tree_add_boolean(tree,
11305 hf_ff_fms_del_variable_list, tvb, 0, 0, 1);
11306 PROTO_ITEM_SET_HIDDEN(hidden_item);
11307 hidden_item = proto_tree_add_boolean(tree,
11308 hf_ff_fms_del_variable_list_req, tvb, 0, 0, 1);
11309 PROTO_ITEM_SET_HIDDEN(hidden_item);
11311 dissect_ff_msg_fms_del_variable_list_req(tvb, offset,
11312 length, pinfo, tree);
11313 break;
11315 case FMS_MSG_DELETE_VARIABLE_LIST_RSP:
11316 hidden_item = proto_tree_add_boolean(tree,
11317 hf_ff_fms, tvb, 0, 0, 1);
11318 PROTO_ITEM_SET_HIDDEN(hidden_item);
11319 hidden_item = proto_tree_add_boolean(tree,
11320 hf_ff_fms_del_variable_list, tvb, 0, 0, 1);
11321 PROTO_ITEM_SET_HIDDEN(hidden_item);
11322 hidden_item = proto_tree_add_boolean(tree,
11323 hf_ff_fms_del_variable_list_rsp, tvb, 0, 0, 1);
11324 PROTO_ITEM_SET_HIDDEN(hidden_item);
11326 dissect_ff_msg_fms_del_variable_list_rsp(tvb, offset,
11327 length, pinfo, tree);
11328 break;
11330 case FMS_MSG_DELETE_VARIABLE_LIST_ERR:
11331 hidden_item = proto_tree_add_boolean(tree,
11332 hf_ff_fms, tvb, 0, 0, 1);
11333 PROTO_ITEM_SET_HIDDEN(hidden_item);
11334 hidden_item = proto_tree_add_boolean(tree,
11335 hf_ff_fms_del_variable_list, tvb, 0, 0, 1);
11336 PROTO_ITEM_SET_HIDDEN(hidden_item);
11337 hidden_item = proto_tree_add_boolean(tree,
11338 hf_ff_fms_del_variable_list_err, tvb, 0, 0, 1);
11339 PROTO_ITEM_SET_HIDDEN(hidden_item);
11341 dissect_ff_msg_fms_del_variable_list_err(tvb, offset,
11342 length, pinfo, tree);
11343 break;
11345 case FMS_MSG_INFO_REPORT_REQ:
11346 hidden_item = proto_tree_add_boolean(tree,
11347 hf_ff_fms, tvb, 0, 0, 1);
11348 PROTO_ITEM_SET_HIDDEN(hidden_item);
11349 hidden_item = proto_tree_add_boolean(tree,
11350 hf_ff_fms_info_report, tvb, 0, 0, 1);
11351 PROTO_ITEM_SET_HIDDEN(hidden_item);
11352 hidden_item = proto_tree_add_boolean(tree,
11353 hf_ff_fms_info_report_req, tvb, 0, 0, 1);
11354 PROTO_ITEM_SET_HIDDEN(hidden_item);
11356 dissect_ff_msg_fms_info_report_req(tvb, offset,
11357 length, pinfo, tree);
11358 break;
11360 case FMS_MSG_INFO_REPORT_SUBINDEX_REQ:
11361 hidden_item = proto_tree_add_boolean(tree,
11362 hf_ff_fms, tvb, 0, 0, 1);
11363 PROTO_ITEM_SET_HIDDEN(hidden_item);
11364 hidden_item = proto_tree_add_boolean(tree,
11365 hf_ff_fms_info_report_with_subidx, tvb, 0, 0, 1);
11366 PROTO_ITEM_SET_HIDDEN(hidden_item);
11367 hidden_item = proto_tree_add_boolean(tree,
11368 hf_ff_fms_info_report_with_subidx_req, tvb, 0, 0, 1);
11369 PROTO_ITEM_SET_HIDDEN(hidden_item);
11371 dissect_ff_msg_fms_info_report_subindex_req(tvb, offset,
11372 length, pinfo, tree);
11373 break;
11375 case FMS_MSG_INFO_REPORT_CHANGE_REQ:
11376 hidden_item = proto_tree_add_boolean(tree,
11377 hf_ff_fms, tvb, 0, 0, 1);
11378 PROTO_ITEM_SET_HIDDEN(hidden_item);
11379 hidden_item = proto_tree_add_boolean(tree,
11380 hf_ff_fms_info_report_on_change, tvb, 0, 0, 1);
11381 PROTO_ITEM_SET_HIDDEN(hidden_item);
11382 hidden_item = proto_tree_add_boolean(tree,
11383 hf_ff_fms_info_report_on_change_req, tvb, 0, 0, 1);
11384 PROTO_ITEM_SET_HIDDEN(hidden_item);
11386 dissect_ff_msg_fms_info_report_change_req(tvb, offset,
11387 length, pinfo, tree);
11388 break;
11390 case FMS_MSG_INFO_REPORT_CHANGE_SUBINDEX_REQ:
11391 hidden_item = proto_tree_add_boolean(tree,
11392 hf_ff_fms, tvb, 0, 0, 1);
11393 PROTO_ITEM_SET_HIDDEN(hidden_item);
11394 hidden_item = proto_tree_add_boolean(tree,
11395 hf_ff_fms_info_report_on_change_with_subidx, tvb, 0, 0, 1);
11396 PROTO_ITEM_SET_HIDDEN(hidden_item);
11397 hidden_item = proto_tree_add_boolean(tree,
11398 hf_ff_fms_info_report_on_change_with_subidx_req, tvb, 0, 0, 1);
11399 PROTO_ITEM_SET_HIDDEN(hidden_item);
11401 dissect_ff_msg_fms_info_report_change_subindex_req(tvb,
11402 offset, length, pinfo, tree);
11403 break;
11405 case FMS_MSG_EVENT_NOTIFICATION_REQ:
11406 hidden_item = proto_tree_add_boolean(tree,
11407 hf_ff_fms, tvb, 0, 0, 1);
11408 PROTO_ITEM_SET_HIDDEN(hidden_item);
11409 hidden_item = proto_tree_add_boolean(tree,
11410 hf_ff_fms_ev_notification, tvb, 0, 0, 1);
11411 PROTO_ITEM_SET_HIDDEN(hidden_item);
11412 hidden_item = proto_tree_add_boolean(tree,
11413 hf_ff_fms_ev_notification_req, tvb, 0, 0, 1);
11414 PROTO_ITEM_SET_HIDDEN(hidden_item);
11416 dissect_ff_msg_fms_ev_notification_req(tvb, offset,
11417 length, pinfo, tree);
11418 break;
11420 case FMS_MSG_ALTER_EVENT_CONDITION_MONITORING_REQ:
11421 hidden_item = proto_tree_add_boolean(tree,
11422 hf_ff_fms, tvb, 0, 0, 1);
11423 PROTO_ITEM_SET_HIDDEN(hidden_item);
11424 hidden_item = proto_tree_add_boolean(tree,
11425 hf_ff_fms_alter_ev_condition_monitoring, tvb, 0, 0, 1);
11426 PROTO_ITEM_SET_HIDDEN(hidden_item);
11427 hidden_item = proto_tree_add_boolean(tree,
11428 hf_ff_fms_alter_ev_condition_monitoring_req, tvb, 0, 0, 1);
11429 PROTO_ITEM_SET_HIDDEN(hidden_item);
11431 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_req(
11432 tvb, offset, length, pinfo, tree);
11433 break;
11435 case FMS_MSG_ALTER_EVENT_CONDITION_MONITORING_RSP:
11436 hidden_item = proto_tree_add_boolean(tree,
11437 hf_ff_fms, tvb, 0, 0, 1);
11438 PROTO_ITEM_SET_HIDDEN(hidden_item);
11439 hidden_item = proto_tree_add_boolean(tree,
11440 hf_ff_fms_alter_ev_condition_monitoring, tvb, 0, 0, 1);
11441 PROTO_ITEM_SET_HIDDEN(hidden_item);
11442 hidden_item = proto_tree_add_boolean(tree,
11443 hf_ff_fms_alter_ev_condition_monitoring_rsp, tvb, 0, 0, 1);
11444 PROTO_ITEM_SET_HIDDEN(hidden_item);
11446 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_rsp(
11447 tvb, offset, length, pinfo, tree);
11448 break;
11450 case FMS_MSG_ALTER_EVENT_CONDITION_MONITORING_ERR:
11451 hidden_item = proto_tree_add_boolean(tree,
11452 hf_ff_fms, tvb, 0, 0, 1);
11453 PROTO_ITEM_SET_HIDDEN(hidden_item);
11454 hidden_item = proto_tree_add_boolean(tree,
11455 hf_ff_fms_alter_ev_condition_monitoring, tvb, 0, 0, 1);
11456 PROTO_ITEM_SET_HIDDEN(hidden_item);
11457 hidden_item = proto_tree_add_boolean(tree,
11458 hf_ff_fms_alter_ev_condition_monitoring_err, tvb, 0, 0, 1);
11459 PROTO_ITEM_SET_HIDDEN(hidden_item);
11461 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_err(
11462 tvb, offset, length, pinfo, tree);
11463 break;
11465 case FMS_MSG_ACKNOWLEDGE_EVENT_NOTIFICATION_REQ:
11466 hidden_item = proto_tree_add_boolean(tree,
11467 hf_ff_fms, tvb, 0, 0, 1);
11468 PROTO_ITEM_SET_HIDDEN(hidden_item);
11469 hidden_item = proto_tree_add_boolean(tree,
11470 hf_ff_fms_ack_ev_notification, tvb, 0, 0, 1);
11471 PROTO_ITEM_SET_HIDDEN(hidden_item);
11472 hidden_item = proto_tree_add_boolean(tree,
11473 hf_ff_fms_ack_ev_notification_req, tvb, 0, 0, 1);
11474 PROTO_ITEM_SET_HIDDEN(hidden_item);
11476 dissect_ff_msg_fms_ack_ev_notification_req(tvb,
11477 offset, length, pinfo, tree);
11478 break;
11480 case FMS_MSG_ACKNOWLEDGE_EVENT_NOTIFICATION_RSP:
11481 hidden_item = proto_tree_add_boolean(tree,
11482 hf_ff_fms, tvb, 0, 0, 1);
11483 PROTO_ITEM_SET_HIDDEN(hidden_item);
11484 hidden_item = proto_tree_add_boolean(tree,
11485 hf_ff_fms_ack_ev_notification, tvb, 0, 0, 1);
11486 PROTO_ITEM_SET_HIDDEN(hidden_item);
11487 hidden_item = proto_tree_add_boolean(tree,
11488 hf_ff_fms_ack_ev_notification_rsp, tvb, 0, 0, 1);
11489 PROTO_ITEM_SET_HIDDEN(hidden_item);
11491 dissect_ff_msg_fms_ack_ev_notification_rsp(tvb,
11492 offset, length, pinfo, tree);
11493 break;
11495 case FMS_MSG_ACKNOWLEDGE_EVENT_NOTIFICATION_ERR:
11496 hidden_item = proto_tree_add_boolean(tree,
11497 hf_ff_fms, tvb, 0, 0, 1);
11498 PROTO_ITEM_SET_HIDDEN(hidden_item);
11499 hidden_item = proto_tree_add_boolean(tree,
11500 hf_ff_fms_ack_ev_notification, tvb, 0, 0, 1);
11501 PROTO_ITEM_SET_HIDDEN(hidden_item);
11502 hidden_item = proto_tree_add_boolean(tree,
11503 hf_ff_fms_ack_ev_notification_err, tvb, 0, 0, 1);
11504 PROTO_ITEM_SET_HIDDEN(hidden_item);
11506 dissect_ff_msg_fms_ack_ev_notification_err(tvb,
11507 offset, length, pinfo, tree);
11508 break;
11510 case LAN_MSG_GET_INFO_REQ:
11511 hidden_item = proto_tree_add_boolean(tree,
11512 hf_ff_lr, tvb, 0, 0, 1);
11513 PROTO_ITEM_SET_HIDDEN(hidden_item);
11514 hidden_item = proto_tree_add_boolean(tree,
11515 hf_ff_lr_get_info, tvb, 0, 0, 1);
11516 PROTO_ITEM_SET_HIDDEN(hidden_item);
11517 hidden_item = proto_tree_add_boolean(tree,
11518 hf_ff_lr_get_info_req, tvb, 0, 0, 1);
11519 PROTO_ITEM_SET_HIDDEN(hidden_item);
11521 dissect_ff_msg_lr_get_info_req(tvb,
11522 offset, length, pinfo, tree);
11523 break;
11525 case LAN_MSG_GET_INFO_RSP:
11526 hidden_item = proto_tree_add_boolean(tree,
11527 hf_ff_lr, tvb, 0, 0, 1);
11528 PROTO_ITEM_SET_HIDDEN(hidden_item);
11529 hidden_item = proto_tree_add_boolean(tree,
11530 hf_ff_lr_get_info, tvb, 0, 0, 1);
11531 PROTO_ITEM_SET_HIDDEN(hidden_item);
11532 hidden_item = proto_tree_add_boolean(tree,
11533 hf_ff_lr_get_info_rsp, tvb, 0, 0, 1);
11534 PROTO_ITEM_SET_HIDDEN(hidden_item);
11536 dissect_ff_msg_lr_get_info_rsp(tvb,
11537 offset, length, pinfo, tree);
11538 break;
11540 case LAN_MSG_GET_INFO_ERR:
11541 hidden_item = proto_tree_add_boolean(tree,
11542 hf_ff_lr, tvb, 0, 0, 1);
11543 PROTO_ITEM_SET_HIDDEN(hidden_item);
11544 hidden_item = proto_tree_add_boolean(tree,
11545 hf_ff_lr_get_info, tvb, 0, 0, 1);
11546 PROTO_ITEM_SET_HIDDEN(hidden_item);
11547 hidden_item = proto_tree_add_boolean(tree,
11548 hf_ff_lr_get_info_err, tvb, 0, 0, 1);
11549 PROTO_ITEM_SET_HIDDEN(hidden_item);
11551 dissect_ff_msg_lr_get_info_err(tvb,
11552 offset, length, pinfo, tree);
11553 break;
11555 case LAN_MSG_PUT_INFO_REQ:
11556 hidden_item = proto_tree_add_boolean(tree,
11557 hf_ff_lr, tvb, 0, 0, 1);
11558 PROTO_ITEM_SET_HIDDEN(hidden_item);
11559 hidden_item = proto_tree_add_boolean(tree,
11560 hf_ff_lr_put_info, tvb, 0, 0, 1);
11561 PROTO_ITEM_SET_HIDDEN(hidden_item);
11562 hidden_item = proto_tree_add_boolean(tree,
11563 hf_ff_lr_put_info_req, tvb, 0, 0, 1);
11564 PROTO_ITEM_SET_HIDDEN(hidden_item);
11566 dissect_ff_msg_lr_put_info_req(tvb,
11567 offset, length, pinfo, tree);
11568 break;
11570 case LAN_MSG_PUT_INFO_RSP:
11571 hidden_item = proto_tree_add_boolean(tree,
11572 hf_ff_lr, tvb, 0, 0, 1);
11573 PROTO_ITEM_SET_HIDDEN(hidden_item);
11574 hidden_item = proto_tree_add_boolean(tree,
11575 hf_ff_lr_put_info, tvb, 0, 0, 1);
11576 PROTO_ITEM_SET_HIDDEN(hidden_item);
11577 hidden_item = proto_tree_add_boolean(tree,
11578 hf_ff_lr_put_info_rsp, tvb, 0, 0, 1);
11579 PROTO_ITEM_SET_HIDDEN(hidden_item);
11581 dissect_ff_msg_lr_put_info_rsp(tvb,
11582 offset, length, pinfo, tree);
11583 break;
11585 case LAN_MSG_PUT_INFO_ERR:
11586 hidden_item = proto_tree_add_boolean(tree,
11587 hf_ff_lr, tvb, 0, 0, 1);
11588 PROTO_ITEM_SET_HIDDEN(hidden_item);
11589 hidden_item = proto_tree_add_boolean(tree,
11590 hf_ff_lr_put_info, tvb, 0, 0, 1);
11591 PROTO_ITEM_SET_HIDDEN(hidden_item);
11592 hidden_item = proto_tree_add_boolean(tree,
11593 hf_ff_lr_put_info_err, tvb, 0, 0, 1);
11594 PROTO_ITEM_SET_HIDDEN(hidden_item);
11596 dissect_ff_msg_lr_put_info_err(tvb,
11597 offset, length, pinfo, tree);
11598 break;
11600 case LAN_MSG_GET_STATISTICS_REQ:
11601 hidden_item = proto_tree_add_boolean(tree,
11602 hf_ff_lr, tvb, 0, 0, 1);
11603 PROTO_ITEM_SET_HIDDEN(hidden_item);
11604 hidden_item = proto_tree_add_boolean(tree,
11605 hf_ff_lr_get_statistics, tvb, 0, 0, 1);
11606 PROTO_ITEM_SET_HIDDEN(hidden_item);
11607 hidden_item = proto_tree_add_boolean(tree,
11608 hf_ff_lr_get_statistics_req, tvb, 0, 0, 1);
11609 PROTO_ITEM_SET_HIDDEN(hidden_item);
11611 dissect_ff_msg_lr_get_statistics_req(tvb,
11612 offset, length, pinfo, tree);
11613 break;
11615 case LAN_MSG_GET_STATISTICS_RSP:
11616 hidden_item = proto_tree_add_boolean(tree,
11617 hf_ff_lr, tvb, 0, 0, 1);
11618 PROTO_ITEM_SET_HIDDEN(hidden_item);
11619 hidden_item = proto_tree_add_boolean(tree,
11620 hf_ff_lr_get_statistics, tvb, 0, 0, 1);
11621 PROTO_ITEM_SET_HIDDEN(hidden_item);
11622 hidden_item = proto_tree_add_boolean(tree,
11623 hf_ff_lr_get_statistics_rsp, tvb, 0, 0, 1);
11624 PROTO_ITEM_SET_HIDDEN(hidden_item);
11626 dissect_ff_msg_lr_get_statistics_rsp(tvb,
11627 offset, length, pinfo, tree);
11628 break;
11630 case LAN_MSG_GET_STATISTICS_ERR:
11631 hidden_item = proto_tree_add_boolean(tree,
11632 hf_ff_lr, tvb, 0, 0, 1);
11633 PROTO_ITEM_SET_HIDDEN(hidden_item);
11634 hidden_item = proto_tree_add_boolean(tree,
11635 hf_ff_lr_get_statistics, tvb, 0, 0, 1);
11636 PROTO_ITEM_SET_HIDDEN(hidden_item);
11637 hidden_item = proto_tree_add_boolean(tree,
11638 hf_ff_lr_get_statistics_err, tvb, 0, 0, 1);
11639 PROTO_ITEM_SET_HIDDEN(hidden_item);
11641 dissect_ff_msg_lr_get_statistics_err(tvb,
11642 offset, length, pinfo, tree);
11643 break;
11645 case LAN_MSG_DIAG_REQ:
11646 hidden_item = proto_tree_add_boolean(tree,
11647 hf_ff_lr, tvb, 0, 0, 1);
11648 PROTO_ITEM_SET_HIDDEN(hidden_item);
11649 hidden_item = proto_tree_add_boolean(tree,
11650 hf_ff_lr_diagnostic_msg, tvb, 0, 0, 1);
11651 PROTO_ITEM_SET_HIDDEN(hidden_item);
11652 hidden_item = proto_tree_add_boolean(tree,
11653 hf_ff_lr_diagnostic_msg_req, tvb, 0, 0, 1);
11654 PROTO_ITEM_SET_HIDDEN(hidden_item);
11656 dissect_ff_msg_diagnostic_msg_req(tvb,
11657 offset, length, pinfo, tree);
11658 break;
11660 default:
11661 col_add_fstr(pinfo->cinfo, COL_INFO,
11662 "Unknown Service (Protocol Id: %u, Confirmed Msg Type: %u) "
11663 "(%s Service Id = %u)",
11664 (ProtocolAndType & PROTOCOL_MASK) >> 2,
11665 ProtocolAndType & TYPE_MASK,
11666 (Service & SERVICE_CONFIRMED_FLAG_MASK)?
11667 "Confirmed": "Unconfirmed",
11668 Service & SERVICE_SERVICE_ID_MASK);
11670 if (length) {
11671 proto_tree_add_text(tree, tvb, offset, length,
11672 "[Unknown Service] (%u bytes)", length);
11676 return;
11682 * 6.4. Message Trailer
11684 static void
11685 dissect_ff_msg_trailer(tvbuff_t *tvb,
11686 gint offset, guint32 length, proto_tree *tree, guint8 Options)
11688 proto_tree *sub_tree;
11689 proto_item *ti;
11690 proto_item *hidden_item;
11692 if (!tree) {
11693 return;
11696 hidden_item = proto_tree_add_boolean(tree, hf_ff_fda_msg_trailer, tvb, 0, 0, 1);
11697 PROTO_ITEM_SET_HIDDEN(hidden_item);
11699 ti = proto_tree_add_text(tree,
11700 tvb, offset, length, "FDA Message Trailer");
11701 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_msg_trailer);
11703 if (Options & OPTION_MESSAGE_NUMBER_MASK) {
11704 proto_tree_add_item(sub_tree,
11705 hf_ff_fda_msg_trailer_msg_num, tvb, offset, 4, ENC_BIG_ENDIAN);
11706 offset += 4;
11709 if (Options & OPTION_INVOKE_ID_MASK) {
11710 proto_tree_add_item(sub_tree,
11711 hf_ff_fda_msg_trailer_invoke_id, tvb, offset, 4, ENC_BIG_ENDIAN);
11712 offset += 4;
11715 if (Options & OPTION_TIME_STAMP_MASK) {
11716 proto_tree_add_item(sub_tree,
11717 hf_ff_fda_msg_trailer_time_stamp, tvb, offset, 8, ENC_BIG_ENDIAN);
11718 offset += 8;
11721 if (Options & OPTION_EXTENDED_CNTRL_MASK) {
11722 proto_tree_add_item(sub_tree,
11723 hf_ff_fda_msg_trailer_extended_control_field,
11724 tvb, offset, 4, ENC_BIG_ENDIAN);
11725 /* offset += 4; */
11728 return;
11734 * Service
11737 static void
11738 dissect_ff_msg_hdr_srv(tvbuff_t *tvb,
11739 gint offset, proto_tree *tree, guint8 proto_and_type, guint8 service)
11741 proto_tree *sub_tree;
11742 proto_item *ti;
11744 if (!tree) {
11745 return;
11748 ti = proto_tree_add_text(tree, tvb, offset, 1, "Service: 0x%02x", service);
11749 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_msg_hdr_srv);
11751 /* Bit 8: Confirmed Flag */
11752 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_confirm_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
11754 /* Bits 1-7 Service Id of the service */
11755 switch (proto_and_type & PROTOCOL_MASK) {
11756 case PROTOCOL_FDA:
11757 if (service & SERVICE_CONFIRMED_FLAG_MASK) {
11758 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fda_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
11759 } else {
11760 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fda_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
11763 break;
11765 case PROTOCOL_SM:
11766 if (service & SERVICE_CONFIRMED_FLAG_MASK) {
11767 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_sm_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
11768 } else {
11769 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_sm_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
11772 break;
11774 case PROTOCOL_FMS:
11775 if (service & SERVICE_CONFIRMED_FLAG_MASK) {
11776 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fms_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
11777 } else {
11778 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fms_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
11781 break;
11783 case PROTOCOL_LAN:
11784 if (service & SERVICE_CONFIRMED_FLAG_MASK) {
11785 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_lan_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
11786 } else {
11787 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_lan_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
11790 break;
11792 default:
11793 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_service_id, tvb, offset, 1, ENC_BIG_ENDIAN);
11796 return;
11802 * Protocol Id And Confirmed Msg Type
11805 static void
11806 dissect_ff_msg_hdr_proto_and_type(tvbuff_t *tvb,
11807 gint offset, proto_tree *tree, guint8 value)
11809 proto_tree *sub_tree;
11810 proto_item *ti;
11812 if (!tree) {
11813 return;
11816 ti = proto_tree_add_text(tree, tvb, offset, 1,
11817 "Protocol Id And Confirmed Msg Type: 0x%02x", value);
11818 sub_tree = proto_item_add_subtree(ti,
11819 ett_ff_fda_msg_hdr_proto_and_type);
11821 if (!sub_tree) {
11822 return;
11825 proto_tree_add_item(sub_tree, hf_ff_hdr_proto_id, tvb, offset, 1, ENC_BIG_ENDIAN);
11826 proto_tree_add_item(sub_tree, hf_ff_hdr_confirm_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
11832 * Options
11835 static void
11836 dissect_ff_msg_hdr_opts(tvbuff_t *tvb,
11837 gint offset, proto_tree *tree, guint8 value)
11839 proto_tree *sub_tree;
11840 proto_item *ti;
11842 if (!tree) {
11843 return;
11846 ti = proto_tree_add_text(tree, tvb, offset, 1, "Options: 0x%02x", value);
11847 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_msg_hdr_opts);
11849 proto_tree_add_item(sub_tree, hf_ff_hdr_opts_msg_num, tvb, offset, 1, ENC_BIG_ENDIAN);
11850 proto_tree_add_item(sub_tree, hf_ff_hdr_opts_invoke_id, tvb, offset, 1, ENC_BIG_ENDIAN);
11851 proto_tree_add_item(sub_tree, hf_ff_hdr_opts_timestamp, tvb, offset, 1, ENC_BIG_ENDIAN);
11852 proto_tree_add_item(sub_tree, hf_ff_hdr_opts_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
11853 proto_tree_add_item(sub_tree, hf_ff_hdr_opts_ext_ctrl, tvb, offset, 1, ENC_BIG_ENDIAN);
11854 proto_tree_add_item(sub_tree, hf_ff_hdr_opts_pad, tvb, offset, 1, ENC_BIG_ENDIAN);
11860 * 6.3. Message Header
11862 static void
11863 dissect_ff_msg_hdr(tvbuff_t *tvb,
11864 proto_tree *tree, guint8 Options, guint8 ProtocolAndType, guint8 Service)
11866 proto_tree *sub_tree;
11867 proto_item *ti;
11868 proto_item *hidden_item;
11869 gint offset = 0;
11871 if (!tree) {
11872 return;
11875 hidden_item = proto_tree_add_boolean(tree, hf_ff_fda_msg_hdr, tvb, 0, 0, 1);
11876 PROTO_ITEM_SET_HIDDEN(hidden_item);
11878 ti = proto_tree_add_text(tree,
11879 tvb, offset, 12, "FDA Message Header");
11880 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_msg_hdr);
11882 /* FDA Message Version */
11883 proto_tree_add_item(sub_tree,
11884 hf_ff_fda_msg_hdr_ver, tvb, offset, 1, ENC_BIG_ENDIAN);
11885 offset += 1;
11887 /* Options */
11888 dissect_ff_msg_hdr_opts(tvb, offset, sub_tree, Options);
11889 offset += 1;
11891 /* Protocol Id And Confirmed Msg Type */
11892 dissect_ff_msg_hdr_proto_and_type(tvb,
11893 offset, sub_tree, ProtocolAndType);
11894 offset += 1;
11896 /* Service */
11897 dissect_ff_msg_hdr_srv(tvb,
11898 offset, sub_tree, ProtocolAndType, Service);
11899 offset += 1;
11901 /* FDA Address */
11902 proto_tree_add_item(sub_tree,
11903 hf_ff_fda_msg_hdr_fda_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
11904 offset += 4;
11906 /* Message Length */
11907 proto_tree_add_item(sub_tree,
11908 hf_ff_fda_msg_hdr_len, tvb, offset, 4, ENC_BIG_ENDIAN);
11909 /* offset += 4; */
11911 return;
11916 static int
11917 dissect_ff(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
11919 proto_tree *sub_tree = NULL;
11920 proto_item *ti = NULL;
11921 gint offset = 0;
11923 guint8 Options = 0; /* Options */
11924 guint8 ProtocolAndType = 0; /* Protocol Id And Confirmed Msg Type */
11925 guint8 Service = 0; /* Service */
11926 guint32 FDAAddress = 0; /* FDA Address */
11927 guint32 length = 0; /* Message Length */
11929 guint32 trailer_len = 0;
11931 col_set_str(pinfo->cinfo, COL_PROTOCOL, "FF");
11933 Options = tvb_get_guint8(tvb, 1);
11934 ProtocolAndType = tvb_get_guint8(tvb, 2);
11935 Service = tvb_get_guint8(tvb, 3);
11936 FDAAddress = tvb_get_ntohl(tvb, 4);
11937 length = tvb_get_ntohl(tvb, 8);
11939 if (tree) {
11940 ti = proto_tree_add_item(tree, proto_ff, tvb, offset, length, ENC_NA);
11941 sub_tree = proto_item_add_subtree(ti, ett_ff);
11944 if (Options & OPTION_MESSAGE_NUMBER_MASK) {
11945 length -= 4;
11946 trailer_len += 4;
11949 if (Options & OPTION_INVOKE_ID_MASK) {
11950 length -= 4;
11951 trailer_len += 4;
11954 if (Options & OPTION_TIME_STAMP_MASK) {
11955 length -= 8;
11956 trailer_len += 8;
11959 if (Options & OPTION_EXTENDED_CNTRL_MASK) {
11960 length -= 4;
11961 trailer_len += 4;
11965 * Header
11967 dissect_ff_msg_hdr(tvb, sub_tree, Options, ProtocolAndType, Service);
11968 offset += 12;
11969 length -= 12;
11972 * Service-Specific Parameters + User Data (optional)
11974 dissect_ff_msg_body(tvb, offset, length, pinfo, sub_tree,
11975 ProtocolAndType, Service, FDAAddress);
11976 offset += length;
11979 * Trailer (optional)
11981 if (trailer_len) {
11982 dissect_ff_msg_trailer(tvb,
11983 offset, trailer_len, sub_tree, Options);
11984 /*offset += trailer_len;*/
11987 return tvb_length(tvb);
11991 static guint
11992 get_ff_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
11994 return (tvb_get_ntohl(tvb, offset + 8));
11999 static int
12000 dissect_ff_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
12004 * 6.3. Message Header
12006 * 0 1 2 3
12007 * 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
12008 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12009 * | Version | Options | Protocol/Type | Service |
12010 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12011 * | FDA Address |
12012 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12013 * | Message Length |
12014 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12018 tcp_dissect_pdus(tvb, pinfo, tree, ff_desegment,
12019 12, get_ff_pdu_len, dissect_ff, data);
12021 return tvb_reported_length(tvb);
12026 static int
12027 dissect_ff_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
12029 guint32 length;
12031 /* Make sure at least the header is there */
12032 if (tvb_length(tvb) < 12)
12033 return 0;
12035 length = tvb_get_ntohl(tvb, 8);
12037 /* Make sure the length field is valid */
12038 if ((length > tvb_reported_length(tvb)) ||
12039 (length < 12))
12040 return 0;
12042 dissect_ff(tvb, pinfo, tree, data);
12043 return tvb_reported_length(tvb);
12048 void
12049 proto_register_ff(void)
12051 static hf_register_info hf[] = {
12053 * 6.3. Message Header
12055 { &hf_ff_fda_msg_hdr,
12056 { "Message Header", "ff.hdr",
12057 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12059 { &hf_ff_fda_msg_hdr_ver,
12060 { "FDA Message Version", "ff.hdr.ver",
12061 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12063 { &hf_ff_fda_msg_hdr_fda_addr,
12064 { "FDA Address", "ff.hdr.fda_addr",
12065 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
12067 { &hf_ff_fda_msg_hdr_len,
12068 { "Message Length", "ff.hdr.len",
12069 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12074 * 6.4. Message Trailer
12076 { &hf_ff_fda_msg_trailer,
12077 { "Message Trailer", "ff.trailer",
12078 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12080 { &hf_ff_fda_msg_trailer_msg_num,
12081 { "Message Number", "ff.trailer.msg_num",
12082 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12084 { &hf_ff_fda_msg_trailer_invoke_id,
12085 { "Invoke Id", "ff.trailer.invoke_id",
12086 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12088 { &hf_ff_fda_msg_trailer_time_stamp,
12089 { "Time Stamp", "ff.trailer.time_stamp",
12090 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12092 { &hf_ff_fda_msg_trailer_extended_control_field,
12093 { "Extended Control Field", "ff.trailer.extended_control_field",
12094 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12099 * 6.5.1. FDA Session Management Services
12101 { &hf_ff_fda,
12102 { "FDA Session Management Service", "ff.fda",
12103 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12105 { &hf_ff_hdr_srv_confirm_flag,
12106 { "Confirmed Flag", "ff.hdr_srv.confirm_flag",
12107 FT_BOOLEAN, 8, TFS(&tfs_confirmed_unconfirmed), SERVICE_CONFIRMED_FLAG_MASK, NULL, HFILL } },
12109 { &hf_ff_hdr_srv_service_id,
12110 { "Service Id (Unknown)", "ff.hdr_srv.service_id",
12111 FT_UINT8, BASE_DEC, NULL, SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
12113 { &hf_ff_hdr_srv_fda_service_id_confirm,
12114 { "Service Id", "ff.hdr_srv.fda.service_id.confirm",
12115 FT_UINT8, BASE_DEC, VALS(names_fda_confirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
12117 { &hf_ff_hdr_srv_fda_service_id_unconfirm,
12118 { "Service Id", "ff.hdr_srv.fda.service_id.unconfirm",
12119 FT_UINT8, BASE_DEC, VALS(names_fda_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
12121 { &hf_ff_hdr_srv_sm_service_id_confirm,
12122 { "Service Id", "ff.hdr_srv.sm.service_id.confirm",
12123 FT_UINT8, BASE_DEC, VALS(names_sm_confirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
12125 { &hf_ff_hdr_srv_sm_service_id_unconfirm,
12126 { "Service Id", "ff.hdr_srv.sm.service_id.unconfirm",
12127 FT_UINT8, BASE_DEC, VALS(names_sm_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
12129 { &hf_ff_hdr_srv_fms_service_id_confirm,
12130 { "Service Id", "ff.hdr_srv.fms.service_id.confirm",
12131 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_fms_confirmed_ext, SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
12133 { &hf_ff_hdr_srv_fms_service_id_unconfirm,
12134 { "Service Id", "ff.hdr_srv.fms.service_id.unconfirm",
12135 FT_UINT8, BASE_DEC, VALS(names_fms_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
12137 { &hf_ff_hdr_srv_lan_service_id_confirm,
12138 { "Service Id", "ff.hdr_srv.lan.service_id.confirm",
12139 FT_UINT8, BASE_DEC, VALS(names_lan_confirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
12141 { &hf_ff_hdr_srv_lan_service_id_unconfirm,
12142 { "Service Id", "ff.hdr_srv.lan.service_id.unconfirm",
12143 FT_UINT8, BASE_DEC, VALS(names_lan_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
12145 { &hf_ff_hdr_proto_id,
12146 { "Service Id", "ff.hdr.proto_id",
12147 FT_UINT8, BASE_DEC, VALS(names_proto), PROTOCOL_MASK, NULL, HFILL } },
12149 { &hf_ff_hdr_confirm_msg_type,
12150 { "Service Id", "ff.hdr.confirm_msg_type",
12151 FT_UINT8, BASE_DEC, VALS(names_type), TYPE_MASK, NULL, HFILL } },
12153 { &hf_ff_hdr_opts_msg_num,
12154 { "Message Number in the Trailer", "ff.hdr.opts.msg_num",
12155 FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_MESSAGE_NUMBER_MASK, NULL, HFILL } },
12157 { &hf_ff_hdr_opts_invoke_id,
12158 { "Invoke Id in the Trailer", "ff.hdr.opts.invoke_id",
12159 FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_INVOKE_ID_MASK, NULL, HFILL } },
12161 { &hf_ff_hdr_opts_timestamp,
12162 { "Time Stamp in the Trailer", "ff.hdr.opts.timestamp",
12163 FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_TIME_STAMP_MASK, NULL, HFILL } },
12165 { &hf_ff_hdr_opts_reserved,
12166 { "Reserved", "ff.hdr.opts.reserved",
12167 FT_UINT8, BASE_HEX, NULL, OPTION_RESERVED_MASK, NULL, HFILL } },
12169 { &hf_ff_hdr_opts_ext_ctrl,
12170 { "Extended Control in the Trailer", "ff.hdr.opts.ext_ctrl",
12171 FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_EXTENDED_CNTRL_MASK, NULL, HFILL } },
12173 { &hf_ff_hdr_opts_pad,
12174 { "Pad Length", "ff.hdr.opts.pad",
12175 FT_UINT8, BASE_HEX, NULL, OPTION_PAD_LENGTH_MASK, NULL, HFILL } },
12179 * 6.5.1.1. FDA Open Session (Confirmed Service Id = 1)
12181 { &hf_ff_fda_open_sess,
12182 { "FDA Open Session", "ff.fda.open_sess",
12183 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12188 * 6.5.1.1.1. Request Message Parameters
12190 { &hf_ff_fda_open_sess_req,
12191 { "FDA Open Session Request", "ff.fda.open_sess.req",
12192 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12194 { &hf_ff_fda_open_sess_req_sess_idx,
12195 { "Session Index", "ff.fda.open_sess.req.sess_idx",
12196 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12198 { &hf_ff_fda_open_sess_req_max_buf_siz,
12199 { "Max Buffer Size", "ff.fda.open_sess.req.max_buf_siz",
12200 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12202 { &hf_ff_fda_open_sess_req_max_msg_len,
12203 { "Max Message Length", "ff.fda.open_sess.req.max_msg_len",
12204 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12206 { &hf_ff_fda_open_sess_req_reserved,
12207 { "Reserved", "ff.fda.open_sess.req.reserved",
12208 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12210 { &hf_ff_fda_open_sess_req_nma_conf_use,
12211 { "NMA Configuration Use", "ff.fda.open_sess.req.nma_conf_use",
12212 FT_UINT8, BASE_DEC, VALS(names_nma_conf_use), 0x0, NULL, HFILL } },
12214 { &hf_ff_fda_open_sess_req_inactivity_close_time,
12215 { "Inactivity Close Time",
12216 "ff.fda.open_sess.req.inactivity_close_time",
12217 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12219 { &hf_ff_fda_open_sess_req_transmit_delay_time,
12220 { "Transmit Delay Time", "ff.fda.open_sess.req.transmit_delay_time",
12221 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12223 { &hf_ff_fda_open_sess_req_pd_tag,
12224 { "PD Tag", "ff.fda.open_sess.req.pd_tag",
12225 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12230 * 6.5.1.1.2. Response Message Parameters
12232 { &hf_ff_fda_open_sess_rsp,
12233 { "FDA Open Session Response", "ff.fda.open_sess.rsp",
12234 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12236 { &hf_ff_fda_open_sess_rsp_sess_idx,
12237 { "Session Index", "ff.fda.open_sess.rsp.sess_idx",
12238 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12240 { &hf_ff_fda_open_sess_rsp_max_buf_siz,
12241 { "Max Buffer Size", "ff.fda.open_sess.rsp.max_buf_siz",
12242 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12244 { &hf_ff_fda_open_sess_rsp_max_msg_len,
12245 { "Max Message Length", "ff.fda.open_sess.rsp.max_msg_len",
12246 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12248 { &hf_ff_fda_open_sess_rsp_reserved,
12249 { "Reserved", "ff.fda.open_sess.rsp.reserved",
12250 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12252 { &hf_ff_fda_open_sess_rsp_nma_conf_use,
12253 { "NMA Configuration Use", "ff.fda.open_sess.rsp.nma_conf_use",
12254 FT_UINT8, BASE_DEC, VALS(names_nma_conf_use), 0x0, NULL, HFILL } },
12256 { &hf_ff_fda_open_sess_rsp_inactivity_close_time,
12257 { "Inactivity Close Time",
12258 "ff.fda.open_sess.rsp.inactivity_close_time",
12259 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12261 { &hf_ff_fda_open_sess_rsp_transmit_delay_time,
12262 { "Transmit Delay Time", "ff.fda.open_sess.rsp.transmit_delay_time",
12263 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12265 { &hf_ff_fda_open_sess_rsp_pd_tag,
12266 { "PD Tag", "ff.fda.open_sess.rsp.pd_tag",
12267 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12272 * 6.5.1.1.3. Error Message Parameters
12274 { &hf_ff_fda_open_sess_err,
12275 { "FDA Open Session Error", "ff.fda.open_sess.err",
12276 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12278 { &hf_ff_fda_open_sess_err_err_class,
12279 { "Error Class", "ff.fda.open_sess.err.err_class",
12280 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12282 { &hf_ff_fda_open_sess_err_err_code,
12283 { "Error Code", "ff.fda.open_sess.err.err_code",
12284 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12286 { &hf_ff_fda_open_sess_err_additional_code,
12287 { "Additional Code", "ff.fda.open_sess.err.additional_code",
12288 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12290 { &hf_ff_fda_open_sess_err_additional_desc,
12291 { "Additional Description", "ff.fda.open_sess.err.additional_desc",
12292 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12297 * 6.5.1.2. FDA Idle (Confirmed Service Id = 3)
12299 { &hf_ff_fda_idle,
12300 { "FDA Idle", "ff.fda.idle",
12301 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12306 * 6.5.1.2.1. Request Message Parameters
12308 { &hf_ff_fda_idle_req,
12309 { "FDA Idle Request", "ff.fda.idle.req",
12310 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12315 * 6.5.1.2.2. Response Message Parameters
12317 { &hf_ff_fda_idle_rsp,
12318 { "FDA Idle Response", "ff.fda.idle.rsp",
12319 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12324 * 6.5.1.2.3. Error Message Parameters
12326 { &hf_ff_fda_idle_err,
12327 { "FDA Idle Error", "ff.fda.idle.err",
12328 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12330 { &hf_ff_fda_idle_err_err_class,
12331 { "Error Class", "ff.fda.idle.err.err_class",
12332 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12334 { &hf_ff_fda_idle_err_err_code,
12335 { "Error Code", "ff.fda.idle.err.err_code",
12336 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12338 { &hf_ff_fda_idle_err_additional_code,
12339 { "Additional Code", "ff.fda.idle.err.additional_code",
12340 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12342 { &hf_ff_fda_idle_err_additional_desc,
12343 { "Additional Description", "ff.fda.idle.err.additional_desc",
12344 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12349 * 6.5.2. SM Services
12351 { &hf_ff_sm,
12352 { "SM Service", "ff.sm",
12353 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12358 * 6.5.2.1. SM Find Tag Query (Unconfirmed Service Id = 1)
12360 { &hf_ff_sm_find_tag_query,
12361 { "SM Find Tag Query", "ff.sm.find_tag_query",
12362 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12367 * 6.5.2.1.1. Request Message Parameters
12369 { &hf_ff_sm_find_tag_query_req,
12370 { "SM Find Tag Query Request", "ff.sm.find_tag_query.req",
12371 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12373 { &hf_ff_sm_find_tag_query_req_query_type,
12374 { "Query Type", "ff.sm.find_tag_query.req.query_type",
12375 FT_UINT8, BASE_DEC, VALS(names_query_type), 0x0, NULL, HFILL } },
12377 { &hf_ff_sm_find_tag_query_req_idx,
12378 { "Element Id or VFD Reference or Device Index",
12379 "ff.sm.find_tag_query.req.idx",
12380 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12382 { &hf_ff_sm_find_tag_query_req_tag,
12383 { "PD Tag or Function Block Tag", "ff.sm.find_tag_query.req.tag",
12384 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12386 { &hf_ff_sm_find_tag_query_req_vfd_tag,
12387 { "VFD Tag", "ff.sm.find_tag_query.req.vfd_tag",
12388 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12393 * 6.5.2.2. SM Find Tag Reply (Unconfirmed Service Id = 2)
12395 { &hf_ff_sm_find_tag_reply,
12396 { "SM Find Tag Reply", "ff.sm.find_tag_reply",
12397 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12402 * 6.5.2.2.1. Request Message Parameters
12404 { &hf_ff_sm_find_tag_reply_req,
12405 { "SM Find Tag Reply Request", "ff.sm.find_tag_reply.req",
12406 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12408 { &hf_ff_sm_find_tag_reply_req_query_type,
12409 { "Query Type", "ff.sm.find_tag_reply.req.query_type",
12410 FT_UINT8, BASE_DEC, VALS(names_query_type), 0x0, NULL, HFILL } },
12412 { &hf_ff_sm_find_tag_reply_req_h1_node_addr,
12413 { "Queried Object H1 Node Address",
12414 "ff.sm.find_tag_reply.req.h1_node_addr",
12415 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12417 { &hf_ff_sm_find_tag_reply_req_fda_addr_link_id,
12418 { "Queried Object FDA Address Link Id",
12419 "ff.sm.find_tag_reply.req.fda_addr_link_id",
12420 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12422 { &hf_ff_sm_find_tag_reply_req_vfd_ref,
12423 { "Queried Object VFD Reference",
12424 "ff.sm.find_tag_reply.req.vfd_ref",
12425 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12427 { &hf_ff_sm_find_tag_reply_req_od_idx,
12428 { "Queried Object OD Index", "ff.sm.find_tag_reply.req.od_idx",
12429 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12431 { &hf_ff_sm_find_tag_reply_req_ip_addr,
12432 { "Queried Object IP Address", "ff.sm.find_tag_reply.req.ip_addr",
12433 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12435 { &hf_ff_sm_find_tag_reply_req_od_ver,
12436 { "Queried Object OD Version", "ff.sm.find_tag_reply.req.od_ver",
12437 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12439 { &hf_ff_sm_find_tag_reply_req_dev_id,
12440 { "Queried Object Device ID", "ff.sm.find_tag_reply.req.dev_id",
12441 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12443 { &hf_ff_sm_find_tag_reply_req_pd_tag,
12444 { "Queried Object PD Tag", "ff.sm.find_tag_reply.req.pd_tag",
12445 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12447 { &hf_ff_sm_find_tag_reply_req_reserved,
12448 { "Reserved", "ff.sm.find_tag_reply.req.reserved",
12449 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12451 { &hf_ff_sm_find_tag_reply_req_num_of_fda_addr_selectors,
12452 { "Number Of FDA Address Selectors",
12453 "ff.sm.find_tag_reply.req.num_of_fda_addr_selectors",
12454 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12456 { &hf_ff_sm_find_tag_reply_req_fda_addr_selector,
12457 { "FDA Address Selector",
12458 "ff.sm.find_tag_reply.req.fda_addr_selector.fda_addr_selector",
12459 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12461 { &hf_ff_sm_find_tag_reply_dup_reserved,
12462 { "Reserved",
12463 "ff.sm.find_tag_reply.dup_reserved",
12464 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
12466 { &hf_ff_sm_find_tag_reply_dup_pd_tag,
12467 { "Duplicate PD Tag",
12468 "ff.sm.find_tag_reply.dup_pd_tag",
12469 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
12471 { &hf_ff_sm_find_tag_reply_dup_device,
12472 { "Duplicate Device Index",
12473 "ff.sm.find_tag_reply.dup_device",
12474 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
12478 * 6.5.2.7. SM Identify (Unconfirmed Service Id = 16)
12480 { &hf_ff_sm_id,
12481 { "SM Identify", "ff.sm.id",
12482 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12486 * 6.5.2.3.1. Request Message Parameters
12488 { &hf_ff_sm_id_req,
12489 { "SM Identify Request", "ff.sm.id.req",
12490 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12495 * 6.5.2.3.2. Response Message Parameters
12497 { &hf_ff_sm_id_rsp,
12498 { "SM Identify Response", "ff.sm.id.rsp",
12499 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12501 { &hf_ff_sm_id_rsp_dev_idx,
12502 { "Device Index", "ff.sm.id.rsp.dev_idx",
12503 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12505 { &hf_ff_sm_id_rsp_max_dev_idx,
12506 { "Max Device Index", "ff.sm.id.rsp.max_dev_idx",
12507 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12509 { &hf_ff_sm_id_rsp_operational_ip_addr,
12510 { "Operational IP Address", "ff.sm.id.rsp.operational_ip_addr",
12511 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12513 { &hf_ff_sm_id_rsp_dev_id,
12514 { "Device ID", "ff.sm.id.rsp.dev_id",
12515 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12517 { &hf_ff_sm_id_rsp_pd_tag,
12518 { "PD Tag", "ff.sm.id.rsp.pd_tag",
12519 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12521 { &hf_ff_sm_id_rsp_hse_repeat_time,
12522 { "HSE Repeat Time", "ff.sm.id.rsp.hse_repeat_time",
12523 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12525 { &hf_ff_sm_id_rsp_lr_port,
12526 { "LAN Redundancy Port", "ff.sm.id.rsp.lr_port",
12527 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12529 { &hf_ff_sm_id_rsp_reserved,
12530 { "Reserved", "ff.sm.id.rsp.reserved",
12531 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12533 { &hf_ff_sm_id_rsp_annunc_ver_num,
12534 { "Annunciation Version Number", "ff.sm.id.rsp.annunc_ver_num",
12535 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12537 { &hf_ff_sm_id_rsp_hse_dev_ver_num,
12538 { "HSE Device Version Number", "ff.sm.id.rsp.hse_dev_ver_num",
12539 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12541 { &hf_ff_sm_id_rsp_num_of_entries,
12542 { "Number of Entries in Version Number List",
12543 "ff.sm.id.rsp.num_of_entries",
12544 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12546 { &hf_ff_sm_id_rsp_h1_live_list_h1_link_id,
12547 { "H1 Link Id", "ff.sm.id.rsp.h1_live_list.h1_link_id",
12548 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12550 { &hf_ff_sm_id_rsp_h1_live_list_reserved,
12551 { "Reserved", "ff.sm.id.rsp.h1_live_list.reserved",
12552 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12554 { &hf_ff_sm_id_rsp_h1_live_list_ver_num,
12555 { "Version Number", "ff.sm.id.rsp.h1_live_list.ver_num",
12556 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12558 { &hf_ff_sm_id_rsp_h1_node_addr_ver_num_h1_node_addr,
12559 { "H1 Node Address",
12560 "ff.sm.id.rsp.h1_node_addr_ver_num.h1_node_addr",
12561 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12563 { &hf_ff_sm_id_rsp_h1_node_addr_ver_num_ver_num,
12564 { "Version Number", "ff.sm.id.rsp.h1_node_addr_ver_num.ver_num",
12565 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12567 { &hf_ff_sm_id_rsp_smk_state_name,
12568 { "Name", "ff.sm.id.rsp.smk_state_name",
12569 FT_UINT8, BASE_DEC, VALS(names_smk_state), 0xFE, NULL, HFILL } },
12571 { &hf_ff_sm_id_rsp_smk_state_sync,
12572 { "Synchronized with SNTP Time Server", "ff.sm.id.rsp.smk_state_sync",
12573 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01, NULL, HFILL } },
12575 { &hf_ff_sm_id_rsp_dev_type_link,
12576 { "Linking Device", "ff.sm.id.rsp.dev_type.link",
12577 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x80, NULL, HFILL } },
12579 { &hf_ff_sm_id_rsp_dev_type_iogateway,
12580 { "I/O Gateway", "ff.sm.id.rsp.dev_type.iogateway",
12581 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40, NULL, HFILL } },
12583 { &hf_ff_sm_id_rsp_dev_type_hse,
12584 { "HSE Field Device", "ff.sm.id.rsp.dev_type.hse",
12585 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20, NULL, HFILL } },
12587 { &hf_ff_sm_id_rsp_dev_type_h1,
12588 { "H1 Device", "ff.sm.id.rsp.dev_type.h1",
12589 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10, NULL, HFILL } },
12591 { &hf_ff_sm_id_rsp_dev_type_reserved,
12592 { "Reserved", "ff.sm.id.rsp.dev_type.reserved",
12593 FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL } },
12595 { &hf_ff_sm_id_rsp_dev_type_redundant_caps,
12596 { "Redundant Device Type Capability", "ff.sm.id.rsp.dev_type.redundant_caps",
12597 FT_UINT8, BASE_DEC, VALS(names_dev_type), 0x07, NULL, HFILL } },
12599 { &hf_ff_sm_id_rsp_dev_redundancy_state_reserved,
12600 { "Reserved", "ff.sm.id.rsp.dev_redundancy_state.reserved",
12601 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL } },
12603 { &hf_ff_sm_id_rsp_dev_redundancy_state_role,
12604 { "Device Redundancy Role", "ff.sm.id.rsp.dev_redundancy_state.role",
12605 FT_UINT8, BASE_DEC, VALS(names_dev_redundancy_role), 0x0C, NULL, HFILL } },
12607 { &hf_ff_sm_id_rsp_dev_redundancy_state_type,
12608 { "Assigned Redundant Device Type", "ff.sm.id.rsp.dev_redundancy_state.type",
12609 FT_UINT8, BASE_DEC, VALS(names_assigned_redundant_dev_type), 0x03, NULL, HFILL } },
12611 { &hf_ff_sm_id_rsp_dup_detection_state_reserved,
12612 { "Reserved", "ff.sm.id.rsp.dup_detection_state.reserved",
12613 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
12615 { &hf_ff_sm_id_rsp_dup_detection_state_pd_tag,
12616 { "Duplicate PD Tag", "ff.sm.id.rsp.dup_detection_state.pd_tag",
12617 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
12619 { &hf_ff_sm_id_rsp_dup_detection_state_device,
12620 { "Duplicate Device Index", "ff.sm.id.rsp.dup_detection_state.device",
12621 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
12625 * 6.5.2.3.3. Error Message Parameters
12627 { &hf_ff_sm_id_err,
12628 { "SM Identify Error", "ff.sm.id.err",
12629 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12631 { &hf_ff_sm_id_err_err_class,
12632 { "Error Class", "ff.sm.id.err.err_class",
12633 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12635 { &hf_ff_sm_id_err_err_code,
12636 { "Error Code", "ff.sm.id.err.err_code",
12637 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12639 { &hf_ff_sm_id_err_additional_code,
12640 { "Additional Code", "ff.sm.id.err.additional_code",
12641 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12643 { &hf_ff_sm_id_err_additional_desc,
12644 { "Additional Description", "ff.sm.id.err.additional_desc",
12645 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12650 * 6.5.2.4. SM Clear Address (Confirmed Service Id = 12)
12652 { &hf_ff_sm_clear_addr,
12653 { "SM Clear Address", "ff.sm.clear_addr",
12654 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12659 * 6.5.2.4.1. Request Message Parameters
12661 { &hf_ff_sm_clear_addr_req,
12662 { "SM Clear Address Request", "ff.sm.clear_addr.req",
12663 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12665 { &hf_ff_sm_clear_addr_req_dev_id,
12666 { "Device ID", "ff.sm.clear_addr.req.dev_id",
12667 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12669 { &hf_ff_sm_clear_addr_req_pd_tag,
12670 { "PD Tag", "ff.sm.clear_addr.req.pd_tag",
12671 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12673 { &hf_ff_sm_clear_addr_req_interface_to_clear,
12674 { "Interface to Clear", "ff.sm.clear_addr.req.interface_to_clear",
12675 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12680 * 6.5.2.4.2. Response Message Parameters
12682 { &hf_ff_sm_clear_addr_rsp,
12683 { "SM Clear Address Response", "ff.sm.clear_addr.rsp",
12684 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12689 * 6.5.2.4.3. Error Message Parameters
12691 { &hf_ff_sm_clear_addr_err,
12692 { "SM Clear Address Error", "ff.sm.clear_addr.err",
12693 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12695 { &hf_ff_sm_clear_addr_err_err_class,
12696 { "Error Class", "ff.sm.clear_addr.err.err_class",
12697 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12699 { &hf_ff_sm_clear_addr_err_err_code,
12700 { "Error Code", "ff.sm.clear_addr.err.err_code",
12701 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12703 { &hf_ff_sm_clear_addr_err_additional_code,
12704 { "Additional Code", "ff.sm.clear_addr.err.additional_code",
12705 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12707 { &hf_ff_sm_clear_addr_err_additional_desc,
12708 { "Additional Description", "ff.sm.clear_addr.err.additional_desc",
12709 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12714 * 6.5.2.5. SM Set Assignment Info (Confirmed Service Id = 14)
12716 { &hf_ff_sm_set_assign_info,
12717 { "SM Set Assignment Info", "ff.sm.set_assign_info",
12718 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12723 * 6.5.2.5.1. Request Message Parameters
12725 { &hf_ff_sm_set_assign_info_req_dev_redundancy_state_reserved,
12726 { "Reserved", "ff.sm.set_assign_info.req_dev_redundancy_state.reserved",
12727 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL } },
12729 { &hf_ff_sm_set_assign_info_req_dev_redundancy_state_role,
12730 { "Type D-2 Device Redundancy Role", "ff.sm.set_assign_info.req_dev_redundancy_state.role",
12731 FT_UINT8, BASE_DEC, VALS(names_type_d2_dev_redundancy_role), 0x0C, NULL, HFILL } },
12733 { &hf_ff_sm_set_assign_info_req_dev_redundancy_state_type,
12734 { "Assigned Device Redundancy Type", "ff.sm.set_assign_info.req_dev_redundancy_state.type",
12735 FT_UINT8, BASE_DEC, VALS(names_assigned_redundant_dev_type), 0x03, NULL, HFILL } },
12737 { &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_reserved,
12738 { "Reserved", "ff.sm.set_assign_info.req_clear_dup_detection_state.reserved",
12739 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
12741 { &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_pd_tag,
12742 { "Duplicate PD Tag Detected", "ff.sm.set_assign_info.req_clear_dup_detection_state.pd_tag",
12743 FT_BOOLEAN, 8, TFS(&tfs_do_not_clear_clear), 0x02, NULL, HFILL } },
12745 { &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_device_index,
12746 { "Duplicate Device Index Detected", "ff.sm.set_assign_info.req_clear_dup_detection_state.device_index",
12747 FT_BOOLEAN, 8, TFS(&tfs_do_not_clear_clear), 0x01, NULL, HFILL } },
12749 { &hf_ff_sm_set_assign_info_req,
12750 { "SM Set Assignment Info Request", "ff.sm.set_assign_info.req",
12751 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12753 { &hf_ff_sm_set_assign_info_req_dev_id,
12754 { "Device ID", "ff.sm.set_assign_info.req.dev_id",
12755 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12757 { &hf_ff_sm_set_assign_info_req_pd_tag,
12758 { "PD Tag", "ff.sm.set_assign_info.req.pd_tag",
12759 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12761 { &hf_ff_sm_set_assign_info_req_h1_new_addr,
12762 { "H1 New Address", "ff.sm.set_assign_info.req.h1_new_addr",
12763 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12765 { &hf_ff_sm_set_assign_info_req_lr_port,
12766 { "LAN Redundancy Port",
12767 "ff.sm.set_assign_info.req.lr_port",
12768 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12770 { &hf_ff_sm_set_assign_info_req_hse_repeat_time,
12771 { "HSE Repeat Time", "ff.sm.set_assign_info.req.hse_repeat_time",
12772 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12774 { &hf_ff_sm_set_assign_info_req_dev_idx,
12775 { "Device Index", "ff.sm.set_assign_info.req.dev_idx",
12776 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12778 { &hf_ff_sm_set_assign_info_req_max_dev_idx,
12779 { "Max Device Index", "ff.sm.set_assign_info.req.max_dev_idx",
12780 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12782 { &hf_ff_sm_set_assign_info_req_operational_ip_addr,
12783 { "Operational IP Address",
12784 "ff.sm.set_assign_info.req.operational_ip_addr",
12785 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12790 * 6.5.2.5.2. Response Message Parameters
12792 { &hf_ff_sm_set_assign_info_rsp,
12793 { "SM Set Assignment Info Response", "ff.sm.set_assign_info.rsp",
12794 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12796 { &hf_ff_sm_set_assign_info_rsp_reserved,
12797 { "Reserved", "ff.sm.set_assign_info.rsp.reserved",
12798 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12800 { &hf_ff_sm_set_assign_info_rsp_max_dev_idx,
12801 { "Max Device Index", "ff.sm.set_assign_info.rsp.max_dev_idx",
12802 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12804 { &hf_ff_sm_set_assign_info_rsp_hse_repeat_time,
12805 { "HSE Repeat Time", "ff.sm.set_assign_info.rsp.hse_repeat_time",
12806 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12811 * 6.5.2.5.3. Error Message Parameters
12813 { &hf_ff_sm_set_assign_info_err,
12814 { "SM Set Assignment Info Error", "ff.sm.set_assign_info.err",
12815 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12817 { &hf_ff_sm_set_assign_info_err_err_class,
12818 { "Error Class", "ff.sm.set_assign_info.err.err_class",
12819 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12821 { &hf_ff_sm_set_assign_info_err_err_code,
12822 { "Error Code", "ff.sm.set_assign_info.err.err_code",
12823 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12825 { &hf_ff_sm_set_assign_info_err_additional_code,
12826 { "Additional Code", "ff.sm.set_assign_info.err.additional_code",
12827 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12829 { &hf_ff_sm_set_assign_info_err_additional_desc,
12830 { "Additional Description",
12831 "ff.sm.set_assign_info.err.additional_desc",
12832 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12837 * 6.5.2.6. SM Clear Assignment Info (Confirmed Service Id = 15)
12839 { &hf_ff_sm_clear_assign_info,
12840 { "SM Clear Assignment Info", "ff.sm.clear_assign_info",
12841 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12846 * 6.5.2.6.1. Request Message Parameters
12848 { &hf_ff_sm_clear_assign_info_req,
12849 { "SM Clear Assignment Info Request", "ff.sm.clear_assign_info.req",
12850 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12852 { &hf_ff_sm_clear_assign_info_req_dev_id,
12853 { "Device ID", "ff.sm.clear_assign_info.req.dev_id",
12854 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12856 { &hf_ff_sm_clear_assign_info_req_pd_tag,
12857 { "PD Tag", "ff.sm.clear_assign_info.req.pd_tag",
12858 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12863 * 6.5.2.6.2. Response Message Parameters
12865 { &hf_ff_sm_clear_assign_info_rsp,
12866 { "SM Clear Assignment Info Response",
12867 "ff.sm.clear_assign_info.rsp",
12868 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12873 * 6.5.2.6.3. Error Message Parameters
12875 { &hf_ff_sm_clear_assign_info_err,
12876 { "SM Clear Assignment Info Error", "ff.sm.clear_assign_info.err",
12877 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12879 { &hf_ff_sm_clear_assign_info_err_err_class,
12880 { "Error Class", "ff.sm.clear_assign_info.err.err_class",
12881 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12883 { &hf_ff_sm_clear_assign_info_err_err_code,
12884 { "Error Code", "ff.sm.clear_assign_info.err.err_code",
12885 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12887 { &hf_ff_sm_clear_assign_info_err_additional_code,
12888 { "Additional Code", "ff.sm.clear_assign_info.err.additional_code",
12889 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12891 { &hf_ff_sm_clear_assign_info_err_additional_desc,
12892 { "Additional Description",
12893 "ff.sm.clear_assign_info.err.additional_desc",
12894 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12899 * 6.5.2.7. SM Device Annunciation (Unconfirmed Service Id = 16)
12901 { &hf_ff_sm_dev_annunc,
12902 { "SM Device Annunciation", "ff.sm.dev_annunc",
12903 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12908 * 6.5.2.7.1. Request Message Parameters
12910 { &hf_ff_sm_dev_annunc_req,
12911 { "SM Device Annunciation Request", "ff.sm.dev_annunc.req",
12912 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12914 { &hf_ff_sm_dev_annunc_req_dev_idx,
12915 { "Device Index", "ff.sm.dev_annunc.req.dev_idx",
12916 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12918 { &hf_ff_sm_dev_annunc_req_max_dev_idx,
12919 { "Max Device Index", "ff.sm.dev_annunc.req.max_dev_idx",
12920 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12922 { &hf_ff_sm_dev_annunc_req_operational_ip_addr,
12923 { "Operational IP Address",
12924 "ff.sm.dev_annunc.req.operational_ip_addr",
12925 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12927 { &hf_ff_sm_dev_annunc_req_dev_id,
12928 { "Device ID", "ff.sm.dev_annunc.req.dev_id",
12929 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12931 { &hf_ff_sm_dev_annunc_req_pd_tag,
12932 { "PD Tag", "ff.sm.dev_annunc.req.pd_tag",
12933 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12935 { &hf_ff_sm_dev_annunc_req_hse_repeat_time,
12936 { "HSE Repeat Time", "ff.sm.dev_annunc.req.hse_repeat_time",
12937 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12939 { &hf_ff_sm_dev_annunc_req_lr_port,
12940 { "LAN Redundancy Port", "ff.sm.dev_annunc.req.lr_port",
12941 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12943 { &hf_ff_sm_dev_annunc_req_reserved,
12944 { "Reserved", "ff.sm.dev_annunc.req.reserved",
12945 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12947 { &hf_ff_sm_dev_annunc_req_annunc_ver_num,
12948 { "Annunciation Version Number",
12949 "ff.sm.dev_annunc.req.annunc_ver_num",
12950 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12952 { &hf_ff_sm_dev_annunc_req_hse_dev_ver_num,
12953 { "HSE Device Version Number",
12954 "ff.sm.dev_annunc.req.hse_dev_ver_num",
12955 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12957 { &hf_ff_sm_dev_annunc_req_num_of_entries,
12958 { "Number of Entries in Version Number List",
12959 "ff.sm.dev_annunc.req.num_of_entries",
12960 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12962 { &hf_ff_sm_dev_annunc_req_h1_live_list_h1_link_id,
12963 { "H1 Link Id", "ff.sm.dev_annunc.req.h1_live_list.h1_link_id",
12964 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12966 { &hf_ff_sm_dev_annunc_req_h1_live_list_reserved,
12967 { "Reserved", "ff.sm.dev_annunc.req.h1_live_list.reserved",
12968 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12970 { &hf_ff_sm_dev_annunc_req_h1_live_list_ver_num,
12971 { "Version Number", "ff.sm.dev_annunc.req.h1_live_list.ver_num",
12972 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12974 { &hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_h1_node_addr,
12975 { "H1 Node Address",
12976 "ff.sm.dev_annunc.req.h1_node_addr_ver_num.h1_node_addr",
12977 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12979 { &hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_ver_num,
12980 { "Version Number",
12981 "ff.sm.dev_annunc.req.h1_node_addr_ver_num.ver_num",
12982 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12984 { &hf_ff_sm_dev_annunc_req_smk_state_name,
12985 { "Name", "ff.sm.dev_annunc.req.smk_state_name",
12986 FT_UINT8, BASE_DEC, VALS(names_smk_state), 0xFE, NULL, HFILL } },
12988 { &hf_ff_sm_dev_annunc_req_smk_state_sync,
12989 { "Synchronized with SNTP Time Server", "ff.sm.dev_annunc.req.smk_state_sync",
12990 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01, NULL, HFILL } },
12992 { &hf_ff_sm_dev_annunc_req_dev_type_link,
12993 { "Linking Device", "ff.sm.dev_annunc.req.dev_type.link",
12994 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x80, NULL, HFILL } },
12996 { &hf_ff_sm_dev_annunc_req_dev_type_iogateway,
12997 { "I/O Gateway", "ff.sm.dev_annunc.req.dev_type.iogateway",
12998 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40, NULL, HFILL } },
13000 { &hf_ff_sm_dev_annunc_req_dev_type_hse,
13001 { "HSE Field Device", "ff.sm.dev_annunc.req.dev_type.hse",
13002 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20, NULL, HFILL } },
13004 { &hf_ff_sm_dev_annunc_req_dev_type_h1,
13005 { "H1 Device", "ff.sm.dev_annunc.req.dev_type.h1",
13006 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10, NULL, HFILL } },
13008 { &hf_ff_sm_dev_annunc_req_dev_type_reserved,
13009 { "Reserved", "ff.sm.dev_annunc.req.dev_type.reserved",
13010 FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL } },
13012 { &hf_ff_sm_dev_annunc_req_dev_type_redundant_caps,
13013 { "Redundant Device Type Capability", "ff.sm.dev_annunc.req.dev_type.redundant_caps",
13014 FT_UINT8, BASE_DEC, VALS(names_dev_type), 0x07, NULL, HFILL } },
13016 { &hf_ff_sm_dev_annunc_req_dev_redundancy_state_reserved,
13017 { "Reserved", "ff.sm.dev_annunc.req_dev_redundancy_state.reserved",
13018 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL } },
13020 { &hf_ff_sm_dev_annunc_req_dev_redundancy_state_role,
13021 { "Type D-2 Device Redundancy Role", "ff.sm.dev_annunc.req_dev_redundancy_state.role",
13022 FT_UINT8, BASE_DEC, VALS(names_type_d2_dev_redundancy_role), 0x0C, NULL, HFILL } },
13024 { &hf_ff_sm_dev_annunc_req_dev_redundancy_state_type,
13025 { "Assigned Device Redundancy Type", "ff.sm.dev_annunc.req_dev_redundancy_state.type",
13026 FT_UINT8, BASE_DEC, VALS(names_assigned_redundant_dev_type), 0x03, NULL, HFILL } },
13028 { &hf_ff_sm_dev_annunc_req_dup_detection_state_reserved,
13029 { "Reserved", "ff.sm.dev_annunc.req.dup_detection_state.reserved",
13030 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
13032 { &hf_ff_sm_dev_annunc_req_dup_detection_state_pd_tag,
13033 { "Duplicate PD Tag", "ff.sm.dev_annunc.req.dup_detection_state.pd_tag",
13034 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
13036 { &hf_ff_sm_dev_annunc_req_dup_detection_state_device,
13037 { "Duplicate Device Index", "ff.sm.dev_annunc.req.dup_detection_state.device",
13038 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
13042 * 6.5.3. FMS Services
13044 { &hf_ff_fms,
13045 { "FMS Service", "ff.fms",
13046 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13051 * 6.5.3.2. FMS Initiate (Confirmed Service Id = 96)
13053 { &hf_ff_fms_init,
13054 { "FMS Initiate", "ff.fms.init",
13055 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13060 * 6.5.3.2.1. Request Message Parameters
13062 { &hf_ff_fms_init_req,
13063 { "FMS Initiate Request", "ff.fms.init.req",
13064 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13066 { &hf_ff_fms_init_req_conn_opt,
13067 { "Connect Option", "ff.fms.init.req.conn_opt",
13068 FT_UINT8, BASE_DEC, VALS(names_conn_opt), 0x0, NULL, HFILL } },
13070 { &hf_ff_fms_init_req_access_protection_supported_calling,
13071 { "Access Protection Supported Calling",
13072 "ff.fms.init.req.access_protection_supported_calling",
13073 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13075 { &hf_ff_fms_init_req_passwd_and_access_grps_calling,
13076 { "Password and Access Groups Calling",
13077 "ff.fms.init.req.passwd_and_access_grps_calling",
13078 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13080 { &hf_ff_fms_init_req_ver_od_calling,
13081 { "Version OD Calling", "ff.fms.init.req.ver_od_calling",
13082 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13084 { &hf_ff_fms_init_req_prof_num_calling,
13085 { "Profile Number Calling", "ff.fms.init.req.prof_num_calling",
13086 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13088 { &hf_ff_fms_init_req_pd_tag,
13089 { "PD Tag", "ff.fms.init.req.pd_tag",
13090 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13095 * 6.5.3.2.2. Response Message Parameters
13097 { &hf_ff_fms_init_rsp,
13098 { "FMS Initiate Response", "ff.fms.init.rsp",
13099 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13101 { &hf_ff_fms_init_rsp_ver_od_called,
13102 { "Version OD Called", "ff.fms.init.rsp.ver_od_called",
13103 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13105 { &hf_ff_fms_init_rsp_prof_num_called,
13106 { "Profile Number Called", "ff.fms.init.rsp.prof_num_called",
13107 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13112 * 6.5.3.2.3. Error Message Parameters
13114 { &hf_ff_fms_init_err,
13115 { "FMS Initiate Error", "ff.fms.init.err",
13116 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13118 { &hf_ff_fms_init_err_err_class,
13119 { "Error Class", "ff.fms.init.err.err_class",
13120 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13122 { &hf_ff_fms_init_err_err_code,
13123 { "Error Code", "ff.fms.init.err.err_code",
13124 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13126 { &hf_ff_fms_init_err_additional_code,
13127 { "Additional Code", "ff.fms.init.err.additional_code",
13128 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13130 { &hf_ff_fms_init_err_additional_desc,
13131 { "Additional Description", "ff.fms.init.err.additional_desc",
13132 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13137 * 6.5.3.3. FMS Abort (Unconfirmed Service Id = 112)
13139 { &hf_ff_fms_abort,
13140 { "FMS Abort", "ff.fms.abort",
13141 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13146 * 6.5.3.3.1. Request Message Parameters
13148 { &hf_ff_fms_abort_req,
13149 { "FMS Abort Request", "ff.fms.abort.req",
13150 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13152 { &hf_ff_fms_abort_req_abort_id,
13153 { "Abort Identifier", "ff.fms.abort.req.abort_id",
13154 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13156 { &hf_ff_fms_abort_req_reason_code,
13157 { "Reason Code", "ff.fms.abort.req.reason_code",
13158 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13160 { &hf_ff_fms_abort_req_reserved,
13161 { "Reserved", "ff.fms.abort.req.reserved",
13162 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13167 * 6.5.3.4. FMS Status (Confirmed Service Id = 0)
13169 { &hf_ff_fms_status,
13170 { "FMS Status", "ff.fms.status",
13171 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13176 * 6.5.3.4.1. Request Message Parameters
13178 { &hf_ff_fms_status_req,
13179 { "FMS Status Request", "ff.fms.status.req",
13180 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13185 * 6.5.3.4.2. Response Message Parameters
13187 { &hf_ff_fms_status_rsp,
13188 { "FMS Status Response", "ff.fms.status.rsp",
13189 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13191 { &hf_ff_fms_status_rsp_logical_status,
13192 { "Logical Status", "ff.fms.status.rsp.logical_status",
13193 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13195 { &hf_ff_fms_status_rsp_physical_status,
13196 { "Physical Status", "ff.fms.status.rsp.physical_status",
13197 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13199 { &hf_ff_fms_status_rsp_reserved,
13200 { "Reserved", "ff.fms.status.rsp.reserved",
13201 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13206 * 6.5.3.4.3. Error Message Parameters
13208 { &hf_ff_fms_status_err,
13209 { "FMS Status Error", "ff.fms.status.err",
13210 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13212 { &hf_ff_fms_status_err_err_class,
13213 { "Error Class", "ff.fms.status.err.err_class",
13214 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13216 { &hf_ff_fms_status_err_err_code,
13217 { "Error Code", "ff.fms.status.err.err_code",
13218 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13220 { &hf_ff_fms_status_err_additional_code,
13221 { "Additional Code", "ff.fms.status.err.additional_code",
13222 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13224 { &hf_ff_fms_status_err_additional_desc,
13225 { "Additional Description", "ff.fms.status.err.additional_desc",
13226 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13231 * 6.5.3.5. FMS Unsolicited Status (Unconfirmed Service Id = 1)
13233 { &hf_ff_fms_unsolicited_status,
13234 { "FMS Unsolicited Status", "ff.fms.unsolicited_status",
13235 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13240 * 6.5.3.5.1. Request Message Parameters
13242 { &hf_ff_fms_unsolicited_status_req,
13243 { "FMS Unsolicited Status Request", "ff.fms.unsolicited_status.req",
13244 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13246 { &hf_ff_fms_unsolicited_status_req_logical_status,
13247 { "Logical Status", "ff.fms.unsolicited_status.req.logical_status",
13248 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13250 { &hf_ff_fms_unsolicited_status_req_physical_status,
13251 { "Physical Status",
13252 "ff.fms.unsolicited_status.req.physical_status",
13253 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13255 { &hf_ff_fms_unsolicited_status_req_reserved,
13256 { "Reserved", "ff.fms.unsolicited_status.req.reserved",
13257 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13262 * 6.5.3.6. FMS Identify (Confirmed Service Id = 1)
13264 { &hf_ff_fms_id,
13265 { "FMS Identify", "ff.fms.id",
13266 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13271 * 6.5.3.6.1. Request Message Parameters
13273 { &hf_ff_fms_id_req,
13274 { "FMS Identify Request", "ff.fms.id.req",
13275 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13280 * 6.5.3.6.2. Response Message Parameters
13282 { &hf_ff_fms_id_rsp,
13283 { "FMS Identify Response", "ff.fms.id.rsp",
13284 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13286 { &hf_ff_fms_id_rsp_vendor_name,
13287 { "Vendor Name", "ff.fms.id.rsp.vendor_name",
13288 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13290 { &hf_ff_fms_id_rsp_model_name,
13291 { "Model Name", "ff.fms.id.rsp.model_name",
13292 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13294 { &hf_ff_fms_id_rsp_revision,
13295 { "Revision", "ff.fms.id.rsp.revision",
13296 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13301 * 6.5.3.6.3. Error Message Parameters
13303 { &hf_ff_fms_id_err,
13304 { "FMS Identify Error", "ff.fms.id.err",
13305 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13307 { &hf_ff_fms_id_err_err_class,
13308 { "Error Class", "ff.fms.id.err.err_class",
13309 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13311 { &hf_ff_fms_id_err_err_code,
13312 { "Error Code", "ff.fms.id.err.err_code",
13313 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13315 { &hf_ff_fms_id_err_additional_code,
13316 { "Additional Code", "ff.fms.id.err.additional_code",
13317 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13319 { &hf_ff_fms_id_err_additional_desc,
13320 { "Additional Description", "ff.fms.id.err.additional_desc",
13321 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13326 * 6.5.3.7. FMS Get OD (Confirmed Service Id = 4)
13328 { &hf_ff_fms_get_od,
13329 { "FMS Get OD", "ff.fms.get_od",
13330 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13335 * 6.5.3.7.1. Request Message Parameters
13337 { &hf_ff_fms_get_od_req,
13338 { "FMS Get OD Request", "ff.fms.get_od.req",
13339 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13341 { &hf_ff_fms_get_od_req_all_attrs,
13342 { "All Attributes", "ff.fms.get_od.req.all_attrs",
13343 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13345 { &hf_ff_fms_get_od_req_start_idx_flag,
13346 { "Start Index Flag", "ff.fms.get_od.req.start_idx_flag",
13347 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13349 { &hf_ff_fms_get_od_req_reserved,
13350 { "Reserved", "ff.fms.get_od.req.reserved",
13351 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13353 { &hf_ff_fms_get_od_req_idx,
13354 { "Index", "ff.fms.get_od.req.idx",
13355 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13360 * 6.5.3.7.2. Response Message Parameters
13362 { &hf_ff_fms_get_od_rsp,
13363 { "FMS Get OD Response", "ff.fms.get_od.rsp",
13364 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13366 { &hf_ff_fms_get_od_rsp_more_follows,
13367 { "More Follows", "ff.fms.get_od.rsp.more_follows",
13368 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13370 { &hf_ff_fms_get_od_rsp_num_of_obj_desc,
13371 { "Number of Object Descriptions",
13372 "ff.fms.get_od.rsp.num_of_obj_desc",
13373 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13375 { &hf_ff_fms_get_od_rsp_reserved,
13376 { "Reserved", "ff.fms.get_od.rsp.reserved",
13377 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13382 * 6.5.3.7.3. Error Message Parameters
13384 { &hf_ff_fms_get_od_err,
13385 { "FMS Get OD Error", "ff.fms.get_od.err",
13386 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13388 { &hf_ff_fms_get_od_err_err_class,
13389 { "Error Class", "ff.fms.get_od.err.err_class",
13390 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13392 { &hf_ff_fms_get_od_err_err_code,
13393 { "Error Code", "ff.fms.get_od.err.err_code",
13394 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13396 { &hf_ff_fms_get_od_err_additional_code,
13397 { "Additional Code", "ff.fms.get_od.err.additional_code",
13398 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13400 { &hf_ff_fms_get_od_err_additional_desc,
13401 { "Additional Description", "ff.fms.get_od.err.additional_desc",
13402 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13407 * 6.5.3.8. FMS Initiate Put OD (Confirmed Service Id = 28)
13409 { &hf_ff_fms_init_put_od,
13410 { "FMS Initiate Put OD", "ff.fms.init_put_od",
13411 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13416 * 6.5.3.8.1. Request Message Parameters
13418 { &hf_ff_fms_init_put_od_req,
13419 { "FMS Initiate Put OD Request", "ff.fms.init_put_od.req",
13420 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13422 { &hf_ff_fms_init_put_od_req_reserved,
13423 { "Reserved", "ff.fms.init_put_od.req.reserved",
13424 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13426 { &hf_ff_fms_init_put_od_req_consequence,
13427 { "Consequence", "ff.fms.init_put_od.req.consequence",
13428 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13433 * 6.5.3.8.2. Response Message Parameters
13435 { &hf_ff_fms_init_put_od_rsp,
13436 { "FMS Initiate Put OD Response", "ff.fms.init_put_od.rsp",
13437 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13442 * 6.5.3.8.3. Error Message Parameters
13444 { &hf_ff_fms_init_put_od_err,
13445 { "FMS Initiate Put OD Error", "ff.fms.init_put_od.err",
13446 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13448 { &hf_ff_fms_init_put_od_err_err_class,
13449 { "Error Class", "ff.fms.init_put_od.err.err_class",
13450 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13452 { &hf_ff_fms_init_put_od_err_err_code,
13453 { "Error Code", "ff.fms.init_put_od.err.err_code",
13454 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13456 { &hf_ff_fms_init_put_od_err_additional_code,
13457 { "Additional Code", "ff.fms.init_put_od.err.additional_code",
13458 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13460 { &hf_ff_fms_init_put_od_err_additional_desc,
13461 { "Additional Description",
13462 "ff.fms.init_put_od.err.additional_desc",
13463 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13468 * 6.5.3.9. FMS Put OD (Confirmed Service Id = 29)
13470 { &hf_ff_fms_put_od,
13471 { "FMS Put OD", "ff.fms.put_od",
13472 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13477 * 6.5.3.9.1. Request Message Parameters
13479 { &hf_ff_fms_put_od_req,
13480 { "FMS Put OD Request", "ff.fms.put_od.req",
13481 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13483 { &hf_ff_fms_put_od_req_num_of_obj_desc,
13484 { "Number of Object Descriptions",
13485 "ff.fms.put_od.req.num_of_obj_desc",
13486 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13491 * 6.5.3.9.2. Response Message Parameters
13493 { &hf_ff_fms_put_od_rsp,
13494 { "FMS Put OD Response", "ff.fms.put_od.rsp",
13495 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13500 * 6.5.3.9.3. Error Message Parameters
13502 { &hf_ff_fms_put_od_err,
13503 { "FMS Put OD Error", "ff.fms.put_od.err",
13504 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13506 { &hf_ff_fms_put_od_err_err_class,
13507 { "Error Class", "ff.fms.put_od.err.err_class",
13508 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13510 { &hf_ff_fms_put_od_err_err_code,
13511 { "Error Code", "ff.fms.put_od.err.err_code",
13512 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13514 { &hf_ff_fms_put_od_err_additional_code,
13515 { "Additional Code", "ff.fms.put_od.err.additional_code",
13516 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13518 { &hf_ff_fms_put_od_err_additional_desc,
13519 { "Additional Description", "ff.fms.put_od.err.additional_desc",
13520 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13525 * 6.5.3.10. FMS Terminate Put OD (Confirmed Service Id = 30)
13527 { &hf_ff_fms_terminate_put_od,
13528 { "FMS Terminate Put OD", "ff.fms.terminate_put_od",
13529 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13534 * 6.5.3.10.1. Request Message Parameters
13536 { &hf_ff_fms_terminate_put_od_req,
13537 { "FMS Terminate Put OD Request", "ff.fms.terminate_put_od.req",
13538 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13543 * 6.5.3.10.2. Response Message Parameters
13545 { &hf_ff_fms_terminate_put_od_rsp,
13546 { "FMS Terminate Put OD Response", "ff.fms.terminate_put_od.rsp",
13547 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13552 * 6.5.3.10.3. Error Message Parameters
13554 { &hf_ff_fms_terminate_put_od_err,
13555 { "FMS Terminate Put OD Error", "ff.fms.terminate_put_od.err",
13556 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13558 { &hf_ff_fms_terminate_put_od_err_index,
13559 { "Index", "ff.fms.terminate_put_od.err.index",
13560 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13562 { &hf_ff_fms_terminate_put_od_err_err_class,
13563 { "Error Class", "ff.fms.terminate_put_od.err.err_class",
13564 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13566 { &hf_ff_fms_terminate_put_od_err_err_code,
13567 { "Error Code", "ff.fms.terminate_put_od.err.err_code",
13568 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13570 { &hf_ff_fms_terminate_put_od_err_additional_code,
13571 { "Additional Code", "ff.fms.terminate_put_od.err.additional_code",
13572 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13574 { &hf_ff_fms_terminate_put_od_err_additional_desc,
13575 { "Additional Description",
13576 "ff.fms.terminate_put_od.err.additional_desc",
13577 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13582 * 6.5.3.11. FMS Generic Initiate Download Sequence
13583 * (Confirmed Service Id = 31)
13585 { &hf_ff_fms_gen_init_download_seq,
13586 { "FMS Generic Initiate Download Sequence",
13587 "ff.fms.gen_init_download_seq",
13588 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13593 * 6.5.3.11.1. Request Message Parameters
13595 { &hf_ff_fms_gen_init_download_seq_req,
13596 { "FMS Generic Initiate Download Sequence Request",
13597 "ff.fms.gen_init_download_seq.req",
13598 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13600 { &hf_ff_fms_gen_init_download_seq_req_idx,
13601 { "Index",
13602 "ff.fms.gen_init_download_seq.req.idx",
13603 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13608 * 6.5.3.11.2. Response Message Parameters
13610 { &hf_ff_fms_gen_init_download_seq_rsp,
13611 { "FMS Generic Initiate Download Sequence Response",
13612 "ff.fms.gen_init_download_seq.rsp",
13613 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13618 * 6.5.3.11.3. Error Message Parameters
13620 { &hf_ff_fms_gen_init_download_seq_err,
13621 { "FMS Generic Initiate Download Sequence Error",
13622 "ff.fms.gen_init_download_seq.err",
13623 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13625 { &hf_ff_fms_gen_init_download_seq_err_err_class,
13626 { "Error Class", "ff.fms.gen_init_download_seq.err.err_class",
13627 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13629 { &hf_ff_fms_gen_init_download_seq_err_err_code,
13630 { "Error Code", "ff.fms.gen_init_download_seq.err.err_code",
13631 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13633 { &hf_ff_fms_gen_init_download_seq_err_additional_code,
13634 { "Additional Code",
13635 "ff.fms.gen_init_download_seq.err.additional_code",
13636 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13638 { &hf_ff_fms_gen_init_download_seq_err_additional_desc,
13639 { "Additional Description",
13640 "ff.fms.gen_init_download_seq.err.additional_desc",
13641 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13646 * 6.5.3.12. FMS Generic Download Segment (Confirmed Service Id = 32)
13648 { &hf_ff_fms_gen_download_seg,
13649 { "FMS Generic Download Segment", "ff.fms.gen_download_seg",
13650 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13655 * 6.5.3.12.1. Request Message Parameters
13657 { &hf_ff_fms_gen_download_seg_req,
13658 { "FMS Generic Download Segment Request",
13659 "ff.fms.gen_download_seg.req",
13660 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13662 { &hf_ff_fms_gen_download_seg_req_idx,
13663 { "Index", "ff.fms.gen_download_seg.req.idx",
13664 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13666 { &hf_ff_fms_gen_download_seg_req_more_follows,
13667 { "More Follows", "ff.fms.gen_download_seg.req.more_follows",
13668 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13673 * 6.5.3.12.2. Response Message Parameters
13675 { &hf_ff_fms_gen_download_seg_rsp,
13676 { "FMS Generic Download Segment Response",
13677 "ff.fms.gen_download_seg.rsp",
13678 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13683 * 6.5.3.12.3. Error Message Parameters
13685 { &hf_ff_fms_gen_download_seg_err,
13686 { "FMS Generic Download Segment Error",
13687 "ff.fms.gen_download_seg.err",
13688 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13690 { &hf_ff_fms_gen_download_seg_err_err_class,
13691 { "Error Class", "ff.fms.gen_download_seg.err.err_class",
13692 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13694 { &hf_ff_fms_gen_download_seg_err_err_code,
13695 { "Error Code", "ff.fms.gen_download_seg.err.err_code",
13696 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13698 { &hf_ff_fms_gen_download_seg_err_additional_code,
13699 { "Additional Code", "ff.fms.gen_download_seg.err.additional_code",
13700 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13702 { &hf_ff_fms_gen_download_seg_err_additional_desc,
13703 { "Additional Description",
13704 "ff.fms.gen_download_seg.err.additional_desc",
13705 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13710 * 6.5.3.13. FMS Generic Terminate Download Sequence
13711 * (Confirmed Service Id = 33)
13713 { &hf_ff_fms_gen_terminate_download_seq,
13714 { "FMS Generic Terminate Download Sequence",
13715 "ff.fms.gen_terminate_download_seq",
13716 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13721 * 6.5.3.13.1. Request Message Parameters
13723 { &hf_ff_fms_gen_terminate_download_seq_req,
13724 { "FMS Generic Terminate Download Sequence Request",
13725 "ff.fms.gen_terminate_download_seq.req",
13726 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13728 { &hf_ff_fms_gen_terminate_download_seq_req_idx,
13729 { "Index", "ff.fms.gen_terminate_download_seq.req.idx",
13730 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13735 * 6.5.3.13.2. Response Message Parameters
13737 { &hf_ff_fms_gen_terminate_download_seq_rsp,
13738 { "FMS Generic Terminate Download Sequence Response",
13739 "ff.fms.gen_terminate_download_seq.rsp",
13740 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13742 { &hf_ff_fms_gen_terminate_download_seq_rsp_final_result,
13743 { "Final Result",
13744 "ff.fms.gen_terminate_download_seq.rsp.final_result",
13745 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13750 * 6.5.3.13.3. Error Message Parameters
13752 { &hf_ff_fms_gen_terminate_download_seq_err,
13753 { "FMS Generic Terminate Download Sequence Error",
13754 "ff.fms.gen_terminate_download_seq.err",
13755 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13757 { &hf_ff_fms_gen_terminate_download_seq_err_err_class,
13758 { "Error Class", "ff.fms.gen_terminate_download_seq.err.err_class",
13759 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13761 { &hf_ff_fms_gen_terminate_download_seq_err_err_code,
13762 { "Error Code", "ff.fms.gen_terminate_download_seq.err.err_code",
13763 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13765 { &hf_ff_fms_gen_terminate_download_seq_err_additional_code,
13766 { "Additional Code",
13767 "ff.fms.gen_terminate_download_seq.err.additional_code",
13768 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13770 { &hf_ff_fms_gen_terminate_download_seq_err_additional_desc,
13771 { "Additional Description",
13772 "ff.fms.gen_terminate_download_seq.err.additional_desc",
13773 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13778 * 6.5.3.14. FMS Initiate Download Sequence (Confirmed Service Id = 9)
13780 { &hf_ff_fms_init_download_seq,
13781 { "FMS Initiate Download Sequence",
13782 "ff.fms.init_download_seq",
13783 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13788 * 6.5.3.14.1. Request Message Parameters
13790 { &hf_ff_fms_init_download_seq_req,
13791 { "FMS Initiate Download Sequence Request",
13792 "ff.fms.init_download_seq.req",
13793 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13795 { &hf_ff_fms_init_download_seq_req_idx,
13796 { "Index", "ff.fms.init_download_seq.req.idx",
13797 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13802 * 6.5.3.14.2. Response Message Parameters
13804 { &hf_ff_fms_init_download_seq_rsp,
13805 { "FMS Initiate Download Sequence Response",
13806 "ff.fms.init_download_seq.rsp",
13807 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13812 * 6.5.3.14.3. Error Message Parameters
13814 { &hf_ff_fms_init_download_seq_err,
13815 { "FMS Initiate Download Sequence Error",
13816 "ff.fms.init_download_seq.err",
13817 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13819 { &hf_ff_fms_init_download_seq_err_err_class,
13820 { "Error Class", "ff.fms.init_download_seq.err.err_class",
13821 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13823 { &hf_ff_fms_init_download_seq_err_err_code,
13824 { "Error Code", "ff.fms.init_download_seq.err.err_code",
13825 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13827 { &hf_ff_fms_init_download_seq_err_additional_code,
13828 { "Additional Code", "ff.fms.init_download_seq.err.additional_code",
13829 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13831 { &hf_ff_fms_init_download_seq_err_additional_desc,
13832 { "Additional Description",
13833 "ff.fms.init_download_seq.err.additional_desc",
13834 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13839 * 6.5.3.15. FMS Download Segment (Confirmed Service Id = 10)
13841 { &hf_ff_fms_download_seg,
13842 { "FMS Download Segment", "ff.fms.download_seg",
13843 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13848 * 6.5.3.15.1. Request Message Parameters
13850 { &hf_ff_fms_download_seg_req,
13851 { "FMS Download Segment Request", "ff.fms.download_seg.req",
13852 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13854 { &hf_ff_fms_download_seg_req_idx,
13855 { "Index", "ff.fms.download_seg.req.idx",
13856 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13861 * 6.5.3.15.2. Response Message Parameters
13863 { &hf_ff_fms_download_seg_rsp,
13864 { "FMS Download Segment Response", "ff.fms.download_seg.rsp",
13865 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13867 { &hf_ff_fms_download_seg_rsp_more_follows,
13868 { "Final Result", "ff.fms.download_seg.rsp.more_follows",
13869 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13874 * 6.5.3.15.3. Error Message Parameters
13876 { &hf_ff_fms_download_seg_err,
13877 { "FMS Download Segment Error", "ff.fms.download_seg.err",
13878 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13880 { &hf_ff_fms_download_seg_err_err_class,
13881 { "Error Class", "ff.fms.download_seg.err.err_class",
13882 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13884 { &hf_ff_fms_download_seg_err_err_code,
13885 { "Error Code", "ff.fms.download_seg.err.err_code",
13886 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13888 { &hf_ff_fms_download_seg_err_additional_code,
13889 { "Additional Code", "ff.fms.download_seg.err.additional_code",
13890 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13892 { &hf_ff_fms_download_seg_err_additional_desc,
13893 { "Additional Description",
13894 "ff.fms.download_seg.err.additional_desc",
13895 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13900 * 6.5.3.16. FMS Terminate Download Sequence (Confirmed Service Id = 11)
13902 { &hf_ff_fms_terminate_download_seq,
13903 { "FMS Terminate Download Sequence",
13904 "ff.fms.terminate_download_seq",
13905 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13910 * 6.5.3.16.1. Request Message Parameters
13912 { &hf_ff_fms_terminate_download_seq_req,
13913 { "FMS Terminate Download Sequence Request",
13914 "ff.fms.terminate_download_seq.req",
13915 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13917 { &hf_ff_fms_terminate_download_seq_req_idx,
13918 { "Index", "ff.fms.terminate_download_seq.req.idx",
13919 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13921 { &hf_ff_fms_terminate_download_seq_req_final_result,
13922 { "Final Result", "ff.fms.terminate_download_seq.req.final_result",
13923 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13928 * 6.5.3.16.2. Response Message Parameters
13930 { &hf_ff_fms_terminate_download_seq_rsp,
13931 { "FMS Terminate Download Sequence Response",
13932 "ff.fms.terminate_download_seq.rsp",
13933 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13938 * 6.5.3.16.3. Error Message Parameters
13940 { &hf_ff_fms_terminate_download_seq_err,
13941 { "FMS Terminate Download Sequence Error",
13942 "ff.fms.terminate_download_seq.err",
13943 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13945 { &hf_ff_fms_terminate_download_seq_err_err_class,
13946 { "Error Class", "ff.fms.terminate_download_seq.err.err_class",
13947 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13949 { &hf_ff_fms_terminate_download_seq_err_err_code,
13950 { "Error Code", "ff.fms.terminate_download_seq.err.err_code",
13951 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13953 { &hf_ff_fms_terminate_download_seq_err_additional_code,
13954 { "Additional Code",
13955 "ff.fms.terminate_download_seq.err.additional_code",
13956 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13958 { &hf_ff_fms_terminate_download_seq_err_additional_desc,
13959 { "Additional Description",
13960 "ff.fms.terminate_download_seq.err.additional_desc",
13961 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13966 * 6.5.3.17. FMS Initiate Upload Sequence (Confirmed Service Id = 12)
13968 { &hf_ff_fms_init_upload_seq,
13969 { "FMS Initiate Upload Sequence", "ff.fms.init_upload_seq",
13970 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13975 * 6.5.3.17.1. Request Message Parameters
13977 { &hf_ff_fms_init_upload_seq_req,
13978 { "FMS Initiate Upload Sequence Request",
13979 "ff.fms.init_upload_seq.req",
13980 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13982 { &hf_ff_fms_init_upload_seq_req_idx,
13983 { "Index", "ff.fms.init_upload_seq.req.idx",
13984 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13989 * 6.5.3.17.2. Response Message Parameters
13991 { &hf_ff_fms_init_upload_seq_rsp,
13992 { "FMS Initiate Upload Sequence Response",
13993 "ff.fms.init_upload_seq.rsp",
13994 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13999 * 6.5.3.17.3. Error Message Parameters
14001 { &hf_ff_fms_init_upload_seq_err,
14002 { "FMS Initiate Upload Sequence Error",
14003 "ff.fms.init_upload_seq.err",
14004 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14006 { &hf_ff_fms_init_upload_seq_err_err_class,
14007 { "Error Class", "ff.fms.init_upload_seq.err.err_class",
14008 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14010 { &hf_ff_fms_init_upload_seq_err_err_code,
14011 { "Error Code", "ff.fms.init_upload_seq.err.err_code",
14012 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14014 { &hf_ff_fms_init_upload_seq_err_additional_code,
14015 { "Additional Code", "ff.fms.init_upload_seq.err.additional_code",
14016 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14018 { &hf_ff_fms_init_upload_seq_err_additional_desc,
14019 { "Additional Description",
14020 "ff.fms.init_upload_seq.err.additional_desc",
14021 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14026 * 6.5.3.18. FMS Upload Segment (Confirmed Service Id = 13)
14028 { &hf_ff_fms_upload_seg,
14029 { "FMS Upload Segment", "ff.fms.upload_seg",
14030 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14035 * 6.5.3.18.1. Request Message Parameters
14037 { &hf_ff_fms_upload_seg_req,
14038 { "FMS Upload Segment Request", "ff.fms.upload_seg.req",
14039 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14041 { &hf_ff_fms_upload_seg_req_idx,
14042 { "Index", "ff.fms.upload_seg.req.idx",
14043 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14048 * 6.5.3.18.2. Response Message Parameters
14050 { &hf_ff_fms_upload_seg_rsp,
14051 { "FMS Upload Segment Response", "ff.fms.upload_seg.rsp",
14052 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14054 { &hf_ff_fms_upload_seg_rsp_more_follows,
14055 { "More Follows", "ff.fms.upload_seg.rsp.more_follows",
14056 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14061 * 6.5.3.18.3. Error Message Parameters
14063 { &hf_ff_fms_upload_seg_err,
14064 { "FMS Upload Segment Error", "ff.fms.upload_seg.err",
14065 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14067 { &hf_ff_fms_upload_seg_err_err_class,
14068 { "Error Class", "ff.fms.upload_seg.err.err_class",
14069 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14071 { &hf_ff_fms_upload_seg_err_err_code,
14072 { "Error Code", "ff.fms.upload_seg.err.err_code",
14073 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14075 { &hf_ff_fms_upload_seg_err_additional_code,
14076 { "Additional Code", "ff.fms.upload_seg.err.additional_code",
14077 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14079 { &hf_ff_fms_upload_seg_err_additional_desc,
14080 { "Additional Description", "ff.fms.upload_seg.err.additional_desc",
14081 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14086 * 6.5.3.19. FMS Terminate Upload Sequence (Confirmed Service Id = 14)
14088 { &hf_ff_fms_terminate_upload_seq,
14089 { "FMS Terminate Upload Sequence",
14090 "ff.fms.terminate_upload_seq",
14091 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14096 * 6.5.3.19.1. Request Message Parameters
14098 { &hf_ff_fms_terminate_upload_seq_req,
14099 { "FMS Terminate Upload Sequence Request",
14100 "ff.fms.terminate_upload_seq.req",
14101 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14103 { &hf_ff_fms_terminate_upload_seq_req_idx,
14104 { "Index", "ff.fms.terminate_upload_seq.req.idx",
14105 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14110 * 6.5.3.19.2. Response Message Parameters
14112 { &hf_ff_fms_terminate_upload_seq_rsp,
14113 { "FMS Terminate Upload Sequence Response",
14114 "ff.fms.terminate_upload_seq.rsp",
14115 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14120 * 6.5.3.19.3. Error Message Parameters
14122 { &hf_ff_fms_terminate_upload_seq_err,
14123 { "FMS Terminate Upload Sequence Error",
14124 "ff.fms.terminate_upload_seq.err",
14125 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14127 { &hf_ff_fms_terminate_upload_seq_err_err_class,
14128 { "Error Class", "ff.fms.terminate_upload_seq.err.err_class",
14129 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14131 { &hf_ff_fms_terminate_upload_seq_err_err_code,
14132 { "Error Code", "ff.fms.terminate_upload_seq.err.err_code",
14133 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14135 { &hf_ff_fms_terminate_upload_seq_err_additional_code,
14136 { "Additional Code",
14137 "ff.fms.terminate_upload_seq.err.additional_code",
14138 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14140 { &hf_ff_fms_terminate_upload_seq_err_additional_desc,
14141 { "Additional Description",
14142 "ff.fms.terminate_upload_seq.err.additional_desc",
14143 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14148 * 6.5.3.20. FMS Request Domain Download (Confirmed Service Id = 15)
14150 { &hf_ff_fms_req_dom_download,
14151 { "FMS Request Domain Download", "ff.fms.req_dom_download",
14152 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14157 * 6.5.3.20.1. Request Message Parameters
14159 { &hf_ff_fms_req_dom_download_req,
14160 { "FMS Request Domain Download Request",
14161 "ff.fms.req_dom_download.req",
14162 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14164 { &hf_ff_fms_req_dom_download_req_idx,
14165 { "Index", "ff.fms.req_dom_download.req.idx",
14166 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14168 { &hf_ff_fms_req_dom_download_req_additional_info,
14169 { "Additional Description",
14170 "ff.fms.req_dom_download.req.additional_info",
14171 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14176 * 6.5.3.20.2. Response Message Parameters
14178 { &hf_ff_fms_req_dom_download_rsp,
14179 { "FMS Request Domain Download Response",
14180 "ff.fms.req_dom_download.rsp",
14181 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14184 * 6.5.3.20.3. Error Message Parameters
14186 { &hf_ff_fms_req_dom_download_err,
14187 { "FMS Request Domain Download Error",
14188 "ff.fms.req_dom_download.err",
14189 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14191 { &hf_ff_fms_req_dom_download_err_err_class,
14192 { "Error Class", "ff.fms.req_dom_download.err.err_class",
14193 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14195 { &hf_ff_fms_req_dom_download_err_err_code,
14196 { "Error Code", "ff.fms.req_dom_download.err.err_code",
14197 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14199 { &hf_ff_fms_req_dom_download_err_additional_code,
14200 { "Additional Code", "ff.fms.req_dom_download.err.additional_code",
14201 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14203 { &hf_ff_fms_req_dom_download_err_additional_desc,
14204 { "Additional Description",
14205 "ff.fms.req_dom_download.err.additional_desc",
14206 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14211 * 6.5.3.21. FMS Request Domain Upload (Confirmed Service Id = 16)
14213 { &hf_ff_fms_req_dom_upload,
14214 { "FMS Request Domain Upload", "ff.fms.req_dom_upload",
14215 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14220 * 6.5.3.21.1. Request Message Parameters
14222 { &hf_ff_fms_req_dom_upload_req,
14223 { "FMS Request Domain Upload Request", "ff.fms.req_dom_upload.req",
14224 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14226 { &hf_ff_fms_req_dom_upload_req_idx,
14227 { "Index", "ff.fms.req_dom_upload.req.idx",
14228 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14230 { &hf_ff_fms_req_dom_upload_req_additional_info,
14231 { "Additional Description",
14232 "ff.fms.req_dom_upload.req.additional_info",
14233 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14238 * 6.5.3.21.2. Response Message Parameters
14240 { &hf_ff_fms_req_dom_upload_rsp,
14241 { "FMS Request Domain Upload Response", "ff.fms.req_dom_upload.rsp",
14242 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14247 * 6.5.3.21.3. Error Message Parameters
14249 { &hf_ff_fms_req_dom_upload_err,
14250 { "FMS Request Domain Upload Error", "ff.fms.req_dom_upload.err",
14251 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14253 { &hf_ff_fms_req_dom_upload_err_err_class,
14254 { "Error Class", "ff.fms.req_dom_upload.err.err_class",
14255 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14257 { &hf_ff_fms_req_dom_upload_err_err_code,
14258 { "Error Code", "ff.fms.req_dom_upload.err.err_code",
14259 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14261 { &hf_ff_fms_req_dom_upload_err_additional_code,
14262 { "Additional Code", "ff.fms.req_dom_upload.err.additional_code",
14263 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14265 { &hf_ff_fms_req_dom_upload_err_additional_desc,
14266 { "Additional Description",
14267 "ff.fms.req_dom_upload.err.additional_desc",
14268 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14273 * 6.5.3.22. FMS Create Program Invocation (Confirmed Service Id = 17)
14275 { &hf_ff_fms_create_pi,
14276 { "FMS Create Program Invocation", "ff.fms.create_pi",
14277 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14282 * 6.5.3.22.1. Request Message Parameters
14284 { &hf_ff_fms_create_pi_req,
14285 { "FMS Create Program Invocation Request", "ff.fms.create_pi.req",
14286 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14288 { &hf_ff_fms_create_pi_req_reusable,
14289 { "Reusable", "ff.fms.create_pi.req.reusable",
14290 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14292 { &hf_ff_fms_create_pi_req_reserved,
14293 { "Reserved", "ff.fms.create_pi.req.reserved",
14294 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14296 { &hf_ff_fms_create_pi_req_num_of_dom_idxes,
14297 { "Number of Domain Indexes",
14298 "ff.fms.create_pi.req.num_of_dom_idxes",
14299 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14301 { &hf_ff_fms_create_pi_req_dom_idx,
14302 { "Domain Index", "ff.fms.create_pi.req.list_of_dom_idxes.dom_idx",
14303 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14308 * 6.5.3.22.2. Response Message Parameters
14310 { &hf_ff_fms_create_pi_rsp,
14311 { "FMS Create Program Invocation Response", "ff.fms.create_pi.rsp",
14312 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14314 { &hf_ff_fms_create_pi_rsp_idx,
14315 { "Index", "ff.fms.create_pi.rsp.idx",
14316 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14321 * 6.5.3.22.3. Error Message Parameters
14323 { &hf_ff_fms_create_pi_err,
14324 { "FMS Create Program Invocation Error", "ff.fms.create_pi.err",
14325 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14327 { &hf_ff_fms_create_pi_err_err_class,
14328 { "Error Class", "ff.fms.create_pi.err.err_class",
14329 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14331 { &hf_ff_fms_create_pi_err_err_code,
14332 { "Error Code", "ff.fms.create_pi.err.err_code",
14333 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14335 { &hf_ff_fms_create_pi_err_additional_code,
14336 { "Additional Code",
14337 "ff.fms.create_pi.err.additional_code",
14338 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14340 { &hf_ff_fms_create_pi_err_additional_desc,
14341 { "Additional Description",
14342 "ff.fms.create_pi.err.additional_desc",
14343 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14348 * 6.5.3.23. FMS Delete Program Invocation (Confirmed Service Id = 18)
14350 { &hf_ff_fms_del_pi ,
14351 { "FMS Delete Program Invocation", "ff.fms.del_pi",
14352 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14357 * 6.5.3.23.1. Request Message Parameters
14359 { &hf_ff_fms_del_pi_req,
14360 { "FMS Delete Program Invocation Request", "ff.fms.del_pi.req",
14361 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14363 { &hf_ff_fms_del_pi_req_idx,
14364 { "Index", "ff.fms.del_pi.req.idx",
14365 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14370 * 6.5.3.23.2. Response Message Parameters
14372 { &hf_ff_fms_del_pi_rsp,
14373 { "FMS Delete Program Invocation Response", "ff.fms.del_pi.rsp",
14374 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14379 * 6.5.3.23.3. Error Message Parameters
14381 { &hf_ff_fms_del_pi_err,
14382 { "FMS Delete Program Invocation Error", "ff.fms.del_pi.err",
14383 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14385 { &hf_ff_fms_del_pi_err_err_class,
14386 { "Error Class", "ff.fms.del_pi.err.err_class",
14387 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14389 { &hf_ff_fms_del_pi_err_err_code,
14390 { "Error Code", "ff.fms.del_pi.err.err_code",
14391 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14393 { &hf_ff_fms_del_pi_err_additional_code,
14394 { "Additional Code",
14395 "ff.fms.del_pi.err.additional_code",
14396 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14398 { &hf_ff_fms_del_pi_err_additional_desc,
14399 { "Additional Description",
14400 "ff.fms.del_pi.err.additional_desc",
14401 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14406 * 6.5.3.24. FMS Start (Confirmed Service Id = 19)
14408 { &hf_ff_fms_start,
14409 { "FMS Start", "ff.fms.start",
14410 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14415 * 6.5.3.24.1. Request Message Parameters
14417 { &hf_ff_fms_start_req,
14418 { "FMS Start Request", "ff.fms.start.req",
14419 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14421 { &hf_ff_fms_start_req_idx,
14422 { "Index", "ff.fms.start.req.idx",
14423 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14428 * 6.5.3.24.2. Response Message Parameters
14430 { &hf_ff_fms_start_rsp,
14431 { "FMS Start Response", "ff.fms.start.rsp",
14432 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14437 * 6.5.3.24.3. PI Error Message Parameters
14439 { &hf_ff_fms_start_err,
14440 { "FMS Start Error", "ff.fms.start.err",
14441 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14443 { &hf_ff_fms_start_err_pi_state,
14444 { "Pi State", "ff.fms.start.err.pi_state",
14445 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14447 { &hf_ff_fms_start_err_err_class,
14448 { "Error Class", "ff.fms.start.err.err_class",
14449 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14451 { &hf_ff_fms_start_err_err_code,
14452 { "Error Code", "ff.fms.start.err.err_code",
14453 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14455 { &hf_ff_fms_start_err_additional_code,
14456 { "Additional Code", "ff.fms.start.err.additional_code",
14457 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14459 { &hf_ff_fms_start_err_additional_desc,
14460 { "Additional Description", "ff.fms.start.err.additional_desc",
14461 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14466 * 6.5.3.25. FMS Stop (Confirmed Service Id = 20)
14468 { &hf_ff_fms_stop,
14469 { "FMS Stop", "ff.fms.stop",
14470 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14475 * 6.5.3.25.1. Request Message Parameters
14477 { &hf_ff_fms_stop_req,
14478 { "FMS Stop Request", "ff.fms.stop.req",
14479 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14481 { &hf_ff_fms_stop_req_idx,
14482 { "Index", "ff.fms.stop.req.idx",
14483 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14488 * 6.5.3.25.2. Response Message Parameters
14490 { &hf_ff_fms_stop_rsp,
14491 { "FMS Stop Response", "ff.fms.stop.rsp",
14492 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14497 * 6.5.3.25.3. Error Message Parameters
14499 { &hf_ff_fms_stop_err,
14500 { "FMS Stop Error", "ff.fms.stop.err",
14501 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14503 { &hf_ff_fms_stop_err_pi_state,
14504 { "Pi State", "ff.fms.stop.err.pi_state",
14505 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14507 { &hf_ff_fms_stop_err_err_class,
14508 { "Error Class", "ff.fms.stop.err.err_class",
14509 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14511 { &hf_ff_fms_stop_err_err_code,
14512 { "Error Code", "ff.fms.stop.err.err_code",
14513 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14515 { &hf_ff_fms_stop_err_additional_code,
14516 { "Additional Code", "ff.fms.stop.err.additional_code",
14517 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14519 { &hf_ff_fms_stop_err_additional_desc,
14520 { "Additional Description", "ff.fms.stop.err.additional_desc",
14521 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14526 * 6.5.3.26. FMS Resume (Confirmed Service Id = 21)
14528 { &hf_ff_fms_resume,
14529 { "FMS Resume", "ff.fms.resume",
14530 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14535 * 6.5.3.26.1. Request Message Parameters
14537 { &hf_ff_fms_resume_req,
14538 { "FMS Resume Request", "ff.fms.resume.req",
14539 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14541 { &hf_ff_fms_resume_req_idx,
14542 { "Index", "ff.fms.resume.req.idx",
14543 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14548 * 6.5.3.26.2. Response Message Parameters
14550 { &hf_ff_fms_resume_rsp,
14551 { "FMS Resume Response", "ff.fms.resume.rsp",
14552 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14557 * 6.5.3.26.3. Error Message Parameters
14559 { &hf_ff_fms_resume_err,
14560 { "FMS Resume Error", "ff.fms.resume.err",
14561 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14563 { &hf_ff_fms_resume_err_pi_state,
14564 { "Pi State", "ff.fms.resume.err.pi_state",
14565 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14567 { &hf_ff_fms_resume_err_err_class,
14568 { "Error Class", "ff.fms.resume.err.err_class",
14569 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14571 { &hf_ff_fms_resume_err_err_code,
14572 { "Error Code", "ff.fms.resume.err.err_code",
14573 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14575 { &hf_ff_fms_resume_err_additional_code,
14576 { "Additional Code", "ff.fms.resume.err.additional_code",
14577 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14579 { &hf_ff_fms_resume_err_additional_desc,
14580 { "Additional Description", "ff.fms.resume.err.additional_desc",
14581 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14586 * 6.5.3.27. FMS Reset (Confirmed Service Id = 22)
14588 { &hf_ff_fms_reset,
14589 { "FMS Reset", "ff.fms.reset",
14590 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14595 * 6.5.3.27.1. Request Message Parameters
14597 { &hf_ff_fms_reset_req,
14598 { "FMS Reset Request", "ff.fms.reset.req",
14599 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14601 { &hf_ff_fms_reset_req_idx,
14602 { "Index", "ff.fms.reset.req.idx",
14603 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14608 * 6.5.3.27.2. Response Message Parameters
14610 { &hf_ff_fms_reset_rsp,
14611 { "FMS Reset Response", "ff.fms.reset.rsp",
14612 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14617 * 6.5.3.27.3. Error Message Parameters
14619 { &hf_ff_fms_reset_err,
14620 { "FMS Reset Error", "ff.fms.reset.err",
14621 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14623 { &hf_ff_fms_reset_err_pi_state,
14624 { "Pi State", "ff.fms.reset.err.pi_state",
14625 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14627 { &hf_ff_fms_reset_err_err_class,
14628 { "Error Class", "ff.fms.reset.err.err_class",
14629 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14631 { &hf_ff_fms_reset_err_err_code,
14632 { "Error Code", "ff.fms.reset.err.err_code",
14633 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14635 { &hf_ff_fms_reset_err_additional_code,
14636 { "Additional Code", "ff.fms.reset.err.additional_code",
14637 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14639 { &hf_ff_fms_reset_err_additional_desc,
14640 { "Additional Description", "ff.fms.reset.err.additional_desc",
14641 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14646 * 6.5.3.28. FMS Kill (Confirmed Service Id = 23)
14648 { &hf_ff_fms_kill,
14649 { "FMS Kill", "ff.fms.kill",
14650 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14655 * 6.5.3.28.1. Request Message Parameters
14657 { &hf_ff_fms_kill_req,
14658 { "FMS Kill Request", "ff.fms.kill.req",
14659 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14664 * 6.5.3.28.2. Response Message Parameters
14666 { &hf_ff_fms_kill_rsp,
14667 { "FMS Kill Response", "ff.fms.kill.rsp",
14668 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14673 * 6.5.3.28.3. Error Message Parameters
14675 { &hf_ff_fms_kill_err,
14676 { "FMS Kill Error", "ff.fms.kill.err",
14677 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14679 { &hf_ff_fms_kill_req_idx,
14680 { "Index", "ff.fms.kill.req.idx",
14681 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14683 { &hf_ff_fms_kill_err_err_class,
14684 { "Error Class", "ff.fms.kill.err.err_class",
14685 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14687 { &hf_ff_fms_kill_err_err_code,
14688 { "Error Code", "ff.fms.kill.err.err_code",
14689 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14691 { &hf_ff_fms_kill_err_additional_code,
14692 { "Additional Code", "ff.fms.kill.err.additional_code",
14693 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14695 { &hf_ff_fms_kill_err_additional_desc,
14696 { "Additional Description", "ff.fms.kill.err.additional_desc",
14697 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14702 * 6.5.3.29. FMS Read (Confirmed Service Id = 2)
14704 { &hf_ff_fms_read,
14705 { "FMS Read", "ff.fms.read",
14706 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14711 * 6.5.3.29.1. Request Message Parameters
14713 { &hf_ff_fms_read_req,
14714 { "FMS Read Request", "ff.fms.read.req",
14715 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14717 { &hf_ff_fms_read_req_idx,
14718 { "Index", "ff.fms.read.req.idx",
14719 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14724 * 6.5.3.29.2. Response Message Parameters
14726 { &hf_ff_fms_read_rsp,
14727 { "FMS Read Response", "ff.fms.read.rsp",
14728 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14733 * 6.5.3.29.3. Error Message Parameters
14735 { &hf_ff_fms_read_err,
14736 { "FMS Read Error", "ff.fms.read.err",
14737 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14739 { &hf_ff_fms_read_err_err_class,
14740 { "Error Class", "ff.fms.read.err.err_class",
14741 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14743 { &hf_ff_fms_read_err_err_code,
14744 { "Error Code", "ff.fms.read.err.err_code",
14745 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14747 { &hf_ff_fms_read_err_additional_code,
14748 { "Additional Code", "ff.fms.read.err.additional_code",
14749 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14751 { &hf_ff_fms_read_err_additional_desc,
14752 { "Additional Description", "ff.fms.read.err.additional_desc",
14753 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14758 * 6.5.3.30. FMS Read with Subindex (Confirmed Service Id = 82)
14760 { &hf_ff_fms_read_with_subidx,
14761 { "FMS Read with Subindex", "ff.fms.read_with_subidx",
14762 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14767 * 6.5.3.30.1. Request Message Parameters
14769 { &hf_ff_fms_read_with_subidx_req,
14770 { "FMS Read with Subindex Request", "ff.fms.read_with_subidx.req",
14771 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14773 { &hf_ff_fms_read_with_subidx_req_idx,
14774 { "Index", "ff.fms.read_with_subidx.req.idx",
14775 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14777 { &hf_ff_fms_read_with_subidx_req_subidx,
14778 { "Index", "ff.fms.read_with_subidx.req.subidx",
14779 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14784 * 6.5.3.30.2. Response Message Parameters
14786 { &hf_ff_fms_read_with_subidx_rsp,
14787 { "FMS Read with Subindex Response", "ff.fms.read_with_subidx.rsp",
14788 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14793 * 6.5.3.30.3. Error Message Parameters
14795 { &hf_ff_fms_read_with_subidx_err,
14796 { "FMS Read with Subindex Error", "ff.fms.read_with_subidx.err",
14797 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14799 { &hf_ff_fms_read_with_subidx_err_err_class,
14800 { "Error Class", "ff.fms.read_with_subidx.err.err_class",
14801 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14803 { &hf_ff_fms_read_with_subidx_err_err_code,
14804 { "Error Code", "ff.fms.read_with_subidx.err.err_code",
14805 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14807 { &hf_ff_fms_read_with_subidx_err_additional_code,
14808 { "Additional Code", "ff.fms.read_with_subidx.err.additional_code",
14809 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14811 { &hf_ff_fms_read_with_subidx_err_additional_desc,
14812 { "Additional Description",
14813 "ff.fms.read_with_subidx.err.additional_desc",
14814 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14819 * 6.5.3.31. FMS Write (Confirmed Service Id = 3)
14821 { &hf_ff_fms_write,
14822 { "FMS Write", "ff.fms.write",
14823 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14828 * 6.5.3.31.1. Request Message Parameters
14830 { &hf_ff_fms_write_req,
14831 { "FMS Write Request", "ff.fms.write.req",
14832 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14834 { &hf_ff_fms_write_req_idx,
14835 { "Index", "ff.fms.write.req.idx",
14836 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14841 * 6.5.3.31.2. Response Message Parameters
14843 { &hf_ff_fms_write_rsp,
14844 { "FMS Write Response", "ff.fms.write.rsp",
14845 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14850 * 6.5.3.31.3. Error Message Parameters
14852 { &hf_ff_fms_write_err,
14853 { "FMS Write Error", "ff.fms.write.err",
14854 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14856 { &hf_ff_fms_write_err_err_class,
14857 { "Error Class", "ff.fms.write.err.err_class",
14858 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14860 { &hf_ff_fms_write_err_err_code,
14861 { "Error Code", "ff.fms.write.err.err_code",
14862 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14864 { &hf_ff_fms_write_err_additional_code,
14865 { "Additional Code", "ff.fms.write.err.additional_code",
14866 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14868 { &hf_ff_fms_write_err_additional_desc,
14869 { "Additional Description", "ff.fms.write.err.additional_desc",
14870 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14875 * 6.5.3.32. FMS Write with Subindex (Confirmed Service Id = 83)
14877 { &hf_ff_fms_write_with_subidx,
14878 { "FMS Write with Subindex", "ff.fms.write_with_subidx",
14879 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14884 * 6.5.3.32.1. Request Message Parameters
14886 { &hf_ff_fms_write_with_subidx_req,
14887 { "FMS Write with Subindex Request", "ff.fms.write_with_subidx.req",
14888 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14890 { &hf_ff_fms_write_with_subidx_req_idx,
14891 { "Index", "ff.fms.write_with_subidx.req.idx",
14892 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14894 { &hf_ff_fms_write_with_subidx_req_subidx,
14895 { "Index", "ff.fms.write_with_subidx.req.subidx",
14896 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14901 * 6.5.3.32.2. Response Message Parameters
14903 { &hf_ff_fms_write_with_subidx_rsp,
14904 { "FMS Write with Subindex Response",
14905 "ff.fms.write_with_subidx.rsp",
14906 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14911 * 6.5.3.32.3. Error Message Parameters
14913 { &hf_ff_fms_write_with_subidx_err,
14914 { "FMS Write with Subindex Error", "ff.fms.write_with_subidx.err",
14915 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14917 { &hf_ff_fms_write_with_subidx_err_err_class,
14918 { "Error Class", "ff.fms.write_with_subidx.err.err_class",
14919 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14921 { &hf_ff_fms_write_with_subidx_err_err_code,
14922 { "Error Code", "ff.fms.write_with_subidx.err.err_code",
14923 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14925 { &hf_ff_fms_write_with_subidx_err_additional_code,
14926 { "Additional Code", "ff.fms.write_with_subidx.err.additional_code",
14927 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14929 { &hf_ff_fms_write_with_subidx_err_additional_desc,
14930 { "Additional Description",
14931 "ff.fms.write_with_subidx.err.additional_desc",
14932 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14937 * 6.5.3.33. FMS Define Variable List (Confirmed Service Id = 7)
14939 { &hf_ff_fms_def_variable_list,
14940 { "FMS Define Variable List", "ff.fms.def_variable_list",
14941 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14946 * 6.5.3.33.1. Request Message Parameters
14948 { &hf_ff_fms_def_variable_list_req,
14949 { "FMS Define Variable List Request",
14950 "ff.fms.def_variable_list.req",
14951 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14953 { &hf_ff_fms_def_variable_list_req_num_of_idxes,
14954 { "Number of Indexes", "ff.fms.def_variable_list.req.num_of_idxes",
14955 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14957 { &hf_ff_fms_def_variable_list_req_idx,
14958 { "Index", "ff.fms.def_variable_list.req.idx",
14959 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14964 * 6.5.3.33.2. Response Message Parameters
14966 { &hf_ff_fms_def_variable_list_rsp,
14967 { "FMS Define Variable List Response",
14968 "ff.fms.def_variable_list.rsp",
14969 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14971 { &hf_ff_fms_def_variable_list_rsp_idx,
14972 { "Index", "ff.fms.def_variable_list.rsp.idx",
14973 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14978 * 6.5.3.33.3. Error Message Parameters
14980 { &hf_ff_fms_def_variable_list_err,
14981 { "FMS Define Variable List Error", "ff.fms.def_variable_list.err",
14982 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14984 { &hf_ff_fms_def_variable_list_err_err_class,
14985 { "Error Class", "ff.fms.def_variable_list.err.err_class",
14986 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14988 { &hf_ff_fms_def_variable_list_err_err_code,
14989 { "Error Code", "ff.fms.def_variable_list.err.err_code",
14990 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14992 { &hf_ff_fms_def_variable_list_err_additional_code,
14993 { "Additional Code", "ff.fms.def_variable_list.err.additional_code",
14994 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14996 { &hf_ff_fms_def_variable_list_err_additional_desc,
14997 { "Additional Description",
14998 "ff.fms.def_variable_list.err.additional_desc",
14999 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15004 * 6.5.3.34. FMS Delete Variable List (Confirmed Service Id = 8)
15006 { &hf_ff_fms_del_variable_list,
15007 { "FMS Delete Variable List", "ff.fms.del_variable_list",
15008 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15013 * 6.5.3.34.1. Request Message Parameters
15015 { &hf_ff_fms_del_variable_list_req,
15016 { "FMS Delete Variable List Request",
15017 "ff.fms.del_variable_list.req",
15018 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15020 { &hf_ff_fms_del_variable_list_req_idx,
15021 { "Index", "ff.fms.del_variable_list.req.idx",
15022 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15027 * 6.5.3.34.2. Response Message Parameters
15029 { &hf_ff_fms_del_variable_list_rsp,
15030 { "FMS Delete Variable List Response",
15031 "ff.fms.del_variable_list.rsp",
15032 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15037 * 6.5.3.34.3. Error Message Parameters
15039 { &hf_ff_fms_del_variable_list_err,
15040 { "FMS Delete Variable List Error", "ff.fms.del_variable_list.err",
15041 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15043 { &hf_ff_fms_del_variable_list_err_err_class,
15044 { "Error Class", "ff.fms.del_variable_list.err.err_class",
15045 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
15047 { &hf_ff_fms_del_variable_list_err_err_code,
15048 { "Error Code", "ff.fms.del_variable_list.err.err_code",
15049 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15051 { &hf_ff_fms_del_variable_list_err_additional_code,
15052 { "Additional Code", "ff.fms.del_variable_list.err.additional_code",
15053 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15055 { &hf_ff_fms_del_variable_list_err_additional_desc,
15056 { "Additional Description",
15057 "ff.fms.del_variable_list.err.additional_desc",
15058 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15063 * 6.5.3.35. FMS Information Report (Unconfirmed Service Id = 0)
15065 { &hf_ff_fms_info_report,
15066 { "FMS Information Report", "ff.fms.info_report",
15067 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15072 * 6.5.3.35.1. Request Message Parameters
15074 { &hf_ff_fms_info_report_req,
15075 { "FMS Information Report Request", "ff.fms.info_report.req",
15076 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15078 { &hf_ff_fms_info_report_req_idx,
15079 { "Index", "ff.fms.info_report.req.idx",
15080 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15085 * 6.5.3.36. FMS Information Report with Subindex
15086 * (Unconfirmed Service Id = 16)
15088 { &hf_ff_fms_info_report_with_subidx,
15089 { "FMS Information Report with Subindex",
15090 "ff.fms.info_report_with_subidx",
15091 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15096 * 6.5.3.36.1. Request Message Parameters
15098 { &hf_ff_fms_info_report_with_subidx_req,
15099 { "FMS Information Report with Subindex Request",
15100 "ff.fms.info_report_with_subidx.req",
15101 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15103 { &hf_ff_fms_info_report_with_subidx_req_idx,
15104 { "Index", "ff.fms.info_report_with_subidx.req.idx",
15105 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15107 { &hf_ff_fms_info_report_with_subidx_req_subidx,
15108 { "Subindex", "ff.fms.info_report_with_subidx.req.subidx",
15109 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15114 * 6.5.3.37. FMS Information Report On Change
15115 * (Unconfirmed Service Id = 17)
15117 { &hf_ff_fms_info_report_on_change,
15118 { "FMS Information Report On Change with Subindex",
15119 "ff.fms.info_report_on_change",
15120 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15125 * 6.5.3.37.1. Request Message Parameters
15127 { &hf_ff_fms_info_report_on_change_req,
15128 { "FMS Information Report On Change with Subindex Request",
15129 "ff.fms.info_report_on_change.req",
15130 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15132 { &hf_ff_fms_info_report_on_change_req_idx,
15133 { "Index", "ff.fms.info_report_on_change.req.idx",
15134 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15139 * 6.5.3.38. FMS Information Report On Change with Subindex
15140 * (Unconfirmed Service Id = 18)
15142 { &hf_ff_fms_info_report_on_change_with_subidx,
15143 { "FMS Information Report On Change",
15144 "ff.fms.info_report_on_change_with_subidx",
15145 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15150 * 6.5.3.38.1. Request Message Parameters
15152 { &hf_ff_fms_info_report_on_change_with_subidx_req,
15153 { "FMS Information Report On Change Request",
15154 "ff.fms.info_report_on_change_with_subidx.req",
15155 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15157 { &hf_ff_fms_info_report_on_change_with_subidx_req_idx,
15158 { "Index", "ff.fms.info_report_on_change_with_subidx.req.idx",
15159 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15161 { &hf_ff_fms_info_report_on_change_with_subidx_req_subidx,
15162 { "Subindex", "ff.fms.info_report_on_change_with_subidx.req.subidx",
15163 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15168 * 6.5.3.39. FMS Event Notification (Unconfirmed Service Id = 2)
15170 { &hf_ff_fms_ev_notification,
15171 { "FMS Event Notification", "ff.fms.ev_notification",
15172 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15177 * 6.5.3.39.1. Request Message Parameters
15179 { &hf_ff_fms_ev_notification_req,
15180 { "FMS Event Notification Request", "ff.fms.ev_notification.req",
15181 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15183 { &hf_ff_fms_ev_notification_req_idx,
15184 { "Index", "ff.fms.ev_notification.req.idx",
15185 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15187 { &hf_ff_fms_ev_notification_req_ev_num,
15188 { "Event Number", "ff.fms.ev_notification.req.ev_num",
15189 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15194 * 6.5.3.40. FMS Alter Event Condition Monitoring
15195 * (Confirmed Service Id = 24)
15197 { &hf_ff_fms_alter_ev_condition_monitoring,
15198 { "FMS Alter Event Condition Monitoring",
15199 "ff.fms.alter_ev_condition_monitoring",
15200 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15205 * 6.5.3.40.1. Request Message Parameters
15207 { &hf_ff_fms_alter_ev_condition_monitoring_req,
15208 { "FMS Alter Event Condition Monitoring Request",
15209 "ff.fms.alter_ev_condition_monitoring.req",
15210 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15212 { &hf_ff_fms_alter_ev_condition_monitoring_req_idx,
15213 { "Index", "ff.fms.alter_ev_condition_monitoring.req.idx",
15214 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15216 { &hf_ff_fms_alter_ev_condition_monitoring_req_enabled,
15217 { "Enabled", "ff.fms.alter_ev_condition_monitoring.req.enabled",
15218 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15223 * 6.5.3.40.2. Response Message Parameters
15225 { &hf_ff_fms_alter_ev_condition_monitoring_rsp,
15226 { "FMS Alter Event Condition Monitoring Response",
15227 "ff.fms.alter_ev_condition_monitoring.rsp",
15228 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15233 * 6.5.3.40.3. Error Message Parameters
15235 { &hf_ff_fms_alter_ev_condition_monitoring_err,
15236 { "FMS Alter Event Condition Monitoring Error",
15237 "ff.fms.alter_ev_condition_monitoring.err",
15238 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15240 { &hf_ff_fms_alter_ev_condition_monitoring_err_err_class,
15241 { "Error Class",
15242 "ff.fms.alter_ev_condition_monitoring.err.err_class",
15243 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
15245 { &hf_ff_fms_alter_ev_condition_monitoring_err_err_code,
15246 { "Error Code", "ff.fms.alter_ev_condition_monitoring.err.err_code",
15247 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15249 { &hf_ff_fms_alter_ev_condition_monitoring_err_additional_code,
15250 { "Additional Code",
15251 "ff.fms.alter_ev_condition_monitoring.err.additional_code",
15252 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15254 { &hf_ff_fms_alter_ev_condition_monitoring_err_additional_desc,
15255 { "Additional Description",
15256 "ff.fms.alter_ev_condition_monitoring.err.additional_desc",
15257 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15262 * 6.5.3.41. FMS Acknowledge Event Notification
15263 * (Confirmed Service Id = 25)
15265 { &hf_ff_fms_ack_ev_notification,
15266 { "FMS Acknowledge Event Notification",
15267 "ff.fms.ack_ev_notification",
15268 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15273 * 6.5.3.41.1. Request Message Parameters
15275 { &hf_ff_fms_ack_ev_notification_req,
15276 { "FMS Acknowledge Event Notification Request",
15277 "ff.fms.ack_ev_notification.req",
15278 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15280 { &hf_ff_fms_ack_ev_notification_req_idx,
15281 { "Index", "ff.fms.ack_ev_notification.req.idx",
15282 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15284 { &hf_ff_fms_ack_ev_notification_req_ev_num,
15285 { "Event Number", "ff.fms.ack_ev_notification.req.ev_num",
15286 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15291 * 6.5.3.41.2. Response Message Parameters
15293 { &hf_ff_fms_ack_ev_notification_rsp,
15294 { "FMS Acknowledge Event Notification Response",
15295 "ff.fms.ack_ev_notification.rsp",
15296 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15301 * 6.5.3.41.3. Error Message Parameters
15303 { &hf_ff_fms_ack_ev_notification_err,
15304 { "FMS Acknowledge Event Notification Error",
15305 "ff.fms.ack_ev_notification.err",
15306 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15308 { &hf_ff_fms_ack_ev_notification_err_err_class,
15309 { "Error Class", "ff.fms.ack_ev_notification.err.err_class",
15310 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
15312 { &hf_ff_fms_ack_ev_notification_err_err_code,
15313 { "Error Code", "ff.fms.ack_ev_notification.err.err_code",
15314 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15316 { &hf_ff_fms_ack_ev_notification_err_additional_code,
15317 { "Additional Code",
15318 "ff.fms.ack_ev_notification.err.additional_code",
15319 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15321 { &hf_ff_fms_ack_ev_notification_err_additional_desc,
15322 { "Additional Description",
15323 "ff.fms.ack_ev_notification.err.additional_desc",
15324 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15329 * 6.5.4. LAN Redundancy Services
15331 { &hf_ff_lr,
15332 { "LAN Redundancy Service", "ff.lr",
15333 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15338 * 6.5.4.1. LAN Redundancy Get Information (Confirmed Service Id = 1)
15340 { &hf_ff_lr_get_info,
15341 { "LAN Redundancy Get Information",
15342 "ff.lr.get_info",
15343 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15348 * 6.5.4.1.1. Request Message Parameters
15350 { &hf_ff_lr_get_info_req,
15351 { "LAN Redundancy Get Information Request",
15352 "ff.lr.get_info.req",
15353 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15358 * 6.5.4.1.2. Response Message Parameters
15360 { &hf_ff_lr_get_info_rsp,
15361 { "LAN Redundancy Get Information Response",
15362 "ff.lr.get_info.rsp",
15363 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15365 { &hf_ff_lr_get_info_rsp_lr_attrs_ver,
15366 { "LAN Redundancy Attributes Version",
15367 "ff.lr.get_info.rsp.lr_attrs_ver",
15368 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15370 { &hf_ff_lr_get_info_rsp_lr_max_msg_num_diff,
15371 { "Max Message Number Difference",
15372 "ff.lr.get_info.rsp.max_msg_num_diff",
15373 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15375 { &hf_ff_lr_get_info_rsp_reserved,
15376 { "Reserved",
15377 "ff.lr.get_info.rsp.reserved",
15378 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15380 { &hf_ff_lr_get_info_rsp_diagnostic_msg_intvl,
15381 { "Diagnostic Message Interval",
15382 "ff.lr.get_info.rsp.diagnostic_msg_intvl",
15383 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15385 { &hf_ff_lr_get_info_rsp_aging_time,
15386 { "Aging Time",
15387 "ff.lr.get_info.rsp.aging_time",
15388 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15390 { &hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_send_addr,
15391 { "Diagnostic Message Interface A Send Address",
15392 "ff.lr.get_info.rsp.diagnostic_msg_if_a_send_addr",
15393 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15395 { &hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_recv_addr,
15396 { "Diagnostic Message Interface A Receive Address",
15397 "ff.lr.get_info.rsp.diagnostic_msg_if_a_recv_addr",
15398 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15400 { &hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_send_addr,
15401 { "Diagnostic Message Interface B Send Address",
15402 "ff.lr.get_info.rsp.diagnostic_msg_if_b_send_addr",
15403 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15405 { &hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_recv_addr,
15406 { "Diagnostic Message Interface B Receive Address",
15407 "ff.lr.get_info.rsp.diagnostic_msg_if_b_recv_addr",
15408 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15410 { &hf_ff_lr_get_info_rsp_lr_flags_reserved,
15411 { "Reserved",
15412 "ff.lr.get_info.rsp.lr_flags.reserved",
15413 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL } },
15415 { &hf_ff_lr_get_info_rsp_lr_flags_load_balance,
15416 { "Load Balancing",
15417 "ff.lr.get_info.rsp.lr_flags.load_balance",
15418 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL } },
15420 { &hf_ff_lr_get_info_rsp_lr_flags_diag,
15421 { "Diagnosis Using Own Messages",
15422 "ff.lr.get_info.rsp.lr_flags.diag",
15423 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL } },
15425 { &hf_ff_lr_get_info_rsp_lr_flags_multi_recv,
15426 { "Single Multicast Message Reception Interface",
15427 "ff.lr.get_info.rsp.lr_flags.multi_recv",
15428 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL } },
15430 { &hf_ff_lr_get_info_rsp_lr_flags_cross_cable,
15431 { "Crossed Cable Detection",
15432 "ff.lr.get_info.rsp.lr_flags.cross_cable",
15433 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL } },
15435 { &hf_ff_lr_get_info_rsp_lr_flags_multi_trans,
15436 { "Single Multicast Message Transmission Interface",
15437 "ff.lr.get_info.rsp.lr_flags.multi_trans",
15438 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL } },
15443 * 6.5.4.1.3. Error Message Parameters
15445 { &hf_ff_lr_get_info_err,
15446 { "LAN Redundancy Get Information Error",
15447 "ff.lr.get_info.err",
15448 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15450 { &hf_ff_lr_get_info_err_err_class,
15451 { "Error Class", "ff.lr.get_info.err.err_class",
15452 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
15454 { &hf_ff_lr_get_info_err_err_code,
15455 { "Error Code", "ff.lr.get_info.err.err_code",
15456 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15458 { &hf_ff_lr_get_info_err_additional_code,
15459 { "Additional Code",
15460 "ff.lr.get_info.err.additional_code",
15461 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15463 { &hf_ff_lr_get_info_err_additional_desc,
15464 { "Additional Description",
15465 "ff.lr.get_info.err.additional_desc",
15466 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15471 * 6.5.4.2. LAN Redundancy Put Information (Confirmed Service Id = 2)
15473 { &hf_ff_lr_put_info,
15474 { "LAN Redundancy Put Information", "ff.lr.put_info",
15475 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15480 * 6.5.4.2.1. Request Message Parameters
15482 { &hf_ff_lr_put_info_req,
15483 { "LAN Redundancy Put Information Request", "ff.lr.put_info.req",
15484 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15486 { &hf_ff_lr_put_info_req_lr_attrs_ver,
15487 { "LAN Redundancy Attributes Version",
15488 "ff.lr.put_info.req.lr_attrs_ver",
15489 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15491 { &hf_ff_lr_put_info_req_lr_max_msg_num_diff,
15492 { "Max Message Number Difference",
15493 "ff.lr.put_info.req.max_msg_num_diff",
15494 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15496 { &hf_ff_lr_put_info_req_reserved,
15497 { "Reserved",
15498 "ff.lr.put_info.req.reserved",
15499 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15501 { &hf_ff_lr_put_info_req_diagnostic_msg_intvl,
15502 { "Diagnostic Message Interval",
15503 "ff.lr.put_info.req.diagnostic_msg_intvl",
15504 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15506 { &hf_ff_lr_put_info_req_aging_time,
15507 { "Aging Time",
15508 "ff.lr.put_info.req.aging_time",
15509 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15511 { &hf_ff_lr_put_info_req_diagnostic_msg_if_a_send_addr,
15512 { "Diagnostic Message Interface A Send Address",
15513 "ff.lr.put_info.req.diagnostic_msg_if_a_send_addr",
15514 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15516 { &hf_ff_lr_put_info_req_diagnostic_msg_if_a_recv_addr,
15517 { "Diagnostic Message Interface A Receive Address",
15518 "ff.lr.put_info.req.diagnostic_msg_if_a_recv_addr",
15519 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15521 { &hf_ff_lr_put_info_req_diagnostic_msg_if_b_send_addr,
15522 { "Diagnostic Message Interface B Send Address",
15523 "ff.lr.put_info.req.diagnostic_msg_if_b_send_addr",
15524 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15526 { &hf_ff_lr_put_info_req_diagnostic_msg_if_b_recv_addr,
15527 { "Diagnostic Message Interface B Receive Address",
15528 "ff.lr.put_info.req.diagnostic_msg_if_b_recv_addr",
15529 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15531 { &hf_ff_lr_put_info_req_lr_flags_reserved,
15532 { "Reserved",
15533 "ff.lr.put_info.req.lr_flags.reserved",
15534 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL } },
15536 { &hf_ff_lr_put_info_req_lr_flags_load_balance,
15537 { "Load Balancing",
15538 "ff.lr.put_info.req.lr_flags.load_balance",
15539 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL } },
15541 { &hf_ff_lr_put_info_req_lr_flags_diag,
15542 { "Diagnosis Using Own Messages",
15543 "ff.lr.put_info.req.lr_flags.diag",
15544 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL } },
15546 { &hf_ff_lr_put_info_req_lr_flags_multi_recv,
15547 { "Single Multicast Message Reception Interface",
15548 "ff.lr.put_info.req.lr_flags.multi_recv",
15549 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL } },
15551 { &hf_ff_lr_put_info_req_lr_flags_cross_cable,
15552 { "Crossed Cable Detection",
15553 "ff.lr.put_info.req.lr_flags.cross_cable",
15554 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL } },
15556 { &hf_ff_lr_put_info_req_lr_flags_multi_trans,
15557 { "Single Multicast Message Transmission Interface",
15558 "ff.lr.put_info.req.lr_flags.multi_trans",
15559 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL } },
15563 * 6.5.4.2.2. Response Message Parameters
15565 { &hf_ff_lr_put_info_rsp,
15566 { "LAN Redundancy Put Information Response",
15567 "ff.lr.put_info.rsp",
15568 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15570 { &hf_ff_lr_put_info_rsp_lr_attrs_ver,
15571 { "LAN Redundancy Attributes Version",
15572 "ff.lr.put_info.rsp.lr_attrs_ver",
15573 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15575 { &hf_ff_lr_put_info_rsp_lr_max_msg_num_diff,
15576 { "Max Message Number Difference",
15577 "ff.lr.put_info.rsp.max_msg_num_diff",
15578 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15580 { &hf_ff_lr_put_info_rsp_reserved,
15581 { "Reserved",
15582 "ff.lr.put_info.rsp.reserved",
15583 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15585 { &hf_ff_lr_put_info_rsp_diagnostic_msg_intvl,
15586 { "Diagnostic Message Interval",
15587 "ff.lr.put_info.rsp.diagnostic_msg_intvl",
15588 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15590 { &hf_ff_lr_put_info_rsp_aging_time,
15591 { "Aging Time",
15592 "ff.lr.put_info.rsp.aging_time",
15593 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15595 { &hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_send_addr,
15596 { "Diagnostic Message Interface A Send Address",
15597 "ff.lr.put_info.rsp.diagnostic_msg_if_a_send_addr",
15598 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15600 { &hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_recv_addr,
15601 { "Diagnostic Message Interface A Receive Address",
15602 "ff.lr.put_info.rsp.diagnostic_msg_if_a_recv_addr",
15603 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15605 { &hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_send_addr,
15606 { "Diagnostic Message Interface B Send Address",
15607 "ff.lr.put_info.rsp.diagnostic_msg_if_b_send_addr",
15608 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15610 { &hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_recv_addr,
15611 { "Diagnostic Message Interface B Receive Address",
15612 "ff.lr.put_info.rsp.diagnostic_msg_if_b_recv_addr",
15613 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15615 { &hf_ff_lr_put_info_rsp_lr_flags_reserved,
15616 { "Reserved",
15617 "ff.lr.put_info.rsp.lr_flags.reserved",
15618 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL } },
15620 { &hf_ff_lr_put_info_rsp_lr_flags_load_balance,
15621 { "Load Balancing",
15622 "ff.lr.put_info.rsp.lr_flags.load_balance",
15623 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL } },
15625 { &hf_ff_lr_put_info_rsp_lr_flags_diag,
15626 { "Diagnosis Using Own Messages",
15627 "ff.lr.put_info.rsp.lr_flags.diag",
15628 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL } },
15630 { &hf_ff_lr_put_info_rsp_lr_flags_multi_recv,
15631 { "Single Multicast Message Reception Interface",
15632 "ff.lr.put_info.rsp.lr_flags.multi_recv",
15633 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL } },
15635 { &hf_ff_lr_put_info_rsp_lr_flags_cross_cable,
15636 { "Crossed Cable Detection",
15637 "ff.lr.put_info.rsp.lr_flags.cross_cable",
15638 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL } },
15640 { &hf_ff_lr_put_info_rsp_lr_flags_multi_trans,
15641 { "Single Multicast Message Transmission Interface",
15642 "ff.lr.put_info.rsp.lr_flags.multi_trans",
15643 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL } },
15647 * 6.5.4.2.3. Error Message Parameters
15649 { &hf_ff_lr_put_info_err,
15650 { "LAN Redundancy Put Information Error", "ff.lr.put_info.err",
15651 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15653 { &hf_ff_lr_put_info_err_err_class,
15654 { "Error Class", "ff.lr.put_info.err.err_class",
15655 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
15657 { &hf_ff_lr_put_info_err_err_code,
15658 { "Error Code", "ff.lr.put_info.err.err_code",
15659 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15661 { &hf_ff_lr_put_info_err_additional_code,
15662 { "Additional Code",
15663 "ff.lr.put_info.err.additional_code",
15664 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15666 { &hf_ff_lr_put_info_err_additional_desc,
15667 { "Additional Description",
15668 "ff.lr.put_info.err.additional_desc",
15669 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15674 * 6.5.4.3. LAN Redundancy Get Statistics (Confirmed Service Id = 3)
15676 { &hf_ff_lr_get_statistics,
15677 { "LAN Redundancy Get Statistics",
15678 "ff.lr.get_statistics",
15679 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15684 * 6.5.4.3.1. Request Message Parameters
15686 { &hf_ff_lr_get_statistics_req,
15687 { "LAN Redundancy Get Statistics Request",
15688 "ff.lr.get_statistics.req",
15689 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15694 * 6.5.4.3.2. Response Message Parameters
15696 { &hf_ff_lr_get_statistics_rsp,
15697 { "LAN Redundancy Get Statistics Response",
15698 "ff.lr.get_statistics.rsp",
15699 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15701 { &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_a,
15702 { "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_recv_a",
15703 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15705 { &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_a,
15706 { "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_miss_a",
15707 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15709 { &hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_a,
15710 { "Error Code",
15711 "ff.lr.get_statistics.rsp.num_rem_dev_diag_recv_fault_a",
15712 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15714 { &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_b,
15715 { "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_recv_b",
15716 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15718 { &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_b,
15719 { "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_miss_b",
15720 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15722 { &hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_b,
15723 { "Error Code",
15724 "ff.lr.get_statistics.rsp.num_rem_dev_diag_recv_fault_b",
15725 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15727 { &hf_ff_lr_get_statistics_rsp_num_x_cable_stat,
15728 { "Error Code", "ff.lr.get_statistics.rsp.num_x_cable_stat",
15729 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15731 { &hf_ff_lr_get_statistics_rsp_x_cable_stat,
15732 { "Error Code", "ff.lr.get_statistics.rsp.x_cable_stat",
15733 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15738 * 6.5.4.3.3. Error Message Parameters
15740 { &hf_ff_lr_get_statistics_err,
15741 { "LAN Redundancy Get Statistics Error",
15742 "ff.lr.get_statistics.err",
15743 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15745 { &hf_ff_lr_get_statistics_err_err_class,
15746 { "Error Class", "ff.lr.get_statistics.err.err_class",
15747 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
15749 { &hf_ff_lr_get_statistics_err_err_code,
15750 { "Error Code", "ff.lr.get_statistics.err.err_code",
15751 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15753 { &hf_ff_lr_get_statistics_err_additional_code,
15754 { "Additional Code",
15755 "ff.lr.get_statistics.err.additional_code",
15756 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15758 { &hf_ff_lr_get_statistics_err_additional_desc,
15759 { "Additional Description",
15760 "ff.lr.get_statistics.err.additional_desc",
15761 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15766 * 6.5.4.4 Diagnostic Message (Unconfirmed Service Id = 1)
15768 { &hf_ff_lr_diagnostic_msg,
15769 { "Diagnostic Message", "ff.lr.diagnostic_msg",
15770 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15775 * 6.5.4.4.1. Request Message Parameters
15777 { &hf_ff_lr_diagnostic_msg_req,
15778 { "Diagnostic Message Request", "ff.lr.diagnostic_msg_req",
15779 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15781 { &hf_ff_lr_diagnostic_msg_req_dev_idx,
15782 { "Device Index", "ff.lr.diagnostic_msg.req.dev_idx",
15783 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15785 { &hf_ff_lr_diagnostic_msg_req_num_of_network_ifs,
15786 { "Number of Network Interfaces",
15787 "ff.lr.diagnostic_msg.req.num_of_network_ifs",
15788 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15790 { &hf_ff_lr_diagnostic_msg_req_transmission_if,
15791 { "Transmission Interface",
15792 "ff.lr.diagnostic_msg.req.transmission_if",
15793 FT_UINT8, BASE_DEC, VALS(names_transmission_interface), 0x0, NULL, HFILL } },
15795 { &hf_ff_lr_diagnostic_msg_req_diagnostic_msg_intvl,
15796 { "Diagnostic Message Interval",
15797 "ff.lr.diagnostic_msg.req.diagnostic_msg_intvl",
15798 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15800 { &hf_ff_lr_diagnostic_msg_req_pd_tag,
15801 { "PD Tag", "ff.lr.diagnostic_msg.req.pd_tag",
15802 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
15804 { &hf_ff_lr_diagnostic_msg_req_reserved,
15805 { "Reserved", "ff.lr.diagnostic_msg.req.reserved",
15806 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15808 { &hf_ff_lr_diagnostic_msg_req_num_of_if_statuses,
15809 { "Number of Interface Statuses",
15810 "ff.lr.diagnostic_msg.req.num_of_if_statuses",
15811 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15813 { &hf_ff_lr_diagnostic_msg_req_if_a_to_a_status,
15814 { "Interface AtoA Status",
15815 "ff.lr.diagnostic_msg.req.if_a_to_a_status",
15816 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15818 { &hf_ff_lr_diagnostic_msg_req_if_b_to_a_status,
15819 { "Interface BtoA Status",
15820 "ff.lr.diagnostic_msg.req.if_b_to_a_status",
15821 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15823 { &hf_ff_lr_diagnostic_msg_req_if_a_to_b_status,
15824 { "Interface AtoB Status",
15825 "ff.lr.diagnostic_msg.req.if_a_to_b_status",
15826 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15828 { &hf_ff_lr_diagnostic_msg_req_if_b_to_b_status,
15829 { "Interface BtoB Status",
15830 "ff.lr.diagnostic_msg.req.if_b_to_b_status",
15831 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15833 { &hf_ff_lr_diagnostic_msg_req_dup_detection_state_reserved,
15834 { "Reserved", "ff.lr.diagnostic_msg.req.dup_detection_state.reserved",
15835 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
15837 { &hf_ff_lr_diagnostic_msg_req_dup_detection_state_pd_tag,
15838 { "Duplicate PD Tag", "ff.lr.diagnostic_msg.req.dup_detection_state.pd_tag",
15839 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
15841 { &hf_ff_lr_diagnostic_msg_req_dup_detection_state_device,
15842 { "Duplicate Device Index", "ff.lr.diagnostic_msg.req.dup_detection_state.device",
15843 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
15849 static gint *ett[] = {
15850 &ett_ff,
15851 &ett_ff_fda_msg_hdr,
15852 &ett_ff_fda_msg_hdr_proto_and_type,
15853 &ett_ff_fda_msg_hdr_opts,
15854 &ett_ff_fda_msg_hdr_srv,
15856 &ett_ff_fda_msg_trailer,
15858 &ett_ff_fda_open_sess_req,
15859 &ett_ff_fda_open_sess_rsp,
15860 &ett_ff_fda_open_sess_err,
15862 &ett_ff_fda_idle_req,
15863 &ett_ff_fda_idle_rsp,
15864 &ett_ff_fda_idle_err,
15866 &ett_ff_sm_find_tag_query_req,
15867 &ett_ff_sm_find_tag_reply_req,
15868 &ett_ff_sm_find_tag_reply_req_dup_detection_state,
15869 &ett_ff_sm_find_tag_reply_req_list_of_fda_addr_selectors,
15871 &ett_ff_sm_id_req,
15872 &ett_ff_sm_id_rsp,
15873 &ett_ff_sm_id_rsp_smk_state,
15874 &ett_ff_sm_id_rsp_dev_type,
15875 &ett_ff_sm_id_rsp_dev_redundancy_state,
15876 &ett_ff_sm_id_rsp_dup_detection_state,
15877 &ett_ff_sm_id_rsp_entries_h1_live_list,
15878 &ett_ff_sm_id_rsp_h1_live_list,
15879 &ett_ff_sm_id_rsp_entries_node_addr,
15880 &ett_ff_sm_id_rsp_h1_node_addr,
15881 &ett_ff_sm_id_err,
15883 &ett_ff_sm_clear_addr_req,
15884 &ett_ff_sm_clear_addr_rsp,
15885 &ett_ff_sm_clear_addr_err,
15887 &ett_ff_sm_set_assign_info_req,
15888 &ett_ff_sm_set_assign_info_req_dev_redundancy_state,
15889 &ett_ff_sm_set_assign_info_req_clear_dup_detection_state,
15890 &ett_ff_sm_set_assign_info_rsp,
15891 &ett_ff_sm_set_assign_info_err,
15893 &ett_ff_sm_clear_assign_info_req,
15894 &ett_ff_sm_clear_assign_info_rsp,
15895 &ett_ff_sm_clear_assign_info_err,
15897 &ett_ff_sm_dev_annunc_req,
15898 &ett_ff_sm_dev_annunc_req_smk_state,
15899 &ett_ff_sm_dev_annunc_req_dev_type,
15900 &ett_ff_sm_dev_annunc_req_dev_redundancy_state,
15901 &ett_ff_sm_dev_annunc_req_dup_detection_state,
15902 &ett_ff_sm_dev_annunc_req_entries_h1_live_list,
15903 &ett_ff_sm_dev_annunc_req_h1_live_list,
15904 &ett_ff_sm_dev_annunc_req_entries_node_addr,
15905 &ett_ff_sm_dev_annunc_req_h1_node_addr,
15907 &ett_ff_fms_init_req,
15908 &ett_ff_fms_init_rep,
15909 &ett_ff_fms_init_err,
15911 &ett_ff_fms_abort_req,
15913 &ett_ff_fms_status_req,
15914 &ett_ff_fms_status_rsp,
15915 &ett_ff_fms_status_err,
15917 &ett_ff_fms_unsolicited_status_req,
15919 &ett_ff_fms_id_req,
15920 &ett_ff_fms_id_rsp,
15921 &ett_ff_fms_id_err,
15923 &ett_ff_fms_get_od_req,
15924 &ett_ff_fms_get_od_rsp,
15925 &ett_ff_fms_get_od_err,
15927 &ett_ff_fms_init_put_od_req,
15928 &ett_ff_fms_init_put_od_rsp,
15929 &ett_ff_fms_init_put_od_err,
15931 &ett_ff_fms_put_od_req,
15932 &ett_ff_fms_put_od_rsp,
15933 &ett_ff_fms_put_od_err,
15935 &ett_ff_fms_terminate_put_od_req,
15936 &ett_ff_fms_terminate_put_od_rsp,
15937 &ett_ff_fms_terminate_put_od_err,
15939 &ett_ff_fms_gen_init_download_seq_req,
15940 &ett_ff_fms_gen_init_download_seq_rep,
15941 &ett_ff_fms_gen_init_download_seq_err,
15943 &ett_ff_fms_gen_download_seg_req,
15944 &ett_ff_fms_gen_download_seg_rsp,
15945 &ett_ff_fms_gen_download_seg_err,
15947 &ett_ff_fms_gen_terminate_download_seq_req,
15948 &ett_ff_fms_gen_terminate_download_seq_rsp,
15949 &ett_ff_fms_gen_terminate_download_seq_err,
15951 &ett_ff_fms_init_download_seq_req,
15952 &ett_ff_fms_init_download_seq_rsp,
15953 &ett_ff_fms_init_download_seq_err,
15955 &ett_ff_fms_download_seg_req,
15956 &ett_ff_fms_download_seg_rsp,
15957 &ett_ff_fms_download_seg_err,
15959 &ett_ff_fms_terminate_download_seq_req,
15960 &ett_ff_fms_terminate_download_seq_rsp,
15961 &ett_ff_fms_terminate_download_seq_err,
15963 &ett_ff_fms_init_upload_seq_req,
15964 &ett_ff_fms_init_upload_seq_rsp,
15965 &ett_ff_fms_init_upload_seq_err,
15967 &ett_ff_fms_upload_seg_req,
15968 &ett_ff_fms_upload_seg_rsp,
15969 &ett_ff_fms_upload_seg_err,
15971 &ett_ff_fms_terminate_upload_seq_req,
15972 &ett_ff_fms_terminate_upload_seq_rsp,
15973 &ett_ff_fms_terminate_upload_seq_err,
15975 &ett_ff_fms_req_dom_download_req,
15976 &ett_ff_fms_req_dom_download_rsp,
15977 &ett_ff_fms_req_dom_download_err,
15979 &ett_ff_fms_req_dom_upload_req,
15980 &ett_ff_fms_req_dom_upload_rsp,
15981 &ett_ff_fms_req_dom_upload_err,
15983 &ett_ff_fms_create_pi_req,
15984 &ett_ff_fms_create_pi_req_list_of_dom_idxes,
15985 &ett_ff_fms_create_pi_rsp,
15986 &ett_ff_fms_create_pi_err,
15988 &ett_ff_fms_del_pi_req,
15989 &ett_ff_fms_del_pi_rsp,
15990 &ett_ff_fms_del_pi_err,
15992 &ett_ff_fms_start_req,
15993 &ett_ff_fms_start_rsp,
15994 &ett_ff_fms_start_err,
15996 &ett_ff_fms_stop_req,
15997 &ett_ff_fms_stop_rsp,
15998 &ett_ff_fms_stop_err,
16000 &ett_ff_fms_resume_req,
16001 &ett_ff_fms_resume_rsp,
16002 &ett_ff_fms_resume_err,
16004 &ett_ff_fms_reset_req,
16005 &ett_ff_fms_reset_rsp,
16006 &ett_ff_fms_reset_err,
16008 &ett_ff_fms_kill_req,
16009 &ett_ff_fms_kill_rsp,
16010 &ett_ff_fms_kill_err,
16012 &ett_ff_fms_read_req,
16013 &ett_ff_fms_read_rsp,
16014 &ett_ff_fms_read_err,
16016 &ett_ff_fms_read_with_subidx_req,
16017 &ett_ff_fms_read_with_subidx_rsp,
16018 &ett_ff_fms_read_with_subidx_err,
16020 &ett_ff_fms_write_req,
16021 &ett_ff_fms_write_rsp,
16022 &ett_ff_fms_write_err,
16024 &ett_ff_fms_write_with_subidx_req,
16025 &ett_ff_fms_write_with_subidx_rsp,
16026 &ett_ff_fms_write_with_subidx_err,
16028 &ett_ff_fms_def_variable_list_req,
16029 &ett_ff_fms_def_variable_list_req_list_of_idxes,
16030 &ett_ff_fms_def_variable_list_rsp,
16031 &ett_ff_fms_def_variable_list_err,
16033 &ett_ff_fms_del_variable_list_req,
16034 &ett_ff_fms_del_variable_list_rsp,
16035 &ett_ff_fms_del_variable_list_err,
16037 &ett_ff_fms_info_report_req,
16039 &ett_ff_fms_info_report_with_subidx_req,
16041 &ett_ff_fms_info_report_on_change_req,
16043 &ett_ff_fms_info_report_on_change_with_subidx_req,
16045 &ett_ff_fms_ev_notification_req,
16047 &ett_ff_fms_alter_ev_condition_monitoring_req,
16048 &ett_ff_fms_alter_ev_condition_monitoring_rsp,
16049 &ett_ff_fms_alter_ev_condition_monitoring_err,
16051 &ett_ff_fms_ack_ev_notification_req,
16052 &ett_ff_fms_ack_ev_notification_rsp,
16053 &ett_ff_fms_ack_ev_notification_err,
16055 &ett_ff_lr_get_info_req,
16056 &ett_ff_lr_get_info_rsp,
16057 &ett_ff_lr_get_info_rsp_lr_flags,
16058 &ett_ff_lr_get_info_err,
16060 &ett_ff_lr_put_info_req,
16061 &ett_ff_lr_put_info_req_lr_flags,
16062 &ett_ff_lr_put_info_rsp,
16063 &ett_ff_lr_put_info_rsp_lr_flags,
16064 &ett_ff_lr_put_info_err,
16066 &ett_ff_lr_get_statistics_req,
16067 &ett_ff_lr_get_statistics_rsp,
16068 &ett_ff_lr_get_statistics_rsp_list_of_x_cable_stat,
16069 &ett_ff_lr_get_statistics_err,
16071 &ett_ff_lr_diagnostic_msg_req,
16072 &ett_ff_lr_diagnostic_msg_req_dup_detection_stat,
16073 &ett_ff_lr_diagnostic_msg_req_a_to_a_status,
16074 &ett_ff_lr_diagnostic_msg_req_b_to_a_status,
16075 &ett_ff_lr_diagnostic_msg_req_a_to_b_status,
16076 &ett_ff_lr_diagnostic_msg_req_b_to_b_status,
16079 proto_ff = proto_register_protocol("FOUNDATION Fieldbus", "FF", "ff");
16080 proto_register_field_array(proto_ff, hf, array_length(hf));
16081 proto_register_subtree_array(ett, array_length(ett));
16083 return;
16088 void
16089 proto_reg_handoff_ff(void)
16092 * 4.8. Using UDP and TCP
16094 ff_udp_handle = new_create_dissector_handle(dissect_ff_udp, proto_ff);
16095 ff_tcp_handle = new_create_dissector_handle(dissect_ff_tcp, proto_ff);
16098 * 4.8.4.2. Use
16100 * - Device Annunciation
16102 dissector_add_uint("udp.port", UDP_PORT_FF_ANNUNC, ff_udp_handle);
16105 * 4.8.4.2. Use
16107 * - Client / Server
16109 dissector_add_uint("udp.port", UDP_PORT_FF_FMS, ff_udp_handle);
16110 dissector_add_uint("tcp.port", TCP_PORT_FF_FMS, ff_tcp_handle);
16113 * 4.8.4.2. Use
16115 * - Set/Clear Assignment Info and Clear Address
16116 * - SM Identify
16117 * - SM Find Tag
16119 dissector_add_uint("udp.port", UDP_PORT_FF_SM, ff_udp_handle);
16122 * 4.8.4.2. Use
16124 * - LAN Redundancy Get and Put Information
16126 dissector_add_uint("udp.port", UDP_PORT_FF_LR_PORT, ff_udp_handle);
16128 return;