2 * Routines for unistim packet dissection
3 * Copyright 2007 Don Newton <dnewton@cypresscom.net>
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@wireshark.org>
9 * Copyright 1998 Gerald Combs
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
32 #include <epan/packet.h>
34 #include <epan/emem.h>
35 #include <epan/expert.h>
36 #include <epan/address.h>
37 #include <epan/prefs.h>
38 #include <epan/dissectors/packet-rtp.h>
39 #include <epan/dissectors/packet-rtcp.h>
41 #include "packet-unistim.h"
48 #include "broadcast.h"
50 #include "expansion.h"
52 /* Don't set this to 5000 until this dissector is made a heuristic one!
53 It collides (at least) with tapa.
54 static guint global_unistim_port = 5000; */
55 static guint global_unistim_port = 0;
57 static unistim_info_t *uinfo;
58 static int unistim_tap = -1;
60 void proto_reg_handoff_unistim(void);
61 static void dissect_payload(proto_tree *unistim_tree,tvbuff_t *tvb,gint offset, packet_info *pinfo);
62 static int dissect_unistim(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
64 static gint dissect_broadcast_switch(proto_tree *msg_tree,
65 tvbuff_t *tvb,gint offset,guint msg_len);
66 static gint dissect_audio_switch(proto_tree *msg_tree,packet_info *pinfo,
67 tvbuff_t *tvb,gint offset,guint msg_len);
68 static gint dissect_expansion_switch(proto_tree *msg_tree,
69 tvbuff_t *tvb,gint offset,guint msg_len);
70 static gint dissect_display_switch(proto_tree *msg_tree,
71 tvbuff_t *tvb,gint offset,guint msg_len);
72 static gint dissect_key_indicator_switch(proto_tree *msg_tree,
73 tvbuff_t *tvb,gint offset,guint msg_len);
74 static gint dissect_basic_switch(proto_tree *msg_tree,
75 tvbuff_t *tvb,gint offset,guint msg_len);
76 static gint dissect_network_switch(proto_tree *msg_tree,
77 tvbuff_t *tvb,gint offset,guint msg_len);
78 static gint dissect_broadcast_phone(proto_tree *msg_tree,
79 tvbuff_t *tvb,gint offset,guint msg_len);
80 static gint dissect_audio_phone(proto_tree *msg_tree,
81 tvbuff_t *tvb,gint offset,guint msg_len);
82 static gint dissect_expansion_phone(proto_tree *msg_tree,
83 tvbuff_t *tvb,gint offset,guint msg_len);
84 static gint dissect_display_phone(proto_tree *msg_tree,
85 tvbuff_t *tvb,gint offset,guint msg_len);
86 static gint dissect_key_indicator_phone(proto_tree *msg_tree,
87 tvbuff_t *tvb,gint offset,guint msg_len);
88 static gint dissect_basic_phone(proto_tree *msg_tree,
89 tvbuff_t *tvb,gint offset,guint msg_len);
90 static gint dissect_network_phone(proto_tree *msg_tree,
91 tvbuff_t *tvb,gint offset,guint msg_len);
92 static gint dissect_unistim_message(proto_tree *unistim_tree, packet_info *pinfo,
93 tvbuff_t *tvb,gint offset);
94 static gint dissect_uftp_message(proto_tree *unistim_tree, packet_info *pinfo,
95 tvbuff_t *tvb,gint offset);
98 static void set_ascii_item(proto_tree *unistim_tree, tvbuff_t *tvb,
99 gint offset,guint msg_len);
102 static int proto_unistim = -1;
103 static int hf_unistim_seq_nu = -1;
104 static int hf_unistim_packet_type = -1;
105 static int hf_unistim_payload = -1;
106 static int hf_unistim_cmd_add = -1;
107 static int hf_unistim_len =-1;
108 static int hf_terminal_id=-1;
109 static int hf_basic_bit_field=-1;
110 static const true_false_string basic_bit_yn={
111 "For Following Byte",
115 static int hf_basic_switch_cmd=-1;
116 static int hf_basic_phone_cmd=-1;
117 static int hf_broadcast_switch_cmd=-1;
118 static int hf_broadcast_phone_cmd=-1;
119 static int hf_audio_switch_cmd=-1;
120 static int hf_audio_phone_cmd=-1;
121 static int hf_display_switch_cmd=-1;
122 static int hf_display_phone_cmd=-1;
123 static int hf_key_switch_cmd=-1;
124 static int hf_key_phone_cmd=-1;
125 static int hf_network_switch_cmd=-1;
126 static int hf_network_phone_cmd=-1;
127 static int hf_expansion_switch_cmd=-1;
128 static int hf_expansion_phone_cmd=-1;
130 static int hf_generic_data=-1;
131 static int hf_generic_string=-1;
133 static gint ett_unistim = -1;
135 static const value_string packet_names[]={
142 static const value_string payload_names[]={
143 {0x00,"NULL Protocol"},
144 {0x01,"Aggregate Unistim"},
145 {0x02,"Aggregate Unistim with Terminal ID"},
147 {0xff,"Free Form Protocol"},
151 static const range_string sequence_numbers[]={
152 {0x00,0xFFFFFFFE,"Normal Sequence Number"},
153 {0xFFFFFFFF,0xFFFFFFFF, "RESET Sequence Number"},
157 static const value_string command_address[]={
158 {0x09,"Expansion Module-1 Manager Switch"},
159 {0x0A,"Expansion Module-2 Manager Switch"},
160 {0x0B,"Expansion Module-3 Manager Switch"},
161 {0x0C,"Expansion Module-4 Manager Switch"},
162 {0x0D,"Expansion Module-5 Manager Switch"},
163 {0x0E,"Expansion Module-6 Manager Switch"},
164 {0x10,"Expansion Module Manager Phone"},
165 {0x11,"Broadcast Manager Switch"},
166 {0x16,"Audio Manager Switch"},
167 {0x17,"Display Manager Switch"},
168 {0x19,"Key/Indicator Manager Switch"},
169 {0x1a,"Basic Manager Switch"},
170 {0x1e,"Network Manager Switch"},
171 {0x89,"Expansion Module-1 Manager Phone"},
172 {0x8A,"Expansion Module-2 Manager Phone"},
173 {0x8B,"Expansion Module-3 Manager Phone"},
174 {0x8C,"Expansion Module-4 Manager Phone"},
175 {0x8D,"Expansion Module-5 Manager Phone"},
176 {0x8E,"Expansion Module-6 Manager Phone"},
177 {0x91,"Broadcast Manager Phone"},
178 {0x96,"Audio Manager Phone"},
179 {0x97,"Display Manager Phone"},
180 {0x99,"Key/Indicator Manager Phone"},
181 {0x9a,"Basic Manager Phone"},
182 {0x9e,"Network Manager Phone"},
187 dissect_unistim(tvbuff_t *tvb,packet_info *pinfo,proto_tree *tree){
189 proto_item *ti= NULL;
190 proto_item *ti1= NULL;
191 proto_tree *overall_unistim_tree = NULL;
192 proto_tree *rudpm_tree=NULL;
196 switch(tvb_get_guint8(tvb,offset+4)) {/*rudp packet type 0,1,2 only */
201 switch(tvb_get_guint8(tvb,offset+5)){/*payload type 0,1,2,3,ff only */
203 case 0x1: /*UNISTIM*/
204 case 0x2: /*UNISTIM WITH TERM ID*/
206 case 0xff:/*UNKNOWN BUT VALID*/
217 size=tvb_length_remaining(tvb, offset);
218 col_set_str(pinfo->cinfo, COL_PROTOCOL, "UNISTIM");
219 /* Clear out stuff in the info column */
220 col_clear(pinfo->cinfo, COL_INFO);
221 ti = proto_tree_add_item(tree,proto_unistim,tvb,offset,-1,ENC_NA);
222 overall_unistim_tree = proto_item_add_subtree(ti,ett_unistim);
223 ti1=proto_tree_add_text(overall_unistim_tree,tvb,offset,5,"Reliable UDP");
224 rudpm_tree=proto_item_add_subtree(ti1,ett_unistim);
226 proto_tree_add_item(rudpm_tree,hf_unistim_seq_nu,tvb,offset,4,ENC_BIG_ENDIAN);
228 /* Allocate new mem for queueing */
229 uinfo = (unistim_info_t *)se_alloc(sizeof(unistim_info_t));
231 /* Clear tap struct */
232 uinfo->rudp_type = 0;
233 uinfo->payload_type = 0;
234 uinfo->sequence = tvb_get_ntohl(tvb,offset);
237 uinfo->key_state = -1;
238 uinfo->hook_state = -1;
239 uinfo->stream_connect = -1;
240 uinfo->trans_connect = -1;
241 uinfo->set_termid = -1;
242 uinfo->string_data = NULL;
243 uinfo->key_buffer = NULL;
244 SET_ADDRESS(&uinfo->it_ip, AT_NONE, 0, NULL);
245 SET_ADDRESS(&uinfo->ni_ip, AT_NONE, 0, NULL);
249 proto_tree_add_item(rudpm_tree,hf_unistim_packet_type,tvb,offset,1,ENC_BIG_ENDIAN);
250 uinfo->rudp_type = tvb_get_guint8(tvb,offset);
252 switch(tvb_get_guint8(tvb,offset)) {
255 col_add_fstr(pinfo->cinfo, COL_INFO, "NAK for seq - 0x%X",
256 tvb_get_ntohl(tvb, offset-4));
260 col_add_fstr(pinfo->cinfo, COL_INFO, "ACK for seq - 0x%X",
261 tvb_get_ntohl(tvb, offset-4));
264 col_add_fstr(pinfo->cinfo, COL_INFO, "Payload seq - 0x%X",
265 tvb_get_ntohl(tvb, offset-4));
267 dissect_payload(overall_unistim_tree,tvb,offset,pinfo);
274 /* Queue packet for tap */
275 tap_queue_packet(unistim_tap, pinfo, uinfo);
280 dissect_payload(proto_tree *overall_unistim_tree,tvbuff_t *tvb, gint offset, packet_info *pinfo){
282 proto_tree *unistim_tree;
283 guint payload_proto=tvb_get_guint8(tvb,offset);
285 /* Payload type for tap */
286 uinfo->payload_type = payload_proto;
288 ti=proto_tree_add_item(overall_unistim_tree,hf_unistim_payload,
289 tvb,offset,1,ENC_BIG_ENDIAN);
291 unistim_tree=proto_item_add_subtree(ti,ett_unistim);
293 switch(payload_proto){
295 /*NULL PROTO - NOTHING LEFT TO DO*/
298 /*UNISTIM only so no term id but further payload work*/
299 /* Collect info for tap */
300 /* If no term id then packet sourced from NI */
301 COPY_ADDRESS(&(uinfo->ni_ip), &(pinfo->src));
302 COPY_ADDRESS(&(uinfo->it_ip), &(pinfo->dst));
303 uinfo->it_port = pinfo->destport;
306 /*UNISTIM with term id*/
307 /* Termid packs are always sourced from the it, so collect relevant infos */
308 COPY_ADDRESS(&(uinfo->ni_ip),&(pinfo->dst));
309 COPY_ADDRESS(&(uinfo->it_ip),&(pinfo->src));
310 uinfo->it_port = pinfo->srcport;
311 uinfo->termid = tvb_get_ntohl(tvb,offset);
313 proto_tree_add_item(unistim_tree,hf_terminal_id,tvb,offset,4,ENC_BIG_ENDIAN);
318 offset = dissect_uftp_message(unistim_tree,pinfo,tvb,offset);
321 /*TODO flesh this out probably only for init*/
325 /* Handle UFTP seperately because it is significantly different
326 than standard UNISTIM */
327 while (tvb_length_remaining(tvb, offset) > 0)
328 offset = dissect_unistim_message(unistim_tree,pinfo,tvb,offset);
333 dissect_uftp_message(proto_tree *unistim_tree,packet_info *pinfo _U_,tvbuff_t *tvb,gint offset){
339 proto_tree *msg_tree;
341 ti = proto_tree_add_text(unistim_tree,tvb,offset,-1,"UFTP CMD");
343 msg_tree = proto_item_add_subtree(ti,ett_unistim);
345 command=tvb_get_guint8(tvb,offset);
347 proto_tree_add_item(msg_tree,hf_uftp_command,tvb,offset,1,ENC_BIG_ENDIAN);
354 /* Connection request */
359 /* Connection Details */
360 /* Get datablock size */
361 proto_tree_add_item(msg_tree,hf_uftp_datablock_size,tvb,offset,2,ENC_BIG_ENDIAN);
363 /* Get datablock limit b4 flow control */
364 proto_tree_add_item(msg_tree,hf_uftp_datablock_limit,tvb,offset,1,ENC_BIG_ENDIAN);
367 str_len = tvb_length_remaining(tvb, offset);
368 proto_tree_add_item(msg_tree,hf_uftp_filename,tvb,offset,str_len,ENC_ASCII|ENC_NA);
373 /* Flow Control off */
378 /* Connection Granted */
383 /* Connection Denied */
388 /* File Data Block */
390 dat_len = tvb_length_remaining(tvb, offset);
391 proto_tree_add_item(msg_tree,hf_uftp_datablock,tvb,offset,dat_len,ENC_NA);
402 dissect_unistim_message(proto_tree *unistim_tree,packet_info *pinfo,tvbuff_t *tvb,gint offset){
406 proto_tree *msg_tree;
408 ti = proto_tree_add_text(unistim_tree,tvb,offset,-1,"Unistim CMD");
410 msg_tree = proto_item_add_subtree(ti,ett_unistim);
412 addr=tvb_get_guint8(tvb,offset);
414 proto_tree_add_item(msg_tree,hf_unistim_cmd_add,tvb,offset,1,ENC_BIG_ENDIAN);
417 msg_len=tvb_get_guint8(tvb,offset);
421 ti=proto_tree_add_item(msg_tree,hf_unistim_len,tvb,offset,1,ENC_BIG_ENDIAN);
422 expert_add_info_format(pinfo,ti,PI_MALFORMED,PI_ERROR,"Length too short");
423 return tvb_length(tvb);
425 proto_item_set_len(ti,msg_len);
426 proto_tree_add_item(msg_tree,hf_unistim_len,tvb,offset,1,ENC_BIG_ENDIAN);
435 /*Expansion Manager Switch*/
442 offset = dissect_expansion_switch(msg_tree,tvb,offset,msg_len-2);
446 /*Broadcast Manager Switch*/
447 offset = dissect_broadcast_switch(msg_tree,tvb,offset,msg_len-2);
450 /*Audio Manager Switch*/
451 offset = dissect_audio_switch(msg_tree,pinfo,tvb,offset,msg_len-2);
454 /*Display Manager Switch*/
455 offset = dissect_display_switch(msg_tree,tvb,offset,msg_len-2);
458 /*Key Indicator Manager Switch*/
459 offset = dissect_key_indicator_switch(msg_tree,tvb,offset,msg_len-2);
462 /*Basic Manager Switch*/
463 offset = dissect_basic_switch(msg_tree,tvb,offset,msg_len-2);
466 /*Network Manager Switch*/
467 offset = dissect_network_switch(msg_tree,tvb,offset,msg_len-2);
475 /*Expansion Manager Phone*/
476 offset = dissect_expansion_phone(msg_tree,tvb,offset,msg_len-2);
480 /*Broadcast Manager phone*/
481 offset = dissect_broadcast_phone(msg_tree,tvb,offset,msg_len-2);
484 /*Audio Manager phone*/
485 offset = dissect_audio_phone(msg_tree,tvb,offset,msg_len-2);
488 /*Display Manager phone*/
489 offset = dissect_display_phone(msg_tree,tvb,offset,msg_len-2);
492 /*Key/Indicator Manager phone*/
493 offset = dissect_key_indicator_phone(msg_tree,tvb,offset,msg_len-2);
496 /*Basic Manager phone*/
497 offset = dissect_basic_phone(msg_tree,tvb,offset,msg_len-2);
500 /*Network Manager Switch*/
501 offset = dissect_network_phone(msg_tree,tvb,offset,msg_len-2);
504 /*See some undocumented messages. Don't want to miss the ones we understand*/
505 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len-2,ENC_NA);
516 dissect_basic_phone(proto_tree *msg_tree,
517 tvbuff_t *tvb,gint offset, guint msg_len){
520 basic_cmd=tvb_get_guint8(tvb,offset);
522 proto_tree_add_item(msg_tree,hf_basic_phone_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
524 offset+=1;msg_len-=1;
528 /*Basic Manager Attributes Info*/
529 proto_tree_add_item(msg_tree,hf_basic_phone_eeprom_stat_cksum,
530 tvb,offset,1,ENC_BIG_ENDIAN);
532 proto_tree_add_item(msg_tree,hf_basic_phone_eeprom_dynam,
533 tvb,offset,1,ENC_BIG_ENDIAN);
535 proto_tree_add_item(msg_tree,hf_basic_phone_eeprom_net_config_cksum,
536 tvb,offset,1,ENC_BIG_ENDIAN);
540 /*Basic Manager Options Report*/
541 proto_tree_add_item(msg_tree,hf_basic_switch_options_secure,
542 tvb,offset,1,ENC_BIG_ENDIAN);
547 proto_tree_add_item(msg_tree,hf_basic_phone_fw_ver,
548 tvb,offset,msg_len,ENC_ASCII|ENC_NA);
553 proto_tree_add_item(msg_tree,hf_basic_it_type,tvb,offset,1,ENC_BIG_ENDIAN);
558 proto_tree_add_item(msg_tree,hf_basic_phone_hw_id,
559 tvb,offset,msg_len,ENC_NA);
563 /*Product Engineering Code*/
564 proto_tree_add_item(msg_tree,hf_basic_prod_eng_code,
565 tvb,offset,msg_len,ENC_ASCII|ENC_NA);
570 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
574 /*Encapsulate Command*/
575 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
579 /*Phone Ethernet address*/
580 proto_tree_add_item(msg_tree,hf_basic_ether_address,
581 tvb,offset,msg_len,ENC_NA);
585 /*not in pdf but get them*/
586 set_ascii_item(msg_tree,tvb,offset,msg_len);
593 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
601 dissect_basic_switch(proto_tree *msg_tree,
602 tvbuff_t *tvb,gint offset,guint msg_len){
604 basic_cmd=tvb_get_guint8(tvb,offset);
605 proto_tree_add_item(msg_tree,hf_basic_switch_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
606 offset+=1;msg_len-=1;
609 /*Query Basic Manager*/
610 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
611 proto_tree_add_item(msg_tree,hf_basic_switch_query_attr,
612 tvb,offset,1,ENC_BIG_ENDIAN);
613 proto_tree_add_item(msg_tree,hf_basic_switch_query_opts,
614 tvb,offset,1,ENC_BIG_ENDIAN);
615 proto_tree_add_item(msg_tree,hf_basic_switch_query_fw,
616 tvb,offset,1,ENC_BIG_ENDIAN);
617 proto_tree_add_item(msg_tree,hf_basic_switch_query_hw_id,
618 tvb,offset,1,ENC_BIG_ENDIAN);
619 proto_tree_add_item(msg_tree,hf_basic_switch_query_it_type,
620 tvb,offset,1,ENC_BIG_ENDIAN);
621 proto_tree_add_item(msg_tree,hf_basic_switch_query_prod_eng_code,
622 tvb,offset,1,ENC_BIG_ENDIAN);
623 proto_tree_add_item(msg_tree,hf_basic_switch_query_gray_mkt_info,
624 tvb,offset,1,ENC_BIG_ENDIAN);
628 /*Basic Manager Options*/
629 proto_tree_add_item(msg_tree,hf_basic_switch_options_secure,
630 tvb,offset,1,ENC_BIG_ENDIAN);
635 proto_tree_add_item(msg_tree,hf_basic_switch_element_id,
636 tvb,offset,1,ENC_BIG_ENDIAN);
638 proto_tree_add_item(msg_tree,hf_basic_switch_eeprom_data,
639 tvb,offset,msg_len,ENC_NA);
643 /*Assign Terminal ID*/
645 uinfo->set_termid = 1;
647 proto_tree_add_item(msg_tree,hf_basic_switch_terminal_id,
648 tvb,offset,msg_len,ENC_BIG_ENDIAN);
652 /*Encapsulate Command*/
653 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
657 /*showing up in captures but not in pdf*/
658 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
664 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
675 dissect_broadcast_switch(proto_tree *msg_tree,
676 tvbuff_t *tvb,gint offset, guint msg_len){
678 guint year,month,day,hour,minute,second;
679 proto_item *date_label;
680 proto_item *time_label;
681 proto_tree *date_tree;
682 proto_tree *time_tree;
683 bcast_cmd=tvb_get_guint8(tvb,offset);
684 proto_tree_add_item(msg_tree,hf_broadcast_switch_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
685 offset+=1;msg_len-=1;
688 /*Accessory Sync Update - len=3 */
691 /*Logical Icon Update*/
692 proto_tree_add_item(msg_tree,hf_basic_bit_field,
693 tvb,offset,1,ENC_BIG_ENDIAN);
694 proto_tree_add_item(msg_tree,hf_broadcast_icon_state,
695 tvb,offset,1,ENC_BIG_ENDIAN);
696 proto_tree_add_item(msg_tree,hf_broadcast_icon_cadence,
697 tvb,offset,1,ENC_BIG_ENDIAN);
701 /*Time and Date Download*/
702 year=tvb_get_guint8(tvb,offset);
703 month=tvb_get_guint8(tvb,offset+1);
704 day=tvb_get_guint8(tvb,offset+2);
705 hour=tvb_get_guint8(tvb,offset+3);
706 minute=tvb_get_guint8(tvb,offset+4);
707 second=tvb_get_guint8(tvb,offset+5);
708 date_label=proto_tree_add_text(msg_tree,tvb,offset,3,
709 "Date %i/%i/%i",month,day,year%100);
710 date_tree=proto_item_add_subtree(date_label,ett_unistim);
711 proto_tree_add_item(date_tree,hf_broadcast_year,tvb,offset,1,ENC_BIG_ENDIAN);
713 proto_tree_add_item(date_tree,hf_broadcast_month,tvb,offset,1,ENC_BIG_ENDIAN);
715 proto_tree_add_item(date_tree,hf_broadcast_day,tvb,offset,1,ENC_BIG_ENDIAN);
718 time_label=proto_tree_add_text(msg_tree,tvb,offset,3,
719 "Time %i:%i:%i",hour,minute,second);
720 time_tree=proto_item_add_subtree(time_label,ett_unistim);
721 proto_tree_add_item(time_tree,hf_broadcast_hour,tvb,offset,1,ENC_BIG_ENDIAN);
723 proto_tree_add_item(time_tree,hf_broadcast_minute,tvb,offset,1,ENC_BIG_ENDIAN);
725 proto_tree_add_item(time_tree,hf_broadcast_second,tvb,offset,1,ENC_BIG_ENDIAN);
729 /*Set Default Character Table Config */
730 /* UGLY may work may not*/
731 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
738 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
744 /*DONE Haven't seen any phone broadcasts, wouldn't expect to*/
746 dissect_broadcast_phone(proto_tree *msg_tree,
747 tvbuff_t *tvb, gint offset,guint msg_len){
749 proto_tree_add_item(msg_tree,hf_generic_data, tvb,offset,msg_len,ENC_NA);
757 dissect_display_switch(proto_tree *msg_tree,
758 tvbuff_t *tvb, gint offset,guint msg_len){
761 guint time_date_mask;
765 proto_tree *address_tree;
767 display_cmd=tvb_get_guint8(tvb,offset);
768 proto_tree_add_item(msg_tree,hf_display_switch_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
769 offset+=1;msg_len-=1;
773 /*Restore Default Character Table Configuration length = 3*/
777 proto_tree_add_item(msg_tree,hf_display_arrow,tvb,offset,1,ENC_BIG_ENDIAN);
781 /*Query Status Bar Icon*/
782 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
786 /*Highlight Off length = 3*/
789 /*Highlight On length = 3*/
792 /*Restore Time and Date length = 3*/
795 /*Clear Time and Date length = 3*/
798 /*Call Duration Timer*/
799 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
800 proto_tree_add_item(msg_tree,hf_display_call_timer_mode,tvb,offset,
802 proto_tree_add_item(msg_tree,hf_display_call_timer_reset,tvb,offset,
804 proto_tree_add_item(msg_tree,hf_display_call_timer_display,tvb,offset,
806 proto_tree_add_item(msg_tree,hf_display_call_timer_delay,tvb,offset,
808 offset+=1;msg_len-=1;
809 proto_tree_add_item(msg_tree,hf_display_call_timer_id,tvb,offset,
811 offset+=1;msg_len-=1;
814 /*Query Display Manager*/
815 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
819 /*Download Call Duration Timer Delay*/
820 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
824 /*Disable Display Field*/
825 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
830 clear_mask=tvb_get_guint8(tvb,offset);
831 /*need to know which paths to take*/
832 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
833 proto_tree_add_item(msg_tree,hf_display_clear_numeric,
834 tvb,offset,1,ENC_BIG_ENDIAN);
835 proto_tree_add_item(msg_tree,hf_display_clear_context,
836 tvb,offset,1,ENC_BIG_ENDIAN);
837 proto_tree_add_item(msg_tree,hf_display_clear_date,
838 tvb,offset,1,ENC_BIG_ENDIAN);
840 proto_tree_add_item(msg_tree,hf_display_clear_time,
841 tvb,offset,1,ENC_BIG_ENDIAN);
842 proto_tree_add_item(msg_tree,hf_display_clear_line,
843 tvb,offset,1,ENC_BIG_ENDIAN);
844 proto_tree_add_item(msg_tree,hf_display_clear_status_bar_icon,
845 tvb,offset,1,ENC_BIG_ENDIAN);
846 proto_tree_add_item(msg_tree,hf_display_clear_softkey,
847 tvb,offset,1,ENC_BIG_ENDIAN);
848 proto_tree_add_item(msg_tree,hf_display_clear_softkey_label,
849 tvb,offset,1,ENC_BIG_ENDIAN);
850 offset+=1;msg_len-=1;
851 if((clear_mask&DISPLAY_CLEAR_LINE)==DISPLAY_CLEAR_LINE){
852 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
853 proto_tree_add_item(msg_tree,hf_display_clear_line_1,
854 tvb,offset,1,ENC_BIG_ENDIAN);
855 proto_tree_add_item(msg_tree,hf_display_clear_line_2,
856 tvb,offset,1,ENC_BIG_ENDIAN);
857 proto_tree_add_item(msg_tree,hf_display_clear_line_3,
858 tvb,offset,1,ENC_BIG_ENDIAN);
859 proto_tree_add_item(msg_tree,hf_display_clear_line_4,
860 tvb,offset,1,ENC_BIG_ENDIAN);
861 proto_tree_add_item(msg_tree,hf_display_clear_line_5,
862 tvb,offset,1,ENC_BIG_ENDIAN);
863 proto_tree_add_item(msg_tree,hf_display_clear_line_6,
864 tvb,offset,1,ENC_BIG_ENDIAN);
865 proto_tree_add_item(msg_tree,hf_display_clear_line_7,
866 tvb,offset,1,ENC_BIG_ENDIAN);
867 proto_tree_add_item(msg_tree,hf_display_clear_line_8,
868 tvb,offset,1,ENC_BIG_ENDIAN);
869 offset+=1;msg_len-=1;
871 if((clear_mask&DISPLAY_CLEAR_STATUS_BAR_ICON)==
872 DISPLAY_CLEAR_STATUS_BAR_ICON){
873 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
874 proto_tree_add_item(msg_tree,hf_display_clear_status_bar_icon_1,
875 tvb,offset,1,ENC_BIG_ENDIAN);
876 proto_tree_add_item(msg_tree,hf_display_clear_status_bar_icon_2,
877 tvb,offset,1,ENC_BIG_ENDIAN);
878 proto_tree_add_item(msg_tree,hf_display_clear_status_bar_icon_3,
879 tvb,offset,1,ENC_BIG_ENDIAN);
880 proto_tree_add_item(msg_tree,hf_display_clear_status_bar_icon_4,
881 tvb,offset,1,ENC_BIG_ENDIAN);
882 proto_tree_add_item(msg_tree,hf_display_clear_status_bar_icon_5,
883 tvb,offset,1,ENC_BIG_ENDIAN);
884 proto_tree_add_item(msg_tree,hf_display_clear_status_bar_icon_6,
885 tvb,offset,1,ENC_BIG_ENDIAN);
886 proto_tree_add_item(msg_tree,hf_display_clear_status_bar_icon_7,
887 tvb,offset,1,ENC_BIG_ENDIAN);
888 proto_tree_add_item(msg_tree,hf_display_clear_status_bar_icon_8,
889 tvb,offset,1,ENC_BIG_ENDIAN);
890 offset+=1;msg_len-=1;
892 if((clear_mask&DISPLAY_CLEAR_SOFTKEY)==DISPLAY_CLEAR_SOFTKEY){
893 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
894 proto_tree_add_item(msg_tree,hf_display_clear_soft_key_1,
895 tvb,offset,1,ENC_BIG_ENDIAN);
896 proto_tree_add_item(msg_tree,hf_display_clear_soft_key_2,
897 tvb,offset,1,ENC_BIG_ENDIAN);
898 proto_tree_add_item(msg_tree,hf_display_clear_soft_key_3,
899 tvb,offset,1,ENC_BIG_ENDIAN);
900 proto_tree_add_item(msg_tree,hf_display_clear_soft_key_4,
901 tvb,offset,1,ENC_BIG_ENDIAN);
902 proto_tree_add_item(msg_tree,hf_display_clear_soft_key_5,
903 tvb,offset,1,ENC_BIG_ENDIAN);
904 proto_tree_add_item(msg_tree,hf_display_clear_soft_key_6,
905 tvb,offset,1,ENC_BIG_ENDIAN);
906 proto_tree_add_item(msg_tree,hf_display_clear_soft_key_7,
907 tvb,offset,1,ENC_BIG_ENDIAN);
908 proto_tree_add_item(msg_tree,hf_display_clear_soft_key_8,
909 tvb,offset,1,ENC_BIG_ENDIAN);
910 offset+=1;msg_len-=1;
912 if((clear_mask&DISPLAY_CLEAR_SOFTKEY_LABEL)==DISPLAY_CLEAR_SOFTKEY_LABEL){
913 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
914 proto_tree_add_item(msg_tree,hf_display_clear_sk_label_key_id,tvb,offset,1,ENC_BIG_ENDIAN);
915 proto_tree_add_item(msg_tree,hf_display_clear_all_slks,tvb,offset,1,ENC_BIG_ENDIAN);
916 offset+=1;msg_len-=1;
921 movement_byte=tvb_get_guint8(tvb,offset);
922 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
923 proto_tree_add_item(msg_tree,hf_display_cursor_move_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
924 proto_tree_add_item(msg_tree,hf_display_cursor_blink,tvb,offset,1,ENC_BIG_ENDIAN);
925 offset+=1;msg_len-=1;
930 if((movement_byte&0x01)==0x01){
931 address_byte=tvb_get_guint8(tvb,offset);
932 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
933 proto_tree_add_item(msg_tree,hf_display_write_address_numeric,
934 tvb,offset,1,ENC_BIG_ENDIAN);
935 proto_tree_add_item(msg_tree,hf_display_write_address_context,
936 tvb,offset,1,ENC_BIG_ENDIAN);
937 proto_tree_add_item(msg_tree,hf_display_write_address_line,
938 tvb,offset,1,ENC_BIG_ENDIAN);
939 proto_tree_add_item(msg_tree,hf_display_write_address_soft_key,
940 tvb,offset,1,ENC_BIG_ENDIAN);
941 if((address_byte&DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG)==
942 DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG)
943 proto_tree_add_item(msg_tree,
944 hf_display_write_address_softkey_id,
945 tvb,offset,1,ENC_BIG_ENDIAN);
946 offset+=1;msg_len-=1;
952 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
953 proto_tree_add_item(msg_tree,hf_display_write_address_char_pos,
954 tvb,offset,1,ENC_BIG_ENDIAN);
955 proto_tree_add_item(msg_tree,hf_display_write_address_line_number,
956 tvb,offset,1,ENC_BIG_ENDIAN);
957 offset+=1;msg_len-=1;
960 /*Display Scroll with Data (before)*/
961 set_ascii_item(msg_tree,tvb,offset,msg_len);
965 /*Display Scroll with Data (after)*/
966 set_ascii_item(msg_tree,tvb,offset,msg_len);
970 /*Status Bar Icon Update*/
971 proto_tree_add_item(msg_tree,hf_basic_bit_field, tvb,offset,1,ENC_BIG_ENDIAN);
972 proto_tree_add_item(msg_tree,hf_icon_id,tvb,offset,1,ENC_BIG_ENDIAN);
974 proto_tree_add_item(msg_tree,hf_basic_bit_field, tvb,offset,1,ENC_BIG_ENDIAN);
975 proto_tree_add_item(msg_tree,hf_broadcast_icon_state,
976 tvb,offset,1,ENC_BIG_ENDIAN);
977 proto_tree_add_item(msg_tree,hf_broadcast_icon_cadence,
978 tvb,offset,1,ENC_BIG_ENDIAN);
982 /*Month Labels Download*/
983 set_ascii_item(msg_tree,tvb,offset,msg_len);
987 /*Call Duration Timer Label Download*/
988 set_ascii_item(msg_tree,tvb,offset,msg_len);
989 offset+=1;msg_len-=1;
992 /*Time and Date Format*/
993 time_date_mask=tvb_get_guint8(tvb,offset);
994 if((time_date_mask&DISPLAY_USE_TIME_FORMAT)==DISPLAY_USE_TIME_FORMAT){
995 proto_tree_add_item(msg_tree,hf_display_time_format,tvb,offset,1,ENC_BIG_ENDIAN);
997 if((time_date_mask&DISPLAY_USE_DATE_FORMAT)==DISPLAY_USE_DATE_FORMAT){
998 proto_tree_add_item(msg_tree,hf_display_date_format,tvb,offset,1,ENC_BIG_ENDIAN);
1000 proto_tree_add_item(msg_tree,hf_display_use_time_format,tvb,offset,1,ENC_BIG_ENDIAN);
1001 proto_tree_add_item(msg_tree,hf_display_use_date_format,tvb,offset,1,ENC_BIG_ENDIAN);
1002 offset+=1;msg_len-=1;
1005 /*address|no control|no tag|no*/
1006 set_ascii_item(msg_tree,tvb,offset,msg_len);
1010 /*address|yes control|no tag|no*/
1011 tmp_ti=proto_tree_add_text(msg_tree,tvb,offset,0,"Address");
1013 address_tree=proto_item_add_subtree(tmp_ti,ett_unistim);
1014 address_byte=tvb_get_guint8(tvb,offset);
1015 proto_tree_add_item(address_tree,hf_basic_bit_field,
1016 tvb,offset,1,ENC_BIG_ENDIAN);
1017 proto_tree_add_item(address_tree,hf_display_write_address_numeric,
1018 tvb,offset,1,ENC_BIG_ENDIAN);
1019 proto_tree_add_item(address_tree,hf_display_write_address_context,
1020 tvb,offset,1,ENC_BIG_ENDIAN);
1021 proto_tree_add_item(address_tree,hf_display_write_address_line,
1022 tvb,offset,1,ENC_BIG_ENDIAN);
1023 proto_tree_add_item(address_tree,hf_display_write_address_soft_key,
1024 tvb,offset,1,ENC_BIG_ENDIAN);
1025 proto_tree_add_item(address_tree,hf_display_write_address_soft_label,
1026 tvb,offset,1,ENC_BIG_ENDIAN);
1028 if((address_byte&DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG)==
1029 DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG){
1030 proto_tree_add_item(address_tree,
1031 hf_display_write_address_softkey_id,
1032 tvb,offset,1,ENC_BIG_ENDIAN);
1034 offset+=1;msg_len-=1;
1035 if((address_byte&DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG)==
1036 DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG){
1037 proto_tree_add_item(address_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1038 proto_tree_add_item(address_tree,
1039 hf_display_write_address_char_pos,
1040 tvb,offset,1,ENC_BIG_ENDIAN);
1041 if((address_byte&DISPLAY_WRITE_ADDRESS_LINE_FLAG)!=
1042 DISPLAY_WRITE_ADDRESS_LINE_FLAG){
1043 offset+=1;msg_len-=1;
1046 if((address_byte&DISPLAY_WRITE_ADDRESS_LINE_FLAG)==
1047 DISPLAY_WRITE_ADDRESS_LINE_FLAG){
1048 proto_tree_add_item(address_tree,
1049 hf_display_write_address_line_number,
1050 tvb,offset,1,ENC_BIG_ENDIAN);
1051 offset+=1;msg_len-=1;
1054 /* I'm guessing this will work flakily at best */
1055 uinfo->string_data = tvb_get_string(tvb,offset,msg_len);
1056 set_ascii_item(msg_tree,tvb,offset,msg_len);
1062 /*address|no control|yes tag|no*/
1063 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1064 proto_tree_add_item(msg_tree,hf_display_write_cursor_move,
1065 tvb,offset,1,ENC_BIG_ENDIAN);
1066 proto_tree_add_item(msg_tree,hf_display_write_clear_left,
1067 tvb,offset,1,ENC_BIG_ENDIAN);
1068 proto_tree_add_item(msg_tree,hf_display_write_clear_right,
1069 tvb,offset,1,ENC_BIG_ENDIAN);
1070 proto_tree_add_item(msg_tree,hf_display_write_shift_left,
1071 tvb,offset,1,ENC_BIG_ENDIAN);
1072 proto_tree_add_item(msg_tree,hf_display_write_shift_right,
1073 tvb,offset,1,ENC_BIG_ENDIAN);
1074 proto_tree_add_item(msg_tree,hf_display_write_highlight,
1075 tvb,offset,1,ENC_BIG_ENDIAN);
1076 offset+=1;msg_len-=1;
1077 set_ascii_item(msg_tree,tvb,offset,msg_len);
1079 proto_tree_add_item(msg_tree,hf_generic_string,
1080 tvb,offset,msg_len,ENC_ASCII|ENC_NA);
1084 /*address|yes control|yes tag|no*/
1085 tmp_ti=proto_tree_add_text(msg_tree,tvb,offset,0,"Address Data");
1086 address_tree=proto_item_add_subtree(tmp_ti,ett_unistim);
1087 address_byte=tvb_get_guint8(tvb,offset);
1088 proto_tree_add_item(address_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1089 proto_tree_add_item(address_tree,
1090 hf_display_write_address_numeric,
1091 tvb,offset,1,ENC_BIG_ENDIAN);
1092 proto_tree_add_item(address_tree,
1093 hf_display_write_address_context,
1094 tvb,offset,1,ENC_BIG_ENDIAN);
1095 proto_tree_add_item(address_tree,
1096 hf_display_write_address_line,
1097 tvb,offset,1,ENC_BIG_ENDIAN);
1098 proto_tree_add_item(address_tree,
1099 hf_display_write_address_soft_key,
1100 tvb,offset,1,ENC_BIG_ENDIAN);
1101 proto_tree_add_item(address_tree,
1102 hf_display_write_address_soft_label,
1103 tvb,offset,1,ENC_BIG_ENDIAN);
1104 if((address_byte&DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG)==
1105 DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG){
1106 proto_tree_add_item(address_tree,hf_display_write_address_softkey_id,
1107 tvb,offset,1,ENC_BIG_ENDIAN);
1108 offset+=1; msg_len-=1;
1110 if((address_byte&DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG)==
1111 DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG){
1112 proto_tree_add_item(address_tree,
1113 hf_display_write_address_char_pos,
1114 tvb,offset,1,ENC_BIG_ENDIAN);
1115 if((address_byte&DISPLAY_WRITE_ADDRESS_LINE_FLAG)!=
1116 DISPLAY_WRITE_ADDRESS_LINE_FLAG)
1117 offset+=1;msg_len-=1;
1119 if((address_byte&DISPLAY_WRITE_ADDRESS_LINE_FLAG)==
1120 DISPLAY_WRITE_ADDRESS_LINE_FLAG){
1121 proto_tree_add_item(address_tree,
1122 hf_display_write_address_line_number,
1123 tvb,offset,1,ENC_BIG_ENDIAN);
1124 offset+=1;msg_len-=1;
1126 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1127 proto_tree_add_item(msg_tree,hf_display_write_cursor_move,
1128 tvb,offset,1,ENC_BIG_ENDIAN);
1129 proto_tree_add_item(msg_tree,hf_display_write_clear_left,
1130 tvb,offset,1,ENC_BIG_ENDIAN);
1131 proto_tree_add_item(msg_tree,hf_display_write_clear_right,
1132 tvb,offset,1,ENC_BIG_ENDIAN);
1133 proto_tree_add_item(msg_tree,hf_display_write_shift_left,
1134 tvb,offset,1,ENC_BIG_ENDIAN);
1135 proto_tree_add_item(msg_tree,hf_display_write_shift_right,
1136 tvb,offset,1,ENC_BIG_ENDIAN);
1137 proto_tree_add_item(msg_tree,hf_display_write_highlight,
1138 tvb,offset,1,ENC_BIG_ENDIAN);
1139 offset+=1;msg_len-=1;
1140 set_ascii_item(msg_tree,tvb,offset,msg_len);
1144 /*address|no control|no tag|yes*/
1145 proto_tree_add_item(msg_tree,hf_display_write_tag,tvb,offset,1,ENC_BIG_ENDIAN);
1146 offset+=1;msg_len-=1;
1147 set_ascii_item(msg_tree,tvb,offset,msg_len);
1151 /*address|yes control|no tag|yes*/
1152 tmp_ti=proto_tree_add_text(msg_tree,tvb,offset,0,"Address Data");
1153 address_tree=proto_item_add_subtree(tmp_ti,ett_unistim);
1154 address_byte=tvb_get_guint8(tvb,offset);
1155 proto_tree_add_item(address_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1156 proto_tree_add_item(address_tree,hf_display_write_address_numeric,tvb,
1157 offset,1,ENC_BIG_ENDIAN);
1158 proto_tree_add_item(address_tree,hf_display_write_address_context,
1159 tvb,offset,1,ENC_BIG_ENDIAN);
1160 proto_tree_add_item(address_tree,hf_display_write_address_line,
1161 tvb,offset,1,ENC_BIG_ENDIAN);
1162 proto_tree_add_item(address_tree,hf_display_write_address_soft_key,
1163 tvb,offset,1,ENC_BIG_ENDIAN);
1164 proto_tree_add_item(address_tree,hf_display_write_address_soft_label,
1165 tvb,offset,1,ENC_BIG_ENDIAN);
1166 if((address_byte&DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG)==
1167 DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG)
1168 proto_tree_add_item(address_tree,
1169 hf_display_write_address_softkey_id,
1170 tvb,offset,1,ENC_BIG_ENDIAN);
1171 offset+=1; msg_len-=1;
1172 if((address_byte&DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG)==
1173 DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG){
1174 proto_tree_add_item(address_tree,
1175 hf_display_write_address_char_pos,
1176 tvb,offset,1,ENC_BIG_ENDIAN);
1177 if((address_byte&DISPLAY_WRITE_ADDRESS_LINE_FLAG)!=
1178 DISPLAY_WRITE_ADDRESS_LINE_FLAG)
1179 offset+=1;msg_len-=1;
1181 if((address_byte&DISPLAY_WRITE_ADDRESS_LINE_FLAG)==
1182 DISPLAY_WRITE_ADDRESS_LINE_FLAG){
1183 proto_tree_add_item(address_tree,hf_display_write_address_line_number,
1184 tvb,offset,1,ENC_BIG_ENDIAN);
1185 offset+=1;msg_len-=1;
1187 set_ascii_item(msg_tree,tvb,offset,msg_len);
1191 /*address|no control|yes tag|yes*/
1192 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1193 proto_tree_add_item(msg_tree,hf_display_write_cursor_move,
1194 tvb,offset,1,ENC_BIG_ENDIAN);
1195 proto_tree_add_item(msg_tree,hf_display_write_clear_left,
1196 tvb,offset,1,ENC_BIG_ENDIAN);
1197 proto_tree_add_item(msg_tree,hf_display_write_clear_right,
1198 tvb,offset,1,ENC_BIG_ENDIAN);
1199 proto_tree_add_item(msg_tree,hf_display_write_shift_left,
1200 tvb,offset,1,ENC_BIG_ENDIAN);
1201 proto_tree_add_item(msg_tree,hf_display_write_shift_right,
1202 tvb,offset,1,ENC_BIG_ENDIAN);
1203 proto_tree_add_item(msg_tree,hf_display_write_highlight,
1204 tvb,offset,1,ENC_BIG_ENDIAN);
1205 offset+=1;msg_len-=1;
1207 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1209 proto_tree_add_item(msg_tree,hf_display_write_tag,tvb,offset,1,ENC_BIG_ENDIAN);
1210 offset+=1;msg_len-=1;
1211 set_ascii_item(msg_tree,tvb,offset,msg_len);
1215 /*address|yes control|yes tag|yes*/
1216 tmp_ti=proto_tree_add_text(msg_tree,tvb,offset,0,"Address");
1217 address_tree=proto_item_add_subtree(tmp_ti,ett_unistim);
1218 address_byte=tvb_get_guint8(tvb,offset);
1219 proto_tree_add_item(address_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1220 proto_tree_add_item(address_tree,hf_display_write_address_numeric,
1221 tvb,offset,1,ENC_BIG_ENDIAN);
1222 proto_tree_add_item(address_tree,hf_display_write_address_context,
1223 tvb,offset,1,ENC_BIG_ENDIAN);
1224 proto_tree_add_item(address_tree,hf_display_write_address_line,
1225 tvb,offset,1,ENC_BIG_ENDIAN);
1226 proto_tree_add_item(address_tree,hf_display_write_address_soft_key,
1227 tvb,offset,1,ENC_BIG_ENDIAN);
1228 proto_tree_add_item(address_tree,hf_display_write_address_soft_label,
1229 tvb,offset,1,ENC_BIG_ENDIAN);
1230 if((address_byte&DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG)==
1231 DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG)
1232 proto_tree_add_item(address_tree,hf_display_write_address_softkey_id,
1233 tvb,offset,1,ENC_BIG_ENDIAN);
1234 offset+=1; msg_len-=1;
1235 proto_tree_add_item(msg_tree,hf_generic_string,
1236 tvb,offset,msg_len,ENC_ASCII|ENC_NA);
1238 if((address_byte&DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG)==
1239 DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG){
1240 proto_tree_add_item(address_tree,hf_display_write_address_char_pos,
1241 tvb,offset,1,ENC_BIG_ENDIAN);
1242 if((address_byte&DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG)!=
1243 DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG)
1244 offset+=1;msg_len-=1;
1246 if((address_byte&DISPLAY_WRITE_ADDRESS_LINE_FLAG)==
1247 DISPLAY_WRITE_ADDRESS_LINE_FLAG){
1248 proto_tree_add_item(address_tree,
1249 hf_display_write_address_line_number,
1250 tvb,offset,1,ENC_BIG_ENDIAN);
1251 offset+=1;msg_len-=1;
1253 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1254 proto_tree_add_item(msg_tree,hf_display_write_cursor_move,
1255 tvb,offset,1,ENC_BIG_ENDIAN);
1256 proto_tree_add_item(msg_tree,hf_display_write_clear_left,
1257 tvb,offset,1,ENC_BIG_ENDIAN);
1258 proto_tree_add_item(msg_tree,hf_display_write_clear_right,
1259 tvb,offset,1,ENC_BIG_ENDIAN);
1260 proto_tree_add_item(msg_tree,hf_display_write_shift_left,
1261 tvb,offset,1,ENC_BIG_ENDIAN);
1262 proto_tree_add_item(msg_tree,hf_display_write_shift_right,
1263 tvb,offset,1,ENC_BIG_ENDIAN);
1264 proto_tree_add_item(msg_tree,hf_display_write_highlight,
1265 tvb,offset,1,ENC_BIG_ENDIAN);
1266 offset+=1;msg_len-=1;
1267 proto_tree_add_item(msg_tree,hf_display_write_tag,
1268 tvb,offset,1,ENC_BIG_ENDIAN);
1269 offset+=1;msg_len-=1;
1270 set_ascii_item(msg_tree,tvb,offset,msg_len);
1274 /*Context Info Bar Format*/
1276 proto_tree_add_item(msg_tree,hf_display_context_format,tvb,offset,1,ENC_BIG_ENDIAN);
1277 proto_tree_add_item(msg_tree,hf_display_context_field,tvb,offset,1,ENC_BIG_ENDIAN);
1278 offset+=1;msg_len-=1;
1282 /*Set Default Character Table Configuration VERY UGLY*/
1283 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1287 /*Special Character Download*/
1288 proto_tree_add_item(msg_tree,hf_display_char_address,tvb,offset,1,ENC_BIG_ENDIAN);
1289 offset+=1;msg_len-=1;
1290 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1294 /*Highlighted Field Definition*/
1295 highlight_cmd=tvb_get_guint8(tvb,offset);
1296 proto_tree_add_item(msg_tree,hf_display_cursor_numeric,tvb,offset,1,ENC_BIG_ENDIAN);
1297 proto_tree_add_item(msg_tree,hf_display_cursor_context ,tvb,offset,1,ENC_BIG_ENDIAN);
1298 proto_tree_add_item(msg_tree,hf_display_cursor_line,tvb,offset,1,ENC_BIG_ENDIAN);
1299 proto_tree_add_item(msg_tree,hf_display_cursor_softkey,tvb,offset,1,ENC_BIG_ENDIAN);
1300 proto_tree_add_item(msg_tree,hf_display_cursor_softkey_id,tvb,offset,1,ENC_BIG_ENDIAN);
1301 offset+=1;msg_len-=1;proto_tree_add_item(msg_tree,hf_display_hlight_start,tvb,offset,1,ENC_BIG_ENDIAN);
1302 offset+=1;msg_len-=1;
1303 proto_tree_add_item(msg_tree,hf_display_hlight_end,tvb,offset,1,ENC_BIG_ENDIAN);
1304 offset+=1;msg_len-=1;
1307 if((highlight_cmd&DISPLAY_CURSOR_LINE)==DISPLAY_CURSOR_LINE){
1308 proto_tree_add_item(msg_tree,hf_display_cursor_char_pos,tvb,offset,1,ENC_BIG_ENDIAN);
1309 proto_tree_add_item(msg_tree,hf_display_cursor_line_number,tvb,offset,1,ENC_BIG_ENDIAN);
1310 offset+=1;msg_len-=1;
1312 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1317 proto_tree_add_item(msg_tree,hf_display_contrast,tvb,offset,1,ENC_BIG_ENDIAN);
1318 offset+=1;msg_len-=1;
1321 /*Caller Log Download*/
1322 proto_tree_add_item(msg_tree,hf_broadcast_hour,tvb,offset,msg_len,ENC_BIG_ENDIAN);
1323 offset+=1;msg_len-=1;
1324 proto_tree_add_item(msg_tree,hf_broadcast_minute,tvb,offset,msg_len,ENC_BIG_ENDIAN);
1325 offset+=1;msg_len-=1;
1326 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1330 /*Layered Softkey Text Download*/
1331 proto_tree_add_item(msg_tree,hf_display_layer_skey_id,tvb,offset,1,ENC_BIG_ENDIAN);
1332 offset+=1;msg_len-=1;
1333 proto_tree_add_item(msg_tree,hf_display_layer_number,tvb,offset,1,ENC_BIG_ENDIAN);
1334 offset+=1;msg_len-=1;
1335 set_ascii_item(msg_tree,tvb,offset,msg_len);
1339 /*Layered Softkey Clear*/
1340 proto_tree_add_item(msg_tree,hf_display_layer_skey_id,tvb,offset,1,ENC_BIG_ENDIAN);
1341 proto_tree_add_item(msg_tree,hf_display_layer_all_skeys,tvb,offset,msg_len,ENC_BIG_ENDIAN);
1342 offset+=1;msg_len-=1;
1343 proto_tree_add_item(msg_tree,hf_display_layer_number,tvb,offset,1,ENC_BIG_ENDIAN);
1344 offset+=1;msg_len-=1;
1347 /*Set Visible Softkey Layer*/
1348 proto_tree_add_item(msg_tree,hf_display_layer_skey_id,tvb,offset,1,ENC_BIG_ENDIAN);
1349 proto_tree_add_item(msg_tree,hf_display_layer_all_skeys,tvb,offset,msg_len,ENC_BIG_ENDIAN);
1350 offset+=1;msg_len-=1;
1351 proto_tree_add_item(msg_tree,hf_display_layer_number,tvb,offset,1,ENC_BIG_ENDIAN);
1352 offset+=1;msg_len-=1;
1355 /*Layered Softkey Cadence Download*/
1356 proto_tree_add_item(msg_tree,hf_display_layer_skey_id,tvb,offset,1,ENC_BIG_ENDIAN);
1357 proto_tree_add_item(msg_tree,hf_display_once_or_cyclic,tvb,offset,msg_len,ENC_BIG_ENDIAN);
1358 offset+=1;msg_len-=1;
1360 proto_tree_add_item(msg_tree,hf_display_layer_number,tvb,offset,1,ENC_BIG_ENDIAN);
1361 offset+=1;msg_len-=1;
1362 proto_tree_add_item(msg_tree,hf_display_layer_duration,tvb,offset,1,ENC_BIG_ENDIAN);
1363 offset+=1;msg_len-=1;
1367 /*Layered Softkey Cadencing On*/
1368 proto_tree_add_item(msg_tree,hf_display_layer_skey_id,tvb,offset,1,ENC_BIG_ENDIAN);
1369 offset+=1;msg_len-=1;
1372 /*Layered Softkey Cadencing Off*/
1373 proto_tree_add_item(msg_tree,hf_display_layer_skey_id,tvb,offset,1,ENC_BIG_ENDIAN);
1374 offset+=1;msg_len-=1;
1380 proto_tree_add_item(msg_tree,hf_generic_data,
1381 tvb,offset,msg_len,ENC_NA);
1389 dissect_display_phone(proto_tree *msg_tree,
1390 tvbuff_t *tvb,gint offset,guint msg_len){
1392 guint highlight_cmd;
1393 display_cmd=tvb_get_guint8(tvb,offset);
1394 proto_tree_add_item(msg_tree,hf_display_phone_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
1395 offset+=1;msg_len-=1;
1396 switch(display_cmd){
1398 /*Display Manager Attributes Info*/
1399 proto_tree_add_item(msg_tree,hf_display_line_width,tvb,offset,1,ENC_BIG_ENDIAN);
1400 proto_tree_add_item(msg_tree,hf_display_lines,tvb,offset,1,ENC_BIG_ENDIAN);
1401 offset+=1;msg_len-=1;
1402 proto_tree_add_item(msg_tree,hf_display_softkey_width,tvb,offset,1,ENC_BIG_ENDIAN);
1403 proto_tree_add_item(msg_tree,hf_display_softkeys,tvb,offset,1,ENC_BIG_ENDIAN);
1404 proto_tree_add_item(msg_tree,hf_display_icon,tvb,offset,1,ENC_BIG_ENDIAN);
1405 offset+=1;msg_len-=1;
1406 proto_tree_add_item(msg_tree,hf_display_softlabel_key_width,tvb,offset,1,ENC_BIG_ENDIAN);
1407 proto_tree_add_item(msg_tree,hf_display_context_width,tvb,offset,1,ENC_BIG_ENDIAN);
1408 offset+=1;msg_len-=1;
1409 proto_tree_add_item(msg_tree,hf_display_numeric_width,tvb,offset,1,ENC_BIG_ENDIAN);
1410 proto_tree_add_item(msg_tree,hf_display_time_width,tvb,offset,1,ENC_BIG_ENDIAN);
1411 proto_tree_add_item(msg_tree,hf_display_date_width,tvb,offset,1,ENC_BIG_ENDIAN);
1412 offset+=1;msg_len-=1;
1413 proto_tree_add_item(msg_tree,hf_display_char_dload,tvb,offset,1,ENC_BIG_ENDIAN);
1414 proto_tree_add_item(msg_tree,hf_display_freeform_icon_dload,tvb,offset,1,ENC_BIG_ENDIAN);
1415 proto_tree_add_item(msg_tree,hf_display_icon_type,tvb,offset,1,ENC_BIG_ENDIAN);
1416 offset+=1;msg_len-=1;
1417 proto_tree_add_item(msg_tree,hf_display_charsets,tvb,offset,1,ENC_BIG_ENDIAN);
1418 offset+=1;msg_len-=1;
1422 /*Contrast Level Report*/
1423 proto_tree_add_item(msg_tree,hf_display_contrast,tvb,offset,1,ENC_BIG_ENDIAN);
1424 offset+=1;msg_len-=1;
1427 /*Cursor Location Report*/
1428 proto_tree_add_item(msg_tree,hf_display_cursor_numeric,tvb,offset,1,ENC_BIG_ENDIAN);
1429 proto_tree_add_item(msg_tree,hf_display_cursor_context ,tvb,offset,1,ENC_BIG_ENDIAN);
1430 proto_tree_add_item(msg_tree,hf_display_cursor_line,tvb,offset,1,ENC_BIG_ENDIAN);
1431 proto_tree_add_item(msg_tree,hf_display_cursor_softkey,tvb,offset,1,ENC_BIG_ENDIAN);
1432 proto_tree_add_item(msg_tree,hf_display_cursor_softkey_id,tvb,offset,1,ENC_BIG_ENDIAN);
1433 offset+=1;msg_len-=1;
1434 proto_tree_add_item(msg_tree,hf_display_cursor_char_pos,tvb,offset,1,ENC_BIG_ENDIAN);
1435 proto_tree_add_item(msg_tree,hf_display_cursor_line_number,tvb,offset,1,ENC_BIG_ENDIAN);
1436 offset+=1;msg_len-=1;
1439 /*Highlight Status On*/
1440 highlight_cmd=tvb_get_guint8(tvb,offset);
1441 proto_tree_add_item(msg_tree,hf_display_cursor_numeric,tvb,offset,1,ENC_BIG_ENDIAN);
1442 proto_tree_add_item(msg_tree,hf_display_cursor_context ,tvb,offset,1,ENC_BIG_ENDIAN);
1443 proto_tree_add_item(msg_tree,hf_display_cursor_line,tvb,offset,1,ENC_BIG_ENDIAN);
1444 proto_tree_add_item(msg_tree,hf_display_cursor_softkey,tvb,offset,1,ENC_BIG_ENDIAN);
1445 proto_tree_add_item(msg_tree,hf_display_cursor_softkey_id,tvb,offset,1,ENC_BIG_ENDIAN);
1446 offset+=1;msg_len-=1;proto_tree_add_item(msg_tree,hf_display_hlight_start,tvb,offset,1,ENC_BIG_ENDIAN);
1447 offset+=1;msg_len-=1;
1448 proto_tree_add_item(msg_tree,hf_display_hlight_end,tvb,offset,1,ENC_BIG_ENDIAN);
1449 offset+=1;msg_len-=1;
1450 if((highlight_cmd&DISPLAY_CURSOR_LINE)==DISPLAY_CURSOR_LINE){
1451 proto_tree_add_item(msg_tree,hf_display_cursor_char_pos,tvb,offset,1,ENC_BIG_ENDIAN);
1452 proto_tree_add_item(msg_tree,hf_display_cursor_line_number,tvb,offset,1,ENC_BIG_ENDIAN);
1453 offset+=1;msg_len-=1;
1457 /*Current Character Table Configuration Status VERY UGLY*/
1458 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1462 /*Default Character Table Configuration Status VERY UGLY*/
1463 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1467 /*Timer And Date Format Report*/
1468 proto_tree_add_item(msg_tree,hf_display_time_format,tvb,offset,1,ENC_BIG_ENDIAN);
1469 proto_tree_add_item(msg_tree,hf_display_date_format,tvb,offset,1,ENC_BIG_ENDIAN);
1470 offset+=1;msg_len-=1;
1473 /*Status Bar Icon State Report*/
1474 proto_tree_add_item(msg_tree,hf_icon_id,tvb,offset,msg_len,ENC_BIG_ENDIAN);
1475 offset+=1;msg_len-=1;
1476 proto_tree_add_item(msg_tree,hf_broadcast_icon_state,tvb,offset,msg_len,ENC_BIG_ENDIAN);
1477 proto_tree_add_item(msg_tree,hf_broadcast_icon_cadence,tvb,offset,msg_len,ENC_BIG_ENDIAN);
1478 offset+=1;msg_len-=1;
1481 /*Highlight Status Off length = 3*/
1487 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1496 dissect_key_indicator_switch(proto_tree *msg_tree,
1497 tvbuff_t *tvb, gint offset,guint msg_len){
1499 key_cmd=tvb_get_guint8(tvb,offset);
1500 proto_tree_add_item(msg_tree,hf_key_switch_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
1501 offset+=1;msg_len-=1;
1505 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1506 proto_tree_add_item(msg_tree,hf_key_led_cadence,tvb,offset,1,ENC_BIG_ENDIAN);
1507 proto_tree_add_item(msg_tree,hf_key_led_id,tvb,offset,1,ENC_BIG_ENDIAN);
1508 offset+=1;msg_len-=1;
1511 /*Query Hookswitch length = 3 */
1514 /*User Activity Timer Stop length = 3*/
1517 /*User Activity Timer Start length = 3*/
1520 /*Downloadable Free Form Icon Access (Hardcoded) length of 3*/
1523 /*Downloadable Free Form Icon Access (Downloadable) length of 3*/
1526 /*Query Key/Indicator Manager*/
1527 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1531 /*Key/Indicator Manager Options*/
1532 proto_tree_add_item(msg_tree,hf_keys_send_key_rel,tvb,offset,1,ENC_BIG_ENDIAN);
1533 proto_tree_add_item(msg_tree,hf_keys_enable_vol,tvb,offset,1,ENC_BIG_ENDIAN);
1534 proto_tree_add_item(msg_tree,hf_keys_conspic_prog_key,tvb,offset,1,ENC_BIG_ENDIAN);
1535 proto_tree_add_item(msg_tree,hf_keys_acd_super_control,tvb,offset,1,ENC_BIG_ENDIAN);
1536 proto_tree_add_item(msg_tree,hf_keys_local_dial_feedback,tvb,offset,1,ENC_BIG_ENDIAN);
1537 offset+=1;msg_len-=1;
1540 /*Logical Icon Mapping*/
1541 proto_tree_add_item(msg_tree,hf_key_icon_id,tvb,offset,1,ENC_BIG_ENDIAN);
1542 proto_tree_add_item(msg_tree,hf_keys_admin_command,tvb,offset,1,ENC_BIG_ENDIAN);
1543 offset+=1;msg_len-=1;
1544 proto_tree_add_item(msg_tree,hf_keys_logical_icon_id,tvb,offset,2,ENC_BIG_ENDIAN);
1545 offset+=2;msg_len-=2;
1548 /*Key Repeat Timer Download*/
1549 proto_tree_add_item(msg_tree,hf_keys_repeat_timer_one,tvb,offset,1,ENC_BIG_ENDIAN);
1550 offset+=1;msg_len-=1;
1551 proto_tree_add_item(msg_tree,hf_keys_repeat_timer_two,tvb,offset,1,ENC_BIG_ENDIAN);
1552 offset+=1;msg_len-=1;
1556 proto_tree_add_item(msg_tree,hf_keys_led_id,tvb,offset,1,ENC_BIG_ENDIAN);
1557 offset+=1;msg_len-=1;
1560 /*Query Phone Icon State*/
1561 proto_tree_add_item(msg_tree,hf_keys_phone_icon_id,tvb,offset,1,ENC_BIG_ENDIAN);
1562 offset+=1;msg_len-=1;
1565 /*Indicator Cadence Download*/
1567 proto_tree_add_item(msg_tree,hf_keys_cadence_on_time,tvb,offset,1,ENC_BIG_ENDIAN);
1568 offset+=1;msg_len-=1;
1569 proto_tree_add_item(msg_tree,hf_keys_cadence_off_time,tvb,offset,1,ENC_BIG_ENDIAN);
1570 offset+=1;msg_len-=1;
1574 /*User Activity Timer Download*/
1575 proto_tree_add_item(msg_tree,hf_keys_user_activity_timeout,tvb,offset,1,ENC_BIG_ENDIAN);
1576 offset+=1;msg_len-=1;
1579 /*Free Form Icon Download*/
1580 proto_tree_add_item(msg_tree,hf_key_icon_id,tvb,offset,1,ENC_BIG_ENDIAN);
1581 offset+=1;msg_len-=1;
1582 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1586 /*Phone Icon Update*/
1587 proto_tree_add_item(msg_tree,hf_key_icon_id,tvb,offset,1,ENC_BIG_ENDIAN);
1588 offset+=1;msg_len-=1;
1589 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1590 proto_tree_add_item(msg_tree,hf_broadcast_icon_state,tvb,offset,1,ENC_BIG_ENDIAN);
1591 proto_tree_add_item(msg_tree,hf_broadcast_icon_cadence,tvb,offset,1,ENC_BIG_ENDIAN);
1592 offset+=1;msg_len-=1;
1596 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1600 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1609 dissect_key_indicator_phone(proto_tree *msg_tree,
1610 tvbuff_t *tvb,gint offset, guint msg_len){
1612 key_cmd=tvb_get_guint8(tvb,offset);
1613 proto_tree_add_item(msg_tree,hf_key_phone_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
1614 offset+=1;msg_len-=1;
1618 /* Set the tap info */
1619 uinfo->key_state = tvb_get_guint8(tvb,offset);
1620 uinfo->key_state >>= 6;
1621 /* Extract the key code */
1622 uinfo->key_val = (tvb_get_guint8(tvb,offset) & 0x3F);
1624 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1625 proto_tree_add_item(msg_tree,hf_key_code,tvb,offset,1,ENC_BIG_ENDIAN);
1626 proto_tree_add_item(msg_tree,hf_key_command,tvb,offset,1,ENC_BIG_ENDIAN);
1630 /*LED Status Report*/
1631 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1635 /*On Hook length = 3*/
1636 /* Set tap info.. */
1637 uinfo->hook_state = 0;
1641 /*Off Hook length = 3*/
1642 /* Set tap info.. */
1643 uinfo->hook_state = 1;
1647 /*User Activity Timer Expired length = 3*/
1650 /*Hookswitch State (on hook) length = 3*/
1653 /*Hookswitch State (off hook) length = 3*/
1656 /*Key/Indicator Manager Attributes Info*/
1657 proto_tree_add_item(msg_tree,hf_key_programmable_keys,tvb,offset,1,ENC_BIG_ENDIAN);
1658 proto_tree_add_item(msg_tree,hf_keys_soft_keys,tvb,offset,1,ENC_BIG_ENDIAN);
1659 offset+=1;msg_len-=1;
1660 proto_tree_add_item(msg_tree,hf_keys_hd_key,tvb,offset,1,ENC_BIG_ENDIAN);
1661 proto_tree_add_item(msg_tree,hf_keys_mute_key,tvb,offset,1,ENC_BIG_ENDIAN);
1662 proto_tree_add_item(msg_tree,hf_keys_quit_key,tvb,offset,1,ENC_BIG_ENDIAN);
1663 proto_tree_add_item(msg_tree,hf_keys_copy_key,tvb,offset,1,ENC_BIG_ENDIAN);
1664 proto_tree_add_item(msg_tree,hf_keys_mwi_key,tvb,offset,1,ENC_BIG_ENDIAN);
1665 offset+=1;msg_len-=1;
1666 proto_tree_add_item(msg_tree,hf_keys_num_nav_keys,tvb,offset,1,ENC_BIG_ENDIAN);
1667 proto_tree_add_item(msg_tree,hf_keys_num_conspic_keys,tvb,offset,1,ENC_BIG_ENDIAN);
1668 offset+=1;msg_len-=1;
1672 /*Key/Indicator Manager Options Report*/
1673 proto_tree_add_item(msg_tree,hf_keys_send_key_rel,tvb,offset,1,ENC_BIG_ENDIAN);
1674 proto_tree_add_item(msg_tree,hf_keys_enable_vol,tvb,offset,1,ENC_BIG_ENDIAN);
1675 proto_tree_add_item(msg_tree,hf_keys_conspic_prog_key,tvb,offset,1,ENC_BIG_ENDIAN);
1676 proto_tree_add_item(msg_tree,hf_keys_acd_super_control,tvb,offset,1,ENC_BIG_ENDIAN);
1677 proto_tree_add_item(msg_tree,hf_keys_local_dial_feedback,tvb,offset,1,ENC_BIG_ENDIAN);
1678 offset+=1;msg_len-=1;
1681 /*Phone Icon Status Report*/
1682 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1689 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1699 dissect_network_switch(proto_tree *msg_tree,
1700 tvbuff_t *tvb,gint offset, guint msg_len){
1704 network_cmd=tvb_get_guint8(tvb,offset);
1705 proto_tree_add_item(msg_tree,hf_network_switch_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
1706 offset+=1;msg_len-=1;
1707 switch(network_cmd){
1715 /*Query Network Manager*/
1716 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1717 proto_tree_add_item(msg_tree,hf_net_diag_flag,tvb,offset,1,ENC_BIG_ENDIAN);
1718 proto_tree_add_item(msg_tree,hf_net_managers_flag,tvb,offset,1,ENC_BIG_ENDIAN);
1719 proto_tree_add_item(msg_tree,hf_net_attributes_flag,tvb,offset,1,ENC_BIG_ENDIAN);
1720 proto_tree_add_item(msg_tree,hf_net_serv_info_flag,tvb,offset,1,ENC_BIG_ENDIAN);
1721 proto_tree_add_item(msg_tree,hf_net_options_flag,tvb,offset,1,ENC_BIG_ENDIAN);
1722 proto_tree_add_item(msg_tree,hf_net_sanity_flag,tvb,offset,1,ENC_BIG_ENDIAN);
1726 /*Network Manager Options*/
1727 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1728 proto_tree_add_item(msg_tree,hf_net_enable_diag,tvb,offset,1,ENC_BIG_ENDIAN);
1729 proto_tree_add_item(msg_tree,hf_net_enable_rudp,tvb,offset,1,ENC_BIG_ENDIAN);
1733 /*QoS Configuration*/
1734 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1738 /*Set RTCP Source Description Item*/
1739 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1743 /*Download Server Information*/
1744 proto_tree_add_item(msg_tree,hf_net_server_id,tvb,offset,1,ENC_BIG_ENDIAN);
1746 proto_tree_add_item(msg_tree,hf_net_server_port,tvb,offset,2,ENC_BIG_ENDIAN);
1748 proto_tree_add_item(msg_tree,hf_net_server_action,tvb,offset,1,ENC_BIG_ENDIAN);
1750 proto_tree_add_item(msg_tree,hf_net_server_retry_count,tvb,offset,1,ENC_BIG_ENDIAN);
1752 proto_tree_add_item(msg_tree,hf_net_server_failover_id,tvb,offset,1,ENC_BIG_ENDIAN);
1754 proto_tree_add_item(msg_tree,hf_net_server_ip_address,tvb,offset,4,ENC_BIG_ENDIAN);
1759 proto_tree_add_item(msg_tree,hf_net_server_id,tvb,offset,1,ENC_BIG_ENDIAN);
1763 /*Query Network Configuration Element*/
1764 proto_tree_add_item(msg_tree,hf_net_server_config_element,
1765 tvb,offset-1,1,ENC_BIG_ENDIAN);
1769 /*Download Software Upgrade*/
1770 proto_tree_add_item(msg_tree,hf_net_file_xfer_mode,tvb,offset,1,ENC_BIG_ENDIAN);
1771 proto_tree_add_item(msg_tree,hf_net_force_download,tvb,offset,1,ENC_BIG_ENDIAN);
1772 proto_tree_add_item(msg_tree,hf_net_use_file_server_port,tvb,offset,1,ENC_BIG_ENDIAN);
1773 proto_tree_add_item(msg_tree,hf_net_use_local_port,tvb,offset,1,ENC_BIG_ENDIAN);
1774 offset+=1;msg_len-=1;
1775 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,1,ENC_NA);
1776 offset+=1;msg_len-=1;
1777 string_len=tvb_strsize(tvb,offset);
1778 proto_tree_add_item(msg_tree,hf_net_full_pathname,tvb,offset,string_len,ENC_ASCII|ENC_NA);
1779 offset+=string_len;msg_len-=string_len;
1780 string_len=tvb_strsize(tvb,offset);
1781 proto_tree_add_item(msg_tree,hf_net_file_identifier,tvb,offset,string_len,ENC_ASCII|ENC_NA);
1782 offset+=string_len;msg_len-=string_len;
1783 proto_tree_add_item(msg_tree,hf_net_file_server_port,tvb,offset,2,ENC_BIG_ENDIAN);
1784 offset+=2;msg_len-=2;
1785 proto_tree_add_item(msg_tree,hf_net_local_port,tvb,offset,2,ENC_BIG_ENDIAN);
1786 offset+=2;msg_len-=2;
1787 proto_tree_add_item(msg_tree,hf_net_file_server_address,tvb,offset,4,ENC_BIG_ENDIAN);
1788 offset+=4;msg_len-=4;
1791 /*Set RTCP Report Interval*/
1792 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1796 /*Set Primary Server*/
1797 proto_tree_add_item(msg_tree,hf_net_server_id,tvb,offset,1,ENC_BIG_ENDIAN);
1802 proto_tree_add_item(msg_tree,hf_net_server_time_out,
1803 tvb,offset,2,ENC_BIG_ENDIAN);
1807 /*Set Recovery Procedure Time Interval*/
1808 proto_tree_add_item(msg_tree,hf_net_server_recovery_time_low,
1809 tvb,offset,2,ENC_BIG_ENDIAN);
1811 proto_tree_add_item(msg_tree,hf_net_server_recovery_time_high,
1812 tvb,offset,2,ENC_BIG_ENDIAN);
1816 /*Transport Reliability Layer Parameters Download*/
1817 proto_tree_add_item(msg_tree,hf_generic_data,
1818 tvb,offset,msg_len,ENC_NA);
1823 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1827 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1837 dissect_expansion_switch(proto_tree *msg_tree,
1838 tvbuff_t *tvb,gint offset, guint msg_len){
1839 guint expansion_cmd;
1842 expansion_cmd=tvb_get_guint8(tvb,offset);
1843 proto_tree_add_item(msg_tree,hf_expansion_switch_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
1844 offset+=1; msg_len-=1;
1845 switch(expansion_cmd){
1849 /*skip a byte for now, not sure what it means*/
1854 proto_tree_add_item(msg_tree,hf_expansion_softlabel_number,tvb,
1855 offset,1,ENC_BIG_ENDIAN);
1859 set_ascii_item(msg_tree,tvb,offset,msg_len);
1862 /*skip a byte for now, not sure what it means*/
1865 proto_tree_add_item(msg_tree,hf_expansion_softlabel_number,tvb,
1866 offset,1,ENC_BIG_ENDIAN);
1869 proto_tree_add_item(msg_tree,hf_basic_bit_field,
1870 tvb,offset,1,ENC_BIG_ENDIAN);
1871 proto_tree_add_item(msg_tree,hf_broadcast_icon_state,
1872 tvb,offset,1,ENC_BIG_ENDIAN);
1873 proto_tree_add_item(msg_tree,hf_broadcast_icon_cadence,
1874 tvb,offset,1,ENC_BIG_ENDIAN);
1884 dissect_expansion_phone(proto_tree *msg_tree,
1885 tvbuff_t *tvb,gint offset, guint msg_len){
1886 guint expansion_cmd;
1889 expansion_cmd=tvb_get_guint8(tvb,offset);
1890 proto_tree_add_item(msg_tree,hf_expansion_phone_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
1891 offset+=1; msg_len-=1;
1892 key_number=(tvb_get_guint8(tvb,offset))-64;
1894 switch(expansion_cmd){
1896 proto_tree_add_text(msg_tree,tvb,offset,msg_len,"Module Key Number: %i",key_number);
1906 dissect_network_phone(proto_tree *msg_tree,
1907 tvbuff_t *tvb,gint offset, guint msg_len){
1909 proto_tree *server_tree;
1912 network_cmd=tvb_get_guint8(tvb,offset);
1913 proto_tree_add_item(msg_tree,hf_network_phone_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
1914 offset+=1;msg_len-=1;
1915 switch(network_cmd){
1917 /*Soft Reset Ack done length = 3*/
1920 /*Sanity OK done length = 3*/
1923 /*Network Manager Attributes Info*/
1924 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1928 /*Network Manager Diagnostic Info*/
1929 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
1930 proto_tree_add_item(msg_tree,hf_net_phone_rx_ovr_flag,
1931 tvb,offset,1,ENC_BIG_ENDIAN);
1932 proto_tree_add_item(msg_tree,hf_net_phone_tx_ovr_flag,
1933 tvb,offset,1,ENC_BIG_ENDIAN);
1934 proto_tree_add_item(msg_tree,hf_net_phone_rx_empty_flag,
1935 tvb,offset,1,ENC_BIG_ENDIAN);
1936 proto_tree_add_item(msg_tree,hf_net_phone_invalid_msg_flag,
1937 tvb,offset,1,ENC_BIG_ENDIAN);
1938 proto_tree_add_item(msg_tree,hf_net_phone_eeprom_insane_flag,
1939 tvb,offset,1,ENC_BIG_ENDIAN);
1940 proto_tree_add_item(msg_tree,hf_net_phone_eeprom_unsafe_flag,
1941 tvb,offset,1,ENC_BIG_ENDIAN);
1946 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1950 /*Network Manager Options Report*/
1951 proto_tree_add_boolean(msg_tree,hf_net_phone_diag,tvb,offset,1,FALSE);
1952 proto_tree_add_item(msg_tree,hf_net_phone_rudp,tvb,offset,1,ENC_BIG_ENDIAN);
1956 /*Resume Connection with Server done*/
1959 /*Suspend Connection with Server done*/
1962 /*Network Configuration Element Report*/
1963 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
1967 /*Server Information Report*/
1968 proto_tree_add_item(msg_tree,hf_net_phone_primary_server_id,
1969 tvb,offset,1,ENC_BIG_ENDIAN);
1970 offset+=1;msg_len-=1;
1971 for (i=1; msg_len>8; i++){
1972 /*if less than 9 not full report so punt*/
1973 /* guint16 port_num;
1974 port_num=tvb_get_ntohs(tvb,offset);
1978 server=proto_tree_add_text(msg_tree,tvb,offset,9,
1979 "Server (S%d) Server ID: %X",i,i-1);
1980 server_tree=proto_item_add_subtree(server,ett_unistim);
1981 proto_tree_add_item(server_tree,
1982 hf_net_phone_server_port,
1983 tvb,offset,2,ENC_BIG_ENDIAN);
1984 offset+=2;msg_len-=2;
1985 proto_tree_add_item(server_tree,
1986 hf_net_phone_server_action,
1987 tvb,offset,1,ENC_BIG_ENDIAN);
1988 offset+=1;msg_len-=1;
1989 proto_tree_add_item(server_tree,
1990 hf_net_phone_server_retry_count,
1991 tvb,offset,1,ENC_BIG_ENDIAN);
1992 offset+=1;msg_len-=1;
1993 proto_tree_add_item(server_tree,
1994 hf_net_phone_server_failover_id,
1995 tvb,offset,1,ENC_BIG_ENDIAN);
1996 offset+=1;msg_len-=1;
1997 proto_tree_add_item(server_tree,hf_net_phone_server_ip,
1998 tvb,offset,4,ENC_BIG_ENDIAN);
1999 offset+=4;msg_len-=4;
2006 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
2014 dissect_audio_switch(proto_tree *msg_tree,packet_info *pinfo,
2015 tvbuff_t *tvb,gint offset,guint msg_len){
2016 proto_tree *param_tree;
2021 guint vocoder_param;
2022 audio_cmd=tvb_get_guint8(tvb,offset);
2023 proto_tree_add_item(msg_tree,hf_audio_switch_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
2024 offset+=1;msg_len-=1;
2027 /*Query Audio Manager*/
2028 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
2029 proto_tree_add_item(msg_tree,hf_audio_mgr_attr,tvb,offset,1,ENC_BIG_ENDIAN);
2030 proto_tree_add_item(msg_tree,hf_audio_mgr_opts,tvb,offset,1,ENC_BIG_ENDIAN);
2031 proto_tree_add_item(msg_tree,hf_audio_mgr_alert,tvb,offset,1,ENC_BIG_ENDIAN);
2032 proto_tree_add_item(msg_tree,hf_audio_mgr_adj_rx_vol,tvb,offset,1,ENC_BIG_ENDIAN);
2033 proto_tree_add_item(msg_tree,hf_audio_mgr_def_rx_vol,tvb,offset,1,ENC_BIG_ENDIAN);
2034 proto_tree_add_item(msg_tree,hf_audio_mgr_handset,tvb,offset,1,ENC_BIG_ENDIAN);
2035 proto_tree_add_item(msg_tree,hf_audio_mgr_headset,tvb,offset,1,ENC_BIG_ENDIAN);
2037 proto_tree_add_item(msg_tree,hf_audio_default_rx_vol_id,
2038 tvb,offset,1,ENC_BIG_ENDIAN);
2042 /*Query Supervisor Headset Status*/
2046 /*Audio Manager Options*/
2047 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
2048 proto_tree_add_item(msg_tree,hf_audio_mgr_opt_max_vol,
2049 tvb,offset,1,ENC_BIG_ENDIAN);
2050 proto_tree_add_item(msg_tree,hf_audio_mgr_opt_adj_vol,
2051 tvb,offset,1,ENC_BIG_ENDIAN);
2052 proto_tree_add_item(msg_tree,hf_audio_mgr_opt_aa_rx_vol_rpt,
2053 tvb,offset,1,ENC_BIG_ENDIAN);
2054 proto_tree_add_item(msg_tree,hf_audio_mgr_opt_hs_on_air,
2055 tvb,offset,1,ENC_BIG_ENDIAN);
2056 proto_tree_add_item(msg_tree,hf_audio_mgr_opt_hd_on_air,
2057 tvb,offset,1,ENC_BIG_ENDIAN);
2058 proto_tree_add_item(msg_tree,hf_audio_mgr_opt_noise_squelch,
2059 tvb,offset,1,ENC_BIG_ENDIAN);
2065 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
2066 proto_tree_add_item(msg_tree,hf_audio_mgr_mute,tvb,offset,1,ENC_BIG_ENDIAN);
2067 proto_tree_add_item(msg_tree,hf_audio_mgr_tx_rx,tvb,offset,1,ENC_BIG_ENDIAN);
2068 offset+=1;msg_len-=1;
2069 proto_tree_add_item(msg_tree,hf_audio_mgr_stream_id,
2070 tvb,offset,1,ENC_BIG_ENDIAN);
2071 offset+=1;msg_len-=1;
2075 /*Transducer Based Tone On*/
2076 proto_tree_add_item(msg_tree,
2077 hf_audio_mgr_transducer_based_tone_id,
2078 tvb,offset,1,ENC_BIG_ENDIAN);
2079 proto_tree_add_item(msg_tree,hf_audio_mgr_attenuated,
2080 tvb,offset,1,ENC_BIG_ENDIAN);
2084 /*Transducer Based Tone Off*/
2085 proto_tree_add_item(msg_tree,hf_audio_mgr_transducer_based_tone_id,
2086 tvb,offset,1,ENC_BIG_ENDIAN);
2090 /*Alerting Tone Configuration*/
2091 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
2092 proto_tree_add_item(msg_tree,hf_audio_mgr_warbler_select,
2093 tvb,offset,1,ENC_BIG_ENDIAN);
2094 proto_tree_add_item(msg_tree,hf_audio_mgr_transducer_routing,
2095 tvb,offset,1,ENC_BIG_ENDIAN);
2097 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
2098 proto_tree_add_item(msg_tree,hf_audio_mgr_tone_vol_range,
2099 tvb,offset,1,ENC_BIG_ENDIAN);
2100 proto_tree_add_item(msg_tree,hf_audio_mgr_cadence_select,
2101 tvb,offset,1,ENC_BIG_ENDIAN);
2105 /*Special Tone Configuration*/
2106 proto_tree_add_item(msg_tree,hf_audio_mgr_transducer_routing,
2107 tvb,offset,1,ENC_BIG_ENDIAN);
2109 proto_tree_add_item(msg_tree,hf_audio_mgr_tone_vol_range,
2110 tvb,offset,1,ENC_BIG_ENDIAN);
2112 proto_tree_add_item(msg_tree,hf_audio_special_tone,tvb,offset,1,ENC_BIG_ENDIAN);
2116 /*Paging Tone Configuration*/
2117 proto_tree_add_item(msg_tree,hf_audio_mgr_transducer_routing,
2118 tvb,offset,1,ENC_BIG_ENDIAN);
2120 proto_tree_add_item(msg_tree,hf_audio_mgr_tone_vol_range,
2121 tvb,offset,1,ENC_BIG_ENDIAN);
2122 proto_tree_add_item(msg_tree,hf_audio_mgr_cadence_select,
2123 tvb,offset,1,ENC_BIG_ENDIAN);
2127 /*Alerting Tone Cadence Download*/
2128 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
2133 /*Paging Tone Cadence Download*/
2134 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
2139 /*Transducer Based Tone Volume Level*/
2140 proto_tree_add_item(msg_tree,hf_basic_bit_field,
2141 tvb,offset,1,ENC_BIG_ENDIAN);
2142 proto_tree_add_item(msg_tree,
2143 hf_audio_mgr_transducer_based_tone_id,
2144 tvb,offset,1,ENC_BIG_ENDIAN);
2145 proto_tree_add_item(msg_tree,hf_audio_tone_level,tvb,offset,1,ENC_BIG_ENDIAN);
2149 /*Visual Transducer Based Tone Enable*/
2150 proto_tree_add_item(msg_tree,hf_audio_visual_tones,
2151 tvb,offset,1,ENC_BIG_ENDIAN);
2155 /*Stream Based Tone On*/
2156 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
2157 proto_tree_add_item(msg_tree,hf_audio_stream_based_tone_id,
2158 tvb,offset,1,ENC_BIG_ENDIAN);
2159 proto_tree_add_item(msg_tree,hf_audio_stream_based_tone_rx_tx,
2160 tvb,offset,1,ENC_BIG_ENDIAN);
2161 proto_tree_add_item(msg_tree,hf_audio_stream_based_tone_mute,
2162 tvb,offset,1,ENC_BIG_ENDIAN);
2164 proto_tree_add_item(msg_tree,hf_audio_stream_id,tvb,offset,1,ENC_BIG_ENDIAN);
2166 proto_tree_add_item(msg_tree,hf_audio_stream_based_volume,tvb,offset,1,ENC_BIG_ENDIAN);
2170 /*Stream Based Tone Off*/
2171 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
2172 proto_tree_add_item(msg_tree,hf_audio_stream_based_tone_id,
2173 tvb,offset,1,ENC_BIG_ENDIAN);
2174 proto_tree_add_item(msg_tree,hf_audio_stream_based_tone_rx_tx,
2175 tvb,offset,1,ENC_BIG_ENDIAN);
2177 proto_tree_add_item(msg_tree,hf_audio_stream_id,tvb,offset,1,ENC_BIG_ENDIAN);
2181 /*Stream Based Tone Frequency Component List Download*/
2182 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
2186 /*Stream Based Tone Cadence Download*/
2187 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
2191 /*Select Adjustable Rx Volume*/
2192 proto_tree_add_item(msg_tree,hf_audio_default_rx_vol_id,
2193 tvb,offset,1,ENC_BIG_ENDIAN);
2196 /*Set APB's Rx Volume Level*/
2197 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
2201 /*Change Adjustable Rx Volume (quieter) DONE*/
2202 proto_tree_add_item(msg_tree,hf_generic_data,
2203 tvb,offset,msg_len,ENC_NA);
2207 /*Change Adjustable Rx Volume (louder) DONE*/
2208 proto_tree_add_item(msg_tree,hf_generic_data,
2209 tvb,offset,msg_len,ENC_NA);
2213 /*Adjust Default Rx Volume(quieter)*/
2214 proto_tree_add_item(msg_tree,hf_audio_default_rx_vol_id,
2215 tvb,offset,1,ENC_BIG_ENDIAN);
2218 /*Adjust Default Rx Volume(louder)*/
2219 proto_tree_add_item(msg_tree,hf_audio_default_rx_vol_id,
2220 tvb,offset,1,ENC_BIG_ENDIAN);
2224 proto_tree_add_item(msg_tree,hf_audio_apb_number,tvb,offset,1,ENC_BIG_ENDIAN);
2225 offset+=1;msg_len-=1;
2227 apb_op_code=tvb_get_guint8(tvb,offset);
2228 proto_tree_add_item(msg_tree,hf_audio_apb_op_code,tvb,
2229 offset,1,ENC_BIG_ENDIAN);
2230 offset+=1;msg_len-=1;
2231 if(apb_op_code>0x39){
2232 /*should have a len + data*/
2233 apb_data_len=tvb_get_guint8(tvb,offset);
2234 proto_tree_add_item(msg_tree,hf_audio_apb_param_len,tvb,
2235 offset,1,ENC_BIG_ENDIAN);
2236 offset+=1;msg_len-=1;
2237 proto_tree_add_item(msg_tree,hf_audio_apb_data,tvb,
2238 offset,apb_data_len,ENC_NA);
2239 offset+=apb_data_len;msg_len-=apb_data_len;
2244 /*Open Audio Stream*/
2245 /* Set the tap info */
2246 uinfo->stream_connect = 1;
2248 proto_tree_add_item(msg_tree,hf_audio_rx_stream_id,tvb,offset,1,ENC_BIG_ENDIAN);
2249 offset+=1;msg_len-=1;
2250 proto_tree_add_item(msg_tree,hf_audio_tx_stream_id,tvb,offset,1,ENC_BIG_ENDIAN);
2251 offset+=1;msg_len-=1;
2252 proto_tree_add_item(msg_tree,hf_rx_vocoder_type,tvb,offset,1,ENC_BIG_ENDIAN);
2253 offset+=1;msg_len-=1;
2254 proto_tree_add_item(msg_tree,hf_tx_vocoder_type,tvb,offset,1,ENC_BIG_ENDIAN);
2255 offset+=1;msg_len-=1;
2256 proto_tree_add_item(msg_tree,hf_frames_per_packet,tvb,offset,1,ENC_BIG_ENDIAN);
2257 offset+=1;msg_len-=1;
2258 proto_tree_add_item(msg_tree,hf_audio_tos,tvb,offset,1,ENC_BIG_ENDIAN);
2259 proto_tree_add_item(msg_tree,hf_audio_precedence,tvb,offset,1,ENC_BIG_ENDIAN);
2260 proto_tree_add_item(msg_tree,hf_audio_frf_11,tvb,offset,1,ENC_BIG_ENDIAN);
2261 offset+=1;msg_len-=1;
2262 proto_tree_add_item(msg_tree,hf_rtcp_bucket_id,
2263 tvb,offset,1,ENC_BIG_ENDIAN);
2264 offset+=1;msg_len-=1;
2265 proto_tree_add_item(msg_tree,hf_generic_data,
2266 tvb,offset,4,ENC_NA);
2267 offset+=4;msg_len-=4;
2268 proto_tree_add_item(msg_tree,hf_audio_lcl_rtp_port,
2269 tvb,offset,2,ENC_BIG_ENDIAN);
2270 offset+=2;msg_len-=2;
2271 proto_tree_add_item(msg_tree,hf_audio_lcl_rtcp_port,
2272 tvb,offset,2,ENC_BIG_ENDIAN);
2273 offset+=2;msg_len-=2;
2275 proto_tree_add_item(msg_tree,hf_audio_far_rtp_port,
2276 tvb,offset,2,ENC_BIG_ENDIAN);
2277 offset+=2;msg_len-=2;
2278 proto_tree_add_item(msg_tree,hf_audio_far_rtcp_port,
2279 tvb,offset,2,ENC_BIG_ENDIAN);
2280 offset+=2;msg_len-=2;
2282 /* Sometimes the open stream does not specify an endpoint */
2283 /* In this circumstance the packet is truncated at the far end */
2286 proto_tree_add_item(msg_tree,hf_audio_far_ip_add,tvb,offset,4,ENC_BIG_ENDIAN);
2287 offset+=4;msg_len-=4;
2289 guint32 far_ip_addr;
2293 far_ip_addr = tvb_get_ipv4(tvb, offset-4);
2294 SET_ADDRESS(&far_addr, AT_IPv4, 4, &far_ip_addr);
2296 far_port = tvb_get_ntohs(tvb, offset-8);
2297 rtp_add_address(pinfo, &far_addr, far_port, 0, "UNISTIM", pinfo->fd->num, FALSE, NULL);
2299 far_port = tvb_get_ntohs(tvb, offset-6);
2300 rtcp_add_address(pinfo, &far_addr, far_port, 0, "UNISTIM", pinfo->fd->num);
2305 /*Close Audio Stream*/
2306 /* Set the tap info */
2307 uinfo->stream_connect = 0;
2309 proto_tree_add_item(msg_tree,hf_audio_rx_stream_id,tvb,offset,1,ENC_BIG_ENDIAN);
2310 offset+=1;msg_len-=1;
2311 proto_tree_add_item(msg_tree,hf_audio_tx_stream_id,tvb,offset,1,ENC_BIG_ENDIAN);
2312 offset+=1;msg_len-=1;
2315 /*Connect Transducer*/
2316 /* Tap info again */
2317 uinfo->trans_connect = 1;
2319 proto_tree_add_item(msg_tree,hf_basic_bit_field, tvb,offset,1,ENC_BIG_ENDIAN);
2320 proto_tree_add_item(msg_tree,hf_audio_transducer_pair,tvb,offset,1,ENC_BIG_ENDIAN);
2321 proto_tree_add_item(msg_tree,hf_audio_rx_enable,tvb,offset,1,ENC_BIG_ENDIAN);
2322 proto_tree_add_item(msg_tree,hf_audio_tx_enable,tvb,offset,1,ENC_BIG_ENDIAN);
2323 offset+=1;msg_len-=1;
2324 proto_tree_add_item(msg_tree,hf_basic_bit_field, tvb,offset,1,ENC_BIG_ENDIAN);
2325 proto_tree_add_item(msg_tree,hf_audio_apb_number,tvb,offset,1,ENC_BIG_ENDIAN);
2326 proto_tree_add_item(msg_tree,hf_audio_sidetone_disable,tvb,offset,1,ENC_BIG_ENDIAN);
2327 proto_tree_add_item(msg_tree,hf_audio_destruct_additive,tvb,offset,1,ENC_BIG_ENDIAN);
2328 proto_tree_add_item(msg_tree,hf_audio_dont_force_active,tvb,offset,1,ENC_BIG_ENDIAN);
2329 offset+=1;msg_len-=1;
2331 proto_tree_add_item(msg_tree,hf_audio_mgr_stream_id,tvb,offset,1,ENC_LITTLE_ENDIAN);
2332 offset+=1;msg_len-=1;
2336 /*Filter Block Download*/
2337 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
2341 /*Query RTCP Statistics*/
2342 proto_tree_add_item(msg_tree,hf_audio_rtcp_bucket_id,tvb,offset,1,ENC_BIG_ENDIAN);
2343 proto_tree_add_item(msg_tree,hf_audio_clear_bucket,tvb,offset,1,ENC_BIG_ENDIAN);
2345 offset+=1;msg_len-=1;
2348 /*Configure Vocoder Parameters*/
2349 proto_tree_add_item(msg_tree,hf_audio_mgr_stream_id,tvb,offset,1,ENC_LITTLE_ENDIAN);
2350 offset+=1;msg_len-=1;
2351 proto_tree_add_item(msg_tree,hf_audio_vocoder_id,tvb,offset,1,FALSE),
2352 offset+=1;msg_len-=1;
2354 param=proto_tree_add_text(msg_tree,tvb,offset,0,"Param");
2355 param_tree=proto_item_add_subtree(param,ett_unistim);
2356 vocoder_param=tvb_get_guint8(tvb,offset);
2357 proto_tree_add_item(param_tree,hf_basic_bit_field,
2358 tvb,offset,1,ENC_BIG_ENDIAN);
2359 proto_tree_add_item(param_tree,hf_audio_vocoder_param,
2360 tvb,offset,1,ENC_BIG_ENDIAN);
2361 proto_tree_add_item(param_tree,hf_audio_vocoder_entity,
2362 tvb,offset,1,ENC_BIG_ENDIAN);
2363 offset+=1;msg_len-=1;
2364 if((vocoder_param&0x0a)==0x0a){
2365 proto_tree_add_item(param_tree,hf_audio_vocoder_annexa,
2366 tvb,offset,1,ENC_BIG_ENDIAN);
2367 proto_tree_add_item(param_tree,hf_audio_vocoder_annexb,
2368 tvb,offset,1,ENC_BIG_ENDIAN);
2369 offset+=1;msg_len-=1;
2371 else if((vocoder_param&0x0b)==0x0b){
2372 proto_tree_add_item(param_tree,hf_audio_sample_rate,
2373 tvb,offset,1,ENC_BIG_ENDIAN);
2374 offset+=1;msg_len-=1;
2376 else if((vocoder_param&0x0c)==0x0c){
2377 proto_tree_add_item(param_tree,hf_audio_rtp_type,
2378 tvb,offset,1,ENC_BIG_ENDIAN);
2379 offset+=1;msg_len-=1;
2381 else if((vocoder_param&0x20)==0x20){
2382 proto_tree_add_item(param_tree,hf_audio_bytes_per_frame,
2383 tvb,offset,2,ENC_BIG_ENDIAN);
2384 offset+=2;msg_len-=2;
2389 /*Query RTCP Bucket's SDES Information*/
2390 proto_tree_add_item(msg_tree,hf_audio_source_descr,tvb,offset,msg_len,ENC_BIG_ENDIAN);
2391 proto_tree_add_item(msg_tree,hf_audio_sdes_rtcp_bucket,tvb,offset,msg_len,ENC_BIG_ENDIAN);
2392 offset+=1;msg_len-=1;
2395 /*Jitter Buffer Parameters Configuration*/
2396 proto_tree_add_item(msg_tree,hf_audio_rx_stream_id,tvb,offset,1,ENC_BIG_ENDIAN);
2397 offset+=1;msg_len-=1;
2398 proto_tree_add_item(msg_tree,hf_audio_desired_jitter,tvb,offset,1,ENC_BIG_ENDIAN);
2399 offset+=1;msg_len-=1;
2400 proto_tree_add_item(msg_tree,hf_audio_high_water_mark,tvb,offset,1,ENC_BIG_ENDIAN);
2401 offset+=1;msg_len-=1;
2402 proto_tree_add_item(msg_tree,hf_audio_early_packet_resync_thresh,tvb,
2403 offset,4,ENC_BIG_ENDIAN);
2404 offset+=4;msg_len-=4;
2405 proto_tree_add_item(msg_tree,hf_audio_late_packet_resync_thresh,tvb,
2406 offset,4,ENC_BIG_ENDIAN);
2407 offset+=4;msg_len-=4;
2410 /*Resolve Port Mapping*/
2411 proto_tree_add_item(msg_tree,hf_audio_resolve_phone_port,tvb,offset,2,ENC_BIG_ENDIAN);
2412 offset+=2;msg_len-=2;
2413 proto_tree_add_item(msg_tree,hf_audio_far_end_echo_port,tvb,offset,2,ENC_BIG_ENDIAN);
2414 offset+=2;msg_len-=2;
2415 proto_tree_add_item(msg_tree,hf_audio_far_end_ip_address,tvb,offset,4,ENC_BIG_ENDIAN);
2416 offset+=4;msg_len-=4;
2419 /*Port Mapping Discovery Ack*/
2420 proto_tree_add_item(msg_tree,hf_audio_nat_port,tvb,offset,2,ENC_BIG_ENDIAN);
2421 offset+=2;msg_len-=2;
2422 proto_tree_add_item(msg_tree,hf_audio_nat_ip_address,tvb,offset,4,ENC_BIG_ENDIAN);
2423 offset+=4;msg_len-=4;
2426 /*Query Audio Stream Status*/
2427 proto_tree_add_item(msg_tree,hf_audio_direction_code,tvb,offset,1,ENC_BIG_ENDIAN);
2428 offset+=1;msg_len-=1;
2429 proto_tree_add_item(msg_tree,hf_audio_mgr_stream_id,tvb,offset,1,ENC_BIG_ENDIAN);
2430 offset+=1;msg_len-=1;
2435 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
2444 dissect_audio_phone(proto_tree *msg_tree,
2445 tvbuff_t *tvb,gint offset,guint msg_len){
2451 audio_cmd=tvb_get_guint8(tvb,offset);
2452 proto_tree_add_item(msg_tree,hf_audio_phone_cmd,tvb,offset,1,ENC_BIG_ENDIAN);
2453 offset+=1;msg_len-=1;
2456 /*Handset Connected length =3*/
2457 /* Set the tap info */
2458 uinfo->hook_state = 1;
2461 /*Handset Disconnected length =3*/
2462 /* Set the tap info */
2463 uinfo->hook_state = 0;
2466 /*Headset Connected length =3*/
2467 /* Set the tap info */
2468 uinfo->hook_state = 1;
2471 /*Headset Disconnected length =3*/
2472 /* Set the tap info */
2473 uinfo->hook_state = 0;
2476 /*Supervisor Headset Connected length =3*/
2477 /* Set the tap info */
2478 uinfo->hook_state = 1;
2481 /*Supervisor Headset Disconnected length =3*/
2482 /* Set the tap info */
2483 uinfo->hook_state = 0;
2486 /*Audio Manager Attributes Info*/
2487 proto_tree_add_item(msg_tree,hf_audio_hf_support,tvb,offset,1,ENC_BIG_ENDIAN);
2488 offset+=1;msg_len-=1;
2490 proto_tree_add_item(msg_tree,hf_rx_vocoder_type,tvb,offset,1,ENC_BIG_ENDIAN);
2491 offset+=1;msg_len-=1;
2495 /*Audio Manager Options Report*/
2496 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
2497 proto_tree_add_item(msg_tree,hf_audio_opt_rpt_max,tvb,offset,1,ENC_BIG_ENDIAN);
2498 proto_tree_add_item(msg_tree,hf_audio_opt_rpt_adj_vol,tvb,offset,1,ENC_BIG_ENDIAN);
2499 proto_tree_add_item(msg_tree,hf_audio_opt_rpt_auto_adj_vol,tvb,offset,1,ENC_BIG_ENDIAN);
2500 proto_tree_add_item(msg_tree,hf_audio_opt_rpt_hs_on_air,tvb,offset,1,ENC_BIG_ENDIAN);
2501 proto_tree_add_item(msg_tree,hf_audio_opt_rpt_hd_on_air,tvb,offset,1,ENC_BIG_ENDIAN);
2502 proto_tree_add_item(msg_tree,hf_audio_opt_rpt_noise_squelch,tvb,offset,1,ENC_BIG_ENDIAN);
2503 offset+=1;msg_len-=1;
2506 /*Adjustable Rx Volume Report*/
2507 proto_tree_add_item(msg_tree,hf_basic_bit_field,tvb,offset,1,ENC_BIG_ENDIAN);
2508 proto_tree_add_item(msg_tree,hf_audio_rx_vol_apb_rpt,tvb,offset,1,ENC_BIG_ENDIAN);
2509 proto_tree_add_item(msg_tree,hf_audio_rx_vol_vol_up,tvb,offset,1,ENC_BIG_ENDIAN);
2510 proto_tree_add_item(msg_tree,hf_audio_rx_vol_vol_floor,tvb,offset,1,ENC_BIG_ENDIAN);
2511 proto_tree_add_item(msg_tree,hf_audio_rx_vol_vol_ceiling,tvb,offset,1,ENC_BIG_ENDIAN);
2512 offset+=1;msg_len-=1;
2515 /*Adjustable Rx Volume Information*/
2516 proto_tree_add_item(msg_tree,hf_audio_current_adj_vol_id,tvb,offset,1,ENC_BIG_ENDIAN);
2517 proto_tree_add_item(msg_tree,hf_audio_rx_vol_apb_rpt,tvb,offset,1,ENC_BIG_ENDIAN);
2518 proto_tree_add_item(msg_tree,hf_audio_rx_vol_vol_up,tvb,offset,1,ENC_BIG_ENDIAN);
2519 proto_tree_add_item(msg_tree,hf_audio_rx_vol_vol_floor,tvb,offset,1,ENC_BIG_ENDIAN);
2520 proto_tree_add_item(msg_tree,hf_audio_rx_vol_vol_ceiling,tvb,offset,1,ENC_BIG_ENDIAN);
2521 offset+=1;msg_len-=1;
2522 proto_tree_add_item(msg_tree,hf_audio_current_rx_level,tvb,offset,1,ENC_BIG_ENDIAN);
2523 offset+=1;msg_len-=1;
2524 proto_tree_add_item(msg_tree,hf_audio_current_rx_range,tvb,offset,1,ENC_BIG_ENDIAN);
2525 offset+=1;msg_len-=1;
2528 /*APB's Default Rx Volume Value*/
2529 proto_tree_add_item(msg_tree,hf_audio_current_adj_vol_id,tvb,offset,1,ENC_BIG_ENDIAN);
2530 proto_tree_add_item(msg_tree,hf_audio_rx_vol_apb_rpt,tvb,offset,1,ENC_BIG_ENDIAN);
2531 proto_tree_add_item(msg_tree,hf_audio_rx_vol_vol_up,tvb,offset,1,ENC_BIG_ENDIAN);
2532 proto_tree_add_item(msg_tree,hf_audio_rx_vol_vol_floor,tvb,offset,1,ENC_BIG_ENDIAN);
2533 proto_tree_add_item(msg_tree,hf_audio_rx_vol_vol_ceiling,tvb,offset,1,ENC_BIG_ENDIAN);
2534 offset+=1;msg_len-=1;
2535 proto_tree_add_item(msg_tree,hf_audio_current_rx_level,tvb,offset,1,ENC_BIG_ENDIAN);
2536 offset+=1;msg_len-=1;
2537 proto_tree_add_item(msg_tree,hf_audio_current_rx_range,tvb,offset,1,ENC_BIG_ENDIAN);
2538 offset+=1;msg_len-=1;
2541 /*Alerting Tone Select*/
2542 proto_tree_add_item(msg_tree,hf_audio_cadence_select,tvb,offset,1,ENC_BIG_ENDIAN);
2543 proto_tree_add_item(msg_tree,hf_audio_warbler_select,tvb,offset,1,ENC_BIG_ENDIAN);
2544 offset+=1;msg_len-=1;
2547 /*RTCP Statistics Report UGLY*/
2548 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
2552 /*Open Audio Stream Report*/
2553 proto_tree_add_item(msg_tree,hf_audio_open_stream_rpt,tvb,offset,1,ENC_BIG_ENDIAN);
2554 offset+=1;msg_len-=1;
2557 /*RTCP Bucket SDES Information Report*/
2558 proto_tree_add_item(msg_tree,hf_audio_sdes_rpt_source_desc,tvb,offset,1,ENC_BIG_ENDIAN);
2559 proto_tree_add_item(msg_tree,hf_audio_sdes_rpt_buk_id,tvb,offset,1,ENC_BIG_ENDIAN);
2560 offset+=1;msg_len-=1;
2561 set_ascii_item(msg_tree,tvb,offset,msg_len);
2565 /*Port Mapping Discovery*/
2566 proto_tree_add_item(msg_tree,hf_audio_phone_port,tvb,offset,2,ENC_BIG_ENDIAN);
2567 offset+=2;msg_len-=2;
2568 proto_tree_add_item(msg_tree,hf_audio_phone_ip,tvb,offset,4,ENC_BIG_ENDIAN);
2569 offset+=4;msg_len-=4;
2572 /*Resolve Port Mapping*/
2573 proto_tree_add_item(msg_tree,hf_audio_nat_listen_port,tvb,offset,2,ENC_BIG_ENDIAN);
2574 offset+=2;msg_len-=2;
2575 proto_tree_add_item(msg_tree,hf_audio_nat_ip,tvb,offset,4,ENC_BIG_ENDIAN);
2576 offset+=4;msg_len-=4;
2577 proto_tree_add_item(msg_tree,hf_audio_nat_add_len,tvb,offset,1,ENC_BIG_ENDIAN);
2578 offset+=1;msg_len-=1;
2579 proto_tree_add_item(msg_tree,hf_audio_phone_port,tvb,offset,2,ENC_BIG_ENDIAN);
2580 offset+=2;msg_len-=2;
2581 proto_tree_add_item(msg_tree,hf_audio_phone_ip,tvb,offset,4,ENC_BIG_ENDIAN);
2582 offset+=4;msg_len-=4;
2583 proto_tree_add_item(msg_tree,hf_audio_phone_add_len,tvb,offset,1,ENC_BIG_ENDIAN);
2584 offset+=1;msg_len-=1;
2587 /*Audio Stream Status Report*/
2588 stream_dir=tvb_get_guint8(tvb,offset);
2589 proto_tree_add_item(msg_tree,hf_audio_stream_direction_code,tvb,offset,1,ENC_BIG_ENDIAN);
2590 offset+=1;msg_len-=1;
2591 proto_tree_add_item(msg_tree,hf_audio_mgr_stream_id,tvb,offset,1,ENC_BIG_ENDIAN);
2592 offset+=1;msg_len-=1;
2593 stream_state=tvb_get_guint8(tvb,offset);
2594 proto_tree_add_item(msg_tree,hf_audio_stream_state,tvb,offset,1,ENC_BIG_ENDIAN);
2595 offset+=1;msg_len-=1;
2596 if((AUDIO_STREAM_STATE&stream_state)!=AUDIO_STREAM_STATE)
2598 if((AUDIO_STREAM_DIRECTION_RX&stream_dir)==AUDIO_STREAM_DIRECTION_RX)
2599 proto_tree_add_item(msg_tree,hf_rx_vocoder_type,tvb,offset,1,ENC_BIG_ENDIAN);
2600 else if((AUDIO_STREAM_DIRECTION_TX&stream_dir)==AUDIO_STREAM_DIRECTION_TX)
2601 proto_tree_add_item(msg_tree,hf_tx_vocoder_type,tvb,offset,1,ENC_BIG_ENDIAN);
2603 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,1,ENC_NA);
2604 offset+=1;msg_len-=1;
2605 proto_tree_add_item(msg_tree,hf_frames_per_packet,tvb,offset,1,ENC_BIG_ENDIAN);
2606 offset+=1;msg_len-=1;
2607 proto_tree_add_item(msg_tree,hf_audio_tos,tvb,offset,1,ENC_BIG_ENDIAN);
2608 proto_tree_add_item(msg_tree,hf_audio_precedence,tvb,offset,1,ENC_BIG_ENDIAN);
2609 proto_tree_add_item(msg_tree,hf_audio_frf_11,tvb,offset,1,ENC_BIG_ENDIAN);
2610 offset+=1;msg_len-=1;
2611 proto_tree_add_item(msg_tree,hf_rtcp_bucket_id,tvb,offset,1,ENC_BIG_ENDIAN);
2612 offset+=1;msg_len-=1;
2613 proto_tree_add_item(msg_tree,hf_audio_lcl_rtp_port,tvb,offset,2,ENC_BIG_ENDIAN);
2614 offset+=2;msg_len-=2;
2615 proto_tree_add_item(msg_tree,hf_audio_lcl_rtcp_port,tvb,offset,2,ENC_BIG_ENDIAN);
2616 offset+=2;msg_len-=2;
2617 proto_tree_add_item(msg_tree,hf_audio_far_rtp_port,tvb,offset,2,ENC_BIG_ENDIAN);
2618 offset+=2;msg_len-=2;
2619 proto_tree_add_item(msg_tree,hf_audio_far_rtcp_port,tvb,offset,2,ENC_BIG_ENDIAN);
2620 offset+=2;msg_len-=2;
2621 proto_tree_add_item(msg_tree,hf_audio_far_ip_add,tvb,offset,4,ENC_BIG_ENDIAN);
2622 offset+=4;msg_len-=4;
2623 proto_tree_add_item(msg_tree,hf_audio_transducer_list_length,tvb,offset,1,ENC_BIG_ENDIAN);
2624 offset+=1;msg_len-=1;
2626 proto_tree_add_item(msg_tree,hf_audio_transducer_pair,tvb,offset,1,ENC_BIG_ENDIAN);
2627 offset+=1;msg_len-=1;
2630 /*Query APB Response*/
2631 proto_tree_add_item(msg_tree,hf_audio_apb_number,tvb,offset,1,ENC_BIG_ENDIAN);
2632 offset+=1;msg_len-=1;
2634 apb_op_code=tvb_get_guint8(tvb,offset);
2635 proto_tree_add_item(msg_tree,hf_audio_apb_op_code,tvb,
2636 offset,1,ENC_BIG_ENDIAN);
2637 offset+=1;msg_len-=1;
2638 if(apb_op_code>0x39){
2639 /*should have a len + data*/
2640 apb_data_len=tvb_get_guint8(tvb,offset);
2641 proto_tree_add_item(msg_tree,hf_audio_apb_param_len,tvb,
2642 offset,1,ENC_BIG_ENDIAN);
2643 offset+=1;msg_len-=1;
2644 proto_tree_add_item(msg_tree,hf_audio_apb_data,tvb,
2645 offset,apb_data_len,ENC_NA);
2646 offset+=apb_data_len;msg_len-=apb_data_len;
2654 proto_tree_add_item(msg_tree,hf_generic_data,tvb,offset,msg_len,ENC_NA);
2662 set_ascii_item(proto_tree *msg_tree,tvbuff_t *tvb, gint offset,guint msg_len){
2663 proto_tree_add_text(msg_tree,tvb,offset,msg_len,"DATA: %s",
2664 tvb_format_text(tvb,offset,msg_len));
2668 proto_register_unistim(void){
2670 module_t* unistim_module;
2672 static hf_register_info hf[] = {
2673 { &hf_unistim_seq_nu,
2674 { "RUDP Seq Num","unistim.num",FT_UINT32,
2675 BASE_HEX|BASE_RANGE_STRING, RVALS(sequence_numbers), 0x0, NULL, HFILL}
2677 { &hf_unistim_cmd_add,
2678 { "UNISTIM CMD Address","unistim.add",FT_UINT8,
2679 BASE_HEX,VALS(command_address),0x0,NULL,HFILL}
2682 { "UFTP CMD","uftp.cmd",FT_UINT8,
2683 BASE_HEX,VALS(uftp_commands),0x0,NULL,HFILL}
2685 { &hf_uftp_datablock_size,
2686 { "UFTP Datablock Size","uftp.blocksize",FT_UINT32,
2687 BASE_DEC,NULL,0x0,NULL,HFILL}
2689 { &hf_uftp_datablock_limit,
2690 { "UFTP Datablock Limit","uftp.limit",FT_UINT8,
2691 BASE_DEC,NULL,0x0,NULL,HFILL}
2693 { &hf_uftp_filename,
2694 { "UFTP Filename","uftp.filename",FT_STRINGZ,
2695 BASE_NONE,NULL,0x0,NULL,HFILL}
2697 { &hf_uftp_datablock,
2698 { "UFTP Data Block","uftp.datablock",FT_BYTES,
2699 BASE_NONE,NULL,0x0,NULL,HFILL}
2701 { &hf_unistim_packet_type,
2702 { "RUDP Pkt type","unistim.type",FT_UINT8,
2703 BASE_DEC, VALS(packet_names),0x0,NULL,HFILL}
2705 { &hf_unistim_payload,
2706 { "UNISTIM Payload","unistim.pay",FT_UINT8,
2707 BASE_HEX, VALS(payload_names),0x0,NULL,HFILL}
2710 { "UNISTIM CMD Length","unistim.len",FT_UINT8,
2711 BASE_DEC,NULL,0x0,NULL,HFILL}
2713 { &hf_basic_bit_field,
2714 {"FLAGS","unistim.bit.fields",FT_BOOLEAN,
2715 8,TFS(&basic_bit_yn),0xff,NULL,HFILL}
2717 { &hf_basic_switch_cmd ,
2718 {"Basic Cmd (switch)","unistim.basic.switch",FT_UINT8,
2719 BASE_HEX,VALS(basic_switch_msgs),0x0,NULL,HFILL}
2721 { &hf_basic_phone_cmd ,
2722 {"Basic Cmd (phone)","unistim.basic.phone",FT_UINT8,
2723 BASE_HEX,VALS(basic_phone_msgs),0x0,NULL,HFILL}
2725 { &hf_broadcast_switch_cmd ,
2726 {"Broadcast Cmd (switch)","unistim.broadcast.switch",FT_UINT8,
2727 BASE_HEX,VALS(broadcast_switch_msgs),0x0,NULL,HFILL}
2729 { &hf_broadcast_phone_cmd ,
2730 {"Broadcast Cmd (phone)","unistim.broadcast.phone",FT_UINT8,
2731 BASE_HEX,VALS(broadcast_phone_msgs),0x0,NULL,HFILL}
2733 { &hf_audio_switch_cmd ,
2734 {"Audio Cmd (switch)","unistim.audio.switch",FT_UINT8,
2735 BASE_HEX,VALS(audio_switch_msgs),0x0,NULL,HFILL}
2737 { &hf_audio_phone_cmd ,
2738 {"Audio Cmd (phone)","unistim.audio.phone",FT_UINT8,
2739 BASE_HEX,VALS(audio_phone_msgs),0x0,NULL,HFILL}
2741 { &hf_display_switch_cmd ,
2742 {"Display Cmd (switch)","unistim.display.switch",FT_UINT8,
2743 BASE_HEX,VALS(display_switch_msgs),0x0,NULL,HFILL}
2745 { &hf_display_phone_cmd ,
2746 {"Display Cmd (phone)","unistim.display.phone",FT_UINT8,
2747 BASE_HEX,VALS(display_phone_msgs),0x0,NULL,HFILL}
2749 { &hf_key_switch_cmd ,
2750 {"Key Cmd (switch)","unistim.key.switch",FT_UINT8,
2751 BASE_HEX,VALS(key_switch_msgs),0x0,NULL,HFILL}
2753 { &hf_key_phone_cmd ,
2754 {"Key Cmd (phone)","unistim.key.phone",FT_UINT8,
2755 BASE_HEX,VALS(key_phone_msgs),0x0,NULL,HFILL}
2757 { &hf_network_switch_cmd ,
2758 {"Network Cmd (switch)","unistim.network.switch",FT_UINT8,
2759 BASE_HEX,VALS(network_switch_msgs),0x0,NULL,HFILL}
2761 { &hf_network_phone_cmd ,
2762 {"Network Cmd (phone)","unistim.network.phone",FT_UINT8,
2763 BASE_HEX,VALS(network_phone_msgs),0x0,NULL,HFILL}
2766 {"Terminal ID","unistim.terminal.id",FT_IPv4,
2767 BASE_NONE,NULL,0x0,NULL,HFILL}
2769 { &hf_broadcast_year,
2770 {"Year","unistim.broadcast.year",FT_UINT8,
2771 BASE_DEC,NULL,0x7f,NULL,HFILL}
2773 { &hf_broadcast_month,
2774 {"Month","unistim.broadcast.month",FT_UINT8,
2775 BASE_DEC,NULL,0x0,NULL,HFILL}
2777 { &hf_broadcast_day,
2778 {"Day","unistim.broadcast.day",FT_UINT8,
2779 BASE_DEC,NULL,0x0,NULL,HFILL}
2781 { &hf_broadcast_hour,
2782 {"Hour","unistim.broadcast.hour",FT_UINT8,
2783 BASE_DEC,NULL,0x0,NULL,HFILL}
2785 { &hf_broadcast_minute,
2786 {"Minute","unistim.broadcast.minute",FT_UINT8,
2787 BASE_DEC,NULL,0x0,NULL,HFILL}
2789 { &hf_broadcast_second,
2790 {"Second","unistim.broadcast.second",FT_UINT8,
2791 BASE_DEC,NULL,0x0,NULL,HFILL}
2793 { &hf_net_diag_flag,
2794 {"Query Network Manager Diagnostic","unistim.query.diagnostic",
2796 QUERY_NETWORK_MANAGER_DIAGNOSTIC, NULL,HFILL}
2798 { &hf_net_managers_flag,
2799 {"Query Network Manager Managers","unistim.query.managers",
2801 QUERY_NETWORK_MANAGER_MANAGERS, NULL,HFILL}
2803 { &hf_net_attributes_flag,
2804 {"Query Network Manager Attributes","unistim.query.attributes",
2806 QUERY_NETWORK_MANAGER_ATTRIBUTES,NULL,HFILL}
2808 { &hf_net_serv_info_flag,
2809 {"Query Network Manager Server Info","unistim.query.serverInfo",
2811 QUERY_NETWORK_MANAGER_SERVER_INFO,NULL,HFILL}
2813 { &hf_net_options_flag,
2814 {"Query Network Manager Options","unistim.query.options",
2816 QUERY_NETWORK_MANAGER_OPTIONS,NULL,HFILL}
2818 { &hf_net_sanity_flag,
2819 {"Query Network Manager Sanity","unistim.query.sanity",
2821 QUERY_NETWORK_MANAGER_SANITY,NULL,HFILL}
2823 { &hf_net_enable_diag,
2824 {"Network Manager Enable DIAG","unistim.enable.diag",
2826 NETWORK_MANAGER_ENABLE_DIAG,NULL,HFILL}
2828 { &hf_net_enable_rudp,
2829 {"Network Manager Enable RUDP","unistim.enable.network.rel.udp",
2831 NETWORK_MANAGER_ENABLE_RUDP,NULL,HFILL}
2833 { &hf_net_server_id,
2834 {"Download Server ID","unistim.download.id",FT_UINT8,
2835 BASE_HEX, VALS(network_server_id),0x00,NULL,HFILL}
2837 { &hf_net_server_port,
2838 {"Download Server Port","unistim.download.port",FT_UINT16,
2839 BASE_DEC, NULL,0x00,NULL,HFILL}
2841 { &hf_net_server_action,
2842 {"Download Server Action","unistim.download.action",FT_UINT8,
2843 BASE_HEX, VALS(server_action),0x00,NULL,HFILL}
2845 { &hf_net_server_retry_count,
2846 {"Download Retry Count","unistim.download.retry",FT_UINT8,
2847 BASE_DEC, NULL,0x00,NULL,HFILL}
2849 { &hf_net_server_failover_id,
2850 {"Download Failover Server ID","unistim.download.failover",FT_UINT8,
2851 BASE_HEX, VALS(network_server_id),0x00,NULL,HFILL}
2853 { &hf_net_server_ip_address,
2854 {"Download Server Address","unistim.download.address",FT_UINT32,
2855 BASE_HEX, NULL,0x00,NULL,HFILL}
2857 { &hf_net_server_time_out,
2858 {"Watchdog Timeout","unistim.watchdog.timeout",FT_UINT16,
2859 BASE_DEC, NULL,0x00,NULL,HFILL}
2861 { &hf_net_server_config_element,
2862 {"Configure Network Element","unistim.config.element",FT_UINT8,
2863 BASE_HEX, VALS(network_elements),0x00,NULL,HFILL}
2865 { &hf_net_server_recovery_time_low,
2866 {"Recovery Procedure Idle Low Boundary","unistim.recovery.low",FT_UINT16,
2867 BASE_DEC, NULL,0x00,NULL,HFILL}
2869 { &hf_net_server_recovery_time_high,
2870 {"Recovery Procedure Idle High Boundary","unistim.recovery.high",FT_UINT16,
2871 BASE_DEC, NULL,0x00,NULL,HFILL}
2873 { &hf_net_phone_rx_ovr_flag,
2874 {"Receive Buffer Overflow","unistim.receive.overflow",
2876 RX_BUFFER_OVERFLOW,NULL,HFILL}
2878 { &hf_net_phone_tx_ovr_flag,
2879 {"Transmit Buffer Overflow","unistim.trans.overflow",
2881 TX_BUFFER_OVERFLOW,NULL,HFILL}
2883 { &hf_net_phone_rx_empty_flag,
2884 {"Receive Buffer Unexpectedly Empty","unistim.receive.empty",
2886 RX_UNEXPECT_EMPTY,NULL,HFILL}
2888 { &hf_net_phone_invalid_msg_flag,
2889 {"Received Invalid MSG","unistim.invalid.msg",
2891 INVALID_MSG,NULL,HFILL}
2893 { &hf_net_phone_eeprom_insane_flag,
2894 {"EEProm Insane","unistim.eeprom.insane",
2896 EEPROM_INSANE,NULL,HFILL}
2898 { &hf_net_phone_eeprom_unsafe_flag,
2899 {"EEProm Unsafe","unistim.eeprom.unsafe",
2901 EEPROM_UNSAFE,NULL,HFILL}
2903 { &hf_net_phone_diag,
2904 {"Diagnostic Command Enabled","unistim.diag.enabled",FT_BOOLEAN,
2905 8,NULL,NETWORK_MGR_REPORT_DIAG,NULL,HFILL}
2907 { &hf_net_phone_rudp,
2908 {"Reliable UDP Active","unistim.rudp.active",FT_BOOLEAN,
2909 8,NULL,NETWORK_MGR_REPORT_RUDP,NULL,HFILL}
2911 { &hf_basic_switch_query_flags,
2912 {"Query Basic Manager","unistim.basic.query",FT_UINT8,
2913 BASE_HEX, NULL,0x00,"INITIAL PHONE QUERY",HFILL}
2915 { &hf_basic_switch_query_attr,
2916 {"Query Basic Manager Attributes","unistim.basic.attrs",FT_BOOLEAN,
2917 8,NULL,BASIC_QUERY_ATTRIBUTES,"Basic Query Attributes",HFILL}
2919 { &hf_basic_switch_query_opts,
2920 {"Query Basic Manager Options","unistim.basic.opts",FT_BOOLEAN,
2921 8,NULL,BASIC_QUERY_OPTIONS,"Basic Query Options",HFILL}
2923 { &hf_basic_switch_query_fw,
2924 {"Query Basic Switch Firmware","unistim.basic.fw",FT_BOOLEAN,
2925 8,NULL,BASIC_QUERY_FW,"Basic Query Firmware",HFILL}
2927 { &hf_basic_switch_query_hw_id,
2928 {"Query Basic Manager Hardware ID","unistim.basic.hwid",FT_BOOLEAN,
2929 8,NULL,BASIC_QUERY_HW_ID,"Basic Query Hardware ID",HFILL}
2931 { &hf_basic_switch_query_it_type,
2932 {"Query Basic Manager Phone Type","unistim.basic.type",FT_BOOLEAN,
2933 8,NULL,BASIC_QUERY_IT_TYPE,"Basic Query Phone Type",HFILL}
2935 { &hf_basic_switch_query_prod_eng_code,
2936 {"Query Basic Manager Prod Eng Code","unistim.basic.code",FT_BOOLEAN,
2937 8,NULL,BASIC_QUERY_PROD_ENG_CODE,"Basic Query Production Engineering Code",HFILL}
2939 { &hf_basic_switch_query_gray_mkt_info,
2940 {"Query Basic Manager Gray Mkt Info","unistim.basic.gray",FT_BOOLEAN,
2941 8,NULL,BASIC_QUERY_GRAY_MKT_INFO,"Basic Query Gray Market Info",HFILL}
2943 { &hf_basic_switch_options_secure,
2944 {"Basic Switch Options Secure Code","unistim.basic.secure",FT_BOOLEAN,
2945 8,NULL,BASIC_OPTION_SECURE,NULL,HFILL}
2947 { &hf_basic_switch_element_id,
2948 {"Basic Element ID","unistim.basic.element.id",FT_UINT8,
2949 BASE_HEX,NULL,0x00,NULL,HFILL}
2951 { &hf_basic_switch_eeprom_data,
2952 {"EEProm Data","unistim.basic.eeprom.data",FT_BYTES,
2953 BASE_NONE,NULL,0x00,NULL,HFILL}
2955 { &hf_basic_phone_eeprom_stat_cksum,
2956 {"Basic Phone EEProm Static Checksum","unistim.static.cksum",FT_UINT8,
2957 BASE_HEX,NULL,0x0,NULL,HFILL}
2959 { &hf_basic_phone_eeprom_dynam,
2960 {"Basic Phone EEProm Dynamic Checksum","unistim.dynam.cksum",FT_UINT8,
2961 BASE_HEX,NULL,0x00,NULL,HFILL}
2963 { &hf_basic_phone_eeprom_net_config_cksum,
2964 {"Basic Phone EEProm Net Config Checksum","unistim.netconfig.cksum",FT_UINT8,
2965 BASE_HEX,NULL,0x00,NULL,HFILL}
2967 { &hf_basic_phone_hw_id,
2968 {"Basic Phone Hardware ID","unistim.basic.hw.id",FT_BYTES,
2969 BASE_NONE,NULL,0x00,NULL,HFILL}
2971 { &hf_basic_phone_fw_ver,
2972 {"Basic Phone Firmware Version","unistim.basic.fw.ver",FT_STRING,
2973 BASE_NONE,NULL,0x00,NULL,HFILL}
2976 {"Key Name","unistim.key.name",FT_UINT8,
2977 BASE_HEX,VALS(key_names),0x3f,NULL,HFILL}
2980 {"Key Action","unistim.key.action",FT_UINT8,
2981 BASE_HEX,VALS(key_cmds),0xc0,NULL,HFILL}
2984 {"Icon ID","unistim.icon.id",FT_UINT8,
2985 BASE_HEX,NULL, DISPLAY_ICON_ID,NULL,HFILL}
2987 { &hf_broadcast_icon_state,
2988 {"Icon State","unistim.icon.state",FT_UINT8,
2989 BASE_HEX,VALS(bcast_icon_states),0x1f,NULL,HFILL}
2991 { &hf_broadcast_icon_cadence,
2992 {"Icon Cadence","unistim.icon.cadence",FT_UINT8,
2993 BASE_HEX,VALS(bcast_icon_cadence),0xe0,NULL,HFILL}
2995 { &hf_audio_mgr_attr,
2996 {"Query Audio Manager Attributes","unistim.audio.attr",FT_BOOLEAN,
2997 8,NULL,QUERY_AUDIO_MGR_ATTRIBUTES,NULL,HFILL}
2999 { &hf_audio_mgr_opts,
3000 {"Query Audio Manager Options","unistim.audio.options",FT_BOOLEAN,
3001 8,NULL,QUERY_AUDIO_MGR_OPTIONS,NULL,HFILL}
3003 { &hf_audio_mgr_alert,
3004 {"Query Audio Manager Alerting","unistim.audio.alerting",FT_BOOLEAN,
3005 8,NULL,QUERY_AUDIO_MGR_ALERTING ,NULL,HFILL}
3007 { &hf_audio_mgr_adj_rx_vol,
3008 {"Query Audio Manager Adjustable Receive Volume","unistim.audio.adj.volume",FT_BOOLEAN,
3009 8,NULL,QUERY_AUDIO_MGR_ADJ_RX_VOL,NULL,HFILL}
3011 { &hf_audio_mgr_def_rx_vol,
3012 {"Query Audio Manager Default Receive Volume","unistim.audio.def.volume",FT_BOOLEAN,
3013 8,NULL,QUERY_AUDIO_MGR_DEF_RX_VOL,NULL,HFILL}
3015 { &hf_audio_mgr_handset,
3016 {"Query Audio Manager Handset","unistim.audio.handset",FT_BOOLEAN,
3017 8,NULL,QUERY_AUDIO_MGR_HANDSET,NULL,HFILL}
3019 { &hf_audio_mgr_headset,
3020 {"Query Audio Manager Headset","unistim.audio.headset",FT_BOOLEAN,
3021 8,NULL,QUERY_AUDIO_MGR_HEADSET,NULL,HFILL}
3023 { &hf_audio_default_rx_vol_id,
3024 {"Audio Manager Default Receive Volume ID","unistim.audio.volume.id",FT_UINT8,
3025 BASE_HEX,VALS(default_rx_vol_id),0x00,NULL,HFILL}
3027 { &hf_audio_mgr_opt_max_vol,
3028 {"Audio Manager Enable Max Tone Volume","unistim.audio.max.tone",FT_BOOLEAN,
3029 8,TFS(&audio_opts_enable_max_tone_vol),AUDIO_MGR_OPTS_MAX_VOL,NULL,HFILL}
3031 { &hf_audio_mgr_opt_adj_vol,
3032 {"Audio Manager Adjust Volume","unistim.audio.opts.adj.vol",FT_BOOLEAN,
3033 8,TFS(&audio_opts_adjust_volume),AUDIO_MGR_ADJ_VOL,NULL,HFILL}
3035 { &hf_audio_mgr_opt_aa_rx_vol_rpt,
3036 {"Audio Manager Auto Adjust Volume RPT","unistim.audio.aa.vol.rpt",FT_BOOLEAN,
3037 8,TFS(&audio_opts_automatic_adjustable),AUDIO_MGR_AUTO_RX_VOL_RPT,NULL,HFILL}
3039 { &hf_audio_mgr_opt_hs_on_air,
3040 {"Audio Manager Handset","unistim.audio.handset",FT_BOOLEAN,
3041 8,TFS(&audio_opts_hs_on_air_feature),AUDIO_MGR_HS_ON_AIR,NULL,HFILL}
3043 { &hf_audio_mgr_opt_hd_on_air,
3044 {"Audio Manager Headset","unistim.audio.headset",FT_BOOLEAN,
3045 8,TFS(&audio_opts_hd_on_air_feature),AUDIO_MGR_HD_ON_AIR,NULL,HFILL}
3047 { &hf_audio_mgr_opt_noise_squelch,
3048 {"Audio Manager Noise Squelch","unistim.audio.squelch",FT_BOOLEAN,
3049 8,TFS(&noise_sqlch_disable), AUDIO_MGR_NOISE_SQUELCH,NULL,HFILL}
3051 { &hf_audio_mgr_mute,
3052 {"Audio Manager Mute","unistim.audio.mute",FT_BOOLEAN,
3053 8,TFS(&audio_mgr_mute_val),AUDIO_MGR_MUTE,NULL,HFILL}
3055 { &hf_audio_mgr_tx_rx,
3056 {"Audio Manager RX or TX","unistim.audio.rx.tx",FT_BOOLEAN,
3057 8,TFS(&audio_mgr_tx_rx_val),AUDIO_MGR_TX_RX,NULL,HFILL}
3059 { &hf_audio_mgr_stream_id,
3060 {"Audio Manager Stream ID","unistim.audio.stream.id",FT_UINT8,
3061 BASE_DEC,NULL,0x00,NULL,HFILL}
3063 { &hf_audio_mgr_transducer_based_tone_id,
3064 {"Audio Manager Transducer Based Tone On","unistim.audio.transducer.on",FT_UINT8,
3065 BASE_HEX,VALS(trans_base_tone_ids),0x07,NULL,HFILL}
3067 { &hf_audio_mgr_attenuated,
3068 {"Audio Manager Transducer Tone Attenuated","unistim.audio.attenuated.on",FT_BOOLEAN,
3069 8,NULL,AUDIO_MGR_ATTENUATED,NULL,HFILL}
3071 { &hf_audio_mgr_warbler_select,
3072 {"Warbler Select","unistim.warbler.select",FT_UINT8,
3073 BASE_HEX,NULL,0x07,NULL,HFILL}
3075 { &hf_audio_mgr_transducer_routing,
3076 {"Transducer Routing","unistim.transducer.routing",FT_UINT8,
3077 BASE_HEX,VALS(transducer_routing_vals),0xf8,NULL,HFILL}
3079 { &hf_audio_mgr_tone_vol_range,
3080 {"Tone Volume Range in Steps","unistim.tone.volume.range",FT_UINT8,
3081 BASE_HEX,NULL,0x0f,NULL,HFILL}
3083 { &hf_audio_mgr_cadence_select,
3084 {"Cadence Select","unistim.cadence.select",FT_UINT8,
3085 BASE_HEX,VALS(cadence_select_vals),0xf0,NULL,HFILL}
3087 { &hf_audio_special_tone,
3088 {"Special Tone Select","unistim.special.tone.select",FT_UINT8,
3089 BASE_HEX,VALS(special_tones_vals),0x00,NULL,HFILL}
3091 { &hf_audio_tone_level,
3092 {"Tone Level","unistim.audio.tone.level",FT_UINT8,
3093 BASE_DEC,NULL,0xf0,NULL,HFILL}
3095 { &hf_audio_visual_tones,
3096 {"Enable Visual Tones","unistim.visual.tones",FT_BOOLEAN,
3097 8,NULL,AUDIO_MGR_VISUAL_TONE,NULL,HFILL}
3099 { &hf_audio_stream_based_tone_id,
3100 {"Stream Based Tone ID","unistim.stream.tone.id",FT_UINT8,
3101 BASE_HEX,VALS(stream_based_tone_vals),0x1f,NULL,HFILL}
3103 { &hf_audio_stream_based_tone_rx_tx,
3104 {"Stream Based Tone RX or TX","unistim.stream.based.tone.rx.tx",FT_BOOLEAN,
3105 8,TFS(&stream_based_tone_rx_tx_yn),AUDIO_STREAM_BASED_TONE_RX_TX,NULL,HFILL}
3107 { &hf_audio_stream_based_tone_mute,
3108 {"Stream Based Tone Mute","unistim.stream.tone.mute",FT_BOOLEAN,
3109 8,TFS(&stream_based_tone_mute_yn),AUDIO_STREAM_BASED_TONE_MUTE,NULL,HFILL}
3111 { &hf_audio_stream_id,
3112 {"Stream ID","unistim.audio.stream.id",FT_UINT8,
3113 BASE_HEX,NULL,0x00,NULL,HFILL}
3115 { &hf_audio_stream_based_volume,
3116 {"Stream Based Volume ID","unistim.stream.volume.id",FT_UINT8,
3117 BASE_HEX,VALS(stream_base_vol_level),0x00,NULL,HFILL}
3119 { &hf_basic_switch_terminal_id,
3120 {"Terminal ID assigned by Switch","unistim.switch.terminal.id",FT_IPv4,
3121 BASE_NONE,NULL,0x00,NULL,HFILL}
3123 { &hf_basic_it_type,
3124 {"IT (Phone) Type","unistim.it.type",FT_UINT8,
3125 BASE_HEX,VALS(it_types),0x00,NULL,HFILL}
3127 { &hf_basic_prod_eng_code,
3128 {"Product Engineering Code for phone","unistim.basic.eng.code",FT_STRING,
3129 BASE_NONE,NULL,0x00,NULL,HFILL}
3131 { &hf_net_phone_primary_server_id,
3132 {"Phone Primary Server ID","unistim.net.phone.primary.id",FT_UINT8,
3133 BASE_DEC,NULL,0x00,NULL,HFILL}
3135 { &hf_net_phone_server_port,
3136 {"Port Number","unistim.server.port",FT_UINT16,
3137 BASE_DEC,NULL,0x00,NULL,HFILL}
3139 { &hf_net_phone_server_action,
3140 {"Action","unistim.server.action.byte",FT_UINT8,
3141 BASE_HEX,VALS(action_bytes),0x00,NULL,HFILL}
3143 { &hf_net_phone_server_retry_count,
3144 {"Number of times to Retry","unistim.server.retry.count",FT_UINT8,
3145 BASE_DEC,NULL,0x00,NULL,HFILL}
3147 { &hf_net_phone_server_failover_id,
3148 {"Failover Server ID","unistim.server.failover.id",FT_UINT8,
3149 BASE_DEC,NULL,0x00,NULL,HFILL}
3151 { &hf_net_phone_server_ip,
3152 {"IP address","unistim.server.ip.address",FT_IPv4,
3153 BASE_NONE,NULL,0x00,NULL,HFILL}
3155 { &hf_audio_apb_number,
3156 {"APB Number","unistim.audio.apb.number",FT_UINT8,
3157 BASE_HEX,NULL,0x00,NULL,HFILL}
3159 { & hf_audio_apb_op_code,
3160 {"APB Operation Code","unistim.audio.apb.op.code",FT_UINT8,
3161 BASE_HEX,VALS(apb_op_codes),0x00,NULL,HFILL}
3163 { &hf_audio_apb_param_len,
3164 {"APB Operation Parameter Length","unistim.apb.param.len",FT_UINT8,
3165 BASE_DEC,NULL,0x00,NULL,HFILL}
3167 { &hf_audio_apb_data,
3168 {"APB Operation Data","unistim.apb.operation.data",FT_BYTES,
3169 BASE_NONE,NULL,0x00,NULL,HFILL}
3171 { &hf_display_write_address_numeric,
3172 {"Is Address Numeric","unistim.write.address.numeric",FT_BOOLEAN,
3173 8,NULL,DISPLAY_WRITE_ADDRESS_NUMERIC_FLAG,NULL,HFILL}
3175 { &hf_display_write_address_context,
3176 {"Context Field in the Info Bar","unistim.write.address.context",FT_BOOLEAN,
3177 8,NULL,DISPLAY_WRITE_ADDRESS_CONTEXT_FLAG,NULL,HFILL}
3179 { &hf_display_write_address_line,
3180 {"Write A Line","unistim.write.address.line",FT_BOOLEAN,
3181 8,NULL,DISPLAY_WRITE_ADDRESS_LINE_FLAG ,NULL,HFILL}
3183 { &hf_display_write_address_soft_key,
3184 {"Write a SoftKey","unistim.write.address.softkey",FT_BOOLEAN,
3185 8,NULL,DISPLAY_WRITE_ADDRESS_SOFT_KEY_FLAG,NULL,HFILL}
3187 { &hf_display_write_address_soft_label,
3188 {"Write A Softkey Label","unistim.write.address.softkey.label",FT_BOOLEAN,
3189 8,NULL,DISPLAY_WRITE_ADDRESS_SOFT_LABEL_FLAG,NULL,HFILL}
3191 { &hf_display_write_address_softkey_id,
3192 {"Soft Key ID","unistim.write.addres.softkey.id",FT_UINT8,
3193 BASE_HEX,NULL,DISPLAY_WRITE_ADDRESS_SOFT_KEY_ID,NULL,HFILL}
3195 { &hf_display_write_address_char_pos,
3196 {"Character Position or Soft-Label Key ID","unistim.display.write.address.char.pos",FT_UINT8,
3197 BASE_HEX,NULL,DISPLAY_WRITE_ADDRESS_CHAR_POS,NULL,HFILL}
3199 { &hf_display_write_address_line_number,
3200 {"Line Number","unistim.write.address.line.number",FT_UINT8,
3201 BASE_DEC,NULL,DISPLAY_WRITE_ADDRESS_LINE_NUM,NULL,HFILL}
3203 { &hf_display_write_cursor_move,
3204 {"Cursor Move","unistim.display.cursor.move",FT_BOOLEAN,
3205 8,NULL,DISPLAY_WRITE_CURSOR_MOVE,NULL,HFILL}
3207 { &hf_display_write_clear_left,
3208 {"Clear Left","unistim.display.clear.left",FT_BOOLEAN,
3209 8,NULL,DISPLAY_WRITE_CLEAR_LEFT,NULL,HFILL}
3211 { &hf_display_write_clear_right,
3212 {"Clear Right","unistim.display.clear.right",FT_BOOLEAN,
3213 8,NULL,DISPLAY_WRITE_CLEAR_RIGHT,NULL,HFILL}
3215 { &hf_display_write_shift_left,
3216 {"Shift Left","unistim.display.shift.left",FT_BOOLEAN,
3217 8,NULL,DISPLAY_WRITE_SHIFT_LEFT,NULL,HFILL}
3219 { &hf_display_write_shift_right,
3220 {"Shift Right","unistim.display.shift.right",FT_BOOLEAN,
3221 8,NULL,DISPLAY_WRITE_SHIFT_RIGHT,NULL,HFILL}
3223 { &hf_display_write_highlight,
3224 {"Highlight","unistim.display.highlight",FT_BOOLEAN,
3225 8,NULL,DISPLAY_WRITE_HIGHLIGHT,NULL,HFILL}
3227 { &hf_display_write_tag,
3228 {"Tag for text","unistim.display.text.tag",FT_UINT8,
3229 BASE_DEC,NULL,0x00,NULL,HFILL}
3231 { &hf_display_cursor_move_cmd,
3232 {"Cursor Movement Command","unistim.cursor.move.cmd",FT_UINT8,
3233 BASE_HEX,VALS(cursor_move_cmds),DISPLAY_CURSOR_MOVE_CMD,NULL,HFILL}
3235 { &hf_display_cursor_blink,
3236 {"Should Cursor Blink","unistim.cursor.blink",FT_BOOLEAN,
3237 8,NULL,DISPLAY_CURSOR_BLINK,NULL,HFILL}
3239 { &hf_audio_vocoder_id,
3240 {"Vocoder Protocol","unistim.vocoder.id",FT_UINT8,
3241 BASE_HEX,VALS(vocoder_ids),0x00,NULL,HFILL}
3243 { &hf_audio_vocoder_param,
3244 {"Vocoder Config Param","unistim.vocoder.config.param",FT_UINT8,
3245 BASE_HEX,VALS(vocoder_config_params),AUDIO_VOCODER_CONFIG_PARAM,NULL,HFILL}
3247 { &hf_audio_vocoder_entity,
3248 {"Vocoder Entity","unistim.vocoder.entity",FT_UINT8,
3249 BASE_HEX,VALS(config_param_entities),AUDIO_VOCODER_CONFIG_ENTITY,NULL,HFILL}
3251 { &hf_audio_vocoder_annexa,
3252 {"Enable Annex A","unistim.enable.annexa",FT_BOOLEAN,
3253 8,NULL,AUDIO_VOCODER_ANNEXA,NULL,HFILL}
3255 { &hf_audio_vocoder_annexb,
3256 {"Enable Annex B","unistim.enable.annexb",FT_BOOLEAN,
3257 8,NULL,AUDIO_VOCODER_ANNEXB,NULL,HFILL}
3259 { &hf_audio_sample_rate,
3260 {"Sample Rate","unistim.audio.sample.rate",FT_UINT8,
3261 BASE_HEX,VALS(sample_rates),0x00,NULL,HFILL}
3263 { &hf_audio_rtp_type,
3264 {"RTP Type","unistim.audio.rtp.type",FT_UINT8,
3265 BASE_HEX,NULL,0x00,NULL,HFILL}
3267 { &hf_audio_bytes_per_frame,
3268 {"Bytes Per Frame","unistim.audio.bytes.per.frame",FT_UINT16,
3269 BASE_DEC,NULL,0x00,NULL,HFILL}
3271 { &hf_audio_rx_stream_id,
3272 {"Receive Stream Id","unistim.rx.stream.id",FT_UINT8,
3273 BASE_HEX,NULL,0x00,NULL,HFILL}
3275 { &hf_audio_tx_stream_id,
3276 {"Transmit Stream Id","unistim.rx.stream.id",FT_UINT8,
3277 BASE_HEX,NULL,0x00,NULL,HFILL}
3279 { &hf_rx_vocoder_type,
3280 {"Receive Vocoder Protocol","unistim.vocoder.id",FT_UINT8,
3281 BASE_HEX,VALS(vocoder_ids),0x00,NULL,HFILL}
3283 { &hf_tx_vocoder_type,
3284 {"Transmit Vocoder Protocol","unistim.vocoder.id",FT_UINT8,
3285 BASE_HEX,VALS(vocoder_ids),0x00,NULL,HFILL}
3287 { &hf_frames_per_packet,
3288 {"Frames Per Packet","unistim.vocoder.frames.per.packet",FT_UINT8,
3289 BASE_DEC,NULL,0x00,NULL,HFILL}
3292 {"Type of Service","unistim.audio.type.service",FT_UINT8,
3293 BASE_HEX,VALS(types_of_service),AUDIO_TYPE_OF_SERVICE,NULL,HFILL}
3295 { &hf_audio_precedence,
3296 {"Precedence","unistim.audio.precedence",FT_UINT8,
3297 BASE_HEX,VALS(precedences),AUDIO_PRECENDENCE,NULL,HFILL}
3300 {"FRF.11 Enable","unistim.audio.frf.11",FT_BOOLEAN,
3301 8,NULL,AUDIO_FRF_11,NULL,HFILL}
3303 { &hf_audio_lcl_rtp_port,
3304 {"Phone RTP Port","unistim.local.rtp.port",FT_UINT16,
3305 BASE_DEC,NULL,0x00,NULL,HFILL}
3307 { &hf_audio_lcl_rtcp_port,
3308 {"Phone RTCP Port","unistim.local.rtcp.port",FT_UINT16,
3309 BASE_DEC,NULL,0x00,NULL,HFILL}
3311 { &hf_audio_far_rtp_port,
3312 {"Distant RTP Port","unistim.far.rtp.port",FT_UINT16,
3313 BASE_DEC,NULL,0x00,NULL,HFILL}
3315 { &hf_audio_far_rtcp_port,
3316 {"Distant RTCP Port","unistim.far.rtcp.port",FT_UINT16,
3317 BASE_DEC,NULL,0x00,NULL,HFILL}
3319 { &hf_audio_far_ip_add,
3320 {"Distant IP Address for RT[C]P","unistim.far.ip.address",FT_IPv4,
3321 BASE_NONE,NULL,0x00,NULL,HFILL}
3323 { &hf_rtcp_bucket_id,
3324 {"RTCP Bucket ID","unistim.rtcp.bucket.id",FT_UINT16,
3325 BASE_HEX,NULL,0x00,NULL,HFILL}
3328 {"Icon ID","unistim.key.icon.id",FT_UINT8,
3329 BASE_HEX,NULL,0x00,NULL,HFILL}
3331 { &hf_display_clear_numeric,
3332 {"Numeric Index Field in InfoBar","unistim.display.clear.numeric",FT_BOOLEAN,
3333 8,NULL,DISPLAY_CLEAR_NUMERIC,NULL,HFILL}
3335 { &hf_display_clear_context ,
3336 {"Context Field in InfoBar","unistim.display.clear.context",FT_BOOLEAN,
3337 8,NULL,DISPLAY_CLEAR_CONTEXT,NULL,HFILL}
3339 { &hf_display_clear_date ,
3340 {"Date Field","unistim.display.clear.date",FT_BOOLEAN,
3341 8,NULL,DISPLAY_CLEAR_DATE,NULL,HFILL}
3343 { &hf_display_clear_time,
3344 {"Time Field","unistim.display.clear.time",FT_BOOLEAN,
3345 8,NULL,DISPLAY_CLEAR_TIME,NULL,HFILL}
3347 { &hf_display_clear_line,
3348 {"Line Data","unistim.display.clear.line",FT_BOOLEAN,
3349 8,NULL,DISPLAY_CLEAR_LINE,NULL,HFILL}
3351 { &hf_display_clear_status_bar_icon,
3352 {"Status Bar Icon","unistim.display.statusbar.icon",FT_BOOLEAN,
3353 8,NULL,DISPLAY_CLEAR_STATUS_BAR_ICON,NULL,HFILL}
3355 { &hf_display_clear_softkey,
3356 {"Soft Key","unistim.display.clear.softkey",FT_BOOLEAN,
3357 8,NULL,DISPLAY_CLEAR_SOFTKEY,NULL,HFILL}
3359 { &hf_display_clear_softkey_label ,
3360 {"Soft Key Label","unistim.display.clear.softkey.label",FT_BOOLEAN,
3361 8,NULL,DISPLAY_CLEAR_SOFTKEY_LABEL,NULL,HFILL}
3363 { &hf_display_clear_line_1 ,
3364 {"Line 1","unistim.display.clear.line1",FT_BOOLEAN,
3365 8,NULL,DISPLAY_CLEAR_LINE_1,NULL,HFILL}
3367 { &hf_display_clear_line_2 ,
3368 {"Line 2","unistim.display.clear.line2",FT_BOOLEAN,
3369 8,NULL,DISPLAY_CLEAR_LINE_2,NULL,HFILL}
3371 { &hf_display_clear_line_3 ,
3372 {"Line 3","unistim.display.clear.line3",FT_BOOLEAN,
3373 8,NULL,DISPLAY_CLEAR_LINE_3,NULL,HFILL}
3375 { &hf_display_clear_line_4 ,
3376 {"Line 4","unistim.display.clear.line4",FT_BOOLEAN,
3377 8,NULL,DISPLAY_CLEAR_LINE_4,NULL,HFILL}
3379 { &hf_display_clear_line_5 ,
3380 {"Line 5","unistim.display.clear.line5",FT_BOOLEAN,
3381 8,NULL,DISPLAY_CLEAR_LINE_5,NULL,HFILL}
3383 { &hf_display_clear_line_6 ,
3384 {"Line 6","unistim.display.clear.line6",FT_BOOLEAN,
3385 8,NULL,DISPLAY_CLEAR_LINE_6,NULL,HFILL}
3387 { &hf_display_clear_line_7 ,
3388 {"Line 7","unistim.display.clear.line7",FT_BOOLEAN,
3389 8,NULL,DISPLAY_CLEAR_LINE_7,NULL,HFILL}
3391 { &hf_display_clear_line_8 ,
3392 {"Line 8","unistim.display.clear.line8",FT_BOOLEAN,
3393 8,NULL,DISPLAY_CLEAR_LINE_8,NULL,HFILL}
3395 { &hf_display_clear_status_bar_icon_1 ,
3396 {"Status Bar Icon 1","unistim.display.clear.sbar.icon1",FT_BOOLEAN,
3397 8,NULL,DISPLAY_STATUS_BAR_ICON_1,NULL,HFILL}
3399 { &hf_display_clear_status_bar_icon_2 ,
3400 {"Status Bar Icon 2","unistim.display.clear.sbar.icon2",FT_BOOLEAN,
3401 8,NULL,DISPLAY_STATUS_BAR_ICON_2,NULL,HFILL}
3403 { &hf_display_clear_status_bar_icon_3 ,
3404 {"Status Bar Icon 3","unistim.display.clear.sbar.icon3",FT_BOOLEAN,
3405 8,NULL,DISPLAY_STATUS_BAR_ICON_3,NULL,HFILL}
3407 { &hf_display_clear_status_bar_icon_4 ,
3408 {"Status Bar Icon 4","unistim.display.clear.sbar.icon4",FT_BOOLEAN,
3409 8,NULL,DISPLAY_STATUS_BAR_ICON_4,NULL,HFILL}
3411 { &hf_display_clear_status_bar_icon_5 ,
3412 {"Status Bar Icon 5","unistim.display.clear.sbar.icon5",FT_BOOLEAN,
3413 8,NULL,DISPLAY_STATUS_BAR_ICON_5,NULL,HFILL}
3415 { &hf_display_clear_status_bar_icon_6 ,
3416 {"Status Bar Icon 6","unistim.display.clear.sbar.icon6",FT_BOOLEAN,
3417 8,NULL,DISPLAY_STATUS_BAR_ICON_6,NULL,HFILL}
3419 { &hf_display_clear_status_bar_icon_7 ,
3420 {"Status Bar Icon 7","unistim.display.clear.sbar.icon7",FT_BOOLEAN,
3421 8,NULL,DISPLAY_STATUS_BAR_ICON_7,NULL,HFILL}
3423 { &hf_display_clear_status_bar_icon_8 ,
3424 {"Status Bar Icon 8","unistim.display.clear.sbar.icon8",FT_BOOLEAN,
3425 8,NULL,DISPLAY_STATUS_BAR_ICON_8,NULL,HFILL}
3427 { &hf_display_clear_soft_key_1 ,
3428 {"Soft Key 1","unistim.display.clear.soft.key1",FT_BOOLEAN,
3429 8,NULL,DISPLAY_SOFT_KEY_1,NULL,HFILL}
3431 { &hf_display_clear_soft_key_2 ,
3432 {"Soft Key 2","unistim.display.clear.soft.key2",FT_BOOLEAN,
3433 8,NULL,DISPLAY_SOFT_KEY_2,NULL,HFILL}
3435 { &hf_display_clear_soft_key_3 ,
3436 {"Soft Key 3","unistim.display.clear.soft.key3",FT_BOOLEAN,
3437 8,NULL,DISPLAY_SOFT_KEY_3,NULL,HFILL}
3439 { &hf_display_clear_soft_key_4 ,
3440 {"Soft Key 4","unistim.display.clear.soft.key4",FT_BOOLEAN,
3441 8,NULL,DISPLAY_SOFT_KEY_4,NULL,HFILL}
3443 { &hf_display_clear_soft_key_5 ,
3444 {"Soft Key 5","unistim.display.clear.soft.key5",FT_BOOLEAN,
3445 8,NULL,DISPLAY_SOFT_KEY_5,NULL,HFILL}
3447 { &hf_display_clear_soft_key_6 ,
3448 {"Soft Key 6","unistim.display.clear.soft.key6",FT_BOOLEAN,
3449 8,NULL,DISPLAY_SOFT_KEY_6,NULL,HFILL}
3451 { &hf_display_clear_soft_key_7 ,
3452 {"Soft Key 7","unistim.display.clear.soft.key7",FT_BOOLEAN,
3453 8,NULL,DISPLAY_SOFT_KEY_7,NULL,HFILL}
3455 { &hf_display_clear_soft_key_8 ,
3456 {"Soft Key 8","unistim.display.clear.soft.key8",FT_BOOLEAN,
3457 8,NULL,DISPLAY_SOFT_KEY_8,NULL,HFILL}
3459 { &hf_display_clear_sk_label_key_id,
3460 {"Soft Key Label ID","unistim.display.clear.sk.label.id",FT_UINT8,
3461 BASE_HEX,NULL, DISPLAY_CLEAR_SK_LABEL_KEY_ID,NULL,HFILL}
3463 { &hf_display_clear_all_slks,
3464 {"Clear All Soft Key Labels","unistim.display.clear.all.sks",FT_BOOLEAN,
3465 8,NULL,DISPLAY_CLEAR_ALL_SLKS,NULL,HFILL}
3467 { &hf_key_led_cadence,
3468 {"LED Cadence","unistim.key.led.cadence",FT_UINT8,
3469 BASE_HEX,VALS(led_cadences),KEY_LED_CADENCE,NULL,HFILL}
3472 {"LED ID","unistim.key.led.id",FT_UINT8,
3473 BASE_HEX,VALS(led_ids),KEY_LED_ID,NULL,HFILL}
3475 { &hf_basic_ether_address,
3476 {"Phone Ethernet Address","unistim.phone.ether",FT_ETHER,
3477 BASE_NONE,NULL,0x00,NULL,HFILL}
3479 { &hf_audio_rtcp_bucket_id,
3480 {"RTCP Bucket ID","unistim.audio.rtcp.bucket.id",FT_UINT8,
3481 BASE_HEX,NULL,AUDIO_RTCP_BUCKET_ID,NULL,HFILL}
3483 { &hf_audio_clear_bucket,
3484 {"Clear Bucket Counter","unistim.clear.bucket",FT_BOOLEAN,
3485 8,NULL,AUDIO_CLEAR_BUCKET,NULL,HFILL}
3487 { &hf_display_arrow,
3488 {"Arrow Display Direction","unistim.arrow.direction",FT_UINT8,
3489 BASE_HEX,VALS(arrow_dirs),0x00,NULL,HFILL}
3491 { &hf_audio_transducer_pair,
3492 {"Audio Transducer Pair","unistim.transducer.pairs",FT_UINT8,
3493 BASE_HEX,VALS(transducer_pairs),AUDIO_TRANSDUCER_PAIR_ID,NULL,HFILL}
3495 { &hf_audio_rx_enable,
3496 {"RX Enable","unistim.receive.enable",FT_BOOLEAN,
3497 8,NULL,AUDIO_RX_ENABLE,NULL,HFILL}
3499 { &hf_audio_tx_enable,
3500 {"TX Enable","unistim.transmit.enable",FT_BOOLEAN,
3501 8,NULL,AUDIO_TX_ENABLE,NULL,HFILL}
3503 { &hf_audio_sidetone_disable,
3504 {"Disable Sidetone","unistim.audio.sidetone.disable",FT_BOOLEAN,
3505 8,NULL,AUDIO_SIDETONE_DISABLE,NULL,HFILL}
3507 { &hf_audio_destruct_additive,
3508 {"Destructive/Additive","unistim.destructive.active",FT_BOOLEAN,
3509 8,TFS(&destruct_additive),AUDIO_DESTRUCT_ADD,NULL,HFILL}
3511 { &hf_audio_dont_force_active,
3512 {"Don't Force Active","unistim.dont.force.active",FT_BOOLEAN,
3513 8,TFS(&dont_force_active),AUDIO_DONT_FORCE_ACTIVE,NULL,HFILL}
3515 { &hf_display_line_width,
3516 {"Phone Line Width","unistim.line.width",FT_UINT8,
3517 BASE_DEC,NULL,DISPLAY_LINE_WIDTH,NULL,HFILL}
3519 { &hf_display_lines,
3520 {"Number Of Lines","unistim.number.lines",FT_UINT8,
3521 BASE_DEC,NULL,DISPLAY_LINES,NULL,HFILL}
3523 { &hf_display_softkey_width,
3524 {"Phone Softkey Width","unistim.softkey.width",FT_UINT8,
3525 BASE_DEC,NULL,DISPLAY_SKEY_WIDTH,NULL,HFILL}
3527 { &hf_display_softkeys,
3528 {"Phone Softkeys","unistim.phone.softkeys",FT_UINT8,
3529 BASE_DEC,NULL,DISPLAY_SKEYS,NULL,HFILL}
3532 {"Phone Icon Type","unistim.phone.icon.type",FT_UINT8,
3533 BASE_HEX,VALS(icon_types),DISPLAY_ICON,NULL,HFILL}
3535 { &hf_display_softlabel_key_width,
3536 {"Soft-Label Key width","unistim.softlabel.key.width",FT_UINT8,
3537 BASE_DEC,NULL,DISPLAY_SOFTLABEL_WIDTH,NULL,HFILL}
3539 { &hf_display_context_width,
3540 {"Phone Context Width","unistim.context.width",FT_UINT8,
3541 BASE_DEC,NULL,DISPLAY_CONTEXT_WIDTH,NULL,HFILL}
3543 { &hf_display_numeric_width,
3544 {"Phone Numeric Width","unistim.numeric.width",FT_UINT8,
3545 BASE_DEC,NULL,DISPLAY_NUMERIC_WIDTH,NULL,HFILL}
3547 { &hf_display_time_width,
3548 {"Phone Time Width","unistim.time.width",FT_UINT8,
3549 BASE_DEC,NULL,DISPLAY_TIME_WIDTH,NULL,HFILL}
3551 { &hf_display_date_width,
3552 {"Phone Date Width","unistim.date.width",FT_UINT8,
3553 BASE_DEC,NULL,DISPLAY_DATE_WIDTH,NULL,HFILL}
3555 { &hf_display_char_dload,
3556 {"Number of Downloadable Chars","unistim.number.dload.chars",FT_UINT8,
3557 BASE_DEC,NULL,DISPLAY_CHAR_DLOAD,NULL,HFILL}
3559 { &hf_display_freeform_icon_dload,
3560 {"Number of Freeform Icon Downloads","unistim.number.dload.icons",FT_UINT8,
3561 BASE_DEC,NULL,DISPLAY_FFORM_ICON_DLOAD,NULL,HFILL}
3563 { &hf_display_icon_type,
3564 {"Icon Types","unistim.icon.types",FT_UINT8,
3565 BASE_HEX,NULL,DISPLAY_ICON_TYPE,NULL,HFILL}
3567 { &hf_display_charsets,
3568 {"Character Sets","unistim.phone.charsets",FT_UINT8,
3569 BASE_HEX,NULL,DISPLAY_CHARSET,NULL,HFILL}
3571 { &hf_display_contrast,
3572 {"Phone Contrast Level","unistim.phone.contrast.level",FT_UINT8,
3573 BASE_DEC,NULL,0x00,NULL,HFILL}
3575 { &hf_display_cursor_numeric,
3576 {"Numeric Index Field","unistim.field.numeric",FT_BOOLEAN,
3577 8,NULL,DISPLAY_CURSOR_NUMERIC,NULL,HFILL}
3579 { &hf_display_cursor_context,
3580 {"Context Field","unistim.field.context",FT_BOOLEAN,
3581 8,NULL,DISPLAY_CURSOR_CONTEXT,NULL,HFILL}
3583 { &hf_display_cursor_line,
3584 {"Text Line","unistim.field.text.line",FT_BOOLEAN,
3585 8,NULL,DISPLAY_CURSOR_LINE,NULL,HFILL}
3587 { &hf_display_cursor_softkey,
3588 {"Softkey Position","unistim.position.skey",FT_BOOLEAN,
3589 8,NULL,DISPLAY_CURSOR_SKEY,NULL,HFILL}
3591 { &hf_display_cursor_softkey_id,
3592 {"Soft Key Id","unistim.cursor.skey.id",FT_UINT8,
3593 BASE_DEC,NULL,DISPLAY_CURSOR_SKEY_ID,NULL,HFILL}
3595 { &hf_display_cursor_char_pos,
3596 {"Character Position","unistim.phone.char.pos",FT_UINT8,
3597 BASE_DEC,NULL,DISPLAY_CURSOR_CHAR_POS,NULL,HFILL}
3599 { &hf_display_cursor_line_number,
3600 {"Display Line Number","unistim.display.line.number",FT_UINT8,
3601 BASE_DEC,NULL,DISPLAY_CURSOR_LINE_NUM,NULL,HFILL}
3603 { &hf_display_hlight_start,
3604 {"Display Highlight Start Position","unistim.hilite.start.pos",FT_UINT8,
3605 BASE_DEC,NULL,0x00,NULL,HFILL}
3607 { &hf_display_hlight_end,
3608 {"Display Highlight End Position","unistim.hilite.end.pos",FT_UINT8,
3609 BASE_DEC,NULL,0x00,NULL,HFILL}
3611 { &hf_display_date_format,
3612 {"Date Format","unistim.display.date.format",FT_UINT8,
3613 BASE_HEX,VALS(date_formats),DISPLAY_DATE_FORMAT,NULL,HFILL}
3615 { &hf_display_time_format,
3616 {"Time Format","unistim.display.time.format",FT_UINT8,
3617 BASE_HEX,VALS(time_formats),DISPLAY_TIME_FORMAT,NULL,HFILL}
3619 { &hf_display_use_time_format,
3620 {"Use Time Format","unistim.display.use.time.format",FT_BOOLEAN,
3621 8,NULL,DISPLAY_USE_TIME_FORMAT,NULL,HFILL}
3623 { &hf_display_use_date_format,
3624 {"Use Date Format","unistim.display.use.date.format",FT_BOOLEAN,
3625 8,NULL,DISPLAY_USE_DATE_FORMAT,NULL,HFILL}
3627 { &hf_display_context_format,
3628 {"Context Info Bar Format","unistim.display.context.format",FT_UINT8,
3629 BASE_HEX,VALS(display_formats),DISPLAY_CTX_FORMAT,NULL,HFILL}
3631 { &hf_display_context_field,
3632 {"Context Info Bar Field","unistim.display.context.field",FT_UINT8,
3633 BASE_HEX,VALS(display_format_fields),DISPLAY_CTX_FIELD,NULL,HFILL}
3635 { &hf_display_char_address,
3636 {"Display Character Address","unistim.display.char.address",FT_UINT8,
3637 BASE_HEX,NULL,0x00,NULL,HFILL}
3639 { &hf_display_layer_number,
3640 {"Softkey Layer Number","unistim.softkey.layer.num",FT_UINT8,
3641 BASE_HEX,NULL,0x00,NULL,HFILL}
3643 { &hf_display_layer_skey_id,
3644 {"Softkey ID","unistim.layer.softkey.id",FT_UINT8,
3645 BASE_DEC,NULL,DISPLAY_LAYER_SKEY_ID,NULL,HFILL}
3647 { &hf_display_layer_all_skeys,
3648 {"All Softkeys","unistim.layer.all.skeys",FT_BOOLEAN,
3649 8,NULL,DISPLAY_LAYER_ALL_SKEYS,NULL,HFILL}
3651 { &hf_display_once_or_cyclic,
3652 {"Layer Softkey Once/Cyclic","unistim.layer.once.cyclic",FT_BOOLEAN,
3653 8,TFS(&once_or_cyclic),DISPLAY_ONE_OR_CYCLIC,NULL,HFILL}
3655 { &hf_display_layer_duration,
3656 {"Display Duration (20ms steps)","unistim.layer.display.duration",FT_UINT8,
3657 BASE_DEC,NULL,0x00,NULL,HFILL}
3659 { &hf_key_programmable_keys,
3660 {"Number of Programmable Keys","unistim.num.prog.keys",FT_UINT8,
3661 BASE_DEC,NULL,KEY_NUM_PROG_KEYS,NULL,HFILL}
3663 { &hf_keys_soft_keys,
3664 {"Number of Soft Keys","unistim.num.soft.keys",FT_UINT8,
3665 BASE_DEC,NULL,KEY_NUM_SOFT_KEYS,NULL,HFILL}
3668 {"Headset Key Exists","unistim.exist.hd.key",FT_BOOLEAN,
3669 8,NULL,KEY_HD_KEY_EXISTS,NULL,HFILL}
3671 { &hf_keys_mute_key,
3672 {"Mute Key Exists","unistim.exist.mute.key",FT_BOOLEAN,
3673 8,NULL,KEY_MUTE_KEY_EXISTS,NULL,HFILL}
3675 { &hf_keys_quit_key,
3676 {"Quit Key Exists","unistim.exist.quit.key",FT_BOOLEAN,
3677 8,NULL,KEY_QUIT_KEY_EXISTS,NULL,HFILL}
3679 { &hf_keys_copy_key,
3680 {"Copy Key Exists","unistim.exist.copy.key",FT_BOOLEAN,
3681 8,NULL,KEY_COPY_KEY_EXISTS,NULL,HFILL}
3684 {"Message Waiting Indicator Exists","unistim.exist.mwi.key",FT_BOOLEAN,
3685 8,NULL,KEY_MWI_EXISTS,NULL,HFILL}
3687 { &hf_keys_num_nav_keys,
3688 {"Number of Navigation Keys","unistim.num.nav.keys",FT_UINT8,
3689 BASE_DEC,VALS(number_nav_keys),KEY_NUM_NAV_KEYS,NULL,HFILL}
3691 { &hf_keys_num_conspic_keys,
3692 {"Number Of Conspicuous Keys","unistim.num.conspic.keys",FT_UINT8,
3693 BASE_DEC,NULL,KEY_NUM_CONSPIC_KEYS,NULL,HFILL}
3695 { &hf_keys_send_key_rel,
3696 {"Send Key Release","unistim.key.send.release",FT_BOOLEAN,
3697 8,TFS(&key_release),KEY_SEND_KEY_RELEASE,NULL,HFILL}
3699 { &hf_keys_enable_vol,
3700 {"Enable Volume Control","unistim.key.enable.vol",FT_BOOLEAN,
3701 8,TFS(&enable_vol),KEY_ENABLE_VOL_KEY,NULL,HFILL}
3703 { &hf_keys_conspic_prog_key,
3704 {"Conspicuous and Programmable Keys Same","unistim.conspic.prog.keys",FT_BOOLEAN,
3705 8,TFS(&conspic_prog),KEY_CONSPIC_PROG_KEY0,NULL,HFILL}
3707 { &hf_keys_acd_super_control,
3708 {"ACD Supervisor Control","unistim.acd.super.control",FT_BOOLEAN,
3709 8,TFS(&acd_supervisor),KEY_ACD_SUP_CONTROL,NULL,HFILL}
3711 { &hf_keys_local_dial_feedback,
3712 {"Local Keypad Feedback","unistim.key.feedback",FT_UINT8,
3713 BASE_HEX,VALS(local_dialpad_feedback),KEY_LOCAL_DIAL_PAD_FEED,NULL,HFILL}
3715 { &hf_audio_source_descr,
3716 {"Source Description Item","unistim.source.desc.item",FT_UINT8,
3717 BASE_HEX,VALS(source_descriptions),AUDIO_SOURCE_DESCRIPTION,NULL,HFILL}
3719 { &hf_audio_sdes_rtcp_bucket,
3720 {"RTCP Bucket Id","unistim.sdes.rtcp.bucket",FT_UINT8,
3721 BASE_HEX,NULL,AUDIO_SDES_RTCP_BUCKET,NULL,HFILL}
3723 { &hf_audio_desired_jitter,
3724 {"Desired Jitter","unistim.audio.desired.jitter",FT_UINT8,
3725 BASE_DEC,NULL,0x00,NULL,HFILL}
3727 { &hf_audio_high_water_mark,
3728 {"Threshold of audio frames where jitter buffer removes frames","unistim.high.water.mark",FT_UINT8,
3729 BASE_DEC,NULL,0x00,NULL,HFILL}
3731 { &hf_audio_early_packet_resync_thresh,
3732 {"Threshold in x/8000 sec where packets are too early","unistim.early.packet.thresh",FT_UINT32,
3733 BASE_DEC,NULL,0x00,NULL,HFILL}
3735 { &hf_audio_late_packet_resync_thresh,
3736 {"Threshold in x/8000 sec where packets are too late","unistim.late.packet.thresh",FT_UINT32,
3737 BASE_DEC,NULL,0x00,NULL,HFILL}
3739 { &hf_audio_resolve_phone_port,
3740 {"Resolve Phone Port","unistim.resolve.phone.port",FT_UINT16,
3741 BASE_DEC,NULL,0x00,NULL,HFILL}
3743 { &hf_audio_far_end_echo_port,
3744 {"Resolve Far End Port","unistim.resolve.far.port",FT_UINT16,
3745 BASE_DEC,NULL,0x00,NULL,HFILL}
3747 { &hf_audio_far_end_ip_address,
3748 {"Resolve Far End IP","unistim.resolve.far.ip",FT_IPv4,
3749 BASE_NONE,NULL,0x00,NULL,HFILL}
3751 { &hf_audio_nat_port,
3752 {"NAT Port","unistim.audio.nat.port",FT_UINT16,
3753 BASE_DEC,NULL,0x00,NULL,HFILL}
3755 { &hf_audio_nat_ip_address,
3756 {"NAT IP Address","unistim.audio.nat.ip",FT_IPv4,
3757 BASE_NONE,NULL,0x00,NULL,HFILL}
3759 { &hf_audio_direction_code,
3760 {"Stream Direction Code","unistim.audio.direction.codes",FT_UINT8,
3761 BASE_HEX,VALS(direction_codes),AUDIO_DIRECTION_CODE,NULL,HFILL}
3763 { &hf_audio_hf_support,
3764 {"Handsfree supported","unistim.handsfree.support",FT_BOOLEAN,
3765 8,NULL,AUDIO_HF_SUPPORT,NULL,HFILL}
3767 { &hf_audio_opt_rpt_max,
3768 {"Max Volume","unistim.max.vol",FT_BOOLEAN,
3769 8,TFS(&opt_rpt_enable_max_tone_vol),AUDIO_ENABLED_MAX_TONE,NULL,HFILL}
3771 { &hf_audio_opt_rpt_adj_vol,
3772 {"Volume Adjustments","unistim.audio.volume.adj",FT_BOOLEAN,
3773 8,TFS(&opt_rpt_adjust_volume),AUDIO_ENABLED_ADJ_VOL,NULL,HFILL}
3775 { &hf_audio_opt_rpt_auto_adj_vol,
3776 {"Auto Adjust RX Volume","unistim.auto.adj.rx.vol",FT_BOOLEAN,
3777 8,TFS(&opt_rpt_automatic_adjustable_rx_volume_report),
3778 AUDIO_AUTO_ADJ_RX_REP,NULL,HFILL}
3780 { &hf_audio_opt_rpt_hs_on_air,
3781 {"HS On Air","unistim.audio.hs.on.air",FT_BOOLEAN,
3782 8,TFS(&opt_rpths_on_air_feature),AUDIO_HS_ON_AIR_FEATURE,NULL,HFILL}
3784 { &hf_audio_opt_rpt_hd_on_air,
3785 {"HD On Air","unistim.audio.hd.on.air",FT_BOOLEAN,
3786 8,TFS(&opt_rpt_hd_on_air_feature),AUDIO_HD_ON_AIR_FEATURE,NULL,HFILL}
3788 { &hf_audio_opt_rpt_noise_squelch,
3789 {"Automatic Squelch","unistim.auto.noise.squelch",FT_BOOLEAN,
3790 8,TFS(&opt_rpt_noise_sqlch_disable),AUDIO_NOISE_SQUELCH_DIS,NULL,HFILL}
3792 { &hf_audio_rx_vol_apb_rpt,
3793 {"APB Volume Report","unistim.apb.volume.rpt",FT_UINT8,
3794 BASE_HEX,VALS(volume_rpt_apbs),AUDIO_APB_VOL_RPT,NULL,HFILL}
3796 { &hf_audio_rx_vol_vol_up,
3797 {"Volume Up","unistim.audio.volume.up",FT_BOOLEAN,
3798 8,NULL,AUDIO_VOL_UP_RPT,NULL,HFILL}
3800 { &hf_audio_rx_vol_vol_floor,
3801 {"RX Volume at Floor","unistim.audio.rx.vol.floor",FT_BOOLEAN,
3802 8,NULL,AUDIO_VOL_FLR_RPT,NULL,HFILL}
3804 { &hf_audio_rx_vol_vol_ceiling,
3805 {"RX Volume at Ceiling","unistim.audio.rx.vol.ceiling",FT_BOOLEAN,
3806 8,NULL,AUDIO_VOL_CEIL_RPT,NULL,HFILL}
3808 { &hf_audio_current_adj_vol_id,
3809 {"Current APB Volume Report","unistim.current.volume.rpt",FT_UINT8,
3810 BASE_HEX,VALS(volume_rpt_apbs),AUDIO_APB_VOL_RPT,NULL,HFILL}
3812 { &hf_audio_current_rx_level,
3813 {"Current RX Volume Level","unistim.current.rx.vol.level",FT_UINT8,
3814 BASE_DEC,NULL,0x00,NULL,HFILL}
3816 { &hf_audio_current_rx_range,
3817 {"Current RX Volume Range","unistim.current.rx.vol.range",FT_UINT8,
3818 BASE_DEC,NULL,0x00,NULL,HFILL}
3820 { &hf_audio_cadence_select,
3821 {"Alerting Cadence Select","unistim.alert.cad.sel",FT_UINT8,
3822 BASE_HEX,NULL,AUDIO_ALERT_CADENCE_SEL,NULL,HFILL}
3824 { &hf_audio_warbler_select,
3825 {"Alerting Warbler Select","unistim.alert.warb.select",FT_UINT8,
3826 BASE_HEX,NULL,AUDIO_ALERT_WARBLER_SEL,NULL,HFILL}
3828 { &hf_audio_open_stream_rpt,
3829 {"Open Stream Report","unistim.open.audio.stream.rpt",FT_UINT8,
3830 BASE_HEX,VALS(stream_result),0x00,NULL,HFILL}
3832 { &hf_audio_sdes_rpt_source_desc,
3833 {"Report Source Description","unistim.rpt.src.desc",FT_UINT8,
3834 BASE_HEX,VALS(source_descipts),AUDIO_SDES_INFO_RPT_DESC,NULL,HFILL}
3836 { &hf_audio_sdes_rpt_buk_id,
3837 {"Report RTCP Bucket ID","unistim.rpt.rtcp.buk.id",FT_UINT8,
3838 BASE_HEX,NULL,AUDIO_SDES_INFO_RPT_BUK,NULL,HFILL}
3840 { &hf_audio_phone_port,
3841 {"Phone Listen Port","unistim.phone.listen.port",FT_UINT16,
3842 BASE_DEC,NULL,0x00,NULL,HFILL}
3844 { &hf_audio_phone_ip,
3845 {"Phone Listen Address","unistim.phone.listen.address",FT_IPv4,
3846 BASE_NONE,NULL,0x00,NULL,HFILL}
3848 { &hf_audio_phone_add_len,
3849 {"Phone Address Length","unistim.phone.address.len",FT_UINT8,
3850 BASE_DEC,NULL,0x00,NULL,HFILL}
3852 { &hf_audio_nat_listen_port,
3853 {"NAT Listen Port","unistim.nat.listen.port",FT_UINT16,
3854 BASE_DEC,NULL,0x00,NULL,HFILL}
3857 {"NAT Listen Address","unistim.nat.listen.address",FT_UINT8,
3858 BASE_DEC,NULL,0x00,NULL,HFILL}
3860 { &hf_audio_nat_add_len,
3861 {"NAT Address Length","unistim.nat.address.len",FT_UINT8,
3862 BASE_DEC,NULL,0x00,NULL,HFILL}
3864 { &hf_audio_stream_direction_code,
3865 {"Audio Stream Direction","unistim.audio.stream.direction",FT_UINT8,
3866 BASE_HEX,VALS(stream_direction_codes),AUDIO_STREAM_DIRECTION,NULL,HFILL}
3868 { &hf_audio_stream_state,
3869 {"Audio Stream State","unistim.audio.stream.state",FT_BOOLEAN,
3870 8,TFS(&stream_states),AUDIO_STREAM_STATE,NULL,HFILL}
3872 { &hf_audio_transducer_list_length,
3873 {"Transducer List Length","unistim.trans.list.len",FT_UINT8,
3874 BASE_DEC,NULL,0x00,NULL,HFILL}
3876 { &hf_net_file_xfer_mode,
3877 {"File Transfer Mode","unistim.net.file.xfer.mode",FT_UINT8,
3878 BASE_HEX,VALS(file_xfer_modes),NETWORK_FILE_XFER_MODE,NULL,HFILL}
3880 { &hf_net_force_download ,
3881 {"Force Download","unistim.net.force.download",FT_BOOLEAN,
3882 8,NULL,NETWORK_FORCE_DLOAD,NULL,HFILL}
3884 { &hf_net_use_file_server_port,
3885 {"Use Custom Server Port","unistim.net.use.server.port",FT_BOOLEAN,
3886 8,NULL,NETWORK_USE_FSERV_PORT,NULL,HFILL}
3888 { &hf_net_use_local_port,
3889 {"Use Custom Local Port","unistim.net.use.local.port",FT_BOOLEAN,
3890 8,NULL,NETWORK_USE_LOCAL_PORT,NULL,HFILL}
3892 { &hf_net_file_server_port,
3893 {"File Server Port","unistim.net.file.server.port",FT_UINT16,
3894 BASE_DEC,NULL,0x00,NULL,HFILL}
3896 { &hf_net_full_pathname,
3897 {"Full Pathname","unistim.net.full_pathname",FT_STRINGZ,
3898 BASE_NONE,NULL,0x00,NULL,HFILL}
3900 { &hf_net_file_identifier,
3901 {"File Identifier","unistim.net.file_identifier",FT_STRINGZ,
3902 BASE_NONE,NULL,0x00,NULL,HFILL}
3904 { &hf_net_local_port,
3905 {"Local XFer Port","unistim.net.local.xfer.port",FT_UINT16,
3906 BASE_DEC,NULL,0x00,NULL,HFILL}
3908 { &hf_net_file_server_address,
3909 {"File Server IP Address","unistim.net.file.server.address",FT_IPv4,
3910 BASE_NONE,NULL,0x00,NULL,HFILL}
3912 { &hf_keys_admin_command,
3913 {"Admin Command","unistim.key.icon.admin.cmd",FT_UINT8,
3914 BASE_HEX,VALS(admin_commands),KEY_ADMIN_CMD,NULL,HFILL}
3916 { &hf_keys_logical_icon_id,
3917 {"Logical Icon ID","unistim.keys.logical.icon.id",FT_UINT16,
3918 BASE_HEX,NULL,0x00,NULL,HFILL}
3920 { &hf_keys_repeat_timer_one,
3921 {"Key Repeat Timer 1 Value","unistim.keys.repeat.time.one",FT_UINT8,
3922 BASE_DEC,NULL,0x00,NULL,HFILL}
3924 { &hf_keys_repeat_timer_two,
3925 {"Key Repeat Timer 2 Value","unistim.keys.repeat.time.two",FT_UINT8,
3926 BASE_DEC,NULL,0x00,NULL,HFILL}
3929 {"Led ID","unistim.keys.led.id",FT_UINT8,
3930 BASE_HEX,VALS(keys_led_ids),0x00,NULL,HFILL}
3932 { &hf_keys_phone_icon_id,
3933 {"Phone Icon ID","unistim.keys.phone.icon.id",FT_UINT8,
3934 BASE_HEX,NULL,0x00,NULL,HFILL}
3936 { &hf_keys_cadence_on_time,
3937 {"Indicator Cadence On Time","unistim.keys.cadence.on.time",FT_UINT8,
3938 BASE_DEC,NULL,0x00,NULL,HFILL}
3940 { &hf_keys_cadence_off_time,
3941 {"Indicator Cadence Off Time","unistim.keys.cadence.off.time",FT_UINT8,
3942 BASE_DEC,NULL,0x00,NULL,HFILL}
3944 { &hf_keys_user_activity_timeout,
3945 {"User Activity Timeout Value","unistim.keys.user.timeout.value",FT_UINT8,
3946 BASE_DEC,NULL,0x00,NULL,HFILL}
3948 { &hf_display_call_timer_mode,
3949 {"Call Timer Mode","unistim.display.call.timer.mode",FT_BOOLEAN,
3950 8,TFS(&call_duration_timer_mode),DISPLAY_CALL_TIMER_MODE,NULL,HFILL}
3952 { &hf_display_call_timer_reset,
3953 {"Call Timer Reset","unistim.display.call.timer.reset",FT_BOOLEAN,
3954 8,TFS(&call_duration_timer_reset),DISPLAY_CALL_TIMER_RESET,NULL,HFILL}
3956 { &hf_display_call_timer_display,
3957 {"Call Timer Display","unistim.display.call.timer.display",FT_BOOLEAN,
3958 8,TFS(&call_duration_display_timer),DISPLAY_CALL_TIMER_DISPLAY,NULL,HFILL}
3960 { &hf_display_call_timer_delay,
3961 {"Call Timer Delay","unistim.display.call.timer.delay",FT_BOOLEAN,
3962 8,TFS(&call_duration_timer_delay),DISPLAY_CALL_TIMER_DELAY,NULL,HFILL}
3964 { &hf_display_call_timer_id,
3965 {"Call Timer ID","unistim.display.call.timer.id",FT_UINT8,
3966 BASE_DEC,NULL,DISPLAY_CALL_TIMER_ID,NULL,HFILL}
3968 { &hf_expansion_switch_cmd,
3969 {"Expansion CMD (switch)","unistim.expansion.switch",FT_UINT8,
3970 BASE_HEX,VALS(expansion_switch_msgs),0x0,NULL,HFILL}
3972 { &hf_expansion_phone_cmd,
3973 {"Expansion CMD (phone)","unistim.expansion.phone",FT_UINT8,
3974 BASE_HEX,VALS(expansion_phone_msgs),0x0,NULL,HFILL}
3976 { &hf_expansion_softlabel_number,
3977 {"Module Soft Label Number","unistim.expansion.label.number",FT_UINT8,
3978 BASE_DEC,NULL,0x00,NULL,HFILL}
3983 { &hf_generic_string,
3984 {"DATA","unistim.generic.data",FT_STRING,
3985 BASE_NONE,NULL,0x00,NULL,HFILL}
3988 {"DATA","unistim.generic.data",FT_BYTES,
3989 BASE_NONE,NULL,0x00,NULL,HFILL}
3993 /* Setup protocol subtree array */
3995 static gint *ett[] = {
3999 proto_unistim=proto_register_protocol("UNISTIM Protocol", "UNISTIM", "unistim");
4001 proto_register_subtree_array(ett,array_length(ett));
4002 proto_register_field_array(proto_unistim,hf,array_length(hf));
4004 unistim_tap = register_tap("unistim");
4006 unistim_module = prefs_register_protocol(proto_unistim, proto_reg_handoff_unistim);
4008 prefs_register_uint_preference(unistim_module, "udp.port", "UNISTIM UDP port",
4009 "UNISTIM port (default 5000)", 10, &global_unistim_port);
4013 proto_reg_handoff_unistim(void) {
4014 static gboolean initialized = FALSE;
4015 static dissector_handle_t unistim_handle;
4016 static guint unistim_port;
4019 unistim_handle=new_create_dissector_handle(dissect_unistim,proto_unistim);
4020 dissector_add_handle("udp.port", unistim_handle); /* for "decode as" */
4023 if (unistim_port != 0) {
4024 dissector_delete_uint("udp.port",unistim_port,unistim_handle);
4028 if (global_unistim_port != 0) {
4029 dissector_add_uint("udp.port",global_unistim_port,unistim_handle);
4031 unistim_port = global_unistim_port;