/*
 * 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_NONE, BASE_NONE, 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:
*/
