2 * Routines for UA3G (Universal Alcatel) packet dissection.
3 * Copyright 2012, Alcatel-Lucent Enterprise <lars.ruoff@alcatel-lucent.com>
4 * Copyright 2017, Alcatel-Lucent Enterprise <nicolas.bertin@al-enterprise.com>
6 * Wireshark - Network traffic analyzer
7 * By Gerald Combs <gerald@wireshark.org>
8 * Copyright 1998 Gerald Combs
10 * SPDX-License-Identifier: GPL-2.0-or-later
15 #include <epan/packet.h>
16 #include <epan/prefs.h>
18 #include <epan/unit_strings.h>
20 #include <wsutil/array.h>
21 #include "packet-rtp.h"
22 #include "packet-rtcp.h"
24 #include "packet-uaudp.h"
26 void proto_register_ua3g(void);
27 void proto_reg_handoff_ua3g(void);
28 /*-----------------------------------------------------------------------------
30 ---------------------------------------------------------------------------*/
33 static dissector_table_t ua3g_opcode_dissector_table
;
36 static int proto_ua3g
;
38 static int ett_ua3g_body
;
39 static int ett_ua3g_param
;
40 static int ett_ua3g_param_sub
;
41 static int ett_ua3g_option
;
42 static int ett_ua3g_beep_beep_destination
;
43 static int ett_ua3g_note
;
45 static bool setup_conversations_enabled
= true;
47 static int hf_ua3g_length
;
48 static int hf_ua3g_opcode_sys
;
49 static int hf_ua3g_opcode_term
;
50 static int hf_ua3g_opcode_production_test
;
51 static int hf_ua3g_opcode_subservice_reset
;
52 static int hf_ua3g_opcode_are_you_there
;
53 static int hf_ua3g_opcode_set_speaker_vol
;
54 static int hf_ua3g_opcode_trace_on
;
55 static int hf_ua3g_ip
;
56 static int hf_ua3g_ip_cs
;
57 static int hf_ua3g_command_led
;
58 static int hf_ua3g_command_lcd_line
;
59 static int hf_ua3g_main_voice_mode
;
60 static int hf_ua3g_command_set_clck
;
61 static int hf_ua3g_external_ringing_command
;
62 static int hf_ua3g_lcd_cursor
;
63 static int hf_ua3g_command_beep
;
64 static int hf_ua3g_command_sidetone
;
65 static int hf_ua3g_command_mute
;
66 static int hf_ua3g_command_feedback
;
67 static int hf_ua3g_command_audio_config
;
68 static int hf_ua3g_command_key_release
;
69 static int hf_ua3g_command_amplified_handset
;
70 static int hf_ua3g_command_loudspeaker
;
71 static int hf_ua3g_command_announce
;
72 static int hf_ua3g_command_ring
;
73 static int hf_ua3g_command_ua_dwl_protocol
;
74 static int hf_ua3g_command_unsolicited_msg
;
75 static int hf_ua3g_ip_device_routing_stop_rtp_parameter
;
76 static int hf_ua3g_ip_device_routing_stop_rtp_parameter_length
;
77 static int hf_ua3g_ip_device_routing_stop_rtp_parameter_value_num
;
78 static int hf_ua3g_ip_device_routing_stop_rtp_parameter_value_bytes
;
79 /* Generated from convert_proto_tree_add_text.pl */
80 static int hf_ua3g_ip_device_routing_start_tone_direction
;
81 static int hf_ua3g_ip_device_routing_start_tone_num_entries
;
82 static int hf_ua3g_ip_device_routing_def_tones_num_entries
;
83 static int hf_ua3g_cs_ip_device_routing_cmd00_characteristic_number
;
84 static int hf_ua3g_subdevice_msg_subdev_type
;
85 static int hf_ua3g_unsolicited_msg_next_byte_of_bad_segment
;
86 static int hf_ua3g_ip_device_routing_start_tone_identification
;
87 static int hf_ua3g_ip_device_routing_def_tones_level_2
;
88 static int hf_ua3g_r_w_peripheral_content
;
89 static int hf_ua3g_subdevice_metastate_subchannel_address
;
90 static int hf_ua3g_subdevice_parameter_bytes
;
91 static int hf_ua3g_subdevice_msg_parameter_bytes
;
92 static int hf_ua3g_set_clck_timer_pos_call_timer_column_number
;
93 static int hf_ua3g_unsolicited_msg_segment_failure_s
;
94 static int hf_ua3g_ip_device_routing_reset_parameter
;
95 static int hf_ua3g_ip_device_routing_get_param_req_parameter
;
96 static int hf_ua3g_set_lcd_contrast_driver_number
;
97 static int hf_ua3g_dwl_special_char_character_number
;
98 static int hf_ua3g_cs_ip_device_routing_cmd00_vta_type
;
99 static int hf_ua3g_ua_dwl_protocol_cause
;
100 static int hf_ua3g_audio_padded_path_emission_padded_level
;
101 static int hf_ua3g_set_clck_timer_pos_clock_column_number
;
102 static int hf_ua3g_segment_msg_num_remaining
;
103 static int hf_ua3g_ip_device_routing_digit_value
;
104 static int hf_ua3g_super_msg_data
;
105 static int hf_ua3g_unsolicited_msg_hardware_version
;
106 static int hf_ua3g_voice_channel_announce
;
107 static int hf_ua3g_ring_silent
;
108 static int hf_ua3g_audio_config_handsfree_return
;
109 static int hf_ua3g_dwl_dtmf_clck_format_inter_digit_pause_time
;
110 static int hf_ua3g_ip_device_routing_set_param_req_parameter_length
;
111 static int hf_ua3g_unsolicited_msg_opcode_bad_segment
;
112 static int hf_ua3g_unsolicited_msg_firmware_version_loader
;
113 static int hf_ua3g_debug_in_line
;
114 static int hf_ua3g_voice_channel_b_microphones
;
115 static int hf_ua3g_beep_beep_number
;
116 static int hf_ua3g_main_voice_mode_tune
;
117 static int hf_ua3g_super_msg_length
;
118 static int hf_ua3g_ip_device_routing_redirect_parameter
;
119 static int hf_ua3g_unsolicited_msg_next_byte_of_bad_command
;
120 static int hf_ua3g_unsolicited_msg_self_test_result
;
121 static int hf_ua3g_beep_on_off
;
122 static int hf_ua3g_ua_dwl_protocol_binary_length
;
123 static int hf_ua3g_ring_speaker_level
;
124 static int hf_ua3g_voice_channel_channel_mode
;
125 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_length
;
126 static int hf_ua3g_ip_device_routing_start_rtp_parameter
;
127 static int hf_ua3g_subdevice_metastate_new_metastate
;
128 static int hf_ua3g_unsolicited_msg_other_information_2
;
129 static int hf_ua3g_set_lcd_contrast_contrast_value
;
130 static int hf_ua3g_unsolicited_msg_vta_type
;
131 static int hf_ua3g_ua_dwl_protocol_packet_number
;
132 static int hf_ua3g_unsolicited_msg_segment_failure_l
;
133 static int hf_ua3g_voice_channel_b_ear_piece
;
134 static int hf_ua3g_subdevice_msg_subdev_address
;
135 static int hf_ua3g_ring_progressive
;
136 static int hf_ua3g_ua_dwl_protocol_item_version
;
137 static int hf_ua3g_ip_device_routing_reset_parameter_length
;
138 static int hf_ua3g_dwl_dtmf_clck_format_minimum_on_time
;
139 static int hf_ua3g_ring_melody
;
140 static int hf_ua3g_ua_dwl_protocol_item_identifier
;
141 static int hf_ua3g_main_voice_mode_speaker_volume
;
142 static int hf_ua3g_ip_device_routing_listen_rtp_parameter_length
;
143 static int hf_ua3g_ringing_cadence_length
;
144 static int hf_ua3g_software_reset
;
145 static int hf_ua3g_feedback_level
;
146 static int hf_ua3g_ip_phone_warmstart
;
147 static int hf_ua3g_subdevice_opcode
;
148 static int hf_ua3g_unsolicited_msg_device_event
;
149 static int hf_ua3g_segment_message_data
;
150 static int hf_ua3g_main_voice_mode_sending_level
;
151 static int hf_ua3g_subdevice_msg_subdevice_opcode
;
152 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter
;
153 static int hf_ua3g_audio_padded_path_reception_padded_level
;
154 static int hf_ua3g_ua_dwl_protocol_force_mode
;
155 static int hf_ua3g_lcd_line_cmd_starting_column
;
156 static int hf_ua3g_subdevice_address
;
157 static int hf_ua3g_ip_device_routing_pause_restart_rtp_parameter
;
158 static int hf_ua3g_audio_config_ignored
;
159 static int hf_ua3g_lcd_line_cmd_lcd_options
;
160 static int hf_ua3g_main_voice_mode_cadence
;
161 static int hf_ua3g_segment_msg_length
;
162 static int hf_ua3g_ua_dwl_protocol_acknowledge
;
163 static int hf_ua3g_command_led_number
;
164 static int hf_ua3g_set_clck_timer_pos_call_timer_line_number
;
165 static int hf_ua3g_unsolicited_msg_segment_failure_t
;
166 static int hf_ua3g_ip_device_routing_start_tone_duration
;
167 static int hf_ua3g_unsolicited_msg_other_information_1
;
168 static int hf_ua3g_unsolicited_msg_firmware_datas_patch_version
;
169 static int hf_ua3g_ring_beep_number
;
170 static int hf_ua3g_feedback_duration
;
171 static int hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_length
;
172 static int hf_ua3g_audio_config_law
;
173 static int hf_ua3g_ua_dwl_protocol_checksum
;
174 static int hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_value
;
175 static int hf_ua3g_audio_config_handsfree_handsfree
;
176 static int hf_ua3g_ringing_cadence_cadence
;
177 static int hf_ua3g_lcd_cursor_line_number
;
178 static int hf_ua3g_ip_device_routing_def_tones_level_1
;
179 static int hf_ua3g_unsolicited_msg_opcode_of_bad_command
;
180 static int hf_ua3g_ua_dwl_protocol_download_ack_status
;
181 static int hf_ua3g_voice_channel_main_voice
;
182 static int hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_length
;
183 static int hf_ua3g_icon_cmd_segment
;
184 static int hf_ua3g_cs_ip_device_routing_cmd01_incident_0
;
185 static int hf_ua3g_beep_destination
;
186 static int hf_ua3g_ip_device_routing_def_tones_frequency_1
;
187 static int hf_ua3g_unsolicited_msg_datas_version
;
188 static int hf_ua3g_dwl_dtmf_clck_format_dtmf_country_adaptation
;
189 static int hf_ua3g_ringing_cadence_on_off
;
190 static int hf_ua3g_audio_config_volume_level
;
191 static int hf_ua3g_voice_channel_b_general
;
192 static int hf_ua3g_beep_terminator
;
193 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter
;
194 static int hf_ua3g_unsolicited_msg_firmware_version_bootloader
;
195 static int hf_ua3g_ip_device_routing_set_param_req_parameter
;
196 static int hf_ua3g_ip_device_routing_start_rtp_direction
;
197 static int hf_ua3g_set_clck_timer_pos_clock_line_number
;
198 static int hf_ua3g_voice_channel_b_loud_speaker
;
199 static int hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter
;
200 static int hf_ua3g_on_off_level_level_on_loudspeaker
;
201 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_length
;
202 static int hf_ua3g_main_voice_mode_microphone_volume
;
203 static int hf_ua3g_sidetone_level
;
204 static int hf_ua3g_beep_number_of_notes
;
205 static int hf_ua3g_unsolicited_msg_segment_failure_num
;
206 static int hf_ua3g_dwl_special_char_byte
;
207 static int hf_ua3g_ring_cadence
;
208 static int hf_ua3g_unsolicited_msg_device_type
;
209 static int hf_ua3g_voice_channel_codec
;
210 static int hf_ua3g_ip_device_routing_redirect_parameter_length
;
211 static int hf_ua3g_ip_device_routing_listen_rtp_parameter
;
212 static int hf_ua3g_beep_cadence
;
213 static int hf_ua3g_voice_channel_voice_channel
;
214 static int hf_ua3g_unsolicited_msg_other_information
;
215 static int hf_ua3g_ip_device_routing_def_tones_frequency_2
;
216 static int hf_ua3g_digit_dialed_digit_value
;
217 static int hf_ua3g_unsolicited_msg_subdevice_address
;
218 static int hf_ua3g_ua_dwl_protocol_packet_download_end_ack_ok_status
;
219 static int hf_ua3g_r_w_peripheral_address
;
220 static int hf_ua3g_icon_cmd_icon_number
;
221 static int hf_ua3g_dwl_dtmf_clck_format_clock_time_format
;
222 static int hf_ua3g_ip_device_routing_start_rtp_parameter_length
;
223 static int hf_ua3g_i_m_here_id_code
;
224 static int hf_ua3g_ua_dwl_protocol_item_version_nc
;
225 static int hf_ua3g_unsolicited_msg_firmware_version
;
226 static int hf_ua3g_segment_msg_segment
;
227 static int hf_ua3g_ip_device_routing_reset_parameter_noe_update
;
228 static int hf_ua3g_ip_device_routing_reset_parameter_noe_update_bootloader
;
229 static int hf_ua3g_ip_device_routing_reset_parameter_noe_update_data
;
230 static int hf_ua3g_ip_device_routing_reset_parameter_noe_update_customization
;
231 static int hf_ua3g_ip_device_routing_reset_parameter_noe_update_localization
;
232 static int hf_ua3g_ip_device_routing_reset_parameter_noe_update_code
;
233 static int hf_ua3g_ip_device_routing_reset_parameter_noe_update_sip
;
234 static int hf_ua3g_ip_device_routing_reset_parameter_value
;
235 static int hf_ua3g_ip_device_routing_reset_parameter_bad_sec_mode
;
236 static int hf_ua3g_ip_device_routing_reset_parameter_cust_name
;
237 static int hf_ua3g_ip_device_routing_reset_parameter_l10n_name
;
238 static int hf_ua3g_ip_device_routing_reset_parameter_appl_mode
;
239 static int hf_ua3g_ip_device_routing_reset_parameter_sip_name
;
240 static int hf_ua3g_ip_device_routing_reset_parameter_reset_mac
;
241 static int hf_ua3g_ip_device_routing_start_rtp_parameter_ip
;
242 static int hf_ua3g_ip_device_routing_start_rtp_parameter_compressor
;
243 static int hf_ua3g_ip_device_routing_start_rtp_parameter_value
;
244 static int hf_ua3g_ip_device_routing_start_rtp_parameter_enabler
;
245 static int hf_ua3g_ip_device_routing_start_rtp_parameter_send_qos
;
246 static int hf_ua3g_ip_device_routing_start_rtp_parameter_dtmf_sending
;
247 static int hf_ua3g_ip_device_routing_start_rtp_parameter_rfc2198
;
248 static int hf_ua3g_ip_device_routing_start_rtp_parameter_srtp_encryption
;
249 static int hf_ua3g_ip_device_routing_start_rtp_parameter_uint
;
250 static int hf_ua3g_ip_device_routing_redirect_parameter_ip
;
251 static int hf_ua3g_ip_device_routing_redirect_parameter_uint
;
252 static int hf_ua3g_ip_device_routing_redirect_parameter_value
;
253 static int hf_ua3g_ip_device_routing_listen_rtp_parameter_ip
;
254 static int hf_ua3g_ip_device_routing_listen_rtp_parameter_port
;
255 static int hf_ua3g_ip_device_routing_listen_rtp_parameter_value
;
256 static int hf_ua3g_ip_device_routing_set_param_req_parameter_compressor
;
257 static int hf_ua3g_ip_device_routing_set_param_req_parameter_err_string
;
258 static int hf_ua3g_ip_device_routing_set_param_req_parameter_tftp_backup_ip
;
259 static int hf_ua3g_ip_device_routing_set_param_req_parameter_set_pc_port_status
;
260 static int hf_ua3g_ip_device_routing_set_param_req_parameter_record_rtp_auth
;
261 static int hf_ua3g_ip_device_routing_set_param_req_parameter_security_flag_filter
;
262 static int hf_ua3g_ip_device_routing_set_param_req_parameter_stable_mode
;
263 static int hf_ua3g_ip_device_routing_set_param_req_parameter_skin_id
;
264 static int hf_ua3g_ip_device_routing_set_param_req_parameter_language_id
;
265 static int hf_ua3g_ip_device_routing_set_param_req_parameter_usb_boost
;
266 static int hf_ua3g_ip_device_routing_set_param_req_parameter_als_device
;
267 static int hf_ua3g_ip_device_routing_set_param_req_parameter_busy_light
;
268 static int hf_ua3g_ip_device_routing_set_param_req_parameter_audio_env
;
269 static int hf_ua3g_ip_device_routing_set_param_req_parameter_uint
;
270 static int hf_ua3g_ip_device_routing_set_param_req_parameter_value
;
271 static int hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_uint
;
272 static int hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_remote_ip
;
273 static int hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_uint
;
274 static int hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value
;
275 static int hf_ua3g_ip_device_routing_freeseating_parameter
;
276 static int hf_ua3g_ip_device_routing_freeseating_parameter_length
;
277 static int hf_ua3g_ip_device_routing_freeseating_parameter_mac
;
278 static int hf_ua3g_ip_device_routing_freeseating_parameter_ip
;
279 static int hf_ua3g_ip_device_routing_freeseating_parameter_ipv6
;
280 static int hf_ua3g_ip_device_routing_freeseating_parameter_do_reset
;
281 static int hf_ua3g_ip_device_routing_freeseating_parameter_uint
;
282 static int hf_ua3g_ip_device_routing_freeseating_parameter_value
;
283 static int hf_ua3g_ip_device_routing_appl_parameter
;
284 static int hf_ua3g_ip_device_routing_appl_parameter_length
;
285 static int hf_ua3g_ip_device_routing_appl_parameter_id
;
286 static int hf_ua3g_ip_device_routing_appl_parameter_enable
;
287 static int hf_ua3g_ip_device_routing_appl_parameter_url
;
288 static int hf_ua3g_ip_device_routing_appl_parameter_uint
;
289 static int hf_ua3g_ip_device_routing_appl_parameter_value
;
290 static int hf_ua3g_main_voice_mode_handset_level
;
291 static int hf_ua3g_main_voice_mode_headset_level
;
292 static int hf_ua3g_main_voice_mode_handsfree_level
;
293 static int hf_ua3g_audio_config_dpi_chan_ua_tx1
;
294 static int hf_ua3g_audio_config_dpi_chan_ua_tx2
;
295 static int hf_ua3g_audio_config_dpi_chan_gci_tx1
;
296 static int hf_ua3g_audio_config_dpi_chan_gci_tx2
;
297 static int hf_ua3g_audio_config_dpi_chan_cod_tx
;
298 static int hf_ua3g_audio_config_audio_circuit_dth
;
299 static int hf_ua3g_audio_config_audio_circuit_dtr
;
300 static int hf_ua3g_audio_config_audio_circuit_dtf
;
301 static int hf_ua3g_audio_config_audio_circuit_str
;
302 static int hf_ua3g_audio_config_audio_circuit_ahp1
;
303 static int hf_ua3g_audio_config_audio_circuit_ahp2
;
304 static int hf_ua3g_audio_config_audio_circuit_ath
;
305 static int hf_ua3g_audio_config_audio_circuit_atr
;
306 static int hf_ua3g_audio_config_audio_circuit_atf
;
307 static int hf_ua3g_audio_config_audio_circuit_alm
;
308 static int hf_ua3g_audio_config_loudspeaker_aco_param_group_listen
;
309 static int hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_attenuation
;
310 static int hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_stay_in_send
;
311 static int hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_shift_right_mtx
;
312 static int hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_shift_right_mrc
;
313 static int hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_idle_trans_threshold
;
314 static int hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_low_trans_threshold
;
315 static int hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_idle_recv_threshold
;
316 static int hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_low_recv_threshold
;
317 static int hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_med_recv_threshold
;
318 static int hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_high_recv_threshold
;
319 static int hf_ua3g_ua_dwl_protocol_files_inc_boot_binary
;
320 static int hf_ua3g_ua_dwl_protocol_files_inc_loader_binary
;
321 static int hf_ua3g_ua_dwl_protocol_files_inc_appli_binary
;
322 static int hf_ua3g_ua_dwl_protocol_files_inc_data_binary
;
323 static int hf_ua3g_ua_dwl_protocol_model_selection_a
;
324 static int hf_ua3g_ua_dwl_protocol_model_selection_b
;
325 static int hf_ua3g_ua_dwl_protocol_model_selection_c
;
326 static int hf_ua3g_ua_dwl_protocol_model_selection_country_ver
;
327 static int hf_ua3g_ua_dwl_protocol_hardware_selection_ivanoe1
;
328 static int hf_ua3g_ua_dwl_protocol_hardware_selection_ivanoe2
;
329 static int hf_ua3g_ua_dwl_protocol_memory_sizes_flash
;
330 static int hf_ua3g_ua_dwl_protocol_memory_sizes_ext_ram
;
331 static int hf_ua3g_unsolicited_msg_char_num_vta_subtype
;
332 static int hf_ua3g_unsolicited_msg_char_num_generation
;
333 static int hf_ua3g_unsolicited_msg_char_num_design
;
334 static int hf_ua3g_unsolicited_msg_hardware_config_vta_type
;
335 static int hf_ua3g_unsolicited_msg_hardware_config_design
;
336 static int hf_ua3g_unsolicited_msg_hardware_config_subtype
;
337 static int hf_ua3g_unsolicited_msg_hardware_config_hard_config_chip
;
338 static int hf_ua3g_unsolicited_msg_hardware_config_hard_config_flash
;
339 static int hf_ua3g_unsolicited_msg_hardware_config_config_ram
;
340 static int hf_ua3g_unsolicited_msg_hardware_config
;
341 static int hf_ua3g_unsolicited_msg_hardware_config_export_full
;
342 static int hf_ua3g_unsolicited_msg_hardware_config_ethernet_hardware
;
343 static int hf_ua3g_unsolicited_msg_hardware_config_extended_edition
;
344 static int hf_ua3g_unsolicited_msg_hardware_config_wideband
;
345 static int hf_ua3g_unsolicited_msg_hardware_config_3g_set
;
346 static int hf_ua3g_unsolicited_msg_hardware_config_8082_set
;
347 static int hf_ua3g_unsolicited_msg_hardware_config_super_wideband
;
348 static int hf_ua3g_unsolicited_msg_hook_status
;
349 static int hf_ua3g_unsolicited_msg_additional_vta_type
;
350 static int hf_ua3g_unsolicited_msg_capability_info_bluetooth_supported
;
351 static int hf_ua3g_unsolicited_msg_capability_info_vpn_encryption_status
;
352 static int hf_ua3g_unsolicited_msg_capability_info_vpn
;
353 static int hf_ua3g_unsolicited_msg_capability_info_ipsec
;
354 static int hf_ua3g_unsolicited_msg_capability_info_dtls
;
355 static int hf_ua3g_unsolicited_msg_capability_info_wlan_status
;
356 static int hf_ua3g_unsolicited_msg_capability_info_reserved
;
357 static int hf_ua3g_special_key_shift
;
358 static int hf_ua3g_special_key_ctrl
;
359 static int hf_ua3g_special_key_alt
;
360 static int hf_ua3g_special_key_cmd
;
361 static int hf_ua3g_special_key_shift_prime
;
362 static int hf_ua3g_special_key_ctrl_prime
;
363 static int hf_ua3g_special_key_alt_prime
;
364 static int hf_ua3g_special_key_cmd_prime
;
365 static int hf_ua3g_lcd_line_cmd_lcd_options_call_timer
;
366 static int hf_ua3g_lcd_line_cmd_lcd_options_blink
;
367 static int hf_ua3g_lcd_line_cmd_lcd_options_call_timer_control
;
368 static int hf_ua3g_lcd_line_cmd_lcd_options_call_timer_display
;
369 static int hf_ua3g_lcd_line_cmd_lcd_options_time_of_day_display
;
370 static int hf_ua3g_lcd_line_cmd_lcd_options_suspend_display_refresh
;
371 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_firmware_version
;
372 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_tscip_version
;
373 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_ip
;
374 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_default_codec_uint
;
375 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_default_codec_bytes
;
376 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_mac_address
;
377 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_uint
;
378 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_value
;
379 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_lan_speed
;
380 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_lan_duplex
;
381 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_pc_speed
;
382 static int hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_pc_duplex
;
383 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_type_of_equip
;
384 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_firmware_version
;
385 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_ip
;
386 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_string
;
387 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_codec
;
388 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_vad
;
389 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_ece
;
390 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_voice_mode
;
391 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_delay_distribution
;
392 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_consecutive_bfi
;
393 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_bfi_distribution
;
394 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_8021Q_used
;
395 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_8021P_priority
;
396 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_vlan_id
;
397 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_diffserv
;
398 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_bfi_distribution_200ms
;
399 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_consecutive_rtp_lost
;
400 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_uint
;
401 static int hf_ua3g_cs_ip_device_routing_cmd03_parameter_jitter_depth_distribution
;
402 static int hf_ua3g_special_key_param_dtmf
;
403 static int hf_ua3g_special_key_hookswitch_status
;
404 static int hf_ua3g_subdevice_state
;
405 static int hf_ua3g_cs_ip_device_routing_param_identifier
;
406 static int hf_ua3g_key_number
;
407 static int hf_ua3g_ua_dwl_protocol_binary_info
;
408 static int hf_ua3g_lcd_line_cmd_unused
;
409 static int hf_ua3g_lcd_line_cmd_ascii_char
;
410 static int hf_ua3g_call_timer
;
411 static int hf_ua3g_current_time
;
412 static int hf_ua3g_beep_beep_destination_handset
;
413 static int hf_ua3g_beep_beep_destination_headset
;
414 static int hf_ua3g_beep_beep_destination_loudspeaker
;
415 static int hf_ua3g_beep_beep_destination_announce_loudspeaker
;
416 static int hf_ua3g_beep_beep_destination_handsfree
;
417 static int hf_ua3g_beep_beep_destination
;
418 static int hf_ua3g_beep_freq_sample
;
419 static int hf_ua3g_beep_level
;
420 static int hf_ua3g_beep_duration
;
421 static int hf_ua3g_device_configuration
;
424 /* Definition of opcodes */
425 /* System To Terminal */
427 #define SC_PRODUCTION_TEST 0x01 /* IP Phone */
428 #define SC_SUBDEVICE_ESCAPE 0x02 /* IP Phone */
429 #define SC_SOFT_RESET 0x03
430 #define SC_IP_PHONE_WARMSTART 0x04 /* IP Phone */
431 #define SC_HE_ROUTING 0x05 /* IP Phone - NOT EXPECTED */
432 #define SC_SUBDEVICE_RESET 0x06
433 #define SC_LOOPBACK_ON 0x07 /* IP Phone & UA NOE */
434 #define SC_LOOPBACK_OFF 0x08 /* IP Phone & UA NOE */
435 #define SC_VIDEO_ROUTING 0x09 /* IP Phone - NOT EXPECTED */
436 #define SC_SUPER_MSG 0x0B
437 #define SC_SEGMENT_MSG 0x0C
438 #define SC_REMOTE_UA_ROUTING 0x0D /* IP Phone - NOT EXPECTED */
439 #define SC_VERY_REMOTE_UA_ROUTING 0x0E /* IP Phone - NOT EXPECTED */
440 #define SC_OSI_ROUTING 0x0F /* IP Phone - NOT EXPECTED */
441 #define SC_ABC_A_ROUTING 0x11 /* IP Phone - NOT EXPECTED */
442 #define SC_IBS_ROUTING 0x12 /* IP Phone - NOT EXPECTED */
443 #define SC_IP_DEVICE_ROUTING 0x13
444 #define SC_M_REFLEX_HUB_ROUTING 0x14 /* IP Phone - NOT EXPECTED */
446 #define SC_NOE_CS_ROUTING 0x15 /* Decoded by packet-noe.c */
447 #define SC_NOE_PS_ROUTING 0x16 /* Decoded by packet-noe.c */
449 #define SC_SUPER_MSG_2 0x17
450 #define SC_DEBUG_IN_LINE 0x18
451 #define SC_LED_COMMAND 0x21 /* IP Phone */
452 #define SC_START_BUZZER 0x22 /* VTA */
453 #define SC_STOP_BUZZER 0x23 /* VTA */
454 #define SC_ENABLE_DTMF 0x24 /* Only IP NOE */
455 #define SC_DISABLE_DTMF 0x25 /* Only IP NOE */
456 #define SC_CLEAR_LCD_DISP 0x26 /* IP Phone */
457 #define SC_LCD_LINE_1_CMD 0x27 /* IP Phone */
458 #define SC_LCD_LINE_2_CMD 0x28 /* IP Phone */
459 #define SC_MAIN_VOICE_MODE 0x29
460 #define SC_VERSION_INQUIRY 0x2A
461 #define SC_ARE_YOU_THERE 0x2B /* IP Phone & UA NOE */
462 #define SC_SUBDEVICE_METASTATE 0x2C
463 #define SC_VTA_STATUS_INQUIRY 0x2D /* IP Phone */
464 #define SC_SUBDEVICE_STATE 0x2E
465 #define SC_DWL_DTMF_CLCK_FORMAT 0x30 /* IP Phone */
466 #define SC_SET_CLCK 0x31 /* IP Phone */
467 #define SC_VOICE_CHANNEL 0x32 /* IP Phone & UA NOE */
468 #define SC_EXTERNAL_RINGING 0x33
469 #define SC_LCD_CURSOR 0x35 /* IP Phone */
470 #define SC_DWL_SPECIAL_CHAR 0x36 /* IP Phone */
471 #define SC_SET_CLCK_TIMER_POS 0x38 /* IP Phone */
472 #define SC_SET_LCD_CONTRAST 0x39 /* IP Phone */
473 #define SC_AUDIO_IDLE 0x3A
474 #define SC_SET_SPEAKER_VOL 0x3B /* IP Phone */
476 #define SC_SIDETONE 0x3D
477 #define SC_RINGING_CADENCE 0x3E
479 #define SC_FEEDBACK 0x40
480 #define SC_KEY_RELEASE 0x41 /* IP Phone */
481 #define SC_TRACE_ON 0x42 /* IP Phone - NOT EXPECTED */
482 #define SC_TRACE_OFF 0x43 /* IP Phone - NOT EXPECTED */
483 #define SC_READ_PERIPHERAL 0x44 /* IP Phone - NOT EXPECTED */
484 #define SC_WRITE_PERIPHERAL 0x45 /* IP Phone - NOT EXPECTED */
485 #define SC_ALL_ICONS_OFF 0x46 /* IP Phone */
486 #define SC_ICON_CMD 0x47 /* IP Phone */
487 #define SC_AMPLIFIED_HANDSET 0x48 /* IP Phone */
488 #define SC_AUDIO_CONFIG 0x49
489 #define SC_AUDIO_PADDED_PATH 0x4A /* IP Phone */
490 #define SC_RELEASE_RADIO_LINK 0x4B /* IP Phone - NOT EXPECTED */
491 #define SC_DECT_HANDOVER 0x4C /* IP Phone - NOT EXPECTED */
492 #define SC_LOUDSPEAKER 0x4D
493 #define SC_ANNOUNCE 0x4E
495 #define SC_UA_DWL_PROTOCOL 0x50 /* Only UA NOE */
497 /* Terminal To System */
498 #define CS_NOP_ACK 0x00
499 #define CS_HANDSET_OFFHOOK 0x01 /* IP Phone */
500 #define CS_HANDSET_ONHOOK 0x02 /* IP Phone */
501 #define CS_DIGIT_DIALED 0x03 /* IP Phone */
502 #define CS_SUBDEVICE_MSG 0x04
503 #define CS_HE_ROUTING 0x05 /* IP Phone - NOT EXPECTED */
504 #define CS_LOOPBACK_ON 0x06 /* IP Phone & UA NOE */
505 #define CS_LOOPBACK_OFF 0x07 /* IP Phone & UA NOE */
506 #define CS_VIDEO_ROUTING 0x09 /* IP Phone - NOT EXPECTED */
507 #define CS_WARMSTART_ACK 0x0A /* IP Phone */
508 #define CS_SUPER_MSG 0x0B /* IP Phone - NOT EXPECTED */
509 #define CS_SEGMENT_MSG 0x0C
510 #define CS_REMOTE_UA_ROUTING 0x0D /* IP Phone - NOT EXPECTED */
511 #define CS_VERY_REMOTE_UA_R 0x0E /* IP Phone - NOT EXPECTED */
512 #define CS_OSI_ROUTING 0x0F /* IP Phone - NOT EXPECTED */
513 #define CS_ABC_A_ROUTING 0x11 /* IP Phone - NOT EXPECTED */
514 #define CS_IBS_ROUTING 0x12 /* IP Phone - NOT EXPECTED */
515 #define CS_IP_DEVICE_ROUTING 0x13
517 #define CS_NOE_CS_ROUTING 0x15 /* Decoded by packet-noe.c */
518 #define CS_NOE_PS_ROUTING 0x16 /* Decoded by packet-noe.c */
520 #define CS_SUPER_MSG_2 0x17
521 #define CS_DEBUG_IN_LINE 0x18
522 #define CS_NON_DIGIT_KEY_PUSHED 0x20 /* IP Phone */
523 #define CS_VERSION_RESPONSE 0x21
524 #define CS_I_M_HERE 0x22
525 #define CS_RSP_STATUS_INQUIRY 0x23 /* IP Phone */
526 #define CS_SUBDEVICE_STATE 0x24
527 #define CS_DIGIT_KEY_RELEASED 0x26 /* IP Phone */
528 #define CS_TRACE_ON_ACK 0x27 /* IP Phone */
529 #define CS_TRACE_OFF_ACK 0x28 /* IP Phone */
530 #define CS_SPECIAL_KEY_STATUS 0x29 /* IP Phone */
531 #define CS_KEY_RELEASED 0x2A /* IP Phone */
532 #define CS_PERIPHERAL_CONTENT 0x2B /* IP Phone */
533 #define CS_TM_KEY_PUSHED 0x2D /* IP Phone */
534 #define CS_UA_DWL_PROTOCOL 0x50 /* Only UA NOE */
535 #define CS_UNSOLICITED_MSG 0x9F
537 /* System To Terminal Opcodes */
538 static const value_string opcodes_vals_sys
[] =
541 {SC_PRODUCTION_TEST
, "Production Test"}, /* IP Phone */
542 {SC_SUBDEVICE_ESCAPE
, "Subdevice Escape To Subdevice"}, /* IP Phone */
543 {SC_SOFT_RESET
, "Software Reset"},
544 {SC_IP_PHONE_WARMSTART
, "IP-Phone Warmstart"}, /* IP Phone */
545 {SC_HE_ROUTING
, "HE Routing Code"}, /* IP Phone - NOT EXPECTED */
546 {SC_SUBDEVICE_RESET
, "Subdevice Reset"},
547 {SC_LOOPBACK_ON
, "Loopback On"},
548 {SC_LOOPBACK_OFF
, "Loopback Off"},
549 {SC_VIDEO_ROUTING
, "Video Routing Code"}, /* IP Phone - NOT EXPECTED */
550 {SC_SUPER_MSG
, "Super Message"},
551 {SC_SEGMENT_MSG
, "Segment Message"},
552 {SC_REMOTE_UA_ROUTING
, "Remote UA Routing Code"}, /* IP Phone - NOT EXPECTED */
553 {SC_VERY_REMOTE_UA_ROUTING
, "Very Remote UA Routing Code"}, /* IP Phone - NOT EXPECTED */
554 {SC_OSI_ROUTING
, "OSI Routing Code"}, /* IP Phone - NOT EXPECTED */
555 {SC_ABC_A_ROUTING
, "ABC-A Routing Code"}, /* IP Phone - NOT EXPECTED */
556 {SC_IBS_ROUTING
, "IBS Routing Code"}, /* IP Phone - NOT EXPECTED */
557 {SC_IP_DEVICE_ROUTING
, "IP Device Routing"},
558 {SC_M_REFLEX_HUB_ROUTING
, "Mutli-Reflex Hub Routing Code"}, /* IP Phone - NOT EXPECTED */
559 {SC_SUPER_MSG_2
, "Super Message 2"},
560 {SC_DEBUG_IN_LINE
, "Debug In Line"},
561 {SC_LED_COMMAND
, "Led Command"}, /* IP Phone */
562 {SC_START_BUZZER
, "Start Buzzer"}, /* VTA */
563 {SC_STOP_BUZZER
, "Stop Buzzer"}, /* VTA */
564 {SC_ENABLE_DTMF
, "Enable DTMF"},
565 {SC_DISABLE_DTMF
, "Disable DTMF"},
566 {SC_CLEAR_LCD_DISP
, "Clear LCD Display"}, /* IP Phone */
567 {SC_LCD_LINE_1_CMD
, "LCD Line 1 Commands"}, /* IP Phone */
568 {SC_LCD_LINE_2_CMD
, "LCD Line 2 Commands"}, /* IP Phone */
569 {SC_MAIN_VOICE_MODE
, "Main Voice Mode"},
570 {SC_VERSION_INQUIRY
, "Version Inquiry"},
571 {SC_ARE_YOU_THERE
, "Are You There?"},
572 {SC_SUBDEVICE_METASTATE
, "Subdevice Metastate"},
573 {SC_VTA_STATUS_INQUIRY
, "VTA Status Inquiry"}, /* IP Phone */
574 {SC_SUBDEVICE_STATE
, "Subdevice State?"},
575 {SC_DWL_DTMF_CLCK_FORMAT
, "Download DTMF & Clock Format"}, /* IP Phone */
576 {SC_SET_CLCK
, "Set Clock"}, /* IP Phone */
577 {SC_VOICE_CHANNEL
, "Voice Channel"}, /* IP Phone & UA NOE */
578 {SC_EXTERNAL_RINGING
, "External Ringing"},
579 {SC_LCD_CURSOR
, "LCD Cursor"}, /* IP Phone */
580 {SC_DWL_SPECIAL_CHAR
, "Download Special Character"}, /* IP Phone */
581 {SC_SET_CLCK_TIMER_POS
, "Set Clock/Timer Position"}, /* IP Phone */
582 {SC_SET_LCD_CONTRAST
, "Set LCD Contrast"}, /* IP Phone */
583 {SC_AUDIO_IDLE
, "Audio Idle"},
584 {SC_SET_SPEAKER_VOL
, "Set Speaker Volume"}, /* IP Phone */
586 {SC_SIDETONE
, "Sidetone"},
587 {SC_RINGING_CADENCE
, "Set Programmable Ringing Cadence"},
589 {SC_FEEDBACK
, "Feedback"},
590 {SC_KEY_RELEASE
, "Key Release"}, /* IP Phone */
591 {SC_TRACE_ON
, "Trace On"}, /* IP Phone - NOT EXPECTED */
592 {SC_TRACE_OFF
, "Trace Off"}, /* IP Phone - NOT EXPECTED */
593 {SC_READ_PERIPHERAL
, "Read Peripheral"}, /* IP Phone - NOT EXPECTED */
594 {SC_WRITE_PERIPHERAL
, "Write Peripheral"}, /* IP Phone - NOT EXPECTED */
595 {SC_ALL_ICONS_OFF
, "All Icons Off"}, /* IP Phone */
596 {SC_ICON_CMD
, "Icon Command"}, /* IP Phone */
597 {SC_AMPLIFIED_HANDSET
, "Amplified Handset (Boost)"}, /* IP Phone */
598 {SC_AUDIO_CONFIG
, "Audio Config"},
599 {SC_AUDIO_PADDED_PATH
, "Audio Padded Path"}, /* IP Phone */
600 {SC_RELEASE_RADIO_LINK
, "Release Radio Link"}, /* IP Phone - NOT EXPECTED */
601 {SC_DECT_HANDOVER
, "DECT External Handover Routing Code"}, /* IP Phone - NOT EXPECTED */
602 {SC_LOUDSPEAKER
, "Loudspeaker"},
603 {SC_ANNOUNCE
, "Announce"},
605 {SC_UA_DWL_PROTOCOL
, "UA Download Protocol"},
608 static value_string_ext opcodes_vals_sys_ext
= VALUE_STRING_EXT_INIT(opcodes_vals_sys
);
610 /* Terminal To System Opcodes */
611 static const value_string opcodes_vals_term
[] =
613 {CS_NOP_ACK
, "NOP Acknowledge"},
614 {CS_HANDSET_OFFHOOK
, "Handset Offhook"}, /* IP Phone */
615 {CS_HANDSET_ONHOOK
, "Handset Onhook"}, /* IP Phone */
616 {CS_DIGIT_DIALED
, "Digital Dialed"}, /* IP Phone */
617 {CS_SUBDEVICE_MSG
, "Subdevice Message"},
618 {CS_HE_ROUTING
, "HE Routing Response Code"}, /* IP Phone - NOT EXPECTED */
619 {CS_LOOPBACK_ON
, "Loopback On Acknowledge"}, /* Same as CS To Terminal */
620 {CS_LOOPBACK_OFF
, "Loopback Off Acknowledge"}, /* Same as CS To Terminal */
621 {CS_VIDEO_ROUTING
, "Video Routing Response Code"}, /* IP Phone - NOT EXPECTED */
622 {CS_WARMSTART_ACK
, "Warmstart Acknowledge"}, /* IP Phone */
623 {CS_SUPER_MSG
, "Super Message"}, /* IP Phone - NOT EXPECTED */
624 {CS_SEGMENT_MSG
, "Segment Message"}, /* Same as CS To Terminal */
625 {CS_REMOTE_UA_ROUTING
, "Remote UA Routing Response Code"}, /* IP Phone - NOT EXPECTED */
626 {CS_VERY_REMOTE_UA_R
, "Very Remote UA Routing Response Code"}, /* IP Phone - NOT EXPECTED */
627 {CS_OSI_ROUTING
, "OSI Response Code"}, /* IP Phone - NOT EXPECTED */
628 {CS_ABC_A_ROUTING
, "ABC-A Routing Response Code"}, /* IP Phone - NOT EXPECTED */
629 {CS_IBS_ROUTING
, "IBS Routing Response Code"}, /* IP Phone - NOT EXPECTED */
630 {CS_IP_DEVICE_ROUTING
, "IP Device Routing"},
631 {CS_SUPER_MSG_2
, "Super Message 2"}, /* Same as CS To Terminal */
632 {CS_DEBUG_IN_LINE
, "Debug Message"},
633 {CS_NON_DIGIT_KEY_PUSHED
, "Non-Digit Key Pushed"}, /* IP Phone */
634 {CS_VERSION_RESPONSE
, "Version Information"},
635 {CS_I_M_HERE
, "I'm Here Response"},
636 {CS_RSP_STATUS_INQUIRY
, "Response To Status Inquiry"}, /* IP Phone */
637 {CS_SUBDEVICE_STATE
, "Subdevice State Response"},
638 {CS_DIGIT_KEY_RELEASED
, "Digit Key Released"}, /* IP Phone */
639 {CS_TRACE_ON_ACK
, "Trace On Acknowledge"}, /* IP Phone - NOT EXPECTED */
640 {CS_TRACE_OFF_ACK
, "Trace Off Acknowledge"}, /* IP Phone - NOT EXPECTED */
641 {CS_SPECIAL_KEY_STATUS
, "Special Key Status"}, /* IP Phone */
642 {CS_KEY_RELEASED
, "Key Released"}, /* IP Phone */
643 {CS_PERIPHERAL_CONTENT
, "Peripheral Content"}, /* IP Phone - NOT EXPECTED */
644 {CS_TM_KEY_PUSHED
, "TM Key Pushed"}, /* IP Phone - NOT EXPECTED */
645 {CS_UA_DWL_PROTOCOL
, "Download Protocol"},
646 {CS_UNSOLICITED_MSG
, "Unsolicited Message"},
649 static value_string_ext opcodes_vals_term_ext
= VALUE_STRING_EXT_INIT(opcodes_vals_term
);
651 static const value_string str_digit
[] = {
671 static value_string_ext str_digit_ext
= VALUE_STRING_EXT_INIT(str_digit
);
673 #define STR_ON_OFF(arg) ((arg) ? "On" : "Off")
674 #define STR_YES_NO(arg) ((arg) ? "Yes" : "No")
676 static const value_string str_yes_no
[] = {
682 static const value_string str_on_off
[] = {
688 static const value_string str_device_type
[] = {
689 {0x00, "Voice Terminal Adaptor"},
694 /*-----------------------------------------------------------------------------
695 VERSION NUMBER COMPUTER - This function computes a version number (S.SZ.AB) from a 16 bits number
696 ---------------------------------------------------------------------------*/
698 version_number_computer( char *result
, uint32_t hexa_version
)
700 int release
, vers
, fix
;
702 release
= (int)(hexa_version
/ 10000);
703 vers
= (int)((hexa_version
% 10000) / 100);
704 fix
= (hexa_version
% 10000) % 100;
705 snprintf( result
, ITEM_LABEL_LENGTH
, "%d.%02d.%02d", release
, vers
, fix
);
709 version_3bytes_computer(char *result
, uint32_t hexa_version
)
711 int release
, vers
, fix
;
713 release
= (hexa_version
>> 16);
714 vers
= ((hexa_version
>> 8) & 0xff);
715 fix
= (hexa_version
& 0xff);
716 snprintf(result
, ITEM_LABEL_LENGTH
, "%d.%02d.%02d", release
, vers
, fix
);
720 /*-----------------------------------------------------------------------------
721 Function for UA3G message with opcode and one parameter
723 PRODUCTION TEST - 01h (MESSAGE FROM THE SYSTEM)
724 SUBDEVICE RESET - 06h (MESSAGE FROM THE SYSTEM)
725 ARE YOU THERE - 2Bh - IPhone & UA NOE (MESSAGE FROM THE SYSTEM)
726 SET SPEAKER VOLUME - 3Bh (MESSAGE FROM THE SYSTEM)
727 TRACE ON - 42h (MESSAGE FROM THE SYSTEM)
728 ---------------------------------------------------------------------------*/
730 decode_with_one_parameter(proto_tree
*tree
, tvbuff_t
*tvb
,
731 packet_info
*pinfo _U_
, unsigned offset
, unsigned length
,
737 proto_tree_add_item(tree
, hf_opcode
, tvb
, offset
, 1, ENC_NA
);
741 /*-----------------------------------------------------------------------------
742 SUBDEVICE ESCAPE TO SUBDEVICE - 02h (MESSAGE FROM THE SYSTEM)
743 ---------------------------------------------------------------------------*/
745 decode_subdevice_escape(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
746 unsigned offset
, unsigned length
)
748 proto_tree_add_item(tree
, hf_ua3g_subdevice_address
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
749 proto_tree_add_item(tree
, hf_ua3g_subdevice_opcode
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
751 proto_tree_add_item(tree
, hf_ua3g_subdevice_parameter_bytes
, tvb
, offset
+2, length
-2, ENC_NA
);
756 /*-----------------------------------------------------------------------------
757 SOFTWARE RESET - 03h (MESSAGE FROM THE SYSTEM)
758 ---------------------------------------------------------------------------*/
759 static const value_string software_reset_verswitch_vals
[] = {
760 {0x00, "Reset Without Version Switch"},
761 {0x01, "Reset With Version Switch"},
766 decode_software_reset(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
767 unsigned offset
, unsigned length
)
772 proto_tree_add_item(tree
, hf_ua3g_software_reset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
776 /*-----------------------------------------------------------------------------
777 IP-PHONE WARMSTART - 04h (MESSAGE FROM THE SYSTEM)
778 ---------------------------------------------------------------------------*/
779 static const value_string str_command_ip_phone_warmstart
[] = {
780 {0x00, "Run In UA2G Emulation Mode"},
781 {0x01, "Run In Full UA3G Mode"},
786 decode_ip_phone_warmstart(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
787 unsigned offset
, unsigned length
)
792 proto_tree_add_item(tree
, hf_ua3g_ip_phone_warmstart
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
796 /*-----------------------------------------------------------------------------
797 SUPER MESSAGE - 0Bh (MESSAGE FROM THE SYSTEM)
798 SUPER MESSAGE 2 - 17h (MESSAGE FROM THE SYSTEM)
799 ---------------------------------------------------------------------------*/
801 decode_super_msg(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
802 unsigned offset
, unsigned length
, uint8_t opcode
)
804 proto_tree
*ua3g_body_tree
= tree
;
805 int j
= 0, parameter_length
;
811 if (opcode
== 0x17) {
812 parameter_length
= tvb_get_ntohs(tvb
, offset
);
813 proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_super_msg_length
, tvb
, offset
, 2,
814 parameter_length
, "Length %d: %d", j
++, parameter_length
);
818 parameter_length
= tvb_get_uint8(tvb
, offset
);
819 proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_super_msg_length
, tvb
, offset
, 1,
820 parameter_length
, "Length %d: %d", j
++, parameter_length
);
825 if (parameter_length
> 0) {
826 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_super_msg_data
, tvb
, offset
, parameter_length
, ENC_NA
);
827 offset
+= parameter_length
;
828 length
-= parameter_length
;
834 /*-----------------------------------------------------------------------------
835 SEGMENT MESSAGE - 0Ch (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM)
836 ---------------------------------------------------------------------------*/
837 static const true_false_string tfs_segment_msg_segment
= { "First Segment", "Subsequent Segment" };
840 decode_segment_msg(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
841 unsigned offset
, unsigned length
)
848 val
= tvb_get_uint8(tvb
, offset
);
849 proto_tree_add_item(tree
, hf_ua3g_segment_msg_segment
, tvb
, offset
, 1, ENC_NA
);
850 proto_tree_add_item(tree
, hf_ua3g_segment_msg_num_remaining
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
855 proto_tree_add_item(tree
, hf_ua3g_segment_msg_length
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
861 proto_tree_add_item(tree
, hf_ua3g_segment_message_data
, tvb
, offset
, length
, ENC_NA
);
866 /*-----------------------------------------------------------------------------
867 IP DEVICE ROUTING - 13h (MESSAGE FROM THE SYSTEM)
868 ---------------------------------------------------------------------------*/
869 static const value_string str_command_ip_device_routing
[] = {
874 {0x04, "Tone Definition"},
875 {0x05, "Start Tone"},
877 {0x07, "Start Listen RTP"},
878 {0x08, "Stop Listen RTP"},
879 {0x09, "Get Parameters Value"},
880 {0x0A, "Set Parameters Value"},
881 {0x0B, "Send Digit"},
883 {0x0D, "Restart RTP"},
884 {0x0E, "Start Record RTP"},
885 {0x0F, "Stop Record RTP"},
886 {0x10, "Set SIP Parameters"},
887 {0x11, "Free Seating"},
888 {0x14, "Application Parameters"},
892 static const value_string ip_device_routing_cmd_reset_vals
[] = {
893 {0x00, "Update Mode"},
894 {0x01, "Bad Sec Mode"},
895 {0x02, "Customization Name"},
896 {0x03, "Localization Name"},
900 static const value_string reset_param_bad_sec_mode
[] = {
901 {0x01, "Binary is full, CS is secured, but terminal running in clear mode"},
905 static const value_string start_rtp_str_direction
[] = {
906 {0x00, "Terminal Input"},
907 {0x01, "Terminal Output"},
908 {0x02, "Terminal Input/Output (Both Directions)"},
912 static const value_string ip_device_routing_cmd_start_rtp_vals
[] = {
913 {0x00, "Local UDP Port"},
914 {0x01, "Remote IP Address"},
915 {0x02, "Remote UDP Port"},
916 {0x03, "Type Of Service"},
917 {0x04, "Compressor"},
918 {0x05, "Payload Concatenation (ms)"},
919 {0x06, "Echo Cancellation Enabler"},
920 {0x07, "Silence Suppression Enabler"},
921 {0x08, "802.1 Q User Priority"},
923 {0x0a, "Post Filtering Enabler"},
924 {0x0b, "High Pass Filtering Enabler"},
925 {0x0c, "Remote SSRC"},
926 {0x0d, "Must Send QOS Tickets"},
927 {0x0e, "Local Identifier"},
928 {0x0f, "Distant Identifier"},
929 {0x10, "Destination For RTCP Sender Reports - Port Number"},
930 {0x11, "Destination For RTCP Sender Reports - IP Address"},
931 {0x12, "Destination For RTCP Receiver Reports - Port Number"},
932 {0x13, "Destination For RTCP Receiver Reports - IP Address"},
933 {0x14, "Channel Number"},
934 {0x15, "DTMF Sending"},
935 {0x16, "Payload Type Of Redundancy"},
936 {0x17, "Payload Type Of DTMF Events"},
937 {0x18, "Enable / Disable RFC 2198"},
938 {0x31, "SRTP Encryption Enable For This Communication"},
939 {0x32, "Master Key For SRTP Session"},
940 {0x33, "Master Salt Key For SRTP Session"},
941 {0x34, "Master key for output stream of SRTP session"},
942 {0x35, "Master salt key for output stream of SRTP session"},
943 {0x36, "Integrity checking enabled for this communication"},
944 {0x37, "MKI value for SRTP packets in input stream"},
945 {0x38, "MKI value for SRTP packets in output stream"},
946 {0x39, "Integrity method of Thales component"},
947 {0x50, "MD5 Authentication"},
950 static value_string_ext ip_device_routing_cmd_start_rtp_vals_ext
= VALUE_STRING_EXT_INIT(ip_device_routing_cmd_start_rtp_vals
);
952 static const val64_string str_compressor_vals
[] = {
953 {0x00, "G.711 A-law"},
954 {0x01, "G.711 mu-law"},
955 {0x0F, "G.723.1 5.3kbps"},
956 {0x10, "G.723.1 6.3kbps"},
957 {0x11, "G.729A 8kbps"},
958 {0x1B, "G.722 64kbps"},
959 {0x1C, "G.722 56kbps"},
960 {0x1D, "G.722 48kbps"},
965 static const value_string ip_device_routing_cmd_stop_rtp_vals
[] = {
966 {0x0E, "Local Identifier"},
967 {0x0F, "Distant Identifier"},
968 {0x14, "Canal Identifier"},
972 static const value_string ip_device_routing_cmd_redirect_vals
[] = {
973 {0x00, "Remote MainCPU Server IP Address"},
974 {0x01, "Remote MainCPU Server Port"},
978 static const value_string ip_device_routing_cmd_listen_rtp_vals
[] = {
979 {0x00, "Remote IP Address "},
980 {0x01, "Remote UDP Port In "},
981 {0x02, "Remote UDP Port Out "},
982 {0x03, "Remote IP Address Out"},
983 {0x04, "Canal Number"},
987 static const value_string ip_device_routing_cmd_set_param_req_vals
[] = {
988 {0x00 , "QOS IP TOS"},
989 {0x01 , "QOS 8021 VLID"},
990 {0x02 , "QOS 8021 PRI"},
991 {0x03 , "SNMP MIB2 SysContact"},
992 {0x04 , "SNMP MIB2 SysName"},
993 {0x05 , "SNMP MIB2 SysLocation"},
994 {0x06 , "Default Compressor"},
995 {0x07 , "Error String Net Down"},
996 {0x08 , "Error String Cable PB"},
997 {0x09 , "Error String Try Connect"},
998 {0x0A , "Error String Connected"},
999 {0x0B , "Error String Reset"},
1000 {0x0C , "Error String Duplicate IP Address"},
1001 {0x0D , "SNMP MIB Community"},
1002 {0x0E , "TFTP Backup Sec Mode"},
1003 {0x0F , "TFTP Backup IP Address"},
1004 {0x10 , "Set MMI Password"},
1005 {0x11 , "Set PC Port Status"},
1006 {0x12 , "Record RTP Authorization"},
1007 {0x13 , "Security Flags"},
1008 {0x14 , "ARP Spoofing"},
1009 {0x15 , "Session Param"},
1010 {0x16 , "Stable Mode"},
1011 {0x17 , "DTMF Level"},
1012 {0x18 , "Keep Talking"},
1013 {0x19 , "BT Radio"},
1014 {0x1A , "Transparent Reboot"},
1015 {0x1B , "Set Skin Identifier"},
1016 {0x1C , "Set Language Identifier"},
1017 {0x1D , "Set Dialpad Rotation"},
1018 {0x1E , "Set USB Boost Charging"},
1019 {0x1F , "Set SSH Password"},
1020 {0x20 , "DHCP Survivability"},
1021 {0x21 , "USB Devices"},
1022 {0x22 , "ALS Device"},
1023 {0x23 , "Busy Light"},
1024 {0x24 , "Audio Environment"},
1025 {0x25 , "EEE Configuration"},
1026 {0x26 , "LLDP Configuration"},
1027 {0x30 , "MD5 Authentication"},
1030 static value_string_ext ip_device_routing_cmd_set_param_req_vals_ext
= VALUE_STRING_EXT_INIT(ip_device_routing_cmd_set_param_req_vals
);
1032 static const value_string set_param_req_stable_mode
[] = {
1033 {0x00 , "Full-Duplex Preference"},
1034 {0x01 , "Echo Robustness Preference"},
1038 static const value_string set_param_req_skin_id
[] = {
1039 {0x00 , "Managed By Terminal"},
1040 {0x01 , "Classical or Arcturus"},
1042 {0x03 , "Crystal or Green"},
1044 {0x05 , "Arcturus or Classical or Century"},
1048 static const value_string set_param_req_usb_boost
[] = {
1051 {0x02 , "Auto-Negotiation"},
1055 static const value_string set_param_req_local_device
[] = {
1056 {0x00 , "Managed By Terminal"},
1062 static const value_string set_param_req_audio_env
[] = {
1063 {0x00 , "Managed By Terminal"},
1064 {0x01 , "Standard"},
1065 {0x02 , "Open Space"},
1066 {0x03 , "Meeting Room"},
1071 static const value_string ip_device_routing_cmd_pause_restart_vals
[] = {
1072 {0x14, "Canal Identifier"},
1076 static const value_string ip_device_routing_cmd_record_rtp_vals
[] = {
1077 {0x00 , "Recorder Index"},
1078 {0x01 , "Remote IP Address"},
1079 {0x02 , "Remote UDP Port In"},
1080 {0x03 , "Remote UDP Port Out"},
1081 {0x04 , "Remote IP Address Out"},
1082 {0x05 , "Local UDP Port In"},
1083 {0x06 , "Local UDP Port Out"},
1084 {0x07 , "Type Of Service"},
1085 {0x08 , "Master Key For SRTP Session"},
1086 {0x09 , "Master Salt Key For SRTP Session"},
1087 {0x10 , "Integrity checking enabled for this communication"},
1088 {0x11 , "Integrity method of Thales component"},
1089 {0x30 , "MD5 Authentication"},
1093 static const value_string ip_device_routing_cmd_freeseating_vals
[] = {
1094 {0x00 , "Pseudo MAC Address"},
1095 {0x01 , "Maincpu1"},
1096 {0x02 , "Maincpu2"},
1097 {0x03 , "Restart application"},
1101 static const value_string ip_device_routing_cmd_appl_vals
[] = {
1102 {0x00 , "Identifier"},
1108 static const value_string ip_device_routing_tone_direction_vals
[] = {
1109 {0x00, "On The Phone"},
1110 {0x01, "To The Network"},
1111 {0x02, "On The Phone and To The Network"},
1115 static const value_string ip_device_routing_cmd_get_param_req_vals
[] = {
1116 {0x00 , "Firmware Version"},
1117 {0x01 , "Firmware Version"},
1118 {0x02 , "DHCP IP Address"},
1119 {0x03 , "Local IP Address"},
1120 {0x04 , "Subnetwork Mask"},
1121 {0x05 , "Router IP Address"},
1122 {0x06 , "TFTP IP Address"},
1123 {0x07 , "MainCPU IP Address"},
1124 {0x08 , "Default Codec"},
1125 {0x09 , "Ethernet Drivers Config"},
1126 {0x0A , "MAC Address"},
1127 {0x0B , "Pseudo MAC Address"},
1131 static const value_string str_set_pc_port_status
[] = {
1132 {0x00, "No PC Port Security"},
1133 {0x01, "Block PC Port"},
1134 {0x02, "Filter VLAN"},
1138 static const value_string str_enable_feature
[] = {
1139 {0x00, "Disable Feature"},
1140 {0x01, "Enable Feature"},
1144 static const value_string str_ethernet_speed_vals
[] = {
1154 static const value_string str_wlan_status
[] = {
1155 {0, "Not Connected"},
1161 decode_ip_device_routing(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
1162 unsigned offset
, unsigned length
)
1165 proto_tree
*ua3g_body_tree
= tree
, *ua3g_param_tree
, *ua3g_param_subtree
;
1166 proto_item
*ua3g_param_item
;
1167 int parameter_length
, parameter_id
;
1169 command
= tvb_get_uint8(tvb
, offset
);
1171 /* add text to the frame "INFO" column */
1172 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(command
, str_command_ip_device_routing
, "Unknown"));
1174 if (!ua3g_body_tree
)
1177 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ip
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1182 case 0x00: /* RESET */
1185 parameter_id
= tvb_get_uint8(tvb
, offset
);
1186 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
1188 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ip_device_routing_stop_rtp_parameter
, tvb
, offset
,
1189 parameter_length
+ 2, parameter_id
, "%s",
1190 val_to_str_const(parameter_id
, ip_device_routing_cmd_reset_vals
, "Unknown"));
1191 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
1193 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1197 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1201 if (parameter_length
> 0) {
1203 switch (parameter_id
) {
1204 case 0x00: /* Update Mode */
1206 param
= tvb_get_uint8(tvb
, offset
);
1207 if ((param
& 0x80) == 0x00) {
1208 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter_noe_update
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1209 ua3g_param_subtree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param_sub
);
1211 proto_tree_add_item(ua3g_param_subtree
, hf_ua3g_ip_device_routing_reset_parameter_noe_update_bootloader
, tvb
, offset
, 1, ENC_NA
);
1212 proto_tree_add_item(ua3g_param_subtree
, hf_ua3g_ip_device_routing_reset_parameter_noe_update_data
, tvb
, offset
, 1, ENC_NA
);
1213 proto_tree_add_item(ua3g_param_subtree
, hf_ua3g_ip_device_routing_reset_parameter_noe_update_customization
, tvb
, offset
, 1, ENC_NA
);
1214 proto_tree_add_item(ua3g_param_subtree
, hf_ua3g_ip_device_routing_reset_parameter_noe_update_localization
, tvb
, offset
, 1, ENC_NA
);
1215 proto_tree_add_item(ua3g_param_subtree
, hf_ua3g_ip_device_routing_reset_parameter_noe_update_code
, tvb
, offset
, 1, ENC_NA
);
1216 proto_tree_add_item(ua3g_param_subtree
, hf_ua3g_ip_device_routing_reset_parameter_noe_update_sip
, tvb
, offset
, 1, ENC_NA
);
1219 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1223 case 0x01: /* Bad_Sec_Mode */
1224 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter_bad_sec_mode
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1226 case 0x02: /* Cust_Name */
1227 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter_cust_name
, tvb
, offset
, parameter_length
, ENC_NA
|ENC_ASCII
);
1229 case 0x03: /* L10N_Name */
1230 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter_l10n_name
, tvb
, offset
, parameter_length
, ENC_NA
|ENC_ASCII
);
1232 case 0x04: /* Appl_Mode */
1233 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter_appl_mode
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1235 case 0x05: /* SIP_Name */
1236 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter_sip_name
, tvb
, offset
, parameter_length
, ENC_NA
|ENC_ASCII
);
1238 case 0x06: /* Appl_Mode */
1239 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter_reset_mac
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1242 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_reset_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1246 /*offset += parameter_length;
1247 length -= parameter_length;*/
1252 case 0x01: /* START RTP */
1254 address remote_rtp_addr
= ADDRESS_INIT_NONE
;
1255 uint32_t remote_rtp_port
= 0;
1257 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ip_device_routing_start_rtp_direction
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1261 while (length
> 0) {
1262 parameter_id
= tvb_get_uint8(tvb
, offset
);
1263 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
1265 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter
, tvb
, offset
,
1266 parameter_length
+ 2, parameter_id
, "%s",
1267 val_to_str_ext_const(parameter_id
, &ip_device_routing_cmd_start_rtp_vals_ext
, "Unknown"));
1269 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
1270 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1274 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1278 if (parameter_length
> 0) {
1279 switch (parameter_id
) {
1280 case 0x01: /* Remote IP Address */
1281 case 0x11: /* Destination For RTCP Sender Reports - IP Address */
1282 case 0x13: /* Destination For RTCP Receiver Reports - IP Address */
1283 if (parameter_id
== 0x01)
1284 set_address_tvb(&remote_rtp_addr
, AT_IPv4
, 4, tvb
, offset
);
1285 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_ip
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1287 case 0x04: /* Compressor */
1288 if (parameter_length
<= 8) {
1289 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_compressor
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1291 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1294 case 0x06: /* Echo Cancellation Enabler */
1295 case 0x07: /* Silence Suppression Enabler */
1296 case 0x0A: /* Post Filtering Enabler */
1297 case 0x0B: /* High Pass Filtering Enabler */
1298 if (parameter_length
<= 8) {
1299 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_enabler
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1301 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1304 case 0x0D: /* Must Send QOS Tickets */
1305 if (parameter_length
<= 8) {
1306 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_send_qos
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1308 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1311 case 0x0E: /* Local Identifier */
1312 case 0x0F: /* Distant Identifier */
1314 case 0x15: /* DTMF Sending */
1315 if (parameter_length
<= 8) {
1316 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_dtmf_sending
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1318 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1321 case 0x18: /* Enable / Disable RFC 2198 */
1322 if (parameter_length
<= 8) {
1323 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_rfc2198
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1325 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1328 case 0x31: /* SRTP Encryption Enable For This Communication */
1329 if (parameter_length
<= 8) {
1330 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_srtp_encryption
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1332 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1335 case 0x00: /* Local UDP Port */
1336 case 0x02: /* Remote UDP Port */
1337 case 0x03: /* Type Of Service */
1338 case 0x05: /* Payload Concatenation */
1339 case 0x08: /* 802.1 Q User Priority */
1340 case 0x09: /* Reserved */
1341 case 0x0C: /* Remote SSRC */
1342 case 0x10: /* Destination For RTCP Sender Reports - Port Number */
1343 case 0x12: /* Destination For RTCP Receiver Reports - Port Number */
1344 case 0x14: /* Channel Number */
1345 case 0x16: /* Payload Type For Redundancy */
1346 case 0x17: /* Payload Type For DTMF Events */
1347 case 0x32: /* Master Key For SRTP Session */
1348 case 0x33: /* Master Salt Key For SRTP Session */
1349 case 0x34: /* Master key for output stream of SRTP session */
1350 case 0x35: /* Master salt key for output stream of SRTP session */
1351 case 0x36: /* Integrity checking enabled for this communication */
1352 case 0x37: /* MKI value for SRTP packets in input stream */
1353 case 0x38: /* MKI value for SRTP packets in output stream */
1354 case 0x39: /* Integrity method of Thales component */
1355 case 0x50: /* MD5 Authentication */
1357 if (parameter_id
== 0x02)
1358 remote_rtp_port
= tvb_get_ntohs(tvb
, offset
);
1359 if (parameter_length
<= 8) {
1360 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_uint
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1362 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_rtp_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1367 offset
+= parameter_length
;
1368 length
-= parameter_length
;
1372 if (setup_conversations_enabled
)
1374 if ((remote_rtp_addr
.data
!= NULL
) && (remote_rtp_port
!= 0))
1376 rtp_add_address(pinfo
, PT_UDP
, &remote_rtp_addr
, remote_rtp_port
, 0, "UA3G", pinfo
->num
, 0, NULL
);
1377 rtcp_add_address(pinfo
, &remote_rtp_addr
, remote_rtp_port
+1, 0, "UA3G", pinfo
->num
);
1382 case 0x02: /* STOP_RTP */
1383 while (length
> 0) {
1384 parameter_id
= tvb_get_uint8(tvb
, offset
);
1385 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
1387 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ip_device_routing_stop_rtp_parameter
, tvb
, offset
,
1388 parameter_length
+ 2, parameter_id
, "%s",
1389 val_to_str_const(parameter_id
, ip_device_routing_cmd_stop_rtp_vals
, "Unknown"));
1390 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
1392 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_stop_rtp_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1396 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_stop_rtp_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1400 if (parameter_length
> 0) {
1401 if (parameter_length
<= 8) {
1402 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_stop_rtp_parameter_value_num
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1404 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_stop_rtp_parameter_value_bytes
, tvb
, offset
, parameter_length
, ENC_NA
);
1407 offset
+= parameter_length
;
1408 length
-= parameter_length
;
1412 case 0x03: /* REDIRECT */
1413 while (length
> 0) {
1414 parameter_id
= tvb_get_uint8(tvb
, offset
);
1415 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
1417 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ip_device_routing_redirect_parameter
,
1418 tvb
, offset
, parameter_length
+ 2, parameter_id
,
1419 "%s", val_to_str_const(parameter_id
, ip_device_routing_cmd_redirect_vals
, "Unknown"));
1420 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
1422 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_redirect_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1426 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_redirect_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1431 if (parameter_length
> 0) {
1432 switch (parameter_id
) {
1433 case 0x00: /* Remote MainCPU Server IP Address */
1434 case 0x02: /* Remote Redundant MainCPU Server IP Address */
1435 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_redirect_parameter_ip
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1437 case 0x01: /* Remote MainCPU Server Port */
1439 if (parameter_length
<= 8) {
1440 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_redirect_parameter_uint
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1442 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_redirect_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1447 offset
+= parameter_length
;
1448 length
-= parameter_length
;
1452 case 0x04: /* DEF_TONES */
1454 int i
, tone_nb_entries
;
1455 uint16_t frequency_1
, frequency_2
;
1456 signed char level_1
, level_2
;
1458 tone_nb_entries
= tvb_get_uint8(tvb
, offset
);
1460 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ip_device_routing_def_tones_num_entries
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1464 while (length
> 0 && tone_nb_entries
) {
1465 for (i
= 1; i
<= tone_nb_entries
; i
++) {
1466 frequency_1
= tvb_get_ntohs(tvb
, offset
);
1467 level_1
= (signed char)(tvb_get_uint8(tvb
, offset
+ 2)) / 2;
1468 frequency_2
= tvb_get_ntohs(tvb
, offset
+ 3);
1469 level_2
= (signed char)(tvb_get_uint8(tvb
, offset
+ 5)) / 2;
1471 ua3g_param_tree
= proto_tree_add_subtree_format(ua3g_body_tree
, tvb
, offset
, 6,
1472 ett_ua3g_param
, NULL
, "Tone Pair %d: %d Hz at %d dB / %d Hz at %d dB",
1473 i
, frequency_1
, level_1
, frequency_2
, level_2
);
1475 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_def_tones_frequency_1
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1479 proto_tree_add_int(ua3g_param_tree
, hf_ua3g_ip_device_routing_def_tones_level_1
, tvb
, offset
, 1, level_1
);
1483 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_def_tones_frequency_2
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1487 proto_tree_add_int(ua3g_param_tree
, hf_ua3g_ip_device_routing_def_tones_level_2
, tvb
, offset
, 1, level_2
);
1494 case 0x05: /* START TONE */
1497 uint32_t tone_nb_entries
;
1499 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ip_device_routing_start_tone_direction
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1500 proto_tree_add_item_ret_uint(ua3g_body_tree
, hf_ua3g_ip_device_routing_start_tone_num_entries
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &tone_nb_entries
);
1504 for (ii
= 0; ii
< tone_nb_entries
; ii
++) {
1505 uint8_t tone_id
= tvb_get_uint8(tvb
, offset
);
1506 int tone_duration
= tvb_get_ntohs(tvb
, offset
+ 1);
1508 ua3g_param_tree
= proto_tree_add_subtree_format(ua3g_body_tree
, tvb
, offset
, 3,
1509 ett_ua3g_param
, NULL
, "Tone Pair %d: Id: %d, Duration: %d ms",
1510 ii
+1, tone_id
, tone_duration
);
1512 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_tone_identification
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1516 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_tone_duration
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1522 case 0x07: /* START LISTEN RTP */
1523 case 0x08: /* STOP LISTEN RTP */
1524 while (length
> 0) {
1525 parameter_id
= tvb_get_uint8(tvb
, offset
);
1526 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
1528 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ip_device_routing_listen_rtp_parameter
, tvb
, offset
,
1529 parameter_length
+ 2, parameter_id
, "%s",
1530 val_to_str_const(parameter_id
, ip_device_routing_cmd_listen_rtp_vals
, "Unknown"));
1531 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
1533 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_listen_rtp_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1537 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_listen_rtp_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1541 if (parameter_length
> 0) {
1542 switch (parameter_id
) {
1543 case 0x00: /* Remote IP Address - Not for start listening rtp */
1544 case 0x03: /* Remote IP Address Out - Not for start listening rtp */
1545 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_listen_rtp_parameter_ip
, tvb
, offset
, 1, ENC_NA
);
1547 case 0x01: /* Remote UDP Port In - Not for start listening rtp */
1548 case 0x02: /* Remote UDP Port Out - Not for start listening rtp */
1549 case 0x04: /* Canal Number */
1551 if (parameter_length
<= 8) {
1552 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_listen_rtp_parameter_port
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1554 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_listen_rtp_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1559 offset
+= parameter_length
;
1560 length
-= parameter_length
;
1564 case 0x09: /* GET_PARAM_REQ */
1565 while (length
> 0) {
1566 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ip_device_routing_get_param_req_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1572 case 0x0A: /* SET_PARAM_REQ */
1574 while (length
> 0) {
1575 parameter_id
= tvb_get_uint8(tvb
, offset
);
1576 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
1578 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter
, tvb
, offset
,
1579 parameter_length
+ 2, parameter_id
, "%s",
1580 val_to_str_ext_const(parameter_id
, &ip_device_routing_cmd_set_param_req_vals_ext
, "Unknown"));
1581 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
1583 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1587 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1591 if (parameter_length
> 0) {
1592 switch (parameter_id
) {
1593 case 0x06: /* Compressor */
1594 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_compressor
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1596 case 0x07: /* ERR STRING NET DOWN */
1597 case 0x08: /* ERR STRING CABLE PB */
1598 case 0x09: /* ERR STRING TRY CONNECT */
1599 case 0x0A: /* ERR STRING CONNECTED */
1600 case 0x0B: /* ERR STRING RESET */
1601 case 0x0C: /* ERR STRING DUPLICATE IP ADDRESS */
1602 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_err_string
, tvb
, offset
, parameter_length
, ENC_NA
|ENC_ASCII
);
1604 case 0x0F: /* TFTP BACKUP IP ADDR */
1605 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_tftp_backup_ip
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1607 case 0x11: /* Set PC Port status */
1608 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_set_pc_port_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1610 case 0x12: /* Record RTP Authorization */
1611 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_record_rtp_auth
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1613 case 0x13: /* Security Flags */
1614 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_security_flag_filter
, tvb
, offset
, 1, ENC_NA
);
1616 case 0x16: /* Stable Mode */
1617 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_stable_mode
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1619 case 0x1B: /* Set Skin Identifier */
1620 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_skin_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1622 case 0x1C: /* Set Language Identifier */
1623 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_language_id
, tvb
, offset
, 2, ENC_NA
|ENC_ASCII
);
1625 case 0x1E: /* USB Boost */
1626 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_usb_boost
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1628 case 0x22: /* ALS Device */
1629 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_als_device
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1631 case 0x23: /* Busy Light */
1632 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_busy_light
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1634 case 0x24: /* Audio Environment */
1635 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_audio_env
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1637 case 0x00: /* QOS IP TOS */
1638 case 0x01: /* QOS 8021 VLID */
1639 case 0x02: /* QOS 8021 PRI */
1640 case 0x03: /* SNMP MIB2 SYSCONTACT */
1641 case 0x04: /* SNMP MIB2 SYSNAME */
1642 case 0x05: /* SNMP MIB2 SYSLOCATION */
1643 case 0x0D: /* SNMP MIB COMMUNITY */
1644 case 0x0E: /* TFTP BACKUP SEC MODE */
1645 case 0x10: /* SET MMI PASSWORD */
1646 case 0x14: /* ARP Spoofing */
1647 case 0x15: /* Session Param */
1648 case 0x17: /* DTMF Level */
1649 case 0x18: /* Keep Talking */
1650 case 0x19: /* BT Radio */
1651 case 0x1A: /* Transparent Reboot */
1652 case 0x1D: /* Dialpad Rotation */
1653 case 0x1F: /* Set SSH Password */
1654 case 0x20: /* DHCP Survivability */
1655 case 0x21: /* USB Devices */
1656 case 0x25: /* EEE Configuration */
1657 case 0x26: /* LLDP Configuration */
1658 case 0x30: /* MD5 Authentication */
1660 if ((parameter_length
> 0) && (parameter_length
<= 8)) {
1661 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_uint
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1662 } else if (parameter_length
> 8) {
1663 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_set_param_req_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1668 offset
+= parameter_length
;
1669 length
-= parameter_length
;
1674 case 0x0B: /* SEND_DIGIT */
1675 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ip_device_routing_digit_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1678 case 0x0C: /* PAUSE_RTP */
1679 case 0x0D: /* RESTART_RTP */
1680 while (length
> 0) {
1681 parameter_id
= tvb_get_uint8(tvb
, offset
);
1682 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
1684 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ip_device_routing_pause_restart_rtp_parameter
, tvb
, offset
,
1685 parameter_length
+ 2, parameter_id
, "%s",
1686 val_to_str_const(parameter_id
, ip_device_routing_cmd_pause_restart_vals
, "Unknown"));
1687 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
1689 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_pause_restart_rtp_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1693 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1697 if (parameter_length
> 0) {
1698 if (parameter_length
<= 8) {
1699 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_uint
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1701 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1704 offset
+= parameter_length
;
1705 length
-= parameter_length
;
1709 case 0x0E: /* START_RECORD_RTP */
1710 case 0x0F: /* STOP RECORD RTP */
1712 address remote_rtp_addr
= ADDRESS_INIT_NONE
;
1713 uint32_t remote_rtp_port_in
= 0;
1714 uint32_t remote_rtp_port_out
= 0;
1716 while (length
> 0) {
1718 parameter_id
= tvb_get_uint8(tvb
, offset
);
1719 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
1721 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter
, tvb
, offset
,
1722 parameter_length
+ 2, parameter_id
, "%s",
1723 val_to_str_const(parameter_id
, ip_device_routing_cmd_record_rtp_vals
, "Unknown"));
1724 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
1726 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1730 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1734 if (parameter_length
> 0) {
1735 switch (parameter_id
) {
1736 case 0x01: /* Remote IP Address */
1737 case 0x04: /* Remote IP Address Out */
1738 if (parameter_id
== 0x01)
1739 set_address_tvb(&remote_rtp_addr
, AT_IPv4
, 4, tvb
, offset
);
1740 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_remote_ip
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1742 case 0x00: /* Recorder Index */
1743 case 0x02: /* Remote UDP Port In */
1744 case 0x03: /* Remote UDP Port Out */
1745 case 0x05: /* Local UDP Port In */
1746 case 0x06: /* Local UDP Port Out */
1747 case 0x07: /* Type Of Service */
1748 case 0x08: /* Master Key For SRTP Session */
1749 case 0x09: /* Master Salt Key For SRTP Session */
1750 case 0x10: /* Integrity checking enabled for this communication */
1751 case 0x11: /* Integrity method of Thales component */
1752 case 0x30: /* MD5 Authentication */
1754 if (parameter_length
<= 8) {
1755 if (parameter_id
== 0x02)
1756 remote_rtp_port_in
= tvb_get_ntohs(tvb
, offset
);
1757 if (parameter_id
== 0x03)
1758 remote_rtp_port_out
= tvb_get_ntohs(tvb
, offset
);
1759 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_uint
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1761 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1766 offset
+= parameter_length
;
1767 length
-= parameter_length
;
1771 if (setup_conversations_enabled
)
1773 if (remote_rtp_addr
.data
!= NULL
)
1775 if (remote_rtp_port_in
!= 0)
1777 rtp_add_address(pinfo
, PT_UDP
, &remote_rtp_addr
, remote_rtp_port_in
, 0, "UA3G", pinfo
->num
, 0, NULL
);
1778 rtcp_add_address(pinfo
, &remote_rtp_addr
, remote_rtp_port_in
+1, 0, "UA3G", pinfo
->num
);
1780 if (remote_rtp_port_out
!= 0)
1782 rtp_add_address(pinfo
, PT_UDP
, &remote_rtp_addr
, remote_rtp_port_out
, 0, "UA3G", pinfo
->num
, 0, NULL
);
1783 rtcp_add_address(pinfo
, &remote_rtp_addr
, remote_rtp_port_out
+1, 0, "UA3G", pinfo
->num
);
1790 case 0x10: /* Set SIP Parameters */
1792 case 0x11: /* Free Seating */
1793 while (length
> 0) {
1794 parameter_id
= tvb_get_uint8(tvb
, offset
);
1795 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
1797 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ip_device_routing_freeseating_parameter
, tvb
, offset
,
1798 parameter_length
+ 2, parameter_id
, "%s",
1799 val_to_str_const(parameter_id
, ip_device_routing_cmd_freeseating_vals
, "Unknown"));
1800 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
1802 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_freeseating_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1806 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_freeseating_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1810 if (parameter_length
> 0) {
1811 switch (parameter_id
) {
1812 case 0x00: /* Pseudo Mac Address */
1813 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_freeseating_parameter_mac
, tvb
, offset
, 6, ENC_NA
);
1815 case 0x01: /* Maincpu1 */
1816 case 0x02: /* Maincpu2 */
1820 if (parameter_length
== FT_IPv4_LEN
)
1821 hf
= hf_ua3g_ip_device_routing_freeseating_parameter_ip
;
1823 if (parameter_length
== FT_IPv6_LEN
)
1824 hf
= hf_ua3g_ip_device_routing_freeseating_parameter_ipv6
;
1827 proto_tree_add_item(ua3g_param_tree
, hf
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1829 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_freeseating_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1832 case 0x03: /* Restart application */
1834 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_freeseating_parameter_do_reset
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1838 if (parameter_length
<= 8) {
1839 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_freeseating_parameter_uint
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1841 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_freeseating_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1845 offset
+= parameter_length
;
1846 length
-= parameter_length
;
1850 case 0x14: /* Set Appl Param */
1851 while (length
> 0) {
1852 parameter_id
= tvb_get_uint8(tvb
, offset
);
1853 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
1855 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ip_device_routing_appl_parameter
, tvb
, offset
,
1856 parameter_length
+ 2, parameter_id
, "%s", val_to_str_const(parameter_id
, ip_device_routing_cmd_appl_vals
, "Unknown"));
1857 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
1859 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_appl_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1863 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_appl_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1867 if (parameter_length
> 0) {
1868 switch (parameter_id
) {
1869 case 0x00: /* Identifier */
1870 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_appl_parameter_id
, tvb
, offset
, parameter_length
, ENC_STRING
);
1872 case 0x01: /* Enable */
1873 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_appl_parameter_enable
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1875 case 0x02: /* URL */
1877 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_appl_parameter_url
, tvb
, offset
, parameter_length
, ENC_STRING
);
1881 if (parameter_length
<= 8) {
1882 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_appl_parameter_uint
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
1884 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ip_device_routing_appl_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
1888 offset
+= parameter_length
;
1889 length
-= parameter_length
;
1893 case 0x06: /* STOP TONE */
1902 /*-----------------------------------------------------------------------------
1903 DEBUG IN LINE - 18h (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM)
1904 ---------------------------------------------------------------------------*/
1906 decode_debug_in_line(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
1907 unsigned offset
, unsigned length
)
1909 proto_tree_add_item(tree
, hf_ua3g_debug_in_line
, tvb
, offset
, length
, ENC_NA
|ENC_ASCII
);
1913 /*-----------------------------------------------------------------------------
1914 LED COMMAND - 21h (MESSAGE FROM THE SYSTEM)
1915 ---------------------------------------------------------------------------*/
1916 static const value_string str_command_led
[] = {
1919 {0x02, "Red Led Fast Flash"},
1920 {0x03, "Red Led Slow Flash"},
1921 {0x04, "Green Led On"},
1922 {0x05, "Green Led Fast Flash"},
1923 {0x06, "Green Led Slow Flash"},
1924 {0x07, "All Led Off"},
1929 decode_led_command(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
1934 command
= tvb_get_uint8(tvb
, offset
);
1936 /* add text to the frame "INFO" column */
1937 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(command
, str_command_led
, "Unknown"));
1942 proto_tree_add_item(tree
, hf_ua3g_command_led
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1944 if ((command
>= 0) && (command
< 7)) {
1945 proto_tree_add_item(tree
, hf_ua3g_command_led_number
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
1950 /*-----------------------------------------------------------------------------
1951 LCD LINE 1 COMMANDS - 27h (MESSAGE FROM THE SYSTEM)
1952 LCD LINE 2 COMMANDS - 28h (MESSAGE FROM THE SYSTEM)
1953 ---------------------------------------------------------------------------*/
1954 static const value_string str_command_lcd_line
[] = {
1955 {0, "Clear Line & Write From Column"},
1956 {1, "Write From Column"},
1957 {2, "Append To Current Line"},
1961 static const value_string str_call_timer_ctrl
[] = {
1962 {0x00, "Call Timer Status Not Changed"},
1963 {0x01, "Stop Call Timer"},
1964 {0x02, "Start Call Timer From Current Value"},
1965 {0x03, "Initialize And Call Timer"},
1970 decode_lcd_line_cmd(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
1971 unsigned offset
, unsigned length
)
1973 uint8_t command
, column_n
;
1974 const char* command_str
;
1975 proto_tree
*ua3g_body_tree
= tree
, *ua3g_param_tree
, *ua3g_option_tree
;
1976 proto_item
*ua3g_option_item
;
1977 wmem_strbuf_t
*strbuf
;
1979 command
= tvb_get_uint8(tvb
, offset
) & 0x03;
1980 column_n
= tvb_get_uint8(tvb
, offset
+ 1);
1981 command_str
= val_to_str_const(command
, str_command_lcd_line
, "Unknown");
1983 /* add text to the frame "INFO" column */
1984 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s %d", command_str
, column_n
);
1986 if (!ua3g_body_tree
)
1989 strbuf
= wmem_strbuf_create(pinfo
->pool
);
1991 wmem_strbuf_append_printf(strbuf
, "\"%s\"", tvb_format_text(pinfo
->pool
, tvb
, offset
+ 2, length
- 2));
1993 ua3g_param_tree
= proto_tree_add_subtree_format(ua3g_body_tree
, tvb
, offset
,
1994 length
, ett_ua3g_param
, NULL
, "%s %d: %s",
1995 command_str
, column_n
, wmem_strbuf_get_str(strbuf
));
1997 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_command_lcd_line
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1998 ua3g_option_item
= proto_tree_add_item(ua3g_param_tree
, hf_ua3g_lcd_line_cmd_lcd_options
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1999 ua3g_option_tree
= proto_item_add_subtree(ua3g_option_item
, ett_ua3g_option
);
2001 proto_tree_add_item(ua3g_option_tree
, hf_ua3g_lcd_line_cmd_lcd_options_call_timer
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2002 proto_tree_add_item(ua3g_option_tree
, hf_ua3g_lcd_line_cmd_lcd_options_blink
, tvb
, offset
, 1, ENC_NA
);
2003 proto_tree_add_item(ua3g_option_tree
, hf_ua3g_lcd_line_cmd_lcd_options_call_timer_control
, tvb
, offset
, 1, ENC_NA
);
2004 proto_tree_add_item(ua3g_option_tree
, hf_ua3g_lcd_line_cmd_lcd_options_call_timer_display
, tvb
, offset
, 1, ENC_NA
);
2005 proto_tree_add_item(ua3g_option_tree
, hf_ua3g_lcd_line_cmd_lcd_options_time_of_day_display
, tvb
, offset
, 1, ENC_NA
);
2006 proto_tree_add_item(ua3g_option_tree
, hf_ua3g_lcd_line_cmd_lcd_options_suspend_display_refresh
, tvb
, offset
, 1, ENC_NA
);
2012 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_lcd_line_cmd_starting_column
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2014 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_lcd_line_cmd_unused
, tvb
, offset
, 1, ENC_NA
);
2018 proto_tree_add_string(ua3g_param_tree
, hf_ua3g_lcd_line_cmd_ascii_char
, tvb
, offset
, length
, wmem_strbuf_get_str(strbuf
));
2022 /*-----------------------------------------------------------------------------
2023 MAIN VOICE MODE - 29h (MESSAGE FROM THE SYSTEM)
2024 ---------------------------------------------------------------------------*/
2025 static const value_string str_main_voice_mode
[] = {
2028 {0x02, "Group Listening"},
2029 {0x03, "On Hook Dial"},
2030 {0x04, "Handsfree"},
2031 {0x05, "Announce Loudspeaker"},
2036 {0x13, "Handsfree"},
2040 static const value_string str_cadence
[] = {
2041 {0x00, "Standard Ringing"},
2042 {0x01, "Double Burst"},
2043 {0x02, "Triple Burst"},
2044 {0x03, "Continuous Ringing"},
2045 {0x04, "Priority Attendant Ringing"},
2046 {0x05, "Regular Attendant Ringing"},
2047 {0x06, "Programmable Cadence"},
2048 {0x07, "Programmable Cadence"},
2053 decode_main_voice_mode(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
2054 unsigned offset
, unsigned length
)
2057 proto_tree
*ua3g_body_tree
= tree
;
2059 mode
= tvb_get_uint8(tvb
, offset
);
2061 /* add text to the frame "INFO" column */
2062 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(mode
, str_main_voice_mode
, "Unknown"));
2064 if (!ua3g_body_tree
)
2067 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_main_voice_mode
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2072 case 0x06: /* Ringing */
2074 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_main_voice_mode_tune
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2078 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_main_voice_mode_cadence
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2083 case 0x02: /* Group Listening */
2084 case 0x03: /* On Hook Dial */
2085 case 0x04: /* Handsfree */
2086 case 0x05: /* Announce Loudspeaker */
2088 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_main_voice_mode_speaker_volume
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2093 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_main_voice_mode_microphone_volume
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2097 case 0x11: /* Handset */
2101 level
= (signed char)(tvb_get_uint8(tvb
, offset
)) / 2;
2102 proto_tree_add_int(ua3g_body_tree
, hf_ua3g_main_voice_mode_handset_level
, tvb
, offset
, 1, level
);
2104 level
= (signed char)(tvb_get_uint8(tvb
, offset
+1)) / 2;
2105 proto_tree_add_int(ua3g_body_tree
, hf_ua3g_main_voice_mode_sending_level
, tvb
, offset
+1, 1, level
);
2108 case 0x12: /* Headset */
2112 level
= (signed char)(tvb_get_uint8(tvb
, offset
)) / 2;
2113 proto_tree_add_int(ua3g_body_tree
, hf_ua3g_main_voice_mode_headset_level
, tvb
, offset
, 1, level
);
2115 level
= (signed char)(tvb_get_uint8(tvb
, offset
+1)) / 2;
2116 proto_tree_add_int(ua3g_body_tree
, hf_ua3g_main_voice_mode_sending_level
, tvb
, offset
+1, 1, level
);
2119 case 0x13: /* Handsfree */
2123 level
= (signed char)(tvb_get_uint8(tvb
, offset
)) / 2;
2124 proto_tree_add_int(ua3g_body_tree
, hf_ua3g_main_voice_mode_handsfree_level
, tvb
, offset
, 1, level
);
2126 level
= (signed char)(tvb_get_uint8(tvb
, offset
+1)) / 2;
2127 proto_tree_add_int(ua3g_body_tree
, hf_ua3g_main_voice_mode_sending_level
, tvb
, offset
+1, 1, level
);
2130 case 0x00: /* Idle */
2131 case 0x01: /* Handset */
2132 case 0x10: /* Idle */
2141 /*-----------------------------------------------------------------------------
2142 SUBDEVICE METASTATE - 2Ch (MESSAGE FROM THE SYSTEM)
2143 ---------------------------------------------------------------------------*/
2144 static const value_string str_new_metastate
[] = {
2152 decode_subdevice_metastate(proto_tree
*tree
, tvbuff_t
*tvb
,
2153 packet_info
*pinfo _U_
, unsigned offset
)
2155 proto_tree_add_item(tree
, hf_ua3g_subdevice_metastate_subchannel_address
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2156 proto_tree_add_item(tree
, hf_ua3g_subdevice_metastate_new_metastate
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2160 /*-----------------------------------------------------------------------------
2161 Download DTMF & CLOCK FORMAT - 30h (MESSAGE FROM THE SYSTEM)
2162 ---------------------------------------------------------------------------*/
2163 static const value_string str_clock_format
[] = {
2170 decode_dwl_dtmf_clck_format(proto_tree
*tree
, tvbuff_t
*tvb
,
2171 packet_info
*pinfo _U_
, unsigned offset
, unsigned length
)
2173 proto_tree_add_item(tree
, hf_ua3g_dwl_dtmf_clck_format_minimum_on_time
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2174 proto_tree_add_item(tree
, hf_ua3g_dwl_dtmf_clck_format_inter_digit_pause_time
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2175 proto_tree_add_item(tree
, hf_ua3g_dwl_dtmf_clck_format_clock_time_format
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
2178 proto_tree_add_item(tree
, hf_ua3g_dwl_dtmf_clck_format_dtmf_country_adaptation
, tvb
, offset
+3, 1, ENC_BIG_ENDIAN
);
2182 /*-----------------------------------------------------------------------------
2183 SET CLOCK - 31h (MESSAGE FROM THE SYSTEM)
2184 ---------------------------------------------------------------------------*/
2185 static const value_string str_command_set_clck
[] = {
2186 {0x00, "Set Current Time/Call Timer"},
2187 {0x01, "Set Current Time"},
2188 {0x02, "Set Call Timer"},
2193 decode_set_clck(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
2194 unsigned offset
, unsigned length
)
2197 int hour
, minute
, second
, call_timer
;
2199 command
= tvb_get_uint8(tvb
, offset
);
2201 /* add text to the frame "INFO" column */
2202 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(command
, str_command_set_clck
, "Unknown"));
2204 proto_tree_add_item(tree
, hf_ua3g_command_set_clck
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2210 case 0x02: /* Timer Form */
2215 case 0x00: /* Set Current Time/Call Timer */
2216 case 0x01: /* Set Current Time */
2218 while (length
> 0) {
2219 hour
= tvb_get_uint8(tvb
, offset
);
2220 minute
= tvb_get_uint8(tvb
, offset
+ 1);
2221 second
= tvb_get_uint8(tvb
, offset
+ 2);
2223 proto_tree_add_uint_format_value(tree
, (call_timer
== 1) ? hf_ua3g_call_timer
: hf_ua3g_current_time
, tvb
, offset
, 3,
2224 tvb_get_ntoh24(tvb
, offset
), "%d:%d:%d", hour
, minute
, second
);
2240 /*-----------------------------------------------------------------------------
2241 VOICE CHANNEL - 32h - (MESSAGE FROM THE SYSTEM)
2242 ---------------------------------------------------------------------------*/
2243 static const value_string str_voice_channel
[] = {
2251 static const true_false_string tfs_voice_channel_channel_mode
= { "Write 00 to Voice Channel", "Normal Voice Channel Mode" };
2252 static const true_false_string tfs_voice_channel_codec
= { "Write Quiet To Codec", "Normal Codec Operation" };
2253 static const true_false_string tfs_voice_channel_voice_channel
= { "Use B3 As Voice Channel", "Use B1 As Voice Channel" };
2256 decode_voice_channel(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2257 unsigned offset
, unsigned length
)
2260 proto_tree_add_item(tree
, hf_ua3g_voice_channel_channel_mode
, tvb
, offset
, 1, ENC_NA
);
2261 proto_tree_add_item(tree
, hf_ua3g_voice_channel_codec
, tvb
, offset
, 1, ENC_NA
);
2262 proto_tree_add_item(tree
, hf_ua3g_voice_channel_voice_channel
, tvb
, offset
, 1, ENC_NA
);
2263 } else if (length
== 2) {
2264 proto_tree_add_item(tree
, hf_ua3g_voice_channel_main_voice
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2265 proto_tree_add_item(tree
, hf_ua3g_voice_channel_announce
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2266 } else if (length
== 4) {
2267 proto_tree_add_item(tree
, hf_ua3g_voice_channel_b_general
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2268 proto_tree_add_item(tree
, hf_ua3g_voice_channel_b_loud_speaker
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2269 proto_tree_add_item(tree
, hf_ua3g_voice_channel_b_ear_piece
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
2270 proto_tree_add_item(tree
, hf_ua3g_voice_channel_b_microphones
, tvb
, offset
+3, 1, ENC_BIG_ENDIAN
);
2275 /*-----------------------------------------------------------------------------
2276 EXTERNAL RINGING - 33h (MESSAGE FROM THE SYSTEM)
2277 ---------------------------------------------------------------------------*/
2278 static const value_string str_ext_ring_cmd
[] = {
2281 {0x02, "Follow The Normal Ringing"},
2286 decode_external_ringing(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
2291 command
= tvb_get_uint8(tvb
, offset
);
2293 /* add text to the frame "INFO" column */
2294 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(command
, str_ext_ring_cmd
, "Unknown"));
2296 proto_tree_add_item(tree
, hf_ua3g_external_ringing_command
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2300 /*-----------------------------------------------------------------------------
2301 LCD CURSOR - 35h - (MESSAGE FROM THE SYSTEM)
2302 ---------------------------------------------------------------------------*/
2304 decode_lcd_cursor(proto_tree
*tree _U_
, tvbuff_t
*tvb
, packet_info
*pinfo
, unsigned offset
)
2306 const char* str_on_off_val
= STR_ON_OFF(tvb_get_uint8(tvb
, offset
+ 1) & 0x02);
2308 /* add text to the frame "INFO" column */
2309 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", str_on_off_val
);
2311 proto_tree_add_item(tree
, hf_ua3g_lcd_cursor_line_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2312 proto_tree_add_item(tree
, hf_ua3g_lcd_cursor
, tvb
, offset
+1, 1, ENC_NA
);
2316 /*-----------------------------------------------------------------------------
2317 DOWNLOAD SPECIAL CHARACTER - 36h - (MESSAGE FROM THE SYSTEM)
2318 ---------------------------------------------------------------------------*/
2320 decode_dwl_special_char(proto_tree
*tree
, tvbuff_t
*tvb
,
2321 packet_info
*pinfo _U_
, unsigned offset
, unsigned length
)
2325 while (length
> 0) {
2326 proto_tree_add_item(tree
, hf_ua3g_dwl_special_char_character_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2329 for (i
= 1; i
<= 8; i
++) {
2330 proto_tree_add_item(tree
, hf_ua3g_dwl_special_char_byte
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2338 /*-----------------------------------------------------------------------------
2339 SET CLOCK/TIMER POSITION - 38h - (MESSAGE FROM THE SYSTEM)
2340 ---------------------------------------------------------------------------*/
2342 decode_set_clck_timer_pos(proto_tree
*tree
, tvbuff_t
*tvb
,
2343 packet_info
*pinfo _U_
, unsigned offset
)
2348 proto_tree_add_item(tree
, hf_ua3g_set_clck_timer_pos_clock_line_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2349 proto_tree_add_item(tree
, hf_ua3g_set_clck_timer_pos_clock_column_number
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2350 proto_tree_add_item(tree
, hf_ua3g_set_clck_timer_pos_call_timer_line_number
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
2351 proto_tree_add_item(tree
, hf_ua3g_set_clck_timer_pos_call_timer_column_number
, tvb
, offset
+3, 1, ENC_BIG_ENDIAN
);
2355 /*-----------------------------------------------------------------------------
2356 SET LCD CONTRAST - 39h - (MESSAGE FROM THE SYSTEM)
2357 ---------------------------------------------------------------------------*/
2358 static const value_string str_driver_number
[] = {
2365 decode_set_lcd_contrast(proto_tree
*tree
, tvbuff_t
*tvb
,
2366 packet_info
*pinfo _U_
, unsigned offset
)
2368 proto_tree_add_item(tree
, hf_ua3g_set_lcd_contrast_driver_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2369 proto_tree_add_item(tree
, hf_ua3g_set_lcd_contrast_contrast_value
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2373 /*-----------------------------------------------------------------------------
2374 BEEP - 3Ch (MESSAGE FROM THE SYSTEM)
2375 ---------------------------------------------------------------------------*/
2376 static const value_string str_command_beep
[] = {
2377 {0x01, "Beep Once"},
2378 {0x02, "Beep Start"},
2379 {0x03, "Stop Beep"},
2380 {0x04, "Start Beep"},
2381 {0x05, "Define Beep"},
2385 static const value_string str_beep_start_destination
[] = {
2386 {0x01, "Ear-Piece"},
2387 {0x02, "Loudspeaker"},
2388 {0x03, "Ear-Piece and Loudspeaker"},
2392 static const value_string str_beep_freq_sample_nb
[] = {
2393 {0x00, "Frequency"},
2394 {0xFF, "Audio Sample Number"},
2397 static const value_string str_beep_duration
[] = {
2398 {0x00, "Duration "},
2399 {0xFF, "Duration (Ignored)"},
2402 static const value_string str_beep_terminator
[] = {
2410 decode_beep(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
2411 unsigned offset
, unsigned length
)
2413 if (length
> 0) { /* All cases except classical beep */
2415 proto_tree
*ua3g_body_tree
= tree
;
2417 command
= tvb_get_uint8(tvb
, offset
);
2419 /* add text to the frame "INFO" column */
2420 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(command
, str_command_beep
, "Unknown"));
2422 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_command_beep
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2427 case 0x01: /* Beep Once */
2428 case 0x02: /* Beep Start */
2432 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_beep_destination
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2436 while (length
> 0) {
2440 val
= (tvb_get_uint8(tvb
, offset
) & 0x7F) * 10;
2441 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_beep_on_off
, tvb
, offset
, 1, ENC_NA
);
2442 proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_beep_cadence
, tvb
, offset
, 1, val
,
2443 "Cadence T%d: %d ms", i
, val
);
2449 case 0x04: /* Start Beep */
2451 static int * const destinations
[] = {
2452 &hf_ua3g_beep_beep_destination_handset
,
2453 &hf_ua3g_beep_beep_destination_headset
,
2454 &hf_ua3g_beep_beep_destination_loudspeaker
,
2455 &hf_ua3g_beep_beep_destination_announce_loudspeaker
,
2456 &hf_ua3g_beep_beep_destination_handsfree
,
2460 proto_tree_add_bitmask(ua3g_body_tree
, tvb
, offset
, hf_ua3g_beep_beep_destination
,
2461 ett_ua3g_beep_beep_destination
, destinations
, ENC_NA
);
2464 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_beep_beep_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2469 int i
, nb_of_notes
, beep_number
;
2470 proto_tree
* note_tree
;
2472 beep_number
= tvb_get_uint8(tvb
, offset
);
2473 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_beep_beep_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2477 if (beep_number
<= 0x44)
2482 nb_of_notes
= tvb_get_uint8(tvb
, offset
);
2483 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_beep_number_of_notes
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2487 while (length
> 0) {
2488 for (i
= 1; i
<= nb_of_notes
; i
++) {
2489 note_tree
= proto_tree_add_subtree_format(ua3g_body_tree
, tvb
, offset
, 3,
2490 ett_ua3g_note
, NULL
, "Note %d", i
);
2491 proto_tree_add_uint_format(note_tree
, hf_ua3g_beep_freq_sample
, tvb
, offset
, 1, tvb_get_uint8(tvb
, offset
),
2492 "%s: %d", val_to_str_const(beep_number
, str_beep_freq_sample_nb
, "Unknown"),
2493 tvb_get_uint8(tvb
, offset
));
2496 proto_tree_add_item(note_tree
, hf_ua3g_beep_level
, tvb
, offset
, 1, ENC_NA
);
2499 proto_tree_add_uint_format(note_tree
, hf_ua3g_beep_duration
, tvb
, offset
, 1, tvb_get_uint8(tvb
, offset
),
2500 "%s: %x", val_to_str_const(beep_number
, str_beep_duration
, "Unknown"),
2501 tvb_get_uint8(tvb
, offset
));
2505 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_beep_terminator
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2511 case 0x03: /* Stop Beep */
2517 } else { /* Classical Beep */
2518 /* add text to the frame "INFO" column */
2519 col_append_str(pinfo
->cinfo
, COL_INFO
, ": Classical Beep");
2524 /*-----------------------------------------------------------------------------
2525 SIDETONE ON / OFF - 3Dh (MESSAGE FROM THE SYSTEM)
2526 ---------------------------------------------------------------------------*/
2528 decode_sidetone(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
, unsigned offset
)
2531 const char* command_str
;
2533 command
= tvb_get_uint8(tvb
, offset
);
2534 command_str
= STR_ON_OFF(command
);
2536 /* add text to the frame "INFO" column */
2537 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", command_str
);
2539 proto_tree_add_item(tree
, hf_ua3g_command_sidetone
, tvb
, offset
, 1, ENC_NA
);
2541 if (command
== 0x01) {
2542 proto_tree_add_int(tree
, hf_ua3g_sidetone_level
, tvb
, offset
+1, 1,
2543 (signed char)(tvb_get_uint8(tvb
, offset
+1) / 2));
2548 /*-----------------------------------------------------------------------------
2549 SET PROGRAMMABLE RINGING CADENCE - 3Eh (MESSAGE FROM THE SYSTEM)
2550 ---------------------------------------------------------------------------*/
2552 decode_ringing_cadence(proto_tree
*tree
, tvbuff_t
*tvb
,
2553 packet_info
*pinfo _U_
, unsigned offset
, unsigned length
)
2556 uint16_t cadence_length
;
2561 proto_tree_add_item(tree
, hf_ua3g_ringing_cadence_cadence
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2565 while (length
> 0) {
2567 proto_tree_add_item(tree
, hf_ua3g_ringing_cadence_on_off
, tvb
, offset
, 1, ENC_NA
);
2568 cadence_length
= ((tvb_get_uint8(tvb
, offset
) & 0x7F) * 10);
2569 proto_tree_add_uint_format(tree
, hf_ua3g_ringing_cadence_length
, tvb
, offset
, 1, cadence_length
,
2570 "Length %d : %d ms", i
, cadence_length
);
2577 /*-----------------------------------------------------------------------------
2578 MUTE ON / OFF - 3Fh (MESSAGE FROM THE SYSTEM)
2579 ---------------------------------------------------------------------------*/
2580 static const value_string str_mute
[] = {
2581 {0x00, "Microphone Disable"},
2582 {0x01, "Microphone Enable"},
2587 decode_mute(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
, unsigned offset
)
2591 command
= tvb_get_uint8(tvb
, offset
);
2593 /* add text to the frame "INFO" column */
2594 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(command
, str_mute
, "Unknown"));
2596 proto_tree_add_item(tree
, hf_ua3g_command_mute
, tvb
, offset
, 1, ENC_NA
);
2600 /*-----------------------------------------------------------------------------
2601 FEEDBACK ON / OFF - 40h (MESSAGE FROM THE SYSTEM)
2602 ---------------------------------------------------------------------------*/
2604 decode_feedback(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
2605 unsigned offset
, unsigned length
)
2608 const char* command_str
;
2610 command
= tvb_get_uint8(tvb
, offset
);
2611 command_str
= STR_ON_OFF(command
);
2613 /* add text to the frame "INFO" column */
2614 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", command_str
);
2619 proto_tree_add_item(tree
, hf_ua3g_command_feedback
, tvb
, offset
, 1, ENC_NA
);
2623 if (command
== 0x01) {
2624 proto_tree_add_int(tree
, hf_ua3g_feedback_level
, tvb
, offset
, 1,
2625 (signed char)(tvb_get_uint8(tvb
, offset
) / 2));
2630 proto_tree_add_uint_format_value(tree
, hf_ua3g_feedback_duration
, tvb
, offset
, 1,
2631 tvb_get_uint8(tvb
, offset
) * 10, "%d ms", tvb_get_uint8(tvb
, offset
) * 10);
2637 /*-----------------------------------------------------------------------------
2638 READ PERIPHERAL - 44h (MESSAGE FROM THE SYSTEM)
2639 WRITE PERIPHERAL - 45h (MESSAGE FROM THE SYSTEM)
2640 PERIPHERAL CONTENT - 2Bh (MESSAGE FROM THE TERMINAL)
2641 ---------------------------------------------------------------------------*/
2643 decode_r_w_peripheral(proto_tree
*tree
, tvbuff_t
*tvb
,
2644 packet_info
*pinfo _U_
, unsigned offset
, unsigned length
)
2646 proto_tree_add_item(tree
, hf_ua3g_r_w_peripheral_address
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2649 proto_tree_add_item(tree
, hf_ua3g_r_w_peripheral_content
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
2654 /*-----------------------------------------------------------------------------
2655 ICON COMMAND - 47h (MESSAGE FROM THE SYSTEM)
2656 ---------------------------------------------------------------------------*/
2657 static const value_string str_icon_cmd_state
[] = {
2659 {0x01, "Slow Flash"},
2661 {0x03, "Steady On"},
2666 decode_icon_cmd(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
, unsigned offset
)
2668 uint8_t byte0
, byte1
, bytex
;
2674 proto_tree_add_item(tree
, hf_ua3g_icon_cmd_icon_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2676 byte0
= tvb_get_uint8(tvb
, offset
+1);
2677 byte1
= tvb_get_uint8(tvb
, offset
+2);
2679 for (i
= 0; i
< 8; i
++) {
2681 ((byte0
>> i
) & 0x01) * 2 +
2682 ((byte1
>> i
) & 0x01);
2683 proto_tree_add_uint_format(tree
, hf_ua3g_icon_cmd_segment
, tvb
, offset
+1, 2, bytex
,
2684 "Segment %d: %s (%d)", i
, val_to_str_const(bytex
, str_icon_cmd_state
, "Unknown"), bytex
);
2689 /*-----------------------------------------------------------------------------
2690 AUDIO CONFIGURATION - 49h (MESSAGE FROM THE SYSTEM)
2691 ---------------------------------------------------------------------------*/
2692 static const value_string str_command_audio_config
[] = {
2693 {0x00, "Audio Coding"},
2694 {0x01, "DPI Channel Allocations"},
2695 {0x02, "Loudspeaker Volume Adjust"},
2696 {0x03, "Audio Circuit Configuration"},
2697 {0x04, "Handsfree Parameters"},
2698 {0x05, "Loudspeaker Acoustic Parameters"},
2699 {0x06, "Device Configuration"},
2703 static const value_string str_audio_coding_law
[] = {
2709 static const value_string str_device_configuration
[] = {
2710 { 0, "Handset Device "},
2711 { 1, "Headset Device "},
2712 { 2, "Loudspeaker Device "},
2713 { 3, "Announce Loudspeaker Device"},
2714 { 4, "Handsfree Device "},
2718 static const true_false_string tfs_audio_config_handsfree_return
= { "Return Loss Active", "Return Loss Normal" };
2719 static const true_false_string tfs_audio_config_handsfree_handsfree
= { "More Full Duplex", "Handsfree Normal" };
2722 decode_audio_config(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
2723 unsigned offset
, unsigned length
)
2726 proto_tree
*ua3g_body_tree
= tree
;
2728 command
= tvb_get_uint8(tvb
, offset
);
2730 /* add text to the frame "INFO" column */
2731 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(command
, str_command_audio_config
, "Unknown"));
2733 if (!ua3g_body_tree
)
2736 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_command_audio_config
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2741 case 0x00: /* Audio Coding */
2742 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_ignored
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2743 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_law
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2745 case 0x01: /* DPI Channel Allocations */
2747 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_dpi_chan_ua_tx1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2748 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_dpi_chan_ua_tx2
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2749 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_dpi_chan_gci_tx1
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
2750 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_dpi_chan_gci_tx2
, tvb
, offset
+3, 1, ENC_BIG_ENDIAN
);
2751 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_dpi_chan_cod_tx
, tvb
, offset
+4, 1, ENC_BIG_ENDIAN
);
2753 case 0x02: /* Loudspeaker Volume Adjust */
2756 for (i
= 1; i
< 8; i
++) {
2757 proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_audio_config_volume_level
, tvb
, offset
,
2758 1, tvb_get_uint8(tvb
, offset
), "Volume Level %d: %d",
2759 i
, tvb_get_uint8(tvb
, offset
));
2765 case 0x03: /* Audio Circuit Configuration */
2767 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_audio_circuit_dth
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2768 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_audio_circuit_dtr
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2769 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_audio_circuit_dtf
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
2770 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_audio_circuit_str
, tvb
, offset
+3, 1, ENC_BIG_ENDIAN
);
2771 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_audio_circuit_ahp1
, tvb
, offset
+4, 1, ENC_BIG_ENDIAN
);
2772 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_audio_circuit_ahp2
, tvb
, offset
+5, 1, ENC_BIG_ENDIAN
);
2773 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_audio_circuit_ath
, tvb
, offset
+6, 1, ENC_BIG_ENDIAN
);
2774 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_audio_circuit_atr
, tvb
, offset
+7, 1, ENC_BIG_ENDIAN
);
2775 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_audio_circuit_atf
, tvb
, offset
+8, 1, ENC_BIG_ENDIAN
);
2776 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_audio_circuit_alm
, tvb
, offset
+9, 1, ENC_BIG_ENDIAN
);
2778 case 0x04: /* Handsfree Parameters */
2779 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_handsfree_return
, tvb
, offset
, 1, ENC_NA
);
2780 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_handsfree_handsfree
, tvb
, offset
, 1, ENC_NA
);
2782 case 0x05: /* Loudspeaker Acoustic Parameters */
2783 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_group_listen
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2784 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_attenuation
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2785 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_stay_in_send
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
2786 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_shift_right_mtx
, tvb
, offset
+3, 1, ENC_BIG_ENDIAN
);
2787 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_shift_right_mrc
, tvb
, offset
+4, 1, ENC_BIG_ENDIAN
);
2788 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_idle_trans_threshold
, tvb
, offset
+5, 1, ENC_BIG_ENDIAN
);
2789 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_low_trans_threshold
, tvb
, offset
+6, 1, ENC_BIG_ENDIAN
);
2790 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_idle_recv_threshold
, tvb
, offset
+7, 1, ENC_BIG_ENDIAN
);
2791 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_low_recv_threshold
, tvb
, offset
+8, 1, ENC_BIG_ENDIAN
);
2792 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_med_recv_threshold
, tvb
, offset
+9, 1, ENC_BIG_ENDIAN
);
2793 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_high_recv_threshold
, tvb
, offset
+10, 1, ENC_BIG_ENDIAN
);
2795 case 0x06: /* Device Configuration */
2797 static const char *str_device_values
[] = {
2804 wmem_strbuf_t
*strbuf
;
2805 uint8_t device_values
;
2807 int device_index
= 0;
2809 strbuf
= wmem_strbuf_create(pinfo
->pool
);
2811 while (length
> 0) {
2813 device_values
= tvb_get_uint8(tvb
, offset
);
2815 wmem_strbuf_truncate(strbuf
, 0);
2817 if (device_values
!= 0) {
2818 for (j
= 0; j
< 5; j
++) {
2819 if (device_values
& (0x01 << j
)) {
2820 wmem_strbuf_append(strbuf
, str_device_values
[j
]);
2824 wmem_strbuf_append(strbuf
, " None");
2827 proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_device_configuration
, tvb
, offset
, 1,
2828 device_values
, "%s:%s",
2829 val_to_str_const(device_index
, str_device_configuration
, "Unknown"),
2830 wmem_strbuf_get_str(strbuf
));
2845 /*-----------------------------------------------------------------------------
2846 AUDIO PADDED PATH - 4Ah (MESSAGE FROM THE SYSTEM)
2847 ---------------------------------------------------------------------------*/
2849 decode_audio_padded_path(proto_tree
*tree
, tvbuff_t
*tvb
,
2850 packet_info
*pinfo _U_
, unsigned offset
)
2852 proto_tree_add_item(tree
, hf_ua3g_audio_padded_path_emission_padded_level
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2853 proto_tree_add_item(tree
, hf_ua3g_audio_padded_path_reception_padded_level
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2857 /*-----------------------------------------------------------------------------
2858 KEY RELEASE ON / OFF - 41h (MESSAGE FROM THE SYSTEM)
2859 AMPLIFIED HANDSET (BOOST) - 48h (MESSAGE FROM THE SYSTEM)
2860 LOUDSPEAKER ON / OFF - 4Dh (MESSAGE FROM THE SYSTEM)
2861 ANNOUNCE ON / OFF - 4Eh (MESSAGE FROM THE SYSTEM)
2862 ---------------------------------------------------------------------------*/
2864 decode_on_off_level(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
2865 unsigned offset
, unsigned length
, int hf_opcode
)
2868 const char* command_str
;
2870 command
= tvb_get_uint8(tvb
, offset
);
2871 command_str
= STR_ON_OFF(command
);
2873 /* add text to the frame "INFO" column */
2874 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", command_str
);
2876 proto_tree_add_item(tree
, hf_opcode
, tvb
, offset
, 1, ENC_NA
);
2879 if (command
== 0x01) {
2880 proto_tree_add_item(tree
, hf_ua3g_on_off_level_level_on_loudspeaker
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2886 /*-----------------------------------------------------------------------------
2887 RING ON / OFF - 4Fh (MESSAGE FROM THE SYSTEM)
2888 ---------------------------------------------------------------------------*/
2890 decode_ring(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
, unsigned offset
)
2893 const char* command_str
;
2895 command
= tvb_get_uint8(tvb
, offset
);
2896 command_str
= STR_ON_OFF(command
);
2898 /* add text to the frame "INFO" column */
2899 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", command_str
);
2904 proto_tree_add_item(tree
, hf_ua3g_command_ring
, tvb
, offset
, 1, ENC_NA
);
2906 if (command
== 0x01) {
2907 proto_tree_add_item(tree
, hf_ua3g_ring_melody
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
2908 proto_tree_add_item(tree
, hf_ua3g_ring_cadence
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
2909 proto_tree_add_item(tree
, hf_ua3g_ring_speaker_level
, tvb
, offset
+3, 1, ENC_BIG_ENDIAN
);
2910 proto_tree_add_item(tree
, hf_ua3g_ring_beep_number
, tvb
, offset
+4, 1, ENC_BIG_ENDIAN
);
2911 proto_tree_add_item(tree
, hf_ua3g_ring_silent
, tvb
, offset
+5, 1, ENC_NA
);
2912 proto_tree_add_item(tree
, hf_ua3g_ring_progressive
, tvb
, offset
+5, 1, ENC_BIG_ENDIAN
);
2917 /*-----------------------------------------------------------------------------
2918 UA DOWNLOAD PROTOCOL - 50h - Only for UA NOE (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM)
2919 ---------------------------------------------------------------------------*/
2920 static const value_string str_command_ua_dwl_protocol
[] = {
2921 {0x00, "Downloading Suggest"},
2922 {0x01, "Downloading Request"},
2923 {0x02, "Downloading Acknowledge"},
2924 {0x03, "Downloading Data"},
2925 {0x04, "Downloading End"},
2926 {0x05, "Downloading End Acknowledge"},
2927 {0x06, "Downloading ISO Checksum"},
2928 {0x07, "Downloading ISO Checksum Acknowledge"},
2932 static const value_string str_download_req_force_mode
[] = {
2933 {0x00, "System Accept All Refusals"},
2934 {0x01, "Force Software Lock"},
2938 static const value_string str_download_req_item_id
[] = {
2939 {0x00, "Patches File"},
2940 {0x01, "Application Binary"},
2941 {0x02, "Datas Binary"},
2945 static const value_string str_download_req_mode_selection_country
[] = {
2947 {0x01, "For All Countries Except Chinese"},
2948 {0x02, "For Chinese"},
2952 static const value_string str_download_ack_status
[] = {
2953 {0x00, "Ok (Binary Item Downloading In \"Normal\" Progress)"},
2954 {0x01, "Hardware Failure: Flash Failure"},
2955 {0x02, "Not Enough Place To Store The Downloaded Binary"},
2956 {0x03, "Wrong Seq Number On Latest Received Download_Data Message"},
2957 {0x04, "Wrong Packet Number On Latest Received Download_Data Message"},
2958 {0x05, "Download Refusal Terminal (Validation Purpose)"},
2959 {0x06, "Download Refusal Terminal (Development Purpose)"},
2960 {0x10, "Download Refusal: Hardware Cause (Unknown Flash Device, Incompatible Hardware)"},
2961 {0x11, "Download Refusal: No Loader Available Into The Terminal"},
2962 {0x12, "Download Refusal: Software Lock"},
2963 {0x13, "Download Refusal: Wrong Parameter Into Download Request"},
2964 {0x20, "Wrong Packet Number On Latest Received Downloading_Data Message"},
2965 {0x21, "Compress Header Invalid"},
2966 {0x22, "Decompress Error"},
2967 {0x23, "Binary Header Invalid"},
2968 {0x24, "Binary Check Error: Flash Write Error Or Binary Is Invalid"},
2969 {0x25, "Error Already Signaled - No More Data Accepted"},
2970 {0x26, "No Downloading In Progress"},
2971 {0x27, "Too Many Bytes Received (More Than Size Given Into The Download_Req Message)"},
2972 {0xFF, "Undefined Error"},
2975 static value_string_ext str_download_ack_status_ext
= VALUE_STRING_EXT_INIT(str_download_ack_status
);
2977 static const value_string str_download_end_ack_ok
[] = {
2979 {0x01, "Hardware Failure: Flash Problems"},
2980 {0x02, "Not Enough Place To Store The Downloaded Binary"},
2984 static const value_string str_iso_checksum_ack_status
[] = {
2985 {0x00, "The Checksum Matches"},
2986 {0x25, "Error Detected And Already Signaled"},
2987 {0x30, "Checksum Error (All Bytes Received)"},
2988 {0x31, "Checksum Error (Bytes Missing)"},
2992 static const value_string str_mem_size
[] = {
2994 {0x01, "128 Kbytes"},
2995 {0x02, "256 Kbytes"},
2996 {0x03, "512 Kbytes"},
3004 static const true_false_string tfs_bin_info
= { "LZO Compressed Binary", "Uncompressed Binary" };
3007 decode_ua_dwl_protocol(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
3008 unsigned offset
, unsigned length
)
3011 proto_tree
*ua3g_body_tree
= tree
, *ua3g_param_tree
;
3013 command
= tvb_get_uint8(tvb
, offset
);
3015 /* add text to the frame "INFO" column */
3016 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(command
, str_command_ua_dwl_protocol
, "Unknown"));
3018 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_command_ua_dwl_protocol
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3023 case 0x00: /* Downloading Suggest (MESSAGE FROM THE TERMINAL) */
3024 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_item_identifier
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3025 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_item_version_nc
, tvb
, offset
+1, 2, ENC_BIG_ENDIAN
);
3026 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_cause
, tvb
, offset
+3, 1, ENC_BIG_ENDIAN
);
3028 case 0x01: /* Downloading Request (MESSAGE FROM THE SYSTEM) */
3030 if (length
> 7) { /* Not R1 */
3031 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_force_mode
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3036 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_item_identifier
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3040 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_item_version
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3044 if (length
> 2) { /* Not R1 */
3045 ua3g_param_tree
= proto_tree_add_subtree(ua3g_body_tree
, tvb
, offset
, 1, ett_ua3g_param
, NULL
, "Files Included");
3046 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_files_inc_boot_binary
,
3047 tvb
, offset
, 1, ENC_NA
);
3048 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_files_inc_loader_binary
,
3049 tvb
, offset
, 1, ENC_NA
);
3050 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_files_inc_appli_binary
,
3051 tvb
, offset
, 1, ENC_NA
);
3052 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_files_inc_data_binary
,
3053 tvb
, offset
, 1, ENC_NA
);
3057 ua3g_param_tree
= proto_tree_add_subtree(ua3g_body_tree
, tvb
, offset
, 1, ett_ua3g_param
, NULL
, "Model Selection");
3058 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_model_selection_a
,
3059 tvb
, offset
, 1, ENC_NA
);
3060 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_model_selection_b
,
3061 tvb
, offset
, 1, ENC_NA
);
3062 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_model_selection_c
,
3063 tvb
, offset
, 1, ENC_NA
);
3064 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_model_selection_country_ver
,
3065 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3068 ua3g_param_tree
= proto_tree_add_subtree(ua3g_body_tree
, tvb
, offset
, 1, ett_ua3g_param
, NULL
, "Hardware Selection");
3069 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_hardware_selection_ivanoe1
,
3070 tvb
, offset
, 1, ENC_NA
);
3071 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_hardware_selection_ivanoe2
,
3072 tvb
, offset
, 1, ENC_NA
);
3076 ua3g_param_tree
= proto_tree_add_subtree(ua3g_body_tree
, tvb
, offset
, 1, ett_ua3g_param
, NULL
, "Memory Sizes Required");
3077 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_memory_sizes_flash
,
3078 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3079 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_ua_dwl_protocol_memory_sizes_ext_ram
,
3080 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3084 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_binary_info
, tvb
, offset
, 1, ENC_NA
);
3089 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_binary_length
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
3092 case 0x02: /* Downloading Acknowledge (MESSAGE FROM THE TERMINAL) */
3093 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_packet_number
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3094 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_download_ack_status
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
3096 case 0x03: /* Downloading Data (MESSAGE FROM THE SYSTEM) */
3100 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_packet_number
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3104 while (length
> 0) {
3105 proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_packet_number
, tvb
, offset
, 1,
3106 tvb_get_uint8(tvb
, offset
), "Packet Number %3d: %d", i
, tvb_get_uint8(tvb
, offset
));
3113 case 0x05: /* Downloading End Acknowledge (MESSAGE FROM THE TERMINAL) */
3114 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_packet_download_end_ack_ok_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3116 case 0x06: /* Downloading Iso Checksum (MESSAGE FROM THE SYSTEM) */
3117 proto_tree_add_checksum(ua3g_body_tree
, tvb
, offset
, hf_ua3g_ua_dwl_protocol_checksum
, -1, NULL
, pinfo
, 0, ENC_BIG_ENDIAN
, PROTO_CHECKSUM_NO_FLAGS
);
3119 case 0x07: /* Downloading ISO Checksum Acknowledge (MESSAGE FROM THE TERMINAL) */
3120 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ua_dwl_protocol_acknowledge
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3122 case 0x04: /* Downloading End (MESSAGE FROM THE SYSTEM) */
3129 /*-----------------------------------------------------------------------------
3130 DIGIT DIALED - 03h (MESSAGE FROM THE SYSTEM)
3131 ---------------------------------------------------------------------------*/
3133 decode_digit_dialed(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
, unsigned offset
)
3135 proto_tree_add_item(tree
, hf_ua3g_digit_dialed_digit_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3139 /*-----------------------------------------------------------------------------
3140 SUBDEVICE_MSG - 04h (MESSAGE FROM THE TERMINAL)
3141 ---------------------------------------------------------------------------*/
3143 decode_subdevice_msg(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3144 unsigned offset
, unsigned length
)
3149 proto_tree_add_item(tree
, hf_ua3g_subdevice_msg_subdev_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3150 proto_tree_add_item(tree
, hf_ua3g_subdevice_msg_subdev_address
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3152 proto_tree_add_item(tree
, hf_ua3g_subdevice_msg_subdevice_opcode
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
3155 proto_tree_add_item(tree
, hf_ua3g_subdevice_msg_parameter_bytes
, tvb
, offset
+2, length
-2, ENC_NA
);
3160 /*-----------------------------------------------------------------------------
3161 IP DEVICE ROUTING - 13h (MESSAGE FROM THE TERMINAL)
3162 ---------------------------------------------------------------------------*/
3163 static const value_string str_command_cs_ip_device_routing
[] = {
3166 {0x02, "Get Parameters Value Response"},
3167 {0x03, "QOS Ticket RSP"},
3171 static const value_string str_vta_type
[] = {
3176 {0x21, "4028/8008/8008G/8028/8028S/8058S"},
3177 {0x22, "4038/8038"},
3178 {0x23, "4068/8068/8082/8068S"},
3187 static const value_string str_additional_vta_type
[] = {
3188 {0x00, "Not Applicable"},
3195 {0x36, "8008/8008G"},
3199 static const value_string str_cs_ip_device_routing_0F_compressor
[] = {
3200 {0x00, "G.711 A-law"},
3201 {0x01, "G.711 mu-law"},
3202 {0x02, "G.723.1 5.3kbps"},
3203 {0x03, "G.723.1 6.3kbps"},
3204 {0x04, "G.729A 8kbps"},
3205 {0x05, "G.722 64kbps"},
3206 {0x06, "G.722 56kbps"},
3207 {0x07, "G.722 48kbps"},
3212 static const value_string cs_ip_device_routing_03_parameter_id_vals
[] = {
3213 {0x01, "Date Of End Of Communication"},
3214 {0x02, "Node Number"},
3215 {0x03, "Ticket Protocol Version"},
3216 {0x06, "Equipment Type"},
3217 {0x08, "Local IP Address"},
3218 {0x09, "Distant IP Address"},
3220 {0x0B, "Distant ID"},
3221 {0x0C, "Call Duration (second)"},
3222 {0x0D, "Local SSRC"},
3223 {0x0E, "Distant SSRC"},
3227 {0x12, "Voice Mode"},
3228 {0x13, "Transmitted Framing (ms)"},
3229 {0x14, "Received Framing (ms)"},
3230 {0x15, "Framing Changes"},
3231 {0x16, "Number Of RTP Packets Received"},
3232 {0x17, "Number Of RTP Packets Sent"},
3233 {0x18, "Number Of RTP Packets Lost"},
3234 {0x19, "Total Silence Detected (second)"},
3235 {0x1A, "Number Of SID Received"},
3236 {0x1B, "Delay Distribution"},
3237 {0x1C, "Maximum Delay (ms)"},
3238 {0x1D, "Number Of DTMF Received"},
3239 {0x1E, "Consecutive BFI"},
3240 {0x1F, "BFI Distribution"},
3241 {0x20, "Jitter Depth Distribution"},
3242 {0x21, "Number Of ICMP Host Unreachable"},
3243 {0x26, "Firmware Version"},
3244 {0x29, "DSP Framing (ms)"},
3245 {0x2A, "Transmitter SID"},
3246 {0x2D, "Minimum Delay (ms)"},
3247 {0x2E, "802.1 Q Used"},
3248 {0x2F, "802.1p Priority"},
3251 {0x37, "Encryption"},
3252 {0x3D, "200 ms BFI Distribution"},
3253 {0x3E, "Consecutive RTP Lost"},
3256 static value_string_ext cs_ip_device_routing_03_parameter_id_vals_ext
= VALUE_STRING_EXT_INIT(cs_ip_device_routing_03_parameter_id_vals
);
3258 static const value_string cs_ip_device_routing_cmd03_type_of_equip_vals
[] = {
3259 {0x0101, "IP-Phone V2"},
3261 {0x0200, "4980 Softphone (PCMM2)"},
3262 {0x0201, "WebSoftphoneIP"},
3267 {0x0304, "GD3/GA3"},
3269 {0x0306, "INTIP3-RTPproxy"},
3270 {0x0307, "GD3/GA3-RTPproxy"},
3271 {0x0308, "MS-RTPproxy"},
3276 static const value_string cs_ip_device_routing_cmd03_voice_mode_vals
[] = {
3279 {0x52, "Group Listening"},
3280 {0x53, "On Hook Dial"},
3281 {0x54, "Handsfree"},
3286 static const value_string cs_ip_device_routing_delay_distribution_range_vals
[] = {
3295 static const value_string cs_ip_device_routing_0_9_range_vals
[] = {
3309 static const value_string cs_ip_device_routing_bfi_distribution_range_vals
[] = {
3318 static const value_string cs_ip_device_routing_200ms_bfi_distribution_range_vals
[] = {
3327 static const value_string cs_ip_device_routing_consecutive_rtp_lost_range_vals
[] = {
3337 decode_cs_ip_device_routing(proto_tree
*tree _U_
, tvbuff_t
*tvb
,
3338 packet_info
*pinfo
, unsigned offset
, unsigned length
)
3341 proto_tree
*ua3g_body_tree
= tree
, *ua3g_param_tree
;
3342 proto_item
*ua3g_param_item
;
3343 int i
, parameter_id
, parameter_length
;
3345 command
= tvb_get_uint8(tvb
, offset
);
3347 /* add text to the frame "INFO" column */
3348 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(command
, str_command_cs_ip_device_routing
, "Unknown"));
3350 if (!ua3g_body_tree
)
3353 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_ip_cs
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3359 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_cs_ip_device_routing_cmd00_vta_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3360 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_cs_ip_device_routing_cmd00_characteristic_number
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
3366 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_cs_ip_device_routing_cmd01_incident_0
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3370 proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_cs_ip_device_routing_param_identifier
, tvb
, offset
, 1,
3371 tvb_get_uint8(tvb
, offset
), "Parameter %d Identifier: %d",
3372 j
, tvb_get_uint8(tvb
, offset
));
3380 while (length
> 0) {
3381 parameter_id
= tvb_get_uint8(tvb
, offset
);
3382 parameter_length
= tvb_get_uint8(tvb
, offset
+ 1);
3384 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter
, tvb
, offset
,
3385 parameter_length
+ 2, parameter_id
,
3386 "%s", val_to_str_const(parameter_id
, ip_device_routing_cmd_get_param_req_vals
, "Unknown"));
3387 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
3389 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3393 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3397 if (parameter_length
> 0) {
3398 switch (parameter_id
) {
3399 case 0x00: /* Firmware Version */
3400 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_firmware_version
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3402 case 0x01: /* Firmware Version (same as above, different format) */
3403 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_tscip_version
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
3405 case 0x02: /* DHCP IP Address */
3406 case 0x03: /* Local IP Address */
3407 case 0x04: /* Subnetwork Mask */
3408 case 0x05: /* Router IP Address */
3409 case 0x06: /* TFTP IP Address */
3410 case 0x07: /* Main CPU Address */
3411 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_ip
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
3413 case 0x08: /* Default Codec */
3415 if (parameter_length
<= 8) {
3416 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_default_codec_uint
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
3418 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_default_codec_bytes
, tvb
, offset
, parameter_length
, ENC_NA
);
3422 case 0x09: /* Ethernet Drivers Config */
3424 if (parameter_length
== 2) {
3425 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_lan_speed
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3426 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_lan_duplex
, tvb
, offset
+1, 1, ENC_NA
|ENC_ASCII
);
3427 } else if (parameter_length
== 4) {
3428 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_lan_speed
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3429 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_lan_duplex
, tvb
, offset
+1, 1, ENC_NA
|ENC_ASCII
);
3430 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_pc_speed
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
3431 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_pc_duplex
, tvb
, offset
+3, 1, ENC_NA
|ENC_ASCII
);
3433 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
3437 case 0x0A: /* MAC Address */
3438 case 0x0B: /* Pseudo MAC Address */
3439 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_mac_address
, tvb
, offset
, 6, ENC_NA
);
3442 if (parameter_length
<= 8) {
3443 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_uint
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
3445 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd02_parameter_value
, tvb
, offset
, parameter_length
, ENC_NA
);
3450 offset
+= parameter_length
;
3451 length
-= parameter_length
;
3457 while (length
> 0) {
3458 parameter_id
= tvb_get_uint8(tvb
, offset
);
3459 parameter_length
= tvb_get_ntohs(tvb
, offset
+ 1);
3461 ua3g_param_item
= proto_tree_add_uint_format(ua3g_body_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter
, tvb
, offset
,
3462 parameter_length
+3, parameter_id
, "%s",
3463 val_to_str_const(parameter_id
, cs_ip_device_routing_03_parameter_id_vals
, "Unknown"));
3464 ua3g_param_tree
= proto_item_add_subtree(ua3g_param_item
, ett_ua3g_param
);
3466 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3470 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_length
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3474 if (parameter_length
> 0) {
3475 switch (parameter_id
) {
3476 case 0x06: /* Type Of Equipment */
3477 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_type_of_equip
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3479 case 0x08: /* Local IP Address */
3480 case 0x09: /* Distant IP Address */
3481 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_ip
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
3483 case 0x0A: /* Local ID */
3484 case 0x0B: /* Remote ID */
3485 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_string
, tvb
, offset
, parameter_length
, ENC_NA
|ENC_ASCII
);
3487 case 0x0F: /* Codec */
3488 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_codec
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3490 case 0x10: /* VAD */
3491 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_vad
, tvb
, offset
, 1, ENC_NA
);
3493 case 0x11: /* ECE */
3494 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_ece
, tvb
, offset
, 1, ENC_NA
);
3496 case 0x12: /* Voice Mode */
3497 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_voice_mode
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3499 case 0x1B: /* Delay Distribution */
3500 for (i
= 0; i
< parameter_length
/2; i
++) {
3501 unsigned off
= (offset
+ (i
*2));
3502 uint16_t val
= tvb_get_ntohs(tvb
, off
);
3503 proto_tree_add_uint_format_value(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_delay_distribution
, tvb
, off
,
3504 2, val
, "%s: %d", val_to_str_const(i
, cs_ip_device_routing_delay_distribution_range_vals
, "Unknown"), val
);
3507 case 0x1E: /* Consecutive BFI */
3508 for (i
= 0; i
< parameter_length
/2; i
++) {
3509 unsigned off
= (offset
+ (i
*2));
3510 uint16_t val
= tvb_get_ntohs(tvb
, off
);
3511 proto_tree_add_uint_format_value(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_consecutive_bfi
, tvb
, off
,
3512 2, val
, "%s: %d", val_to_str_const(i
, cs_ip_device_routing_0_9_range_vals
, "Unknown"), val
);
3515 case 0x1F: /* BFI Distribution */
3516 for (i
= 0; i
< parameter_length
/2; i
++) {
3517 unsigned off
= (offset
+ (i
*2));
3518 uint16_t val
= tvb_get_ntohs(tvb
, off
);
3519 proto_tree_add_uint_format_value(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_bfi_distribution
, tvb
, off
,
3520 2, val
, "%s: %d", val_to_str_const(i
, cs_ip_device_routing_bfi_distribution_range_vals
, "Unknown"), val
);
3523 case 0x20: /* Jitter Depth Distribution */
3524 for (i
= 0; i
< parameter_length
/4; i
++) {
3525 unsigned off
= (offset
+ (i
*4));
3526 uint32_t val
= tvb_get_ntohs(tvb
, off
);
3527 proto_tree_add_uint_format_value(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_jitter_depth_distribution
, tvb
, off
,
3528 2, val
, "%s: %d", val_to_str_const(i
, cs_ip_device_routing_0_9_range_vals
, "Unknown"), val
);
3531 case 0x26: /* Firmware Version */
3532 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_firmware_version
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3534 case 0x2E: /* 802.1 Q Used */
3535 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_8021Q_used
, tvb
, offset
, 1, ENC_NA
);
3537 case 0x2F: /* 802.1p Priority */
3538 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_8021P_priority
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3540 case 0x30: /* VLAN Id */
3541 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_vlan_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3543 case 0x31: /* DiffServ */
3544 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_diffserv
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3546 case 0x3D: /* 200 ms BFI Distribution */
3547 for (i
= 0; i
< parameter_length
/2; i
++) {
3548 unsigned off
= (offset
+ (i
*2));
3549 uint16_t val
= tvb_get_ntohs(tvb
, off
);
3550 proto_tree_add_uint_format_value(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_bfi_distribution_200ms
, tvb
, off
,
3551 2, val
, "%s: %d", val_to_str_const(i
, cs_ip_device_routing_200ms_bfi_distribution_range_vals
, "Unknown"), val
);
3554 case 0x3E: /* Consecutive RTP Lost */
3555 for (i
= 0; i
< parameter_length
/2; i
++) {
3556 unsigned off
= (offset
+ (i
*2));
3557 uint16_t val
= tvb_get_ntohs(tvb
, off
);
3558 proto_tree_add_uint_format_value(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_consecutive_rtp_lost
, tvb
, off
,
3559 2, val
, "%s: %d", val_to_str_const(i
, cs_ip_device_routing_consecutive_rtp_lost_range_vals
, "Unknown"), val
);
3562 case 0x01: /* Date Of End Of Communication */
3563 case 0x02: /* Node Number */
3564 case 0x03: /* Ticket Protocol Version */
3565 case 0x0C: /* Call Duration (second) */
3566 case 0x0D: /* Local SSRC */
3567 case 0x0E: /* Distant SSRC */
3568 case 0x13: /* Transmitted Framing (ms) */
3569 case 0x14: /* Received Framing (ms) */
3570 case 0x15: /* Framing Changes */
3571 case 0x16: /* Number Of RTP Packets Received */
3572 case 0x17: /* Number Of RTP Packets Sent */
3573 case 0x18: /* Number Of RTP Packets Lost */
3574 case 0x19: /* Total Silence Detected (second) */
3575 case 0x1A: /* Number Of SID Received */
3576 case 0x1C: /* Maximum Delay (ms) */
3577 case 0x1D: /* Number Of DTMF Received */
3578 case 0x21: /* Number Of ICMP Host Unreachable */
3579 case 0x29: /* DSP Framing (ms) */
3580 case 0x2A: /* Transmitter SID */
3581 case 0x2D: /* Minimum Delay (ms) */
3582 case 0x37: /* Encryption */
3584 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_cs_ip_device_routing_cmd03_parameter_uint
, tvb
, offset
, parameter_length
, ENC_BIG_ENDIAN
);
3588 offset
+= parameter_length
;
3589 length
-= parameter_length
;
3600 /*-----------------------------------------------------------------------------
3601 UNSOLICITED MESSAGE - 9Fh/1Fh (MESSAGE FROM THE TERMINAL)
3602 VERSION RESPONSE - 21h (MESSAGE FROM THE TERMINAL)
3603 ---------------------------------------------------------------------------*/
3604 static const value_string str_command_unsolicited_msg
[] = {
3605 {0x00, "Hardware Reset Acknowledge"},
3606 {0x01, "Software Reset Acknowledge"},
3607 {0x02, "Illegal Command Received"},
3608 {0x05, "Subdevice Down"},
3609 {0x06, "Segment Failure"},
3610 {0x07, "UA Device Event"},
3613 static const value_string str_unsolicited_msg_other_info_1
[] = {
3614 {0x00, "Link Is TDM"},
3615 {0x01, "Link Is IP"},
3618 static const value_string str_unsolicited_msg_other_info_2
[] = {
3619 {0x00, "Download Allowed"},
3620 {0x01, "Download Refused"},
3623 static const true_false_string tfs_export_full
= {
3625 "Export (No Thales)"
3627 static const true_false_string tfs_fast_gigabit
= {
3631 static const true_false_string tfs_2g_3g
= {
3635 static const value_string str_unsolicited_msg_hard_config_chip
[] = {
3641 static const value_string str_unsolicited_msg_hard_config_flash
[] = {
3643 {0x01, "128 Kbytes"},
3644 {0x02, "256 Kbytes"},
3645 {0x03, "512 Kbytes"},
3652 static const value_string str_unsolicited_msg_hard_config_ram
[] = {
3653 {0x00, "No External RAM"},
3654 {0x01, "128 Kbytes"},
3655 {0x02, "256 Kbytes"},
3656 {0x03, "512 Kbytes"},
3664 /* TODO: these values are clearly wrong - needs to fit into 2 bits */
3665 static const value_string str_unsolicited_msg_subtype
[] = {
3671 static const value_string str_unsolicited_msg_generation
[] = {
3675 static const value_string str_unsolicited_msg_design
[] = {
3679 static const value_string str_unsolicited_msg_hard_vta_type
[] = {
3680 {0x03, "MR2 (4035)"},
3681 {0x05, "VLE (4010)"},
3682 {0x07, "LE (4020)"},
3685 static const value_string str_unsolicited_msg_hard_design
[] = {
3690 /* TODO: these values are clearly wrong - needs to fit into 2 bits */
3691 static const value_string str_unsolicited_msg_hard_subtype
[] = {
3699 decode_unsolicited_msg(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo
,
3700 unsigned offset
, unsigned length
, uint8_t opcode
)
3703 proto_tree
*ua3g_body_tree
= tree
, *ua3g_param_tree
;
3705 command
= tvb_get_uint8(tvb
, offset
);
3707 if (opcode
!= 0x21) {
3708 /* add text to the frame "INFO" column */
3709 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ": %s", val_to_str_const(command
, str_command_unsolicited_msg
, "Unknown"));
3711 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_command_unsolicited_msg
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3715 command
= 0xFF; /* Opcode = 0x21 */
3720 case 0x00: /* Hardware Reset Acknowledge */
3721 case 0x01: /* Software Reset Acknowledge */
3722 case 0xFF: /* Opcode = 0x21 : Version Response */
3726 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_device_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3730 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_firmware_version
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3734 if (opcode
!= 0x21) {
3735 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_self_test_result
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3740 vta_type
= tvb_get_uint8(tvb
, offset
);
3742 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_vta_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3752 ua3g_param_tree
= proto_tree_add_subtree(ua3g_body_tree
, tvb
, offset
, 1, ett_ua3g_param
, NULL
, "Characteristic Number");
3753 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_unsolicited_msg_char_num_vta_subtype
,
3754 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3755 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_unsolicited_msg_char_num_generation
,
3756 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3757 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_unsolicited_msg_char_num_design
,
3758 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3761 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_other_information
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3765 ua3g_param_tree
= proto_tree_add_subtree(ua3g_body_tree
, tvb
, offset
, 1, ett_ua3g_param
, NULL
, "Hardware Configuration");
3766 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_unsolicited_msg_hardware_config_vta_type
,
3767 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3768 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_unsolicited_msg_hardware_config_design
,
3769 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3770 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_unsolicited_msg_hardware_config_subtype
,
3771 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3775 if (opcode
!= 0x21) {
3776 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_hook_status
, tvb
, offset
, 1, ENC_NA
);
3784 link
= tvb_get_uint8(tvb
, offset
);
3785 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_other_information_1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3790 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_hardware_version
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3794 ua3g_param_tree
= proto_tree_add_subtree(ua3g_body_tree
, tvb
, offset
, 1, ett_ua3g_param
, NULL
, "Hardware Configuration");
3795 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_unsolicited_msg_hardware_config_hard_config_chip
,
3796 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3797 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_unsolicited_msg_hardware_config_hard_config_flash
,
3798 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3799 proto_tree_add_item(ua3g_param_tree
, hf_ua3g_unsolicited_msg_hardware_config_config_ram
,
3800 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3804 static int * const hardware_config
[] = {
3805 &hf_ua3g_unsolicited_msg_hardware_config_export_full
,
3806 &hf_ua3g_unsolicited_msg_hardware_config_ethernet_hardware
,
3807 &hf_ua3g_unsolicited_msg_hardware_config_extended_edition
,
3808 &hf_ua3g_unsolicited_msg_hardware_config_wideband
,
3809 &hf_ua3g_unsolicited_msg_hardware_config_3g_set
,
3810 &hf_ua3g_unsolicited_msg_hardware_config_8082_set
,
3811 &hf_ua3g_unsolicited_msg_hardware_config_super_wideband
,
3815 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_other_information_2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3819 proto_tree_add_bitmask(ua3g_body_tree
, tvb
, offset
, hf_ua3g_unsolicited_msg_hardware_config
, ett_ua3g_param
, hardware_config
, ENC_NA
);
3824 if (opcode
!= 0x21) {
3825 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_hook_status
,
3826 tvb
, offset
, 1, ENC_NA
);
3832 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_firmware_datas_patch_version
,
3833 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3835 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_firmware_version_loader
, tvb
,
3836 offset
+2, 2, ENC_BIG_ENDIAN
);
3839 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_datas_version
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3843 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_firmware_version_bootloader
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3848 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_additional_vta_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3854 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_capability_info_bluetooth_supported
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3860 static int * const capability_info
[] = {
3861 &hf_ua3g_unsolicited_msg_capability_info_vpn
,
3862 &hf_ua3g_unsolicited_msg_capability_info_ipsec
,
3863 &hf_ua3g_unsolicited_msg_capability_info_dtls
,
3866 proto_tree_add_bitmask(ua3g_body_tree
, tvb
, offset
, hf_ua3g_unsolicited_msg_capability_info_vpn_encryption_status
, ett_ua3g_param
, capability_info
, ENC_NA
);
3872 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_capability_info_wlan_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3878 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_capability_info_reserved
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3890 case 0x02: /* Illegal Command Received */
3892 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_opcode_of_bad_command
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3895 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_next_byte_of_bad_command
, tvb
, offset
+1, length
-1, ENC_NA
);
3899 case 0x05: /* Subdevice Down */
3901 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_subdevice_address
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3904 case 0x06: /* Segment Failure */
3906 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_segment_failure_t
, tvb
, offset
, 1, ENC_NA
);
3907 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_segment_failure_num
, tvb
, offset
, 1, ENC_NA
);
3908 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_segment_failure_s
, tvb
, offset
, 1, ENC_NA
);
3909 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_segment_failure_l
, tvb
, offset
, 1, ENC_NA
);
3910 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_opcode_bad_segment
, tvb
, offset
+1, 1, ENC_BIG_ENDIAN
);
3911 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_next_byte_of_bad_segment
, tvb
, offset
+2, 1, ENC_BIG_ENDIAN
);
3914 case 0x07: /* UA Device Event */
3916 proto_tree_add_item(ua3g_body_tree
, hf_ua3g_unsolicited_msg_device_event
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3927 /*-----------------------------------------------------------------------------
3928 NON-DIGIT KEY PUSHED - 20h (MESSAGE FROM THE TERMINAL)
3929 DIGIT KEY RELEASED - 26h (MESSAGE FROM THE TERMINAL)
3930 KEY RELEASED - 2Ah (MESSAGE FROM THE TERMINAL)
3931 TM KEY PUSHED - 2Dh (MESSAGE FROM THE TERMINAL)
3932 ---------------------------------------------------------------------------*/
3934 decode_key_number(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3935 unsigned offset
, unsigned length
)
3938 proto_tree
*ua3g_body_tree
;
3939 static const value_string str_first_parameter
[] = {
3940 {0x01, "Production Test Command"},
3941 {0x06, "Reserved For Compatibility"},
3943 {0x42, "Subdevice Address"},
3952 proto_tree_add_uint_format_value(tree
, hf_ua3g_key_number
, tvb
, offset
, 1,
3953 tvb_get_uint8(tvb
, offset
), "Row %d, Column %d",
3954 (tvb_get_uint8(tvb
, offset
) & 0xF0), (tvb_get_uint8(tvb
, offset
) & 0x0F));
3959 /*-----------------------------------------------------------------------------
3960 I'M HERE - 22h - Only for UA NOE (MESSAGE FROM THE TERMINAL)
3961 ---------------------------------------------------------------------------*/
3963 decode_i_m_here(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
, unsigned offset
)
3965 proto_tree_add_item(tree
, hf_ua3g_i_m_here_id_code
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3969 /*-----------------------------------------------------------------------------
3970 RESPONSE STATUS INQUIRY - 23h (MESSAGE FROM THE TERMINAL)
3971 SPECIAL KEY STATUS - 29h (MESSAGE FROM THE TERMINAL)
3972 ---------------------------------------------------------------------------*/
3973 static const true_false_string tfs_special_key_parameters
= { "Not Received Default In Effect", "Downloaded Values In Effect" };
3974 static const true_false_string tfs_hookswitch_status
= {"On Hook", "Off Hook"};
3975 static const true_false_string tfs_released_pressed
= { "Released", "Pressed" };
3978 decode_special_key(proto_tree
*tree
, tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3979 unsigned offset
, uint8_t opcode
)
3981 static int * const special_keys
[] = {
3982 &hf_ua3g_special_key_shift
,
3983 &hf_ua3g_special_key_ctrl
,
3984 &hf_ua3g_special_key_alt
,
3985 &hf_ua3g_special_key_cmd
,
3986 &hf_ua3g_special_key_shift_prime
,
3987 &hf_ua3g_special_key_ctrl_prime
,
3988 &hf_ua3g_special_key_alt_prime
,
3989 &hf_ua3g_special_key_cmd_prime
,
3993 if (opcode
== 0x23) {
3994 proto_tree_add_item(tree
, hf_ua3g_special_key_param_dtmf
, tvb
, offset
, 1, ENC_NA
);
3995 proto_tree_add_item(tree
, hf_ua3g_special_key_hookswitch_status
, tvb
, offset
, 1, ENC_NA
);
3999 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, special_keys
, ENC_NA
);
4003 /*-----------------------------------------------------------------------------
4004 SUBDEVICE STATE ENQUIRY - 24h (MESSAGE FROM THE TERMINAL)
4005 ---------------------------------------------------------------------------*/
4007 decode_subdevice_state(proto_tree
*tree
, tvbuff_t
*tvb
,
4008 packet_info
*pinfo _U_
, unsigned offset
)
4013 for (i
= 0; i
<= 7; i
++) {
4014 info
= tvb_get_uint8(tvb
, offset
);
4015 proto_tree_add_uint_format(tree
, hf_ua3g_subdevice_state
, tvb
, offset
, 1,
4016 info
& 0x0F, "Subdevice %d State: %d",
4019 proto_tree_add_uint_format(tree
, hf_ua3g_subdevice_state
, tvb
, offset
, 1,
4020 (info
& 0xF0) >> 4, "Subdevice %d State: %d",
4021 i
, (info
& 0xF0) >> 4);
4027 /*-----------------------------------------------------------------------------
4029 ---------------------------------------------------------------------------*/
4031 dissect_ua3g(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data
)
4034 proto_item
*ua3g_item
;
4035 proto_tree
*ua3g_tree
, *ua3g_body_tree
;
4038 const char* opcode_str
;
4039 e_ua_direction
*message_direction
;
4041 /* Reject the packet if data is NULL */
4044 message_direction
= (e_ua_direction
*)data
;
4046 ua3g_item
= proto_tree_add_item(tree
, proto_ua3g
, tvb
, 0, -1, ENC_NA
);
4047 ua3g_tree
= proto_item_add_subtree(ua3g_item
, ett_ua3g
);
4049 /* Length of the UA Message */
4050 length
= tvb_get_letohs(tvb
, offset
);
4052 /* add text to the frame "INFO" column */
4053 col_append_str(pinfo
->cinfo
, COL_INFO
, " - UA3G Message:");
4055 proto_tree_add_uint(ua3g_tree
, hf_ua3g_length
, tvb
, offset
, 2, length
);
4058 /* Opcode of the UA Message */
4059 opcode
= tvb_get_uint8(tvb
, offset
);
4061 opcode
= (opcode
& 0x7f);
4063 /* Useful for a research in wireshark */
4064 if (*message_direction
== SYS_TO_TERM
) {
4065 proto_tree_add_uint(ua3g_tree
, hf_ua3g_opcode_sys
, tvb
, offset
, 1, opcode
);
4066 opcode_str
= val_to_str_ext_const(opcode
, &opcodes_vals_sys_ext
, "Unknown");
4068 proto_tree_add_uint(ua3g_tree
, hf_ua3g_opcode_term
, tvb
, offset
, 1, opcode
);
4069 opcode_str
= val_to_str_ext_const(opcode
, &opcodes_vals_term_ext
, "Unknown");
4075 /* add text to the frame "INFO" column */
4076 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " %s", opcode_str
);
4078 proto_item_append_text(ua3g_item
, ", %s", opcode_str
);
4080 ua3g_body_tree
= proto_tree_add_subtree(ua3g_tree
, tvb
, offset
, length
, ett_ua3g_body
, NULL
, "UA3G Body");
4082 if (*message_direction
== SYS_TO_TERM
) {
4084 case SC_PRODUCTION_TEST
: /* 0x01 */
4086 decode_with_one_parameter(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, hf_ua3g_opcode_production_test
);
4089 case SC_SUBDEVICE_RESET
: /* 0x06 */
4091 decode_with_one_parameter(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, hf_ua3g_opcode_subservice_reset
);
4094 case SC_ARE_YOU_THERE
: /* 0x2B */
4096 decode_with_one_parameter(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, hf_ua3g_opcode_are_you_there
);
4099 case SC_SET_SPEAKER_VOL
: /* 0x3B */
4101 decode_with_one_parameter(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, hf_ua3g_opcode_set_speaker_vol
);
4104 case SC_TRACE_ON
: /* 0x42 */
4106 decode_with_one_parameter(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, hf_ua3g_opcode_trace_on
);
4109 case SC_SUBDEVICE_ESCAPE
: /* 0x02 */
4111 decode_subdevice_escape(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4114 case SC_SOFT_RESET
: /* 0x03 */
4116 decode_software_reset(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4119 case SC_IP_PHONE_WARMSTART
: /* 0x04 */
4121 decode_ip_phone_warmstart(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4124 case SC_SUPER_MSG
: /* 0x0B */
4125 case SC_SUPER_MSG_2
: /* 0x17 */
4127 decode_super_msg(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, opcode
);
4130 case SC_SEGMENT_MSG
: /* 0x0C */
4132 decode_segment_msg(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4135 case SC_IP_DEVICE_ROUTING
: /* 0x13 */
4137 decode_ip_device_routing(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4140 case SC_DEBUG_IN_LINE
: /* 0x18 */
4142 decode_debug_in_line(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4145 case SC_LED_COMMAND
: /* 0x21 */
4147 decode_led_command(ua3g_body_tree
, tvb
, pinfo
, offset
);
4150 case SC_LCD_LINE_1_CMD
: /* 0x27 */
4151 case SC_LCD_LINE_2_CMD
: /* 0x28 */
4153 decode_lcd_line_cmd(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4156 case SC_MAIN_VOICE_MODE
: /* 0x29 */
4158 decode_main_voice_mode(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4161 case SC_SUBDEVICE_METASTATE
: /* 0x2C */
4163 decode_subdevice_metastate(ua3g_body_tree
, tvb
, pinfo
, offset
);
4166 case SC_DWL_DTMF_CLCK_FORMAT
: /* 0x30 */
4168 decode_dwl_dtmf_clck_format(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4171 case SC_SET_CLCK
: /* 0x31 */
4173 decode_set_clck(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4176 case SC_VOICE_CHANNEL
: /* 0x32 */
4178 decode_voice_channel(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4181 case SC_EXTERNAL_RINGING
: /* 0x33 */
4183 decode_external_ringing(ua3g_body_tree
, tvb
, pinfo
, offset
);
4186 case SC_LCD_CURSOR
: /* 0x35 */
4188 decode_lcd_cursor(ua3g_body_tree
, tvb
, pinfo
, offset
);
4191 case SC_DWL_SPECIAL_CHAR
: /* 0x36 */
4193 decode_dwl_special_char(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4196 case SC_SET_CLCK_TIMER_POS
: /* 0x38 */
4198 decode_set_clck_timer_pos(ua3g_body_tree
, tvb
, pinfo
, offset
);
4201 case SC_SET_LCD_CONTRAST
: /* 0x39 */
4203 decode_set_lcd_contrast(ua3g_body_tree
, tvb
, pinfo
, offset
);
4206 case SC_BEEP
: /* 0x3C */
4208 decode_beep(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4211 case SC_SIDETONE
: /* 0x3D */
4213 decode_sidetone(ua3g_body_tree
, tvb
, pinfo
, offset
);
4216 case SC_RINGING_CADENCE
: /* 0x3E */
4218 decode_ringing_cadence(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4221 case SC_MUTE
: /* 0x3F */
4223 decode_mute(ua3g_body_tree
, tvb
, pinfo
, offset
);
4226 case SC_FEEDBACK
: /* 0x40 */
4228 decode_feedback(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4231 case SC_READ_PERIPHERAL
: /* 0x44 */
4232 case SC_WRITE_PERIPHERAL
: /* 0x45 */
4234 decode_r_w_peripheral(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4237 case SC_ICON_CMD
: /* 0x47 */
4239 decode_icon_cmd(ua3g_body_tree
, tvb
, pinfo
, offset
);
4242 case SC_AUDIO_CONFIG
: /* 0x49 */
4244 decode_audio_config(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4247 case SC_AUDIO_PADDED_PATH
: /* 0x4A */
4249 decode_audio_padded_path(ua3g_body_tree
, tvb
, pinfo
, offset
);
4252 case SC_KEY_RELEASE
: /* 0x41 */
4254 decode_on_off_level(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, hf_ua3g_command_key_release
);
4257 case SC_AMPLIFIED_HANDSET
: /* 0x48 */
4259 decode_on_off_level(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, hf_ua3g_command_amplified_handset
);
4262 case SC_LOUDSPEAKER
: /* 0x4D */
4264 decode_on_off_level(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, hf_ua3g_command_loudspeaker
);
4267 case SC_ANNOUNCE
: /* 0x4E */
4269 decode_on_off_level(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, hf_ua3g_command_announce
);
4272 case SC_RING
: /* 0x4F */
4274 decode_ring(ua3g_body_tree
, tvb
, pinfo
, offset
);
4277 case SC_UA_DWL_PROTOCOL
: /* 0x50 */
4279 decode_ua_dwl_protocol(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4282 /* Case for UA3G message with only opcode (No body) */
4283 case SC_NOP
: /* 0x00 */
4284 case SC_HE_ROUTING
: /* 0x05 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4285 case SC_LOOPBACK_ON
: /* 0x07 */
4286 case SC_LOOPBACK_OFF
: /* 0x08 */
4287 case SC_VIDEO_ROUTING
: /* 0x09 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4288 case SC_REMOTE_UA_ROUTING
: /* 0x0D NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4289 case SC_VERY_REMOTE_UA_ROUTING
: /* 0x0E NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4290 case SC_OSI_ROUTING
: /* 0x0F NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4291 case SC_ABC_A_ROUTING
: /* 0x11 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4292 case SC_IBS_ROUTING
: /* 0x12 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4293 case SC_M_REFLEX_HUB_ROUTING
: /* 0x14 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4294 case SC_START_BUZZER
: /* 0x22 */
4295 case SC_STOP_BUZZER
: /* 0x23 */
4296 case SC_ENABLE_DTMF
: /* 0x24 */
4297 case SC_DISABLE_DTMF
: /* 0x25 */
4298 case SC_CLEAR_LCD_DISP
: /* 0x26 */
4299 case SC_VERSION_INQUIRY
: /* 0x2A */
4300 case SC_VTA_STATUS_INQUIRY
: /* 0x2D */
4301 case SC_SUBDEVICE_STATE
: /* 0x2E */
4302 case SC_AUDIO_IDLE
: /* 0x3A */
4303 case SC_TRACE_OFF
: /* 0x43 */
4304 case SC_ALL_ICONS_OFF
: /* 0x46 */
4305 case SC_RELEASE_RADIO_LINK
: /* 0x4B */
4306 case SC_DECT_HANDOVER
: /* 0x4C NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4313 if (*message_direction
== TERM_TO_SYS
) {
4315 case CS_DIGIT_DIALED
: /* 0x03 */
4317 decode_digit_dialed(ua3g_body_tree
, tvb
, pinfo
, offset
);
4320 case CS_SUBDEVICE_MSG
: /* 0x04 */
4322 decode_subdevice_msg(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4325 case CS_SUPER_MSG
: /* 0x0B */
4326 case CS_SUPER_MSG_2
: /* 0x17 */
4328 decode_super_msg(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, opcode
);
4331 case CS_SEGMENT_MSG
: /* 0x0C */
4333 decode_segment_msg(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4336 case CS_IP_DEVICE_ROUTING
: /* 0x13 */
4338 decode_cs_ip_device_routing(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4341 case CS_DEBUG_IN_LINE
: /* 0x18 */
4343 decode_debug_in_line(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4346 case CS_NON_DIGIT_KEY_PUSHED
: /* 0x20 Key translation not sure */
4347 case CS_DIGIT_KEY_RELEASED
: /* 0x26 Key translation not sure */
4348 case CS_KEY_RELEASED
: /* 0x2A */
4349 case CS_TM_KEY_PUSHED
: /* 0x2D Key translation not sure */
4351 decode_key_number(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4354 case CS_UNSOLICITED_MSG
: /* 0x9F (0x1F) */
4355 case CS_VERSION_RESPONSE
: /* 0x21 */
4357 decode_unsolicited_msg(ua3g_body_tree
, tvb
, pinfo
, offset
, length
, opcode
);
4360 case CS_I_M_HERE
: /* 0x22 */
4362 decode_i_m_here(ua3g_body_tree
, tvb
, pinfo
, offset
);
4365 case CS_RSP_STATUS_INQUIRY
: /* 0x23 */
4366 case CS_SPECIAL_KEY_STATUS
: /* 0x29 */
4368 decode_special_key(ua3g_body_tree
, tvb
, pinfo
, offset
, opcode
);
4371 case CS_SUBDEVICE_STATE
: /* 0x24 */
4373 decode_subdevice_state(ua3g_body_tree
, tvb
, pinfo
, offset
);
4376 case CS_PERIPHERAL_CONTENT
: /* 0x2B */
4378 decode_r_w_peripheral(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4381 case CS_UA_DWL_PROTOCOL
: /* 0x50 */
4383 decode_ua_dwl_protocol(ua3g_body_tree
, tvb
, pinfo
, offset
, length
);
4386 /* Case for UA3G message with only opcode (No body) */
4387 case CS_NOP_ACK
: /* 0x00 */
4388 case CS_HANDSET_OFFHOOK
: /* 0x01 */
4389 case CS_HANDSET_ONHOOK
: /* 0x02 */
4390 case CS_HE_ROUTING
: /* 0x05 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4391 case CS_LOOPBACK_ON
: /* 0x06 */
4392 case CS_LOOPBACK_OFF
: /* 0x07 */
4393 case CS_VIDEO_ROUTING
: /* 0x09 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4394 case CS_WARMSTART_ACK
: /* 0x0A */
4395 case CS_REMOTE_UA_ROUTING
: /* 0x0D NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4396 case CS_VERY_REMOTE_UA_R
: /* 0x0E NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4397 case CS_OSI_ROUTING
: /* 0x0F NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4398 case CS_ABC_A_ROUTING
: /* 0x11 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4399 case CS_IBS_ROUTING
: /* 0x12 NOT DECODED - No description in 3AK 29000 0556 DSZZA */
4400 case CS_TRACE_ON_ACK
: /* 0x27 */
4401 case CS_TRACE_OFF_ACK
: /* 0x28 */
4409 return tvb_captured_length(tvb
);
4413 /*-----------------------------------------------------------------------------
4414 DISSECTORS REGISTRATION FUNCTIONS
4415 ---------------------------------------------------------------------------*/
4417 proto_register_ua3g(void)
4419 static hf_register_info hf
[] =
4422 { "Length", "ua3g.length",
4423 FT_UINT16
, BASE_DEC
, NULL
, 0x00,
4426 { &hf_ua3g_opcode_sys
,
4427 { "Opcode", "ua3g.opcode",
4428 FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, &opcodes_vals_sys_ext
, 0x00,
4431 { &hf_ua3g_opcode_term
,
4432 { "Opcode", "ua3g.opcode",
4433 FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, &opcodes_vals_term_ext
, 0x00,
4436 { &hf_ua3g_opcode_production_test
,
4437 { "Production Test Command", "ua3g.production_test",
4438 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
4441 { &hf_ua3g_opcode_subservice_reset
,
4442 { "Reserved For Compatibility", "ua3g.subservice_reset",
4443 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
4446 { &hf_ua3g_opcode_are_you_there
,
4447 { "Temporization", "ua3g.are_you_there",
4448 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
4451 { &hf_ua3g_opcode_set_speaker_vol
,
4452 { "Volume", "ua3g.set_speaker_vol",
4453 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
4456 { &hf_ua3g_opcode_trace_on
,
4457 { "Subdevice Address", "ua3g.trace_on",
4458 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
4462 { "IP Device Routing", "ua3g.ip",
4463 FT_UINT8
, BASE_HEX
, VALS(str_command_ip_device_routing
), 0x00,
4467 { "IP Device Routing", "ua3g.ip.cs",
4468 FT_UINT8
, BASE_HEX
, VALS(str_command_cs_ip_device_routing
), 0x00,
4471 { &hf_ua3g_command_led
,
4472 { "Led Command", "ua3g.command.led",
4473 FT_UINT8
, BASE_HEX
, VALS(str_command_led
), 0x00,
4476 { &hf_ua3g_command_lcd_line
,
4477 { "LCD Line Command", "ua3g.command.lcd_line",
4478 FT_UINT8
, BASE_HEX
, VALS(str_command_lcd_line
), 0x00,
4481 { &hf_ua3g_main_voice_mode
,
4482 { "Voice Mode", "ua3g.command.main_voice_mode",
4483 FT_UINT8
, BASE_HEX
, VALS(str_main_voice_mode
), 0x00,
4486 { &hf_ua3g_command_set_clck
,
4487 { "Set Clock", "ua3g.command.set_clck",
4488 FT_UINT8
, BASE_HEX
, VALS(str_command_set_clck
), 0x00,
4491 { &hf_ua3g_external_ringing_command
,
4492 { "External Ringing Command", "ua3g.command.external_ringing",
4493 FT_UINT8
, BASE_HEX
, VALS(str_ext_ring_cmd
), 0x00,
4496 { &hf_ua3g_lcd_cursor
,
4497 { "Cursor", "ua3g.lcd_cursor",
4498 FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x02,
4501 { &hf_ua3g_command_beep
,
4502 { "Beep", "ua3g.command.beep",
4503 FT_UINT8
, BASE_HEX
, VALS(str_command_beep
), 0x00,
4506 { &hf_ua3g_command_sidetone
,
4507 { "Sidetone", "ua3g.command.sidetone",
4508 FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x00,
4511 { &hf_ua3g_command_mute
,
4512 { "Microphone", "ua3g.command.mute",
4513 FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x01,
4516 { &hf_ua3g_command_feedback
,
4517 { "Feedback", "ua3g.command.feedback",
4518 FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x00,
4521 { &hf_ua3g_command_audio_config
,
4522 { "Audio Config", "ua3g.command.audio_config",
4523 FT_UINT8
, BASE_HEX
, VALS(str_command_audio_config
), 0x00,
4526 { &hf_ua3g_command_key_release
,
4527 { "Key Release", "ua3g.command.key_release",
4528 FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x00,
4531 { &hf_ua3g_command_amplified_handset
,
4532 { "Amplified Handset (Boost)", "ua3g.command.amplified_handset",
4533 FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x00,
4536 { &hf_ua3g_command_loudspeaker
,
4537 { "Loudspeaker", "ua3g.command.loudspeaker",
4538 FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x00,
4541 { &hf_ua3g_command_announce
,
4542 { "Announce", "ua3g.command.announce",
4543 FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x00,
4546 { &hf_ua3g_command_ring
,
4547 { "Ring", "ua3g.command.ring",
4548 FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x00,
4551 { &hf_ua3g_command_ua_dwl_protocol
,
4552 { "UA Download Protocol", "ua3g.command.ua_dwl_protocol",
4553 FT_UINT8
, BASE_HEX
, VALS(str_command_ua_dwl_protocol
), 0x00,
4556 { &hf_ua3g_command_unsolicited_msg
,
4557 { "Unsolicited Message", "ua3g.command.unsolicited_msg",
4558 FT_UINT8
, BASE_HEX
, VALS(str_command_unsolicited_msg
), 0x00,
4561 { &hf_ua3g_ip_device_routing_stop_rtp_parameter
,
4562 { "Parameter", "ua3g.ip.stop_rtp.parameter",
4563 FT_UINT8
, BASE_HEX
, VALS(ip_device_routing_cmd_stop_rtp_vals
), 0x00,
4566 { &hf_ua3g_ip_device_routing_stop_rtp_parameter_length
,
4567 { "Length", "ua3g.ip.stop_rtp.parameter.length",
4568 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
4571 { &hf_ua3g_ip_device_routing_stop_rtp_parameter_value_num
,
4572 { "Value", "ua3g.ip.stop_rtp.parameter.value.num",
4573 FT_UINT64
, BASE_HEX
, NULL
, 0x00,
4576 { &hf_ua3g_ip_device_routing_stop_rtp_parameter_value_bytes
,
4577 { "Value", "ua3g.ip.stop_rtp.parameter.value.bytes",
4578 FT_BYTES
, BASE_NONE
, NULL
, 0x00,
4581 /* Generated from convert_proto_tree_add_text.pl */
4582 { &hf_ua3g_subdevice_address
, { "Subdevice Address", "ua3g.subdevice.address", FT_UINT8
, BASE_DEC
, NULL
, 0x0F, NULL
, HFILL
}},
4583 { &hf_ua3g_subdevice_opcode
, { "Subdevice Opcode", "ua3g.subdevice.opcode", FT_UINT8
, BASE_HEX
, NULL
, 0x7F, NULL
, HFILL
}},
4584 { &hf_ua3g_subdevice_parameter_bytes
, { "Parameter Bytes", "ua3g.subdevice.parameter_bytes", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4585 { &hf_ua3g_software_reset
, { "Software Reset", "ua3g.software_reset", FT_UINT8
, BASE_DEC
, VALS(software_reset_verswitch_vals
), 0x0, NULL
, HFILL
}},
4586 { &hf_ua3g_ip_phone_warmstart
, { "IP Phone Warmstart", "ua3g.ip_phone_warmstart", FT_UINT8
, BASE_DEC
, VALS(str_command_ip_phone_warmstart
), 0x0, NULL
, HFILL
}},
4587 { &hf_ua3g_super_msg_length
, { "Length", "ua3g.super_msg.length", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4588 { &hf_ua3g_super_msg_data
, { "Data", "ua3g.super_msg.data", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4589 { &hf_ua3g_segment_msg_num_remaining
, { "Number Of Remaining Segments", "ua3g.segment_msg.num_remaining", FT_UINT8
, BASE_DEC
, NULL
, 0x7F, NULL
, HFILL
}},
4590 { &hf_ua3g_segment_msg_length
, { "Length", "ua3g.segment_msg.length", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4591 { &hf_ua3g_segment_message_data
, { "Segment Message Data", "ua3g.segment_message.data", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4592 { &hf_ua3g_ip_device_routing_reset_parameter
, { "Parameter", "ua3g.ip.reset.parameter", FT_UINT8
, BASE_DEC
, VALS(ip_device_routing_cmd_reset_vals
), 0x0, NULL
, HFILL
}},
4593 { &hf_ua3g_ip_device_routing_reset_parameter_length
, { "Length", "ua3g.ip.reset.parameter.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4594 { &hf_ua3g_ip_device_routing_start_rtp_direction
, { "Direction", "ua3g.ip.start_rtp.direction", FT_UINT8
, BASE_DEC
, VALS(start_rtp_str_direction
), 0x0, NULL
, HFILL
}},
4595 { &hf_ua3g_ip_device_routing_start_rtp_parameter
, { "Parameter", "ua3g.ip.start_rtp.parameter", FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, &ip_device_routing_cmd_start_rtp_vals_ext
, 0x0, NULL
, HFILL
}},
4596 { &hf_ua3g_ip_device_routing_start_rtp_parameter_length
, { "Length", "ua3g.ip.start_rtp.parameter.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4597 { &hf_ua3g_ip_device_routing_redirect_parameter
, { "Parameter", "ua3g.ip.redirect.parameter", FT_UINT8
, BASE_HEX
, VALS(ip_device_routing_cmd_redirect_vals
), 0x0, NULL
, HFILL
}},
4598 { &hf_ua3g_ip_device_routing_redirect_parameter_length
, { "Length", "ua3g.ip.redirect.parameter.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4599 { &hf_ua3g_ip_device_routing_def_tones_num_entries
, { "Number Of Entries", "ua3g.ip.def_tones.num_entries", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4600 { &hf_ua3g_ip_device_routing_def_tones_frequency_1
, { "Frequency 1 (Hz)", "ua3g.ip.def_tones.frequency_1", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4601 { &hf_ua3g_ip_device_routing_def_tones_level_1
, { "Level 1 (dB)", "ua3g.ip.def_tones.level_1", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4602 { &hf_ua3g_ip_device_routing_def_tones_frequency_2
, { "Frequency 2 (Hz)", "ua3g.ip.def_tones.frequency_2", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4603 { &hf_ua3g_ip_device_routing_def_tones_level_2
, { "Level 2 (dB)", "ua3g.ip.def_tones.level_2", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4604 { &hf_ua3g_ip_device_routing_start_tone_direction
, { "Direction", "ua3g.ip.start_tone.direction", FT_UINT8
, BASE_DEC
, VALS(ip_device_routing_tone_direction_vals
), 0xC0, NULL
, HFILL
}},
4605 { &hf_ua3g_ip_device_routing_start_tone_num_entries
, { "Number of entries", "ua3g.ip.start_tone.num_entries", FT_UINT8
, BASE_DEC
, NULL
, 0x3f, NULL
, HFILL
}},
4606 { &hf_ua3g_ip_device_routing_start_tone_identification
, { "Identification", "ua3g.ip.start_tone.identification", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4607 { &hf_ua3g_ip_device_routing_start_tone_duration
, { "Duration (ms)", "ua3g.ip.start_tone.duration", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4608 { &hf_ua3g_ip_device_routing_listen_rtp_parameter
, { "Parameter", "ua3g.ip.listen_rtp.parameter", FT_UINT8
, BASE_HEX
, VALS(ip_device_routing_cmd_listen_rtp_vals
), 0x0, NULL
, HFILL
}},
4609 { &hf_ua3g_ip_device_routing_listen_rtp_parameter_length
, { "Length", "ua3g.ip.listen_rtp.parameter.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4610 { &hf_ua3g_ip_device_routing_get_param_req_parameter
, { "Parameter", "ua3g.ip.get_param_req.parameter", FT_UINT8
, BASE_DEC
, VALS(ip_device_routing_cmd_get_param_req_vals
), 0x0, NULL
, HFILL
}},
4611 { &hf_ua3g_ip_device_routing_set_param_req_parameter
, { "Parameter", "ua3g.ip.set_param_req.parameter", FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, &ip_device_routing_cmd_set_param_req_vals_ext
, 0x0, NULL
, HFILL
}},
4612 { &hf_ua3g_ip_device_routing_set_param_req_parameter_length
, { "Length", "ua3g.ip.set_param_req.parameter.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4613 { &hf_ua3g_ip_device_routing_digit_value
, { "Digit Value", "ua3g.ip.digit_value", FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &str_digit_ext
, 0x0, NULL
, HFILL
}},
4614 { &hf_ua3g_ip_device_routing_pause_restart_rtp_parameter
, { "Parameter", "ua3g.ip.pause_restart_rtp.parameter", FT_UINT8
, BASE_HEX
, VALS(ip_device_routing_cmd_pause_restart_vals
), 0x0, NULL
, HFILL
}},
4615 { &hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_length
, { "Length", "ua3g.ip.pause_restart_rtp.parameter.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4616 { &hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_value
, { "Value", "ua3g.ip.pause_restart_rtp.parameter.value", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4617 { &hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter
, { "Parameter", "ua3g.ip.start_stop_record_rtp.parameter", FT_UINT8
, BASE_HEX
, VALS(ip_device_routing_cmd_record_rtp_vals
), 0x0, NULL
, HFILL
}},
4618 { &hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_length
, { "Length", "ua3g.ip.start_stop_record_rtp.parameter.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4619 { &hf_ua3g_debug_in_line
, { "Text String With Debug", "ua3g.debug_in_line", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4620 { &hf_ua3g_command_led_number
, { "Led Number", "ua3g.command.led.number", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4621 { &hf_ua3g_lcd_line_cmd_lcd_options
, { "LCD Options", "ua3g.command.lcd_line.lcd_options", FT_UINT8
, BASE_HEX
, NULL
, 0xFC, NULL
, HFILL
}},
4622 { &hf_ua3g_lcd_line_cmd_starting_column
, { "Starting Column", "ua3g.command.lcd_line.starting_column", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4623 { &hf_ua3g_main_voice_mode_tune
, { "Tune", "ua3g.main_voice_mode.tune", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4624 { &hf_ua3g_main_voice_mode_cadence
, { "Cadence", "ua3g.main_voice_mode.cadence", FT_UINT8
, BASE_DEC
, VALS(str_cadence
), 0x0, NULL
, HFILL
}},
4625 { &hf_ua3g_main_voice_mode_speaker_volume
, { "Speaker Volume", "ua3g.main_voice_mode.speaker_volume", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4626 { &hf_ua3g_main_voice_mode_microphone_volume
, { "Microphone Volume", "ua3g.main_voice_mode.microphone_volume", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4627 { &hf_ua3g_main_voice_mode_sending_level
, { "Sending Level (dB)", "ua3g.main_voice_mode.sending_level", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4628 { &hf_ua3g_main_voice_mode_handset_level
, { "Receiving Level (dB)", "ua3g.main_voice_mode.handset_level", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4629 { &hf_ua3g_main_voice_mode_headset_level
, { "Receiving Level (dB)", "ua3g.main_voice_mode.headset_level", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4630 { &hf_ua3g_main_voice_mode_handsfree_level
, { "Sending Level (dB)", "ua3g.main_voice_mode.handsfree_level", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4631 { &hf_ua3g_subdevice_metastate_subchannel_address
, { "Subchannel Address", "ua3g.subdevice_metastate.subchannel_address", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4632 { &hf_ua3g_subdevice_metastate_new_metastate
, { "New Metastate", "ua3g.subdevice_metastate.new_metastate", FT_UINT8
, BASE_DEC
, VALS(str_new_metastate
), 0x0, NULL
, HFILL
}},
4633 { &hf_ua3g_dwl_dtmf_clck_format_minimum_on_time
, { "Minimum 'ON' Time (ms)", "ua3g.dwl_dtmf_clck_format.minimum_on_time", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4634 { &hf_ua3g_dwl_dtmf_clck_format_inter_digit_pause_time
, { "Inter-Digit Pause Time (ms)", "ua3g.dwl_dtmf_clck_format.inter_digit_pause_time", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4635 { &hf_ua3g_dwl_dtmf_clck_format_clock_time_format
, { "Clock Time Format", "ua3g.dwl_dtmf_clck_format.clock_time_format", FT_UINT8
, BASE_DEC
, VALS(str_clock_format
), 0x0, NULL
, HFILL
}},
4636 { &hf_ua3g_dwl_dtmf_clck_format_dtmf_country_adaptation
, { "DTMF Country Adaptation", "ua3g.dwl_dtmf_clck_format.dtmf_country_adaptation", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4637 { &hf_ua3g_voice_channel_channel_mode
, { "Channel Mode", "ua3g.voice_channel.channel_mode", FT_BOOLEAN
, 8, TFS(&tfs_voice_channel_channel_mode
), 0x01, NULL
, HFILL
}},
4638 { &hf_ua3g_voice_channel_codec
, { "Codec", "ua3g.voice_channel.codec", FT_BOOLEAN
, 8, TFS(&tfs_voice_channel_codec
), 0x02, NULL
, HFILL
}},
4639 { &hf_ua3g_voice_channel_voice_channel
, { "Voice Channel", "ua3g.voice_channel.voice_channel", FT_BOOLEAN
, 8, TFS(&tfs_voice_channel_voice_channel
), 0x04, NULL
, HFILL
}},
4640 { &hf_ua3g_voice_channel_main_voice
, { "Main Voice", "ua3g.voice_channel.main_voice", FT_UINT8
, BASE_DEC
, VALS(str_voice_channel
), 0x0, NULL
, HFILL
}},
4641 { &hf_ua3g_voice_channel_announce
, { "Announce", "ua3g.voice_channel.announce", FT_UINT8
, BASE_DEC
, VALS(str_voice_channel
), 0x0, NULL
, HFILL
}},
4642 { &hf_ua3g_voice_channel_b_general
, { "B General", "ua3g.voice_channel.b_general", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4643 { &hf_ua3g_voice_channel_b_loud_speaker
, { "B Loud Speaker", "ua3g.voice_channel.b_loud_speaker", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4644 { &hf_ua3g_voice_channel_b_ear_piece
, { "B Ear Piece", "ua3g.voice_channel.b_ear_piece", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4645 { &hf_ua3g_voice_channel_b_microphones
, { "B Microphones", "ua3g.voice_channel.b_microphones", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4646 { &hf_ua3g_lcd_cursor_line_number
, { "Line Number", "ua3g.lcd_cursor.line_number", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4647 { &hf_ua3g_dwl_special_char_character_number
, { "Character Number", "ua3g.dwl_special_char.character_number", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4648 { &hf_ua3g_dwl_special_char_byte
, { "Byte", "ua3g.dwl_special_char.byte", FT_UINT8
, BASE_DEC
, NULL
, 0xFF, NULL
, HFILL
}},
4649 { &hf_ua3g_set_clck_timer_pos_clock_line_number
, { "Clock Line Number", "ua3g.set_clck_timer_pos.clock_line_number", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4650 { &hf_ua3g_set_clck_timer_pos_clock_column_number
, { "Clock Column Number", "ua3g.set_clck_timer_pos.clock_column_number", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4651 { &hf_ua3g_set_clck_timer_pos_call_timer_line_number
, { "Call Timer Line Number", "ua3g.set_clck_timer_pos.call_timer_line_number", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4652 { &hf_ua3g_set_clck_timer_pos_call_timer_column_number
, { "Call Timer Column Number", "ua3g.set_clck_timer_pos.call_timer_column_number", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4653 { &hf_ua3g_set_lcd_contrast_driver_number
, { "Driver Number", "ua3g.set_lcd_contrast.driver_number", FT_UINT8
, BASE_DEC
, VALS(str_driver_number
), 0x0, NULL
, HFILL
}},
4654 { &hf_ua3g_set_lcd_contrast_contrast_value
, { "Contrast Value", "ua3g.set_lcd_contrast.contrast_value", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4655 { &hf_ua3g_beep_destination
, { "Destination", "ua3g.command.beep.destination", FT_UINT8
, BASE_DEC
, VALS(str_beep_start_destination
), 0x0, NULL
, HFILL
}},
4656 { &hf_ua3g_beep_on_off
, { "On / Off", "ua3g.command.beep.on_off", FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x80, NULL
, HFILL
}},
4657 { &hf_ua3g_beep_cadence
, { "Cadence", "ua3g.command.beep.cadence", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4658 { &hf_ua3g_beep_beep_number
, { "Beep Number", "ua3g.command.beep.beep_number", FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4659 { &hf_ua3g_beep_number_of_notes
, { "Number Of Notes", "ua3g.command.beep.number_of_notes", FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4660 { &hf_ua3g_beep_terminator
, { "Terminator", "ua3g.command.beep.terminator", FT_UINT8
, BASE_DEC
, VALS(str_beep_terminator
), 0x0, NULL
, HFILL
}},
4661 { &hf_ua3g_sidetone_level
, { "Level", "ua3g.command.sidetone.level", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4662 { &hf_ua3g_ringing_cadence_cadence
, { "Cadence", "ua3g.ringing_cadence.cadence", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4663 { &hf_ua3g_ringing_cadence_on_off
, { "On / Off", "ua3g.ringing_cadence.on_off", FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x80, NULL
, HFILL
}},
4664 { &hf_ua3g_ringing_cadence_length
, { "Length (ms)", "ua3g.ringing_cadence.length", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4665 { &hf_ua3g_feedback_level
, { "Level (dB)", "ua3g.command.feedback.level", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4666 { &hf_ua3g_feedback_duration
, { "Duration", "ua3g.command.feedback.duration", FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_milliseconds
), 0x0, NULL
, HFILL
}},
4667 { &hf_ua3g_r_w_peripheral_address
, { "Address", "ua3g.r_w_peripheral.address", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4668 { &hf_ua3g_r_w_peripheral_content
, { "Content", "ua3g.r_w_peripheral.content", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4669 { &hf_ua3g_icon_cmd_icon_number
, { "Icon Number", "ua3g.icon_cmd.icon_number", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4670 { &hf_ua3g_icon_cmd_segment
, { "Segment", "ua3g.icon_cmd.segment", FT_UINT16
, BASE_DEC
, VALS(str_icon_cmd_state
), 0x0, NULL
, HFILL
}},
4671 { &hf_ua3g_audio_config_ignored
, { "Ignored", "ua3g.command.audio_config.ignored", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4672 { &hf_ua3g_audio_config_law
, { "Law", "ua3g.command.audio_config.law", FT_UINT8
, BASE_DEC
, VALS(str_audio_coding_law
), 0x0, NULL
, HFILL
}},
4673 { &hf_ua3g_audio_config_volume_level
, { "Volume Level", "ua3g.command.audio_config.volume_level", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4674 { &hf_ua3g_audio_config_handsfree_return
, { "Return", "ua3g.command.audio_config.handsfree_return", FT_BOOLEAN
, 8, TFS(&tfs_audio_config_handsfree_return
), 0x01, NULL
, HFILL
}},
4675 { &hf_ua3g_audio_config_handsfree_handsfree
, { "Handsfree", "ua3g.command.audio_config.handsfree", FT_BOOLEAN
, 8, TFS(&tfs_audio_config_handsfree_handsfree
), 0x02, NULL
, HFILL
}},
4676 { &hf_ua3g_audio_padded_path_emission_padded_level
, { "Emission Padded Level", "ua3g.audio_padded_path.emission_padded_level", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4677 { &hf_ua3g_audio_padded_path_reception_padded_level
, { "Reception Padded Level", "ua3g.audio_padded_path.reception_padded_level", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4678 { &hf_ua3g_on_off_level_level_on_loudspeaker
, { "Level on Loudspeaker (dB)", "ua3g.on_off_level.level_on_loudspeaker", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4679 { &hf_ua3g_ring_melody
, { "Melody", "ua3g.command.ring.melody", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4680 { &hf_ua3g_ring_cadence
, { "Cadence", "ua3g.command.ring.cadence", FT_UINT8
, BASE_DEC
, VALS(str_cadence
), 0x0, NULL
, HFILL
}},
4681 { &hf_ua3g_ring_speaker_level
, { "Speaker level (dB)", "ua3g.command.ring.speaker_level", FT_INT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4682 { &hf_ua3g_ring_beep_number
, { "Beep number", "ua3g.command.ring.beep_number", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4683 { &hf_ua3g_ring_silent
, { "Silent", "ua3g.command.ring.silent", FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x80, NULL
, HFILL
}},
4684 { &hf_ua3g_ring_progressive
, { "Progressive", "ua3g.command.ring.progressive", FT_UINT8
, BASE_DEC
, NULL
, 0x03, NULL
, HFILL
}},
4685 { &hf_ua3g_ua_dwl_protocol_item_identifier
, { "Item Identifier", "ua3g.ua_dwl_protocol.item_identifier", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4686 { &hf_ua3g_ua_dwl_protocol_cause
, { "Cause", "ua3g.ua_dwl_protocol.cause", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4687 { &hf_ua3g_ua_dwl_protocol_force_mode
, { "Force Mode", "ua3g.ua_dwl_protocol.force_mode", FT_UINT8
, BASE_DEC
, VALS(str_download_req_force_mode
), 0x0, NULL
, HFILL
}},
4688 { &hf_ua3g_ua_dwl_protocol_item_version
, { "Item Version", "ua3g.ua_dwl_protocol.item_version", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4689 { &hf_ua3g_ua_dwl_protocol_item_version_nc
, { "Item Version", "ua3g.ua_dwl_protocol.item_version", FT_UINT16
, BASE_CUSTOM
, CF_FUNC(version_number_computer
), 0x0, NULL
, HFILL
}},
4690 { &hf_ua3g_ua_dwl_protocol_binary_length
, { "Binary Length", "ua3g.ua_dwl_protocol.binary_length", FT_UINT24
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4691 { &hf_ua3g_ua_dwl_protocol_packet_number
, { "Packet Number", "ua3g.ua_dwl_protocol.packet_number", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4692 { &hf_ua3g_ua_dwl_protocol_download_ack_status
, { "Status", "ua3g.ua_dwl_protocol.download_ack_status", FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &str_download_ack_status_ext
, 0x0, NULL
, HFILL
}},
4693 { &hf_ua3g_ua_dwl_protocol_packet_download_end_ack_ok_status
, { "Status", "ua3g.ua_dwl_protocol_packet.download_end_ack_ok_status", FT_UINT8
, BASE_DEC
, VALS(str_download_end_ack_ok
), 0x0, NULL
, HFILL
}},
4694 { &hf_ua3g_ua_dwl_protocol_checksum
, { "Checksum", "ua3g.ua_dwl_protocol.checksum", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4695 { &hf_ua3g_ua_dwl_protocol_acknowledge
, { "Acknowledge", "ua3g.ua_dwl_protocol.acknowledge", FT_UINT8
, BASE_DEC
, VALS(str_iso_checksum_ack_status
), 0x0, NULL
, HFILL
}},
4696 { &hf_ua3g_digit_dialed_digit_value
, { "Digit Value", "ua3g.digit_dialed.digit_value", FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &str_digit_ext
, 0x0, NULL
, HFILL
}},
4697 { &hf_ua3g_subdevice_msg_subdev_type
, { "Subdev Type", "ua3g.subdevice_msg.subdev_type", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4698 { &hf_ua3g_subdevice_msg_subdev_address
, { "Subdev Address", "ua3g.subdevice_msg.subdev_address", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4699 { &hf_ua3g_subdevice_msg_subdevice_opcode
, { "Subdevice Opcode", "ua3g.subdevice_msg.subdevice_opcode", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4700 { &hf_ua3g_subdevice_msg_parameter_bytes
, { "Parameter Bytes", "ua3g.subdevice_msg.parameter_bytes", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4701 { &hf_ua3g_cs_ip_device_routing_cmd00_vta_type
, { "VTA Type", "ua3g.ip.cs.cmd00.vta_type", FT_UINT8
, BASE_HEX
, VALS(str_vta_type
), 0x0, NULL
, HFILL
}},
4702 { &hf_ua3g_cs_ip_device_routing_cmd00_characteristic_number
, { "Characteristic Number", "ua3g.ip.cs.cmd00.characteristic_number", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4703 { &hf_ua3g_cs_ip_device_routing_cmd01_incident_0
, { "Incident 0", "ua3g.ip.cs.cmd01.incident_0", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4704 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter
, { "Parameter", "ua3g.ip.cs.cmd02.parameter", FT_UINT8
, BASE_HEX
, VALS(ip_device_routing_cmd_get_param_req_vals
), 0x0, NULL
, HFILL
}},
4705 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_length
, { "Length", "ua3g.ip.cs.cmd02.parameter.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4706 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter
, { "Parameter", "ua3g.ip.cs.cmd03.parameter", FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, &cs_ip_device_routing_03_parameter_id_vals_ext
, 0x0, NULL
, HFILL
}},
4707 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_length
, { "Length", "ua3g.ip.cs.cmd03.parameter.length", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4708 { &hf_ua3g_unsolicited_msg_device_type
, { "Device Type", "ua3g.unsolicited_msg.device_type", FT_UINT8
, BASE_DEC
, VALS(str_device_type
), 0x0, NULL
, HFILL
}},
4709 { &hf_ua3g_unsolicited_msg_self_test_result
, { "Self-Test Result", "ua3g.unsolicited_msg.self_test_result", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4710 { &hf_ua3g_unsolicited_msg_vta_type
, { "VTA Type", "ua3g.unsolicited_msg.vta_type", FT_UINT8
, BASE_HEX
, VALS(str_vta_type
), 0x0, NULL
, HFILL
}},
4711 { &hf_ua3g_unsolicited_msg_other_information
, { "Other Information", "ua3g.unsolicited_msg.other_information", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_other_info_2
), 0x0, NULL
, HFILL
}},
4712 { &hf_ua3g_unsolicited_msg_other_information_1
, { "Other Information 1", "ua3g.unsolicited_msg.other_information_1", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_other_info_1
), 0x0, NULL
, HFILL
}},
4713 { &hf_ua3g_unsolicited_msg_hardware_version
, { "Hardware Version", "ua3g.unsolicited_msg.hardware_version", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4714 { &hf_ua3g_unsolicited_msg_other_information_2
, { "Other Information 2", "ua3g.unsolicited_msg.other_information_2", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_other_info_2
), 0x0, NULL
, HFILL
}},
4715 { &hf_ua3g_unsolicited_msg_firmware_datas_patch_version
, { "Firmware Datas Patch Version", "ua3g.unsolicited_msg.firmware_datas_patch_version", FT_UINT16
, BASE_CUSTOM
, CF_FUNC(version_number_computer
), 0x0, NULL
, HFILL
}},
4716 { &hf_ua3g_unsolicited_msg_firmware_version_loader
, { "Firmware Version (Loader)", "ua3g.unsolicited_msg.firmware_version_loader", FT_UINT16
, BASE_CUSTOM
, CF_FUNC(version_number_computer
), 0x0, NULL
, HFILL
}},
4717 { &hf_ua3g_unsolicited_msg_firmware_version
, { "Firmware Version", "ua3g.unsolicited_msg.firmware_version", FT_UINT16
, BASE_CUSTOM
, CF_FUNC(version_number_computer
), 0x0, NULL
, HFILL
}},
4718 { &hf_ua3g_unsolicited_msg_datas_version
, { "Datas Version", "ua3g.unsolicited_msg.datas_version", FT_UINT16
, BASE_CUSTOM
, CF_FUNC(version_number_computer
), 0x0, NULL
, HFILL
}},
4719 { &hf_ua3g_unsolicited_msg_firmware_version_bootloader
, { "Firmware Version (Bootloader)", "ua3g.unsolicited_msg.firmware_version_bootloader", FT_UINT16
, BASE_CUSTOM
, CF_FUNC(version_number_computer
), 0x0, NULL
, HFILL
}},
4720 { &hf_ua3g_unsolicited_msg_opcode_of_bad_command
, { "Opcode Of Bad Command", "ua3g.unsolicited_msg.opcode_of_bad_command", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4721 { &hf_ua3g_unsolicited_msg_next_byte_of_bad_command
, { "Next Byte Of Bad Command", "ua3g.unsolicited_msg.next_byte_of_bad_command", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4722 { &hf_ua3g_unsolicited_msg_subdevice_address
, { "Subdevice Address", "ua3g.unsolicited_msg.subdevice_address", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4723 { &hf_ua3g_unsolicited_msg_segment_failure_t
, { "T", "ua3g.unsolicited_msg.segment_failure.t", FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4724 { &hf_ua3g_unsolicited_msg_segment_failure_num
, { "Num", "ua3g.unsolicited_msg.segment_failurenum", FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4725 { &hf_ua3g_unsolicited_msg_segment_failure_s
, { "/S", "ua3g.unsolicited_msg.segment_failure.s", FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4726 { &hf_ua3g_unsolicited_msg_segment_failure_l
, { "L", "ua3g.unsolicited_msg.segment_failure.l", FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4727 { &hf_ua3g_unsolicited_msg_opcode_bad_segment
, { "Opcode Bad Segment", "ua3g.unsolicited_msg.opcode_bad_segment", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4728 { &hf_ua3g_unsolicited_msg_next_byte_of_bad_segment
, { "Next Byte Of Bad Segment", "ua3g.unsolicited_msg.next_byte_of_bad_segment", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4729 { &hf_ua3g_unsolicited_msg_device_event
, { "Device Event", "ua3g.unsolicited_msg.device_event", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4730 { &hf_ua3g_i_m_here_id_code
, { "Id Code", "ua3g.i_m_here.id_code", FT_UINT8
, BASE_DEC
, VALS(str_device_type
), 0x0, NULL
, HFILL
}},
4731 { &hf_ua3g_segment_msg_segment
, { "F/S", "ua3g.segment_msg.segment", FT_BOOLEAN
, 8, TFS(&tfs_segment_msg_segment
), 0x80, NULL
, HFILL
}},
4732 { &hf_ua3g_ip_device_routing_reset_parameter_noe_update
, { "NOE Update Mode", "ua3g.ip.reset.parameter.noe_update", FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4733 { &hf_ua3g_ip_device_routing_reset_parameter_noe_update_bootloader
, { "Bootloader", "ua3g.ip.reset.parameter.noe_update.bootloader", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x01, NULL
, HFILL
}},
4734 { &hf_ua3g_ip_device_routing_reset_parameter_noe_update_data
, { "Data", "ua3g.ip.reset.parameter.noe_update.data", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x02, NULL
, HFILL
}},
4735 { &hf_ua3g_ip_device_routing_reset_parameter_noe_update_customization
, { "Customization", "ua3g.ip.reset.parameter.noe_update.customization", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x04, NULL
, HFILL
}},
4736 { &hf_ua3g_ip_device_routing_reset_parameter_noe_update_localization
, { "Localization", "ua3g.ip.reset.parameter.noe_update.localization", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x08, NULL
, HFILL
}},
4737 { &hf_ua3g_ip_device_routing_reset_parameter_noe_update_code
, { "Code", "ua3g.ip.reset.parameter.noe_update.code", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x10, NULL
, HFILL
}},
4738 { &hf_ua3g_ip_device_routing_reset_parameter_noe_update_sip
, { "SIP", "ua3g.ip.reset.parameter.noe_update.sip", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x20, NULL
, HFILL
}},
4739 { &hf_ua3g_ip_device_routing_reset_parameter_bad_sec_mode
, { "Bad Sec Mode", "ua3g.ip.reset.parameter.bad_sec_mode", FT_UINT8
, BASE_DEC
, VALS(reset_param_bad_sec_mode
), 0x0, NULL
, HFILL
}},
4740 { &hf_ua3g_ip_device_routing_reset_parameter_value
, { "Value", "ua3g.ip.reset.parameter.value", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4741 { &hf_ua3g_ip_device_routing_reset_parameter_cust_name
, { "Cust_Name", "ua3g.ip.reset.parameter.cust_name", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4742 { &hf_ua3g_ip_device_routing_reset_parameter_l10n_name
, { "L10N_Name", "ua3g.ip.reset.parameter.l10n_name", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4743 { &hf_ua3g_ip_device_routing_reset_parameter_appl_mode
, { "Appl_Mode", "ua3g.ip.reset.parameter.appl_mode", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4744 { &hf_ua3g_ip_device_routing_reset_parameter_sip_name
, { "SIP_Name", "ua3g.ip.reset.parameter.sip_name", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4745 { &hf_ua3g_ip_device_routing_reset_parameter_reset_mac
, { "Reset Mac", "ua3g.ip.reset.parameter.reset_mac", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4746 { &hf_ua3g_ip_device_routing_start_rtp_parameter_value
, { "Value", "ua3g.ip.start_rtp.parameter.value", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4747 { &hf_ua3g_ip_device_routing_start_rtp_parameter_ip
, { "IP", "ua3g.ip.start_rtp.parameter.ip", FT_IPv4
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4748 { &hf_ua3g_ip_device_routing_start_rtp_parameter_compressor
, { "Compressor", "ua3g.ip.start_rtp.parameter.compressor", FT_UINT64
, BASE_DEC
|BASE_VAL64_STRING
, VALS64(str_compressor_vals
), 0x0, NULL
, HFILL
}},
4749 { &hf_ua3g_ip_device_routing_start_rtp_parameter_enabler
, { "Enabler", "ua3g.ip.start_rtp.parameter.enabler", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4750 { &hf_ua3g_ip_device_routing_start_rtp_parameter_send_qos
, { "Must Send QOS Tickets", "ua3g.ip.start_rtp.parameter.send_qos", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4751 { &hf_ua3g_ip_device_routing_start_rtp_parameter_uint
, { "Value", "ua3g.ip.start_rtp.parameter.uint", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4752 { &hf_ua3g_ip_device_routing_start_rtp_parameter_dtmf_sending
, { "Send DTMF", "ua3g.ip.start_rtp.parameter.dtmf_sending", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4753 { &hf_ua3g_ip_device_routing_start_rtp_parameter_rfc2198
, { "Enable RFC 2198", "ua3g.ip.start_rtp.parameter.rfc2198", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4754 { &hf_ua3g_ip_device_routing_start_rtp_parameter_srtp_encryption
, { "Enable SRTP Encryption", "ua3g.ip.start_rtp.parameter.srtp_encryption", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4755 { &hf_ua3g_ip_device_routing_redirect_parameter_value
, { "Value", "ua3g.ip.redirect.parameter.value", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4756 { &hf_ua3g_ip_device_routing_redirect_parameter_ip
, { "IP", "ua3g.ip.redirect.parameter.ip", FT_IPv4
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4757 { &hf_ua3g_ip_device_routing_redirect_parameter_uint
, { "Value", "ua3g.ip.redirect.parameter.uint", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4758 { &hf_ua3g_ip_device_routing_listen_rtp_parameter_value
, { "Value", "ua3g.ip.listen_rtp.parameter.value", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4759 { &hf_ua3g_ip_device_routing_listen_rtp_parameter_ip
, { "IP", "ua3g.ip.listen_rtp.parameter.ip", FT_IPv4
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4760 { &hf_ua3g_ip_device_routing_listen_rtp_parameter_port
, { "Port", "ua3g.ip.listen_rtp.parameter.port", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4761 { &hf_ua3g_ip_device_routing_set_param_req_parameter_value
, { "Value", "ua3g.ip.set_param_req.parameter.value", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4762 { &hf_ua3g_ip_device_routing_set_param_req_parameter_tftp_backup_ip
, { "TFTP Backup IP", "ua3g.ip.set_param_req.parameter.tftp_backup_ip", FT_IPv4
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4763 { &hf_ua3g_ip_device_routing_set_param_req_parameter_uint
, { "Value", "ua3g.ip.set_param_req.parameter.uint", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4764 { &hf_ua3g_ip_device_routing_set_param_req_parameter_err_string
, { "Value", "ua3g.ip.set_param_req.parameter.err_string", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4765 { &hf_ua3g_ip_device_routing_set_param_req_parameter_compressor
, { "Compressor", "ua3g.ip.set_param_req.parameter.compressor", FT_UINT64
, BASE_DEC
|BASE_VAL64_STRING
, VALS64(str_compressor_vals
), 0x0, NULL
, HFILL
}},
4766 { &hf_ua3g_ip_device_routing_set_param_req_parameter_set_pc_port_status
, { "Set PC Port status", "ua3g.ip.set_param_req.parameter.set_pc_port_status", FT_UINT8
, BASE_DEC
, VALS(str_set_pc_port_status
), 0x0, NULL
, HFILL
}},
4767 { &hf_ua3g_ip_device_routing_set_param_req_parameter_record_rtp_auth
, { "Record RTP Authorization", "ua3g.ip.set_param_req.parameter.record_rtp_auth", FT_UINT8
, BASE_DEC
, VALS(str_enable_feature
), 0x0, NULL
, HFILL
}},
4768 { &hf_ua3g_ip_device_routing_set_param_req_parameter_security_flag_filter
, { "Filtering", "ua3g.ip.set_param_req.parameter.security_flag.filter", FT_BOOLEAN
, 8, TFS(&tfs_active_inactive
), 0x01, NULL
, HFILL
}},
4769 { &hf_ua3g_ip_device_routing_set_param_req_parameter_stable_mode
, { "Stable Mode", "ua3g.ip.set_param_req.parameter.stable_mode", FT_UINT8
, BASE_DEC
, VALS(set_param_req_stable_mode
), 0x0, NULL
, HFILL
}},
4770 { &hf_ua3g_ip_device_routing_set_param_req_parameter_skin_id
, { "Skin Identifier", "ua3g.ip.set_param_req.parameter.skin_id", FT_UINT8
, BASE_DEC
, VALS(set_param_req_skin_id
), 0x0, NULL
, HFILL
}},
4771 { &hf_ua3g_ip_device_routing_set_param_req_parameter_language_id
, { "Language Identifier", "ua3g.ip.set_param_req.parameter.language_id", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4772 { &hf_ua3g_ip_device_routing_set_param_req_parameter_usb_boost
, { "USB Boost", "ua3g.ip.set_param_req.parameter.usb_boost", FT_UINT8
, BASE_DEC
, VALS(set_param_req_usb_boost
), 0x0, NULL
, HFILL
}},
4773 { &hf_ua3g_ip_device_routing_set_param_req_parameter_als_device
, { "ALS Device", "ua3g.ip.set_param_req.parameter.als_device", FT_UINT8
, BASE_DEC
, VALS(set_param_req_local_device
), 0x0, NULL
, HFILL
}},
4774 { &hf_ua3g_ip_device_routing_set_param_req_parameter_busy_light
, { "Busy Light", "ua3g.ip.set_param_req.parameter.busy_light", FT_UINT8
, BASE_DEC
, VALS(set_param_req_local_device
), 0x0, NULL
, HFILL
}},
4775 { &hf_ua3g_ip_device_routing_set_param_req_parameter_audio_env
, { "Audio Env.", "ua3g.ip.set_param_req.parameter.audio_env", FT_UINT8
, BASE_DEC
, VALS(set_param_req_audio_env
), 0x0, NULL
, HFILL
}},
4776 { &hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_uint
, { "Value", "ua3g.ip.pause_restart_rtp.parameter.uint", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4777 { &hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value
, { "Value", "ua3g.ip.start_stop_record_rtp.parameter.value", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4778 { &hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_remote_ip
, { "Remote IP", "ua3g.ip.start_stop_record_rtp.parameter.remote_ip", FT_IPv4
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4779 { &hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_uint
, { "Value", "ua3g.ip.start_stop_record_rtp.parameter.uint", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4780 { &hf_ua3g_ip_device_routing_freeseating_parameter
, { "Parameter", "ua3g.ip.freeseating.parameter", FT_UINT8
, BASE_HEX
, VALS(ip_device_routing_cmd_freeseating_vals
), 0x0, NULL
, HFILL
}},
4781 { &hf_ua3g_ip_device_routing_freeseating_parameter_length
, { "Length", "ua3g.ip.freeseating.parameter.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4782 { &hf_ua3g_ip_device_routing_freeseating_parameter_value
, { "Value", "ua3g.ip.freeseating.parameter.value", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4783 { &hf_ua3g_ip_device_routing_freeseating_parameter_uint
, { "Value", "ua3g.ip.freeseating.parameter.uint", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4784 { &hf_ua3g_ip_device_routing_freeseating_parameter_mac
, { "Value", "ua3g.ip.freeseating.parameter.mac", FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4785 { &hf_ua3g_ip_device_routing_freeseating_parameter_ip
, { "Value", "ua3g.ip.freeseating.parameter.ip", FT_IPv4
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4786 { &hf_ua3g_ip_device_routing_freeseating_parameter_ipv6
, { "Value", "ua3g.ip.freeseating.parameter.ipv6", FT_IPv6
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4787 { &hf_ua3g_ip_device_routing_freeseating_parameter_do_reset
, { "Value", "ua3g.ip.freeseating.parameter.do_reset", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4788 { &hf_ua3g_ip_device_routing_appl_parameter
, { "Parameter", "ua3g.ip.appl.parameter", FT_UINT8
, BASE_HEX
, VALS(ip_device_routing_cmd_appl_vals
), 0x0, NULL
, HFILL
}},
4789 { &hf_ua3g_ip_device_routing_appl_parameter_length
, { "Length", "ua3g.ip.appl.parameter.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4790 { &hf_ua3g_ip_device_routing_appl_parameter_value
, { "Value", "ua3g.ip.appl.parameter.value", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4791 { &hf_ua3g_ip_device_routing_appl_parameter_uint
, { "Value", "ua3g.ip.appl.parameter.uint", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4792 { &hf_ua3g_ip_device_routing_appl_parameter_id
, { "Value", "ua3g.ip.appl.parameter.id", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4793 { &hf_ua3g_ip_device_routing_appl_parameter_enable
, { "Value", "ua3g.ip.appl.parameter.enable", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4794 { &hf_ua3g_ip_device_routing_appl_parameter_url
, { "Value", "ua3g.ip.appl.parameter.url", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4795 { &hf_ua3g_audio_config_dpi_chan_ua_tx1
, { "UA Channel UA-TX1", "ua3g.command.audio_config.dpi_chan.ua_tx1", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4796 { &hf_ua3g_audio_config_dpi_chan_ua_tx2
, { "UA Channel UA-TX2", "ua3g.command.audio_config.dpi_chan.ua_tx2", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4797 { &hf_ua3g_audio_config_dpi_chan_gci_tx1
, { "GCI Channel GCI-TX1", "ua3g.command.audio_config.dpi_chan.gci_tx1", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4798 { &hf_ua3g_audio_config_dpi_chan_gci_tx2
, { "GCI Channel GCI-TX2", "ua3g.command.audio_config.dpi_chan.gci_tx2", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4799 { &hf_ua3g_audio_config_dpi_chan_cod_tx
, { "Codec Channel COD-TX", "ua3g.command.audio_config.dpi_chan.cod_tx", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4800 { &hf_ua3g_audio_config_audio_circuit_dth
, { "Anti-Distortion Coeff 1(DTH)", "ua3g.command.audio_config.audio_circuit.dth", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4801 { &hf_ua3g_audio_config_audio_circuit_dtr
, { "Anti-Distortion Coeff 2(DTR)", "ua3g.command.audio_config.audio_circuit.dtr", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4802 { &hf_ua3g_audio_config_audio_circuit_dtf
, { "Anti-Distortion Coeff 3(DTF)", "ua3g.command.audio_config.audio_circuit.dtf", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4803 { &hf_ua3g_audio_config_audio_circuit_str
, { "Sidetone Attenuation (STR)", "ua3g.command.audio_config.audio_circuit.str", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4804 { &hf_ua3g_audio_config_audio_circuit_ahp1
, { "Anti-Larsen Coeff 1 (AHP1)", "ua3g.command.audio_config.audio_circuit.ahp1", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4805 { &hf_ua3g_audio_config_audio_circuit_ahp2
, { "Anti-Larsen Coeff 2 (AHP2)", "ua3g.command.audio_config.audio_circuit.ahp2", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4806 { &hf_ua3g_audio_config_audio_circuit_ath
, { "Anti-Larsen Coeff 3 (ATH)", "ua3g.command.audio_config.audio_circuit.ath", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4807 { &hf_ua3g_audio_config_audio_circuit_atr
, { "Anti-Larsen Coeff 4 (ATR)", "ua3g.command.audio_config.audio_circuit.atr", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4808 { &hf_ua3g_audio_config_audio_circuit_atf
, { "Anti-Larsen Coeff 5 (ATF)", "ua3g.command.audio_config.audio_circuit.atf", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4809 { &hf_ua3g_audio_config_audio_circuit_alm
, { "Anti-Larsen Coeff 6 (ALM)", "ua3g.command.audio_config.audio_circuit.alm", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4810 { &hf_ua3g_audio_config_loudspeaker_aco_param_group_listen
, { "Group Listening Attenuation Constant", "ua3g.command.audio_config.loudspeaker_aco_param.group_listen", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4811 { &hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_attenuation
, { "Handsfree Attenuation Constant", "ua3g.command.audio_config.loudspeaker_aco_param.handsfree_attenuation", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4812 { &hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_stay_in_send
, { "Handsfree Number Of ms To Stay In Send State Before Going To Another State", "ua3g.command.audio_config.loudspeaker_aco_param.handsfree_stay_in_send", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4813 { &hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_shift_right_mtx
, { "Handsfree Number Of Positions To Shift Right MTx", "ua3g.command.audio_config.loudspeaker_aco_param.handsfree_shift_right_mtx", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4814 { &hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_shift_right_mrc
, { "Handsfree Number Of Positions To Shift Right MRc", "ua3g.command.audio_config.loudspeaker_aco_param.handsfree_shift_right_mrc", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4815 { &hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_idle_trans_threshold
, { "Handsfree Idle Transmission Threshold", "ua3g.command.audio_config.loudspeaker_aco_param.handsfree_idle_trans_threshold", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4816 { &hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_low_trans_threshold
, { "Handsfree Low Transmission Threshold", "ua3g.command.audio_config.loudspeaker_aco_param.handsfree_low_trans_threshold", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4817 { &hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_idle_recv_threshold
, { "Handsfree Idle Reception Threshold", "ua3g.command.audio_config.loudspeaker_aco_param.handsfree_idle_recv_threshold", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4818 { &hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_low_recv_threshold
, { "Handsfree Low Reception Threshold", "ua3g.command.audio_config.loudspeaker_aco_param.handsfree_low_recv_threshold", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4819 { &hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_med_recv_threshold
, { "Handsfree Medium Reception Threshold", "ua3g.command.audio_config.loudspeaker_aco_param.handsfree_med_recv_threshold", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4820 { &hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_high_recv_threshold
, { "Handsfree High Reception Threshold", "ua3g.command.audio_config.loudspeaker_aco_param.handsfree_high_recv_threshold", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4821 { &hf_ua3g_ua_dwl_protocol_files_inc_boot_binary
, { "Boot Binary Included", "ua3g.ua_dwl_protocol.files_inc.boot_binary", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x01, NULL
, HFILL
}},
4822 { &hf_ua3g_ua_dwl_protocol_files_inc_loader_binary
, { "Loader Binary Included", "ua3g.ua_dwl_protocol.files_inc.loader_binary", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x02, NULL
, HFILL
}},
4823 { &hf_ua3g_ua_dwl_protocol_files_inc_appli_binary
, { "Appli Binary Included", "ua3g.ua_dwl_protocol.files_inc.appli_binary", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x04, NULL
, HFILL
}},
4824 { &hf_ua3g_ua_dwl_protocol_files_inc_data_binary
, { "Datas Binary Included", "ua3g.ua_dwl_protocol.files_inc.data_binary", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x08, NULL
, HFILL
}},
4825 { &hf_ua3g_ua_dwl_protocol_model_selection_a
, { "For A Model", "ua3g.ua_dwl_protocol.model_selection.a", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x01, NULL
, HFILL
}},
4826 { &hf_ua3g_ua_dwl_protocol_model_selection_b
, { "For B Model", "ua3g.ua_dwl_protocol.model_selection.b", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x02, NULL
, HFILL
}},
4827 { &hf_ua3g_ua_dwl_protocol_model_selection_c
, { "For C Model", "ua3g.ua_dwl_protocol.model_selection.c", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x04, NULL
, HFILL
}},
4828 { &hf_ua3g_ua_dwl_protocol_model_selection_country_ver
, { "Country Version", "ua3g.ua_dwl_protocol.model_selection.country_ver", FT_UINT8
, BASE_DEC
, VALS(str_download_req_mode_selection_country
), 0xE0, NULL
, HFILL
}},
4829 { &hf_ua3g_ua_dwl_protocol_hardware_selection_ivanoe1
, { "For Ivanoe 1", "ua3g.ua_dwl_protocol.hardware_selection.ivanoe1", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x01, NULL
, HFILL
}},
4830 { &hf_ua3g_ua_dwl_protocol_hardware_selection_ivanoe2
, { "For Ivanoe 2", "ua3g.ua_dwl_protocol.hardware_selection.ivanoe2", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x02, NULL
, HFILL
}},
4831 { &hf_ua3g_ua_dwl_protocol_memory_sizes_flash
, { "Flash Min Size", "ua3g.ua_dwl_protocol.memory_sizes.flash", FT_UINT8
, BASE_DEC
, VALS(str_mem_size
), 0x07, NULL
, HFILL
}},
4832 { &hf_ua3g_ua_dwl_protocol_memory_sizes_ext_ram
, { "External Ram Min Size", "ua3g.ua_dwl_protocol.memory_sizes.ext_ram", FT_UINT8
, BASE_DEC
, VALS(str_mem_size
), 0x38, NULL
, HFILL
}},
4833 { &hf_ua3g_unsolicited_msg_char_num_vta_subtype
, { "VTA SubType", "ua3g.unsolicited_msg.char_num.vta_subtype", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_subtype
), 0xC0, NULL
, HFILL
}},
4834 { &hf_ua3g_unsolicited_msg_char_num_generation
, { "Generation", "ua3g.unsolicited_msg.char_num.generation", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_generation
), 0x38, NULL
, HFILL
}},
4835 { &hf_ua3g_unsolicited_msg_char_num_design
, { "Design", "ua3g.unsolicited_msg.char_num.design", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_design
), 0x07, NULL
, HFILL
}},
4836 { &hf_ua3g_unsolicited_msg_hardware_config_vta_type
, { "VTA Type", "ua3g.unsolicited_msg.hardware_config.vta_type", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_hard_vta_type
), 0xE0, NULL
, HFILL
}},
4837 { &hf_ua3g_unsolicited_msg_hardware_config_design
, { "Design", "ua3g.unsolicited_msg.hardware_config.design", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_hard_design
), 0x1C, NULL
, HFILL
}},
4838 { &hf_ua3g_unsolicited_msg_hardware_config_subtype
, { "VTA SubType", "ua3g.unsolicited_msg.hardware_config.subtype", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_hard_subtype
), 0x03, NULL
, HFILL
}},
4839 { &hf_ua3g_unsolicited_msg_hardware_config_hard_config_chip
, { "Chip Id", "ua3g.unsolicited_msg.hardware_config.hard_config_chip", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_hard_config_chip
), 0x03, NULL
, HFILL
}},
4840 { &hf_ua3g_unsolicited_msg_hardware_config_hard_config_flash
, { "Flash Size", "ua3g.unsolicited_msg.hardware_config.hard_config_flash", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_hard_config_flash
), 0x1C, NULL
, HFILL
}},
4841 { &hf_ua3g_unsolicited_msg_hardware_config_config_ram
, { "External RAM Size", "ua3g.unsolicited_msg.hardware_config.config_ram", FT_UINT8
, BASE_DEC
, VALS(str_unsolicited_msg_hard_config_ram
), 0xE0, NULL
, HFILL
}},
4842 { &hf_ua3g_unsolicited_msg_hardware_config
, { "Hardware Configuration", "ua3g.unsolicited_msg.hardware_config", FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4843 { &hf_ua3g_unsolicited_msg_hardware_config_export_full
, { "Binary Type", "ua3g.unsolicited_msg.hardware_config.export_full", FT_BOOLEAN
, 8, TFS(&tfs_export_full
), 0x01, NULL
, HFILL
}},
4844 { &hf_ua3g_unsolicited_msg_hardware_config_ethernet_hardware
, { "Ethernet Hardware", "ua3g.unsolicited_msg.hardware_config.ethernet_hardware", FT_BOOLEAN
, 8, TFS(&tfs_fast_gigabit
), 0x02, NULL
, HFILL
}},
4845 { &hf_ua3g_unsolicited_msg_hardware_config_extended_edition
, { "Extended Hardware", "ua3g.unsolicited_msg.hardware_config.extended_edition", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x04, NULL
, HFILL
}},
4846 { &hf_ua3g_unsolicited_msg_hardware_config_wideband
, { "Wideband Support", "ua3g.unsolicited_msg.hardware_config.wideband", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x08, NULL
, HFILL
}},
4847 { &hf_ua3g_unsolicited_msg_hardware_config_3g_set
, { "Hardware Generation", "ua3g.unsolicited_msg.hardware_config.3g_set", FT_BOOLEAN
, 8, TFS(&tfs_2g_3g
), 0x10, NULL
, HFILL
}},
4848 { &hf_ua3g_unsolicited_msg_hardware_config_8082_set
, { "8082 Hardware", "ua3g.unsolicited_msg.hardware_config.8082_set", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x20, NULL
, HFILL
}},
4849 { &hf_ua3g_unsolicited_msg_hardware_config_super_wideband
, { "Super Wideband Support", "ua3g.unsolicited_msg.hardware_config.super_wideband", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x40, NULL
, HFILL
}},
4850 { &hf_ua3g_unsolicited_msg_hook_status
, { "Hook Status", "ua3g.unsolicited_msg.hook_status", FT_UINT8
, BASE_DEC
, VALS(str_on_off
), 0x0, NULL
, HFILL
}},
4851 { &hf_ua3g_unsolicited_msg_additional_vta_type
, { "Additional VTA Type", "ua3g.unsolicited_msg.additional_vta_type", FT_UINT8
, BASE_HEX
, VALS(str_additional_vta_type
), 0x0, NULL
, HFILL
}},
4852 { &hf_ua3g_unsolicited_msg_capability_info_bluetooth_supported
, { "Bluetooth Supported", "ua3g.unsolicited_msg.capability_info.bluetooth_supported", FT_UINT8
, BASE_DEC
, VALS(str_yes_no
), 0x0, NULL
, HFILL
}},
4853 { &hf_ua3g_unsolicited_msg_capability_info_vpn_encryption_status
, { "VPN and Encryption Status", "ua3g.unsolicited_msg.capability_info.vpn_encryption_status", FT_UINT8
, BASE_HEX
, NULL
, 0x00, NULL
, HFILL
}},
4854 { &hf_ua3g_unsolicited_msg_capability_info_vpn
, { "VPN", "ua3g.unsolicited_msg.capability_info.vpn", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x01, NULL
, HFILL
}},
4855 { &hf_ua3g_unsolicited_msg_capability_info_ipsec
, { "IPSec", "ua3g.unsolicited_msg.capability_info.ipsec", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x02, NULL
, HFILL
}},
4856 { &hf_ua3g_unsolicited_msg_capability_info_dtls
, { "DTLS", "ua3g.unsolicited_msg.capability_info.dtls", FT_BOOLEAN
, 8, TFS(&tfs_yes_no
), 0x4, NULL
, HFILL
}},
4857 { &hf_ua3g_unsolicited_msg_capability_info_wlan_status
, { "WLAN Status", "ua3g.unsolicited_msg.capability_info.wlan_status", FT_UINT8
, BASE_DEC
, VALS(str_wlan_status
), 0x0, NULL
, HFILL
}},
4858 { &hf_ua3g_unsolicited_msg_capability_info_reserved
, { "Reserved", "ua3g.unsolicited_msg.capability_info.reserved", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4859 { &hf_ua3g_special_key_shift
, { "Shift", "ua3g.special_key.shift", FT_BOOLEAN
, 8, TFS(&tfs_released_pressed
), 0x01, NULL
, HFILL
}},
4860 { &hf_ua3g_special_key_ctrl
, { "Ctrl", "ua3g.special_key.ctrl", FT_BOOLEAN
, 8, TFS(&tfs_released_pressed
), 0x02, NULL
, HFILL
}},
4861 { &hf_ua3g_special_key_alt
, { "Alt", "ua3g.special_key.alt", FT_BOOLEAN
, 8, TFS(&tfs_released_pressed
), 0x04, NULL
, HFILL
}},
4862 { &hf_ua3g_special_key_cmd
, { "Cmd", "ua3g.special_key.cmd", FT_BOOLEAN
, 8, TFS(&tfs_released_pressed
), 0x08, NULL
, HFILL
}},
4863 { &hf_ua3g_special_key_shift_prime
, { "Shift'", "ua3g.special_key.shift_prime", FT_BOOLEAN
, 8, TFS(&tfs_released_pressed
), 0x10, NULL
, HFILL
}},
4864 { &hf_ua3g_special_key_ctrl_prime
, { "Ctrl'", "ua3g.special_key.ctrl_prime", FT_BOOLEAN
, 8, TFS(&tfs_released_pressed
), 0x20, NULL
, HFILL
}},
4865 { &hf_ua3g_special_key_alt_prime
, { "Alt'", "ua3g.special_key.alt_prime", FT_BOOLEAN
, 8, TFS(&tfs_released_pressed
), 0x40, NULL
, HFILL
}},
4866 { &hf_ua3g_special_key_cmd_prime
, { "Cmd'", "ua3g.special_key.cmd_prime", FT_BOOLEAN
, 8, TFS(&tfs_released_pressed
), 0x80, NULL
, HFILL
}},
4867 { &hf_ua3g_lcd_line_cmd_lcd_options_call_timer
, { "Call Timer", "ua3g.lcd_line_cmd.lcd_options.call_timer", FT_UINT8
, BASE_DEC
, VALS(str_call_timer_ctrl
), 0x03, NULL
, HFILL
}},
4868 { &hf_ua3g_lcd_line_cmd_lcd_options_blink
, { "Blink", "ua3g.lcd_line_cmd.lcd_options.blink", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x04, NULL
, HFILL
}},
4869 { &hf_ua3g_lcd_line_cmd_lcd_options_call_timer_control
, { "Call Timer Control", "ua3g.lcd_line_cmd.lcd_options.call_timer_control", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x10, NULL
, HFILL
}},
4870 { &hf_ua3g_lcd_line_cmd_lcd_options_call_timer_display
, { "Call Timer Display", "ua3g.lcd_line_cmd.lcd_options.call_timer_display", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x20, NULL
, HFILL
}},
4871 { &hf_ua3g_lcd_line_cmd_lcd_options_time_of_day_display
, { "Time Of Day Display", "ua3g.lcd_line_cmd.lcd_options.time_of_day_display", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x40, NULL
, HFILL
}},
4872 { &hf_ua3g_lcd_line_cmd_lcd_options_suspend_display_refresh
, { "Suspend Display Refresh", "ua3g.lcd_line_cmd.lcd_options.suspend_display_refresh", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x80, NULL
, HFILL
}},
4873 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_value
, { "Value", "ua3g.ip.cs.cmd02.parameter.value", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4874 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_ip
, { "IP", "ua3g.ip.cs.cmd02.parameter.ip", FT_IPv4
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4875 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_mac_address
, { "MAC Address", "ua3g.ip.cs.cmd02.parameter.mac_address", FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4876 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_uint
, { "Value", "ua3g.ip.cs.cmd02.parameter.uint", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4877 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_default_codec_bytes
, { "Default Codec", "ua3g.ip.cs.cmd02.parameter.default_codec.bytes", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4878 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_default_codec_uint
, { "Default Codec", "ua3g.ip.cs.cmd02.parameter.default_codec.uint", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4879 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_firmware_version
, { "Firmware Version", "ua3g.ip.cs.cmd02.parameter.firmware_version", FT_UINT16
, BASE_CUSTOM
, CF_FUNC(version_number_computer
), 0x0, NULL
, HFILL
}},
4880 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_tscip_version
, { "Firmware Version", "ua3g.ip.cs.cmd02.parameter.tscip_version", FT_UINT24
, BASE_CUSTOM
, CF_FUNC(version_3bytes_computer
), 0x0, NULL
, HFILL
}},
4881 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_lan_speed
, { "Port Lan Speed", "ua3g.ip.cs.cmd02.parameter.eth_driver_config.port_lan_speed", FT_UINT8
, BASE_DEC
, VALS(str_ethernet_speed_vals
), 0x0, NULL
, HFILL
}},
4882 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_lan_duplex
, { "Port Lan Duplex", "ua3g.ip.cs.cmd02.parameter.eth_driver_config.port_lan_duplex", FT_CHAR
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4883 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_pc_speed
, { "Port PC Speed", "ua3g.ip.cs.cmd02.parameter.eth_driver_config.port_pc_speed", FT_UINT8
, BASE_DEC
, VALS(str_ethernet_speed_vals
), 0x0, NULL
, HFILL
}},
4884 { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_eth_driver_config_port_pc_duplex
, { "Port PC Duplex", "ua3g.ip.cs.cmd02.parameter.eth_driver_config.port_pc_duplex", FT_CHAR
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4886 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_ip
, { "IP", "ua3g.ip.cs.cmd03.parameter.ip", FT_IPv4
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4887 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_string
, { "IP", "ua3g.ip.cs.cmd03.parameter.string", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4888 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_type_of_equip
, { "Type Of Equipment", "ua3g.ip.cs.cmd03.parameter.type_of_equip", FT_UINT16
, BASE_HEX
, VALS(cs_ip_device_routing_cmd03_type_of_equip_vals
), 0x0, NULL
, HFILL
}},
4889 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_firmware_version
, { "Firmware Version", "ua3g.ip.cs.cmd03.parameter.firmware_version", FT_UINT16
, BASE_CUSTOM
, CF_FUNC(version_number_computer
), 0x0, NULL
, HFILL
}},
4890 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_codec
, { "Codec", "ua3g.ip.cs.cmd03.parameter.codec", FT_UINT8
, BASE_HEX
, VALS(str_cs_ip_device_routing_0F_compressor
), 0x0, NULL
, HFILL
}},
4891 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_vad
, { "VAD", "ua3g.ip.cs.cmd03.parameter.vad", FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x0, NULL
, HFILL
}},
4892 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_ece
, { "ECE", "ua3g.ip.cs.cmd03.parameter.ece", FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x0, NULL
, HFILL
}},
4893 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_voice_mode
, { "Voice Mode", "ua3g.ip.cs.cmd03.parameter.voice_mode", FT_UINT8
, BASE_HEX
, VALS(cs_ip_device_routing_cmd03_voice_mode_vals
), 0x0, NULL
, HFILL
}},
4894 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_delay_distribution
, { "Delay Distribution", "ua3g.ip.cs.cmd03.parameter.delay_distribution", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4895 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_consecutive_bfi
, { "Consecutive BFI", "ua3g.ip.cs.cmd03.parameter.consecutive_bfi", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4896 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_bfi_distribution
, { "BFI Distribution", "ua3g.ip.cs.cmd03.parameter.bfi_distribution", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4897 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_8021Q_used
, { "802.1 Q Used", "ua3g.ip.cs.cmd03.parameter.8021Q_used", FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4898 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_8021P_priority
, { "802.1p Priority", "ua3g.ip.cs.cmd03.parameter.8021P_priority", FT_UINT8
, BASE_DEC
, NULL
, 0x07, NULL
, HFILL
}},
4899 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_vlan_id
, { "VLAN Id", "ua3g.ip.cs.cmd03.parameter.vlan_id", FT_UINT16
, BASE_DEC
, NULL
, 0x0FFF, NULL
, HFILL
}},
4900 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_diffserv
, { "DiffServ", "ua3g.ip.cs.cmd03.parameter.diffserv", FT_UINT8
, BASE_DEC
, NULL
, 0xFC, NULL
, HFILL
}},
4901 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_bfi_distribution_200ms
, { "200 ms BFI Distribution", "ua3g.ip.cs.cmd03.parameter.bfi_distribution_200ms", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4902 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_uint
, { "Value", "ua3g.ip.cs.cmd03.parameter.uint", FT_UINT64
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4903 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_consecutive_rtp_lost
, { "Consecutive RTP Lost", "ua3g.ip.cs.cmd03.parameter.consecutive_rtp_lost", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4904 { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_jitter_depth_distribution
, { "Jitter Depth Distribution", "ua3g.ip.cs.cmd03.parameter.jitter_depth_distribution", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4905 { &hf_ua3g_subdevice_state
, { "Subdevice State", "ua3g.subdevice_state", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4906 { &hf_ua3g_special_key_param_dtmf
, { "Parameters Received for DTMF", "ua3g.special_key.param_dtmf", FT_BOOLEAN
, 8, TFS(&tfs_special_key_parameters
), 0x02, NULL
, HFILL
}},
4907 { &hf_ua3g_special_key_hookswitch_status
, { "Hookswitch Status", "ua3g.special_key.hookswitch_status", FT_BOOLEAN
, 8, TFS(&tfs_hookswitch_status
), 0x01, NULL
, HFILL
}},
4908 { &hf_ua3g_cs_ip_device_routing_param_identifier
, { "Parameter Identifier", "ua3g.ip.cs.param_identifier", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4909 { &hf_ua3g_key_number
, { "Key Number", "ua3g.key_number", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4910 { &hf_ua3g_ua_dwl_protocol_binary_info
, { "Binary information", "ua3g.ua_dwl_protocol.binary_info", FT_BOOLEAN
, 8, TFS(&tfs_bin_info
), 0x01, NULL
, HFILL
}},
4911 { &hf_ua3g_lcd_line_cmd_unused
, { "Unused", "ua3g.command.lcd_line.unused", FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4912 { &hf_ua3g_lcd_line_cmd_ascii_char
, { "ASCII Char", "ua3g.command.lcd_line.ascii_char", FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
4913 { &hf_ua3g_call_timer
, { "Call Timer", "ua3g.command.call_timer", FT_UINT24
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4914 { &hf_ua3g_current_time
, { "Current Timer", "ua3g.command.current_time", FT_UINT24
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4915 { &hf_ua3g_beep_beep_destination
, { "Destination", "ua3g.command.beep.destination", FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4916 { &hf_ua3g_beep_beep_destination_handset
, { "Handset", "ua3g.command.beep.destination.handset", FT_BOOLEAN
, 8, NULL
, 0x01, NULL
, HFILL
}},
4917 { &hf_ua3g_beep_beep_destination_headset
, { "Headset", "ua3g.command.beep.destination.headset", FT_BOOLEAN
, 8, NULL
, 0x02, NULL
, HFILL
}},
4918 { &hf_ua3g_beep_beep_destination_loudspeaker
, { "Loudspeaker", "ua3g.command.beep.destination.loudspeaker", FT_BOOLEAN
, 8, NULL
, 0x04, NULL
, HFILL
}},
4919 { &hf_ua3g_beep_beep_destination_announce_loudspeaker
, { "Announce Loudspeaker", "ua3g.command.beep.destination.announce_loudspeaker", FT_BOOLEAN
, 8, NULL
, 0x08, NULL
, HFILL
}},
4920 { &hf_ua3g_beep_beep_destination_handsfree
, { "Handsfree", "ua3g.command.beep.destination.handsfree", FT_BOOLEAN
, 8, NULL
, 0x10, NULL
, HFILL
}},
4921 { &hf_ua3g_beep_freq_sample
, { "Freq sample", "ua3g.command.beep.note.freq_sample", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4922 { &hf_ua3g_beep_level
, { "Level", "ua3g.command.beep.note.level", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4923 { &hf_ua3g_beep_duration
, { "Duration", "ua3g.command.beep.note.duration", FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
4924 { &hf_ua3g_device_configuration
, { "Device Configuration", "ua3g.device_configuration", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
4932 &ett_ua3g_param_sub
,
4934 &ett_ua3g_beep_beep_destination
,
4938 module_t
*ua3g_module
;
4940 /* UA3G dissector registration */
4941 proto_ua3g
= proto_register_protocol("UA3G Message", "UA3G", "ua3g");
4943 /* Register preferences */
4944 ua3g_module
= prefs_register_protocol(proto_ua3g
, NULL
);
4946 prefs_register_bool_preference(ua3g_module
, "setup_conversations",
4947 "Setup RTP/RTCP conversations on Start/Record RTP",
4948 "Setup RTP/RTCP conversations when parsing Start/Record RTP messages",
4949 &setup_conversations_enabled
);
4951 proto_register_field_array(proto_ua3g
, hf
, array_length(hf
));
4953 register_dissector("ua3g", dissect_ua3g
, proto_ua3g
);
4955 /* Common subtree array registration */
4956 proto_register_subtree_array(ett
, array_length(ett
));
4959 void proto_reg_handoff_ua3g(void)
4962 dissector_handle_t handle_ua3g
= find_dissector("ua3g");
4964 /* hooking of UA3G on UA */
4966 dissector_add_uint("ua.opcode", 0x15, handle_ua3g
);
4971 * Editor modelines - https://www.wireshark.org/tools/modelines.html
4976 * indent-tabs-mode: nil
4979 * vi: set shiftwidth=4 tabstop=8 expandtab:
4980 * :indentSize=4:tabSize=8:noTabs=true: