wireshark/epan/dissectors/packet-cdma2k.c

5503 lines
260 KiB
C

/*
* packet-cdma2k.c
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*
* Ref CDMA2K: 3GPP2 C.S0005-E v3.0
*/
#include "config.h"
#include <epan/packet.h>
#include <epan/expert.h>
void proto_reg_handoff_cdma2k(void);
void proto_register_cdma2k(void);
/* cdma2k Handle for the dissection */
static dissector_handle_t cdma2k_handle;
/* Function handlers for each message/information fields */
static void cdma2k_message_decode(proto_item *item,tvbuff_t *tvb, proto_tree *tree, guint *offset, proto_tree *mainTree, guint16 *noerror, packet_info *pinfo);
static void cdma2k_message_REGISTRATION(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset, guint16 oneXPrev);
static void cdma2k_message_ORDER_IND(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset);
static void cdma2k_message_DATA_BURST_IND(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset);
static void cdma2k_message_ORIGINATION(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset, guint16 authIncl, guint16 oneXPrev);
static void cdma2k_message_PAGE_RESPONSE(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset, guint16 authIncl, guint16 oneXPrev);
static void cdma2k_message_AUTH_CHALL_RSP(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset);
static void cdma2k_message_ORDER_CMD(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset);
static void cdma2k_message_DATA_BURST_CMD(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset);
static void cdma2k_message_AUTH_CHALL_REQ(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset);
static void cdma2k_message_GEN_PAGE_REQ(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset, guint16 l3PduLen);
static void cdma2k_message_ADDR_FIELDS(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint16 *l_offset, guint16 headerRecLen);
static void cdma2k_message_AUTH_FIELDS(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint16 *l_offset, guint16 headerRecLen);
static void cdma2k_message_IMSI_CLASS_SUBFIELDS(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint16 *l_offset);
static void cdma2k_message_ALERT_WITH_INFO(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset);
static void cdma2k_message_HANDOFF_DIR(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset, guint16 msgType);
static void cdma2k_message_ACTIVE_SET_RECORD_FIELDS(proto_item *item,tvbuff_t *tvb,proto_tree *subtree,guint16 *l_offset, guint16 chInd,guint16 schIncl);
/*Initialize all the header parameters that are to be displayed*/
static int proto_cdma2k = -1;
static int hf_cdma2k_msghdr = -1;
/* Tlac Parameters */
static int hf_cdma2k_tlac_Record = -1;
static int hf_cdma2k_tlac_Header = -1;
static int hf_cdma2k_tlac_Channel = -1;
static int hf_cdma2k_tlac_1x_Protocol_Revision = -1;
static int hf_cdma2k_tlac_msgType = -1;
static int hf_cdma2k_tlac_Header_Record = -1;
static int hf_cdma2k_tlac_Header_Records_Count = -1;
static int hf_cdma2k_tlac_Header_Record_Type = -1;
static int hf_cdma2k_tlac_Header_Record_Length = -1;
static int hf_cdma2k_tlac_Header_Record_Values = -1;
static int hf_cdma2k_tlac_Header_Record_Reserved = -1;
static int hf_cdma2k_tlac_Pdu = -1;
static int hf_cdma2k_tlac_Pdu_Length = -1;
/* Addressing Fileds */
static int hf_cdma2k_tlac_Header_Record_MsId_Type = -1;
static int hf_cdma2k_tlac_Header_Record_Ext_MsId_Type = -1;
static int hf_cdma2k_tlac_Header_Record_MsId_Length = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_M_S1 = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_M_S1_sec_3_dig = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_M_S1_thousand_dig = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_M_S1_last_3_dig = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_M_S2 = -1;
static int hf_cdma2k_tlac_Header_Record_Esn = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_Class = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_Class0_Type = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_Class1_Type = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_S2 = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_S1 = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_11_12 = -1;
static int hf_cdma2k_tlac_Header_Record_MCC = -1;
static int hf_cdma2k_tlac_Header_Record_Imsi_Addr_Num = -1;
static int hf_cdma2k_tlac_Header_Record_Ext_MsId_MeId = -1;
static int hf_cdma2k_tlac_Header_Record_Tmsi_Code_Addr = -1;
static int hf_cdma2k_tlac_Header_Record_Tmsi_Zone = -1;
/* Authentication Fields */
static int hf_cdma2k_tlac_Header_Record_Mac_Incl = -1;
static int hf_cdma2k_tlac_Header_Record_Auth_Incl = -1;
static int hf_cdma2k_tlac_Header_Record_Authr = -1;
static int hf_cdma2k_tlac_Header_Record_Randc = -1;
static int hf_cdma2k_tlac_Header_Record_Count = -1;
static int hf_cdma2k_tlac_Header_Record_Sdu_KeyId = -1;
static int hf_cdma2k_tlac_Header_Record_Sdu_Algo = -1;
static int hf_cdma2k_tlac_Header_Record_Sdu_Sseq = -1;
static int hf_cdma2k_tlac_Header_Record_Sdu_Sseqh = -1;
static int hf_cdma2k_tlac_Header_Record_Sdu_Sseq_Or_Sseqh = -1;
/* Msg Types */
static int hf_cdma2k_RegMsg = -1;
static int hf_cdma2k_OrderIndMsg = -1;
static int hf_cdma2k_DataBurstIndMsg = -1;
static int hf_cdma2k_OrigMsg = -1;
static int hf_cdma2k_PageRspMsg = -1;
static int hf_cdma2k_AuthChallRspMsg = -1;
static int hf_cdma2k_DataBurstCmdMsg = -1;
static int hf_cdma2k_AuthChallReqMsg = -1;
static int hf_cdma2k_GenPageReqMsg = -1;
static int hf_cdma2k_AlertWithInfoMsg = -1;
static int hf_cdma2k_UhdmMsg = -1;
static int hf_cdma2k_MeIdUhdmMsg = -1;
static int hf_cdma2k_ext_scm_ind = -1;
/* Registration Msg Parms */
static int hf_cdma2k_Reg_Type = -1;
static int hf_cdma2k_Slot_Cycle_Index = -1;
static int hf_cdma2k_Mob_P_Rev = -1;
static int hf_cdma2k_Ext_Scm = -1;
static int hf_cdma2k_Sloted_Mode = -1;
static int hf_cdma2k_Mob_Term = -1;
static int hf_cdma2k_Return_Cause = -1;
static int hf_cdma2k_Qpch_Supported = -1;
static int hf_cdma2k_Enhanced_Rc = -1;
static int hf_cdma2k_Uzid_Incl = -1;
static int hf_cdma2k_Uzid = -1;
static int hf_cdma2k_GeoLoc_Incl = -1;
static int hf_cdma2k_GeoLoc_Type = -1;
/* Order Ind Msg Parms */
static int hf_cdma2k_Order_Ind = -1;
static int hf_cdma2k_Randbs = -1;
static int hf_cdma2k_Rejected_Type = -1;
static int hf_cdma2k_Rejected_Order = -1;
static int hf_cdma2k_Rejected_Ordq = -1;
static int hf_cdma2k_Rejected_Parm_Id = -1;
static int hf_cdma2k_Rejected_Record = -1;
static int hf_cdma2k_Tag = -1;
static int hf_cdma2k_Rsc_Mode_Ind = -1;
static int hf_cdma2k_Rsci = -1;
static int hf_cdma2k_Rsc_End_Time_Unit = -1;
static int hf_cdma2k_Rsc_End_Time_Value = -1;
/* Order Cmd Msg Parms */
static int hf_cdma2k_Order_Cmd = -1;
static int hf_cdma2k_Authbs = -1;
static int hf_cdma2k_Roam_Ind = -1;
static int hf_cdma2k_C_Sig_Encrypt_Mode = -1;
static int hf_cdma2k_Enc_Key_Size = -1;
static int hf_cdma2k_Msg_Int_Info_Incl = -1;
static int hf_cdma2k_Change_Keys = -1;
static int hf_cdma2k_Use_Uak = -1;
static int hf_cdma2k_Retry_Type = -1;
static int hf_cdma2k_Retry_Delay = -1;
static int hf_cdma2k_Reject_Reason = -1;
static int hf_cdma2k_Rejected_Msg_Type = -1;
static int hf_cdma2k_Rejected_Msg_Seq = -1;
/* BCMC Order type */
static int hf_cdma2k_All_Bcmc_Flows_Ind = -1;
static int hf_cdma2k_Clear_All_Retry_Delay = -1;
static int hf_cdma2k_All_Bcmc_Reason = -1;
static int hf_cdma2k_All_Bcmc_Retry_Delay = -1;
static int hf_cdma2k_Num_Bcmc_Programs = -1;
static int hf_cdma2k_Bcmc_Program_Id_Len = -1;
static int hf_cdma2k_Bcmc_Program_Id = -1;
static int hf_cdma2k_Bcmc_Flow_Discriminator_Len = -1;
static int hf_cdma2k_Num_Flow_Discriminator = -1;
static int hf_cdma2k_Bcmc_Flow_Discriminator = -1;
static int hf_cdma2k_Same_As_Previous_Bcmc_Flow = -1;
static int hf_cdma2k_Bcmc_Reason = -1;
static int hf_cdma2k_Bcmc_Retry_Delay = -1;
static int hf_cdma2k_Rsc_Mode_Supported = -1;
static int hf_cdma2k_Max_Rsc_End_Time_Unit = -1;
static int hf_cdma2k_Max_Rsc_End_Time_Value = -1;
static int hf_cdma2k_Req_Rsci = -1;
static int hf_cdma2k_Ignore_Qpch = -1;
static int hf_cdma2k_Rer_Mode_Incl = -1;
static int hf_cdma2k_Rer_Mode_Enabled = -1;
static int hf_cdma2k_Rer_Max_Num_Msg_Idx = -1;
static int hf_cdma2k_Rer_Time = -1;
static int hf_cdma2k_Rer_Time_Unit = -1;
static int hf_cdma2k_Max_Rer_Pilot_List_Size = -1;
static int hf_cdma2k_Tkz_Mode_Incl = -1;
static int hf_cdma2k_Tkz_Mode_Enabled = -1;
static int hf_cdma2k_Tkz_Max_Num_Msg_Idx = -1;
static int hf_cdma2k_Tkz_Update_Prd = -1;
static int hf_cdma2k_Tkz_List_Len = -1;
static int hf_cdma2k_Tkz_Timer = -1;
/* Service Status Order */
static int hf_cdma2k_Sr_Id_Bitmap = -1;
static int hf_cdma2k_Service_Status = -1;
/* Location Service Order */
static int hf_cdma2k_Regulatory_Ind_Incl = -1;
static int hf_cdma2k_Regulatory_Ind = -1;
/* Order Msg Parms */
static int hf_cdma2k_Add_Record_Len = -1;
static int hf_cdma2k_Order_Specific_Fields = -1;
static int hf_cdma2k_Ordq = -1;
static int hf_cdma2k_Con_Ref = -1;
/* Data Burst Msg Parms */
static int hf_cdma2k_Msg_Number = -1;
static int hf_cdma2k_Burst_Type = -1;
static int hf_cdma2k_Num_Msgs = -1;
static int hf_cdma2k_Num_Fields = -1;
static int hf_cdma2k_Chari_Data = -1;
static int hf_cdma2k_Msg_Identifier = -1;
static int hf_cdma2k_Parm_Id = -1;
static int hf_cdma2k_Parm_Length = -1;
static int hf_cdma2k_Parm_Value = -1;
/* Origination and Page Response Msg Parms */
static int hf_cdma2k_Request_Mode = -1;
static int hf_cdma2k_Special_Service = -1;
static int hf_cdma2k_pm = -1;
static int hf_cdma2k_digit_mode = -1;
static int hf_cdma2k_More_Fields = -1;
static int hf_cdma2k_Nar_An_Cap = -1;
static int hf_cdma2k_Paca_Reorig = -1;
static int hf_cdma2k_More_Records = -1;
static int hf_cdma2k_encryption_supported = -1;
static int hf_cdma2k_Paca_Supported = -1;
static int hf_cdma2k_num_alt_so = -1;
static int hf_cdma2k_DRS = -1;
static int hf_cdma2k_SR_ID = -1;
static int hf_cdma2k_Otd_Supported = -1;
static int hf_cdma2k_For_Rc_Pref = -1;
static int hf_cdma2k_Rev_Rc_Pref = -1;
static int hf_cdma2k_Fch_Supported = -1;
static int hf_cdma2k_Fch_capability_type_specific_Fields = -1;
static int hf_cdma2k_Fch_Frame_Size = -1;
static int hf_cdma2k_For_Fch_Len = -1;
static int hf_cdma2k_For_Fch_Rc_Map = -1;
static int hf_cdma2k_Rev_Fch_Len = -1;
static int hf_cdma2k_Rev_Fch_Rc_Map = -1;
static int hf_cdma2k_Dcch_capability_type_specific_Fields = -1;
static int hf_cdma2k_Dcch_Frame_Size = -1;
static int hf_cdma2k_For_Dcch_Len = -1;
static int hf_cdma2k_For_Dcch_Rc_Map = -1;
static int hf_cdma2k_Rev_Dcch_Len = -1;
static int hf_cdma2k_Rev_Dcch_Rc_Map = -1;
static int hf_cdma2k_Rev_Fch_Gating_Req = -1;
static int hf_cdma2k_Orig_Reason = -1;
static int hf_cdma2k_Orig_Count = -1;
static int hf_cdma2k_Sts_Supported = -1;
static int hf_cdma2k_ThreeXCchSupported = -1;
static int hf_cdma2k_Wll_Incl = -1;
static int hf_cdma2k_Wll_Device_Type = -1;
static int hf_cdma2k_Global_Emergency_Call = -1;
static int hf_cdma2k_Ms_Init_Pos_Loc_Ind = -1;
static int hf_cdma2k_Qos_Parms_Incl = -1;
static int hf_cdma2k_Qos_Parms_Length = -1;
static int hf_cdma2k_Qos_Parms = -1;
static int hf_cdma2k_Enc_Info_Incl = -1;
static int hf_cdma2k_Sig_Encrypt_Supp = -1;
static int hf_cdma2k_DSig_Encrypt_Req = -1;
static int hf_cdma2k_CSig_Encrypt_Req = -1;
static int hf_cdma2k_New_Sseq_H = -1;
static int hf_cdma2k_New_Sseq_H_Sig = -1;
static int hf_cdma2k_Ui_Encrypt_Req = -1;
static int hf_cdma2k_Prev_Sid_Incl = -1;
static int hf_cdma2k_Prev_Sid = -1;
static int hf_cdma2k_Prev_Nid_Incl = -1;
static int hf_cdma2k_Prev_Nid = -1;
static int hf_cdma2k_Prev_Pzid_Incl = -1;
static int hf_cdma2k_Prev_Pzid = -1;
static int hf_cdma2k_So_Bitmap_Ind = -1;
static int hf_cdma2k_So_Group_Num = -1;
static int hf_cdma2k_So_Bitmap = -1;
static int hf_cdma2k_Alt_So = -1;
static int hf_cdma2k_Dcch_Supported = -1;
static int hf_cdma2k_Hook_Status = -1;
/* Auth Chall Rsp Msg Parms */
static int hf_cdma2k_Authu = -1;
/* Auth Chall Req Msg Parms */
static int hf_cdma2k_Randu = -1;
static int hf_cdma2k_Gen_Cmea_Key = -1;
/* Gen Page Req Msg Parms */
static int hf_cdma2k_service_option = -1;
/* Handoff Dir Msg Parms */
static int hf_cdma2k_Use_Time = -1;
static int hf_cdma2k_Action_Time = -1;
static int hf_cdma2k_Hdm_Seq = -1;
static int hf_cdma2k_Parms_Incl = -1;
static int hf_cdma2k_P_Rev = -1;
static int hf_cdma2k_Serv_Neg_Type = -1;
static int hf_cdma2k_Search_Incl = -1;
static int hf_cdma2k_Pilot_Search = -1;
static int hf_cdma2k_Srch_Win_A = -1;
static int hf_cdma2k_Srch_Win_N = -1;
static int hf_cdma2k_Srch_Win_R = -1;
static int hf_cdma2k_T_Add = -1;
static int hf_cdma2k_T_Drop = -1;
static int hf_cdma2k_T_Comp = -1;
static int hf_cdma2k_T_Tdrop = -1;
static int hf_cdma2k_Soft_Slope = -1;
static int hf_cdma2k_Add_Intercept = -1;
static int hf_cdma2k_Drop_Intercept = -1;
static int hf_cdma2k_Extra_Parms_Incl = -1;
static int hf_cdma2k_Extra_Parms = -1;
static int hf_cdma2k_Packet_Zone_Id = -1;
static int hf_cdma2k_Frame_Offset = -1;
static int hf_cdma2k_Private_Lcm = -1;
static int hf_cdma2k_Reset_L2 = -1;
static int hf_cdma2k_Reset_Fpc = -1;
static int hf_cdma2k_Encrypt_Mode = -1;
static int hf_cdma2k_Nom_Pwr_Ext = -1;
static int hf_cdma2k_Nom_Pwr = -1;
static int hf_cdma2k_Rlgain_Traffic_Pilot = -1;
static int hf_cdma2k_Default_Rlag = -1;
static int hf_cdma2k_Num_Preamble = -1;
static int hf_cdma2k_Band_Class = -1;
static int hf_cdma2k_Cdma_Freq = -1;
static int hf_cdma2k_Return_If_Handoff_Fail = -1;
static int hf_cdma2k_Complete_Search = -1;
static int hf_cdma2k_Periodic_Search = -1;
static int hf_cdma2k_Scr_Incl = -1;
static int hf_cdma2k_Scr = -1;
static int hf_cdma2k_Serv_Con_Seq = -1;
static int hf_cdma2k_Record_Type = -1;
static int hf_cdma2k_Record_Len = -1;
static int hf_cdma2k_Type_Specific_Fields = -1;
static int hf_cdma2k_Nnscr_Incl = -1;
static int hf_cdma2k_Nnscr = -1;
static int hf_cdma2k_Use_Pwr_Cntl_Step = -1;
static int hf_cdma2k_Pwr_Cntl_Step = -1;
static int hf_cdma2k_Clear_Retry_Delay = -1;
static int hf_cdma2k_Sch_Incl = -1;
static int hf_cdma2k_Sch = -1;
static int hf_cdma2k_Num_For_Assign = -1;
static int hf_cdma2k_Record_For_Assign = -1;
static int hf_cdma2k_Sch_Id = -1;
static int hf_cdma2k_Sch_Duration = -1;
static int hf_cdma2k_Sch_Start_Time_Incl = -1;
static int hf_cdma2k_Sch_Start_Time = -1;
static int hf_cdma2k_Sccl_Index = -1;
static int hf_cdma2k_Num_Rev_Assign = -1;
static int hf_cdma2k_Record_Rev_Assign = -1;
static int hf_cdma2k_Sch_Num_Bits_Idx = -1;
static int hf_cdma2k_Fpc_Subchain_Gain = -1;
static int hf_cdma2k_Use_Pc_Time = -1;
static int hf_cdma2k_Pc_Action_Time = -1;
static int hf_cdma2k_Ch_Ind = -1;
static int hf_cdma2k_Active_Set_Rec_Len = -1;
static int hf_cdma2k_Active_Set_Rec_Fields = -1;
static int hf_cdma2k_Rev_Fch_Gating_Mode = -1;
static int hf_cdma2k_Rev_Pwr_Cntl_Delay_Incl = -1;
static int hf_cdma2k_Rev_Pwr_Cntl_Delay = -1;
static int hf_cdma2k_D_Sig_Encrypt_Mode = -1;
static int hf_cdma2k_3xfl_1xrl_Incl = -1;
static int hf_cdma2k_1xrl_Freq_Offset = -1;
static int hf_cdma2k_Sync_Id_Incl = -1;
static int hf_cdma2k_Sync_Id_Len = -1;
static int hf_cdma2k_Sync_Id = -1;
static int hf_cdma2k_Cc_Info_Incl = -1;
static int hf_cdma2k_Num_Calls_Assign = -1;
static int hf_cdma2k_Record_Calls_Assign = -1;
static int hf_cdma2k_Response_Ind = -1;
static int hf_cdma2k_Bypass_Alert_Answer = -1;
static int hf_cdma2k_Cs_Supported = -1;
static int hf_cdma2k_Chm_Supported = -1;
static int hf_cdma2k_Cdma_Off_Time_Rep_Sup_Ind = -1;
static int hf_cdma2k_Cdma_Off_Time_Rep_Threshold_Unit = -1;
static int hf_cdma2k_Cdma_Off_Time_Rep_Threshold = -1;
static int hf_cdma2k_Release_To_Idle_Ind = -1;
static int hf_cdma2k_Msg_Integrity_Sup = -1;
static int hf_cdma2k_Gen_2g_Key = -1;
static int hf_cdma2k_Register_In_Idle = -1;
static int hf_cdma2k_Plcm_Type_Incl = -1;
static int hf_cdma2k_Plcm_Type = -1;
static int hf_cdma2k_Plcm_39 = -1;
static int hf_cdma2k_T_Tdrop_Range_Incl = -1;
static int hf_cdma2k_T_Tdrop_Range = -1;
static int hf_cdma2k_For_Pdch_Supported = -1;
static int hf_cdma2k_Pdch_Chm_Supported = -1;
static int hf_cdma2k_Pilot_Info_Req_Supported = -1;
static int hf_cdma2k_Enc_Supported = -1;
static int hf_cdma2k_Sig_Encrypt_Sup = -1;
static int hf_cdma2k_Ui_Encrypt_Sup = -1;
static int hf_cdma2k_Use_Sync_Id = -1;
static int hf_cdma2k_Sid_Incl = -1;
static int hf_cdma2k_Sid = -1;
static int hf_cdma2k_Nid_Incl = -1;
static int hf_cdma2k_Nid = -1;
static int hf_cdma2k_Sdb_Supported = -1;
static int hf_cdma2k_Mob_Qos = -1;
static int hf_cdma2k_Ms_Init_Pos_Loc_Sup_Ind = -1;
static int hf_cdma2k_Rev_Pdch_Supported = -1;
static int hf_cdma2k_Pz_Hyst_Enabled = -1;
static int hf_cdma2k_Pz_Hyst_Info_Incl = -1;
static int hf_cdma2k_Pz_Hyst_List_Len = -1;
static int hf_cdma2k_Pz_Hyst_Act_Timer = -1;
static int hf_cdma2k_Pz_Hyst_Timer_Mul = -1;
static int hf_cdma2k_Pz_Hyst_Timer_Exp = -1;
static int hf_cdma2k_Bcmc_On_Traffic_Sup = -1;
static int hf_cdma2k_Auto_Re_Traffic_Allowed_Ind = -1;
static int hf_cdma2k_Sch_Bcmc_Ind = -1;
static int hf_cdma2k_Add_Plcm_For_Sch_Incl = -1;
static int hf_cdma2k_Add_Plcm_For_Sch_Type = -1;
static int hf_cdma2k_Add_Plcm_For_Sch_35 = -1;
static int hf_cdma2k_Record_Sch_Bcmc = -1;
static int hf_cdma2k_Use_Add_Plcm_For_Sch = -1;
static int hf_cdma2k_Fsch_Outercode_Incl = -1;
static int hf_cdma2k_Fsch_Outercode_Rate = -1;
static int hf_cdma2k_Fsch_Outercode_Offset = -1;
static int hf_cdma2k_Max_Add_Serv_Instance = -1;
static int hf_cdma2k_Use_Ch_Cfg_Rrm = -1;
static int hf_cdma2k_Tx_Pwr_Limit_Incl = -1;
static int hf_cdma2k_Tx_Pwr_Limit_Default = -1;
static int hf_cdma2k_Tx_Pwr_Limit = -1;
/* Active Set Record Fields of Handoff Direction Message*/
static int hf_cdma2k_Num_For_Sch = -1;
static int hf_cdma2k_Record_For_Sch = -1;
static int hf_cdma2k_Num_Rev_Sch = -1;
static int hf_cdma2k_Record_Rev_Sch = -1;
static int hf_cdma2k_Walsh_Id = -1;
static int hf_cdma2k_Num_Pilots = -1;
static int hf_cdma2k_Srch_Offset_Incl = -1;
static int hf_cdma2k_Record_Pilots = -1;
static int hf_cdma2k_Pilot_Pn = -1;
static int hf_cdma2k_Srch_Offset = -1;
static int hf_cdma2k_Add_Pilot_Rec_Incl = -1;
static int hf_cdma2k_Pilot_Rec_Type = -1;
static int hf_cdma2k_Pwr_Comb_Ind = -1;
static int hf_cdma2k_Code_Chan_Fch = -1;
static int hf_cdma2k_Qof_Mask_Id_Fch = -1;
static int hf_cdma2k_Num_Sch = -1;
static int hf_cdma2k_Record_Sch = -1;
static int hf_cdma2k_Pilot_Incl = -1;
static int hf_cdma2k_Code_Chan_Sch = -1;
static int hf_cdma2k_Qof_Mask_Id_Sch = -1;
static int hf_cdma2k_3xFch_Info_Incl = -1;
static int hf_cdma2k_3xFch_Low_Incl = -1;
static int hf_cdma2k_Qof_Mask_Id_Fch_Low = -1;
static int hf_cdma2k_Code_Chan_Fch_Low = -1;
static int hf_cdma2k_3xFch_High_Incl = -1;
static int hf_cdma2k_Qof_Mask_Id_Fch_High = -1;
static int hf_cdma2k_Code_Chan_Fch_High = -1;
static int hf_cdma2k_3xSch_Info_Incl = -1;
static int hf_cdma2k_3xSch_Low_Incl = -1;
static int hf_cdma2k_Qof_Mask_Id_Sch_Low = -1;
static int hf_cdma2k_Code_Chan_Sch_Low = -1;
static int hf_cdma2k_3xSch_High_Incl = -1;
static int hf_cdma2k_Qof_Mask_Id_Sch_High = -1;
static int hf_cdma2k_Code_Chan_Sch_High = -1;
static int hf_cdma2k_Ccsh_Included = -1;
static int hf_cdma2k_Use_Ccsh_Encoder_Time = -1;
static int hf_cdma2k_Ccsh_Encoder_Action_Time = -1;
static int hf_cdma2k_Ccsh_Encoder_Type = -1;
static int hf_cdma2k_Code_Chan_Dcch = -1;
static int hf_cdma2k_Qof_Mask_Id_Dcch = -1;
static int hf_cdma2k_3xDcch_Info_Incl = -1;
static int hf_cdma2k_3xDcch_Low_Incl = -1;
static int hf_cdma2k_Qof_Mask_Id_Dcch_Low = -1;
static int hf_cdma2k_Code_Chan_Dcch_Low = -1;
static int hf_cdma2k_3xDcch_High_Incl = -1;
static int hf_cdma2k_Qof_Mask_Id_Dcch_High = -1;
static int hf_cdma2k_Code_Chan_Dcch_High = -1;
static int hf_cdma2k_Fundicated_Bcmc_Ind = -1;
static int hf_cdma2k_For_Cpcch_Walsh = -1;
static int hf_cdma2k_For_Cpcsch = -1;
static int hf_cdma2k_Rev_Fch_Assigned = -1;
static int hf_cdma2k_Add_Plcm_For_Fch_Incl = -1;
static int hf_cdma2k_Add_Plcm_For_Fch_Type = -1;
static int hf_cdma2k_Add_Plcm_For_Fch_39 = -1;
static int hf_cdma2k_For_Cpcch_Info_Incl = -1;
/* Alert With Info Msg Parms */
static int hf_cdma2k_Info_Rec = -1;
static int hf_cdma2k_Chari = -1;
static int hf_cdma2k_Number_Type = -1;
static int hf_cdma2k_Number_Plan = -1;
static int hf_cdma2k_Pres_Indicator = -1;
static int hf_cdma2k_Scr_Indicator = -1;
static int hf_cdma2k_Signal_Type = -1;
static int hf_cdma2k_Alert_Pitch = -1;
static int hf_cdma2k_Signal = -1;
static int hf_cdma2k_Msg_Count = -1;
static int hf_cdma2k_Extension_Bit = -1;
static int hf_cdma2k_Subaddress_Type = -1;
static int hf_cdma2k_Odd_Even_Ind = -1;
static int hf_cdma2k_Redirection_Reason = -1;
static int hf_cdma2k_Pulse_Freq = -1;
static int hf_cdma2k_Pulse_On_Time = -1;
static int hf_cdma2k_Pulse_Off_Time = -1;
static int hf_cdma2k_Pulse_Count = -1;
static int hf_cdma2k_Cadence_Count = -1;
static int hf_cdma2k_Num_Grps = -1;
static int hf_cdma2k_Amplitude = -1;
static int hf_cdma2k_Freq = -1;
static int hf_cdma2k_On_Time = -1;
static int hf_cdma2k_Off_Time = -1;
static int hf_cdma2k_Repeat = -1;
static int hf_cdma2k_Delay = -1;
static int hf_cdma2k_Cadence_Type = -1;
static int hf_cdma2k_Polarity_Incl = -1;
static int hf_cdma2k_Toggle_Mode = -1;
static int hf_cdma2k_Reverse_Polarity = -1;
static int hf_cdma2k_Pwr_Denial_Time = -1;
static int hf_cdma2k_Call_Waiting_Ind = -1;
static int hf_cdma2k_Reserved = -1;
static int hf_cdma2k_Cmea = -1;
static int hf_cdma2k_Ecmea = -1;
static int hf_cdma2k_Rea = -1;
static int hf_cdma2k_scm_dual_mode = -1;
static int hf_cdma2k_scm_slotted_class = -1;
static int hf_cdma2k_scm_meid_sup = -1;
static int hf_cdma2k_scm_25mhz_bw = -1;
static int hf_cdma2k_scm_trans = -1;
static int hf_cdma2k_scm_pow_class = -1;
static expert_field ei_cdma2k_error = EI_INIT;
/* Toggle sub-tree items */
static gint ett_cdma2k_msghdr = -1;
static gint ett_cdma2k_subtree = -1;
static gint ett_cdma2k_subtree1 = -1;
static gint ett_cdma2k_subtree2 = -1;
static guint ett_cdma2k_m_s1 = -1;
static guint ett_cdma2000_scm = -1;
#define CDMA2KRegIndMsg 0x01
#define CDMA2KOrderIndMsg 0x02
#define CDMA2KDataBurstIndMsg 0x03
#define CDMA2KOrigIndMsg 0x04
#define CDMA2KPageResponseMsg 0x05
#define CDMA2KAuthChallRspMsg 0x06
#define CDMA2KOrderCmdMsg 0x07
#define CDMA2KDataBurstCmdMsg 0x09
#define CDMA2KAuthChallReqMsg 0x0A
#define CDMA2KGenPageReqMsg 0x11
#define CDMA2KAlertWithInfoMsg 0x03
#define CDMA2KUniversalHandoffDirectionMsg 0x22
#define CDMA2KMeIdUniversalHandoffDirectionMsg 0x35
/* CDMA2K Msg Types */
static const value_string Cdma2k_Message_types[] = {
{ 0x01, "CDMA2KRegIndMsg" },
{ 0x02, "CDMA2KOrderIndMsg"},
{ 0x03, "CDMA2KDataBurstIndMsg"},
{ 0x04, "CDMA2KOrigIndMsg"},
{ 0x05, "CDMA2KPageResponseMsg"},
{ 0x06, "CDMA2KAuthChallRspMsg"},
{ 0x07, "CDMA2KOrderCmdMsg"},
{ 0x09, "CDMA2KDataBurstCmdMsg"},
{ 0x0A, "CDMA2KAuthChallReqMsg"},
{ 0x11, "CDMA2KGenPageReqMsg"},
{ 0, NULL },
};
#if 0
Currently not used ??
/* CDMA2K Msg Types specific to dedicated channel*/
static const value_string Cdma2k_Dcsh_Message_types[] = {
{ 0x03, "CDMA2KAlertWithInfoMsg" },
{ 0x22, "CDMA2KUniversalHandoffDirectionMsg"},
{ 0x35, "CDMA2KMeIdUniversalHandoffDirectionMsg"},
{ 0, NULL },
};
#endif
/* TLAC Channel Types */
static const value_string Channel_Types[] = {
{ 0, "CSCH_LOGICAL_CHANNEL" },
{ 1, "DSCH_LOGICAL_CHANNEL" },
{ 0, NULL },
};
/* TLAC Header Record Types */
static const value_string Header_Record_Types[] = {
{ 0, "ADDRESSING_SUBLAYER_RECORD_TYPE" },
{ 1, "AUTH_INTEGRITY_SUBLAYER_RECORD_TYPE" },
{ 0, NULL },
};
/* MsId Types */
static const value_string MsId_Address_Types[] = {
{ 0, "IMSI_S_ESN_MSID" },
{ 1, "ESN_MSID" },
{ 2, "IMSI_MSID" },
{ 3, "IMSI_ESN_MSID" },
{ 4, "EXTENDED_MSID" },
{ 5, "TMSI_MSID" },
{ 6, "MAX_MSID_ADD" },
{ 0, NULL },
};
/* Extended MsId Types */
static const value_string Ext_MsId_Address_Types[] = {
{ 0, "EXTENDED_MSID_MEID" },
{ 1, "EXTENDED_MSID_IMSI_MEID" },
{ 2, "EXTENDED_MSID_IMSI_ESN_MEID" },
{ 3, "MAX_EXTENDED_MSID_ADDRESS_TYPE" },
{ 0, NULL },
};
/* Imsi Class */
static const value_string Imsi_Class[] = {
{ 0, "IMSI_CLASS_0_TYPE" },
{ 1, "IMSI_CLASS_1_TYPE" },
{ 0, NULL },
};
/* Imsi Class0 Types */
static const value_string Imsi_Class0_Types[] = {
{ 0, "IMSI_CLASS_0_IMSI_S" },
{ 1, "IMSI_CLASS_0_IMSI_S_IMSI_11_12" },
{ 2, "IMSI_CLASS_0_IMSI_S_MCC" },
{ 3, "IMSI_CLASS_0_IMSI_S_IMSI_11_12_MCC" },
{ 0, NULL },
};
/* Imsi Class1 Types */
static const value_string Imsi_Class1_Types[] = {
{ 0, "IMSI_CLASS_1_IMSI_S_IMSI_11_12" },
{ 1, "IMSI_CLASS_1_IMSI_S_IMSI_11_12_MCC" },
{ 0, NULL },
};
/* CDMA2K Reg Types */
static const value_string Reg_Types[] = {
{ 0, "TIMER_BASED" },
{ 1, "POWER_UP" },
{ 2, "ZONE_BASED" },
{ 3, "POWER_DOWN" },
{ 4, "PARAMETER_CHANGE" },
{ 5, "ORDERED" },
{ 6, "DISTANCE_BASED" },
{ 7, "USERZONE_BASED" },
{ 8, "ENCRYPTION_RESYNC_REQUIRED" },
{ 9, "BCMC_REGISTRATION" },
{ 0, NULL },
};
/* CDMA2K DB Chari Msg Identifier Types */
static const value_string Chari_Identifier_Types[] = {
{ 0, "SMDPP_637" },
{ 1, "SMDBRD_637" },
{ 2, "SMSACK_637" },
{ 0, NULL },
};
/* CDMA2K DB Chari Parameter Types */
static const value_string Chari_Parm_Types[] = {
{ 0, "TELE_SERVICE_637" },
{ 1, "BROADCAST_SERVICE_637" },
{ 2, "ORIGINATION_ADDRESS_637" },
{ 3, "ORIGINATION_SUBADDRESS_637" },
{ 4, "DESTINATION_ADDRESS_637" },
{ 5, "DESTINATION_SUBADDRESS_637" },
{ 6, "BEARER_REPLY_637" },
{ 7, "CAUSE_CODE_637" },
{ 8, "BEARER_DATA_637" },
{ 0, NULL },
};
/* CDMA2K Page Req Service Option Types */
static const value_string Page_Req_Service_Option_Types[] = {
{ 0x0000, "INVALID" },
{ 1, "Basic Variable Rate Voice Service (8 kbps)" },
{ 2, "Mobile Station Loopback (8 kbps)" },
{ 3, "Enhanced Variable Rate Voice Service (8 kbps)" },
{ 4, "Asynchronous Data Service (9.6 kbps)" },
{ 5, "Group 3 Facsimile (9.6 kbps)" },
{ 6, "Short Message Services (Rate Set 1)" },
{ 7, "Packet Data Service: Internet or ISO Protocol Stack (9.6 kbps)" },
{ 8, "Packet Data Service: CDPD Protocol Stack (9.6 kbps)" },
{ 9, "Mobile Station Loopback (13 kbps)" },
{10, "None STU-III Transparent Service" },
{11, "None STU-III Non-Transparent Service" },
{12, "Asynchronous Data Service (14.4 or 9.6 kbps)" },
{13, "Group 3 Facsimile (14.4 or 9.6 kbps)" },
{14, "Short Message Services (Rate Set 2)" },
{15, "Packet Data Service: Internet or ISO Protocol Stack (14.4 kbps)" },
{16, "Packet Data Service: CDPD Protocol Stack (14.4 kbps)" },
{17, "High Rate Voice Service (13 kbps)" },
{18, "Over-the-Air Parameter Administration (Rate Set 1)" },
{19, "Over-the-Air Parameter Administration (Rate Set 2)" },
{20, "Group 3 Analog Facsimile (Rate Set 1)" },
{21, "Group 3 Analog Facsimile (Rate Set 2) " },
{22, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS1 reverse)" },
{23, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS2 reverse)" },
// page 3-3 (19)
{24, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS1 reverse)" },
{25, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS2 reverse)" },
{26, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS1 reverse)" },
{27, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS2 reverse)" },
{28, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS1 reverse)" },
{29, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS2 reverse)" },
{30, "Supplemental Channel Loopback Test for Rate Set 1" },
{31, "Supplemental Channel Loopback Test for Rate Set 2" },
{32, "Test Data Service Option (TDSO)" },
{33, "cdma2000 High Speed Packet Data Service, Internet or ISO Protocol Stack" },
{34, "cdma2000 High Speed Packet Data Service, CDPD Protocol Stack" },
{35, "Location Services, Rate Set 1 (9.6 kbps)" },
{36, "Location Services, Rate Set 2 (14.4 kbps)" },
{37, "ISDN Interworking Service (64 kbps)" },
{38, "GSM Voice" },
{39, "GSM Circuit Data" },
{40, "GSM Packet Data" },
{41, "GSM Short Message Service" },
//42 - 53 None Reserved for MC-MAP standard service options
{54, "Markov Service Option (MSO)" },
{55, "Loopback Service Option (LSO)" },
{56, "Selectable Mode Vocoder" },
// page 3-4 (20)
{57, "32 kbps Circuit Video Conferencing" },
{58, "64 kbps Circuit Video Conferencing" },
{59, "HRPD Packet Data Service" },
{60, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Removal" },
{61, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Compression" },
{62, "Source-Controlled Variable-Rate Multimode Wideband Speech Codec (VMR-WB) Rate Set 2" },
{63, "Source-Controlled Variable-Rate Multimode Wideband Speech Codec (VMR-WB) Rate Set 1" },
{64, "HRPD auxiliary Packet Data Service instance" },
{65, "cdma2000/GPRS Inter-working" },
{66, "cdma2000 High Speed Packet Data Service,Internet or ISO Protocol Stack" },
{67, "HRPD Packet Data IP Service where Higher Layer Protocol is IP or ROHC" },
{68, "Enhanced Variable Rate Voice Service (EVRC-B)" },
{69, "HRPD Packet Data Service, which when used in paging over the 1x air interface, a page response is required" },
{70, "Enhanced Variable Rate Voice Service (EVRC-WB)" },
{71, "HRPD Packet Data Service for altPPP" },
{72, "HRPD auxiliary Packet Data IP Service with PDN multiplexing header" },
// page 3-5 (21)
{73, "Enhanced Variable Rate Voice Service (EVRC-NW:EVRC-WB with NB capacity operating points and DTX)" },
{74, "Flexible Markov Service Option" },
{75, "Enhanced Loopback Service Option" },
//76 - 4099 None Reserved for standard service options.
{4100, "Asynchronous Data Service, Revision 1 (9.6 or 14.4 kbps)" },
{4101, "Group 3 Facsimile, Revision 1 (9.6 or 14.4 kbps)" },
//4102 None Reserved for standard service options.
{4103, "Packet Data Service: Internet or ISO Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" },
{4104, "Packet Data Service: CDPD Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" },
// page 3-6 (22)
{32760, "Identifies service reference identifier 0" },
{32761, "Identifies service reference identifier 1" },
{32762, "Identifies service reference identifier 2" },
{32763, "Identifies service reference identifier 3" },
{32764, "Identifies service reference identifier 4" },
{32765, "Identifies service reference identifier 5" },
{32766, "Identifies service reference identifier 6" },
{32767, "Identifies service reference identifier 7" },
{ 0x8000, "QCOMM_13KVOICE" },
{ 0x8001, "QCOMM_IS96VOICE" },
{ 0x8003, "QCOMM_DATA_SERVICES" },
{ 0x8008, "QCOMM_TDSO" },
{ 0x801d, "QCOMM_OFF_HOOK" },
{ 0x801e, "QCOMM_96MARKOV" },
{ 0x801f, "QCOMM_144MARKOV" },
{ 0, NULL },
};
/* CDMA2K Order Ind Types */
static const value_string Order_Ind_Cause_Types[] = {
{ 2, "BASE_STATION_CHALLENGE" },
{ 3, "SSD_UPDATE" },
{ 5, "PARAMETER_UPDATE_CONFIRMATION" },
{ 11, "REQUEST_ANALOG_SERVICE" },
{ 16, "MOBILE_STATION_ACKNOWLEDGEMENT" },
{ 19, "SERVICE_OPTION_REQUEST" },
{ 20, "SERVICE_OPTION_RESPONSE" },
{ 21, "RELEASE" },
{ 23, "LONG_CODE_TRANSITION" },
{ 24, "CONNECT" },
{ 25, "CONTINUOUS_DTMF_TONE" },
{ 29, "SERVICE_OPTION_CONTROL" },
{ 30, "LOCAL_CONTROL_RESPONSE" },
{ 31, "MOBILE_STATION_REJECT" },
{ 33, "SECURITY_MODE_COMPLETION" },
{ 34, "FAST_CALL_SETUP" },
{ 0, NULL },
};
/* CDMA2K Order Cmd Types */
static const value_string Order_Cmd_Cause_Types[] = {
{ 1, "ABBREVIATED_ALERT" },
{ 2, "BASE_STATION_CHALLENGE" },
{ 3, "MESSAGE_ENCRYPTION_MODE" },
{ 4, "REORDER" },
{ 5, "PARAMETER_UPDATE" },
{ 6, "AUDIT" },
{ 9, "INTERCEPT" },
{ 10, "MAINTENANCE" },
{ 16, "BASE_STATION_ACKNOWLEDGEMENT" },
{ 17, "PILOT_MEASUREMENT_REQUEST" },
{ 18, "LOCK_OR_MAINTENANCE_REQUIRED" },
{ 19, "SERVICE_OPTION_REQUEST" },
{ 20, "SERVICE_OPTION_RESPONSE" },
{ 21, "RELEASE" },
{ 22, "OUTER_LOOP_REPORT_REQUEST" },
{ 23, "LONG_CODE_TRANSITION" },
{ 24, "CONNECT" },
{ 25, "CONTINUOUS_DTMF_TONE" },
{ 26, "STATUS_REQUEST" },
{ 27, "REGISTRATION" },
{ 29, "SERVICE_OPTION_CONTROL" },
{ 30, "LOCAL_CONTROL" },
{ 31, "SLOTTED_MODE" },
{ 32, "RETRY" },
{ 33, "BASE_STATION_REJECT" },
{ 34, "TRANSIT_TO_IDLE" },
{ 35, "BCMC" },
{ 36, "FAST_CALL_SETUP" },
{ 37, "SERVICE_STATUS" },
{ 38, "LOCATION_SERVICES" },
{ 0, NULL },
};
#if 0
Currently not used ???
/* CDMA2K Rejected PDU Type types for the Mobile Station Reject Order*/
static const value_string Rejected_Pdu_Types[] = {
{ 0, "20 ms Regular Message" },
{ 1, "5 ms Mini Message" },
{ 2, "Reserved" },
{ 3, "Reserved" },
{ 0, NULL },
};
#endif
/* CDMA2K RSCI types for the Release Order*/
static const value_string RSCI_Types[] = {
{ 7, "Non Slotted" },
{ 4, "0.08ms - 1 slot" },
{ 3, "0.16s - 2 slots" },
{ 2, "0.32s - 4 slots" },
{ 1, "0.64s - 8 slots" },
{ 0, "1.28s - 16 slots" },
{ 9, "2.56s - 32 slots" },
{ 10, "5.12s - 64 slots" },
{ 11, "10.24s - 128 slots" },
{ 12, "20.48s - 256 slots" },
{ 13, "40.96s - 512 slots" },
{ 14, "81.92s - 1024 slots" },
{ 0, NULL },
};
/* CDMA2K RSC_END_TIME_UNIT types for the Release Order*/
static const value_string Rsc_End_Time_Unit_Types[] = {
{ 0, "unit is 4 seconds" },
{ 1, "unit is 20 seconds" },
{ 2, "unit is 100 seconds" },
{ 3, "Reserved" },
{ 0, NULL },
};
/* CDMA2K Retry Type types for the Retry Order*/
static const value_string Retry_Types[] = {
{ 0, "Clear All" },
{ 1, "Origination" },
{ 2, "Resource Request" },
{ 3, "Supplemental Channel Req" },
{ 4, "Short Data Burst" },
{ 5, "Orig & Short Data Burst" },
{ 6, "Reserved" },
{ 7, "Reserved" },
{ 0, NULL },
};
/* CDMA2K Reject Reason types for the Base Station Reject Order*/
static const value_string Reject_Reason_Types[] = {
{ 0, "MACI Field is Missing" },
{ 1, "MACI Field is present but invalid" },
{ 2, "Security Sequence Number is Invalid" },
{ 3, "Base Station Failed to Decrypt the Encrypted Msg" },
{ 4, "Reserved" },
{ 5, "Reserved" },
{ 6, "Reserved" },
{ 7, "Reserved" },
{ 0, NULL },
};
/* CDMA2K C_SIG_ENCRYPT_MODE types for the Registration Accepted Order*/
static const value_string C_Sig_Encrypt_Mode_Types[] = {
{ 0, "Common Channel Signaling Encryption Disabled" },
{ 1, "Enhanced Cellular Msg Encryption Algo Enabled" },
{ 2, "Rijndael Encryption Algo Enabled" },
{ 3, "Reserved" },
{ 4, "Reserved" },
{ 5, "Reserved" },
{ 6, "Reserved" },
{ 7, "Reserved" },
{ 0, NULL },
};
/* CDMA2K All BCMC Reason types for the BCMC Order*/
static const value_string All_Bcmc_Reason_Types[] = {
{ 0, "BCMC_FLOW_ID not Available" },
{ 1, "BCMC_FLOW_ID not Transmitted" },
{ 2, "BCMC_FLOW_ID available in IDLE state" },
{ 3, "BCMC Registration Accepted" },
{ 4, "Authorization Failure" },
{ 5, "Retry Later" },
{ 6, "Reserved" },
{ 7, "Reserved" },
{ 0, NULL },
};
/* CDMA2K All BCMC Retry Delay types for the BCMC Order*/
static const value_string All_Bcmc_Retry_Delay_Types[] = {
{ 0, "Retry Delay Interval" },
{ 1, "Retry Delay Interval" },
{ 2, "Retry Delay Interval" },
{ 3, "Retry Delay Interval" },
{ 4, "Retry Delay Interval" },
{ 5, "Retry Delay Interval" },
{ 6, "Retry Delay Interval" },
{ 7, "Unit For Retry Delay" },
{ 0, NULL },
};
/* CDMA2K Max RSC End Time Unit types for the Fast Call Setup Order*/
static const value_string Max_rsc_End_Time_unit_Types[] = {
{ 0, "Unit is 4 seconds" },
{ 1, "Unit is 20 seconds" },
{ 2, "Unit is 100 seconds" },
{ 3, "Reserved" },
{ 0, NULL },
};
/* CDMA2K Service Status types for the Service Status Order*/
static const value_string Service_Status_Types[] = {
{ 0, "Service Request Accepted" },
{ 1, "Service Request Rejected" },
{ 0, NULL },
};
/* CDMA2K Message Encryption Modes */
static const value_string Encrypt_Mode_Types[] = {
{ 0, "Encryption Disabled" },
{ 1, "Basic Encryption Of Call Control Messages" },
{ 2, "Enhanced Encryption Of Call Control Messages" },
{ 3, "Extended Encryption Of Call Control Messages" },
{ 0, NULL },
};
/* CDMA2K Information Record Types */
static const value_string Info_Rec_Types[] = {
{ 1, "Display" },
{ 2, "Called Party Number" },
{ 3, "Calling Party Number" },
{ 4, "Connected Number" },
{ 5, "Signal" },
{ 6, "Message Waiting" },
{ 7, "Service Configuration" },
{ 8, "Called Party Subaddress" },
{ 9, "Calling Party Subaddress" },
{ 10, "Connected Subaddress" },
{ 11, "Redirecting Number" },
{ 12, "Redirecting Subaddress" },
{ 13, "Meter Pulses" },
{ 14, "Parametric Alerting" },
{ 15, "Line Control" },
{ 16, "Extended Display" },
{ 19, "Non Negotiable Service Configuration" },
{ 20, "Multiple Character Extended Display" },
{ 21, "Call Waiting Indicator" },
{ 22, "Extended Multiple Character Extended Display" },
{ 254, "Extended Record Type_International" },
{ 0, NULL },
};
/* CDMA2K Encryption Key Size */
static const value_string Enc_Key_Types[] = {
{ 0, "Reserved" },
{ 1, "64 Bits" },
{ 2, "128 Bits" },
{ 3, "Reserved" },
{ 4, "Reserved" },
{ 5, "Reserved" },
{ 6, "Reserved" },
{ 7, "Reserved" },
{ 0, NULL },
};
/* CDMA2K 1x Reverse Link Frequency Offset */
static const value_string rl_Freq_Offset_Types[] = {
{ 0, "Reverse Link On Lowest SR3 Frequency" },
{ 1, "Reverse Link On Center SR3 Frequency" },
{ 2, "Reverse Link On Highest SR3 Frequency" },
{ 3, "Reserved" },
{ 0, NULL },
};
/* CDMA2K Pilot Record Types */
static const value_string Pilot_Rec_Types[] = {
{ 0, "1x Common Pilot With Transmit Diversity" },
{ 1, "1x Auxiliary Pilot" },
{ 2, "1x Auxiliary Pilot With Transmit Diversity" },
{ 3, "3x Common Pilot" },
{ 4, "3x Auxiliary Pilot" },
{ 5, "Reserved" },
{ 6, "Reserved" },
{ 7, "Reserved" },
{ 0, NULL },
};
/* CDMA2K PLCM Types */
static const value_string Plcm_Types[] = {
{ 0, "ESN Derived" },
{ 1, "BS Assigned" },
{ 2, "IMSI_M Derived" },
{ 3, "IMSI_T Derived" },
{ 4, "MEID Derived" },
{ 0, NULL },
};
/* CDMA2K Number Types */
static const value_string Number_Types[] = {
{ 0, "Unknown" },
{ 1, "International Number" },
{ 2, "National Number" },
{ 3, "Network Specific Number" },
{ 4, "Subscriber Number" },
{ 5, "Reserved" },
{ 6, "Abbreviated Number" },
{ 7, "Reserved For Extension" },
{ 0, NULL },
};
/* CDMA2K Numbering Plan Types */
static const value_string Number_Plan_Types[] = {
{ 0, "Unknown" },
{ 1, "ISDN/Telephony Numbering Plan" },
{ 2, "Reserved" },
{ 3, "Data Numbering Plan" },
{ 4, "Telex Numbering Plan" },
{ 5, "Reserved" },
{ 6, "Reserved" },
{ 7, "Reserved" },
{ 8, "Reserved" },
{ 9, "Private Numbering Plan" },
{ 10, "Reserved" },
{ 11, "Reserved" },
{ 12, "Reserved" },
{ 13, "Reserved" },
{ 14, "Reserved" },
{ 15, "Reserved For Extension" },
{ 0, NULL },
};
/* CDMA2K Presentation Indicator Types */
static const value_string Pres_Ind_Types[] = {
{ 0, "Presentation Allowed" },
{ 1, "Presentation Restricted" },
{ 2, "Number Not Available" },
{ 3, "Reserved" },
{ 0, NULL },
};
/* CDMA2K Screening Indicator Types */
static const value_string Scr_Ind_Types[] = {
{ 0, "User Provided, Not Screened" },
{ 1, "User Provided, Verified And Passed" },
{ 2, "User Provided, Verified And Failed" },
{ 3, "Network Provided" },
{ 0, NULL },
};
/* CDMA2K Signal Types */
static const value_string Signal_Types[] = {
{ 0, "Tone Signal" },
{ 1, "ISDN Alerting" },
{ 2, "IS-54B Alerting" },
{ 3, "Reserved" },
{ 0, NULL },
};
/* CDMA2K Odd Even Indicator */
static const value_string Odd_Even_Ind_Types[] = {
{ 0, "Even Number Of Address Signals" },
{ 1, "Odd Number Of Address Signals" },
{ 0, NULL },
};
/* CDMA2K Redirection Reasons */
static const value_string Redir_Reason_Types[] = {
{ 0, "Unknown" },
{ 1, "Call Forwarding / Called DTE Busy" },
{ 2, "Call Forwarding No Reply" },
{ 3, "Reserved" },
{ 4, "Reserved" },
{ 5, "Reserved" },
{ 6, "Reserved" },
{ 7, "Reserved" },
{ 8, "Reserved" },
{ 9, "Called DTE Out Of Order" },
{ 10, "Call Forwarding By The Called DTE" },
{ 11, "Reserved" },
{ 12, "Reserved" },
{ 13, "Reserved" },
{ 14, "Reserved" },
{ 15, "Call Forwarding Unconditional / Systematic Call Redirection" },
{ 0, NULL },
};
/* CDMA2K Cadence Types */
static const value_string Cadence_Types[] = {
{ 0, "Not Specified" },
{ 1, "Acoustic Earpiece / Similar Device" },
{ 2, "Device Other Than Acoustic Earpiece / Similar Device(Ex : Ringer)" },
{ 3, "Reserved" },
{ 0, NULL },
};
static const value_string l3dpu_ORM_PRM_req_mode_values[] = {
{ /* 000 */ 0x00, "Reserved" },
{ /* 001 */ 0x01, "CDMA only" },
{ /* 010 */ 0x02, "Reserved (Previously: Wide analog only)" },
{ /* 011 */ 0x03, "Reserved (Previously: Either wide analog or CDMA only)" },
{ /* 100 */ 0x04, "Reserved (Previously: Narrow analog only)" },
{ /* 101 */ 0x05, "Reserved (Previously: Either narrow analog or CDMA only)" },
{ /* 110 */ 0x06, "Reserved (Previously: Either narrow analog or wide analog only)" },
{ /* 111 */ 0x07, "Reserved (Previously: Narrow analog or wide analog or CDMA)" },
{0x00, NULL }
};
// Table 2.7.1.3.2.4-5. Encryption Algorithms Supported , page 858 (2-738)
static const value_string l3dpu_ORM_encryption_algo_values[] = {
{/*0000*/ 0x00, "Basic encryption supported" },
{/*0001*/ 0x01, "Basic and Enhanced encryption supported" },
{0x00, NULL }
};
static const value_string l3dpu_ORM_ch_ind_values[] = {
{/*00*/ 0x00, "Refer to EXT_CH_IND" },
{/*01*/ 0x01, "Fundamental Channel" },
{/*10*/ 0x02, "Dedicated Control Channel" },
{/*11*/ 0x03, "Fundamental Channel and Dedicated Control Channel" },
{0x00, NULL }
};
/* Decoder for all the information elements of CDMA2K Message Type */
static void cdma2k_message_decode(proto_item *item _U_, tvbuff_t *tvb,proto_tree *tree, guint *offset, proto_tree *mainTree _U_, guint16 *noerror _U_ , packet_info *pinfo _U_)
{
guint16 channel = -1, msgtype = -1, headerRecCnt = -1, headerRecLen = -1, l_offset = -1;
guint16 headerRecType = -1, inc = -1, count = -1, l3PduLen = -1, authIncl = -1, oneXPrev = -1;
proto_item *item1 = NULL;
proto_tree *subtree = NULL, *subtree1 = NULL, *subtree2 = NULL, *subtree3 = NULL;
item1 = proto_tree_add_item(tree,hf_cdma2k_tlac_Header, tvb, *offset,1, ENC_NA);
subtree = proto_item_add_subtree(item1, ett_cdma2k_subtree);
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Channel, tvb, *offset*8,1, ENC_BIG_ENDIAN);
channel = tvb_get_bits8(tvb,*offset*8,1);
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_1x_Protocol_Revision, tvb, *offset*8 + 1,8, ENC_BIG_ENDIAN);
oneXPrev = tvb_get_bits8(tvb,*offset*8 + 1,8);
*offset+=1;
if (channel == 0)
{
/*get LSB 6 bits for MsgType if r-csch*/
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_msgType, tvb, *offset*8 + 3,6, ENC_BIG_ENDIAN);
msgtype = tvb_get_bits8(tvb,*offset*8 + 3,6);
*offset+=1;
}
else
{
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_msgType, tvb, *offset*8 + 1,8, ENC_BIG_ENDIAN);
msgtype = tvb_get_bits8(tvb,*offset*8 + 1,8);
*offset+=1;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Records_Count, tvb, *offset*8 + 1,4, ENC_BIG_ENDIAN);
headerRecCnt = tvb_get_bits8(tvb,*offset*8 + 1,4);
l_offset = *offset*8 + 5;
item1 = proto_tree_add_item(subtree, hf_cdma2k_tlac_Header_Record, tvb, *offset,1, ENC_NA);
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
for(count = 1; count <= headerRecCnt; count++)
{
item1 = proto_tree_add_item(subtree1, hf_cdma2k_tlac_Header_Record, tvb, l_offset/8,1, ENC_NA);
proto_item_append_text(item1," : [%02x]",count);
subtree2 = proto_item_add_subtree(item1, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree2,hf_cdma2k_tlac_Header_Record_Type, tvb, l_offset, 4, ENC_BIG_ENDIAN);
headerRecType = tvb_get_bits8(tvb,l_offset, 4);
l_offset+=4;
if(headerRecType == 0)
{
proto_tree_add_bits_item(subtree2,hf_cdma2k_tlac_Header_Record_Length, tvb, l_offset, 8, ENC_BIG_ENDIAN);
headerRecLen = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=8;
item1 = proto_tree_add_item(subtree2, hf_cdma2k_tlac_Header_Record_Values, tvb, (l_offset/8),headerRecLen+1 , ENC_NA);
subtree3 = proto_item_add_subtree(item1, ett_cdma2k_subtree2);
cdma2k_message_ADDR_FIELDS(item1, tvb, subtree3, &l_offset, headerRecLen);
}
else if(headerRecType == 1)
{
authIncl = 1;
proto_tree_add_bits_item(subtree2,hf_cdma2k_tlac_Header_Record_Length, tvb, l_offset, 8, ENC_BIG_ENDIAN);
headerRecLen = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=8;
item1 = proto_tree_add_item(subtree2, hf_cdma2k_tlac_Header_Record_Values, tvb, (l_offset/8), headerRecLen+1, ENC_NA);
subtree3 = proto_item_add_subtree(item1, ett_cdma2k_subtree2);
cdma2k_message_AUTH_FIELDS(item1, tvb, subtree3, &l_offset, headerRecLen);
}
else
{
proto_tree_add_bits_item(subtree2,hf_cdma2k_tlac_Header_Record_Length, tvb, l_offset, 8, ENC_BIG_ENDIAN);
headerRecLen = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=8;
item1 = proto_tree_add_item(subtree2, hf_cdma2k_tlac_Header_Record_Values, tvb, (l_offset/8), headerRecLen+1, ENC_NA);
for (inc = 0; inc < (headerRecLen*8); )
{
proto_item_append_text(item1," 0x%02x ",tvb_get_bits8(tvb,l_offset, 8));
l_offset+=8;
inc+=8;
}
}
}
if(l_offset%8 == 0)
{
*offset = (l_offset/8);
}
else
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_tlac_Header_Record_Reserved, tvb, l_offset, (8-(l_offset%8)), ENC_BIG_ENDIAN);
*offset = (l_offset/8) + 1;
}
item1 = proto_tree_add_item(subtree1, hf_cdma2k_tlac_Pdu, tvb, *offset,-1, ENC_NA);
subtree2 = proto_item_add_subtree(item1, ett_cdma2k_subtree2);
proto_tree_add_item(subtree2,hf_cdma2k_tlac_Pdu_Length, tvb, *offset,2, ENC_BIG_ENDIAN);
l3PduLen = tvb_get_bits16(tvb,*offset*8,16, ENC_BIG_ENDIAN);
*offset+=2;
if(channel == 0)
{
switch(msgtype)
{
case CDMA2KRegIndMsg:
{ cdma2k_message_REGISTRATION(item1, tvb, subtree2, offset, oneXPrev); break;}
case CDMA2KOrderIndMsg:
{ cdma2k_message_ORDER_IND(item1, tvb, subtree2,offset); break;}
case CDMA2KDataBurstIndMsg:
{ cdma2k_message_DATA_BURST_IND(item1, tvb, subtree2,offset); break;}
case CDMA2KOrigIndMsg:
{ cdma2k_message_ORIGINATION(item1, tvb, subtree2,offset,authIncl,oneXPrev); break;}
case CDMA2KPageResponseMsg:
{ cdma2k_message_PAGE_RESPONSE(item1, tvb, subtree2,offset,authIncl,oneXPrev); break;}
case CDMA2KAuthChallRspMsg:
{ cdma2k_message_AUTH_CHALL_RSP(item1, tvb, subtree2,offset); break;}
case CDMA2KOrderCmdMsg:
{ cdma2k_message_ORDER_CMD(item1, tvb, subtree2,offset); break;}
case CDMA2KDataBurstCmdMsg:
{ cdma2k_message_DATA_BURST_CMD(item1, tvb, subtree2,offset); break;}
case CDMA2KAuthChallReqMsg:
{ cdma2k_message_AUTH_CHALL_REQ(item1, tvb, subtree2,offset); break;}
case CDMA2KGenPageReqMsg:
{ cdma2k_message_GEN_PAGE_REQ(item1, tvb, subtree2,offset,l3PduLen); break;}
default:
{ *noerror = 0; break; }
}
}
else
{
switch(msgtype)
{
case CDMA2KAlertWithInfoMsg:
{ cdma2k_message_ALERT_WITH_INFO(item1, tvb, subtree2,offset); break;}
case CDMA2KUniversalHandoffDirectionMsg:
case CDMA2KMeIdUniversalHandoffDirectionMsg:
{ cdma2k_message_HANDOFF_DIR(item1, tvb, subtree2,offset,msgtype); break;}
default:
{ *noerror = 0; break; }
}
}
}
/* 3GPP2 C.S0005-E v3.0 Table 2.3.3-1. Station Class Mark */
/* SCM Fields values */
static const value_string l3dpu_SCM_field_values7[] = {
{ 0x00, "Other bands" },
{ 0x01, "Band Classes 1,4,14" },
{ 0x00, NULL }
};
static const value_string l3dpu_SCM_field_values6[] = {
{ 0x00, "CDMA Only" },
{ 0x01, "?" },
{ 0x00, NULL }
};
static const value_string l3dpu_SCM_field_values5[] = {
{ 0x00, "Non-Slotted" },
{ 0x01, "Slotted" },
{ 0x00, NULL }
};
static const value_string l3dpu_SCM_field_values4[] = {
{ 0x00, "MEID not configured" },
{ 0x01, "MEID configured" },
{ 0x00, NULL }
};
static const value_string l3dpu_SCM_field_values2[] = {
{ 0x00, "Continuous" },
{ 0x01, "Discontinuous" },
{ 0x00, NULL }
};
static void
dissect_cdma2000_scm(tvbuff_t* tvb, proto_tree* tree, guint bit_offset)
{
proto_tree *sub_tree = proto_tree_add_subtree(tree, tvb, bit_offset >> 3, 2, ett_cdma2000_scm, NULL, "SCM - Station Class Mark");
/* Extended SCM Indicator bit 7 */
proto_tree_add_bits_item(sub_tree, hf_cdma2k_ext_scm_ind, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
/* Dual Mode Bit 6 */
proto_tree_add_bits_item(sub_tree, hf_cdma2k_scm_dual_mode, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
/* Slotted Class Bit 5*/
proto_tree_add_bits_item(sub_tree, hf_cdma2k_scm_slotted_class, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
/* MEID support indicator bit 4 */
proto_tree_add_bits_item(sub_tree, hf_cdma2k_scm_meid_sup, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
/* 25 MHz Bandwidth Bit 3 */
proto_tree_add_bits_item(sub_tree, hf_cdma2k_scm_25mhz_bw, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
/* Transmission Bit 2 */
proto_tree_add_bits_item(sub_tree, hf_cdma2k_scm_trans, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
/* Power Class for Band Class 0 Analog Operation Bit 1 - 0 */
proto_tree_add_bits_item(sub_tree, hf_cdma2k_scm_pow_class, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
}
static void cdma2k_message_REGISTRATION(proto_item *item, tvbuff_t *tvb, proto_tree *tree, guint *offset, guint16 oneXPrev)
{
guint16 mob_P_Rev_Value = -1, mob_P_Rev_Rx = -1;
guint16 uzid_Incl = -1, geoLoc_Incl = -1, l_offset = -1;
proto_tree *subtree = NULL;
/*iws_Mob_P_Rev_In_Use = 7;*/
item = proto_tree_add_item(tree,hf_cdma2k_RegMsg, tvb, *offset,-1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree, hf_cdma2k_Reg_Type, tvb, *offset*8,4, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree, hf_cdma2k_Slot_Cycle_Index, tvb, *offset*8 + 4,3, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree, hf_cdma2k_Mob_P_Rev, tvb, *offset*8 + 7,8, ENC_BIG_ENDIAN);
mob_P_Rev_Rx = tvb_get_bits8(tvb,*offset*8 + 7,8);
*offset+=1;
mob_P_Rev_Value = ((oneXPrev >= mob_P_Rev_Rx)? mob_P_Rev_Rx : oneXPrev);
if(mob_P_Rev_Value == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Ext_Scm, tvb, *offset*8 + 7,1, ENC_BIG_ENDIAN);
*offset+=1;
/* Jump Over the one bit Reserved Field*/
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, *offset*8,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree, hf_cdma2k_Sloted_Mode, tvb, *offset*8 + 1,1, ENC_BIG_ENDIAN);
/*Jump Over the five bit Reserved Field*/
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, *offset*8 + 2,5, ENC_BIG_ENDIAN);
}
else
{
dissect_cdma2000_scm(tvb, subtree, *offset * 8 + 7);
*offset+=1;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Mob_Term, tvb, *offset*8 + 7,1, ENC_BIG_ENDIAN);
*offset+=1;
l_offset = *offset*8;
if(mob_P_Rev_Value > 3)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Return_Cause, tvb, *offset*8,4, ENC_BIG_ENDIAN);
l_offset+=4;
}
if(mob_P_Rev_Value >= 6)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Qpch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Enhanced_Rc, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Uzid_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
uzid_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(uzid_Incl != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Uzid, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;
}
}
if(mob_P_Rev_Value >= 7)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_GeoLoc_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
geoLoc_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(geoLoc_Incl != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_GeoLoc_Type, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
}
}
if(l_offset%8 == 0)
*offset = (l_offset/8);
else
*offset = (l_offset/8) + 1;
}
/* Decode Order Indication Message Parameters */
static void cdma2k_message_ORDER_IND(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset)
{
guint16 addRecLen = -1, ordq = -1, rejectedtype = -1;
guint16 l_offset = -1, rsc_mode_ind = -1, ordertype = -1;
proto_tree *subtree = NULL, *subtree1 = NULL;
item = proto_tree_add_item(tree,hf_cdma2k_OrderIndMsg, tvb, *offset, -1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree, hf_cdma2k_Order_Ind, tvb, *offset*8,6, ENC_BIG_ENDIAN);
ordertype = tvb_get_bits8(tvb,*offset*8, 6);
proto_tree_add_bits_item(subtree, hf_cdma2k_Add_Record_Len, tvb, *offset*8 + 6,3, ENC_BIG_ENDIAN);
addRecLen = tvb_get_bits8(tvb,*offset*8 + 6,3);
*offset+=1;
l_offset = *offset*8+1;
if(addRecLen > 0)
{
item = proto_tree_add_item(subtree, hf_cdma2k_Order_Specific_Fields, tvb, *offset,-1, ENC_NA);
subtree1 = proto_item_add_subtree(item, ett_cdma2k_subtree2);
switch(ordertype)
{
case 2:
{
proto_item_append_text(item, " : BASE STATION CHALLENGE Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Randbs, tvb, l_offset, 32, ENC_BIG_ENDIAN);
l_offset+=32;
break;
}
case 4:
{
proto_item_append_text(item, " : REORDER Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
break;
}
case 19:
{
proto_item_append_text(item, " : SERVICE OPTION REQUEST Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_service_option, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;
break;
}
case 20:
{
proto_item_append_text(item, " : SERVICE OPTION RESPONSE Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_service_option, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;
break;
}
case 31:
{
proto_item_append_text(item, " : MOBILE STATION REJECT Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
ordq = tvb_get_bits8(tvb,*offset*8+1,8);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rejected_Type, tvb, l_offset, 8, ENC_BIG_ENDIAN);
rejectedtype = tvb_get_bits8(tvb,*offset*8+1,8);
l_offset+=8;
if ((rejectedtype == 7) || (rejectedtype == 1)) /* 7= access, 1= reverse traffic */
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rejected_Order, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;/* 4 byte , 1 bit */
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rejected_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;/* 5 byte , 1 bit */
}
if (rejectedtype == 12) /* for both access & reverse traffic */
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rejected_Parm_Id, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;/* 7 byte , 1 bit */
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rejected_Record, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;/* 8 byte , 1 bit */
}
if ((ordq == 16) || (ordq == 17) || (ordq == 18) || (ordq == 19))
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Con_Ref, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
if (ordq == 19)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Tag, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
if(l_offset%8 != 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, l_offset, (8-(l_offset%8)), ENC_BIG_ENDIAN);
}
break;
}
case 21:
{
proto_item_append_text(item, " : RELEASE Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, *offset*8+1,8, ENC_BIG_ENDIAN);
ordq = tvb_get_bits8(tvb,*offset*8+1,8);
l_offset+=8;
if (ordq == 3)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsc_Mode_Ind , tvb, l_offset, 1, ENC_BIG_ENDIAN);
rsc_mode_ind = tvb_get_bits8(tvb,*offset*8+1,1);
l_offset+=1;
if (rsc_mode_ind == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsci, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsc_End_Time_Unit, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsc_End_Time_Value, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
}
break;
}
case 34:
{
proto_item_append_text(item, " : FAST CALL SETUP Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, *offset*8+1,8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsc_Mode_Ind , tvb, l_offset, 1, ENC_BIG_ENDIAN);
rsc_mode_ind = tvb_get_bits8(tvb,*offset*8+1,1);
l_offset+=1;
if (rsc_mode_ind == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsci, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsc_End_Time_Unit, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsc_End_Time_Value, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
break;
}
default:
{
proto_item_append_text(item, " : Invalid / Unsupported Order Type Received");
break;
}
}
}
if(l_offset%8 == 0)
*offset = (l_offset/8);
else
*offset = (l_offset/8) + 1;
}
/* Decode Order Command Message Parameters */
static void cdma2k_message_ORDER_CMD(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset)
{
guint16 addRecLen = -1, ordq = -1, csig = -1;
guint16 l_offset = -1, MsgIntInfoIncl = -1, retrytype = -1, allbcmcflowind = -1, clearallretrydelay = -1;
guint16 numbcmcprograms = -1, bcmc_program_id = -1;
guint16 bcmcflowdiscriminatorlen = -1, regulatoryindincl = -1;
guint16 rsc_mode_supported = -1, rer_mode_incl = -1, rer_mode_enabled = -1, tkz_mode_incl = -1;
guint16 sameaspreviousbcmcflow = -1, ordertype = -1, clearretrydelay = -1, rer_time = -1;
guint16 rsc_mode_ind = -1;
proto_tree *subtree = NULL, *subtree1 = NULL;
subtree = proto_tree_add_subtree(tree, tvb, *offset, -1, ett_cdma2k_subtree1, NULL, "Order Command Message");
proto_tree_add_item(subtree, hf_cdma2k_Order_Cmd, tvb, *offset,1, ENC_BIG_ENDIAN);
ordertype = tvb_get_guint8(tvb,*offset) >> 2;
proto_tree_add_bits_item(subtree, hf_cdma2k_Add_Record_Len, tvb, *offset*8 + 6,3, ENC_BIG_ENDIAN);
addRecLen = tvb_get_bits8(tvb,*offset*8 + 6,3);
*offset+=1;
l_offset = *offset*8+1;
if(addRecLen > 0)
{
item = proto_tree_add_item(subtree, hf_cdma2k_Order_Specific_Fields, tvb, *offset,-1, ENC_NA);
subtree1 = proto_item_add_subtree(item, ett_cdma2k_subtree2);
switch(ordertype)
{
case 2:
{
proto_item_append_text(item, " : BASE STATION CHALLENGE CONFIRMATION Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Authbs, tvb, l_offset, 18, ENC_BIG_ENDIAN);
l_offset+=18;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
break;
}
case 4:
{
proto_item_append_text(item, " : REORDER Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
break;
}
case 21:
{
proto_item_append_text(item, " : RELEASE Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, *offset*8+1,8, ENC_BIG_ENDIAN);
ordq = tvb_get_bits8(tvb,*offset*8+1,8);
l_offset+=8;
if (ordq == 3)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsc_Mode_Ind , tvb, l_offset, 1, ENC_BIG_ENDIAN);
rsc_mode_ind = tvb_get_bits8(tvb,*offset*8+1,1);
l_offset+=1;
if (rsc_mode_ind == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsci, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsc_End_Time_Unit, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsc_End_Time_Value, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
}
break;
}
case 27:
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
ordq = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=8;
/*
* 3GPP2 C.S0005-F v2.0 Table 3.7.4-1. Order and Order Qualification Codes Used on the f-csch and the f-dsch
*/
switch(ordq){
case 0: /* Registration Accepted Order (ROAM_INDI not included; see 3.7.4.5) */
proto_item_append_text(item, " : Registration Accepted Order ");
break;
case 1: /* Registration Request Order */
proto_item_append_text(item, " : Registration Request Order ");
break;
case 2: /* Registration Rejected Order */
proto_item_append_text(item, " : Registration Rejected Order ");
break;
case 4: /* Registration Rejected Order (delete TMSI) */
proto_item_append_text(item, " : Registration Rejected Order (delete TMSI) ");
break;
case 5: /* Registration Accepted Order (ROAM_INDI included but the signaling encryption related fields are not included; see 3.7.4.5) */
proto_item_append_text(item, " : Registration Accepted Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Roam_Ind, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
break;
case 7: /* Registration Accepted Order (ROAM_INDI and the signaling encryption related fields are included; see 3.7.4.5) */
proto_item_append_text(item, " : Registration Accepted Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Roam_Ind, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_C_Sig_Encrypt_Mode, tvb, l_offset, 3, ENC_BIG_ENDIAN);
csig = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Msg_Int_Info_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
MsgIntInfoIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
break;
default:
break;
}
if ((csig == 1) || (csig == 2))
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Enc_Key_Size, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
}
if (MsgIntInfoIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Change_Keys, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Use_Uak, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
if(l_offset%8 != 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, l_offset, (8-(l_offset%8)), ENC_BIG_ENDIAN);
}
break;
}
case 32:
{
proto_item_append_text(item, " : RETRY Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Retry_Type, tvb, l_offset, 3, ENC_BIG_ENDIAN);
retrytype = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
if (retrytype != 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Retry_Delay, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
break;
}
case 33:
{
proto_item_append_text(item, " : BASE STATION REJECT Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reject_Reason, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rejected_Msg_Type, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rejected_Msg_Seq, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
break;
}
case 35:
{
proto_item_append_text(item, " : BCMC Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_All_Bcmc_Flows_Ind, tvb, l_offset, 1, ENC_BIG_ENDIAN);
allbcmcflowind = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if (allbcmcflowind == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Clear_All_Retry_Delay, tvb, l_offset, 1, ENC_BIG_ENDIAN);
clearallretrydelay = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
}
if ((allbcmcflowind == 1) || (clearallretrydelay == 0))
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_All_Bcmc_Reason, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_All_Bcmc_Retry_Delay, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
if (allbcmcflowind == 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Num_Bcmc_Programs, tvb, l_offset, 6, ENC_BIG_ENDIAN);
numbcmcprograms = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=6;
}
if (numbcmcprograms != 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Bcmc_Program_Id_Len, tvb, l_offset, 5, ENC_BIG_ENDIAN);
bcmc_program_id = tvb_get_bits8(tvb,l_offset, 5);
l_offset+=5;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Bcmc_Program_Id, tvb, l_offset, bcmc_program_id+1, ENC_BIG_ENDIAN);
l_offset+=bcmc_program_id+1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Bcmc_Flow_Discriminator_Len, tvb, l_offset, 3, ENC_BIG_ENDIAN);
bcmcflowdiscriminatorlen = tvb_get_bits8(tvb,l_offset, 3);/* Extract Bcmc_Flow_Discriminator_Len */
l_offset+=3;
if (bcmcflowdiscriminatorlen != 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Num_Flow_Discriminator, tvb, l_offset, bcmcflowdiscriminatorlen, ENC_BIG_ENDIAN);
l_offset+=bcmcflowdiscriminatorlen;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Bcmc_Flow_Discriminator, tvb, l_offset, bcmcflowdiscriminatorlen, ENC_BIG_ENDIAN);
l_offset+=bcmcflowdiscriminatorlen;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Same_As_Previous_Bcmc_Flow, tvb, l_offset, 1, ENC_BIG_ENDIAN);
sameaspreviousbcmcflow = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if (sameaspreviousbcmcflow == 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Clear_Retry_Delay, tvb, l_offset, 1, ENC_BIG_ENDIAN);
clearretrydelay = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
}
if ((sameaspreviousbcmcflow == 0) || (clearretrydelay == 0))
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Bcmc_Reason, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Bcmc_Retry_Delay, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
break;
}
case 36:
{
proto_item_append_text(item, " : FAST CALL SETUP Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
ordq = tvb_get_bits8(tvb, l_offset, 1);
l_offset += 8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rsc_Mode_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
rsc_mode_supported = tvb_get_bits8(tvb, l_offset, 1);
l_offset += 1;
if (rsc_mode_supported == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Max_Rsc_End_Time_Unit, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset += 2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Max_Rsc_End_Time_Value, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset += 4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ignore_Qpch, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
}
if ((ordq == 0) && (rsc_mode_supported == 1))
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Req_Rsci, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset += 4;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rer_Mode_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
rer_mode_incl = tvb_get_bits8(tvb, l_offset, 1);
l_offset += 1;
if (rer_mode_incl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rer_Mode_Enabled, tvb, l_offset, 1, ENC_BIG_ENDIAN);
rer_mode_enabled = tvb_get_bits8(tvb, l_offset, 1);
l_offset += 1;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rer_Max_Num_Msg_Idx, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset += 3;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rer_Time, tvb, l_offset, 3, ENC_BIG_ENDIAN);
rer_time = tvb_get_bits8(tvb, l_offset, 3);
l_offset += 3;
if ((rer_time != 7) && (rer_mode_enabled == 1))
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rer_Time_Unit, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset += 2;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Max_Rer_Pilot_List_Size, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset += 3;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Tkz_Mode_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
tkz_mode_incl = tvb_get_bits8(tvb, l_offset, 1);
l_offset += 1;
if (tkz_mode_incl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Tkz_Mode_Enabled, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Tkz_Max_Num_Msg_Idx, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset += 3;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Tkz_Update_Prd, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset += 4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Tkz_List_Len, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset += 4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Tkz_Timer, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset += 8;
}
break;
case 37:
{
proto_item_append_text(item, " : SERVICE STATUS Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Sr_Id_Bitmap, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Service_Status, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
if(l_offset%8 != 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, l_offset, (8-(l_offset%8)), ENC_BIG_ENDIAN);
}
break;
}
case 38:
{
proto_item_append_text(item, " : LOCATION SERVICES Order ");
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ordq, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Regulatory_Ind_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
regulatoryindincl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if (regulatoryindincl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Regulatory_Ind, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
}
break;
}
default:
{
proto_item_append_text(item, " : Invalid / Unsupported Order Type");
break;
}
}
}
if(l_offset%8 == 0)
*offset = (l_offset/8);
else
*offset = (l_offset/8) + 1;
}
/* Helper function to decode Data Burst Indication Message Parameters */
static void cdma2k_message_DATA_BURST_IND(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset)
{
guint16 numOfFields = -1, parmLen = -1;
guint16 inc = -1, cnt = -1, disp_cnt = -1;
proto_tree *subtree = NULL, *subtree1 = NULL, *subtree2 = NULL;
cnt = 1;
item = proto_tree_add_item(tree,hf_cdma2k_DataBurstIndMsg, tvb, *offset,-1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
proto_tree_add_item(subtree, hf_cdma2k_Msg_Number, tvb, *offset,1, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Burst_Type, tvb, *offset*8,6, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree, hf_cdma2k_Num_Msgs, tvb, *offset*8 + 6,8, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Num_Fields, tvb, *offset*8 + 6,8, ENC_BIG_ENDIAN);
numOfFields = tvb_get_bits8(tvb,*offset*8 + 6,8);
*offset+=1;
item = proto_tree_add_item(subtree, hf_cdma2k_Chari_Data, tvb, *offset,-1, ENC_NA);
subtree1 = proto_item_add_subtree(item, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Msg_Identifier, tvb, *offset*8 + 6,8, ENC_BIG_ENDIAN);
*offset+=1;
numOfFields-=1;
while(numOfFields > 0)
{
item = proto_tree_add_bits_item(subtree1, hf_cdma2k_Parm_Id, tvb, *offset*8 + 6,8, ENC_BIG_ENDIAN);
subtree2 = proto_item_add_subtree(item, ett_cdma2k_subtree2);
*offset+=1;
numOfFields-=1;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Parm_Length, tvb, *offset*8 + 6,8, ENC_BIG_ENDIAN);
parmLen = tvb_get_bits8(tvb,*offset*8 + 6,8);
*offset+=1;
numOfFields-=1;
if (cnt*32 < parmLen)
{
disp_cnt = 32;
}
else
{
disp_cnt = parmLen+1;
}
item = proto_tree_add_item(subtree2,hf_cdma2k_Parm_Value, tvb, *offset,disp_cnt, ENC_NA);
for (inc = 0; inc < parmLen; inc++)
{
proto_item_append_text(item," 0x%02x ",tvb_get_bits8(tvb,*offset*8 + 6,8));
*offset+=1;
if(inc%8 == 7)
proto_item_append_text(item,"\n");
if(inc%32 == 31)
{
if (cnt*32 < parmLen)
{
disp_cnt = 32;
}
else
{
disp_cnt = (parmLen - cnt*32);
}
item = proto_tree_add_item(subtree2,hf_cdma2k_Parm_Value, tvb, *offset,disp_cnt, ENC_NA);
proto_item_append_text(item,"cont..." );
cnt+=1;
}
}
numOfFields-=parmLen;
}
*offset+=1;
}
static void cdma2k_message_ORIGINATION(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset,guint16 authIncl,guint16 oneXPrev)
{
guint16 prevInUse = -1, mob_P_Rev_Rx = -1, Prev_Nid_Incl = -1;
guint16 Sync_Id_Len = -1, Prev_Pzid_Incl= -1, For_FchLen = -1,Rev_FchLen = -1;
guint16 uzid_Incl = -1, GeoLoc_Incl = -1, l_offset = -1, numOfFields = -1, Map_Length = -1, Qos_Parms_Incl= -1;
guint16 specialService = -1, Wll_Incl = -1,Global_Emergency_call = -1,Sync_Id_Incl = -1,Prev_Sid_Incl = -1;
guint16 DigitMode = -1, Num_Alt_So = -1, Qos_Parms_Length = -1, Enc_Info_Incl = -1;
guint16 digitSize = -1, So_Bitmap_Ind = -1, Dcch_supported = -1;
guint16 Fch_supported = -1, Rev_DcchLen = -1, rea = -1, ecmea = -1, For_DcchLen = -1;
proto_tree *subtree = NULL,*subtree1 = NULL, *subtree4 = NULL,*subtree3 = NULL;
proto_item *item1 = NULL, *item2 = NULL, *item4 = NULL;
/*iws_Mob_P_Rev_In_Use = 7;*/
l_offset = *offset*8;
item = proto_tree_add_item(tree,hf_cdma2k_OrigMsg, tvb, l_offset/8,-1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree, hf_cdma2k_Mob_Term, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset +=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Slot_Cycle_Index, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset +=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_Mob_P_Rev, tvb, l_offset, 8, ENC_BIG_ENDIAN);
mob_P_Rev_Rx = tvb_get_bits8(tvb,l_offset, 8);
l_offset +=8;
prevInUse = ((oneXPrev >= mob_P_Rev_Rx) ? mob_P_Rev_Rx : oneXPrev);
if(prevInUse == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Ext_Scm, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset +=1;
/*Jump Over the one bit Reserved Field*/
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset +=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Sloted_Mode, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset +=1;
/*Jump Over the five bit Reserved Field*/
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset +=5;
}
else
{
dissect_cdma2000_scm(tvb, subtree, l_offset);
l_offset +=8;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Request_Mode, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset +=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_Special_Service, tvb, l_offset, 1, ENC_BIG_ENDIAN);
specialService = tvb_get_bits8(tvb,l_offset, 1);
l_offset +=1;
if (specialService == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_service_option, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset +=16;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_pm, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset +=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_digit_mode, tvb, l_offset, 1, ENC_BIG_ENDIAN);
DigitMode = tvb_get_bits8(tvb,l_offset, 1);
l_offset +=1;
if (DigitMode == 1)
{
/* if(mob_P_Rev_Rx > 8)
{ */
proto_tree_add_bits_item(subtree, hf_cdma2k_Number_Type, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset +=3;
/* } */
proto_tree_add_bits_item(subtree, hf_cdma2k_Number_Plan, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset +=4;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_More_Fields, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Num_Fields, tvb, l_offset, 8, ENC_BIG_ENDIAN);
numOfFields = tvb_get_bits8(tvb,l_offset, 8);
l_offset += 8;
if(numOfFields > 0)
{
item2 = proto_tree_add_item(subtree, hf_cdma2k_Chari_Data, tvb, (l_offset/8),1, ENC_NA);
proto_item_append_text(item2," - Dialed Digits :");
while(numOfFields > 0)
{
if(DigitMode == 1)
{
digitSize = 8;
proto_item_append_text(item2," 0x%02x",tvb_get_bits8(tvb,l_offset, digitSize));
l_offset+=digitSize;
}
else if(DigitMode == 0)
{
digitSize = 4;
proto_item_append_text(item2," 0x%x",tvb_get_bits8(tvb,l_offset, digitSize));
l_offset+=digitSize;
}
numOfFields-=1;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Nar_An_Cap, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Paca_Reorig, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Return_Cause, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset += 4;
proto_tree_add_bits_item(subtree, hf_cdma2k_More_Records, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
if (prevInUse < 7 && authIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_encryption_supported, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset += 4;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Paca_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
proto_tree_add_bits_item(subtree, hf_cdma2k_num_alt_so, tvb, l_offset, 3, ENC_BIG_ENDIAN);
Num_Alt_So = tvb_get_bits8(tvb,l_offset, 3);
l_offset += 3;
while (Num_Alt_So > 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Alt_So, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;
Num_Alt_So--;
}
if (prevInUse >= 6)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_DRS, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset +=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Uzid_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
uzid_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset +=1;
if (uzid_Incl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Uzid, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Ch_Ind, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree, hf_cdma2k_SR_ID, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_Otd_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset +=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Qpch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset +=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Enhanced_Rc, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset +=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_For_Rc_Pref, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset +=5;
proto_tree_add_bits_item(subtree, hf_cdma2k_Rev_Rc_Pref, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset +=5;
proto_tree_add_bits_item(subtree, hf_cdma2k_Fch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
Fch_supported = tvb_get_bits8(tvb,l_offset, 1);
l_offset +=1;
if(Fch_supported == 1)
{
item4 = proto_tree_add_item(subtree, hf_cdma2k_Fch_capability_type_specific_Fields, tvb, (l_offset/8),1, ENC_NA);
subtree4 = proto_item_add_subtree(item4, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree4,hf_cdma2k_Fch_Frame_Size, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset +=1;
proto_tree_add_bits_item(subtree4,hf_cdma2k_For_Fch_Len, tvb, l_offset, 3, ENC_BIG_ENDIAN);
For_FchLen = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
Map_Length = 3*For_FchLen ;
if(Map_Length > 0)
{
proto_tree_add_bits_item(subtree4,hf_cdma2k_For_Fch_Rc_Map, tvb, l_offset, Map_Length, ENC_BIG_ENDIAN);
l_offset+= Map_Length;
}
proto_tree_add_bits_item(subtree4,hf_cdma2k_Rev_Fch_Len, tvb, l_offset, 3, ENC_BIG_ENDIAN);
Rev_FchLen = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
Map_Length = 3*Rev_FchLen ;
if(Map_Length > 0)
{
proto_tree_add_bits_item(subtree4,hf_cdma2k_Rev_Fch_Rc_Map, tvb, l_offset, Map_Length, ENC_BIG_ENDIAN);
l_offset+= Map_Length;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Dcch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
Dcch_supported = tvb_get_bits8(tvb,l_offset, 1);
l_offset +=1;
if(Dcch_supported == 1)
{
item4 = proto_tree_add_item(subtree, hf_cdma2k_Dcch_capability_type_specific_Fields, tvb, (l_offset/8),1, ENC_NA);
subtree3 = proto_item_add_subtree(item4, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree3,hf_cdma2k_Dcch_Frame_Size, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset +=2;
proto_tree_add_bits_item(subtree3,hf_cdma2k_For_Dcch_Len, tvb, l_offset, 3, ENC_BIG_ENDIAN);
For_DcchLen = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
Map_Length = 3*For_DcchLen ;
if(Map_Length > 0)
{
proto_tree_add_bits_item(subtree3,hf_cdma2k_For_Dcch_Rc_Map, tvb, l_offset, Map_Length, ENC_BIG_ENDIAN);
l_offset+= Map_Length;
}
proto_tree_add_bits_item(subtree3,hf_cdma2k_Rev_Dcch_Len, tvb, l_offset, 3, ENC_BIG_ENDIAN);
Rev_DcchLen = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
Map_Length = 3*Rev_DcchLen ;
if(Map_Length > 0)
{
proto_tree_add_bits_item(subtree3,hf_cdma2k_Rev_Dcch_Rc_Map, tvb, l_offset, Map_Length, ENC_BIG_ENDIAN);
l_offset+= Map_Length;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_GeoLoc_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
GeoLoc_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset += 1;
if(GeoLoc_Incl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_GeoLoc_Type, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset += 3;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Rev_Fch_Gating_Req, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
if(prevInUse >= 7)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Orig_Reason, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Orig_Count, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset += 2;
proto_tree_add_bits_item(subtree, hf_cdma2k_Sts_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
proto_tree_add_bits_item(subtree, hf_cdma2k_ThreeXCchSupported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Wll_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
Wll_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset += 1;
if(Wll_Incl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Wll_Device_Type, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset += 3;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Global_Emergency_Call, tvb, l_offset, 1, ENC_BIG_ENDIAN);
Global_Emergency_call = tvb_get_bits8(tvb,l_offset, 1);
l_offset += 1;
if(Global_Emergency_call == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Ms_Init_Pos_Loc_Ind, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset += 1;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Qos_Parms_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
Qos_Parms_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset += 1;
if(Qos_Parms_Incl != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Qos_Parms_Length, tvb, l_offset, 5, ENC_BIG_ENDIAN);
Qos_Parms_Length = tvb_get_bits8(tvb,l_offset, 5);
l_offset += 5;
while (Qos_Parms_Length > 0)
{
item4 = proto_tree_add_item(subtree1, hf_cdma2k_Qos_Parms, tvb, (l_offset/8),8, ENC_BIG_ENDIAN);
subtree1 = proto_item_add_subtree(item4, ett_cdma2k_subtree2);
proto_item_append_text(item4," 0x%02x",tvb_get_bits8(tvb,l_offset, 8));
l_offset+=8;
Qos_Parms_Length -=1;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Enc_Info_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
Enc_Info_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(Enc_Info_Incl != 0)
{
item2 = proto_tree_add_item(subtree, hf_cdma2k_Sig_Encrypt_Supp, tvb, (l_offset/8),1, ENC_NA);
subtree1 = proto_item_add_subtree(item2,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Cmea, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ecmea, tvb, l_offset, 1, ENC_BIG_ENDIAN);
ecmea = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rea, tvb, l_offset, 1, ENC_BIG_ENDIAN);
rea = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
proto_tree_add_bits_item(subtree, hf_cdma2k_DSig_Encrypt_Req, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_CSig_Encrypt_Req, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
if(ecmea == 1 || rea == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Sseq_H, tvb, l_offset, 24, ENC_BIG_ENDIAN);
l_offset+=24;
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Sseq_H_Sig, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Ui_Encrypt_Req, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Ui_Encrypt_Sup, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Sync_Id_Incl, tvb, l_offset, 1, ENC_NA);
Sync_Id_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset +=1;
if(Sync_Id_Incl != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sync_Id_Len, tvb, l_offset, 4, ENC_BIG_ENDIAN);
Sync_Id_Len = tvb_get_bits8(tvb,l_offset, 4);
l_offset +=4;
while (Sync_Id_Len > 0)
{
item1 = proto_tree_add_item(subtree1, hf_cdma2k_Sync_Id, tvb, (l_offset/8),Sync_Id_Len, ENC_NA);
/*subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree2);*/
proto_item_append_text(item1," 0x%02x",tvb_get_bits8(tvb,l_offset, 8));
l_offset+=8;
Sync_Id_Len -=1;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Prev_Sid_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
Prev_Sid_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if (Prev_Sid_Incl != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Prev_Sid, tvb, l_offset, 15, ENC_BIG_ENDIAN);
l_offset+=15;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Prev_Nid_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
Prev_Nid_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if (Prev_Nid_Incl != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Prev_Nid, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Prev_Pzid_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
Prev_Pzid_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if (Prev_Pzid_Incl != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Prev_Pzid, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_So_Bitmap_Ind, tvb, l_offset, 2, ENC_BIG_ENDIAN);
So_Bitmap_Ind = tvb_get_bits8(tvb,l_offset, 2);
l_offset+=2;
if (So_Bitmap_Ind > 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_So_Group_Num, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
proto_tree_add_bits_item(subtree, hf_cdma2k_So_Bitmap, tvb, l_offset, 4*So_Bitmap_Ind, ENC_BIG_ENDIAN);
l_offset+=4*So_Bitmap_Ind;
}
}
}
/*Currently IWS Stack supports only till Mobile Protocol Revision Value 7*/
/* if (mob_P_Rev_Rx >= 8)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_SDB_Desired, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Alt_Band_Class_Sup, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
if (mob_P_Rev_Rx >= 9)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Msg_Int_Info_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
msg_Int_Info_Incl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if (msg_Int_Info_Incl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sig_Integrity_Sup_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
sigIntegritySupIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(sigIntegritySupIncl ==1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sig_Integrity_Sup, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree, hf_cdma2k_Sig_Integrity_Req, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Key_Id, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Sseq_H_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
newSseqHIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if (newSseqHIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Sseq_H, tvb, l_offset, 24, ENC_BIG_ENDIAN);
l_offset+=24;
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Sseq_H_Sig, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_For_Pdch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
forPdchSupported = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(forPdchSupported == 1)
{
item2 = proto_tree_add_item(subtree, hf_cdma2k_Type_Specific_Fields, tvb, (l_offset/8),1, ENC_NA);
subtree1 = proto_item_add_subtree(item2,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ack_Delay, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Num_Arq_Chan, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_For_Pdch_Len, tvb, l_offset, 2, ENC_BIG_ENDIAN);
forPdchLen = tvb_get_bits8(tvb,l_offset, 2);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_For_Pdch_Rc_Map, tvb, l_offset, 3*(forPdchLen+1), ENC_BIG_ENDIAN);
l_offset+=3*(forPdchLen+1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ch_Config_Sup_Map_Len, tvb, l_offset, 2, ENC_BIG_ENDIAN);
chConfigSupMapLen = tvb_get_bits8(tvb,l_offset, 2);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ch_Config_Sup_Map, tvb, l_offset, 3*(chConfigSupMapLen + 1), ENC_BIG_ENDIAN);
l_offset+=3*(chConfigSupMapLen + 1);
}
}
if(chInd == 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Ext_Ch_Ind, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
}*/
if(l_offset%8 == 0)
*offset = (l_offset/8);
else
*offset = (l_offset/8) + 1;
}
/* Helper function to decode Authentication Challenge Response Message Parameters */
static void cdma2k_message_AUTH_CHALL_RSP(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset)
{
proto_tree *subtree = NULL;
item = proto_tree_add_item(tree,hf_cdma2k_AuthChallRspMsg, tvb, *offset,-1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree, hf_cdma2k_Authu, tvb, *offset*8,18, ENC_BIG_ENDIAN);
*offset+=3;
}
/* Helper function to decode Data Burst Command Message Parameters */
static void cdma2k_message_DATA_BURST_CMD(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset)
{
guint16 numOfFields = -1, parmLen = -1;
guint16 inc = -1, cnt = -1, disp_cnt = -1;
proto_tree *subtree = NULL, *subtree1 = NULL, *subtree2 = NULL;
cnt = 1;
item = proto_tree_add_item(tree,hf_cdma2k_DataBurstCmdMsg, tvb, *offset,-1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
proto_tree_add_item(subtree, hf_cdma2k_Msg_Number, tvb, *offset,1, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Burst_Type, tvb, *offset*8,6, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree, hf_cdma2k_Num_Msgs, tvb, *offset*8 + 6,8, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Num_Fields, tvb, *offset*8 + 6,8, ENC_BIG_ENDIAN);
numOfFields = tvb_get_bits8(tvb,*offset*8 + 6,8);
*offset+=1;
item = proto_tree_add_item(subtree, hf_cdma2k_Chari_Data, tvb, *offset,-1, ENC_NA);
subtree1 = proto_item_add_subtree(item, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Msg_Identifier, tvb, *offset*8 + 6,8, ENC_BIG_ENDIAN);
*offset+=1;
numOfFields-=1;
while(numOfFields > 0)
{
item = proto_tree_add_bits_item(subtree1, hf_cdma2k_Parm_Id, tvb, *offset*8 + 6,8, ENC_BIG_ENDIAN);
subtree2 = proto_item_add_subtree(item, ett_cdma2k_subtree2);
*offset+=1;
numOfFields-=1;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Parm_Length, tvb, *offset*8 + 6,8, ENC_BIG_ENDIAN);
parmLen = tvb_get_bits8(tvb,*offset*8 + 6,8);
*offset+=1;
numOfFields-=1;
if (cnt*32 < parmLen)
{
disp_cnt = 32;
}
else
{
disp_cnt = parmLen+1;
}
item = proto_tree_add_item(subtree2,hf_cdma2k_Parm_Value, tvb, *offset,disp_cnt, ENC_NA);
for (inc = 0; inc < parmLen; inc++)
{
proto_item_append_text(item," 0x%02x ",tvb_get_bits8(tvb,*offset*8 + 6,8));
*offset+=1;
if(inc%8 == 7)
proto_item_append_text(item,"\n");
if(inc%32 == 31)
{
if (cnt*32 < parmLen)
{
disp_cnt = 32;
}
else
{
disp_cnt = (parmLen - cnt*32);
}
item = proto_tree_add_item(subtree2,hf_cdma2k_Parm_Value, tvb, *offset,disp_cnt, ENC_NA);
proto_item_append_text(item,"cont..." );
cnt+=1;
}
}
numOfFields-=parmLen;
}
*offset+=1;
}
/* Helper function to decode Authentication Challenge Request Message Parameters */
static void cdma2k_message_AUTH_CHALL_REQ(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset)
{
proto_tree *subtree = NULL;
item = proto_tree_add_item(tree,hf_cdma2k_AuthChallReqMsg, tvb, *offset,-1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree, hf_cdma2k_Randu, tvb, *offset*8,24, ENC_BIG_ENDIAN);
*offset+=3;
proto_tree_add_item(subtree, hf_cdma2k_Gen_Cmea_Key, tvb, *offset,1, ENC_BIG_ENDIAN);
*offset+=1;
}
/* Helper function to decode General Page Request Message Parameters */
static void cdma2k_message_GEN_PAGE_REQ(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset,guint16 l3PduLen)
{
proto_tree *subtree = NULL;
item = proto_tree_add_item(tree,hf_cdma2k_GenPageReqMsg, tvb, *offset,-1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
if (l3PduLen)
{
proto_tree_add_item(subtree, hf_cdma2k_service_option, tvb, *offset,2, ENC_BIG_ENDIAN);
*offset+=2;
}
}
/* Helper Function to decode Page Response Message Parameters */
static void cdma2k_message_PAGE_RESPONSE(proto_item *item, tvbuff_t *tvb,proto_tree *tree,guint *offset,guint16 authIncl,guint16 oneXPrev)
{
guint16 fchSupported = -1, dcchSupported = -1,numAltSo = -1, soBitmapInd = -1;
guint16 forFchLen = -1, revFchLen = -1, forDcchLen = -1, revDcchLen = -1 , syncIdLen =-1;
guint16 uzidIncl = -1, wllIncl = -1, encInfoIncl = -1, syncIdIncl = -1;
guint16 l_offset = -1, rea = -1, ecmea = -1;
guint16 prevInUse = -1, mob_P_Rev_Rx = -1;
proto_tree *subtree = NULL, *subtree1 = NULL;
proto_item *item1 = NULL;
/*iws_Mob_P_Rev_In_Use = 7;*/
item = proto_tree_add_item(tree,hf_cdma2k_PageRspMsg, tvb, *offset,-1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree, hf_cdma2k_Mob_Term, tvb, *offset*8,1, ENC_BIG_ENDIAN);
l_offset = *offset*8 + 1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Slot_Cycle_Index, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+= 3;
proto_tree_add_bits_item(subtree, hf_cdma2k_Mob_P_Rev, tvb, l_offset, 8, ENC_BIG_ENDIAN);
mob_P_Rev_Rx = tvb_get_bits8(tvb,l_offset, 8);
l_offset+= 8;
prevInUse = ((oneXPrev >= mob_P_Rev_Rx) ? mob_P_Rev_Rx : oneXPrev);
dissect_cdma2000_scm(tvb, subtree, l_offset);
l_offset+=8;
proto_tree_add_bits_item(subtree, hf_cdma2k_Request_Mode, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_service_option , tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;
proto_tree_add_bits_item(subtree, hf_cdma2k_pm, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Nar_An_Cap, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
if(prevInUse < 7 && authIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_encryption_supported, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_num_alt_so, tvb, l_offset, 3, ENC_BIG_ENDIAN);
numAltSo = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
while(numAltSo > 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Alt_So, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;
numAltSo--;
}
if(prevInUse >= 6)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Uzid_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
uzidIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(uzidIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Uzid, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Ch_Ind, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree, hf_cdma2k_Otd_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Qpch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Enhanced_Rc, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_For_Rc_Pref, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
proto_tree_add_bits_item(subtree, hf_cdma2k_Rev_Rc_Pref, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
proto_tree_add_bits_item(subtree, hf_cdma2k_Fch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
fchSupported = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(fchSupported == 1)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Type_Specific_Fields, tvb, (l_offset/8),1, ENC_NA);
proto_item_append_text(item1, "Fch Records");
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Fch_Frame_Size, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_For_Fch_Len, tvb, l_offset, 3, ENC_BIG_ENDIAN);
forFchLen = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
if(forFchLen > 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_For_Fch_Rc_Map, tvb, l_offset, 3*forFchLen, ENC_BIG_ENDIAN);
l_offset+=3*forFchLen;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rev_Fch_Len, tvb, l_offset, 3, ENC_BIG_ENDIAN);
revFchLen = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
if(revFchLen > 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rev_Fch_Rc_Map, tvb, l_offset, 3*revFchLen , ENC_BIG_ENDIAN);
l_offset+=3*revFchLen;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Dcch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
dcchSupported = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(dcchSupported == 1)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Type_Specific_Fields, tvb, (l_offset/8),1, ENC_NA);
proto_item_append_text(item1, "Dcch Records");
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Dcch_Frame_Size, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_For_Dcch_Len, tvb, l_offset, 3, ENC_BIG_ENDIAN);
forDcchLen = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
if(forDcchLen > 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_For_Dcch_Rc_Map, tvb, l_offset, 3*forDcchLen, ENC_BIG_ENDIAN);
l_offset+=3*forDcchLen;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rev_Dcch_Len, tvb, l_offset, 3, ENC_BIG_ENDIAN);
revDcchLen = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
if (revDcchLen > 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rev_Dcch_Rc_Map, tvb, l_offset, 3*revDcchLen, ENC_BIG_ENDIAN);
l_offset+=3*revDcchLen;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Rev_Fch_Gating_Req, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
if(prevInUse >= 7)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sts_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_ThreeXCchSupported , tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Wll_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
wllIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if (wllIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Wll_Device_Type, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_Hook_Status, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Enc_Info_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
encInfoIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(encInfoIncl == 1)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Sig_Encrypt_Supp, tvb, (l_offset/8),1, ENC_NA);
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Cmea, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ecmea, tvb, l_offset, 1, ENC_BIG_ENDIAN);
ecmea = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rea, tvb, l_offset, 1, ENC_BIG_ENDIAN);
rea = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
proto_tree_add_bits_item(subtree, hf_cdma2k_DSig_Encrypt_Req, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_CSig_Encrypt_Req, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
if(ecmea == 1 || rea == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Sseq_H, tvb, l_offset, 24, ENC_BIG_ENDIAN);
l_offset+=24;
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Sseq_H_Sig, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Ui_Encrypt_Req, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Ui_Encrypt_Sup, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Sync_Id_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
syncIdIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(syncIdIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sync_Id_Len, tvb, l_offset, 4, ENC_BIG_ENDIAN);
syncIdLen = tvb_get_bits8(tvb,l_offset, 4);
l_offset+=4;
item1 = proto_tree_add_item(subtree, hf_cdma2k_Sync_Id, tvb, l_offset/8,syncIdLen, ENC_NA);
while(syncIdLen > 0)
{
proto_item_append_text(item1, " %02x",tvb_get_bits8(tvb,l_offset, 8));
l_offset+=8;
syncIdLen--;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_So_Bitmap_Ind, tvb, l_offset, 2, ENC_BIG_ENDIAN);
soBitmapInd = tvb_get_bits8(tvb,l_offset, 2);
l_offset+=2;
if(soBitmapInd != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_So_Group_Num, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
proto_tree_add_bits_item(subtree, hf_cdma2k_So_Bitmap, tvb, l_offset, 4*soBitmapInd, ENC_BIG_ENDIAN);
l_offset+=4*soBitmapInd;
}
}
/* Currently IWS Stack supports only till Mobile Protocol Revision Value 7 */
/*if(mob_P_Rev_Rx >= 8)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Alt_Band_Class_Sup, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
if(mob_P_Rev_Rx >= 9)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Msg_Int_Info_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
msgIntInfoIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(msgIntInfoIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sig_Integrity_Sup_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
sigIntegritySupIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(sigIntegritySupIncl ==1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sig_Integrity_Sup, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree, hf_cdma2k_Alt_Sig_Integrity_Req, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Key_Id, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Sseq_H_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
newSseqHIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(newSseqHIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Sseq_H, tvb, l_offset, 24, ENC_BIG_ENDIAN);
l_offset+=24;
proto_tree_add_bits_item(subtree, hf_cdma2k_New_Sseq_H_Sig, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_For_Pdch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
forPdchSupported = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(forPdchSupported == 1)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Type_Specific_Fields, tvb, (l_offset/8),1, ENC_NA);
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ack_Delay, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Num_Arq_Chan, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_For_Pdch_Len, tvb, l_offset, 2, ENC_BIG_ENDIAN);
forPdchLen = tvb_get_bits8(tvb,l_offset, 2);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_For_Pdch_Rc_Map, tvb, l_offset, 3*(forPdchLen+1), ENC_BIG_ENDIAN);
l_offset+=3*(forFchLen+1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ch_Config_Sup_Map_Len, tvb, l_offset, 2, ENC_BIG_ENDIAN);
chConfigSupMapLen = tvb_get_bits8(tvb,l_offset, 2);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Ch_Config_Sup_Map, tvb, l_offset, 3*(chConfigSupMapLen + 1), ENC_BIG_ENDIAN);
l_offset+=3*(chConfigSupMapLen + 1);
}
}
if(chInd == 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Ext_Ch_Ind, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
}
if(mob_P_Rev_Rx >= 11)
{
if(slotCycleIndex != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sign_Slot_Cycle_Index, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Bcmc_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
bcmcIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(bcmcIncl !=0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Bcmc_Pref_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Fundicated_Bcmc_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
fundicatedBcmcSupported = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(fundicatedBcmcSupported == 1)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Type_Specific_Fields, tvb, (l_offset/8),1, ENC_NA);
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Fundicated_Bcmc_Ch_Sup_Map_Len, tvb, l_offset, 2, ENC_BIG_ENDIAN);
fundicatedBcmcChSupMapLen = tvb_get_bits8(tvb,l_offset, 2);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Fundicated_Bcmc_Ch_Sup_Map, tvb, l_offset, 3*(fundicatedBcmcChSupMapLen + 1), ENC_BIG_ENDIAN);
l_offset+=3*(fundicatedBcmcChSupMapLen + 1);
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Auth_Signature_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
authSignatureIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(authSignatureIncl !=0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Time_Stamp_Short_Length, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree, hf_cdma2k_Time_Stamp_Short, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;/ * Length needs to be check * /
proto_tree_add_bits_item(subtree, hf_cdma2k_Num_Bcmc_Programs, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
}
}*/
if(l_offset%8 == 0)
*offset = (l_offset/8);
else
*offset = (l_offset/8) + 1;
}
/* Helper function to decode Handoff Direction Message Parameters */
static void cdma2k_message_HANDOFF_DIR(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset, guint16 msgType)
{
guint16 useTime = -1, parmsIncl = -1, searchIncl = -1, extraParmsIncl = -1;
guint16 l_offset = -1, returnIfHandoffFail = -1, scrIncl = -1, nnscrIncl = -1;
guint16 recLen= -1, pwrCntlStepIncl = -1, schIncl = -1, startTimeIncl = -1;
guint16 loop = -1, usePcTime = -1, chInd = -1, gatMode = -1, pwrCntlDelayIncl = -1;
guint16 encryptMode = -1, linkIncl = -1, pRev = -1, syncIdIncl = -1, syncIdLen = -1;
guint16 ccInfoIncl = -1, noCallAssign = -1, resInd = -1, cdmaRepSup = -1, plcmIncl = -1;
guint16 plcmType = -1, dropTRangeIncl = -1, fwdPDChSup = -1, encIncl = -1, sidIncl = -1;
guint16 nidIncl = -1, csSup = -1, pacZoneId = -1, pzHysEnabled = -1, pzHysInfoIncl = -1;
guint16 bcmcTchSup = -1, numForAssign = -1, schBcmc = -1, addPlcmSchIncl = -1;
guint16 addPlcmSchType = -1, fSchOuterCodeIncl = -1, txPwrIncl = -1, txPwrDflt = -1;
proto_tree *subtree = NULL, *subtree1 = NULL, *subtree2 = NULL;
proto_item *item1 = NULL, *item2 = NULL, *item3 = NULL;
if(msgType == 34)
{
item = proto_tree_add_item(tree,hf_cdma2k_UhdmMsg, tvb, *offset,-1, ENC_NA);
}
else
{
item = proto_tree_add_item(tree,hf_cdma2k_MeIdUhdmMsg, tvb, *offset,-1, ENC_NA);
}
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree, hf_cdma2k_Use_Time, tvb, *offset*8,1, ENC_BIG_ENDIAN);
useTime = tvb_get_bits8(tvb,*offset*8,1);
l_offset = *offset*8 + 1;
if(useTime == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Action_Time, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+= 6;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Hdm_Seq, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
proto_tree_add_bits_item(subtree, hf_cdma2k_Parms_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
parmsIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(parmsIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_P_Rev, tvb, l_offset, 8, ENC_BIG_ENDIAN);
pRev = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=8;
proto_tree_add_bits_item(subtree, hf_cdma2k_Serv_Neg_Type, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Search_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
searchIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(searchIncl == 1)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Pilot_Search, tvb, (l_offset/8),7, ENC_NA);
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Srch_Win_A, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Srch_Win_N, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Srch_Win_R, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_T_Add, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
proto_tree_add_bits_item(subtree1, hf_cdma2k_T_Drop, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
proto_tree_add_bits_item(subtree1, hf_cdma2k_T_Comp, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_T_Tdrop, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Soft_Slope, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Add_Intercept, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Drop_Intercept, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Extra_Parms_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
extraParmsIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(extraParmsIncl == 1)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Extra_Parms, tvb, (l_offset/8),1, ENC_NA);
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Packet_Zone_Id, tvb, l_offset, 8, ENC_BIG_ENDIAN);
pacZoneId = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Frame_Offset, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Private_Lcm, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reset_L2, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reset_Fpc, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Encrypt_Mode, tvb, l_offset, 2, ENC_BIG_ENDIAN);
encryptMode = tvb_get_bits8(tvb,l_offset, 2);
l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Nom_Pwr_Ext, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Nom_Pwr, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Rlgain_Traffic_Pilot, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Default_Rlag, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Num_Preamble, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Band_Class, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Cdma_Freq, tvb, l_offset, 11, ENC_BIG_ENDIAN);
l_offset+=11;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Return_If_Handoff_Fail, tvb, l_offset, 1, ENC_BIG_ENDIAN);
returnIfHandoffFail = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(returnIfHandoffFail == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Complete_Search, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Periodic_Search, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Scr_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
scrIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(scrIncl == 1)
{
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Scr, tvb, (l_offset/8),1, ENC_NA);
subtree2 = proto_item_add_subtree(item2, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree2,hf_cdma2k_Serv_Con_Seq, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Record_Type, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Record_Len, tvb, l_offset, 8, ENC_BIG_ENDIAN);
recLen = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=8;
item3 = proto_tree_add_item(subtree2,hf_cdma2k_Type_Specific_Fields, tvb, (l_offset/8),recLen+1, ENC_NA);
while(recLen>0)
{
proto_item_append_text(item3," 0x%02x",tvb_get_bits8(tvb,l_offset, 8));
l_offset+=8;
recLen-=1;
}
} /* scrIncl */
proto_tree_add_bits_item(subtree1, hf_cdma2k_Nnscr_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
nnscrIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(nnscrIncl == 1)
{
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Nnscr, tvb, (l_offset/8),1, ENC_NA);
subtree2 = proto_item_add_subtree(item2, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree2,hf_cdma2k_Record_Type, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Record_Len, tvb, l_offset, 8, ENC_BIG_ENDIAN);
recLen = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=8;
item3 = proto_tree_add_item(subtree2,hf_cdma2k_Type_Specific_Fields, tvb, (l_offset/8),recLen, ENC_NA);
while(recLen>0)
{
proto_item_append_text(item3," 0x%02x",tvb_get_bits8(tvb,l_offset, 8));
l_offset+=8;
recLen-=1;
}
} /* nnscrIncl */
} /* extraParmsIncl */
proto_tree_add_bits_item(subtree, hf_cdma2k_Use_Pwr_Cntl_Step, tvb, l_offset, 1, ENC_BIG_ENDIAN);
pwrCntlStepIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(pwrCntlStepIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Pwr_Cntl_Step, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Clear_Retry_Delay, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Sch_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
schIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(schIncl == 1)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Sch, tvb, (l_offset/8),7, ENC_NA);
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Num_For_Assign, tvb, l_offset, 2, ENC_BIG_ENDIAN);
recLen = tvb_get_bits8(tvb,l_offset, 2);
numForAssign = recLen;
l_offset+=2;
for(loop = 1; loop <= recLen; loop++)
{
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Record_For_Assign, tvb, (l_offset/8),3, ENC_NA);
proto_item_append_text(item2, " : [%02d]",loop);
subtree2 = proto_item_add_subtree(item2, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Id, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Duration, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Start_Time_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
startTimeIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(startTimeIncl == 1)
{
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Start_Time, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
}
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sccl_Index, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Num_Rev_Assign, tvb, l_offset, 2, ENC_BIG_ENDIAN);
recLen = tvb_get_bits8(tvb,l_offset, 2);
l_offset+=2;
for(loop = 1; loop <= recLen; loop++)
{
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Record_Rev_Assign, tvb, (l_offset/8),3, ENC_NA);
proto_item_append_text(item2, " : [%02d]",loop);
subtree2 = proto_item_add_subtree(item2, ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Id, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Duration, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Start_Time_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
startTimeIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(startTimeIncl == 1)
{
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Start_Time, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
}
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Num_Bits_Idx, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
} /* schIncl */
proto_tree_add_bits_item(subtree, hf_cdma2k_Fpc_Subchain_Gain, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
proto_tree_add_bits_item(subtree, hf_cdma2k_Use_Pc_Time, tvb, l_offset, 1, ENC_BIG_ENDIAN);
usePcTime = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(usePcTime == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Pc_Action_Time, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Ch_Ind, tvb, l_offset, 3, ENC_BIG_ENDIAN);
chInd = tvb_get_bits8(tvb,l_offset, 3);
l_offset+=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_Active_Set_Rec_Len, tvb, l_offset, 8, ENC_BIG_ENDIAN);
recLen = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=8;
if((recLen > 0) && (chInd != 0))
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Active_Set_Rec_Fields, tvb, (l_offset/8),recLen, ENC_NA);
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
cdma2k_message_ACTIVE_SET_RECORD_FIELDS(item1, tvb, subtree1, &l_offset, chInd, schIncl);
}
else
{
l_offset+=recLen*8;
}
if((chInd != 2) && (chInd != 6))
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Rev_Fch_Gating_Mode, tvb, l_offset, 1, ENC_BIG_ENDIAN);
gatMode = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
}
if(gatMode == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Rev_Pwr_Cntl_Delay_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
pwrCntlDelayIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(pwrCntlDelayIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Rev_Pwr_Cntl_Delay, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
}
}
if(encryptMode == 2 || encryptMode == 3)
{
if(encryptMode == 3)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_D_Sig_Encrypt_Mode, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Enc_Key_Size, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_3xfl_1xrl_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
linkIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(linkIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_1xrl_Freq_Offset, tvb, l_offset, 2, ENC_BIG_ENDIAN);
l_offset+=2;
}
if(scrIncl == 1 || nnscrIncl == 1 || pRev >= 11)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sync_Id_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
syncIdIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(syncIdIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sync_Id_Len, tvb, l_offset, 4, ENC_BIG_ENDIAN);
syncIdLen = tvb_get_bits8(tvb,l_offset, 4);
l_offset+=4;
item1 = proto_tree_add_item(subtree, hf_cdma2k_Sync_Id, tvb, l_offset/8,syncIdLen, ENC_NA);
while(syncIdLen > 0)
{
proto_item_append_text(item1, " %02x",tvb_get_bits8(tvb,l_offset, 8));
l_offset+=8;
syncIdLen--;
}
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Cc_Info_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
ccInfoIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(ccInfoIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Num_Calls_Assign, tvb, l_offset, 8, ENC_BIG_ENDIAN);
noCallAssign = tvb_get_bits8(tvb,l_offset, 8);
l_offset+=8;
for(loop = 1; loop <= noCallAssign; loop++)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Record_Calls_Assign, tvb, l_offset/8,noCallAssign*2, ENC_NA);
proto_item_append_text(item1, " : [%02d]",loop);
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Con_Ref, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Response_Ind, tvb, l_offset, 1, ENC_BIG_ENDIAN);
resInd = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(resInd == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Tag, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
else
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Bypass_Alert_Answer, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Cs_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
csSup = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(msgType == 53)
{
if(pRev == 6)
{
if(encryptMode == 2 && scrIncl ==1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, l_offset, 13, ENC_BIG_ENDIAN);
l_offset+=13;
}
else if(encryptMode == 2 && scrIncl !=1 && nnscrIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, l_offset, 12, ENC_BIG_ENDIAN);
l_offset+=12;
}
else if(encryptMode == 2 && scrIncl !=1 && nnscrIncl != 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, l_offset, 11, ENC_BIG_ENDIAN);
l_offset+=11;
}
else if(encryptMode != 2 && scrIncl ==1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, l_offset, 10, ENC_BIG_ENDIAN);
l_offset+=10;
}
else if(encryptMode != 2 && scrIncl !=1 && nnscrIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, l_offset, 9, ENC_BIG_ENDIAN);
l_offset+=9;
}
else if(encryptMode != 2 && scrIncl !=1 && nnscrIncl != 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
}
else if(pRev == 7 || pRev == 8)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Plcm_Type_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
plcmIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(plcmIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Plcm_Type, tvb, l_offset, 4, ENC_BIG_ENDIAN);
plcmType = tvb_get_bits8(tvb,l_offset, 4);
l_offset+=4;
if(plcmType == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Plcm_39, tvb, l_offset, 39, ENC_BIG_ENDIAN);
l_offset+=39;
}
}
}
if(pRev > 7 && msgType == 34)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Chm_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Cdma_Off_Time_Rep_Sup_Ind, tvb, l_offset, 1, ENC_BIG_ENDIAN);
cdmaRepSup = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(cdmaRepSup == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Cdma_Off_Time_Rep_Threshold_Unit, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Cdma_Off_Time_Rep_Threshold, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Release_To_Idle_Ind, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Msg_Integrity_Sup, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Gen_2g_Key, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Register_In_Idle, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Plcm_Type_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
plcmIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(plcmIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Plcm_Type, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree, hf_cdma2k_Plcm_39, tvb, l_offset, 39, ENC_BIG_ENDIAN);
l_offset+=39;
}
if(searchIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_T_Tdrop_Range_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
dropTRangeIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(dropTRangeIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_T_Tdrop_Range, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_For_Pdch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
fwdPDChSup = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(fwdPDChSup == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Pdch_Chm_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Pilot_Info_Req_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Enc_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
encIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(encIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sig_Encrypt_Sup, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree, hf_cdma2k_Ui_Encrypt_Sup, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Use_Sync_Id, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Sid_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
sidIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(sidIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sid, tvb, l_offset, 15, ENC_BIG_ENDIAN);
l_offset+=15;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Nid_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
nidIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(nidIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Nid, tvb, l_offset, 16, ENC_BIG_ENDIAN);
l_offset+=16;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Sdb_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
if(csSup== 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Mob_Qos, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Ms_Init_Pos_Loc_Sup_Ind, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
if(pRev > 9 && msgType == 34)
{
if(fwdPDChSup == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Rev_Pdch_Supported, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
if(pacZoneId != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Pz_Hyst_Enabled, tvb, l_offset, 1, ENC_BIG_ENDIAN);
pzHysEnabled = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(pzHysEnabled == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Pz_Hyst_Info_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
pzHysInfoIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(pzHysInfoIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Pz_Hyst_List_Len, tvb, l_offset, 4, ENC_BIG_ENDIAN);
l_offset+=4;
proto_tree_add_bits_item(subtree, hf_cdma2k_Pz_Hyst_Act_Timer, tvb, l_offset, 8, ENC_BIG_ENDIAN);
l_offset+=8;
proto_tree_add_bits_item(subtree, hf_cdma2k_Pz_Hyst_Timer_Mul, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_Pz_Hyst_Timer_Exp, tvb, l_offset, 5, ENC_BIG_ENDIAN);
l_offset+=5;
}
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Bcmc_On_Traffic_Sup, tvb, l_offset, 1, ENC_BIG_ENDIAN);
bcmcTchSup = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(bcmcTchSup == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Auto_Re_Traffic_Allowed_Ind, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
}
if(bcmcTchSup == 1 || numForAssign == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Sch_Bcmc_Ind, tvb, l_offset, 1, ENC_BIG_ENDIAN);
schBcmc = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
}
if(schBcmc == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Add_Plcm_For_Sch_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
addPlcmSchIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(addPlcmSchIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Add_Plcm_For_Sch_Type, tvb, l_offset, 1, ENC_BIG_ENDIAN);
addPlcmSchType = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(addPlcmSchType == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Add_Plcm_For_Sch_35, tvb, l_offset, 35, ENC_BIG_ENDIAN);
l_offset+=35;
}
}
for(loop =1; loop <= numForAssign; loop++)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Record_Sch_Bcmc, tvb, l_offset/8,numForAssign*2, ENC_NA);
proto_item_append_text(item1, " : [%02d]",loop);
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Use_Add_Plcm_For_Sch, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Fsch_Outercode_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
fSchOuterCodeIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(fSchOuterCodeIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Fsch_Outercode_Rate, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Fsch_Outercode_Offset, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
}
}
}
if(csSup== 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Max_Add_Serv_Instance, tvb, l_offset, 3, ENC_BIG_ENDIAN);
l_offset+=3;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Use_Ch_Cfg_Rrm, tvb, l_offset, 1, ENC_BIG_ENDIAN);
l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Tx_Pwr_Limit_Incl, tvb, l_offset, 1, ENC_BIG_ENDIAN);
txPwrIncl = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(txPwrIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Tx_Pwr_Limit_Default, tvb, l_offset, 1, ENC_BIG_ENDIAN);
txPwrDflt = tvb_get_bits8(tvb,l_offset, 1);
l_offset+=1;
if(txPwrDflt == 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Tx_Pwr_Limit, tvb, l_offset, 6, ENC_BIG_ENDIAN);
l_offset+=6;
}
}
}
if(l_offset%8 == 0)
{
*offset = (l_offset/8);
}
else
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, l_offset, (8-(l_offset%8)), ENC_BIG_ENDIAN);
*offset = (l_offset/8) + 1;
}
}
/* Helper function to decode Alert With Info Message Parameters */
static void cdma2k_message_ALERT_WITH_INFO(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint *offset)
{
guint16 recType = -1, recLen = -1, extBit = -1, numGrps = -1;
guint16 polIncl = -1, inc = -1;
proto_tree *subtree = NULL, *subtree1 = NULL;
proto_item *item1 = NULL, *item2 = NULL;
item = proto_tree_add_item(tree,hf_cdma2k_AlertWithInfoMsg, tvb, *offset,-1, ENC_NA);
subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1);
inc = 1;
while(tvb_captured_length_remaining(tvb,*offset) != 0 )
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Info_Rec, tvb, *offset,1, ENC_NA);
proto_item_append_text(item1," : [%02d]", inc);
inc++;
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_item(subtree1, hf_cdma2k_Record_Type, tvb, *offset,1, ENC_BIG_ENDIAN);
recType = tvb_get_bits8(tvb,*offset*8,8);
*offset+=1;
proto_tree_add_item(subtree1, hf_cdma2k_Record_Len, tvb, *offset,1, ENC_BIG_ENDIAN);
recLen = tvb_get_bits8(tvb,*offset*8,8);
*offset+=1;
item1 = proto_tree_add_item(subtree1, hf_cdma2k_Type_Specific_Fields, tvb, *offset,recLen, ENC_NA);
switch(recType)
{
case 1:
{
proto_item_append_text(item1," DISPLAY");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Chari, tvb, *offset,recLen, ENC_NA);
proto_item_append_text(item2, " - ASCII Values Of Characters : ");
while(recLen > 0)
{
proto_item_append_text(item2, "%02x ",tvb_get_bits8(tvb,*offset*8,8));
*offset+=1;
recLen-=1;
}
break;
}
case 2:
{
proto_item_append_text(item1," CALLED PARTY NUMBER");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Number_Type, tvb, *offset*8,3, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Number_Plan, tvb, *offset*8+3,4, ENC_BIG_ENDIAN);
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Chari, tvb, *offset,recLen, ENC_NA);
proto_item_append_text(item2, " - ASCII Values Of Called Party Number : ");
while(recLen > 1)
{
proto_item_append_text(item2, "%02x ",tvb_get_bits8(tvb,*offset*8+7,8));
*offset+=1;
recLen-=1;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+7,1, ENC_BIG_ENDIAN);
*offset+=1;
break;
}
case 3:
{
proto_item_append_text(item1," CALLING PARTY NUMBER");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Number_Type, tvb, *offset*8,3, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Number_Plan, tvb, *offset*8+3,4, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pres_Indicator, tvb, *offset*8+7,2, ENC_BIG_ENDIAN);
*offset+=1;
recLen-=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Scr_Indicator, tvb, *offset*8+1,2, ENC_BIG_ENDIAN);
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Chari, tvb, *offset,recLen, ENC_NA);
proto_item_append_text(item2, " - ASCII Values Of Calling Party Number : ");
while(recLen > 1)
{
proto_item_append_text(item2, "%02x ",tvb_get_bits8(tvb,*offset*8+3,8));
*offset+=1;
recLen-=1;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+3,5, ENC_BIG_ENDIAN);
*offset+=1;
break;
}
case 5:
{
proto_item_append_text(item1," SIGNAL");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Signal_Type, tvb, *offset*8,2, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Alert_Pitch, tvb, *offset*8+2,2, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Signal, tvb, *offset*8+4,6, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+2,6, ENC_BIG_ENDIAN);
*offset+=1;
break;
}
case 6:
{
proto_item_append_text(item1," MESSAGE WAITING");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_item(subtree1, hf_cdma2k_Msg_Count, tvb, *offset,1, ENC_BIG_ENDIAN);
*offset+=1;
break;
}
case 8:
{
proto_item_append_text(item1," CALLED PARTY SUBADDRESS");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Extension_Bit, tvb, *offset*8,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Subaddress_Type, tvb, *offset*8+1,3, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Odd_Even_Ind, tvb, *offset*8+4,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+5,3, ENC_BIG_ENDIAN);
*offset+=1;
recLen-=1;
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Chari, tvb, *offset,recLen-1, ENC_NA);
proto_item_append_text(item2, " - ASCII Values Of Called Party Subaddress : ");
while(recLen > 1)
{
proto_item_append_text(item2, "%02x ",tvb_get_bits8(tvb,*offset*8,8));
*offset+=1;
recLen-=1;
}
break;
}
case 9:
{
proto_item_append_text(item1," CALLING PARTY SUBADDRESS");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Extension_Bit, tvb, *offset*8,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Subaddress_Type, tvb, *offset*8+1,3, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Odd_Even_Ind, tvb, *offset*8+4,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+5,3, ENC_BIG_ENDIAN);
*offset+=1;
recLen-=1;
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Chari, tvb, *offset,recLen-1, ENC_NA);
proto_item_append_text(item2, " - ASCII Values Of Calling Party Subaddress : ");
while(recLen > 1)
{
proto_item_append_text(item2, "%02x ",tvb_get_bits8(tvb,*offset*8,8));
*offset+=1;
recLen-=1;
}
break;
}
case 11:
{
proto_item_append_text(item1," REDIRECTING NUMBER");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Extension_Bit, tvb, *offset*8,1, ENC_BIG_ENDIAN);
extBit = tvb_get_bits8(tvb,*offset*8,1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Number_Type, tvb, *offset*8+1,3, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Number_Plan, tvb, *offset*8+4,4, ENC_BIG_ENDIAN);
*offset+=1;
recLen-=1;
if(extBit == 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Extension_Bit, tvb, *offset*8,1, ENC_BIG_ENDIAN);
extBit = tvb_get_bits8(tvb,*offset*8,1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pres_Indicator, tvb, *offset*8+1,2, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+3,3, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Scr_Indicator, tvb, *offset*8+6,2, ENC_BIG_ENDIAN);
*offset+=1;
recLen-=1;
}
if(extBit == 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Extension_Bit, tvb, *offset*8,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+1,3, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Redirection_Reason, tvb, *offset*8+4,4, ENC_BIG_ENDIAN);
*offset+=1;
recLen-=1;
}
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Chari, tvb, *offset,recLen-1, ENC_NA);
proto_item_append_text(item2, " - ASCII Values Of Redirecting Number : ");
while(recLen > 1)
{
proto_item_append_text(item2, "%02x ",tvb_get_bits8(tvb,*offset*8,8));
*offset+=1;
recLen-=1;
}
break;
}
case 12:
{
proto_item_append_text(item1," REDIRECTING SUBADDRESS");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Extension_Bit, tvb, *offset*8,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Subaddress_Type, tvb, *offset*8+1,3, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Odd_Even_Ind, tvb, *offset*8+4,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+5,3, ENC_BIG_ENDIAN);
*offset+=1;
recLen-=1;
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Chari, tvb, *offset,recLen-1, ENC_NA);
proto_item_append_text(item2, " - ASCII Values Of Redirecting Subaddress : ");
while(recLen > 1)
{
proto_item_append_text(item2, "%02x ",tvb_get_bits8(tvb,*offset*8,8));
*offset+=1;
recLen-=1;
}
break;
}
case 13:
{
proto_item_append_text(item1," METER PULSES");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pulse_Freq, tvb, *offset*8,11, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pulse_On_Time, tvb, *offset*8+3,8, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pulse_Off_Time, tvb, *offset*8+3,8, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pulse_Count, tvb, *offset*8+3,4, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+7,1, ENC_BIG_ENDIAN);
*offset+=1;
break;
}
case 14:
{
proto_item_append_text(item1," PARAMETRIC ALERTING");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_item(subtree1, hf_cdma2k_Cadence_Count, tvb, *offset,1, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Num_Grps, tvb, *offset*8,4, ENC_BIG_ENDIAN);
numGrps = tvb_get_bits8(tvb,*offset*8,4);
while(numGrps > 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Amplitude, tvb, *offset*8+4,8, ENC_BIG_ENDIAN);
*offset+=1;
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Freq, tvb, *offset,2, ENC_NA);
proto_item_append_text(item2, " [01] : %02d", tvb_get_bits8(tvb,*offset*8+4,10));
*offset+=1;
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Freq, tvb, *offset,2, ENC_NA);
proto_item_append_text(item2, " [02] : %02d", tvb_get_bits8(tvb,*offset*8+6,10));
*offset+=2;
proto_tree_add_item(subtree1, hf_cdma2k_On_Time, tvb, *offset,1, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_item(subtree1, hf_cdma2k_Off_Time, tvb, *offset,1, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Repeat, tvb, *offset*8,4, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Delay, tvb, *offset*8+4,8, ENC_BIG_ENDIAN);
*offset+=1;
numGrps-=1;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Cadence_Type, tvb, *offset*8+4,2, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+6,2, ENC_BIG_ENDIAN);
*offset+=1;
break;
}
case 15:
{
proto_item_append_text(item1," LINE CONTROL");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Polarity_Incl, tvb, *offset*8,1, ENC_BIG_ENDIAN);
polIncl = tvb_get_bits8(tvb,*offset*8,1);
if(polIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Toggle_Mode, tvb, *offset*8+1,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reverse_Polarity, tvb, *offset*8+2,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pwr_Denial_Time, tvb, *offset*8+3,8, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+3,5, ENC_BIG_ENDIAN);
*offset+=1;
}
else
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pwr_Denial_Time, tvb, *offset*8+1,8, ENC_BIG_ENDIAN);
*offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+1,7, ENC_BIG_ENDIAN);
*offset+=1;
}
break;
}
case 21:
{
proto_item_append_text(item1," CALL WAITING INDICATOR");
subtree1 = proto_item_add_subtree(item1, ett_cdma2k_subtree1);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Call_Waiting_Ind, tvb, *offset*8,1, ENC_BIG_ENDIAN);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Reserved, tvb, *offset*8+1,7, ENC_BIG_ENDIAN);
*offset+=1;
break;
}
default:
{
proto_item_append_text(item1," Invalid / Unsupported Record Type in Alert With Info Message");
break;
}
} /* Switch */
} /* while */
}
/* Helper function to decode Active Set Record Field Parameters */
static void cdma2k_message_ACTIVE_SET_RECORD_FIELDS(proto_item *item _U_, tvbuff_t *tvb, proto_tree *subtree, guint16 *l_offset, guint16 chInd, guint16 schIncl)
{
guint16 loop = -1, numForSch = -1, numRevSch = -1, pilotCnt = -1, srchOffsetIncl = -1;
guint16 pilotInfoIncl = -1, recLen = -1, schCnt = -1, fchInfoIncl = -1, fchLowIncl = -1;
guint16 fchHighIncl = -1, schInfoIncl = -1, schLowIncl = -1, ccshIncl = -1, ccshEncIncl = -1;
guint16 pilotIncl = -1, schHighIncl = -1, dcchInfoIncl = -1, dcchLowIncl = -1, dcchHighIncl = -1;
guint16 bcmcFunIncl = -1, addPlcmFchIncl = -1, cpcchInfoIncl = -1, addPlcmFchType = -1;
proto_tree *subtree1 = NULL, *subtree2 = NULL;
proto_item *item1 = NULL, *item2 = NULL;
if(schIncl != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Num_For_Sch, tvb, *l_offset, 5, ENC_BIG_ENDIAN);
numForSch = tvb_get_bits8(tvb,*l_offset, 5);
*l_offset+=5;
if(numForSch != 0)
{
for(loop = 1; loop <= numForSch; loop++)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Record_For_Sch, tvb, *l_offset/8,numForSch*2, ENC_NA);
proto_item_append_text(item1," : [%d]", loop);
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Sch_Id, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
*l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Sccl_Index, tvb, *l_offset, 4, ENC_BIG_ENDIAN);
*l_offset+=4;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Sch_Num_Bits_Idx, tvb, *l_offset, 4, ENC_BIG_ENDIAN);
*l_offset+=4;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_Num_Rev_Sch, tvb, *l_offset, 5, ENC_BIG_ENDIAN);
numRevSch = tvb_get_bits8(tvb,*l_offset, 5);
*l_offset+=5;
if(numRevSch != 0)
{
for(loop = 1; loop <= numRevSch; loop++)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Record_Rev_Sch, tvb, *l_offset/8,numRevSch*1, ENC_NA);
proto_item_append_text(item1," : [%d]", loop);
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Sch_Id, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
*l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Walsh_Id, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
*l_offset+=1;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Sch_Num_Bits_Idx, tvb, *l_offset, 4, ENC_BIG_ENDIAN);
*l_offset+=4;
}
}
} /* schIncl */
proto_tree_add_bits_item(subtree, hf_cdma2k_Num_Pilots, tvb, *l_offset, 3, ENC_BIG_ENDIAN);
pilotCnt = tvb_get_bits8(tvb,*l_offset, 3);
*l_offset+=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_Srch_Offset_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
srchOffsetIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
for(loop = 1; loop <= pilotCnt; loop++)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Record_Pilots, tvb, *l_offset/8,1, ENC_NA);
proto_item_append_text(item1," : [%d]", loop);
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pilot_Pn, tvb, *l_offset, 9, ENC_BIG_ENDIAN);
*l_offset+=9;
if(srchOffsetIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Srch_Offset, tvb, *l_offset, 3, ENC_BIG_ENDIAN);
*l_offset+=3;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Add_Pilot_Rec_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
pilotInfoIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(pilotInfoIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pilot_Rec_Type, tvb, *l_offset, 3, ENC_BIG_ENDIAN);
*l_offset+=3;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Record_Len, tvb, *l_offset, 3, ENC_BIG_ENDIAN);
recLen = tvb_get_bits8(tvb,*l_offset, 3);
*l_offset+=3;
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Type_Specific_Fields, tvb, (*l_offset/8),recLen+1, ENC_NA);
while(recLen > 0)
{
proto_item_append_text(item2," 0x%02x",tvb_get_bits8(tvb,*l_offset, 8));
*l_offset+=8;
recLen-=1;
}
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_Pwr_Comb_Ind, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
*l_offset+=1;
if(chInd == 5 || chInd == 7)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Code_Chan_Fch, tvb, *l_offset, 11, ENC_BIG_ENDIAN);
*l_offset+=11;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Qof_Mask_Id_Fch, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
}
if(chInd == 2 || chInd == 6 || chInd == 7)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Code_Chan_Dcch, tvb, *l_offset, 11, ENC_BIG_ENDIAN);
*l_offset+=11;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Qof_Mask_Id_Dcch, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
}
if(schIncl != 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Num_Sch, tvb, *l_offset, 5, ENC_BIG_ENDIAN);
schCnt = tvb_get_bits8(tvb,*l_offset, 5);
*l_offset+=5;
for(loop = 1; loop <= schCnt; loop++)
{
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Record_Sch, tvb, *l_offset/8,-1, ENC_NA);
proto_item_append_text(item2," : [%d]", loop);
subtree2 = proto_item_add_subtree(item2,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Id, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
*l_offset+=1;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sccl_Index, tvb, *l_offset, 4, ENC_BIG_ENDIAN);
*l_offset+=4;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Pilot_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
pilotIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(pilotIncl == 1)
{
proto_tree_add_bits_item(subtree2,hf_cdma2k_Code_Chan_Sch, tvb, *l_offset, 11, ENC_BIG_ENDIAN);
*l_offset+=11;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Qof_Mask_Id_Sch, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
}
}
} /* schIncl */
} /* loop */
if(chInd == 5 || chInd == 7)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_3xFch_Info_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
fchInfoIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
}
if(chInd == 2 || chInd == 6 || chInd == 7)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_3xDcch_Info_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
dcchInfoIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
}
if((fchInfoIncl == 1) || (dcchInfoIncl == 1))
{
for(loop = 1; loop <= pilotCnt; loop++)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Record_Pilots, tvb, *l_offset/8,-1, ENC_NA);
proto_item_append_text(item1," : [%d]", loop);
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
if(fchInfoIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_3xFch_Low_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
fchLowIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(fchLowIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Qof_Mask_Id_Fch_Low, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Code_Chan_Fch_Low, tvb, *l_offset, 11, ENC_BIG_ENDIAN);
*l_offset+=11;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_3xFch_High_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
fchHighIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(fchHighIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Qof_Mask_Id_Fch_High, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Code_Chan_Fch_High, tvb, *l_offset, 11, ENC_BIG_ENDIAN);
*l_offset+=11;
}
}
if(dcchInfoIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_3xDcch_Low_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
dcchLowIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(dcchLowIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Qof_Mask_Id_Dcch_Low, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Code_Chan_Dcch_Low, tvb, *l_offset, 11, ENC_BIG_ENDIAN);
*l_offset+=11;
}
proto_tree_add_bits_item(subtree1, hf_cdma2k_3xDcch_High_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
dcchHighIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(dcchHighIncl == 1)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_Qof_Mask_Id_Dcch_High, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
proto_tree_add_bits_item(subtree1, hf_cdma2k_Code_Chan_Dcch_High, tvb, *l_offset, 11, ENC_BIG_ENDIAN);
*l_offset+=11;
}
}
if(schIncl != 0)
{
proto_tree_add_bits_item(subtree1, hf_cdma2k_3xSch_Info_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
schInfoIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(schInfoIncl == 1)
{
for(loop = 1; loop <= schCnt; loop++)
{
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Record_Sch, tvb, *l_offset/8,-1, ENC_NA);
proto_item_append_text(item2," : [%d]", loop);
subtree2 = proto_item_add_subtree(item2,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree2,hf_cdma2k_Sch_Id, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
*l_offset+=1;
proto_tree_add_bits_item(subtree2,hf_cdma2k_3xSch_Low_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
schLowIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(schLowIncl == 1)
{
proto_tree_add_bits_item(subtree2,hf_cdma2k_Qof_Mask_Id_Sch_Low, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Code_Chan_Sch_Low, tvb, *l_offset, 11, ENC_BIG_ENDIAN);
*l_offset+=11;
}
proto_tree_add_bits_item(subtree2,hf_cdma2k_3xSch_High_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
schHighIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(schHighIncl == 1)
{
proto_tree_add_bits_item(subtree2,hf_cdma2k_Qof_Mask_Id_Sch_High, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
proto_tree_add_bits_item(subtree2,hf_cdma2k_Code_Chan_Sch_High, tvb, *l_offset, 11, ENC_BIG_ENDIAN);
*l_offset+=11;
}
} /* Sch loop */
} /* schInfoIncl */
} /* schIncl */
} /* Pilot loop */
} /* FchInfoIncl */
proto_tree_add_bits_item(subtree, hf_cdma2k_Ccsh_Included, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
ccshIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(ccshIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Use_Ccsh_Encoder_Time, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
ccshEncIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(ccshEncIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Ccsh_Encoder_Action_Time, tvb, *l_offset, 6, ENC_BIG_ENDIAN);
*l_offset+=6;
}
for(loop = 1; loop <= pilotCnt; loop++)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Record_Pilots, tvb, *l_offset/8,-1, ENC_NA);
proto_item_append_text(item1," : [%d]", loop);
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
for(loop = 1; loop <= schCnt; loop++)
{
item2 = proto_tree_add_item(subtree1, hf_cdma2k_Record_Sch, tvb, *l_offset/8,-1, ENC_NA);
proto_item_append_text(item2," : [%d]", loop);
subtree2 = proto_item_add_subtree(item2,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree2,hf_cdma2k_Ccsh_Encoder_Type, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
*l_offset+=1;
}
}
}
if(chInd == 2 || chInd == 6 || chInd == 7)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Fundicated_Bcmc_Ind, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
bcmcFunIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(chInd == 7 && bcmcFunIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Rev_Fch_Assigned, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
*l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_Add_Plcm_For_Fch_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
addPlcmFchIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(addPlcmFchIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Add_Plcm_For_Fch_Type, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
addPlcmFchType = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(addPlcmFchType == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Add_Plcm_For_Fch_39, tvb, *l_offset, 39, ENC_BIG_ENDIAN);
*l_offset+=39;
}
}
proto_tree_add_bits_item(subtree, hf_cdma2k_For_Cpcch_Info_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
cpcchInfoIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
}
if(((chInd == 2 || chInd == 6) && (bcmcFunIncl == 1)) || ((chInd == 7) && (cpcchInfoIncl == 1)))
{
for(loop = 1; loop <= pilotCnt; loop++)
{
item1 = proto_tree_add_item(subtree, hf_cdma2k_Record_Pilots, tvb, *l_offset/8,-1, ENC_NA);
proto_item_append_text(item1," : [%d]", loop);
subtree1 = proto_item_add_subtree(item1,ett_cdma2k_subtree2);
proto_tree_add_bits_item(subtree1, hf_cdma2k_For_Cpcch_Walsh, tvb, *l_offset, 7, ENC_BIG_ENDIAN);
*l_offset+=7;
proto_tree_add_bits_item(subtree1, hf_cdma2k_For_Cpcsch, tvb, *l_offset, 5, ENC_BIG_ENDIAN);
*l_offset+=5;
}
}
}
if(*l_offset%8 != 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_Reserved, tvb, *l_offset, (8-(*l_offset%8)), ENC_BIG_ENDIAN);
}
}
/* Helper function to decode Authentication Field Parameters */
static void cdma2k_message_AUTH_FIELDS(proto_item *item,tvbuff_t *tvb,proto_tree *subtree,guint16 *l_offset, guint16 headerRecLen)
{
guint16 macIncl = -1, authIncl = -1, sduSseqOrSseqh = -1, endOffset = -1;
endOffset = *l_offset + (headerRecLen*8);
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Mac_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
macIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Auth_Incl, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
authIncl = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(authIncl == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Authr, tvb, *l_offset, 18, ENC_BIG_ENDIAN);
*l_offset+=18;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Randc, tvb, *l_offset, 8, ENC_BIG_ENDIAN);
*l_offset+=8;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Count, tvb, *l_offset, 6, ENC_BIG_ENDIAN);
*l_offset+=6;
}
if(macIncl == 1)
{
if(authIncl == 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Randc, tvb, *l_offset, 8, ENC_BIG_ENDIAN);
*l_offset+=8;
}
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Sdu_KeyId, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Sdu_Algo, tvb, *l_offset, 3, ENC_BIG_ENDIAN);
*l_offset+=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Sdu_Sseq_Or_Sseqh, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
sduSseqOrSseqh = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(sduSseqOrSseqh == 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Sdu_Sseq, tvb, *l_offset, 8, ENC_BIG_ENDIAN);
*l_offset+=8;
}
else
{
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Sdu_Sseqh, tvb, *l_offset, 24, ENC_BIG_ENDIAN);
*l_offset+=24;
}
}
/*Skip bits till Header Record Length*/
if(*l_offset < endOffset)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Reserved, tvb, *l_offset, (endOffset-*l_offset), ENC_BIG_ENDIAN);
*l_offset+=(endOffset-*l_offset);
}
else if(*l_offset > endOffset)
{
proto_item_append_text(item," : Offset corruption in Authentication Fields");
}
}
/* Helper function to decode Addressing Field Parameters */
static void cdma2k_message_ADDR_FIELDS(proto_item *item,tvbuff_t *tvb,proto_tree *tree,guint16 *l_offset, guint16 headerRecLen)
{
proto_item* ti;
proto_tree *sub_tree;
guint16 msIdType = -1, extMsIdType = -1, msIdLen = -1, endOffset = -1;
endOffset = *l_offset + (headerRecLen*8);
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_MsId_Type, tvb, *l_offset, 3, ENC_BIG_ENDIAN);
msIdType = tvb_get_bits8(tvb,*l_offset, 3);
*l_offset+=3;
if(msIdType == 4)
{
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Ext_MsId_Type, tvb, *l_offset, 3, ENC_BIG_ENDIAN);
extMsIdType = tvb_get_bits8(tvb,*l_offset, 3);
*l_offset+=3;
}
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_MsId_Length, tvb, *l_offset, 4, ENC_BIG_ENDIAN);
msIdLen = tvb_get_bits8(tvb,*l_offset, 4);
*l_offset+=4;
switch(msIdType)
{
case 0:
ti = proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Imsi_M_S1, tvb, *l_offset, 24, ENC_BIG_ENDIAN);
sub_tree = proto_item_add_subtree(ti, ett_cdma2k_m_s1);
proto_tree_add_bits_item(sub_tree, hf_cdma2k_tlac_Header_Record_Imsi_M_S1_sec_3_dig, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset += 10;
proto_tree_add_bits_item(sub_tree, hf_cdma2k_tlac_Header_Record_Imsi_M_S1_thousand_dig, tvb, *l_offset, 4, ENC_BIG_ENDIAN);
*l_offset+=4;
proto_tree_add_bits_item(sub_tree, hf_cdma2k_tlac_Header_Record_Imsi_M_S1_last_3_dig, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset += 10;
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Imsi_M_S2, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset+=10;
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Esn, tvb, *l_offset, 32, ENC_BIG_ENDIAN);
*l_offset+=32;
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Reserved, tvb, *l_offset, 6, ENC_BIG_ENDIAN);
*l_offset+=6;
break;
case 1:
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Esn, tvb, *l_offset, 32, ENC_BIG_ENDIAN);
*l_offset+=32;
break;
case 2:
cdma2k_message_IMSI_CLASS_SUBFIELDS(item, tvb, tree,l_offset);
break;
case 3:
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Esn, tvb, *l_offset, 32, ENC_BIG_ENDIAN);
*l_offset+=32;
cdma2k_message_IMSI_CLASS_SUBFIELDS(item, tvb, tree,l_offset);
break;
case 4:
switch (extMsIdType)
{
case 0:
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Ext_MsId_MeId, tvb, *l_offset, 56, ENC_BIG_ENDIAN);
*l_offset+=56;
break;
case 1:
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Ext_MsId_MeId, tvb, *l_offset, 56, ENC_BIG_ENDIAN);
*l_offset+=56;
cdma2k_message_IMSI_CLASS_SUBFIELDS(item, tvb, tree,l_offset);
break;
case 2:
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Esn, tvb, *l_offset, 32, ENC_BIG_ENDIAN);
*l_offset+=32;
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Ext_MsId_MeId, tvb, *l_offset, 56, ENC_BIG_ENDIAN);
*l_offset+=56;
cdma2k_message_IMSI_CLASS_SUBFIELDS(item, tvb, tree,l_offset);
break;
default:
proto_item_append_text(item," : Invalid extMsIdType in Addressing Fields");
break;
}
break;
case 5:
if(msIdLen > 4)
{
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Tmsi_Zone, tvb, *l_offset, (msIdLen-4)*8, ENC_BIG_ENDIAN);
*l_offset+=((msIdLen-4)*8);
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Tmsi_Code_Addr, tvb, *l_offset, 32, ENC_BIG_ENDIAN);
*l_offset+=32;
}
else
{
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Tmsi_Code_Addr, tvb, *l_offset, msIdLen*8, ENC_BIG_ENDIAN);
*l_offset+=(msIdLen*8);
}
break;
default:
proto_item_append_text(item," : Invalid msIdType in Addressing Fields");
break;
}
/*Skip bits till Header Record Length*/
if(*l_offset < endOffset)
{
proto_tree_add_bits_item(tree, hf_cdma2k_tlac_Header_Record_Reserved, tvb, *l_offset, (endOffset-*l_offset), ENC_BIG_ENDIAN);
*l_offset+=(endOffset-*l_offset);
}
else if(*l_offset > endOffset)
{
proto_item_append_text(item," : Offset corruption in Addressing Fields");
}
}
/* Helper function to decode Imsi Class and SubField Parameters */
static void cdma2k_message_IMSI_CLASS_SUBFIELDS(proto_item *item,tvbuff_t *tvb, proto_tree *subtree, guint16 *l_offset)
{
guint16 imsi_class = -1, classType = -1;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_Class, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
imsi_class = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(imsi_class == 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_Class0_Type, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
classType = tvb_get_bits8(tvb,*l_offset, 2);
*l_offset+=2;
switch (classType)
{
case 0:
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Reserved, tvb, *l_offset, 3, ENC_BIG_ENDIAN);
*l_offset+=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S2, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset+=10;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S1, tvb, *l_offset, 24, ENC_BIG_ENDIAN);
*l_offset+=24;
break;
case 1:
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Reserved, tvb, *l_offset, 4, ENC_BIG_ENDIAN);
*l_offset+=4;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_11_12, tvb, *l_offset, 7, ENC_BIG_ENDIAN);
*l_offset+=7;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S2, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset+=10;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S1, tvb, *l_offset, 24, ENC_BIG_ENDIAN);
*l_offset+=24;
break;
case 2:
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Reserved, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
*l_offset+=1;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_MCC, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset+=10;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S2, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset+=10;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S1, tvb, *l_offset, 24, ENC_BIG_ENDIAN);
*l_offset+=24;
break;
case 3:
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Reserved, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_MCC, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset+=10;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_11_12, tvb, *l_offset, 7, ENC_BIG_ENDIAN);
*l_offset+=7;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S2, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset+=10;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S1, tvb, *l_offset, 24, ENC_BIG_ENDIAN);
*l_offset+=24;
break;
default:
proto_item_append_text(item," : Invalid Class0 Type in Addressing Fields");
break;
}
}
else if(imsi_class == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_Class1_Type, tvb, *l_offset, 1, ENC_BIG_ENDIAN);
classType = tvb_get_bits8(tvb,*l_offset, 1);
*l_offset+=1;
if(classType == 0)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Reserved, tvb, *l_offset, 2, ENC_BIG_ENDIAN);
*l_offset+=2;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_Addr_Num, tvb, *l_offset, 3, ENC_BIG_ENDIAN);
*l_offset+=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_11_12, tvb, *l_offset, 7, ENC_BIG_ENDIAN);
*l_offset+=7;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S2, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset+=10;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S1, tvb, *l_offset, 24, ENC_BIG_ENDIAN);
*l_offset+=24;
}
else if(classType == 1)
{
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_Addr_Num, tvb, *l_offset, 3, ENC_BIG_ENDIAN);
*l_offset+=3;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_MCC, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset+=10;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_11_12, tvb, *l_offset, 7, ENC_BIG_ENDIAN);
*l_offset+=7;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S2, tvb, *l_offset, 10, ENC_BIG_ENDIAN);
*l_offset+=10;
proto_tree_add_bits_item(subtree, hf_cdma2k_tlac_Header_Record_Imsi_S1, tvb, *l_offset, 24, ENC_BIG_ENDIAN);
*l_offset+=24;
}
else
{
proto_item_append_text(item," : Invalid Class1 Type in Addressing Fields");
}
}
else
{
proto_item_append_text(item," : Invalid Class in Addressing Fields");
}
}
/*Method called when the dissection starts.....Starting point*/
static int
dissect_cdma2k(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
/* Initialization*/
proto_tree *cdma2k_msghdr_tree_start = NULL;
proto_item *item = NULL;
guint32 offset = 0;
guint16 noerror = 1;
/*Add the protocol name to display*/
col_set_str(pinfo->cinfo, COL_PROTOCOL, "CDMA2K");
col_add_fstr(pinfo->cinfo, COL_INFO, "[CDMA2K]");
item = proto_tree_add_item(tree, hf_cdma2k_msghdr, tvb, 0, -1, ENC_NA);
cdma2k_msghdr_tree_start = proto_item_add_subtree(item, ett_cdma2k_msghdr);
item = proto_tree_add_item(cdma2k_msghdr_tree_start, hf_cdma2k_tlac_Record, tvb, offset, 1, ENC_NA );
if (tree)
{
while(tvb_captured_length_remaining(tvb, offset) != 0 && noerror == 1)
cdma2k_message_decode(item, tvb, cdma2k_msghdr_tree_start, &offset, tree, &noerror, pinfo);
if(noerror == 0)
{
expert_add_info(pinfo, item, &ei_cdma2k_error);
}
}
return tvb_reported_length(tvb);
}
/*Register cdma2k */
void proto_register_cdma2k(void)
{
static hf_register_info hf[] = {
{ &hf_cdma2k_tlac_Record,
{ "TLAC Header Record and L3PDU", "cdma2k.tlacRecord", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header,
{ "TLAC Header", "cdma2k.tlacHeader", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Channel,
{ "Channel Type", "cdma2k.tlacChannel", FT_UINT8, BASE_HEX_DEC, VALS(Channel_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_1x_Protocol_Revision,
{ "1x Protocol Revision", "cdma2k.tlac1xProtocolRevision", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_msgType,
{ "CDMA2K Message Type", "cdma2k.MsgType", FT_UINT8, BASE_HEX_DEC, VALS(Cdma2k_Message_types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record,
{ "TLAC Header Record", "cdma2k.tlacHeaderRecord", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Records_Count,
{ "Header Record Count", "cdma2k.tlacHeaderRecordCount", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Type ,
{ "Header Record Type", "cdma2k.tlacHeaderRecordType", FT_UINT8, BASE_HEX_DEC, VALS(Header_Record_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Length,
{ "Header Record Length", "cdma2k.tlacHeaderRecordLength", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Values,
{ "Header Record Data :", "cdma2k.tlacHeaderRecordData", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Reserved,
{ "Reserved", "cdma2k.tlacHeaderRecordReservedData", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_MsId_Type,
{ "MsId Type", "cdma2k.tlacHeaderRecordMsIdType", FT_UINT8, BASE_HEX_DEC, VALS(MsId_Address_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Ext_MsId_Type,
{ "Ext MsId Type", "cdma2k.tlacHeaderRecordExtMsIdType", FT_UINT8, BASE_HEX_DEC, VALS(Ext_MsId_Address_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_MsId_Length,
{ "MsId Length", "cdma2k.tlacHeaderRecordMsIdLength", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_M_S1,
{ "Imsi M S1", "cdma2k.tlacHeaderRecordImsiMS1", FT_UINT24, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_M_S1_sec_3_dig,
{ "Second 3 digits", "cdma2k.tlacHeaderRecordImsiMS1sec_3_dig", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_M_S1_thousand_dig,
{ "Thousands Digit", "cdma2k.tlacHeaderRecordImsiMS1thousand_dig", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_M_S1_last_3_dig,
{ "Last 3 digits", "cdma2k.tlacHeaderRecordImsiMS1last_3_dig", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_M_S2,
{ "Imsi M S2", "cdma2k.tlacHeaderRecordImsiMS2", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Esn,
{ "Esn", "cdma2k.tlacHeaderRecordEsn", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_Class,
{ "Imsi Class", "cdma2k.tlacHeaderRecordImsiClass", FT_UINT8, BASE_HEX_DEC, VALS(Imsi_Class), 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_Class0_Type,
{ "Imsi Class Type", "cdma2k.tlacHeaderRecordImsiClass0Type", FT_UINT8, BASE_HEX_DEC, VALS(Imsi_Class0_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_Class1_Type,
{ "Imsi Class Type", "cdma2k.tlacHeaderRecordImsiClass1Type", FT_UINT8, BASE_HEX_DEC, VALS(Imsi_Class1_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_S2,
{ "Imsi S2", "cdma2k.tlacHeaderRecordImsiS2", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_S1,
{ "Imsi S1", "cdma2k.tlacHeaderRecordImsiS1", FT_UINT24, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_11_12,
{ "Imsi 11 12", "cdma2k.tlacHeaderRecordImsi1112", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_MCC,
{ "Mcc", "cdma2k.tlacHeaderRecordMcc", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Imsi_Addr_Num,
{ "Imsi Addr Num", "cdma2k.tlacHeaderRecordImsiAddrNum", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Ext_MsId_MeId,
{ "Ext MsId MeId", "cdma2k.tlacHeaderRecordExtMsIdMeId", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Tmsi_Code_Addr,
{ "Tmsi Code Addr", "cdma2k.tlacHeaderRecordTmsiCodeAddr", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Tmsi_Zone,
{ "Tmsi Zone", "cdma2k.tlacHeaderRecordTmsiZone", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Mac_Incl,
{ "Maci Incl", "cdma2k.tlacHeaderRecordMacIncl", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Auth_Incl,
{ "Auth Incl", "cdma2k.tlacHeaderRecordAuthIncl", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Authr,
{ "Authr", "cdma2k.tlacHeaderRecordAuthr", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Randc,
{ "Randc", "cdma2k.tlacHeaderRecordRandc", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Count,
{ "Count", "cdma2k.tlacHeaderRecordCount", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Sdu_KeyId,
{ "Sdu Key Id", "cdma2k.tlacHeaderRecordSduKeyId", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Sdu_Algo,
{ "Sdu Integrity Algo", "cdma2k.tlacHeaderRecordSduAlgo", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Sdu_Sseq,
{ "Sdu Sseq", "cdma2k.tlacHeaderRecordSduSseq", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Sdu_Sseqh,
{ "Sdu Sseqh", "cdma2k.tlacHeaderRecordSduSseqh", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Header_Record_Sdu_Sseq_Or_Sseqh,
{ "Sdu Sseq Or Sseqh", "cdma2k.tlacHeaderRecordSduSseqOrSseqh", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Pdu,
{ "1x LAYER3 PDU", "cdma2k.tlacPdu", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_tlac_Pdu_Length,
{ "1x LAYER3 PDU Length", "cdma2k.tlacPduLength", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_RegMsg,
{ "Registration Message", "cdma2k.RegMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_OrderIndMsg,
{ "Order Indication Message", "cdma2k.OrderIndMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_DataBurstIndMsg,
{ "Data Burst Indication Message", "cdma2k.DataBurstIndMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_OrigMsg,
{ "Origination Message", "cdma2k.OrigMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_PageRspMsg,
{ "Page Response Message", "cdma2k.PageRspMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_AuthChallRspMsg,
{ "Authentication Challenge Response Message", "cdma2k.AuthChallRspMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_DataBurstCmdMsg,
{ "Data Burst Command Message", "cdma2k.DataBurstCmdMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_AuthChallReqMsg,
{ "Authentication Challenge Request Message", "cdma2k.AuthChallReqMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_GenPageReqMsg,
{ "Page Request Message", "cdma2k.GenPageReqMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_msghdr,
{ "CDMA2000 Application Protocol", "cdma2k.msghdr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Reg_Type,
{ "Reg Type", "cdma2k.Reg_Type", FT_UINT8, BASE_HEX_DEC, VALS(Reg_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Slot_Cycle_Index,
{ "Slot Cycle Index", "cdma2k.Slot_Cycle_Index", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Mob_P_Rev,
{ "MobPRev Value", "cdma2k.Mob_P_Rev", FT_UINT8, BASE_HEX_DEC,NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ext_Scm,
{ "Ext Scm", "cdma2k.Ext_Scm", FT_UINT8, BASE_HEX_DEC,NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sloted_Mode,
{ "Slotted Mode", "cdma2k.Slotted_Mode", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Mob_Term,
{ "Mob Term", "cdma2k.Mob_Term", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Return_Cause,
{ "Return Cause", "cdma2k.Return_Cause", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qpch_Supported,
{ "Qpch Supported", "cdma2k.pch_Supported", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Enhanced_Rc,
{ "Enhanced Rc", "cdma2k.Enhanced_Rc", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Uzid_Incl,
{ "Uzid Incl", "cdma2k.Uzid_Incl", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Uzid,
{ "Uzid", "cdma2k.Uzid", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_GeoLoc_Incl,
{ "GeoLoc Incl", "cdma2k.GeoLoc_Incl", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_GeoLoc_Type,
{ "GeoLoc Type", "cdma2k.GeoLoc_Type", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Order_Ind,
{ "Order Value", "cdma2k.Order_Ind", FT_UINT8, BASE_HEX_DEC, VALS(Order_Ind_Cause_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Order_Cmd,
{ "Order Value", "cdma2k.Order_Cmd", FT_UINT8, BASE_HEX_DEC, VALS(Order_Cmd_Cause_Types), 0xfc, NULL, HFILL } },
{ &hf_cdma2k_Add_Record_Len,
{ "Add Record Len", "cdma2k.Add_Record_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Order_Specific_Fields,
{ "Order Specific Fields", "cdma2k.Order_Specific_Fields", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ordq,
{ "Order Qualification", "cdma2k.Ordq", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Randbs,
{ "Random Chall Data", "cdma2k.Randbs", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rejected_Type,
{ "Rejected Message Type", "cdma2k.Rejected_Type", FT_UINT8, BASE_HEX_DEC, VALS(Cdma2k_Message_types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rejected_Order,
{ "Order of Rejected Message", "cdma2k.Rejected_Order", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rejected_Ordq,
{ "Order Qualification of Rejected Message", "cdma2k.Rejected_Ordq", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rejected_Parm_Id,
{ "Rejected Parameter", "cdma2k.Rejected_Parm_Id", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rejected_Record,
{ "Rejected Record Type", "cdma2k.Rejected_Record", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Tag,
{ "Transaction Identifier", "cdma2k.Tag", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rsc_Mode_Ind,
{ "Reduced Slot Cycle Mode Indication", "cdma2k.Rsc_Mode_Ind", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rsci,
{ "Reduced Slot Cycle Mode Index", "cdma2k.Rsci", FT_UINT8, BASE_HEX_DEC, VALS(RSCI_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rsc_End_Time_Unit,
{ "Reduced Slot Cycle Mode End Time Unit", "cdma2k.Rsc_End_Time_Unit", FT_UINT8, BASE_HEX_DEC, VALS(Rsc_End_Time_Unit_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rsc_End_Time_Value,
{ "Reduced Slot Cycle Mode End Time Value", "cdma2k.Rsc_End_Time_Value", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Con_Ref,
{ "Connection Reference", "cdma2k.Con_Ref", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Authbs,
{ "Authbs", "cdma2k.Authbs", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Roam_Ind,
{ "Roam Indicator", "cdma2k.Roam_Ind", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_C_Sig_Encrypt_Mode,
{ "Encrypt Mode", "cdma2k.C_Sig_Encrypt_Mode", FT_UINT8, BASE_HEX_DEC, VALS(C_Sig_Encrypt_Mode_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Enc_Key_Size,
{ "Enc Key Size", "cdma2k.Enc_Key_Size", FT_UINT8, BASE_HEX_DEC, VALS(Enc_Key_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Msg_Int_Info_Incl,
{ "Msg Int Info Incl", "cdma2k.Msg_Int_Info_Incl", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Change_Keys,
{ "Change Keys", "cdma2k.Change_Keys", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Use_Uak,
{ "Use Uak", "cdma2k.Use_Uak", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Retry_Type,
{ "Retry Type", "cdma2k.Retry_Type", FT_UINT8, BASE_HEX_DEC, VALS(Retry_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Retry_Delay,
{ "Retry Delay", "cdma2k.Retry_Delay", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Reject_Reason,
{ "Reject Reason", "cdma2k.Reject_Reason", FT_UINT8, BASE_HEX_DEC, VALS(Reject_Reason_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rejected_Msg_Type,
{ "Rejected Message Type", "cdma2k.Rejected_Msg_Type", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rejected_Msg_Seq,
{ "Rejected Message Sequence", "cdma2k.Rejected_Msg_Seq", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_All_Bcmc_Flows_Ind,
{ "All BCMC Flows Indication", "cdma2k.All_Bcmc_Flows_Ind", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Clear_All_Retry_Delay,
{ "Clear All Retry Delay", "cdma2k.Clear_All_Retry_Delay", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_All_Bcmc_Reason,
{ "All BCMC Reason", "cdma2k.All_Bcmc_Reason", FT_UINT8, BASE_HEX_DEC, VALS(All_Bcmc_Reason_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_All_Bcmc_Retry_Delay,
{ "All BCMC Retry Delay", "cdma2k.All_Bcmc_Retry_Delay", FT_UINT8, BASE_HEX_DEC, VALS(All_Bcmc_Retry_Delay_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Bcmc_Programs,
{ "Number of BCMC Programs", "cdma2k.Num_Bcmc_Programs", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Bcmc_Program_Id_Len,
{ "BCMC Program ID Length", "cdma2k.Bcmc_Program_Id_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Bcmc_Program_Id,
{ "BCMC Program ID", "cdma2k.Bcmc_Program_Id", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Bcmc_Flow_Discriminator_Len,
{ "BCMC Flow Discriminator Length", "cdma2k.Bcmc_Flow_Discriminator_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Flow_Discriminator,
{ "Number of Flow Discriminator", "cdma2k.Num_Flow_Discriminator", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Bcmc_Flow_Discriminator ,
{ "BCMC Flow Discriminator", "cdma2k.Bcmc_Flow_Discriminator", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Same_As_Previous_Bcmc_Flow,
{ "Same As Previous BCMC Flow", "cdma2k.Same_As_Previous_Bcmc_Flow", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Bcmc_Reason,
{ "BCMC Reason", "cdma2k.Bcmc_Reason", FT_UINT8, BASE_HEX_DEC, VALS(All_Bcmc_Reason_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Bcmc_Retry_Delay,
{ "BCMC Retry Delay", "cdma2k.Bcmc_Retry_Delay", FT_UINT8, BASE_HEX_DEC, VALS(All_Bcmc_Retry_Delay_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rsc_Mode_Supported,
{ "Reduced Slot Cycle Mode Supported", "cdma2k.Rsc_Mode_Supported", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Max_Rsc_End_Time_Unit,
{ "Maximum RSC End Time Unit", "cdma2k.Max_Rsc_End_Time_Unit", FT_UINT8, BASE_HEX_DEC, VALS(Max_rsc_End_Time_unit_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Max_Rsc_End_Time_Value,
{ "maximum RSC End Time Value", "cdma2k.Max_Rsc_End_Time_Value", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Req_Rsci,
{ "Requested Reduced Slot Cycle index", "cdma2k.Req_Rsci", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ignore_Qpch,
{ "Ignore QPCH Indicators", "cdma2k.Ignore_Qpch", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rer_Mode_Incl,
{ "Radio Environment Reporting Mode Indicator", "cdma2k.Rer_Mode_Incl", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rer_Mode_Enabled,
{ "Radio Environment Reporting Mode Enabled", "cdma2k.Rer_Mode_Enabled", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rer_Max_Num_Msg_Idx,
{ "RER Maximum Message Index", "cdma2k.Rer_Max_Num_Msg_Idx", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rer_Time,
{ "Radio Environment Reporting Time", "cdma2k.Rer_Time", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rer_Time_Unit,
{ "Radio Environment Reporting Time Unit", "cdma2k.Rer_Time_Unit", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Max_Rer_Pilot_List_Size,
{ "Maximum RER pilot List Size", "cdma2k.Max_Rer_Pilot_List_Size", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Tkz_Mode_Incl,
{ "Tracking Zone Mode Indication", "cdma2k.Tkz_Mode_Incl", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Tkz_Mode_Enabled,
{ "Tracking Zone Mode Enabled", "cdma2k.Tkz_Mode_Enabled", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Tkz_Max_Num_Msg_Idx,
{ "Tracking Zone Maximum Message Index", "cdma2k.Tkz_Max_Num_Msg_Idx", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Tkz_Update_Prd,
{ "Tracking Zone Update Period", "cdma2k.Tkz_Update_Prd", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Tkz_List_Len,
{ "Tracking Zone List Length", "cdma2k.Tkz_List_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Tkz_Timer,
{ "Tracking Zone Timer", "cdma2k.Tkz_Timer", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sr_Id_Bitmap,
{ "Service Reference Identifier Bitmap", "cdma2k.Sr_Id_Bitmap", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Service_Status,
{ "Service Status", "cdma2k.Service_Status", FT_UINT8, BASE_HEX_DEC, VALS(Service_Status_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Regulatory_Ind_Incl,
{ "Regulatory Indicator Included", "cdma2k.Regulatory_Ind_Incl", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Regulatory_Ind,
{ "Regulatory Indication", "cdma2k.Regulatory_Ind", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Msg_Number,
{ "Msg Number", "cdma2k.Msg_Number", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Burst_Type,
{ "Burst Type", "cdma2k.Burst_Type", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Msgs,
{ "Num Msgs", "cdma2k.Num_Msgs", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Fields,
{ "Num Fields", "cdma2k.Num_Fields", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Chari_Data,
{ "Chari Data", "cdma2k.Chari_Data", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Msg_Identifier,
{ "Msg Identifier", "cdma2k.Msg_Identifier", FT_UINT8, BASE_HEX_DEC, VALS(Chari_Identifier_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Parm_Id,
{ "Parm Id", "cdma2k.Parm_Id", FT_UINT8, BASE_HEX_DEC, VALS(Chari_Parm_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Parm_Length,
{ "Parm Length", "cdma2k.Parm_Length", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Parm_Value,
{ "Parm Data", "cdma2k.Parm_Value", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Authu,
{ "Authu", "cdma2k.Authu", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Randu,
{ "Randu", "cdma2k.Randu", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Gen_Cmea_Key,
{ "Gen Cmea Key", "cdma2k.Gen_Cmea_Key", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_service_option,
{ "Service Option", "cdma2k.service_option", FT_UINT32, BASE_HEX_DEC, VALS(Page_Req_Service_Option_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Use_Time,
{ "Use Time", "cdma2k.Use_Time", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Action_Time,
{ "Action Time", "cdma2k.Action_Time", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Hdm_Seq,
{ "Sequence Number", "cdma2k.Hdm_Seq", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Parms_Incl,
{ "Parameters Incl", "cdma2k.Parms_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_P_Rev,
{ "Protocol Revision", "cdma2k.P_Rev", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Serv_Neg_Type,
{ "Service Negotiation", "cdma2k.Serv_Neg_Type", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Search_Incl,
{ "Pilot Search Incl", "cdma2k.Search_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pilot_Search,
{ "Pilot Search Parameters", "cdma2k.Search", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Srch_Win_A,
{ "Search Window size for Active Set", "cdma2k.Srch_Win_A", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Srch_Win_N,
{ "Search Window size for Neighbour Set", "cdma2k.Srch_Win_N", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Srch_Win_R,
{ "Search Window size for Remaining Set", "cdma2k.Srch_Win_R", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_T_Add,
{ "Pilot Detection Threshold", "cdma2k.T_Add", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_T_Drop,
{ "Pilot Drop Threshold", "cdma2k.T_Drop", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_T_Comp,
{ "Active vs Candidate Set Comp Threshold", "cdma2k.T_Comp", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_T_Tdrop,
{ "Drop Timer Value", "cdma2k.T_Tdrop", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Soft_Slope,
{ "Soft Slope", "cdma2k.Soft_Slope", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Add_Intercept,
{ "Add Pilot Intercept", "cdma2k.Add_Intercept", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Drop_Intercept,
{ "Drop Pilot Intercept", "cdma2k.Drop_Intercept", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Extra_Parms_Incl,
{ "Extra Parms Incl", "cdma2k.Extra_Parms_incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Extra_Parms,
{ "Extra Parameters", "cdma2k.Extra_Parms", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Packet_Zone_Id,
{ "Packet Zone Identifier", "cdma2k.Packet_Zone_Id", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Frame_Offset,
{ "Frame Offset", "cdma2k.Frame_Offset", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Private_Lcm,
{ "Private LCM", "cdma2k.Private_Lcm", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Reset_L2,
{ "Reset L2 Ack", "cdma2k.Reset_L2", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Reset_Fpc,
{ "Reset Fch Power Cntrl Cntrs", "cdma2k.Reset_Fpc", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Encrypt_Mode,
{ "Msg Encryption Mode", "cdma2k.Encrypt_Mode", FT_UINT8, BASE_HEX_DEC, VALS(Encrypt_Mode_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Nom_Pwr_Ext,
{ "Ext Nominal Transmit Power", "cdma2k.Nom_Pwr_Ext", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Nom_Pwr,
{ "Nominal Transmit Power Offset", "cdma2k.Nom_Pwr", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rlgain_Traffic_Pilot,
{ "Rlgain Of Traffic Pilot", "cdma2k.Rlgain_Traffic_Pilot", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Default_Rlag,
{ "Reverse Link Attr Gain", "cdma2k.Default_Rlag", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Preamble,
{ "Traffic Channel Preamble", "cdma2k.Num_Preamble", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Band_Class,
{ "Band Class", "cdma2k.Band_Class", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Cdma_Freq,
{ "Frequency Assignment", "cdma2k.Cdma_Freq", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Return_If_Handoff_Fail,
{ "Return On Failure", "cdma2k.Return_If_Handoff_Fail", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Complete_Search,
{ "Complete Search", "cdma2k.Complete_Search", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Periodic_Search,
{ "Periodic Search", "cdma2k.Periodic_Search", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Scr_Incl,
{ "Scr Incl", "cdma2k.Scr_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Scr,
{ "Service Config Records", "cdma2k.Scr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Serv_Con_Seq,
{ "Service Connect Sequence Number", "cdma2k.Serv_Con_Seq", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Record_Type,
{ "Information Record Type", "cdma2k.Record_Type", FT_UINT8, BASE_HEX_DEC, VALS(Info_Rec_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Record_Len,
{ "Information Record Length", "cdma2k.Record_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Type_Specific_Fields,
{ "Type Specific Fields :", "cdma2k.Type_Specific_Fields", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Nnscr_Incl,
{ "Nnscr Incl", "cdma2k.Nnscr_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Nnscr,
{ "Non-Negotiable Service Config Records", "cdma2k.Nnscr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Use_Pwr_Cntl_Step,
{ "Power Control Step Size Incl", "cdma2k.Use_Pwr_Cntl_Step", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pwr_Cntl_Step,
{ "Power Control Step Size", "cdma2k.Pwr_Cntl_Step", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Clear_Retry_Delay,
{ "Clear Retry Delay Indicator", "cdma2k.Clear_Retry_Delay", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sch_Incl,
{ "Supplemented Channel Parms Incl", "cdma2k.Sch_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sch,
{ "Supplemental Channel Parameters", "cdma2k.Sch", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_For_Assign,
{ "Forward Channels Assigned", "cdma2k.Num_For_Assign", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Record_For_Assign,
{ "Forward Channel Records", "cdma2k.Record_For_Assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sch_Id,
{ "Channel Identifier", "cdma2k.Sch_Id", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sch_Duration,
{ "Channel Assignment Duration", "cdma2k.Sch_Duration", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sch_Start_Time_Incl,
{ "Start Time Incl", "cdma2k.Sch_Start_Time_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sch_Start_Time,
{ "Start Time", "cdma2k.Sch_Start_Time", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sccl_Index,
{ "Channel Code List Index", "cdma2k.Sccl_Index", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Rev_Assign,
{ "Reverse Channels Assigned", "cdma2k.Num_Rev_Assign", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Record_Rev_Assign,
{ "Reverse Channel Records", "cdma2k.Record_Rev_Assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sch_Num_Bits_Idx,
{ "Bits Per Frame Index", "cdma2k.Sch_Num_Bits_Idx", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Fpc_Subchain_Gain,
{ "Fwd Pwr Cntl Subchannel Rel Gain", "cdma2k.Fpc_Subchain_Gain", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Use_Pc_Time,
{ "Pwr Cntl Action Time Incl", "cdma2k.Use_Pc_Time", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pc_Action_Time,
{ "Pwr Cntl Action Time", "cdma2k.Pc_Action_Time", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ch_Ind,
{ "Channel Indicator", "cdma2k.Ch_Ind", FT_UINT8, BASE_HEX_DEC, VALS(l3dpu_ORM_ch_ind_values), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Active_Set_Rec_Len,
{ "Active Set Rec Length", "cdma2k.Active_Set_Rec_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Active_Set_Rec_Fields,
{ "Active Set Rec Fields", "cdma2k.Active_Set_Rec_Fields", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Fch_Gating_Mode,
{ "Rev Gating Mode Indicator", "cdma2k.Rev_Fch_Gating_Mode", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Pwr_Cntl_Delay_Incl,
{ "Rev Pwr Cntl Delay Incl", "cdma2k.Rev_Pwr_Cntl_Delay_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Pwr_Cntl_Delay,
{ "Rev Pwr Cntl Delay", "cdma2k.Rev_Pwr_Cntl_Delay", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_D_Sig_Encrypt_Mode,
{ "Dedicated Chan Encryption Mode Ind", "cdma2k.D_Sig_Encrypt_Mode", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_3xfl_1xrl_Incl,
{ "3x Fwd & 1x Rev Link Incl", "cdma2k.3xfl_1xrl_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_1xrl_Freq_Offset,
{ "1x Rev Link Freq Offset", "cdma2k.1xrl_Freq_Offset", FT_UINT8, BASE_HEX_DEC, VALS(rl_Freq_Offset_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sync_Id_Incl,
{ "Sync Identifier Incl", "cdma2k.Sync_Id_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sync_Id_Len,
{ "Sync Identifier Len", "cdma2k.Sync_Id_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sync_Id,
{ "Sync Identifier :", "cdma2k.Sync_Id", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Cc_Info_Incl,
{ "Call Cntl Info Incl", "cdma2k.Cc_Info_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Calls_Assign,
{ "Number Of Call Assignments", "cdma2k.Num_Calls_Assign", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Record_Calls_Assign,
{ "Call Assignment Records", "cdma2k.Record_Calls_Assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Response_Ind,
{ "Response Indicator", "cdma2k.Response_Ind", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Bypass_Alert_Answer,
{ "Bypass Alert Answer", "cdma2k.Bypass_Alert_Answer", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Cs_Supported,
{ "Concurrent Services Supported", "cdma2k.Cs_Supported", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Chm_Supported,
{ "Control Hold Mode Supported", "cdma2k.Chm_Supported", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Cdma_Off_Time_Rep_Sup_Ind,
{ "CDMA Off Time Report Supported", "cdma2k.Cdma_Off_Time_Rep_Sup_Ind", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Cdma_Off_Time_Rep_Threshold_Unit,
{ "Threshold Unit", "cdma2k.Cdma_Off_Time_Rep_Threshold_Unit", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Cdma_Off_Time_Rep_Threshold,
{ "Threshold", "cdma2k.Cdma_Off_Time_Rep_Threshold", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Release_To_Idle_Ind,
{ "Release To Idle Allowed", "cdma2k.Release_To_Idle_Ind", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Msg_Integrity_Sup,
{ "Msg Integrity Supported", "cdma2k.Msg_Integrity_Sup", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Gen_2g_Key,
{ "Generate 2G Encryption Key", "cdma2k.Gen_2g_Key", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Register_In_Idle,
{ "Register In Idle State", "cdma2k.Register_In_Idle", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Plcm_Type_Incl,
{ "PLCM Type Incl", "cdma2k.Plcm_Type_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Plcm_Type,
{ "PLCM Type", "cdma2k.Plcm_Type", FT_UINT8, BASE_HEX_DEC, VALS(Plcm_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Plcm_39,
{ "PLCM 39", "cdma2k.Plcm_39", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_T_Tdrop_Range_Incl,
{ "Drop Timer Range Incl", "cdma2k.T_Tdrop_Range_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_T_Tdrop_Range,
{ "Drop Timer Range", "cdma2k.T_Tdrop_Range", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_For_Pdch_Supported,
{ "For Packet Data Channel Supported", "cdma2k.For_Pdch_Supported", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pdch_Chm_Supported,
{ "PDCh Cntl Mode Supported", "cdma2k.Pdch_Chm_Supported", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pilot_Info_Req_Supported,
{ "Pilot Info Req Supported", "cdma2k.Pilot_Info_Req_Supported", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Enc_Supported,
{ "Encryption Fields Incl", "cdma2k.Enc_Supported", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sig_Encrypt_Sup,
{ "Signalling Encryption Supported", "cdma2k.Sig_Encrypt_Sup", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ui_Encrypt_Sup,
{ "User Info Encryption Supported", "cdma2k.Ui_Encrypt_Sup", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Use_Sync_Id,
{ "Sync Id Supported", "cdma2k.Use_Sync_Id", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sid_Incl,
{ "System Identification Incl", "cdma2k.Sid_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sid,
{ "System Identification", "cdma2k.Sid", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Nid_Incl,
{ "Network Identification Incl", "cdma2k.Nid_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Nid,
{ "Network Identification", "cdma2k.Nid", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sdb_Supported,
{ "Short Data Burst Indicator", "cdma2k.Sdb_Supported", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Mob_Qos,
{ "MS QoS Parm Req", "cdma2k.Mob_Qos", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ms_Init_Pos_Loc_Sup_Ind,
{ "MS Pos Loc Supported", "cdma2k.Ms_Init_Pos_Loc_Sup_Ind", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Pdch_Supported,
{ "Rev Packet Data Channel Supported", "cdma2k.Rev_Pdch_Supported", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pz_Hyst_Enabled,
{ "Packet Zone Hysteresis Enabled", "cdma2k.Pz_Hyst_Enabled", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pz_Hyst_Info_Incl,
{ "Packet Zone Hysteresis Info Incl", "cdma2k.Pz_Hyst_Info_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pz_Hyst_List_Len,
{ "Packet Zone Hysteresis List Length", "cdma2k.Pz_Hyst_List_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pz_Hyst_Act_Timer,
{ "Packet Zone Hysteresis Act Timer", "cdma2k.Pz_Hyst_Act_Timer", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pz_Hyst_Timer_Mul,
{ "Packet Zone Hysteresis Timer Multiplier", "cdma2k.Pz_Hyst_Timer_Mul", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pz_Hyst_Timer_Exp,
{ "Packet Zone Hysteresis Timer Exponent", "cdma2k.Pz_Hyst_Timer_Exp", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Bcmc_On_Traffic_Sup,
{ "BCMC On Tch Supported", "cdma2k.Bcmc_On_Traffic_Sup", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Auto_Re_Traffic_Allowed_Ind,
{ "BCMC Req On Tch Allowed", "cdma2k.Auto_Re_Traffic_Allowed_Ind", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sch_Bcmc_Ind,
{ "BCMC On Sch Indicator", "cdma2k.Sch_Bcmc_Ind", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Add_Plcm_For_Sch_Incl,
{ "For Sch Additional PLCM Incl", "cdma2k.Add_Plcm_For_Sch_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Add_Plcm_For_Sch_Type,
{ "For Sch Additional PLCM Type", "cdma2k.Add_Plcm_For_Sch_Type", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Add_Plcm_For_Sch_35,
{ "For Sch Additional PLCM", "cdma2k.Add_Plcm_For_Sch_35", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Record_Sch_Bcmc,
{ "Sch BCMC Records", "cdma2k.Record_Sch_Bcmc", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Use_Add_Plcm_For_Sch,
{ "Use For Sch Additional PLCM", "cdma2k.Use_Add_Plcm_For_Sch", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Fsch_Outercode_Incl,
{ "For Sch Outer Code Incl", "cdma2k.Fsch_Outercode_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Fsch_Outercode_Rate,
{ "For Sch Outer Code Rate", "cdma2k.Fsch_Outercode_Rate", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Fsch_Outercode_Offset,
{ "For Sch Outer Code Offset", "cdma2k.Fsch_Outercode_Offset", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Max_Add_Serv_Instance,
{ "Max Additional Service Identifiers", "cdma2k.Max_Add_Serv_Instance", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Use_Ch_Cfg_Rrm,
{ "Channel Config Req Allowed", "cdma2k.Use_Ch_Cfg_Rrm", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Tx_Pwr_Limit_Incl,
{ "Tx Pwr Limit Incl", "cdma2k.Tx_Pwr_Limit_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Tx_Pwr_Limit_Default,
{ "Tx Pwr Limit Default", "cdma2k.Tx_Pwr_Limit_Default", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Tx_Pwr_Limit,
{ "Tx Pwr Limit", "cdma2k.Tx_Pwr_Limit", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_For_Sch,
{ "Forward Sch Record Count", "cdma2k.Num_For_Sch", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Record_For_Sch,
{ "Forward Supplemental Channel Record", "cdma2k.Record_For_Sch", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Rev_Sch,
{ "Reverse Sch Record Count", "cdma2k.Num_Rev_Sch", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Record_Rev_Sch,
{ "Reverse Supplemental Channel Record", "cdma2k.Record_Rev_Sch", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Walsh_Id,
{ "Walsh Cover Identifier", "cdma2k.Walsh_Id", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Pilots,
{ "Pilot Count", "cdma2k.Num_Pilots", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Srch_Offset_Incl,
{ "Search Window Offset Incl", "cdma2k.Srch_Offset_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Record_Pilots,
{ "Pilot Record", "cdma2k.Record_Pilots", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pilot_Pn,
{ "PN Sequence Offset Idx", "cdma2k.Pilot_Pn", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Srch_Offset,
{ "Search Window Offset", "cdma2k.Srch_Offset", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Add_Pilot_Rec_Incl,
{ "Add Pilot Info Incl", "cdma2k.Add_Pilot_Rec_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pilot_Rec_Type,
{ "Pilot Rec Type", "cdma2k.Pilot_Rec_Type", FT_UINT8, BASE_HEX_DEC, VALS(Pilot_Rec_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pwr_Comb_Ind,
{ "Power Cntl Indicator", "cdma2k.Pwr_Comb_Ind", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Code_Chan_Fch,
{ "CodeCh On Fundamental Channel", "cdma2k.Code_Chan_Fch", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qof_Mask_Id_Fch,
{ "Qof Idx On Fundamental Channel", "cdma2k.Qof_Mask_Id_Fch", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Sch,
{ "Supplemental Channel Record Cnt", "cdma2k.Num_Sch", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Record_Sch,
{ "Supplemental Channel Records", "cdma2k.Record_Sch", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pilot_Incl,
{ "Pilot Incl", "cdma2k.Pilot_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Code_Chan_Sch,
{ "Code Channel", "cdma2k.Code_Chan_Sch", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qof_Mask_Id_Sch,
{ "Qof Index", "cdma2k.Qof_Mask_Id_Sch", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_3xFch_Info_Incl,
{ "3xFundamentalCh Info Incl", "cdma2k.3xFch_Info_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_3xFch_Low_Incl,
{ "Fundamental CodeCh On Low Freq Incl", "cdma2k.3xFch_Low_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qof_Mask_Id_Fch_Low,
{ "Qof Idx", "cdma2k.Qof_Mask_Id_Fch_Low", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Code_Chan_Fch_Low,
{ "Code Channel", "cdma2k.Code_Chan_Fch_Low", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_3xFch_High_Incl,
{ "Fundamental CodeCh On High Freq Incl", "cdma2k.3xFch_High_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qof_Mask_Id_Fch_High,
{ "Qof Idx", "cdma2k.Qof_Mask_Id_Fch_High", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Code_Chan_Fch_High,
{ "Code Channel", "cdma2k.Code_Chan_Fch_High", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_3xSch_Info_Incl,
{ "3x SCh Info Incl", "cdma2k.3xSch_Info_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_3xSch_Low_Incl,
{ "Sch On Low Freq Incl", "cdma2k.3xSch_Low_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qof_Mask_Id_Sch_Low,
{ "Qof Index", "cdma2k.Qof_Mask_Id_Sch_Low", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Code_Chan_Sch_Low,
{ "Code Channel", "cdma2k.Code_Chan_Sch_Low", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_3xSch_High_Incl,
{ "Sch On High Freq Incl", "cdma2k.3xSch_High_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qof_Mask_Id_Sch_High,
{ "Qof Index", "cdma2k.Qof_Mask_Id_Sch_High", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Code_Chan_Sch_High,
{ "Code Channel", "cdma2k.Code_Chan_Sch_High", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ccsh_Included,
{ "Ccsh Incl", "cdma2k.Ccsh_Included", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Use_Ccsh_Encoder_Time,
{ "Ccsh Encoder Indicator", "cdma2k.Use_Ccsh_Encoder_Time", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ccsh_Encoder_Action_Time,
{ "Ccsh Encoder Action Time", "cdma2k.Ccsh_Encoder_Action_Time", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ccsh_Encoder_Type,
{ "Ccsh Encoder Type", "cdma2k.Ccsh_Encoder_Type", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Code_Chan_Dcch,
{ "CodeCh On Dedicated Channel", "cdma2k.Code_Chan_Dcch", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qof_Mask_Id_Dcch,
{ "Qof Idx On Dedicated Channel", "cdma2k.Qof_Mask_Id_Dcch", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_3xDcch_Info_Incl,
{ "3xDedicatedCh Info Incl", "cdma2k.3xDcch_Info_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_3xDcch_Low_Incl,
{ "Dedicated CodeCh On Low Freq Incl", "cdma2k.3xDcch_Low_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qof_Mask_Id_Dcch_Low,
{ "Qof Idx", "cdma2k.Qof_Mask_Id_Dcch_Low", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Code_Chan_Dcch_Low,
{ "Code Channel", "cdma2k.Code_Chan_Dcch_Low", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_3xDcch_High_Incl,
{ "Dedicated CodeCh On High Freq Incl", "cdma2k.3xDcch_High_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qof_Mask_Id_Dcch_High,
{ "Qof Idx", "cdma2k.Qof_Mask_Id_Dcch_High", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Code_Chan_Dcch_High,
{ "Code Channel", "cdma2k.Code_Chan_Dcch_High", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Fundicated_Bcmc_Ind,
{ "BCMC On FundicatedCh Indicator", "cdma2k.Fundicated_Bcmc_Ind", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_For_Cpcch_Walsh,
{ "Forward Cpcch Walsh Code", "cdma2k.For_Cpcch_Walsh", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_For_Cpcsch,
{ "Forward Cpcsch", "cdma2k.For_Cpcsch", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Fch_Assigned,
{ "Rev FCh Channel Assigned", "cdma2k.Rev_Fch_Assigned", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Add_Plcm_For_Fch_Incl,
{ "Add PLCM For Forward Fch Incl", "cdma2k.Add_Plcm_For_Fch_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Add_Plcm_For_Fch_Type,
{ "Add PLCM For Forward Fch Type", "cdma2k.Add_Plcm_For_Fch_Type", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Add_Plcm_For_Fch_39,
{ "Add PLCM For Forward Fch", "cdma2k.Add_Plcm_For_Fch_39", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_For_Cpcch_Info_Incl,
{ "Cpcch Info Incl", "cdma2k.For_Cpcch_Info_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Info_Rec,
{ "Information Records", "cdma2k.Info_Rec", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Chari,
{ "Chari", "cdma2k.Chari", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Number_Type,
{ "Number Type", "cdma2k.Number_Type", FT_UINT8, BASE_HEX_DEC, VALS(Number_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Number_Plan,
{ "Number Plan", "cdma2k.Number_Plan", FT_UINT8, BASE_HEX_DEC, VALS(Number_Plan_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pres_Indicator,
{ "Presentation Indicator", "cdma2k.Pres_Indicator", FT_UINT8, BASE_HEX_DEC, VALS(Pres_Ind_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Scr_Indicator,
{ "Screening Indicator", "cdma2k.Scr_Indicator", FT_UINT8, BASE_HEX_DEC, VALS(Scr_Ind_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Signal_Type,
{ "Signal Type", "cdma2k.Signal_Type", FT_UINT8, BASE_HEX_DEC, VALS(Signal_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Alert_Pitch,
{ "Alert Pitch", "cdma2k.Alert_Pitch", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Signal,
{ "Signal", "cdma2k.Signal", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Msg_Count,
{ "Msg Count", "cdma2k.Msg_Count", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Extension_Bit,
{ "Extension Bit", "cdma2k.Extension_Bit", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Subaddress_Type,
{ "Subaddress Type", "cdma2k.Subaddress_Type", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Odd_Even_Ind,
{ "Odd/Even Indicator", "cdma2k.Odd_Even_Ind", FT_UINT8, BASE_HEX_DEC, VALS(Odd_Even_Ind_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Redirection_Reason,
{ "Redirection Reason", "cdma2k.Redirection_Reason", FT_UINT8, BASE_HEX_DEC, VALS(Redir_Reason_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pulse_Freq,
{ "Pulse Frequency", "cdma2k.Pulse_Freq", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pulse_On_Time,
{ "Pulse On Time", "cdma2k.Pulse_On_Time", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pulse_Off_Time,
{ "Pulse Off Time", "cdma2k.Pulse_Off_Time", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pulse_Count,
{ "Pulse Count", "cdma2k.Pulse_Count", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Cadence_Count,
{ "Cadence Count", "cdma2k.Cadence_Count", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Num_Grps,
{ "Num Of Groups", "cdma2k.Num_Grps", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Amplitude,
{ "Amplitude", "cdma2k.Amplitude", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Freq,
{ "Tone Frequency", "cdma2k.Freq", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_On_Time,
{ "On Time", "cdma2k.On_Time", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Off_Time,
{ "Off Time", "cdma2k.Off_Time", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Repeat,
{ "Repeat", "cdma2k.Repeat", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Delay,
{ "Delay", "cdma2k.Delay", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Cadence_Type,
{ "Cadence Type", "cdma2k.Cadence_Type", FT_UINT8, BASE_HEX_DEC, VALS(Cadence_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Polarity_Incl,
{ "Polarity Incl", "cdma2k.Polarity_Incl", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Toggle_Mode,
{ "Toggle Mode", "cdma2k.Toggle_Mode", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Reverse_Polarity,
{ "Reverse Polarity", "cdma2k.Reverse_Polarity", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Pwr_Denial_Time,
{ "Power Denial Time", "cdma2k.Pwr_Denial_Time", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Call_Waiting_Ind,
{ "Call Waiting Ind", "cdma2k.Call_Waiting_Ind", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Request_Mode,
{ "Request Mode", "cdma2k.Request_Mode", FT_UINT8, BASE_DEC, VALS(l3dpu_ORM_PRM_req_mode_values), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Special_Service,
{ "Special Service", "cdma2k.Special_Service", FT_BOOLEAN, 8, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_pm,
{ "Privacy Mode", "cdma2k.PM", FT_BOOLEAN, 8, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_digit_mode,
{ "Digit Mode", "cdma2k.Digit_Mode", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_More_Fields,
{ "More Fields", "cdma2k.More_Fields", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Nar_An_Cap,
{ "NAR AN CAP", "cdma2k.Nar_An_Cap", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Paca_Reorig,
{ "PACA REORIG", "cdma2k.Paca_Reorig", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_More_Records,
{ "More Records", "cdma2k.More_Records", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_encryption_supported,
{ "Encryption Supported", "cdma2k.Encryption_Supported", FT_UINT8, BASE_DEC, VALS(l3dpu_ORM_encryption_algo_values), 0x0, NULL, HFILL } },
{ &hf_cdma2k_Paca_Supported,
{ "Paca Supported", "cdma2k.Paca_Supported", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_num_alt_so,
{ "NUM ALT SO", "cdma2k.NUM_ALT_SO", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Alt_So,
{ "Alt So", "cdma2k.Alt_So", FT_UINT16, BASE_HEX_DEC, VALS(Page_Req_Service_Option_Types), 0x0, NULL, HFILL } },
{ &hf_cdma2k_DRS,
{ "Data ready to send", "cdma2k.DRS", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_SR_ID,
{ "SR ID", "cdma2k.SR_ID", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Otd_Supported,
{ "OTD Supported", "cdma2k.OTD_Supported", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_For_Rc_Pref,
{ "Forward Rc Pref", "cdma2k.For_Rc_Pref", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Rc_Pref,
{ "Reverse Rc Pref", "cdma2k.Rev_Rc_Pref", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Fch_Supported,
{ "Fch Supported","cdma2k.Fch_Supported", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Fch_capability_type_specific_Fields,
{ "Fch capability type specific Fields","cdma2k.Fch_cap_type_specific_Fields", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Fch_Frame_Size,
{ "Frame Size", "cdma2k.Fch_Frame_Size", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_For_Fch_Len,
{ "Forward Fch Len", "cdma2k.For_Fch_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_For_Fch_Rc_Map,
{ "Forward Fch Rc Map", "cdma2k.For_Fch_Rc_Map", FT_UINT8, BASE_HEX_DEC , NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Fch_Len,
{ "Reverse Fch Len", "cdma2k.Rev_Fch_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Fch_Rc_Map,
{ "Reverse Fch Rc Map", "cdma2k.Rev_Fch_Rc_Map", FT_UINT8, BASE_HEX_DEC , NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Dcch_capability_type_specific_Fields,
{ "Dcch cap type specific Fields","cdma2k.Dcch_cap_type_specific_Fields", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Dcch_Supported,
{ "Dcch Supported","cdma2k.Dcch_Supported", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Dcch_Frame_Size,
{ "Frame Size", "cdma2k.Dcch_Frame_Size", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_For_Dcch_Len,
{ "Forward Dcch Len", "cdma2k.For_Dcch_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_For_Dcch_Rc_Map,
{ "Forward Dcch Rc Map", "cdma2k.For_Dcch_Rc_Map", FT_UINT8, BASE_HEX_DEC , NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Dcch_Len,
{ "Reverse Dcch Len", "cdma2k.Rev_Dcch_Len", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Dcch_Rc_Map,
{ "Reverse Dcch Rc Map", "cdma2k.Rev_Dcch_Rc_Map", FT_UINT8, BASE_HEX_DEC , NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rev_Fch_Gating_Req,
{ "RevFch GatingReq","cdma2k.Rev_Fch_GatingReq", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Orig_Reason,
{ "Orig Reason","cdma2k.Orig_Reason", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Orig_Count,
{ "Orig Count", "cdma2k.Orig_Count", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sts_Supported,
{ "Sts Supported","cdma2k.Sts_Supported", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_ThreeXCchSupported,
{ "ThreeXCch Supported","cdma2k.ThreeXCch_Supported", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Wll_Incl,
{ "Wll Incl","cdma2k.Wll_Incl", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Wll_Device_Type,
{ "Wll Device Type", "cdma2k.Wll_Device_Type", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Global_Emergency_Call,
{ "Global Emergency Call","cdma2k.Global_Emergency_Call", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ms_Init_Pos_Loc_Ind,
{ "Ms Init Pos Loc Ind","cdma2k.Ms_Init_Pos_Loc_Ind", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qos_Parms_Incl,
{ "Qos Parms Incl","cdma2k.Qos_Parms_Incl", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qos_Parms_Length,
{ "Qos Parms Length", "cdma2k.Qos_Parms_Length", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Qos_Parms,
{ "Qos Parms", "cdma2k.Qos_Parms", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Enc_Info_Incl,
{ "Enc Info Incl","cdma2k.EncInfo_Incl", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Sig_Encrypt_Supp,
{ "Sig Encrypt Supported", "cdma2k.Sig_Encrypt_Supp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_DSig_Encrypt_Req,
{ "DSig Encrypt Req","cdma2k.DSig_Encrypt_Req", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_CSig_Encrypt_Req,
{ "CSig Encrypt Req","cdma2k.CSig_Encrypt_Req", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_New_Sseq_H,
{ "New SseqH", "cdma2k.New_Sseq_H", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_New_Sseq_H_Sig,
{ "New SseqH Sig", "cdma2k.New_Sseq_H_Sig", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ui_Encrypt_Req,
{ "Ui Encrypt Req","cdma2k.Ui_Encrypt_Req", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Prev_Sid_Incl,
{ "Prev Sid Incl","cdma2k.Prev_Sid_Incl", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Prev_Sid,
{ "Prev Sid", "cdma2k.Prev_Sid", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Prev_Nid_Incl,
{ "Prev Nid_Incl","cdma2k.Prev_Nid_Incl", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Prev_Nid,
{ "Prev Nid", "cdma2k.Prev_Nid", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Prev_Pzid_Incl,
{ "Prev Pzid Incl","cdma2k.Prev_Pzid_Incl", FT_BOOLEAN, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Prev_Pzid,
{ "Prev Pzid", "cdma2k.Prev_Pzid", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_So_Bitmap_Ind,
{ "So Bitmap Ind", "cdma2k.So_Bitmap_Ind", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_So_Group_Num,
{ "So Group Num", "cdma2k.So_Group_Num", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_So_Bitmap,
{ "So Bitmap", "cdma2k.So_Bitmap", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Cmea,
{ "Cell Msg Encry Alg", "cdma2k.Cmea", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Ecmea,
{ "Enhanced Cell Msg Encry Alg", "cdma2k.Ecmea", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Rea,
{ "Rijndael Encry Alg", "cdma2k.Rea", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Reserved,
{ "Reserved", "cdma2k.Reserved", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_AlertWithInfoMsg,
{ "Alert With Info Msg", "cdma2k.AlertWithInfoMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_Hook_Status,
{ "Hook_Status", "cdma2k.Hook_Status", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_MeIdUhdmMsg,
{ "MeIdUhdmMsg", "cdma2k.MeIdUhdmMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_UhdmMsg,
{ "UhdmMsg", "cdma2k.UhdmMsg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_ext_scm_ind,
{ "Extended SCM Indicator", "cdma2k.ext_scm_ind", FT_UINT8, BASE_DEC, VALS(l3dpu_SCM_field_values7), 0x0, NULL, HFILL } },
{ &hf_cdma2k_scm_dual_mode,
{ "Dual Mode", "cdma2k.scm.dual_mode", FT_UINT8, BASE_DEC, VALS(l3dpu_SCM_field_values6), 0x0, NULL, HFILL } },
{ &hf_cdma2k_scm_slotted_class,
{ "Slotted Class", "cdma2k.scm.slotted_class", FT_UINT8, BASE_DEC, VALS(l3dpu_SCM_field_values5), 0x0, NULL, HFILL } },
{ &hf_cdma2k_scm_meid_sup,
{ "MEID support indicator", "cdma2k.scm.meid_sup", FT_UINT8, BASE_DEC, VALS(l3dpu_SCM_field_values4), 0x0, NULL, HFILL } },
{ &hf_cdma2k_scm_25mhz_bw,
{ "25 MHz Bandwidth", "cdma2k.scm.25mhz_bw", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_cdma2k_scm_trans,
{ "Transmission", "cdma2k.scm.trans", FT_UINT8, BASE_DEC, VALS(l3dpu_SCM_field_values2), 0x0, NULL, HFILL } },
{ &hf_cdma2k_scm_pow_class,
{ "Power Class for Band Class 0 Analog Operation", "cdma2k.scm.pow_class", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
};
static gint *ett[] = {
&ett_cdma2k_msghdr,
&ett_cdma2k_subtree,
&ett_cdma2k_subtree1,
&ett_cdma2k_subtree2,
&ett_cdma2k_m_s1,
&ett_cdma2000_scm
};
static ei_register_info ei[] = {
{ &ei_cdma2k_error, { "cdma2k.error", PI_PROTOCOL, PI_ERROR, "Violation of protocol specs (e.g. invalid information element)", EXPFILL }},
};
expert_module_t* expert_cdma2k;
proto_cdma2k = proto_register_protocol (
"CDMA2K", /* name */
"CDMA2K", /* short name */
"cdma2k" /* abbrev */
);
register_dissector("cdma2k", dissect_cdma2k, proto_cdma2k);
proto_register_field_array(proto_cdma2k, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
expert_cdma2k = expert_register_protocol(proto_cdma2k);
expert_register_field_array(expert_cdma2k, ei, array_length(ei));
}
void proto_reg_handoff_cdma2k(void)
{
static int once = 1;
if(once == 1){
cdma2k_handle = create_dissector_handle(dissect_cdma2k, proto_cdma2k);
once = 0;
}
}
/*
* Editor modelines
*
* Local Variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* ex: set shiftwidth=4 tabstop=8 expandtab:
* :indentSize=4:tabSize=8:noTabs=true:
*/