/src/wireshark/epan/dissectors/packet-ua3g.c
Line | Count | Source |
1 | | /* packet-ua3g.c |
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> |
5 | | * |
6 | | * Wireshark - Network traffic analyzer |
7 | | * By Gerald Combs <gerald@wireshark.org> |
8 | | * Copyright 1998 Gerald Combs |
9 | | * |
10 | | * SPDX-License-Identifier: GPL-2.0-or-later |
11 | | */ |
12 | | |
13 | | #include "config.h" |
14 | | |
15 | | #include <epan/packet.h> |
16 | | #include <epan/prefs.h> |
17 | | #include <epan/tfs.h> |
18 | | #include <epan/unit_strings.h> |
19 | | |
20 | | #include <wsutil/array.h> |
21 | | #include "packet-rtp.h" |
22 | | #include "packet-rtcp.h" |
23 | | |
24 | | #include "packet-uaudp.h" |
25 | | |
26 | | void proto_register_ua3g(void); |
27 | | void proto_reg_handoff_ua3g(void); |
28 | | /*----------------------------------------------------------------------------- |
29 | | Globals |
30 | | ---------------------------------------------------------------------------*/ |
31 | | |
32 | | #if 0 |
33 | | static dissector_table_t ua3g_opcode_dissector_table; |
34 | | #endif |
35 | | |
36 | | static int proto_ua3g; |
37 | | static int ett_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; |
44 | | |
45 | | static bool setup_conversations_enabled = true; |
46 | | |
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; |
422 | | |
423 | | |
424 | | /* Definition of opcodes */ |
425 | | /* System To Terminal */ |
426 | 18 | #define SC_NOP 0x00 |
427 | 9 | #define SC_PRODUCTION_TEST 0x01 /* IP Phone */ |
428 | 1 | #define SC_SUBDEVICE_ESCAPE 0x02 /* IP Phone */ |
429 | 5 | #define SC_SOFT_RESET 0x03 |
430 | 1 | #define SC_IP_PHONE_WARMSTART 0x04 /* IP Phone */ |
431 | 18 | #define SC_HE_ROUTING 0x05 /* IP Phone - NOT EXPECTED */ |
432 | 0 | #define SC_SUBDEVICE_RESET 0x06 |
433 | 20 | #define SC_LOOPBACK_ON 0x07 /* IP Phone & UA NOE */ |
434 | 20 | #define SC_LOOPBACK_OFF 0x08 /* IP Phone & UA NOE */ |
435 | 20 | #define SC_VIDEO_ROUTING 0x09 /* IP Phone - NOT EXPECTED */ |
436 | 7 | #define SC_SUPER_MSG 0x0B |
437 | 2 | #define SC_SEGMENT_MSG 0x0C |
438 | 27 | #define SC_REMOTE_UA_ROUTING 0x0D /* IP Phone - NOT EXPECTED */ |
439 | 29 | #define SC_VERY_REMOTE_UA_ROUTING 0x0E /* IP Phone - NOT EXPECTED */ |
440 | 30 | #define SC_OSI_ROUTING 0x0F /* IP Phone - NOT EXPECTED */ |
441 | 31 | #define SC_ABC_A_ROUTING 0x11 /* IP Phone - NOT EXPECTED */ |
442 | 32 | #define SC_IBS_ROUTING 0x12 /* IP Phone - NOT EXPECTED */ |
443 | 197 | #define SC_IP_DEVICE_ROUTING 0x13 |
444 | 33 | #define SC_M_REFLEX_HUB_ROUTING 0x14 /* IP Phone - NOT EXPECTED */ |
445 | | #if 0 |
446 | | #define SC_NOE_CS_ROUTING 0x15 /* Decoded by packet-noe.c */ |
447 | | #define SC_NOE_PS_ROUTING 0x16 /* Decoded by packet-noe.c */ |
448 | | #endif |
449 | 7 | #define SC_SUPER_MSG_2 0x17 |
450 | 1 | #define SC_DEBUG_IN_LINE 0x18 |
451 | 1 | #define SC_LED_COMMAND 0x21 /* IP Phone */ |
452 | 35 | #define SC_START_BUZZER 0x22 /* VTA */ |
453 | 35 | #define SC_STOP_BUZZER 0x23 /* VTA */ |
454 | 36 | #define SC_ENABLE_DTMF 0x24 /* Only IP NOE */ |
455 | 37 | #define SC_DISABLE_DTMF 0x25 /* Only IP NOE */ |
456 | 38 | #define SC_CLEAR_LCD_DISP 0x26 /* IP Phone */ |
457 | 7 | #define SC_LCD_LINE_1_CMD 0x27 /* IP Phone */ |
458 | 8 | #define SC_LCD_LINE_2_CMD 0x28 /* IP Phone */ |
459 | 1 | #define SC_MAIN_VOICE_MODE 0x29 |
460 | 38 | #define SC_VERSION_INQUIRY 0x2A |
461 | 1 | #define SC_ARE_YOU_THERE 0x2B /* IP Phone & UA NOE */ |
462 | 1 | #define SC_SUBDEVICE_METASTATE 0x2C |
463 | 39 | #define SC_VTA_STATUS_INQUIRY 0x2D /* IP Phone */ |
464 | 39 | #define SC_SUBDEVICE_STATE 0x2E |
465 | 5 | #define SC_DWL_DTMF_CLCK_FORMAT 0x30 /* IP Phone */ |
466 | 6 | #define SC_SET_CLCK 0x31 /* IP Phone */ |
467 | 0 | #define SC_VOICE_CHANNEL 0x32 /* IP Phone & UA NOE */ |
468 | 1 | #define SC_EXTERNAL_RINGING 0x33 |
469 | 1 | #define SC_LCD_CURSOR 0x35 /* IP Phone */ |
470 | 5 | #define SC_DWL_SPECIAL_CHAR 0x36 /* IP Phone */ |
471 | 1 | #define SC_SET_CLCK_TIMER_POS 0x38 /* IP Phone */ |
472 | 1 | #define SC_SET_LCD_CONTRAST 0x39 /* IP Phone */ |
473 | 40 | #define SC_AUDIO_IDLE 0x3A |
474 | 0 | #define SC_SET_SPEAKER_VOL 0x3B /* IP Phone */ |
475 | 14 | #define SC_BEEP 0x3C |
476 | 1 | #define SC_SIDETONE 0x3D |
477 | 7 | #define SC_RINGING_CADENCE 0x3E |
478 | 0 | #define SC_MUTE 0x3F |
479 | 2 | #define SC_FEEDBACK 0x40 |
480 | 1 | #define SC_KEY_RELEASE 0x41 /* IP Phone */ |
481 | 1 | #define SC_TRACE_ON 0x42 /* IP Phone - NOT EXPECTED */ |
482 | 43 | #define SC_TRACE_OFF 0x43 /* IP Phone - NOT EXPECTED */ |
483 | 2 | #define SC_READ_PERIPHERAL 0x44 /* IP Phone - NOT EXPECTED */ |
484 | 3 | #define SC_WRITE_PERIPHERAL 0x45 /* IP Phone - NOT EXPECTED */ |
485 | 43 | #define SC_ALL_ICONS_OFF 0x46 /* IP Phone */ |
486 | 1 | #define SC_ICON_CMD 0x47 /* IP Phone */ |
487 | 1 | #define SC_AMPLIFIED_HANDSET 0x48 /* IP Phone */ |
488 | 34 | #define SC_AUDIO_CONFIG 0x49 |
489 | 1 | #define SC_AUDIO_PADDED_PATH 0x4A /* IP Phone */ |
490 | 44 | #define SC_RELEASE_RADIO_LINK 0x4B /* IP Phone - NOT EXPECTED */ |
491 | 45 | #define SC_DECT_HANDOVER 0x4C /* IP Phone - NOT EXPECTED */ |
492 | 0 | #define SC_LOUDSPEAKER 0x4D |
493 | 1 | #define SC_ANNOUNCE 0x4E |
494 | 0 | #define SC_RING 0x4F |
495 | 1 | #define SC_UA_DWL_PROTOCOL 0x50 /* Only UA NOE */ |
496 | | |
497 | | /* Terminal To System */ |
498 | 6 | #define CS_NOP_ACK 0x00 |
499 | 8 | #define CS_HANDSET_OFFHOOK 0x01 /* IP Phone */ |
500 | 8 | #define CS_HANDSET_ONHOOK 0x02 /* IP Phone */ |
501 | 0 | #define CS_DIGIT_DIALED 0x03 /* IP Phone */ |
502 | 0 | #define CS_SUBDEVICE_MSG 0x04 |
503 | 8 | #define CS_HE_ROUTING 0x05 /* IP Phone - NOT EXPECTED */ |
504 | 8 | #define CS_LOOPBACK_ON 0x06 /* IP Phone & UA NOE */ |
505 | 8 | #define CS_LOOPBACK_OFF 0x07 /* IP Phone & UA NOE */ |
506 | 8 | #define CS_VIDEO_ROUTING 0x09 /* IP Phone - NOT EXPECTED */ |
507 | 8 | #define CS_WARMSTART_ACK 0x0A /* IP Phone */ |
508 | 4 | #define CS_SUPER_MSG 0x0B /* IP Phone - NOT EXPECTED */ |
509 | 1 | #define CS_SEGMENT_MSG 0x0C |
510 | 8 | #define CS_REMOTE_UA_ROUTING 0x0D /* IP Phone - NOT EXPECTED */ |
511 | 8 | #define CS_VERY_REMOTE_UA_R 0x0E /* IP Phone - NOT EXPECTED */ |
512 | 9 | #define CS_OSI_ROUTING 0x0F /* IP Phone - NOT EXPECTED */ |
513 | 9 | #define CS_ABC_A_ROUTING 0x11 /* IP Phone - NOT EXPECTED */ |
514 | 9 | #define CS_IBS_ROUTING 0x12 /* IP Phone - NOT EXPECTED */ |
515 | 42 | #define CS_IP_DEVICE_ROUTING 0x13 |
516 | | #if 0 |
517 | | #define CS_NOE_CS_ROUTING 0x15 /* Decoded by packet-noe.c */ |
518 | | #define CS_NOE_PS_ROUTING 0x16 /* Decoded by packet-noe.c */ |
519 | | #endif |
520 | 8 | #define CS_SUPER_MSG_2 0x17 |
521 | 1 | #define CS_DEBUG_IN_LINE 0x18 |
522 | 0 | #define CS_NON_DIGIT_KEY_PUSHED 0x20 /* IP Phone */ |
523 | 3 | #define CS_VERSION_RESPONSE 0x21 |
524 | 0 | #define CS_I_M_HERE 0x22 |
525 | 2 | #define CS_RSP_STATUS_INQUIRY 0x23 /* IP Phone */ |
526 | 0 | #define CS_SUBDEVICE_STATE 0x24 |
527 | 1 | #define CS_DIGIT_KEY_RELEASED 0x26 /* IP Phone */ |
528 | 9 | #define CS_TRACE_ON_ACK 0x27 /* IP Phone */ |
529 | 9 | #define CS_TRACE_OFF_ACK 0x28 /* IP Phone */ |
530 | 3 | #define CS_SPECIAL_KEY_STATUS 0x29 /* IP Phone */ |
531 | 2 | #define CS_KEY_RELEASED 0x2A /* IP Phone */ |
532 | 1 | #define CS_PERIPHERAL_CONTENT 0x2B /* IP Phone */ |
533 | 2 | #define CS_TM_KEY_PUSHED 0x2D /* IP Phone */ |
534 | 2 | #define CS_UA_DWL_PROTOCOL 0x50 /* Only UA NOE */ |
535 | 3 | #define CS_UNSOLICITED_MSG 0x9F |
536 | | |
537 | | /* System To Terminal Opcodes */ |
538 | | static const value_string opcodes_vals_sys[] = |
539 | | { |
540 | | {SC_NOP , "NOP"}, |
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 , "Multi-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 */ |
585 | | {SC_BEEP , "Beep"}, |
586 | | {SC_SIDETONE , "Sidetone"}, |
587 | | {SC_RINGING_CADENCE , "Set Programmable Ringing Cadence"}, |
588 | | {SC_MUTE , "Mute"}, |
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"}, |
604 | | {SC_RING , "Ring"}, |
605 | | {SC_UA_DWL_PROTOCOL , "UA Download Protocol"}, |
606 | | {0, NULL} |
607 | | }; |
608 | | static value_string_ext opcodes_vals_sys_ext = VALUE_STRING_EXT_INIT(opcodes_vals_sys); |
609 | | |
610 | | /* Terminal To System Opcodes */ |
611 | | static const value_string opcodes_vals_term[] = |
612 | | { |
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"}, |
647 | | {0, NULL} |
648 | | }; |
649 | | static value_string_ext opcodes_vals_term_ext = VALUE_STRING_EXT_INIT(opcodes_vals_term); |
650 | | |
651 | | static const value_string str_digit[] = { |
652 | | { 0, "0"}, |
653 | | { 1, "1"}, |
654 | | { 2, "2"}, |
655 | | { 3, "3"}, |
656 | | { 4, "4"}, |
657 | | { 5, "5"}, |
658 | | { 6, "6"}, |
659 | | { 7, "7"}, |
660 | | { 8, "8"}, |
661 | | { 9, "9"}, |
662 | | {10, "*"}, |
663 | | {11, "#"}, |
664 | | {12, "A"}, |
665 | | {13, "B"}, |
666 | | {14, "C"}, |
667 | | {15, "D"}, |
668 | | {16, "Flash"}, |
669 | | {0, NULL} |
670 | | }; |
671 | | static value_string_ext str_digit_ext = VALUE_STRING_EXT_INIT(str_digit); |
672 | | |
673 | 7 | #define STR_ON_OFF(arg) ((arg) ? "On" : "Off") |
674 | | #define STR_YES_NO(arg) ((arg) ? "Yes" : "No") |
675 | | |
676 | | static const value_string str_yes_no[] = { |
677 | | { 0x0, "No" }, |
678 | | { 0x1, "Yes"}, |
679 | | { 0 , NULL } |
680 | | }; |
681 | | |
682 | | static const value_string str_on_off[] = { |
683 | | { 0x0, "Off"}, |
684 | | { 0x1, "On" }, |
685 | | { 0 , NULL } |
686 | | }; |
687 | | |
688 | | static const value_string str_device_type[] = { |
689 | | {0x00, "Voice Terminal Adaptor"}, |
690 | | {0, NULL} |
691 | | }; |
692 | | |
693 | | |
694 | | /*----------------------------------------------------------------------------- |
695 | | VERSION NUMBER COMPUTER - This function computes a version number (S.SZ.AB) from a 16 bits number |
696 | | ---------------------------------------------------------------------------*/ |
697 | | static void |
698 | | version_number_computer( char *result, uint32_t hexa_version ) |
699 | 0 | { |
700 | 0 | int release, vers, fix; |
701 | |
|
702 | 0 | release = (int)(hexa_version / 10000); |
703 | 0 | vers = (int)((hexa_version % 10000) / 100); |
704 | 0 | fix = (hexa_version % 10000) % 100; |
705 | 0 | snprintf( result, ITEM_LABEL_LENGTH, "%d.%02d.%02d", release, vers, fix); |
706 | 0 | } |
707 | | |
708 | | static void |
709 | | version_3bytes_computer(char *result, uint32_t hexa_version) |
710 | 0 | { |
711 | 0 | int release, vers, fix; |
712 | |
|
713 | 0 | release = (hexa_version >> 16); |
714 | 0 | vers = ((hexa_version >> 8) & 0xff); |
715 | 0 | fix = (hexa_version & 0xff); |
716 | 0 | snprintf(result, ITEM_LABEL_LENGTH, "%d.%02d.%02d", release, vers, fix); |
717 | 0 | } |
718 | | |
719 | | |
720 | | /*----------------------------------------------------------------------------- |
721 | | Function for UA3G message with opcode and one parameter |
722 | | |
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 | | ---------------------------------------------------------------------------*/ |
729 | | static void |
730 | | decode_with_one_parameter(proto_tree *tree, tvbuff_t *tvb, |
731 | | packet_info *pinfo _U_, unsigned offset, unsigned length, |
732 | | int hf_opcode) |
733 | 11 | { |
734 | 11 | if (length == 0) |
735 | 0 | return; |
736 | | |
737 | 11 | proto_tree_add_item(tree, hf_opcode, tvb, offset, 1, ENC_NA); |
738 | 11 | } |
739 | | |
740 | | |
741 | | /*----------------------------------------------------------------------------- |
742 | | SUBDEVICE ESCAPE TO SUBDEVICE - 02h (MESSAGE FROM THE SYSTEM) |
743 | | ---------------------------------------------------------------------------*/ |
744 | | static void |
745 | | decode_subdevice_escape(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, |
746 | | unsigned offset, unsigned length) |
747 | 1 | { |
748 | 1 | proto_tree_add_item(tree, hf_ua3g_subdevice_address, tvb, offset, 1, ENC_BIG_ENDIAN); |
749 | 1 | proto_tree_add_item(tree, hf_ua3g_subdevice_opcode, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
750 | 1 | if (length > 2) { |
751 | 1 | proto_tree_add_item(tree, hf_ua3g_subdevice_parameter_bytes, tvb, offset+2, length-2, ENC_NA); |
752 | 1 | } |
753 | 1 | } |
754 | | |
755 | | |
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"}, |
762 | | {0, NULL} |
763 | | }; |
764 | | |
765 | | static void |
766 | | decode_software_reset(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, |
767 | | unsigned offset, unsigned length) |
768 | 5 | { |
769 | 5 | if (length == 0) |
770 | 0 | return; |
771 | | |
772 | 5 | proto_tree_add_item(tree, hf_ua3g_software_reset, tvb, offset, 1, ENC_BIG_ENDIAN); |
773 | 5 | } |
774 | | |
775 | | |
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"}, |
782 | | {0, NULL} |
783 | | }; |
784 | | |
785 | | static void |
786 | | decode_ip_phone_warmstart(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, |
787 | | unsigned offset, unsigned length) |
788 | 1 | { |
789 | 1 | if (length == 0) |
790 | 0 | return; |
791 | | |
792 | 1 | proto_tree_add_item(tree, hf_ua3g_ip_phone_warmstart, tvb, offset, 1, ENC_BIG_ENDIAN); |
793 | 1 | } |
794 | | |
795 | | |
796 | | /*----------------------------------------------------------------------------- |
797 | | SUPER MESSAGE - 0Bh (MESSAGE FROM THE SYSTEM) |
798 | | SUPER MESSAGE 2 - 17h (MESSAGE FROM THE SYSTEM) |
799 | | ---------------------------------------------------------------------------*/ |
800 | | static void |
801 | | decode_super_msg(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, |
802 | | unsigned offset, unsigned length, uint8_t opcode) |
803 | 15 | { |
804 | 15 | proto_tree *ua3g_body_tree = tree; |
805 | 15 | int j = 0, parameter_length; |
806 | | |
807 | 15 | if (!ua3g_body_tree) |
808 | 0 | return; |
809 | | |
810 | 329 | while (length > 0) { |
811 | 314 | if (opcode == 0x17) { |
812 | 40 | parameter_length = tvb_get_ntohs(tvb, offset); |
813 | 40 | proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_super_msg_length, tvb, offset, 2, |
814 | 40 | parameter_length, "Length %d: %d", j++, parameter_length); |
815 | 40 | offset += 2; |
816 | 40 | length -= 2; |
817 | 274 | } else { |
818 | 274 | parameter_length = tvb_get_uint8(tvb, offset); |
819 | 274 | proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_super_msg_length, tvb, offset, 1, |
820 | 274 | parameter_length, "Length %d: %d", j++, parameter_length); |
821 | 274 | offset++; |
822 | 274 | length--; |
823 | 274 | } |
824 | | |
825 | 314 | if (parameter_length > 0) { |
826 | 68 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_super_msg_data, tvb, offset, parameter_length, ENC_NA); |
827 | 68 | offset += parameter_length; |
828 | 68 | length -= parameter_length; |
829 | 68 | } |
830 | 314 | } |
831 | 15 | } |
832 | | |
833 | | |
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" }; |
838 | | |
839 | | static void |
840 | | decode_segment_msg(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, |
841 | | unsigned offset, unsigned length) |
842 | 3 | { |
843 | 3 | uint8_t val; |
844 | | |
845 | 3 | if (!tree) |
846 | 0 | return; |
847 | | |
848 | 3 | val = tvb_get_uint8(tvb, offset); |
849 | 3 | proto_tree_add_item(tree, hf_ua3g_segment_msg_segment, tvb, offset, 1, ENC_NA); |
850 | 3 | proto_tree_add_item(tree, hf_ua3g_segment_msg_num_remaining, tvb, offset, 1, ENC_BIG_ENDIAN); |
851 | 3 | offset++; |
852 | 3 | length--; |
853 | | |
854 | 3 | if (val & 0x80) { |
855 | 1 | proto_tree_add_item(tree, hf_ua3g_segment_msg_length, tvb, offset, 2, ENC_BIG_ENDIAN); |
856 | 1 | offset += 2; |
857 | 1 | length -= 2; |
858 | 1 | } |
859 | | |
860 | 3 | if (length > 0) { |
861 | 2 | proto_tree_add_item(tree, hf_ua3g_segment_message_data, tvb, offset, length, ENC_NA); |
862 | 2 | } |
863 | 3 | } |
864 | | |
865 | | |
866 | | /*----------------------------------------------------------------------------- |
867 | | IP DEVICE ROUTING - 13h (MESSAGE FROM THE SYSTEM) |
868 | | ---------------------------------------------------------------------------*/ |
869 | | static const value_string str_command_ip_device_routing[] = { |
870 | | {0x00, "Reset"}, |
871 | | {0x01, "Start RTP"}, |
872 | | {0x02, "Stop RTP"}, |
873 | | {0x03, "Redirect"}, |
874 | | {0x04, "Tone Definition"}, |
875 | | {0x05, "Start Tone"}, |
876 | | {0x06, "Stop 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"}, |
882 | | {0x0C, "Pause RTP"}, |
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"}, |
889 | | {0, NULL} |
890 | | }; |
891 | | |
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"}, |
897 | | {0, NULL} |
898 | | }; |
899 | | |
900 | | static const value_string reset_param_bad_sec_mode[] = { |
901 | | {0x01, "Binary is full, CS is secured, but terminal running in clear mode"}, |
902 | | {0, NULL} |
903 | | }; |
904 | | |
905 | | static const value_string start_rtp_str_direction[] = { |
906 | | {0x00, "Terminal Input"}, |
907 | | {0x01, "Terminal Output"}, |
908 | | {0x02, "Terminal Input/Output (Both Directions)"}, |
909 | | {0, NULL} |
910 | | }; |
911 | | |
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"}, |
922 | | {0x09, "Reserved"}, |
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"}, |
948 | | {0, NULL} |
949 | | }; |
950 | | static value_string_ext ip_device_routing_cmd_start_rtp_vals_ext = VALUE_STRING_EXT_INIT(ip_device_routing_cmd_start_rtp_vals); |
951 | | |
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"}, |
961 | | {0x1E, "Opus"}, |
962 | | {0, NULL} |
963 | | }; |
964 | | |
965 | | static const value_string ip_device_routing_cmd_stop_rtp_vals[] = { |
966 | | {0x0E, "Local Identifier"}, |
967 | | {0x0F, "Distant Identifier"}, |
968 | | {0x14, "Canal Identifier"}, |
969 | | {0, NULL} |
970 | | }; |
971 | | |
972 | | static const value_string ip_device_routing_cmd_redirect_vals[] = { |
973 | | {0x00, "Remote MainCPU Server IP Address"}, |
974 | | {0x01, "Remote MainCPU Server Port"}, |
975 | | {0, NULL} |
976 | | }; |
977 | | |
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"}, |
984 | | {0, NULL} |
985 | | }; |
986 | | |
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"}, |
1028 | | {0, NULL} |
1029 | | }; |
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); |
1031 | | |
1032 | | static const value_string set_param_req_stable_mode[] = { |
1033 | | {0x00 , "Full-Duplex Preference"}, |
1034 | | {0x01 , "Echo Robustness Preference"}, |
1035 | | {0, NULL} |
1036 | | }; |
1037 | | |
1038 | | static const value_string set_param_req_skin_id[] = { |
1039 | | {0x00 , "Managed By Terminal"}, |
1040 | | {0x01 , "Classical or Arcturus"}, |
1041 | | {0x02 , "Rainbow"}, |
1042 | | {0x03 , "Crystal or Green"}, |
1043 | | {0x04 , "Luxury"}, |
1044 | | {0x05 , "Arcturus or Classical or Century"}, |
1045 | | {0, NULL} |
1046 | | }; |
1047 | | |
1048 | | static const value_string set_param_req_usb_boost[] = { |
1049 | | {0x00 , "Disable"}, |
1050 | | {0x01 , "Enable"}, |
1051 | | {0x02 , "Auto-Negotiation"}, |
1052 | | {0, NULL} |
1053 | | }; |
1054 | | |
1055 | | static const value_string set_param_req_local_device[] = { |
1056 | | {0x00 , "Managed By Terminal"}, |
1057 | | {0x01 , "Enable"}, |
1058 | | {0x02 , "Disable"}, |
1059 | | {0, NULL} |
1060 | | }; |
1061 | | |
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"}, |
1067 | | {0x04 , "Noisy"}, |
1068 | | {0, NULL} |
1069 | | }; |
1070 | | |
1071 | | static const value_string ip_device_routing_cmd_pause_restart_vals[] = { |
1072 | | {0x14, "Canal Identifier"}, |
1073 | | {0, NULL} |
1074 | | }; |
1075 | | |
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"}, |
1090 | | {0, NULL} |
1091 | | }; |
1092 | | |
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"}, |
1098 | | {0, NULL} |
1099 | | }; |
1100 | | |
1101 | | static const value_string ip_device_routing_cmd_appl_vals[] = { |
1102 | | {0x00 , "Identifier"}, |
1103 | | {0x01 , "Enable"}, |
1104 | | {0x02 , "URL"}, |
1105 | | {0, NULL} |
1106 | | }; |
1107 | | |
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"}, |
1112 | | {0, NULL} |
1113 | | }; |
1114 | | |
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"}, |
1128 | | {0, NULL} |
1129 | | }; |
1130 | | |
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"}, |
1135 | | {0, NULL} |
1136 | | }; |
1137 | | |
1138 | | static const value_string str_enable_feature[] = { |
1139 | | {0x00, "Disable Feature"}, |
1140 | | {0x01, "Enable Feature"}, |
1141 | | {0 , NULL} |
1142 | | }; |
1143 | | |
1144 | | static const value_string str_ethernet_speed_vals[] = { |
1145 | | {0 , "No Link"}, |
1146 | | {1 , "10 Mbps"}, |
1147 | | {2 , "100 Mbps"}, |
1148 | | {3 , "1000 Mbps"}, |
1149 | | {10 , "10 Mbps"}, |
1150 | | {100 , "100 Mbps"}, |
1151 | | {0 , NULL} |
1152 | | }; |
1153 | | |
1154 | | static const value_string str_wlan_status[] = { |
1155 | | {0, "Not Connected"}, |
1156 | | {1, "Connected"}, |
1157 | | {0, NULL} |
1158 | | }; |
1159 | | |
1160 | | static void |
1161 | | decode_ip_device_routing(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
1162 | | unsigned offset, unsigned length) |
1163 | 197 | { |
1164 | 197 | uint8_t command; |
1165 | 197 | proto_tree *ua3g_body_tree = tree, *ua3g_param_tree, *ua3g_param_subtree; |
1166 | 197 | proto_item *ua3g_param_item; |
1167 | 197 | int parameter_length, parameter_id; |
1168 | | |
1169 | 197 | command = tvb_get_uint8(tvb, offset); |
1170 | | |
1171 | | /* add text to the frame "INFO" column */ |
1172 | 197 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(command, str_command_ip_device_routing, "Unknown")); |
1173 | | |
1174 | 197 | if (!ua3g_body_tree) |
1175 | 0 | return; |
1176 | | |
1177 | 197 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ip, tvb, offset, 1, ENC_BIG_ENDIAN); |
1178 | 197 | offset++; |
1179 | 197 | length--; |
1180 | | |
1181 | 197 | switch (command) { |
1182 | 5 | case 0x00: /* RESET */ |
1183 | 5 | { |
1184 | 5 | if (length > 0) { |
1185 | 5 | parameter_id = tvb_get_uint8(tvb, offset); |
1186 | 5 | parameter_length = tvb_get_uint8(tvb, offset + 1); |
1187 | | |
1188 | 5 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip_device_routing_stop_rtp_parameter, tvb, offset, |
1189 | 5 | parameter_length + 2, parameter_id, "%s", |
1190 | 5 | val_to_str_const(parameter_id, ip_device_routing_cmd_reset_vals, "Unknown")); |
1191 | 5 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
1192 | | |
1193 | 5 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1194 | 5 | offset++; |
1195 | 5 | length--; |
1196 | | |
1197 | 5 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
1198 | 5 | offset++; |
1199 | 5 | length--; |
1200 | | |
1201 | 5 | if (parameter_length > 0) { |
1202 | 3 | uint8_t param; |
1203 | 3 | switch (parameter_id) { |
1204 | 1 | case 0x00: /* Update Mode */ |
1205 | | |
1206 | 1 | param = tvb_get_uint8(tvb, offset); |
1207 | 1 | if ((param & 0x80) == 0x00) { |
1208 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter_noe_update, tvb, offset, 1, ENC_BIG_ENDIAN); |
1209 | 0 | ua3g_param_subtree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param_sub); |
1210 | |
|
1211 | 0 | proto_tree_add_item(ua3g_param_subtree, hf_ua3g_ip_device_routing_reset_parameter_noe_update_bootloader, tvb, offset, 1, ENC_NA); |
1212 | 0 | proto_tree_add_item(ua3g_param_subtree, hf_ua3g_ip_device_routing_reset_parameter_noe_update_data, tvb, offset, 1, ENC_NA); |
1213 | 0 | proto_tree_add_item(ua3g_param_subtree, hf_ua3g_ip_device_routing_reset_parameter_noe_update_customization, tvb, offset, 1, ENC_NA); |
1214 | 0 | proto_tree_add_item(ua3g_param_subtree, hf_ua3g_ip_device_routing_reset_parameter_noe_update_localization, tvb, offset, 1, ENC_NA); |
1215 | 0 | proto_tree_add_item(ua3g_param_subtree, hf_ua3g_ip_device_routing_reset_parameter_noe_update_code, tvb, offset, 1, ENC_NA); |
1216 | 0 | proto_tree_add_item(ua3g_param_subtree, hf_ua3g_ip_device_routing_reset_parameter_noe_update_sip, tvb, offset, 1, ENC_NA); |
1217 | |
|
1218 | 1 | } else { |
1219 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1220 | 1 | } |
1221 | | |
1222 | 1 | break; |
1223 | 1 | case 0x01: /* Bad_Sec_Mode */ |
1224 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter_bad_sec_mode, tvb, offset, 1, ENC_BIG_ENDIAN); |
1225 | 1 | break; |
1226 | 0 | case 0x02: /* Cust_Name */ |
1227 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter_cust_name, tvb, offset, parameter_length, ENC_ASCII); |
1228 | 0 | break; |
1229 | 0 | case 0x03: /* L10N_Name */ |
1230 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter_l10n_name, tvb, offset, parameter_length, ENC_ASCII); |
1231 | 0 | break; |
1232 | 0 | case 0x04: /* Appl_Mode */ |
1233 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter_appl_mode, tvb, offset, 1, ENC_BIG_ENDIAN); |
1234 | 0 | break; |
1235 | 0 | case 0x05: /* SIP_Name */ |
1236 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter_sip_name, tvb, offset, parameter_length, ENC_ASCII); |
1237 | 0 | break; |
1238 | 0 | case 0x06: /* Appl_Mode */ |
1239 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter_reset_mac, tvb, offset, 1, ENC_BIG_ENDIAN); |
1240 | 0 | break; |
1241 | 1 | default: |
1242 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_reset_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1243 | 1 | break; |
1244 | 3 | } |
1245 | | |
1246 | | /*offset += parameter_length; |
1247 | | length -= parameter_length;*/ |
1248 | 3 | } |
1249 | 5 | } |
1250 | 4 | break; |
1251 | 5 | } |
1252 | 39 | case 0x01: /* START RTP */ |
1253 | 39 | { |
1254 | 39 | address remote_rtp_addr = ADDRESS_INIT_NONE; |
1255 | 39 | uint32_t remote_rtp_port = 0; |
1256 | | |
1257 | 39 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ip_device_routing_start_rtp_direction, tvb, offset, 1, ENC_BIG_ENDIAN); |
1258 | 39 | offset++; |
1259 | 39 | length--; |
1260 | | |
1261 | 1.02k | while (length > 0) { |
1262 | 1.01k | parameter_id = tvb_get_uint8(tvb, offset); |
1263 | 1.01k | parameter_length = tvb_get_uint8(tvb, offset + 1); |
1264 | | |
1265 | 1.01k | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip_device_routing_start_rtp_parameter, tvb, offset, |
1266 | 1.01k | parameter_length + 2, parameter_id, "%s", |
1267 | 1.01k | val_to_str_ext_const(parameter_id, &ip_device_routing_cmd_start_rtp_vals_ext, "Unknown")); |
1268 | | |
1269 | 1.01k | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
1270 | 1.01k | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1271 | 1.01k | offset++; |
1272 | 1.01k | length--; |
1273 | | |
1274 | 1.01k | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
1275 | 1.01k | offset++; |
1276 | 1.01k | length--; |
1277 | | |
1278 | 1.01k | if (parameter_length > 0) { |
1279 | 423 | switch (parameter_id) { |
1280 | 86 | case 0x01: /* Remote IP Address */ |
1281 | 102 | case 0x11: /* Destination For RTCP Sender Reports - IP Address */ |
1282 | 126 | case 0x13: /* Destination For RTCP Receiver Reports - IP Address */ |
1283 | 126 | if (parameter_id == 0x01) |
1284 | 86 | set_address_tvb(&remote_rtp_addr, AT_IPv4, 4, tvb, offset); |
1285 | 126 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_ip, tvb, offset, 4, ENC_BIG_ENDIAN); |
1286 | 126 | break; |
1287 | 12 | case 0x04: /* Compressor */ |
1288 | 12 | if (parameter_length <= 8) { |
1289 | 10 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_compressor, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1290 | 10 | } else { |
1291 | 2 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1292 | 2 | } |
1293 | 12 | break; |
1294 | 4 | case 0x06: /* Echo Cancellation Enabler */ |
1295 | 10 | case 0x07: /* Silence Suppression Enabler */ |
1296 | 16 | case 0x0A: /* Post Filtering Enabler */ |
1297 | 22 | case 0x0B: /* High Pass Filtering Enabler */ |
1298 | 22 | if (parameter_length <= 8) { |
1299 | 9 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_enabler, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1300 | 13 | } else { |
1301 | 13 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1302 | 13 | } |
1303 | 22 | break; |
1304 | 0 | case 0x0D: /* Must Send QOS Tickets */ |
1305 | 0 | if (parameter_length <= 8) { |
1306 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_send_qos, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1307 | 0 | } else { |
1308 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1309 | 0 | } |
1310 | 0 | break; |
1311 | 3 | case 0x0E: /* Local Identifier */ |
1312 | 18 | case 0x0F: /* Distant Identifier */ |
1313 | 18 | break; |
1314 | 1 | case 0x15: /* DTMF Sending */ |
1315 | 1 | if (parameter_length <= 8) { |
1316 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_dtmf_sending, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1317 | 1 | } else { |
1318 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1319 | 1 | } |
1320 | 1 | break; |
1321 | 20 | case 0x18: /* Enable / Disable RFC 2198 */ |
1322 | 20 | if (parameter_length <= 8) { |
1323 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_rfc2198, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1324 | 19 | } else { |
1325 | 19 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1326 | 19 | } |
1327 | 20 | break; |
1328 | 4 | case 0x31: /* SRTP Encryption Enable For This Communication */ |
1329 | 4 | if (parameter_length <= 8) { |
1330 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_srtp_encryption, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1331 | 4 | } else { |
1332 | 4 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1333 | 4 | } |
1334 | 4 | break; |
1335 | 36 | case 0x00: /* Local UDP Port */ |
1336 | 56 | case 0x02: /* Remote UDP Port */ |
1337 | 95 | case 0x03: /* Type Of Service */ |
1338 | 95 | case 0x05: /* Payload Concatenation */ |
1339 | 97 | case 0x08: /* 802.1 Q User Priority */ |
1340 | 98 | case 0x09: /* Reserved */ |
1341 | 103 | case 0x0C: /* Remote SSRC */ |
1342 | 118 | case 0x10: /* Destination For RTCP Sender Reports - Port Number */ |
1343 | 118 | case 0x12: /* Destination For RTCP Receiver Reports - Port Number */ |
1344 | 118 | case 0x14: /* Channel Number */ |
1345 | 118 | case 0x16: /* Payload Type For Redundancy */ |
1346 | 118 | case 0x17: /* Payload Type For DTMF Events */ |
1347 | 118 | case 0x32: /* Master Key For SRTP Session */ |
1348 | 120 | case 0x33: /* Master Salt Key For SRTP Session */ |
1349 | 120 | case 0x34: /* Master key for output stream of SRTP session */ |
1350 | 120 | case 0x35: /* Master salt key for output stream of SRTP session */ |
1351 | 120 | case 0x36: /* Integrity checking enabled for this communication */ |
1352 | 120 | case 0x37: /* MKI value for SRTP packets in input stream */ |
1353 | 121 | case 0x38: /* MKI value for SRTP packets in output stream */ |
1354 | 122 | case 0x39: /* Integrity method of Thales component */ |
1355 | 123 | case 0x50: /* MD5 Authentication */ |
1356 | 220 | default: |
1357 | 220 | if (parameter_id == 0x02) |
1358 | 20 | remote_rtp_port = tvb_get_ntohs(tvb, offset); |
1359 | 220 | if (parameter_length <= 8) { |
1360 | 81 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_uint, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1361 | 139 | } else { |
1362 | 139 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_rtp_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1363 | 139 | } |
1364 | 220 | break; |
1365 | 423 | } |
1366 | | |
1367 | 392 | offset += parameter_length; |
1368 | 392 | length -= parameter_length; |
1369 | 392 | } |
1370 | 1.01k | } |
1371 | | |
1372 | 8 | if (setup_conversations_enabled) |
1373 | 0 | { |
1374 | 0 | if ((remote_rtp_addr.data != NULL) && (remote_rtp_port != 0)) |
1375 | 0 | { |
1376 | 0 | rtp_add_address(pinfo, PT_UDP, &remote_rtp_addr, remote_rtp_port, 0, "UA3G", pinfo->num, 0, NULL); |
1377 | 0 | rtcp_add_address(pinfo, &remote_rtp_addr, remote_rtp_port+1, 0, "UA3G", pinfo->num); |
1378 | 0 | } |
1379 | 0 | } |
1380 | 8 | break; |
1381 | 39 | } |
1382 | 15 | case 0x02: /* STOP_RTP */ |
1383 | 511 | while (length > 0) { |
1384 | 496 | parameter_id = tvb_get_uint8(tvb, offset); |
1385 | 496 | parameter_length = tvb_get_uint8(tvb, offset + 1); |
1386 | | |
1387 | 496 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip_device_routing_stop_rtp_parameter, tvb, offset, |
1388 | 496 | parameter_length + 2, parameter_id, "%s", |
1389 | 496 | val_to_str_const(parameter_id, ip_device_routing_cmd_stop_rtp_vals, "Unknown")); |
1390 | 496 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
1391 | | |
1392 | 496 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_stop_rtp_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1393 | 496 | offset++; |
1394 | 496 | length--; |
1395 | | |
1396 | 496 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_stop_rtp_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
1397 | 496 | offset++; |
1398 | 496 | length--; |
1399 | | |
1400 | 496 | if (parameter_length > 0) { |
1401 | 140 | if (parameter_length <= 8) { |
1402 | 82 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_stop_rtp_parameter_value_num, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1403 | 82 | } else { |
1404 | 58 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_stop_rtp_parameter_value_bytes, tvb, offset, parameter_length, ENC_NA); |
1405 | 58 | } |
1406 | | |
1407 | 140 | offset += parameter_length; |
1408 | 140 | length -= parameter_length; |
1409 | 140 | } |
1410 | 496 | } |
1411 | 15 | break; |
1412 | 17 | case 0x03: /* REDIRECT */ |
1413 | 211 | while (length > 0) { |
1414 | 208 | parameter_id = tvb_get_uint8(tvb, offset); |
1415 | 208 | parameter_length = tvb_get_uint8(tvb, offset + 1); |
1416 | | |
1417 | 208 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip_device_routing_redirect_parameter, |
1418 | 208 | tvb, offset, parameter_length + 2, parameter_id, |
1419 | 208 | "%s", val_to_str_const(parameter_id, ip_device_routing_cmd_redirect_vals, "Unknown")); |
1420 | 208 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
1421 | | |
1422 | 208 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_redirect_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1423 | 208 | offset++; |
1424 | 208 | length--; |
1425 | | |
1426 | 208 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_redirect_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
1427 | 208 | offset++; |
1428 | 208 | length--; |
1429 | | |
1430 | | |
1431 | 208 | if (parameter_length > 0) { |
1432 | 87 | switch (parameter_id) { |
1433 | 13 | case 0x00: /* Remote MainCPU Server IP Address */ |
1434 | 28 | case 0x02: /* Remote Redundant MainCPU Server IP Address */ |
1435 | 28 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_redirect_parameter_ip, tvb, offset, 4, ENC_BIG_ENDIAN); |
1436 | 28 | break; |
1437 | 0 | case 0x01: /* Remote MainCPU Server Port */ |
1438 | 59 | default: |
1439 | 59 | if (parameter_length <= 8) { |
1440 | 21 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_redirect_parameter_uint, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1441 | 38 | } else { |
1442 | 38 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_redirect_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1443 | 38 | } |
1444 | 59 | break; |
1445 | 87 | } |
1446 | | |
1447 | 73 | offset += parameter_length; |
1448 | 73 | length -= parameter_length; |
1449 | 73 | } |
1450 | 208 | } |
1451 | 3 | break; |
1452 | 3 | case 0x04: /* DEF_TONES */ |
1453 | 2 | { |
1454 | 2 | int i, tone_nb_entries; |
1455 | 2 | uint16_t frequency_1, frequency_2; |
1456 | 2 | signed char level_1, level_2; |
1457 | | |
1458 | 2 | tone_nb_entries = tvb_get_uint8(tvb, offset); |
1459 | | |
1460 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ip_device_routing_def_tones_num_entries, tvb, offset, 1, ENC_BIG_ENDIAN); |
1461 | 2 | offset++; |
1462 | 2 | length--; |
1463 | | |
1464 | 5 | while (length > 0 && tone_nb_entries) { |
1465 | 133 | for (i = 1; i <= tone_nb_entries; i++) { |
1466 | 130 | frequency_1 = tvb_get_ntohs(tvb, offset); |
1467 | 130 | level_1 = (signed char)(tvb_get_uint8(tvb, offset + 2)) / 2; |
1468 | 130 | frequency_2 = tvb_get_ntohs(tvb, offset + 3); |
1469 | 130 | level_2 = (signed char)(tvb_get_uint8(tvb, offset + 5)) / 2; |
1470 | | |
1471 | 130 | ua3g_param_tree = proto_tree_add_subtree_format(ua3g_body_tree, tvb, offset, 6, |
1472 | 130 | ett_ua3g_param, NULL, "Tone Pair %d: %d Hz at %d dB / %d Hz at %d dB", |
1473 | 130 | i, frequency_1, level_1, frequency_2, level_2); |
1474 | | |
1475 | 130 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_def_tones_frequency_1, tvb, offset, 2, ENC_BIG_ENDIAN); |
1476 | 130 | offset += 2; |
1477 | 130 | length -= 2; |
1478 | | |
1479 | 130 | proto_tree_add_int(ua3g_param_tree, hf_ua3g_ip_device_routing_def_tones_level_1, tvb, offset, 1, level_1); |
1480 | 130 | offset++; |
1481 | 130 | length--; |
1482 | | |
1483 | 130 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_def_tones_frequency_2, tvb, offset, 2, ENC_BIG_ENDIAN); |
1484 | 130 | offset += 2; |
1485 | 130 | length -= 2; |
1486 | | |
1487 | 130 | proto_tree_add_int(ua3g_param_tree, hf_ua3g_ip_device_routing_def_tones_level_2, tvb, offset, 1, level_2); |
1488 | 130 | offset++; |
1489 | 130 | length--; |
1490 | 130 | } |
1491 | 3 | } |
1492 | 2 | break; |
1493 | 17 | } |
1494 | 0 | case 0x05: /* START TONE */ |
1495 | 0 | { |
1496 | 0 | uint32_t tone_nb_entries; |
1497 | |
|
1498 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ip_device_routing_start_tone_direction, tvb, offset, 1, ENC_BIG_ENDIAN); |
1499 | 0 | 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); |
1500 | 0 | offset++; |
1501 | 0 | length--; |
1502 | |
|
1503 | 0 | for (unsigned ii = 0; ii < tone_nb_entries; ii++) { |
1504 | 0 | uint8_t tone_id = tvb_get_uint8(tvb, offset); |
1505 | 0 | int tone_duration = tvb_get_ntohs(tvb, offset + 1); |
1506 | |
|
1507 | 0 | ua3g_param_tree = proto_tree_add_subtree_format(ua3g_body_tree, tvb, offset, 3, |
1508 | 0 | ett_ua3g_param, NULL, "Tone Pair %d: Id: %d, Duration: %d ms", |
1509 | 0 | ii+1, tone_id, tone_duration); |
1510 | |
|
1511 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_tone_identification, tvb, offset, 1, ENC_BIG_ENDIAN); |
1512 | 0 | offset++; |
1513 | 0 | length--; |
1514 | |
|
1515 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_tone_duration, tvb, offset, 2, ENC_BIG_ENDIAN); |
1516 | 0 | offset += 2; |
1517 | 0 | length -= 2; |
1518 | 0 | } |
1519 | 0 | break; |
1520 | 17 | } |
1521 | 2 | case 0x07: /* START LISTEN RTP */ |
1522 | 9 | case 0x08: /* STOP LISTEN RTP */ |
1523 | 71 | while (length > 0) { |
1524 | 71 | parameter_id = tvb_get_uint8(tvb, offset); |
1525 | 71 | parameter_length = tvb_get_uint8(tvb, offset + 1); |
1526 | | |
1527 | 71 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip_device_routing_listen_rtp_parameter, tvb, offset, |
1528 | 71 | parameter_length + 2, parameter_id, "%s", |
1529 | 71 | val_to_str_const(parameter_id, ip_device_routing_cmd_listen_rtp_vals, "Unknown")); |
1530 | 71 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
1531 | | |
1532 | 71 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_listen_rtp_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1533 | 71 | offset++; |
1534 | 71 | length--; |
1535 | | |
1536 | 71 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_listen_rtp_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
1537 | 71 | offset++; |
1538 | 71 | length--; |
1539 | | |
1540 | 71 | if (parameter_length > 0) { |
1541 | 21 | switch (parameter_id) { |
1542 | 5 | case 0x00: /* Remote IP Address - Not for start listening rtp */ |
1543 | 5 | case 0x03: /* Remote IP Address Out - Not for start listening rtp */ |
1544 | 5 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_listen_rtp_parameter_ip, tvb, offset, 1, ENC_BIG_ENDIAN); |
1545 | 5 | break; |
1546 | 0 | case 0x01: /* Remote UDP Port In - Not for start listening rtp */ |
1547 | 0 | case 0x02: /* Remote UDP Port Out - Not for start listening rtp */ |
1548 | 0 | case 0x04: /* Canal Number */ |
1549 | 16 | default: |
1550 | 16 | if (parameter_length <= 8) { |
1551 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_listen_rtp_parameter_port, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1552 | 15 | } else { |
1553 | 15 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_listen_rtp_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1554 | 15 | } |
1555 | 16 | break; |
1556 | 21 | } |
1557 | | |
1558 | 12 | offset += parameter_length; |
1559 | 12 | length -= parameter_length; |
1560 | 12 | } |
1561 | 71 | } |
1562 | 0 | break; |
1563 | 5 | case 0x09: /* GET_PARAM_REQ */ |
1564 | 1.05k | while (length > 0) { |
1565 | 1.05k | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ip_device_routing_get_param_req_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1566 | 1.05k | offset++; |
1567 | 1.05k | length--; |
1568 | 1.05k | } |
1569 | 5 | break; |
1570 | | |
1571 | 41 | case 0x0A: /* SET_PARAM_REQ */ |
1572 | 41 | { |
1573 | 906 | while (length > 0) { |
1574 | 890 | parameter_id = tvb_get_uint8(tvb, offset); |
1575 | 890 | parameter_length = tvb_get_uint8(tvb, offset + 1); |
1576 | | |
1577 | 890 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip_device_routing_set_param_req_parameter, tvb, offset, |
1578 | 890 | parameter_length + 2, parameter_id, "%s", |
1579 | 890 | val_to_str_ext_const(parameter_id, &ip_device_routing_cmd_set_param_req_vals_ext, "Unknown")); |
1580 | 890 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
1581 | | |
1582 | 890 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1583 | 890 | offset++; |
1584 | 890 | length--; |
1585 | | |
1586 | 890 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
1587 | 890 | offset++; |
1588 | 890 | length--; |
1589 | | |
1590 | 890 | if (parameter_length > 0) { |
1591 | 464 | switch (parameter_id) { |
1592 | 0 | case 0x06: /* Compressor */ |
1593 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_compressor, tvb, offset, 1, ENC_BIG_ENDIAN); |
1594 | 0 | break; |
1595 | 28 | case 0x07: /* ERR STRING NET DOWN */ |
1596 | 71 | case 0x08: /* ERR STRING CABLE PB */ |
1597 | 72 | case 0x09: /* ERR STRING TRY CONNECT */ |
1598 | 77 | case 0x0A: /* ERR STRING CONNECTED */ |
1599 | 93 | case 0x0B: /* ERR STRING RESET */ |
1600 | 107 | case 0x0C: /* ERR STRING DUPLICATE IP ADDRESS */ |
1601 | 107 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_err_string, tvb, offset, parameter_length, ENC_ASCII); |
1602 | 107 | break; |
1603 | 2 | case 0x0F: /* TFTP BACKUP IP ADDR */ |
1604 | 2 | 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); |
1605 | 2 | break; |
1606 | 48 | case 0x11: /* Set PC Port status */ |
1607 | 48 | 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); |
1608 | 48 | break; |
1609 | 8 | case 0x12: /* Record RTP Authorization */ |
1610 | 8 | 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); |
1611 | 8 | break; |
1612 | 22 | case 0x13: /* Security Flags */ |
1613 | 22 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_security_flag_filter, tvb, offset, 1, ENC_NA); |
1614 | 22 | break; |
1615 | 1 | case 0x16: /* Stable Mode */ |
1616 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_stable_mode, tvb, offset, 1, ENC_BIG_ENDIAN); |
1617 | 1 | break; |
1618 | 4 | case 0x1B: /* Set Skin Identifier */ |
1619 | 4 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_skin_id, tvb, offset, 1, ENC_BIG_ENDIAN); |
1620 | 4 | break; |
1621 | 3 | case 0x1C: /* Set Language Identifier */ |
1622 | 3 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_language_id, tvb, offset, 2, ENC_ASCII); |
1623 | 3 | break; |
1624 | 8 | case 0x1E: /* USB Boost */ |
1625 | 8 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_usb_boost, tvb, offset, 1, ENC_BIG_ENDIAN); |
1626 | 8 | break; |
1627 | 0 | case 0x22: /* ALS Device */ |
1628 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_als_device, tvb, offset, 1, ENC_BIG_ENDIAN); |
1629 | 0 | break; |
1630 | 4 | case 0x23: /* Busy Light */ |
1631 | 4 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_busy_light, tvb, offset, 1, ENC_BIG_ENDIAN); |
1632 | 4 | break; |
1633 | 13 | case 0x24: /* Audio Environment */ |
1634 | 13 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_audio_env, tvb, offset, 1, ENC_BIG_ENDIAN); |
1635 | 13 | break; |
1636 | 58 | case 0x00: /* QOS IP TOS */ |
1637 | 68 | case 0x01: /* QOS 8021 VLID */ |
1638 | 71 | case 0x02: /* QOS 8021 PRI */ |
1639 | 96 | case 0x03: /* SNMP MIB2 SYSCONTACT */ |
1640 | 112 | case 0x04: /* SNMP MIB2 SYSNAME */ |
1641 | 118 | case 0x05: /* SNMP MIB2 SYSLOCATION */ |
1642 | 118 | case 0x0D: /* SNMP MIB COMMUNITY */ |
1643 | 119 | case 0x0E: /* TFTP BACKUP SEC MODE */ |
1644 | 132 | case 0x10: /* SET MMI PASSWORD */ |
1645 | 132 | case 0x14: /* ARP Spoofing */ |
1646 | 132 | case 0x15: /* Session Param */ |
1647 | 132 | case 0x17: /* DTMF Level */ |
1648 | 132 | case 0x18: /* Keep Talking */ |
1649 | 132 | case 0x19: /* BT Radio */ |
1650 | 133 | case 0x1A: /* Transparent Reboot */ |
1651 | 133 | case 0x1D: /* Dialpad Rotation */ |
1652 | 133 | case 0x1F: /* Set SSH Password */ |
1653 | 136 | case 0x20: /* DHCP Survivability */ |
1654 | 136 | case 0x21: /* USB Devices */ |
1655 | 137 | case 0x25: /* EEE Configuration */ |
1656 | 148 | case 0x26: /* LLDP Configuration */ |
1657 | 149 | case 0x30: /* MD5 Authentication */ |
1658 | 244 | default: |
1659 | 244 | if ((parameter_length > 0) && (parameter_length <= 8)) { |
1660 | 95 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_uint, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1661 | 149 | } else if (parameter_length > 8) { |
1662 | 149 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_set_param_req_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1663 | 149 | } |
1664 | 244 | break; |
1665 | 464 | } |
1666 | | |
1667 | 439 | offset += parameter_length; |
1668 | 439 | length -= parameter_length; |
1669 | 439 | } |
1670 | 890 | } |
1671 | 16 | break; |
1672 | 41 | } |
1673 | 16 | case 0x0B: /* SEND_DIGIT */ |
1674 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ip_device_routing_digit_value, tvb, offset, 1, ENC_BIG_ENDIAN); |
1675 | 0 | break; |
1676 | | |
1677 | 1 | case 0x0C: /* PAUSE_RTP */ |
1678 | 7 | case 0x0D: /* RESTART_RTP */ |
1679 | 162 | while (length > 0) { |
1680 | 155 | parameter_id = tvb_get_uint8(tvb, offset); |
1681 | 155 | parameter_length = tvb_get_uint8(tvb, offset + 1); |
1682 | | |
1683 | 155 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip_device_routing_pause_restart_rtp_parameter, tvb, offset, |
1684 | 155 | parameter_length + 2, parameter_id, "%s", |
1685 | 155 | val_to_str_const(parameter_id, ip_device_routing_cmd_pause_restart_vals, "Unknown")); |
1686 | 155 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
1687 | | |
1688 | 155 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_pause_restart_rtp_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1689 | 155 | offset++; |
1690 | 155 | length--; |
1691 | | |
1692 | 155 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
1693 | 155 | offset++; |
1694 | 155 | length--; |
1695 | | |
1696 | 155 | if (parameter_length > 0) { |
1697 | 37 | if (parameter_length <= 8) { |
1698 | 19 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_uint, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1699 | 19 | } else { |
1700 | 18 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_pause_restart_rtp_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1701 | 18 | } |
1702 | | |
1703 | 37 | offset += parameter_length; |
1704 | 37 | length -= parameter_length; |
1705 | 37 | } |
1706 | 155 | } |
1707 | 7 | break; |
1708 | 17 | case 0x0E: /* START_RECORD_RTP */ |
1709 | 17 | case 0x0F: /* STOP RECORD RTP */ |
1710 | 17 | { |
1711 | 17 | address remote_rtp_addr = ADDRESS_INIT_NONE; |
1712 | 17 | uint32_t remote_rtp_port_in = 0; |
1713 | 17 | uint32_t remote_rtp_port_out = 0; |
1714 | | |
1715 | 556 | while (length > 0) { |
1716 | | |
1717 | 554 | parameter_id = tvb_get_uint8(tvb, offset); |
1718 | 554 | parameter_length = tvb_get_uint8(tvb, offset + 1); |
1719 | | |
1720 | 554 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter, tvb, offset, |
1721 | 554 | parameter_length + 2, parameter_id, "%s", |
1722 | 554 | val_to_str_const(parameter_id, ip_device_routing_cmd_record_rtp_vals, "Unknown")); |
1723 | 554 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
1724 | | |
1725 | 554 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1726 | 554 | offset++; |
1727 | 554 | length--; |
1728 | | |
1729 | 554 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
1730 | 554 | offset++; |
1731 | 554 | length--; |
1732 | | |
1733 | 554 | if (parameter_length > 0) { |
1734 | 201 | switch (parameter_id) { |
1735 | 65 | case 0x01: /* Remote IP Address */ |
1736 | 65 | case 0x04: /* Remote IP Address Out */ |
1737 | 65 | if (parameter_id == 0x01) |
1738 | 65 | set_address_tvb(&remote_rtp_addr, AT_IPv4, 4, tvb, offset); |
1739 | 65 | 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); |
1740 | 65 | break; |
1741 | 28 | case 0x00: /* Recorder Index */ |
1742 | 54 | case 0x02: /* Remote UDP Port In */ |
1743 | 56 | case 0x03: /* Remote UDP Port Out */ |
1744 | 59 | case 0x05: /* Local UDP Port In */ |
1745 | 74 | case 0x06: /* Local UDP Port Out */ |
1746 | 75 | case 0x07: /* Type Of Service */ |
1747 | 76 | case 0x08: /* Master Key For SRTP Session */ |
1748 | 76 | case 0x09: /* Master Salt Key For SRTP Session */ |
1749 | 76 | case 0x10: /* Integrity checking enabled for this communication */ |
1750 | 76 | case 0x11: /* Integrity method of Thales component */ |
1751 | 76 | case 0x30: /* MD5 Authentication */ |
1752 | 136 | default: |
1753 | 136 | if (parameter_length <= 8) { |
1754 | 60 | if (parameter_id == 0x02) |
1755 | 24 | remote_rtp_port_in = tvb_get_ntohs(tvb, offset); |
1756 | 60 | if (parameter_id == 0x03) |
1757 | 1 | remote_rtp_port_out = tvb_get_ntohs(tvb, offset); |
1758 | 60 | 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); |
1759 | 76 | } else { |
1760 | 76 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1761 | 76 | } |
1762 | 136 | break; |
1763 | 201 | } |
1764 | | |
1765 | 186 | offset += parameter_length; |
1766 | 186 | length -= parameter_length; |
1767 | 186 | } |
1768 | 554 | } |
1769 | | |
1770 | 2 | if (setup_conversations_enabled) |
1771 | 0 | { |
1772 | 0 | if (remote_rtp_addr.data != NULL) |
1773 | 0 | { |
1774 | 0 | if (remote_rtp_port_in != 0) |
1775 | 0 | { |
1776 | 0 | rtp_add_address(pinfo, PT_UDP, &remote_rtp_addr, remote_rtp_port_in, 0, "UA3G", pinfo->num, 0, NULL); |
1777 | 0 | rtcp_add_address(pinfo, &remote_rtp_addr, remote_rtp_port_in+1, 0, "UA3G", pinfo->num); |
1778 | 0 | } |
1779 | 0 | if (remote_rtp_port_out != 0) |
1780 | 0 | { |
1781 | 0 | rtp_add_address(pinfo, PT_UDP, &remote_rtp_addr, remote_rtp_port_out, 0, "UA3G", pinfo->num, 0, NULL); |
1782 | 0 | rtcp_add_address(pinfo, &remote_rtp_addr, remote_rtp_port_out+1, 0, "UA3G", pinfo->num); |
1783 | 0 | } |
1784 | 0 | } |
1785 | 0 | } |
1786 | | |
1787 | 2 | break; |
1788 | 17 | } |
1789 | 0 | case 0x10: /* Set SIP Parameters */ |
1790 | 0 | break; |
1791 | 21 | case 0x11: /* Free Seating */ |
1792 | 353 | while (length > 0) { |
1793 | 351 | parameter_id = tvb_get_uint8(tvb, offset); |
1794 | 351 | parameter_length = tvb_get_uint8(tvb, offset + 1); |
1795 | | |
1796 | 351 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip_device_routing_freeseating_parameter, tvb, offset, |
1797 | 351 | parameter_length + 2, parameter_id, "%s", |
1798 | 351 | val_to_str_const(parameter_id, ip_device_routing_cmd_freeseating_vals, "Unknown")); |
1799 | 351 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
1800 | | |
1801 | 351 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_freeseating_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1802 | 351 | offset++; |
1803 | 351 | length--; |
1804 | | |
1805 | 351 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_freeseating_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
1806 | 351 | offset++; |
1807 | 351 | length--; |
1808 | | |
1809 | 351 | if (parameter_length > 0) { |
1810 | 210 | switch (parameter_id) { |
1811 | 24 | case 0x00: /* Pseudo Mac Address */ |
1812 | 24 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_freeseating_parameter_mac, tvb, offset, 6, ENC_NA); |
1813 | 24 | break; |
1814 | 28 | case 0x01: /* Maincpu1 */ |
1815 | 66 | case 0x02: /* Maincpu2 */ |
1816 | 66 | { |
1817 | 66 | int hf = -1; |
1818 | | |
1819 | 66 | if (parameter_length == FT_IPv4_LEN) |
1820 | 0 | hf = hf_ua3g_ip_device_routing_freeseating_parameter_ip; |
1821 | 66 | else |
1822 | 66 | if (parameter_length == FT_IPv6_LEN) |
1823 | 0 | hf = hf_ua3g_ip_device_routing_freeseating_parameter_ipv6; |
1824 | | |
1825 | 66 | if (hf != -1) |
1826 | 0 | proto_tree_add_item(ua3g_param_tree, hf, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1827 | 66 | else |
1828 | 66 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_freeseating_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1829 | 66 | break; |
1830 | 28 | } |
1831 | 26 | case 0x03: /* Restart application */ |
1832 | 26 | { |
1833 | 26 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_freeseating_parameter_do_reset, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1834 | 26 | break; |
1835 | 28 | } |
1836 | 94 | default: |
1837 | 94 | if (parameter_length <= 8) { |
1838 | 18 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_freeseating_parameter_uint, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1839 | 76 | } else { |
1840 | 76 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_freeseating_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1841 | 76 | } |
1842 | 94 | break; |
1843 | 210 | } |
1844 | 191 | offset += parameter_length; |
1845 | 191 | length -= parameter_length; |
1846 | 191 | } |
1847 | 351 | } |
1848 | 2 | break; |
1849 | 18 | case 0x14: /* Set Appl Param */ |
1850 | 329 | while (length > 0) { |
1851 | 327 | parameter_id = tvb_get_uint8(tvb, offset); |
1852 | 327 | parameter_length = tvb_get_uint8(tvb, offset + 1); |
1853 | | |
1854 | 327 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ip_device_routing_appl_parameter, tvb, offset, |
1855 | 327 | parameter_length + 2, parameter_id, "%s", val_to_str_const(parameter_id, ip_device_routing_cmd_appl_vals, "Unknown")); |
1856 | 327 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
1857 | | |
1858 | 327 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_appl_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
1859 | 327 | offset++; |
1860 | 327 | length--; |
1861 | | |
1862 | 327 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_appl_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
1863 | 327 | offset++; |
1864 | 327 | length--; |
1865 | | |
1866 | 327 | if (parameter_length > 0) { |
1867 | 153 | switch (parameter_id) { |
1868 | 25 | case 0x00: /* Identifier */ |
1869 | 25 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_appl_parameter_id, tvb, offset, parameter_length, ENC_ASCII); |
1870 | 25 | break; |
1871 | 4 | case 0x01: /* Enable */ |
1872 | 4 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_appl_parameter_enable, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1873 | 4 | break; |
1874 | 38 | case 0x02: /* URL */ |
1875 | 38 | { |
1876 | 38 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_appl_parameter_url, tvb, offset, parameter_length, ENC_ASCII); |
1877 | 38 | break; |
1878 | 0 | } |
1879 | 86 | default: |
1880 | 86 | if (parameter_length <= 8) { |
1881 | 14 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_appl_parameter_uint, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
1882 | 72 | } else { |
1883 | 72 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ip_device_routing_appl_parameter_value, tvb, offset, parameter_length, ENC_NA); |
1884 | 72 | } |
1885 | 86 | break; |
1886 | 153 | } |
1887 | 137 | offset += parameter_length; |
1888 | 137 | length -= parameter_length; |
1889 | 137 | } |
1890 | 327 | } |
1891 | 2 | break; |
1892 | 2 | case 0x06: /* STOP TONE */ |
1893 | 1 | default: |
1894 | 1 | { |
1895 | 1 | break; |
1896 | 0 | } |
1897 | 197 | } |
1898 | 197 | } |
1899 | | |
1900 | | |
1901 | | /*----------------------------------------------------------------------------- |
1902 | | DEBUG IN LINE - 18h (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM) |
1903 | | ---------------------------------------------------------------------------*/ |
1904 | | static void |
1905 | | decode_debug_in_line(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, |
1906 | | unsigned offset, unsigned length) |
1907 | 2 | { |
1908 | 2 | proto_tree_add_item(tree, hf_ua3g_debug_in_line, tvb, offset, length, ENC_ASCII); |
1909 | 2 | } |
1910 | | |
1911 | | |
1912 | | /*----------------------------------------------------------------------------- |
1913 | | LED COMMAND - 21h (MESSAGE FROM THE SYSTEM) |
1914 | | ---------------------------------------------------------------------------*/ |
1915 | | static const value_string str_command_led[] = { |
1916 | | {0x00, "Led Off"}, |
1917 | | {0x01, "Led On"}, |
1918 | | {0x02, "Red Led Fast Flash"}, |
1919 | | {0x03, "Red Led Slow Flash"}, |
1920 | | {0x04, "Green Led On"}, |
1921 | | {0x05, "Green Led Fast Flash"}, |
1922 | | {0x06, "Green Led Slow Flash"}, |
1923 | | {0x07, "All Led Off"}, |
1924 | | {0, NULL} |
1925 | | }; |
1926 | | |
1927 | | static void |
1928 | | decode_led_command(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
1929 | | unsigned offset) |
1930 | 1 | { |
1931 | 1 | int command; |
1932 | | |
1933 | 1 | command = tvb_get_uint8(tvb, offset); |
1934 | | |
1935 | | /* add text to the frame "INFO" column */ |
1936 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(command, str_command_led, "Unknown")); |
1937 | | |
1938 | 1 | if (!tree) |
1939 | 0 | return; |
1940 | | |
1941 | 1 | proto_tree_add_item(tree, hf_ua3g_command_led, tvb, offset, 1, ENC_BIG_ENDIAN); |
1942 | | |
1943 | 1 | if ((command >= 0) && (command < 7)) { |
1944 | 1 | proto_tree_add_item(tree, hf_ua3g_command_led_number, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
1945 | 1 | } |
1946 | 1 | } |
1947 | | |
1948 | | |
1949 | | /*----------------------------------------------------------------------------- |
1950 | | LCD LINE 1 COMMANDS - 27h (MESSAGE FROM THE SYSTEM) |
1951 | | LCD LINE 2 COMMANDS - 28h (MESSAGE FROM THE SYSTEM) |
1952 | | ---------------------------------------------------------------------------*/ |
1953 | | static const value_string str_command_lcd_line[] = { |
1954 | | {0, "Clear Line & Write From Column"}, |
1955 | | {1, "Write From Column"}, |
1956 | | {2, "Append To Current Line"}, |
1957 | | {0, NULL} |
1958 | | }; |
1959 | | |
1960 | | static const value_string str_call_timer_ctrl[] = { |
1961 | | {0x00, "Call Timer Status Not Changed"}, |
1962 | | {0x01, "Stop Call Timer"}, |
1963 | | {0x02, "Start Call Timer From Current Value"}, |
1964 | | {0x03, "Initialize And Call Timer"}, |
1965 | | {0, NULL} |
1966 | | }; |
1967 | | |
1968 | | static void |
1969 | | decode_lcd_line_cmd(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
1970 | | unsigned offset, unsigned length) |
1971 | 8 | { |
1972 | 8 | uint8_t command, column_n; |
1973 | 8 | const char* command_str; |
1974 | 8 | proto_tree *ua3g_body_tree = tree, *ua3g_param_tree, *ua3g_option_tree; |
1975 | 8 | proto_item *ua3g_option_item; |
1976 | 8 | wmem_strbuf_t *strbuf; |
1977 | | |
1978 | 8 | command = tvb_get_uint8(tvb, offset) & 0x03; |
1979 | 8 | column_n = tvb_get_uint8(tvb, offset + 1); |
1980 | 8 | command_str = val_to_str_const(command, str_command_lcd_line, "Unknown"); |
1981 | | |
1982 | | /* add text to the frame "INFO" column */ |
1983 | 8 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s %d", command_str, column_n); |
1984 | | |
1985 | 8 | if (!ua3g_body_tree) |
1986 | 0 | return; |
1987 | | |
1988 | 8 | strbuf = wmem_strbuf_create(pinfo->pool); |
1989 | | |
1990 | 8 | wmem_strbuf_append_printf(strbuf, "\"%s\"", tvb_format_text(pinfo->pool, tvb, offset + 2, length - 2)); |
1991 | | |
1992 | 8 | ua3g_param_tree = proto_tree_add_subtree_format(ua3g_body_tree, tvb, offset, |
1993 | 8 | length, ett_ua3g_param, NULL, "%s %d: %s", |
1994 | 8 | command_str, column_n, wmem_strbuf_get_str(strbuf)); |
1995 | | |
1996 | 8 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_command_lcd_line, tvb, offset, 1, ENC_BIG_ENDIAN); |
1997 | 8 | ua3g_option_item = proto_tree_add_item(ua3g_param_tree, hf_ua3g_lcd_line_cmd_lcd_options, tvb, offset, 1, ENC_BIG_ENDIAN); |
1998 | 8 | ua3g_option_tree = proto_item_add_subtree(ua3g_option_item, ett_ua3g_option); |
1999 | | |
2000 | 8 | proto_tree_add_item(ua3g_option_tree, hf_ua3g_lcd_line_cmd_lcd_options_call_timer, tvb, offset, 1, ENC_BIG_ENDIAN); |
2001 | 8 | proto_tree_add_item(ua3g_option_tree, hf_ua3g_lcd_line_cmd_lcd_options_blink, tvb, offset, 1, ENC_NA); |
2002 | 8 | proto_tree_add_item(ua3g_option_tree, hf_ua3g_lcd_line_cmd_lcd_options_call_timer_control, tvb, offset, 1, ENC_NA); |
2003 | 8 | proto_tree_add_item(ua3g_option_tree, hf_ua3g_lcd_line_cmd_lcd_options_call_timer_display, tvb, offset, 1, ENC_NA); |
2004 | 8 | proto_tree_add_item(ua3g_option_tree, hf_ua3g_lcd_line_cmd_lcd_options_time_of_day_display, tvb, offset, 1, ENC_NA); |
2005 | 8 | proto_tree_add_item(ua3g_option_tree, hf_ua3g_lcd_line_cmd_lcd_options_suspend_display_refresh, tvb, offset, 1, ENC_NA); |
2006 | | |
2007 | 8 | offset++; |
2008 | 8 | length--; |
2009 | | |
2010 | 8 | if (command != 3) |
2011 | 5 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_lcd_line_cmd_starting_column, tvb, offset, 1, ENC_BIG_ENDIAN); |
2012 | 3 | else |
2013 | 3 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_lcd_line_cmd_unused, tvb, offset, 1, ENC_NA); |
2014 | | |
2015 | 8 | offset++; |
2016 | 8 | length--; |
2017 | 8 | proto_tree_add_string(ua3g_param_tree, hf_ua3g_lcd_line_cmd_ascii_char, tvb, offset, length, wmem_strbuf_get_str(strbuf)); |
2018 | 8 | } |
2019 | | |
2020 | | |
2021 | | /*----------------------------------------------------------------------------- |
2022 | | MAIN VOICE MODE - 29h (MESSAGE FROM THE SYSTEM) |
2023 | | ---------------------------------------------------------------------------*/ |
2024 | | static const value_string str_main_voice_mode[] = { |
2025 | | {0x00, "Idle"}, |
2026 | | {0x01, "Handset"}, |
2027 | | {0x02, "Group Listening"}, |
2028 | | {0x03, "On Hook Dial"}, |
2029 | | {0x04, "Handsfree"}, |
2030 | | {0x05, "Announce Loudspeaker"}, |
2031 | | {0x06, "Ringing"}, |
2032 | | {0x10, "Idle"}, |
2033 | | {0x11, "Handset"}, |
2034 | | {0x12, "Headset"}, |
2035 | | {0x13, "Handsfree"}, |
2036 | | {0, NULL} |
2037 | | }; |
2038 | | |
2039 | | static const value_string str_cadence[] = { |
2040 | | {0x00, "Standard Ringing"}, |
2041 | | {0x01, "Double Burst"}, |
2042 | | {0x02, "Triple Burst"}, |
2043 | | {0x03, "Continuous Ringing"}, |
2044 | | {0x04, "Priority Attendant Ringing"}, |
2045 | | {0x05, "Regular Attendant Ringing"}, |
2046 | | {0x06, "Programmable Cadence"}, |
2047 | | {0x07, "Programmable Cadence"}, |
2048 | | {0, NULL} |
2049 | | }; |
2050 | | |
2051 | | static void |
2052 | | decode_main_voice_mode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
2053 | | unsigned offset, unsigned length) |
2054 | 1 | { |
2055 | 1 | uint8_t mode; |
2056 | 1 | proto_tree *ua3g_body_tree = tree; |
2057 | | |
2058 | 1 | mode = tvb_get_uint8(tvb, offset); |
2059 | | |
2060 | | /* add text to the frame "INFO" column */ |
2061 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(mode, str_main_voice_mode, "Unknown")); |
2062 | | |
2063 | 1 | if (!ua3g_body_tree) |
2064 | 0 | return; |
2065 | | |
2066 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_main_voice_mode, tvb, offset, 1, ENC_BIG_ENDIAN); |
2067 | 1 | offset++; |
2068 | 1 | length--; |
2069 | | |
2070 | 1 | switch (mode) { |
2071 | 0 | case 0x06: /* Ringing */ |
2072 | 0 | { |
2073 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_main_voice_mode_tune, tvb, offset, 1, ENC_BIG_ENDIAN); |
2074 | 0 | offset++; |
2075 | 0 | length--; |
2076 | |
|
2077 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_main_voice_mode_cadence, tvb, offset, 1, ENC_BIG_ENDIAN); |
2078 | 0 | offset++; |
2079 | 0 | length--; |
2080 | 0 | } |
2081 | | /* FALLTHROUGH */ |
2082 | 0 | case 0x02: /* Group Listening */ |
2083 | 0 | case 0x03: /* On Hook Dial */ |
2084 | 0 | case 0x04: /* Handsfree */ |
2085 | 0 | case 0x05: /* Announce Loudspeaker */ |
2086 | 0 | { |
2087 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_main_voice_mode_speaker_volume, tvb, offset, 1, ENC_BIG_ENDIAN); |
2088 | 0 | offset++; |
2089 | 0 | length--; |
2090 | |
|
2091 | 0 | if (length > 0) { |
2092 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_main_voice_mode_microphone_volume, tvb, offset, 1, ENC_BIG_ENDIAN); |
2093 | 0 | } |
2094 | 0 | break; |
2095 | 0 | } |
2096 | 0 | case 0x11: /* Handset */ |
2097 | 0 | { |
2098 | 0 | signed char level; |
2099 | |
|
2100 | 0 | level = (signed char)(tvb_get_uint8(tvb, offset)) / 2; |
2101 | 0 | proto_tree_add_int(ua3g_body_tree, hf_ua3g_main_voice_mode_handset_level, tvb, offset, 1, level); |
2102 | |
|
2103 | 0 | level = (signed char)(tvb_get_uint8(tvb, offset+1)) / 2; |
2104 | 0 | proto_tree_add_int(ua3g_body_tree, hf_ua3g_main_voice_mode_sending_level, tvb, offset+1, 1, level); |
2105 | 0 | break; |
2106 | 0 | } |
2107 | 0 | case 0x12: /* Headset */ |
2108 | 0 | { |
2109 | 0 | signed char level; |
2110 | |
|
2111 | 0 | level = (signed char)(tvb_get_uint8(tvb, offset)) / 2; |
2112 | 0 | proto_tree_add_int(ua3g_body_tree, hf_ua3g_main_voice_mode_headset_level, tvb, offset, 1, level); |
2113 | |
|
2114 | 0 | level = (signed char)(tvb_get_uint8(tvb, offset+1)) / 2; |
2115 | 0 | proto_tree_add_int(ua3g_body_tree, hf_ua3g_main_voice_mode_sending_level, tvb, offset+1, 1, level); |
2116 | 0 | break; |
2117 | 0 | } |
2118 | 0 | case 0x13: /* Handsfree */ |
2119 | 0 | { |
2120 | 0 | signed char level; |
2121 | |
|
2122 | 0 | level = (signed char)(tvb_get_uint8(tvb, offset)) / 2; |
2123 | 0 | proto_tree_add_int(ua3g_body_tree, hf_ua3g_main_voice_mode_handsfree_level, tvb, offset, 1, level); |
2124 | |
|
2125 | 0 | level = (signed char)(tvb_get_uint8(tvb, offset+1)) / 2; |
2126 | 0 | proto_tree_add_int(ua3g_body_tree, hf_ua3g_main_voice_mode_sending_level, tvb, offset+1, 1, level); |
2127 | 0 | break; |
2128 | 0 | } |
2129 | 0 | case 0x00: /* Idle */ |
2130 | 0 | case 0x01: /* Handset */ |
2131 | 0 | case 0x10: /* Idle */ |
2132 | 1 | default: |
2133 | 1 | { |
2134 | 1 | break; |
2135 | 0 | } |
2136 | 1 | } |
2137 | 1 | } |
2138 | | |
2139 | | |
2140 | | /*----------------------------------------------------------------------------- |
2141 | | SUBDEVICE METASTATE - 2Ch (MESSAGE FROM THE SYSTEM) |
2142 | | ---------------------------------------------------------------------------*/ |
2143 | | static const value_string str_new_metastate[] = { |
2144 | | {0x00, "Disable"}, |
2145 | | {0x01, "Active"}, |
2146 | | {0x02, "Wake Up"}, |
2147 | | {0, NULL} |
2148 | | }; |
2149 | | |
2150 | | static void |
2151 | | decode_subdevice_metastate(proto_tree *tree, tvbuff_t *tvb, |
2152 | | packet_info *pinfo _U_, unsigned offset) |
2153 | 1 | { |
2154 | 1 | proto_tree_add_item(tree, hf_ua3g_subdevice_metastate_subchannel_address, tvb, offset, 1, ENC_BIG_ENDIAN); |
2155 | 1 | proto_tree_add_item(tree, hf_ua3g_subdevice_metastate_new_metastate, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2156 | 1 | } |
2157 | | |
2158 | | |
2159 | | /*----------------------------------------------------------------------------- |
2160 | | Download DTMF & CLOCK FORMAT - 30h (MESSAGE FROM THE SYSTEM) |
2161 | | ---------------------------------------------------------------------------*/ |
2162 | | static const value_string str_clock_format[] = { |
2163 | | {0, "Europe"}, |
2164 | | {1, "US"}, |
2165 | | {0, NULL} |
2166 | | }; |
2167 | | |
2168 | | static void |
2169 | | decode_dwl_dtmf_clck_format(proto_tree *tree, tvbuff_t *tvb, |
2170 | | packet_info *pinfo _U_, unsigned offset, unsigned length) |
2171 | 5 | { |
2172 | 5 | proto_tree_add_item(tree, hf_ua3g_dwl_dtmf_clck_format_minimum_on_time, tvb, offset, 1, ENC_BIG_ENDIAN); |
2173 | 5 | proto_tree_add_item(tree, hf_ua3g_dwl_dtmf_clck_format_inter_digit_pause_time, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2174 | 5 | proto_tree_add_item(tree, hf_ua3g_dwl_dtmf_clck_format_clock_time_format, tvb, offset+2, 1, ENC_BIG_ENDIAN); |
2175 | | |
2176 | 5 | if (length > 2) |
2177 | 4 | proto_tree_add_item(tree, hf_ua3g_dwl_dtmf_clck_format_dtmf_country_adaptation, tvb, offset+3, 1, ENC_BIG_ENDIAN); |
2178 | 5 | } |
2179 | | |
2180 | | |
2181 | | /*----------------------------------------------------------------------------- |
2182 | | SET CLOCK - 31h (MESSAGE FROM THE SYSTEM) |
2183 | | ---------------------------------------------------------------------------*/ |
2184 | | static const value_string str_command_set_clck[] = { |
2185 | | {0x00, "Set Current Time/Call Timer"}, |
2186 | | {0x01, "Set Current Time"}, |
2187 | | {0x02, "Set Call Timer"}, |
2188 | | {0, NULL} |
2189 | | }; |
2190 | | |
2191 | | static void |
2192 | | decode_set_clck(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
2193 | | unsigned offset, unsigned length) |
2194 | 6 | { |
2195 | 6 | uint8_t command; |
2196 | 6 | int hour, minute, second, call_timer; |
2197 | | |
2198 | 6 | command = tvb_get_uint8(tvb, offset); |
2199 | | |
2200 | | /* add text to the frame "INFO" column */ |
2201 | 6 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(command, str_command_set_clck, "Unknown")); |
2202 | | |
2203 | 6 | proto_tree_add_item(tree, hf_ua3g_command_set_clck, tvb, offset, 1, ENC_BIG_ENDIAN); |
2204 | 6 | offset++; |
2205 | 6 | length--; |
2206 | 6 | call_timer = 0; |
2207 | | |
2208 | 6 | switch (command) { |
2209 | 3 | case 0x02: /* Timer Form */ |
2210 | 3 | { |
2211 | 3 | call_timer = 1; |
2212 | 3 | } |
2213 | | /* FALLTHROUGH */ |
2214 | 5 | case 0x00: /* Set Current Time/Call Timer */ |
2215 | 5 | case 0x01: /* Set Current Time */ |
2216 | 5 | { |
2217 | 98 | while (length > 0) { |
2218 | 93 | hour = tvb_get_uint8(tvb, offset); |
2219 | 93 | minute = tvb_get_uint8(tvb, offset + 1); |
2220 | 93 | second = tvb_get_uint8(tvb, offset + 2); |
2221 | | |
2222 | 93 | proto_tree_add_uint_format_value(tree, (call_timer == 1) ? hf_ua3g_call_timer : hf_ua3g_current_time, tvb, offset, 3, |
2223 | 93 | tvb_get_ntoh24(tvb, offset), "%d:%d:%d", hour, minute, second); |
2224 | 93 | offset += 3; |
2225 | 93 | length -= 3; |
2226 | | |
2227 | 93 | call_timer = 1; |
2228 | 93 | } |
2229 | 5 | } |
2230 | 6 | default: |
2231 | 6 | { |
2232 | 6 | break; |
2233 | 5 | } |
2234 | 6 | } |
2235 | | |
2236 | 6 | } |
2237 | | |
2238 | | |
2239 | | /*----------------------------------------------------------------------------- |
2240 | | VOICE CHANNEL - 32h - (MESSAGE FROM THE SYSTEM) |
2241 | | ---------------------------------------------------------------------------*/ |
2242 | | static const value_string str_voice_channel[] = { |
2243 | | {0x00, "No"}, |
2244 | | {0x01, "B1"}, |
2245 | | {0x02, "B2"}, |
2246 | | {0x03, "B3"}, |
2247 | | {0, NULL} |
2248 | | }; |
2249 | | |
2250 | | static const true_false_string tfs_voice_channel_channel_mode = { "Write 00 to Voice Channel", "Normal Voice Channel Mode" }; |
2251 | | static const true_false_string tfs_voice_channel_codec = { "Write Quiet To Codec", "Normal Codec Operation" }; |
2252 | | static const true_false_string tfs_voice_channel_voice_channel = { "Use B3 As Voice Channel", "Use B1 As Voice Channel" }; |
2253 | | |
2254 | | static void |
2255 | | decode_voice_channel(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, |
2256 | | unsigned offset, unsigned length) |
2257 | 0 | { |
2258 | 0 | if (length == 1) { |
2259 | 0 | proto_tree_add_item(tree, hf_ua3g_voice_channel_channel_mode, tvb, offset, 1, ENC_NA); |
2260 | 0 | proto_tree_add_item(tree, hf_ua3g_voice_channel_codec, tvb, offset, 1, ENC_NA); |
2261 | 0 | proto_tree_add_item(tree, hf_ua3g_voice_channel_voice_channel, tvb, offset, 1, ENC_NA); |
2262 | 0 | } else if (length == 2) { |
2263 | 0 | proto_tree_add_item(tree, hf_ua3g_voice_channel_main_voice, tvb, offset, 1, ENC_BIG_ENDIAN); |
2264 | 0 | proto_tree_add_item(tree, hf_ua3g_voice_channel_announce, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2265 | 0 | } else if (length == 4) { |
2266 | 0 | proto_tree_add_item(tree, hf_ua3g_voice_channel_b_general, tvb, offset, 1, ENC_BIG_ENDIAN); |
2267 | 0 | proto_tree_add_item(tree, hf_ua3g_voice_channel_b_loud_speaker, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2268 | 0 | proto_tree_add_item(tree, hf_ua3g_voice_channel_b_ear_piece, tvb, offset+2, 1, ENC_BIG_ENDIAN); |
2269 | 0 | proto_tree_add_item(tree, hf_ua3g_voice_channel_b_microphones, tvb, offset+3, 1, ENC_BIG_ENDIAN); |
2270 | 0 | } |
2271 | 0 | } |
2272 | | |
2273 | | |
2274 | | /*----------------------------------------------------------------------------- |
2275 | | EXTERNAL RINGING - 33h (MESSAGE FROM THE SYSTEM) |
2276 | | ---------------------------------------------------------------------------*/ |
2277 | | static const value_string str_ext_ring_cmd[] = { |
2278 | | {0x00, "Turn Off"}, |
2279 | | {0x01, "Turn On"}, |
2280 | | {0x02, "Follow The Normal Ringing"}, |
2281 | | {0, NULL} |
2282 | | }; |
2283 | | |
2284 | | static void |
2285 | | decode_external_ringing(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
2286 | | unsigned offset) |
2287 | 1 | { |
2288 | 1 | uint8_t command; |
2289 | | |
2290 | 1 | command = tvb_get_uint8(tvb, offset); |
2291 | | |
2292 | | /* add text to the frame "INFO" column */ |
2293 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(command, str_ext_ring_cmd, "Unknown")); |
2294 | | |
2295 | 1 | proto_tree_add_item(tree, hf_ua3g_external_ringing_command, tvb, offset, 1, ENC_BIG_ENDIAN); |
2296 | 1 | } |
2297 | | |
2298 | | |
2299 | | /*----------------------------------------------------------------------------- |
2300 | | LCD CURSOR - 35h - (MESSAGE FROM THE SYSTEM) |
2301 | | ---------------------------------------------------------------------------*/ |
2302 | | static void |
2303 | | decode_lcd_cursor(proto_tree *tree _U_, tvbuff_t *tvb, packet_info *pinfo, unsigned offset) |
2304 | 1 | { |
2305 | 1 | const char* str_on_off_val = STR_ON_OFF(tvb_get_uint8(tvb, offset + 1) & 0x02); |
2306 | | |
2307 | | /* add text to the frame "INFO" column */ |
2308 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", str_on_off_val); |
2309 | | |
2310 | 1 | proto_tree_add_item(tree, hf_ua3g_lcd_cursor_line_number, tvb, offset, 1, ENC_BIG_ENDIAN); |
2311 | 1 | proto_tree_add_item(tree, hf_ua3g_lcd_cursor, tvb, offset+1, 1, ENC_NA); |
2312 | 1 | } |
2313 | | |
2314 | | |
2315 | | /*----------------------------------------------------------------------------- |
2316 | | DOWNLOAD SPECIAL CHARACTER - 36h - (MESSAGE FROM THE SYSTEM) |
2317 | | ---------------------------------------------------------------------------*/ |
2318 | | static void |
2319 | | decode_dwl_special_char(proto_tree *tree, tvbuff_t *tvb, |
2320 | | packet_info *pinfo _U_, unsigned offset, unsigned length) |
2321 | 5 | { |
2322 | 5 | int i; |
2323 | | |
2324 | 47 | while (length > 0) { |
2325 | 42 | proto_tree_add_item(tree, hf_ua3g_dwl_special_char_character_number, tvb, offset, 1, ENC_BIG_ENDIAN); |
2326 | 42 | offset++; |
2327 | 42 | length--; |
2328 | 359 | for (i = 1; i <= 8; i++) { |
2329 | 317 | proto_tree_add_item(tree, hf_ua3g_dwl_special_char_byte, tvb, offset, 1, ENC_BIG_ENDIAN); |
2330 | 317 | offset++; |
2331 | 317 | length--; |
2332 | 317 | } |
2333 | 42 | } |
2334 | 5 | } |
2335 | | |
2336 | | |
2337 | | /*----------------------------------------------------------------------------- |
2338 | | SET CLOCK/TIMER POSITION - 38h - (MESSAGE FROM THE SYSTEM) |
2339 | | ---------------------------------------------------------------------------*/ |
2340 | | static void |
2341 | | decode_set_clck_timer_pos(proto_tree *tree, tvbuff_t *tvb, |
2342 | | packet_info *pinfo _U_, unsigned offset) |
2343 | 1 | { |
2344 | 1 | if (!tree) |
2345 | 0 | return; |
2346 | | |
2347 | 1 | proto_tree_add_item(tree, hf_ua3g_set_clck_timer_pos_clock_line_number, tvb, offset, 1, ENC_BIG_ENDIAN); |
2348 | 1 | proto_tree_add_item(tree, hf_ua3g_set_clck_timer_pos_clock_column_number, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2349 | 1 | proto_tree_add_item(tree, hf_ua3g_set_clck_timer_pos_call_timer_line_number, tvb, offset+2, 1, ENC_BIG_ENDIAN); |
2350 | 1 | proto_tree_add_item(tree, hf_ua3g_set_clck_timer_pos_call_timer_column_number, tvb, offset+3, 1, ENC_BIG_ENDIAN); |
2351 | 1 | } |
2352 | | |
2353 | | |
2354 | | /*----------------------------------------------------------------------------- |
2355 | | SET LCD CONTRAST - 39h - (MESSAGE FROM THE SYSTEM) |
2356 | | ---------------------------------------------------------------------------*/ |
2357 | | static const value_string str_driver_number[] = { |
2358 | | {0x00, "Display"}, |
2359 | | {0x01, "Icon"}, |
2360 | | {0, NULL} |
2361 | | }; |
2362 | | |
2363 | | static void |
2364 | | decode_set_lcd_contrast(proto_tree *tree, tvbuff_t *tvb, |
2365 | | packet_info *pinfo _U_, unsigned offset) |
2366 | 1 | { |
2367 | 1 | proto_tree_add_item(tree, hf_ua3g_set_lcd_contrast_driver_number, tvb, offset, 1, ENC_BIG_ENDIAN); |
2368 | 1 | proto_tree_add_item(tree, hf_ua3g_set_lcd_contrast_contrast_value, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2369 | 1 | } |
2370 | | |
2371 | | |
2372 | | /*----------------------------------------------------------------------------- |
2373 | | BEEP - 3Ch (MESSAGE FROM THE SYSTEM) |
2374 | | ---------------------------------------------------------------------------*/ |
2375 | | static const value_string str_command_beep[] = { |
2376 | | {0x01, "Beep Once"}, |
2377 | | {0x02, "Beep Start"}, |
2378 | | {0x03, "Stop Beep"}, |
2379 | | {0x04, "Start Beep"}, |
2380 | | {0x05, "Define Beep"}, |
2381 | | {0, NULL} |
2382 | | }; |
2383 | | |
2384 | | static const value_string str_beep_start_destination[] = { |
2385 | | {0x01, "Ear-Piece"}, |
2386 | | {0x02, "Loudspeaker"}, |
2387 | | {0x03, "Ear-Piece and Loudspeaker"}, |
2388 | | {0, NULL} |
2389 | | }; |
2390 | | |
2391 | | static const value_string str_beep_freq_sample_nb[] = { |
2392 | | {0x00, "Frequency"}, |
2393 | | {0xFF, "Audio Sample Number"}, |
2394 | | {0, NULL} |
2395 | | }; |
2396 | | static const value_string str_beep_duration[] = { |
2397 | | {0x00, "Duration "}, |
2398 | | {0xFF, "Duration (Ignored)"}, |
2399 | | {0, NULL} |
2400 | | }; |
2401 | | static const value_string str_beep_terminator[] = { |
2402 | | {0xFD, "Stop"}, |
2403 | | {0xFE, "Loop"}, |
2404 | | {0xFF, "Infinite"}, |
2405 | | {0, NULL} |
2406 | | }; |
2407 | | |
2408 | | static void |
2409 | | decode_beep(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
2410 | | unsigned offset, unsigned length) |
2411 | 14 | { |
2412 | 14 | if (length > 0) { /* All cases except classical beep */ |
2413 | 14 | uint8_t command; |
2414 | 14 | proto_tree *ua3g_body_tree = tree; |
2415 | | |
2416 | 14 | command = tvb_get_uint8(tvb, offset); |
2417 | | |
2418 | | /* add text to the frame "INFO" column */ |
2419 | 14 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(command, str_command_beep, "Unknown")); |
2420 | | |
2421 | 14 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_command_beep, tvb, offset, 1, ENC_BIG_ENDIAN); |
2422 | 14 | offset++; |
2423 | 14 | length--; |
2424 | | |
2425 | 14 | switch (command) { |
2426 | 1 | case 0x01: /* Beep Once */ |
2427 | 6 | case 0x02: /* Beep Start */ |
2428 | 6 | { |
2429 | 6 | int i = 0; |
2430 | | |
2431 | 6 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_beep_destination, tvb, offset, 1, ENC_BIG_ENDIAN); |
2432 | 6 | offset++; |
2433 | 6 | length--; |
2434 | | |
2435 | 1.37k | while (length > 0) { |
2436 | 1.36k | uint8_t val; |
2437 | | |
2438 | 1.36k | i++; |
2439 | 1.36k | val = (tvb_get_uint8(tvb, offset) & 0x7F) * 10; |
2440 | 1.36k | proto_tree_add_item(ua3g_body_tree, hf_ua3g_beep_on_off, tvb, offset, 1, ENC_NA); |
2441 | 1.36k | proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_beep_cadence, tvb, offset, 1, val, |
2442 | 1.36k | "Cadence T%d: %d ms", i, val); |
2443 | 1.36k | offset++; |
2444 | 1.36k | length--; |
2445 | 1.36k | } |
2446 | 6 | break; |
2447 | 1 | } |
2448 | 0 | case 0x04: /* Start Beep */ |
2449 | 0 | { |
2450 | 0 | static int * const destinations[] = { |
2451 | 0 | &hf_ua3g_beep_beep_destination_handset, |
2452 | 0 | &hf_ua3g_beep_beep_destination_headset, |
2453 | 0 | &hf_ua3g_beep_beep_destination_loudspeaker, |
2454 | 0 | &hf_ua3g_beep_beep_destination_announce_loudspeaker, |
2455 | 0 | &hf_ua3g_beep_beep_destination_handsfree, |
2456 | 0 | NULL |
2457 | 0 | }; |
2458 | |
|
2459 | 0 | proto_tree_add_bitmask(ua3g_body_tree, tvb, offset, hf_ua3g_beep_beep_destination, |
2460 | 0 | ett_ua3g_beep_beep_destination, destinations, ENC_NA); |
2461 | 0 | offset++; |
2462 | |
|
2463 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_beep_beep_number, tvb, offset, 1, ENC_BIG_ENDIAN); |
2464 | 0 | break; |
2465 | 1 | } |
2466 | 7 | case 0x05: |
2467 | 7 | { |
2468 | 7 | int i, nb_of_notes, beep_number; |
2469 | 7 | proto_tree* note_tree; |
2470 | | |
2471 | 7 | beep_number = tvb_get_uint8(tvb, offset); |
2472 | 7 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_beep_beep_number, tvb, offset, 1, ENC_BIG_ENDIAN); |
2473 | 7 | offset++; |
2474 | 7 | length--; |
2475 | | |
2476 | 7 | if (beep_number <= 0x44) |
2477 | 4 | beep_number = 0x00; |
2478 | 3 | else |
2479 | 3 | beep_number = 0xFF; |
2480 | | |
2481 | 7 | nb_of_notes = tvb_get_uint8(tvb, offset); |
2482 | 7 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_beep_number_of_notes, tvb, offset, 1, ENC_BIG_ENDIAN); |
2483 | 7 | offset++; |
2484 | 7 | length--; |
2485 | | |
2486 | 202 | while (length > 0) { |
2487 | 278 | for (i = 1; i <= nb_of_notes; i++) { |
2488 | 83 | note_tree = proto_tree_add_subtree_format(ua3g_body_tree, tvb, offset, 3, |
2489 | 83 | ett_ua3g_note, NULL, "Note %d", i); |
2490 | 83 | proto_tree_add_uint_format(note_tree, hf_ua3g_beep_freq_sample, tvb, offset, 1, tvb_get_uint8(tvb, offset), |
2491 | 83 | "%s: %d", val_to_str_const(beep_number, str_beep_freq_sample_nb, "Unknown"), |
2492 | 83 | tvb_get_uint8(tvb, offset)); |
2493 | 83 | offset++; |
2494 | 83 | length--; |
2495 | 83 | proto_tree_add_item(note_tree, hf_ua3g_beep_level, tvb, offset, 1, ENC_NA); |
2496 | 83 | offset++; |
2497 | 83 | length--; |
2498 | 83 | proto_tree_add_uint_format(note_tree, hf_ua3g_beep_duration, tvb, offset, 1, tvb_get_uint8(tvb, offset), |
2499 | 83 | "%s: %x", val_to_str_const(beep_number, str_beep_duration, "Unknown"), |
2500 | 83 | tvb_get_uint8(tvb, offset)); |
2501 | 83 | offset++; |
2502 | 83 | length--; |
2503 | 83 | } |
2504 | 195 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_beep_terminator, tvb, offset, 1, ENC_BIG_ENDIAN); |
2505 | 195 | offset++; |
2506 | 195 | length--; |
2507 | 195 | } |
2508 | 7 | break; |
2509 | 1 | } |
2510 | 0 | case 0x03: /* Stop Beep */ |
2511 | 1 | default: |
2512 | 1 | { |
2513 | 1 | break; |
2514 | 0 | } |
2515 | 14 | } |
2516 | 14 | } else { /* Classical Beep */ |
2517 | | /* add text to the frame "INFO" column */ |
2518 | 0 | col_append_str(pinfo->cinfo, COL_INFO, ": Classical Beep"); |
2519 | 0 | } |
2520 | 14 | } |
2521 | | |
2522 | | |
2523 | | /*----------------------------------------------------------------------------- |
2524 | | SIDETONE ON / OFF - 3Dh (MESSAGE FROM THE SYSTEM) |
2525 | | ---------------------------------------------------------------------------*/ |
2526 | | static void |
2527 | | decode_sidetone(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, unsigned offset) |
2528 | 1 | { |
2529 | 1 | uint8_t command; |
2530 | 1 | const char* command_str; |
2531 | | |
2532 | 1 | command = tvb_get_uint8(tvb, offset); |
2533 | 1 | command_str = STR_ON_OFF(command); |
2534 | | |
2535 | | /* add text to the frame "INFO" column */ |
2536 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", command_str); |
2537 | | |
2538 | 1 | proto_tree_add_item(tree, hf_ua3g_command_sidetone, tvb, offset, 1, ENC_NA); |
2539 | | |
2540 | 1 | if (command == 0x01) { |
2541 | 0 | proto_tree_add_int(tree, hf_ua3g_sidetone_level, tvb, offset+1, 1, |
2542 | 0 | (signed char)(tvb_get_uint8(tvb, offset+1) / 2)); |
2543 | 0 | } |
2544 | 1 | } |
2545 | | |
2546 | | |
2547 | | /*----------------------------------------------------------------------------- |
2548 | | SET PROGRAMMABLE RINGING CADENCE - 3Eh (MESSAGE FROM THE SYSTEM) |
2549 | | ---------------------------------------------------------------------------*/ |
2550 | | static void |
2551 | | decode_ringing_cadence(proto_tree *tree, tvbuff_t *tvb, |
2552 | | packet_info *pinfo _U_, unsigned offset, unsigned length) |
2553 | 7 | { |
2554 | 7 | int i = 0; |
2555 | 7 | uint16_t cadence_length; |
2556 | | |
2557 | 7 | if (!tree) |
2558 | 0 | return; |
2559 | | |
2560 | 7 | proto_tree_add_item(tree, hf_ua3g_ringing_cadence_cadence, tvb, offset, 1, ENC_BIG_ENDIAN); |
2561 | 7 | offset++; |
2562 | 7 | length--; |
2563 | | |
2564 | 310 | while (length > 0) { |
2565 | 303 | i++; |
2566 | 303 | proto_tree_add_item(tree, hf_ua3g_ringing_cadence_on_off, tvb, offset, 1, ENC_NA); |
2567 | 303 | cadence_length = ((tvb_get_uint8(tvb, offset) & 0x7F) * 10); |
2568 | 303 | proto_tree_add_uint_format(tree, hf_ua3g_ringing_cadence_length, tvb, offset, 1, cadence_length, |
2569 | 303 | "Length %d : %d ms", i, cadence_length); |
2570 | 303 | offset++; |
2571 | 303 | length--; |
2572 | 303 | } |
2573 | 7 | } |
2574 | | |
2575 | | |
2576 | | /*----------------------------------------------------------------------------- |
2577 | | MUTE ON / OFF - 3Fh (MESSAGE FROM THE SYSTEM) |
2578 | | ---------------------------------------------------------------------------*/ |
2579 | | static const value_string str_mute[] = { |
2580 | | {0x00, "Microphone Disable"}, |
2581 | | {0x01, "Microphone Enable"}, |
2582 | | {0, NULL} |
2583 | | }; |
2584 | | |
2585 | | static void |
2586 | | decode_mute(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, unsigned offset) |
2587 | 0 | { |
2588 | 0 | uint8_t command; |
2589 | |
|
2590 | 0 | command = tvb_get_uint8(tvb, offset); |
2591 | | |
2592 | | /* add text to the frame "INFO" column */ |
2593 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(command, str_mute, "Unknown")); |
2594 | |
|
2595 | 0 | proto_tree_add_item(tree, hf_ua3g_command_mute, tvb, offset, 1, ENC_NA); |
2596 | 0 | } |
2597 | | |
2598 | | |
2599 | | /*----------------------------------------------------------------------------- |
2600 | | FEEDBACK ON / OFF - 40h (MESSAGE FROM THE SYSTEM) |
2601 | | ---------------------------------------------------------------------------*/ |
2602 | | static void |
2603 | | decode_feedback(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
2604 | | unsigned offset, unsigned length) |
2605 | 2 | { |
2606 | 2 | uint8_t command; |
2607 | 2 | const char* command_str; |
2608 | | |
2609 | 2 | command = tvb_get_uint8(tvb, offset); |
2610 | 2 | command_str = STR_ON_OFF(command); |
2611 | | |
2612 | | /* add text to the frame "INFO" column */ |
2613 | 2 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", command_str); |
2614 | | |
2615 | 2 | if (!tree) |
2616 | 0 | return; |
2617 | | |
2618 | 2 | proto_tree_add_item(tree, hf_ua3g_command_feedback, tvb, offset, 1, ENC_NA); |
2619 | 2 | offset++; |
2620 | 2 | length--; |
2621 | | |
2622 | 2 | if (command == 0x01) { |
2623 | 1 | proto_tree_add_int(tree, hf_ua3g_feedback_level, tvb, offset, 1, |
2624 | 1 | (signed char)(tvb_get_uint8(tvb, offset) / 2)); |
2625 | 1 | offset++; |
2626 | 1 | length--; |
2627 | | |
2628 | 1 | if (length > 0) { |
2629 | 1 | proto_tree_add_uint_format_value(tree, hf_ua3g_feedback_duration, tvb, offset, 1, |
2630 | 1 | tvb_get_uint8(tvb, offset) * 10, "%d ms", tvb_get_uint8(tvb, offset) * 10); |
2631 | 1 | } |
2632 | 1 | } |
2633 | 2 | } |
2634 | | |
2635 | | |
2636 | | /*----------------------------------------------------------------------------- |
2637 | | READ PERIPHERAL - 44h (MESSAGE FROM THE SYSTEM) |
2638 | | WRITE PERIPHERAL - 45h (MESSAGE FROM THE SYSTEM) |
2639 | | PERIPHERAL CONTENT - 2Bh (MESSAGE FROM THE TERMINAL) |
2640 | | ---------------------------------------------------------------------------*/ |
2641 | | static void |
2642 | | decode_r_w_peripheral(proto_tree *tree, tvbuff_t *tvb, |
2643 | | packet_info *pinfo _U_, unsigned offset, unsigned length) |
2644 | 4 | { |
2645 | 4 | proto_tree_add_item(tree, hf_ua3g_r_w_peripheral_address, tvb, offset, 2, ENC_BIG_ENDIAN); |
2646 | | |
2647 | 4 | if (length > 2) { |
2648 | 4 | proto_tree_add_item(tree, hf_ua3g_r_w_peripheral_content, tvb, offset+2, 1, ENC_BIG_ENDIAN); |
2649 | 4 | } |
2650 | 4 | } |
2651 | | |
2652 | | |
2653 | | /*----------------------------------------------------------------------------- |
2654 | | ICON COMMAND - 47h (MESSAGE FROM THE SYSTEM) |
2655 | | ---------------------------------------------------------------------------*/ |
2656 | | static const value_string str_icon_cmd_state[] = { |
2657 | | {0x00, "Off"}, |
2658 | | {0x01, "Slow Flash"}, |
2659 | | {0x02, "Not Used"}, |
2660 | | {0x03, "Steady On"}, |
2661 | | {0, NULL} |
2662 | | }; |
2663 | | |
2664 | | static void |
2665 | | decode_icon_cmd(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, unsigned offset) |
2666 | 1 | { |
2667 | 1 | uint8_t byte0, byte1, bytex; |
2668 | 1 | int i; |
2669 | | |
2670 | 1 | if (!tree) |
2671 | 0 | return; |
2672 | | |
2673 | 1 | proto_tree_add_item(tree, hf_ua3g_icon_cmd_icon_number, tvb, offset, 1, ENC_BIG_ENDIAN); |
2674 | | |
2675 | 1 | byte0 = tvb_get_uint8(tvb, offset+1); |
2676 | 1 | byte1 = tvb_get_uint8(tvb, offset+2); |
2677 | | |
2678 | 9 | for (i = 0; i < 8; i++) { |
2679 | 8 | bytex = |
2680 | 8 | ((byte0 >> i) & 0x01) * 2 + |
2681 | 8 | ((byte1 >> i) & 0x01); |
2682 | 8 | proto_tree_add_uint_format(tree, hf_ua3g_icon_cmd_segment, tvb, offset+1, 2, bytex, |
2683 | 8 | "Segment %d: %s (%d)", i, val_to_str_const(bytex, str_icon_cmd_state, "Unknown"), bytex); |
2684 | 8 | } |
2685 | 1 | } |
2686 | | |
2687 | | |
2688 | | /*----------------------------------------------------------------------------- |
2689 | | AUDIO CONFIGURATION - 49h (MESSAGE FROM THE SYSTEM) |
2690 | | ---------------------------------------------------------------------------*/ |
2691 | | static const value_string str_command_audio_config[] = { |
2692 | | {0x00, "Audio Coding"}, |
2693 | | {0x01, "DPI Channel Allocations"}, |
2694 | | {0x02, "Loudspeaker Volume Adjust"}, |
2695 | | {0x03, "Audio Circuit Configuration"}, |
2696 | | {0x04, "Handsfree Parameters"}, |
2697 | | {0x05, "Loudspeaker Acoustic Parameters"}, |
2698 | | {0x06, "Device Configuration"}, |
2699 | | {0, NULL} |
2700 | | }; |
2701 | | |
2702 | | static const value_string str_audio_coding_law[] = { |
2703 | | {0x00, "A Law"}, |
2704 | | {0x01, "m Law"}, |
2705 | | {0, NULL} |
2706 | | }; |
2707 | | |
2708 | | static const value_string str_device_configuration[] = { |
2709 | | { 0, "Handset Device "}, |
2710 | | { 1, "Headset Device "}, |
2711 | | { 2, "Loudspeaker Device "}, |
2712 | | { 3, "Announce Loudspeaker Device"}, |
2713 | | { 4, "Handsfree Device "}, |
2714 | | { 0, NULL } |
2715 | | }; |
2716 | | |
2717 | | static const true_false_string tfs_audio_config_handsfree_return = { "Return Loss Active", "Return Loss Normal" }; |
2718 | | static const true_false_string tfs_audio_config_handsfree_handsfree = { "More Full Duplex", "Handsfree Normal" }; |
2719 | | |
2720 | | static void |
2721 | | decode_audio_config(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
2722 | | unsigned offset, unsigned length) |
2723 | 34 | { |
2724 | 34 | uint8_t command; |
2725 | 34 | proto_tree *ua3g_body_tree = tree; |
2726 | | |
2727 | 34 | command = tvb_get_uint8(tvb, offset); |
2728 | | |
2729 | | /* add text to the frame "INFO" column */ |
2730 | 34 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(command, str_command_audio_config, "Unknown")); |
2731 | | |
2732 | 34 | if (!ua3g_body_tree) |
2733 | 0 | return; |
2734 | | |
2735 | 34 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_command_audio_config, tvb, offset, 1, ENC_BIG_ENDIAN); |
2736 | 34 | offset++; |
2737 | 34 | length--; |
2738 | | |
2739 | 34 | switch (command) { |
2740 | 2 | case 0x00: /* Audio Coding */ |
2741 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_ignored, tvb, offset, 1, ENC_BIG_ENDIAN); |
2742 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_law, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2743 | 2 | break; |
2744 | 1 | case 0x01: /* DPI Channel Allocations */ |
2745 | | |
2746 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_dpi_chan_ua_tx1, tvb, offset, 1, ENC_BIG_ENDIAN); |
2747 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_dpi_chan_ua_tx2, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2748 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_dpi_chan_gci_tx1, tvb, offset+2, 1, ENC_BIG_ENDIAN); |
2749 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_dpi_chan_gci_tx2, tvb, offset+3, 1, ENC_BIG_ENDIAN); |
2750 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_dpi_chan_cod_tx, tvb, offset+4, 1, ENC_BIG_ENDIAN); |
2751 | 1 | break; |
2752 | 0 | case 0x02: /* Loudspeaker Volume Adjust */ |
2753 | 0 | { |
2754 | 0 | int i; |
2755 | 0 | for (i = 1; i < 8; i++) { |
2756 | 0 | proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_audio_config_volume_level, tvb, offset, |
2757 | 0 | 1, tvb_get_uint8(tvb, offset), "Volume Level %d: %d", |
2758 | 0 | i, tvb_get_uint8(tvb, offset)); |
2759 | 0 | offset++; |
2760 | 0 | length--; |
2761 | 0 | } |
2762 | 0 | break; |
2763 | 0 | } |
2764 | 0 | case 0x03: /* Audio Circuit Configuration */ |
2765 | |
|
2766 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_audio_circuit_dth, tvb, offset, 1, ENC_BIG_ENDIAN); |
2767 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_audio_circuit_dtr, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2768 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_audio_circuit_dtf, tvb, offset+2, 1, ENC_BIG_ENDIAN); |
2769 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_audio_circuit_str, tvb, offset+3, 1, ENC_BIG_ENDIAN); |
2770 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_audio_circuit_ahp1, tvb, offset+4, 1, ENC_BIG_ENDIAN); |
2771 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_audio_circuit_ahp2, tvb, offset+5, 1, ENC_BIG_ENDIAN); |
2772 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_audio_circuit_ath, tvb, offset+6, 1, ENC_BIG_ENDIAN); |
2773 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_audio_circuit_atr, tvb, offset+7, 1, ENC_BIG_ENDIAN); |
2774 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_audio_circuit_atf, tvb, offset+8, 1, ENC_BIG_ENDIAN); |
2775 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_audio_circuit_alm, tvb, offset+9, 1, ENC_BIG_ENDIAN); |
2776 | 0 | break; |
2777 | 0 | case 0x04: /* Handsfree Parameters */ |
2778 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_handsfree_return, tvb, offset, 1, ENC_NA); |
2779 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_handsfree_handsfree, tvb, offset, 1, ENC_NA); |
2780 | 0 | break; |
2781 | 1 | case 0x05: /* Loudspeaker Acoustic Parameters */ |
2782 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_loudspeaker_aco_param_group_listen, tvb, offset, 1, ENC_BIG_ENDIAN); |
2783 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_audio_config_loudspeaker_aco_param_handsfree_attenuation, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2784 | 1 | 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); |
2785 | 1 | 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); |
2786 | 1 | 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); |
2787 | 1 | 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); |
2788 | 1 | 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); |
2789 | 1 | 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); |
2790 | 1 | 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); |
2791 | 1 | 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); |
2792 | 1 | 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); |
2793 | 1 | break; |
2794 | 29 | case 0x06: /* Device Configuration */ |
2795 | 29 | { |
2796 | 29 | static const char *str_device_values[] = { |
2797 | 29 | " Internal", |
2798 | 29 | " Rj9 Plug", |
2799 | 29 | " Jack Plug", |
2800 | 29 | " Bluetooth Link", |
2801 | 29 | " USB Link" |
2802 | 29 | }; |
2803 | 29 | wmem_strbuf_t *strbuf; |
2804 | 29 | uint8_t device_values; |
2805 | 29 | int j; |
2806 | 29 | int device_index = 0; |
2807 | | |
2808 | 29 | strbuf = wmem_strbuf_create(pinfo->pool); |
2809 | | |
2810 | 5.57k | while (length > 0) { |
2811 | | |
2812 | 5.54k | device_values = tvb_get_uint8(tvb, offset); |
2813 | | |
2814 | 5.54k | wmem_strbuf_truncate(strbuf, 0); |
2815 | | |
2816 | 5.54k | if (device_values != 0) { |
2817 | 26.3k | for (j = 0; j < 5; j++) { |
2818 | 21.9k | if (device_values & (0x01 << j)) { |
2819 | 13.0k | wmem_strbuf_append(strbuf, str_device_values[j]); |
2820 | 13.0k | } |
2821 | 21.9k | } |
2822 | 4.39k | } else { |
2823 | 1.14k | wmem_strbuf_append(strbuf, " None"); |
2824 | 1.14k | } |
2825 | | |
2826 | 5.54k | proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_device_configuration, tvb, offset, 1, |
2827 | 5.54k | device_values, "%s:%s", |
2828 | 5.54k | val_to_str_const(device_index, str_device_configuration, "Unknown"), |
2829 | 5.54k | wmem_strbuf_get_str(strbuf)); |
2830 | 5.54k | offset++; |
2831 | 5.54k | length--; |
2832 | 5.54k | device_index++; |
2833 | 5.54k | } |
2834 | 29 | break; |
2835 | 0 | } |
2836 | 1 | default: |
2837 | 1 | { |
2838 | 1 | break; |
2839 | 0 | } |
2840 | 34 | } |
2841 | 34 | } |
2842 | | |
2843 | | |
2844 | | /*----------------------------------------------------------------------------- |
2845 | | AUDIO PADDED PATH - 4Ah (MESSAGE FROM THE SYSTEM) |
2846 | | ---------------------------------------------------------------------------*/ |
2847 | | static void |
2848 | | decode_audio_padded_path(proto_tree *tree, tvbuff_t *tvb, |
2849 | | packet_info *pinfo _U_, unsigned offset) |
2850 | 1 | { |
2851 | 1 | proto_tree_add_item(tree, hf_ua3g_audio_padded_path_emission_padded_level, tvb, offset, 1, ENC_BIG_ENDIAN); |
2852 | 1 | proto_tree_add_item(tree, hf_ua3g_audio_padded_path_reception_padded_level, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2853 | 1 | } |
2854 | | |
2855 | | |
2856 | | /*----------------------------------------------------------------------------- |
2857 | | KEY RELEASE ON / OFF - 41h (MESSAGE FROM THE SYSTEM) |
2858 | | AMPLIFIED HANDSET (BOOST) - 48h (MESSAGE FROM THE SYSTEM) |
2859 | | LOUDSPEAKER ON / OFF - 4Dh (MESSAGE FROM THE SYSTEM) |
2860 | | ANNOUNCE ON / OFF - 4Eh (MESSAGE FROM THE SYSTEM) |
2861 | | ---------------------------------------------------------------------------*/ |
2862 | | static void |
2863 | | decode_on_off_level(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
2864 | | unsigned offset, unsigned length, int hf_opcode) |
2865 | 3 | { |
2866 | 3 | uint8_t command; |
2867 | 3 | const char* command_str; |
2868 | | |
2869 | 3 | command = tvb_get_uint8(tvb, offset); |
2870 | 3 | command_str = STR_ON_OFF(command); |
2871 | | |
2872 | | /* add text to the frame "INFO" column */ |
2873 | 3 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", command_str); |
2874 | | |
2875 | 3 | proto_tree_add_item(tree, hf_opcode, tvb, offset, 1, ENC_NA); |
2876 | | |
2877 | 3 | if (length > 1) { |
2878 | 2 | if (command == 0x01) { |
2879 | 0 | proto_tree_add_item(tree, hf_ua3g_on_off_level_level_on_loudspeaker, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2880 | 0 | } |
2881 | 2 | } |
2882 | 3 | } |
2883 | | |
2884 | | |
2885 | | /*----------------------------------------------------------------------------- |
2886 | | RING ON / OFF - 4Fh (MESSAGE FROM THE SYSTEM) |
2887 | | ---------------------------------------------------------------------------*/ |
2888 | | static void |
2889 | | decode_ring(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, unsigned offset) |
2890 | 0 | { |
2891 | 0 | uint8_t command; |
2892 | 0 | const char* command_str; |
2893 | |
|
2894 | 0 | command = tvb_get_uint8(tvb, offset); |
2895 | 0 | command_str = STR_ON_OFF(command); |
2896 | | |
2897 | | /* add text to the frame "INFO" column */ |
2898 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", command_str); |
2899 | |
|
2900 | 0 | if (!tree) |
2901 | 0 | return; |
2902 | | |
2903 | 0 | proto_tree_add_item(tree, hf_ua3g_command_ring, tvb, offset, 1, ENC_NA); |
2904 | |
|
2905 | 0 | if (command == 0x01) { |
2906 | 0 | proto_tree_add_item(tree, hf_ua3g_ring_melody, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
2907 | 0 | proto_tree_add_item(tree, hf_ua3g_ring_cadence, tvb, offset+2, 1, ENC_BIG_ENDIAN); |
2908 | 0 | proto_tree_add_item(tree, hf_ua3g_ring_speaker_level, tvb, offset+3, 1, ENC_BIG_ENDIAN); |
2909 | 0 | proto_tree_add_item(tree, hf_ua3g_ring_beep_number, tvb, offset+4, 1, ENC_BIG_ENDIAN); |
2910 | 0 | proto_tree_add_item(tree, hf_ua3g_ring_silent, tvb, offset+5, 1, ENC_NA); |
2911 | 0 | proto_tree_add_item(tree, hf_ua3g_ring_progressive, tvb, offset+5, 1, ENC_BIG_ENDIAN); |
2912 | 0 | } |
2913 | 0 | } |
2914 | | |
2915 | | |
2916 | | /*----------------------------------------------------------------------------- |
2917 | | UA DOWNLOAD PROTOCOL - 50h - Only for UA NOE (MESSAGE FROM THE TERMINAL AND FROM THE SYSTEM) |
2918 | | ---------------------------------------------------------------------------*/ |
2919 | | static const value_string str_command_ua_dwl_protocol[] = { |
2920 | | {0x00, "Downloading Suggest"}, |
2921 | | {0x01, "Downloading Request"}, |
2922 | | {0x02, "Downloading Acknowledge"}, |
2923 | | {0x03, "Downloading Data"}, |
2924 | | {0x04, "Downloading End"}, |
2925 | | {0x05, "Downloading End Acknowledge"}, |
2926 | | {0x06, "Downloading ISO Checksum"}, |
2927 | | {0x07, "Downloading ISO Checksum Acknowledge"}, |
2928 | | {0, NULL} |
2929 | | }; |
2930 | | |
2931 | | static const value_string str_download_req_force_mode[] = { |
2932 | | {0x00, "System Accept All Refusals"}, |
2933 | | {0x01, "Force Software Lock"}, |
2934 | | {0, NULL} |
2935 | | }; |
2936 | | #if 0 |
2937 | | static const value_string str_download_req_item_id[] = { |
2938 | | {0x00, "Patches File"}, |
2939 | | {0x01, "Application Binary"}, |
2940 | | {0x02, "Datas Binary"}, |
2941 | | {0, NULL} |
2942 | | }; |
2943 | | #endif |
2944 | | static const value_string str_download_req_mode_selection_country[] = { |
2945 | | {0x00, "No Check"}, |
2946 | | {0x01, "For All Countries Except Chinese"}, |
2947 | | {0x02, "For Chinese"}, |
2948 | | {0, NULL} |
2949 | | }; |
2950 | | |
2951 | | static const value_string str_download_ack_status[] = { |
2952 | | {0x00, "Ok (Binary Item Downloading In \"Normal\" Progress)"}, |
2953 | | {0x01, "Hardware Failure: Flash Failure"}, |
2954 | | {0x02, "Not Enough Place To Store The Downloaded Binary"}, |
2955 | | {0x03, "Wrong Seq Number On Latest Received Download_Data Message"}, |
2956 | | {0x04, "Wrong Packet Number On Latest Received Download_Data Message"}, |
2957 | | {0x05, "Download Refusal Terminal (Validation Purpose)"}, |
2958 | | {0x06, "Download Refusal Terminal (Development Purpose)"}, |
2959 | | {0x10, "Download Refusal: Hardware Cause (Unknown Flash Device, Incompatible Hardware)"}, |
2960 | | {0x11, "Download Refusal: No Loader Available Into The Terminal"}, |
2961 | | {0x12, "Download Refusal: Software Lock"}, |
2962 | | {0x13, "Download Refusal: Wrong Parameter Into Download Request"}, |
2963 | | {0x20, "Wrong Packet Number On Latest Received Downloading_Data Message"}, |
2964 | | {0x21, "Compress Header Invalid"}, |
2965 | | {0x22, "Decompress Error"}, |
2966 | | {0x23, "Binary Header Invalid"}, |
2967 | | {0x24, "Binary Check Error: Flash Write Error Or Binary Is Invalid"}, |
2968 | | {0x25, "Error Already Signaled - No More Data Accepted"}, |
2969 | | {0x26, "No Downloading In Progress"}, |
2970 | | {0x27, "Too Many Bytes Received (More Than Size Given Into The Download_Req Message)"}, |
2971 | | {0xFF, "Undefined Error"}, |
2972 | | {0, NULL} |
2973 | | }; |
2974 | | static value_string_ext str_download_ack_status_ext = VALUE_STRING_EXT_INIT(str_download_ack_status); |
2975 | | |
2976 | | static const value_string str_download_end_ack_ok[] = { |
2977 | | {0x00, "Ok"}, |
2978 | | {0x01, "Hardware Failure: Flash Problems"}, |
2979 | | {0x02, "Not Enough Place To Store The Downloaded Binary"}, |
2980 | | {0, NULL} |
2981 | | }; |
2982 | | |
2983 | | static const value_string str_iso_checksum_ack_status[] = { |
2984 | | {0x00, "The Checksum Matches"}, |
2985 | | {0x25, "Error Detected And Already Signaled"}, |
2986 | | {0x30, "Checksum Error (All Bytes Received)"}, |
2987 | | {0x31, "Checksum Error (Bytes Missing)"}, |
2988 | | {0, NULL} |
2989 | | }; |
2990 | | |
2991 | | static const value_string str_mem_size[] = { |
2992 | | {0x00, "No Check"}, |
2993 | | {0x01, "128 Kbytes"}, |
2994 | | {0x02, "256 Kbytes"}, |
2995 | | {0x03, "512 Kbytes"}, |
2996 | | {0x04, "1 Mbytes"}, |
2997 | | {0x05, "2 Mbytes"}, |
2998 | | {0x06, "4 Mbytes"}, |
2999 | | {0x07, "8 Mbytes"}, |
3000 | | {0, NULL} |
3001 | | }; |
3002 | | |
3003 | | static const true_false_string tfs_bin_info = { "LZO Compressed Binary", "Uncompressed Binary" }; |
3004 | | |
3005 | | static void |
3006 | | decode_ua_dwl_protocol(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
3007 | | unsigned offset, unsigned length) |
3008 | 3 | { |
3009 | 3 | uint8_t command; |
3010 | 3 | proto_tree *ua3g_body_tree = tree, *ua3g_param_tree; |
3011 | | |
3012 | 3 | command = tvb_get_uint8(tvb, offset); |
3013 | | |
3014 | | /* add text to the frame "INFO" column */ |
3015 | 3 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(command, str_command_ua_dwl_protocol, "Unknown")); |
3016 | | |
3017 | 3 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_command_ua_dwl_protocol, tvb, offset, 1, ENC_BIG_ENDIAN); |
3018 | 3 | offset++; |
3019 | 3 | length--; |
3020 | | |
3021 | 3 | switch (command) { |
3022 | 0 | case 0x00: /* Downloading Suggest (MESSAGE FROM THE TERMINAL) */ |
3023 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_item_identifier, tvb, offset, 1, ENC_BIG_ENDIAN); |
3024 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_item_version_nc, tvb, offset+1, 2, ENC_BIG_ENDIAN); |
3025 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_cause, tvb, offset+3, 1, ENC_BIG_ENDIAN); |
3026 | 0 | break; |
3027 | 1 | case 0x01: /* Downloading Request (MESSAGE FROM THE SYSTEM) */ |
3028 | 1 | { |
3029 | 1 | if (length > 7) { /* Not R1 */ |
3030 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_force_mode, tvb, offset, 1, ENC_BIG_ENDIAN); |
3031 | 1 | offset++; |
3032 | 1 | length--; |
3033 | 1 | } |
3034 | | |
3035 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_item_identifier, tvb, offset, 1, ENC_BIG_ENDIAN); |
3036 | 1 | offset++; |
3037 | 1 | length--; |
3038 | | |
3039 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_item_version, tvb, offset, 2, ENC_BIG_ENDIAN); |
3040 | 1 | offset += 2; |
3041 | 1 | length -= 2; |
3042 | | |
3043 | 1 | if (length > 2) { /* Not R1 */ |
3044 | 1 | ua3g_param_tree = proto_tree_add_subtree(ua3g_body_tree, tvb, offset, 1, ett_ua3g_param, NULL, "Files Included"); |
3045 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_files_inc_boot_binary, |
3046 | 1 | tvb, offset, 1, ENC_NA); |
3047 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_files_inc_loader_binary, |
3048 | 1 | tvb, offset, 1, ENC_NA); |
3049 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_files_inc_appli_binary, |
3050 | 1 | tvb, offset, 1, ENC_NA); |
3051 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_files_inc_data_binary, |
3052 | 1 | tvb, offset, 1, ENC_NA); |
3053 | 1 | offset++; |
3054 | 1 | length--; |
3055 | | |
3056 | 1 | ua3g_param_tree = proto_tree_add_subtree(ua3g_body_tree, tvb, offset, 1, ett_ua3g_param, NULL, "Model Selection"); |
3057 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_model_selection_a, |
3058 | 1 | tvb, offset, 1, ENC_NA); |
3059 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_model_selection_b, |
3060 | 1 | tvb, offset, 1, ENC_NA); |
3061 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_model_selection_c, |
3062 | 1 | tvb, offset, 1, ENC_NA); |
3063 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_model_selection_country_ver, |
3064 | 1 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3065 | 1 | offset++; |
3066 | 1 | length--; |
3067 | 1 | ua3g_param_tree = proto_tree_add_subtree(ua3g_body_tree, tvb, offset, 1, ett_ua3g_param, NULL, "Hardware Selection"); |
3068 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_hardware_selection_ivanoe1, |
3069 | 1 | tvb, offset, 1, ENC_NA); |
3070 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_hardware_selection_ivanoe2, |
3071 | 1 | tvb, offset, 1, ENC_NA); |
3072 | 1 | offset++; |
3073 | 1 | length--; |
3074 | | |
3075 | 1 | ua3g_param_tree = proto_tree_add_subtree(ua3g_body_tree, tvb, offset, 1, ett_ua3g_param, NULL, "Memory Sizes Required"); |
3076 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_memory_sizes_flash, |
3077 | 1 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3078 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_ua_dwl_protocol_memory_sizes_ext_ram, |
3079 | 1 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3080 | 1 | offset++; |
3081 | 1 | length--; |
3082 | 1 | } else { /* R1 */ |
3083 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_binary_info, tvb, offset, 1, ENC_NA); |
3084 | 0 | offset++; |
3085 | 0 | length--; |
3086 | 0 | } |
3087 | | |
3088 | 1 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_binary_length, tvb, offset, 3, ENC_BIG_ENDIAN); |
3089 | 1 | break; |
3090 | 0 | } |
3091 | 0 | case 0x02: /* Downloading Acknowledge (MESSAGE FROM THE TERMINAL) */ |
3092 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_packet_number, tvb, offset, 2, ENC_BIG_ENDIAN); |
3093 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_download_ack_status, tvb, offset+2, 1, ENC_BIG_ENDIAN); |
3094 | 0 | break; |
3095 | 0 | case 0x03: /* Downloading Data (MESSAGE FROM THE SYSTEM) */ |
3096 | 0 | { |
3097 | 0 | int i = 1; |
3098 | |
|
3099 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_packet_number, tvb, offset, 2, ENC_BIG_ENDIAN); |
3100 | 0 | offset += 2; |
3101 | 0 | length -= 2; |
3102 | |
|
3103 | 0 | while (length > 0) { |
3104 | 0 | proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_packet_number, tvb, offset, 1, |
3105 | 0 | tvb_get_uint8(tvb, offset), "Packet Number %3d: %d", i, tvb_get_uint8(tvb, offset)); |
3106 | 0 | offset++; |
3107 | 0 | length--; |
3108 | 0 | i++; |
3109 | 0 | } |
3110 | 0 | break; |
3111 | 0 | } |
3112 | 0 | case 0x05: /* Downloading End Acknowledge (MESSAGE FROM THE TERMINAL) */ |
3113 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_packet_download_end_ack_ok_status, tvb, offset, 1, ENC_BIG_ENDIAN); |
3114 | 0 | break; |
3115 | 0 | case 0x06: /* Downloading Iso Checksum (MESSAGE FROM THE SYSTEM) */ |
3116 | 0 | 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); |
3117 | 0 | break; |
3118 | 0 | case 0x07: /* Downloading ISO Checksum Acknowledge (MESSAGE FROM THE TERMINAL) */ |
3119 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ua_dwl_protocol_acknowledge, tvb, offset, 1, ENC_BIG_ENDIAN); |
3120 | 0 | break; |
3121 | 0 | case 0x04: /* Downloading End (MESSAGE FROM THE SYSTEM) */ |
3122 | 2 | default: |
3123 | 2 | break; |
3124 | 3 | } |
3125 | 3 | } |
3126 | | |
3127 | | |
3128 | | /*----------------------------------------------------------------------------- |
3129 | | DIGIT DIALED - 03h (MESSAGE FROM THE SYSTEM) |
3130 | | ---------------------------------------------------------------------------*/ |
3131 | | static void |
3132 | | decode_digit_dialed(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, unsigned offset) |
3133 | 0 | { |
3134 | 0 | proto_tree_add_item(tree, hf_ua3g_digit_dialed_digit_value, tvb, offset, 1, ENC_BIG_ENDIAN); |
3135 | 0 | } |
3136 | | |
3137 | | |
3138 | | /*----------------------------------------------------------------------------- |
3139 | | SUBDEVICE_MSG - 04h (MESSAGE FROM THE TERMINAL) |
3140 | | ---------------------------------------------------------------------------*/ |
3141 | | static void |
3142 | | decode_subdevice_msg(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, |
3143 | | unsigned offset, unsigned length) |
3144 | 0 | { |
3145 | 0 | if (!tree) |
3146 | 0 | return; |
3147 | | |
3148 | 0 | proto_tree_add_item(tree, hf_ua3g_subdevice_msg_subdev_type, tvb, offset, 1, ENC_BIG_ENDIAN); |
3149 | 0 | proto_tree_add_item(tree, hf_ua3g_subdevice_msg_subdev_address, tvb, offset, 1, ENC_BIG_ENDIAN); |
3150 | |
|
3151 | 0 | proto_tree_add_item(tree, hf_ua3g_subdevice_msg_subdevice_opcode, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
3152 | |
|
3153 | 0 | if (length > 2) { |
3154 | 0 | proto_tree_add_item(tree, hf_ua3g_subdevice_msg_parameter_bytes, tvb, offset+2, length-2, ENC_NA); |
3155 | 0 | } |
3156 | 0 | } |
3157 | | |
3158 | | |
3159 | | /*----------------------------------------------------------------------------- |
3160 | | IP DEVICE ROUTING - 13h (MESSAGE FROM THE TERMINAL) |
3161 | | ---------------------------------------------------------------------------*/ |
3162 | | static const value_string str_command_cs_ip_device_routing[] = { |
3163 | | {0x00, "Init"}, |
3164 | | {0x01, "Incident"}, |
3165 | | {0x02, "Get Parameters Value Response"}, |
3166 | | {0x03, "QOS Ticket RSP"}, |
3167 | | {0, NULL} |
3168 | | }; |
3169 | | |
3170 | | static const value_string str_vta_type[] = { |
3171 | | {0x03, "4035"}, |
3172 | | {0x04, "4020"}, |
3173 | | {0x05, "4010"}, |
3174 | | {0x20, "4018"}, |
3175 | | {0x21, "4028/8008/8008G/8028/8028S/8058S"}, |
3176 | | {0x22, "4038/8038"}, |
3177 | | {0x23, "4068/8068/8082/8068S"}, |
3178 | | {0x24, "mipt"}, |
3179 | | {0x25, "4008"}, |
3180 | | {0x32, "8058S"}, |
3181 | | {0x34, "8078S"}, |
3182 | | {0x35, "8088"}, |
3183 | | {0, NULL} |
3184 | | }; |
3185 | | |
3186 | | static const value_string str_additional_vta_type[] = { |
3187 | | {0x00, "Not Applicable"}, |
3188 | | {0x30, "8018"}, |
3189 | | {0x31, "8028S"}, |
3190 | | {0x32, "8058S"}, |
3191 | | {0x33, "4068S"}, |
3192 | | {0x34, "8078S"}, |
3193 | | {0x35, "8088"}, |
3194 | | {0x36, "8008/8008G"}, |
3195 | | {0, NULL} |
3196 | | }; |
3197 | | |
3198 | | static const value_string str_cs_ip_device_routing_0F_compressor[] = { |
3199 | | {0x00, "G.711 A-law"}, |
3200 | | {0x01, "G.711 mu-law"}, |
3201 | | {0x02, "G.723.1 5.3kbps"}, |
3202 | | {0x03, "G.723.1 6.3kbps"}, |
3203 | | {0x04, "G.729A 8kbps"}, |
3204 | | {0x05, "G.722 64kbps"}, |
3205 | | {0x06, "G.722 56kbps"}, |
3206 | | {0x07, "G.722 48kbps"}, |
3207 | | {0x08, "Opus"}, |
3208 | | {0, NULL} |
3209 | | }; |
3210 | | |
3211 | | static const value_string cs_ip_device_routing_03_parameter_id_vals[] = { |
3212 | | {0x01, "Date Of End Of Communication"}, |
3213 | | {0x02, "Node Number"}, |
3214 | | {0x03, "Ticket Protocol Version"}, |
3215 | | {0x06, "Equipment Type"}, |
3216 | | {0x08, "Local IP Address"}, |
3217 | | {0x09, "Distant IP Address"}, |
3218 | | {0x0A, "Local ID"}, |
3219 | | {0x0B, "Distant ID"}, |
3220 | | {0x0C, "Call Duration (second)"}, |
3221 | | {0x0D, "Local SSRC"}, |
3222 | | {0x0E, "Distant SSRC"}, |
3223 | | {0x0F, "Codec"}, |
3224 | | {0x10, "VAD"}, |
3225 | | {0x11, "ECE"}, |
3226 | | {0x12, "Voice Mode"}, |
3227 | | {0x13, "Transmitted Framing (ms)"}, |
3228 | | {0x14, "Received Framing (ms)"}, |
3229 | | {0x15, "Framing Changes"}, |
3230 | | {0x16, "Number Of RTP Packets Received"}, |
3231 | | {0x17, "Number Of RTP Packets Sent"}, |
3232 | | {0x18, "Number Of RTP Packets Lost"}, |
3233 | | {0x19, "Total Silence Detected (second)"}, |
3234 | | {0x1A, "Number Of SID Received"}, |
3235 | | {0x1B, "Delay Distribution"}, |
3236 | | {0x1C, "Maximum Delay (ms)"}, |
3237 | | {0x1D, "Number Of DTMF Received"}, |
3238 | | {0x1E, "Consecutive BFI"}, |
3239 | | {0x1F, "BFI Distribution"}, |
3240 | | {0x20, "Jitter Depth Distribution"}, |
3241 | | {0x21, "Number Of ICMP Host Unreachable"}, |
3242 | | {0x26, "Firmware Version"}, |
3243 | | {0x29, "DSP Framing (ms)"}, |
3244 | | {0x2A, "Transmitter SID"}, |
3245 | | {0x2D, "Minimum Delay (ms)"}, |
3246 | | {0x2E, "802.1 Q Used"}, |
3247 | | {0x2F, "802.1p Priority"}, |
3248 | | {0x30, "VLAN Id"}, |
3249 | | {0x31, "DiffServ"}, |
3250 | | {0x37, "Encryption"}, |
3251 | | {0x3D, "200 ms BFI Distribution"}, |
3252 | | {0x3E, "Consecutive RTP Lost"}, |
3253 | | {0, NULL} |
3254 | | }; |
3255 | | 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); |
3256 | | |
3257 | | static const value_string cs_ip_device_routing_cmd03_type_of_equip_vals[] = { |
3258 | | {0x0101, "IP-Phone V2"}, |
3259 | | {0x0102, "NOE-IP"}, |
3260 | | {0x0200, "4980 Softphone (PCMM2)"}, |
3261 | | {0x0201, "WebSoftphoneIP"}, |
3262 | | {0x0300, "INTIP"}, |
3263 | | {0x0301, "GD/GA"}, |
3264 | | {0x0302, "4645"}, |
3265 | | {0x0303, "INTIP3"}, |
3266 | | {0x0304, "GD3/GA3"}, |
3267 | | {0x0305, "OXE MS"}, |
3268 | | {0x0306, "INTIP3-RTPproxy"}, |
3269 | | {0x0307, "GD3/GA3-RTPproxy"}, |
3270 | | {0x0308, "MS-RTPproxy"}, |
3271 | | {0x0400, "OXO"}, |
3272 | | {0, NULL} |
3273 | | }; |
3274 | | |
3275 | | static const value_string cs_ip_device_routing_cmd03_voice_mode_vals[] = { |
3276 | | {0x50, "Idle"}, |
3277 | | {0x51, "Handset"}, |
3278 | | {0x52, "Group Listening"}, |
3279 | | {0x53, "On Hook Dial"}, |
3280 | | {0x54, "Handsfree"}, |
3281 | | {0x55, "Headset"}, |
3282 | | {0, NULL} |
3283 | | }; |
3284 | | |
3285 | | static const value_string cs_ip_device_routing_delay_distribution_range_vals[] = { |
3286 | | {0, "0-40 "}, |
3287 | | {1, "40-80 "}, |
3288 | | {2, "80-150 "}, |
3289 | | {3, "150-250 "}, |
3290 | | {4, "250 and +"}, |
3291 | | {0, NULL} |
3292 | | }; |
3293 | | |
3294 | | static const value_string cs_ip_device_routing_0_9_range_vals[] = { |
3295 | | {0, "0 "}, |
3296 | | {1, "1 "}, |
3297 | | {2, "2 "}, |
3298 | | {3, "3 "}, |
3299 | | {4, "4 "}, |
3300 | | {5, "5 "}, |
3301 | | {6, "5 "}, |
3302 | | {7, "7 "}, |
3303 | | {8, "8 "}, |
3304 | | {9, "9 and +"}, |
3305 | | {0, NULL} |
3306 | | }; |
3307 | | |
3308 | | static const value_string cs_ip_device_routing_bfi_distribution_range_vals[] = { |
3309 | | {0, "0 "}, |
3310 | | {1, "0-1 "}, |
3311 | | {2, "1-2 "}, |
3312 | | {3, "2-3 "}, |
3313 | | {4, "3 and +"}, |
3314 | | {0, NULL} |
3315 | | }; |
3316 | | |
3317 | | static const value_string cs_ip_device_routing_200ms_bfi_distribution_range_vals[] = { |
3318 | | {0, "< 10% "}, |
3319 | | {1, "< 20% "}, |
3320 | | {2, "< 40% "}, |
3321 | | {3, "< 60% "}, |
3322 | | {4, ">= 60%"}, |
3323 | | {0, NULL} |
3324 | | }; |
3325 | | |
3326 | | static const value_string cs_ip_device_routing_consecutive_rtp_lost_range_vals[] = { |
3327 | | {0, "1 "}, |
3328 | | {1, "2 "}, |
3329 | | {2, "3 "}, |
3330 | | {3, "4 "}, |
3331 | | {4, "5 and +"}, |
3332 | | {0, NULL} |
3333 | | }; |
3334 | | |
3335 | | static void |
3336 | | decode_cs_ip_device_routing(proto_tree *tree _U_, tvbuff_t *tvb, |
3337 | | packet_info *pinfo, unsigned offset, unsigned length) |
3338 | 42 | { |
3339 | 42 | uint8_t command; |
3340 | 42 | proto_tree *ua3g_body_tree = tree, *ua3g_param_tree; |
3341 | 42 | proto_item *ua3g_param_item; |
3342 | 42 | int i, parameter_id, parameter_length; |
3343 | | |
3344 | 42 | command = tvb_get_uint8(tvb, offset); |
3345 | | |
3346 | | /* add text to the frame "INFO" column */ |
3347 | 42 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(command, str_command_cs_ip_device_routing, "Unknown")); |
3348 | | |
3349 | 42 | if (!ua3g_body_tree) |
3350 | 0 | return; |
3351 | | |
3352 | 42 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_ip_cs, tvb, offset, 1, ENC_BIG_ENDIAN); |
3353 | 42 | offset++; |
3354 | 42 | length--; |
3355 | | |
3356 | 42 | switch (command) { |
3357 | 0 | case 0x00: |
3358 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_cs_ip_device_routing_cmd00_vta_type, tvb, offset, 1, ENC_BIG_ENDIAN); |
3359 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_cs_ip_device_routing_cmd00_characteristic_number, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
3360 | 0 | break; |
3361 | 3 | case 0x01: |
3362 | 3 | { |
3363 | 3 | int j = 0; |
3364 | 3 | if (length == 1) { |
3365 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_cs_ip_device_routing_cmd01_incident_0, tvb, offset, 1, ENC_BIG_ENDIAN); |
3366 | 3 | } else { |
3367 | 463 | while (length >0) { |
3368 | 460 | j++; |
3369 | 460 | proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_cs_ip_device_routing_param_identifier, tvb, offset, 1, |
3370 | 460 | tvb_get_uint8(tvb, offset), "Parameter %d Identifier: %d", |
3371 | 460 | j, tvb_get_uint8(tvb, offset)); |
3372 | 460 | offset++; |
3373 | 460 | length--; |
3374 | 460 | } |
3375 | 3 | } |
3376 | 3 | break; |
3377 | 0 | } |
3378 | 31 | case 0x02: |
3379 | 378 | while (length > 0) { |
3380 | 366 | parameter_id = tvb_get_uint8(tvb, offset); |
3381 | 366 | parameter_length = tvb_get_uint8(tvb, offset + 1); |
3382 | | |
3383 | 366 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter, tvb, offset, |
3384 | 366 | parameter_length + 2, parameter_id, |
3385 | 366 | "%s", val_to_str_const(parameter_id, ip_device_routing_cmd_get_param_req_vals, "Unknown")); |
3386 | 366 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
3387 | | |
3388 | 366 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
3389 | 366 | offset++; |
3390 | 366 | length--; |
3391 | | |
3392 | 366 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter_length, tvb, offset, 1, ENC_BIG_ENDIAN); |
3393 | 366 | offset++; |
3394 | 366 | length--; |
3395 | | |
3396 | 366 | if (parameter_length > 0) { |
3397 | 216 | switch (parameter_id) { |
3398 | 44 | case 0x00: /* Firmware Version */ |
3399 | 44 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter_firmware_version, tvb, offset, 2, ENC_BIG_ENDIAN); |
3400 | 44 | break; |
3401 | 16 | case 0x01: /* Firmware Version (same as above, different format) */ |
3402 | 16 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter_tscip_version, tvb, offset, 3, ENC_BIG_ENDIAN); |
3403 | 16 | break; |
3404 | 6 | case 0x02: /* DHCP IP Address */ |
3405 | 21 | case 0x03: /* Local IP Address */ |
3406 | 22 | case 0x04: /* Subnetwork Mask */ |
3407 | 62 | case 0x05: /* Router IP Address */ |
3408 | 63 | case 0x06: /* TFTP IP Address */ |
3409 | 75 | case 0x07: /* Main CPU Address */ |
3410 | 75 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter_ip, tvb, offset, 4, ENC_BIG_ENDIAN); |
3411 | 75 | break; |
3412 | 4 | case 0x08: /* Default Codec */ |
3413 | 4 | { |
3414 | 4 | if (parameter_length <= 8) { |
3415 | 3 | 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); |
3416 | 3 | } else { |
3417 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter_default_codec_bytes, tvb, offset, parameter_length, ENC_NA); |
3418 | 1 | } |
3419 | 4 | break; |
3420 | 63 | } |
3421 | 1 | case 0x09: /* Ethernet Drivers Config */ |
3422 | 1 | { |
3423 | 1 | if (parameter_length == 2) { |
3424 | 0 | 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); |
3425 | 0 | 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_ASCII); |
3426 | 1 | } else if (parameter_length == 4) { |
3427 | 0 | 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); |
3428 | 0 | 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_ASCII); |
3429 | 0 | 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); |
3430 | 0 | 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_ASCII); |
3431 | 1 | } else { |
3432 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter_value, tvb, offset, parameter_length, ENC_NA); |
3433 | 1 | } |
3434 | 1 | break; |
3435 | 63 | } |
3436 | 4 | case 0x0A: /* MAC Address */ |
3437 | 11 | case 0x0B: /* Pseudo MAC Address */ |
3438 | 11 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter_mac_address, tvb, offset, 6, ENC_NA); |
3439 | 11 | break; |
3440 | 65 | default: |
3441 | 65 | if (parameter_length <= 8) { |
3442 | 7 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter_uint, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
3443 | 58 | } else { |
3444 | 58 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd02_parameter_value, tvb, offset, parameter_length, ENC_NA); |
3445 | 58 | } |
3446 | 65 | break; |
3447 | 216 | } |
3448 | | |
3449 | 197 | offset += parameter_length; |
3450 | 197 | length -= parameter_length; |
3451 | 197 | } |
3452 | 366 | } |
3453 | 12 | break; |
3454 | 12 | case 0x03: |
3455 | 7 | { |
3456 | 48 | while (length > 0) { |
3457 | 47 | parameter_id = tvb_get_uint8(tvb, offset); |
3458 | 47 | parameter_length = tvb_get_ntohs(tvb, offset + 1); |
3459 | | |
3460 | 47 | ua3g_param_item = proto_tree_add_uint_format(ua3g_body_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter, tvb, offset, |
3461 | 47 | parameter_length+3, parameter_id, "%s", |
3462 | 47 | val_to_str_const(parameter_id, cs_ip_device_routing_03_parameter_id_vals, "Unknown")); |
3463 | 47 | ua3g_param_tree = proto_item_add_subtree(ua3g_param_item, ett_ua3g_param); |
3464 | | |
3465 | 47 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter, tvb, offset, 1, ENC_BIG_ENDIAN); |
3466 | 47 | offset++; |
3467 | 47 | length--; |
3468 | | |
3469 | 47 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_length, tvb, offset, 2, ENC_BIG_ENDIAN); |
3470 | 47 | offset += 2; |
3471 | 47 | length -= 2; |
3472 | | |
3473 | 47 | if (parameter_length > 0) { |
3474 | 14 | switch (parameter_id) { |
3475 | 0 | case 0x06: /* Type Of Equipment */ |
3476 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_type_of_equip, tvb, offset, 2, ENC_BIG_ENDIAN); |
3477 | 0 | break; |
3478 | 0 | case 0x08: /* Local IP Address */ |
3479 | 0 | case 0x09: /* Distant IP Address */ |
3480 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_ip, tvb, offset, 4, ENC_BIG_ENDIAN); |
3481 | 0 | break; |
3482 | 0 | case 0x0A: /* Local ID */ |
3483 | 1 | case 0x0B: /* Remote ID */ |
3484 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_string, tvb, offset, parameter_length, ENC_ASCII); |
3485 | 1 | break; |
3486 | 0 | case 0x0F: /* Codec */ |
3487 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_codec, tvb, offset, 1, ENC_BIG_ENDIAN); |
3488 | 0 | break; |
3489 | 0 | case 0x10: /* VAD */ |
3490 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_vad, tvb, offset, 1, ENC_NA); |
3491 | 0 | break; |
3492 | 0 | case 0x11: /* ECE */ |
3493 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_ece, tvb, offset, 1, ENC_NA); |
3494 | 0 | break; |
3495 | 0 | case 0x12: /* Voice Mode */ |
3496 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_voice_mode, tvb, offset, 1, ENC_BIG_ENDIAN); |
3497 | 0 | break; |
3498 | 0 | case 0x1B: /* Delay Distribution */ |
3499 | 0 | for (i = 0; i < parameter_length/2; i++) { |
3500 | 0 | unsigned off = (offset + (i*2)); |
3501 | 0 | uint16_t val = tvb_get_ntohs(tvb, off); |
3502 | 0 | proto_tree_add_uint_format_value(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_delay_distribution, tvb, off, |
3503 | 0 | 2, val, "%s: %d", val_to_str_const(i, cs_ip_device_routing_delay_distribution_range_vals, "Unknown"), val); |
3504 | 0 | } |
3505 | 0 | break; |
3506 | 0 | case 0x1E: /* Consecutive BFI */ |
3507 | 0 | for (i = 0; i < parameter_length/2; i++) { |
3508 | 0 | unsigned off = (offset + (i*2)); |
3509 | 0 | uint16_t val = tvb_get_ntohs(tvb, off); |
3510 | 0 | proto_tree_add_uint_format_value(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_consecutive_bfi, tvb, off, |
3511 | 0 | 2, val, "%s: %d", val_to_str_const(i, cs_ip_device_routing_0_9_range_vals, "Unknown"), val); |
3512 | 0 | } |
3513 | 0 | break; |
3514 | 0 | case 0x1F: /* BFI Distribution */ |
3515 | 0 | for (i = 0; i < parameter_length/2; i++) { |
3516 | 0 | unsigned off = (offset + (i*2)); |
3517 | 0 | uint16_t val = tvb_get_ntohs(tvb, off); |
3518 | 0 | proto_tree_add_uint_format_value(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_bfi_distribution, tvb, off, |
3519 | 0 | 2, val, "%s: %d", val_to_str_const(i, cs_ip_device_routing_bfi_distribution_range_vals, "Unknown"), val); |
3520 | 0 | } |
3521 | 0 | break; |
3522 | 0 | case 0x20: /* Jitter Depth Distribution */ |
3523 | 0 | for (i = 0; i < parameter_length/4; i++) { |
3524 | 0 | unsigned off = (offset + (i*4)); |
3525 | 0 | uint32_t val = tvb_get_ntohs(tvb, off); |
3526 | 0 | proto_tree_add_uint_format_value(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_jitter_depth_distribution, tvb, off, |
3527 | 0 | 2, val, "%s: %d", val_to_str_const(i, cs_ip_device_routing_0_9_range_vals, "Unknown"), val); |
3528 | 0 | } |
3529 | 0 | break; |
3530 | 0 | case 0x26: /* Firmware Version */ |
3531 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_firmware_version, tvb, offset, 2, ENC_BIG_ENDIAN); |
3532 | 0 | break; |
3533 | 1 | case 0x2E: /* 802.1 Q Used */ |
3534 | 1 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_8021Q_used, tvb, offset, 1, ENC_NA); |
3535 | 1 | break; |
3536 | 0 | case 0x2F: /* 802.1p Priority */ |
3537 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_8021P_priority, tvb, offset, 1, ENC_BIG_ENDIAN); |
3538 | 0 | break; |
3539 | 0 | case 0x30: /* VLAN Id */ |
3540 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_vlan_id, tvb, offset, 2, ENC_BIG_ENDIAN); |
3541 | 0 | break; |
3542 | 0 | case 0x31: /* DiffServ */ |
3543 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_diffserv, tvb, offset, 1, ENC_BIG_ENDIAN); |
3544 | 0 | break; |
3545 | 0 | case 0x3D: /* 200 ms BFI Distribution */ |
3546 | 0 | for (i = 0; i < parameter_length/2; i++) { |
3547 | 0 | unsigned off = (offset + (i*2)); |
3548 | 0 | uint16_t val = tvb_get_ntohs(tvb, off); |
3549 | 0 | proto_tree_add_uint_format_value(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_bfi_distribution_200ms, tvb, off, |
3550 | 0 | 2, val, "%s: %d", val_to_str_const(i, cs_ip_device_routing_200ms_bfi_distribution_range_vals, "Unknown"), val); |
3551 | 0 | } |
3552 | 0 | break; |
3553 | 2 | case 0x3E: /* Consecutive RTP Lost */ |
3554 | 20 | for (i = 0; i < parameter_length/2; i++) { |
3555 | 18 | unsigned off = (offset + (i*2)); |
3556 | 18 | uint16_t val = tvb_get_ntohs(tvb, off); |
3557 | 18 | proto_tree_add_uint_format_value(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_consecutive_rtp_lost, tvb, off, |
3558 | 18 | 2, val, "%s: %d", val_to_str_const(i, cs_ip_device_routing_consecutive_rtp_lost_range_vals, "Unknown"), val); |
3559 | 18 | } |
3560 | 2 | break; |
3561 | 0 | case 0x01: /* Date Of End Of Communication */ |
3562 | 0 | case 0x02: /* Node Number */ |
3563 | 0 | case 0x03: /* Ticket Protocol Version */ |
3564 | 0 | case 0x0C: /* Call Duration (second) */ |
3565 | 0 | case 0x0D: /* Local SSRC */ |
3566 | 0 | case 0x0E: /* Distant SSRC */ |
3567 | 0 | case 0x13: /* Transmitted Framing (ms) */ |
3568 | 0 | case 0x14: /* Received Framing (ms) */ |
3569 | 0 | case 0x15: /* Framing Changes */ |
3570 | 0 | case 0x16: /* Number Of RTP Packets Received */ |
3571 | 0 | case 0x17: /* Number Of RTP Packets Sent */ |
3572 | 0 | case 0x18: /* Number Of RTP Packets Lost */ |
3573 | 0 | case 0x19: /* Total Silence Detected (second) */ |
3574 | 0 | case 0x1A: /* Number Of SID Received */ |
3575 | 0 | case 0x1C: /* Maximum Delay (ms) */ |
3576 | 0 | case 0x1D: /* Number Of DTMF Received */ |
3577 | 0 | case 0x21: /* Number Of ICMP Host Unreachable */ |
3578 | 0 | case 0x29: /* DSP Framing (ms) */ |
3579 | 0 | case 0x2A: /* Transmitter SID */ |
3580 | 0 | case 0x2D: /* Minimum Delay (ms) */ |
3581 | 0 | case 0x37: /* Encryption */ |
3582 | 10 | default: |
3583 | 10 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_cs_ip_device_routing_cmd03_parameter_uint, tvb, offset, parameter_length, ENC_BIG_ENDIAN); |
3584 | 10 | break; |
3585 | 14 | } |
3586 | | |
3587 | 8 | offset += parameter_length; |
3588 | 8 | length -= parameter_length; |
3589 | 8 | } |
3590 | 47 | } |
3591 | 1 | break; |
3592 | 7 | } |
3593 | 1 | default: |
3594 | 1 | break; |
3595 | 42 | } |
3596 | 42 | } |
3597 | | |
3598 | | |
3599 | | /*----------------------------------------------------------------------------- |
3600 | | UNSOLICITED MESSAGE - 9Fh/1Fh (MESSAGE FROM THE TERMINAL) |
3601 | | VERSION RESPONSE - 21h (MESSAGE FROM THE TERMINAL) |
3602 | | ---------------------------------------------------------------------------*/ |
3603 | | static const value_string str_command_unsolicited_msg[] = { |
3604 | | {0x00, "Hardware Reset Acknowledge"}, |
3605 | | {0x01, "Software Reset Acknowledge"}, |
3606 | | {0x02, "Illegal Command Received"}, |
3607 | | {0x05, "Subdevice Down"}, |
3608 | | {0x06, "Segment Failure"}, |
3609 | | {0x07, "UA Device Event"}, |
3610 | | {0, NULL} |
3611 | | }; |
3612 | | static const value_string str_unsolicited_msg_other_info_1[] = { |
3613 | | {0x00, "Link Is TDM"}, |
3614 | | {0x01, "Link Is IP"}, |
3615 | | {0, NULL} |
3616 | | }; |
3617 | | static const value_string str_unsolicited_msg_other_info_2[] = { |
3618 | | {0x00, "Download Allowed"}, |
3619 | | {0x01, "Download Refused"}, |
3620 | | {0, NULL} |
3621 | | }; |
3622 | | static const true_false_string tfs_export_full = { |
3623 | | "Full (Thales)", |
3624 | | "Export (No Thales)" |
3625 | | }; |
3626 | | static const true_false_string tfs_fast_gigabit = { |
3627 | | "Gigabit", |
3628 | | "Fast" |
3629 | | }; |
3630 | | static const true_false_string tfs_2g_3g = { |
3631 | | "3G/80x8", |
3632 | | "2G/40x8" |
3633 | | }; |
3634 | | static const value_string str_unsolicited_msg_hard_config_chip[] = { |
3635 | | {0x01, "Ivanoe 1"}, |
3636 | | {0x02, "Ivanoe 2"}, |
3637 | | {0x03, "Reserved"}, |
3638 | | {0, NULL} |
3639 | | }; |
3640 | | static const value_string str_unsolicited_msg_hard_config_flash[] = { |
3641 | | {0x00, "No Flash"}, |
3642 | | {0x01, "128 Kbytes"}, |
3643 | | {0x02, "256 Kbytes"}, |
3644 | | {0x03, "512 Kbytes"}, |
3645 | | {0x04, "1 Mbytes"}, |
3646 | | {0x05, "2 Mbytes"}, |
3647 | | {0x06, "4 Mbytes"}, |
3648 | | {0x07, "8 Mbytes"}, |
3649 | | {0, NULL} |
3650 | | }; |
3651 | | static const value_string str_unsolicited_msg_hard_config_ram[] = { |
3652 | | {0x00, "No External RAM"}, |
3653 | | {0x01, "128 Kbytes"}, |
3654 | | {0x02, "256 Kbytes"}, |
3655 | | {0x03, "512 Kbytes"}, |
3656 | | {0x04, "1 Mbytes"}, |
3657 | | {0x05, "2 Mbytes"}, |
3658 | | {0x06, "4 Mbytes"}, |
3659 | | {0x07, "8 Mbytes"}, |
3660 | | {0, NULL} |
3661 | | }; |
3662 | | |
3663 | | /* TODO: these values are clearly wrong - needs to fit into 2 bits */ |
3664 | | static const value_string str_unsolicited_msg_subtype[] = { |
3665 | | {0x03, "2x40"}, |
3666 | | {0x04, "1x20"}, |
3667 | | {0x05, "1x20"}, |
3668 | | {0, NULL} |
3669 | | }; |
3670 | | static const value_string str_unsolicited_msg_generation[] = { |
3671 | | {0x02, "3"}, |
3672 | | {0, NULL} |
3673 | | }; |
3674 | | static const value_string str_unsolicited_msg_design[] = { |
3675 | | {0x00, "Alpha"}, |
3676 | | {0, NULL} |
3677 | | }; |
3678 | | static const value_string str_unsolicited_msg_hard_vta_type[] = { |
3679 | | {0x03, "MR2 (4035)"}, |
3680 | | {0x05, "VLE (4010)"}, |
3681 | | {0x07, "LE (4020)"}, |
3682 | | {0, NULL} |
3683 | | }; |
3684 | | static const value_string str_unsolicited_msg_hard_design[] = { |
3685 | | {0x06, "Alpha"}, |
3686 | | {0, NULL} |
3687 | | }; |
3688 | | |
3689 | | /* TODO: these values are clearly wrong - needs to fit into 2 bits */ |
3690 | | static const value_string str_unsolicited_msg_hard_subtype[] = { |
3691 | | {0x06, "2x40"}, |
3692 | | {0x07, "1x20"}, |
3693 | | {0x08, "1x20"}, |
3694 | | {0, NULL} |
3695 | | }; |
3696 | | |
3697 | | static void |
3698 | | decode_unsolicited_msg(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, |
3699 | | unsigned offset, unsigned length, uint8_t opcode) |
3700 | 3 | { |
3701 | 3 | uint8_t command; |
3702 | 3 | proto_tree *ua3g_body_tree = tree, *ua3g_param_tree; |
3703 | | |
3704 | 3 | command = tvb_get_uint8(tvb, offset); |
3705 | | |
3706 | 3 | if (opcode != 0x21) { |
3707 | | /* add text to the frame "INFO" column */ |
3708 | 3 | col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(command, str_command_unsolicited_msg, "Unknown")); |
3709 | | |
3710 | 3 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_command_unsolicited_msg, tvb, offset, 1, ENC_BIG_ENDIAN); |
3711 | 3 | offset++; |
3712 | 3 | length--; |
3713 | 3 | } else { |
3714 | 0 | command = 0xFF; /* Opcode = 0x21 */ |
3715 | 0 | } |
3716 | | |
3717 | 3 | switch (command) |
3718 | 3 | { |
3719 | 0 | case 0x00: /* Hardware Reset Acknowledge */ |
3720 | 0 | case 0x01: /* Software Reset Acknowledge */ |
3721 | 2 | case 0xFF: /* Opcode = 0x21 : Version Response */ |
3722 | 2 | { |
3723 | 2 | int link, vta_type; |
3724 | | |
3725 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_device_type, tvb, offset, 1, ENC_BIG_ENDIAN); |
3726 | 2 | offset++; |
3727 | 2 | length--; |
3728 | | |
3729 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_firmware_version, tvb, offset, 2, ENC_BIG_ENDIAN); |
3730 | 2 | offset += 2; |
3731 | 2 | length -= 2; |
3732 | | |
3733 | 2 | if (opcode != 0x21) { |
3734 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_self_test_result, tvb, offset, 1, ENC_BIG_ENDIAN); |
3735 | 2 | offset++; |
3736 | 2 | length--; |
3737 | 2 | } |
3738 | | |
3739 | 2 | vta_type = tvb_get_uint8(tvb, offset); |
3740 | | |
3741 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_vta_type, tvb, offset, 1, ENC_BIG_ENDIAN); |
3742 | 2 | offset++; |
3743 | 2 | length--; |
3744 | | |
3745 | 2 | switch (vta_type) |
3746 | 2 | { |
3747 | 0 | case 0x03: |
3748 | 0 | case 0x04: |
3749 | 0 | case 0x05: |
3750 | 0 | { |
3751 | 0 | ua3g_param_tree = proto_tree_add_subtree(ua3g_body_tree, tvb, offset, 1, ett_ua3g_param, NULL, "Characteristic Number"); |
3752 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_unsolicited_msg_char_num_vta_subtype, |
3753 | 0 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3754 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_unsolicited_msg_char_num_generation, |
3755 | 0 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3756 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_unsolicited_msg_char_num_design, |
3757 | 0 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3758 | 0 | offset++; |
3759 | 0 | length--; |
3760 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_other_information, tvb, offset, 1, ENC_BIG_ENDIAN); |
3761 | 0 | offset++; |
3762 | 0 | length--; |
3763 | |
|
3764 | 0 | ua3g_param_tree = proto_tree_add_subtree(ua3g_body_tree, tvb, offset, 1, ett_ua3g_param, NULL, "Hardware Configuration"); |
3765 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_unsolicited_msg_hardware_config_vta_type, |
3766 | 0 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3767 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_unsolicited_msg_hardware_config_design, |
3768 | 0 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3769 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_unsolicited_msg_hardware_config_subtype, |
3770 | 0 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3771 | 0 | offset++; |
3772 | 0 | length--; |
3773 | |
|
3774 | 0 | if (opcode != 0x21) { |
3775 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_hook_status, tvb, offset, 1, ENC_NA); |
3776 | 0 | offset++; |
3777 | 0 | length--; |
3778 | 0 | } |
3779 | 0 | break; |
3780 | 0 | } |
3781 | 2 | default: |
3782 | 2 | { |
3783 | 2 | link = tvb_get_uint8(tvb, offset); |
3784 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_other_information_1, tvb, offset, 1, ENC_BIG_ENDIAN); |
3785 | 2 | offset++; |
3786 | 2 | length--; |
3787 | | |
3788 | 2 | if (link == 0x00) { |
3789 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_hardware_version, tvb, offset, 1, ENC_BIG_ENDIAN); |
3790 | 0 | offset++; |
3791 | 0 | length--; |
3792 | |
|
3793 | 0 | ua3g_param_tree = proto_tree_add_subtree(ua3g_body_tree, tvb, offset, 1, ett_ua3g_param, NULL, "Hardware Configuration"); |
3794 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_unsolicited_msg_hardware_config_hard_config_chip, |
3795 | 0 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3796 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_unsolicited_msg_hardware_config_hard_config_flash, |
3797 | 0 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3798 | 0 | proto_tree_add_item(ua3g_param_tree, hf_ua3g_unsolicited_msg_hardware_config_config_ram, |
3799 | 0 | tvb, offset, 1, ENC_BIG_ENDIAN); |
3800 | 0 | offset++; |
3801 | 0 | length--; |
3802 | 2 | } else { |
3803 | 2 | static int * const hardware_config[] = { |
3804 | 2 | &hf_ua3g_unsolicited_msg_hardware_config_export_full, |
3805 | 2 | &hf_ua3g_unsolicited_msg_hardware_config_ethernet_hardware, |
3806 | 2 | &hf_ua3g_unsolicited_msg_hardware_config_extended_edition, |
3807 | 2 | &hf_ua3g_unsolicited_msg_hardware_config_wideband, |
3808 | 2 | &hf_ua3g_unsolicited_msg_hardware_config_3g_set, |
3809 | 2 | &hf_ua3g_unsolicited_msg_hardware_config_8082_set, |
3810 | 2 | &hf_ua3g_unsolicited_msg_hardware_config_super_wideband, |
3811 | 2 | NULL |
3812 | 2 | }; |
3813 | | |
3814 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_other_information_2, tvb, offset, 1, ENC_BIG_ENDIAN); |
3815 | 2 | offset++; |
3816 | 2 | length--; |
3817 | | |
3818 | 2 | proto_tree_add_bitmask(ua3g_body_tree, tvb, offset, hf_ua3g_unsolicited_msg_hardware_config, ett_ua3g_param, hardware_config, ENC_NA); |
3819 | 2 | offset++; |
3820 | 2 | length--; |
3821 | 2 | } |
3822 | | |
3823 | 2 | if (opcode != 0x21) { |
3824 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_hook_status, |
3825 | 2 | tvb, offset, 1, ENC_NA); |
3826 | 2 | offset++; |
3827 | 2 | length--; |
3828 | | |
3829 | 2 | if (length > 0) { |
3830 | 2 | if (link == 0x00) { |
3831 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_firmware_datas_patch_version, |
3832 | 0 | tvb, offset, 2, ENC_BIG_ENDIAN); |
3833 | 0 | if (length > 2) { |
3834 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_firmware_version_loader, tvb, |
3835 | 0 | offset+2, 2, ENC_BIG_ENDIAN); |
3836 | 0 | } |
3837 | 2 | } else { |
3838 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_datas_version, tvb, offset, 2, ENC_BIG_ENDIAN); |
3839 | 2 | offset += 2; |
3840 | 2 | length -= 2; |
3841 | | |
3842 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_firmware_version_bootloader, tvb, offset, 2, ENC_BIG_ENDIAN); |
3843 | 2 | offset += 2; |
3844 | 2 | length -= 2; |
3845 | | |
3846 | 2 | if (length >= 1) { |
3847 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_additional_vta_type, tvb, offset, 1, ENC_BIG_ENDIAN); |
3848 | 2 | offset++; |
3849 | 2 | length--; |
3850 | 2 | } |
3851 | | |
3852 | 2 | if (length >= 1) { |
3853 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_capability_info_bluetooth_supported, tvb, offset, 1, ENC_BIG_ENDIAN); |
3854 | 2 | offset++; |
3855 | 2 | length--; |
3856 | 2 | } |
3857 | | |
3858 | 2 | if (length >= 1) { |
3859 | 2 | static int * const capability_info[] = { |
3860 | 2 | &hf_ua3g_unsolicited_msg_capability_info_vpn, |
3861 | 2 | &hf_ua3g_unsolicited_msg_capability_info_ipsec, |
3862 | 2 | &hf_ua3g_unsolicited_msg_capability_info_dtls, |
3863 | 2 | NULL |
3864 | 2 | }; |
3865 | 2 | 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); |
3866 | 2 | offset++; |
3867 | 2 | length--; |
3868 | 2 | } |
3869 | | |
3870 | 2 | if (length >= 1) { |
3871 | 2 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_capability_info_wlan_status, tvb, offset, 1, ENC_BIG_ENDIAN); |
3872 | 2 | offset++; |
3873 | 2 | length--; |
3874 | 2 | } |
3875 | | |
3876 | 21 | while(length > 0) { |
3877 | 19 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_capability_info_reserved, tvb, offset, 1, ENC_BIG_ENDIAN); |
3878 | 19 | offset++; |
3879 | 19 | length--; |
3880 | 19 | } |
3881 | 2 | } |
3882 | 2 | } |
3883 | 2 | } |
3884 | 2 | break; |
3885 | 0 | } |
3886 | 2 | } |
3887 | 0 | break; |
3888 | 2 | } |
3889 | 0 | case 0x02: /* Illegal Command Received */ |
3890 | 0 | { |
3891 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_opcode_of_bad_command, tvb, offset, 1, ENC_BIG_ENDIAN); |
3892 | |
|
3893 | 0 | if (length > 1) { |
3894 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_next_byte_of_bad_command, tvb, offset+1, length-1, ENC_NA); |
3895 | 0 | } |
3896 | 0 | break; |
3897 | 2 | } |
3898 | 0 | case 0x05: /* Subdevice Down */ |
3899 | 0 | { |
3900 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_subdevice_address, tvb, offset, 1, ENC_BIG_ENDIAN); |
3901 | 0 | break; |
3902 | 2 | } |
3903 | 0 | case 0x06: /* Segment Failure */ |
3904 | 0 | { |
3905 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_segment_failure_t, tvb, offset, 1, ENC_NA); |
3906 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_segment_failure_num, tvb, offset, 1, ENC_NA); |
3907 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_segment_failure_s, tvb, offset, 1, ENC_NA); |
3908 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_segment_failure_l, tvb, offset, 1, ENC_NA); |
3909 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_opcode_bad_segment, tvb, offset+1, 1, ENC_BIG_ENDIAN); |
3910 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_next_byte_of_bad_segment, tvb, offset+2, 1, ENC_BIG_ENDIAN); |
3911 | 0 | break; |
3912 | 2 | } |
3913 | 0 | case 0x07: /* UA Device Event */ |
3914 | 0 | { |
3915 | 0 | proto_tree_add_item(ua3g_body_tree, hf_ua3g_unsolicited_msg_device_event, tvb, offset, 1, ENC_BIG_ENDIAN); |
3916 | 0 | break; |
3917 | 2 | } |
3918 | 1 | default: |
3919 | 1 | { |
3920 | 1 | break; |
3921 | 2 | } |
3922 | 3 | } |
3923 | 3 | } |
3924 | | |
3925 | | |
3926 | | /*----------------------------------------------------------------------------- |
3927 | | NON-DIGIT KEY PUSHED - 20h (MESSAGE FROM THE TERMINAL) |
3928 | | DIGIT KEY RELEASED - 26h (MESSAGE FROM THE TERMINAL) |
3929 | | KEY RELEASED - 2Ah (MESSAGE FROM THE TERMINAL) |
3930 | | TM KEY PUSHED - 2Dh (MESSAGE FROM THE TERMINAL) |
3931 | | ---------------------------------------------------------------------------*/ |
3932 | | static void |
3933 | | decode_key_number(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, |
3934 | | unsigned offset, unsigned length) |
3935 | 2 | { |
3936 | | #if 0 |
3937 | | proto_tree *ua3g_body_tree; |
3938 | | static const value_string str_first_parameter[] = { |
3939 | | {0x01, "Production Test Command"}, |
3940 | | {0x06, "Reserved For Compatibility"}, |
3941 | | {0x3B, "Volume"}, |
3942 | | {0x42, "Subdevice Address"}, |
3943 | | {0, NULL} |
3944 | | }; |
3945 | | #endif |
3946 | | |
3947 | 2 | if (!tree) |
3948 | 0 | return; |
3949 | | |
3950 | 2 | if (length > 0) { |
3951 | 2 | proto_tree_add_uint_format_value(tree, hf_ua3g_key_number, tvb, offset, 1, |
3952 | 2 | tvb_get_uint8(tvb, offset), "Row %d, Column %d", |
3953 | 2 | (tvb_get_uint8(tvb, offset) & 0xF0), (tvb_get_uint8(tvb, offset) & 0x0F)); |
3954 | 2 | } |
3955 | 2 | } |
3956 | | |
3957 | | |
3958 | | /*----------------------------------------------------------------------------- |
3959 | | I'M HERE - 22h - Only for UA NOE (MESSAGE FROM THE TERMINAL) |
3960 | | ---------------------------------------------------------------------------*/ |
3961 | | static void |
3962 | | decode_i_m_here(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, unsigned offset) |
3963 | 0 | { |
3964 | 0 | proto_tree_add_item(tree, hf_ua3g_i_m_here_id_code, tvb, offset, 1, ENC_BIG_ENDIAN); |
3965 | 0 | } |
3966 | | |
3967 | | |
3968 | | /*----------------------------------------------------------------------------- |
3969 | | RESPONSE STATUS INQUIRY - 23h (MESSAGE FROM THE TERMINAL) |
3970 | | SPECIAL KEY STATUS - 29h (MESSAGE FROM THE TERMINAL) |
3971 | | ---------------------------------------------------------------------------*/ |
3972 | | static const true_false_string tfs_special_key_parameters = { "Not Received Default In Effect", "Downloaded Values In Effect" }; |
3973 | | static const true_false_string tfs_hookswitch_status = {"On Hook", "Off Hook"}; |
3974 | | static const true_false_string tfs_released_pressed = { "Released", "Pressed" }; |
3975 | | |
3976 | | static void |
3977 | | decode_special_key(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, |
3978 | | unsigned offset, uint8_t opcode) |
3979 | 3 | { |
3980 | 3 | static int * const special_keys[] = { |
3981 | 3 | &hf_ua3g_special_key_shift, |
3982 | 3 | &hf_ua3g_special_key_ctrl, |
3983 | 3 | &hf_ua3g_special_key_alt, |
3984 | 3 | &hf_ua3g_special_key_cmd, |
3985 | 3 | &hf_ua3g_special_key_shift_prime, |
3986 | 3 | &hf_ua3g_special_key_ctrl_prime, |
3987 | 3 | &hf_ua3g_special_key_alt_prime, |
3988 | 3 | &hf_ua3g_special_key_cmd_prime, |
3989 | 3 | NULL |
3990 | 3 | }; |
3991 | | |
3992 | 3 | if (opcode == 0x23) { |
3993 | 2 | proto_tree_add_item(tree, hf_ua3g_special_key_param_dtmf, tvb, offset, 1, ENC_NA); |
3994 | 2 | proto_tree_add_item(tree, hf_ua3g_special_key_hookswitch_status, tvb, offset, 1, ENC_NA); |
3995 | 2 | offset++; |
3996 | 2 | } |
3997 | | |
3998 | 3 | proto_tree_add_bitmask_list(tree, tvb, offset, 1, special_keys, ENC_NA); |
3999 | 3 | } |
4000 | | |
4001 | | |
4002 | | /*----------------------------------------------------------------------------- |
4003 | | SUBDEVICE STATE ENQUIRY - 24h (MESSAGE FROM THE TERMINAL) |
4004 | | ---------------------------------------------------------------------------*/ |
4005 | | static void |
4006 | | decode_subdevice_state(proto_tree *tree, tvbuff_t *tvb, |
4007 | | packet_info *pinfo _U_, unsigned offset) |
4008 | 0 | { |
4009 | 0 | uint8_t info; |
4010 | 0 | int i; |
4011 | |
|
4012 | 0 | for (i = 0; i <= 7; i++) { |
4013 | 0 | info = tvb_get_uint8(tvb, offset); |
4014 | 0 | proto_tree_add_uint_format(tree, hf_ua3g_subdevice_state, tvb, offset, 1, |
4015 | 0 | info & 0x0F, "Subdevice %d State: %d", |
4016 | 0 | i, info & 0x0F); |
4017 | 0 | i++; |
4018 | 0 | proto_tree_add_uint_format(tree, hf_ua3g_subdevice_state, tvb, offset, 1, |
4019 | 0 | (info & 0xF0) >> 4, "Subdevice %d State: %d", |
4020 | 0 | i, (info & 0xF0) >> 4); |
4021 | 0 | offset++; |
4022 | 0 | } |
4023 | 0 | } |
4024 | | |
4025 | | |
4026 | | /*----------------------------------------------------------------------------- |
4027 | | UA3G DISSECTOR |
4028 | | ---------------------------------------------------------------------------*/ |
4029 | | static int |
4030 | | dissect_ua3g(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) |
4031 | 465 | { |
4032 | 465 | int offset = 0; |
4033 | 465 | proto_item *ua3g_item; |
4034 | 465 | proto_tree *ua3g_tree, *ua3g_body_tree; |
4035 | 465 | int length; |
4036 | 465 | uint8_t opcode; |
4037 | 465 | const char* opcode_str; |
4038 | 465 | e_ua_direction *message_direction; |
4039 | | |
4040 | | /* Reject the packet if data is NULL */ |
4041 | 465 | if (data == NULL) |
4042 | 0 | return 0; |
4043 | 465 | message_direction = (e_ua_direction *)data; |
4044 | | |
4045 | 465 | ua3g_item = proto_tree_add_item(tree, proto_ua3g, tvb, 0, -1, ENC_NA); |
4046 | 465 | ua3g_tree = proto_item_add_subtree(ua3g_item, ett_ua3g); |
4047 | | |
4048 | | /* Length of the UA Message */ |
4049 | 465 | length = tvb_get_letohs(tvb, offset); |
4050 | | |
4051 | | /* add text to the frame "INFO" column */ |
4052 | 465 | col_append_str(pinfo->cinfo, COL_INFO, " - UA3G Message:"); |
4053 | | |
4054 | 465 | proto_tree_add_uint(ua3g_tree, hf_ua3g_length, tvb, offset, 2, length); |
4055 | 465 | offset += 2; |
4056 | | |
4057 | | /* Opcode of the UA Message */ |
4058 | 465 | opcode = tvb_get_uint8(tvb, offset); |
4059 | 465 | if (opcode != 0x9f) |
4060 | 456 | opcode = (opcode & 0x7f); |
4061 | | |
4062 | | /* Useful for a research in wireshark */ |
4063 | 465 | if (*message_direction == SYS_TO_TERM) { |
4064 | 382 | proto_tree_add_uint(ua3g_tree, hf_ua3g_opcode_sys, tvb, offset, 1, opcode); |
4065 | 382 | opcode_str = val_to_str_ext_const(opcode, &opcodes_vals_sys_ext, "Unknown"); |
4066 | 382 | } else { |
4067 | 83 | proto_tree_add_uint(ua3g_tree, hf_ua3g_opcode_term, tvb, offset, 1, opcode); |
4068 | 83 | opcode_str = val_to_str_ext_const(opcode, &opcodes_vals_term_ext, "Unknown"); |
4069 | 83 | } |
4070 | | |
4071 | 465 | offset++; |
4072 | 465 | length--; |
4073 | | |
4074 | | /* add text to the frame "INFO" column */ |
4075 | 465 | col_append_fstr(pinfo->cinfo, COL_INFO, " %s", opcode_str); |
4076 | | |
4077 | 465 | proto_item_append_text(ua3g_item, ", %s", opcode_str); |
4078 | | |
4079 | 465 | ua3g_body_tree = proto_tree_add_subtree(ua3g_tree, tvb, offset, length, ett_ua3g_body, NULL, "UA3G Body"); |
4080 | | |
4081 | 465 | if (*message_direction == SYS_TO_TERM) { |
4082 | 370 | switch (opcode) { |
4083 | 9 | case SC_PRODUCTION_TEST: /* 0x01 */ |
4084 | 9 | { |
4085 | 9 | decode_with_one_parameter(ua3g_body_tree, tvb, pinfo, offset, length, hf_ua3g_opcode_production_test); |
4086 | 9 | break; |
4087 | 0 | } |
4088 | 0 | case SC_SUBDEVICE_RESET: /* 0x06 */ |
4089 | 0 | { |
4090 | 0 | decode_with_one_parameter(ua3g_body_tree, tvb, pinfo, offset, length, hf_ua3g_opcode_subservice_reset); |
4091 | 0 | break; |
4092 | 0 | } |
4093 | 1 | case SC_ARE_YOU_THERE: /* 0x2B */ |
4094 | 1 | { |
4095 | 1 | decode_with_one_parameter(ua3g_body_tree, tvb, pinfo, offset, length, hf_ua3g_opcode_are_you_there); |
4096 | 1 | break; |
4097 | 0 | } |
4098 | 0 | case SC_SET_SPEAKER_VOL: /* 0x3B */ |
4099 | 0 | { |
4100 | 0 | decode_with_one_parameter(ua3g_body_tree, tvb, pinfo, offset, length, hf_ua3g_opcode_set_speaker_vol); |
4101 | 0 | break; |
4102 | 0 | } |
4103 | 1 | case SC_TRACE_ON: /* 0x42 */ |
4104 | 1 | { |
4105 | 1 | decode_with_one_parameter(ua3g_body_tree, tvb, pinfo, offset, length, hf_ua3g_opcode_trace_on); |
4106 | 1 | break; |
4107 | 0 | } |
4108 | 1 | case SC_SUBDEVICE_ESCAPE: /* 0x02 */ |
4109 | 1 | { |
4110 | 1 | decode_subdevice_escape(ua3g_body_tree, tvb, pinfo, offset, length); |
4111 | 1 | break; |
4112 | 0 | } |
4113 | 5 | case SC_SOFT_RESET: /* 0x03 */ |
4114 | 5 | { |
4115 | 5 | decode_software_reset(ua3g_body_tree, tvb, pinfo, offset, length); |
4116 | 5 | break; |
4117 | 0 | } |
4118 | 1 | case SC_IP_PHONE_WARMSTART: /* 0x04 */ |
4119 | 1 | { |
4120 | 1 | decode_ip_phone_warmstart(ua3g_body_tree, tvb, pinfo, offset, length); |
4121 | 1 | break; |
4122 | 0 | } |
4123 | 7 | case SC_SUPER_MSG: /* 0x0B */ |
4124 | 7 | case SC_SUPER_MSG_2: /* 0x17 */ |
4125 | 7 | { |
4126 | 7 | decode_super_msg(ua3g_body_tree, tvb, pinfo, offset, length, opcode); |
4127 | 7 | break; |
4128 | 7 | } |
4129 | 2 | case SC_SEGMENT_MSG: /* 0x0C */ |
4130 | 2 | { |
4131 | 2 | decode_segment_msg(ua3g_body_tree, tvb, pinfo, offset, length); |
4132 | 2 | break; |
4133 | 7 | } |
4134 | 197 | case SC_IP_DEVICE_ROUTING: /* 0x13 */ |
4135 | 197 | { |
4136 | 197 | decode_ip_device_routing(ua3g_body_tree, tvb, pinfo, offset, length); |
4137 | 197 | break; |
4138 | 7 | } |
4139 | 1 | case SC_DEBUG_IN_LINE: /* 0x18 */ |
4140 | 1 | { |
4141 | 1 | decode_debug_in_line(ua3g_body_tree, tvb, pinfo, offset, length); |
4142 | 1 | break; |
4143 | 7 | } |
4144 | 1 | case SC_LED_COMMAND: /* 0x21 */ |
4145 | 1 | { |
4146 | 1 | decode_led_command(ua3g_body_tree, tvb, pinfo, offset); |
4147 | 1 | break; |
4148 | 7 | } |
4149 | 7 | case SC_LCD_LINE_1_CMD: /* 0x27 */ |
4150 | 8 | case SC_LCD_LINE_2_CMD: /* 0x28 */ |
4151 | 8 | { |
4152 | 8 | decode_lcd_line_cmd(ua3g_body_tree, tvb, pinfo, offset, length); |
4153 | 8 | break; |
4154 | 7 | } |
4155 | 1 | case SC_MAIN_VOICE_MODE: /* 0x29 */ |
4156 | 1 | { |
4157 | 1 | decode_main_voice_mode(ua3g_body_tree, tvb, pinfo, offset, length); |
4158 | 1 | break; |
4159 | 7 | } |
4160 | 1 | case SC_SUBDEVICE_METASTATE: /* 0x2C */ |
4161 | 1 | { |
4162 | 1 | decode_subdevice_metastate(ua3g_body_tree, tvb, pinfo, offset); |
4163 | 1 | break; |
4164 | 7 | } |
4165 | 5 | case SC_DWL_DTMF_CLCK_FORMAT: /* 0x30 */ |
4166 | 5 | { |
4167 | 5 | decode_dwl_dtmf_clck_format(ua3g_body_tree, tvb, pinfo, offset, length); |
4168 | 5 | break; |
4169 | 7 | } |
4170 | 6 | case SC_SET_CLCK: /* 0x31 */ |
4171 | 6 | { |
4172 | 6 | decode_set_clck(ua3g_body_tree, tvb, pinfo, offset, length); |
4173 | 6 | break; |
4174 | 7 | } |
4175 | 0 | case SC_VOICE_CHANNEL: /* 0x32 */ |
4176 | 0 | { |
4177 | 0 | decode_voice_channel(ua3g_body_tree, tvb, pinfo, offset, length); |
4178 | 0 | break; |
4179 | 7 | } |
4180 | 1 | case SC_EXTERNAL_RINGING: /* 0x33 */ |
4181 | 1 | { |
4182 | 1 | decode_external_ringing(ua3g_body_tree, tvb, pinfo, offset); |
4183 | 1 | break; |
4184 | 7 | } |
4185 | 1 | case SC_LCD_CURSOR: /* 0x35 */ |
4186 | 1 | { |
4187 | 1 | decode_lcd_cursor(ua3g_body_tree, tvb, pinfo, offset); |
4188 | 1 | break; |
4189 | 7 | } |
4190 | 5 | case SC_DWL_SPECIAL_CHAR: /* 0x36 */ |
4191 | 5 | { |
4192 | 5 | decode_dwl_special_char(ua3g_body_tree, tvb, pinfo, offset, length); |
4193 | 5 | break; |
4194 | 7 | } |
4195 | 1 | case SC_SET_CLCK_TIMER_POS: /* 0x38 */ |
4196 | 1 | { |
4197 | 1 | decode_set_clck_timer_pos(ua3g_body_tree, tvb, pinfo, offset); |
4198 | 1 | break; |
4199 | 7 | } |
4200 | 1 | case SC_SET_LCD_CONTRAST: /* 0x39 */ |
4201 | 1 | { |
4202 | 1 | decode_set_lcd_contrast(ua3g_body_tree, tvb, pinfo, offset); |
4203 | 1 | break; |
4204 | 7 | } |
4205 | 14 | case SC_BEEP: /* 0x3C */ |
4206 | 14 | { |
4207 | 14 | decode_beep(ua3g_body_tree, tvb, pinfo, offset, length); |
4208 | 14 | break; |
4209 | 7 | } |
4210 | 1 | case SC_SIDETONE: /* 0x3D */ |
4211 | 1 | { |
4212 | 1 | decode_sidetone(ua3g_body_tree, tvb, pinfo, offset); |
4213 | 1 | break; |
4214 | 7 | } |
4215 | 7 | case SC_RINGING_CADENCE: /* 0x3E */ |
4216 | 7 | { |
4217 | 7 | decode_ringing_cadence(ua3g_body_tree, tvb, pinfo, offset, length); |
4218 | 7 | break; |
4219 | 7 | } |
4220 | 0 | case SC_MUTE: /* 0x3F */ |
4221 | 0 | { |
4222 | 0 | decode_mute(ua3g_body_tree, tvb, pinfo, offset); |
4223 | 0 | break; |
4224 | 7 | } |
4225 | 2 | case SC_FEEDBACK: /* 0x40 */ |
4226 | 2 | { |
4227 | 2 | decode_feedback(ua3g_body_tree, tvb, pinfo, offset, length); |
4228 | 2 | break; |
4229 | 7 | } |
4230 | 2 | case SC_READ_PERIPHERAL: /* 0x44 */ |
4231 | 3 | case SC_WRITE_PERIPHERAL: /* 0x45 */ |
4232 | 3 | { |
4233 | 3 | decode_r_w_peripheral(ua3g_body_tree, tvb, pinfo, offset, length); |
4234 | 3 | break; |
4235 | 2 | } |
4236 | 1 | case SC_ICON_CMD: /* 0x47 */ |
4237 | 1 | { |
4238 | 1 | decode_icon_cmd(ua3g_body_tree, tvb, pinfo, offset); |
4239 | 1 | break; |
4240 | 2 | } |
4241 | 34 | case SC_AUDIO_CONFIG: /* 0x49 */ |
4242 | 34 | { |
4243 | 34 | decode_audio_config(ua3g_body_tree, tvb, pinfo, offset, length); |
4244 | 34 | break; |
4245 | 2 | } |
4246 | 1 | case SC_AUDIO_PADDED_PATH: /* 0x4A */ |
4247 | 1 | { |
4248 | 1 | decode_audio_padded_path(ua3g_body_tree, tvb, pinfo, offset); |
4249 | 1 | break; |
4250 | 2 | } |
4251 | 1 | case SC_KEY_RELEASE: /* 0x41 */ |
4252 | 1 | { |
4253 | 1 | decode_on_off_level(ua3g_body_tree, tvb, pinfo, offset, length, hf_ua3g_command_key_release); |
4254 | 1 | break; |
4255 | 2 | } |
4256 | 1 | case SC_AMPLIFIED_HANDSET: /* 0x48 */ |
4257 | 1 | { |
4258 | 1 | decode_on_off_level(ua3g_body_tree, tvb, pinfo, offset, length, hf_ua3g_command_amplified_handset); |
4259 | 1 | break; |
4260 | 2 | } |
4261 | 0 | case SC_LOUDSPEAKER: /* 0x4D */ |
4262 | 0 | { |
4263 | 0 | decode_on_off_level(ua3g_body_tree, tvb, pinfo, offset, length, hf_ua3g_command_loudspeaker); |
4264 | 0 | break; |
4265 | 2 | } |
4266 | 1 | case SC_ANNOUNCE: /* 0x4E */ |
4267 | 1 | { |
4268 | 1 | decode_on_off_level(ua3g_body_tree, tvb, pinfo, offset, length, hf_ua3g_command_announce); |
4269 | 1 | break; |
4270 | 2 | } |
4271 | 0 | case SC_RING: /* 0x4F */ |
4272 | 0 | { |
4273 | 0 | decode_ring(ua3g_body_tree, tvb, pinfo, offset); |
4274 | 0 | break; |
4275 | 2 | } |
4276 | 1 | case SC_UA_DWL_PROTOCOL: /* 0x50 */ |
4277 | 1 | { |
4278 | 1 | decode_ua_dwl_protocol(ua3g_body_tree, tvb, pinfo, offset, length); |
4279 | 1 | break; |
4280 | 2 | } |
4281 | | /* Case for UA3G message with only opcode (No body) */ |
4282 | 18 | case SC_NOP: /* 0x00 */ |
4283 | 18 | case SC_HE_ROUTING: /* 0x05 NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4284 | 20 | case SC_LOOPBACK_ON: /* 0x07 */ |
4285 | 20 | case SC_LOOPBACK_OFF: /* 0x08 */ |
4286 | 20 | case SC_VIDEO_ROUTING: /* 0x09 NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4287 | 27 | case SC_REMOTE_UA_ROUTING: /* 0x0D NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4288 | 29 | case SC_VERY_REMOTE_UA_ROUTING: /* 0x0E NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4289 | 30 | case SC_OSI_ROUTING: /* 0x0F NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4290 | 31 | case SC_ABC_A_ROUTING: /* 0x11 NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4291 | 32 | case SC_IBS_ROUTING: /* 0x12 NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4292 | 33 | case SC_M_REFLEX_HUB_ROUTING: /* 0x14 NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4293 | 35 | case SC_START_BUZZER: /* 0x22 */ |
4294 | 35 | case SC_STOP_BUZZER: /* 0x23 */ |
4295 | 36 | case SC_ENABLE_DTMF: /* 0x24 */ |
4296 | 37 | case SC_DISABLE_DTMF: /* 0x25 */ |
4297 | 38 | case SC_CLEAR_LCD_DISP: /* 0x26 */ |
4298 | 38 | case SC_VERSION_INQUIRY: /* 0x2A */ |
4299 | 39 | case SC_VTA_STATUS_INQUIRY: /* 0x2D */ |
4300 | 39 | case SC_SUBDEVICE_STATE: /* 0x2E */ |
4301 | 40 | case SC_AUDIO_IDLE: /* 0x3A */ |
4302 | 43 | case SC_TRACE_OFF: /* 0x43 */ |
4303 | 43 | case SC_ALL_ICONS_OFF: /* 0x46 */ |
4304 | 44 | case SC_RELEASE_RADIO_LINK: /* 0x4B */ |
4305 | 45 | case SC_DECT_HANDOVER: /* 0x4C NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4306 | 47 | default: |
4307 | 47 | { |
4308 | 47 | break; |
4309 | 45 | } |
4310 | 370 | } |
4311 | 370 | } |
4312 | 200 | if (*message_direction == TERM_TO_SYS) { |
4313 | 75 | switch (opcode) { |
4314 | 0 | case CS_DIGIT_DIALED: /* 0x03 */ |
4315 | 0 | { |
4316 | 0 | decode_digit_dialed(ua3g_body_tree, tvb, pinfo, offset); |
4317 | 0 | break; |
4318 | 0 | } |
4319 | 0 | case CS_SUBDEVICE_MSG: /* 0x04 */ |
4320 | 0 | { |
4321 | 0 | decode_subdevice_msg(ua3g_body_tree, tvb, pinfo, offset, length); |
4322 | 0 | break; |
4323 | 0 | } |
4324 | 4 | case CS_SUPER_MSG: /* 0x0B */ |
4325 | 8 | case CS_SUPER_MSG_2: /* 0x17 */ |
4326 | 8 | { |
4327 | 8 | decode_super_msg(ua3g_body_tree, tvb, pinfo, offset, length, opcode); |
4328 | 8 | break; |
4329 | 4 | } |
4330 | 1 | case CS_SEGMENT_MSG: /* 0x0C */ |
4331 | 1 | { |
4332 | 1 | decode_segment_msg(ua3g_body_tree, tvb, pinfo, offset, length); |
4333 | 1 | break; |
4334 | 4 | } |
4335 | 42 | case CS_IP_DEVICE_ROUTING: /* 0x13 */ |
4336 | 42 | { |
4337 | 42 | decode_cs_ip_device_routing(ua3g_body_tree, tvb, pinfo, offset, length); |
4338 | 42 | break; |
4339 | 4 | } |
4340 | 1 | case CS_DEBUG_IN_LINE: /* 0x18 */ |
4341 | 1 | { |
4342 | 1 | decode_debug_in_line(ua3g_body_tree, tvb, pinfo, offset, length); |
4343 | 1 | break; |
4344 | 4 | } |
4345 | 0 | case CS_NON_DIGIT_KEY_PUSHED: /* 0x20 Key translation not sure */ |
4346 | 1 | case CS_DIGIT_KEY_RELEASED: /* 0x26 Key translation not sure */ |
4347 | 2 | case CS_KEY_RELEASED: /* 0x2A */ |
4348 | 2 | case CS_TM_KEY_PUSHED: /* 0x2D Key translation not sure */ |
4349 | 2 | { |
4350 | 2 | decode_key_number(ua3g_body_tree, tvb, pinfo, offset, length); |
4351 | 2 | break; |
4352 | 2 | } |
4353 | 3 | case CS_UNSOLICITED_MSG: /* 0x9F (0x1F) */ |
4354 | 3 | case CS_VERSION_RESPONSE: /* 0x21 */ |
4355 | 3 | { |
4356 | 3 | decode_unsolicited_msg(ua3g_body_tree, tvb, pinfo, offset, length, opcode); |
4357 | 3 | break; |
4358 | 3 | } |
4359 | 0 | case CS_I_M_HERE: /* 0x22 */ |
4360 | 0 | { |
4361 | 0 | decode_i_m_here(ua3g_body_tree, tvb, pinfo, offset); |
4362 | 0 | break; |
4363 | 3 | } |
4364 | 2 | case CS_RSP_STATUS_INQUIRY: /* 0x23 */ |
4365 | 3 | case CS_SPECIAL_KEY_STATUS: /* 0x29 */ |
4366 | 3 | { |
4367 | 3 | decode_special_key(ua3g_body_tree, tvb, pinfo, offset, opcode); |
4368 | 3 | break; |
4369 | 2 | } |
4370 | 0 | case CS_SUBDEVICE_STATE: /* 0x24 */ |
4371 | 0 | { |
4372 | 0 | decode_subdevice_state(ua3g_body_tree, tvb, pinfo, offset); |
4373 | 0 | break; |
4374 | 2 | } |
4375 | 1 | case CS_PERIPHERAL_CONTENT: /* 0x2B */ |
4376 | 1 | { |
4377 | 1 | decode_r_w_peripheral(ua3g_body_tree, tvb, pinfo, offset, length); |
4378 | 1 | break; |
4379 | 2 | } |
4380 | 2 | case CS_UA_DWL_PROTOCOL: /* 0x50 */ |
4381 | 2 | { |
4382 | 2 | decode_ua_dwl_protocol(ua3g_body_tree, tvb, pinfo, offset, length); |
4383 | 2 | break; |
4384 | 2 | } |
4385 | | /* Case for UA3G message with only opcode (No body) */ |
4386 | 6 | case CS_NOP_ACK: /* 0x00 */ |
4387 | 8 | case CS_HANDSET_OFFHOOK: /* 0x01 */ |
4388 | 8 | case CS_HANDSET_ONHOOK: /* 0x02 */ |
4389 | 8 | case CS_HE_ROUTING: /* 0x05 NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4390 | 8 | case CS_LOOPBACK_ON: /* 0x06 */ |
4391 | 8 | case CS_LOOPBACK_OFF: /* 0x07 */ |
4392 | 8 | case CS_VIDEO_ROUTING: /* 0x09 NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4393 | 8 | case CS_WARMSTART_ACK: /* 0x0A */ |
4394 | 8 | case CS_REMOTE_UA_ROUTING: /* 0x0D NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4395 | 8 | case CS_VERY_REMOTE_UA_R: /* 0x0E NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4396 | 9 | case CS_OSI_ROUTING: /* 0x0F NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4397 | 9 | case CS_ABC_A_ROUTING: /* 0x11 NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4398 | 9 | case CS_IBS_ROUTING: /* 0x12 NOT DECODED - No description in 3AK 29000 0556 DSZZA */ |
4399 | 9 | case CS_TRACE_ON_ACK: /* 0x27 */ |
4400 | 9 | case CS_TRACE_OFF_ACK: /* 0x28 */ |
4401 | 12 | default: |
4402 | 12 | { |
4403 | 12 | break; |
4404 | 9 | } |
4405 | 75 | } |
4406 | 75 | } |
4407 | | |
4408 | 149 | return tvb_captured_length(tvb); |
4409 | 200 | } |
4410 | | |
4411 | | |
4412 | | /*----------------------------------------------------------------------------- |
4413 | | DISSECTORS REGISTRATION FUNCTIONS |
4414 | | ---------------------------------------------------------------------------*/ |
4415 | | void |
4416 | | proto_register_ua3g(void) |
4417 | 14 | { |
4418 | 14 | static hf_register_info hf[] = |
4419 | 14 | { |
4420 | 14 | { &hf_ua3g_length, |
4421 | 14 | { "Length", "ua3g.length", |
4422 | 14 | FT_UINT16, BASE_DEC, NULL, 0x00, |
4423 | 14 | NULL, HFILL } |
4424 | 14 | }, |
4425 | 14 | { &hf_ua3g_opcode_sys, |
4426 | 14 | { "Opcode", "ua3g.opcode", |
4427 | 14 | FT_UINT8, BASE_HEX|BASE_EXT_STRING, &opcodes_vals_sys_ext, 0x00, |
4428 | 14 | NULL, HFILL } |
4429 | 14 | }, |
4430 | 14 | { &hf_ua3g_opcode_term, |
4431 | 14 | { "Opcode", "ua3g.opcode", |
4432 | 14 | FT_UINT8, BASE_HEX|BASE_EXT_STRING, &opcodes_vals_term_ext, 0x00, |
4433 | 14 | NULL, HFILL } |
4434 | 14 | }, |
4435 | 14 | { &hf_ua3g_opcode_production_test, |
4436 | 14 | { "Production Test Command", "ua3g.production_test", |
4437 | 14 | FT_UINT8, BASE_DEC, NULL, 0x00, |
4438 | 14 | NULL, HFILL } |
4439 | 14 | }, |
4440 | 14 | { &hf_ua3g_opcode_subservice_reset, |
4441 | 14 | { "Reserved For Compatibility", "ua3g.subservice_reset", |
4442 | 14 | FT_UINT8, BASE_DEC, NULL, 0x00, |
4443 | 14 | NULL, HFILL } |
4444 | 14 | }, |
4445 | 14 | { &hf_ua3g_opcode_are_you_there, |
4446 | 14 | { "Temporization", "ua3g.are_you_there", |
4447 | 14 | FT_UINT8, BASE_DEC, NULL, 0x00, |
4448 | 14 | NULL, HFILL } |
4449 | 14 | }, |
4450 | 14 | { &hf_ua3g_opcode_set_speaker_vol, |
4451 | 14 | { "Volume", "ua3g.set_speaker_vol", |
4452 | 14 | FT_UINT8, BASE_DEC, NULL, 0x00, |
4453 | 14 | NULL, HFILL } |
4454 | 14 | }, |
4455 | 14 | { &hf_ua3g_opcode_trace_on, |
4456 | 14 | { "Subdevice Address", "ua3g.trace_on", |
4457 | 14 | FT_UINT8, BASE_DEC, NULL, 0x00, |
4458 | 14 | NULL, HFILL } |
4459 | 14 | }, |
4460 | 14 | { &hf_ua3g_ip, |
4461 | 14 | { "IP Device Routing", "ua3g.ip", |
4462 | 14 | FT_UINT8, BASE_HEX, VALS(str_command_ip_device_routing), 0x00, |
4463 | 14 | NULL, HFILL } |
4464 | 14 | }, |
4465 | 14 | { &hf_ua3g_ip_cs, |
4466 | 14 | { "IP Device Routing", "ua3g.ip.cs", |
4467 | 14 | FT_UINT8, BASE_HEX, VALS(str_command_cs_ip_device_routing), 0x00, |
4468 | 14 | NULL, HFILL } |
4469 | 14 | }, |
4470 | 14 | { &hf_ua3g_command_led, |
4471 | 14 | { "Led Command", "ua3g.command.led", |
4472 | 14 | FT_UINT8, BASE_HEX, VALS(str_command_led), 0x00, |
4473 | 14 | NULL, HFILL } |
4474 | 14 | }, |
4475 | 14 | { &hf_ua3g_command_lcd_line, |
4476 | 14 | { "LCD Line Command", "ua3g.command.lcd_line", |
4477 | 14 | FT_UINT8, BASE_HEX, VALS(str_command_lcd_line), 0x00, |
4478 | 14 | NULL, HFILL } |
4479 | 14 | }, |
4480 | 14 | { &hf_ua3g_main_voice_mode, |
4481 | 14 | { "Voice Mode", "ua3g.command.main_voice_mode", |
4482 | 14 | FT_UINT8, BASE_HEX, VALS(str_main_voice_mode), 0x00, |
4483 | 14 | NULL, HFILL } |
4484 | 14 | }, |
4485 | 14 | { &hf_ua3g_command_set_clck, |
4486 | 14 | { "Set Clock", "ua3g.command.set_clck", |
4487 | 14 | FT_UINT8, BASE_HEX, VALS(str_command_set_clck), 0x00, |
4488 | 14 | NULL, HFILL } |
4489 | 14 | }, |
4490 | 14 | { &hf_ua3g_external_ringing_command, |
4491 | 14 | { "External Ringing Command", "ua3g.command.external_ringing", |
4492 | 14 | FT_UINT8, BASE_HEX, VALS(str_ext_ring_cmd), 0x00, |
4493 | 14 | NULL, HFILL } |
4494 | 14 | }, |
4495 | 14 | { &hf_ua3g_lcd_cursor, |
4496 | 14 | { "Cursor", "ua3g.lcd_cursor", |
4497 | 14 | FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x02, |
4498 | 14 | NULL, HFILL } |
4499 | 14 | }, |
4500 | 14 | { &hf_ua3g_command_beep, |
4501 | 14 | { "Beep", "ua3g.command.beep", |
4502 | 14 | FT_UINT8, BASE_HEX, VALS(str_command_beep), 0x00, |
4503 | 14 | NULL, HFILL } |
4504 | 14 | }, |
4505 | 14 | { &hf_ua3g_command_sidetone, |
4506 | 14 | { "Sidetone", "ua3g.command.sidetone", |
4507 | 14 | FT_BOOLEAN, BASE_NONE, TFS(&tfs_on_off), 0x00, |
4508 | 14 | NULL, HFILL } |
4509 | 14 | }, |
4510 | 14 | { &hf_ua3g_command_mute, |
4511 | 14 | { "Microphone", "ua3g.command.mute", |
4512 | 14 | FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, |
4513 | 14 | NULL, HFILL } |
4514 | 14 | }, |
4515 | 14 | { &hf_ua3g_command_feedback, |
4516 | 14 | { "Feedback", "ua3g.command.feedback", |
4517 | 14 | FT_BOOLEAN, BASE_NONE, TFS(&tfs_on_off), 0x00, |
4518 | 14 | NULL, HFILL } |
4519 | 14 | }, |
4520 | 14 | { &hf_ua3g_command_audio_config, |
4521 | 14 | { "Audio Config", "ua3g.command.audio_config", |
4522 | 14 | FT_UINT8, BASE_HEX, VALS(str_command_audio_config), 0x00, |
4523 | 14 | NULL, HFILL } |
4524 | 14 | }, |
4525 | 14 | { &hf_ua3g_command_key_release, |
4526 | 14 | { "Key Release", "ua3g.command.key_release", |
4527 | 14 | FT_BOOLEAN, BASE_NONE, TFS(&tfs_on_off), 0x00, |
4528 | 14 | NULL, HFILL } |
4529 | 14 | }, |
4530 | 14 | { &hf_ua3g_command_amplified_handset, |
4531 | 14 | { "Amplified Handset (Boost)", "ua3g.command.amplified_handset", |
4532 | 14 | FT_BOOLEAN, BASE_NONE, TFS(&tfs_on_off), 0x00, |
4533 | 14 | NULL, HFILL } |
4534 | 14 | }, |
4535 | 14 | { &hf_ua3g_command_loudspeaker, |
4536 | 14 | { "Loudspeaker", "ua3g.command.loudspeaker", |
4537 | 14 | FT_BOOLEAN, BASE_NONE, TFS(&tfs_on_off), 0x00, |
4538 | 14 | NULL, HFILL } |
4539 | 14 | }, |
4540 | 14 | { &hf_ua3g_command_announce, |
4541 | 14 | { "Announce", "ua3g.command.announce", |
4542 | 14 | FT_BOOLEAN, BASE_NONE, TFS(&tfs_on_off), 0x00, |
4543 | 14 | NULL, HFILL } |
4544 | 14 | }, |
4545 | 14 | { &hf_ua3g_command_ring, |
4546 | 14 | { "Ring", "ua3g.command.ring", |
4547 | 14 | FT_BOOLEAN, BASE_NONE, TFS(&tfs_on_off), 0x00, |
4548 | 14 | NULL, HFILL } |
4549 | 14 | }, |
4550 | 14 | { &hf_ua3g_command_ua_dwl_protocol, |
4551 | 14 | { "UA Download Protocol", "ua3g.command.ua_dwl_protocol", |
4552 | 14 | FT_UINT8, BASE_HEX, VALS(str_command_ua_dwl_protocol), 0x00, |
4553 | 14 | NULL, HFILL } |
4554 | 14 | }, |
4555 | 14 | { &hf_ua3g_command_unsolicited_msg, |
4556 | 14 | { "Unsolicited Message", "ua3g.command.unsolicited_msg", |
4557 | 14 | FT_UINT8, BASE_HEX, VALS(str_command_unsolicited_msg), 0x00, |
4558 | 14 | NULL, HFILL } |
4559 | 14 | }, |
4560 | 14 | { &hf_ua3g_ip_device_routing_stop_rtp_parameter, |
4561 | 14 | { "Parameter", "ua3g.ip.stop_rtp.parameter", |
4562 | 14 | FT_UINT8, BASE_HEX, VALS(ip_device_routing_cmd_stop_rtp_vals), 0x00, |
4563 | 14 | NULL, HFILL } |
4564 | 14 | }, |
4565 | 14 | { &hf_ua3g_ip_device_routing_stop_rtp_parameter_length, |
4566 | 14 | { "Length", "ua3g.ip.stop_rtp.parameter.length", |
4567 | 14 | FT_UINT8, BASE_DEC, NULL, 0x00, |
4568 | 14 | NULL, HFILL } |
4569 | 14 | }, |
4570 | 14 | { &hf_ua3g_ip_device_routing_stop_rtp_parameter_value_num, |
4571 | 14 | { "Value", "ua3g.ip.stop_rtp.parameter.value.num", |
4572 | 14 | FT_UINT64, BASE_HEX, NULL, 0x00, |
4573 | 14 | NULL, HFILL } |
4574 | 14 | }, |
4575 | 14 | { &hf_ua3g_ip_device_routing_stop_rtp_parameter_value_bytes, |
4576 | 14 | { "Value", "ua3g.ip.stop_rtp.parameter.value.bytes", |
4577 | 14 | FT_BYTES, BASE_NONE, NULL, 0x00, |
4578 | 14 | NULL, HFILL } |
4579 | 14 | }, |
4580 | | /* Generated from convert_proto_tree_add_text.pl */ |
4581 | 14 | { &hf_ua3g_subdevice_address, { "Subdevice Address", "ua3g.subdevice.address", FT_UINT8, BASE_DEC, NULL, 0x0F, NULL, HFILL }}, |
4582 | 14 | { &hf_ua3g_subdevice_opcode, { "Subdevice Opcode", "ua3g.subdevice.opcode", FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }}, |
4583 | 14 | { &hf_ua3g_subdevice_parameter_bytes, { "Parameter Bytes", "ua3g.subdevice.parameter_bytes", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4584 | 14 | { &hf_ua3g_software_reset, { "Software Reset", "ua3g.software_reset", FT_UINT8, BASE_DEC, VALS(software_reset_verswitch_vals), 0x0, NULL, HFILL }}, |
4585 | 14 | { &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 }}, |
4586 | 14 | { &hf_ua3g_super_msg_length, { "Length", "ua3g.super_msg.length", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4587 | 14 | { &hf_ua3g_super_msg_data, { "Data", "ua3g.super_msg.data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4588 | 14 | { &hf_ua3g_segment_msg_num_remaining, { "Number Of Remaining Segments", "ua3g.segment_msg.num_remaining", FT_UINT8, BASE_DEC, NULL, 0x7F, NULL, HFILL }}, |
4589 | 14 | { &hf_ua3g_segment_msg_length, { "Length", "ua3g.segment_msg.length", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4590 | 14 | { &hf_ua3g_segment_message_data, { "Segment Message Data", "ua3g.segment_message.data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4591 | 14 | { &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 }}, |
4592 | 14 | { &hf_ua3g_ip_device_routing_reset_parameter_length, { "Length", "ua3g.ip.reset.parameter.length", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4593 | 14 | { &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 }}, |
4594 | 14 | { &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 }}, |
4595 | 14 | { &hf_ua3g_ip_device_routing_start_rtp_parameter_length, { "Length", "ua3g.ip.start_rtp.parameter.length", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4596 | 14 | { &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 }}, |
4597 | 14 | { &hf_ua3g_ip_device_routing_redirect_parameter_length, { "Length", "ua3g.ip.redirect.parameter.length", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4598 | 14 | { &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 }}, |
4599 | 14 | { &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 }}, |
4600 | 14 | { &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 }}, |
4601 | 14 | { &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 }}, |
4602 | 14 | { &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 }}, |
4603 | 14 | { &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 }}, |
4604 | 14 | { &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 }}, |
4605 | 14 | { &hf_ua3g_ip_device_routing_start_tone_identification, { "Identification", "ua3g.ip.start_tone.identification", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4606 | 14 | { &hf_ua3g_ip_device_routing_start_tone_duration, { "Duration (ms)", "ua3g.ip.start_tone.duration", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4607 | 14 | { &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 }}, |
4608 | 14 | { &hf_ua3g_ip_device_routing_listen_rtp_parameter_length, { "Length", "ua3g.ip.listen_rtp.parameter.length", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4609 | 14 | { &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 }}, |
4610 | 14 | { &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 }}, |
4611 | 14 | { &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 }}, |
4612 | 14 | { &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 }}, |
4613 | 14 | { &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 }}, |
4614 | 14 | { &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 }}, |
4615 | 14 | { &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 }}, |
4616 | 14 | { &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 }}, |
4617 | 14 | { &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 }}, |
4618 | 14 | { &hf_ua3g_debug_in_line, { "Text String With Debug", "ua3g.debug_in_line", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4619 | 14 | { &hf_ua3g_command_led_number, { "Led Number", "ua3g.command.led.number", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4620 | 14 | { &hf_ua3g_lcd_line_cmd_lcd_options, { "LCD Options", "ua3g.command.lcd_line.lcd_options", FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL }}, |
4621 | 14 | { &hf_ua3g_lcd_line_cmd_starting_column, { "Starting Column", "ua3g.command.lcd_line.starting_column", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4622 | 14 | { &hf_ua3g_main_voice_mode_tune, { "Tune", "ua3g.main_voice_mode.tune", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4623 | 14 | { &hf_ua3g_main_voice_mode_cadence, { "Cadence", "ua3g.main_voice_mode.cadence", FT_UINT8, BASE_DEC, VALS(str_cadence), 0x0, NULL, HFILL }}, |
4624 | 14 | { &hf_ua3g_main_voice_mode_speaker_volume, { "Speaker Volume", "ua3g.main_voice_mode.speaker_volume", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4625 | 14 | { &hf_ua3g_main_voice_mode_microphone_volume, { "Microphone Volume", "ua3g.main_voice_mode.microphone_volume", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4626 | 14 | { &hf_ua3g_main_voice_mode_sending_level, { "Sending Level (dB)", "ua3g.main_voice_mode.sending_level", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4627 | 14 | { &hf_ua3g_main_voice_mode_handset_level, { "Receiving Level (dB)", "ua3g.main_voice_mode.handset_level", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4628 | 14 | { &hf_ua3g_main_voice_mode_headset_level, { "Receiving Level (dB)", "ua3g.main_voice_mode.headset_level", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4629 | 14 | { &hf_ua3g_main_voice_mode_handsfree_level, { "Sending Level (dB)", "ua3g.main_voice_mode.handsfree_level", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4630 | 14 | { &hf_ua3g_subdevice_metastate_subchannel_address, { "Subchannel Address", "ua3g.subdevice_metastate.subchannel_address", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4631 | 14 | { &hf_ua3g_subdevice_metastate_new_metastate, { "New Metastate", "ua3g.subdevice_metastate.new_metastate", FT_UINT8, BASE_DEC, VALS(str_new_metastate), 0x0, NULL, HFILL }}, |
4632 | 14 | { &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 }}, |
4633 | 14 | { &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 }}, |
4634 | 14 | { &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 }}, |
4635 | 14 | { &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 }}, |
4636 | 14 | { &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 }}, |
4637 | 14 | { &hf_ua3g_voice_channel_codec, { "Codec", "ua3g.voice_channel.codec", FT_BOOLEAN, 8, TFS(&tfs_voice_channel_codec), 0x02, NULL, HFILL }}, |
4638 | 14 | { &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 }}, |
4639 | 14 | { &hf_ua3g_voice_channel_main_voice, { "Main Voice", "ua3g.voice_channel.main_voice", FT_UINT8, BASE_DEC, VALS(str_voice_channel), 0x0, NULL, HFILL }}, |
4640 | 14 | { &hf_ua3g_voice_channel_announce, { "Announce", "ua3g.voice_channel.announce", FT_UINT8, BASE_DEC, VALS(str_voice_channel), 0x0, NULL, HFILL }}, |
4641 | 14 | { &hf_ua3g_voice_channel_b_general, { "B General", "ua3g.voice_channel.b_general", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4642 | 14 | { &hf_ua3g_voice_channel_b_loud_speaker, { "B Loud Speaker", "ua3g.voice_channel.b_loud_speaker", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4643 | 14 | { &hf_ua3g_voice_channel_b_ear_piece, { "B Ear Piece", "ua3g.voice_channel.b_ear_piece", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4644 | 14 | { &hf_ua3g_voice_channel_b_microphones, { "B Microphones", "ua3g.voice_channel.b_microphones", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4645 | 14 | { &hf_ua3g_lcd_cursor_line_number, { "Line Number", "ua3g.lcd_cursor.line_number", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4646 | 14 | { &hf_ua3g_dwl_special_char_character_number, { "Character Number", "ua3g.dwl_special_char.character_number", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4647 | 14 | { &hf_ua3g_dwl_special_char_byte, { "Byte", "ua3g.dwl_special_char.byte", FT_UINT8, BASE_DEC, NULL, 0xFF, NULL, HFILL }}, |
4648 | 14 | { &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 }}, |
4649 | 14 | { &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 }}, |
4650 | 14 | { &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 }}, |
4651 | 14 | { &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 }}, |
4652 | 14 | { &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 }}, |
4653 | 14 | { &hf_ua3g_set_lcd_contrast_contrast_value, { "Contrast Value", "ua3g.set_lcd_contrast.contrast_value", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4654 | 14 | { &hf_ua3g_beep_destination, { "Destination", "ua3g.command.beep.destination", FT_UINT8, BASE_DEC, VALS(str_beep_start_destination), 0x0, NULL, HFILL }}, |
4655 | 14 | { &hf_ua3g_beep_on_off, { "On / Off", "ua3g.command.beep.on_off", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x80, NULL, HFILL }}, |
4656 | 14 | { &hf_ua3g_beep_cadence, { "Cadence", "ua3g.command.beep.cadence", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4657 | 14 | { &hf_ua3g_beep_beep_number, { "Beep Number", "ua3g.command.beep.beep_number", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }}, |
4658 | 14 | { &hf_ua3g_beep_number_of_notes, { "Number Of Notes", "ua3g.command.beep.number_of_notes", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }}, |
4659 | 14 | { &hf_ua3g_beep_terminator, { "Terminator", "ua3g.command.beep.terminator", FT_UINT8, BASE_DEC, VALS(str_beep_terminator), 0x0, NULL, HFILL }}, |
4660 | 14 | { &hf_ua3g_sidetone_level, { "Level", "ua3g.command.sidetone.level", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4661 | 14 | { &hf_ua3g_ringing_cadence_cadence, { "Cadence", "ua3g.ringing_cadence.cadence", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4662 | 14 | { &hf_ua3g_ringing_cadence_on_off, { "On / Off", "ua3g.ringing_cadence.on_off", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x80, NULL, HFILL }}, |
4663 | 14 | { &hf_ua3g_ringing_cadence_length, { "Length (ms)", "ua3g.ringing_cadence.length", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4664 | 14 | { &hf_ua3g_feedback_level, { "Level (dB)", "ua3g.command.feedback.level", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4665 | 14 | { &hf_ua3g_feedback_duration, { "Duration", "ua3g.command.feedback.duration", FT_UINT16, BASE_DEC|BASE_UNIT_STRING, UNS(&units_milliseconds), 0x0, NULL, HFILL }}, |
4666 | 14 | { &hf_ua3g_r_w_peripheral_address, { "Address", "ua3g.r_w_peripheral.address", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4667 | 14 | { &hf_ua3g_r_w_peripheral_content, { "Content", "ua3g.r_w_peripheral.content", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4668 | 14 | { &hf_ua3g_icon_cmd_icon_number, { "Icon Number", "ua3g.icon_cmd.icon_number", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4669 | 14 | { &hf_ua3g_icon_cmd_segment, { "Segment", "ua3g.icon_cmd.segment", FT_UINT16, BASE_DEC, VALS(str_icon_cmd_state), 0x0, NULL, HFILL }}, |
4670 | 14 | { &hf_ua3g_audio_config_ignored, { "Ignored", "ua3g.command.audio_config.ignored", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4671 | 14 | { &hf_ua3g_audio_config_law, { "Law", "ua3g.command.audio_config.law", FT_UINT8, BASE_DEC, VALS(str_audio_coding_law), 0x0, NULL, HFILL }}, |
4672 | 14 | { &hf_ua3g_audio_config_volume_level, { "Volume Level", "ua3g.command.audio_config.volume_level", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4673 | 14 | { &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 }}, |
4674 | 14 | { &hf_ua3g_audio_config_handsfree_handsfree, { "Handsfree", "ua3g.command.audio_config.handsfree", FT_BOOLEAN, 8, TFS(&tfs_audio_config_handsfree_handsfree), 0x02, NULL, HFILL }}, |
4675 | 14 | { &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 }}, |
4676 | 14 | { &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 }}, |
4677 | 14 | { &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 }}, |
4678 | 14 | { &hf_ua3g_ring_melody, { "Melody", "ua3g.command.ring.melody", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4679 | 14 | { &hf_ua3g_ring_cadence, { "Cadence", "ua3g.command.ring.cadence", FT_UINT8, BASE_DEC, VALS(str_cadence), 0x0, NULL, HFILL }}, |
4680 | 14 | { &hf_ua3g_ring_speaker_level, { "Speaker level (dB)", "ua3g.command.ring.speaker_level", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4681 | 14 | { &hf_ua3g_ring_beep_number, { "Beep number", "ua3g.command.ring.beep_number", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4682 | 14 | { &hf_ua3g_ring_silent, { "Silent", "ua3g.command.ring.silent", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x80, NULL, HFILL }}, |
4683 | 14 | { &hf_ua3g_ring_progressive, { "Progressive", "ua3g.command.ring.progressive", FT_UINT8, BASE_DEC, NULL, 0x03, NULL, HFILL }}, |
4684 | 14 | { &hf_ua3g_ua_dwl_protocol_item_identifier, { "Item Identifier", "ua3g.ua_dwl_protocol.item_identifier", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4685 | 14 | { &hf_ua3g_ua_dwl_protocol_cause, { "Cause", "ua3g.ua_dwl_protocol.cause", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4686 | 14 | { &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 }}, |
4687 | 14 | { &hf_ua3g_ua_dwl_protocol_item_version, { "Item Version", "ua3g.ua_dwl_protocol.item_version", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4688 | 14 | { &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 }}, |
4689 | 14 | { &hf_ua3g_ua_dwl_protocol_binary_length, { "Binary Length", "ua3g.ua_dwl_protocol.binary_length", FT_UINT24, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4690 | 14 | { &hf_ua3g_ua_dwl_protocol_packet_number, { "Packet Number", "ua3g.ua_dwl_protocol.packet_number", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4691 | 14 | { &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 }}, |
4692 | 14 | { &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 }}, |
4693 | 14 | { &hf_ua3g_ua_dwl_protocol_checksum, { "Checksum", "ua3g.ua_dwl_protocol.checksum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4694 | 14 | { &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 }}, |
4695 | 14 | { &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 }}, |
4696 | 14 | { &hf_ua3g_subdevice_msg_subdev_type, { "Subdev Type", "ua3g.subdevice_msg.subdev_type", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4697 | 14 | { &hf_ua3g_subdevice_msg_subdev_address, { "Subdev Address", "ua3g.subdevice_msg.subdev_address", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4698 | 14 | { &hf_ua3g_subdevice_msg_subdevice_opcode, { "Subdevice Opcode", "ua3g.subdevice_msg.subdevice_opcode", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4699 | 14 | { &hf_ua3g_subdevice_msg_parameter_bytes, { "Parameter Bytes", "ua3g.subdevice_msg.parameter_bytes", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4700 | 14 | { &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 }}, |
4701 | 14 | { &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 }}, |
4702 | 14 | { &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 }}, |
4703 | 14 | { &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 }}, |
4704 | 14 | { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_length, { "Length", "ua3g.ip.cs.cmd02.parameter.length", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4705 | 14 | { &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 }}, |
4706 | 14 | { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_length, { "Length", "ua3g.ip.cs.cmd03.parameter.length", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4707 | 14 | { &hf_ua3g_unsolicited_msg_device_type, { "Device Type", "ua3g.unsolicited_msg.device_type", FT_UINT8, BASE_DEC, VALS(str_device_type), 0x0, NULL, HFILL }}, |
4708 | 14 | { &hf_ua3g_unsolicited_msg_self_test_result, { "Self-Test Result", "ua3g.unsolicited_msg.self_test_result", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4709 | 14 | { &hf_ua3g_unsolicited_msg_vta_type, { "VTA Type", "ua3g.unsolicited_msg.vta_type", FT_UINT8, BASE_HEX, VALS(str_vta_type), 0x0, NULL, HFILL }}, |
4710 | 14 | { &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 }}, |
4711 | 14 | { &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 }}, |
4712 | 14 | { &hf_ua3g_unsolicited_msg_hardware_version, { "Hardware Version", "ua3g.unsolicited_msg.hardware_version", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4713 | 14 | { &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 }}, |
4714 | 14 | { &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 }}, |
4715 | 14 | { &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 }}, |
4716 | 14 | { &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 }}, |
4717 | 14 | { &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 }}, |
4718 | 14 | { &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 }}, |
4719 | 14 | { &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 }}, |
4720 | 14 | { &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 }}, |
4721 | 14 | { &hf_ua3g_unsolicited_msg_subdevice_address, { "Subdevice Address", "ua3g.unsolicited_msg.subdevice_address", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4722 | 14 | { &hf_ua3g_unsolicited_msg_segment_failure_t, { "T", "ua3g.unsolicited_msg.segment_failure.t", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4723 | 14 | { &hf_ua3g_unsolicited_msg_segment_failure_num, { "Num", "ua3g.unsolicited_msg.segment_failurenum", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4724 | 14 | { &hf_ua3g_unsolicited_msg_segment_failure_s, { "/S", "ua3g.unsolicited_msg.segment_failure.s", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4725 | 14 | { &hf_ua3g_unsolicited_msg_segment_failure_l, { "L", "ua3g.unsolicited_msg.segment_failure.l", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4726 | 14 | { &hf_ua3g_unsolicited_msg_opcode_bad_segment, { "Opcode Bad Segment", "ua3g.unsolicited_msg.opcode_bad_segment", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4727 | 14 | { &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 }}, |
4728 | 14 | { &hf_ua3g_unsolicited_msg_device_event, { "Device Event", "ua3g.unsolicited_msg.device_event", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4729 | 14 | { &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 }}, |
4730 | 14 | { &hf_ua3g_segment_msg_segment, { "F/S", "ua3g.segment_msg.segment", FT_BOOLEAN, 8, TFS(&tfs_segment_msg_segment), 0x80, NULL, HFILL }}, |
4731 | 14 | { &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 }}, |
4732 | 14 | { &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 }}, |
4733 | 14 | { &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 }}, |
4734 | 14 | { &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 }}, |
4735 | 14 | { &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 }}, |
4736 | 14 | { &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 }}, |
4737 | 14 | { &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 }}, |
4738 | 14 | { &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 }}, |
4739 | 14 | { &hf_ua3g_ip_device_routing_reset_parameter_value, { "Value", "ua3g.ip.reset.parameter.value", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4740 | 14 | { &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 }}, |
4741 | 14 | { &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 }}, |
4742 | 14 | { &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 }}, |
4743 | 14 | { &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 }}, |
4744 | 14 | { &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 }}, |
4745 | 14 | { &hf_ua3g_ip_device_routing_start_rtp_parameter_value, { "Value", "ua3g.ip.start_rtp.parameter.value", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4746 | 14 | { &hf_ua3g_ip_device_routing_start_rtp_parameter_ip, { "IP", "ua3g.ip.start_rtp.parameter.ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4747 | 14 | { &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 }}, |
4748 | 14 | { &hf_ua3g_ip_device_routing_start_rtp_parameter_enabler, { "Enabler", "ua3g.ip.start_rtp.parameter.enabler", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4749 | 14 | { &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 }}, |
4750 | 14 | { &hf_ua3g_ip_device_routing_start_rtp_parameter_uint, { "Value", "ua3g.ip.start_rtp.parameter.uint", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4751 | 14 | { &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 }}, |
4752 | 14 | { &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 }}, |
4753 | 14 | { &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 }}, |
4754 | 14 | { &hf_ua3g_ip_device_routing_redirect_parameter_value, { "Value", "ua3g.ip.redirect.parameter.value", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4755 | 14 | { &hf_ua3g_ip_device_routing_redirect_parameter_ip, { "IP", "ua3g.ip.redirect.parameter.ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4756 | 14 | { &hf_ua3g_ip_device_routing_redirect_parameter_uint, { "Value", "ua3g.ip.redirect.parameter.uint", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4757 | 14 | { &hf_ua3g_ip_device_routing_listen_rtp_parameter_value, { "Value", "ua3g.ip.listen_rtp.parameter.value", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4758 | 14 | { &hf_ua3g_ip_device_routing_listen_rtp_parameter_ip, { "IP", "ua3g.ip.listen_rtp.parameter.ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4759 | 14 | { &hf_ua3g_ip_device_routing_listen_rtp_parameter_port, { "Port", "ua3g.ip.listen_rtp.parameter.port", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4760 | 14 | { &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 }}, |
4761 | 14 | { &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 }}, |
4762 | 14 | { &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 }}, |
4763 | 14 | { &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 }}, |
4764 | 14 | { &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 }}, |
4765 | 14 | { &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 }}, |
4766 | 14 | { &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 }}, |
4767 | 14 | { &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 }}, |
4768 | 14 | { &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 }}, |
4769 | 14 | { &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 }}, |
4770 | 14 | { &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 }}, |
4771 | 14 | { &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 }}, |
4772 | 14 | { &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 }}, |
4773 | 14 | { &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 }}, |
4774 | 14 | { &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 }}, |
4775 | 14 | { &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 }}, |
4776 | 14 | { &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 }}, |
4777 | 14 | { &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 }}, |
4778 | 14 | { &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 }}, |
4779 | 14 | { &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 }}, |
4780 | 14 | { &hf_ua3g_ip_device_routing_freeseating_parameter_length, { "Length", "ua3g.ip.freeseating.parameter.length", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4781 | 14 | { &hf_ua3g_ip_device_routing_freeseating_parameter_value, { "Value", "ua3g.ip.freeseating.parameter.value", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4782 | 14 | { &hf_ua3g_ip_device_routing_freeseating_parameter_uint, { "Value", "ua3g.ip.freeseating.parameter.uint", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4783 | 14 | { &hf_ua3g_ip_device_routing_freeseating_parameter_mac, { "Value", "ua3g.ip.freeseating.parameter.mac", FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4784 | 14 | { &hf_ua3g_ip_device_routing_freeseating_parameter_ip, { "Value", "ua3g.ip.freeseating.parameter.ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4785 | 14 | { &hf_ua3g_ip_device_routing_freeseating_parameter_ipv6, { "Value", "ua3g.ip.freeseating.parameter.ipv6", FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4786 | 14 | { &hf_ua3g_ip_device_routing_freeseating_parameter_do_reset, { "Value", "ua3g.ip.freeseating.parameter.do_reset", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4787 | 14 | { &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 }}, |
4788 | 14 | { &hf_ua3g_ip_device_routing_appl_parameter_length, { "Length", "ua3g.ip.appl.parameter.length", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4789 | 14 | { &hf_ua3g_ip_device_routing_appl_parameter_value, { "Value", "ua3g.ip.appl.parameter.value", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4790 | 14 | { &hf_ua3g_ip_device_routing_appl_parameter_uint, { "Value", "ua3g.ip.appl.parameter.uint", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4791 | 14 | { &hf_ua3g_ip_device_routing_appl_parameter_id, { "Value", "ua3g.ip.appl.parameter.id", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4792 | 14 | { &hf_ua3g_ip_device_routing_appl_parameter_enable, { "Value", "ua3g.ip.appl.parameter.enable", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4793 | 14 | { &hf_ua3g_ip_device_routing_appl_parameter_url, { "Value", "ua3g.ip.appl.parameter.url", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4794 | 14 | { &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 }}, |
4795 | 14 | { &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 }}, |
4796 | 14 | { &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 }}, |
4797 | 14 | { &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 }}, |
4798 | 14 | { &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 }}, |
4799 | 14 | { &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 }}, |
4800 | 14 | { &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 }}, |
4801 | 14 | { &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 }}, |
4802 | 14 | { &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 }}, |
4803 | 14 | { &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 }}, |
4804 | 14 | { &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 }}, |
4805 | 14 | { &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 }}, |
4806 | 14 | { &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 }}, |
4807 | 14 | { &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 }}, |
4808 | 14 | { &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 }}, |
4809 | 14 | { &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 }}, |
4810 | 14 | { &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 }}, |
4811 | 14 | { &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 }}, |
4812 | 14 | { &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 }}, |
4813 | 14 | { &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 }}, |
4814 | 14 | { &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 }}, |
4815 | 14 | { &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 }}, |
4816 | 14 | { &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 }}, |
4817 | 14 | { &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 }}, |
4818 | 14 | { &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 }}, |
4819 | 14 | { &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 }}, |
4820 | 14 | { &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 }}, |
4821 | 14 | { &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 }}, |
4822 | 14 | { &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 }}, |
4823 | 14 | { &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 }}, |
4824 | 14 | { &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 }}, |
4825 | 14 | { &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 }}, |
4826 | 14 | { &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 }}, |
4827 | 14 | { &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 }}, |
4828 | 14 | { &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 }}, |
4829 | 14 | { &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 }}, |
4830 | 14 | { &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 }}, |
4831 | 14 | { &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 }}, |
4832 | 14 | { &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 }}, |
4833 | 14 | { &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 }}, |
4834 | 14 | { &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 }}, |
4835 | 14 | { &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 }}, |
4836 | 14 | { &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 }}, |
4837 | 14 | { &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 }}, |
4838 | 14 | { &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 }}, |
4839 | 14 | { &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 }}, |
4840 | 14 | { &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 }}, |
4841 | 14 | { &hf_ua3g_unsolicited_msg_hardware_config, { "Hardware Configuration", "ua3g.unsolicited_msg.hardware_config", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }}, |
4842 | 14 | { &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 }}, |
4843 | 14 | { &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 }}, |
4844 | 14 | { &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 }}, |
4845 | 14 | { &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 }}, |
4846 | 14 | { &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 }}, |
4847 | 14 | { &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 }}, |
4848 | 14 | { &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 }}, |
4849 | 14 | { &hf_ua3g_unsolicited_msg_hook_status, { "Hook Status", "ua3g.unsolicited_msg.hook_status", FT_UINT8, BASE_DEC, VALS(str_on_off), 0x0, NULL, HFILL }}, |
4850 | 14 | { &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 }}, |
4851 | 14 | { &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 }}, |
4852 | 14 | { &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 }}, |
4853 | 14 | { &hf_ua3g_unsolicited_msg_capability_info_vpn, { "VPN", "ua3g.unsolicited_msg.capability_info.vpn", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01, NULL, HFILL }}, |
4854 | 14 | { &hf_ua3g_unsolicited_msg_capability_info_ipsec, { "IPSec", "ua3g.unsolicited_msg.capability_info.ipsec", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x02, NULL, HFILL }}, |
4855 | 14 | { &hf_ua3g_unsolicited_msg_capability_info_dtls, { "DTLS", "ua3g.unsolicited_msg.capability_info.dtls", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x4, NULL, HFILL }}, |
4856 | 14 | { &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 }}, |
4857 | 14 | { &hf_ua3g_unsolicited_msg_capability_info_reserved, { "Reserved", "ua3g.unsolicited_msg.capability_info.reserved", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4858 | 14 | { &hf_ua3g_special_key_shift, { "Shift", "ua3g.special_key.shift", FT_BOOLEAN, 8, TFS(&tfs_released_pressed), 0x01, NULL, HFILL }}, |
4859 | 14 | { &hf_ua3g_special_key_ctrl, { "Ctrl", "ua3g.special_key.ctrl", FT_BOOLEAN, 8, TFS(&tfs_released_pressed), 0x02, NULL, HFILL }}, |
4860 | 14 | { &hf_ua3g_special_key_alt, { "Alt", "ua3g.special_key.alt", FT_BOOLEAN, 8, TFS(&tfs_released_pressed), 0x04, NULL, HFILL }}, |
4861 | 14 | { &hf_ua3g_special_key_cmd, { "Cmd", "ua3g.special_key.cmd", FT_BOOLEAN, 8, TFS(&tfs_released_pressed), 0x08, NULL, HFILL }}, |
4862 | 14 | { &hf_ua3g_special_key_shift_prime, { "Shift'", "ua3g.special_key.shift_prime", FT_BOOLEAN, 8, TFS(&tfs_released_pressed), 0x10, NULL, HFILL }}, |
4863 | 14 | { &hf_ua3g_special_key_ctrl_prime, { "Ctrl'", "ua3g.special_key.ctrl_prime", FT_BOOLEAN, 8, TFS(&tfs_released_pressed), 0x20, NULL, HFILL }}, |
4864 | 14 | { &hf_ua3g_special_key_alt_prime, { "Alt'", "ua3g.special_key.alt_prime", FT_BOOLEAN, 8, TFS(&tfs_released_pressed), 0x40, NULL, HFILL }}, |
4865 | 14 | { &hf_ua3g_special_key_cmd_prime, { "Cmd'", "ua3g.special_key.cmd_prime", FT_BOOLEAN, 8, TFS(&tfs_released_pressed), 0x80, NULL, HFILL }}, |
4866 | 14 | { &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 }}, |
4867 | 14 | { &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 }}, |
4868 | 14 | { &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 }}, |
4869 | 14 | { &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 }}, |
4870 | 14 | { &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 }}, |
4871 | 14 | { &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 }}, |
4872 | 14 | { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_value, { "Value", "ua3g.ip.cs.cmd02.parameter.value", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4873 | 14 | { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_ip, { "IP", "ua3g.ip.cs.cmd02.parameter.ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4874 | 14 | { &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 }}, |
4875 | 14 | { &hf_ua3g_cs_ip_device_routing_cmd02_parameter_uint, { "Value", "ua3g.ip.cs.cmd02.parameter.uint", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4876 | 14 | { &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 }}, |
4877 | 14 | { &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 }}, |
4878 | 14 | { &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 }}, |
4879 | 14 | { &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 }}, |
4880 | 14 | { &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 }}, |
4881 | 14 | { &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 }}, |
4882 | 14 | { &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 }}, |
4883 | 14 | { &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 }}, |
4884 | | |
4885 | 14 | { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_ip, { "IP", "ua3g.ip.cs.cmd03.parameter.ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4886 | 14 | { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_string, { "IP", "ua3g.ip.cs.cmd03.parameter.string", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4887 | 14 | { &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 }}, |
4888 | 14 | { &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 }}, |
4889 | 14 | { &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 }}, |
4890 | 14 | { &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 }}, |
4891 | 14 | { &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 }}, |
4892 | 14 | { &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 }}, |
4893 | 14 | { &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 }}, |
4894 | 14 | { &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 }}, |
4895 | 14 | { &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 }}, |
4896 | 14 | { &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 }}, |
4897 | 14 | { &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 }}, |
4898 | 14 | { &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 }}, |
4899 | 14 | { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_diffserv, { "DiffServ", "ua3g.ip.cs.cmd03.parameter.diffserv", FT_UINT8, BASE_DEC, NULL, 0xFC, NULL, HFILL }}, |
4900 | 14 | { &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 }}, |
4901 | 14 | { &hf_ua3g_cs_ip_device_routing_cmd03_parameter_uint, { "Value", "ua3g.ip.cs.cmd03.parameter.uint", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4902 | 14 | { &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 }}, |
4903 | 14 | { &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 }}, |
4904 | 14 | { &hf_ua3g_subdevice_state, { "Subdevice State", "ua3g.subdevice_state", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4905 | 14 | { &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 }}, |
4906 | 14 | { &hf_ua3g_special_key_hookswitch_status, { "Hookswitch Status", "ua3g.special_key.hookswitch_status", FT_BOOLEAN, 8, TFS(&tfs_hookswitch_status), 0x01, NULL, HFILL }}, |
4907 | 14 | { &hf_ua3g_cs_ip_device_routing_param_identifier, { "Parameter Identifier", "ua3g.ip.cs.param_identifier", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4908 | 14 | { &hf_ua3g_key_number, { "Key Number", "ua3g.key_number", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4909 | 14 | { &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 }}, |
4910 | 14 | { &hf_ua3g_lcd_line_cmd_unused, { "Unused", "ua3g.command.lcd_line.unused", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }}, |
4911 | 14 | { &hf_ua3g_lcd_line_cmd_ascii_char, { "ASCII Char", "ua3g.command.lcd_line.ascii_char", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, |
4912 | 14 | { &hf_ua3g_call_timer, { "Call Timer", "ua3g.command.call_timer", FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }}, |
4913 | 14 | { &hf_ua3g_current_time, { "Current Timer", "ua3g.command.current_time", FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }}, |
4914 | 14 | { &hf_ua3g_beep_beep_destination, { "Destination", "ua3g.command.beep.destination", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }}, |
4915 | 14 | { &hf_ua3g_beep_beep_destination_handset, { "Handset", "ua3g.command.beep.destination.handset", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, |
4916 | 14 | { &hf_ua3g_beep_beep_destination_headset, { "Headset", "ua3g.command.beep.destination.headset", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, |
4917 | 14 | { &hf_ua3g_beep_beep_destination_loudspeaker, { "Loudspeaker", "ua3g.command.beep.destination.loudspeaker", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }}, |
4918 | 14 | { &hf_ua3g_beep_beep_destination_announce_loudspeaker, { "Announce Loudspeaker", "ua3g.command.beep.destination.announce_loudspeaker", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, |
4919 | 14 | { &hf_ua3g_beep_beep_destination_handsfree, { "Handsfree", "ua3g.command.beep.destination.handsfree", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, |
4920 | 14 | { &hf_ua3g_beep_freq_sample, { "Freq sample", "ua3g.command.beep.note.freq_sample", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4921 | 14 | { &hf_ua3g_beep_level, { "Level", "ua3g.command.beep.note.level", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4922 | 14 | { &hf_ua3g_beep_duration, { "Duration", "ua3g.command.beep.note.duration", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }}, |
4923 | 14 | { &hf_ua3g_device_configuration, { "Device Configuration", "ua3g.device_configuration", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, |
4924 | 14 | }; |
4925 | | |
4926 | 14 | static int *ett[] = |
4927 | 14 | { |
4928 | 14 | &ett_ua3g, |
4929 | 14 | &ett_ua3g_body, |
4930 | 14 | &ett_ua3g_param, |
4931 | 14 | &ett_ua3g_param_sub, |
4932 | 14 | &ett_ua3g_option, |
4933 | 14 | &ett_ua3g_beep_beep_destination, |
4934 | 14 | &ett_ua3g_note, |
4935 | 14 | }; |
4936 | | |
4937 | 14 | module_t *ua3g_module; |
4938 | | |
4939 | | /* UA3G dissector registration */ |
4940 | 14 | proto_ua3g = proto_register_protocol("UA3G Message", "UA3G", "ua3g"); |
4941 | | |
4942 | | /* Register preferences */ |
4943 | 14 | ua3g_module = prefs_register_protocol(proto_ua3g, NULL); |
4944 | | |
4945 | 14 | prefs_register_bool_preference(ua3g_module, "setup_conversations", |
4946 | 14 | "Setup RTP/RTCP conversations on Start/Record RTP", |
4947 | 14 | "Setup RTP/RTCP conversations when parsing Start/Record RTP messages", |
4948 | 14 | &setup_conversations_enabled); |
4949 | | |
4950 | 14 | proto_register_field_array(proto_ua3g, hf, array_length(hf)); |
4951 | | |
4952 | 14 | register_dissector("ua3g", dissect_ua3g, proto_ua3g); |
4953 | | |
4954 | | /* Common subtree array registration */ |
4955 | 14 | proto_register_subtree_array(ett, array_length(ett)); |
4956 | 14 | } |
4957 | | |
4958 | | void proto_reg_handoff_ua3g(void) |
4959 | 14 | { |
4960 | | #if 0 /* Future */ |
4961 | | dissector_handle_t handle_ua3g = find_dissector("ua3g"); |
4962 | | |
4963 | | /* hooking of UA3G on UA */ |
4964 | | |
4965 | | dissector_add_uint("ua.opcode", 0x15, handle_ua3g); |
4966 | | #endif |
4967 | 14 | } |
4968 | | |
4969 | | /* |
4970 | | * Editor modelines - https://www.wireshark.org/tools/modelines.html |
4971 | | * |
4972 | | * Local variables: |
4973 | | * c-basic-offset: 4 |
4974 | | * tab-width: 8 |
4975 | | * indent-tabs-mode: nil |
4976 | | * End: |
4977 | | * |
4978 | | * vi: set shiftwidth=4 tabstop=8 expandtab: |
4979 | | * :indentSize=4:tabSize=8:noTabs=true: |
4980 | | */ |