Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-ff.c
blob8fc8a028175160b0e795b300aa1e69027f771566
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 * Wireshark - Network traffic analyzer
10 * By Gerald Combs <gerald@wireshark.org>
11 * Copyright 1998 Gerald Combs
13 * SPDX-License-Identifier: GPL-2.0-or-later
17 * /etc/services
18 * ---------------------------------------------------------------------
19 * ff-annunc 1089/tcp # FF Annunciation
20 * ff-annunc 1089/udp # FF Annunciation
21 * ff-fms 1090/tcp # FF Fieldbus Message Specification
22 * ff-fms 1090/udp # FF Fieldbus Message Specification
23 * ff-sm 1091/tcp # FF System Management
24 * ff-sm 1091/udp # FF System Management
25 * ff-lr-port 3622/tcp # FF LAN Redundancy Port
26 * ff-lr-port 3622/udp # FF LAN Redundancy Port
27 * ---------------------------------------------------------------------
30 #include "config.h"
32 #include <epan/packet.h>
33 #include <epan/tfs.h>
34 #include "packet-ff.h"
35 #include "packet-tcp.h"
37 #define FDA_MSG_HDR_LENGTH 12
39 void proto_register_ff(void);
40 void proto_reg_handoff_ff(void);
42 static int proto_ff;
43 static int ett_ff;
45 static bool ff_desegment = true; /* desegmentation of FF over TCP */
47 static dissector_handle_t ff_udp_handle;
48 static dissector_handle_t ff_tcp_handle;
53 * 6.3. Message Header
55 static int hf_ff_fda_msg_hdr;
57 static int hf_ff_fda_msg_hdr_ver;
58 static int hf_ff_fda_msg_hdr_fda_addr;
59 static int hf_ff_fda_msg_hdr_len;
60 static int hf_ff_unknown_data;
61 static int hf_ff_data;
62 static int hf_ff_reserved24;
63 static int hf_ff_unknown_service;
65 static int ett_ff_fda_msg_hdr;
66 static int ett_ff_fda_msg_hdr_proto_and_type;
67 static int ett_ff_fda_msg_hdr_opts;
68 static int ett_ff_fda_msg_hdr_srv;
73 * 6.4. Message Trailer
75 static int hf_ff_fda_msg_trailer;
77 static int hf_ff_fda_msg_trailer_msg_num;
78 static int hf_ff_fda_msg_trailer_invoke_id;
79 static int hf_ff_fda_msg_trailer_time_stamp;
80 static int hf_ff_fda_msg_trailer_extended_control_field;
82 static int ett_ff_fda_msg_trailer;
87 * 6.5.1 FDA Session Management Services
89 static int hf_ff_fda;
90 static int hf_ff_hdr_srv;
91 static int hf_ff_hdr_srv_confirm_flag;
92 static int hf_ff_hdr_srv_service_id;
93 static int hf_ff_hdr_srv_fda_service_id_confirm;
94 static int hf_ff_hdr_srv_fda_service_id_unconfirm;
95 static int hf_ff_hdr_srv_sm_service_id_confirm;
96 static int hf_ff_hdr_srv_sm_service_id_unconfirm;
97 static int hf_ff_hdr_srv_fms_service_id_confirm;
98 static int hf_ff_hdr_srv_fms_service_id_unconfirm;
99 static int hf_ff_hdr_srv_lan_service_id_confirm;
100 static int hf_ff_hdr_srv_lan_service_id_unconfirm;
101 static int hf_ff_hdr_proto_id;
102 static int hf_ff_hdr_confirm_msg_type;
103 static int hf_ff_hdr_proto_confirm;
104 static int hf_ff_hdr_opts_msg_num;
105 static int hf_ff_hdr_opts_invoke_id;
106 static int hf_ff_hdr_opts_timestamp;
107 static int hf_ff_hdr_opts_reserved;
108 static int hf_ff_hdr_opts_ext_ctrl;
109 static int hf_ff_hdr_opts_pad;
110 static int hf_ff_hdr_opts;
113 * 6.5.1.1. FDA Open Session (Confirmed Service Id = 1)
115 static int hf_ff_fda_open_sess;
117 static int hf_ff_fda_open_sess_req;
118 static int hf_ff_fda_open_sess_req_sess_idx;
119 static int hf_ff_fda_open_sess_req_max_buf_siz;
120 static int hf_ff_fda_open_sess_req_max_msg_len;
121 static int hf_ff_fda_open_sess_req_reserved;
122 static int hf_ff_fda_open_sess_req_nma_conf_use;
123 static int hf_ff_fda_open_sess_req_inactivity_close_time;
124 static int hf_ff_fda_open_sess_req_transmit_delay_time;
125 static int hf_ff_fda_open_sess_req_pd_tag;
127 static int hf_ff_fda_open_sess_rsp;
128 static int hf_ff_fda_open_sess_rsp_sess_idx;
129 static int hf_ff_fda_open_sess_rsp_max_buf_siz;
130 static int hf_ff_fda_open_sess_rsp_max_msg_len;
131 static int hf_ff_fda_open_sess_rsp_reserved;
132 static int hf_ff_fda_open_sess_rsp_nma_conf_use;
133 static int hf_ff_fda_open_sess_rsp_inactivity_close_time;
134 static int hf_ff_fda_open_sess_rsp_transmit_delay_time;
135 static int hf_ff_fda_open_sess_rsp_pd_tag;
137 static int hf_ff_fda_open_sess_err;
138 static int hf_ff_fda_open_sess_err_err_class;
139 static int hf_ff_fda_open_sess_err_err_code;
140 static int hf_ff_fda_open_sess_err_additional_code;
141 static int hf_ff_fda_open_sess_err_additional_desc;
143 static int ett_ff_fda_open_sess_req;
144 static int ett_ff_fda_open_sess_rsp;
145 static int ett_ff_fda_open_sess_err;
150 * 6.5.1.2. FDA Idle (Confirmed Service Id = 3)
152 static int hf_ff_fda_idle;
154 static int hf_ff_fda_idle_req;
156 static int hf_ff_fda_idle_rsp;
158 static int hf_ff_fda_idle_err;
159 static int hf_ff_fda_idle_err_err_class;
160 static int hf_ff_fda_idle_err_err_code;
161 static int hf_ff_fda_idle_err_additional_code;
162 static int hf_ff_fda_idle_err_additional_desc;
164 static int ett_ff_fda_idle_req;
165 static int ett_ff_fda_idle_rsp;
166 static int ett_ff_fda_idle_err;
171 * 6.5.2. SM Services
173 static int hf_ff_sm;
178 * 6.5.2.1. SM Find Tag Query (Unconfirmed Service Id = 1)
180 static int hf_ff_sm_find_tag_query;
182 static int hf_ff_sm_find_tag_query_req;
183 static int hf_ff_sm_find_tag_query_req_query_type;
184 static int hf_ff_sm_find_tag_query_req_idx;
185 static int hf_ff_sm_find_tag_query_req_tag;
186 static int hf_ff_sm_find_tag_query_req_vfd_tag;
188 static int ett_ff_sm_find_tag_query_req;
193 * 6.5.2.2. SM Find Tag Reply (Unconfirmed Service Id = 2)
195 static int hf_ff_sm_find_tag_reply;
197 static int hf_ff_sm_find_tag_reply_req;
198 static int hf_ff_sm_find_tag_reply_req_query_type;
199 static int hf_ff_sm_find_tag_reply_req_h1_node_addr;
200 static int hf_ff_sm_find_tag_reply_req_fda_addr_link_id;
201 static int hf_ff_sm_find_tag_reply_req_vfd_ref;
202 static int hf_ff_sm_find_tag_reply_req_od_idx;
203 static int hf_ff_sm_find_tag_reply_req_ip_addr;
204 static int hf_ff_sm_find_tag_reply_req_od_ver;
205 static int hf_ff_sm_find_tag_reply_req_dev_id;
206 static int hf_ff_sm_find_tag_reply_req_pd_tag;
207 static int hf_ff_sm_find_tag_reply_req_reserved;
208 static int hf_ff_sm_find_tag_reply_req_num_of_fda_addr_selectors;
209 static int hf_ff_sm_find_tag_reply_req_fda_addr_selector;
210 static int hf_ff_sm_find_tag_reply_dup_reserved;
211 static int hf_ff_sm_find_tag_reply_dup_pd_tag;
212 static int hf_ff_sm_find_tag_reply_dup_device;
213 static int hf_ff_sm_find_tag_reply_dup;
215 static int ett_ff_sm_find_tag_reply_req;
216 static int ett_ff_sm_find_tag_reply_req_dup_detection_state;
217 static int ett_ff_sm_find_tag_reply_req_list_of_fda_addr_selectors;
222 * 6.5.2.3. SM Identify (Confirmed Service Id = 3)
224 static int hf_ff_sm_id;
226 static int hf_ff_sm_id_req;
228 static int hf_ff_sm_id_rsp;
229 static int hf_ff_sm_id_rsp_dev_idx;
230 static int hf_ff_sm_id_rsp_max_dev_idx;
231 static int hf_ff_sm_id_rsp_operational_ip_addr;
232 static int hf_ff_sm_id_rsp_dev_id;
233 static int hf_ff_sm_id_rsp_pd_tag;
234 static int hf_ff_sm_id_rsp_hse_repeat_time;
235 static int hf_ff_sm_id_rsp_lr_port;
236 static int hf_ff_sm_id_rsp_reserved;
237 static int hf_ff_sm_id_rsp_annunc_ver_num;
238 static int hf_ff_sm_id_rsp_hse_dev_ver_num;
239 static int hf_ff_sm_id_rsp_num_of_entries;
240 static int hf_ff_sm_id_rsp_h1_live_list_h1_link_id;
241 static int hf_ff_sm_id_rsp_h1_live_list_reserved;
242 static int hf_ff_sm_id_rsp_h1_live_list_ver_num;
243 static int hf_ff_sm_id_rsp_h1_node_addr_ver_num_h1_node_addr;
244 static int hf_ff_sm_id_rsp_h1_node_addr_ver_num_ver_num;
245 static int hf_ff_sm_id_rsp_smk_state_name;
246 static int hf_ff_sm_id_rsp_smk_state_sync;
247 static int hf_ff_sm_id_rsp_smk_state;
248 static int hf_ff_sm_id_rsp_dev_type_link;
249 static int hf_ff_sm_id_rsp_dev_type_iogateway;
250 static int hf_ff_sm_id_rsp_dev_type_hse;
251 static int hf_ff_sm_id_rsp_dev_type_h1;
252 static int hf_ff_sm_id_rsp_dev_type_reserved;
253 static int hf_ff_sm_id_rsp_dev_type_redundant_caps;
254 static int hf_ff_sm_id_rsp_dev_type;
255 static int hf_ff_sm_id_rsp_dev_redundancy_state_reserved;
256 static int hf_ff_sm_id_rsp_dev_redundancy_state_role;
257 static int hf_ff_sm_id_rsp_dev_redundancy_state_type;
258 static int hf_ff_sm_id_rsp_dev_redundancy_state;
259 static int hf_ff_sm_id_rsp_dup_detection_state_reserved;
260 static int hf_ff_sm_id_rsp_dup_detection_state_pd_tag;
261 static int hf_ff_sm_id_rsp_dup_detection_state_device;
262 static int hf_ff_sm_id_rsp_dup_detection_state;
264 static int hf_ff_sm_id_err;
265 static int hf_ff_sm_id_err_err_class;
266 static int hf_ff_sm_id_err_err_code;
267 static int hf_ff_sm_id_err_additional_code;
268 static int hf_ff_sm_id_err_additional_desc;
270 static int ett_ff_sm_id_req;
271 static int ett_ff_sm_id_rsp;
272 static int ett_ff_sm_id_rsp_smk_state;
273 static int ett_ff_sm_id_rsp_dev_type;
274 static int ett_ff_sm_id_rsp_dev_redundancy_state;
275 static int ett_ff_sm_id_rsp_dup_detection_state;
276 static int ett_ff_sm_id_rsp_entries_h1_live_list;
277 static int ett_ff_sm_id_rsp_h1_live_list;
278 static int ett_ff_sm_id_rsp_entries_node_addr;
279 static int ett_ff_sm_id_rsp_h1_node_addr;
280 static int ett_ff_sm_id_err;
285 * 6.5.2.4. SM Clear Address (Confirmed Service Id = 12)
287 static int hf_ff_sm_clear_addr;
289 static int hf_ff_sm_clear_addr_req;
290 static int hf_ff_sm_clear_addr_req_dev_id;
291 static int hf_ff_sm_clear_addr_req_pd_tag;
292 static int hf_ff_sm_clear_addr_req_interface_to_clear;
294 static int hf_ff_sm_clear_addr_rsp;
296 static int hf_ff_sm_clear_addr_err;
297 static int hf_ff_sm_clear_addr_err_err_class;
298 static int hf_ff_sm_clear_addr_err_err_code;
299 static int hf_ff_sm_clear_addr_err_additional_code;
300 static int hf_ff_sm_clear_addr_err_additional_desc;
302 static int ett_ff_sm_clear_addr_req;
303 static int ett_ff_sm_clear_addr_rsp;
304 static int ett_ff_sm_clear_addr_err;
309 * 6.5.2.5. SM Set Assignment Info (Confirmed Service Id = 14)
311 static int hf_ff_sm_set_assign_info;
313 static int hf_ff_sm_set_assign_info_req_dev_redundancy_state_reserved;
314 static int hf_ff_sm_set_assign_info_req_dev_redundancy_state_role;
315 static int hf_ff_sm_set_assign_info_req_dev_redundancy_state_type;
316 static int hf_ff_sm_set_assign_info_req_dev_redundancy_state;
317 static int hf_ff_sm_set_assign_info_req_clear_dup_detection_state_reserved;
318 static int hf_ff_sm_set_assign_info_req_clear_dup_detection_state_pd_tag;
319 static int hf_ff_sm_set_assign_info_req_clear_dup_detection_state_device_index;
320 static int hf_ff_sm_set_assign_info_req_clear_dup_detection_state;
322 static int hf_ff_sm_set_assign_info_req;
323 static int hf_ff_sm_set_assign_info_req_dev_id;
324 static int hf_ff_sm_set_assign_info_req_pd_tag;
325 static int hf_ff_sm_set_assign_info_req_h1_new_addr;
326 static int hf_ff_sm_set_assign_info_req_lr_port;
327 static int hf_ff_sm_set_assign_info_req_hse_repeat_time;
328 static int hf_ff_sm_set_assign_info_req_dev_idx;
329 static int hf_ff_sm_set_assign_info_req_max_dev_idx;
330 static int hf_ff_sm_set_assign_info_req_operational_ip_addr;
332 static int hf_ff_sm_set_assign_info_rsp;
333 static int hf_ff_sm_set_assign_info_rsp_reserved;
334 static int hf_ff_sm_set_assign_info_rsp_max_dev_idx;
335 static int hf_ff_sm_set_assign_info_rsp_hse_repeat_time;
337 static int hf_ff_sm_set_assign_info_err;
338 static int hf_ff_sm_set_assign_info_err_err_class;
339 static int hf_ff_sm_set_assign_info_err_err_code;
340 static int hf_ff_sm_set_assign_info_err_additional_code;
341 static int hf_ff_sm_set_assign_info_err_additional_desc;
343 static int ett_ff_sm_set_assign_info_req;
344 static int ett_ff_sm_set_assign_info_req_dev_redundancy_state;
345 static int ett_ff_sm_set_assign_info_req_clear_dup_detection_state;
346 static int ett_ff_sm_set_assign_info_rsp;
347 static int ett_ff_sm_set_assign_info_err;
352 * 6.5.2.6. SM Clear Assignment Info (Confirmed Service Id = 15)
354 static int hf_ff_sm_clear_assign_info;
356 static int hf_ff_sm_clear_assign_info_req;
357 static int hf_ff_sm_clear_assign_info_req_dev_id;
358 static int hf_ff_sm_clear_assign_info_req_pd_tag;
360 static int hf_ff_sm_clear_assign_info_rsp;
362 static int hf_ff_sm_clear_assign_info_err;
363 static int hf_ff_sm_clear_assign_info_err_err_class;
364 static int hf_ff_sm_clear_assign_info_err_err_code;
365 static int hf_ff_sm_clear_assign_info_err_additional_code;
366 static int hf_ff_sm_clear_assign_info_err_additional_desc;
368 static int ett_ff_sm_clear_assign_info_req;
369 static int ett_ff_sm_clear_assign_info_rsp;
370 static int ett_ff_sm_clear_assign_info_err;
375 * 6.5.2.7. SM Device Annunciation (Unconfirmed Service Id = 16)
377 static int hf_ff_sm_dev_annunc;
379 static int hf_ff_sm_dev_annunc_req;
380 static int hf_ff_sm_dev_annunc_req_dev_idx;
381 static int hf_ff_sm_dev_annunc_req_max_dev_idx;
382 static int hf_ff_sm_dev_annunc_req_operational_ip_addr;
383 static int hf_ff_sm_dev_annunc_req_dev_id;
384 static int hf_ff_sm_dev_annunc_req_pd_tag;
385 static int hf_ff_sm_dev_annunc_req_hse_repeat_time;
386 static int hf_ff_sm_dev_annunc_req_lr_port;
387 static int hf_ff_sm_dev_annunc_req_reserved;
388 static int hf_ff_sm_dev_annunc_req_annunc_ver_num;
389 static int hf_ff_sm_dev_annunc_req_hse_dev_ver_num;
390 static int hf_ff_sm_dev_annunc_req_num_of_entries;
391 static int hf_ff_sm_dev_annunc_req_h1_live_list_h1_link_id;
392 static int hf_ff_sm_dev_annunc_req_h1_live_list_reserved;
393 static int hf_ff_sm_dev_annunc_req_h1_live_list_ver_num;
394 static int hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_h1_node_addr;
395 static int hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_ver_num;
396 static int hf_ff_sm_dev_annunc_req_smk_state_name;
397 static int hf_ff_sm_dev_annunc_req_smk_state_sync;
398 static int hf_ff_sm_dev_annunc_req_smk_state;
399 static int hf_ff_sm_dev_annunc_req_dev_type_link;
400 static int hf_ff_sm_dev_annunc_req_dev_type_iogateway;
401 static int hf_ff_sm_dev_annunc_req_dev_type_hse;
402 static int hf_ff_sm_dev_annunc_req_dev_type_h1;
403 static int hf_ff_sm_dev_annunc_req_dev_type_reserved;
404 static int hf_ff_sm_dev_annunc_req_dev_type_redundant_caps;
405 static int hf_ff_sm_dev_annunc_req_dev_type;
406 static int hf_ff_sm_dev_annunc_req_dev_redundancy_state_reserved;
407 static int hf_ff_sm_dev_annunc_req_dev_redundancy_state_role;
408 static int hf_ff_sm_dev_annunc_req_dev_redundancy_state_type;
409 static int hf_ff_sm_dev_annunc_req_dev_redundancy_state;
410 static int hf_ff_sm_dev_annunc_req_dup_detection_state_reserved;
411 static int hf_ff_sm_dev_annunc_req_dup_detection_state_pd_tag;
412 static int hf_ff_sm_dev_annunc_req_dup_detection_state_device;
413 static int hf_ff_sm_dev_annunc_req_dup_detection_state;
415 static int ett_ff_sm_dev_annunc_req;
416 static int ett_ff_sm_dev_annunc_req_smk_state;
417 static int ett_ff_sm_dev_annunc_req_dev_type;
418 static int ett_ff_sm_dev_annunc_req_dev_redundancy_state;
419 static int ett_ff_sm_dev_annunc_req_dup_detection_state;
420 static int ett_ff_sm_dev_annunc_req_entries_h1_live_list;
421 static int ett_ff_sm_dev_annunc_req_h1_live_list;
422 static int ett_ff_sm_dev_annunc_req_entries_node_addr;
423 static int ett_ff_sm_dev_annunc_req_h1_node_addr;
428 * 6.5.3. FMS Services
430 static int hf_ff_fms;
435 * 6.5.3.2. FMS Initiate (Confirmed Service Id = 96)
437 static int hf_ff_fms_init;
439 static int hf_ff_fms_init_req;
440 static int hf_ff_fms_init_req_conn_opt;
441 static int hf_ff_fms_init_req_access_protection_supported_calling;
442 static int hf_ff_fms_init_req_passwd_and_access_grps_calling;
443 static int hf_ff_fms_init_req_ver_od_calling;
444 static int hf_ff_fms_init_req_prof_num_calling;
445 static int hf_ff_fms_init_req_pd_tag;
447 static int hf_ff_fms_init_rsp;
448 static int hf_ff_fms_init_rsp_ver_od_called;
449 static int hf_ff_fms_init_rsp_prof_num_called;
451 static int hf_ff_fms_init_err;
452 static int hf_ff_fms_init_err_err_class;
453 static int hf_ff_fms_init_err_err_code;
454 static int hf_ff_fms_init_err_additional_code;
455 static int hf_ff_fms_init_err_additional_desc;
457 static int ett_ff_fms_init_req;
458 static int ett_ff_fms_init_rep;
459 static int ett_ff_fms_init_err;
464 * 6.5.3.3. FMS Abort (Unconfirmed Service Id = 112)
466 static int hf_ff_fms_abort;
468 static int hf_ff_fms_abort_req;
469 static int hf_ff_fms_abort_req_detail;
470 static int hf_ff_fms_abort_req_abort_id;
471 static int hf_ff_fms_abort_req_reason_code;
472 static int hf_ff_fms_abort_req_reserved;
474 static int ett_ff_fms_abort_req;
479 * 6.5.3.4. FMS Status (Confirmed Service Id = 0)
481 static int hf_ff_fms_status;
483 static int hf_ff_fms_status_req;
485 static int hf_ff_fms_status_rsp;
486 static int hf_ff_fms_status_rsp_logical_status;
487 static int hf_ff_fms_status_rsp_physical_status;
488 static int hf_ff_fms_status_rsp_reserved;
489 static int hf_ff_fms_status_rsp_local_detail;
491 static int hf_ff_fms_status_err;
492 static int hf_ff_fms_status_err_err_class;
493 static int hf_ff_fms_status_err_err_code;
494 static int hf_ff_fms_status_err_additional_code;
495 static int hf_ff_fms_status_err_additional_desc;
497 static int ett_ff_fms_status_req;
498 static int ett_ff_fms_status_rsp;
499 static int ett_ff_fms_status_err;
504 * 6.5.3.5. FMS Unsolicited Status (Unconfirmed Service Id = 1)
506 static int hf_ff_fms_unsolicited_status;
508 static int hf_ff_fms_unsolicited_status_req;
509 static int hf_ff_fms_unsolicited_status_req_logical_status;
510 static int hf_ff_fms_unsolicited_status_req_physical_status;
511 static int hf_ff_fms_unsolicited_status_req_reserved;
512 static int hf_ff_fms_unsolicited_status_req_local_detail;
514 static int ett_ff_fms_unsolicited_status_req;
519 * 6.5.3.6. FMS Identify (Confirmed Service Id = 1)
521 static int hf_ff_fms_id;
523 static int hf_ff_fms_id_req;
525 static int hf_ff_fms_id_rsp;
526 static int hf_ff_fms_id_rsp_vendor_name;
527 static int hf_ff_fms_id_rsp_model_name;
528 static int hf_ff_fms_id_rsp_revision;
530 static int hf_ff_fms_id_err;
531 static int hf_ff_fms_id_err_err_class;
532 static int hf_ff_fms_id_err_err_code;
533 static int hf_ff_fms_id_err_additional_code;
534 static int hf_ff_fms_id_err_additional_desc;
536 static int ett_ff_fms_id_req;
537 static int ett_ff_fms_id_rsp;
538 static int ett_ff_fms_id_err;
543 * 6.5.3.7. FMS Get OD (Confirmed Service Id = 4)
545 static int hf_ff_fms_get_od;
547 static int hf_ff_fms_get_od_req;
548 static int hf_ff_fms_get_od_req_all_attrs;
549 static int hf_ff_fms_get_od_req_start_idx_flag;
550 static int hf_ff_fms_get_od_req_reserved;
551 static int hf_ff_fms_get_od_req_idx;
553 static int hf_ff_fms_get_od_rsp;
554 static int hf_ff_fms_get_od_rsp_more_follows;
555 static int hf_ff_fms_get_od_rsp_num_of_obj_desc;
556 static int hf_ff_fms_get_od_rsp_reserved;
557 static int hf_ff_fms_get_od_rsp_object_descriptions;
559 static int hf_ff_fms_get_od_err;
560 static int hf_ff_fms_get_od_err_err_class;
561 static int hf_ff_fms_get_od_err_err_code;
562 static int hf_ff_fms_get_od_err_additional_code;
563 static int hf_ff_fms_get_od_err_additional_desc;
565 static int ett_ff_fms_get_od_req;
566 static int ett_ff_fms_get_od_rsp;
567 static int ett_ff_fms_get_od_err;
572 * 6.5.3.8. FMS Initiate Put OD (Confirmed Service Id = 28)
574 static int hf_ff_fms_init_put_od;
576 static int hf_ff_fms_init_put_od_req;
577 static int hf_ff_fms_init_put_od_req_reserved;
578 static int hf_ff_fms_init_put_od_req_consequence;
580 static int hf_ff_fms_init_put_od_rsp;
582 static int hf_ff_fms_init_put_od_err;
583 static int hf_ff_fms_init_put_od_err_err_class;
584 static int hf_ff_fms_init_put_od_err_err_code;
585 static int hf_ff_fms_init_put_od_err_additional_code;
586 static int hf_ff_fms_init_put_od_err_additional_desc;
588 static int ett_ff_fms_init_put_od_req;
589 static int ett_ff_fms_init_put_od_rsp;
590 static int ett_ff_fms_init_put_od_err;
595 * 6.5.3.9. FMS Put OD (Confirmed Service Id = 29)
597 static int hf_ff_fms_put_od;
599 static int hf_ff_fms_put_od_req;
600 static int hf_ff_fms_put_od_req_num_of_obj_desc;
601 static int hf_ff_fms_put_od_req_object_descriptions;
603 static int hf_ff_fms_put_od_rsp;
605 static int hf_ff_fms_put_od_err;
606 static int hf_ff_fms_put_od_err_err_class;
607 static int hf_ff_fms_put_od_err_err_code;
608 static int hf_ff_fms_put_od_err_additional_code;
609 static int hf_ff_fms_put_od_err_additional_desc;
611 static int ett_ff_fms_put_od_req;
612 static int ett_ff_fms_put_od_rsp;
613 static int ett_ff_fms_put_od_err;
618 * 6.5.3.10. FMS Terminate Put OD (Confirmed Service Id = 30)
620 static int hf_ff_fms_terminate_put_od;
622 static int hf_ff_fms_terminate_put_od_req;
624 static int hf_ff_fms_terminate_put_od_rsp;
626 static int hf_ff_fms_terminate_put_od_err;
627 static int hf_ff_fms_terminate_put_od_err_index;
628 static int hf_ff_fms_terminate_put_od_err_err_class;
629 static int hf_ff_fms_terminate_put_od_err_err_code;
630 static int hf_ff_fms_terminate_put_od_err_additional_code;
631 static int hf_ff_fms_terminate_put_od_err_additional_desc;
633 static int ett_ff_fms_terminate_put_od_req;
634 static int ett_ff_fms_terminate_put_od_rsp;
635 static int ett_ff_fms_terminate_put_od_err;
640 * 6.5.3.11. FMS Generic Initiate Download Sequence (Confirmed Service Id = 31)
642 static int hf_ff_fms_gen_init_download_seq;
644 static int hf_ff_fms_gen_init_download_seq_req;
645 static int hf_ff_fms_gen_init_download_seq_req_idx;
647 static int hf_ff_fms_gen_init_download_seq_rsp;
649 static int hf_ff_fms_gen_init_download_seq_err;
650 static int hf_ff_fms_gen_init_download_seq_err_err_class;
651 static int hf_ff_fms_gen_init_download_seq_err_err_code;
652 static int hf_ff_fms_gen_init_download_seq_err_additional_code;
653 static int hf_ff_fms_gen_init_download_seq_err_additional_desc;
655 static int ett_ff_fms_gen_init_download_seq_req;
656 static int ett_ff_fms_gen_init_download_seq_rep;
657 static int ett_ff_fms_gen_init_download_seq_err;
662 * 6.5.3.12. FMS Generic Download Segment (Confirmed Service Id = 32)
664 static int hf_ff_fms_gen_download_seg;
666 static int hf_ff_fms_gen_download_seg_req;
667 static int hf_ff_fms_gen_download_seg_req_idx;
668 static int hf_ff_fms_gen_download_seg_req_more_follows;
669 static int hf_ff_fms_gen_download_seg_req_load_data;
671 static int hf_ff_fms_gen_download_seg_rsp;
673 static int hf_ff_fms_gen_download_seg_err;
674 static int hf_ff_fms_gen_download_seg_err_err_class;
675 static int hf_ff_fms_gen_download_seg_err_err_code;
676 static int hf_ff_fms_gen_download_seg_err_additional_code;
677 static int hf_ff_fms_gen_download_seg_err_additional_desc;
679 static int ett_ff_fms_gen_download_seg_req;
680 static int ett_ff_fms_gen_download_seg_rsp;
681 static int ett_ff_fms_gen_download_seg_err;
686 * 6.5.3.13. FMS Generic Terminate Download Sequence (Confirmed Service Id = 33)
688 static int hf_ff_fms_gen_terminate_download_seq;
690 static int hf_ff_fms_gen_terminate_download_seq_req;
691 static int hf_ff_fms_gen_terminate_download_seq_req_idx;
693 static int hf_ff_fms_gen_terminate_download_seq_rsp;
694 static int hf_ff_fms_gen_terminate_download_seq_rsp_final_result;
696 static int hf_ff_fms_gen_terminate_download_seq_err;
697 static int hf_ff_fms_gen_terminate_download_seq_err_err_class;
698 static int hf_ff_fms_gen_terminate_download_seq_err_err_code;
699 static int hf_ff_fms_gen_terminate_download_seq_err_additional_code;
700 static int hf_ff_fms_gen_terminate_download_seq_err_additional_desc;
702 static int ett_ff_fms_gen_terminate_download_seq_req;
703 static int ett_ff_fms_gen_terminate_download_seq_rsp;
704 static int ett_ff_fms_gen_terminate_download_seq_err;
709 * 6.5.3.14. FMS Initiate Download Sequence (Confirmed Service Id = 9)
711 static int hf_ff_fms_init_download_seq;
713 static int hf_ff_fms_init_download_seq_req;
714 static int hf_ff_fms_init_download_seq_req_idx;
716 static int hf_ff_fms_init_download_seq_rsp;
718 static int hf_ff_fms_init_download_seq_err;
719 static int hf_ff_fms_init_download_seq_err_err_class;
720 static int hf_ff_fms_init_download_seq_err_err_code;
721 static int hf_ff_fms_init_download_seq_err_additional_code;
722 static int hf_ff_fms_init_download_seq_err_additional_desc;
724 static int ett_ff_fms_init_download_seq_req;
725 static int ett_ff_fms_init_download_seq_rsp;
726 static int ett_ff_fms_init_download_seq_err;
731 * 6.5.3.15. FMS Download Segment (Confirmed Service Id = 10)
733 static int hf_ff_fms_download_seg;
734 static int hf_ff_fms_download_seg_req;
735 static int hf_ff_fms_download_seg_req_idx;
737 static int hf_ff_fms_download_seg_rsp;
738 static int hf_ff_fms_download_seg_rsp_more_follows;
739 static int hf_ff_fms_download_seg_rsp_load_data;
741 static int hf_ff_fms_download_seg_err;
742 static int hf_ff_fms_download_seg_err_err_class;
743 static int hf_ff_fms_download_seg_err_err_code;
744 static int hf_ff_fms_download_seg_err_additional_code;
745 static int hf_ff_fms_download_seg_err_additional_desc;
747 static int ett_ff_fms_download_seg_req;
748 static int ett_ff_fms_download_seg_rsp;
749 static int ett_ff_fms_download_seg_err;
754 * 6.5.3.16. FMS Terminate Download Sequence (Confirmed Service Id = 11)
756 static int hf_ff_fms_terminate_download_seq;
758 static int hf_ff_fms_terminate_download_seq_req;
759 static int hf_ff_fms_terminate_download_seq_req_idx;
760 static int hf_ff_fms_terminate_download_seq_req_final_result;
762 static int hf_ff_fms_terminate_download_seq_rsp;
764 static int hf_ff_fms_terminate_download_seq_err;
765 static int hf_ff_fms_terminate_download_seq_err_err_class;
766 static int hf_ff_fms_terminate_download_seq_err_err_code;
767 static int hf_ff_fms_terminate_download_seq_err_additional_code;
768 static int hf_ff_fms_terminate_download_seq_err_additional_desc;
770 static int ett_ff_fms_terminate_download_seq_req;
771 static int ett_ff_fms_terminate_download_seq_rsp;
772 static int ett_ff_fms_terminate_download_seq_err;
777 * 6.5.3.17. FMS Initiate Upload Sequence (Confirmed Service Id = 12)
779 static int hf_ff_fms_init_upload_seq;
781 static int hf_ff_fms_init_upload_seq_req;
782 static int hf_ff_fms_init_upload_seq_req_idx;
784 static int hf_ff_fms_init_upload_seq_rsp;
786 static int hf_ff_fms_init_upload_seq_err;
787 static int hf_ff_fms_init_upload_seq_err_err_class;
788 static int hf_ff_fms_init_upload_seq_err_err_code;
789 static int hf_ff_fms_init_upload_seq_err_additional_code;
790 static int hf_ff_fms_init_upload_seq_err_additional_desc;
792 static int ett_ff_fms_init_upload_seq_req;
793 static int ett_ff_fms_init_upload_seq_rsp;
794 static int ett_ff_fms_init_upload_seq_err;
799 * 6.5.3.18. FMS Upload Segment (Confirmed Service Id = 13)
801 static int hf_ff_fms_upload_seg;
803 static int hf_ff_fms_upload_seg_req;
804 static int hf_ff_fms_upload_seg_req_idx;
806 static int hf_ff_fms_upload_seg_rsp;
807 static int hf_ff_fms_upload_seg_rsp_more_follows;
808 static int hf_ff_fms_upload_seg_rsp_final_result;
810 static int hf_ff_fms_upload_seg_err;
811 static int hf_ff_fms_upload_seg_err_err_class;
812 static int hf_ff_fms_upload_seg_err_err_code;
813 static int hf_ff_fms_upload_seg_err_additional_code;
814 static int hf_ff_fms_upload_seg_err_additional_desc;
816 static int ett_ff_fms_upload_seg_req;
817 static int ett_ff_fms_upload_seg_rsp;
818 static int ett_ff_fms_upload_seg_err;
823 * 6.5.3.19. FMS Terminate Upload Sequence (Confirmed Service Id = 14)
825 static int hf_ff_fms_terminate_upload_seq;
827 static int hf_ff_fms_terminate_upload_seq_req;
828 static int hf_ff_fms_terminate_upload_seq_req_idx;
830 static int hf_ff_fms_terminate_upload_seq_rsp;
832 static int hf_ff_fms_terminate_upload_seq_err;
833 static int hf_ff_fms_terminate_upload_seq_err_err_class;
834 static int hf_ff_fms_terminate_upload_seq_err_err_code;
835 static int hf_ff_fms_terminate_upload_seq_err_additional_code;
836 static int hf_ff_fms_terminate_upload_seq_err_additional_desc;
838 static int ett_ff_fms_terminate_upload_seq_req;
839 static int ett_ff_fms_terminate_upload_seq_rsp;
840 static int ett_ff_fms_terminate_upload_seq_err;
845 * 6.5.3.20. FMS Request Domain Download (Confirmed Service Id = 15)
847 static int hf_ff_fms_req_dom_download;
849 static int hf_ff_fms_req_dom_download_req;
850 static int hf_ff_fms_req_dom_download_req_idx;
851 static int hf_ff_fms_req_dom_download_req_additional_info;
853 static int hf_ff_fms_req_dom_download_rsp;
855 static int hf_ff_fms_req_dom_download_err;
856 static int hf_ff_fms_req_dom_download_err_err_class;
857 static int hf_ff_fms_req_dom_download_err_err_code;
858 static int hf_ff_fms_req_dom_download_err_additional_code;
859 static int hf_ff_fms_req_dom_download_err_additional_desc;
861 static int ett_ff_fms_req_dom_download_req;
862 static int ett_ff_fms_req_dom_download_rsp;
863 static int ett_ff_fms_req_dom_download_err;
868 * 6.5.3.21. FMS Request Domain Upload (Confirmed Service Id = 16)
870 static int hf_ff_fms_req_dom_upload;
872 static int hf_ff_fms_req_dom_upload_req;
873 static int hf_ff_fms_req_dom_upload_req_idx;
874 static int hf_ff_fms_req_dom_upload_req_additional_info;
876 static int hf_ff_fms_req_dom_upload_rsp;
878 static int hf_ff_fms_req_dom_upload_err;
879 static int hf_ff_fms_req_dom_upload_err_err_class;
880 static int hf_ff_fms_req_dom_upload_err_err_code;
881 static int hf_ff_fms_req_dom_upload_err_additional_code;
882 static int hf_ff_fms_req_dom_upload_err_additional_desc;
884 static int ett_ff_fms_req_dom_upload_req;
885 static int ett_ff_fms_req_dom_upload_rsp;
886 static int ett_ff_fms_req_dom_upload_err;
891 * 6.5.3.22. FMS Create Program Invocation (Confirmed Service Id = 17)
893 static int hf_ff_fms_create_pi;
895 static int hf_ff_fms_create_pi_req;
896 static int hf_ff_fms_create_pi_req_reusable;
897 static int hf_ff_fms_create_pi_req_reserved;
898 static int hf_ff_fms_create_pi_req_num_of_dom_idxes;
899 static int hf_ff_fms_create_pi_req_dom_idx;
901 static int hf_ff_fms_create_pi_rsp;
902 static int hf_ff_fms_create_pi_rsp_idx;
904 static int hf_ff_fms_create_pi_err;
905 static int hf_ff_fms_create_pi_err_err_class;
906 static int hf_ff_fms_create_pi_err_err_code;
907 static int hf_ff_fms_create_pi_err_additional_code;
908 static int hf_ff_fms_create_pi_err_additional_desc;
910 static int ett_ff_fms_create_pi_req;
911 static int ett_ff_fms_create_pi_req_list_of_dom_idxes;
912 static int ett_ff_fms_create_pi_rsp;
913 static int ett_ff_fms_create_pi_err;
918 * 6.5.3.23. FMS Delete Program Invocation (Confirmed Service Id = 18)
920 static int hf_ff_fms_del_pi;
921 static int hf_ff_fms_del_pi_req;
922 static int hf_ff_fms_del_pi_req_idx;
924 static int hf_ff_fms_del_pi_rsp;
926 static int hf_ff_fms_del_pi_err;
927 static int hf_ff_fms_del_pi_err_err_class;
928 static int hf_ff_fms_del_pi_err_err_code;
929 static int hf_ff_fms_del_pi_err_additional_code;
930 static int hf_ff_fms_del_pi_err_additional_desc;
932 static int ett_ff_fms_del_pi_req;
933 static int ett_ff_fms_del_pi_rsp;
934 static int ett_ff_fms_del_pi_err;
939 * 6.5.3.24. FMS Start (Confirmed Service Id = 19)
941 static int hf_ff_fms_start;
942 static int hf_ff_fms_start_req;
943 static int hf_ff_fms_start_req_idx;
944 static int hf_ff_fms_start_req_execution_argument;
946 static int hf_ff_fms_start_rsp;
948 static int hf_ff_fms_start_err;
949 static int hf_ff_fms_start_err_pi_state;
950 static int hf_ff_fms_start_err_err_class;
951 static int hf_ff_fms_start_err_err_code;
952 static int hf_ff_fms_start_err_additional_code;
953 static int hf_ff_fms_start_err_additional_desc;
955 static int ett_ff_fms_start_req;
956 static int ett_ff_fms_start_rsp;
957 static int ett_ff_fms_start_err;
962 * 6.5.3.25. FMS Stop (Confirmed Service Id = 20)
964 static int hf_ff_fms_stop;
966 static int hf_ff_fms_stop_req;
967 static int hf_ff_fms_stop_req_idx;
969 static int hf_ff_fms_stop_rsp;
971 static int hf_ff_fms_stop_err;
972 static int hf_ff_fms_stop_err_pi_state;
973 static int hf_ff_fms_stop_err_err_class;
974 static int hf_ff_fms_stop_err_err_code;
975 static int hf_ff_fms_stop_err_additional_code;
976 static int hf_ff_fms_stop_err_additional_desc;
978 static int ett_ff_fms_stop_req;
979 static int ett_ff_fms_stop_rsp;
980 static int ett_ff_fms_stop_err;
985 * 6.5.3.26. FMS Resume (Confirmed Service Id = 21)
987 static int hf_ff_fms_resume;
988 static int hf_ff_fms_resume_req;
989 static int hf_ff_fms_resume_req_idx;
990 static int hf_ff_fms_resume_req_execution_argument;
992 static int hf_ff_fms_resume_rsp;
994 static int hf_ff_fms_resume_err;
995 static int hf_ff_fms_resume_err_pi_state;
996 static int hf_ff_fms_resume_err_err_class;
997 static int hf_ff_fms_resume_err_err_code;
998 static int hf_ff_fms_resume_err_additional_code;
999 static int hf_ff_fms_resume_err_additional_desc;
1001 static int ett_ff_fms_resume_req;
1002 static int ett_ff_fms_resume_rsp;
1003 static int ett_ff_fms_resume_err;
1008 * 6.5.3.27. FMS Reset (Confirmed Service Id = 22)
1010 static int hf_ff_fms_reset;
1011 static int hf_ff_fms_reset_req;
1012 static int hf_ff_fms_reset_req_idx;
1014 static int hf_ff_fms_reset_rsp;
1016 static int hf_ff_fms_reset_err;
1017 static int hf_ff_fms_reset_err_pi_state;
1018 static int hf_ff_fms_reset_err_err_class;
1019 static int hf_ff_fms_reset_err_err_code;
1020 static int hf_ff_fms_reset_err_additional_code;
1021 static int hf_ff_fms_reset_err_additional_desc;
1023 static int ett_ff_fms_reset_req;
1024 static int ett_ff_fms_reset_rsp;
1025 static int ett_ff_fms_reset_err;
1030 * 6.5.3.28. FMS Kill (Confirmed Service Id = 23)
1032 static int hf_ff_fms_kill;
1033 static int hf_ff_fms_kill_req;
1034 static int hf_ff_fms_kill_req_idx;
1036 static int hf_ff_fms_kill_rsp;
1038 static int hf_ff_fms_kill_err;
1039 static int hf_ff_fms_kill_err_err_class;
1040 static int hf_ff_fms_kill_err_err_code;
1041 static int hf_ff_fms_kill_err_additional_code;
1042 static int hf_ff_fms_kill_err_additional_desc;
1044 static int ett_ff_fms_kill_req;
1045 static int ett_ff_fms_kill_rsp;
1046 static int ett_ff_fms_kill_err;
1051 * 6.5.3.29. FMS Read (Confirmed Service Id = 2)
1053 static int hf_ff_fms_read;
1055 static int hf_ff_fms_read_req;
1056 static int hf_ff_fms_read_req_idx;
1058 static int hf_ff_fms_read_rsp;
1060 static int hf_ff_fms_read_err;
1061 static int hf_ff_fms_read_err_err_class;
1062 static int hf_ff_fms_read_err_err_code;
1063 static int hf_ff_fms_read_err_additional_code;
1064 static int hf_ff_fms_read_err_additional_desc;
1066 static int ett_ff_fms_read_req;
1067 static int ett_ff_fms_read_rsp;
1068 static int ett_ff_fms_read_err;
1073 * 6.5.3.30. FMS Read with Subindex (Confirmed Service Id = 82)
1075 static int hf_ff_fms_read_with_subidx;
1077 static int hf_ff_fms_read_with_subidx_req;
1078 static int hf_ff_fms_read_with_subidx_req_idx;
1079 static int hf_ff_fms_read_with_subidx_req_subidx;
1081 static int hf_ff_fms_read_with_subidx_rsp;
1083 static int hf_ff_fms_read_with_subidx_err;
1084 static int hf_ff_fms_read_with_subidx_err_err_class;
1085 static int hf_ff_fms_read_with_subidx_err_err_code;
1086 static int hf_ff_fms_read_with_subidx_err_additional_code;
1087 static int hf_ff_fms_read_with_subidx_err_additional_desc;
1089 static int ett_ff_fms_read_with_subidx_req;
1090 static int ett_ff_fms_read_with_subidx_rsp;
1091 static int ett_ff_fms_read_with_subidx_err;
1096 * 6.5.3.31. FMS Write (Confirmed Service Id = 3)
1098 static int hf_ff_fms_write;
1099 static int hf_ff_fms_write_req;
1100 static int hf_ff_fms_write_req_idx;
1102 static int hf_ff_fms_write_rsp;
1104 static int hf_ff_fms_write_err;
1105 static int hf_ff_fms_write_err_err_class;
1106 static int hf_ff_fms_write_err_err_code;
1107 static int hf_ff_fms_write_err_additional_code;
1108 static int hf_ff_fms_write_err_additional_desc;
1110 static int ett_ff_fms_write_req;
1111 static int ett_ff_fms_write_rsp;
1112 static int ett_ff_fms_write_err;
1117 * 6.5.3.32. FMS Write with Subindex (Confirmed Service Id = 83)
1119 static int hf_ff_fms_write_with_subidx;
1121 static int hf_ff_fms_write_with_subidx_req;
1122 static int hf_ff_fms_write_with_subidx_req_idx;
1123 static int hf_ff_fms_write_with_subidx_req_subidx;
1125 static int hf_ff_fms_write_with_subidx_rsp;
1127 static int hf_ff_fms_write_with_subidx_err;
1128 static int hf_ff_fms_write_with_subidx_err_err_class;
1129 static int hf_ff_fms_write_with_subidx_err_err_code;
1130 static int hf_ff_fms_write_with_subidx_err_additional_code;
1131 static int hf_ff_fms_write_with_subidx_err_additional_desc;
1133 static int ett_ff_fms_write_with_subidx_req;
1134 static int ett_ff_fms_write_with_subidx_rsp;
1135 static int ett_ff_fms_write_with_subidx_err;
1140 * 6.5.3.33. FMS Define Variable List (Confirmed Service Id = 7)
1142 static int hf_ff_fms_def_variable_list;
1144 static int hf_ff_fms_def_variable_list_req;
1145 static int hf_ff_fms_def_variable_list_req_num_of_idxes;
1146 static int hf_ff_fms_def_variable_list_req_idx;
1148 static int hf_ff_fms_def_variable_list_rsp;
1149 static int hf_ff_fms_def_variable_list_rsp_idx;
1151 static int hf_ff_fms_def_variable_list_err;
1152 static int hf_ff_fms_def_variable_list_err_err_class;
1153 static int hf_ff_fms_def_variable_list_err_err_code;
1154 static int hf_ff_fms_def_variable_list_err_additional_code;
1155 static int hf_ff_fms_def_variable_list_err_additional_desc;
1157 static int ett_ff_fms_def_variable_list_req;
1158 static int ett_ff_fms_def_variable_list_req_list_of_idxes;
1159 static int ett_ff_fms_def_variable_list_rsp;
1160 static int ett_ff_fms_def_variable_list_err;
1165 * 6.5.3.34. FMS Delete Variable List (Confirmed Service Id = 8)
1167 static int hf_ff_fms_del_variable_list;
1169 static int hf_ff_fms_del_variable_list_req;
1170 static int hf_ff_fms_del_variable_list_req_idx;
1172 static int hf_ff_fms_del_variable_list_rsp;
1174 static int hf_ff_fms_del_variable_list_err;
1175 static int hf_ff_fms_del_variable_list_err_err_class;
1176 static int hf_ff_fms_del_variable_list_err_err_code;
1177 static int hf_ff_fms_del_variable_list_err_additional_code;
1178 static int hf_ff_fms_del_variable_list_err_additional_desc;
1180 static int ett_ff_fms_del_variable_list_req;
1181 static int ett_ff_fms_del_variable_list_rsp;
1182 static int ett_ff_fms_del_variable_list_err;
1187 * 6.5.3.35. FMS Information Report (Unconfirmed Service Id = 0)
1189 static int hf_ff_fms_info_report;
1191 static int hf_ff_fms_info_report_req;
1192 static int hf_ff_fms_info_report_req_idx;
1194 static int ett_ff_fms_info_report_req;
1199 * 6.5.3.36. FMS Information Report with Subindex (Unconfirmed Service Id = 16)
1201 static int hf_ff_fms_info_report_with_subidx;
1203 static int hf_ff_fms_info_report_with_subidx_req;
1204 static int hf_ff_fms_info_report_with_subidx_req_idx;
1205 static int hf_ff_fms_info_report_with_subidx_req_subidx;
1207 static int ett_ff_fms_info_report_with_subidx_req;
1212 * 6.5.3.37. FMS Information Report On Change (Unconfirmed Service Id = 17)
1214 static int hf_ff_fms_info_report_on_change;
1216 static int hf_ff_fms_info_report_on_change_req;
1217 static int hf_ff_fms_info_report_on_change_req_idx;
1219 static int ett_ff_fms_info_report_on_change_req;
1224 * 6.5.3.38. FMS Information Report On Change with Subindex
1225 * (Unconfirmed Service Id = 18)
1227 static int hf_ff_fms_info_report_on_change_with_subidx;
1229 static int hf_ff_fms_info_report_on_change_with_subidx_req;
1230 static int hf_ff_fms_info_report_on_change_with_subidx_req_idx;
1231 static int hf_ff_fms_info_report_on_change_with_subidx_req_subidx;
1233 static int ett_ff_fms_info_report_on_change_with_subidx_req;
1238 * 6.5.3.39. FMS Event Notification (Unconfirmed Service Id = 2)
1240 static int hf_ff_fms_ev_notification;
1242 static int hf_ff_fms_ev_notification_req;
1243 static int hf_ff_fms_ev_notification_req_idx;
1244 static int hf_ff_fms_ev_notification_req_ev_num;
1246 static int ett_ff_fms_ev_notification_req;
1251 * 6.5.3.40. FMS Alter Event Condition Monitoring (Confirmed Service Id = 24)
1253 static int hf_ff_fms_alter_ev_condition_monitoring;
1255 static int hf_ff_fms_alter_ev_condition_monitoring_req;
1256 static int hf_ff_fms_alter_ev_condition_monitoring_req_idx;
1257 static int hf_ff_fms_alter_ev_condition_monitoring_req_enabled;
1259 static int hf_ff_fms_alter_ev_condition_monitoring_rsp;
1261 static int hf_ff_fms_alter_ev_condition_monitoring_err;
1262 static int hf_ff_fms_alter_ev_condition_monitoring_err_err_class;
1263 static int hf_ff_fms_alter_ev_condition_monitoring_err_err_code;
1264 static int hf_ff_fms_alter_ev_condition_monitoring_err_additional_code;
1265 static int hf_ff_fms_alter_ev_condition_monitoring_err_additional_desc;
1267 static int ett_ff_fms_alter_ev_condition_monitoring_req;
1268 static int ett_ff_fms_alter_ev_condition_monitoring_rsp;
1269 static int ett_ff_fms_alter_ev_condition_monitoring_err;
1274 * 6.5.3.41. FMS Acknowledge Event Notification (Confirmed Service Id = 25)
1276 static int hf_ff_fms_ack_ev_notification;
1278 static int hf_ff_fms_ack_ev_notification_req;
1279 static int hf_ff_fms_ack_ev_notification_req_idx;
1280 static int hf_ff_fms_ack_ev_notification_req_ev_num;
1282 static int hf_ff_fms_ack_ev_notification_rsp;
1284 static int hf_ff_fms_ack_ev_notification_err;
1285 static int hf_ff_fms_ack_ev_notification_err_err_class;
1286 static int hf_ff_fms_ack_ev_notification_err_err_code;
1287 static int hf_ff_fms_ack_ev_notification_err_additional_code;
1288 static int hf_ff_fms_ack_ev_notification_err_additional_desc;
1290 static int ett_ff_fms_ack_ev_notification_req;
1291 static int ett_ff_fms_ack_ev_notification_rsp;
1292 static int ett_ff_fms_ack_ev_notification_err;
1297 * 6.5.4. LAN Redundancy Services
1299 static int hf_ff_lr;
1304 * 6.5.4.1. LAN Redundancy Get Information (Confirmed Service Id = 1)
1306 static int hf_ff_lr_get_info;
1308 static int hf_ff_lr_get_info_req;
1310 static int hf_ff_lr_get_info_rsp;
1311 static int hf_ff_lr_get_info_rsp_lr_attrs_ver;
1312 static int hf_ff_lr_get_info_rsp_lr_max_msg_num_diff;
1313 static int hf_ff_lr_get_info_rsp_reserved;
1314 static int hf_ff_lr_get_info_rsp_diagnostic_msg_intvl;
1315 static int hf_ff_lr_get_info_rsp_aging_time;
1316 static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_send_addr;
1317 static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_recv_addr;
1318 static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_send_addr;
1319 static int hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_recv_addr;
1320 static int hf_ff_lr_get_info_rsp_lr_flags_reserved;
1321 static int hf_ff_lr_get_info_rsp_lr_flags_load_balance;
1322 static int hf_ff_lr_get_info_rsp_lr_flags_diag;
1323 static int hf_ff_lr_get_info_rsp_lr_flags_multi_recv;
1324 static int hf_ff_lr_get_info_rsp_lr_flags_cross_cable;
1325 static int hf_ff_lr_get_info_rsp_lr_flags_multi_trans;
1326 static int hf_ff_lr_get_info_rsp_lr_flags;
1328 static int hf_ff_lr_get_info_err;
1329 static int hf_ff_lr_get_info_err_err_class;
1330 static int hf_ff_lr_get_info_err_err_code;
1331 static int hf_ff_lr_get_info_err_additional_code;
1332 static int hf_ff_lr_get_info_err_additional_desc;
1334 static int ett_ff_lr_get_info_req;
1335 static int ett_ff_lr_get_info_rsp;
1336 static int ett_ff_lr_get_info_rsp_lr_flags;
1337 static int ett_ff_lr_get_info_err;
1342 * 6.5.4.2. LAN Redundancy Put Information (Confirmed Service Id = 2)
1344 static int hf_ff_lr_put_info;
1346 static int hf_ff_lr_put_info_req;
1347 static int hf_ff_lr_put_info_req_lr_attrs_ver;
1348 static int hf_ff_lr_put_info_req_lr_max_msg_num_diff;
1349 static int hf_ff_lr_put_info_req_reserved;
1350 static int hf_ff_lr_put_info_req_diagnostic_msg_intvl;
1351 static int hf_ff_lr_put_info_req_aging_time;
1352 static int hf_ff_lr_put_info_req_diagnostic_msg_if_a_send_addr;
1353 static int hf_ff_lr_put_info_req_diagnostic_msg_if_a_recv_addr;
1354 static int hf_ff_lr_put_info_req_diagnostic_msg_if_b_send_addr;
1355 static int hf_ff_lr_put_info_req_diagnostic_msg_if_b_recv_addr;
1356 static int hf_ff_lr_put_info_req_lr_flags_reserved;
1357 static int hf_ff_lr_put_info_req_lr_flags_load_balance;
1358 static int hf_ff_lr_put_info_req_lr_flags_diag;
1359 static int hf_ff_lr_put_info_req_lr_flags_multi_recv;
1360 static int hf_ff_lr_put_info_req_lr_flags_cross_cable;
1361 static int hf_ff_lr_put_info_req_lr_flags_multi_trans;
1362 static int hf_ff_lr_put_info_req_lr_flags;
1364 static int hf_ff_lr_put_info_rsp;
1365 static int hf_ff_lr_put_info_rsp_lr_attrs_ver;
1366 static int hf_ff_lr_put_info_rsp_lr_max_msg_num_diff;
1367 static int hf_ff_lr_put_info_rsp_reserved;
1368 static int hf_ff_lr_put_info_rsp_diagnostic_msg_intvl;
1369 static int hf_ff_lr_put_info_rsp_aging_time;
1370 static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_send_addr;
1371 static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_recv_addr;
1372 static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_send_addr;
1373 static int hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_recv_addr;
1374 static int hf_ff_lr_put_info_rsp_lr_flags_reserved;
1375 static int hf_ff_lr_put_info_rsp_lr_flags_load_balance;
1376 static int hf_ff_lr_put_info_rsp_lr_flags_diag;
1377 static int hf_ff_lr_put_info_rsp_lr_flags_multi_recv;
1378 static int hf_ff_lr_put_info_rsp_lr_flags_cross_cable;
1379 static int hf_ff_lr_put_info_rsp_lr_flags_multi_trans;
1380 static int hf_ff_lr_put_info_rsp_lr_flags;
1382 static int hf_ff_lr_put_info_err;
1383 static int hf_ff_lr_put_info_err_err_class;
1384 static int hf_ff_lr_put_info_err_err_code;
1385 static int hf_ff_lr_put_info_err_additional_code;
1386 static int hf_ff_lr_put_info_err_additional_desc;
1388 static int ett_ff_lr_put_info_req;
1389 static int ett_ff_lr_put_info_req_lr_flags;
1390 static int ett_ff_lr_put_info_rsp;
1391 static int ett_ff_lr_put_info_rsp_lr_flags;
1392 static int ett_ff_lr_put_info_err;
1397 * 6.5.4.3. LAN Redundancy Get Statistics (Confirmed Service Id = 3)
1399 static int hf_ff_lr_get_statistics;
1401 static int hf_ff_lr_get_statistics_req;
1403 static int hf_ff_lr_get_statistics_rsp;
1404 static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_a;
1405 static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_a;
1406 static int hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_a;
1407 static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_b;
1408 static int hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_b;
1409 static int hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_b;
1410 static int hf_ff_lr_get_statistics_rsp_num_x_cable_stat;
1411 static int hf_ff_lr_get_statistics_rsp_x_cable_stat;
1413 static int hf_ff_lr_get_statistics_err;
1414 static int hf_ff_lr_get_statistics_err_err_class;
1415 static int hf_ff_lr_get_statistics_err_err_code;
1416 static int hf_ff_lr_get_statistics_err_additional_code;
1417 static int hf_ff_lr_get_statistics_err_additional_desc;
1419 static int ett_ff_lr_get_statistics_req;
1420 static int ett_ff_lr_get_statistics_rsp;
1421 static int ett_ff_lr_get_statistics_rsp_list_of_x_cable_stat;
1422 static int ett_ff_lr_get_statistics_err;
1427 * 6.5.4.4. Diagnostic Message (Unconfirmed Service Id = 1)
1429 static int hf_ff_lr_diagnostic_msg;
1431 static int hf_ff_lr_diagnostic_msg_req;
1432 static int hf_ff_lr_diagnostic_msg_req_dev_idx;
1433 static int hf_ff_lr_diagnostic_msg_req_num_of_network_ifs;
1434 static int hf_ff_lr_diagnostic_msg_req_transmission_if;
1435 static int hf_ff_lr_diagnostic_msg_req_diagnostic_msg_intvl;
1436 static int hf_ff_lr_diagnostic_msg_req_pd_tag;
1437 static int hf_ff_lr_diagnostic_msg_req_reserved;
1438 static int hf_ff_lr_diagnostic_msg_req_num_of_if_statuses;
1439 static int hf_ff_lr_diagnostic_msg_req_if_a_to_a_status;
1440 static int hf_ff_lr_diagnostic_msg_req_if_b_to_a_status;
1441 static int hf_ff_lr_diagnostic_msg_req_if_a_to_b_status;
1442 static int hf_ff_lr_diagnostic_msg_req_if_b_to_b_status;
1443 static int hf_ff_lr_diagnostic_msg_req_dup_detection_state_reserved;
1444 static int hf_ff_lr_diagnostic_msg_req_dup_detection_state_pd_tag;
1445 static int hf_ff_lr_diagnostic_msg_req_dup_detection_state_device;
1446 static int hf_ff_lr_diagnostic_msg_req_dup_detection_state;
1448 static int ett_ff_lr_diagnostic_msg_req;
1449 static int ett_ff_lr_diagnostic_msg_req_dup_detection_stat;
1450 static int ett_ff_lr_diagnostic_msg_req_a_to_a_status;
1451 static int ett_ff_lr_diagnostic_msg_req_b_to_a_status;
1452 static int ett_ff_lr_diagnostic_msg_req_a_to_b_status;
1453 static int ett_ff_lr_diagnostic_msg_req_b_to_b_status;
1457 #if 0
1458 static const value_string names_pad_len[] = {
1459 { 0x00, "No padding" },
1460 { OPTION_PAD_4BYTE, "pad to 4 byte boundary" },
1461 { OPTION_PAD_8BYTE, "pad to 8 byte boundary" },
1462 { 0, NULL }
1464 #endif
1467 static const value_string names_proto[] = {
1468 { 0x00, "Unused"},
1469 { 0x01, "FDA Session Management" },
1470 { 0x02, "SM" },
1471 { 0x03, "FMS" },
1472 { 0x04, "LAN Redundancy" },
1473 { 0, NULL }
1478 static const value_string names_type[] = {
1479 { TYPE_REQUEST, "Request Message" },
1480 { TYPE_RESPONSE, "Response Message" },
1481 { TYPE_ERROR, "Error Message" },
1482 { 0, NULL }
1487 static const value_string names_nma_conf_use[] = {
1488 { 0, "NMA Configuration Not Permitted" },
1489 { 1, "NMA Configuration Permitted" },
1490 { 0, NULL }
1495 static const value_string names_query_type[] = {
1496 { 0, "PD Tag query for primary device" },
1497 { 1, "VFD tag query" },
1498 { 2, "Function-Block tag query" },
1499 { 3, "Element Id query" },
1500 { 4, "PD Tag/VFD Reference query" },
1501 { 5, "Device Index query" },
1502 { 6, "PD Tag query for secondary or member of redundant set" },
1503 { 0, NULL }
1508 static const value_string names_smk_state[] = {
1509 /* Bits 2-8 */
1510 { 0x01, "NO_TAG" }, /* 0000 0010 */
1511 { 0x02, "OPERATIONAL" }, /* 0000 0100 */
1512 { 0, NULL }
1517 static const value_string names_dev_type[] = {
1518 { 0x00, "Type D-1 Device" }, /* 0000 0000 */
1519 { 0x01, "Type D-2 Device" }, /* 0000 0001 */
1520 { 0x02, "Type D-3 Device" }, /* 0000 0010 */
1521 { 0x03, "Type D-3 and Type D-2 Device" }, /* 0000 0011 */
1522 { 0x04, "Not used" }, /* 0000 0100 */
1523 { 0x05, "Type D-2 and Type D-1 Device" }, /* 0000 0101 */
1524 { 0x06, "Type D-3 and Type D-1 Device" }, /* 0000 0110 */
1525 { 0x07, "Type D-3 and D-2 and Type D-1 Device" }, /* 0000 0111 */
1526 { 0, NULL }
1531 static const value_string names_dev_redundancy_role[] = {
1532 /* Bits 3 & 4*/
1533 { 0x00, "Non-redundant" }, /* 0000 0000 */
1534 { 0x01, "Primary" }, /* 0000 0100 */
1535 { 0x02, "Secondary" }, /* 0000 1000 */
1536 { 0, NULL }
1541 static const value_string names_assigned_redundant_dev_type[] = {
1542 { 0x00, "Non-redundant" }, /* 0000 0000 */
1543 { 0x01, "Type D-2 Device" }, /* 0000 0001 */
1544 { 0x02, "Type D-3 Device" }, /* 0000 0010 */
1545 { 0, NULL }
1550 static const value_string names_type_d2_dev_redundancy_role[] = {
1551 /* Bits 3 & 4*/
1552 { 0x00, "Non-redundant" }, /* 0000 0000 */
1553 { 0x01, "Type D-2 Device Primary" }, /* 0000 0100 */
1554 { 0x02, "Type D-2 Device Secondary" }, /* 0000 1000 */
1555 { 0, NULL }
1560 static const value_string names_conn_opt[] = {
1561 { 1, "VCR Selector" },
1562 { 2, "NMA Access" },
1563 { 3, "FBAP Access" },
1564 { 0, NULL }
1569 static const value_string names_fda_unconfirmed[] = {
1570 { 0, NULL }
1575 static const value_string names_fda_confirmed[] = {
1576 { FDA_OPEN_SESSION, "FDA Open Session" },
1577 { FDA_IDLE, "FDA Idle" },
1578 { 0, NULL }
1583 static const value_string names_sm_unconfirmed[] = {
1584 { HSE_SM_FIND_TAG_QUERY, "SM Find Tag Query" },
1585 { HSE_SM_FIND_TAG_REPLY, "SM Find Tag Reply" },
1586 { HSE_SM_DEVICE_ANNUNCIATION, "SM Device Annunciation" },
1587 { 0, NULL }
1592 static const value_string names_sm_confirmed[] = {
1593 { HSE_SM_IDENTIFY, "SM Identify" },
1594 { HSE_SM_CLEAR_ADDRESS, "SM Clear Address" },
1595 { HSE_SM_SET_ASSIGNMENT, "SM Set Assignment Info" },
1596 { HSE_SM_CLEAR_ASSIGNMENT, "SM Clear Assignment Info" },
1597 { 0, NULL }
1602 static const value_string names_fms_unconfirmed[] = {
1603 { HSE_FMS_INFORMATION_REPORT, "FMS Information Report" },
1604 { HSE_FMS_UNSOLICITED_STATUS, "FMS Unsolicited Status" },
1605 { HSE_FMS_EVENT_NOTIFICATION, "FMS Event Notification" },
1606 { HSE_FMS_INFORMATION_REPORT_WITH_SUBINDEX,
1607 "FMS Information Report with Subindex" },
1608 { HSE_FMS_INFORMATION_REPORT_ON_CHANGE,
1609 "FMS Information Report On Change" },
1610 { HSE_FMS_INFORMATION_REPORT_ON_CHANGE_WITH_SUBINDEX,
1611 "FMS Information Report On Change with Subindex" },
1612 { HSE_FMS_ABORT, "FMS Abort" },
1613 { 0, NULL }
1618 static const value_string names_fms_confirmed[] = {
1619 { HSE_FMS_STATUS, "FMS Status" },
1620 { HSE_FMS_IDENTIFY, "FMS Identify" },
1621 { HSE_FMS_READ, "FMS Read" },
1622 { HSE_FMS_WRITE, "FMS Write" },
1623 { HSE_FMS_GET_OD, "FMS Get OD" },
1624 { HSE_FMS_DEFINE_VARIABLE_LIST, "FMS Define Variable List" },
1625 { HSE_FMS_DELETE_VARIABLE_LIST, "FMS Delete Variable List" },
1626 { HSE_FMS_INITIATE_DOWNLOAD_SEQUENCE, "FMS Initiate Download Sequence" },
1627 { HSE_FMS_DOWNLOAD_SEGMENT, "FMS Download Segment" },
1628 { HSE_FMS_TERMINATE_DOWNLOAD_SEQUENCE, "FMS Terminate Download Sequence" },
1629 { HSE_FMS_INITIATE_UPLOAD_SEQUENCE, "FMS Initiate Upload Sequence" },
1630 { HSE_FMS_UPLOAD_SEGMENT, "FMS Upload Segment" },
1631 { HSE_FMS_TERMINATE_UPLOAD_SEQUENCE, "FMS Terminate Upload Sequence" },
1632 { HSE_FMS_REQUEST_DOMAIN_DOWNLOAD, "FMS Request Domain Download" },
1633 { HSE_FMS_REQUEST_DOMAIN_UPLOAD, "FMS Request Domain Upload" },
1634 { HSE_FMS_CREATE_PROGRAM_INVOCATION, "FMS Create Program Invocation" },
1635 { HSE_FMS_DELETE_PROGRAM_INVOCATION, "FMS Delete Program Invocation" },
1636 { HSE_FMS_START, "FMS Start" },
1637 { HSE_FMS_STOP, "FMS Stop" },
1638 { HSE_FMS_RESUME, "FMS Resume" },
1639 { HSE_FMS_RESET, "FMS Reset" },
1640 { HSE_FMS_KILL, "FMS Kill" },
1641 { HSE_FMS_ALTER_EVENT_CONDITION_MONITORING,
1642 "FMS Alter Event Condition Monitoring" },
1643 { HSE_FMS_ACKNOWLEDGE_EVENT_NOTIFICATION,
1644 "FMS Acknowledge Event Notification" },
1645 { HSE_FMS_INITIATE_PUT_OD, "FMS Initiate Put OD" },
1646 { HSE_FMS_PUT_OD, "FMS Put OD" },
1647 { HSE_FMS_TERMINATE_PUT_OD, "FMS Terminate Put OD" },
1648 { HSE_FMS_GENERIC_INITIATE_DOWNLOAD_SEQUENCE,
1649 "FMS Generic Initiate Download Sequence" },
1650 { HSE_FMS_GENERIC_DOWNLOAD_SEGMENT, "FMS Generic Download Segment" },
1651 { HSE_FMS_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE,
1652 "FMS Generic Terminate Download Sequence" },
1653 { HSE_FMS_READ_WITH_SUBINDEX, "FMS Read with Subindex" },
1654 { HSE_FMS_WRITE_WITH_SUBINDEX, "FMS Write with Subindex" },
1655 { HSE_FMS_INITIATE, "FMS Initiate" },
1656 { 0, NULL }
1658 static value_string_ext names_fms_confirmed_ext = VALUE_STRING_EXT_INIT(names_fms_confirmed);
1661 static const value_string names_lan_unconfirmed[] = {
1662 { LAN_DIAG, "Diagnostic Message" },
1663 { 0, NULL }
1668 static const value_string names_lan_confirmed[] = {
1669 { LAN_GET_INFO, "LAN Redundancy Get Information" },
1670 { LAN_PUT_INFO, "LAN Redundancy Put Information" },
1671 { LAN_GET_STATISTICS, "LAN Redundancy Get Statistics" },
1672 { 0, NULL }
1677 static const value_string names_transmission_interface[] = {
1678 { 0, "Interface A" },
1679 { 1, "Interface B" },
1680 { 0, NULL }
1685 static const value_string names_err_class[] = {
1686 { 1, "vfd state" },
1687 { 2, "application reference" },
1688 { 3, "definition" },
1689 { 4, "resource" },
1690 { 5, "service" },
1691 { 6, "access" },
1692 { 7, "od" },
1693 { 8, "other" },
1694 { 9, "reject" },
1695 { 10, "h1 sm reason code" },
1696 { 11, "fms initiate" },
1697 { 0, NULL }
1699 static value_string_ext names_err_class_ext = VALUE_STRING_EXT_INIT(names_err_class);
1702 static const value_string names_err_code_vfd_state[] = {
1703 { 0, "other" },
1704 { 0, NULL }
1709 static const value_string names_err_code_appl_ref[] = {
1710 { 0, "other" },
1711 { 1, "object undefined" },
1712 { 2, "object attributes inconsistent" },
1713 { 3, "name already exists" },
1714 { 0, NULL }
1719 static const value_string names_err_code_def[] = {
1720 { 0, "other" },
1721 { 1, "application unreachable" },
1722 { 0, NULL }
1727 static const value_string names_err_code_res[] = {
1728 { 0, "other" },
1729 { 1, "memory unavailable" },
1730 { 2, "max outstanding requests per session exceeded" },
1731 { 3, "max sessions exceeded" },
1732 { 4, "object creation failure" },
1733 { 0, NULL }
1738 static const value_string names_err_code_srv[] = {
1739 { 0, "other" },
1740 { 1, "object state conflict" },
1741 { 2, "pdu size" },
1742 { 3, "object constraint conflict" },
1743 { 4, "parameter inconsistent" },
1744 { 5, "illegal parameter" },
1745 { 6, "unsupported service" },
1746 { 7, "unsupported version" },
1747 { 8, "invalid options" },
1748 { 9, "unsupported protocol" },
1749 { 10, "reserved" },
1750 { 11, "key parameter mismatch" },
1751 { 12, "assignments already made" },
1752 { 13, "unsupported device redundancy state" },
1753 { 14, "response time-out" },
1754 { 15, "duplicate PD Tag detected" },
1755 { 0, NULL }
1757 static value_string_ext names_err_code_srv_ext = VALUE_STRING_EXT_INIT(names_err_code_srv);
1760 static const value_string names_err_code_access[] = {
1761 { 0, "other" },
1762 { 1, "object invalidated" },
1763 { 2, "hardware fault" },
1764 { 3, "object access denied" },
1765 { 4, "invalid address" },
1766 { 5, "object attribute inconsistent" },
1767 { 6, "object access unsupported" },
1768 { 7, "object non existent" },
1769 { 8, "type conflict" },
1770 { 9, "named access unsupported" },
1771 { 10, "access to element unsupported" },
1772 { 11, "config access already open" },
1773 { 12, "reserved" },
1774 { 13, "unrecognized FDA Address" },
1775 { 0, NULL }
1777 static value_string_ext names_err_code_access_ext = VALUE_STRING_EXT_INIT(names_err_code_access);
1781 static const value_string names_err_code_od[] = {
1782 { 0, "other" },
1783 { 1, "name length overflow" },
1784 { 2, "od overflow" },
1785 { 3, "od write protected" },
1786 { 4, "extension length overflow" },
1787 { 5, "od description length overflow" },
1788 { 6, "operational problem" },
1789 { 7, "hse to h1 format conversion not supported" },
1790 { 0, NULL }
1795 static const value_string names_err_code_other[] = {
1796 { 0, "other" },
1797 { 0, NULL }
1802 static const value_string names_err_code_reject[] = {
1803 { 5, "pdu size" },
1804 { 0, NULL }
1809 static const value_string names_err_code_h1_sm_reason_code[] = {
1810 { 0, "other" },
1811 { 1, "DLL Error - insufficient resources" },
1812 { 2, "DLL Error - sending queue full" },
1813 { 3, "DLL Error - time-out before transmission" },
1814 { 4, "DLL Error - reason unspecified" },
1815 { 5, "Device failed to respond to SET_PD_TAG" },
1816 { 6, "Device failed to respond to WHO_HAS_PD_TAG" },
1817 { 7, "Device failed to respond to SET_ADDR" },
1818 { 8, "Device failed to respond to IDENTIFY" },
1819 { 9, "Device failed to respond to ENABLE_SM_OP" },
1820 { 10, "Device failed to respond to CLEAR_ADDRESS" },
1821 { 11, "Multiple Response from WHO_HAS_PD_TAG" },
1822 { 12, "Non-Matching PD_TAG from WHO_HAS_PD_TAG" },
1823 { 13, "Non-Matching PD_TAG from IDENTIFY" },
1824 { 14, "Non-Matching DEV_ID from IDENTIFY" },
1825 { 15, "Remote Error Invalid State" },
1826 { 16, "Remote Error PD-Tag doesn't match" },
1827 { 17, "Remote Error Dev-ID doesn't match" },
1828 { 18, "Remote Error SMIB object write failed" },
1829 { 19, "Remote Error Starting SM Operational" },
1830 { 0, NULL }
1832 static value_string_ext names_err_code_h1_sm_reason_code_ext = VALUE_STRING_EXT_INIT(names_err_code_h1_sm_reason_code);
1835 static const value_string names_err_code_fms_init[] = {
1836 { 0, "other" },
1837 { 1, "max-fms-pdu-size-insufficient" },
1838 { 2, "feature-not-supported" },
1839 { 3, "version-od-incompatible" },
1840 { 4, "user-initiate-denied" },
1841 { 5, "password-error" },
1842 { 6, "profile-number-incompatible" },
1843 { 0, NULL }
1846 static const char *
1847 val_to_str_err_code(uint8_t errclass, uint8_t code)
1849 switch (errclass) {
1850 case 1:
1851 return (val_to_str_const(code, names_err_code_vfd_state, "Unknown"));
1853 case 2:
1854 return (val_to_str_const(code, names_err_code_appl_ref, "Unknown"));
1856 case 3:
1857 return (val_to_str_const(code, names_err_code_def, "Unknown"));
1859 case 4:
1860 return (val_to_str_const(code, names_err_code_res, "Unknown"));
1862 case 5:
1863 return (val_to_str_ext_const(code, &names_err_code_srv_ext, "Unknown"));
1865 case 6:
1866 return (val_to_str_ext_const(code, &names_err_code_access_ext, "Unknown"));
1868 case 7:
1869 return (val_to_str_const(code, names_err_code_od, "Unknown"));
1871 case 8:
1872 return (val_to_str_const(code, names_err_code_other, "Unknown"));
1874 case 9:
1875 return (val_to_str_const(code, names_err_code_reject, "Unknown"));
1877 case 10:
1878 return (val_to_str_ext_const(code,
1879 &names_err_code_h1_sm_reason_code_ext, "Unknown"));
1881 case 11:
1882 return (val_to_str_const(code, names_err_code_fms_init, "Unknown"));
1884 default:
1885 return ("Unknown");
1892 * 6.5.1.1. FDA Open Session (Confirmed Service Id = 1)
1893 * 6.5.1.1.1. Request Message Parameters
1895 static void
1896 dissect_ff_msg_fda_open_sess_req(tvbuff_t *tvb, int offset,
1897 uint32_t length, packet_info *pinfo, proto_tree *tree)
1899 proto_tree *sub_tree;
1901 col_set_str(pinfo->cinfo, COL_INFO, "FDA Open Session Request");
1903 if (!tree) {
1904 return;
1907 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
1908 ett_ff_fda_open_sess_req, NULL, "FDA Open Session Request");
1910 proto_tree_add_item(sub_tree,
1911 hf_ff_fda_open_sess_req_sess_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
1912 offset += 4;
1913 length -= 4;
1915 proto_tree_add_item(sub_tree,
1916 hf_ff_fda_open_sess_req_max_buf_siz, tvb, offset, 4, ENC_BIG_ENDIAN);
1917 offset += 4;
1918 length -= 4;
1920 proto_tree_add_item(sub_tree,
1921 hf_ff_fda_open_sess_req_max_msg_len, tvb, offset, 4, ENC_BIG_ENDIAN);
1922 offset += 4;
1923 length -= 4;
1925 proto_tree_add_item(sub_tree,
1926 hf_ff_fda_open_sess_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1927 offset += 1;
1928 length -= 1;
1930 proto_tree_add_item(sub_tree,
1931 hf_ff_fda_open_sess_req_nma_conf_use, tvb, offset, 1, ENC_BIG_ENDIAN);
1932 offset += 1;
1933 length -= 1;
1935 proto_tree_add_item(sub_tree,
1936 hf_ff_fda_open_sess_req_inactivity_close_time, tvb, offset, 2, ENC_BIG_ENDIAN);
1937 offset += 2;
1938 length -= 2;
1940 proto_tree_add_item(sub_tree,
1941 hf_ff_fda_open_sess_req_transmit_delay_time, tvb, offset, 4, ENC_BIG_ENDIAN);
1942 offset += 4;
1943 length -= 4;
1945 proto_tree_add_item(sub_tree,
1946 hf_ff_fda_open_sess_req_pd_tag, tvb, offset, 32, ENC_ASCII);
1947 offset += 32;
1948 length -= 32;
1950 if (length) {
1951 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
1958 * 6.5.1.1.2. Response Message Parameters
1960 static void
1961 dissect_ff_msg_fda_open_sess_rsp(tvbuff_t *tvb, int offset,
1962 uint32_t length, packet_info *pinfo, proto_tree *tree)
1964 proto_tree *sub_tree;
1966 col_set_str(pinfo->cinfo, COL_INFO, "FDA Open Session Response");
1968 if (!tree) {
1969 return;
1972 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
1973 ett_ff_fda_open_sess_rsp, NULL, "FDA Open Session Response");
1975 proto_tree_add_item(sub_tree,
1976 hf_ff_fda_open_sess_rsp_sess_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
1977 offset += 4;
1978 length -= 4;
1980 proto_tree_add_item(sub_tree,
1981 hf_ff_fda_open_sess_rsp_max_buf_siz, tvb, offset, 4, ENC_BIG_ENDIAN);
1982 offset += 4;
1983 length -= 4;
1985 proto_tree_add_item(sub_tree,
1986 hf_ff_fda_open_sess_rsp_max_msg_len, tvb, offset, 4, ENC_BIG_ENDIAN);
1987 offset += 4;
1988 length -= 4;
1990 proto_tree_add_item(sub_tree,
1991 hf_ff_fda_open_sess_rsp_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1992 offset += 1;
1993 length -= 1;
1995 proto_tree_add_item(sub_tree,
1996 hf_ff_fda_open_sess_rsp_nma_conf_use, tvb, offset, 1, ENC_BIG_ENDIAN);
1997 offset += 1;
1998 length -= 1;
2000 proto_tree_add_item(sub_tree,
2001 hf_ff_fda_open_sess_rsp_inactivity_close_time, tvb, offset, 2, ENC_BIG_ENDIAN);
2002 offset += 2;
2003 length -= 2;
2005 proto_tree_add_item(sub_tree,
2006 hf_ff_fda_open_sess_rsp_transmit_delay_time, tvb, offset, 4, ENC_BIG_ENDIAN);
2007 offset += 4;
2008 length -= 4;
2010 proto_tree_add_item(sub_tree,
2011 hf_ff_fda_open_sess_rsp_pd_tag, tvb, offset, 32, ENC_ASCII);
2012 offset += 32;
2013 length -= 32;
2015 if (length) {
2016 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2023 * 6.5.1.1.3. Error Message Parameters
2025 static void
2026 dissect_ff_msg_fda_open_sess_err(tvbuff_t *tvb, int offset,
2027 uint32_t length, packet_info *pinfo, proto_tree *tree)
2029 proto_tree *sub_tree;
2030 uint8_t ErrorClass;
2031 uint8_t ErrorCode;
2032 const char *error_code;
2034 col_set_str(pinfo->cinfo, COL_INFO, "FDA Open Session Error");
2036 if (!tree) {
2037 return;
2040 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2041 ett_ff_fda_open_sess_err, NULL, "FDA Open Session Error");
2043 ErrorClass = tvb_get_uint8(tvb, offset);
2044 proto_tree_add_item(sub_tree,
2045 hf_ff_fda_open_sess_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
2046 offset += 1;
2047 length -= 1;
2049 ErrorCode = tvb_get_uint8(tvb, offset);
2050 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
2051 proto_tree_add_uint_format_value(sub_tree, hf_ff_fda_open_sess_err_err_code,
2052 tvb, offset, 1, ErrorCode,
2053 "%s (%u)", error_code, ErrorCode);
2054 offset += 1;
2055 length -= 1;
2057 proto_tree_add_item(sub_tree,
2058 hf_ff_fda_open_sess_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2059 offset += 2;
2060 length -= 2;
2062 proto_tree_add_item(sub_tree,
2063 hf_ff_fda_open_sess_err_additional_desc, tvb, offset, 16, ENC_ASCII);
2064 offset += 16;
2065 length -= 16;
2067 if (length) {
2068 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2075 * 6.5.1.2. FDA Idle (Confirmed Service Id = 3)
2076 * 6.5.1.2.1. Request Message Parameters
2078 static void
2079 dissect_ff_msg_fda_idle_req(tvbuff_t *tvb, int offset,
2080 uint32_t length, packet_info *pinfo, proto_tree *tree)
2082 proto_tree *sub_tree;
2084 col_set_str(pinfo->cinfo, COL_INFO, "FDA Idle Request");
2086 if (!tree) {
2087 return;
2090 if (length) {
2091 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2092 ett_ff_fda_idle_req, NULL, "FDA Idle Request");
2094 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2101 * 6.5.1.2.2. Response Message Parameters
2103 static void
2104 dissect_ff_msg_fda_idle_rsp(tvbuff_t *tvb, int offset,
2105 uint32_t length, packet_info *pinfo, proto_tree *tree)
2107 proto_tree *sub_tree;
2109 col_set_str(pinfo->cinfo, COL_INFO, "FDA Idle Response");
2111 if (!tree) {
2112 return;
2115 if (length) {
2116 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2117 ett_ff_fda_idle_rsp, NULL, "FDA Idle Response");
2119 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2126 * 6.5.1.2.3. Error Message Parameters
2128 static void
2129 dissect_ff_msg_fda_idle_err(tvbuff_t *tvb, int offset,
2130 uint32_t length, packet_info *pinfo, proto_tree *tree)
2132 proto_tree *sub_tree;
2133 uint8_t ErrorClass;
2134 uint8_t ErrorCode;
2135 const char *error_code;
2137 col_set_str(pinfo->cinfo, COL_INFO, "FDA Idle Error");
2139 if (!tree) {
2140 return;
2143 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2144 ett_ff_fda_idle_err, NULL, "FDA Idle Error");
2146 ErrorClass = tvb_get_uint8(tvb, offset);
2147 proto_tree_add_item(sub_tree,
2148 hf_ff_fda_idle_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
2149 offset += 1;
2150 length -= 1;
2152 ErrorCode = tvb_get_uint8(tvb, offset);
2153 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
2154 proto_tree_add_uint_format_value(sub_tree, hf_ff_fda_idle_err_err_code,
2155 tvb, offset, 1, ErrorCode,
2156 "%s (%u)", error_code, ErrorCode);
2157 offset += 1;
2158 length -= 1;
2160 proto_tree_add_item(sub_tree,
2161 hf_ff_fda_idle_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2162 offset += 2;
2163 length -= 2;
2165 proto_tree_add_item(sub_tree,
2166 hf_ff_fda_idle_err_additional_desc, tvb, offset, 16, ENC_ASCII);
2167 offset += 16;
2168 length -= 16;
2170 if (length) {
2171 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2178 * 6.5.2.1. SM Find Tag Query (Unconfirmed Service Id = 1)
2179 * 6.5.2.1.1. Request Message Parameters
2181 static void
2182 dissect_ff_msg_sm_find_tag_query_req(tvbuff_t *tvb, int offset,
2183 uint32_t length, packet_info *pinfo, proto_tree *tree)
2185 proto_tree *sub_tree;
2187 col_set_str(pinfo->cinfo, COL_INFO, "SM Find Tag Query Request");
2189 if (!tree) {
2190 return;
2193 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2194 ett_ff_sm_find_tag_query_req, NULL, "SM Find Tag Query Request");
2196 proto_tree_add_item(sub_tree,
2197 hf_ff_sm_find_tag_query_req_query_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2198 offset += 1;
2199 length -= 1;
2201 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
2202 offset += 3;
2203 length -= 3;
2205 proto_tree_add_item(sub_tree,
2206 hf_ff_sm_find_tag_query_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
2207 offset += 4;
2208 length -= 4;
2210 proto_tree_add_item(sub_tree,
2211 hf_ff_sm_find_tag_query_req_tag, tvb, offset, 32, ENC_ASCII);
2212 offset += 32;
2213 length -= 32;
2215 proto_tree_add_item(sub_tree,
2216 hf_ff_sm_find_tag_query_req_vfd_tag, tvb, offset, 32, ENC_ASCII);
2217 offset += 32;
2218 length -= 32;
2220 if (length) {
2221 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2228 * 6.5.2.2. SM Find Tag Reply (Unconfirmed Service Id = 2)
2229 * 6.5.2.2.1. Request Message Parameters
2231 static void
2232 dissect_ff_msg_sm_find_tag_reply_req_dup_detection_state(tvbuff_t *tvb,
2233 int offset, proto_tree *tree)
2236 * Bits 3-8: Reserved, set to 0.
2237 * Bit 2: 1 = Duplicate PD Tag Detected
2238 * 0 = Duplicate PD Tag Not Detected
2239 * Bit 1: 1 = Duplicate Device Index Detected
2240 * 0 = Duplicate Device Index Not Detected
2242 static int * const dup_flags[] = {
2243 &hf_ff_sm_find_tag_reply_dup_reserved,
2244 &hf_ff_sm_find_tag_reply_dup_pd_tag,
2245 &hf_ff_sm_find_tag_reply_dup_device,
2246 NULL
2248 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_find_tag_reply_dup, ett_ff_sm_find_tag_reply_req_dup_detection_state, dup_flags, ENC_BIG_ENDIAN);
2253 static void
2254 dissect_ff_msg_sm_find_tag_reply_req_list_of_fda_addr_selectors(tvbuff_t *tvb,
2255 int offset, proto_tree *tree, uint16_t value)
2257 proto_tree *sub_tree;
2258 unsigned d;
2260 if (!tree) {
2261 return;
2264 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 2 * value,
2265 ett_ff_sm_find_tag_reply_req_list_of_fda_addr_selectors, NULL,
2266 "List of FDA Address Selectors (%u bytes)", 2 * value);
2268 for (d = 0; d < value; d++) {
2269 proto_tree_add_item(sub_tree,
2270 hf_ff_sm_find_tag_reply_req_fda_addr_selector,
2271 tvb, offset, 2, ENC_BIG_ENDIAN);
2273 offset += 2;
2279 static void
2280 dissect_ff_msg_sm_find_tag_reply_req(tvbuff_t *tvb, int offset,
2281 uint32_t length, packet_info *pinfo, proto_tree *tree)
2283 proto_tree *sub_tree;
2284 uint16_t NumOfFDAAddrSelectors;
2286 col_set_str(pinfo->cinfo, COL_INFO, "SM Find Tag Reply Request");
2288 if (!tree) {
2289 return;
2292 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2293 ett_ff_sm_find_tag_reply_req, NULL, "SM Find Tag Reply Request");
2295 proto_tree_add_item(sub_tree,
2296 hf_ff_sm_find_tag_reply_req_query_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2297 offset += 1;
2298 length -= 1;
2300 proto_tree_add_item(sub_tree,
2301 hf_ff_sm_find_tag_reply_req_h1_node_addr, tvb, offset, 1, ENC_BIG_ENDIAN);
2302 offset += 1;
2303 length -= 1;
2305 proto_tree_add_item(sub_tree,
2306 hf_ff_sm_find_tag_reply_req_fda_addr_link_id, tvb, offset, 2, ENC_BIG_ENDIAN);
2307 offset += 2;
2308 length -= 2;
2310 proto_tree_add_item(sub_tree,
2311 hf_ff_sm_find_tag_reply_req_vfd_ref, tvb, offset, 4, ENC_BIG_ENDIAN);
2312 offset += 4;
2313 length -= 4;
2315 proto_tree_add_item(sub_tree,
2316 hf_ff_sm_find_tag_reply_req_od_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
2317 offset += 4;
2318 length -= 4;
2320 proto_tree_add_item(sub_tree,
2321 hf_ff_sm_find_tag_reply_req_ip_addr, tvb, offset, 16, ENC_NA);
2322 offset += 16;
2323 length -= 16;
2325 proto_tree_add_item(sub_tree,
2326 hf_ff_sm_find_tag_reply_req_od_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
2327 offset += 4;
2328 length -= 4;
2330 proto_tree_add_item(sub_tree,
2331 hf_ff_sm_find_tag_reply_req_dev_id, tvb, offset, 32, ENC_ASCII);
2332 offset += 32;
2333 length -= 32;
2335 proto_tree_add_item(sub_tree,
2336 hf_ff_sm_find_tag_reply_req_pd_tag, tvb, offset, 32, ENC_ASCII);
2337 offset += 32;
2338 length -= 32;
2340 dissect_ff_msg_sm_find_tag_reply_req_dup_detection_state(tvb,
2341 offset, sub_tree);
2342 offset += 1;
2343 length -= 1;
2345 proto_tree_add_item(sub_tree,
2346 hf_ff_sm_find_tag_reply_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
2347 offset += 1;
2348 length -= 1;
2350 NumOfFDAAddrSelectors = tvb_get_ntohs(tvb, offset);
2351 proto_tree_add_item(sub_tree,
2352 hf_ff_sm_find_tag_reply_req_num_of_fda_addr_selectors,
2353 tvb, offset, 2, ENC_BIG_ENDIAN);
2354 offset += 2;
2355 length -= 2;
2357 if (NumOfFDAAddrSelectors) {
2358 dissect_ff_msg_sm_find_tag_reply_req_list_of_fda_addr_selectors(tvb,
2359 offset, sub_tree, NumOfFDAAddrSelectors);
2360 offset += 2 * NumOfFDAAddrSelectors;
2361 length -= 2 * NumOfFDAAddrSelectors;
2364 if (length) {
2365 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2372 * 6.5.2.3. SM Identify (Confirmed Service Id = 3)
2373 * 6.5.2.3.1. Request Message Parameters
2375 static void
2376 dissect_ff_msg_sm_id_req(tvbuff_t *tvb, int offset,
2377 uint32_t length, packet_info *pinfo, proto_tree *tree)
2379 proto_tree *sub_tree;
2381 col_set_str(pinfo->cinfo, COL_INFO, "SM Identify Request");
2383 if (!tree) {
2384 return;
2387 if (length) {
2388 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2389 ett_ff_sm_id_req, NULL, "SM Identify Request");
2391 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2398 * 6.5.2.3.2. Response Message Parameters
2400 static void
2401 dissect_ff_msg_sm_id_rsp_h1_node_addr(tvbuff_t *tvb,
2402 int offset, proto_tree *tree)
2404 proto_tree *sub_tree;
2406 if (!tree) {
2407 return;
2410 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 2,
2411 ett_ff_sm_id_rsp_h1_node_addr, NULL, "H1 Node Address Version Number (%u bytes)", 2);
2413 proto_tree_add_item(sub_tree,
2414 hf_ff_sm_id_rsp_h1_node_addr_ver_num_h1_node_addr,
2415 tvb, offset, 1, ENC_BIG_ENDIAN);
2416 offset += 1;
2418 proto_tree_add_item(sub_tree,
2419 hf_ff_sm_id_rsp_h1_node_addr_ver_num_ver_num, tvb, offset, 1, ENC_BIG_ENDIAN);
2420 /*offset += 1;*/
2425 static void
2426 dissect_ff_msg_sm_id_rsp_entries_node_addr(tvbuff_t *tvb,
2427 int offset, proto_tree *tree, uint32_t value)
2429 proto_tree *sub_tree;
2430 unsigned d;
2432 if (!tree) {
2433 return;
2436 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
2437 ett_ff_sm_id_rsp_entries_node_addr, NULL, "Version Number List (%u bytes)", 4 * value);
2439 for (d = 0; d < value * 2; d++) {
2440 dissect_ff_msg_sm_id_rsp_h1_node_addr(tvb, offset, sub_tree);
2441 offset += 2;
2447 static void
2448 dissect_ff_msg_sm_id_rsp_h1_live_list(tvbuff_t *tvb,
2449 int offset, proto_tree *tree)
2451 proto_tree *sub_tree;
2453 if (!tree) {
2454 return;
2457 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
2458 ett_ff_sm_id_rsp_h1_live_list, NULL, "H1 Live-list Version Number (%u bytes)", 4);
2460 proto_tree_add_item(sub_tree,
2461 hf_ff_sm_id_rsp_h1_live_list_h1_link_id, tvb, offset, 2, ENC_BIG_ENDIAN);
2462 offset += 2;
2464 proto_tree_add_item(sub_tree,
2465 hf_ff_sm_id_rsp_h1_live_list_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
2466 offset += 1;
2468 proto_tree_add_item(sub_tree,
2469 hf_ff_sm_id_rsp_h1_live_list_ver_num, tvb, offset, 1, ENC_BIG_ENDIAN);
2470 /*offset += 1;*/
2475 static void
2476 dissect_ff_msg_sm_id_rsp_entries_link_id(tvbuff_t *tvb,
2477 int offset, proto_tree *tree, uint32_t value)
2479 proto_tree *sub_tree;
2480 unsigned d;
2482 if (!tree) {
2483 return;
2486 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
2487 ett_ff_sm_id_rsp_entries_h1_live_list, NULL, "Version Number List (%u bytes)", 4 * value);
2489 for (d = 0; d < value; d++) {
2490 dissect_ff_msg_sm_id_rsp_h1_live_list(tvb, offset, sub_tree);
2491 offset += 4;
2497 static void
2498 dissect_ff_msg_sm_id_rsp_smk_state(tvbuff_t *tvb,
2499 int offset, proto_tree *tree)
2502 * Bits 2-8:
2503 * 0 = Reserved
2504 * 1 = NO_TAG
2505 * 2 = OPERATIONAL
2506 * 3 127 = Reserved
2507 * Bit 1:
2508 * 0 = Not Synchronized with SNTP Time Server
2509 * 1 = Synchronized with SNTP Time Server
2511 static int * const state_flags[] = {
2512 &hf_ff_sm_id_rsp_smk_state_name,
2513 &hf_ff_sm_id_rsp_smk_state_sync,
2514 NULL
2516 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_id_rsp_smk_state, ett_ff_sm_id_rsp_smk_state, state_flags, ENC_BIG_ENDIAN);
2521 static void
2522 dissect_ff_msg_sm_id_rsp_dev_type(tvbuff_t *tvb,
2523 int offset, proto_tree *tree)
2526 * Bit 8 = Linking Device
2527 * Bit 7 = I/O Gateway
2528 * Bit 6 = HSE Field Device
2529 * Bit 5 = H1 Device
2530 * Bit 4 = Reserved
2531 * Bits 1 - 3 Redundant Device Type Capability*
2532 * 0 = Type D-1 Device
2533 * 1 = Type D-2 Device
2534 * 2 = Type D-3 Device
2535 * 3 = Type D-3 and Type D-2 Device
2536 * 4 = Not used
2537 * 5 = Type D-2 and Type D-1 Device
2538 * 6 = Type D-3 and Type D-1 Device
2539 * 7 = Type D-3 and D-2 and Type D-1 Device
2541 static int * const device_flags[] = {
2542 &hf_ff_sm_id_rsp_dev_type_link,
2543 &hf_ff_sm_id_rsp_dev_type_iogateway,
2544 &hf_ff_sm_id_rsp_dev_type_hse,
2545 &hf_ff_sm_id_rsp_dev_type_h1,
2546 &hf_ff_sm_id_rsp_dev_type_reserved,
2547 &hf_ff_sm_id_rsp_dev_type_redundant_caps,
2548 NULL
2551 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_id_rsp_dev_type, ett_ff_sm_id_rsp_dev_type, device_flags, ENC_BIG_ENDIAN);
2556 static void
2557 dissect_ff_msg_sm_id_rsp_dev_redundancy_state(tvbuff_t *tvb,
2558 int offset, proto_tree *tree)
2561 * Bits 5-8 = Reserved, set to 0
2562 * Bits 3 & 4 Device Redundancy Role
2563 * 0 = Reserved
2564 * 1 = Primary
2565 * 2 = Secondary
2566 * Bits 1 & 2 Assigned Redundant Device Type*
2567 * 0 = Type D-1 Device
2568 * 1 = Type D-2 Device
2569 * 2 = Type D-3 Device
2571 static int * const state_flags[] = {
2572 &hf_ff_sm_id_rsp_dev_redundancy_state_reserved,
2573 &hf_ff_sm_id_rsp_dev_redundancy_state_role,
2574 &hf_ff_sm_id_rsp_dev_redundancy_state_type,
2575 NULL
2578 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_id_rsp_dev_redundancy_state, ett_ff_sm_id_rsp_dev_redundancy_state, state_flags, ENC_BIG_ENDIAN);
2583 static void
2584 dissect_ff_msg_sm_id_rsp_dup_detection_state(tvbuff_t *tvb,
2585 int offset, proto_tree *tree)
2588 * Bits 3-8: Reserved, set to 0.
2589 * Bit 2: 1 = Duplicate PD Tag Detected
2590 * 0 = Duplicate PD Tag Not Detected
2591 * Bit 1: 1 = Duplicate Device Index Detected
2592 * 0 = Duplicate Device Index Not Detected
2594 static int * const dup_flags[] = {
2595 &hf_ff_sm_id_rsp_dup_detection_state_reserved,
2596 &hf_ff_sm_id_rsp_dup_detection_state_pd_tag,
2597 &hf_ff_sm_id_rsp_dup_detection_state_device,
2598 NULL
2601 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_id_rsp_dup_detection_state, ett_ff_sm_id_rsp_dup_detection_state, dup_flags, ENC_BIG_ENDIAN);
2606 static void
2607 dissect_ff_msg_sm_id_rsp(tvbuff_t *tvb, int offset,
2608 uint32_t length, packet_info *pinfo, proto_tree *tree, uint32_t FDAAddress)
2610 proto_tree *sub_tree;
2612 uint32_t NumOfEntriesInVerNumList;
2614 col_set_str(pinfo->cinfo, COL_INFO, "SM Identify Response");
2616 if (!tree) {
2617 return;
2620 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_sm_id_rsp, NULL, "SM Identify Response");
2622 dissect_ff_msg_sm_id_rsp_smk_state(tvb, offset, sub_tree);
2623 offset += 1;
2624 length -= 1;
2626 dissect_ff_msg_sm_id_rsp_dev_type(tvb, offset, sub_tree);
2627 offset += 1;
2628 length -= 1;
2630 dissect_ff_msg_sm_id_rsp_dev_redundancy_state(tvb,
2631 offset, sub_tree);
2632 offset += 1;
2633 length -= 1;
2635 dissect_ff_msg_sm_id_rsp_dup_detection_state(tvb,
2636 offset, sub_tree);
2637 offset += 1;
2638 length -= 1;
2640 proto_tree_add_item(sub_tree,
2641 hf_ff_sm_id_rsp_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
2642 offset += 2;
2643 length -= 2;
2645 proto_tree_add_item(sub_tree,
2646 hf_ff_sm_id_rsp_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
2647 offset += 2;
2648 length -= 2;
2650 proto_tree_add_item(sub_tree,
2651 hf_ff_sm_id_rsp_operational_ip_addr, tvb, offset, 16, ENC_NA);
2652 offset += 16;
2653 length -= 16;
2655 proto_tree_add_item(sub_tree,
2656 hf_ff_sm_id_rsp_dev_id, tvb, offset, 32, ENC_ASCII);
2657 offset += 32;
2658 length -= 32;
2660 proto_tree_add_item(sub_tree,
2661 hf_ff_sm_id_rsp_pd_tag, tvb, offset, 32, ENC_ASCII);
2662 offset += 32;
2663 length -= 32;
2665 proto_tree_add_item(sub_tree,
2666 hf_ff_sm_id_rsp_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
2667 offset += 4;
2668 length -= 4;
2670 proto_tree_add_item(sub_tree,
2671 hf_ff_sm_id_rsp_lr_port, tvb, offset, 2, ENC_BIG_ENDIAN);
2672 offset += 2;
2673 length -= 2;
2675 proto_tree_add_item(sub_tree,
2676 hf_ff_sm_id_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
2677 offset += 2;
2678 length -= 2;
2680 proto_tree_add_item(sub_tree,
2681 hf_ff_sm_id_rsp_annunc_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
2682 offset += 4;
2683 length -= 4;
2685 proto_tree_add_item(sub_tree,
2686 hf_ff_sm_id_rsp_hse_dev_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
2687 offset += 4;
2688 length -= 4;
2690 NumOfEntriesInVerNumList = tvb_get_ntohl(tvb, offset);
2691 proto_tree_add_item(sub_tree,
2692 hf_ff_sm_id_rsp_num_of_entries, tvb, offset, 4, ENC_BIG_ENDIAN);
2693 offset += 4;
2694 length -= 4;
2696 if (NumOfEntriesInVerNumList) {
2697 uint16_t LinkId;
2698 /* 11111111 11111111 00000000 00000000 */
2699 LinkId = (uint16_t)(FDAAddress >> 16);
2700 if (LinkId) {
2701 dissect_ff_msg_sm_id_rsp_entries_node_addr(tvb,
2702 offset, sub_tree, NumOfEntriesInVerNumList);
2703 } else {
2704 dissect_ff_msg_sm_id_rsp_entries_link_id(tvb,
2705 offset, sub_tree, NumOfEntriesInVerNumList);
2708 offset += 4 * NumOfEntriesInVerNumList;
2709 length -= 4 * NumOfEntriesInVerNumList;
2712 if (length) {
2713 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2720 * 6.5.2.3.3. Error Message Parameters
2722 static void
2723 dissect_ff_msg_sm_id_err(tvbuff_t *tvb, int offset,
2724 uint32_t length, packet_info *pinfo, proto_tree *tree)
2726 proto_tree *sub_tree;
2727 uint8_t ErrorClass;
2728 uint8_t ErrorCode;
2729 const char *error_code;
2731 col_set_str(pinfo->cinfo, COL_INFO, "SM Identify Error");
2733 if (!tree) {
2734 return;
2737 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_sm_id_err, NULL, "SM Identify Error");
2739 ErrorClass = tvb_get_uint8(tvb, offset);
2740 proto_tree_add_item(sub_tree,
2741 hf_ff_sm_id_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
2742 offset += 1;
2743 length -= 1;
2745 ErrorCode = tvb_get_uint8(tvb, offset);
2746 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
2747 proto_tree_add_uint_format_value(sub_tree, hf_ff_sm_id_err_err_code,
2748 tvb, offset, 1, ErrorCode,
2749 "%s (%u)", error_code, ErrorCode);
2750 offset += 1;
2751 length -= 1;
2753 proto_tree_add_item(sub_tree,
2754 hf_ff_sm_id_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2755 offset += 2;
2756 length -= 2;
2758 proto_tree_add_item(sub_tree,
2759 hf_ff_sm_id_err_additional_desc, tvb, offset, 16, ENC_ASCII);
2760 offset += 16;
2761 length -= 16;
2763 if (length) {
2764 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2771 * 6.5.2.4. SM Clear Address (Confirmed Service Id = 12)
2772 * 6.5.2.4.1. Request Message Parameters
2774 static void
2775 dissect_ff_msg_sm_clear_addr_req(tvbuff_t *tvb, int offset,
2776 uint32_t length, packet_info *pinfo, proto_tree *tree)
2778 proto_tree *sub_tree;
2780 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Address Request");
2782 if (!tree) {
2783 return;
2786 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2787 ett_ff_sm_id_err, NULL, "SM Clear Address Request");
2789 proto_tree_add_item(sub_tree,
2790 hf_ff_sm_clear_addr_req_dev_id, tvb, offset, 32, ENC_ASCII);
2791 offset += 32;
2792 length -= 32;
2794 proto_tree_add_item(sub_tree,
2795 hf_ff_sm_clear_addr_req_pd_tag, tvb, offset, 32, ENC_ASCII);
2796 offset += 32;
2797 length -= 32;
2799 proto_tree_add_item(sub_tree,
2800 hf_ff_sm_clear_addr_req_interface_to_clear, tvb, offset, 1, ENC_BIG_ENDIAN);
2801 offset += 1;
2802 length -= 1;
2804 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
2805 offset += 3;
2806 length -= 3;
2808 if (length) {
2809 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2816 * 6.5.2.4.2. Response Message Parameters
2818 static void
2819 dissect_ff_msg_sm_clear_addr_rsp(tvbuff_t *tvb, int offset,
2820 uint32_t length, packet_info *pinfo, proto_tree *tree)
2822 proto_tree *sub_tree;
2824 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Address Response");
2826 if (!tree) {
2827 return;
2830 if (length) {
2831 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2832 ett_ff_sm_clear_addr_rsp, NULL, "SM Clear Address Response");
2834 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2841 * 6.5.2.4.3. Error Message Parameters
2843 static void
2844 dissect_ff_msg_sm_clear_addr_err(tvbuff_t *tvb, int offset,
2845 uint32_t length, packet_info *pinfo, proto_tree *tree)
2847 proto_tree *sub_tree;
2848 uint8_t ErrorClass;
2849 uint8_t ErrorCode;
2850 const char *error_code;
2852 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Address Error");
2854 if (!tree) {
2855 return;
2858 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2859 ett_ff_sm_clear_addr_err, NULL, "SM Clear Address Error");
2861 ErrorClass = tvb_get_uint8(tvb, offset);
2862 proto_tree_add_item(sub_tree,
2863 hf_ff_sm_clear_addr_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
2864 offset += 1;
2865 length -= 1;
2867 ErrorCode = tvb_get_uint8(tvb, offset);
2868 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
2869 proto_tree_add_uint_format_value(sub_tree, hf_ff_sm_clear_addr_err_err_code,
2870 tvb, offset, 1, ErrorCode,
2871 "%s (%u)", error_code, ErrorCode);
2872 offset += 1;
2873 length -= 1;
2875 proto_tree_add_item(sub_tree,
2876 hf_ff_sm_clear_addr_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
2877 offset += 2;
2878 length -= 2;
2880 proto_tree_add_item(sub_tree,
2881 hf_ff_sm_clear_addr_err_additional_desc, tvb, offset, 16, ENC_ASCII);
2882 offset += 16;
2883 length -= 16;
2885 if (length) {
2886 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
2893 * 6.5.2.5. SM Set Assignment Info (Confirmed Service Id = 14)
2894 * 6.5.2.5.1. Request Message Parameters
2896 static void
2897 dissect_ff_msg_sm_set_assign_info_req_dev_redundancy_state(tvbuff_t *tvb,
2898 int offset, proto_tree *tree)
2901 * Bits 5-8 = Reserved, set to 0
2902 * Bits 3 & 4 Type D-2 Device Redundancy Role
2903 * 0 = Not used
2904 * 1 = Type D-2 Device Primary
2905 * 2 = Type D-2 Device Secondary
2906 * Bits 1 & 2 Assigned Device Redundancy Type
2907 * 0 = Type D-1 Device
2908 * 1 = Type D-2 Device
2909 * 2 = Type D-3 Device
2911 static int * const state_flags[] = {
2912 &hf_ff_sm_set_assign_info_req_dev_redundancy_state_reserved,
2913 &hf_ff_sm_set_assign_info_req_dev_redundancy_state_role,
2914 &hf_ff_sm_set_assign_info_req_dev_redundancy_state_type,
2915 NULL
2918 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_set_assign_info_req_dev_redundancy_state, ett_ff_sm_set_assign_info_req_dev_redundancy_state, state_flags, ENC_BIG_ENDIAN);
2923 static void
2924 dissect_ff_msg_sm_set_assign_info_req_clear_dup_detection_state(tvbuff_t *tvb,
2925 int offset, proto_tree *tree)
2928 * Bits 3-8: Reserved, set to 0.
2929 * Bit 2: 1 = Do not clear Duplicate PD Tag Detected
2930 * 0 = Clear Duplicate PD Tag Detected
2931 * Bit 1: 1 = Do not clear Duplicate Device Index Detected
2932 * 0 = Clear Duplicate Device Index Detected
2934 static int * const state_flags[] = {
2935 &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_reserved,
2936 &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_pd_tag,
2937 &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_device_index,
2938 NULL
2941 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_set_assign_info_req_clear_dup_detection_state, ett_ff_sm_set_assign_info_req_clear_dup_detection_state, state_flags, ENC_BIG_ENDIAN);
2946 static void
2947 dissect_ff_msg_sm_set_assign_info_req(tvbuff_t *tvb, int offset,
2948 uint32_t length, packet_info *pinfo, proto_tree *tree)
2950 proto_tree *sub_tree;
2952 col_set_str(pinfo->cinfo, COL_INFO, "SM Set Assignment Info Request");
2954 if (!tree) {
2955 return;
2958 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
2959 ett_ff_sm_set_assign_info_req, NULL, "SM Set Assignment Info Request");
2961 proto_tree_add_item(sub_tree,
2962 hf_ff_sm_set_assign_info_req_dev_id, tvb, offset, 32, ENC_ASCII);
2963 offset += 32;
2964 length -= 32;
2966 proto_tree_add_item(sub_tree,
2967 hf_ff_sm_set_assign_info_req_pd_tag, tvb, offset, 32, ENC_ASCII);
2968 offset += 32;
2969 length -= 32;
2971 proto_tree_add_item(sub_tree,
2972 hf_ff_sm_set_assign_info_req_h1_new_addr, tvb, offset, 1, ENC_BIG_ENDIAN);
2973 offset += 1;
2974 length -= 1;
2976 dissect_ff_msg_sm_set_assign_info_req_dev_redundancy_state(tvb,
2977 offset, sub_tree);
2978 offset += 1;
2979 length -= 1;
2981 proto_tree_add_item(sub_tree,
2982 hf_ff_sm_set_assign_info_req_lr_port, tvb, offset, 2, ENC_BIG_ENDIAN);
2983 offset += 2;
2984 length -= 2;
2986 proto_tree_add_item(sub_tree,
2987 hf_ff_sm_set_assign_info_req_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
2988 offset += 4;
2989 length -= 4;
2991 proto_tree_add_item(sub_tree,
2992 hf_ff_sm_set_assign_info_req_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
2993 offset += 2;
2994 length -= 2;
2996 proto_tree_add_item(sub_tree,
2997 hf_ff_sm_set_assign_info_req_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
2998 offset += 2;
2999 length -= 2;
3001 proto_tree_add_item(sub_tree,
3002 hf_ff_sm_set_assign_info_req_operational_ip_addr,
3003 tvb, offset, 16, ENC_NA);
3004 offset += 16;
3005 length -= 16;
3007 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
3008 offset += 3;
3009 length -= 3;
3011 dissect_ff_msg_sm_set_assign_info_req_clear_dup_detection_state(tvb,
3012 offset, sub_tree);
3013 offset += 1;
3014 length -= 1;
3016 if (length) {
3017 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3024 * 6.5.2.5.2. Response Message Parameters
3026 static void
3027 dissect_ff_msg_sm_set_assign_info_rsp(tvbuff_t *tvb, int offset,
3028 uint32_t length, packet_info *pinfo, proto_tree *tree)
3030 proto_tree *sub_tree;
3032 col_set_str(pinfo->cinfo, COL_INFO, "SM Set Assignment Info Response");
3034 if (!tree) {
3035 return;
3038 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3039 ett_ff_sm_set_assign_info_rsp, NULL, "SM Set Assignment Info Response");
3041 proto_tree_add_item(sub_tree,
3042 hf_ff_sm_set_assign_info_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
3043 offset += 2;
3044 length -= 2;
3046 proto_tree_add_item(sub_tree,
3047 hf_ff_sm_set_assign_info_rsp_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
3048 offset += 2;
3049 length -= 2;
3051 proto_tree_add_item(sub_tree,
3052 hf_ff_sm_set_assign_info_rsp_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
3053 offset += 4;
3054 length -= 4;
3056 if (length) {
3057 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3064 * 6.5.2.5.3. Error Message Parameters
3066 static void
3067 dissect_ff_msg_sm_set_assign_info_err(tvbuff_t *tvb, int offset,
3068 uint32_t length, packet_info *pinfo, proto_tree *tree)
3070 proto_tree *sub_tree;
3071 uint8_t ErrorClass;
3072 uint8_t ErrorCode;
3073 const char *error_code;
3075 col_set_str(pinfo->cinfo, COL_INFO, "SM Set Assignment Info Error");
3077 if (!tree) {
3078 return;
3081 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3082 ett_ff_sm_set_assign_info_err, NULL, "SM Set Assignment Info Error");
3084 ErrorClass = tvb_get_uint8(tvb, offset);
3085 proto_tree_add_item(sub_tree,
3086 hf_ff_sm_set_assign_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
3087 offset += 1;
3088 length -= 1;
3090 ErrorCode = tvb_get_uint8(tvb, offset);
3091 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
3092 proto_tree_add_uint_format_value(sub_tree,
3093 hf_ff_sm_set_assign_info_err_err_code,
3094 tvb, offset, 1, ErrorCode,
3095 "%s (%u)", error_code, ErrorCode);
3096 offset += 1;
3097 length -= 1;
3099 proto_tree_add_item(sub_tree,
3100 hf_ff_sm_set_assign_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
3101 offset += 2;
3102 length -= 2;
3104 proto_tree_add_item(sub_tree,
3105 hf_ff_sm_set_assign_info_err_additional_desc, tvb, offset, 16, ENC_ASCII);
3106 offset += 16;
3107 length -= 16;
3109 if (length) {
3110 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3117 * 6.5.2.6. SM Clear Assignment Info (Confirmed Service Id = 15)
3118 * 6.5.2.6.1. Request Message Parameters
3120 static void
3121 dissect_ff_msg_sm_clear_assign_info_req(tvbuff_t *tvb, int offset,
3122 uint32_t length, packet_info *pinfo, proto_tree *tree)
3124 proto_tree *sub_tree;
3126 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Assignment Info Request");
3128 if (!tree) {
3129 return;
3132 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3133 ett_ff_sm_clear_assign_info_req, NULL, "SM Clear Assignment Info Request");
3135 proto_tree_add_item(sub_tree,
3136 hf_ff_sm_clear_assign_info_req_dev_id, tvb, offset, 32, ENC_ASCII);
3137 offset += 32;
3138 length -= 32;
3140 proto_tree_add_item(sub_tree,
3141 hf_ff_sm_clear_assign_info_req_pd_tag, tvb, offset, 32, ENC_ASCII);
3142 offset += 32;
3143 length -= 32;
3145 if (length) {
3146 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3153 * 6.5.2.6.2. Response Message Parameters
3155 static void
3156 dissect_ff_msg_sm_clear_assign_info_rsp(tvbuff_t *tvb, int offset,
3157 uint32_t length, packet_info *pinfo, proto_tree *tree)
3159 proto_tree *sub_tree;
3161 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Assignment Info Response");
3163 if (!tree) {
3164 return;
3167 if (length) {
3168 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3169 ett_ff_sm_clear_assign_info_rsp, NULL, "SM Clear Assignment Info Response");
3171 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3178 * 6.5.2.6.3. Error Message Parameters
3180 static void
3181 dissect_ff_msg_sm_clear_assign_info_err(tvbuff_t *tvb, int offset,
3182 uint32_t length, packet_info *pinfo, proto_tree *tree)
3184 proto_tree *sub_tree;
3185 uint8_t ErrorClass;
3186 uint8_t ErrorCode;
3187 const char *error_code;
3189 col_set_str(pinfo->cinfo, COL_INFO, "SM Clear Assignment Info Error");
3191 if (!tree) {
3192 return;
3195 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3196 ett_ff_sm_clear_assign_info_err, NULL, "SM Clear Assignment Info Error");
3198 ErrorClass = tvb_get_uint8(tvb, offset);
3199 proto_tree_add_item(sub_tree,
3200 hf_ff_sm_clear_assign_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
3201 offset += 1;
3202 length -= 1;
3204 ErrorCode = tvb_get_uint8(tvb, offset);
3205 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
3206 proto_tree_add_uint_format_value(sub_tree,
3207 hf_ff_sm_clear_assign_info_err_err_code,
3208 tvb, offset, 1, ErrorCode,
3209 "%s (%u)", error_code, ErrorCode);
3210 offset += 1;
3211 length -= 1;
3213 proto_tree_add_item(sub_tree,
3214 hf_ff_sm_clear_assign_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
3215 offset += 2;
3216 length -= 2;
3218 proto_tree_add_item(sub_tree,
3219 hf_ff_sm_clear_assign_info_err_additional_desc, tvb, offset, 16, ENC_ASCII);
3220 offset += 16;
3221 length -= 16;
3223 if (length) {
3224 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3231 * 6.5.2.7. SM Device Annunciation (Unconfirmed Service Id = 16)
3232 * 6.5.2.7.1. Request Message Parameters
3234 static void
3235 dissect_ff_msg_sm_dev_annunc_req_h1_node_addr(tvbuff_t *tvb,
3236 int offset, proto_tree *tree)
3238 proto_tree *sub_tree;
3240 if (!tree) {
3241 return;
3244 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 2,
3245 ett_ff_sm_dev_annunc_req_h1_node_addr, NULL, "H1 Node Address Version Number (%u bytes)", 2);
3247 proto_tree_add_item(sub_tree,
3248 hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_h1_node_addr,
3249 tvb, offset, 1, ENC_BIG_ENDIAN);
3250 offset += 1;
3252 proto_tree_add_item(sub_tree,
3253 hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_ver_num,
3254 tvb, offset, 1, ENC_BIG_ENDIAN);
3255 /*offset += 1;*/
3260 static void
3261 dissect_ff_msg_sm_dev_annunc_req_entries_node_addr(tvbuff_t *tvb,
3262 int offset, proto_tree *tree, uint32_t value)
3264 proto_tree *sub_tree;
3265 unsigned d;
3267 if (!tree) {
3268 return;
3271 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
3272 ett_ff_sm_dev_annunc_req_entries_node_addr, NULL, "Version Number List (%u bytes)", 4 * value);
3274 for (d = 0; d < value * 2; d++) {
3275 dissect_ff_msg_sm_dev_annunc_req_h1_node_addr(tvb, offset, sub_tree);
3276 offset += 2;
3282 static void
3283 dissect_ff_msg_sm_dev_annunc_req_h1_live_list(tvbuff_t *tvb,
3284 int offset, proto_tree *tree)
3286 proto_tree *sub_tree;
3288 if (!tree) {
3289 return;
3292 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
3293 ett_ff_sm_dev_annunc_req_h1_live_list, NULL, "H1 Live-list Version Number (%u bytes)", 4);
3295 proto_tree_add_item(sub_tree,
3296 hf_ff_sm_dev_annunc_req_h1_live_list_h1_link_id, tvb, offset, 2, ENC_BIG_ENDIAN);
3297 offset += 2;
3299 proto_tree_add_item(sub_tree,
3300 hf_ff_sm_dev_annunc_req_h1_live_list_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
3301 offset += 1;
3303 proto_tree_add_item(sub_tree,
3304 hf_ff_sm_dev_annunc_req_h1_live_list_ver_num, tvb, offset, 1, ENC_BIG_ENDIAN);
3305 /*offset += 1;*/
3310 static void
3311 dissect_ff_msg_sm_dev_annunc_req_entries_link_id(tvbuff_t *tvb,
3312 int offset, proto_tree *tree, uint32_t value)
3314 proto_tree *sub_tree;
3315 unsigned d;
3317 if (!tree) {
3318 return;
3321 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
3322 ett_ff_sm_dev_annunc_req_entries_h1_live_list, NULL, "Version Number List (%u bytes)", 4 * value);
3324 for (d = 0; d < value; d++) {
3325 dissect_ff_msg_sm_dev_annunc_req_h1_live_list(tvb, offset, sub_tree);
3326 offset += 4;
3332 static void
3333 dissect_ff_msg_sm_dev_annunc_req_smk_state(tvbuff_t *tvb,
3334 int offset, proto_tree *tree)
3337 * Bits 2-8:
3338 * 0 = Reserved
3339 * 1 = NO_TAG
3340 * 2 = OPERATIONAL
3341 * 3 127 = Reserved
3342 * Bit 1:
3343 * 0 = Not Synchronized with SNTP Time Server
3344 * 1 = Synchronized with SNTP Time Server
3346 static int * const state_flags[] = {
3347 &hf_ff_sm_dev_annunc_req_smk_state_name,
3348 &hf_ff_sm_dev_annunc_req_smk_state_sync,
3349 NULL
3352 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_dev_annunc_req_smk_state, ett_ff_sm_dev_annunc_req_smk_state, state_flags, ENC_BIG_ENDIAN);
3357 static void
3358 dissect_ff_msg_sm_dev_annunc_req_dev_type(tvbuff_t *tvb,
3359 int offset, proto_tree *tree)
3362 * Bit 8 = Linking Device
3363 * Bit 7 = I/O Gateway
3364 * Bit 6 = HSE Field Device
3365 * Bit 5 = H1 Device
3366 * Bit 4 = Reserved
3367 * Bits 1 - 3 Redundant Device Type Capability*
3368 * 0 = Type D-1 Device
3369 * 1 = Type D-2 Device
3370 * 2 = Type D-3 Device
3371 * 3 = Type D-3 and Type D-2 Device
3372 * 4 = Not used
3373 * 5 = Type D-2 and Type D-1 Device
3374 * 6 = Type D-3 and Type D-1 Device
3375 * 7 = Type D-3 and D-2 and Type D-1 Device
3377 static int * const device_flags[] = {
3378 &hf_ff_sm_dev_annunc_req_dev_type_link,
3379 &hf_ff_sm_dev_annunc_req_dev_type_iogateway,
3380 &hf_ff_sm_dev_annunc_req_dev_type_hse,
3381 &hf_ff_sm_dev_annunc_req_dev_type_h1,
3382 &hf_ff_sm_dev_annunc_req_dev_type_reserved,
3383 &hf_ff_sm_dev_annunc_req_dev_type_redundant_caps,
3384 NULL
3387 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_dev_annunc_req_dev_type, ett_ff_sm_dev_annunc_req_dev_type, device_flags, ENC_BIG_ENDIAN);
3392 static void
3393 dissect_ff_msg_sm_dev_annunc_req_dev_redundancy_state(tvbuff_t *tvb,
3394 int offset, proto_tree *tree)
3397 * Bits 5-8 = Reserved, set to 0
3398 * Bits 3 & 4 Device Redundancy Role
3399 * 0 = Reserved
3400 * 1 = Primary
3401 * 2 = Secondary
3402 * Bits 1 & 2 Assigned Redundant Device Type*
3403 * 0 = Type D-1 Device
3404 * 1 = Type D-2 Device
3405 * 2 = Type D-3 Device
3407 static int * const device_flags[] = {
3408 &hf_ff_sm_dev_annunc_req_dev_redundancy_state_reserved,
3409 &hf_ff_sm_dev_annunc_req_dev_redundancy_state_role,
3410 &hf_ff_sm_dev_annunc_req_dev_redundancy_state_type,
3411 NULL
3414 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_dev_annunc_req_dev_redundancy_state, ett_ff_sm_dev_annunc_req_dev_redundancy_state, device_flags, ENC_BIG_ENDIAN);
3419 static void
3420 dissect_ff_msg_sm_dev_annunc_req_dup_detection_state(tvbuff_t *tvb,
3421 int offset, proto_tree *tree)
3424 * Bits 3-8: Reserved, set to 0.
3425 * Bit 2: 1 = Duplicate PD Tag Detected
3426 * 0 = Duplicate PD Tag Not Detected
3427 * Bit 1: 1 = Duplicate Device Index Detected
3428 * 0 = Duplicate Device Index Not Detected
3430 static int * const state_flags[] = {
3431 &hf_ff_sm_dev_annunc_req_dup_detection_state_reserved,
3432 &hf_ff_sm_dev_annunc_req_dup_detection_state_pd_tag,
3433 &hf_ff_sm_dev_annunc_req_dup_detection_state_device,
3434 NULL
3437 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_sm_dev_annunc_req_dup_detection_state, ett_ff_sm_dev_annunc_req_dup_detection_state, state_flags, ENC_BIG_ENDIAN);
3442 static void
3443 dissect_ff_msg_sm_dev_annunc_req(tvbuff_t *tvb, int offset,
3444 uint32_t length, packet_info *pinfo, proto_tree *tree, uint32_t FDAAddress)
3446 proto_tree *sub_tree;
3448 uint32_t NumOfEntriesInVerNumList;
3450 col_set_str(pinfo->cinfo, COL_INFO, "SM Device Annunciation Request");
3452 if (!tree) {
3453 return;
3456 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3457 ett_ff_sm_dev_annunc_req, NULL, "SM Device Annunciation Request");
3460 dissect_ff_msg_sm_dev_annunc_req_smk_state(tvb, offset, sub_tree);
3461 offset += 1;
3462 length -= 1;
3464 dissect_ff_msg_sm_dev_annunc_req_dev_type(tvb,
3465 offset, sub_tree);
3466 offset += 1;
3467 length -= 1;
3469 dissect_ff_msg_sm_dev_annunc_req_dev_redundancy_state(tvb,
3470 offset, sub_tree);
3471 offset += 1;
3472 length -= 1;
3474 dissect_ff_msg_sm_dev_annunc_req_dup_detection_state(tvb,
3475 offset, sub_tree);
3476 offset += 1;
3477 length -= 1;
3479 proto_tree_add_item(sub_tree,
3480 hf_ff_sm_dev_annunc_req_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
3481 offset += 2;
3482 length -= 2;
3484 proto_tree_add_item(sub_tree,
3485 hf_ff_sm_dev_annunc_req_max_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
3486 offset += 2;
3487 length -= 2;
3489 proto_tree_add_item(sub_tree,
3490 hf_ff_sm_dev_annunc_req_operational_ip_addr, tvb, offset, 16, ENC_NA);
3491 offset += 16;
3492 length -= 16;
3494 proto_tree_add_item(sub_tree,
3495 hf_ff_sm_dev_annunc_req_dev_id, tvb, offset, 32, ENC_ASCII);
3496 offset += 32;
3497 length -= 32;
3499 proto_tree_add_item(sub_tree,
3500 hf_ff_sm_dev_annunc_req_pd_tag, tvb, offset, 32, ENC_ASCII);
3501 offset += 32;
3502 length -= 32;
3504 proto_tree_add_item(sub_tree,
3505 hf_ff_sm_dev_annunc_req_hse_repeat_time, tvb, offset, 4, ENC_BIG_ENDIAN);
3506 offset += 4;
3507 length -= 4;
3509 proto_tree_add_item(sub_tree,
3510 hf_ff_sm_dev_annunc_req_lr_port, tvb, offset, 2, ENC_BIG_ENDIAN);
3511 offset += 2;
3512 length -= 2;
3514 proto_tree_add_item(sub_tree,
3515 hf_ff_sm_dev_annunc_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
3516 offset += 2;
3517 length -= 2;
3519 proto_tree_add_item(sub_tree,
3520 hf_ff_sm_dev_annunc_req_annunc_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
3521 offset += 4;
3522 length -= 4;
3524 proto_tree_add_item(sub_tree,
3525 hf_ff_sm_dev_annunc_req_hse_dev_ver_num, tvb, offset, 4, ENC_BIG_ENDIAN);
3526 offset += 4;
3527 length -= 4;
3529 NumOfEntriesInVerNumList = tvb_get_ntohl(tvb, offset);
3530 proto_tree_add_item(sub_tree,
3531 hf_ff_sm_dev_annunc_req_num_of_entries, tvb, offset, 4, ENC_BIG_ENDIAN);
3532 offset += 4;
3533 length -= 4;
3535 if (NumOfEntriesInVerNumList) {
3536 uint16_t LinkId;
3537 /* 11111111 11111111 00000000 00000000 */
3538 LinkId = (uint16_t)(FDAAddress >> 16);
3539 if (LinkId) {
3540 dissect_ff_msg_sm_dev_annunc_req_entries_node_addr(tvb,
3541 offset, sub_tree, NumOfEntriesInVerNumList);
3542 } else {
3543 dissect_ff_msg_sm_dev_annunc_req_entries_link_id(tvb,
3544 offset, sub_tree, NumOfEntriesInVerNumList);
3547 offset += 4 * NumOfEntriesInVerNumList;
3548 length -= 4 * NumOfEntriesInVerNumList;
3551 if (length) {
3552 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3559 * 6.5.3.2. FMS Initiate (Confirmed Service Id = 96)
3560 * 6.5.3.2.1. Request Message Parameters
3562 static void
3563 dissect_ff_msg_fms_init_req(tvbuff_t *tvb, int offset,
3564 uint32_t length, packet_info *pinfo, proto_tree *tree)
3566 proto_tree *sub_tree;
3568 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Request");
3570 if (!tree) {
3571 return;
3574 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_init_req, NULL, "FMS Initiate Request");
3576 proto_tree_add_item(sub_tree,
3577 hf_ff_fms_init_req_conn_opt, tvb, offset, 1, ENC_BIG_ENDIAN);
3578 offset += 1;
3579 length -= 1;
3581 proto_tree_add_item(sub_tree,
3582 hf_ff_fms_init_req_access_protection_supported_calling,
3583 tvb, offset, 1, ENC_BIG_ENDIAN);
3584 offset += 1;
3585 length -= 1;
3587 proto_tree_add_item(sub_tree,
3588 hf_ff_fms_init_req_passwd_and_access_grps_calling,
3589 tvb, offset, 2, ENC_BIG_ENDIAN);
3590 offset += 2;
3591 length -= 2;
3593 proto_tree_add_item(sub_tree,
3594 hf_ff_fms_init_req_ver_od_calling, tvb, offset, 2, ENC_BIG_ENDIAN);
3595 offset += 2;
3596 length -= 2;
3598 proto_tree_add_item(sub_tree,
3599 hf_ff_fms_init_req_prof_num_calling, tvb, offset, 2, ENC_BIG_ENDIAN);
3600 offset += 2;
3601 length -= 2;
3603 proto_tree_add_item(sub_tree,
3604 hf_ff_fms_init_req_pd_tag, tvb, offset, 32, ENC_ASCII);
3605 offset += 32;
3606 length -= 32;
3608 if (length) {
3609 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3616 * 6.5.3.2.2. Response Message Parameters
3618 static void
3619 dissect_ff_msg_fms_init_rsp(tvbuff_t *tvb, int offset,
3620 uint32_t length, packet_info *pinfo, proto_tree *tree)
3622 proto_tree *sub_tree;
3624 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Response");
3626 if (!tree) {
3627 return;
3630 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3631 ett_ff_fms_init_rep, NULL, "FMS Initiate Response");
3633 proto_tree_add_item(sub_tree,
3634 hf_ff_fms_init_rsp_ver_od_called, tvb, offset, 2, ENC_BIG_ENDIAN);
3635 offset += 2;
3636 length -= 2;
3638 proto_tree_add_item(sub_tree,
3639 hf_ff_fms_init_rsp_prof_num_called, tvb, offset, 2, ENC_BIG_ENDIAN);
3640 offset += 2;
3641 length -= 2;
3643 if (length) {
3644 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3651 * 6.5.3.2.3. Error Message Parameters
3653 static void
3654 dissect_ff_msg_fms_init_err(tvbuff_t *tvb, int offset,
3655 uint32_t length, packet_info *pinfo, proto_tree *tree)
3657 proto_tree *sub_tree;
3658 uint8_t ErrorClass;
3659 uint8_t ErrorCode;
3660 const char *error_code;
3662 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Error");
3664 if (!tree) {
3665 return;
3668 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_init_err, NULL, "FMS Initiate Error");
3670 ErrorClass = tvb_get_uint8(tvb, offset);
3671 proto_tree_add_item(sub_tree,
3672 hf_ff_fms_init_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
3673 offset += 1;
3674 length -= 1;
3676 ErrorCode = tvb_get_uint8(tvb, offset);
3677 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
3678 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_init_err_err_code,
3679 tvb, offset, 1, ErrorCode,
3680 "%s (%u)", error_code, ErrorCode);
3681 offset += 1;
3682 length -= 1;
3684 proto_tree_add_item(sub_tree,
3685 hf_ff_fms_init_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
3686 offset += 2;
3687 length -= 2;
3689 proto_tree_add_item(sub_tree,
3690 hf_ff_fms_init_err_additional_desc, tvb, offset, 16, ENC_ASCII);
3691 offset += 16;
3692 length -= 16;
3694 if (length) {
3695 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3702 * 6.5.3.3. FMS Abort (Unconfirmed Service Id = 112)
3703 * 6.5.3.3.1. Request Message Parameters
3705 static void
3706 dissect_ff_msg_fms_abort_req(tvbuff_t *tvb, int offset,
3707 uint32_t length, packet_info *pinfo, proto_tree *tree)
3709 proto_tree *sub_tree;
3711 col_set_str(pinfo->cinfo, COL_INFO, "FMS Abort Request");
3713 if (!tree) {
3714 return;
3717 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_abort_req, NULL, "FMS Abort Request");
3719 proto_tree_add_item(sub_tree, hf_ff_fms_abort_req_detail, tvb, offset, 16, ENC_NA);
3720 offset += 16;
3721 length -= 16;
3723 proto_tree_add_item(sub_tree,
3724 hf_ff_fms_abort_req_abort_id, tvb, offset, 1, ENC_BIG_ENDIAN);
3725 offset += 1;
3726 length -= 1;
3728 proto_tree_add_item(sub_tree,
3729 hf_ff_fms_abort_req_reason_code, tvb, offset, 1, ENC_BIG_ENDIAN);
3730 offset += 1;
3731 length -= 1;
3733 proto_tree_add_item(sub_tree,
3734 hf_ff_fms_abort_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
3735 offset += 2;
3736 length -= 2;
3738 if (length) {
3739 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3746 * 6.5.3.4. FMS Status (Confirmed Service Id = 0)
3747 * 6.5.3.4.1. Request Message Parameters
3749 static void
3750 dissect_ff_msg_fms_status_req(tvbuff_t *tvb, int offset,
3751 uint32_t length, packet_info *pinfo, proto_tree *tree)
3753 proto_tree *sub_tree;
3755 col_set_str(pinfo->cinfo, COL_INFO, "FMS Status Request");
3757 if (!tree) {
3758 return;
3761 if (length) {
3762 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3763 ett_ff_fms_status_req, NULL, "FMS Status Request");
3765 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3772 * 6.5.3.4.2. Response Message Parameters
3774 static void
3775 dissect_ff_msg_fms_status_rsp(tvbuff_t *tvb, int offset,
3776 uint32_t length, packet_info *pinfo, proto_tree *tree)
3778 proto_tree *sub_tree;
3780 col_set_str(pinfo->cinfo, COL_INFO, "FMS Status Response");
3782 if (!tree) {
3783 return;
3786 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_status_rsp, NULL, "FMS Status Response");
3788 proto_tree_add_item(sub_tree,
3789 hf_ff_fms_status_rsp_logical_status, tvb, offset, 1, ENC_BIG_ENDIAN);
3790 offset += 1;
3791 length -= 1;
3793 proto_tree_add_item(sub_tree,
3794 hf_ff_fms_status_rsp_physical_status, tvb, offset, 1, ENC_BIG_ENDIAN);
3795 offset += 1;
3796 length -= 1;
3798 proto_tree_add_item(sub_tree,
3799 hf_ff_fms_status_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
3800 offset += 2;
3801 length -= 2;
3803 proto_tree_add_item(sub_tree, hf_ff_fms_status_rsp_local_detail, tvb, offset, 4, ENC_BIG_ENDIAN);
3804 offset += 4;
3805 length -= 4;
3807 if (length) {
3808 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3815 * 6.5.3.4.3. Error Message Parameters
3817 static void
3818 dissect_ff_msg_fms_status_err(tvbuff_t *tvb, int offset,
3819 uint32_t length, packet_info *pinfo, proto_tree *tree)
3821 proto_tree *sub_tree;
3822 uint8_t ErrorClass;
3823 uint8_t ErrorCode;
3824 const char *error_code;
3826 col_set_str(pinfo->cinfo, COL_INFO, "FMS Status Error");
3828 if (!tree) {
3829 return;
3832 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_status_err, NULL, "FMS Status Error");
3834 ErrorClass = tvb_get_uint8(tvb, offset);
3835 proto_tree_add_item(sub_tree,
3836 hf_ff_fms_status_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
3837 offset += 1;
3838 length -= 1;
3840 ErrorCode = tvb_get_uint8(tvb, offset);
3841 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
3842 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_status_err_err_code,
3843 tvb, offset, 1, ErrorCode,
3844 "%s (%u)", error_code, ErrorCode);
3845 offset += 1;
3846 length -= 1;
3848 proto_tree_add_item(sub_tree,
3849 hf_ff_fms_status_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
3850 offset += 2;
3851 length -= 2;
3853 proto_tree_add_item(sub_tree,
3854 hf_ff_fms_status_err_additional_desc, tvb, offset, 16, ENC_ASCII);
3855 offset += 16;
3856 length -= 16;
3858 if (length) {
3859 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3866 * 6.5.3.5. FMS Unsolicited Status (Unconfirmed Service Id = 1)
3867 * 6.5.3.5.1. Request Message Parameters
3869 static void
3870 dissect_ff_msg_fms_unsolicited_status_req(tvbuff_t *tvb, int offset,
3871 uint32_t length, packet_info *pinfo, proto_tree *tree)
3873 proto_tree *sub_tree;
3875 col_set_str(pinfo->cinfo, COL_INFO, "FMS Unsolicited Status Request");
3877 if (!tree) {
3878 return;
3881 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3882 ett_ff_fms_unsolicited_status_req, NULL, "FMS Unsolicited Status Request");
3884 proto_tree_add_item(sub_tree,
3885 hf_ff_fms_unsolicited_status_req_logical_status, tvb, offset, 1, ENC_BIG_ENDIAN);
3886 offset += 1;
3887 length -= 1;
3889 proto_tree_add_item(sub_tree,
3890 hf_ff_fms_unsolicited_status_req_physical_status,
3891 tvb, offset, 1, ENC_BIG_ENDIAN);
3892 offset += 1;
3893 length -= 1;
3895 proto_tree_add_item(sub_tree,
3896 hf_ff_fms_unsolicited_status_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
3897 offset += 2;
3898 length -= 2;
3900 proto_tree_add_item(sub_tree, hf_ff_fms_unsolicited_status_req_local_detail, tvb, offset, 4, ENC_BIG_ENDIAN);
3901 offset += 4;
3902 length -= 4;
3904 if (length) {
3905 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3912 * 6.5.3.6. FMS Identify (Confirmed Service Id = 1)
3913 * 6.5.3.6.1. Request Message Parameters
3915 static void
3916 dissect_ff_msg_fms_id_req(tvbuff_t *tvb, int offset,
3917 uint32_t length, packet_info *pinfo, proto_tree *tree)
3919 proto_tree *sub_tree;
3921 col_set_str(pinfo->cinfo, COL_INFO, "FMS Identify Request");
3923 if (!tree) {
3924 return;
3927 if (length) {
3928 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3929 ett_ff_fms_id_req, NULL, "FMS Identify Request");
3931 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3938 * 6.5.3.6.2. Response Message Parameters
3940 static void
3941 dissect_ff_msg_fms_id_rsp(tvbuff_t *tvb, int offset,
3942 uint32_t length, packet_info *pinfo, proto_tree *tree)
3944 proto_tree *sub_tree;
3946 col_set_str(pinfo->cinfo, COL_INFO, "FMS Identify Response");
3948 if (!tree) {
3949 return;
3952 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
3953 ett_ff_fms_id_rsp, NULL, "FMS Identify Response");
3955 proto_tree_add_item(sub_tree,
3956 hf_ff_fms_id_rsp_vendor_name, tvb, offset, 32, ENC_ASCII);
3957 offset += 32;
3958 length -= 32;
3960 proto_tree_add_item(sub_tree,
3961 hf_ff_fms_id_rsp_model_name, tvb, offset, 32, ENC_ASCII);
3962 offset += 32;
3963 length -= 32;
3965 proto_tree_add_item(sub_tree,
3966 hf_ff_fms_id_rsp_revision, tvb, offset, 32, ENC_ASCII);
3967 offset += 32;
3968 length -= 32;
3970 if (length) {
3971 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
3978 * 6.5.3.6.3. Error Message Parameters
3980 static void
3981 dissect_ff_msg_fms_id_err(tvbuff_t *tvb, int offset,
3982 uint32_t length, packet_info *pinfo, proto_tree *tree)
3984 proto_tree *sub_tree;
3985 uint8_t ErrorClass;
3986 uint8_t ErrorCode;
3987 const char *error_code;
3989 col_set_str(pinfo->cinfo, COL_INFO, "FMS Identify Error");
3991 if (!tree) {
3992 return;
3995 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_id_err, NULL, "FMS Identify Error");
3997 ErrorClass = tvb_get_uint8(tvb, offset);
3998 proto_tree_add_item(sub_tree,
3999 hf_ff_fms_id_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4000 offset += 1;
4001 length -= 1;
4003 ErrorCode = tvb_get_uint8(tvb, offset);
4004 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4005 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_id_err_err_code,
4006 tvb, offset, 1, ErrorCode,
4007 "%s (%u)", error_code, ErrorCode);
4008 offset += 1;
4009 length -= 1;
4011 proto_tree_add_item(sub_tree,
4012 hf_ff_fms_id_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4013 offset += 2;
4014 length -= 2;
4016 proto_tree_add_item(sub_tree, hf_ff_fms_id_err_additional_desc,
4017 tvb, offset, 16, ENC_ASCII);
4018 offset += 16;
4019 length -= 16;
4021 if (length) {
4022 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4029 * 6.5.3.7. FMS Get OD (Confirmed Service Id = 4)
4030 * 6.5.3.7.1. Request Message Parameters
4032 static void
4033 dissect_ff_msg_fms_get_od_req(tvbuff_t *tvb, int offset,
4034 uint32_t length, packet_info *pinfo, proto_tree *tree)
4036 proto_tree *sub_tree;
4038 col_set_str(pinfo->cinfo, COL_INFO, "FMS Get OD Request");
4040 if (!tree) {
4041 return;
4044 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_get_od_req, NULL, "FMS Get OD Request");
4046 proto_tree_add_item(sub_tree,
4047 hf_ff_fms_get_od_req_all_attrs, tvb, offset, 1, ENC_BIG_ENDIAN);
4048 offset += 1;
4049 length -= 1;
4051 proto_tree_add_item(sub_tree,
4052 hf_ff_fms_get_od_req_start_idx_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
4053 offset += 1;
4054 length -= 1;
4056 proto_tree_add_item(sub_tree,
4057 hf_ff_fms_get_od_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
4058 offset += 2;
4059 length -= 2;
4061 proto_tree_add_item(sub_tree,
4062 hf_ff_fms_get_od_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
4063 offset += 4;
4064 length -= 4;
4066 if (length) {
4067 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4074 * 6.5.3.7.2. Response Message Parameters
4076 static void
4077 dissect_ff_msg_fms_get_od_rsp(tvbuff_t *tvb, int offset,
4078 uint32_t length, packet_info *pinfo, proto_tree *tree)
4080 proto_tree *sub_tree;
4082 col_set_str(pinfo->cinfo, COL_INFO, "FMS Get OD Response");
4084 if (!tree) {
4085 return;
4088 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_get_od_rsp, NULL, "FMS Get OD Response");
4090 proto_tree_add_item(sub_tree,
4091 hf_ff_fms_get_od_rsp_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
4092 offset += 1;
4093 length -= 1;
4095 proto_tree_add_item(sub_tree,
4096 hf_ff_fms_get_od_rsp_num_of_obj_desc, tvb, offset, 1, ENC_BIG_ENDIAN);
4097 offset += 1;
4098 length -= 1;
4100 proto_tree_add_item(sub_tree,
4101 hf_ff_fms_get_od_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
4102 offset += 2;
4103 length -= 2;
4105 if (length) {
4106 proto_tree_add_item(sub_tree, hf_ff_fms_get_od_rsp_object_descriptions, tvb, offset, length, ENC_NA);
4113 * 6.5.3.7.3. Error Message Parameters
4115 static void
4116 dissect_ff_msg_fms_get_od_err(tvbuff_t *tvb, int offset,
4117 uint32_t length, packet_info *pinfo, proto_tree *tree)
4119 proto_tree *sub_tree;
4120 uint8_t ErrorClass;
4121 uint8_t ErrorCode;
4122 const char *error_code;
4124 col_set_str(pinfo->cinfo, COL_INFO, "FMS Get OD Error");
4126 if (!tree) {
4127 return;
4130 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_get_od_err, NULL, "FMS Get OD Error");
4132 ErrorClass = tvb_get_uint8(tvb, offset);
4133 proto_tree_add_item(sub_tree,
4134 hf_ff_fms_get_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4135 offset += 1;
4136 length -= 1;
4138 ErrorCode = tvb_get_uint8(tvb, offset);
4139 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4140 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_get_od_err_err_code,
4141 tvb, offset, 1, ErrorCode,
4142 "%s (%u)", error_code, ErrorCode);
4143 offset += 1;
4144 length -= 1;
4146 proto_tree_add_item(sub_tree,
4147 hf_ff_fms_get_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4148 offset += 2;
4149 length -= 2;
4151 proto_tree_add_item(sub_tree, hf_ff_fms_get_od_err_additional_desc,
4152 tvb, offset, 16, ENC_ASCII);
4153 offset += 16;
4154 length -= 16;
4156 if (length) {
4157 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4164 * 6.5.3.8. FMS Initiate Put OD (Confirmed Service Id = 28)
4165 * 6.5.3.8.1. Request Message Parameters
4167 static void
4168 dissect_ff_msg_fms_init_put_od_req(tvbuff_t *tvb, int offset,
4169 uint32_t length, packet_info *pinfo, proto_tree *tree)
4171 proto_tree *sub_tree;
4172 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Put OD Request");
4174 if (!tree) {
4175 return;
4178 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4179 ett_ff_fms_init_put_od_req, NULL, "FMS Initiate Put OD Request");
4181 proto_tree_add_item(sub_tree,
4182 hf_ff_fms_init_put_od_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
4183 offset += 2;
4184 length -= 2;
4186 proto_tree_add_item(sub_tree,
4187 hf_ff_fms_init_put_od_req_consequence, tvb, offset, 2, ENC_BIG_ENDIAN);
4188 offset += 2;
4189 length -= 2;
4191 if (length) {
4192 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4199 * 6.5.3.8.2. Response Message Parameters
4201 static void
4202 dissect_ff_msg_fms_init_put_od_rsp(tvbuff_t *tvb, int offset,
4203 uint32_t length, packet_info *pinfo, proto_tree *tree)
4205 proto_tree *sub_tree;
4207 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Put OD Response");
4209 if (!tree) {
4210 return;
4213 if (length) {
4214 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4215 ett_ff_fms_init_put_od_rsp, NULL, "FMS Initiate Put OD Response");
4217 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4224 * 6.5.3.8.3. Error Message Parameters
4226 static void
4227 dissect_ff_msg_fms_init_put_od_err(tvbuff_t *tvb, int offset,
4228 uint32_t length, packet_info *pinfo, proto_tree *tree)
4230 proto_tree *sub_tree;
4231 uint8_t ErrorClass;
4232 uint8_t ErrorCode;
4233 const char *error_code;
4235 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Put OD Error");
4237 if (!tree) {
4238 return;
4241 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4242 ett_ff_fms_init_put_od_err, NULL, "FMS Initiate Put OD Error");
4244 ErrorClass = tvb_get_uint8(tvb, offset);
4245 proto_tree_add_item(sub_tree,
4246 hf_ff_fms_init_put_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4247 offset += 1;
4248 length -= 1;
4250 ErrorCode = tvb_get_uint8(tvb, offset);
4251 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4252 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_init_put_od_err_err_code,
4253 tvb, offset, 1, ErrorCode,
4254 "%s (%u)", error_code, ErrorCode);
4255 offset += 1;
4256 length -= 1;
4258 proto_tree_add_item(sub_tree,
4259 hf_ff_fms_init_put_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4260 offset += 2;
4261 length -= 2;
4263 proto_tree_add_item(sub_tree, hf_ff_fms_init_put_od_err_additional_desc,
4264 tvb, offset, 16, ENC_ASCII);
4265 offset += 16;
4266 length -= 16;
4268 if (length) {
4269 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4276 * 6.5.3.9. FMS Put OD (Confirmed Service Id = 29)
4277 * 6.5.3.9.1. Request Message Parameters
4279 static void
4280 dissect_ff_msg_fms_put_od_req(tvbuff_t *tvb, int offset,
4281 uint32_t length, packet_info *pinfo, proto_tree *tree)
4283 proto_tree *sub_tree;
4285 col_set_str(pinfo->cinfo, COL_INFO, "FMS Put OD Request");
4287 if (!tree) {
4288 return;
4291 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_put_od_req, NULL, "FMS Put OD Request");
4293 proto_tree_add_item(sub_tree,
4294 hf_ff_fms_put_od_req_num_of_obj_desc, tvb, offset, 1, ENC_BIG_ENDIAN);
4295 offset += 1;
4296 length -= 1;
4298 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
4299 offset += 3;
4300 length -= 3;
4302 proto_tree_add_item(sub_tree, hf_ff_fms_put_od_req_object_descriptions, tvb, offset, length, ENC_NA);
4308 * 6.5.3.9.2. Response Message Parameters
4310 static void
4311 dissect_ff_msg_fms_put_od_rsp(tvbuff_t *tvb, int offset,
4312 uint32_t length, packet_info *pinfo, proto_tree *tree)
4314 proto_tree *sub_tree;
4316 col_set_str(pinfo->cinfo, COL_INFO, "FMS Put OD Response");
4318 if (!tree) {
4319 return;
4322 if (length) {
4323 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4324 ett_ff_fms_put_od_rsp, NULL, "FMS Put OD Response");
4325 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4332 * 6.5.3.9.3. Error Message Parameters
4334 static void
4335 dissect_ff_msg_fms_put_od_err(tvbuff_t *tvb, int offset,
4336 uint32_t length, packet_info *pinfo, proto_tree *tree)
4338 proto_tree *sub_tree;
4339 uint8_t ErrorClass;
4340 uint8_t ErrorCode;
4341 const char *error_code;
4343 col_set_str(pinfo->cinfo, COL_INFO, "FMS Put OD Error");
4345 if (!tree) {
4346 return;
4349 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4350 ett_ff_fms_put_od_err, NULL, "FMS Put OD Error");
4352 ErrorClass = tvb_get_uint8(tvb, offset);
4353 proto_tree_add_item(sub_tree,
4354 hf_ff_fms_put_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4355 offset += 1;
4356 length -= 1;
4358 ErrorCode = tvb_get_uint8(tvb, offset);
4359 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4360 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_put_od_err_err_code,
4361 tvb, offset, 1, ErrorCode,
4362 "%s (%u)", error_code, ErrorCode);
4363 offset += 1;
4364 length -= 1;
4366 proto_tree_add_item(sub_tree,
4367 hf_ff_fms_put_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4368 offset += 2;
4369 length -= 2;
4371 proto_tree_add_item(sub_tree, hf_ff_fms_put_od_err_additional_desc,
4372 tvb, offset, 16, ENC_ASCII);
4373 offset += 16;
4374 length -= 16;
4376 if (length) {
4377 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4384 * 6.5.3.10. FMS Terminate Put OD (Confirmed Service Id = 30)
4385 * 6.5.3.10.1. Request Message Parameters
4387 static void
4388 dissect_ff_msg_fms_terminate_put_od_req(tvbuff_t *tvb, int offset,
4389 uint32_t length, packet_info *pinfo, proto_tree *tree)
4391 proto_tree *sub_tree;
4393 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Put OD Request");
4395 if (!tree) {
4396 return;
4399 if (length) {
4400 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4401 ett_ff_fms_terminate_put_od_req, NULL, "FMS Terminate Put OD Request");
4403 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4410 * 6.5.3.10.2. Response Message Parameters
4412 static void
4413 dissect_ff_msg_fms_terminate_put_od_rsp(tvbuff_t *tvb, int offset,
4414 uint32_t length, packet_info *pinfo, proto_tree *tree)
4416 proto_tree *sub_tree;
4418 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Put OD Response");
4420 if (!tree) {
4421 return;
4424 if (length) {
4425 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4426 ett_ff_fms_terminate_put_od_rsp, NULL, "FMS Terminate Put OD Response");
4428 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4435 * 6.5.3.10.3. Error Message Parameters
4437 static void
4438 dissect_ff_msg_fms_terminate_put_od_err(tvbuff_t *tvb, int offset,
4439 uint32_t length, packet_info *pinfo, proto_tree *tree)
4441 proto_tree *sub_tree;
4442 uint8_t ErrorClass;
4443 uint8_t ErrorCode;
4444 const char *error_code;
4446 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Put OD Error");
4448 if (!tree) {
4449 return;
4452 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4453 ett_ff_fms_terminate_put_od_err, NULL, "FMS Terminate Put OD Error");
4455 proto_tree_add_item(sub_tree,
4456 hf_ff_fms_terminate_put_od_err_index, tvb, offset, 4, ENC_BIG_ENDIAN);
4457 offset += 4;
4458 length -= 4;
4460 ErrorClass = tvb_get_uint8(tvb, offset);
4461 proto_tree_add_item(sub_tree,
4462 hf_ff_fms_terminate_put_od_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4463 offset += 1;
4464 length -= 1;
4466 ErrorCode = tvb_get_uint8(tvb, offset);
4467 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4468 proto_tree_add_uint_format_value(sub_tree,
4469 hf_ff_fms_terminate_put_od_err_err_code,
4470 tvb, offset, 1, ErrorCode,
4471 "%s (%u)", error_code, ErrorCode);
4472 offset += 1;
4473 length -= 1;
4475 proto_tree_add_item(sub_tree,
4476 hf_ff_fms_terminate_put_od_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4477 offset += 2;
4478 length -= 2;
4480 proto_tree_add_item(sub_tree,
4481 hf_ff_fms_terminate_put_od_err_additional_desc,
4482 tvb, offset, 16, ENC_ASCII);
4483 offset += 16;
4484 length -= 16;
4486 if (length) {
4487 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4494 * 6.5.3.11. FMS Generic Initiate Download Sequence
4495 * (Confirmed Service Id = 31)
4496 * 6.5.3.11.1. Request Message Parameters
4498 static void
4499 dissect_ff_msg_fms_generic_init_download_sequence_req(
4500 tvbuff_t *tvb, int offset,
4501 uint32_t length, packet_info *pinfo, proto_tree *tree)
4503 proto_tree *sub_tree;
4505 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Initiate Download Sequence Request");
4507 if (!tree) {
4508 return;
4511 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4512 ett_ff_fms_gen_init_download_seq_req, NULL, "FMS Generic Initiate Download Sequence Request");
4514 proto_tree_add_item(sub_tree,
4515 hf_ff_fms_gen_init_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
4516 offset += 4;
4517 length -= 4;
4519 if (length) {
4520 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4527 * 6.5.3.11.2. Response Message Parameters
4529 static void
4530 dissect_ff_msg_fms_generic_init_download_sequence_rsp(
4531 tvbuff_t *tvb, int offset,
4532 uint32_t length, packet_info *pinfo, proto_tree *tree)
4534 proto_tree *sub_tree;
4536 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Initiate Download Sequence Response");
4538 if (!tree) {
4539 return;
4542 if (length) {
4543 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4544 ett_ff_fms_gen_init_download_seq_rep, NULL, "FMS Generic Initiate Download Sequence Response");
4546 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4553 * 6.5.3.11.3. Error Message Parameters
4555 static void
4556 dissect_ff_msg_fms_generic_init_download_sequence_err(
4557 tvbuff_t *tvb, int offset,
4558 uint32_t length, packet_info *pinfo, proto_tree *tree)
4560 proto_tree *sub_tree;
4561 uint8_t ErrorClass;
4562 uint8_t ErrorCode;
4563 const char *error_code;
4565 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Initiate Download Sequence Error");
4567 if (!tree) {
4568 return;
4571 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4572 ett_ff_fms_gen_init_download_seq_err, NULL, "FMS Generic Initiate Download Sequence Error");
4574 ErrorClass = tvb_get_uint8(tvb, offset);
4575 proto_tree_add_item(sub_tree,
4576 hf_ff_fms_gen_init_download_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4577 offset += 1;
4578 length -= 1;
4580 ErrorCode = tvb_get_uint8(tvb, offset);
4581 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4582 proto_tree_add_uint_format_value(sub_tree,
4583 hf_ff_fms_gen_init_download_seq_err_err_code,
4584 tvb, offset, 1, ErrorCode,
4585 "%s (%u)", error_code, ErrorCode);
4586 offset += 1;
4587 length -= 1;
4589 proto_tree_add_item(sub_tree,
4590 hf_ff_fms_gen_init_download_seq_err_additional_code,
4591 tvb, offset, 2, ENC_BIG_ENDIAN);
4592 offset += 2;
4593 length -= 2;
4595 proto_tree_add_item(sub_tree,
4596 hf_ff_fms_gen_init_download_seq_err_additional_desc,
4597 tvb, offset, 16, ENC_ASCII);
4598 offset += 16;
4599 length -= 16;
4601 if (length) {
4602 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4609 * 6.5.3.12. FMS Generic Download Segment (Confirmed Service Id = 32)
4610 * 6.5.3.12.1. Request Message Parameters
4612 static void
4613 dissect_ff_msg_fms_generic_download_segment_req(
4614 tvbuff_t *tvb, int offset,
4615 uint32_t length, packet_info *pinfo, proto_tree *tree)
4617 proto_tree *sub_tree;
4619 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Download Segment Request");
4621 if (!tree) {
4622 return;
4625 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4626 ett_ff_fms_gen_download_seg_req, NULL, "FMS Generic Download Segment Request");
4628 proto_tree_add_item(sub_tree,
4629 hf_ff_fms_gen_download_seg_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
4630 offset += 4;
4631 length -= 4;
4633 proto_tree_add_item(sub_tree,
4634 hf_ff_fms_gen_download_seg_req_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
4635 offset += 1;
4636 length -= 1;
4638 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
4639 offset += 3;
4640 length -= 3;
4642 if (length) {
4643 proto_tree_add_item(sub_tree, hf_ff_fms_gen_download_seg_req_load_data, tvb, offset, length, ENC_NA);
4650 * 6.5.3.12.2. Response Message Parameters
4652 static void
4653 dissect_ff_msg_fms_generic_download_segment_rsp(
4654 tvbuff_t *tvb, int offset,
4655 uint32_t length, packet_info *pinfo, proto_tree *tree)
4657 proto_tree *sub_tree;
4659 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Download Segment Response");
4661 if (!tree) {
4662 return;
4665 if (length) {
4666 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4667 ett_ff_fms_gen_download_seg_rsp, NULL, "FMS Generic Download Segment Response");
4669 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4676 * 6.5.3.12.3. Error Message Parameters
4678 static void
4679 dissect_ff_msg_fms_generic_download_segment_err(
4680 tvbuff_t *tvb, int offset,
4681 uint32_t length, packet_info *pinfo, proto_tree *tree)
4683 proto_tree *sub_tree;
4684 uint8_t ErrorClass;
4685 uint8_t ErrorCode;
4686 const char *error_code;
4688 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Download Segment Error");
4690 if (!tree) {
4691 return;
4694 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4695 ett_ff_fms_gen_download_seg_err, NULL, "FMS Generic Download Segment Error");
4697 ErrorClass = tvb_get_uint8(tvb, offset);
4698 proto_tree_add_item(sub_tree,
4699 hf_ff_fms_gen_download_seg_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4700 offset += 1;
4701 length -= 1;
4703 ErrorCode = tvb_get_uint8(tvb, offset);
4704 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4705 proto_tree_add_uint_format_value(sub_tree,
4706 hf_ff_fms_gen_download_seg_err_err_code,
4707 tvb, offset, 1, ErrorCode,
4708 "%s (%u)", error_code, ErrorCode);
4709 offset += 1;
4710 length -= 1;
4712 proto_tree_add_item(sub_tree,
4713 hf_ff_fms_gen_download_seg_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4714 offset += 2;
4715 length -= 2;
4717 proto_tree_add_item(sub_tree,
4718 hf_ff_fms_gen_download_seg_err_additional_desc,
4719 tvb, offset, 16, ENC_ASCII);
4720 offset += 16;
4721 length -= 16;
4723 if (length) {
4724 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4731 * 6.5.3.13. FMS Generic Terminate Download Sequence
4732 * (Confirmed Service Id = 33)
4733 * 6.5.3.13.1. Request Message Parameters
4735 static void
4736 dissect_ff_msg_fms_generic_terminate_download_sequence_req(
4737 tvbuff_t *tvb, int offset,
4738 uint32_t length, packet_info *pinfo, proto_tree *tree)
4740 proto_tree *sub_tree;
4742 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Terminate Download Sequence Request");
4744 if (!tree) {
4745 return;
4748 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4749 ett_ff_fms_gen_terminate_download_seq_req, NULL, "FMS Generic Terminate Download Sequence Request");
4751 proto_tree_add_item(sub_tree,
4752 hf_ff_fms_gen_terminate_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
4753 offset += 4;
4754 length -= 4;
4756 if (length) {
4757 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4764 * 6.5.3.13.2. Response Message Parameters
4766 static void
4767 dissect_ff_msg_fms_generic_terminate_download_sequence_rsp(
4768 tvbuff_t *tvb, int offset,
4769 uint32_t length, packet_info *pinfo, proto_tree *tree)
4771 proto_tree *sub_tree;
4773 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Terminate Download Sequence Response");
4775 if (!tree) {
4776 return;
4779 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4780 ett_ff_fms_gen_terminate_download_seq_rsp, NULL, "FMS Generic Terminate Download Sequence Response");
4782 proto_tree_add_item(sub_tree,
4783 hf_ff_fms_gen_terminate_download_seq_rsp_final_result,
4784 tvb, offset, 1, ENC_BIG_ENDIAN);
4785 offset += 1;
4786 length -= 1;
4788 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
4789 offset += 3;
4790 length -= 3;
4792 if (length) {
4793 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4800 * 6.5.3.13.3. Error Message Parameters
4802 static void
4803 dissect_ff_msg_fms_generic_terminate_download_sequence_err(
4804 tvbuff_t *tvb, int offset,
4805 uint32_t length, packet_info *pinfo, proto_tree *tree)
4807 proto_tree *sub_tree;
4808 uint8_t ErrorClass;
4809 uint8_t ErrorCode;
4810 const char *error_code;
4812 col_set_str(pinfo->cinfo, COL_INFO, "FMS Generic Terminate Download Sequence Error");
4814 if (!tree) {
4815 return;
4818 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4819 ett_ff_fms_gen_terminate_download_seq_err, NULL, "FMS Generic Terminate Download Sequence Error");
4821 ErrorClass = tvb_get_uint8(tvb, offset);
4822 proto_tree_add_item(sub_tree,
4823 hf_ff_fms_gen_terminate_download_seq_err_err_class,
4824 tvb, offset, 1, ENC_BIG_ENDIAN);
4825 offset += 1;
4826 length -= 1;
4828 ErrorCode = tvb_get_uint8(tvb, offset);
4829 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4830 proto_tree_add_uint_format_value(sub_tree,
4831 hf_ff_fms_gen_terminate_download_seq_err_err_code,
4832 tvb, offset, 1, ErrorCode,
4833 "%s (%u)", error_code, ErrorCode);
4834 offset += 1;
4835 length -= 1;
4837 proto_tree_add_item(sub_tree,
4838 hf_ff_fms_gen_terminate_download_seq_err_additional_code,
4839 tvb, offset, 2, ENC_BIG_ENDIAN);
4840 offset += 2;
4841 length -= 2;
4843 proto_tree_add_item(sub_tree,
4844 hf_ff_fms_gen_terminate_download_seq_err_additional_desc,
4845 tvb, offset, 16, ENC_ASCII);
4846 offset += 16;
4847 length -= 16;
4849 if (length) {
4850 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4857 * 6.5.3.14. FMS Initiate Download Sequence (Confirmed Service Id = 9)
4858 * 6.5.3.14.1. Request Message Parameters
4860 static void
4861 dissect_ff_msg_fms_init_download_sequence_req(
4862 tvbuff_t *tvb, int offset,
4863 uint32_t length, packet_info *pinfo, proto_tree *tree)
4865 proto_tree *sub_tree;
4867 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Download Sequence Request");
4869 if (!tree) {
4870 return;
4873 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4874 ett_ff_fms_init_download_seq_req, NULL, "FMS Initiate Download Sequence Request");
4876 proto_tree_add_item(sub_tree,
4877 hf_ff_fms_init_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
4878 offset += 4;
4879 length -= 4;
4881 if (length) {
4882 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4889 * 6.5.3.14.2. Response Message Parameters
4891 static void
4892 dissect_ff_msg_fms_init_download_sequence_rsp(
4893 tvbuff_t *tvb, int offset,
4894 uint32_t length, packet_info *pinfo, proto_tree *tree)
4896 proto_tree *sub_tree;
4898 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Download Sequence Response");
4900 if (!tree) {
4901 return;
4904 if (length) {
4905 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4906 ett_ff_fms_init_download_seq_rsp, NULL, "FMS Initiate Download Sequence Response");
4908 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4915 * 6.5.3.14.3. Error Message Parameters
4917 static void
4918 dissect_ff_msg_fms_init_download_sequence_err(
4919 tvbuff_t *tvb, int offset,
4920 uint32_t length, packet_info *pinfo, proto_tree *tree)
4922 proto_tree *sub_tree;
4923 uint8_t ErrorClass;
4924 uint8_t ErrorCode;
4925 const char *error_code;
4927 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Download Sequence Error");
4929 if (!tree) {
4930 return;
4933 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4934 ett_ff_fms_init_download_seq_err, NULL, "FMS Initiate Download Sequence Error");
4936 ErrorClass = tvb_get_uint8(tvb, offset);
4937 proto_tree_add_item(sub_tree,
4938 hf_ff_fms_init_download_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
4939 offset += 1;
4940 length -= 1;
4942 ErrorCode = tvb_get_uint8(tvb, offset);
4943 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
4944 proto_tree_add_uint_format_value(sub_tree,
4945 hf_ff_fms_init_download_seq_err_err_code,
4946 tvb, offset, 1, ErrorCode,
4947 "%s (%u)", error_code, ErrorCode);
4948 offset += 1;
4949 length -= 1;
4951 proto_tree_add_item(sub_tree,
4952 hf_ff_fms_init_download_seq_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
4953 offset += 2;
4954 length -= 2;
4956 proto_tree_add_item(sub_tree,
4957 hf_ff_fms_init_download_seq_err_additional_desc,
4958 tvb, offset, 16, ENC_ASCII);
4959 offset += 16;
4960 length -= 16;
4962 if (length) {
4963 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
4970 * 6.5.3.15. FMS Download Segment (Confirmed Service Id = 10)
4971 * 6.5.3.15.1. Request Message Parameters
4973 static void
4974 dissect_ff_msg_fms_download_segment_req(tvbuff_t *tvb, int offset,
4975 uint32_t length, packet_info *pinfo, proto_tree *tree)
4977 proto_tree *sub_tree;
4979 col_set_str(pinfo->cinfo, COL_INFO, "FMS Download Segment Request");
4981 if (!tree) {
4982 return;
4985 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
4986 ett_ff_fms_download_seg_req, NULL, "FMS Download Segment Request");
4988 proto_tree_add_item(sub_tree,
4989 hf_ff_fms_download_seg_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
4990 offset += 4;
4991 length -= 4;
4993 if (length) {
4994 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5001 * 6.5.3.15.2. Response Message Parameters
5003 static void
5004 dissect_ff_msg_fms_download_segment_rsp(tvbuff_t *tvb, int offset,
5005 uint32_t length, packet_info *pinfo, proto_tree *tree)
5007 proto_tree *sub_tree;
5009 col_set_str(pinfo->cinfo, COL_INFO, "FMS Download Segment Response");
5011 if (!tree) {
5012 return;
5015 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5016 ett_ff_fms_download_seg_rsp, NULL, "FMS Download Segment Response");
5018 proto_tree_add_item(sub_tree,
5019 hf_ff_fms_download_seg_rsp_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
5020 offset += 1;
5021 length -= 1;
5023 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
5024 offset += 3;
5025 length -= 3;
5027 if (length) {
5028 proto_tree_add_item(sub_tree, hf_ff_fms_download_seg_rsp_load_data, tvb, offset, length, ENC_NA);
5035 * 6.5.3.15.3. Error Message Parameters
5037 static void
5038 dissect_ff_msg_fms_download_segment_err(tvbuff_t *tvb, int offset,
5039 uint32_t length, packet_info *pinfo, proto_tree *tree)
5041 proto_tree *sub_tree;
5042 uint8_t ErrorClass;
5043 uint8_t ErrorCode;
5044 const char *error_code;
5046 col_set_str(pinfo->cinfo, COL_INFO, "FMS Download Segment Error");
5048 if (!tree) {
5049 return;
5052 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5053 ett_ff_fms_download_seg_err, NULL, "FMS Download Segment Error");
5055 ErrorClass = tvb_get_uint8(tvb, offset);
5056 proto_tree_add_item(sub_tree,
5057 hf_ff_fms_download_seg_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5058 offset += 1;
5059 length -= 1;
5061 ErrorCode = tvb_get_uint8(tvb, offset);
5062 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5063 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_download_seg_err_err_code,
5064 tvb, offset, 1, ErrorCode,
5065 "%s (%u)", error_code, ErrorCode);
5066 offset += 1;
5067 length -= 1;
5069 proto_tree_add_item(sub_tree,
5070 hf_ff_fms_download_seg_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5071 offset += 2;
5072 length -= 2;
5074 proto_tree_add_item(sub_tree,
5075 hf_ff_fms_download_seg_err_additional_desc,
5076 tvb, offset, 16, ENC_ASCII);
5077 offset += 16;
5078 length -= 16;
5080 if (length) {
5081 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5088 * 6.5.3.16. FMS Terminate Download Sequence (Confirmed Service Id = 11)
5089 * 6.5.3.16.1. Request Message Parameters
5091 static void
5092 dissect_ff_msg_fms_terminate_download_sequence_req(
5093 tvbuff_t *tvb, int offset,
5094 uint32_t length, packet_info *pinfo, proto_tree *tree)
5096 proto_tree *sub_tree;
5098 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Download Sequence Request");
5100 if (!tree) {
5101 return;
5104 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5105 ett_ff_fms_terminate_download_seq_req, NULL, "FMS Terminate Download Sequence Request");
5107 proto_tree_add_item(sub_tree,
5108 hf_ff_fms_terminate_download_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5109 offset += 4;
5110 length -= 4;
5112 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
5113 offset += 3;
5114 length -= 3;
5116 proto_tree_add_item(sub_tree,
5117 hf_ff_fms_terminate_download_seq_req_final_result,
5118 tvb, offset, 1, ENC_BIG_ENDIAN);
5119 offset += 1;
5120 length -= 1;
5122 if (length) {
5123 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5130 * 6.5.3.16.2. Response Message Parameters
5132 static void
5133 dissect_ff_msg_fms_terminate_download_sequence_rsp(
5134 tvbuff_t *tvb, int offset,
5135 uint32_t length, packet_info *pinfo, proto_tree *tree)
5137 proto_tree *sub_tree;
5139 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Download Sequence Response");
5141 if (!tree) {
5142 return;
5145 if (length) {
5146 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5147 ett_ff_fms_terminate_download_seq_rsp, NULL, "FMS Terminate Download Sequence Response");
5149 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5156 * 6.5.3.16.3. Error Message Parameters
5158 static void
5159 dissect_ff_msg_fms_terminate_download_sequence_err(
5160 tvbuff_t *tvb, int offset,
5161 uint32_t length, packet_info *pinfo, proto_tree *tree)
5163 proto_tree *sub_tree;
5164 uint8_t ErrorClass;
5165 uint8_t ErrorCode;
5166 const char *error_code;
5168 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Download Sequence Error");
5170 if (!tree) {
5171 return;
5174 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5175 ett_ff_fms_terminate_download_seq_err, NULL, "FMS Terminate Download Sequence Error");
5177 ErrorClass = tvb_get_uint8(tvb, offset);
5178 proto_tree_add_item(sub_tree,
5179 hf_ff_fms_terminate_download_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5180 offset += 1;
5181 length -= 1;
5183 ErrorCode = tvb_get_uint8(tvb, offset);
5184 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5185 proto_tree_add_uint_format_value(sub_tree,
5186 hf_ff_fms_terminate_download_seq_err_err_code,
5187 tvb, offset, 1, ErrorCode,
5188 "%s (%u)", error_code, ErrorCode);
5189 offset += 1;
5190 length -= 1;
5192 proto_tree_add_item(sub_tree,
5193 hf_ff_fms_terminate_download_seq_err_additional_code,
5194 tvb, offset, 2, ENC_BIG_ENDIAN);
5195 offset += 2;
5196 length -= 2;
5198 proto_tree_add_item(sub_tree,
5199 hf_ff_fms_terminate_download_seq_err_additional_desc,
5200 tvb, offset, 16, ENC_ASCII);
5201 offset += 16;
5202 length -= 16;
5204 if (length) {
5205 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5212 * 6.5.3.17. FMS Initiate Upload Sequence (Confirmed Service Id = 12)
5213 * 6.5.3.17.1. Request Message Parameters
5215 static void
5216 dissect_ff_msg_fms_init_upload_seq_req(
5217 tvbuff_t *tvb, int offset,
5218 uint32_t length, packet_info *pinfo, proto_tree *tree)
5220 proto_tree *sub_tree;
5222 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Upload Sequence Request");
5224 if (!tree) {
5225 return;
5228 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5229 ett_ff_fms_init_upload_seq_req, NULL, "FMS Initiate Upload Sequence Request");
5231 proto_tree_add_item(sub_tree,
5232 hf_ff_fms_init_upload_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5233 offset += 4;
5234 length -= 4;
5236 if (length) {
5237 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5244 * 6.5.3.17.2. Response Message Parameters
5246 static void
5247 dissect_ff_msg_fms_init_upload_seq_rsp(
5248 tvbuff_t *tvb, int offset,
5249 uint32_t length, packet_info *pinfo, proto_tree *tree)
5251 proto_tree *sub_tree;
5253 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Upload Sequence Response");
5255 if (!tree) {
5256 return;
5259 if (length) {
5260 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5261 ett_ff_fms_init_upload_seq_rsp, NULL, "FMS Initiate Upload Sequence Response");
5263 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5270 * 6.5.3.17.3. Error Message Parameters
5272 static void
5273 dissect_ff_msg_fms_init_upload_seq_err(
5274 tvbuff_t *tvb, int offset,
5275 uint32_t length, packet_info *pinfo, proto_tree *tree)
5277 proto_tree *sub_tree;
5278 uint8_t ErrorClass;
5279 uint8_t ErrorCode;
5280 const char *error_code;
5282 col_set_str(pinfo->cinfo, COL_INFO, "FMS Initiate Upload Sequence Error");
5284 if (!tree) {
5285 return;
5288 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5289 ett_ff_fms_init_upload_seq_err, NULL, "FMS Initiate Upload Sequence Error");
5291 ErrorClass = tvb_get_uint8(tvb, offset);
5292 proto_tree_add_item(sub_tree,
5293 hf_ff_fms_init_upload_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5294 offset += 1;
5295 length -= 1;
5297 ErrorCode = tvb_get_uint8(tvb, offset);
5298 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5299 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_init_upload_seq_err_err_code,
5300 tvb, offset, 1, ErrorCode,
5301 "%s (%u)", error_code, ErrorCode);
5302 offset += 1;
5303 length -= 1;
5305 proto_tree_add_item(sub_tree,
5306 hf_ff_fms_init_upload_seq_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5307 offset += 2;
5308 length -= 2;
5310 proto_tree_add_item(sub_tree, hf_ff_fms_init_upload_seq_err_additional_desc,
5311 tvb, offset, 16, ENC_ASCII);
5312 offset += 16;
5313 length -= 16;
5315 if (length) {
5316 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5323 * 6.5.3.18. FMS Upload Segment (Confirmed Service Id = 13)
5324 * 6.5.3.18.1. Request Message Parameters
5326 static void
5327 dissect_ff_msg_fms_upload_segment_req(tvbuff_t *tvb, int offset,
5328 uint32_t length, packet_info *pinfo, proto_tree *tree)
5330 proto_tree *sub_tree;
5332 col_set_str(pinfo->cinfo, COL_INFO, "FMS Upload Segment Request");
5334 if (!tree) {
5335 return;
5338 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5339 ett_ff_fms_upload_seg_req, NULL, "FMS Upload Segment Request");
5341 proto_tree_add_item(sub_tree,
5342 hf_ff_fms_upload_seg_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5343 offset += 4;
5344 length -= 4;
5346 if (length) {
5347 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5354 * 6.5.3.18.2. Response Message Parameters
5356 static void
5357 dissect_ff_msg_fms_upload_segment_rsp(tvbuff_t *tvb, int offset,
5358 uint32_t length, packet_info *pinfo, proto_tree *tree)
5360 proto_tree *sub_tree;
5362 col_set_str(pinfo->cinfo, COL_INFO, "FMS Upload Segment Response");
5364 if (!tree) {
5365 return;
5368 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5369 ett_ff_fms_upload_seg_rsp, NULL, "FMS Upload Segment Response");
5371 proto_tree_add_item(sub_tree,
5372 hf_ff_fms_upload_seg_rsp_more_follows, tvb, offset, 1, ENC_BIG_ENDIAN);
5373 offset += 1;
5374 length -= 1;
5376 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
5377 offset += 3;
5378 length -= 3;
5380 if (length) {
5381 proto_tree_add_item(sub_tree, hf_ff_fms_upload_seg_rsp_final_result, tvb, offset, length, ENC_NA);
5388 * 6.5.3.18.3. Error Message Parameters
5390 static void
5391 dissect_ff_msg_fms_upload_segment_err(tvbuff_t *tvb, int offset,
5392 uint32_t length, packet_info *pinfo, proto_tree *tree)
5394 proto_tree *sub_tree;
5395 uint8_t ErrorClass;
5396 uint8_t ErrorCode;
5397 const char *error_code;
5399 col_set_str(pinfo->cinfo, COL_INFO, "FMS Upload Segment Error");
5401 if (!tree) {
5402 return;
5405 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5406 ett_ff_fms_upload_seg_err, NULL, "FMS Upload Segment Error");
5408 ErrorClass = tvb_get_uint8(tvb, offset);
5409 proto_tree_add_item(sub_tree,
5410 hf_ff_fms_upload_seg_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5411 offset += 1;
5412 length -= 1;
5414 ErrorCode = tvb_get_uint8(tvb, offset);
5415 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5416 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_upload_seg_err_err_code,
5417 tvb, offset, 1, ErrorCode,
5418 "%s (%u)", error_code, ErrorCode);
5419 offset += 1;
5420 length -= 1;
5422 proto_tree_add_item(sub_tree,
5423 hf_ff_fms_upload_seg_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5424 offset += 2;
5425 length -= 2;
5427 proto_tree_add_item(sub_tree,
5428 hf_ff_fms_upload_seg_err_additional_desc,
5429 tvb, offset, 16, ENC_ASCII);
5430 offset += 16;
5431 length -= 16;
5433 if (length) {
5434 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5441 * 6.5.3.19. FMS Terminate Upload Sequence (Confirmed Service Id = 14)
5442 * 6.5.3.19.1. Request Message Parameters
5444 static void
5445 dissect_ff_msg_fms_terminate_upload_seq_req(
5446 tvbuff_t *tvb, int offset,
5447 uint32_t length, packet_info *pinfo, proto_tree *tree)
5449 proto_tree *sub_tree;
5451 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Upload Sequence Request");
5453 if (!tree) {
5454 return;
5457 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5458 ett_ff_fms_terminate_upload_seq_req, NULL, "FMS Terminate Upload Sequence Request");
5460 proto_tree_add_item(sub_tree,
5461 hf_ff_fms_terminate_upload_seq_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5462 offset += 4;
5463 length -= 4;
5465 if (length) {
5466 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5473 * 6.5.3.19.2. Response Message Parameters
5475 static void
5476 dissect_ff_msg_fms_terminate_upload_seq_rsp(
5477 tvbuff_t *tvb, int offset,
5478 uint32_t length, packet_info *pinfo, proto_tree *tree)
5480 proto_tree *sub_tree;
5482 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Upload Sequence Response");
5484 if (!tree) {
5485 return;
5488 if (length) {
5489 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5490 ett_ff_fms_terminate_upload_seq_rsp, NULL, "FMS Terminate Upload Sequence Response");
5492 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5499 * 6.5.3.19.3. Error Message Parameters
5501 static void
5502 dissect_ff_msg_fms_terminate_upload_seq_err(
5503 tvbuff_t *tvb, int offset,
5504 uint32_t length, packet_info *pinfo, proto_tree *tree)
5506 proto_tree *sub_tree;
5507 uint8_t ErrorClass;
5508 uint8_t ErrorCode;
5509 const char *error_code;
5511 col_set_str(pinfo->cinfo, COL_INFO, "FMS Terminate Upload Sequence Error");
5513 if (!tree) {
5514 return;
5517 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5518 ett_ff_fms_terminate_upload_seq_err, NULL, "FMS Terminate Upload Sequence Error");
5520 ErrorClass = tvb_get_uint8(tvb, offset);
5521 proto_tree_add_item(sub_tree,
5522 hf_ff_fms_terminate_upload_seq_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5523 offset += 1;
5524 length -= 1;
5526 ErrorCode = tvb_get_uint8(tvb, offset);
5527 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5528 proto_tree_add_uint_format_value(sub_tree,
5529 hf_ff_fms_terminate_upload_seq_err_err_code,
5530 tvb, offset, 1, ErrorCode,
5531 "%s (%u)", error_code, ErrorCode);
5532 offset += 1;
5533 length -= 1;
5535 proto_tree_add_item(sub_tree,
5536 hf_ff_fms_terminate_upload_seq_err_additional_code,
5537 tvb, offset, 2, ENC_BIG_ENDIAN);
5538 offset += 2;
5539 length -= 2;
5541 proto_tree_add_item(sub_tree,
5542 hf_ff_fms_terminate_upload_seq_err_additional_desc,
5543 tvb, offset, 16, ENC_ASCII);
5544 offset += 16;
5545 length -= 16;
5547 if (length) {
5548 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5555 * 6.5.3.20. FMS Request Domain Download (Confirmed Service Id = 15)
5556 * 6.5.3.20.1. Request Message Parameters
5558 static void
5559 dissect_ff_msg_fms_req_dom_download_req(
5560 tvbuff_t *tvb, int offset,
5561 uint32_t length, packet_info *pinfo, proto_tree *tree)
5563 proto_tree *sub_tree;
5565 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Download Request");
5567 if (!tree) {
5568 return;
5571 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5572 ett_ff_fms_req_dom_download_req, NULL, "FMS Request Domain Download Request");
5574 proto_tree_add_item(sub_tree,
5575 hf_ff_fms_req_dom_download_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5576 offset += 4;
5577 length -= 4;
5579 if (length) {
5580 proto_tree_add_item(sub_tree,
5581 hf_ff_fms_req_dom_download_req_additional_info,
5582 tvb, offset, length, ENC_ASCII);
5589 * 6.5.3.20.2. Response Message Parameters
5591 static void
5592 dissect_ff_msg_fms_req_dom_download_rsp(
5593 tvbuff_t *tvb, int offset,
5594 uint32_t length, packet_info *pinfo, proto_tree *tree)
5596 proto_tree *sub_tree;
5598 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Download Response");
5600 if (!tree) {
5601 return;
5604 if (length) {
5605 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5606 ett_ff_fms_req_dom_download_rsp, NULL, "FMS Request Domain Download Response");
5608 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5615 * 6.5.3.20.3. Error Message Parameters
5617 static void
5618 dissect_ff_msg_fms_req_dom_download_err(
5619 tvbuff_t *tvb, int offset,
5620 uint32_t length, packet_info *pinfo, proto_tree *tree)
5622 proto_tree *sub_tree;
5623 uint8_t ErrorClass;
5624 uint8_t ErrorCode;
5625 const char *error_code;
5627 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Download Error");
5629 if (!tree) {
5630 return;
5633 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5634 ett_ff_fms_req_dom_download_err, NULL, "FMS Request Domain Download Error");
5636 ErrorClass = tvb_get_uint8(tvb, offset);
5637 proto_tree_add_item(sub_tree,
5638 hf_ff_fms_req_dom_download_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5639 offset += 1;
5640 length -= 1;
5642 ErrorCode = tvb_get_uint8(tvb, offset);
5643 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5644 proto_tree_add_uint_format_value(sub_tree,
5645 hf_ff_fms_req_dom_download_err_err_code,
5646 tvb, offset, 1, ErrorCode,
5647 "%s (%u)", error_code, ErrorCode);
5648 offset += 1;
5649 length -= 1;
5651 proto_tree_add_item(sub_tree,
5652 hf_ff_fms_req_dom_download_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5653 offset += 2;
5654 length -= 2;
5656 proto_tree_add_item(sub_tree,
5657 hf_ff_fms_req_dom_download_err_additional_desc,
5658 tvb, offset, 16, ENC_ASCII);
5659 offset += 16;
5660 length -= 16;
5662 if (length) {
5663 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5670 * 6.5.3.21. FMS Request Domain Upload (Confirmed Service Id = 16)
5671 * 6.5.3.21.1. Request Message Parameters
5673 static void
5674 dissect_ff_msg_fms_req_dom_upload_req(
5675 tvbuff_t *tvb, int offset,
5676 uint32_t length, packet_info *pinfo, proto_tree *tree)
5678 proto_tree *sub_tree;
5680 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Upload Request");
5682 if (!tree) {
5683 return;
5686 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5687 ett_ff_fms_req_dom_upload_req, NULL, "FMS Request Domain Upload Request");
5689 proto_tree_add_item(sub_tree,
5690 hf_ff_fms_req_dom_upload_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5691 offset += 4;
5692 length -= 4;
5694 if (length) {
5695 proto_tree_add_item(sub_tree,
5696 hf_ff_fms_req_dom_upload_req_additional_info,
5697 tvb, offset, length, ENC_ASCII);
5704 * 6.5.3.21.2. Response Message Parameters
5706 static void
5707 dissect_ff_msg_fms_req_dom_upload_rsp(
5708 tvbuff_t *tvb, int offset,
5709 uint32_t length, packet_info *pinfo, proto_tree *tree)
5711 proto_tree *sub_tree;
5713 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Upload Response");
5715 if (!tree) {
5716 return;
5719 if (length) {
5720 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5721 ett_ff_fms_req_dom_upload_rsp, NULL, "FMS Request Domain Upload Response");
5723 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5730 * 6.5.3.21.3. Error Message Parameters
5732 static void
5733 dissect_ff_msg_fms_req_dom_upload_err(
5734 tvbuff_t *tvb, int offset,
5735 uint32_t length, packet_info *pinfo, proto_tree *tree)
5737 proto_tree *sub_tree;
5738 uint8_t ErrorClass;
5739 uint8_t ErrorCode;
5740 const char *error_code;
5742 col_set_str(pinfo->cinfo, COL_INFO, "FMS Request Domain Upload Error");
5744 if (!tree) {
5745 return;
5748 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5749 ett_ff_fms_req_dom_upload_err, NULL, "FMS Request Domain Upload Error");
5751 ErrorClass = tvb_get_uint8(tvb, offset);
5752 proto_tree_add_item(sub_tree,
5753 hf_ff_fms_req_dom_upload_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5754 offset += 1;
5755 length -= 1;
5757 ErrorCode = tvb_get_uint8(tvb, offset);
5758 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5759 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_req_dom_upload_err_err_code,
5760 tvb, offset, 1, ErrorCode,
5761 "%s (%u)", error_code, ErrorCode);
5762 offset += 1;
5763 length -= 1;
5765 proto_tree_add_item(sub_tree,
5766 hf_ff_fms_req_dom_upload_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5767 offset += 2;
5768 length -= 2;
5770 proto_tree_add_item(sub_tree,
5771 hf_ff_fms_req_dom_upload_err_additional_desc,
5772 tvb, offset, 16, ENC_ASCII);
5773 offset += 16;
5774 length -= 16;
5776 if (length) {
5777 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5784 * 6.5.3.22. FMS Create Program Invocation (Confirmed Service Id = 17)
5785 * 6.5.3.22.1. Request Message Parameters
5787 static void
5788 dissect_ff_msg_fms_create_pi_req_dom_idxes(tvbuff_t *tvb,
5789 int offset, proto_tree *tree, uint16_t value)
5791 proto_tree *sub_tree;
5792 unsigned d;
5794 if (!tree) {
5795 return;
5798 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
5799 ett_ff_fms_create_pi_req_list_of_dom_idxes, NULL, "List Of Domain Indexes (%u bytes)", 4 * value);
5801 for (d = 0; d < value; d++) {
5802 proto_tree_add_item(sub_tree,
5803 hf_ff_fms_create_pi_req_dom_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5805 offset += 4;
5811 static void
5812 dissect_ff_msg_fms_create_pi_req(tvbuff_t *tvb, int offset,
5813 uint32_t length, packet_info *pinfo, proto_tree *tree)
5815 proto_tree *sub_tree;
5816 uint16_t NumOfDomIdxes;
5818 col_set_str(pinfo->cinfo, COL_INFO, "FMS Create Program Invocation Request");
5820 if (!tree) {
5821 return;
5824 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5825 ett_ff_fms_create_pi_req, NULL, "FMS Create Program Invocation Request");
5827 proto_tree_add_item(sub_tree,
5828 hf_ff_fms_create_pi_req_reusable, tvb, offset, 1, ENC_BIG_ENDIAN);
5829 offset += 1;
5830 length -= 1;
5832 proto_tree_add_item(sub_tree,
5833 hf_ff_fms_create_pi_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
5834 offset += 1;
5835 length -= 1;
5837 NumOfDomIdxes = tvb_get_ntohs(tvb, offset);
5838 proto_tree_add_item(sub_tree,
5839 hf_ff_fms_create_pi_req_num_of_dom_idxes, tvb, offset, 2, ENC_BIG_ENDIAN);
5840 offset += 2;
5841 length -= 2;
5843 if (NumOfDomIdxes) {
5844 dissect_ff_msg_fms_create_pi_req_dom_idxes(tvb,
5845 offset, sub_tree, NumOfDomIdxes);
5847 offset += 4 * NumOfDomIdxes;
5848 length -= 4 * NumOfDomIdxes;
5851 if (length) {
5852 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5859 * 6.5.3.22.2. Response Message Parameters
5861 static void
5862 dissect_ff_msg_fms_create_pi_rsp(tvbuff_t *tvb, int offset,
5863 uint32_t length, packet_info *pinfo, proto_tree *tree)
5865 proto_tree *sub_tree;
5867 col_set_str(pinfo->cinfo, COL_INFO, "FMS Create Program Invocation Response");
5869 if (!tree) {
5870 return;
5873 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5874 ett_ff_fms_create_pi_rsp, NULL, "FMS Create Program Invocation Response");
5876 proto_tree_add_item(sub_tree,
5877 hf_ff_fms_create_pi_rsp_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5878 offset += 4;
5879 length -= 4;
5881 if (length) {
5882 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5889 * 6.5.3.22.3. Error Message Parameters
5891 static void
5892 dissect_ff_msg_fms_create_pi_err(tvbuff_t *tvb, int offset,
5893 uint32_t length, packet_info *pinfo, proto_tree *tree)
5895 proto_tree *sub_tree;
5896 uint8_t ErrorClass;
5897 uint8_t ErrorCode;
5898 const char *error_code;
5900 col_set_str(pinfo->cinfo, COL_INFO, "FMS Create Program Invocation Error");
5902 if (!tree) {
5903 return;
5906 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5907 ett_ff_fms_create_pi_err, NULL, "FMS Create Program Invocation Error");
5909 ErrorClass = tvb_get_uint8(tvb, offset);
5910 proto_tree_add_item(sub_tree,
5911 hf_ff_fms_create_pi_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
5912 offset += 1;
5913 length -= 1;
5915 ErrorCode = tvb_get_uint8(tvb, offset);
5916 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
5917 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_create_pi_err_err_code,
5918 tvb, offset, 1, ErrorCode,
5919 "%s (%u)", error_code, ErrorCode);
5920 offset += 1;
5921 length -= 1;
5923 proto_tree_add_item(sub_tree,
5924 hf_ff_fms_create_pi_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
5925 offset += 2;
5926 length -= 2;
5928 proto_tree_add_item(sub_tree,
5929 hf_ff_fms_create_pi_err_additional_desc,
5930 tvb, offset, 16, ENC_ASCII);
5931 offset += 16;
5932 length -= 16;
5934 if (length) {
5935 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5942 * 6.5.3.23. FMS Delete Program Invocation (Confirmed Service Id = 18)
5943 * 6.5.3.23.1. Request Message Parameters
5945 static void
5946 dissect_ff_msg_fms_del_pi_req(tvbuff_t *tvb, int offset,
5947 uint32_t length, packet_info *pinfo, proto_tree *tree)
5949 proto_tree *sub_tree;
5951 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Program Invocation Request");
5953 if (!tree) {
5954 return;
5957 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5958 ett_ff_fms_del_pi_req, NULL, "FMS Delete Program Invocation Request");
5960 proto_tree_add_item(sub_tree,
5961 hf_ff_fms_del_pi_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
5962 offset += 4;
5963 length -= 4;
5965 if (length) {
5966 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5973 * 6.5.3.23.2. Response Message Parameters
5975 static void
5976 dissect_ff_msg_fms_del_pi_rsp(tvbuff_t *tvb, int offset,
5977 uint32_t length, packet_info *pinfo, proto_tree *tree)
5979 proto_tree *sub_tree;
5981 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Program Invocation Response");
5983 if (!tree) {
5984 return;
5987 if (length) {
5988 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
5989 ett_ff_fms_del_pi_rsp, NULL, "FMS Delete Program Invocation Response");
5991 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
5998 * 6.5.3.23.3. Error Message Parameters
6000 static void
6001 dissect_ff_msg_fms_del_pi_err(tvbuff_t *tvb, int offset,
6002 uint32_t length, packet_info *pinfo, proto_tree *tree)
6004 proto_tree *sub_tree;
6005 uint8_t ErrorClass;
6006 uint8_t ErrorCode;
6007 const char *error_code;
6009 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Program Invocation Error");
6011 if (!tree) {
6012 return;
6015 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6016 ett_ff_fms_del_pi_err, NULL, "FMS Delete Program Invocation Error");
6018 ErrorClass = tvb_get_uint8(tvb, offset);
6019 proto_tree_add_item(sub_tree,
6020 hf_ff_fms_del_pi_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6021 offset += 1;
6022 length -= 1;
6024 ErrorCode = tvb_get_uint8(tvb, offset);
6025 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6026 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_del_pi_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_del_pi_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6034 offset += 2;
6035 length -= 2;
6037 proto_tree_add_item(sub_tree,
6038 hf_ff_fms_del_pi_err_additional_desc,
6039 tvb, offset, 16, ENC_ASCII);
6040 offset += 16;
6041 length -= 16;
6043 if (length) {
6044 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6051 * 6.5.3.24. FMS Start (Confirmed Service Id = 19)
6052 * 6.5.3.24.1. Request Message Parameters
6054 static void
6055 dissect_ff_msg_fms_start_pi_req(tvbuff_t *tvb, int offset,
6056 uint32_t length, packet_info *pinfo, proto_tree *tree)
6058 proto_tree *sub_tree;
6060 col_set_str(pinfo->cinfo, COL_INFO, "FMS Start Request");
6062 if (!tree) {
6063 return;
6066 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_start_req, NULL, "FMS Start Request");
6068 proto_tree_add_item(sub_tree,
6069 hf_ff_fms_start_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6070 offset += 4;
6071 length -= 4;
6073 if (length) {
6074 proto_tree_add_item(sub_tree, hf_ff_fms_start_req_execution_argument, tvb, offset, length, ENC_NA);
6081 * 6.5.3.24.2. Response Message Parameters
6083 static void
6084 dissect_ff_msg_fms_start_pi_rsp(tvbuff_t *tvb, int offset,
6085 uint32_t length, packet_info *pinfo, proto_tree *tree)
6087 proto_tree *sub_tree;
6089 col_set_str(pinfo->cinfo, COL_INFO, "FMS Start Response");
6091 if (!tree) {
6092 return;
6095 if (length) {
6096 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6097 ett_ff_fms_start_rsp, NULL, "FMS Start Response");
6099 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6106 * 6.5.3.24.3. PI Error Message Parameters
6108 static void
6109 dissect_ff_msg_fms_start_pi_err(tvbuff_t *tvb, int offset,
6110 uint32_t length, packet_info *pinfo, proto_tree *tree)
6112 proto_tree *sub_tree;
6113 uint8_t ErrorClass;
6114 uint8_t ErrorCode;
6115 const char *error_code;
6117 col_set_str(pinfo->cinfo, COL_INFO, "FMS Start Error");
6119 if (!tree) {
6120 return;
6123 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_start_err, NULL, "FMS Start Error");
6125 proto_tree_add_item(sub_tree,
6126 hf_ff_fms_start_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
6127 offset += 1;
6128 length -= 1;
6130 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
6131 offset += 3;
6132 length -= 3;
6134 ErrorClass = tvb_get_uint8(tvb, offset);
6135 proto_tree_add_item(sub_tree,
6136 hf_ff_fms_start_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6137 offset += 1;
6138 length -= 1;
6140 ErrorCode = tvb_get_uint8(tvb, offset);
6141 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6142 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_start_err_err_code,
6143 tvb, offset, 1, ErrorCode,
6144 "%s (%u)", error_code, ErrorCode);
6145 offset += 1;
6146 length -= 1;
6148 proto_tree_add_item(sub_tree,
6149 hf_ff_fms_start_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6150 offset += 2;
6151 length -= 2;
6153 proto_tree_add_item(sub_tree, hf_ff_fms_start_err_additional_desc,
6154 tvb, offset, 16, ENC_ASCII);
6155 offset += 16;
6156 length -= 16;
6158 if (length) {
6159 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6166 * 6.5.3.25. FMS Stop (Confirmed Service Id = 20)
6167 * 6.5.3.25.1. Request Message Parameters
6169 static void
6170 dissect_ff_msg_fms_stop_pi_req(tvbuff_t *tvb, int offset,
6171 uint32_t length, packet_info *pinfo, proto_tree *tree)
6173 proto_tree *sub_tree;
6175 col_set_str(pinfo->cinfo, COL_INFO, "FMS Stop Request");
6177 if (!tree) {
6178 return;
6181 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_stop_req, NULL, "FMS Stop Request");
6183 proto_tree_add_item(sub_tree,
6184 hf_ff_fms_stop_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6185 offset += 4;
6186 length -= 4;
6188 if (length) {
6189 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6196 * 6.5.3.25.2. Response Message Parameters
6198 static void
6199 dissect_ff_msg_fms_stop_pi_rsp(tvbuff_t *tvb, int offset,
6200 uint32_t length, packet_info *pinfo, proto_tree *tree)
6202 proto_tree *sub_tree;
6204 col_set_str(pinfo->cinfo, COL_INFO, "FMS Stop Response");
6206 if (!tree) {
6207 return;
6210 if (length) {
6211 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6212 ett_ff_fms_stop_rsp, NULL, "FMS Stop Response");
6214 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6221 * 6.5.3.25.3. Error Message Parameters
6223 static void
6224 dissect_ff_msg_fms_stop_pi_err(tvbuff_t *tvb, int offset,
6225 uint32_t length, packet_info *pinfo, proto_tree *tree)
6227 proto_tree *sub_tree;
6228 uint8_t ErrorClass;
6229 uint8_t ErrorCode;
6230 const char *error_code;
6232 col_set_str(pinfo->cinfo, COL_INFO, "FMS Stop Error");
6234 if (!tree) {
6235 return;
6238 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_stop_err, NULL, "FMS Stop Error");
6240 proto_tree_add_item(sub_tree,
6241 hf_ff_fms_stop_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
6242 offset += 1;
6243 length -= 1;
6245 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
6246 offset += 3;
6247 length -= 3;
6249 ErrorClass = tvb_get_uint8(tvb, offset);
6250 proto_tree_add_item(sub_tree,
6251 hf_ff_fms_stop_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6252 offset += 1;
6253 length -= 1;
6255 ErrorCode = tvb_get_uint8(tvb, offset);
6256 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6257 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_stop_err_err_code,
6258 tvb, offset, 1, ErrorCode,
6259 "%s (%u)", error_code, ErrorCode);
6260 offset += 1;
6261 length -= 1;
6263 proto_tree_add_item(sub_tree,
6264 hf_ff_fms_stop_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6265 offset += 2;
6266 length -= 2;
6268 proto_tree_add_item(sub_tree, hf_ff_fms_stop_err_additional_desc,
6269 tvb, offset, 16, ENC_ASCII);
6270 offset += 16;
6271 length -= 16;
6273 if (length) {
6274 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6281 * 6.5.3.26. FMS Resume (Confirmed Service Id = 21)
6282 * 6.5.3.26.1. Request Message Parameters
6284 static void
6285 dissect_ff_msg_fms_resume_pi_req(tvbuff_t *tvb, int offset,
6286 uint32_t length, packet_info *pinfo, proto_tree *tree)
6288 proto_tree *sub_tree;
6290 col_set_str(pinfo->cinfo, COL_INFO, "FMS Resume Request");
6292 if (!tree) {
6293 return;
6296 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_resume_req, NULL, "FMS Resume Request");
6298 proto_tree_add_item(sub_tree,
6299 hf_ff_fms_resume_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6300 offset += 4;
6301 length -= 4;
6303 if (length) {
6304 proto_tree_add_item(sub_tree, hf_ff_fms_resume_req_execution_argument, tvb, offset, length, ENC_NA);
6311 * 6.5.3.26.2. Response Message Parameters
6313 static void
6314 dissect_ff_msg_fms_resume_pi_rsp(tvbuff_t *tvb, int offset,
6315 uint32_t length, packet_info *pinfo, proto_tree *tree)
6317 proto_tree *sub_tree;
6319 col_set_str(pinfo->cinfo, COL_INFO, "FMS Resume Response");
6321 if (!tree) {
6322 return;
6325 if (length) {
6326 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6327 ett_ff_fms_resume_rsp, NULL, "FMS Resume Response");
6329 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6336 * 6.5.3.26.3. Error Message Parameters
6338 static void
6339 dissect_ff_msg_fms_resume_pi_err(tvbuff_t *tvb, int offset,
6340 uint32_t length, packet_info *pinfo, proto_tree *tree)
6342 proto_tree *sub_tree;
6343 uint8_t ErrorClass;
6344 uint8_t ErrorCode;
6345 const char *error_code;
6347 col_set_str(pinfo->cinfo, COL_INFO, "FMS Resume Error");
6349 if (!tree) {
6350 return;
6353 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_resume_err, NULL, "FMS Resume Error");
6355 proto_tree_add_item(sub_tree,
6356 hf_ff_fms_resume_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
6357 offset += 1;
6358 length -= 1;
6360 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
6361 offset += 3;
6362 length -= 3;
6364 ErrorClass = tvb_get_uint8(tvb, offset);
6365 proto_tree_add_item(sub_tree,
6366 hf_ff_fms_resume_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6367 offset += 1;
6368 length -= 1;
6370 ErrorCode = tvb_get_uint8(tvb, offset);
6371 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6372 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_resume_err_err_code,
6373 tvb, offset, 1, ErrorCode,
6374 "%s (%u)", error_code, ErrorCode);
6375 offset += 1;
6376 length -= 1;
6378 proto_tree_add_item(sub_tree,
6379 hf_ff_fms_resume_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6380 offset += 2;
6381 length -= 2;
6383 proto_tree_add_item(sub_tree, hf_ff_fms_resume_err_additional_desc,
6384 tvb, offset, 16, ENC_ASCII);
6385 offset += 16;
6386 length -= 16;
6388 if (length) {
6389 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6396 * 6.5.3.27. FMS Reset (Confirmed Service Id = 22)
6397 * 6.5.3.27.1. Request Message Parameters
6399 static void
6400 dissect_ff_msg_fms_reset_pi_req(tvbuff_t *tvb, int offset,
6401 uint32_t length, packet_info *pinfo, proto_tree *tree)
6403 proto_tree *sub_tree;
6405 col_set_str(pinfo->cinfo, COL_INFO, "FMS Reset Request");
6407 if (!tree) {
6408 return;
6411 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_reset_req, NULL, "FMS Reset Request");
6413 proto_tree_add_item(sub_tree,
6414 hf_ff_fms_reset_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6415 offset += 4;
6416 length -= 4;
6418 if (length) {
6419 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6426 * 6.5.3.27.2. Response Message Parameters
6428 static void
6429 dissect_ff_msg_fms_reset_pi_rsp(tvbuff_t *tvb, int offset,
6430 uint32_t length, packet_info *pinfo, proto_tree *tree)
6432 proto_tree *sub_tree;
6434 col_set_str(pinfo->cinfo, COL_INFO, "FMS Reset Response");
6436 if (!tree) {
6437 return;
6440 if (length) {
6441 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6442 ett_ff_fms_reset_rsp, NULL, "FMS Reset Response");
6444 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6451 * 6.5.3.27.3. Error Message Parameters
6453 static void
6454 dissect_ff_msg_fms_reset_pi_err(tvbuff_t *tvb, int offset,
6455 uint32_t length, packet_info *pinfo, proto_tree *tree)
6457 proto_tree *sub_tree;
6458 uint8_t ErrorClass;
6459 uint8_t ErrorCode;
6460 const char *error_code;
6462 col_set_str(pinfo->cinfo, COL_INFO, "FMS Reset Error");
6464 if (!tree) {
6465 return;
6468 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_reset_err, NULL, "FMS Reset Error");
6470 proto_tree_add_item(sub_tree,
6471 hf_ff_fms_reset_err_pi_state, tvb, offset, 1, ENC_BIG_ENDIAN);
6472 offset += 1;
6473 length -= 1;
6475 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
6476 offset += 3;
6477 length -= 3;
6479 ErrorClass = tvb_get_uint8(tvb, offset);
6480 proto_tree_add_item(sub_tree,
6481 hf_ff_fms_reset_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6482 offset += 1;
6483 length -= 1;
6485 ErrorCode = tvb_get_uint8(tvb, offset);
6486 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6487 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_reset_err_err_code,
6488 tvb, offset, 1, ErrorCode,
6489 "%s (%u)", error_code, ErrorCode);
6490 offset += 1;
6491 length -= 1;
6493 proto_tree_add_item(sub_tree,
6494 hf_ff_fms_reset_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6495 offset += 2;
6496 length -= 2;
6498 proto_tree_add_item(sub_tree, hf_ff_fms_reset_err_additional_desc,
6499 tvb, offset, 16, ENC_ASCII);
6500 offset += 16;
6501 length -= 16;
6503 if (length) {
6504 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6511 * 6.5.3.28. FMS Kill (Confirmed Service Id = 23)
6512 * 6.5.3.28.1. Request Message Parameters
6514 static void
6515 dissect_ff_msg_fms_kill_pi_req(tvbuff_t *tvb, int offset,
6516 uint32_t length, packet_info *pinfo, proto_tree *tree)
6518 proto_tree *sub_tree;
6520 col_set_str(pinfo->cinfo, COL_INFO, "FMS Kill Request");
6522 if (!tree) {
6523 return;
6526 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_kill_req, NULL, "FMS Kill Request");
6528 proto_tree_add_item(sub_tree,
6529 hf_ff_fms_kill_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6530 offset += 4;
6531 length -= 4;
6533 if (length) {
6534 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6541 * 6.5.3.28.2. Response Message Parameters
6543 static void
6544 dissect_ff_msg_fms_kill_pi_rsp(tvbuff_t *tvb, int offset,
6545 uint32_t length, packet_info *pinfo, proto_tree *tree)
6547 proto_tree *sub_tree;
6549 col_set_str(pinfo->cinfo, COL_INFO, "FMS Kill Response");
6551 if (!tree) {
6552 return;
6555 if (length) {
6556 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6557 ett_ff_fms_kill_rsp, NULL, "FMS Kill Response");
6559 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6566 * 6.5.3.28.3. Error Message Parameters
6568 static void
6569 dissect_ff_msg_fms_kill_pi_err(tvbuff_t *tvb, int offset,
6570 uint32_t length, packet_info *pinfo, proto_tree *tree)
6572 proto_tree *sub_tree;
6573 uint8_t ErrorClass;
6574 uint8_t ErrorCode;
6575 const char *error_code;
6577 col_set_str(pinfo->cinfo, COL_INFO, "FMS Kill Error");
6579 if (!tree) {
6580 return;
6583 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_kill_err, NULL, "FMS Kill Error");
6585 ErrorClass = tvb_get_uint8(tvb, offset);
6586 proto_tree_add_item(sub_tree,
6587 hf_ff_fms_kill_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6588 offset += 1;
6589 length -= 1;
6591 ErrorCode = tvb_get_uint8(tvb, offset);
6592 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6593 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_kill_err_err_code,
6594 tvb, offset, 1, ErrorCode,
6595 "%s (%u)", error_code, ErrorCode);
6596 offset += 1;
6597 length -= 1;
6599 proto_tree_add_item(sub_tree,
6600 hf_ff_fms_kill_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6601 offset += 2;
6602 length -= 2;
6604 proto_tree_add_item(sub_tree, hf_ff_fms_kill_err_additional_desc,
6605 tvb, offset, 16, ENC_ASCII);
6606 offset += 16;
6607 length -= 16;
6609 if (length) {
6610 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6617 * 6.5.3.29. FMS Read (Confirmed Service Id = 2)
6618 * 6.5.3.29.1. Request Message Parameters
6620 static void
6621 dissect_ff_msg_fms_read_req(tvbuff_t *tvb, int offset,
6622 uint32_t length, packet_info *pinfo, proto_tree *tree)
6624 proto_tree *sub_tree;
6626 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read Request");
6628 if (!tree) {
6629 return;
6632 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_read_req, NULL, "FMS Read Request");
6634 proto_tree_add_item(sub_tree,
6635 hf_ff_fms_read_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6636 offset += 4;
6637 length -= 4;
6639 if (length) {
6640 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6647 * 6.5.3.29.2. Response Message Parameters
6649 static void
6650 dissect_ff_msg_fms_read_rsp(tvbuff_t *tvb, int offset,
6651 uint32_t length, packet_info *pinfo, proto_tree *tree)
6653 proto_tree *sub_tree;
6655 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read Response");
6657 if (!tree) {
6658 return;
6661 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_read_rsp, NULL, "FMS Read Response");
6663 proto_tree_add_item(sub_tree, hf_ff_data, tvb, offset, length, ENC_NA);
6669 * 6.5.3.29.3. Error Message Parameters
6671 static void
6672 dissect_ff_msg_fms_read_err(tvbuff_t *tvb, int offset,
6673 uint32_t length, packet_info *pinfo, proto_tree *tree)
6675 proto_tree *sub_tree;
6676 uint8_t ErrorClass;
6677 uint8_t ErrorCode;
6678 const char *error_code;
6680 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read Error");
6682 if (!tree) {
6683 return;
6686 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_read_err, NULL, "FMS Read Error");
6688 ErrorClass = tvb_get_uint8(tvb, offset);
6689 proto_tree_add_item(sub_tree,
6690 hf_ff_fms_read_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6691 offset += 1;
6692 length -= 1;
6694 ErrorCode = tvb_get_uint8(tvb, offset);
6695 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6696 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_read_err_err_code,
6697 tvb, offset, 1, ErrorCode,
6698 "%s (%u)", error_code, ErrorCode);
6699 offset += 1;
6700 length -= 1;
6702 proto_tree_add_item(sub_tree,
6703 hf_ff_fms_read_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6704 offset += 2;
6705 length -= 2;
6707 proto_tree_add_item(sub_tree, hf_ff_fms_read_err_additional_desc,
6708 tvb, offset, 16, ENC_ASCII);
6709 offset += 16;
6710 length -= 16;
6712 if (length) {
6713 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6720 * 6.5.3.30. FMS Read with Subindex (Confirmed Service Id = 82)
6721 * 6.5.3.30.1. Request Message Parameters
6723 static void
6724 dissect_ff_msg_fms_read_subindex_req(tvbuff_t *tvb, int offset,
6725 uint32_t length, packet_info *pinfo, proto_tree *tree)
6727 proto_tree *sub_tree;
6729 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read with Subindex Request");
6731 if (!tree) {
6732 return;
6735 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6736 ett_ff_fms_read_with_subidx_req, NULL, "FMS Read with Subindex Request");
6738 proto_tree_add_item(sub_tree,
6739 hf_ff_fms_read_with_subidx_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6740 offset += 4;
6741 length -= 4;
6743 proto_tree_add_item(sub_tree,
6744 hf_ff_fms_read_with_subidx_req_subidx, tvb, offset, 4, ENC_BIG_ENDIAN);
6745 offset += 4;
6746 length -= 4;
6748 if (length) {
6749 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6756 * 6.5.3.30.2. Response Message Parameters
6758 static void
6759 dissect_ff_msg_fms_read_subindex_rsp(tvbuff_t *tvb, int offset,
6760 uint32_t length, packet_info *pinfo, proto_tree *tree)
6762 proto_tree *sub_tree;
6764 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read with Subindex Response");
6766 if (!tree) {
6767 return;
6770 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6771 ett_ff_fms_read_with_subidx_rsp, NULL, "FMS Read with Subindex Response");
6773 proto_tree_add_item(sub_tree, hf_ff_data, tvb, offset, length, ENC_NA);
6779 * 6.5.3.30.3. Error Message Parameters
6781 static void
6782 dissect_ff_msg_fms_read_subindex_err(tvbuff_t *tvb, int offset,
6783 uint32_t length, packet_info *pinfo, proto_tree *tree)
6785 proto_tree *sub_tree;
6786 uint8_t ErrorClass;
6787 uint8_t ErrorCode;
6788 const char *error_code;
6790 col_set_str(pinfo->cinfo, COL_INFO, "FMS Read with Subindex Error");
6792 if (!tree) {
6793 return;
6796 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6797 ett_ff_fms_read_with_subidx_err, NULL, "FMS Read with Subindex Error");
6799 ErrorClass = tvb_get_uint8(tvb, offset);
6800 proto_tree_add_item(sub_tree,
6801 hf_ff_fms_read_with_subidx_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6802 offset += 1;
6803 length -= 1;
6805 ErrorCode = tvb_get_uint8(tvb, offset);
6806 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6807 proto_tree_add_uint_format_value(sub_tree,
6808 hf_ff_fms_read_with_subidx_err_err_code,
6809 tvb, offset, 1, ErrorCode,
6810 "%s (%u)", error_code, ErrorCode);
6811 offset += 1;
6812 length -= 1;
6814 proto_tree_add_item(sub_tree,
6815 hf_ff_fms_read_with_subidx_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6816 offset += 2;
6817 length -= 2;
6819 proto_tree_add_item(sub_tree,
6820 hf_ff_fms_read_with_subidx_err_additional_desc,
6821 tvb, offset, 16, ENC_ASCII);
6822 offset += 16;
6823 length -= 16;
6825 if (length) {
6826 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6833 * 6.5.3.31. FMS Write (Confirmed Service Id = 3)
6834 * 6.5.3.31.1. Request Message Parameters
6836 static void
6837 dissect_ff_msg_fms_write_req(tvbuff_t *tvb, int offset,
6838 uint32_t length, packet_info *pinfo, proto_tree *tree)
6840 proto_tree *sub_tree;
6842 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write Request");
6844 if (!tree) {
6845 return;
6848 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_write_req, NULL, "FMS Write Request");
6850 proto_tree_add_item(sub_tree,
6851 hf_ff_fms_write_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6852 offset += 4;
6853 length -= 4;
6855 if (length) {
6856 proto_tree_add_item(sub_tree, hf_ff_data, tvb, offset, length, ENC_NA);
6863 * 6.5.3.31.2. Response Message Parameters
6865 static void
6866 dissect_ff_msg_fms_write_rsp(tvbuff_t *tvb, int offset,
6867 uint32_t length, packet_info *pinfo, proto_tree *tree)
6869 proto_tree *sub_tree;
6871 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write Response");
6873 if (!tree) {
6874 return;
6877 if (length) {
6878 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6879 ett_ff_fms_write_rsp, NULL, "FMS Write Response");
6881 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6888 * 6.5.3.31.3. Error Message Parameters
6890 static void
6891 dissect_ff_msg_fms_write_err(tvbuff_t *tvb, int offset,
6892 uint32_t length, packet_info *pinfo, proto_tree *tree)
6894 proto_tree *sub_tree;
6895 uint8_t ErrorClass;
6896 uint8_t ErrorCode;
6897 const char *error_code;
6899 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write Error");
6901 if (!tree) {
6902 return;
6905 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ff_fms_write_err, NULL, "FMS Write Error");
6907 ErrorClass = tvb_get_uint8(tvb, offset);
6908 proto_tree_add_item(sub_tree,
6909 hf_ff_fms_write_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
6910 offset += 1;
6911 length -= 1;
6913 ErrorCode = tvb_get_uint8(tvb, offset);
6914 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
6915 proto_tree_add_uint_format_value(sub_tree, hf_ff_fms_write_err_err_code,
6916 tvb, offset, 1, ErrorCode,
6917 "%s (%u)", error_code, ErrorCode);
6918 offset += 1;
6919 length -= 1;
6921 proto_tree_add_item(sub_tree,
6922 hf_ff_fms_write_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
6923 offset += 2;
6924 length -= 2;
6926 proto_tree_add_item(sub_tree, hf_ff_fms_write_err_additional_desc,
6927 tvb, offset, 16, ENC_ASCII);
6928 offset += 16;
6929 length -= 16;
6931 if (length) {
6932 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
6939 * 6.5.3.32. FMS Write with Subindex (Confirmed Service Id = 83)
6940 * 6.5.3.32.1. Request Message Parameters
6942 static void
6943 dissect_ff_msg_fms_write_subindex_req(tvbuff_t *tvb, int offset,
6944 uint32_t length, packet_info *pinfo, proto_tree *tree)
6946 proto_tree *sub_tree;
6948 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write with Subindex Request");
6950 if (!tree) {
6951 return;
6954 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6955 ett_ff_fms_write_with_subidx_req, NULL, "FMS Write with Subindex Request");
6957 proto_tree_add_item(sub_tree,
6958 hf_ff_fms_write_with_subidx_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
6959 offset += 4;
6960 length -= 4;
6962 proto_tree_add_item(sub_tree,
6963 hf_ff_fms_write_with_subidx_req_subidx, tvb, offset, 4, ENC_BIG_ENDIAN);
6964 offset += 4;
6965 length -= 4;
6967 if (length) {
6968 proto_tree_add_item(sub_tree, hf_ff_data, tvb, offset, length, ENC_NA);
6975 * 6.5.3.32.2. Response Message Parameters
6977 static void
6978 dissect_ff_msg_fms_write_subindex_rsp(tvbuff_t *tvb, int offset,
6979 uint32_t length, packet_info *pinfo, proto_tree *tree)
6981 proto_tree *sub_tree;
6983 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write with Subindex Response");
6985 if (!tree) {
6986 return;
6989 if (length) {
6990 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
6991 ett_ff_fms_write_with_subidx_rsp, NULL, "FMS Write with Subindex Response");
6993 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7000 * 6.5.3.32.3. Error Message Parameters
7002 static void
7003 dissect_ff_msg_fms_write_subindex_err(tvbuff_t *tvb, int offset,
7004 uint32_t length, packet_info *pinfo, proto_tree *tree)
7006 proto_tree *sub_tree;
7007 uint8_t ErrorClass;
7008 uint8_t ErrorCode;
7009 const char *error_code;
7011 col_set_str(pinfo->cinfo, COL_INFO, "FMS Write with Subindex Error");
7013 if (!tree) {
7014 return;
7017 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7018 ett_ff_fms_write_with_subidx_err, NULL, "FMS Write with Subindex Error");
7020 ErrorClass = tvb_get_uint8(tvb, offset);
7021 proto_tree_add_item(sub_tree,
7022 hf_ff_fms_write_with_subidx_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7023 offset += 1;
7024 length -= 1;
7026 ErrorCode = tvb_get_uint8(tvb, offset);
7027 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7028 proto_tree_add_uint_format_value(sub_tree,
7029 hf_ff_fms_write_with_subidx_err_err_code,
7030 tvb, offset, 1, ErrorCode,
7031 "%s (%u)", error_code, ErrorCode);
7032 offset += 1;
7033 length -= 1;
7035 proto_tree_add_item(sub_tree,
7036 hf_ff_fms_write_with_subidx_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7037 offset += 2;
7038 length -= 2;
7040 proto_tree_add_item(sub_tree,
7041 hf_ff_fms_write_with_subidx_err_additional_desc,
7042 tvb, offset, 16, ENC_ASCII);
7043 offset += 16;
7044 length -= 16;
7046 if (length) {
7047 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7054 * 6.5.3.33. FMS Define Variable List (Confirmed Service Id = 7)
7055 * 6.5.3.33.1. Request Message Parameters
7057 static void
7058 dissect_ff_msg_fms_def_variable_list_req_list_of_idxes(tvbuff_t *tvb,
7059 int offset, proto_tree *tree, uint32_t value)
7061 proto_tree *sub_tree;
7062 unsigned d;
7064 if (!tree) {
7065 return;
7068 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
7069 ett_ff_fms_def_variable_list_req_list_of_idxes, NULL, "List Of Indexes (%u bytes)", 4 * value);
7071 for (d = 0; d < value; d++) {
7072 proto_tree_add_item(sub_tree,
7073 hf_ff_fms_def_variable_list_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7074 offset += 4;
7080 static void
7081 dissect_ff_msg_fms_def_variable_list_req(tvbuff_t *tvb, int offset,
7082 uint32_t length, packet_info *pinfo, proto_tree *tree)
7084 proto_tree *sub_tree;
7085 uint32_t NumOfIndexes;
7087 col_set_str(pinfo->cinfo, COL_INFO, "FMS Define Variable List Request");
7089 if (!tree) {
7090 return;
7093 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7094 ett_ff_fms_def_variable_list_req, NULL, "FMS Define Variable List Request");
7096 NumOfIndexes = tvb_get_ntohl(tvb, offset);
7097 proto_tree_add_item(sub_tree,
7098 hf_ff_fms_def_variable_list_req_num_of_idxes, tvb, offset, 4, ENC_BIG_ENDIAN);
7099 offset += 4;
7100 length -= 4;
7102 if (NumOfIndexes) {
7103 dissect_ff_msg_fms_def_variable_list_req_list_of_idxes(tvb,
7104 offset, sub_tree, NumOfIndexes);
7105 offset += 4 * NumOfIndexes;
7106 length -= 4 * NumOfIndexes;
7109 if (length) {
7110 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7117 * 6.5.3.33.2. Response Message Parameters
7119 static void
7120 dissect_ff_msg_fms_def_variable_list_rsp(tvbuff_t *tvb, int offset,
7121 uint32_t length, packet_info *pinfo, proto_tree *tree)
7123 proto_tree *sub_tree;
7125 col_set_str(pinfo->cinfo, COL_INFO, "FMS Define Variable List Response");
7127 if (!tree) {
7128 return;
7131 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7132 ett_ff_fms_def_variable_list_rsp, NULL, "FMS Define Variable List Response");
7134 proto_tree_add_item(sub_tree,
7135 hf_ff_fms_def_variable_list_rsp_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7136 offset += 4;
7137 length -= 4;
7139 if (length) {
7140 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7147 * 6.5.3.33.3. Error Message Parameters
7149 static void
7150 dissect_ff_msg_fms_def_variable_list_err(tvbuff_t *tvb, int offset,
7151 uint32_t length, packet_info *pinfo, proto_tree *tree)
7153 proto_tree *sub_tree;
7154 uint8_t ErrorClass;
7155 uint8_t ErrorCode;
7156 const char *error_code;
7158 col_set_str(pinfo->cinfo, COL_INFO, "FMS Define Variable List Error");
7160 if (!tree) {
7161 return;
7164 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7165 ett_ff_fms_def_variable_list_err, NULL, "FMS Define Variable List Error");
7167 ErrorClass = tvb_get_uint8(tvb, offset);
7168 proto_tree_add_item(sub_tree,
7169 hf_ff_fms_def_variable_list_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7170 offset += 1;
7171 length -= 1;
7173 ErrorCode = tvb_get_uint8(tvb, offset);
7174 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7175 proto_tree_add_uint_format_value(sub_tree,
7176 hf_ff_fms_def_variable_list_err_err_code,
7177 tvb, offset, 1, ErrorCode,
7178 "%s (%u)", error_code, ErrorCode);
7179 offset += 1;
7180 length -= 1;
7182 proto_tree_add_item(sub_tree,
7183 hf_ff_fms_def_variable_list_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7184 offset += 2;
7185 length -= 2;
7187 proto_tree_add_item(sub_tree,
7188 hf_ff_fms_def_variable_list_err_additional_desc,
7189 tvb, offset, 16, ENC_ASCII);
7190 offset += 16;
7191 length -= 16;
7193 if (length) {
7194 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7201 * 6.5.3.34. FMS Delete Variable List (Confirmed Service Id = 8)
7202 * 6.5.3.34.1. Request Message Parameters
7204 static void
7205 dissect_ff_msg_fms_del_variable_list_req(tvbuff_t *tvb, int offset,
7206 uint32_t length, packet_info *pinfo, proto_tree *tree)
7208 proto_tree *sub_tree;
7210 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Variable List Request");
7212 if (!tree) {
7213 return;
7216 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7217 ett_ff_fms_del_variable_list_req, NULL, "FMS Delete Variable List Request");
7219 proto_tree_add_item(sub_tree,
7220 hf_ff_fms_del_variable_list_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7221 offset += 4;
7222 length -= 4;
7224 if (length) {
7225 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7232 * 6.5.3.34.2. Response Message Parameters
7234 static void
7235 dissect_ff_msg_fms_del_variable_list_rsp(tvbuff_t *tvb, int offset,
7236 uint32_t length, packet_info *pinfo, proto_tree *tree)
7238 proto_tree *sub_tree;
7240 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Variable List Response");
7242 if (!tree) {
7243 return;
7246 if (length) {
7247 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7248 ett_ff_fms_del_variable_list_rsp, NULL, "FMS Delete Variable List Response");
7250 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7257 * 6.5.3.34.3. Error Message Parameters
7259 static void
7260 dissect_ff_msg_fms_del_variable_list_err(tvbuff_t *tvb, int offset,
7261 uint32_t length, packet_info *pinfo, proto_tree *tree)
7263 proto_tree *sub_tree;
7264 uint8_t ErrorClass;
7265 uint8_t ErrorCode;
7266 const char *error_code;
7268 col_set_str(pinfo->cinfo, COL_INFO, "FMS Delete Variable List Error");
7270 if (!tree) {
7271 return;
7274 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7275 ett_ff_fms_del_variable_list_err, NULL, "FMS Delete Variable List Error");
7277 ErrorClass = tvb_get_uint8(tvb, offset);
7278 proto_tree_add_item(sub_tree,
7279 hf_ff_fms_del_variable_list_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7280 offset += 1;
7281 length -= 1;
7283 ErrorCode = tvb_get_uint8(tvb, offset);
7284 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7285 proto_tree_add_uint_format_value(sub_tree,
7286 hf_ff_fms_del_variable_list_err_err_code,
7287 tvb, offset, 1, ErrorCode,
7288 "%s (%u)", error_code, ErrorCode);
7289 offset += 1;
7290 length -= 1;
7292 proto_tree_add_item(sub_tree,
7293 hf_ff_fms_del_variable_list_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7294 offset += 2;
7295 length -= 2;
7297 proto_tree_add_item(sub_tree,
7298 hf_ff_fms_del_variable_list_err_additional_desc,
7299 tvb, offset, 16, ENC_ASCII);
7300 offset += 16;
7301 length -= 16;
7303 if (length) {
7304 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7311 * 6.5.3.35. FMS Information Report (Unconfirmed Service Id = 0)
7312 * 6.5.3.35.1. Request Message Parameters
7314 static void
7315 dissect_ff_msg_fms_info_report_req(tvbuff_t *tvb, int offset,
7316 uint32_t length, packet_info *pinfo, proto_tree *tree)
7318 proto_tree *sub_tree;
7320 col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report Request");
7322 if (!tree) {
7323 return;
7326 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7327 ett_ff_fms_info_report_req, NULL, "FMS Information Report Request");
7329 proto_tree_add_item(sub_tree,
7330 hf_ff_fms_info_report_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7331 offset += 4;
7332 length -= 4;
7334 if (length) {
7335 proto_tree_add_item(sub_tree, hf_ff_data, tvb, offset, length, ENC_NA);
7342 * 6.5.3.36. FMS Information Report with Subindex
7343 * (Unconfirmed Service Id = 16)
7344 * 6.5.3.36.1. Request Message Parameters
7346 static void
7347 dissect_ff_msg_fms_info_report_subindex_req(tvbuff_t *tvb, int offset,
7348 uint32_t length, packet_info *pinfo, proto_tree *tree)
7350 proto_tree *sub_tree;
7352 col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report with Subindex Request");
7354 if (!tree) {
7355 return;
7358 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7359 ett_ff_fms_info_report_with_subidx_req, NULL, "FMS Information Report with Subindex Request");
7361 proto_tree_add_item(sub_tree,
7362 hf_ff_fms_info_report_with_subidx_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7363 offset += 4;
7364 length -= 4;
7366 proto_tree_add_item(sub_tree,
7367 hf_ff_fms_info_report_with_subidx_req_subidx, tvb, offset, 4, ENC_BIG_ENDIAN);
7368 offset += 4;
7369 length -= 4;
7371 if (length) {
7372 proto_tree_add_item(sub_tree, hf_ff_data, tvb, offset, length, ENC_NA);
7379 * 6.5.3.37. FMS Information Report On Change (Unconfirmed Service Id = 17)
7380 * 6.5.3.37.1. Request Message Parameters
7382 static void
7383 dissect_ff_msg_fms_info_report_change_req(tvbuff_t *tvb, int offset,
7384 uint32_t length, packet_info *pinfo, proto_tree *tree)
7386 proto_tree *sub_tree;
7388 col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report On Change Request");
7390 if (!tree) {
7391 return;
7394 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7395 ett_ff_fms_info_report_on_change_req, NULL, "FMS Information Report On Change Request");
7397 proto_tree_add_item(sub_tree,
7398 hf_ff_fms_info_report_on_change_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7399 offset += 4;
7400 length -= 4;
7402 if (length) {
7403 proto_tree_add_item(sub_tree, hf_ff_data, tvb, offset, length, ENC_NA);
7410 * 6.5.3.38. FMS Information Report On Change with Subindex
7411 * (Unconfirmed Service Id = 18)
7412 * 6.5.3.38.1. Request Message Parameters
7414 static void
7415 dissect_ff_msg_fms_info_report_change_subindex_req(
7416 tvbuff_t *tvb, int offset,
7417 uint32_t length, packet_info *pinfo, proto_tree *tree)
7419 proto_tree *sub_tree;
7421 col_set_str(pinfo->cinfo, COL_INFO, "FMS Information Report On Change with Subindex Request");
7423 if (!tree) {
7424 return;
7427 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7428 ett_ff_fms_info_report_on_change_with_subidx_req, NULL, "FMS Information Report On Change with Subindex Request");
7430 proto_tree_add_item(sub_tree,
7431 hf_ff_fms_info_report_on_change_with_subidx_req_idx,
7432 tvb, offset, 4, ENC_BIG_ENDIAN);
7433 offset += 4;
7434 length -= 4;
7436 proto_tree_add_item(sub_tree,
7437 hf_ff_fms_info_report_on_change_with_subidx_req_subidx,
7438 tvb, offset, 4, ENC_BIG_ENDIAN);
7439 offset += 4;
7440 length -= 4;
7442 if (length) {
7443 proto_tree_add_item(sub_tree, hf_ff_data, tvb, offset, length, ENC_NA);
7450 * 6.5.3.39. FMS Event Notification (Unconfirmed Service Id = 2)
7451 * 6.5.3.39.1. Request Message Parameters
7453 static void
7454 dissect_ff_msg_fms_ev_notification_req(
7455 tvbuff_t *tvb, int offset,
7456 uint32_t length, packet_info *pinfo, proto_tree *tree)
7458 proto_tree *sub_tree;
7460 col_set_str(pinfo->cinfo, COL_INFO, "FMS Event Notification Request");
7462 if (!tree) {
7463 return;
7466 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7467 ett_ff_fms_ev_notification_req, NULL, "FMS Event Notification Request");
7469 proto_tree_add_item(sub_tree,
7470 hf_ff_fms_ev_notification_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7471 offset += 4;
7472 length -= 4;
7474 proto_tree_add_item(sub_tree,
7475 hf_ff_fms_ev_notification_req_ev_num, tvb, offset, 4, ENC_BIG_ENDIAN);
7476 offset += 4;
7477 length -= 4;
7479 if (length) {
7480 proto_tree_add_item(sub_tree, hf_ff_data, tvb, offset, length, ENC_NA);
7487 * 6.5.3.40. FMS Alter Event Condition Monitoring (Confirmed Service Id = 24)
7488 * 6.5.3.40.1. Request Message Parameters
7490 static void
7491 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_req(
7492 tvbuff_t *tvb, int offset,
7493 uint32_t length, packet_info *pinfo, proto_tree *tree)
7495 proto_tree *sub_tree;
7497 col_set_str(pinfo->cinfo, COL_INFO, "FMS Alter Event Condition Monitoring Request");
7499 if (!tree) {
7500 return;
7503 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7504 ett_ff_fms_alter_ev_condition_monitoring_req, NULL, "FMS Alter Event Condition Monitoring Request");
7506 proto_tree_add_item(sub_tree,
7507 hf_ff_fms_alter_ev_condition_monitoring_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7508 offset += 4;
7509 length -= 4;
7511 proto_tree_add_item(sub_tree, hf_ff_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN);
7512 offset += 3;
7513 length -= 3;
7515 proto_tree_add_item(sub_tree,
7516 hf_ff_fms_alter_ev_condition_monitoring_req_enabled,
7517 tvb, offset, 1, ENC_BIG_ENDIAN);
7518 offset += 1;
7519 length -= 1;
7521 if (length) {
7522 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7529 * 6.5.3.40.2. Response Message Parameters
7531 static void
7532 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_rsp(
7533 tvbuff_t *tvb, int offset,
7534 uint32_t length, packet_info *pinfo, proto_tree *tree)
7536 proto_tree *sub_tree;
7538 col_set_str(pinfo->cinfo, COL_INFO, "FMS Alter Event Condition Monitoring Response");
7540 if (!tree) {
7541 return;
7544 if (length) {
7545 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7546 ett_ff_fms_alter_ev_condition_monitoring_rsp, NULL, "FMS Alter Event Condition Monitoring Response");
7548 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7555 * 6.5.3.40.3. Error Message Parameters
7557 static void
7558 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_err(
7559 tvbuff_t *tvb, int offset,
7560 uint32_t length, packet_info *pinfo, proto_tree *tree)
7562 proto_tree *sub_tree;
7563 uint8_t ErrorClass;
7564 uint8_t ErrorCode;
7565 const char *error_code;
7567 col_set_str(pinfo->cinfo, COL_INFO, "FMS Alter Event Condition Monitoring Error");
7569 if (!tree) {
7570 return;
7573 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7574 ett_ff_fms_alter_ev_condition_monitoring_err, NULL, "FMS Alter Event Condition Monitoring Error");
7576 ErrorClass = tvb_get_uint8(tvb, offset);
7577 proto_tree_add_item(sub_tree,
7578 hf_ff_fms_alter_ev_condition_monitoring_err_err_class,
7579 tvb, offset, 1, ENC_BIG_ENDIAN);
7580 offset += 1;
7581 length -= 1;
7583 ErrorCode = tvb_get_uint8(tvb, offset);
7584 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7585 proto_tree_add_uint_format_value(sub_tree,
7586 hf_ff_fms_alter_ev_condition_monitoring_err_err_code,
7587 tvb, offset, 1, ErrorCode,
7588 "%s (%u)", error_code, ErrorCode);
7589 offset += 1;
7590 length -= 1;
7592 proto_tree_add_item(sub_tree,
7593 hf_ff_fms_alter_ev_condition_monitoring_err_additional_code,
7594 tvb, offset, 2, ENC_BIG_ENDIAN);
7595 offset += 2;
7596 length -= 2;
7598 proto_tree_add_item(sub_tree,
7599 hf_ff_fms_alter_ev_condition_monitoring_err_additional_desc,
7600 tvb, offset, 16, ENC_ASCII);
7601 offset += 16;
7602 length -= 16;
7604 if (length) {
7605 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7612 * 6.5.3.41. FMS Acknowledge Event Notification (Confirmed Service Id = 25)
7613 * 6.5.3.41.1. Request Message Parameters
7615 static void
7616 dissect_ff_msg_fms_ack_ev_notification_req(
7617 tvbuff_t *tvb, int offset,
7618 uint32_t length, packet_info *pinfo, proto_tree *tree)
7620 proto_tree *sub_tree;
7622 col_set_str(pinfo->cinfo, COL_INFO, "FMS Acknowledge Event Notification Request");
7624 if (!tree) {
7625 return;
7628 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7629 ett_ff_fms_ack_ev_notification_req, NULL, "FMS Acknowledge Event Notification Request");
7631 proto_tree_add_item(sub_tree,
7632 hf_ff_fms_ack_ev_notification_req_idx, tvb, offset, 4, ENC_BIG_ENDIAN);
7633 offset += 4;
7634 length -= 4;
7636 proto_tree_add_item(sub_tree,
7637 hf_ff_fms_ack_ev_notification_req_ev_num, tvb, offset, 4, ENC_BIG_ENDIAN);
7638 offset += 4;
7639 length -= 4;
7641 if (length) {
7642 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7649 * 6.5.3.41.2. Response Message Parameters
7651 static void
7652 dissect_ff_msg_fms_ack_ev_notification_rsp(
7653 tvbuff_t *tvb, int offset,
7654 uint32_t length, packet_info *pinfo, proto_tree *tree)
7656 proto_tree *sub_tree;
7658 col_set_str(pinfo->cinfo, COL_INFO, "FMS Acknowledge Event Notification Response");
7660 if (!tree) {
7661 return;
7664 if (length) {
7665 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7666 ett_ff_fms_ack_ev_notification_rsp, NULL, "FMS Acknowledge Event Notification Response");
7668 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7675 * 6.5.3.41.3. Error Message Parameters
7677 static void
7678 dissect_ff_msg_fms_ack_ev_notification_err(
7679 tvbuff_t *tvb, int offset,
7680 uint32_t length, packet_info *pinfo, proto_tree *tree)
7682 proto_tree *sub_tree;
7683 uint8_t ErrorClass;
7684 uint8_t ErrorCode;
7685 const char *error_code;
7687 col_set_str(pinfo->cinfo, COL_INFO, "FMS Acknowledge Event Notification Error");
7689 if (!tree) {
7690 return;
7693 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7694 ett_ff_fms_ack_ev_notification_err, NULL, "FMS Acknowledge Event Notification Error");
7696 ErrorClass = tvb_get_uint8(tvb, offset);
7697 proto_tree_add_item(sub_tree,
7698 hf_ff_fms_ack_ev_notification_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7699 offset += 1;
7700 length -= 1;
7702 ErrorCode = tvb_get_uint8(tvb, offset);
7703 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7704 proto_tree_add_uint_format_value(sub_tree,
7705 hf_ff_fms_ack_ev_notification_err_err_code,
7706 tvb, offset, 1, ErrorCode,
7707 "%s (%u)", error_code, ErrorCode);
7708 offset += 1;
7709 length -= 1;
7711 proto_tree_add_item(sub_tree,
7712 hf_ff_fms_ack_ev_notification_err_additional_code,
7713 tvb, offset, 2, ENC_BIG_ENDIAN);
7714 offset += 2;
7715 length -= 2;
7717 proto_tree_add_item(sub_tree,
7718 hf_ff_fms_ack_ev_notification_err_additional_desc,
7719 tvb, offset, 16, ENC_ASCII);
7720 offset += 16;
7721 length -= 16;
7723 if (length) {
7724 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7731 * 6.5.4.1. LAN Redundancy Get Information (Confirmed Service Id = 1)
7732 * 6.5.4.1.1. Request Message Parameters
7734 static void
7735 dissect_ff_msg_lr_get_info_req(
7736 tvbuff_t *tvb, int offset,
7737 uint32_t length, packet_info *pinfo, proto_tree *tree)
7739 proto_tree *sub_tree;
7741 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Information Request");
7743 if (!tree) {
7744 return;
7747 if (length) {
7748 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7749 ett_ff_lr_get_info_req, NULL, "LAN Redundancy Get Information Request");
7751 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7758 * 6.5.4.1.2. Response Message Parameters
7760 static void
7761 dissect_ff_msg_lr_get_info_rsp_lr_flags(tvbuff_t *tvb,
7762 int offset, proto_tree *tree)
7765 * Bits 6-8: Reserved (not used) = 0
7766 * Bit 5: Load Balancing Enabled
7767 * 0 = False Do not do load balancing
7768 * 1 = True Do load balancing
7769 * Bit 4: Diagnosis Using Own Messages Enabled
7770 * 0 = False Do not use own diagnostic messages for diagnosis
7771 * 1 = True Use own diagnostic messages for diagnosis
7772 * Bit 3: Single Multicast Message Reception Interface Enabled
7773 * 0 = False Listen for multicast addresses
7774 * on both interfaces
7775 * 1 = True Listen for multicast addresses
7776 * on one interface
7777 * if zero or one fault detected
7778 * in network status table
7779 * Bit 2: Crossed Cable Detection Enabled
7780 * 0 = False Do not detect crossed cables
7781 * 1 = True Detect crossed cables
7782 * B1 (lsb): Single Multicast Message Transmission Interface Enabled
7783 * 0 = False Transmit on both interfaces
7784 * 1 = True Transmit on one interface
7786 static int * const lan_flags[] = {
7787 &hf_ff_lr_get_info_rsp_lr_flags_reserved,
7788 &hf_ff_lr_get_info_rsp_lr_flags_load_balance,
7789 &hf_ff_lr_get_info_rsp_lr_flags_diag,
7790 &hf_ff_lr_get_info_rsp_lr_flags_multi_recv,
7791 &hf_ff_lr_get_info_rsp_lr_flags_cross_cable,
7792 &hf_ff_lr_get_info_rsp_lr_flags_multi_trans,
7793 NULL
7796 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_lr_get_info_rsp_lr_flags, ett_ff_lr_get_info_rsp_lr_flags, lan_flags, ENC_BIG_ENDIAN);
7801 static void
7802 dissect_ff_msg_lr_get_info_rsp(
7803 tvbuff_t *tvb, int offset,
7804 uint32_t length, packet_info *pinfo, proto_tree *tree)
7806 proto_tree *sub_tree;
7807 uint8_t MaxMsgNumDiff;
7809 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Information Response");
7811 if (!tree) {
7812 return;
7815 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7816 ett_ff_lr_get_info_rsp, NULL, "LAN Redundancy Get Information Response");
7818 proto_tree_add_item(sub_tree,
7819 hf_ff_lr_get_info_rsp_lr_attrs_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
7820 offset += 4;
7821 length -= 4;
7823 MaxMsgNumDiff = tvb_get_uint8(tvb, offset);
7824 switch (MaxMsgNumDiff) {
7825 case 0:
7826 case 1:
7827 proto_tree_add_uint_format_value(sub_tree,
7828 hf_ff_lr_get_info_rsp_lr_max_msg_num_diff,
7829 tvb, offset, 1, MaxMsgNumDiff,
7830 "Do not detect a fault (%u)",
7831 MaxMsgNumDiff);
7832 break;
7834 default:
7835 proto_tree_add_item(sub_tree,
7836 hf_ff_lr_get_info_rsp_lr_max_msg_num_diff,
7837 tvb, offset, 1, ENC_BIG_ENDIAN);
7839 offset += 1;
7840 length -= 1;
7842 dissect_ff_msg_lr_get_info_rsp_lr_flags(tvb, offset, sub_tree);
7843 offset += 1;
7844 length -= 1;
7846 proto_tree_add_item(sub_tree,
7847 hf_ff_lr_get_info_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
7848 offset += 2;
7849 length -= 2;
7851 proto_tree_add_item(sub_tree,
7852 hf_ff_lr_get_info_rsp_diagnostic_msg_intvl, tvb, offset, 4, ENC_BIG_ENDIAN);
7853 offset += 4;
7854 length -= 4;
7856 proto_tree_add_item(sub_tree,
7857 hf_ff_lr_get_info_rsp_aging_time, tvb, offset, 4, ENC_BIG_ENDIAN);
7858 offset += 4;
7859 length -= 4;
7861 proto_tree_add_item(sub_tree,
7862 hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_send_addr,
7863 tvb, offset, 16, ENC_NA);
7864 offset += 16;
7865 length -= 16;
7867 proto_tree_add_item(sub_tree,
7868 hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_recv_addr,
7869 tvb, offset, 16, ENC_NA);
7870 offset += 16;
7871 length -= 16;
7873 proto_tree_add_item(sub_tree,
7874 hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_send_addr,
7875 tvb, offset, 16, ENC_NA);
7876 offset += 16;
7877 length -= 16;
7879 proto_tree_add_item(sub_tree,
7880 hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_recv_addr,
7881 tvb, offset, 16, ENC_NA);
7882 offset += 16;
7883 length -= 16;
7885 if (length) {
7886 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7893 * 6.5.4.1.3. Error Message Parameters
7895 static void
7896 dissect_ff_msg_lr_get_info_err(
7897 tvbuff_t *tvb, int offset,
7898 uint32_t length, packet_info *pinfo, proto_tree *tree)
7900 proto_tree *sub_tree;
7901 uint8_t ErrorClass;
7902 uint8_t ErrorCode;
7903 const char *error_code;
7905 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Information Error");
7907 if (!tree) {
7908 return;
7911 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
7912 ett_ff_lr_get_info_err, NULL, "LAN Redundancy Get Information Error");
7914 ErrorClass = tvb_get_uint8(tvb, offset);
7915 proto_tree_add_item(sub_tree,
7916 hf_ff_lr_get_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
7917 offset += 1;
7918 length -= 1;
7920 ErrorCode = tvb_get_uint8(tvb, offset);
7921 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
7922 proto_tree_add_uint_format_value(sub_tree, hf_ff_lr_get_info_err_err_code,
7923 tvb, offset, 1, ErrorCode,
7924 "%s (%u)", error_code, ErrorCode);
7925 offset += 1;
7926 length -= 1;
7928 proto_tree_add_item(sub_tree,
7929 hf_ff_lr_get_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
7930 offset += 2;
7931 length -= 2;
7933 proto_tree_add_item(sub_tree,
7934 hf_ff_lr_get_info_err_additional_desc,
7935 tvb, offset, 16, ENC_ASCII);
7936 offset += 16;
7937 length -= 16;
7939 if (length) {
7940 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
7947 * 6.5.4.2. LAN Redundancy Put Information (Confirmed Service Id = 2)
7948 * 6.5.4.2.1. Request Message Parameters
7950 static void
7951 dissect_ff_msg_lr_put_info_req_lr_flags(tvbuff_t *tvb,
7952 int offset, proto_tree *tree)
7955 * Bits 6-8: Reserved (not used) = 0
7956 * Bit 5: Load Balancing Enabled
7957 * 0 = False Do not do load balancing
7958 * 1 = True Do load balancing
7959 * Bit 4: Diagnosis Using Own Messages Enabled
7960 * 0 = False Do not use own diagnostic messages for diagnosis
7961 * 1 = True Use own diagnostic messages for diagnosis
7962 * Bit 3: Single Multicast Message Reception Interface Enabled
7963 * 0 = False Listen for multicast addresses
7964 * on both interfaces
7965 * 1 = True Listen for multicast addresses
7966 * on one interface
7967 * if zero or one fault detected
7968 * in network status table
7969 * Bit 2: Crossed Cable Detection Enabled
7970 * 0 = False Do not detect crossed cables
7971 * 1 = True Detect crossed cables
7972 * B1 (lsb): Single Multicast Message Transmission Interface Enabled
7973 * 0 = False Transmit on both interfaces
7974 * 1 = True Transmit on one interface
7976 static int * const lan_flags[] = {
7977 &hf_ff_lr_put_info_req_lr_flags_reserved,
7978 &hf_ff_lr_put_info_req_lr_flags_load_balance,
7979 &hf_ff_lr_put_info_req_lr_flags_diag,
7980 &hf_ff_lr_put_info_req_lr_flags_multi_recv,
7981 &hf_ff_lr_put_info_req_lr_flags_cross_cable,
7982 &hf_ff_lr_put_info_req_lr_flags_multi_trans,
7983 NULL
7986 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_lr_put_info_req_lr_flags, ett_ff_lr_put_info_req_lr_flags, lan_flags, ENC_BIG_ENDIAN);
7991 static void
7992 dissect_ff_msg_lr_put_info_req(
7993 tvbuff_t *tvb, int offset,
7994 uint32_t length, packet_info *pinfo, proto_tree *tree)
7996 proto_tree *sub_tree;
7997 uint8_t MaxMsgNumDiff;
7999 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Put Information Request");
8001 if (!tree) {
8002 return;
8005 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
8006 ett_ff_lr_put_info_req, NULL, "LAN Redundancy Put Information Request");
8008 proto_tree_add_item(sub_tree,
8009 hf_ff_lr_put_info_req_lr_attrs_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
8010 offset += 4;
8011 length -= 4;
8013 MaxMsgNumDiff = tvb_get_uint8(tvb, offset);
8014 switch (MaxMsgNumDiff) {
8015 case 0:
8016 case 1:
8017 proto_tree_add_uint_format_value(sub_tree,
8018 hf_ff_lr_put_info_req_lr_max_msg_num_diff,
8019 tvb, offset, 1, MaxMsgNumDiff,
8020 "Do not detect a fault (%u)",
8021 MaxMsgNumDiff);
8022 break;
8024 default:
8025 proto_tree_add_item(sub_tree,
8026 hf_ff_lr_put_info_req_lr_max_msg_num_diff,
8027 tvb, offset, 1, ENC_BIG_ENDIAN);
8029 offset += 1;
8030 length -= 1;
8032 dissect_ff_msg_lr_put_info_req_lr_flags(tvb, offset, sub_tree);
8033 offset += 1;
8034 length -= 1;
8036 proto_tree_add_item(sub_tree,
8037 hf_ff_lr_put_info_req_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
8038 offset += 2;
8039 length -= 2;
8041 proto_tree_add_item(sub_tree,
8042 hf_ff_lr_put_info_req_diagnostic_msg_intvl, tvb, offset, 4, ENC_BIG_ENDIAN);
8043 offset += 4;
8044 length -= 4;
8046 proto_tree_add_item(sub_tree,
8047 hf_ff_lr_put_info_req_aging_time, tvb, offset, 4, ENC_BIG_ENDIAN);
8048 offset += 4;
8049 length -= 4;
8051 proto_tree_add_item(sub_tree,
8052 hf_ff_lr_put_info_req_diagnostic_msg_if_a_send_addr,
8053 tvb, offset, 16, ENC_NA);
8054 offset += 16;
8055 length -= 16;
8057 proto_tree_add_item(sub_tree,
8058 hf_ff_lr_put_info_req_diagnostic_msg_if_a_recv_addr,
8059 tvb, offset, 16, ENC_NA);
8060 offset += 16;
8061 length -= 16;
8063 proto_tree_add_item(sub_tree,
8064 hf_ff_lr_put_info_req_diagnostic_msg_if_b_send_addr,
8065 tvb, offset, 16, ENC_NA);
8066 offset += 16;
8067 length -= 16;
8069 proto_tree_add_item(sub_tree,
8070 hf_ff_lr_put_info_req_diagnostic_msg_if_b_recv_addr,
8071 tvb, offset, 16, ENC_NA);
8072 offset += 16;
8073 length -= 16;
8075 if (length) {
8076 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
8083 * 6.5.4.2.2. Response Message Parameters
8085 static void
8086 dissect_ff_msg_lr_put_info_rsp_lr_flags(tvbuff_t *tvb,
8087 int offset, proto_tree *tree)
8090 * Bits 6-8: Reserved (not used) = 0
8091 * Bit 5: Load Balancing Enabled
8092 * 0 = False Do not do load balancing
8093 * 1 = True Do load balancing
8094 * Bit 4: Diagnosis Using Own Messages Enabled
8095 * 0 = False Do not use own diagnostic messages for diagnosis
8096 * 1 = True Use own diagnostic messages for diagnosis
8097 * Bit 3: Single Multicast Message Reception Interface Enabled
8098 * 0 = False Listen for multicast addresses
8099 * on both interfaces
8100 * 1 = True Listen for multicast addresses
8101 * on one interface
8102 * if zero or one fault detected
8103 * in network status table
8104 * Bit 2: Crossed Cable Detection Enabled
8105 * 0 = False Do not detect crossed cables
8106 * 1 = True Detect crossed cables
8107 * B1 (lsb): Single Multicast Message Transmission Interface Enabled
8108 * 0 = False Transmit on both interfaces
8109 * 1 = True Transmit on one interface
8111 static int * const lan_flags[] = {
8112 &hf_ff_lr_put_info_rsp_lr_flags_reserved,
8113 &hf_ff_lr_put_info_rsp_lr_flags_load_balance,
8114 &hf_ff_lr_put_info_rsp_lr_flags_diag,
8115 &hf_ff_lr_put_info_rsp_lr_flags_multi_recv,
8116 &hf_ff_lr_put_info_rsp_lr_flags_cross_cable,
8117 &hf_ff_lr_put_info_rsp_lr_flags_multi_trans,
8118 NULL
8121 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_lr_put_info_rsp_lr_flags, ett_ff_lr_put_info_rsp_lr_flags, lan_flags, ENC_BIG_ENDIAN);
8126 static void
8127 dissect_ff_msg_lr_put_info_rsp(
8128 tvbuff_t *tvb, int offset,
8129 uint32_t length, packet_info *pinfo, proto_tree *tree)
8131 proto_tree *sub_tree;
8132 uint8_t MaxMsgNumDiff;
8134 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Put Information Response");
8136 if (!tree) {
8137 return;
8140 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
8141 ett_ff_lr_put_info_rsp, NULL, "LAN Redundancy Put Information Response");
8143 proto_tree_add_item(sub_tree,
8144 hf_ff_lr_put_info_rsp_lr_attrs_ver, tvb, offset, 4, ENC_BIG_ENDIAN);
8145 offset += 4;
8146 length -= 4;
8148 MaxMsgNumDiff = tvb_get_uint8(tvb, offset);
8149 switch (MaxMsgNumDiff) {
8150 case 0:
8151 case 1:
8152 proto_tree_add_uint_format_value(sub_tree,
8153 hf_ff_lr_put_info_rsp_lr_max_msg_num_diff,
8154 tvb, offset, 1, MaxMsgNumDiff,
8155 "Do not detect a fault (%u)",
8156 MaxMsgNumDiff);
8157 break;
8159 default:
8160 proto_tree_add_item(sub_tree,
8161 hf_ff_lr_put_info_rsp_lr_max_msg_num_diff,
8162 tvb, offset, 1, ENC_BIG_ENDIAN);
8164 offset += 1;
8165 length -= 1;
8167 dissect_ff_msg_lr_put_info_rsp_lr_flags(tvb, offset, sub_tree);
8168 offset += 1;
8169 length -= 1;
8171 proto_tree_add_item(sub_tree,
8172 hf_ff_lr_put_info_rsp_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
8173 offset += 2;
8174 length -= 2;
8176 proto_tree_add_item(sub_tree,
8177 hf_ff_lr_put_info_rsp_diagnostic_msg_intvl, tvb, offset, 4, ENC_BIG_ENDIAN);
8178 offset += 4;
8179 length -= 4;
8181 proto_tree_add_item(sub_tree,
8182 hf_ff_lr_put_info_rsp_aging_time, tvb, offset, 4, ENC_BIG_ENDIAN);
8183 offset += 4;
8184 length -= 4;
8186 proto_tree_add_item(sub_tree,
8187 hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_send_addr,
8188 tvb, offset, 16, ENC_NA);
8189 offset += 16;
8190 length -= 16;
8192 proto_tree_add_item(sub_tree,
8193 hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_recv_addr,
8194 tvb, offset, 16, ENC_NA);
8195 offset += 16;
8196 length -= 16;
8198 proto_tree_add_item(sub_tree,
8199 hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_send_addr,
8200 tvb, offset, 16, ENC_NA);
8201 offset += 16;
8202 length -= 16;
8204 proto_tree_add_item(sub_tree,
8205 hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_recv_addr,
8206 tvb, offset, 16, ENC_NA);
8207 offset += 16;
8208 length -= 16;
8210 if (length) {
8211 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
8218 * 6.5.4.2.3. Error Message Parameters
8220 static void
8221 dissect_ff_msg_lr_put_info_err(
8222 tvbuff_t *tvb, int offset,
8223 uint32_t length, packet_info *pinfo, proto_tree *tree)
8225 proto_tree *sub_tree;
8226 uint8_t ErrorClass;
8227 uint8_t ErrorCode;
8228 const char *error_code;
8230 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Put Information Error");
8232 if (!tree) {
8233 return;
8236 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
8237 ett_ff_lr_put_info_err, NULL, "LAN Redundancy Put Information Error");
8239 ErrorClass = tvb_get_uint8(tvb, offset);
8240 proto_tree_add_item(sub_tree,
8241 hf_ff_lr_put_info_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
8242 offset += 1;
8243 length -= 1;
8245 ErrorCode = tvb_get_uint8(tvb, offset);
8246 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
8247 proto_tree_add_uint_format_value(sub_tree, hf_ff_lr_put_info_err_err_code,
8248 tvb, offset, 1, ErrorCode,
8249 "%s (%u)", error_code, ErrorCode);
8250 offset += 1;
8251 length -= 1;
8253 proto_tree_add_item(sub_tree,
8254 hf_ff_lr_put_info_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
8255 offset += 2;
8256 length -= 2;
8258 proto_tree_add_item(sub_tree,
8259 hf_ff_lr_put_info_err_additional_desc,
8260 tvb, offset, 16, ENC_ASCII);
8261 offset += 16;
8262 length -= 16;
8264 if (length) {
8265 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
8268 return;
8274 * 6.5.4.3. LAN Redundancy Get Statistics (Confirmed Service Id = 3)
8275 * 6.5.4.3.1. Request Message Parameters
8277 static void
8278 dissect_ff_msg_lr_get_statistics_req(
8279 tvbuff_t *tvb, int offset,
8280 uint32_t length, packet_info *pinfo, proto_tree *tree)
8282 proto_tree *sub_tree;
8284 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Statistics Request");
8286 if (!tree) {
8287 return;
8290 if (length) {
8291 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
8292 ett_ff_lr_get_statistics_req, NULL, "LAN Redundancy Get Statistics Request");
8294 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
8301 * 6.5.4.3.2. Response Message Parameters
8303 static void
8304 dissect_ff_msg_lr_get_statistics_rsp_x_cable_stat(tvbuff_t *tvb,
8305 int offset, proto_tree *tree, uint32_t value)
8307 proto_tree *sub_tree;
8308 unsigned d;
8310 if (!tree) {
8311 return;
8314 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
8315 ett_ff_lr_get_statistics_rsp_list_of_x_cable_stat, NULL,
8316 "List of Crossed Cable Status (%u bytes)", 4 * value);
8318 for (d = 0; d < value; d++) {
8319 proto_tree_add_item(sub_tree,
8320 hf_ff_lr_get_statistics_rsp_x_cable_stat, tvb, offset, 4, ENC_BIG_ENDIAN);
8322 offset += 4;
8328 static void
8329 dissect_ff_msg_lr_get_statistics_rsp(
8330 tvbuff_t *tvb, int offset,
8331 uint32_t length, packet_info *pinfo, proto_tree *tree)
8333 proto_tree *sub_tree;
8334 uint32_t NumXcableStat;
8336 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Statistics Response");
8338 if (!tree) {
8339 return;
8342 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
8343 ett_ff_lr_get_statistics_rsp, NULL, "LAN Redundancy Get Statistics Response");
8345 proto_tree_add_item(sub_tree,
8346 hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_a,
8347 tvb, offset, 4, ENC_BIG_ENDIAN);
8348 offset += 4;
8349 length -= 4;
8351 proto_tree_add_item(sub_tree,
8352 hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_a,
8353 tvb, offset, 4, ENC_BIG_ENDIAN);
8354 offset += 4;
8355 length -= 4;
8357 proto_tree_add_item(sub_tree,
8358 hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_a,
8359 tvb, offset, 4, ENC_BIG_ENDIAN);
8360 offset += 4;
8361 length -= 4;
8363 proto_tree_add_item(sub_tree,
8364 hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_b,
8365 tvb, offset, 4, ENC_BIG_ENDIAN);
8366 offset += 4;
8367 length -= 4;
8369 proto_tree_add_item(sub_tree,
8370 hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_b,
8371 tvb, offset, 4, ENC_BIG_ENDIAN);
8372 offset += 4;
8373 length -= 4;
8375 proto_tree_add_item(sub_tree,
8376 hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_b,
8377 tvb, offset, 4, ENC_BIG_ENDIAN);
8378 offset += 4;
8379 length -= 4;
8381 NumXcableStat = tvb_get_ntohl(tvb, offset);
8382 proto_tree_add_item(sub_tree,
8383 hf_ff_lr_get_statistics_rsp_num_x_cable_stat, tvb, offset, 4, ENC_BIG_ENDIAN);
8384 offset += 4;
8385 length -= 4;
8387 if (NumXcableStat) {
8388 dissect_ff_msg_lr_get_statistics_rsp_x_cable_stat(tvb,
8389 offset, sub_tree, NumXcableStat);
8390 offset += 4 * NumXcableStat;
8391 length -= 4 * NumXcableStat;
8394 if (length) {
8395 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
8402 * 6.5.4.3.3. Error Message Parameters
8404 static void
8405 dissect_ff_msg_lr_get_statistics_err(
8406 tvbuff_t *tvb, int offset,
8407 uint32_t length, packet_info *pinfo, proto_tree *tree)
8409 proto_tree *sub_tree;
8410 uint8_t ErrorClass;
8411 uint8_t ErrorCode;
8412 const char *error_code;
8414 col_set_str(pinfo->cinfo, COL_INFO, "LAN Redundancy Get Statistics Error");
8416 if (!tree) {
8417 return;
8420 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
8421 ett_ff_lr_get_statistics_err, NULL, "LAN Redundancy Get Statistics Error");
8423 ErrorClass = tvb_get_uint8(tvb, offset);
8424 proto_tree_add_item(sub_tree,
8425 hf_ff_lr_get_statistics_err_err_class, tvb, offset, 1, ENC_BIG_ENDIAN);
8426 offset += 1;
8427 length -= 1;
8429 ErrorCode = tvb_get_uint8(tvb, offset);
8430 error_code = val_to_str_err_code(ErrorClass, ErrorCode);
8431 proto_tree_add_uint_format_value(sub_tree,
8432 hf_ff_lr_get_statistics_err_err_code,
8433 tvb, offset, 1, ErrorCode,
8434 "%s (%u)", error_code, ErrorCode);
8435 offset += 1;
8436 length -= 1;
8438 proto_tree_add_item(sub_tree,
8439 hf_ff_lr_get_statistics_err_additional_code, tvb, offset, 2, ENC_BIG_ENDIAN);
8440 offset += 2;
8441 length -= 2;
8443 proto_tree_add_item(sub_tree,
8444 hf_ff_lr_get_statistics_err_additional_desc,
8445 tvb, offset, 16, ENC_ASCII);
8446 offset += 16;
8447 length -= 16;
8449 if (length) {
8450 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
8457 * 6.5.4.4. Diagnostic Message (Unconfirmed Service Id = 1)
8458 * 6.5.4.4.1. Request Message Parameters
8460 static void
8461 dissect_ff_msg_diagnostic_msg_req_dup_detection_stat(tvbuff_t *tvb,
8462 int offset, proto_tree *tree)
8465 * Bits 3-8: Reserved, set to 0.
8466 * Bit 2: 1 = Duplicate PD Tag Detected
8467 * 0 = Duplicate PD Tag Not Detected
8468 * Bit 18: 1 = Duplicate Device Index Detected
8469 * 0 = Duplicate Device Index Not Detected
8471 static int * const dup_flags[] = {
8472 &hf_ff_lr_diagnostic_msg_req_dup_detection_state_reserved,
8473 &hf_ff_lr_diagnostic_msg_req_dup_detection_state_pd_tag,
8474 &hf_ff_lr_diagnostic_msg_req_dup_detection_state_device,
8475 NULL
8478 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_lr_diagnostic_msg_req_dup_detection_state, ett_ff_lr_diagnostic_msg_req_dup_detection_stat, dup_flags, ENC_BIG_ENDIAN);
8483 static void
8484 dissect_ff_msg_diagnostic_msg_req_if_a_to_a_status(tvbuff_t *tvb,
8485 int offset, proto_tree *tree, uint32_t value)
8487 proto_tree *sub_tree;
8488 unsigned d;
8490 if (!tree) {
8491 return;
8494 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
8495 ett_ff_lr_diagnostic_msg_req_a_to_a_status, NULL,
8496 "List of Interface AtoA Statuses (%u bytes)", 4 * value);
8498 for (d = 0; d < value; d++) {
8499 proto_tree_add_item(sub_tree,
8500 hf_ff_lr_diagnostic_msg_req_if_a_to_a_status,
8501 tvb, offset, 4, ENC_BIG_ENDIAN);
8503 offset += 4;
8509 static void
8510 dissect_ff_msg_diagnostic_msg_req_if_b_to_a_status(tvbuff_t *tvb,
8511 int offset, proto_tree *tree, uint32_t value)
8513 proto_tree *sub_tree;
8514 unsigned d;
8516 if (!tree) {
8517 return;
8520 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
8521 ett_ff_lr_diagnostic_msg_req_b_to_a_status, NULL,
8522 "List of Interface BtoA Statuses (%u bytes)", 4 * value);
8524 for (d = 0; d < value; d++) {
8525 proto_tree_add_item(sub_tree,
8526 hf_ff_lr_diagnostic_msg_req_if_b_to_a_status,
8527 tvb, offset, 4, ENC_BIG_ENDIAN);
8529 offset += 4;
8535 static void
8536 dissect_ff_msg_diagnostic_msg_req_if_a_to_b_status(tvbuff_t *tvb,
8537 int offset, proto_tree *tree, uint32_t value)
8539 proto_tree *sub_tree;
8540 unsigned d;
8542 if (!tree) {
8543 return;
8546 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
8547 ett_ff_lr_diagnostic_msg_req_a_to_b_status, NULL,
8548 "List of Interface AtoB Statuses (%u bytes)", 4 * value);
8550 for (d = 0; d < value; d++) {
8551 proto_tree_add_item(sub_tree,
8552 hf_ff_lr_diagnostic_msg_req_if_a_to_b_status,
8553 tvb, offset, 4, ENC_BIG_ENDIAN);
8555 offset += 4;
8561 static void
8562 dissect_ff_msg_diagnostic_msg_req_if_b_to_b_status(tvbuff_t *tvb,
8563 int offset, proto_tree *tree, uint32_t value)
8565 proto_tree *sub_tree;
8566 unsigned d;
8568 if (!tree) {
8569 return;
8572 sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 * value,
8573 ett_ff_lr_diagnostic_msg_req_b_to_b_status, NULL,
8574 "List of Interface BtoB Statuses (%u bytes)", 4 * value);
8576 for (d = 0; d < value; d++) {
8577 proto_tree_add_item(sub_tree,
8578 hf_ff_lr_diagnostic_msg_req_if_b_to_b_status,
8579 tvb, offset, 4, ENC_BIG_ENDIAN);
8581 offset += 4;
8587 static void
8588 dissect_ff_msg_diagnostic_msg_req(
8589 tvbuff_t *tvb, int offset,
8590 uint32_t length, packet_info *pinfo, proto_tree *tree)
8592 proto_tree *sub_tree;
8593 uint16_t DeviceIndex;
8594 uint16_t NumOfInterfaceStatuses;
8596 col_set_str(pinfo->cinfo, COL_INFO, "Diagnostic Message Request");
8598 if (!tree) {
8599 return;
8602 sub_tree = proto_tree_add_subtree(tree, tvb, offset, length,
8603 ett_ff_lr_diagnostic_msg_req, NULL, "Diagnostic Message Request");
8605 DeviceIndex = tvb_get_ntohs(tvb, offset);
8606 if (DeviceIndex) {
8607 proto_tree_add_item(sub_tree,
8608 hf_ff_lr_diagnostic_msg_req_dev_idx, tvb, offset, 2, ENC_BIG_ENDIAN);
8609 } else {
8610 proto_tree_add_uint_format_value(sub_tree,
8611 hf_ff_lr_diagnostic_msg_req_dev_idx,
8612 tvb, offset, 2, DeviceIndex,
8613 "Index not assigned (%u)", DeviceIndex);
8615 offset += 2;
8616 length -= 2;
8618 proto_tree_add_item(sub_tree,
8619 hf_ff_lr_diagnostic_msg_req_num_of_network_ifs,
8620 tvb, offset, 1, ENC_BIG_ENDIAN);
8621 offset += 1;
8622 length -= 1;
8624 proto_tree_add_item(sub_tree,
8625 hf_ff_lr_diagnostic_msg_req_transmission_if, tvb, offset, 1, ENC_BIG_ENDIAN);
8626 offset += 1;
8627 length -= 1;
8629 proto_tree_add_item(sub_tree,
8630 hf_ff_lr_diagnostic_msg_req_diagnostic_msg_intvl,
8631 tvb, offset, 4, ENC_BIG_ENDIAN);
8632 offset += 4;
8633 length -= 4;
8635 proto_tree_add_item(sub_tree,
8636 hf_ff_lr_diagnostic_msg_req_pd_tag, tvb, offset, 32, ENC_ASCII);
8637 offset += 32;
8638 length -= 32;
8640 proto_tree_add_item(sub_tree,
8641 hf_ff_lr_diagnostic_msg_req_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
8642 offset += 1;
8643 length -= 1;
8645 dissect_ff_msg_diagnostic_msg_req_dup_detection_stat(tvb,
8646 offset, sub_tree);
8647 offset += 1;
8648 length -= 1;
8650 NumOfInterfaceStatuses = tvb_get_ntohs(tvb, offset);
8651 proto_tree_add_item(sub_tree,
8652 hf_ff_lr_diagnostic_msg_req_num_of_if_statuses, tvb, offset, 2, ENC_BIG_ENDIAN);
8653 offset += 2;
8654 length -= 2;
8656 if (NumOfInterfaceStatuses) {
8657 dissect_ff_msg_diagnostic_msg_req_if_a_to_a_status(tvb,
8658 offset, sub_tree, NumOfInterfaceStatuses);
8659 offset += 4 * NumOfInterfaceStatuses;
8660 length -= 4 * NumOfInterfaceStatuses;
8662 dissect_ff_msg_diagnostic_msg_req_if_b_to_a_status(tvb,
8663 offset, sub_tree, NumOfInterfaceStatuses);
8664 offset += 4 * NumOfInterfaceStatuses;
8665 length -= 4 * NumOfInterfaceStatuses;
8667 dissect_ff_msg_diagnostic_msg_req_if_a_to_b_status(tvb,
8668 offset, sub_tree, NumOfInterfaceStatuses);
8669 offset += 4 * NumOfInterfaceStatuses;
8670 length -= 4 * NumOfInterfaceStatuses;
8672 dissect_ff_msg_diagnostic_msg_req_if_b_to_b_status(tvb,
8673 offset, sub_tree, NumOfInterfaceStatuses);
8674 offset += 4 * NumOfInterfaceStatuses;
8675 length -= 4 * NumOfInterfaceStatuses;
8678 if (length) {
8679 proto_tree_add_item(sub_tree, hf_ff_unknown_data, tvb, offset, length, ENC_NA);
8686 * 6.5. Service-Specific Parameters
8688 static void
8689 dissect_ff_msg_body(tvbuff_t *tvb, int offset, uint32_t length,
8690 packet_info *pinfo, proto_tree *tree,
8691 uint8_t ProtocolAndType, uint8_t Service, uint32_t FDAAddress)
8693 proto_item *hidden_item;
8694 uint16_t message = 0;
8696 message = ((uint16_t)ProtocolAndType) << 8;
8697 message |= (uint16_t)Service;
8699 switch (message) {
8700 case FDA_MSG_SESSION_OPEN_REQ:
8701 hidden_item = proto_tree_add_boolean(tree,
8702 hf_ff_fda, tvb, 0, 0, 1);
8703 proto_item_set_hidden(hidden_item);
8704 hidden_item = proto_tree_add_boolean(tree,
8705 hf_ff_fda_open_sess, tvb, 0, 0, 1);
8706 proto_item_set_hidden(hidden_item);
8707 hidden_item = proto_tree_add_boolean(tree,
8708 hf_ff_fda_open_sess_req, tvb, 0, 0, 1);
8709 proto_item_set_hidden(hidden_item);
8711 dissect_ff_msg_fda_open_sess_req(tvb, offset, length,
8712 pinfo, tree);
8713 break;
8715 case FDA_MSG_SESSION_OPEN_RSP:
8716 hidden_item = proto_tree_add_boolean(tree,
8717 hf_ff_fda, tvb, 0, 0, 1);
8718 proto_item_set_hidden(hidden_item);
8719 hidden_item = proto_tree_add_boolean(tree,
8720 hf_ff_fda_open_sess, tvb, 0, 0, 1);
8721 proto_item_set_hidden(hidden_item);
8722 hidden_item = proto_tree_add_boolean(tree,
8723 hf_ff_fda_open_sess_rsp, tvb, 0, 0, 1);
8724 proto_item_set_hidden(hidden_item);
8726 dissect_ff_msg_fda_open_sess_rsp(tvb, offset, length,
8727 pinfo, tree);
8728 break;
8730 case FDA_MSG_SESSION_OPEN_ERR:
8731 hidden_item = proto_tree_add_boolean(tree,
8732 hf_ff_fda, tvb, 0, 0, 1);
8733 proto_item_set_hidden(hidden_item);
8734 hidden_item = proto_tree_add_boolean(tree,
8735 hf_ff_fda_open_sess, tvb, 0, 0, 1);
8736 proto_item_set_hidden(hidden_item);
8737 hidden_item = proto_tree_add_boolean(tree,
8738 hf_ff_fda_open_sess_err, tvb, 0, 0, 1);
8739 proto_item_set_hidden(hidden_item);
8741 dissect_ff_msg_fda_open_sess_err(tvb, offset, length,
8742 pinfo, tree);
8743 break;
8745 case FDA_MSG_SESSION_IDLE_REQ:
8746 hidden_item = proto_tree_add_boolean(tree,
8747 hf_ff_fda, tvb, 0, 0, 1);
8748 proto_item_set_hidden(hidden_item);
8749 hidden_item = proto_tree_add_boolean(tree,
8750 hf_ff_fda_idle, tvb, 0, 0, 1);
8751 proto_item_set_hidden(hidden_item);
8752 hidden_item = proto_tree_add_boolean(tree,
8753 hf_ff_fda_idle_req, tvb, 0, 0, 1);
8754 proto_item_set_hidden(hidden_item);
8756 dissect_ff_msg_fda_idle_req(tvb, offset, length,
8757 pinfo, tree);
8758 break;
8760 case FDA_MSG_SESSION_IDLE_RSP:
8761 hidden_item = proto_tree_add_boolean(tree,
8762 hf_ff_fda, tvb, 0, 0, 1);
8763 proto_item_set_hidden(hidden_item);
8764 hidden_item = proto_tree_add_boolean(tree,
8765 hf_ff_fda_idle, tvb, 0, 0, 1);
8766 proto_item_set_hidden(hidden_item);
8767 hidden_item = proto_tree_add_boolean(tree,
8768 hf_ff_fda_idle_rsp, tvb, 0, 0, 1);
8769 proto_item_set_hidden(hidden_item);
8771 dissect_ff_msg_fda_idle_rsp(tvb, offset, length,
8772 pinfo, tree);
8773 break;
8775 case FDA_MSG_SESSION_IDLE_ERR:
8776 hidden_item = proto_tree_add_boolean(tree,
8777 hf_ff_fda, tvb, 0, 0, 1);
8778 proto_item_set_hidden(hidden_item);
8779 hidden_item = proto_tree_add_boolean(tree,
8780 hf_ff_fda_idle, tvb, 0, 0, 1);
8781 proto_item_set_hidden(hidden_item);
8782 hidden_item = proto_tree_add_boolean(tree,
8783 hf_ff_fda_idle_err, tvb, 0, 0, 1);
8784 proto_item_set_hidden(hidden_item);
8786 dissect_ff_msg_fda_idle_err(tvb, offset, length,
8787 pinfo, tree);
8788 break;
8790 case SM_MSG_FIND_TAG_QUERY_REQ:
8791 hidden_item = proto_tree_add_boolean(tree,
8792 hf_ff_sm, tvb, 0, 0, 1);
8793 proto_item_set_hidden(hidden_item);
8794 hidden_item = proto_tree_add_boolean(tree,
8795 hf_ff_sm_find_tag_query, tvb, 0, 0, 1);
8796 proto_item_set_hidden(hidden_item);
8797 hidden_item = proto_tree_add_boolean(tree,
8798 hf_ff_sm_find_tag_query_req, tvb, 0, 0, 1);
8799 proto_item_set_hidden(hidden_item);
8801 dissect_ff_msg_sm_find_tag_query_req(tvb, offset, length,
8802 pinfo, tree);
8803 break;
8805 case SM_MSG_FIND_TAG_REPLY_REQ:
8806 hidden_item = proto_tree_add_boolean(tree,
8807 hf_ff_sm, tvb, 0, 0, 1);
8808 proto_item_set_hidden(hidden_item);
8809 hidden_item = proto_tree_add_boolean(tree,
8810 hf_ff_sm_find_tag_reply, tvb, 0, 0, 1);
8811 proto_item_set_hidden(hidden_item);
8812 hidden_item = proto_tree_add_boolean(tree,
8813 hf_ff_sm_find_tag_reply_req, tvb, 0, 0, 1);
8814 proto_item_set_hidden(hidden_item);
8816 dissect_ff_msg_sm_find_tag_reply_req(tvb, offset, length,
8817 pinfo, tree);
8818 break;
8820 case SM_MSG_IDENTIFY_REQ:
8821 hidden_item = proto_tree_add_boolean(tree,
8822 hf_ff_sm, tvb, 0, 0, 1);
8823 proto_item_set_hidden(hidden_item);
8824 hidden_item = proto_tree_add_boolean(tree,
8825 hf_ff_sm_id, tvb, 0, 0, 1);
8826 proto_item_set_hidden(hidden_item);
8827 hidden_item = proto_tree_add_boolean(tree,
8828 hf_ff_sm_id_req, tvb, 0, 0, 1);
8829 proto_item_set_hidden(hidden_item);
8831 dissect_ff_msg_sm_id_req(tvb, offset, length,
8832 pinfo, tree);
8833 break;
8835 case SM_MSG_IDENTIFY_RSP:
8836 hidden_item = proto_tree_add_boolean(tree,
8837 hf_ff_sm, tvb, 0, 0, 1);
8838 proto_item_set_hidden(hidden_item);
8839 hidden_item = proto_tree_add_boolean(tree,
8840 hf_ff_sm_id, tvb, 0, 0, 1);
8841 proto_item_set_hidden(hidden_item);
8842 hidden_item = proto_tree_add_boolean(tree,
8843 hf_ff_sm_id_rsp, tvb, 0, 0, 1);
8844 proto_item_set_hidden(hidden_item);
8846 dissect_ff_msg_sm_id_rsp(tvb, offset, length,
8847 pinfo, tree, FDAAddress);
8848 break;
8850 case SM_MSG_IDENTIFY_ERR:
8851 hidden_item = proto_tree_add_boolean(tree,
8852 hf_ff_sm, tvb, 0, 0, 1);
8853 proto_item_set_hidden(hidden_item);
8854 hidden_item = proto_tree_add_boolean(tree,
8855 hf_ff_sm_id, tvb, 0, 0, 1);
8856 proto_item_set_hidden(hidden_item);
8857 hidden_item = proto_tree_add_boolean(tree,
8858 hf_ff_sm_id_err, tvb, 0, 0, 1);
8859 proto_item_set_hidden(hidden_item);
8861 dissect_ff_msg_sm_id_err(tvb, offset, length,
8862 pinfo, tree);
8863 break;
8865 case SM_MSG_CLEAR_ADDRESS_REQ:
8866 hidden_item = proto_tree_add_boolean(tree,
8867 hf_ff_sm, tvb, 0, 0, 1);
8868 proto_item_set_hidden(hidden_item);
8869 hidden_item = proto_tree_add_boolean(tree,
8870 hf_ff_sm_clear_addr, tvb, 0, 0, 1);
8871 proto_item_set_hidden(hidden_item);
8872 hidden_item = proto_tree_add_boolean(tree,
8873 hf_ff_sm_clear_addr_req, tvb, 0, 0, 1);
8874 proto_item_set_hidden(hidden_item);
8876 dissect_ff_msg_sm_clear_addr_req(tvb, offset, length,
8877 pinfo, tree);
8878 break;
8880 case SM_MSG_CLEAR_ADDRESS_RSP:
8881 hidden_item = proto_tree_add_boolean(tree,
8882 hf_ff_sm, tvb, 0, 0, 1);
8883 proto_item_set_hidden(hidden_item);
8884 hidden_item = proto_tree_add_boolean(tree,
8885 hf_ff_sm_clear_addr, tvb, 0, 0, 1);
8886 proto_item_set_hidden(hidden_item);
8887 hidden_item = proto_tree_add_boolean(tree,
8888 hf_ff_sm_clear_addr_rsp, tvb, 0, 0, 1);
8889 proto_item_set_hidden(hidden_item);
8891 dissect_ff_msg_sm_clear_addr_rsp(tvb, offset, length,
8892 pinfo, tree);
8893 break;
8895 case SM_MSG_CLEAR_ADDRESS_ERR:
8896 hidden_item = proto_tree_add_boolean(tree,
8897 hf_ff_sm, tvb, 0, 0, 1);
8898 proto_item_set_hidden(hidden_item);
8899 hidden_item = proto_tree_add_boolean(tree,
8900 hf_ff_sm_clear_addr, tvb, 0, 0, 1);
8901 proto_item_set_hidden(hidden_item);
8902 hidden_item = proto_tree_add_boolean(tree,
8903 hf_ff_sm_clear_addr_err, tvb, 0, 0, 1);
8904 proto_item_set_hidden(hidden_item);
8906 dissect_ff_msg_sm_clear_addr_err(tvb, offset, length,
8907 pinfo, tree);
8908 break;
8910 case SM_MSG_SET_ASSIGNMENT_REQ:
8911 hidden_item = proto_tree_add_boolean(tree,
8912 hf_ff_sm, tvb, 0, 0, 1);
8913 proto_item_set_hidden(hidden_item);
8914 hidden_item = proto_tree_add_boolean(tree,
8915 hf_ff_sm_set_assign_info, tvb, 0, 0, 1);
8916 proto_item_set_hidden(hidden_item);
8917 hidden_item = proto_tree_add_boolean(tree,
8918 hf_ff_sm_set_assign_info_req, tvb, 0, 0, 1);
8919 proto_item_set_hidden(hidden_item);
8921 dissect_ff_msg_sm_set_assign_info_req(tvb, offset,
8922 length, pinfo, tree);
8923 break;
8925 case SM_MSG_SET_ASSIGNMENT_RSP:
8926 hidden_item = proto_tree_add_boolean(tree,
8927 hf_ff_sm, tvb, 0, 0, 1);
8928 proto_item_set_hidden(hidden_item);
8929 hidden_item = proto_tree_add_boolean(tree,
8930 hf_ff_sm_set_assign_info, tvb, 0, 0, 1);
8931 proto_item_set_hidden(hidden_item);
8932 hidden_item = proto_tree_add_boolean(tree,
8933 hf_ff_sm_set_assign_info_rsp, tvb, 0, 0, 1);
8934 proto_item_set_hidden(hidden_item);
8936 dissect_ff_msg_sm_set_assign_info_rsp(tvb, offset,
8937 length, pinfo, tree);
8938 break;
8940 case SM_MSG_SET_ASSIGNMENT_ERR:
8941 hidden_item = proto_tree_add_boolean(tree,
8942 hf_ff_sm, tvb, 0, 0, 1);
8943 proto_item_set_hidden(hidden_item);
8944 hidden_item = proto_tree_add_boolean(tree,
8945 hf_ff_sm_set_assign_info, tvb, 0, 0, 1);
8946 proto_item_set_hidden(hidden_item);
8947 hidden_item = proto_tree_add_boolean(tree,
8948 hf_ff_sm_set_assign_info_err, tvb, 0, 0, 1);
8949 proto_item_set_hidden(hidden_item);
8951 dissect_ff_msg_sm_set_assign_info_err(tvb, offset,
8952 length, pinfo, tree);
8953 break;
8955 case SM_MSG_CLEAR_ASSIGNMENT_REQ:
8956 hidden_item = proto_tree_add_boolean(tree,
8957 hf_ff_sm, tvb, 0, 0, 1);
8958 proto_item_set_hidden(hidden_item);
8959 hidden_item = proto_tree_add_boolean(tree,
8960 hf_ff_sm_clear_assign_info, tvb, 0, 0, 1);
8961 proto_item_set_hidden(hidden_item);
8962 hidden_item = proto_tree_add_boolean(tree,
8963 hf_ff_sm_clear_assign_info_req, tvb, 0, 0, 1);
8964 proto_item_set_hidden(hidden_item);
8966 dissect_ff_msg_sm_clear_assign_info_req(tvb, offset,
8967 length, pinfo, tree);
8968 break;
8970 case SM_MSG_CLEAR_ASSIGNMENT_RSP:
8971 hidden_item = proto_tree_add_boolean(tree,
8972 hf_ff_sm, tvb, 0, 0, 1);
8973 proto_item_set_hidden(hidden_item);
8974 hidden_item = proto_tree_add_boolean(tree,
8975 hf_ff_sm_clear_assign_info, tvb, 0, 0, 1);
8976 proto_item_set_hidden(hidden_item);
8977 hidden_item = proto_tree_add_boolean(tree,
8978 hf_ff_sm_clear_assign_info_rsp, tvb, 0, 0, 1);
8979 proto_item_set_hidden(hidden_item);
8981 dissect_ff_msg_sm_clear_assign_info_rsp(tvb, offset,
8982 length, pinfo, tree);
8983 break;
8985 case SM_MSG_CLEAR_ASSIGNMENT_ERR:
8986 hidden_item = proto_tree_add_boolean(tree,
8987 hf_ff_sm, tvb, 0, 0, 1);
8988 proto_item_set_hidden(hidden_item);
8989 hidden_item = proto_tree_add_boolean(tree,
8990 hf_ff_sm_clear_assign_info, tvb, 0, 0, 1);
8991 proto_item_set_hidden(hidden_item);
8992 hidden_item = proto_tree_add_boolean(tree,
8993 hf_ff_sm_clear_assign_info_err, tvb, 0, 0, 1);
8994 proto_item_set_hidden(hidden_item);
8996 dissect_ff_msg_sm_clear_assign_info_err(tvb, offset,
8997 length, pinfo, tree);
8998 break;
9000 case SM_MSG_DEVICE_ANNUNCIATION_REQ:
9001 hidden_item = proto_tree_add_boolean(tree,
9002 hf_ff_sm, tvb, 0, 0, 1);
9003 proto_item_set_hidden(hidden_item);
9004 hidden_item = proto_tree_add_boolean(tree,
9005 hf_ff_sm_dev_annunc, tvb, 0, 0, 1);
9006 proto_item_set_hidden(hidden_item);
9007 hidden_item = proto_tree_add_boolean(tree,
9008 hf_ff_sm_dev_annunc_req, tvb, 0, 0, 1);
9009 proto_item_set_hidden(hidden_item);
9011 dissect_ff_msg_sm_dev_annunc_req(tvb, offset,
9012 length, pinfo, tree, FDAAddress);
9013 break;
9015 case FMS_MSG_INITIATE_REQ:
9016 hidden_item = proto_tree_add_boolean(tree,
9017 hf_ff_fms, tvb, 0, 0, 1);
9018 proto_item_set_hidden(hidden_item);
9019 hidden_item = proto_tree_add_boolean(tree,
9020 hf_ff_fms_init, tvb, 0, 0, 1);
9021 proto_item_set_hidden(hidden_item);
9022 hidden_item = proto_tree_add_boolean(tree,
9023 hf_ff_fms_init_req, tvb, 0, 0, 1);
9024 proto_item_set_hidden(hidden_item);
9026 dissect_ff_msg_fms_init_req(tvb, offset,
9027 length, pinfo, tree);
9028 break;
9030 case FMS_MSG_INITIATE_RSP:
9031 hidden_item = proto_tree_add_boolean(tree,
9032 hf_ff_fms, tvb, 0, 0, 1);
9033 proto_item_set_hidden(hidden_item);
9034 hidden_item = proto_tree_add_boolean(tree,
9035 hf_ff_fms_init, tvb, 0, 0, 1);
9036 proto_item_set_hidden(hidden_item);
9037 hidden_item = proto_tree_add_boolean(tree,
9038 hf_ff_fms_init_rsp, tvb, 0, 0, 1);
9039 proto_item_set_hidden(hidden_item);
9041 dissect_ff_msg_fms_init_rsp(tvb, offset,
9042 length, pinfo, tree);
9043 break;
9045 case FMS_MSG_INITIATE_ERR:
9046 hidden_item = proto_tree_add_boolean(tree,
9047 hf_ff_fms, tvb, 0, 0, 1);
9048 proto_item_set_hidden(hidden_item);
9049 hidden_item = proto_tree_add_boolean(tree,
9050 hf_ff_fms_init, tvb, 0, 0, 1);
9051 proto_item_set_hidden(hidden_item);
9052 hidden_item = proto_tree_add_boolean(tree,
9053 hf_ff_fms_init_err, tvb, 0, 0, 1);
9054 proto_item_set_hidden(hidden_item);
9056 dissect_ff_msg_fms_init_err(tvb, offset,
9057 length, pinfo, tree);
9058 break;
9060 case FMS_MSG_ABORT_REQ:
9061 hidden_item = proto_tree_add_boolean(tree,
9062 hf_ff_fms, tvb, 0, 0, 1);
9063 proto_item_set_hidden(hidden_item);
9064 hidden_item = proto_tree_add_boolean(tree,
9065 hf_ff_fms_abort, tvb, 0, 0, 1);
9066 proto_item_set_hidden(hidden_item);
9067 hidden_item = proto_tree_add_boolean(tree,
9068 hf_ff_fms_abort_req, tvb, 0, 0, 1);
9069 proto_item_set_hidden(hidden_item);
9071 dissect_ff_msg_fms_abort_req(tvb, offset,
9072 length, pinfo, tree);
9073 break;
9075 case FMS_MSG_STATUS_REQ:
9076 hidden_item = proto_tree_add_boolean(tree,
9077 hf_ff_fms, tvb, 0, 0, 1);
9078 proto_item_set_hidden(hidden_item);
9079 hidden_item = proto_tree_add_boolean(tree,
9080 hf_ff_fms_status, tvb, 0, 0, 1);
9081 proto_item_set_hidden(hidden_item);
9082 hidden_item = proto_tree_add_boolean(tree,
9083 hf_ff_fms_status_req, tvb, 0, 0, 1);
9084 proto_item_set_hidden(hidden_item);
9086 dissect_ff_msg_fms_status_req(tvb, offset,
9087 length, pinfo, tree);
9088 break;
9090 case FMS_MSG_STATUS_RSP:
9091 hidden_item = proto_tree_add_boolean(tree,
9092 hf_ff_fms, tvb, 0, 0, 1);
9093 proto_item_set_hidden(hidden_item);
9094 hidden_item = proto_tree_add_boolean(tree,
9095 hf_ff_fms_status, tvb, 0, 0, 1);
9096 proto_item_set_hidden(hidden_item);
9097 hidden_item = proto_tree_add_boolean(tree,
9098 hf_ff_fms_status_rsp, tvb, 0, 0, 1);
9099 proto_item_set_hidden(hidden_item);
9101 dissect_ff_msg_fms_status_rsp(tvb, offset,
9102 length, pinfo, tree);
9103 break;
9105 case FMS_MSG_STATUS_ERR:
9106 hidden_item = proto_tree_add_boolean(tree,
9107 hf_ff_fms, tvb, 0, 0, 1);
9108 proto_item_set_hidden(hidden_item);
9109 hidden_item = proto_tree_add_boolean(tree,
9110 hf_ff_fms_status, tvb, 0, 0, 1);
9111 proto_item_set_hidden(hidden_item);
9112 hidden_item = proto_tree_add_boolean(tree,
9113 hf_ff_fms_status_err, tvb, 0, 0, 1);
9114 proto_item_set_hidden(hidden_item);
9116 dissect_ff_msg_fms_status_err(tvb, offset,
9117 length, pinfo, tree);
9118 break;
9120 case FMS_MSG_UNSOLICITED_STATUS_REQ:
9121 hidden_item = proto_tree_add_boolean(tree,
9122 hf_ff_fms, tvb, 0, 0, 1);
9123 proto_item_set_hidden(hidden_item);
9124 hidden_item = proto_tree_add_boolean(tree,
9125 hf_ff_fms_unsolicited_status, tvb, 0, 0, 1);
9126 proto_item_set_hidden(hidden_item);
9127 hidden_item = proto_tree_add_boolean(tree,
9128 hf_ff_fms_unsolicited_status_req, tvb, 0, 0, 1);
9129 proto_item_set_hidden(hidden_item);
9131 dissect_ff_msg_fms_unsolicited_status_req(tvb, offset,
9132 length, pinfo, tree);
9133 break;
9135 case FMS_MSG_IDENTIFY_REQ:
9136 hidden_item = proto_tree_add_boolean(tree,
9137 hf_ff_fms, tvb, 0, 0, 1);
9138 proto_item_set_hidden(hidden_item);
9139 hidden_item = proto_tree_add_boolean(tree,
9140 hf_ff_fms_id, tvb, 0, 0, 1);
9141 proto_item_set_hidden(hidden_item);
9142 hidden_item = proto_tree_add_boolean(tree,
9143 hf_ff_fms_id_req, tvb, 0, 0, 1);
9144 proto_item_set_hidden(hidden_item);
9146 dissect_ff_msg_fms_id_req(tvb, offset,
9147 length, pinfo, tree);
9148 break;
9150 case FMS_MSG_IDENTIFY_RSP:
9151 hidden_item = proto_tree_add_boolean(tree,
9152 hf_ff_fms, tvb, 0, 0, 1);
9153 proto_item_set_hidden(hidden_item);
9154 hidden_item = proto_tree_add_boolean(tree,
9155 hf_ff_fms_id, tvb, 0, 0, 1);
9156 proto_item_set_hidden(hidden_item);
9157 hidden_item = proto_tree_add_boolean(tree,
9158 hf_ff_fms_id_rsp, tvb, 0, 0, 1);
9159 proto_item_set_hidden(hidden_item);
9161 dissect_ff_msg_fms_id_rsp(tvb, offset,
9162 length, pinfo, tree);
9163 break;
9165 case FMS_MSG_IDENTIFY_ERR:
9166 hidden_item = proto_tree_add_boolean(tree,
9167 hf_ff_fms, tvb, 0, 0, 1);
9168 proto_item_set_hidden(hidden_item);
9169 hidden_item = proto_tree_add_boolean(tree,
9170 hf_ff_fms_id, tvb, 0, 0, 1);
9171 proto_item_set_hidden(hidden_item);
9172 hidden_item = proto_tree_add_boolean(tree,
9173 hf_ff_fms_id_err, tvb, 0, 0, 1);
9174 proto_item_set_hidden(hidden_item);
9176 dissect_ff_msg_fms_id_err(tvb, offset,
9177 length, pinfo, tree);
9178 break;
9180 case FMS_MSG_GET_OD_REQ:
9181 hidden_item = proto_tree_add_boolean(tree,
9182 hf_ff_fms, tvb, 0, 0, 1);
9183 proto_item_set_hidden(hidden_item);
9184 hidden_item = proto_tree_add_boolean(tree,
9185 hf_ff_fms_get_od, tvb, 0, 0, 1);
9186 proto_item_set_hidden(hidden_item);
9187 hidden_item = proto_tree_add_boolean(tree,
9188 hf_ff_fms_get_od_req, tvb, 0, 0, 1);
9189 proto_item_set_hidden(hidden_item);
9191 dissect_ff_msg_fms_get_od_req(tvb, offset,
9192 length, pinfo, tree);
9193 break;
9195 case FMS_MSG_GET_OD_RSP:
9196 hidden_item = proto_tree_add_boolean(tree,
9197 hf_ff_fms, tvb, 0, 0, 1);
9198 proto_item_set_hidden(hidden_item);
9199 hidden_item = proto_tree_add_boolean(tree,
9200 hf_ff_fms_get_od, tvb, 0, 0, 1);
9201 proto_item_set_hidden(hidden_item);
9202 hidden_item = proto_tree_add_boolean(tree,
9203 hf_ff_fms_get_od_rsp, tvb, 0, 0, 1);
9204 proto_item_set_hidden(hidden_item);
9206 dissect_ff_msg_fms_get_od_rsp(tvb, offset,
9207 length, pinfo, tree);
9208 break;
9210 case FMS_MSG_GET_OD_ERR:
9211 hidden_item = proto_tree_add_boolean(tree,
9212 hf_ff_fms, tvb, 0, 0, 1);
9213 proto_item_set_hidden(hidden_item);
9214 hidden_item = proto_tree_add_boolean(tree,
9215 hf_ff_fms_get_od, tvb, 0, 0, 1);
9216 proto_item_set_hidden(hidden_item);
9217 hidden_item = proto_tree_add_boolean(tree,
9218 hf_ff_fms_get_od_err, tvb, 0, 0, 1);
9219 proto_item_set_hidden(hidden_item);
9221 dissect_ff_msg_fms_get_od_err(tvb, offset,
9222 length, pinfo, tree);
9223 break;
9225 case FMS_MSG_INITIATE_PUT_OD_REQ:
9226 hidden_item = proto_tree_add_boolean(tree,
9227 hf_ff_fms, tvb, 0, 0, 1);
9228 proto_item_set_hidden(hidden_item);
9229 hidden_item = proto_tree_add_boolean(tree,
9230 hf_ff_fms_init_put_od, tvb, 0, 0, 1);
9231 proto_item_set_hidden(hidden_item);
9232 hidden_item = proto_tree_add_boolean(tree,
9233 hf_ff_fms_init_put_od_req, tvb, 0, 0, 1);
9234 proto_item_set_hidden(hidden_item);
9236 dissect_ff_msg_fms_init_put_od_req(tvb, offset,
9237 length, pinfo, tree);
9238 break;
9240 case FMS_MSG_INITIATE_PUT_OD_RSP:
9241 hidden_item = proto_tree_add_boolean(tree,
9242 hf_ff_fms, tvb, 0, 0, 1);
9243 proto_item_set_hidden(hidden_item);
9244 hidden_item = proto_tree_add_boolean(tree,
9245 hf_ff_fms_init_put_od, tvb, 0, 0, 1);
9246 proto_item_set_hidden(hidden_item);
9247 hidden_item = proto_tree_add_boolean(tree,
9248 hf_ff_fms_init_put_od_rsp, tvb, 0, 0, 1);
9249 proto_item_set_hidden(hidden_item);
9251 dissect_ff_msg_fms_init_put_od_rsp(tvb, offset,
9252 length, pinfo, tree);
9253 break;
9255 case FMS_MSG_INITIATE_PUT_OD_ERR:
9256 hidden_item = proto_tree_add_boolean(tree,
9257 hf_ff_fms, tvb, 0, 0, 1);
9258 proto_item_set_hidden(hidden_item);
9259 hidden_item = proto_tree_add_boolean(tree,
9260 hf_ff_fms_init_put_od, tvb, 0, 0, 1);
9261 proto_item_set_hidden(hidden_item);
9262 hidden_item = proto_tree_add_boolean(tree,
9263 hf_ff_fms_init_put_od_err, tvb, 0, 0, 1);
9264 proto_item_set_hidden(hidden_item);
9266 dissect_ff_msg_fms_init_put_od_err(tvb, offset,
9267 length, pinfo, tree);
9268 break;
9270 case FMS_MSG_PUT_OD_REQ:
9271 hidden_item = proto_tree_add_boolean(tree,
9272 hf_ff_fms, tvb, 0, 0, 1);
9273 proto_item_set_hidden(hidden_item);
9274 hidden_item = proto_tree_add_boolean(tree,
9275 hf_ff_fms_put_od, tvb, 0, 0, 1);
9276 proto_item_set_hidden(hidden_item);
9277 hidden_item = proto_tree_add_boolean(tree,
9278 hf_ff_fms_put_od_req, tvb, 0, 0, 1);
9279 proto_item_set_hidden(hidden_item);
9281 dissect_ff_msg_fms_put_od_req(tvb, offset,
9282 length, pinfo, tree);
9283 break;
9285 case FMS_MSG_PUT_OD_RSP:
9286 hidden_item = proto_tree_add_boolean(tree,
9287 hf_ff_fms, tvb, 0, 0, 1);
9288 proto_item_set_hidden(hidden_item);
9289 hidden_item = proto_tree_add_boolean(tree,
9290 hf_ff_fms_put_od, tvb, 0, 0, 1);
9291 proto_item_set_hidden(hidden_item);
9292 hidden_item = proto_tree_add_boolean(tree,
9293 hf_ff_fms_put_od_rsp, tvb, 0, 0, 1);
9294 proto_item_set_hidden(hidden_item);
9296 dissect_ff_msg_fms_put_od_rsp(tvb, offset,
9297 length, pinfo, tree);
9298 break;
9300 case FMS_MSG_PUT_OD_ERR:
9301 hidden_item = proto_tree_add_boolean(tree,
9302 hf_ff_fms, tvb, 0, 0, 1);
9303 proto_item_set_hidden(hidden_item);
9304 hidden_item = proto_tree_add_boolean(tree,
9305 hf_ff_fms_put_od, tvb, 0, 0, 1);
9306 proto_item_set_hidden(hidden_item);
9307 hidden_item = proto_tree_add_boolean(tree,
9308 hf_ff_fms_put_od_err, tvb, 0, 0, 1);
9309 proto_item_set_hidden(hidden_item);
9311 dissect_ff_msg_fms_put_od_err(tvb, offset,
9312 length, pinfo, tree);
9313 break;
9315 case FMS_MSG_TERMINATE_PUT_OD_REQ:
9316 hidden_item = proto_tree_add_boolean(tree,
9317 hf_ff_fms, tvb, 0, 0, 1);
9318 proto_item_set_hidden(hidden_item);
9319 hidden_item = proto_tree_add_boolean(tree,
9320 hf_ff_fms_terminate_put_od, tvb, 0, 0, 1);
9321 proto_item_set_hidden(hidden_item);
9322 hidden_item = proto_tree_add_boolean(tree,
9323 hf_ff_fms_terminate_put_od_req, tvb, 0, 0, 1);
9324 proto_item_set_hidden(hidden_item);
9326 dissect_ff_msg_fms_terminate_put_od_req(tvb, offset,
9327 length, pinfo, tree);
9328 break;
9330 case FMS_MSG_TERMINATE_PUT_OD_RSP:
9331 hidden_item = proto_tree_add_boolean(tree,
9332 hf_ff_fms, tvb, 0, 0, 1);
9333 proto_item_set_hidden(hidden_item);
9334 hidden_item = proto_tree_add_boolean(tree,
9335 hf_ff_fms_terminate_put_od, tvb, 0, 0, 1);
9336 proto_item_set_hidden(hidden_item);
9337 hidden_item = proto_tree_add_boolean(tree,
9338 hf_ff_fms_terminate_put_od_rsp, tvb, 0, 0, 1);
9339 proto_item_set_hidden(hidden_item);
9341 dissect_ff_msg_fms_terminate_put_od_rsp(tvb, offset,
9342 length, pinfo, tree);
9343 break;
9345 case FMS_MSG_TERMINATE_PUT_OD_ERR:
9346 hidden_item = proto_tree_add_boolean(tree,
9347 hf_ff_fms, tvb, 0, 0, 1);
9348 proto_item_set_hidden(hidden_item);
9349 hidden_item = proto_tree_add_boolean(tree,
9350 hf_ff_fms_terminate_put_od, tvb, 0, 0, 1);
9351 proto_item_set_hidden(hidden_item);
9352 hidden_item = proto_tree_add_boolean(tree,
9353 hf_ff_fms_terminate_put_od_err, tvb, 0, 0, 1);
9354 proto_item_set_hidden(hidden_item);
9356 dissect_ff_msg_fms_terminate_put_od_err(tvb, offset,
9357 length, pinfo, tree);
9358 break;
9360 case FMS_MSG_GENERIC_INITIATE_DOWNLOAD_SEQUENCE_REQ:
9361 hidden_item = proto_tree_add_boolean(tree,
9362 hf_ff_fms, tvb, 0, 0, 1);
9363 proto_item_set_hidden(hidden_item);
9364 hidden_item = proto_tree_add_boolean(tree,
9365 hf_ff_fms_gen_init_download_seq, tvb, 0, 0, 1);
9366 proto_item_set_hidden(hidden_item);
9367 hidden_item = proto_tree_add_boolean(tree,
9368 hf_ff_fms_gen_init_download_seq_req, tvb, 0, 0, 1);
9369 proto_item_set_hidden(hidden_item);
9371 dissect_ff_msg_fms_generic_init_download_sequence_req(
9372 tvb, offset, length, pinfo, tree);
9373 break;
9375 case FMS_MSG_GENERIC_INITIATE_DOWNLOAD_SEQUENCE_RSP:
9376 hidden_item = proto_tree_add_boolean(tree,
9377 hf_ff_fms, tvb, 0, 0, 1);
9378 proto_item_set_hidden(hidden_item);
9379 hidden_item = proto_tree_add_boolean(tree,
9380 hf_ff_fms_gen_init_download_seq, tvb, 0, 0, 1);
9381 proto_item_set_hidden(hidden_item);
9382 hidden_item = proto_tree_add_boolean(tree,
9383 hf_ff_fms_gen_init_download_seq_rsp, tvb, 0, 0, 1);
9384 proto_item_set_hidden(hidden_item);
9386 dissect_ff_msg_fms_generic_init_download_sequence_rsp(
9387 tvb, offset, length, pinfo, tree);
9388 break;
9390 case FMS_MSG_GENERIC_INITIATE_DOWNLOAD_SEQUENCE_ERR:
9391 hidden_item = proto_tree_add_boolean(tree,
9392 hf_ff_fms, tvb, 0, 0, 1);
9393 proto_item_set_hidden(hidden_item);
9394 hidden_item = proto_tree_add_boolean(tree,
9395 hf_ff_fms_gen_init_download_seq, tvb, 0, 0, 1);
9396 proto_item_set_hidden(hidden_item);
9397 hidden_item = proto_tree_add_boolean(tree,
9398 hf_ff_fms_gen_init_download_seq_err, tvb, 0, 0, 1);
9399 proto_item_set_hidden(hidden_item);
9401 dissect_ff_msg_fms_generic_init_download_sequence_err(
9402 tvb, offset, length, pinfo, tree);
9403 break;
9405 case FMS_MSG_GENERIC_DOWNLOAD_SEGMENT_REQ:
9406 hidden_item = proto_tree_add_boolean(tree,
9407 hf_ff_fms, tvb, 0, 0, 1);
9408 proto_item_set_hidden(hidden_item);
9409 hidden_item = proto_tree_add_boolean(tree,
9410 hf_ff_fms_gen_download_seg, tvb, 0, 0, 1);
9411 proto_item_set_hidden(hidden_item);
9412 hidden_item = proto_tree_add_boolean(tree,
9413 hf_ff_fms_gen_download_seg_req, tvb, 0, 0, 1);
9414 proto_item_set_hidden(hidden_item);
9416 dissect_ff_msg_fms_generic_download_segment_req(tvb,
9417 offset, length, pinfo, tree);
9418 break;
9420 case FMS_MSG_GENERIC_DOWNLOAD_SEGMENT_RSP:
9421 hidden_item = proto_tree_add_boolean(tree,
9422 hf_ff_fms, tvb, 0, 0, 1);
9423 proto_item_set_hidden(hidden_item);
9424 hidden_item = proto_tree_add_boolean(tree,
9425 hf_ff_fms_gen_download_seg, tvb, 0, 0, 1);
9426 proto_item_set_hidden(hidden_item);
9427 hidden_item = proto_tree_add_boolean(tree,
9428 hf_ff_fms_gen_download_seg_rsp, tvb, 0, 0, 1);
9429 proto_item_set_hidden(hidden_item);
9431 dissect_ff_msg_fms_generic_download_segment_rsp(tvb,
9432 offset, length, pinfo, tree);
9433 break;
9435 case FMS_MSG_GENERIC_DOWNLOAD_SEGMENT_ERR:
9436 hidden_item = proto_tree_add_boolean(tree,
9437 hf_ff_fms, tvb, 0, 0, 1);
9438 proto_item_set_hidden(hidden_item);
9439 hidden_item = proto_tree_add_boolean(tree,
9440 hf_ff_fms_gen_download_seg, tvb, 0, 0, 1);
9441 proto_item_set_hidden(hidden_item);
9442 hidden_item = proto_tree_add_boolean(tree,
9443 hf_ff_fms_gen_download_seg_err, tvb, 0, 0, 1);
9444 proto_item_set_hidden(hidden_item);
9446 dissect_ff_msg_fms_generic_download_segment_err(tvb,
9447 offset, length, pinfo, tree);
9448 break;
9450 case FMS_MSG_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE_REQ:
9451 hidden_item = proto_tree_add_boolean(tree,
9452 hf_ff_fms, tvb, 0, 0, 1);
9453 proto_item_set_hidden(hidden_item);
9454 hidden_item = proto_tree_add_boolean(tree,
9455 hf_ff_fms_gen_terminate_download_seq, tvb, 0, 0, 1);
9456 proto_item_set_hidden(hidden_item);
9457 hidden_item = proto_tree_add_boolean(tree,
9458 hf_ff_fms_gen_terminate_download_seq_req, tvb, 0, 0, 1);
9459 proto_item_set_hidden(hidden_item);
9461 dissect_ff_msg_fms_generic_terminate_download_sequence_req(
9462 tvb, offset, length, pinfo, tree);
9463 break;
9465 case FMS_MSG_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE_RSP:
9466 hidden_item = proto_tree_add_boolean(tree,
9467 hf_ff_fms, tvb, 0, 0, 1);
9468 proto_item_set_hidden(hidden_item);
9469 hidden_item = proto_tree_add_boolean(tree,
9470 hf_ff_fms_gen_terminate_download_seq, tvb, 0, 0, 1);
9471 proto_item_set_hidden(hidden_item);
9472 hidden_item = proto_tree_add_boolean(tree,
9473 hf_ff_fms_gen_terminate_download_seq_rsp, tvb, 0, 0, 1);
9474 proto_item_set_hidden(hidden_item);
9476 dissect_ff_msg_fms_generic_terminate_download_sequence_rsp(
9477 tvb, offset, length, pinfo, tree);
9478 break;
9480 case FMS_MSG_GENERIC_TERMINATE_DOWNLOAD_SEQUENCE_ERR:
9481 hidden_item = proto_tree_add_boolean(tree,
9482 hf_ff_fms, tvb, 0, 0, 1);
9483 proto_item_set_hidden(hidden_item);
9484 hidden_item = proto_tree_add_boolean(tree,
9485 hf_ff_fms_gen_terminate_download_seq, tvb, 0, 0, 1);
9486 proto_item_set_hidden(hidden_item);
9487 hidden_item = proto_tree_add_boolean(tree,
9488 hf_ff_fms_gen_terminate_download_seq_err, tvb, 0, 0, 1);
9489 proto_item_set_hidden(hidden_item);
9491 dissect_ff_msg_fms_generic_terminate_download_sequence_err(
9492 tvb, offset, length, pinfo, tree);
9493 break;
9495 case FMS_MSG_INITIATE_DOWNLOAD_SEQUENCE_REQ:
9496 hidden_item = proto_tree_add_boolean(tree,
9497 hf_ff_fms, tvb, 0, 0, 1);
9498 proto_item_set_hidden(hidden_item);
9499 hidden_item = proto_tree_add_boolean(tree,
9500 hf_ff_fms_init_download_seq, tvb, 0, 0, 1);
9501 proto_item_set_hidden(hidden_item);
9502 hidden_item = proto_tree_add_boolean(tree,
9503 hf_ff_fms_init_download_seq_req, tvb, 0, 0, 1);
9504 proto_item_set_hidden(hidden_item);
9506 dissect_ff_msg_fms_init_download_sequence_req(tvb,
9507 offset, length, pinfo, tree);
9508 break;
9510 case FMS_MSG_INITIATE_DOWNLOAD_SEQUENCE_RSP:
9511 hidden_item = proto_tree_add_boolean(tree,
9512 hf_ff_fms, tvb, 0, 0, 1);
9513 proto_item_set_hidden(hidden_item);
9514 hidden_item = proto_tree_add_boolean(tree,
9515 hf_ff_fms_init_download_seq, tvb, 0, 0, 1);
9516 proto_item_set_hidden(hidden_item);
9517 hidden_item = proto_tree_add_boolean(tree,
9518 hf_ff_fms_init_download_seq_rsp, tvb, 0, 0, 1);
9519 proto_item_set_hidden(hidden_item);
9521 dissect_ff_msg_fms_init_download_sequence_rsp(tvb,
9522 offset, length, pinfo, tree);
9523 break;
9525 case FMS_MSG_INITIATE_DOWNLOAD_SEQUENCE_ERR:
9526 hidden_item = proto_tree_add_boolean(tree,
9527 hf_ff_fms, tvb, 0, 0, 1);
9528 proto_item_set_hidden(hidden_item);
9529 hidden_item = proto_tree_add_boolean(tree,
9530 hf_ff_fms_init_download_seq, tvb, 0, 0, 1);
9531 proto_item_set_hidden(hidden_item);
9532 hidden_item = proto_tree_add_boolean(tree,
9533 hf_ff_fms_init_download_seq_err, tvb, 0, 0, 1);
9534 proto_item_set_hidden(hidden_item);
9536 dissect_ff_msg_fms_init_download_sequence_err(tvb,
9537 offset, length, pinfo, tree);
9538 break;
9540 case FMS_MSG_DOWNLOAD_SEGMENT_REQ:
9541 hidden_item = proto_tree_add_boolean(tree,
9542 hf_ff_fms, tvb, 0, 0, 1);
9543 proto_item_set_hidden(hidden_item);
9544 hidden_item = proto_tree_add_boolean(tree,
9545 hf_ff_fms_download_seg, tvb, 0, 0, 1);
9546 proto_item_set_hidden(hidden_item);
9547 hidden_item = proto_tree_add_boolean(tree,
9548 hf_ff_fms_download_seg_req, tvb, 0, 0, 1);
9549 proto_item_set_hidden(hidden_item);
9551 dissect_ff_msg_fms_download_segment_req(tvb, offset,
9552 length, pinfo, tree);
9553 break;
9555 case FMS_MSG_DOWNLOAD_SEGMENT_RSP:
9556 hidden_item = proto_tree_add_boolean(tree,
9557 hf_ff_fms, tvb, 0, 0, 1);
9558 proto_item_set_hidden(hidden_item);
9559 hidden_item = proto_tree_add_boolean(tree,
9560 hf_ff_fms_download_seg, tvb, 0, 0, 1);
9561 proto_item_set_hidden(hidden_item);
9562 hidden_item = proto_tree_add_boolean(tree,
9563 hf_ff_fms_download_seg_rsp, tvb, 0, 0, 1);
9564 proto_item_set_hidden(hidden_item);
9566 dissect_ff_msg_fms_download_segment_rsp(tvb, offset,
9567 length, pinfo, tree);
9568 break;
9570 case FMS_MSG_DOWNLOAD_SEGMENT_ERR:
9571 hidden_item = proto_tree_add_boolean(tree,
9572 hf_ff_fms, tvb, 0, 0, 1);
9573 proto_item_set_hidden(hidden_item);
9574 hidden_item = proto_tree_add_boolean(tree,
9575 hf_ff_fms_download_seg, tvb, 0, 0, 1);
9576 proto_item_set_hidden(hidden_item);
9577 hidden_item = proto_tree_add_boolean(tree,
9578 hf_ff_fms_download_seg_err, tvb, 0, 0, 1);
9579 proto_item_set_hidden(hidden_item);
9581 dissect_ff_msg_fms_download_segment_err(tvb, offset,
9582 length, pinfo, tree);
9583 break;
9585 case FMS_MSG_TERMINATE_DOWNLOAD_SEQUENCE_REQ:
9586 hidden_item = proto_tree_add_boolean(tree,
9587 hf_ff_fms, tvb, 0, 0, 1);
9588 proto_item_set_hidden(hidden_item);
9589 hidden_item = proto_tree_add_boolean(tree,
9590 hf_ff_fms_terminate_download_seq, tvb, 0, 0, 1);
9591 proto_item_set_hidden(hidden_item);
9592 hidden_item = proto_tree_add_boolean(tree,
9593 hf_ff_fms_terminate_download_seq_req, tvb, 0, 0, 1);
9594 proto_item_set_hidden(hidden_item);
9596 dissect_ff_msg_fms_terminate_download_sequence_req(tvb,
9597 offset, length, pinfo, tree);
9598 break;
9600 case FMS_MSG_TERMINATE_DOWNLOAD_SEQUENCE_RSP:
9601 hidden_item = proto_tree_add_boolean(tree,
9602 hf_ff_fms, tvb, 0, 0, 1);
9603 proto_item_set_hidden(hidden_item);
9604 hidden_item = proto_tree_add_boolean(tree,
9605 hf_ff_fms_terminate_download_seq, tvb, 0, 0, 1);
9606 proto_item_set_hidden(hidden_item);
9607 hidden_item = proto_tree_add_boolean(tree,
9608 hf_ff_fms_terminate_download_seq_rsp, tvb, 0, 0, 1);
9609 proto_item_set_hidden(hidden_item);
9611 dissect_ff_msg_fms_terminate_download_sequence_rsp(tvb,
9612 offset, length, pinfo, tree);
9613 break;
9615 case FMS_MSG_TERMINATE_DOWNLOAD_SEQUENCE_ERR:
9616 hidden_item = proto_tree_add_boolean(tree,
9617 hf_ff_fms, tvb, 0, 0, 1);
9618 proto_item_set_hidden(hidden_item);
9619 hidden_item = proto_tree_add_boolean(tree,
9620 hf_ff_fms_terminate_download_seq, tvb, 0, 0, 1);
9621 proto_item_set_hidden(hidden_item);
9622 hidden_item = proto_tree_add_boolean(tree,
9623 hf_ff_fms_terminate_download_seq_err, tvb, 0, 0, 1);
9624 proto_item_set_hidden(hidden_item);
9626 dissect_ff_msg_fms_terminate_download_sequence_err(tvb,
9627 offset, length, pinfo, tree);
9628 break;
9630 case FMS_MSG_INITIATE_UPLOAD_SEQUENCE_REQ:
9631 hidden_item = proto_tree_add_boolean(tree,
9632 hf_ff_fms, tvb, 0, 0, 1);
9633 proto_item_set_hidden(hidden_item);
9634 hidden_item = proto_tree_add_boolean(tree,
9635 hf_ff_fms_init_upload_seq, tvb, 0, 0, 1);
9636 proto_item_set_hidden(hidden_item);
9637 hidden_item = proto_tree_add_boolean(tree,
9638 hf_ff_fms_init_upload_seq_req, tvb, 0, 0, 1);
9639 proto_item_set_hidden(hidden_item);
9641 dissect_ff_msg_fms_init_upload_seq_req(tvb,
9642 offset, length, pinfo, tree);
9643 break;
9645 case FMS_MSG_INITIATE_UPLOAD_SEQUENCE_RSP:
9646 hidden_item = proto_tree_add_boolean(tree,
9647 hf_ff_fms, tvb, 0, 0, 1);
9648 proto_item_set_hidden(hidden_item);
9649 hidden_item = proto_tree_add_boolean(tree,
9650 hf_ff_fms_init_upload_seq, tvb, 0, 0, 1);
9651 proto_item_set_hidden(hidden_item);
9652 hidden_item = proto_tree_add_boolean(tree,
9653 hf_ff_fms_init_upload_seq_rsp, tvb, 0, 0, 1);
9654 proto_item_set_hidden(hidden_item);
9656 dissect_ff_msg_fms_init_upload_seq_rsp(tvb,
9657 offset, length, pinfo, tree);
9658 break;
9660 case FMS_MSG_INITIATE_UPLOAD_SEQUENCE_ERR:
9661 hidden_item = proto_tree_add_boolean(tree,
9662 hf_ff_fms, tvb, 0, 0, 1);
9663 proto_item_set_hidden(hidden_item);
9664 hidden_item = proto_tree_add_boolean(tree,
9665 hf_ff_fms_init_upload_seq, tvb, 0, 0, 1);
9666 proto_item_set_hidden(hidden_item);
9667 hidden_item = proto_tree_add_boolean(tree,
9668 hf_ff_fms_init_upload_seq_err, tvb, 0, 0, 1);
9669 proto_item_set_hidden(hidden_item);
9671 dissect_ff_msg_fms_init_upload_seq_err(tvb,
9672 offset, length, pinfo, tree);
9673 break;
9675 case FMS_MSG_UPLOAD_SEGMENT_REQ:
9676 hidden_item = proto_tree_add_boolean(tree,
9677 hf_ff_fms, tvb, 0, 0, 1);
9678 proto_item_set_hidden(hidden_item);
9679 hidden_item = proto_tree_add_boolean(tree,
9680 hf_ff_fms_upload_seg, tvb, 0, 0, 1);
9681 proto_item_set_hidden(hidden_item);
9682 hidden_item = proto_tree_add_boolean(tree,
9683 hf_ff_fms_upload_seg_req, tvb, 0, 0, 1);
9684 proto_item_set_hidden(hidden_item);
9686 dissect_ff_msg_fms_upload_segment_req(tvb, offset,
9687 length, pinfo, tree);
9688 break;
9690 case FMS_MSG_UPLOAD_SEGMENT_RSP:
9691 hidden_item = proto_tree_add_boolean(tree,
9692 hf_ff_fms, tvb, 0, 0, 1);
9693 proto_item_set_hidden(hidden_item);
9694 hidden_item = proto_tree_add_boolean(tree,
9695 hf_ff_fms_upload_seg, tvb, 0, 0, 1);
9696 proto_item_set_hidden(hidden_item);
9697 hidden_item = proto_tree_add_boolean(tree,
9698 hf_ff_fms_upload_seg_rsp, tvb, 0, 0, 1);
9699 proto_item_set_hidden(hidden_item);
9701 dissect_ff_msg_fms_upload_segment_rsp(tvb, offset,
9702 length, pinfo, tree);
9703 break;
9705 case FMS_MSG_UPLOAD_SEGMENT_ERR:
9706 hidden_item = proto_tree_add_boolean(tree,
9707 hf_ff_fms, tvb, 0, 0, 1);
9708 proto_item_set_hidden(hidden_item);
9709 hidden_item = proto_tree_add_boolean(tree,
9710 hf_ff_fms_upload_seg, tvb, 0, 0, 1);
9711 proto_item_set_hidden(hidden_item);
9712 hidden_item = proto_tree_add_boolean(tree,
9713 hf_ff_fms_upload_seg_err, tvb, 0, 0, 1);
9714 proto_item_set_hidden(hidden_item);
9716 dissect_ff_msg_fms_upload_segment_err(tvb, offset,
9717 length, pinfo, tree);
9718 break;
9720 case FMS_MSG_TERMINATE_UPLOAD_SEQUENCE_REQ:
9721 hidden_item = proto_tree_add_boolean(tree,
9722 hf_ff_fms, tvb, 0, 0, 1);
9723 proto_item_set_hidden(hidden_item);
9724 hidden_item = proto_tree_add_boolean(tree,
9725 hf_ff_fms_terminate_upload_seq, tvb, 0, 0, 1);
9726 proto_item_set_hidden(hidden_item);
9727 hidden_item = proto_tree_add_boolean(tree,
9728 hf_ff_fms_terminate_upload_seq_req, tvb, 0, 0, 1);
9729 proto_item_set_hidden(hidden_item);
9731 dissect_ff_msg_fms_terminate_upload_seq_req(tvb,
9732 offset, length, pinfo, tree);
9733 break;
9735 case FMS_MSG_TERMINATE_UPLOAD_SEQUENCE_RSP:
9736 hidden_item = proto_tree_add_boolean(tree,
9737 hf_ff_fms, tvb, 0, 0, 1);
9738 proto_item_set_hidden(hidden_item);
9739 hidden_item = proto_tree_add_boolean(tree,
9740 hf_ff_fms_terminate_upload_seq, tvb, 0, 0, 1);
9741 proto_item_set_hidden(hidden_item);
9742 hidden_item = proto_tree_add_boolean(tree,
9743 hf_ff_fms_terminate_upload_seq_rsp, tvb, 0, 0, 1);
9744 proto_item_set_hidden(hidden_item);
9746 dissect_ff_msg_fms_terminate_upload_seq_rsp(tvb,
9747 offset, length, pinfo, tree);
9748 break;
9750 case FMS_MSG_TERMINATE_UPLOAD_SEQUENCE_ERR:
9751 hidden_item = proto_tree_add_boolean(tree,
9752 hf_ff_fms, tvb, 0, 0, 1);
9753 proto_item_set_hidden(hidden_item);
9754 hidden_item = proto_tree_add_boolean(tree,
9755 hf_ff_fms_terminate_upload_seq, tvb, 0, 0, 1);
9756 proto_item_set_hidden(hidden_item);
9757 hidden_item = proto_tree_add_boolean(tree,
9758 hf_ff_fms_terminate_upload_seq_err, tvb, 0, 0, 1);
9759 proto_item_set_hidden(hidden_item);
9761 dissect_ff_msg_fms_terminate_upload_seq_err(tvb,
9762 offset, length, pinfo, tree);
9763 break;
9765 case FMS_MSG_REQUEST_DOMAIN_DOWNLOAD_REQ:
9766 hidden_item = proto_tree_add_boolean(tree,
9767 hf_ff_fms, tvb, 0, 0, 1);
9768 proto_item_set_hidden(hidden_item);
9769 hidden_item = proto_tree_add_boolean(tree,
9770 hf_ff_fms_req_dom_download, tvb, 0, 0, 1);
9771 proto_item_set_hidden(hidden_item);
9772 hidden_item = proto_tree_add_boolean(tree,
9773 hf_ff_fms_req_dom_download_req, tvb, 0, 0, 1);
9774 proto_item_set_hidden(hidden_item);
9776 dissect_ff_msg_fms_req_dom_download_req(tvb, offset,
9777 length, pinfo, tree);
9778 break;
9780 case FMS_MSG_REQUEST_DOMAIN_DOWNLOAD_RSP:
9781 hidden_item = proto_tree_add_boolean(tree,
9782 hf_ff_fms, tvb, 0, 0, 1);
9783 proto_item_set_hidden(hidden_item);
9784 hidden_item = proto_tree_add_boolean(tree,
9785 hf_ff_fms_req_dom_download, tvb, 0, 0, 1);
9786 proto_item_set_hidden(hidden_item);
9787 hidden_item = proto_tree_add_boolean(tree,
9788 hf_ff_fms_req_dom_download_rsp, tvb, 0, 0, 1);
9789 proto_item_set_hidden(hidden_item);
9791 dissect_ff_msg_fms_req_dom_download_rsp(tvb, offset,
9792 length, pinfo, tree);
9793 break;
9795 case FMS_MSG_REQUEST_DOMAIN_DOWNLOAD_ERR:
9796 hidden_item = proto_tree_add_boolean(tree,
9797 hf_ff_fms, tvb, 0, 0, 1);
9798 proto_item_set_hidden(hidden_item);
9799 hidden_item = proto_tree_add_boolean(tree,
9800 hf_ff_fms_req_dom_download, tvb, 0, 0, 1);
9801 proto_item_set_hidden(hidden_item);
9802 hidden_item = proto_tree_add_boolean(tree,
9803 hf_ff_fms_req_dom_download_err, tvb, 0, 0, 1);
9804 proto_item_set_hidden(hidden_item);
9806 dissect_ff_msg_fms_req_dom_download_err(tvb, offset,
9807 length, pinfo, tree);
9808 break;
9810 case FMS_MSG_REQUEST_DOMAIN_UPLOAD_REQ:
9811 hidden_item = proto_tree_add_boolean(tree,
9812 hf_ff_fms, tvb, 0, 0, 1);
9813 proto_item_set_hidden(hidden_item);
9814 hidden_item = proto_tree_add_boolean(tree,
9815 hf_ff_fms_req_dom_upload, tvb, 0, 0, 1);
9816 proto_item_set_hidden(hidden_item);
9817 hidden_item = proto_tree_add_boolean(tree,
9818 hf_ff_fms_req_dom_upload_req, tvb, 0, 0, 1);
9819 proto_item_set_hidden(hidden_item);
9821 dissect_ff_msg_fms_req_dom_upload_req(tvb, offset,
9822 length, pinfo, tree);
9823 break;
9825 case FMS_MSG_REQUEST_DOMAIN_UPLOAD_RSP:
9826 hidden_item = proto_tree_add_boolean(tree,
9827 hf_ff_fms, tvb, 0, 0, 1);
9828 proto_item_set_hidden(hidden_item);
9829 hidden_item = proto_tree_add_boolean(tree,
9830 hf_ff_fms_req_dom_upload, tvb, 0, 0, 1);
9831 proto_item_set_hidden(hidden_item);
9832 hidden_item = proto_tree_add_boolean(tree,
9833 hf_ff_fms_req_dom_upload_rsp, tvb, 0, 0, 1);
9834 proto_item_set_hidden(hidden_item);
9836 dissect_ff_msg_fms_req_dom_upload_rsp(tvb, offset,
9837 length, pinfo, tree);
9838 break;
9840 case FMS_MSG_REQUEST_DOMAIN_UPLOAD_ERR:
9841 hidden_item = proto_tree_add_boolean(tree,
9842 hf_ff_fms, tvb, 0, 0, 1);
9843 proto_item_set_hidden(hidden_item);
9844 hidden_item = proto_tree_add_boolean(tree,
9845 hf_ff_fms_req_dom_upload, tvb, 0, 0, 1);
9846 proto_item_set_hidden(hidden_item);
9847 hidden_item = proto_tree_add_boolean(tree,
9848 hf_ff_fms_req_dom_upload_err, tvb, 0, 0, 1);
9849 proto_item_set_hidden(hidden_item);
9851 dissect_ff_msg_fms_req_dom_upload_err(tvb, offset,
9852 length, pinfo, tree);
9853 break;
9855 case FMS_MSG_CREATE_PI_REQ:
9856 hidden_item = proto_tree_add_boolean(tree,
9857 hf_ff_fms, tvb, 0, 0, 1);
9858 proto_item_set_hidden(hidden_item);
9859 hidden_item = proto_tree_add_boolean(tree,
9860 hf_ff_fms_create_pi, tvb, 0, 0, 1);
9861 proto_item_set_hidden(hidden_item);
9862 hidden_item = proto_tree_add_boolean(tree,
9863 hf_ff_fms_create_pi_req, tvb, 0, 0, 1);
9864 proto_item_set_hidden(hidden_item);
9866 dissect_ff_msg_fms_create_pi_req(tvb, offset,
9867 length, pinfo, tree);
9868 break;
9870 case FMS_MSG_CREATE_PI_RSP:
9871 hidden_item = proto_tree_add_boolean(tree,
9872 hf_ff_fms, tvb, 0, 0, 1);
9873 proto_item_set_hidden(hidden_item);
9874 hidden_item = proto_tree_add_boolean(tree,
9875 hf_ff_fms_create_pi, tvb, 0, 0, 1);
9876 proto_item_set_hidden(hidden_item);
9877 hidden_item = proto_tree_add_boolean(tree,
9878 hf_ff_fms_create_pi_rsp, tvb, 0, 0, 1);
9879 proto_item_set_hidden(hidden_item);
9881 dissect_ff_msg_fms_create_pi_rsp(tvb, offset,
9882 length, pinfo, tree);
9883 break;
9885 case FMS_MSG_CREATE_PI_ERR:
9886 hidden_item = proto_tree_add_boolean(tree,
9887 hf_ff_fms, tvb, 0, 0, 1);
9888 proto_item_set_hidden(hidden_item);
9889 hidden_item = proto_tree_add_boolean(tree,
9890 hf_ff_fms_create_pi, tvb, 0, 0, 1);
9891 proto_item_set_hidden(hidden_item);
9892 hidden_item = proto_tree_add_boolean(tree,
9893 hf_ff_fms_create_pi_err, tvb, 0, 0, 1);
9894 proto_item_set_hidden(hidden_item);
9896 dissect_ff_msg_fms_create_pi_err(tvb, offset,
9897 length, pinfo, tree);
9898 break;
9900 case FMS_MSG_DELETE_PI_REQ:
9901 hidden_item = proto_tree_add_boolean(tree,
9902 hf_ff_fms, tvb, 0, 0, 1);
9903 proto_item_set_hidden(hidden_item);
9904 hidden_item = proto_tree_add_boolean(tree,
9905 hf_ff_fms_del_pi, tvb, 0, 0, 1);
9906 proto_item_set_hidden(hidden_item);
9907 hidden_item = proto_tree_add_boolean(tree,
9908 hf_ff_fms_del_pi_req, tvb, 0, 0, 1);
9909 proto_item_set_hidden(hidden_item);
9911 dissect_ff_msg_fms_del_pi_req(tvb, offset,
9912 length, pinfo, tree);
9913 break;
9915 case FMS_MSG_DELETE_PI_RSP:
9916 hidden_item = proto_tree_add_boolean(tree,
9917 hf_ff_fms, tvb, 0, 0, 1);
9918 proto_item_set_hidden(hidden_item);
9919 hidden_item = proto_tree_add_boolean(tree,
9920 hf_ff_fms_del_pi, tvb, 0, 0, 1);
9921 proto_item_set_hidden(hidden_item);
9922 hidden_item = proto_tree_add_boolean(tree,
9923 hf_ff_fms_del_pi_rsp, tvb, 0, 0, 1);
9924 proto_item_set_hidden(hidden_item);
9926 dissect_ff_msg_fms_del_pi_rsp(tvb, offset,
9927 length, pinfo, tree);
9928 break;
9930 case FMS_MSG_DELETE_PI_ERR:
9931 hidden_item = proto_tree_add_boolean(tree,
9932 hf_ff_fms, tvb, 0, 0, 1);
9933 proto_item_set_hidden(hidden_item);
9934 hidden_item = proto_tree_add_boolean(tree,
9935 hf_ff_fms_del_pi, tvb, 0, 0, 1);
9936 proto_item_set_hidden(hidden_item);
9937 hidden_item = proto_tree_add_boolean(tree,
9938 hf_ff_fms_del_pi_err, tvb, 0, 0, 1);
9939 proto_item_set_hidden(hidden_item);
9941 dissect_ff_msg_fms_del_pi_err(tvb, offset,
9942 length, pinfo, tree);
9943 break;
9945 case FMS_MSG_START_PI_REQ:
9946 hidden_item = proto_tree_add_boolean(tree,
9947 hf_ff_fms, tvb, 0, 0, 1);
9948 proto_item_set_hidden(hidden_item);
9949 hidden_item = proto_tree_add_boolean(tree,
9950 hf_ff_fms_start, tvb, 0, 0, 1);
9951 proto_item_set_hidden(hidden_item);
9952 hidden_item = proto_tree_add_boolean(tree,
9953 hf_ff_fms_start_req, tvb, 0, 0, 1);
9954 proto_item_set_hidden(hidden_item);
9956 dissect_ff_msg_fms_start_pi_req(tvb, offset,
9957 length, pinfo, tree);
9958 break;
9960 case FMS_MSG_START_PI_RSP:
9961 hidden_item = proto_tree_add_boolean(tree,
9962 hf_ff_fms, tvb, 0, 0, 1);
9963 proto_item_set_hidden(hidden_item);
9964 hidden_item = proto_tree_add_boolean(tree,
9965 hf_ff_fms_start, tvb, 0, 0, 1);
9966 proto_item_set_hidden(hidden_item);
9967 hidden_item = proto_tree_add_boolean(tree,
9968 hf_ff_fms_start_rsp, tvb, 0, 0, 1);
9969 proto_item_set_hidden(hidden_item);
9971 dissect_ff_msg_fms_start_pi_rsp(tvb, offset,
9972 length, pinfo, tree);
9973 break;
9975 case FMS_MSG_START_PI_ERR:
9976 hidden_item = proto_tree_add_boolean(tree,
9977 hf_ff_fms, tvb, 0, 0, 1);
9978 proto_item_set_hidden(hidden_item);
9979 hidden_item = proto_tree_add_boolean(tree,
9980 hf_ff_fms_start, tvb, 0, 0, 1);
9981 proto_item_set_hidden(hidden_item);
9982 hidden_item = proto_tree_add_boolean(tree,
9983 hf_ff_fms_start_err, tvb, 0, 0, 1);
9984 proto_item_set_hidden(hidden_item);
9986 dissect_ff_msg_fms_start_pi_err(tvb, offset,
9987 length, pinfo, tree);
9988 break;
9990 case FMS_MSG_STOP_PI_REQ:
9991 hidden_item = proto_tree_add_boolean(tree,
9992 hf_ff_fms, tvb, 0, 0, 1);
9993 proto_item_set_hidden(hidden_item);
9994 hidden_item = proto_tree_add_boolean(tree,
9995 hf_ff_fms_stop, tvb, 0, 0, 1);
9996 proto_item_set_hidden(hidden_item);
9997 hidden_item = proto_tree_add_boolean(tree,
9998 hf_ff_fms_stop_req, tvb, 0, 0, 1);
9999 proto_item_set_hidden(hidden_item);
10001 dissect_ff_msg_fms_stop_pi_req(tvb, offset,
10002 length, pinfo, tree);
10003 break;
10005 case FMS_MSG_STOP_PI_RSP:
10006 hidden_item = proto_tree_add_boolean(tree,
10007 hf_ff_fms, tvb, 0, 0, 1);
10008 proto_item_set_hidden(hidden_item);
10009 hidden_item = proto_tree_add_boolean(tree,
10010 hf_ff_fms_stop, tvb, 0, 0, 1);
10011 proto_item_set_hidden(hidden_item);
10012 hidden_item = proto_tree_add_boolean(tree,
10013 hf_ff_fms_stop_rsp, tvb, 0, 0, 1);
10014 proto_item_set_hidden(hidden_item);
10016 dissect_ff_msg_fms_stop_pi_rsp(tvb, offset,
10017 length, pinfo, tree);
10018 break;
10020 case FMS_MSG_STOP_PI_ERR:
10021 hidden_item = proto_tree_add_boolean(tree,
10022 hf_ff_fms, tvb, 0, 0, 1);
10023 proto_item_set_hidden(hidden_item);
10024 hidden_item = proto_tree_add_boolean(tree,
10025 hf_ff_fms_stop, tvb, 0, 0, 1);
10026 proto_item_set_hidden(hidden_item);
10027 hidden_item = proto_tree_add_boolean(tree,
10028 hf_ff_fms_stop_err, tvb, 0, 0, 1);
10029 proto_item_set_hidden(hidden_item);
10031 dissect_ff_msg_fms_stop_pi_err(tvb, offset,
10032 length, pinfo, tree);
10033 break;
10035 case FMS_MSG_RESUME_PI_REQ:
10036 hidden_item = proto_tree_add_boolean(tree,
10037 hf_ff_fms, tvb, 0, 0, 1);
10038 proto_item_set_hidden(hidden_item);
10039 hidden_item = proto_tree_add_boolean(tree,
10040 hf_ff_fms_resume, tvb, 0, 0, 1);
10041 proto_item_set_hidden(hidden_item);
10042 hidden_item = proto_tree_add_boolean(tree,
10043 hf_ff_fms_resume_req, tvb, 0, 0, 1);
10044 proto_item_set_hidden(hidden_item);
10046 dissect_ff_msg_fms_resume_pi_req(tvb, offset,
10047 length, pinfo, tree);
10048 break;
10050 case FMS_MSG_RESUME_PI_RSP:
10051 hidden_item = proto_tree_add_boolean(tree,
10052 hf_ff_fms, tvb, 0, 0, 1);
10053 proto_item_set_hidden(hidden_item);
10054 hidden_item = proto_tree_add_boolean(tree,
10055 hf_ff_fms_resume, tvb, 0, 0, 1);
10056 proto_item_set_hidden(hidden_item);
10057 hidden_item = proto_tree_add_boolean(tree,
10058 hf_ff_fms_resume_rsp, tvb, 0, 0, 1);
10059 proto_item_set_hidden(hidden_item);
10061 dissect_ff_msg_fms_resume_pi_rsp(tvb, offset,
10062 length, pinfo, tree);
10063 break;
10065 case FMS_MSG_RESUME_PI_ERR:
10066 hidden_item = proto_tree_add_boolean(tree,
10067 hf_ff_fms, tvb, 0, 0, 1);
10068 proto_item_set_hidden(hidden_item);
10069 hidden_item = proto_tree_add_boolean(tree,
10070 hf_ff_fms_resume, tvb, 0, 0, 1);
10071 proto_item_set_hidden(hidden_item);
10072 hidden_item = proto_tree_add_boolean(tree,
10073 hf_ff_fms_resume_err, tvb, 0, 0, 1);
10074 proto_item_set_hidden(hidden_item);
10076 dissect_ff_msg_fms_resume_pi_err(tvb, offset,
10077 length, pinfo, tree);
10078 break;
10080 case FMS_MSG_RESET_PI_REQ:
10081 hidden_item = proto_tree_add_boolean(tree,
10082 hf_ff_fms, tvb, 0, 0, 1);
10083 proto_item_set_hidden(hidden_item);
10084 hidden_item = proto_tree_add_boolean(tree,
10085 hf_ff_fms_reset, tvb, 0, 0, 1);
10086 proto_item_set_hidden(hidden_item);
10087 hidden_item = proto_tree_add_boolean(tree,
10088 hf_ff_fms_reset_req, tvb, 0, 0, 1);
10089 proto_item_set_hidden(hidden_item);
10091 dissect_ff_msg_fms_reset_pi_req(tvb, offset,
10092 length, pinfo, tree);
10093 break;
10095 case FMS_MSG_RESET_PI_RSP:
10096 hidden_item = proto_tree_add_boolean(tree,
10097 hf_ff_fms, tvb, 0, 0, 1);
10098 proto_item_set_hidden(hidden_item);
10099 hidden_item = proto_tree_add_boolean(tree,
10100 hf_ff_fms_reset, tvb, 0, 0, 1);
10101 proto_item_set_hidden(hidden_item);
10102 hidden_item = proto_tree_add_boolean(tree,
10103 hf_ff_fms_reset_rsp, tvb, 0, 0, 1);
10104 proto_item_set_hidden(hidden_item);
10106 dissect_ff_msg_fms_reset_pi_rsp(tvb, offset,
10107 length, pinfo, tree);
10108 break;
10110 case FMS_MSG_RESET_PI_ERR:
10111 hidden_item = proto_tree_add_boolean(tree,
10112 hf_ff_fms, tvb, 0, 0, 1);
10113 proto_item_set_hidden(hidden_item);
10114 hidden_item = proto_tree_add_boolean(tree,
10115 hf_ff_fms_reset, tvb, 0, 0, 1);
10116 proto_item_set_hidden(hidden_item);
10117 hidden_item = proto_tree_add_boolean(tree,
10118 hf_ff_fms_reset_err, tvb, 0, 0, 1);
10119 proto_item_set_hidden(hidden_item);
10121 dissect_ff_msg_fms_reset_pi_err(tvb, offset,
10122 length, pinfo, tree);
10123 break;
10125 case FMS_MSG_KILL_PI_REQ:
10126 hidden_item = proto_tree_add_boolean(tree,
10127 hf_ff_fms, tvb, 0, 0, 1);
10128 proto_item_set_hidden(hidden_item);
10129 hidden_item = proto_tree_add_boolean(tree,
10130 hf_ff_fms_kill, tvb, 0, 0, 1);
10131 proto_item_set_hidden(hidden_item);
10132 hidden_item = proto_tree_add_boolean(tree,
10133 hf_ff_fms_kill_req, tvb, 0, 0, 1);
10134 proto_item_set_hidden(hidden_item);
10136 dissect_ff_msg_fms_kill_pi_req(tvb, offset,
10137 length, pinfo, tree);
10138 break;
10140 case FMS_MSG_KILL_PI_RSP:
10141 hidden_item = proto_tree_add_boolean(tree,
10142 hf_ff_fms, tvb, 0, 0, 1);
10143 proto_item_set_hidden(hidden_item);
10144 hidden_item = proto_tree_add_boolean(tree,
10145 hf_ff_fms_kill, tvb, 0, 0, 1);
10146 proto_item_set_hidden(hidden_item);
10147 hidden_item = proto_tree_add_boolean(tree,
10148 hf_ff_fms_kill_rsp, tvb, 0, 0, 1);
10149 proto_item_set_hidden(hidden_item);
10151 dissect_ff_msg_fms_kill_pi_rsp(tvb, offset,
10152 length, pinfo, tree);
10153 break;
10155 case FMS_MSG_KILL_PI_ERR:
10156 hidden_item = proto_tree_add_boolean(tree,
10157 hf_ff_fms, tvb, 0, 0, 1);
10158 proto_item_set_hidden(hidden_item);
10159 hidden_item = proto_tree_add_boolean(tree,
10160 hf_ff_fms_kill, tvb, 0, 0, 1);
10161 proto_item_set_hidden(hidden_item);
10162 hidden_item = proto_tree_add_boolean(tree,
10163 hf_ff_fms_kill_err, tvb, 0, 0, 1);
10164 proto_item_set_hidden(hidden_item);
10166 dissect_ff_msg_fms_kill_pi_err(tvb, offset,
10167 length, pinfo, tree);
10168 break;
10170 case FMS_MSG_READ_REQ:
10171 hidden_item = proto_tree_add_boolean(tree,
10172 hf_ff_fms, tvb, 0, 0, 1);
10173 proto_item_set_hidden(hidden_item);
10174 hidden_item = proto_tree_add_boolean(tree,
10175 hf_ff_fms_read, tvb, 0, 0, 1);
10176 proto_item_set_hidden(hidden_item);
10177 hidden_item = proto_tree_add_boolean(tree,
10178 hf_ff_fms_read_req, tvb, 0, 0, 1);
10179 proto_item_set_hidden(hidden_item);
10181 dissect_ff_msg_fms_read_req(tvb, offset,
10182 length, pinfo, tree);
10183 break;
10185 case FMS_MSG_READ_RSP:
10186 hidden_item = proto_tree_add_boolean(tree,
10187 hf_ff_fms, tvb, 0, 0, 1);
10188 proto_item_set_hidden(hidden_item);
10189 hidden_item = proto_tree_add_boolean(tree,
10190 hf_ff_fms_read, tvb, 0, 0, 1);
10191 proto_item_set_hidden(hidden_item);
10192 hidden_item = proto_tree_add_boolean(tree,
10193 hf_ff_fms_read_rsp, tvb, 0, 0, 1);
10194 proto_item_set_hidden(hidden_item);
10196 dissect_ff_msg_fms_read_rsp(tvb, offset,
10197 length, pinfo, tree);
10198 break;
10200 case FMS_MSG_READ_ERR:
10201 hidden_item = proto_tree_add_boolean(tree,
10202 hf_ff_fms, tvb, 0, 0, 1);
10203 proto_item_set_hidden(hidden_item);
10204 hidden_item = proto_tree_add_boolean(tree,
10205 hf_ff_fms_read, tvb, 0, 0, 1);
10206 proto_item_set_hidden(hidden_item);
10207 hidden_item = proto_tree_add_boolean(tree,
10208 hf_ff_fms_read_err, tvb, 0, 0, 1);
10209 proto_item_set_hidden(hidden_item);
10211 dissect_ff_msg_fms_read_err(tvb, offset,
10212 length, pinfo, tree);
10213 break;
10215 case FMS_MSG_READ_SUBINDEX_REQ:
10216 hidden_item = proto_tree_add_boolean(tree,
10217 hf_ff_fms, tvb, 0, 0, 1);
10218 proto_item_set_hidden(hidden_item);
10219 hidden_item = proto_tree_add_boolean(tree,
10220 hf_ff_fms_read_with_subidx, tvb, 0, 0, 1);
10221 proto_item_set_hidden(hidden_item);
10222 hidden_item = proto_tree_add_boolean(tree,
10223 hf_ff_fms_read_with_subidx_req, tvb, 0, 0, 1);
10224 proto_item_set_hidden(hidden_item);
10226 dissect_ff_msg_fms_read_subindex_req(tvb, offset,
10227 length, pinfo, tree);
10228 break;
10230 case FMS_MSG_READ_SUBINDEX_RSP:
10231 hidden_item = proto_tree_add_boolean(tree,
10232 hf_ff_fms, tvb, 0, 0, 1);
10233 proto_item_set_hidden(hidden_item);
10234 hidden_item = proto_tree_add_boolean(tree,
10235 hf_ff_fms_read_with_subidx, tvb, 0, 0, 1);
10236 proto_item_set_hidden(hidden_item);
10237 hidden_item = proto_tree_add_boolean(tree,
10238 hf_ff_fms_read_with_subidx_rsp, tvb, 0, 0, 1);
10239 proto_item_set_hidden(hidden_item);
10241 dissect_ff_msg_fms_read_subindex_rsp(tvb, offset,
10242 length, pinfo, tree);
10243 break;
10245 case FMS_MSG_READ_SUBINDEX_ERR:
10246 hidden_item = proto_tree_add_boolean(tree,
10247 hf_ff_fms, tvb, 0, 0, 1);
10248 proto_item_set_hidden(hidden_item);
10249 hidden_item = proto_tree_add_boolean(tree,
10250 hf_ff_fms_read_with_subidx, tvb, 0, 0, 1);
10251 proto_item_set_hidden(hidden_item);
10252 hidden_item = proto_tree_add_boolean(tree,
10253 hf_ff_fms_read_with_subidx_err, tvb, 0, 0, 1);
10254 proto_item_set_hidden(hidden_item);
10256 dissect_ff_msg_fms_read_subindex_err(tvb, offset,
10257 length, pinfo, tree);
10258 break;
10260 case FMS_MSG_WRITE_REQ:
10261 hidden_item = proto_tree_add_boolean(tree,
10262 hf_ff_fms, tvb, 0, 0, 1);
10263 proto_item_set_hidden(hidden_item);
10264 hidden_item = proto_tree_add_boolean(tree,
10265 hf_ff_fms_write, tvb, 0, 0, 1);
10266 proto_item_set_hidden(hidden_item);
10267 hidden_item = proto_tree_add_boolean(tree,
10268 hf_ff_fms_write_req, tvb, 0, 0, 1);
10269 proto_item_set_hidden(hidden_item);
10271 dissect_ff_msg_fms_write_req(tvb, offset,
10272 length, pinfo, tree);
10273 break;
10275 case FMS_MSG_WRITE_RSP:
10276 hidden_item = proto_tree_add_boolean(tree,
10277 hf_ff_fms, tvb, 0, 0, 1);
10278 proto_item_set_hidden(hidden_item);
10279 hidden_item = proto_tree_add_boolean(tree,
10280 hf_ff_fms_write, tvb, 0, 0, 1);
10281 proto_item_set_hidden(hidden_item);
10282 hidden_item = proto_tree_add_boolean(tree,
10283 hf_ff_fms_write_rsp, tvb, 0, 0, 1);
10284 proto_item_set_hidden(hidden_item);
10286 dissect_ff_msg_fms_write_rsp(tvb, offset,
10287 length, pinfo, tree);
10288 break;
10290 case FMS_MSG_WRITE_ERR:
10291 hidden_item = proto_tree_add_boolean(tree,
10292 hf_ff_fms, tvb, 0, 0, 1);
10293 proto_item_set_hidden(hidden_item);
10294 hidden_item = proto_tree_add_boolean(tree,
10295 hf_ff_fms_write, tvb, 0, 0, 1);
10296 proto_item_set_hidden(hidden_item);
10297 hidden_item = proto_tree_add_boolean(tree,
10298 hf_ff_fms_write_err, tvb, 0, 0, 1);
10299 proto_item_set_hidden(hidden_item);
10301 dissect_ff_msg_fms_write_err(tvb, offset,
10302 length, pinfo, tree);
10303 break;
10305 case FMS_MSG_WRITE_SUBINDEX_REQ:
10306 hidden_item = proto_tree_add_boolean(tree,
10307 hf_ff_fms, tvb, 0, 0, 1);
10308 proto_item_set_hidden(hidden_item);
10309 hidden_item = proto_tree_add_boolean(tree,
10310 hf_ff_fms_write_with_subidx, tvb, 0, 0, 1);
10311 proto_item_set_hidden(hidden_item);
10312 hidden_item = proto_tree_add_boolean(tree,
10313 hf_ff_fms_write_with_subidx_req, tvb, 0, 0, 1);
10314 proto_item_set_hidden(hidden_item);
10316 dissect_ff_msg_fms_write_subindex_req(tvb, offset,
10317 length, pinfo, tree);
10318 break;
10320 case FMS_MSG_WRITE_SUBINDEX_RSP:
10321 hidden_item = proto_tree_add_boolean(tree,
10322 hf_ff_fms, tvb, 0, 0, 1);
10323 proto_item_set_hidden(hidden_item);
10324 hidden_item = proto_tree_add_boolean(tree,
10325 hf_ff_fms_write_with_subidx, tvb, 0, 0, 1);
10326 proto_item_set_hidden(hidden_item);
10327 hidden_item = proto_tree_add_boolean(tree,
10328 hf_ff_fms_write_with_subidx_rsp, tvb, 0, 0, 1);
10329 proto_item_set_hidden(hidden_item);
10331 dissect_ff_msg_fms_write_subindex_rsp(tvb, offset,
10332 length, pinfo, tree);
10333 break;
10335 case FMS_MSG_WRITE_SUBINDEX_ERR:
10336 hidden_item = proto_tree_add_boolean(tree,
10337 hf_ff_fms, tvb, 0, 0, 1);
10338 proto_item_set_hidden(hidden_item);
10339 hidden_item = proto_tree_add_boolean(tree,
10340 hf_ff_fms_write_with_subidx, tvb, 0, 0, 1);
10341 proto_item_set_hidden(hidden_item);
10342 hidden_item = proto_tree_add_boolean(tree,
10343 hf_ff_fms_write_with_subidx_err, tvb, 0, 0, 1);
10344 proto_item_set_hidden(hidden_item);
10346 dissect_ff_msg_fms_write_subindex_err(tvb, offset,
10347 length, pinfo, tree);
10348 break;
10350 case FMS_MSG_DEFINE_VARIABLE_LIST_REQ:
10351 hidden_item = proto_tree_add_boolean(tree,
10352 hf_ff_fms, tvb, 0, 0, 1);
10353 proto_item_set_hidden(hidden_item);
10354 hidden_item = proto_tree_add_boolean(tree,
10355 hf_ff_fms_def_variable_list, tvb, 0, 0, 1);
10356 proto_item_set_hidden(hidden_item);
10357 hidden_item = proto_tree_add_boolean(tree,
10358 hf_ff_fms_def_variable_list_req, tvb, 0, 0, 1);
10359 proto_item_set_hidden(hidden_item);
10361 dissect_ff_msg_fms_def_variable_list_req(tvb, offset,
10362 length, pinfo, tree);
10363 break;
10365 case FMS_MSG_DEFINE_VARIABLE_LIST_RSP:
10366 hidden_item = proto_tree_add_boolean(tree,
10367 hf_ff_fms, tvb, 0, 0, 1);
10368 proto_item_set_hidden(hidden_item);
10369 hidden_item = proto_tree_add_boolean(tree,
10370 hf_ff_fms_def_variable_list, tvb, 0, 0, 1);
10371 proto_item_set_hidden(hidden_item);
10372 hidden_item = proto_tree_add_boolean(tree,
10373 hf_ff_fms_def_variable_list_rsp, tvb, 0, 0, 1);
10374 proto_item_set_hidden(hidden_item);
10376 dissect_ff_msg_fms_def_variable_list_rsp(tvb, offset,
10377 length, pinfo, tree);
10378 break;
10380 case FMS_MSG_DEFINE_VARIABLE_LIST_ERR:
10381 hidden_item = proto_tree_add_boolean(tree,
10382 hf_ff_fms, tvb, 0, 0, 1);
10383 proto_item_set_hidden(hidden_item);
10384 hidden_item = proto_tree_add_boolean(tree,
10385 hf_ff_fms_def_variable_list, tvb, 0, 0, 1);
10386 proto_item_set_hidden(hidden_item);
10387 hidden_item = proto_tree_add_boolean(tree,
10388 hf_ff_fms_def_variable_list_err, tvb, 0, 0, 1);
10389 proto_item_set_hidden(hidden_item);
10391 dissect_ff_msg_fms_def_variable_list_err(tvb, offset,
10392 length, pinfo, tree);
10393 break;
10395 case FMS_MSG_DELETE_VARIABLE_LIST_REQ:
10396 hidden_item = proto_tree_add_boolean(tree,
10397 hf_ff_fms, tvb, 0, 0, 1);
10398 proto_item_set_hidden(hidden_item);
10399 hidden_item = proto_tree_add_boolean(tree,
10400 hf_ff_fms_del_variable_list, tvb, 0, 0, 1);
10401 proto_item_set_hidden(hidden_item);
10402 hidden_item = proto_tree_add_boolean(tree,
10403 hf_ff_fms_del_variable_list_req, tvb, 0, 0, 1);
10404 proto_item_set_hidden(hidden_item);
10406 dissect_ff_msg_fms_del_variable_list_req(tvb, offset,
10407 length, pinfo, tree);
10408 break;
10410 case FMS_MSG_DELETE_VARIABLE_LIST_RSP:
10411 hidden_item = proto_tree_add_boolean(tree,
10412 hf_ff_fms, tvb, 0, 0, 1);
10413 proto_item_set_hidden(hidden_item);
10414 hidden_item = proto_tree_add_boolean(tree,
10415 hf_ff_fms_del_variable_list, tvb, 0, 0, 1);
10416 proto_item_set_hidden(hidden_item);
10417 hidden_item = proto_tree_add_boolean(tree,
10418 hf_ff_fms_del_variable_list_rsp, tvb, 0, 0, 1);
10419 proto_item_set_hidden(hidden_item);
10421 dissect_ff_msg_fms_del_variable_list_rsp(tvb, offset,
10422 length, pinfo, tree);
10423 break;
10425 case FMS_MSG_DELETE_VARIABLE_LIST_ERR:
10426 hidden_item = proto_tree_add_boolean(tree,
10427 hf_ff_fms, tvb, 0, 0, 1);
10428 proto_item_set_hidden(hidden_item);
10429 hidden_item = proto_tree_add_boolean(tree,
10430 hf_ff_fms_del_variable_list, tvb, 0, 0, 1);
10431 proto_item_set_hidden(hidden_item);
10432 hidden_item = proto_tree_add_boolean(tree,
10433 hf_ff_fms_del_variable_list_err, tvb, 0, 0, 1);
10434 proto_item_set_hidden(hidden_item);
10436 dissect_ff_msg_fms_del_variable_list_err(tvb, offset,
10437 length, pinfo, tree);
10438 break;
10440 case FMS_MSG_INFO_REPORT_REQ:
10441 hidden_item = proto_tree_add_boolean(tree,
10442 hf_ff_fms, tvb, 0, 0, 1);
10443 proto_item_set_hidden(hidden_item);
10444 hidden_item = proto_tree_add_boolean(tree,
10445 hf_ff_fms_info_report, tvb, 0, 0, 1);
10446 proto_item_set_hidden(hidden_item);
10447 hidden_item = proto_tree_add_boolean(tree,
10448 hf_ff_fms_info_report_req, tvb, 0, 0, 1);
10449 proto_item_set_hidden(hidden_item);
10451 dissect_ff_msg_fms_info_report_req(tvb, offset,
10452 length, pinfo, tree);
10453 break;
10455 case FMS_MSG_INFO_REPORT_SUBINDEX_REQ:
10456 hidden_item = proto_tree_add_boolean(tree,
10457 hf_ff_fms, tvb, 0, 0, 1);
10458 proto_item_set_hidden(hidden_item);
10459 hidden_item = proto_tree_add_boolean(tree,
10460 hf_ff_fms_info_report_with_subidx, tvb, 0, 0, 1);
10461 proto_item_set_hidden(hidden_item);
10462 hidden_item = proto_tree_add_boolean(tree,
10463 hf_ff_fms_info_report_with_subidx_req, tvb, 0, 0, 1);
10464 proto_item_set_hidden(hidden_item);
10466 dissect_ff_msg_fms_info_report_subindex_req(tvb, offset,
10467 length, pinfo, tree);
10468 break;
10470 case FMS_MSG_INFO_REPORT_CHANGE_REQ:
10471 hidden_item = proto_tree_add_boolean(tree,
10472 hf_ff_fms, tvb, 0, 0, 1);
10473 proto_item_set_hidden(hidden_item);
10474 hidden_item = proto_tree_add_boolean(tree,
10475 hf_ff_fms_info_report_on_change, tvb, 0, 0, 1);
10476 proto_item_set_hidden(hidden_item);
10477 hidden_item = proto_tree_add_boolean(tree,
10478 hf_ff_fms_info_report_on_change_req, tvb, 0, 0, 1);
10479 proto_item_set_hidden(hidden_item);
10481 dissect_ff_msg_fms_info_report_change_req(tvb, offset,
10482 length, pinfo, tree);
10483 break;
10485 case FMS_MSG_INFO_REPORT_CHANGE_SUBINDEX_REQ:
10486 hidden_item = proto_tree_add_boolean(tree,
10487 hf_ff_fms, tvb, 0, 0, 1);
10488 proto_item_set_hidden(hidden_item);
10489 hidden_item = proto_tree_add_boolean(tree,
10490 hf_ff_fms_info_report_on_change_with_subidx, tvb, 0, 0, 1);
10491 proto_item_set_hidden(hidden_item);
10492 hidden_item = proto_tree_add_boolean(tree,
10493 hf_ff_fms_info_report_on_change_with_subidx_req, tvb, 0, 0, 1);
10494 proto_item_set_hidden(hidden_item);
10496 dissect_ff_msg_fms_info_report_change_subindex_req(tvb,
10497 offset, length, pinfo, tree);
10498 break;
10500 case FMS_MSG_EVENT_NOTIFICATION_REQ:
10501 hidden_item = proto_tree_add_boolean(tree,
10502 hf_ff_fms, tvb, 0, 0, 1);
10503 proto_item_set_hidden(hidden_item);
10504 hidden_item = proto_tree_add_boolean(tree,
10505 hf_ff_fms_ev_notification, tvb, 0, 0, 1);
10506 proto_item_set_hidden(hidden_item);
10507 hidden_item = proto_tree_add_boolean(tree,
10508 hf_ff_fms_ev_notification_req, tvb, 0, 0, 1);
10509 proto_item_set_hidden(hidden_item);
10511 dissect_ff_msg_fms_ev_notification_req(tvb, offset,
10512 length, pinfo, tree);
10513 break;
10515 case FMS_MSG_ALTER_EVENT_CONDITION_MONITORING_REQ:
10516 hidden_item = proto_tree_add_boolean(tree,
10517 hf_ff_fms, tvb, 0, 0, 1);
10518 proto_item_set_hidden(hidden_item);
10519 hidden_item = proto_tree_add_boolean(tree,
10520 hf_ff_fms_alter_ev_condition_monitoring, tvb, 0, 0, 1);
10521 proto_item_set_hidden(hidden_item);
10522 hidden_item = proto_tree_add_boolean(tree,
10523 hf_ff_fms_alter_ev_condition_monitoring_req, tvb, 0, 0, 1);
10524 proto_item_set_hidden(hidden_item);
10526 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_req(
10527 tvb, offset, length, pinfo, tree);
10528 break;
10530 case FMS_MSG_ALTER_EVENT_CONDITION_MONITORING_RSP:
10531 hidden_item = proto_tree_add_boolean(tree,
10532 hf_ff_fms, tvb, 0, 0, 1);
10533 proto_item_set_hidden(hidden_item);
10534 hidden_item = proto_tree_add_boolean(tree,
10535 hf_ff_fms_alter_ev_condition_monitoring, tvb, 0, 0, 1);
10536 proto_item_set_hidden(hidden_item);
10537 hidden_item = proto_tree_add_boolean(tree,
10538 hf_ff_fms_alter_ev_condition_monitoring_rsp, tvb, 0, 0, 1);
10539 proto_item_set_hidden(hidden_item);
10541 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_rsp(
10542 tvb, offset, length, pinfo, tree);
10543 break;
10545 case FMS_MSG_ALTER_EVENT_CONDITION_MONITORING_ERR:
10546 hidden_item = proto_tree_add_boolean(tree,
10547 hf_ff_fms, tvb, 0, 0, 1);
10548 proto_item_set_hidden(hidden_item);
10549 hidden_item = proto_tree_add_boolean(tree,
10550 hf_ff_fms_alter_ev_condition_monitoring, tvb, 0, 0, 1);
10551 proto_item_set_hidden(hidden_item);
10552 hidden_item = proto_tree_add_boolean(tree,
10553 hf_ff_fms_alter_ev_condition_monitoring_err, tvb, 0, 0, 1);
10554 proto_item_set_hidden(hidden_item);
10556 dissect_ff_msg_fms_alter_alter_ev_condition_monitoring_err(
10557 tvb, offset, length, pinfo, tree);
10558 break;
10560 case FMS_MSG_ACKNOWLEDGE_EVENT_NOTIFICATION_REQ:
10561 hidden_item = proto_tree_add_boolean(tree,
10562 hf_ff_fms, tvb, 0, 0, 1);
10563 proto_item_set_hidden(hidden_item);
10564 hidden_item = proto_tree_add_boolean(tree,
10565 hf_ff_fms_ack_ev_notification, tvb, 0, 0, 1);
10566 proto_item_set_hidden(hidden_item);
10567 hidden_item = proto_tree_add_boolean(tree,
10568 hf_ff_fms_ack_ev_notification_req, tvb, 0, 0, 1);
10569 proto_item_set_hidden(hidden_item);
10571 dissect_ff_msg_fms_ack_ev_notification_req(tvb,
10572 offset, length, pinfo, tree);
10573 break;
10575 case FMS_MSG_ACKNOWLEDGE_EVENT_NOTIFICATION_RSP:
10576 hidden_item = proto_tree_add_boolean(tree,
10577 hf_ff_fms, tvb, 0, 0, 1);
10578 proto_item_set_hidden(hidden_item);
10579 hidden_item = proto_tree_add_boolean(tree,
10580 hf_ff_fms_ack_ev_notification, tvb, 0, 0, 1);
10581 proto_item_set_hidden(hidden_item);
10582 hidden_item = proto_tree_add_boolean(tree,
10583 hf_ff_fms_ack_ev_notification_rsp, tvb, 0, 0, 1);
10584 proto_item_set_hidden(hidden_item);
10586 dissect_ff_msg_fms_ack_ev_notification_rsp(tvb,
10587 offset, length, pinfo, tree);
10588 break;
10590 case FMS_MSG_ACKNOWLEDGE_EVENT_NOTIFICATION_ERR:
10591 hidden_item = proto_tree_add_boolean(tree,
10592 hf_ff_fms, tvb, 0, 0, 1);
10593 proto_item_set_hidden(hidden_item);
10594 hidden_item = proto_tree_add_boolean(tree,
10595 hf_ff_fms_ack_ev_notification, tvb, 0, 0, 1);
10596 proto_item_set_hidden(hidden_item);
10597 hidden_item = proto_tree_add_boolean(tree,
10598 hf_ff_fms_ack_ev_notification_err, tvb, 0, 0, 1);
10599 proto_item_set_hidden(hidden_item);
10601 dissect_ff_msg_fms_ack_ev_notification_err(tvb,
10602 offset, length, pinfo, tree);
10603 break;
10605 case LAN_MSG_GET_INFO_REQ:
10606 hidden_item = proto_tree_add_boolean(tree,
10607 hf_ff_lr, tvb, 0, 0, 1);
10608 proto_item_set_hidden(hidden_item);
10609 hidden_item = proto_tree_add_boolean(tree,
10610 hf_ff_lr_get_info, tvb, 0, 0, 1);
10611 proto_item_set_hidden(hidden_item);
10612 hidden_item = proto_tree_add_boolean(tree,
10613 hf_ff_lr_get_info_req, tvb, 0, 0, 1);
10614 proto_item_set_hidden(hidden_item);
10616 dissect_ff_msg_lr_get_info_req(tvb,
10617 offset, length, pinfo, tree);
10618 break;
10620 case LAN_MSG_GET_INFO_RSP:
10621 hidden_item = proto_tree_add_boolean(tree,
10622 hf_ff_lr, tvb, 0, 0, 1);
10623 proto_item_set_hidden(hidden_item);
10624 hidden_item = proto_tree_add_boolean(tree,
10625 hf_ff_lr_get_info, tvb, 0, 0, 1);
10626 proto_item_set_hidden(hidden_item);
10627 hidden_item = proto_tree_add_boolean(tree,
10628 hf_ff_lr_get_info_rsp, tvb, 0, 0, 1);
10629 proto_item_set_hidden(hidden_item);
10631 dissect_ff_msg_lr_get_info_rsp(tvb,
10632 offset, length, pinfo, tree);
10633 break;
10635 case LAN_MSG_GET_INFO_ERR:
10636 hidden_item = proto_tree_add_boolean(tree,
10637 hf_ff_lr, tvb, 0, 0, 1);
10638 proto_item_set_hidden(hidden_item);
10639 hidden_item = proto_tree_add_boolean(tree,
10640 hf_ff_lr_get_info, tvb, 0, 0, 1);
10641 proto_item_set_hidden(hidden_item);
10642 hidden_item = proto_tree_add_boolean(tree,
10643 hf_ff_lr_get_info_err, tvb, 0, 0, 1);
10644 proto_item_set_hidden(hidden_item);
10646 dissect_ff_msg_lr_get_info_err(tvb,
10647 offset, length, pinfo, tree);
10648 break;
10650 case LAN_MSG_PUT_INFO_REQ:
10651 hidden_item = proto_tree_add_boolean(tree,
10652 hf_ff_lr, tvb, 0, 0, 1);
10653 proto_item_set_hidden(hidden_item);
10654 hidden_item = proto_tree_add_boolean(tree,
10655 hf_ff_lr_put_info, tvb, 0, 0, 1);
10656 proto_item_set_hidden(hidden_item);
10657 hidden_item = proto_tree_add_boolean(tree,
10658 hf_ff_lr_put_info_req, tvb, 0, 0, 1);
10659 proto_item_set_hidden(hidden_item);
10661 dissect_ff_msg_lr_put_info_req(tvb,
10662 offset, length, pinfo, tree);
10663 break;
10665 case LAN_MSG_PUT_INFO_RSP:
10666 hidden_item = proto_tree_add_boolean(tree,
10667 hf_ff_lr, tvb, 0, 0, 1);
10668 proto_item_set_hidden(hidden_item);
10669 hidden_item = proto_tree_add_boolean(tree,
10670 hf_ff_lr_put_info, tvb, 0, 0, 1);
10671 proto_item_set_hidden(hidden_item);
10672 hidden_item = proto_tree_add_boolean(tree,
10673 hf_ff_lr_put_info_rsp, tvb, 0, 0, 1);
10674 proto_item_set_hidden(hidden_item);
10676 dissect_ff_msg_lr_put_info_rsp(tvb,
10677 offset, length, pinfo, tree);
10678 break;
10680 case LAN_MSG_PUT_INFO_ERR:
10681 hidden_item = proto_tree_add_boolean(tree,
10682 hf_ff_lr, tvb, 0, 0, 1);
10683 proto_item_set_hidden(hidden_item);
10684 hidden_item = proto_tree_add_boolean(tree,
10685 hf_ff_lr_put_info, tvb, 0, 0, 1);
10686 proto_item_set_hidden(hidden_item);
10687 hidden_item = proto_tree_add_boolean(tree,
10688 hf_ff_lr_put_info_err, tvb, 0, 0, 1);
10689 proto_item_set_hidden(hidden_item);
10691 dissect_ff_msg_lr_put_info_err(tvb,
10692 offset, length, pinfo, tree);
10693 break;
10695 case LAN_MSG_GET_STATISTICS_REQ:
10696 hidden_item = proto_tree_add_boolean(tree,
10697 hf_ff_lr, tvb, 0, 0, 1);
10698 proto_item_set_hidden(hidden_item);
10699 hidden_item = proto_tree_add_boolean(tree,
10700 hf_ff_lr_get_statistics, tvb, 0, 0, 1);
10701 proto_item_set_hidden(hidden_item);
10702 hidden_item = proto_tree_add_boolean(tree,
10703 hf_ff_lr_get_statistics_req, tvb, 0, 0, 1);
10704 proto_item_set_hidden(hidden_item);
10706 dissect_ff_msg_lr_get_statistics_req(tvb,
10707 offset, length, pinfo, tree);
10708 break;
10710 case LAN_MSG_GET_STATISTICS_RSP:
10711 hidden_item = proto_tree_add_boolean(tree,
10712 hf_ff_lr, tvb, 0, 0, 1);
10713 proto_item_set_hidden(hidden_item);
10714 hidden_item = proto_tree_add_boolean(tree,
10715 hf_ff_lr_get_statistics, tvb, 0, 0, 1);
10716 proto_item_set_hidden(hidden_item);
10717 hidden_item = proto_tree_add_boolean(tree,
10718 hf_ff_lr_get_statistics_rsp, tvb, 0, 0, 1);
10719 proto_item_set_hidden(hidden_item);
10721 dissect_ff_msg_lr_get_statistics_rsp(tvb,
10722 offset, length, pinfo, tree);
10723 break;
10725 case LAN_MSG_GET_STATISTICS_ERR:
10726 hidden_item = proto_tree_add_boolean(tree,
10727 hf_ff_lr, tvb, 0, 0, 1);
10728 proto_item_set_hidden(hidden_item);
10729 hidden_item = proto_tree_add_boolean(tree,
10730 hf_ff_lr_get_statistics, tvb, 0, 0, 1);
10731 proto_item_set_hidden(hidden_item);
10732 hidden_item = proto_tree_add_boolean(tree,
10733 hf_ff_lr_get_statistics_err, tvb, 0, 0, 1);
10734 proto_item_set_hidden(hidden_item);
10736 dissect_ff_msg_lr_get_statistics_err(tvb,
10737 offset, length, pinfo, tree);
10738 break;
10740 case LAN_MSG_DIAG_REQ:
10741 hidden_item = proto_tree_add_boolean(tree,
10742 hf_ff_lr, tvb, 0, 0, 1);
10743 proto_item_set_hidden(hidden_item);
10744 hidden_item = proto_tree_add_boolean(tree,
10745 hf_ff_lr_diagnostic_msg, tvb, 0, 0, 1);
10746 proto_item_set_hidden(hidden_item);
10747 hidden_item = proto_tree_add_boolean(tree,
10748 hf_ff_lr_diagnostic_msg_req, tvb, 0, 0, 1);
10749 proto_item_set_hidden(hidden_item);
10751 dissect_ff_msg_diagnostic_msg_req(tvb,
10752 offset, length, pinfo, tree);
10753 break;
10755 default:
10756 col_add_fstr(pinfo->cinfo, COL_INFO,
10757 "Unknown Service (Protocol Id: %u, Confirmed Msg Type: %u) "
10758 "(%s Service Id = %u)",
10759 (ProtocolAndType & PROTOCOL_MASK) >> 2,
10760 ProtocolAndType & TYPE_MASK,
10761 (Service & SERVICE_CONFIRMED_FLAG_MASK)?
10762 "Confirmed": "Unconfirmed",
10763 Service & SERVICE_SERVICE_ID_MASK);
10765 if (length) {
10766 proto_tree_add_item(tree, hf_ff_unknown_service, tvb, offset, length, ENC_NA);
10774 * 6.4. Message Trailer
10776 static void
10777 dissect_ff_msg_trailer(tvbuff_t *tvb,
10778 int offset, uint32_t length, proto_tree *tree, uint8_t Options)
10780 proto_tree *sub_tree;
10781 proto_item *hidden_item;
10783 if (!tree) {
10784 return;
10787 hidden_item = proto_tree_add_boolean(tree, hf_ff_fda_msg_trailer, tvb, 0, 0, 1);
10788 proto_item_set_hidden(hidden_item);
10790 sub_tree = proto_tree_add_subtree(tree,
10791 tvb, offset, length, ett_ff_fda_msg_trailer, NULL, "FDA Message Trailer");
10793 if (Options & OPTION_MESSAGE_NUMBER_MASK) {
10794 proto_tree_add_item(sub_tree,
10795 hf_ff_fda_msg_trailer_msg_num, tvb, offset, 4, ENC_BIG_ENDIAN);
10796 offset += 4;
10799 if (Options & OPTION_INVOKE_ID_MASK) {
10800 proto_tree_add_item(sub_tree,
10801 hf_ff_fda_msg_trailer_invoke_id, tvb, offset, 4, ENC_BIG_ENDIAN);
10802 offset += 4;
10805 if (Options & OPTION_TIME_STAMP_MASK) {
10806 proto_tree_add_item(sub_tree,
10807 hf_ff_fda_msg_trailer_time_stamp, tvb, offset, 8, ENC_BIG_ENDIAN);
10808 offset += 8;
10811 if (Options & OPTION_EXTENDED_CNTRL_MASK) {
10812 proto_tree_add_item(sub_tree,
10813 hf_ff_fda_msg_trailer_extended_control_field,
10814 tvb, offset, 4, ENC_BIG_ENDIAN);
10815 /* offset += 4; */
10822 * Service
10825 static void
10826 dissect_ff_msg_hdr_srv(tvbuff_t *tvb,
10827 int offset, proto_tree *tree, uint8_t proto_and_type, uint8_t service)
10829 proto_tree *sub_tree;
10830 proto_item *ti;
10832 if (!tree) {
10833 return;
10836 ti = proto_tree_add_uint(tree, hf_ff_hdr_srv, tvb, offset, 1, service);
10837 sub_tree = proto_item_add_subtree(ti, ett_ff_fda_msg_hdr_srv);
10839 /* Bit 8: Confirmed Flag */
10840 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_confirm_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
10842 /* Bits 1-7 Service Id of the service */
10843 switch (proto_and_type & PROTOCOL_MASK) {
10844 case PROTOCOL_FDA:
10845 if (service & SERVICE_CONFIRMED_FLAG_MASK) {
10846 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fda_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
10847 } else {
10848 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fda_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
10851 break;
10853 case PROTOCOL_SM:
10854 if (service & SERVICE_CONFIRMED_FLAG_MASK) {
10855 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_sm_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
10856 } else {
10857 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_sm_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
10860 break;
10862 case PROTOCOL_FMS:
10863 if (service & SERVICE_CONFIRMED_FLAG_MASK) {
10864 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fms_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
10865 } else {
10866 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_fms_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
10869 break;
10871 case PROTOCOL_LAN:
10872 if (service & SERVICE_CONFIRMED_FLAG_MASK) {
10873 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_lan_service_id_confirm, tvb, offset, 1, ENC_BIG_ENDIAN);
10874 } else {
10875 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_lan_service_id_unconfirm, tvb, offset, 1, ENC_BIG_ENDIAN);
10878 break;
10880 default:
10881 proto_tree_add_item(sub_tree, hf_ff_hdr_srv_service_id, tvb, offset, 1, ENC_BIG_ENDIAN);
10888 * Protocol Id And Confirmed Msg Type
10891 static void
10892 dissect_ff_msg_hdr_proto_and_type(tvbuff_t *tvb,
10893 int offset, proto_tree *tree)
10895 static int * const header[] = {
10896 &hf_ff_hdr_proto_id,
10897 &hf_ff_hdr_confirm_msg_type,
10898 NULL
10901 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_hdr_proto_confirm, ett_ff_fda_msg_hdr_proto_and_type, header, ENC_BIG_ENDIAN);
10907 * Options
10910 static void
10911 dissect_ff_msg_hdr_opts(tvbuff_t *tvb,
10912 int offset, proto_tree *tree)
10914 static int * const options[] = {
10915 &hf_ff_hdr_opts_msg_num,
10916 &hf_ff_hdr_opts_invoke_id,
10917 &hf_ff_hdr_opts_timestamp,
10918 &hf_ff_hdr_opts_reserved,
10919 &hf_ff_hdr_opts_ext_ctrl,
10920 &hf_ff_hdr_opts_pad,
10921 NULL
10924 proto_tree_add_bitmask(tree, tvb, offset, hf_ff_hdr_opts, ett_ff_fda_msg_hdr_opts, options, ENC_BIG_ENDIAN);
10930 * 6.3. Message Header
10932 static void
10933 dissect_ff_msg_hdr(tvbuff_t *tvb,
10934 proto_tree *tree, uint8_t ProtocolAndType, uint8_t Service)
10936 proto_tree *sub_tree;
10937 proto_item *hidden_item;
10938 int offset = 0;
10940 if (!tree) {
10941 return;
10944 hidden_item = proto_tree_add_boolean(tree, hf_ff_fda_msg_hdr, tvb, 0, 0, 1);
10945 proto_item_set_hidden(hidden_item);
10947 sub_tree = proto_tree_add_subtree(tree,
10948 tvb, offset, FDA_MSG_HDR_LENGTH, ett_ff_fda_msg_hdr, NULL, "FDA Message Header");
10950 /* FDA Message Version */
10951 proto_tree_add_item(sub_tree,
10952 hf_ff_fda_msg_hdr_ver, tvb, offset, 1, ENC_BIG_ENDIAN);
10953 offset += 1;
10955 /* Options */
10956 dissect_ff_msg_hdr_opts(tvb, offset, sub_tree);
10957 offset += 1;
10959 /* Protocol Id And Confirmed Msg Type */
10960 dissect_ff_msg_hdr_proto_and_type(tvb,
10961 offset, sub_tree);
10962 offset += 1;
10964 /* Service */
10965 dissect_ff_msg_hdr_srv(tvb,
10966 offset, sub_tree, ProtocolAndType, Service);
10967 offset += 1;
10969 /* FDA Address */
10970 proto_tree_add_item(sub_tree,
10971 hf_ff_fda_msg_hdr_fda_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
10972 offset += 4;
10974 /* Message Length */
10975 proto_tree_add_item(sub_tree,
10976 hf_ff_fda_msg_hdr_len, tvb, offset, 4, ENC_BIG_ENDIAN);
10977 /* offset += 4; */
10982 static int
10983 dissect_ff(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
10985 proto_tree *sub_tree;
10986 proto_item *ti;
10987 int offset = 0;
10989 uint8_t Options = 0; /* Options */
10990 uint8_t ProtocolAndType = 0; /* Protocol Id And Confirmed Msg Type */
10991 uint8_t Service = 0; /* Service */
10992 uint32_t FDAAddress = 0; /* FDA Address */
10993 uint32_t length = 0; /* Message Length */
10995 uint32_t trailer_len = 0;
10997 col_set_str(pinfo->cinfo, COL_PROTOCOL, "FF");
10999 Options = tvb_get_uint8(tvb, 1);
11000 ProtocolAndType = tvb_get_uint8(tvb, 2);
11001 Service = tvb_get_uint8(tvb, 3);
11002 FDAAddress = tvb_get_ntohl(tvb, 4);
11003 length = tvb_get_ntohl(tvb, 8);
11005 ti = proto_tree_add_item(tree, proto_ff, tvb, offset, length, ENC_NA);
11006 sub_tree = proto_item_add_subtree(ti, ett_ff);
11008 if (Options & OPTION_MESSAGE_NUMBER_MASK) {
11009 length -= 4;
11010 trailer_len += 4;
11013 if (Options & OPTION_INVOKE_ID_MASK) {
11014 length -= 4;
11015 trailer_len += 4;
11018 if (Options & OPTION_TIME_STAMP_MASK) {
11019 length -= 8;
11020 trailer_len += 8;
11023 if (Options & OPTION_EXTENDED_CNTRL_MASK) {
11024 length -= 4;
11025 trailer_len += 4;
11029 * Header
11031 dissect_ff_msg_hdr(tvb, sub_tree, ProtocolAndType, Service);
11032 offset += FDA_MSG_HDR_LENGTH;
11033 length -= FDA_MSG_HDR_LENGTH;
11036 * Service-Specific Parameters + User Data (optional)
11038 dissect_ff_msg_body(tvb, offset, length, pinfo, sub_tree,
11039 ProtocolAndType, Service, FDAAddress);
11040 offset += length;
11043 * Trailer (optional)
11045 if (trailer_len) {
11046 dissect_ff_msg_trailer(tvb,
11047 offset, trailer_len, sub_tree, Options);
11048 offset += trailer_len;
11051 return offset;
11055 static unsigned
11056 get_ff_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data _U_)
11058 return (tvb_get_ntohl(tvb, offset + 8));
11063 static int
11064 dissect_ff_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
11068 * 6.3. Message Header
11070 * 0 1 2 3
11071 * 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
11072 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
11073 * | Version | Options | Protocol/Type | Service |
11074 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
11075 * | FDA Address |
11076 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
11077 * | Message Length |
11078 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
11082 tcp_dissect_pdus(tvb, pinfo, tree, ff_desegment,
11083 FDA_MSG_HDR_LENGTH, get_ff_pdu_len, dissect_ff, data);
11085 return tvb_reported_length(tvb);
11090 static int
11091 dissect_ff_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
11093 int offset = 0;
11095 while (tvb_reported_length_remaining(tvb, offset) > FDA_MSG_HDR_LENGTH)
11097 tvbuff_t *pdu_tvb;
11098 int length;
11100 /* Make sure at least the header is there */
11101 if (tvb_captured_length_remaining(tvb, offset) < FDA_MSG_HDR_LENGTH)
11102 break;
11104 length = get_ff_pdu_len(pinfo, tvb, offset, data);
11106 /* Make sure the length field is valid */
11107 if ((length > tvb_reported_length_remaining(tvb, offset)) ||
11108 (length < FDA_MSG_HDR_LENGTH))
11109 break;
11111 pdu_tvb = tvb_new_subset_length(tvb, offset, length);
11112 offset += dissect_ff(pdu_tvb, pinfo, tree, data);
11115 return offset;
11120 void
11121 proto_register_ff(void)
11123 static hf_register_info hf[] = {
11125 * 6.3. Message Header
11127 { &hf_ff_fda_msg_hdr,
11128 { "Message Header", "ff.hdr",
11129 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11131 { &hf_ff_fda_msg_hdr_ver,
11132 { "FDA Message Version", "ff.hdr.ver",
11133 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11135 { &hf_ff_fda_msg_hdr_fda_addr,
11136 { "FDA Address", "ff.hdr.fda_addr",
11137 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11139 { &hf_ff_fda_msg_hdr_len,
11140 { "Message Length", "ff.hdr.len",
11141 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11143 { &hf_ff_unknown_data,
11144 { "Unknown data", "ff.unknown_data",
11145 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11147 { &hf_ff_data,
11148 { "Data", "ff.data",
11149 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11151 { &hf_ff_reserved24,
11152 { "Reserved", "ff.reserved",
11153 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11155 { &hf_ff_unknown_service,
11156 { "Unknown service", "ff.unknown_service",
11157 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11160 * 6.4. Message Trailer
11162 { &hf_ff_fda_msg_trailer,
11163 { "Message Trailer", "ff.trailer",
11164 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11166 { &hf_ff_fda_msg_trailer_msg_num,
11167 { "Message Number", "ff.trailer.msg_num",
11168 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11170 { &hf_ff_fda_msg_trailer_invoke_id,
11171 { "Invoke Id", "ff.trailer.invoke_id",
11172 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11174 { &hf_ff_fda_msg_trailer_time_stamp,
11175 { "Time Stamp", "ff.trailer.time_stamp",
11176 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11178 { &hf_ff_fda_msg_trailer_extended_control_field,
11179 { "Extended Control Field", "ff.trailer.extended_control_field",
11180 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11185 * 6.5.1. FDA Session Management Services
11187 { &hf_ff_fda,
11188 { "FDA Session Management Service", "ff.fda",
11189 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11191 { &hf_ff_hdr_srv,
11192 { "Service", "ff.hdr_srv",
11193 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11195 { &hf_ff_hdr_srv_confirm_flag,
11196 { "Confirmed Flag", "ff.hdr_srv.confirm_flag",
11197 FT_BOOLEAN, 8, TFS(&tfs_confirmed_unconfirmed), SERVICE_CONFIRMED_FLAG_MASK, NULL, HFILL } },
11199 { &hf_ff_hdr_srv_service_id,
11200 { "Service Id (Unknown)", "ff.hdr_srv.service_id",
11201 FT_UINT8, BASE_DEC, NULL, SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
11203 { &hf_ff_hdr_srv_fda_service_id_confirm,
11204 { "Service Id", "ff.hdr_srv.fda.service_id.confirm",
11205 FT_UINT8, BASE_DEC, VALS(names_fda_confirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
11207 { &hf_ff_hdr_srv_fda_service_id_unconfirm,
11208 { "Service Id", "ff.hdr_srv.fda.service_id.unconfirm",
11209 FT_UINT8, BASE_DEC, VALS(names_fda_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
11211 { &hf_ff_hdr_srv_sm_service_id_confirm,
11212 { "Service Id", "ff.hdr_srv.sm.service_id.confirm",
11213 FT_UINT8, BASE_DEC, VALS(names_sm_confirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
11215 { &hf_ff_hdr_srv_sm_service_id_unconfirm,
11216 { "Service Id", "ff.hdr_srv.sm.service_id.unconfirm",
11217 FT_UINT8, BASE_DEC, VALS(names_sm_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
11219 { &hf_ff_hdr_srv_fms_service_id_confirm,
11220 { "Service Id", "ff.hdr_srv.fms.service_id.confirm",
11221 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_fms_confirmed_ext, SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
11223 { &hf_ff_hdr_srv_fms_service_id_unconfirm,
11224 { "Service Id", "ff.hdr_srv.fms.service_id.unconfirm",
11225 FT_UINT8, BASE_DEC, VALS(names_fms_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
11227 { &hf_ff_hdr_srv_lan_service_id_confirm,
11228 { "Service Id", "ff.hdr_srv.lan.service_id.confirm",
11229 FT_UINT8, BASE_DEC, VALS(names_lan_confirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
11231 { &hf_ff_hdr_srv_lan_service_id_unconfirm,
11232 { "Service Id", "ff.hdr_srv.lan.service_id.unconfirm",
11233 FT_UINT8, BASE_DEC, VALS(names_lan_unconfirmed), SERVICE_SERVICE_ID_MASK, NULL, HFILL } },
11235 { &hf_ff_hdr_proto_id,
11236 { "Service Id", "ff.hdr.proto_id",
11237 FT_UINT8, BASE_DEC, VALS(names_proto), PROTOCOL_MASK, NULL, HFILL } },
11239 { &hf_ff_hdr_confirm_msg_type,
11240 { "Service Id", "ff.hdr.confirm_msg_type",
11241 FT_UINT8, BASE_DEC, VALS(names_type), TYPE_MASK, NULL, HFILL } },
11243 { &hf_ff_hdr_proto_confirm,
11244 { "Protocol Id And Confirmed Msg Type", "ff.hdr.proto_confirm",
11245 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11247 { &hf_ff_hdr_opts_msg_num,
11248 { "Message Number in the Trailer", "ff.hdr.opts.msg_num",
11249 FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_MESSAGE_NUMBER_MASK, NULL, HFILL } },
11251 { &hf_ff_hdr_opts_invoke_id,
11252 { "Invoke Id in the Trailer", "ff.hdr.opts.invoke_id",
11253 FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_INVOKE_ID_MASK, NULL, HFILL } },
11255 { &hf_ff_hdr_opts_timestamp,
11256 { "Time Stamp in the Trailer", "ff.hdr.opts.timestamp",
11257 FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_TIME_STAMP_MASK, NULL, HFILL } },
11259 { &hf_ff_hdr_opts_reserved,
11260 { "Reserved", "ff.hdr.opts.reserved",
11261 FT_UINT8, BASE_HEX, NULL, OPTION_RESERVED_MASK, NULL, HFILL } },
11263 { &hf_ff_hdr_opts_ext_ctrl,
11264 { "Extended Control in the Trailer", "ff.hdr.opts.ext_ctrl",
11265 FT_BOOLEAN, 8, TFS(&tfs_present_not_present), OPTION_EXTENDED_CNTRL_MASK, NULL, HFILL } },
11267 { &hf_ff_hdr_opts_pad,
11268 { "Pad Length", "ff.hdr.opts.pad",
11269 FT_UINT8, BASE_HEX, NULL, OPTION_PAD_LENGTH_MASK, NULL, HFILL } },
11271 { &hf_ff_hdr_opts,
11272 { "Options", "ff.hdr.opts",
11273 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11277 * 6.5.1.1. FDA Open Session (Confirmed Service Id = 1)
11279 { &hf_ff_fda_open_sess,
11280 { "FDA Open Session", "ff.fda.open_sess",
11281 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11286 * 6.5.1.1.1. Request Message Parameters
11288 { &hf_ff_fda_open_sess_req,
11289 { "FDA Open Session Request", "ff.fda.open_sess.req",
11290 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11292 { &hf_ff_fda_open_sess_req_sess_idx,
11293 { "Session Index", "ff.fda.open_sess.req.sess_idx",
11294 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11296 { &hf_ff_fda_open_sess_req_max_buf_siz,
11297 { "Max Buffer Size", "ff.fda.open_sess.req.max_buf_siz",
11298 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11300 { &hf_ff_fda_open_sess_req_max_msg_len,
11301 { "Max Message Length", "ff.fda.open_sess.req.max_msg_len",
11302 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11304 { &hf_ff_fda_open_sess_req_reserved,
11305 { "Reserved", "ff.fda.open_sess.req.reserved",
11306 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11308 { &hf_ff_fda_open_sess_req_nma_conf_use,
11309 { "NMA Configuration Use", "ff.fda.open_sess.req.nma_conf_use",
11310 FT_UINT8, BASE_DEC, VALS(names_nma_conf_use), 0x0, NULL, HFILL } },
11312 { &hf_ff_fda_open_sess_req_inactivity_close_time,
11313 { "Inactivity Close Time",
11314 "ff.fda.open_sess.req.inactivity_close_time",
11315 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11317 { &hf_ff_fda_open_sess_req_transmit_delay_time,
11318 { "Transmit Delay Time", "ff.fda.open_sess.req.transmit_delay_time",
11319 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11321 { &hf_ff_fda_open_sess_req_pd_tag,
11322 { "PD Tag", "ff.fda.open_sess.req.pd_tag",
11323 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11328 * 6.5.1.1.2. Response Message Parameters
11330 { &hf_ff_fda_open_sess_rsp,
11331 { "FDA Open Session Response", "ff.fda.open_sess.rsp",
11332 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11334 { &hf_ff_fda_open_sess_rsp_sess_idx,
11335 { "Session Index", "ff.fda.open_sess.rsp.sess_idx",
11336 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11338 { &hf_ff_fda_open_sess_rsp_max_buf_siz,
11339 { "Max Buffer Size", "ff.fda.open_sess.rsp.max_buf_siz",
11340 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11342 { &hf_ff_fda_open_sess_rsp_max_msg_len,
11343 { "Max Message Length", "ff.fda.open_sess.rsp.max_msg_len",
11344 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11346 { &hf_ff_fda_open_sess_rsp_reserved,
11347 { "Reserved", "ff.fda.open_sess.rsp.reserved",
11348 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11350 { &hf_ff_fda_open_sess_rsp_nma_conf_use,
11351 { "NMA Configuration Use", "ff.fda.open_sess.rsp.nma_conf_use",
11352 FT_UINT8, BASE_DEC, VALS(names_nma_conf_use), 0x0, NULL, HFILL } },
11354 { &hf_ff_fda_open_sess_rsp_inactivity_close_time,
11355 { "Inactivity Close Time",
11356 "ff.fda.open_sess.rsp.inactivity_close_time",
11357 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11359 { &hf_ff_fda_open_sess_rsp_transmit_delay_time,
11360 { "Transmit Delay Time", "ff.fda.open_sess.rsp.transmit_delay_time",
11361 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11363 { &hf_ff_fda_open_sess_rsp_pd_tag,
11364 { "PD Tag", "ff.fda.open_sess.rsp.pd_tag",
11365 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11370 * 6.5.1.1.3. Error Message Parameters
11372 { &hf_ff_fda_open_sess_err,
11373 { "FDA Open Session Error", "ff.fda.open_sess.err",
11374 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11376 { &hf_ff_fda_open_sess_err_err_class,
11377 { "Error Class", "ff.fda.open_sess.err.err_class",
11378 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
11380 { &hf_ff_fda_open_sess_err_err_code,
11381 { "Error Code", "ff.fda.open_sess.err.err_code",
11382 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11384 { &hf_ff_fda_open_sess_err_additional_code,
11385 { "Additional Code", "ff.fda.open_sess.err.additional_code",
11386 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11388 { &hf_ff_fda_open_sess_err_additional_desc,
11389 { "Additional Description", "ff.fda.open_sess.err.additional_desc",
11390 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11395 * 6.5.1.2. FDA Idle (Confirmed Service Id = 3)
11397 { &hf_ff_fda_idle,
11398 { "FDA Idle", "ff.fda.idle",
11399 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11404 * 6.5.1.2.1. Request Message Parameters
11406 { &hf_ff_fda_idle_req,
11407 { "FDA Idle Request", "ff.fda.idle.req",
11408 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11413 * 6.5.1.2.2. Response Message Parameters
11415 { &hf_ff_fda_idle_rsp,
11416 { "FDA Idle Response", "ff.fda.idle.rsp",
11417 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11422 * 6.5.1.2.3. Error Message Parameters
11424 { &hf_ff_fda_idle_err,
11425 { "FDA Idle Error", "ff.fda.idle.err",
11426 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11428 { &hf_ff_fda_idle_err_err_class,
11429 { "Error Class", "ff.fda.idle.err.err_class",
11430 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
11432 { &hf_ff_fda_idle_err_err_code,
11433 { "Error Code", "ff.fda.idle.err.err_code",
11434 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11436 { &hf_ff_fda_idle_err_additional_code,
11437 { "Additional Code", "ff.fda.idle.err.additional_code",
11438 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11440 { &hf_ff_fda_idle_err_additional_desc,
11441 { "Additional Description", "ff.fda.idle.err.additional_desc",
11442 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11447 * 6.5.2. SM Services
11449 { &hf_ff_sm,
11450 { "SM Service", "ff.sm",
11451 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11456 * 6.5.2.1. SM Find Tag Query (Unconfirmed Service Id = 1)
11458 { &hf_ff_sm_find_tag_query,
11459 { "SM Find Tag Query", "ff.sm.find_tag_query",
11460 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11465 * 6.5.2.1.1. Request Message Parameters
11467 { &hf_ff_sm_find_tag_query_req,
11468 { "SM Find Tag Query Request", "ff.sm.find_tag_query.req",
11469 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11471 { &hf_ff_sm_find_tag_query_req_query_type,
11472 { "Query Type", "ff.sm.find_tag_query.req.query_type",
11473 FT_UINT8, BASE_DEC, VALS(names_query_type), 0x0, NULL, HFILL } },
11475 { &hf_ff_sm_find_tag_query_req_idx,
11476 { "Element Id or VFD Reference or Device Index",
11477 "ff.sm.find_tag_query.req.idx",
11478 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11480 { &hf_ff_sm_find_tag_query_req_tag,
11481 { "PD Tag or Function Block Tag", "ff.sm.find_tag_query.req.tag",
11482 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11484 { &hf_ff_sm_find_tag_query_req_vfd_tag,
11485 { "VFD Tag", "ff.sm.find_tag_query.req.vfd_tag",
11486 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11491 * 6.5.2.2. SM Find Tag Reply (Unconfirmed Service Id = 2)
11493 { &hf_ff_sm_find_tag_reply,
11494 { "SM Find Tag Reply", "ff.sm.find_tag_reply",
11495 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11500 * 6.5.2.2.1. Request Message Parameters
11502 { &hf_ff_sm_find_tag_reply_req,
11503 { "SM Find Tag Reply Request", "ff.sm.find_tag_reply.req",
11504 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11506 { &hf_ff_sm_find_tag_reply_req_query_type,
11507 { "Query Type", "ff.sm.find_tag_reply.req.query_type",
11508 FT_UINT8, BASE_DEC, VALS(names_query_type), 0x0, NULL, HFILL } },
11510 { &hf_ff_sm_find_tag_reply_req_h1_node_addr,
11511 { "Queried Object H1 Node Address",
11512 "ff.sm.find_tag_reply.req.h1_node_addr",
11513 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11515 { &hf_ff_sm_find_tag_reply_req_fda_addr_link_id,
11516 { "Queried Object FDA Address Link Id",
11517 "ff.sm.find_tag_reply.req.fda_addr_link_id",
11518 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11520 { &hf_ff_sm_find_tag_reply_req_vfd_ref,
11521 { "Queried Object VFD Reference",
11522 "ff.sm.find_tag_reply.req.vfd_ref",
11523 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11525 { &hf_ff_sm_find_tag_reply_req_od_idx,
11526 { "Queried Object OD Index", "ff.sm.find_tag_reply.req.od_idx",
11527 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11529 { &hf_ff_sm_find_tag_reply_req_ip_addr,
11530 { "Queried Object IP Address", "ff.sm.find_tag_reply.req.ip_addr",
11531 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11533 { &hf_ff_sm_find_tag_reply_req_od_ver,
11534 { "Queried Object OD Version", "ff.sm.find_tag_reply.req.od_ver",
11535 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11537 { &hf_ff_sm_find_tag_reply_req_dev_id,
11538 { "Queried Object Device ID", "ff.sm.find_tag_reply.req.dev_id",
11539 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11541 { &hf_ff_sm_find_tag_reply_req_pd_tag,
11542 { "Queried Object PD Tag", "ff.sm.find_tag_reply.req.pd_tag",
11543 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11545 { &hf_ff_sm_find_tag_reply_req_reserved,
11546 { "Reserved", "ff.sm.find_tag_reply.req.reserved",
11547 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11549 { &hf_ff_sm_find_tag_reply_req_num_of_fda_addr_selectors,
11550 { "Number Of FDA Address Selectors",
11551 "ff.sm.find_tag_reply.req.num_of_fda_addr_selectors",
11552 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11554 { &hf_ff_sm_find_tag_reply_req_fda_addr_selector,
11555 { "FDA Address Selector",
11556 "ff.sm.find_tag_reply.req.fda_addr_selector.fda_addr_selector",
11557 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11559 { &hf_ff_sm_find_tag_reply_dup_reserved,
11560 { "Reserved",
11561 "ff.sm.find_tag_reply.dup_reserved",
11562 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
11564 { &hf_ff_sm_find_tag_reply_dup_pd_tag,
11565 { "Duplicate PD Tag",
11566 "ff.sm.find_tag_reply.dup_pd_tag",
11567 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
11569 { &hf_ff_sm_find_tag_reply_dup_device,
11570 { "Duplicate Device Index",
11571 "ff.sm.find_tag_reply.dup_device",
11572 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
11574 { &hf_ff_sm_find_tag_reply_dup,
11575 { "Duplicate Detection State",
11576 "ff.sm.find_tag_reply.dup",
11577 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11581 * 6.5.2.7. SM Identify (Unconfirmed Service Id = 16)
11583 { &hf_ff_sm_id,
11584 { "SM Identify", "ff.sm.id",
11585 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11589 * 6.5.2.3.1. Request Message Parameters
11591 { &hf_ff_sm_id_req,
11592 { "SM Identify Request", "ff.sm.id.req",
11593 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11598 * 6.5.2.3.2. Response Message Parameters
11600 { &hf_ff_sm_id_rsp,
11601 { "SM Identify Response", "ff.sm.id.rsp",
11602 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11604 { &hf_ff_sm_id_rsp_dev_idx,
11605 { "Device Index", "ff.sm.id.rsp.dev_idx",
11606 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11608 { &hf_ff_sm_id_rsp_max_dev_idx,
11609 { "Max Device Index", "ff.sm.id.rsp.max_dev_idx",
11610 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11612 { &hf_ff_sm_id_rsp_operational_ip_addr,
11613 { "Operational IP Address", "ff.sm.id.rsp.operational_ip_addr",
11614 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11616 { &hf_ff_sm_id_rsp_dev_id,
11617 { "Device ID", "ff.sm.id.rsp.dev_id",
11618 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11620 { &hf_ff_sm_id_rsp_pd_tag,
11621 { "PD Tag", "ff.sm.id.rsp.pd_tag",
11622 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11624 { &hf_ff_sm_id_rsp_hse_repeat_time,
11625 { "HSE Repeat Time", "ff.sm.id.rsp.hse_repeat_time",
11626 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11628 { &hf_ff_sm_id_rsp_lr_port,
11629 { "LAN Redundancy Port", "ff.sm.id.rsp.lr_port",
11630 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11632 { &hf_ff_sm_id_rsp_reserved,
11633 { "Reserved", "ff.sm.id.rsp.reserved",
11634 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11636 { &hf_ff_sm_id_rsp_annunc_ver_num,
11637 { "Annunciation Version Number", "ff.sm.id.rsp.annunc_ver_num",
11638 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11640 { &hf_ff_sm_id_rsp_hse_dev_ver_num,
11641 { "HSE Device Version Number", "ff.sm.id.rsp.hse_dev_ver_num",
11642 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11644 { &hf_ff_sm_id_rsp_num_of_entries,
11645 { "Number of Entries in Version Number List",
11646 "ff.sm.id.rsp.num_of_entries",
11647 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11649 { &hf_ff_sm_id_rsp_h1_live_list_h1_link_id,
11650 { "H1 Link Id", "ff.sm.id.rsp.h1_live_list.h1_link_id",
11651 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11653 { &hf_ff_sm_id_rsp_h1_live_list_reserved,
11654 { "Reserved", "ff.sm.id.rsp.h1_live_list.reserved",
11655 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11657 { &hf_ff_sm_id_rsp_h1_live_list_ver_num,
11658 { "Version Number", "ff.sm.id.rsp.h1_live_list.ver_num",
11659 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11661 { &hf_ff_sm_id_rsp_h1_node_addr_ver_num_h1_node_addr,
11662 { "H1 Node Address",
11663 "ff.sm.id.rsp.h1_node_addr_ver_num.h1_node_addr",
11664 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11666 { &hf_ff_sm_id_rsp_h1_node_addr_ver_num_ver_num,
11667 { "Version Number", "ff.sm.id.rsp.h1_node_addr_ver_num.ver_num",
11668 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11670 { &hf_ff_sm_id_rsp_smk_state_name,
11671 { "Name", "ff.sm.id.rsp.smk_state_name",
11672 FT_UINT8, BASE_DEC, VALS(names_smk_state), 0xFE, NULL, HFILL } },
11674 { &hf_ff_sm_id_rsp_smk_state_sync,
11675 { "Synchronized with SNTP Time Server", "ff.sm.id.rsp.smk_state_sync",
11676 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01, NULL, HFILL } },
11678 { &hf_ff_sm_id_rsp_smk_state,
11679 { "SMK State", "ff.sm.id.rsp.smk_state",
11680 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11682 { &hf_ff_sm_id_rsp_dev_type_link,
11683 { "Linking Device", "ff.sm.id.rsp.dev_type.link",
11684 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x80, NULL, HFILL } },
11686 { &hf_ff_sm_id_rsp_dev_type_iogateway,
11687 { "I/O Gateway", "ff.sm.id.rsp.dev_type.iogateway",
11688 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40, NULL, HFILL } },
11690 { &hf_ff_sm_id_rsp_dev_type_hse,
11691 { "HSE Field Device", "ff.sm.id.rsp.dev_type.hse",
11692 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20, NULL, HFILL } },
11694 { &hf_ff_sm_id_rsp_dev_type_h1,
11695 { "H1 Device", "ff.sm.id.rsp.dev_type.h1",
11696 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10, NULL, HFILL } },
11698 { &hf_ff_sm_id_rsp_dev_type_reserved,
11699 { "Reserved", "ff.sm.id.rsp.dev_type.reserved",
11700 FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL } },
11702 { &hf_ff_sm_id_rsp_dev_type_redundant_caps,
11703 { "Redundant Device Type Capability", "ff.sm.id.rsp.dev_type.redundant_caps",
11704 FT_UINT8, BASE_DEC, VALS(names_dev_type), 0x07, NULL, HFILL } },
11706 { &hf_ff_sm_id_rsp_dev_type,
11707 { "Device Type", "ff.sm.id.rsp.dev_type",
11708 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11710 { &hf_ff_sm_id_rsp_dev_redundancy_state_reserved,
11711 { "Reserved", "ff.sm.id.rsp.dev_redundancy_state.reserved",
11712 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL } },
11714 { &hf_ff_sm_id_rsp_dev_redundancy_state_role,
11715 { "Device Redundancy Role", "ff.sm.id.rsp.dev_redundancy_state.role",
11716 FT_UINT8, BASE_DEC, VALS(names_dev_redundancy_role), 0x0C, NULL, HFILL } },
11718 { &hf_ff_sm_id_rsp_dev_redundancy_state_type,
11719 { "Assigned Redundant Device Type", "ff.sm.id.rsp.dev_redundancy_state.type",
11720 FT_UINT8, BASE_DEC, VALS(names_assigned_redundant_dev_type), 0x03, NULL, HFILL } },
11722 { &hf_ff_sm_id_rsp_dev_redundancy_state,
11723 { "Device Redundancy State", "ff.sm.id.rsp.dev_redundancy_state",
11724 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11726 { &hf_ff_sm_id_rsp_dup_detection_state_reserved,
11727 { "Reserved", "ff.sm.id.rsp.dup_detection_state.reserved",
11728 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
11730 { &hf_ff_sm_id_rsp_dup_detection_state_pd_tag,
11731 { "Duplicate PD Tag", "ff.sm.id.rsp.dup_detection_state.pd_tag",
11732 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
11734 { &hf_ff_sm_id_rsp_dup_detection_state_device,
11735 { "Duplicate Device Index", "ff.sm.id.rsp.dup_detection_state.device",
11736 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
11738 { &hf_ff_sm_id_rsp_dup_detection_state,
11739 { "Duplicate Detection State", "ff.sm.id.rsp.dup_detection_state",
11740 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11744 * 6.5.2.3.3. Error Message Parameters
11746 { &hf_ff_sm_id_err,
11747 { "SM Identify Error", "ff.sm.id.err",
11748 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11750 { &hf_ff_sm_id_err_err_class,
11751 { "Error Class", "ff.sm.id.err.err_class",
11752 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
11754 { &hf_ff_sm_id_err_err_code,
11755 { "Error Code", "ff.sm.id.err.err_code",
11756 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11758 { &hf_ff_sm_id_err_additional_code,
11759 { "Additional Code", "ff.sm.id.err.additional_code",
11760 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11762 { &hf_ff_sm_id_err_additional_desc,
11763 { "Additional Description", "ff.sm.id.err.additional_desc",
11764 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11769 * 6.5.2.4. SM Clear Address (Confirmed Service Id = 12)
11771 { &hf_ff_sm_clear_addr,
11772 { "SM Clear Address", "ff.sm.clear_addr",
11773 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11778 * 6.5.2.4.1. Request Message Parameters
11780 { &hf_ff_sm_clear_addr_req,
11781 { "SM Clear Address Request", "ff.sm.clear_addr.req",
11782 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11784 { &hf_ff_sm_clear_addr_req_dev_id,
11785 { "Device ID", "ff.sm.clear_addr.req.dev_id",
11786 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11788 { &hf_ff_sm_clear_addr_req_pd_tag,
11789 { "PD Tag", "ff.sm.clear_addr.req.pd_tag",
11790 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11792 { &hf_ff_sm_clear_addr_req_interface_to_clear,
11793 { "Interface to Clear", "ff.sm.clear_addr.req.interface_to_clear",
11794 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11799 * 6.5.2.4.2. Response Message Parameters
11801 { &hf_ff_sm_clear_addr_rsp,
11802 { "SM Clear Address Response", "ff.sm.clear_addr.rsp",
11803 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11808 * 6.5.2.4.3. Error Message Parameters
11810 { &hf_ff_sm_clear_addr_err,
11811 { "SM Clear Address Error", "ff.sm.clear_addr.err",
11812 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11814 { &hf_ff_sm_clear_addr_err_err_class,
11815 { "Error Class", "ff.sm.clear_addr.err.err_class",
11816 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
11818 { &hf_ff_sm_clear_addr_err_err_code,
11819 { "Error Code", "ff.sm.clear_addr.err.err_code",
11820 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11822 { &hf_ff_sm_clear_addr_err_additional_code,
11823 { "Additional Code", "ff.sm.clear_addr.err.additional_code",
11824 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11826 { &hf_ff_sm_clear_addr_err_additional_desc,
11827 { "Additional Description", "ff.sm.clear_addr.err.additional_desc",
11828 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11833 * 6.5.2.5. SM Set Assignment Info (Confirmed Service Id = 14)
11835 { &hf_ff_sm_set_assign_info,
11836 { "SM Set Assignment Info", "ff.sm.set_assign_info",
11837 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11842 * 6.5.2.5.1. Request Message Parameters
11844 { &hf_ff_sm_set_assign_info_req_dev_redundancy_state_reserved,
11845 { "Reserved", "ff.sm.set_assign_info.req_dev_redundancy_state.reserved",
11846 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL } },
11848 { &hf_ff_sm_set_assign_info_req_dev_redundancy_state_role,
11849 { "Type D-2 Device Redundancy Role", "ff.sm.set_assign_info.req_dev_redundancy_state.role",
11850 FT_UINT8, BASE_DEC, VALS(names_type_d2_dev_redundancy_role), 0x0C, NULL, HFILL } },
11852 { &hf_ff_sm_set_assign_info_req_dev_redundancy_state_type,
11853 { "Assigned Device Redundancy Type", "ff.sm.set_assign_info.req_dev_redundancy_state.type",
11854 FT_UINT8, BASE_DEC, VALS(names_assigned_redundant_dev_type), 0x03, NULL, HFILL } },
11856 { &hf_ff_sm_set_assign_info_req_dev_redundancy_state,
11857 { "Device Redundancy State", "ff.sm.set_assign_info.req_dev_redundancy_state",
11858 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11860 { &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_reserved,
11861 { "Reserved", "ff.sm.set_assign_info.req_clear_dup_detection_state.reserved",
11862 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
11864 { &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_pd_tag,
11865 { "Duplicate PD Tag Detected", "ff.sm.set_assign_info.req_clear_dup_detection_state.pd_tag",
11866 FT_BOOLEAN, 8, TFS(&tfs_do_not_clear_clear), 0x02, NULL, HFILL } },
11868 { &hf_ff_sm_set_assign_info_req_clear_dup_detection_state_device_index,
11869 { "Duplicate Device Index Detected", "ff.sm.set_assign_info.req_clear_dup_detection_state.device_index",
11870 FT_BOOLEAN, 8, TFS(&tfs_do_not_clear_clear), 0x01, NULL, HFILL } },
11872 { &hf_ff_sm_set_assign_info_req_clear_dup_detection_state,
11873 { "Clear Duplicate Detection State", "ff.sm.set_assign_info.req_clear_dup_detection_state",
11874 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
11876 { &hf_ff_sm_set_assign_info_req,
11877 { "SM Set Assignment Info Request", "ff.sm.set_assign_info.req",
11878 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11880 { &hf_ff_sm_set_assign_info_req_dev_id,
11881 { "Device ID", "ff.sm.set_assign_info.req.dev_id",
11882 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11884 { &hf_ff_sm_set_assign_info_req_pd_tag,
11885 { "PD Tag", "ff.sm.set_assign_info.req.pd_tag",
11886 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11888 { &hf_ff_sm_set_assign_info_req_h1_new_addr,
11889 { "H1 New Address", "ff.sm.set_assign_info.req.h1_new_addr",
11890 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11892 { &hf_ff_sm_set_assign_info_req_lr_port,
11893 { "LAN Redundancy Port",
11894 "ff.sm.set_assign_info.req.lr_port",
11895 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11897 { &hf_ff_sm_set_assign_info_req_hse_repeat_time,
11898 { "HSE Repeat Time", "ff.sm.set_assign_info.req.hse_repeat_time",
11899 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11901 { &hf_ff_sm_set_assign_info_req_dev_idx,
11902 { "Device Index", "ff.sm.set_assign_info.req.dev_idx",
11903 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11905 { &hf_ff_sm_set_assign_info_req_max_dev_idx,
11906 { "Max Device Index", "ff.sm.set_assign_info.req.max_dev_idx",
11907 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11909 { &hf_ff_sm_set_assign_info_req_operational_ip_addr,
11910 { "Operational IP Address",
11911 "ff.sm.set_assign_info.req.operational_ip_addr",
11912 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11917 * 6.5.2.5.2. Response Message Parameters
11919 { &hf_ff_sm_set_assign_info_rsp,
11920 { "SM Set Assignment Info Response", "ff.sm.set_assign_info.rsp",
11921 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11923 { &hf_ff_sm_set_assign_info_rsp_reserved,
11924 { "Reserved", "ff.sm.set_assign_info.rsp.reserved",
11925 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11927 { &hf_ff_sm_set_assign_info_rsp_max_dev_idx,
11928 { "Max Device Index", "ff.sm.set_assign_info.rsp.max_dev_idx",
11929 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11931 { &hf_ff_sm_set_assign_info_rsp_hse_repeat_time,
11932 { "HSE Repeat Time", "ff.sm.set_assign_info.rsp.hse_repeat_time",
11933 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11938 * 6.5.2.5.3. Error Message Parameters
11940 { &hf_ff_sm_set_assign_info_err,
11941 { "SM Set Assignment Info Error", "ff.sm.set_assign_info.err",
11942 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11944 { &hf_ff_sm_set_assign_info_err_err_class,
11945 { "Error Class", "ff.sm.set_assign_info.err.err_class",
11946 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
11948 { &hf_ff_sm_set_assign_info_err_err_code,
11949 { "Error Code", "ff.sm.set_assign_info.err.err_code",
11950 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11952 { &hf_ff_sm_set_assign_info_err_additional_code,
11953 { "Additional Code", "ff.sm.set_assign_info.err.additional_code",
11954 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
11956 { &hf_ff_sm_set_assign_info_err_additional_desc,
11957 { "Additional Description",
11958 "ff.sm.set_assign_info.err.additional_desc",
11959 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11964 * 6.5.2.6. SM Clear Assignment Info (Confirmed Service Id = 15)
11966 { &hf_ff_sm_clear_assign_info,
11967 { "SM Clear Assignment Info", "ff.sm.clear_assign_info",
11968 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11973 * 6.5.2.6.1. Request Message Parameters
11975 { &hf_ff_sm_clear_assign_info_req,
11976 { "SM Clear Assignment Info Request", "ff.sm.clear_assign_info.req",
11977 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11979 { &hf_ff_sm_clear_assign_info_req_dev_id,
11980 { "Device ID", "ff.sm.clear_assign_info.req.dev_id",
11981 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11983 { &hf_ff_sm_clear_assign_info_req_pd_tag,
11984 { "PD Tag", "ff.sm.clear_assign_info.req.pd_tag",
11985 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
11990 * 6.5.2.6.2. Response Message Parameters
11992 { &hf_ff_sm_clear_assign_info_rsp,
11993 { "SM Clear Assignment Info Response",
11994 "ff.sm.clear_assign_info.rsp",
11995 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12000 * 6.5.2.6.3. Error Message Parameters
12002 { &hf_ff_sm_clear_assign_info_err,
12003 { "SM Clear Assignment Info Error", "ff.sm.clear_assign_info.err",
12004 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12006 { &hf_ff_sm_clear_assign_info_err_err_class,
12007 { "Error Class", "ff.sm.clear_assign_info.err.err_class",
12008 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12010 { &hf_ff_sm_clear_assign_info_err_err_code,
12011 { "Error Code", "ff.sm.clear_assign_info.err.err_code",
12012 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12014 { &hf_ff_sm_clear_assign_info_err_additional_code,
12015 { "Additional Code", "ff.sm.clear_assign_info.err.additional_code",
12016 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12018 { &hf_ff_sm_clear_assign_info_err_additional_desc,
12019 { "Additional Description",
12020 "ff.sm.clear_assign_info.err.additional_desc",
12021 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12026 * 6.5.2.7. SM Device Annunciation (Unconfirmed Service Id = 16)
12028 { &hf_ff_sm_dev_annunc,
12029 { "SM Device Annunciation", "ff.sm.dev_annunc",
12030 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12035 * 6.5.2.7.1. Request Message Parameters
12037 { &hf_ff_sm_dev_annunc_req,
12038 { "SM Device Annunciation Request", "ff.sm.dev_annunc.req",
12039 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12041 { &hf_ff_sm_dev_annunc_req_dev_idx,
12042 { "Device Index", "ff.sm.dev_annunc.req.dev_idx",
12043 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12045 { &hf_ff_sm_dev_annunc_req_max_dev_idx,
12046 { "Max Device Index", "ff.sm.dev_annunc.req.max_dev_idx",
12047 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12049 { &hf_ff_sm_dev_annunc_req_operational_ip_addr,
12050 { "Operational IP Address",
12051 "ff.sm.dev_annunc.req.operational_ip_addr",
12052 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12054 { &hf_ff_sm_dev_annunc_req_dev_id,
12055 { "Device ID", "ff.sm.dev_annunc.req.dev_id",
12056 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12058 { &hf_ff_sm_dev_annunc_req_pd_tag,
12059 { "PD Tag", "ff.sm.dev_annunc.req.pd_tag",
12060 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12062 { &hf_ff_sm_dev_annunc_req_hse_repeat_time,
12063 { "HSE Repeat Time", "ff.sm.dev_annunc.req.hse_repeat_time",
12064 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12066 { &hf_ff_sm_dev_annunc_req_lr_port,
12067 { "LAN Redundancy Port", "ff.sm.dev_annunc.req.lr_port",
12068 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12070 { &hf_ff_sm_dev_annunc_req_reserved,
12071 { "Reserved", "ff.sm.dev_annunc.req.reserved",
12072 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12074 { &hf_ff_sm_dev_annunc_req_annunc_ver_num,
12075 { "Annunciation Version Number",
12076 "ff.sm.dev_annunc.req.annunc_ver_num",
12077 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12079 { &hf_ff_sm_dev_annunc_req_hse_dev_ver_num,
12080 { "HSE Device Version Number",
12081 "ff.sm.dev_annunc.req.hse_dev_ver_num",
12082 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12084 { &hf_ff_sm_dev_annunc_req_num_of_entries,
12085 { "Number of Entries in Version Number List",
12086 "ff.sm.dev_annunc.req.num_of_entries",
12087 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12089 { &hf_ff_sm_dev_annunc_req_h1_live_list_h1_link_id,
12090 { "H1 Link Id", "ff.sm.dev_annunc.req.h1_live_list.h1_link_id",
12091 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12093 { &hf_ff_sm_dev_annunc_req_h1_live_list_reserved,
12094 { "Reserved", "ff.sm.dev_annunc.req.h1_live_list.reserved",
12095 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12097 { &hf_ff_sm_dev_annunc_req_h1_live_list_ver_num,
12098 { "Version Number", "ff.sm.dev_annunc.req.h1_live_list.ver_num",
12099 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12101 { &hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_h1_node_addr,
12102 { "H1 Node Address",
12103 "ff.sm.dev_annunc.req.h1_node_addr_ver_num.h1_node_addr",
12104 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12106 { &hf_ff_sm_dev_annunc_req_h1_node_addr_ver_num_ver_num,
12107 { "Version Number",
12108 "ff.sm.dev_annunc.req.h1_node_addr_ver_num.ver_num",
12109 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12111 { &hf_ff_sm_dev_annunc_req_smk_state_name,
12112 { "Name", "ff.sm.dev_annunc.req.smk_state_name",
12113 FT_UINT8, BASE_DEC, VALS(names_smk_state), 0xFE, NULL, HFILL } },
12115 { &hf_ff_sm_dev_annunc_req_smk_state_sync,
12116 { "Synchronized with SNTP Time Server", "ff.sm.dev_annunc.req.smk_state_sync",
12117 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01, NULL, HFILL } },
12119 { &hf_ff_sm_dev_annunc_req_smk_state,
12120 { "SMK State", "ff.sm.dev_annunc.req.smk_state",
12121 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
12123 { &hf_ff_sm_dev_annunc_req_dev_type_link,
12124 { "Linking Device", "ff.sm.dev_annunc.req.dev_type.link",
12125 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x80, NULL, HFILL } },
12127 { &hf_ff_sm_dev_annunc_req_dev_type_iogateway,
12128 { "I/O Gateway", "ff.sm.dev_annunc.req.dev_type.iogateway",
12129 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40, NULL, HFILL } },
12131 { &hf_ff_sm_dev_annunc_req_dev_type_hse,
12132 { "HSE Field Device", "ff.sm.dev_annunc.req.dev_type.hse",
12133 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20, NULL, HFILL } },
12135 { &hf_ff_sm_dev_annunc_req_dev_type_h1,
12136 { "H1 Device", "ff.sm.dev_annunc.req.dev_type.h1",
12137 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10, NULL, HFILL } },
12139 { &hf_ff_sm_dev_annunc_req_dev_type_reserved,
12140 { "Reserved", "ff.sm.dev_annunc.req.dev_type.reserved",
12141 FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL } },
12143 { &hf_ff_sm_dev_annunc_req_dev_type_redundant_caps,
12144 { "Redundant Device Type Capability", "ff.sm.dev_annunc.req.dev_type.redundant_caps",
12145 FT_UINT8, BASE_DEC, VALS(names_dev_type), 0x07, NULL, HFILL } },
12147 { &hf_ff_sm_dev_annunc_req_dev_type,
12148 { "Device Type", "ff.sm.dev_annunc.req.dev_type",
12149 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
12151 { &hf_ff_sm_dev_annunc_req_dev_redundancy_state_reserved,
12152 { "Reserved", "ff.sm.dev_annunc.req_dev_redundancy_state.reserved",
12153 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL } },
12155 { &hf_ff_sm_dev_annunc_req_dev_redundancy_state_role,
12156 { "Type D-2 Device Redundancy Role", "ff.sm.dev_annunc.req_dev_redundancy_state.role",
12157 FT_UINT8, BASE_DEC, VALS(names_type_d2_dev_redundancy_role), 0x0C, NULL, HFILL } },
12159 { &hf_ff_sm_dev_annunc_req_dev_redundancy_state_type,
12160 { "Assigned Device Redundancy Type", "ff.sm.dev_annunc.req_dev_redundancy_state.type",
12161 FT_UINT8, BASE_DEC, VALS(names_assigned_redundant_dev_type), 0x03, NULL, HFILL } },
12163 { &hf_ff_sm_dev_annunc_req_dev_redundancy_state,
12164 { "Device Redundancy State", "ff.sm.dev_annunc.req_dev_redundancy_state",
12165 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
12167 { &hf_ff_sm_dev_annunc_req_dup_detection_state_reserved,
12168 { "Reserved", "ff.sm.dev_annunc.req.dup_detection_state.reserved",
12169 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
12171 { &hf_ff_sm_dev_annunc_req_dup_detection_state_pd_tag,
12172 { "Duplicate PD Tag", "ff.sm.dev_annunc.req.dup_detection_state.pd_tag",
12173 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
12175 { &hf_ff_sm_dev_annunc_req_dup_detection_state_device,
12176 { "Duplicate Device Index", "ff.sm.dev_annunc.req.dup_detection_state.device",
12177 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
12179 { &hf_ff_sm_dev_annunc_req_dup_detection_state,
12180 { "Duplicate Detection State", "ff.sm.dev_annunc.req.dup_detection_state",
12181 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
12185 * 6.5.3. FMS Services
12187 { &hf_ff_fms,
12188 { "FMS Service", "ff.fms",
12189 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12194 * 6.5.3.2. FMS Initiate (Confirmed Service Id = 96)
12196 { &hf_ff_fms_init,
12197 { "FMS Initiate", "ff.fms.init",
12198 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12203 * 6.5.3.2.1. Request Message Parameters
12205 { &hf_ff_fms_init_req,
12206 { "FMS Initiate Request", "ff.fms.init.req",
12207 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12209 { &hf_ff_fms_init_req_conn_opt,
12210 { "Connect Option", "ff.fms.init.req.conn_opt",
12211 FT_UINT8, BASE_DEC, VALS(names_conn_opt), 0x0, NULL, HFILL } },
12213 { &hf_ff_fms_init_req_access_protection_supported_calling,
12214 { "Access Protection Supported Calling",
12215 "ff.fms.init.req.access_protection_supported_calling",
12216 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12218 { &hf_ff_fms_init_req_passwd_and_access_grps_calling,
12219 { "Password and Access Groups Calling",
12220 "ff.fms.init.req.passwd_and_access_grps_calling",
12221 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12223 { &hf_ff_fms_init_req_ver_od_calling,
12224 { "Version OD Calling", "ff.fms.init.req.ver_od_calling",
12225 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12227 { &hf_ff_fms_init_req_prof_num_calling,
12228 { "Profile Number Calling", "ff.fms.init.req.prof_num_calling",
12229 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12231 { &hf_ff_fms_init_req_pd_tag,
12232 { "PD Tag", "ff.fms.init.req.pd_tag",
12233 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12238 * 6.5.3.2.2. Response Message Parameters
12240 { &hf_ff_fms_init_rsp,
12241 { "FMS Initiate Response", "ff.fms.init.rsp",
12242 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12244 { &hf_ff_fms_init_rsp_ver_od_called,
12245 { "Version OD Called", "ff.fms.init.rsp.ver_od_called",
12246 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12248 { &hf_ff_fms_init_rsp_prof_num_called,
12249 { "Profile Number Called", "ff.fms.init.rsp.prof_num_called",
12250 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12255 * 6.5.3.2.3. Error Message Parameters
12257 { &hf_ff_fms_init_err,
12258 { "FMS Initiate Error", "ff.fms.init.err",
12259 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12261 { &hf_ff_fms_init_err_err_class,
12262 { "Error Class", "ff.fms.init.err.err_class",
12263 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12265 { &hf_ff_fms_init_err_err_code,
12266 { "Error Code", "ff.fms.init.err.err_code",
12267 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12269 { &hf_ff_fms_init_err_additional_code,
12270 { "Additional Code", "ff.fms.init.err.additional_code",
12271 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12273 { &hf_ff_fms_init_err_additional_desc,
12274 { "Additional Description", "ff.fms.init.err.additional_desc",
12275 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12280 * 6.5.3.3. FMS Abort (Unconfirmed Service Id = 112)
12282 { &hf_ff_fms_abort,
12283 { "FMS Abort", "ff.fms.abort",
12284 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12289 * 6.5.3.3.1. Request Message Parameters
12291 { &hf_ff_fms_abort_req,
12292 { "FMS Abort Request", "ff.fms.abort.req",
12293 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12295 { &hf_ff_fms_abort_req_detail,
12296 { "Abort Detail", "ff.fms.abort.req.detail",
12297 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12299 { &hf_ff_fms_abort_req_abort_id,
12300 { "Abort Identifier", "ff.fms.abort.req.abort_id",
12301 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12303 { &hf_ff_fms_abort_req_reason_code,
12304 { "Reason Code", "ff.fms.abort.req.reason_code",
12305 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12307 { &hf_ff_fms_abort_req_reserved,
12308 { "Reserved", "ff.fms.abort.req.reserved",
12309 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12314 * 6.5.3.4. FMS Status (Confirmed Service Id = 0)
12316 { &hf_ff_fms_status,
12317 { "FMS Status", "ff.fms.status",
12318 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12323 * 6.5.3.4.1. Request Message Parameters
12325 { &hf_ff_fms_status_req,
12326 { "FMS Status Request", "ff.fms.status.req",
12327 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12332 * 6.5.3.4.2. Response Message Parameters
12334 { &hf_ff_fms_status_rsp,
12335 { "FMS Status Response", "ff.fms.status.rsp",
12336 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12338 { &hf_ff_fms_status_rsp_logical_status,
12339 { "Logical Status", "ff.fms.status.rsp.logical_status",
12340 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12342 { &hf_ff_fms_status_rsp_physical_status,
12343 { "Physical Status", "ff.fms.status.rsp.physical_status",
12344 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12346 { &hf_ff_fms_status_rsp_reserved,
12347 { "Reserved", "ff.fms.status.rsp.reserved",
12348 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12350 { &hf_ff_fms_status_rsp_local_detail,
12351 { "Local Detail", "ff.fms.status.rsp.local_detail",
12352 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
12357 * 6.5.3.4.3. Error Message Parameters
12359 { &hf_ff_fms_status_err,
12360 { "FMS Status Error", "ff.fms.status.err",
12361 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12363 { &hf_ff_fms_status_err_err_class,
12364 { "Error Class", "ff.fms.status.err.err_class",
12365 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12367 { &hf_ff_fms_status_err_err_code,
12368 { "Error Code", "ff.fms.status.err.err_code",
12369 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12371 { &hf_ff_fms_status_err_additional_code,
12372 { "Additional Code", "ff.fms.status.err.additional_code",
12373 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12375 { &hf_ff_fms_status_err_additional_desc,
12376 { "Additional Description", "ff.fms.status.err.additional_desc",
12377 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12382 * 6.5.3.5. FMS Unsolicited Status (Unconfirmed Service Id = 1)
12384 { &hf_ff_fms_unsolicited_status,
12385 { "FMS Unsolicited Status", "ff.fms.unsolicited_status",
12386 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12391 * 6.5.3.5.1. Request Message Parameters
12393 { &hf_ff_fms_unsolicited_status_req,
12394 { "FMS Unsolicited Status Request", "ff.fms.unsolicited_status.req",
12395 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12397 { &hf_ff_fms_unsolicited_status_req_logical_status,
12398 { "Logical Status", "ff.fms.unsolicited_status.req.logical_status",
12399 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12401 { &hf_ff_fms_unsolicited_status_req_physical_status,
12402 { "Physical Status",
12403 "ff.fms.unsolicited_status.req.physical_status",
12404 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12406 { &hf_ff_fms_unsolicited_status_req_reserved,
12407 { "Reserved", "ff.fms.unsolicited_status.req.reserved",
12408 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12410 { &hf_ff_fms_unsolicited_status_req_local_detail,
12411 { "Local Detail", "ff.fms.unsolicited_status.req.local_detail",
12412 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
12417 * 6.5.3.6. FMS Identify (Confirmed Service Id = 1)
12419 { &hf_ff_fms_id,
12420 { "FMS Identify", "ff.fms.id",
12421 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12426 * 6.5.3.6.1. Request Message Parameters
12428 { &hf_ff_fms_id_req,
12429 { "FMS Identify Request", "ff.fms.id.req",
12430 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12435 * 6.5.3.6.2. Response Message Parameters
12437 { &hf_ff_fms_id_rsp,
12438 { "FMS Identify Response", "ff.fms.id.rsp",
12439 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12441 { &hf_ff_fms_id_rsp_vendor_name,
12442 { "Vendor Name", "ff.fms.id.rsp.vendor_name",
12443 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12445 { &hf_ff_fms_id_rsp_model_name,
12446 { "Model Name", "ff.fms.id.rsp.model_name",
12447 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12449 { &hf_ff_fms_id_rsp_revision,
12450 { "Revision", "ff.fms.id.rsp.revision",
12451 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12456 * 6.5.3.6.3. Error Message Parameters
12458 { &hf_ff_fms_id_err,
12459 { "FMS Identify Error", "ff.fms.id.err",
12460 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12462 { &hf_ff_fms_id_err_err_class,
12463 { "Error Class", "ff.fms.id.err.err_class",
12464 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12466 { &hf_ff_fms_id_err_err_code,
12467 { "Error Code", "ff.fms.id.err.err_code",
12468 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12470 { &hf_ff_fms_id_err_additional_code,
12471 { "Additional Code", "ff.fms.id.err.additional_code",
12472 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12474 { &hf_ff_fms_id_err_additional_desc,
12475 { "Additional Description", "ff.fms.id.err.additional_desc",
12476 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12481 * 6.5.3.7. FMS Get OD (Confirmed Service Id = 4)
12483 { &hf_ff_fms_get_od,
12484 { "FMS Get OD", "ff.fms.get_od",
12485 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12490 * 6.5.3.7.1. Request Message Parameters
12492 { &hf_ff_fms_get_od_req,
12493 { "FMS Get OD Request", "ff.fms.get_od.req",
12494 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12496 { &hf_ff_fms_get_od_req_all_attrs,
12497 { "All Attributes", "ff.fms.get_od.req.all_attrs",
12498 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12500 { &hf_ff_fms_get_od_req_start_idx_flag,
12501 { "Start Index Flag", "ff.fms.get_od.req.start_idx_flag",
12502 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12504 { &hf_ff_fms_get_od_req_reserved,
12505 { "Reserved", "ff.fms.get_od.req.reserved",
12506 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12508 { &hf_ff_fms_get_od_req_idx,
12509 { "Index", "ff.fms.get_od.req.idx",
12510 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12515 * 6.5.3.7.2. Response Message Parameters
12517 { &hf_ff_fms_get_od_rsp,
12518 { "FMS Get OD Response", "ff.fms.get_od.rsp",
12519 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12521 { &hf_ff_fms_get_od_rsp_more_follows,
12522 { "More Follows", "ff.fms.get_od.rsp.more_follows",
12523 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12525 { &hf_ff_fms_get_od_rsp_num_of_obj_desc,
12526 { "Number of Object Descriptions",
12527 "ff.fms.get_od.rsp.num_of_obj_desc",
12528 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12530 { &hf_ff_fms_get_od_rsp_reserved,
12531 { "Reserved", "ff.fms.get_od.rsp.reserved",
12532 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12534 { &hf_ff_fms_get_od_rsp_object_descriptions,
12535 { "List of Object Descriptions", "ff.fms.get_od.rsp.object_descriptions",
12536 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12541 * 6.5.3.7.3. Error Message Parameters
12543 { &hf_ff_fms_get_od_err,
12544 { "FMS Get OD Error", "ff.fms.get_od.err",
12545 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12547 { &hf_ff_fms_get_od_err_err_class,
12548 { "Error Class", "ff.fms.get_od.err.err_class",
12549 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12551 { &hf_ff_fms_get_od_err_err_code,
12552 { "Error Code", "ff.fms.get_od.err.err_code",
12553 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12555 { &hf_ff_fms_get_od_err_additional_code,
12556 { "Additional Code", "ff.fms.get_od.err.additional_code",
12557 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12559 { &hf_ff_fms_get_od_err_additional_desc,
12560 { "Additional Description", "ff.fms.get_od.err.additional_desc",
12561 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12566 * 6.5.3.8. FMS Initiate Put OD (Confirmed Service Id = 28)
12568 { &hf_ff_fms_init_put_od,
12569 { "FMS Initiate Put OD", "ff.fms.init_put_od",
12570 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12575 * 6.5.3.8.1. Request Message Parameters
12577 { &hf_ff_fms_init_put_od_req,
12578 { "FMS Initiate Put OD Request", "ff.fms.init_put_od.req",
12579 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12581 { &hf_ff_fms_init_put_od_req_reserved,
12582 { "Reserved", "ff.fms.init_put_od.req.reserved",
12583 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12585 { &hf_ff_fms_init_put_od_req_consequence,
12586 { "Consequence", "ff.fms.init_put_od.req.consequence",
12587 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12592 * 6.5.3.8.2. Response Message Parameters
12594 { &hf_ff_fms_init_put_od_rsp,
12595 { "FMS Initiate Put OD Response", "ff.fms.init_put_od.rsp",
12596 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12601 * 6.5.3.8.3. Error Message Parameters
12603 { &hf_ff_fms_init_put_od_err,
12604 { "FMS Initiate Put OD Error", "ff.fms.init_put_od.err",
12605 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12607 { &hf_ff_fms_init_put_od_err_err_class,
12608 { "Error Class", "ff.fms.init_put_od.err.err_class",
12609 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12611 { &hf_ff_fms_init_put_od_err_err_code,
12612 { "Error Code", "ff.fms.init_put_od.err.err_code",
12613 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12615 { &hf_ff_fms_init_put_od_err_additional_code,
12616 { "Additional Code", "ff.fms.init_put_od.err.additional_code",
12617 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12619 { &hf_ff_fms_init_put_od_err_additional_desc,
12620 { "Additional Description",
12621 "ff.fms.init_put_od.err.additional_desc",
12622 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12627 * 6.5.3.9. FMS Put OD (Confirmed Service Id = 29)
12629 { &hf_ff_fms_put_od,
12630 { "FMS Put OD", "ff.fms.put_od",
12631 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12636 * 6.5.3.9.1. Request Message Parameters
12638 { &hf_ff_fms_put_od_req,
12639 { "FMS Put OD Request", "ff.fms.put_od.req",
12640 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12642 { &hf_ff_fms_put_od_req_num_of_obj_desc,
12643 { "Number of Object Descriptions",
12644 "ff.fms.put_od.req.num_of_obj_desc",
12645 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12647 { &hf_ff_fms_put_od_req_object_descriptions,
12648 { "List of Object Descriptions", "ff.fms.put_od.req.object_descriptions",
12649 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12653 * 6.5.3.9.2. Response Message Parameters
12655 { &hf_ff_fms_put_od_rsp,
12656 { "FMS Put OD Response", "ff.fms.put_od.rsp",
12657 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12662 * 6.5.3.9.3. Error Message Parameters
12664 { &hf_ff_fms_put_od_err,
12665 { "FMS Put OD Error", "ff.fms.put_od.err",
12666 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12668 { &hf_ff_fms_put_od_err_err_class,
12669 { "Error Class", "ff.fms.put_od.err.err_class",
12670 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12672 { &hf_ff_fms_put_od_err_err_code,
12673 { "Error Code", "ff.fms.put_od.err.err_code",
12674 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12676 { &hf_ff_fms_put_od_err_additional_code,
12677 { "Additional Code", "ff.fms.put_od.err.additional_code",
12678 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12680 { &hf_ff_fms_put_od_err_additional_desc,
12681 { "Additional Description", "ff.fms.put_od.err.additional_desc",
12682 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12687 * 6.5.3.10. FMS Terminate Put OD (Confirmed Service Id = 30)
12689 { &hf_ff_fms_terminate_put_od,
12690 { "FMS Terminate Put OD", "ff.fms.terminate_put_od",
12691 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12696 * 6.5.3.10.1. Request Message Parameters
12698 { &hf_ff_fms_terminate_put_od_req,
12699 { "FMS Terminate Put OD Request", "ff.fms.terminate_put_od.req",
12700 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12705 * 6.5.3.10.2. Response Message Parameters
12707 { &hf_ff_fms_terminate_put_od_rsp,
12708 { "FMS Terminate Put OD Response", "ff.fms.terminate_put_od.rsp",
12709 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12714 * 6.5.3.10.3. Error Message Parameters
12716 { &hf_ff_fms_terminate_put_od_err,
12717 { "FMS Terminate Put OD Error", "ff.fms.terminate_put_od.err",
12718 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12720 { &hf_ff_fms_terminate_put_od_err_index,
12721 { "Index", "ff.fms.terminate_put_od.err.index",
12722 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12724 { &hf_ff_fms_terminate_put_od_err_err_class,
12725 { "Error Class", "ff.fms.terminate_put_od.err.err_class",
12726 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12728 { &hf_ff_fms_terminate_put_od_err_err_code,
12729 { "Error Code", "ff.fms.terminate_put_od.err.err_code",
12730 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12732 { &hf_ff_fms_terminate_put_od_err_additional_code,
12733 { "Additional Code", "ff.fms.terminate_put_od.err.additional_code",
12734 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12736 { &hf_ff_fms_terminate_put_od_err_additional_desc,
12737 { "Additional Description",
12738 "ff.fms.terminate_put_od.err.additional_desc",
12739 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12744 * 6.5.3.11. FMS Generic Initiate Download Sequence
12745 * (Confirmed Service Id = 31)
12747 { &hf_ff_fms_gen_init_download_seq,
12748 { "FMS Generic Initiate Download Sequence",
12749 "ff.fms.gen_init_download_seq",
12750 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12755 * 6.5.3.11.1. Request Message Parameters
12757 { &hf_ff_fms_gen_init_download_seq_req,
12758 { "FMS Generic Initiate Download Sequence Request",
12759 "ff.fms.gen_init_download_seq.req",
12760 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12762 { &hf_ff_fms_gen_init_download_seq_req_idx,
12763 { "Index",
12764 "ff.fms.gen_init_download_seq.req.idx",
12765 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12770 * 6.5.3.11.2. Response Message Parameters
12772 { &hf_ff_fms_gen_init_download_seq_rsp,
12773 { "FMS Generic Initiate Download Sequence Response",
12774 "ff.fms.gen_init_download_seq.rsp",
12775 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12780 * 6.5.3.11.3. Error Message Parameters
12782 { &hf_ff_fms_gen_init_download_seq_err,
12783 { "FMS Generic Initiate Download Sequence Error",
12784 "ff.fms.gen_init_download_seq.err",
12785 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12787 { &hf_ff_fms_gen_init_download_seq_err_err_class,
12788 { "Error Class", "ff.fms.gen_init_download_seq.err.err_class",
12789 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12791 { &hf_ff_fms_gen_init_download_seq_err_err_code,
12792 { "Error Code", "ff.fms.gen_init_download_seq.err.err_code",
12793 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12795 { &hf_ff_fms_gen_init_download_seq_err_additional_code,
12796 { "Additional Code",
12797 "ff.fms.gen_init_download_seq.err.additional_code",
12798 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12800 { &hf_ff_fms_gen_init_download_seq_err_additional_desc,
12801 { "Additional Description",
12802 "ff.fms.gen_init_download_seq.err.additional_desc",
12803 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12808 * 6.5.3.12. FMS Generic Download Segment (Confirmed Service Id = 32)
12810 { &hf_ff_fms_gen_download_seg,
12811 { "FMS Generic Download Segment", "ff.fms.gen_download_seg",
12812 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12817 * 6.5.3.12.1. Request Message Parameters
12819 { &hf_ff_fms_gen_download_seg_req,
12820 { "FMS Generic Download Segment Request",
12821 "ff.fms.gen_download_seg.req",
12822 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12824 { &hf_ff_fms_gen_download_seg_req_idx,
12825 { "Index", "ff.fms.gen_download_seg.req.idx",
12826 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12828 { &hf_ff_fms_gen_download_seg_req_more_follows,
12829 { "More Follows", "ff.fms.gen_download_seg.req.more_follows",
12830 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12832 { &hf_ff_fms_gen_download_seg_req_load_data,
12833 { "Load Data", "ff.fms.gen_download_seg.req.load_data",
12834 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12838 * 6.5.3.12.2. Response Message Parameters
12840 { &hf_ff_fms_gen_download_seg_rsp,
12841 { "FMS Generic Download Segment Response",
12842 "ff.fms.gen_download_seg.rsp",
12843 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12848 * 6.5.3.12.3. Error Message Parameters
12850 { &hf_ff_fms_gen_download_seg_err,
12851 { "FMS Generic Download Segment Error",
12852 "ff.fms.gen_download_seg.err",
12853 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12855 { &hf_ff_fms_gen_download_seg_err_err_class,
12856 { "Error Class", "ff.fms.gen_download_seg.err.err_class",
12857 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12859 { &hf_ff_fms_gen_download_seg_err_err_code,
12860 { "Error Code", "ff.fms.gen_download_seg.err.err_code",
12861 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12863 { &hf_ff_fms_gen_download_seg_err_additional_code,
12864 { "Additional Code", "ff.fms.gen_download_seg.err.additional_code",
12865 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12867 { &hf_ff_fms_gen_download_seg_err_additional_desc,
12868 { "Additional Description",
12869 "ff.fms.gen_download_seg.err.additional_desc",
12870 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12875 * 6.5.3.13. FMS Generic Terminate Download Sequence
12876 * (Confirmed Service Id = 33)
12878 { &hf_ff_fms_gen_terminate_download_seq,
12879 { "FMS Generic Terminate Download Sequence",
12880 "ff.fms.gen_terminate_download_seq",
12881 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12886 * 6.5.3.13.1. Request Message Parameters
12888 { &hf_ff_fms_gen_terminate_download_seq_req,
12889 { "FMS Generic Terminate Download Sequence Request",
12890 "ff.fms.gen_terminate_download_seq.req",
12891 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12893 { &hf_ff_fms_gen_terminate_download_seq_req_idx,
12894 { "Index", "ff.fms.gen_terminate_download_seq.req.idx",
12895 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12900 * 6.5.3.13.2. Response Message Parameters
12902 { &hf_ff_fms_gen_terminate_download_seq_rsp,
12903 { "FMS Generic Terminate Download Sequence Response",
12904 "ff.fms.gen_terminate_download_seq.rsp",
12905 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12907 { &hf_ff_fms_gen_terminate_download_seq_rsp_final_result,
12908 { "Final Result",
12909 "ff.fms.gen_terminate_download_seq.rsp.final_result",
12910 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12915 * 6.5.3.13.3. Error Message Parameters
12917 { &hf_ff_fms_gen_terminate_download_seq_err,
12918 { "FMS Generic Terminate Download Sequence Error",
12919 "ff.fms.gen_terminate_download_seq.err",
12920 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12922 { &hf_ff_fms_gen_terminate_download_seq_err_err_class,
12923 { "Error Class", "ff.fms.gen_terminate_download_seq.err.err_class",
12924 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12926 { &hf_ff_fms_gen_terminate_download_seq_err_err_code,
12927 { "Error Code", "ff.fms.gen_terminate_download_seq.err.err_code",
12928 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12930 { &hf_ff_fms_gen_terminate_download_seq_err_additional_code,
12931 { "Additional Code",
12932 "ff.fms.gen_terminate_download_seq.err.additional_code",
12933 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12935 { &hf_ff_fms_gen_terminate_download_seq_err_additional_desc,
12936 { "Additional Description",
12937 "ff.fms.gen_terminate_download_seq.err.additional_desc",
12938 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12943 * 6.5.3.14. FMS Initiate Download Sequence (Confirmed Service Id = 9)
12945 { &hf_ff_fms_init_download_seq,
12946 { "FMS Initiate Download Sequence",
12947 "ff.fms.init_download_seq",
12948 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12953 * 6.5.3.14.1. Request Message Parameters
12955 { &hf_ff_fms_init_download_seq_req,
12956 { "FMS Initiate Download Sequence Request",
12957 "ff.fms.init_download_seq.req",
12958 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12960 { &hf_ff_fms_init_download_seq_req_idx,
12961 { "Index", "ff.fms.init_download_seq.req.idx",
12962 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12967 * 6.5.3.14.2. Response Message Parameters
12969 { &hf_ff_fms_init_download_seq_rsp,
12970 { "FMS Initiate Download Sequence Response",
12971 "ff.fms.init_download_seq.rsp",
12972 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12977 * 6.5.3.14.3. Error Message Parameters
12979 { &hf_ff_fms_init_download_seq_err,
12980 { "FMS Initiate Download Sequence Error",
12981 "ff.fms.init_download_seq.err",
12982 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
12984 { &hf_ff_fms_init_download_seq_err_err_class,
12985 { "Error Class", "ff.fms.init_download_seq.err.err_class",
12986 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
12988 { &hf_ff_fms_init_download_seq_err_err_code,
12989 { "Error Code", "ff.fms.init_download_seq.err.err_code",
12990 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12992 { &hf_ff_fms_init_download_seq_err_additional_code,
12993 { "Additional Code", "ff.fms.init_download_seq.err.additional_code",
12994 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
12996 { &hf_ff_fms_init_download_seq_err_additional_desc,
12997 { "Additional Description",
12998 "ff.fms.init_download_seq.err.additional_desc",
12999 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13004 * 6.5.3.15. FMS Download Segment (Confirmed Service Id = 10)
13006 { &hf_ff_fms_download_seg,
13007 { "FMS Download Segment", "ff.fms.download_seg",
13008 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13013 * 6.5.3.15.1. Request Message Parameters
13015 { &hf_ff_fms_download_seg_req,
13016 { "FMS Download Segment Request", "ff.fms.download_seg.req",
13017 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13019 { &hf_ff_fms_download_seg_req_idx,
13020 { "Index", "ff.fms.download_seg.req.idx",
13021 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13026 * 6.5.3.15.2. Response Message Parameters
13028 { &hf_ff_fms_download_seg_rsp,
13029 { "FMS Download Segment Response", "ff.fms.download_seg.rsp",
13030 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13032 { &hf_ff_fms_download_seg_rsp_more_follows,
13033 { "Final Result", "ff.fms.download_seg.rsp.more_follows",
13034 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13036 { &hf_ff_fms_download_seg_rsp_load_data,
13037 { "Load Data", "ff.fms.download_seg.rsp.load_data",
13038 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13042 * 6.5.3.15.3. Error Message Parameters
13044 { &hf_ff_fms_download_seg_err,
13045 { "FMS Download Segment Error", "ff.fms.download_seg.err",
13046 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13048 { &hf_ff_fms_download_seg_err_err_class,
13049 { "Error Class", "ff.fms.download_seg.err.err_class",
13050 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13052 { &hf_ff_fms_download_seg_err_err_code,
13053 { "Error Code", "ff.fms.download_seg.err.err_code",
13054 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13056 { &hf_ff_fms_download_seg_err_additional_code,
13057 { "Additional Code", "ff.fms.download_seg.err.additional_code",
13058 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13060 { &hf_ff_fms_download_seg_err_additional_desc,
13061 { "Additional Description",
13062 "ff.fms.download_seg.err.additional_desc",
13063 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13068 * 6.5.3.16. FMS Terminate Download Sequence (Confirmed Service Id = 11)
13070 { &hf_ff_fms_terminate_download_seq,
13071 { "FMS Terminate Download Sequence",
13072 "ff.fms.terminate_download_seq",
13073 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13078 * 6.5.3.16.1. Request Message Parameters
13080 { &hf_ff_fms_terminate_download_seq_req,
13081 { "FMS Terminate Download Sequence Request",
13082 "ff.fms.terminate_download_seq.req",
13083 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13085 { &hf_ff_fms_terminate_download_seq_req_idx,
13086 { "Index", "ff.fms.terminate_download_seq.req.idx",
13087 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13089 { &hf_ff_fms_terminate_download_seq_req_final_result,
13090 { "Final Result", "ff.fms.terminate_download_seq.req.final_result",
13091 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13096 * 6.5.3.16.2. Response Message Parameters
13098 { &hf_ff_fms_terminate_download_seq_rsp,
13099 { "FMS Terminate Download Sequence Response",
13100 "ff.fms.terminate_download_seq.rsp",
13101 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13106 * 6.5.3.16.3. Error Message Parameters
13108 { &hf_ff_fms_terminate_download_seq_err,
13109 { "FMS Terminate Download Sequence Error",
13110 "ff.fms.terminate_download_seq.err",
13111 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13113 { &hf_ff_fms_terminate_download_seq_err_err_class,
13114 { "Error Class", "ff.fms.terminate_download_seq.err.err_class",
13115 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13117 { &hf_ff_fms_terminate_download_seq_err_err_code,
13118 { "Error Code", "ff.fms.terminate_download_seq.err.err_code",
13119 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13121 { &hf_ff_fms_terminate_download_seq_err_additional_code,
13122 { "Additional Code",
13123 "ff.fms.terminate_download_seq.err.additional_code",
13124 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13126 { &hf_ff_fms_terminate_download_seq_err_additional_desc,
13127 { "Additional Description",
13128 "ff.fms.terminate_download_seq.err.additional_desc",
13129 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13134 * 6.5.3.17. FMS Initiate Upload Sequence (Confirmed Service Id = 12)
13136 { &hf_ff_fms_init_upload_seq,
13137 { "FMS Initiate Upload Sequence", "ff.fms.init_upload_seq",
13138 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13143 * 6.5.3.17.1. Request Message Parameters
13145 { &hf_ff_fms_init_upload_seq_req,
13146 { "FMS Initiate Upload Sequence Request",
13147 "ff.fms.init_upload_seq.req",
13148 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13150 { &hf_ff_fms_init_upload_seq_req_idx,
13151 { "Index", "ff.fms.init_upload_seq.req.idx",
13152 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13157 * 6.5.3.17.2. Response Message Parameters
13159 { &hf_ff_fms_init_upload_seq_rsp,
13160 { "FMS Initiate Upload Sequence Response",
13161 "ff.fms.init_upload_seq.rsp",
13162 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13167 * 6.5.3.17.3. Error Message Parameters
13169 { &hf_ff_fms_init_upload_seq_err,
13170 { "FMS Initiate Upload Sequence Error",
13171 "ff.fms.init_upload_seq.err",
13172 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13174 { &hf_ff_fms_init_upload_seq_err_err_class,
13175 { "Error Class", "ff.fms.init_upload_seq.err.err_class",
13176 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13178 { &hf_ff_fms_init_upload_seq_err_err_code,
13179 { "Error Code", "ff.fms.init_upload_seq.err.err_code",
13180 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13182 { &hf_ff_fms_init_upload_seq_err_additional_code,
13183 { "Additional Code", "ff.fms.init_upload_seq.err.additional_code",
13184 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13186 { &hf_ff_fms_init_upload_seq_err_additional_desc,
13187 { "Additional Description",
13188 "ff.fms.init_upload_seq.err.additional_desc",
13189 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13194 * 6.5.3.18. FMS Upload Segment (Confirmed Service Id = 13)
13196 { &hf_ff_fms_upload_seg,
13197 { "FMS Upload Segment", "ff.fms.upload_seg",
13198 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13203 * 6.5.3.18.1. Request Message Parameters
13205 { &hf_ff_fms_upload_seg_req,
13206 { "FMS Upload Segment Request", "ff.fms.upload_seg.req",
13207 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13209 { &hf_ff_fms_upload_seg_req_idx,
13210 { "Index", "ff.fms.upload_seg.req.idx",
13211 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13216 * 6.5.3.18.2. Response Message Parameters
13218 { &hf_ff_fms_upload_seg_rsp,
13219 { "FMS Upload Segment Response", "ff.fms.upload_seg.rsp",
13220 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13222 { &hf_ff_fms_upload_seg_rsp_more_follows,
13223 { "More Follows", "ff.fms.upload_seg.rsp.more_follows",
13224 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13226 { &hf_ff_fms_upload_seg_rsp_final_result,
13227 { "Final Result", "ff.fms.upload_seg.rsp.final_result",
13228 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13232 * 6.5.3.18.3. Error Message Parameters
13234 { &hf_ff_fms_upload_seg_err,
13235 { "FMS Upload Segment Error", "ff.fms.upload_seg.err",
13236 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13238 { &hf_ff_fms_upload_seg_err_err_class,
13239 { "Error Class", "ff.fms.upload_seg.err.err_class",
13240 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13242 { &hf_ff_fms_upload_seg_err_err_code,
13243 { "Error Code", "ff.fms.upload_seg.err.err_code",
13244 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13246 { &hf_ff_fms_upload_seg_err_additional_code,
13247 { "Additional Code", "ff.fms.upload_seg.err.additional_code",
13248 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13250 { &hf_ff_fms_upload_seg_err_additional_desc,
13251 { "Additional Description", "ff.fms.upload_seg.err.additional_desc",
13252 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13257 * 6.5.3.19. FMS Terminate Upload Sequence (Confirmed Service Id = 14)
13259 { &hf_ff_fms_terminate_upload_seq,
13260 { "FMS Terminate Upload Sequence",
13261 "ff.fms.terminate_upload_seq",
13262 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13267 * 6.5.3.19.1. Request Message Parameters
13269 { &hf_ff_fms_terminate_upload_seq_req,
13270 { "FMS Terminate Upload Sequence Request",
13271 "ff.fms.terminate_upload_seq.req",
13272 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13274 { &hf_ff_fms_terminate_upload_seq_req_idx,
13275 { "Index", "ff.fms.terminate_upload_seq.req.idx",
13276 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13281 * 6.5.3.19.2. Response Message Parameters
13283 { &hf_ff_fms_terminate_upload_seq_rsp,
13284 { "FMS Terminate Upload Sequence Response",
13285 "ff.fms.terminate_upload_seq.rsp",
13286 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13291 * 6.5.3.19.3. Error Message Parameters
13293 { &hf_ff_fms_terminate_upload_seq_err,
13294 { "FMS Terminate Upload Sequence Error",
13295 "ff.fms.terminate_upload_seq.err",
13296 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13298 { &hf_ff_fms_terminate_upload_seq_err_err_class,
13299 { "Error Class", "ff.fms.terminate_upload_seq.err.err_class",
13300 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13302 { &hf_ff_fms_terminate_upload_seq_err_err_code,
13303 { "Error Code", "ff.fms.terminate_upload_seq.err.err_code",
13304 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13306 { &hf_ff_fms_terminate_upload_seq_err_additional_code,
13307 { "Additional Code",
13308 "ff.fms.terminate_upload_seq.err.additional_code",
13309 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13311 { &hf_ff_fms_terminate_upload_seq_err_additional_desc,
13312 { "Additional Description",
13313 "ff.fms.terminate_upload_seq.err.additional_desc",
13314 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13319 * 6.5.3.20. FMS Request Domain Download (Confirmed Service Id = 15)
13321 { &hf_ff_fms_req_dom_download,
13322 { "FMS Request Domain Download", "ff.fms.req_dom_download",
13323 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13328 * 6.5.3.20.1. Request Message Parameters
13330 { &hf_ff_fms_req_dom_download_req,
13331 { "FMS Request Domain Download Request",
13332 "ff.fms.req_dom_download.req",
13333 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13335 { &hf_ff_fms_req_dom_download_req_idx,
13336 { "Index", "ff.fms.req_dom_download.req.idx",
13337 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13339 { &hf_ff_fms_req_dom_download_req_additional_info,
13340 { "Additional Description",
13341 "ff.fms.req_dom_download.req.additional_info",
13342 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13347 * 6.5.3.20.2. Response Message Parameters
13349 { &hf_ff_fms_req_dom_download_rsp,
13350 { "FMS Request Domain Download Response",
13351 "ff.fms.req_dom_download.rsp",
13352 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13355 * 6.5.3.20.3. Error Message Parameters
13357 { &hf_ff_fms_req_dom_download_err,
13358 { "FMS Request Domain Download Error",
13359 "ff.fms.req_dom_download.err",
13360 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13362 { &hf_ff_fms_req_dom_download_err_err_class,
13363 { "Error Class", "ff.fms.req_dom_download.err.err_class",
13364 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13366 { &hf_ff_fms_req_dom_download_err_err_code,
13367 { "Error Code", "ff.fms.req_dom_download.err.err_code",
13368 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13370 { &hf_ff_fms_req_dom_download_err_additional_code,
13371 { "Additional Code", "ff.fms.req_dom_download.err.additional_code",
13372 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13374 { &hf_ff_fms_req_dom_download_err_additional_desc,
13375 { "Additional Description",
13376 "ff.fms.req_dom_download.err.additional_desc",
13377 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13382 * 6.5.3.21. FMS Request Domain Upload (Confirmed Service Id = 16)
13384 { &hf_ff_fms_req_dom_upload,
13385 { "FMS Request Domain Upload", "ff.fms.req_dom_upload",
13386 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13391 * 6.5.3.21.1. Request Message Parameters
13393 { &hf_ff_fms_req_dom_upload_req,
13394 { "FMS Request Domain Upload Request", "ff.fms.req_dom_upload.req",
13395 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13397 { &hf_ff_fms_req_dom_upload_req_idx,
13398 { "Index", "ff.fms.req_dom_upload.req.idx",
13399 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13401 { &hf_ff_fms_req_dom_upload_req_additional_info,
13402 { "Additional Description",
13403 "ff.fms.req_dom_upload.req.additional_info",
13404 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13409 * 6.5.3.21.2. Response Message Parameters
13411 { &hf_ff_fms_req_dom_upload_rsp,
13412 { "FMS Request Domain Upload Response", "ff.fms.req_dom_upload.rsp",
13413 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13418 * 6.5.3.21.3. Error Message Parameters
13420 { &hf_ff_fms_req_dom_upload_err,
13421 { "FMS Request Domain Upload Error", "ff.fms.req_dom_upload.err",
13422 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13424 { &hf_ff_fms_req_dom_upload_err_err_class,
13425 { "Error Class", "ff.fms.req_dom_upload.err.err_class",
13426 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13428 { &hf_ff_fms_req_dom_upload_err_err_code,
13429 { "Error Code", "ff.fms.req_dom_upload.err.err_code",
13430 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13432 { &hf_ff_fms_req_dom_upload_err_additional_code,
13433 { "Additional Code", "ff.fms.req_dom_upload.err.additional_code",
13434 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13436 { &hf_ff_fms_req_dom_upload_err_additional_desc,
13437 { "Additional Description",
13438 "ff.fms.req_dom_upload.err.additional_desc",
13439 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13444 * 6.5.3.22. FMS Create Program Invocation (Confirmed Service Id = 17)
13446 { &hf_ff_fms_create_pi,
13447 { "FMS Create Program Invocation", "ff.fms.create_pi",
13448 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13453 * 6.5.3.22.1. Request Message Parameters
13455 { &hf_ff_fms_create_pi_req,
13456 { "FMS Create Program Invocation Request", "ff.fms.create_pi.req",
13457 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13459 { &hf_ff_fms_create_pi_req_reusable,
13460 { "Reusable", "ff.fms.create_pi.req.reusable",
13461 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13463 { &hf_ff_fms_create_pi_req_reserved,
13464 { "Reserved", "ff.fms.create_pi.req.reserved",
13465 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13467 { &hf_ff_fms_create_pi_req_num_of_dom_idxes,
13468 { "Number of Domain Indexes",
13469 "ff.fms.create_pi.req.num_of_dom_idxes",
13470 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13472 { &hf_ff_fms_create_pi_req_dom_idx,
13473 { "Domain Index", "ff.fms.create_pi.req.list_of_dom_idxes.dom_idx",
13474 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13479 * 6.5.3.22.2. Response Message Parameters
13481 { &hf_ff_fms_create_pi_rsp,
13482 { "FMS Create Program Invocation Response", "ff.fms.create_pi.rsp",
13483 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13485 { &hf_ff_fms_create_pi_rsp_idx,
13486 { "Index", "ff.fms.create_pi.rsp.idx",
13487 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13492 * 6.5.3.22.3. Error Message Parameters
13494 { &hf_ff_fms_create_pi_err,
13495 { "FMS Create Program Invocation Error", "ff.fms.create_pi.err",
13496 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13498 { &hf_ff_fms_create_pi_err_err_class,
13499 { "Error Class", "ff.fms.create_pi.err.err_class",
13500 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13502 { &hf_ff_fms_create_pi_err_err_code,
13503 { "Error Code", "ff.fms.create_pi.err.err_code",
13504 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13506 { &hf_ff_fms_create_pi_err_additional_code,
13507 { "Additional Code",
13508 "ff.fms.create_pi.err.additional_code",
13509 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13511 { &hf_ff_fms_create_pi_err_additional_desc,
13512 { "Additional Description",
13513 "ff.fms.create_pi.err.additional_desc",
13514 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13519 * 6.5.3.23. FMS Delete Program Invocation (Confirmed Service Id = 18)
13521 { &hf_ff_fms_del_pi ,
13522 { "FMS Delete Program Invocation", "ff.fms.del_pi",
13523 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13528 * 6.5.3.23.1. Request Message Parameters
13530 { &hf_ff_fms_del_pi_req,
13531 { "FMS Delete Program Invocation Request", "ff.fms.del_pi.req",
13532 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13534 { &hf_ff_fms_del_pi_req_idx,
13535 { "Index", "ff.fms.del_pi.req.idx",
13536 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13541 * 6.5.3.23.2. Response Message Parameters
13543 { &hf_ff_fms_del_pi_rsp,
13544 { "FMS Delete Program Invocation Response", "ff.fms.del_pi.rsp",
13545 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13550 * 6.5.3.23.3. Error Message Parameters
13552 { &hf_ff_fms_del_pi_err,
13553 { "FMS Delete Program Invocation Error", "ff.fms.del_pi.err",
13554 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13556 { &hf_ff_fms_del_pi_err_err_class,
13557 { "Error Class", "ff.fms.del_pi.err.err_class",
13558 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13560 { &hf_ff_fms_del_pi_err_err_code,
13561 { "Error Code", "ff.fms.del_pi.err.err_code",
13562 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13564 { &hf_ff_fms_del_pi_err_additional_code,
13565 { "Additional Code",
13566 "ff.fms.del_pi.err.additional_code",
13567 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13569 { &hf_ff_fms_del_pi_err_additional_desc,
13570 { "Additional Description",
13571 "ff.fms.del_pi.err.additional_desc",
13572 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13577 * 6.5.3.24. FMS Start (Confirmed Service Id = 19)
13579 { &hf_ff_fms_start,
13580 { "FMS Start", "ff.fms.start",
13581 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13586 * 6.5.3.24.1. Request Message Parameters
13588 { &hf_ff_fms_start_req,
13589 { "FMS Start Request", "ff.fms.start.req",
13590 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13592 { &hf_ff_fms_start_req_idx,
13593 { "Index", "ff.fms.start.req.idx",
13594 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13596 { &hf_ff_fms_start_req_execution_argument,
13597 { "Execution Argument", "ff.fms.start.req.execution_argument",
13598 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13602 * 6.5.3.24.2. Response Message Parameters
13604 { &hf_ff_fms_start_rsp,
13605 { "FMS Start Response", "ff.fms.start.rsp",
13606 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13611 * 6.5.3.24.3. PI Error Message Parameters
13613 { &hf_ff_fms_start_err,
13614 { "FMS Start Error", "ff.fms.start.err",
13615 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13617 { &hf_ff_fms_start_err_pi_state,
13618 { "Pi State", "ff.fms.start.err.pi_state",
13619 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13621 { &hf_ff_fms_start_err_err_class,
13622 { "Error Class", "ff.fms.start.err.err_class",
13623 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13625 { &hf_ff_fms_start_err_err_code,
13626 { "Error Code", "ff.fms.start.err.err_code",
13627 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13629 { &hf_ff_fms_start_err_additional_code,
13630 { "Additional Code", "ff.fms.start.err.additional_code",
13631 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13633 { &hf_ff_fms_start_err_additional_desc,
13634 { "Additional Description", "ff.fms.start.err.additional_desc",
13635 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13640 * 6.5.3.25. FMS Stop (Confirmed Service Id = 20)
13642 { &hf_ff_fms_stop,
13643 { "FMS Stop", "ff.fms.stop",
13644 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13649 * 6.5.3.25.1. Request Message Parameters
13651 { &hf_ff_fms_stop_req,
13652 { "FMS Stop Request", "ff.fms.stop.req",
13653 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13655 { &hf_ff_fms_stop_req_idx,
13656 { "Index", "ff.fms.stop.req.idx",
13657 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13662 * 6.5.3.25.2. Response Message Parameters
13664 { &hf_ff_fms_stop_rsp,
13665 { "FMS Stop Response", "ff.fms.stop.rsp",
13666 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13671 * 6.5.3.25.3. Error Message Parameters
13673 { &hf_ff_fms_stop_err,
13674 { "FMS Stop Error", "ff.fms.stop.err",
13675 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13677 { &hf_ff_fms_stop_err_pi_state,
13678 { "Pi State", "ff.fms.stop.err.pi_state",
13679 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13681 { &hf_ff_fms_stop_err_err_class,
13682 { "Error Class", "ff.fms.stop.err.err_class",
13683 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13685 { &hf_ff_fms_stop_err_err_code,
13686 { "Error Code", "ff.fms.stop.err.err_code",
13687 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13689 { &hf_ff_fms_stop_err_additional_code,
13690 { "Additional Code", "ff.fms.stop.err.additional_code",
13691 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13693 { &hf_ff_fms_stop_err_additional_desc,
13694 { "Additional Description", "ff.fms.stop.err.additional_desc",
13695 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13700 * 6.5.3.26. FMS Resume (Confirmed Service Id = 21)
13702 { &hf_ff_fms_resume,
13703 { "FMS Resume", "ff.fms.resume",
13704 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13709 * 6.5.3.26.1. Request Message Parameters
13711 { &hf_ff_fms_resume_req,
13712 { "FMS Resume Request", "ff.fms.resume.req",
13713 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13715 { &hf_ff_fms_resume_req_idx,
13716 { "Index", "ff.fms.resume.req.idx",
13717 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13719 { &hf_ff_fms_resume_req_execution_argument,
13720 { "Execution Argument", "ff.fms.resume.req.execution_argument",
13721 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13725 * 6.5.3.26.2. Response Message Parameters
13727 { &hf_ff_fms_resume_rsp,
13728 { "FMS Resume Response", "ff.fms.resume.rsp",
13729 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13734 * 6.5.3.26.3. Error Message Parameters
13736 { &hf_ff_fms_resume_err,
13737 { "FMS Resume Error", "ff.fms.resume.err",
13738 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13740 { &hf_ff_fms_resume_err_pi_state,
13741 { "Pi State", "ff.fms.resume.err.pi_state",
13742 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13744 { &hf_ff_fms_resume_err_err_class,
13745 { "Error Class", "ff.fms.resume.err.err_class",
13746 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13748 { &hf_ff_fms_resume_err_err_code,
13749 { "Error Code", "ff.fms.resume.err.err_code",
13750 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13752 { &hf_ff_fms_resume_err_additional_code,
13753 { "Additional Code", "ff.fms.resume.err.additional_code",
13754 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13756 { &hf_ff_fms_resume_err_additional_desc,
13757 { "Additional Description", "ff.fms.resume.err.additional_desc",
13758 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13763 * 6.5.3.27. FMS Reset (Confirmed Service Id = 22)
13765 { &hf_ff_fms_reset,
13766 { "FMS Reset", "ff.fms.reset",
13767 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13772 * 6.5.3.27.1. Request Message Parameters
13774 { &hf_ff_fms_reset_req,
13775 { "FMS Reset Request", "ff.fms.reset.req",
13776 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13778 { &hf_ff_fms_reset_req_idx,
13779 { "Index", "ff.fms.reset.req.idx",
13780 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13785 * 6.5.3.27.2. Response Message Parameters
13787 { &hf_ff_fms_reset_rsp,
13788 { "FMS Reset Response", "ff.fms.reset.rsp",
13789 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13794 * 6.5.3.27.3. Error Message Parameters
13796 { &hf_ff_fms_reset_err,
13797 { "FMS Reset Error", "ff.fms.reset.err",
13798 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13800 { &hf_ff_fms_reset_err_pi_state,
13801 { "Pi State", "ff.fms.reset.err.pi_state",
13802 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13804 { &hf_ff_fms_reset_err_err_class,
13805 { "Error Class", "ff.fms.reset.err.err_class",
13806 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13808 { &hf_ff_fms_reset_err_err_code,
13809 { "Error Code", "ff.fms.reset.err.err_code",
13810 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13812 { &hf_ff_fms_reset_err_additional_code,
13813 { "Additional Code", "ff.fms.reset.err.additional_code",
13814 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13816 { &hf_ff_fms_reset_err_additional_desc,
13817 { "Additional Description", "ff.fms.reset.err.additional_desc",
13818 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13823 * 6.5.3.28. FMS Kill (Confirmed Service Id = 23)
13825 { &hf_ff_fms_kill,
13826 { "FMS Kill", "ff.fms.kill",
13827 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13832 * 6.5.3.28.1. Request Message Parameters
13834 { &hf_ff_fms_kill_req,
13835 { "FMS Kill Request", "ff.fms.kill.req",
13836 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13841 * 6.5.3.28.2. Response Message Parameters
13843 { &hf_ff_fms_kill_rsp,
13844 { "FMS Kill Response", "ff.fms.kill.rsp",
13845 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13850 * 6.5.3.28.3. Error Message Parameters
13852 { &hf_ff_fms_kill_err,
13853 { "FMS Kill Error", "ff.fms.kill.err",
13854 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13856 { &hf_ff_fms_kill_req_idx,
13857 { "Index", "ff.fms.kill.req.idx",
13858 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13860 { &hf_ff_fms_kill_err_err_class,
13861 { "Error Class", "ff.fms.kill.err.err_class",
13862 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13864 { &hf_ff_fms_kill_err_err_code,
13865 { "Error Code", "ff.fms.kill.err.err_code",
13866 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13868 { &hf_ff_fms_kill_err_additional_code,
13869 { "Additional Code", "ff.fms.kill.err.additional_code",
13870 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13872 { &hf_ff_fms_kill_err_additional_desc,
13873 { "Additional Description", "ff.fms.kill.err.additional_desc",
13874 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13879 * 6.5.3.29. FMS Read (Confirmed Service Id = 2)
13881 { &hf_ff_fms_read,
13882 { "FMS Read", "ff.fms.read",
13883 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13888 * 6.5.3.29.1. Request Message Parameters
13890 { &hf_ff_fms_read_req,
13891 { "FMS Read Request", "ff.fms.read.req",
13892 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13894 { &hf_ff_fms_read_req_idx,
13895 { "Index", "ff.fms.read.req.idx",
13896 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13901 * 6.5.3.29.2. Response Message Parameters
13903 { &hf_ff_fms_read_rsp,
13904 { "FMS Read Response", "ff.fms.read.rsp",
13905 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13910 * 6.5.3.29.3. Error Message Parameters
13912 { &hf_ff_fms_read_err,
13913 { "FMS Read Error", "ff.fms.read.err",
13914 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13916 { &hf_ff_fms_read_err_err_class,
13917 { "Error Class", "ff.fms.read.err.err_class",
13918 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13920 { &hf_ff_fms_read_err_err_code,
13921 { "Error Code", "ff.fms.read.err.err_code",
13922 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13924 { &hf_ff_fms_read_err_additional_code,
13925 { "Additional Code", "ff.fms.read.err.additional_code",
13926 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13928 { &hf_ff_fms_read_err_additional_desc,
13929 { "Additional Description", "ff.fms.read.err.additional_desc",
13930 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13935 * 6.5.3.30. FMS Read with Subindex (Confirmed Service Id = 82)
13937 { &hf_ff_fms_read_with_subidx,
13938 { "FMS Read with Subindex", "ff.fms.read_with_subidx",
13939 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13944 * 6.5.3.30.1. Request Message Parameters
13946 { &hf_ff_fms_read_with_subidx_req,
13947 { "FMS Read with Subindex Request", "ff.fms.read_with_subidx.req",
13948 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13950 { &hf_ff_fms_read_with_subidx_req_idx,
13951 { "Index", "ff.fms.read_with_subidx.req.idx",
13952 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13954 { &hf_ff_fms_read_with_subidx_req_subidx,
13955 { "Index", "ff.fms.read_with_subidx.req.subidx",
13956 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13961 * 6.5.3.30.2. Response Message Parameters
13963 { &hf_ff_fms_read_with_subidx_rsp,
13964 { "FMS Read with Subindex Response", "ff.fms.read_with_subidx.rsp",
13965 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13970 * 6.5.3.30.3. Error Message Parameters
13972 { &hf_ff_fms_read_with_subidx_err,
13973 { "FMS Read with Subindex Error", "ff.fms.read_with_subidx.err",
13974 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13976 { &hf_ff_fms_read_with_subidx_err_err_class,
13977 { "Error Class", "ff.fms.read_with_subidx.err.err_class",
13978 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
13980 { &hf_ff_fms_read_with_subidx_err_err_code,
13981 { "Error Code", "ff.fms.read_with_subidx.err.err_code",
13982 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13984 { &hf_ff_fms_read_with_subidx_err_additional_code,
13985 { "Additional Code", "ff.fms.read_with_subidx.err.additional_code",
13986 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
13988 { &hf_ff_fms_read_with_subidx_err_additional_desc,
13989 { "Additional Description",
13990 "ff.fms.read_with_subidx.err.additional_desc",
13991 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
13996 * 6.5.3.31. FMS Write (Confirmed Service Id = 3)
13998 { &hf_ff_fms_write,
13999 { "FMS Write", "ff.fms.write",
14000 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14005 * 6.5.3.31.1. Request Message Parameters
14007 { &hf_ff_fms_write_req,
14008 { "FMS Write Request", "ff.fms.write.req",
14009 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14011 { &hf_ff_fms_write_req_idx,
14012 { "Index", "ff.fms.write.req.idx",
14013 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14018 * 6.5.3.31.2. Response Message Parameters
14020 { &hf_ff_fms_write_rsp,
14021 { "FMS Write Response", "ff.fms.write.rsp",
14022 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14027 * 6.5.3.31.3. Error Message Parameters
14029 { &hf_ff_fms_write_err,
14030 { "FMS Write Error", "ff.fms.write.err",
14031 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14033 { &hf_ff_fms_write_err_err_class,
14034 { "Error Class", "ff.fms.write.err.err_class",
14035 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14037 { &hf_ff_fms_write_err_err_code,
14038 { "Error Code", "ff.fms.write.err.err_code",
14039 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14041 { &hf_ff_fms_write_err_additional_code,
14042 { "Additional Code", "ff.fms.write.err.additional_code",
14043 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14045 { &hf_ff_fms_write_err_additional_desc,
14046 { "Additional Description", "ff.fms.write.err.additional_desc",
14047 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14052 * 6.5.3.32. FMS Write with Subindex (Confirmed Service Id = 83)
14054 { &hf_ff_fms_write_with_subidx,
14055 { "FMS Write with Subindex", "ff.fms.write_with_subidx",
14056 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14061 * 6.5.3.32.1. Request Message Parameters
14063 { &hf_ff_fms_write_with_subidx_req,
14064 { "FMS Write with Subindex Request", "ff.fms.write_with_subidx.req",
14065 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14067 { &hf_ff_fms_write_with_subidx_req_idx,
14068 { "Index", "ff.fms.write_with_subidx.req.idx",
14069 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14071 { &hf_ff_fms_write_with_subidx_req_subidx,
14072 { "Index", "ff.fms.write_with_subidx.req.subidx",
14073 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14078 * 6.5.3.32.2. Response Message Parameters
14080 { &hf_ff_fms_write_with_subidx_rsp,
14081 { "FMS Write with Subindex Response",
14082 "ff.fms.write_with_subidx.rsp",
14083 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14088 * 6.5.3.32.3. Error Message Parameters
14090 { &hf_ff_fms_write_with_subidx_err,
14091 { "FMS Write with Subindex Error", "ff.fms.write_with_subidx.err",
14092 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14094 { &hf_ff_fms_write_with_subidx_err_err_class,
14095 { "Error Class", "ff.fms.write_with_subidx.err.err_class",
14096 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14098 { &hf_ff_fms_write_with_subidx_err_err_code,
14099 { "Error Code", "ff.fms.write_with_subidx.err.err_code",
14100 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14102 { &hf_ff_fms_write_with_subidx_err_additional_code,
14103 { "Additional Code", "ff.fms.write_with_subidx.err.additional_code",
14104 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14106 { &hf_ff_fms_write_with_subidx_err_additional_desc,
14107 { "Additional Description",
14108 "ff.fms.write_with_subidx.err.additional_desc",
14109 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14114 * 6.5.3.33. FMS Define Variable List (Confirmed Service Id = 7)
14116 { &hf_ff_fms_def_variable_list,
14117 { "FMS Define Variable List", "ff.fms.def_variable_list",
14118 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14123 * 6.5.3.33.1. Request Message Parameters
14125 { &hf_ff_fms_def_variable_list_req,
14126 { "FMS Define Variable List Request",
14127 "ff.fms.def_variable_list.req",
14128 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14130 { &hf_ff_fms_def_variable_list_req_num_of_idxes,
14131 { "Number of Indexes", "ff.fms.def_variable_list.req.num_of_idxes",
14132 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14134 { &hf_ff_fms_def_variable_list_req_idx,
14135 { "Index", "ff.fms.def_variable_list.req.idx",
14136 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14141 * 6.5.3.33.2. Response Message Parameters
14143 { &hf_ff_fms_def_variable_list_rsp,
14144 { "FMS Define Variable List Response",
14145 "ff.fms.def_variable_list.rsp",
14146 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14148 { &hf_ff_fms_def_variable_list_rsp_idx,
14149 { "Index", "ff.fms.def_variable_list.rsp.idx",
14150 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14155 * 6.5.3.33.3. Error Message Parameters
14157 { &hf_ff_fms_def_variable_list_err,
14158 { "FMS Define Variable List Error", "ff.fms.def_variable_list.err",
14159 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14161 { &hf_ff_fms_def_variable_list_err_err_class,
14162 { "Error Class", "ff.fms.def_variable_list.err.err_class",
14163 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14165 { &hf_ff_fms_def_variable_list_err_err_code,
14166 { "Error Code", "ff.fms.def_variable_list.err.err_code",
14167 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14169 { &hf_ff_fms_def_variable_list_err_additional_code,
14170 { "Additional Code", "ff.fms.def_variable_list.err.additional_code",
14171 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14173 { &hf_ff_fms_def_variable_list_err_additional_desc,
14174 { "Additional Description",
14175 "ff.fms.def_variable_list.err.additional_desc",
14176 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14181 * 6.5.3.34. FMS Delete Variable List (Confirmed Service Id = 8)
14183 { &hf_ff_fms_del_variable_list,
14184 { "FMS Delete Variable List", "ff.fms.del_variable_list",
14185 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14190 * 6.5.3.34.1. Request Message Parameters
14192 { &hf_ff_fms_del_variable_list_req,
14193 { "FMS Delete Variable List Request",
14194 "ff.fms.del_variable_list.req",
14195 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14197 { &hf_ff_fms_del_variable_list_req_idx,
14198 { "Index", "ff.fms.del_variable_list.req.idx",
14199 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14204 * 6.5.3.34.2. Response Message Parameters
14206 { &hf_ff_fms_del_variable_list_rsp,
14207 { "FMS Delete Variable List Response",
14208 "ff.fms.del_variable_list.rsp",
14209 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14214 * 6.5.3.34.3. Error Message Parameters
14216 { &hf_ff_fms_del_variable_list_err,
14217 { "FMS Delete Variable List Error", "ff.fms.del_variable_list.err",
14218 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14220 { &hf_ff_fms_del_variable_list_err_err_class,
14221 { "Error Class", "ff.fms.del_variable_list.err.err_class",
14222 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14224 { &hf_ff_fms_del_variable_list_err_err_code,
14225 { "Error Code", "ff.fms.del_variable_list.err.err_code",
14226 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14228 { &hf_ff_fms_del_variable_list_err_additional_code,
14229 { "Additional Code", "ff.fms.del_variable_list.err.additional_code",
14230 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14232 { &hf_ff_fms_del_variable_list_err_additional_desc,
14233 { "Additional Description",
14234 "ff.fms.del_variable_list.err.additional_desc",
14235 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14240 * 6.5.3.35. FMS Information Report (Unconfirmed Service Id = 0)
14242 { &hf_ff_fms_info_report,
14243 { "FMS Information Report", "ff.fms.info_report",
14244 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14249 * 6.5.3.35.1. Request Message Parameters
14251 { &hf_ff_fms_info_report_req,
14252 { "FMS Information Report Request", "ff.fms.info_report.req",
14253 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14255 { &hf_ff_fms_info_report_req_idx,
14256 { "Index", "ff.fms.info_report.req.idx",
14257 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14262 * 6.5.3.36. FMS Information Report with Subindex
14263 * (Unconfirmed Service Id = 16)
14265 { &hf_ff_fms_info_report_with_subidx,
14266 { "FMS Information Report with Subindex",
14267 "ff.fms.info_report_with_subidx",
14268 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14273 * 6.5.3.36.1. Request Message Parameters
14275 { &hf_ff_fms_info_report_with_subidx_req,
14276 { "FMS Information Report with Subindex Request",
14277 "ff.fms.info_report_with_subidx.req",
14278 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14280 { &hf_ff_fms_info_report_with_subidx_req_idx,
14281 { "Index", "ff.fms.info_report_with_subidx.req.idx",
14282 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14284 { &hf_ff_fms_info_report_with_subidx_req_subidx,
14285 { "Subindex", "ff.fms.info_report_with_subidx.req.subidx",
14286 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14291 * 6.5.3.37. FMS Information Report On Change
14292 * (Unconfirmed Service Id = 17)
14294 { &hf_ff_fms_info_report_on_change,
14295 { "FMS Information Report On Change with Subindex",
14296 "ff.fms.info_report_on_change",
14297 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14302 * 6.5.3.37.1. Request Message Parameters
14304 { &hf_ff_fms_info_report_on_change_req,
14305 { "FMS Information Report On Change with Subindex Request",
14306 "ff.fms.info_report_on_change.req",
14307 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14309 { &hf_ff_fms_info_report_on_change_req_idx,
14310 { "Index", "ff.fms.info_report_on_change.req.idx",
14311 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14316 * 6.5.3.38. FMS Information Report On Change with Subindex
14317 * (Unconfirmed Service Id = 18)
14319 { &hf_ff_fms_info_report_on_change_with_subidx,
14320 { "FMS Information Report On Change",
14321 "ff.fms.info_report_on_change_with_subidx",
14322 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14327 * 6.5.3.38.1. Request Message Parameters
14329 { &hf_ff_fms_info_report_on_change_with_subidx_req,
14330 { "FMS Information Report On Change Request",
14331 "ff.fms.info_report_on_change_with_subidx.req",
14332 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14334 { &hf_ff_fms_info_report_on_change_with_subidx_req_idx,
14335 { "Index", "ff.fms.info_report_on_change_with_subidx.req.idx",
14336 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14338 { &hf_ff_fms_info_report_on_change_with_subidx_req_subidx,
14339 { "Subindex", "ff.fms.info_report_on_change_with_subidx.req.subidx",
14340 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14345 * 6.5.3.39. FMS Event Notification (Unconfirmed Service Id = 2)
14347 { &hf_ff_fms_ev_notification,
14348 { "FMS Event Notification", "ff.fms.ev_notification",
14349 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14354 * 6.5.3.39.1. Request Message Parameters
14356 { &hf_ff_fms_ev_notification_req,
14357 { "FMS Event Notification Request", "ff.fms.ev_notification.req",
14358 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14360 { &hf_ff_fms_ev_notification_req_idx,
14361 { "Index", "ff.fms.ev_notification.req.idx",
14362 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14364 { &hf_ff_fms_ev_notification_req_ev_num,
14365 { "Event Number", "ff.fms.ev_notification.req.ev_num",
14366 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14371 * 6.5.3.40. FMS Alter Event Condition Monitoring
14372 * (Confirmed Service Id = 24)
14374 { &hf_ff_fms_alter_ev_condition_monitoring,
14375 { "FMS Alter Event Condition Monitoring",
14376 "ff.fms.alter_ev_condition_monitoring",
14377 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14382 * 6.5.3.40.1. Request Message Parameters
14384 { &hf_ff_fms_alter_ev_condition_monitoring_req,
14385 { "FMS Alter Event Condition Monitoring Request",
14386 "ff.fms.alter_ev_condition_monitoring.req",
14387 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14389 { &hf_ff_fms_alter_ev_condition_monitoring_req_idx,
14390 { "Index", "ff.fms.alter_ev_condition_monitoring.req.idx",
14391 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14393 { &hf_ff_fms_alter_ev_condition_monitoring_req_enabled,
14394 { "Enabled", "ff.fms.alter_ev_condition_monitoring.req.enabled",
14395 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14400 * 6.5.3.40.2. Response Message Parameters
14402 { &hf_ff_fms_alter_ev_condition_monitoring_rsp,
14403 { "FMS Alter Event Condition Monitoring Response",
14404 "ff.fms.alter_ev_condition_monitoring.rsp",
14405 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14410 * 6.5.3.40.3. Error Message Parameters
14412 { &hf_ff_fms_alter_ev_condition_monitoring_err,
14413 { "FMS Alter Event Condition Monitoring Error",
14414 "ff.fms.alter_ev_condition_monitoring.err",
14415 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14417 { &hf_ff_fms_alter_ev_condition_monitoring_err_err_class,
14418 { "Error Class",
14419 "ff.fms.alter_ev_condition_monitoring.err.err_class",
14420 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14422 { &hf_ff_fms_alter_ev_condition_monitoring_err_err_code,
14423 { "Error Code", "ff.fms.alter_ev_condition_monitoring.err.err_code",
14424 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14426 { &hf_ff_fms_alter_ev_condition_monitoring_err_additional_code,
14427 { "Additional Code",
14428 "ff.fms.alter_ev_condition_monitoring.err.additional_code",
14429 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14431 { &hf_ff_fms_alter_ev_condition_monitoring_err_additional_desc,
14432 { "Additional Description",
14433 "ff.fms.alter_ev_condition_monitoring.err.additional_desc",
14434 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14439 * 6.5.3.41. FMS Acknowledge Event Notification
14440 * (Confirmed Service Id = 25)
14442 { &hf_ff_fms_ack_ev_notification,
14443 { "FMS Acknowledge Event Notification",
14444 "ff.fms.ack_ev_notification",
14445 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14450 * 6.5.3.41.1. Request Message Parameters
14452 { &hf_ff_fms_ack_ev_notification_req,
14453 { "FMS Acknowledge Event Notification Request",
14454 "ff.fms.ack_ev_notification.req",
14455 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14457 { &hf_ff_fms_ack_ev_notification_req_idx,
14458 { "Index", "ff.fms.ack_ev_notification.req.idx",
14459 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14461 { &hf_ff_fms_ack_ev_notification_req_ev_num,
14462 { "Event Number", "ff.fms.ack_ev_notification.req.ev_num",
14463 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14468 * 6.5.3.41.2. Response Message Parameters
14470 { &hf_ff_fms_ack_ev_notification_rsp,
14471 { "FMS Acknowledge Event Notification Response",
14472 "ff.fms.ack_ev_notification.rsp",
14473 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14478 * 6.5.3.41.3. Error Message Parameters
14480 { &hf_ff_fms_ack_ev_notification_err,
14481 { "FMS Acknowledge Event Notification Error",
14482 "ff.fms.ack_ev_notification.err",
14483 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14485 { &hf_ff_fms_ack_ev_notification_err_err_class,
14486 { "Error Class", "ff.fms.ack_ev_notification.err.err_class",
14487 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14489 { &hf_ff_fms_ack_ev_notification_err_err_code,
14490 { "Error Code", "ff.fms.ack_ev_notification.err.err_code",
14491 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14493 { &hf_ff_fms_ack_ev_notification_err_additional_code,
14494 { "Additional Code",
14495 "ff.fms.ack_ev_notification.err.additional_code",
14496 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14498 { &hf_ff_fms_ack_ev_notification_err_additional_desc,
14499 { "Additional Description",
14500 "ff.fms.ack_ev_notification.err.additional_desc",
14501 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14506 * 6.5.4. LAN Redundancy Services
14508 { &hf_ff_lr,
14509 { "LAN Redundancy Service", "ff.lr",
14510 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14515 * 6.5.4.1. LAN Redundancy Get Information (Confirmed Service Id = 1)
14517 { &hf_ff_lr_get_info,
14518 { "LAN Redundancy Get Information",
14519 "ff.lr.get_info",
14520 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14525 * 6.5.4.1.1. Request Message Parameters
14527 { &hf_ff_lr_get_info_req,
14528 { "LAN Redundancy Get Information Request",
14529 "ff.lr.get_info.req",
14530 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14535 * 6.5.4.1.2. Response Message Parameters
14537 { &hf_ff_lr_get_info_rsp,
14538 { "LAN Redundancy Get Information Response",
14539 "ff.lr.get_info.rsp",
14540 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14542 { &hf_ff_lr_get_info_rsp_lr_attrs_ver,
14543 { "LAN Redundancy Attributes Version",
14544 "ff.lr.get_info.rsp.lr_attrs_ver",
14545 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14547 { &hf_ff_lr_get_info_rsp_lr_max_msg_num_diff,
14548 { "Max Message Number Difference",
14549 "ff.lr.get_info.rsp.max_msg_num_diff",
14550 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14552 { &hf_ff_lr_get_info_rsp_reserved,
14553 { "Reserved",
14554 "ff.lr.get_info.rsp.reserved",
14555 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14557 { &hf_ff_lr_get_info_rsp_diagnostic_msg_intvl,
14558 { "Diagnostic Message Interval",
14559 "ff.lr.get_info.rsp.diagnostic_msg_intvl",
14560 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14562 { &hf_ff_lr_get_info_rsp_aging_time,
14563 { "Aging Time",
14564 "ff.lr.get_info.rsp.aging_time",
14565 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14567 { &hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_send_addr,
14568 { "Diagnostic Message Interface A Send Address",
14569 "ff.lr.get_info.rsp.diagnostic_msg_if_a_send_addr",
14570 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14572 { &hf_ff_lr_get_info_rsp_diagnostic_msg_if_a_recv_addr,
14573 { "Diagnostic Message Interface A Receive Address",
14574 "ff.lr.get_info.rsp.diagnostic_msg_if_a_recv_addr",
14575 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14577 { &hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_send_addr,
14578 { "Diagnostic Message Interface B Send Address",
14579 "ff.lr.get_info.rsp.diagnostic_msg_if_b_send_addr",
14580 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14582 { &hf_ff_lr_get_info_rsp_diagnostic_msg_if_b_recv_addr,
14583 { "Diagnostic Message Interface B Receive Address",
14584 "ff.lr.get_info.rsp.diagnostic_msg_if_b_recv_addr",
14585 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14587 { &hf_ff_lr_get_info_rsp_lr_flags_reserved,
14588 { "Reserved",
14589 "ff.lr.get_info.rsp.lr_flags.reserved",
14590 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL } },
14592 { &hf_ff_lr_get_info_rsp_lr_flags_load_balance,
14593 { "Load Balancing",
14594 "ff.lr.get_info.rsp.lr_flags.load_balance",
14595 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL } },
14597 { &hf_ff_lr_get_info_rsp_lr_flags_diag,
14598 { "Diagnosis Using Own Messages",
14599 "ff.lr.get_info.rsp.lr_flags.diag",
14600 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL } },
14602 { &hf_ff_lr_get_info_rsp_lr_flags_multi_recv,
14603 { "Single Multicast Message Reception Interface",
14604 "ff.lr.get_info.rsp.lr_flags.multi_recv",
14605 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL } },
14607 { &hf_ff_lr_get_info_rsp_lr_flags_cross_cable,
14608 { "Crossed Cable Detection",
14609 "ff.lr.get_info.rsp.lr_flags.cross_cable",
14610 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL } },
14612 { &hf_ff_lr_get_info_rsp_lr_flags_multi_trans,
14613 { "Single Multicast Message Transmission Interface",
14614 "ff.lr.get_info.rsp.lr_flags.multi_trans",
14615 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL } },
14617 { &hf_ff_lr_get_info_rsp_lr_flags,
14618 { "LAN Redundancy Flags",
14619 "ff.lr.get_info.rsp.lr_flags",
14620 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
14625 * 6.5.4.1.3. Error Message Parameters
14627 { &hf_ff_lr_get_info_err,
14628 { "LAN Redundancy Get Information Error",
14629 "ff.lr.get_info.err",
14630 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14632 { &hf_ff_lr_get_info_err_err_class,
14633 { "Error Class", "ff.lr.get_info.err.err_class",
14634 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14636 { &hf_ff_lr_get_info_err_err_code,
14637 { "Error Code", "ff.lr.get_info.err.err_code",
14638 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14640 { &hf_ff_lr_get_info_err_additional_code,
14641 { "Additional Code",
14642 "ff.lr.get_info.err.additional_code",
14643 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14645 { &hf_ff_lr_get_info_err_additional_desc,
14646 { "Additional Description",
14647 "ff.lr.get_info.err.additional_desc",
14648 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14653 * 6.5.4.2. LAN Redundancy Put Information (Confirmed Service Id = 2)
14655 { &hf_ff_lr_put_info,
14656 { "LAN Redundancy Put Information", "ff.lr.put_info",
14657 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14662 * 6.5.4.2.1. Request Message Parameters
14664 { &hf_ff_lr_put_info_req,
14665 { "LAN Redundancy Put Information Request", "ff.lr.put_info.req",
14666 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14668 { &hf_ff_lr_put_info_req_lr_attrs_ver,
14669 { "LAN Redundancy Attributes Version",
14670 "ff.lr.put_info.req.lr_attrs_ver",
14671 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14673 { &hf_ff_lr_put_info_req_lr_max_msg_num_diff,
14674 { "Max Message Number Difference",
14675 "ff.lr.put_info.req.max_msg_num_diff",
14676 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14678 { &hf_ff_lr_put_info_req_reserved,
14679 { "Reserved",
14680 "ff.lr.put_info.req.reserved",
14681 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14683 { &hf_ff_lr_put_info_req_diagnostic_msg_intvl,
14684 { "Diagnostic Message Interval",
14685 "ff.lr.put_info.req.diagnostic_msg_intvl",
14686 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14688 { &hf_ff_lr_put_info_req_aging_time,
14689 { "Aging Time",
14690 "ff.lr.put_info.req.aging_time",
14691 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14693 { &hf_ff_lr_put_info_req_diagnostic_msg_if_a_send_addr,
14694 { "Diagnostic Message Interface A Send Address",
14695 "ff.lr.put_info.req.diagnostic_msg_if_a_send_addr",
14696 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14698 { &hf_ff_lr_put_info_req_diagnostic_msg_if_a_recv_addr,
14699 { "Diagnostic Message Interface A Receive Address",
14700 "ff.lr.put_info.req.diagnostic_msg_if_a_recv_addr",
14701 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14703 { &hf_ff_lr_put_info_req_diagnostic_msg_if_b_send_addr,
14704 { "Diagnostic Message Interface B Send Address",
14705 "ff.lr.put_info.req.diagnostic_msg_if_b_send_addr",
14706 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14708 { &hf_ff_lr_put_info_req_diagnostic_msg_if_b_recv_addr,
14709 { "Diagnostic Message Interface B Receive Address",
14710 "ff.lr.put_info.req.diagnostic_msg_if_b_recv_addr",
14711 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14713 { &hf_ff_lr_put_info_req_lr_flags_reserved,
14714 { "Reserved",
14715 "ff.lr.put_info.req.lr_flags.reserved",
14716 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL } },
14718 { &hf_ff_lr_put_info_req_lr_flags_load_balance,
14719 { "Load Balancing",
14720 "ff.lr.put_info.req.lr_flags.load_balance",
14721 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL } },
14723 { &hf_ff_lr_put_info_req_lr_flags_diag,
14724 { "Diagnosis Using Own Messages",
14725 "ff.lr.put_info.req.lr_flags.diag",
14726 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL } },
14728 { &hf_ff_lr_put_info_req_lr_flags_multi_recv,
14729 { "Single Multicast Message Reception Interface",
14730 "ff.lr.put_info.req.lr_flags.multi_recv",
14731 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL } },
14733 { &hf_ff_lr_put_info_req_lr_flags_cross_cable,
14734 { "Crossed Cable Detection",
14735 "ff.lr.put_info.req.lr_flags.cross_cable",
14736 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL } },
14738 { &hf_ff_lr_put_info_req_lr_flags_multi_trans,
14739 { "Single Multicast Message Transmission Interface",
14740 "ff.lr.put_info.req.lr_flags.multi_trans",
14741 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL } },
14743 { &hf_ff_lr_put_info_req_lr_flags,
14744 { "LAN Redundancy Flags",
14745 "ff.lr.put_info.req.lr_flags",
14746 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
14750 * 6.5.4.2.2. Response Message Parameters
14752 { &hf_ff_lr_put_info_rsp,
14753 { "LAN Redundancy Put Information Response",
14754 "ff.lr.put_info.rsp",
14755 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14757 { &hf_ff_lr_put_info_rsp_lr_attrs_ver,
14758 { "LAN Redundancy Attributes Version",
14759 "ff.lr.put_info.rsp.lr_attrs_ver",
14760 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14762 { &hf_ff_lr_put_info_rsp_lr_max_msg_num_diff,
14763 { "Max Message Number Difference",
14764 "ff.lr.put_info.rsp.max_msg_num_diff",
14765 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14767 { &hf_ff_lr_put_info_rsp_reserved,
14768 { "Reserved",
14769 "ff.lr.put_info.rsp.reserved",
14770 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14772 { &hf_ff_lr_put_info_rsp_diagnostic_msg_intvl,
14773 { "Diagnostic Message Interval",
14774 "ff.lr.put_info.rsp.diagnostic_msg_intvl",
14775 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14777 { &hf_ff_lr_put_info_rsp_aging_time,
14778 { "Aging Time",
14779 "ff.lr.put_info.rsp.aging_time",
14780 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14782 { &hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_send_addr,
14783 { "Diagnostic Message Interface A Send Address",
14784 "ff.lr.put_info.rsp.diagnostic_msg_if_a_send_addr",
14785 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14787 { &hf_ff_lr_put_info_rsp_diagnostic_msg_if_a_recv_addr,
14788 { "Diagnostic Message Interface A Receive Address",
14789 "ff.lr.put_info.rsp.diagnostic_msg_if_a_recv_addr",
14790 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14792 { &hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_send_addr,
14793 { "Diagnostic Message Interface B Send Address",
14794 "ff.lr.put_info.rsp.diagnostic_msg_if_b_send_addr",
14795 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14797 { &hf_ff_lr_put_info_rsp_diagnostic_msg_if_b_recv_addr,
14798 { "Diagnostic Message Interface B Receive Address",
14799 "ff.lr.put_info.rsp.diagnostic_msg_if_b_recv_addr",
14800 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14802 { &hf_ff_lr_put_info_rsp_lr_flags_reserved,
14803 { "Reserved",
14804 "ff.lr.put_info.rsp.lr_flags.reserved",
14805 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL } },
14807 { &hf_ff_lr_put_info_rsp_lr_flags_load_balance,
14808 { "Load Balancing",
14809 "ff.lr.put_info.rsp.lr_flags.load_balance",
14810 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL } },
14812 { &hf_ff_lr_put_info_rsp_lr_flags_diag,
14813 { "Diagnosis Using Own Messages",
14814 "ff.lr.put_info.rsp.lr_flags.diag",
14815 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL } },
14817 { &hf_ff_lr_put_info_rsp_lr_flags_multi_recv,
14818 { "Single Multicast Message Reception Interface",
14819 "ff.lr.put_info.rsp.lr_flags.multi_recv",
14820 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL } },
14822 { &hf_ff_lr_put_info_rsp_lr_flags_cross_cable,
14823 { "Crossed Cable Detection",
14824 "ff.lr.put_info.rsp.lr_flags.cross_cable",
14825 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL } },
14827 { &hf_ff_lr_put_info_rsp_lr_flags_multi_trans,
14828 { "Single Multicast Message Transmission Interface",
14829 "ff.lr.put_info.rsp.lr_flags.multi_trans",
14830 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL } },
14832 { &hf_ff_lr_put_info_rsp_lr_flags,
14833 { "LAN Redundancy Flags",
14834 "ff.lr.put_info.rsp.lr_flags",
14835 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
14839 * 6.5.4.2.3. Error Message Parameters
14841 { &hf_ff_lr_put_info_err,
14842 { "LAN Redundancy Put Information Error", "ff.lr.put_info.err",
14843 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14845 { &hf_ff_lr_put_info_err_err_class,
14846 { "Error Class", "ff.lr.put_info.err.err_class",
14847 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14849 { &hf_ff_lr_put_info_err_err_code,
14850 { "Error Code", "ff.lr.put_info.err.err_code",
14851 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14853 { &hf_ff_lr_put_info_err_additional_code,
14854 { "Additional Code",
14855 "ff.lr.put_info.err.additional_code",
14856 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14858 { &hf_ff_lr_put_info_err_additional_desc,
14859 { "Additional Description",
14860 "ff.lr.put_info.err.additional_desc",
14861 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14866 * 6.5.4.3. LAN Redundancy Get Statistics (Confirmed Service Id = 3)
14868 { &hf_ff_lr_get_statistics,
14869 { "LAN Redundancy Get Statistics",
14870 "ff.lr.get_statistics",
14871 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14876 * 6.5.4.3.1. Request Message Parameters
14878 { &hf_ff_lr_get_statistics_req,
14879 { "LAN Redundancy Get Statistics Request",
14880 "ff.lr.get_statistics.req",
14881 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14886 * 6.5.4.3.2. Response Message Parameters
14888 { &hf_ff_lr_get_statistics_rsp,
14889 { "LAN Redundancy Get Statistics Response",
14890 "ff.lr.get_statistics.rsp",
14891 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14893 { &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_a,
14894 { "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_recv_a",
14895 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14897 { &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_a,
14898 { "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_miss_a",
14899 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14901 { &hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_a,
14902 { "Error Code",
14903 "ff.lr.get_statistics.rsp.num_rem_dev_diag_recv_fault_a",
14904 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14906 { &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_recv_b,
14907 { "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_recv_b",
14908 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14910 { &hf_ff_lr_get_statistics_rsp_num_diag_svr_ind_miss_b,
14911 { "Error Code", "ff.lr.get_statistics.rsp.num_diag_svr_ind_miss_b",
14912 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14914 { &hf_ff_lr_get_statistics_rsp_num_rem_dev_diag_recv_fault_b,
14915 { "Error Code",
14916 "ff.lr.get_statistics.rsp.num_rem_dev_diag_recv_fault_b",
14917 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14919 { &hf_ff_lr_get_statistics_rsp_num_x_cable_stat,
14920 { "Error Code", "ff.lr.get_statistics.rsp.num_x_cable_stat",
14921 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14923 { &hf_ff_lr_get_statistics_rsp_x_cable_stat,
14924 { "Error Code", "ff.lr.get_statistics.rsp.x_cable_stat",
14925 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14930 * 6.5.4.3.3. Error Message Parameters
14932 { &hf_ff_lr_get_statistics_err,
14933 { "LAN Redundancy Get Statistics Error",
14934 "ff.lr.get_statistics.err",
14935 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14937 { &hf_ff_lr_get_statistics_err_err_class,
14938 { "Error Class", "ff.lr.get_statistics.err.err_class",
14939 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &names_err_class_ext, 0x0, NULL, HFILL } },
14941 { &hf_ff_lr_get_statistics_err_err_code,
14942 { "Error Code", "ff.lr.get_statistics.err.err_code",
14943 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14945 { &hf_ff_lr_get_statistics_err_additional_code,
14946 { "Additional Code",
14947 "ff.lr.get_statistics.err.additional_code",
14948 FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14950 { &hf_ff_lr_get_statistics_err_additional_desc,
14951 { "Additional Description",
14952 "ff.lr.get_statistics.err.additional_desc",
14953 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14958 * 6.5.4.4 Diagnostic Message (Unconfirmed Service Id = 1)
14960 { &hf_ff_lr_diagnostic_msg,
14961 { "Diagnostic Message", "ff.lr.diagnostic_msg",
14962 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14967 * 6.5.4.4.1. Request Message Parameters
14969 { &hf_ff_lr_diagnostic_msg_req,
14970 { "Diagnostic Message Request", "ff.lr.diagnostic_msg_req",
14971 FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14973 { &hf_ff_lr_diagnostic_msg_req_dev_idx,
14974 { "Device Index", "ff.lr.diagnostic_msg.req.dev_idx",
14975 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14977 { &hf_ff_lr_diagnostic_msg_req_num_of_network_ifs,
14978 { "Number of Network Interfaces",
14979 "ff.lr.diagnostic_msg.req.num_of_network_ifs",
14980 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14982 { &hf_ff_lr_diagnostic_msg_req_transmission_if,
14983 { "Transmission Interface",
14984 "ff.lr.diagnostic_msg.req.transmission_if",
14985 FT_UINT8, BASE_DEC, VALS(names_transmission_interface), 0x0, NULL, HFILL } },
14987 { &hf_ff_lr_diagnostic_msg_req_diagnostic_msg_intvl,
14988 { "Diagnostic Message Interval",
14989 "ff.lr.diagnostic_msg.req.diagnostic_msg_intvl",
14990 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
14992 { &hf_ff_lr_diagnostic_msg_req_pd_tag,
14993 { "PD Tag", "ff.lr.diagnostic_msg.req.pd_tag",
14994 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
14996 { &hf_ff_lr_diagnostic_msg_req_reserved,
14997 { "Reserved", "ff.lr.diagnostic_msg.req.reserved",
14998 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15000 { &hf_ff_lr_diagnostic_msg_req_num_of_if_statuses,
15001 { "Number of Interface Statuses",
15002 "ff.lr.diagnostic_msg.req.num_of_if_statuses",
15003 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15005 { &hf_ff_lr_diagnostic_msg_req_if_a_to_a_status,
15006 { "Interface AtoA Status",
15007 "ff.lr.diagnostic_msg.req.if_a_to_a_status",
15008 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15010 { &hf_ff_lr_diagnostic_msg_req_if_b_to_a_status,
15011 { "Interface BtoA Status",
15012 "ff.lr.diagnostic_msg.req.if_b_to_a_status",
15013 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15015 { &hf_ff_lr_diagnostic_msg_req_if_a_to_b_status,
15016 { "Interface AtoB Status",
15017 "ff.lr.diagnostic_msg.req.if_a_to_b_status",
15018 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15020 { &hf_ff_lr_diagnostic_msg_req_if_b_to_b_status,
15021 { "Interface BtoB Status",
15022 "ff.lr.diagnostic_msg.req.if_b_to_b_status",
15023 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
15025 { &hf_ff_lr_diagnostic_msg_req_dup_detection_state_reserved,
15026 { "Reserved", "ff.lr.diagnostic_msg.req.dup_detection_state.reserved",
15027 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } },
15029 { &hf_ff_lr_diagnostic_msg_req_dup_detection_state_pd_tag,
15030 { "Duplicate PD Tag", "ff.lr.diagnostic_msg.req.dup_detection_state.pd_tag",
15031 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02, NULL, HFILL } },
15033 { &hf_ff_lr_diagnostic_msg_req_dup_detection_state_device,
15034 { "Duplicate Device Index", "ff.lr.diagnostic_msg.req.dup_detection_state.device",
15035 FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x01, NULL, HFILL } },
15037 { &hf_ff_lr_diagnostic_msg_req_dup_detection_state,
15038 { "Duplicate Detection State", "ff.lr.diagnostic_msg.req.dup_detection_state",
15039 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
15045 static int *ett[] = {
15046 &ett_ff,
15047 &ett_ff_fda_msg_hdr,
15048 &ett_ff_fda_msg_hdr_proto_and_type,
15049 &ett_ff_fda_msg_hdr_opts,
15050 &ett_ff_fda_msg_hdr_srv,
15052 &ett_ff_fda_msg_trailer,
15054 &ett_ff_fda_open_sess_req,
15055 &ett_ff_fda_open_sess_rsp,
15056 &ett_ff_fda_open_sess_err,
15058 &ett_ff_fda_idle_req,
15059 &ett_ff_fda_idle_rsp,
15060 &ett_ff_fda_idle_err,
15062 &ett_ff_sm_find_tag_query_req,
15063 &ett_ff_sm_find_tag_reply_req,
15064 &ett_ff_sm_find_tag_reply_req_dup_detection_state,
15065 &ett_ff_sm_find_tag_reply_req_list_of_fda_addr_selectors,
15067 &ett_ff_sm_id_req,
15068 &ett_ff_sm_id_rsp,
15069 &ett_ff_sm_id_rsp_smk_state,
15070 &ett_ff_sm_id_rsp_dev_type,
15071 &ett_ff_sm_id_rsp_dev_redundancy_state,
15072 &ett_ff_sm_id_rsp_dup_detection_state,
15073 &ett_ff_sm_id_rsp_entries_h1_live_list,
15074 &ett_ff_sm_id_rsp_h1_live_list,
15075 &ett_ff_sm_id_rsp_entries_node_addr,
15076 &ett_ff_sm_id_rsp_h1_node_addr,
15077 &ett_ff_sm_id_err,
15079 &ett_ff_sm_clear_addr_req,
15080 &ett_ff_sm_clear_addr_rsp,
15081 &ett_ff_sm_clear_addr_err,
15083 &ett_ff_sm_set_assign_info_req,
15084 &ett_ff_sm_set_assign_info_req_dev_redundancy_state,
15085 &ett_ff_sm_set_assign_info_req_clear_dup_detection_state,
15086 &ett_ff_sm_set_assign_info_rsp,
15087 &ett_ff_sm_set_assign_info_err,
15089 &ett_ff_sm_clear_assign_info_req,
15090 &ett_ff_sm_clear_assign_info_rsp,
15091 &ett_ff_sm_clear_assign_info_err,
15093 &ett_ff_sm_dev_annunc_req,
15094 &ett_ff_sm_dev_annunc_req_smk_state,
15095 &ett_ff_sm_dev_annunc_req_dev_type,
15096 &ett_ff_sm_dev_annunc_req_dev_redundancy_state,
15097 &ett_ff_sm_dev_annunc_req_dup_detection_state,
15098 &ett_ff_sm_dev_annunc_req_entries_h1_live_list,
15099 &ett_ff_sm_dev_annunc_req_h1_live_list,
15100 &ett_ff_sm_dev_annunc_req_entries_node_addr,
15101 &ett_ff_sm_dev_annunc_req_h1_node_addr,
15103 &ett_ff_fms_init_req,
15104 &ett_ff_fms_init_rep,
15105 &ett_ff_fms_init_err,
15107 &ett_ff_fms_abort_req,
15109 &ett_ff_fms_status_req,
15110 &ett_ff_fms_status_rsp,
15111 &ett_ff_fms_status_err,
15113 &ett_ff_fms_unsolicited_status_req,
15115 &ett_ff_fms_id_req,
15116 &ett_ff_fms_id_rsp,
15117 &ett_ff_fms_id_err,
15119 &ett_ff_fms_get_od_req,
15120 &ett_ff_fms_get_od_rsp,
15121 &ett_ff_fms_get_od_err,
15123 &ett_ff_fms_init_put_od_req,
15124 &ett_ff_fms_init_put_od_rsp,
15125 &ett_ff_fms_init_put_od_err,
15127 &ett_ff_fms_put_od_req,
15128 &ett_ff_fms_put_od_rsp,
15129 &ett_ff_fms_put_od_err,
15131 &ett_ff_fms_terminate_put_od_req,
15132 &ett_ff_fms_terminate_put_od_rsp,
15133 &ett_ff_fms_terminate_put_od_err,
15135 &ett_ff_fms_gen_init_download_seq_req,
15136 &ett_ff_fms_gen_init_download_seq_rep,
15137 &ett_ff_fms_gen_init_download_seq_err,
15139 &ett_ff_fms_gen_download_seg_req,
15140 &ett_ff_fms_gen_download_seg_rsp,
15141 &ett_ff_fms_gen_download_seg_err,
15143 &ett_ff_fms_gen_terminate_download_seq_req,
15144 &ett_ff_fms_gen_terminate_download_seq_rsp,
15145 &ett_ff_fms_gen_terminate_download_seq_err,
15147 &ett_ff_fms_init_download_seq_req,
15148 &ett_ff_fms_init_download_seq_rsp,
15149 &ett_ff_fms_init_download_seq_err,
15151 &ett_ff_fms_download_seg_req,
15152 &ett_ff_fms_download_seg_rsp,
15153 &ett_ff_fms_download_seg_err,
15155 &ett_ff_fms_terminate_download_seq_req,
15156 &ett_ff_fms_terminate_download_seq_rsp,
15157 &ett_ff_fms_terminate_download_seq_err,
15159 &ett_ff_fms_init_upload_seq_req,
15160 &ett_ff_fms_init_upload_seq_rsp,
15161 &ett_ff_fms_init_upload_seq_err,
15163 &ett_ff_fms_upload_seg_req,
15164 &ett_ff_fms_upload_seg_rsp,
15165 &ett_ff_fms_upload_seg_err,
15167 &ett_ff_fms_terminate_upload_seq_req,
15168 &ett_ff_fms_terminate_upload_seq_rsp,
15169 &ett_ff_fms_terminate_upload_seq_err,
15171 &ett_ff_fms_req_dom_download_req,
15172 &ett_ff_fms_req_dom_download_rsp,
15173 &ett_ff_fms_req_dom_download_err,
15175 &ett_ff_fms_req_dom_upload_req,
15176 &ett_ff_fms_req_dom_upload_rsp,
15177 &ett_ff_fms_req_dom_upload_err,
15179 &ett_ff_fms_create_pi_req,
15180 &ett_ff_fms_create_pi_req_list_of_dom_idxes,
15181 &ett_ff_fms_create_pi_rsp,
15182 &ett_ff_fms_create_pi_err,
15184 &ett_ff_fms_del_pi_req,
15185 &ett_ff_fms_del_pi_rsp,
15186 &ett_ff_fms_del_pi_err,
15188 &ett_ff_fms_start_req,
15189 &ett_ff_fms_start_rsp,
15190 &ett_ff_fms_start_err,
15192 &ett_ff_fms_stop_req,
15193 &ett_ff_fms_stop_rsp,
15194 &ett_ff_fms_stop_err,
15196 &ett_ff_fms_resume_req,
15197 &ett_ff_fms_resume_rsp,
15198 &ett_ff_fms_resume_err,
15200 &ett_ff_fms_reset_req,
15201 &ett_ff_fms_reset_rsp,
15202 &ett_ff_fms_reset_err,
15204 &ett_ff_fms_kill_req,
15205 &ett_ff_fms_kill_rsp,
15206 &ett_ff_fms_kill_err,
15208 &ett_ff_fms_read_req,
15209 &ett_ff_fms_read_rsp,
15210 &ett_ff_fms_read_err,
15212 &ett_ff_fms_read_with_subidx_req,
15213 &ett_ff_fms_read_with_subidx_rsp,
15214 &ett_ff_fms_read_with_subidx_err,
15216 &ett_ff_fms_write_req,
15217 &ett_ff_fms_write_rsp,
15218 &ett_ff_fms_write_err,
15220 &ett_ff_fms_write_with_subidx_req,
15221 &ett_ff_fms_write_with_subidx_rsp,
15222 &ett_ff_fms_write_with_subidx_err,
15224 &ett_ff_fms_def_variable_list_req,
15225 &ett_ff_fms_def_variable_list_req_list_of_idxes,
15226 &ett_ff_fms_def_variable_list_rsp,
15227 &ett_ff_fms_def_variable_list_err,
15229 &ett_ff_fms_del_variable_list_req,
15230 &ett_ff_fms_del_variable_list_rsp,
15231 &ett_ff_fms_del_variable_list_err,
15233 &ett_ff_fms_info_report_req,
15235 &ett_ff_fms_info_report_with_subidx_req,
15237 &ett_ff_fms_info_report_on_change_req,
15239 &ett_ff_fms_info_report_on_change_with_subidx_req,
15241 &ett_ff_fms_ev_notification_req,
15243 &ett_ff_fms_alter_ev_condition_monitoring_req,
15244 &ett_ff_fms_alter_ev_condition_monitoring_rsp,
15245 &ett_ff_fms_alter_ev_condition_monitoring_err,
15247 &ett_ff_fms_ack_ev_notification_req,
15248 &ett_ff_fms_ack_ev_notification_rsp,
15249 &ett_ff_fms_ack_ev_notification_err,
15251 &ett_ff_lr_get_info_req,
15252 &ett_ff_lr_get_info_rsp,
15253 &ett_ff_lr_get_info_rsp_lr_flags,
15254 &ett_ff_lr_get_info_err,
15256 &ett_ff_lr_put_info_req,
15257 &ett_ff_lr_put_info_req_lr_flags,
15258 &ett_ff_lr_put_info_rsp,
15259 &ett_ff_lr_put_info_rsp_lr_flags,
15260 &ett_ff_lr_put_info_err,
15262 &ett_ff_lr_get_statistics_req,
15263 &ett_ff_lr_get_statistics_rsp,
15264 &ett_ff_lr_get_statistics_rsp_list_of_x_cable_stat,
15265 &ett_ff_lr_get_statistics_err,
15267 &ett_ff_lr_diagnostic_msg_req,
15268 &ett_ff_lr_diagnostic_msg_req_dup_detection_stat,
15269 &ett_ff_lr_diagnostic_msg_req_a_to_a_status,
15270 &ett_ff_lr_diagnostic_msg_req_b_to_a_status,
15271 &ett_ff_lr_diagnostic_msg_req_a_to_b_status,
15272 &ett_ff_lr_diagnostic_msg_req_b_to_b_status,
15275 proto_ff = proto_register_protocol("FOUNDATION Fieldbus", "FF", "ff");
15276 proto_register_field_array(proto_ff, hf, array_length(hf));
15277 proto_register_subtree_array(ett, array_length(ett));
15279 ff_udp_handle = register_dissector("ff.udp", dissect_ff_udp, proto_ff);
15280 ff_tcp_handle = register_dissector("ff.tcp", dissect_ff_tcp, proto_ff);
15285 void
15286 proto_reg_handoff_ff(void)
15289 * 4.8. Using UDP and TCP
15293 * 4.8.4.2. Use
15295 * - Device Annunciation
15296 * - Client / Server
15297 * - Set/Clear Assignment Info and Clear Address
15298 * - SM Identify
15299 * - SM Find Tag
15300 * - LAN Redundancy Get and Put Information
15302 dissector_add_uint_range_with_preference("udp.port", UDP_PORT_FF_RANGE, ff_udp_handle);
15303 dissector_add_uint_with_preference("tcp.port", TCP_PORT_FF_FMS, ff_tcp_handle);
15307 * Editor modelines - https://www.wireshark.org/tools/modelines.html
15309 * Local variables:
15310 * c-basic-offset: 4
15311 * tab-width: 8
15312 * indent-tabs-mode: nil
15313 * End:
15315 * vi: set shiftwidth=4 tabstop=8 expandtab:
15316 * :indentSize=4:tabSize=8:noTabs=true: