[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/as_c2k/evdo/almpdefs.h b/mcu/interface/protocol/as_c2k/evdo/almpdefs.h
new file mode 100644
index 0000000..599bb75
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/almpdefs.h
@@ -0,0 +1,227 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _ALMPDEFS_H_
+#define _ALMPDEFS_H_ 1
+/****************************************************************************
+ *
+ * Module:     almpdefs.h
+ *
+ * Purpose:    
+ *
+ ****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "inspdefs.h"
+#include "do_almpapi.h"
+#include "do_dsaapi.h"
+#include "pswapi.h"
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+ Local Defines and Macros
+----------------------------------------------------------------------------*/
+#define HLW_OPEN_CONN_MASK        0x01
+#define FTAP_OPEN_CONN_MASK       0x02
+#define RTAP_OPEN_CONN_MASK       0x04
+#define SCP_OPEN_CONN_MASK        0x08
+#define ETS_OPEN_CONN_MASK        0x10
+
+#define ALMP_CONFIG_MESSAGE_ID_WIDTH        8
+#define ALMP_CONFIG_TRANS_ID_WIDTH          8
+#define ALMP_CONFIG_RECORD_LEN_WIDTH        8
+#define ALMP_CONFIG_RECORD_ATTR_ID_WIDTH    8
+#define ALMP_CONFIG_RECORD_ATTR_VALUE_WIDTH 8
+
+#define ALMP_CONFAIL_REPORT_ACK_TRANS_ID_WIDTH  8
+
+#define CP_ALMP_MESSAGE_ID_WIDTH    8
+#define CP_NUM_CHANNEL_WIDTH        8
+#define CP_SYSTEMTYPE_WIDTH         8
+#define CP_BANDCLASS_WIDTH          5
+#define CP_CHANNELNUM_WIDTH        11
+
+#define ALMP_CONNFAIL_REPORT_MESSAGE_ID_WIDTH    8
+#define ALMP_CONNFAIL_REPORT_TRANS_ID_WIDTH      8
+#define ALMP_CONNFAIL_REPORT_NUMREC_WIDTH        4
+#define ALMP_CONNFAIL_REPORT_REASON_WIDTH        4
+#define ALMP_CONNFAIL_REPORT_TIMESTAMP_WIDTH     32
+#define ALMP_CONNFAIL_REPORT_SECTOR_ID_WIDTH     128
+#define ALMP_CONNFAIL_REPORT_CHANNELREC_SYSTEM_TYPE_WIDTH    8
+#define ALMP_CONNFAIL_REPORT_CHANNELREC_BAND_CLASS_WIDTH     5
+#define ALMP_CONNFAIL_REPORT_CHANNELREC_CHANN_NUM_WIDTH      11
+#define ALMP_CONNFAIL_REPORT_LATLONGINC_WIDTH    1
+#define ALMP_CONNFAIL_REPORT_LAT_WIDTH           22
+#define ALMP_CONNFAIL_REPORT_LONG_WIDTH          23
+
+#define CP_MAX_NUM_REDIRECT_CHANNELS  10 /* can be more, just taken for now */
+#define CP_MAX_CONNECTIONFAIL_REC_NUM  4
+#define ALMP_MAX_CONNECTIONFAIL_SEND_CNT  4
+#define NONE   0
+#define CONNFAIL_REPORT_DISABLE    0x00
+
+typedef enum 
+{
+   ALMP_REDIRECT_MESSAGE = 0x00,
+   ALMP_CONNFAIL_REPORT_MESSAGE = 0x01,
+   ALMP_CONNFAIL_REPORT_ACK_MESSAGE = 0x02,
+   ALMP_CONFIG_REQUEST_MESSAGE = 0x50,
+   ALMP_CONFIG_RESPONSE_MESSAGE,
+} AlmpMsgTypeT;
+
+typedef enum
+{
+  ALMP_INUSE,
+  ALMP_INCONFIG,
+  ALMP_ALL
+}AlmpInsT;
+
+typedef enum
+{
+  FTAP,
+  RTAP
+} AlmpTapTypeT;
+
+typedef enum
+{
+  GEN_CONN_FAILURE,
+  TUNING_1X_FAILURE,
+  TUNING_POS_FAILURE,
+  OTHER_FAILURE,
+  ALL_FAILURE
+} AlmpConnFailReasonT;
+
+/* ALMP Redirect Message */
+typedef struct
+{
+   kal_uint8   MessageId;        /* 8 bits */
+   kal_uint8   NumChannel;       /* 8 bits */
+   ChanRecGT   Channels[CP_MAX_NUM_REDIRECT_CHANNELS]; /* 24 bits/channel */
+} AlmpRedirectMsgT;
+
+typedef struct
+{  
+   kal_uint32 TimeStamp;
+   ChanRecGT  Channel;
+   kal_uint8  FailReason; 
+   kal_bool   LatLongInc;
+   kal_uint32 Latitude;
+   kal_uint32 Longitude;
+   kal_uint8  SectorId[16];
+}ConnFailRecT;
+
+typedef struct
+{
+  kal_uint8    NumRecord;
+  ConnFailRecT ConnFailRec[CP_MAX_CONNECTIONFAIL_REC_NUM];
+}AlmpConnFailRecT;
+
+typedef struct
+{
+  kal_bool  WaitAckPending;
+  kal_uint8 nSendCount;
+}AlmpConnFailAckCntT;
+
+/*----------------------------------------------------------------------------
+  Function Prototypes
+----------------------------------------------------------------------------*/
+void AlmpInitialize(kal_bool bCreateTask);
+void RunAlmpStateMachine(kal_uint32 MsgId, void *MsgDataP);
+void ProcessAlmpDsaFwdMsg(DsaFwdMsgT *MsgDataP);
+void ProcessAlmpPswPowerMsg(PswPowerMsgT *MsgDataPtr);
+void ProcessAlmpInspNtwkAcqdMsg(AlmpInspNtwkAcqdMsgT *MsgDataPtr);
+void ProcessAlmpIdpConnOpenedMsg(void);
+void ProcessAlmpIdpConnFailedMsg(AlmpIdpConnFailMsgT *MsgPtr);
+void ProcessAlmpCspConnClosedMsg(void);
+void ProcessAlmpOmpAnRedirectMsg(AlmpOmpAnRedirectMsgT *MsgDataPtr );
+void ProcessAlmpIdpPageReqMsg(void);
+void ProcessAlmpIdpFastconnInitiatedMsg(void);
+void ProcessAlmpCcmAcmSupervsnFailMsg(kal_bool bDueSysTimeFault, kal_bool bNetworkLostInd,kal_bool bDuePreempted);
+void ProcessAlmpSysAcqReqMsg(SysAcqReasonT reason);
+void ProcessAlmpOosaWakeupReqMsg(void);
+void ProcessAlmpSupervsnFailMsg(void);
+void ProcessAlmpRupConnLostMsg(void);
+void ProcessAlmpRupAssgnRejMsg(void);
+void ProcessAlmpCssReInitMsg(void);
+void ProcessAlmpHlwRelConnMsg(void);
+void ProcessAlmpHlwCloseConnMsg(void);
+void ProcessAlmpHlwOpenConnMsg(void);
+
+void ProcessAlmpTapOpenConnMsg(AlmpTapTypeT Tap);
+void ProcessAlmpTapRelConnMsg(AlmpTapTypeT Tap);
+void ProcessAlmpTapCloseConnMsg(AlmpTapTypeT Tap);
+
+void ProcessAlmpScpOpenConnMsg(void);
+void ProcessAlmpScpRelConnMsg(void);
+void ProcessAlmpScpCloseConnMsg(kal_bool bScpNegotiationComplete);
+void ProcessAlmpOmpUpdateMsg(AlmpOmpUpdateMsgT* MsgDataPtr);
+void ProcessAlmpDsaTxStatusMsg(DsarTxStatusMsgT *MsgDataP);
+void ProcesAlmpSmpCloseConnMsg(void);
+void ProcessAlmpEltOpenConnMsg(void);
+void ProcessAlmpEltRelConnMsg(void);
+void ProcessAlmpEltRelConnSHDRMsg(void);
+void ProcessAlmpScpReconfigMsg(void);
+void ProcessAlmpScpCommitedMsg(void);
+void AlmpQueConnqstInInitState(kal_uint8 connection);
+void AlmpSendConnectFailReportMsg(void);
+
+void AlmpInitStructures( kal_uint8 SubType, kal_bool InUse);
+
+void ProcessAlmpCcmSuperFailMsg(kal_bool bDueSysTimeFault,kal_bool bDuePreempted);
+void processAlmpOmpSuperFailMsg(void);
+void ProcessAlmpIdpThawMsg(void);
+void ProcessCssSystemValidatedMsg(void);
+void ProcessClcL3StatePrint(void);
+void AlmpResetRmc(kal_bool bCallFromAlmp);
+void AlmpSetNetworkSearchPriority(kal_bool aIsNeedUpPriority);
+kal_bool AlmpIsUpNetworkSearchPriority();
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /*_ALMPDEFS_H_*/
+
+
+
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/clc_nvram.h b/mcu/interface/protocol/as_c2k/evdo/clc_nvram.h
new file mode 100644
index 0000000..b1aca02
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/clc_nvram.h
@@ -0,0 +1,148 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSKAL_TRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _CLC_NVRAM_H_
+#define _CLC_NVRAM_H_ 1
+/****************************************************************************
+ *
+ * Module:     clc_nvram.h
+ *
+ * Purpose:    
+ *
+ ****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+ Local Defines and Macros
+----------------------------------------------------------------------------*/
+
+#define ATTR_CONFIG_SIZE  22
+
+#define MAX_DO_DEFAULTBAND_SIZE 5
+
+#define MAX_ATTR_SIZE 5
+
+#define  RUP_DEFAULT_DFS_IDLE_INTERVAL     6
+#define  RUP_DEFAULT_DFS_CONN_INTERVAL     2
+#define  RUP_DEFAULT_DFS_IDLE_NUMCHAN      1
+#define  RUP_DEFAULT_DFS_CONN_NUMCHAN      1
+#define  RUP_DEFAULT_DFS_IDLE_ECIO_THRESH  48  
+#define  RUP_DEFAULT_DFS_CONN_ECIO_THRESH  48
+
+typedef enum
+{
+    NON_HYBRID,
+    HYBRID,
+    HYBRID_MODE_ENUM_END
+}PriHybridModeT;
+
+typedef enum
+{
+    CDMA_THEN_ANALOG,
+    CDMAonly,
+    ANALOG_THEN_CDMA,
+    ANALOG_ONLY,
+    DETERMINE_MODE_AUTOMATICALLY,
+    EMERGENCY_MODE,
+    RETRICT_TO_HOME_ONLY,
+    CDMA_ONLY,
+    HDR_ONLY,
+    HYBRID_ONLY,
+    SHDR_ONLY,
+    PREF_MODE_ENUM_END
+}PrefModeT;
+
+
+typedef struct
+{
+   kal_uint8  numValue;
+   kal_uint16 value[MAX_ATTR_SIZE];
+   kal_bool bConfig;
+} SubtypeConfigDataT;
+
+typedef struct
+{
+    SysCdmaBandT DOBand;
+    kal_uint16 DOChannel;
+} CTDoDefaultBandDataT;
+
+typedef struct
+{
+   kal_uint16   DataSize;
+   kal_uint32   HybridMode;
+   kal_uint32   PrefMode;
+   kal_bool     PrefCCCycleEnable;
+   kal_uint32   PrefCCCycle;
+   kal_bool     ScpForceRel0Config;
+   kal_uint8    NotDisturb;
+   kal_uint8    FtMacDrcGating;
+   kal_bool     LUPUnsolicitedEnable;
+   kal_uint8    RxDiversityCtrl;
+   kal_uint32   Stream0Configuration;
+   kal_uint32   Stream1Configuration;
+   kal_uint32   Stream2Configuration;
+   kal_uint32   Stream3Configuration;
+   SubtypeConfigDataT SubtypeConfigData[ATTR_CONFIG_SIZE];
+   kal_uint16   T_Dual_Idle;
+   kal_uint8    T_HRPD_ExtendedSC;
+   kal_uint8    T_1x_ExtendedSC;
+   kal_uint16   T_HRPD_Init;
+   kal_uint16   T_1x_Init;
+   CTDoDefaultBandDataT DOSystem[MAX_DO_DEFAULTBAND_SIZE];
+   kal_bool      eHrpdDisable;
+   kal_uint8    DfsIdleInterval;
+   kal_uint8    DfsConnInterval;
+   kal_uint8    DfsIdleNumChan;
+   kal_uint8    DfsConnNumChan;
+   kal_uint16   DfsIdleEcIoThresh;
+   kal_uint16   DfsConnEcIoThresh;
+   kal_uint8    Padings[10]; /*Paddings is used for new inserted fields to PRI */
+} ClcDoParmDataT;
+
+#endif /*_CLC_NVRAM_H_*/
+
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/clcidp.h b/mcu/interface/protocol/as_c2k/evdo/clcidp.h
new file mode 100644
index 0000000..3f36f94
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/clcidp.h
@@ -0,0 +1,387 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _CLCIDP_H_
+#define _CLCIDP_H_ 1
+/*****************************************************************************
+*
+* FILE NAME   : clcidp.h
+*
+* DESCRIPTION : This file includes the definition of IDP
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_clcapi.h"
+#include "do_rupapi.h"
+#include "do_idpapi.h"
+#include "do_dsaapi.h"
+#include "rmcsch.h"
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define IDP_ATTRIB_PCCC_BIT      0x01
+#define IDP_ATTRIB_SM_BIT        0x02
+#define IDP_ATTRIB_PM_BIT        0x04
+#define IDP_ATTRIB_AHCM_BIT      0x08
+#define IDP_ATTRIB_SSCA_BIT      0x10
+
+#define IDP_PAGINGMASK_1X_BIT    0x01
+#define IDP_PAGINGMASK_WIFI_BIT  0x02
+
+#define IDP_DEFAULT_PERIOD_SLOTS 3072
+
+#ifdef MTK_DEV_C2K_IRAT
+#define MAX_PNLIST_REC_NUM   16
+#endif /* MTK_DEV_C2K_IRAT */
+
+/*----------------------------------------------------------------------------
+ Global Typedefs
+----------------------------------------------------------------------------*/
+typedef enum
+{
+    IDP_INACTIVE_ST,
+    IDP_MONITOR_ST,
+    IDP_SLEEP_ST,
+    IDP_CONN_SETUP_ST,
+    IDP_FREEZE_PENDING_ST,
+    IDP_FREEZE_ST,
+    IDP_CONN_FROZEN_ST,
+    IDP_STATE_MAX
+} IdpStateT;
+
+typedef enum
+{
+    IDP_DEFAULT,
+    IDP_ENHANCED,
+    IDP_MAX_PROT
+} IdpSubTypeT;
+
+typedef enum
+{
+    IDP_INCONFIG,
+    IDP_INUSE,
+    IDP_MAX_INSTANCE
+} IdpInstanceT;
+
+typedef enum
+{
+    IDP_PAGE_MESSAGE,
+    IDP_CONNECTION_REQUEST_MESSAGE,
+    IDP_CONNECTION_DENY_MESSAGE,
+    IDP_CONFIG_REQUEST_MESSAGE = 0x50,
+    IDP_CONFIG_RESPONSE_MESSAGE,
+    IDP_ATTRIB_UPDATE_REQUEST_MESSAGE,
+    IDP_ATTRIB_UPDATE_ACCEPT_MESSAGE,
+    IDP_ATTRIB_UPDATE_REJECT_MESSAGE,
+    IDP_MAX_MESSAGE_ID
+} IdpMessageTypeT;
+
+typedef enum
+{
+    REQ_REASON_AT_INITIATED,
+    REQ_REASON_AN_INITIATED,
+    REQ_REASON_INVALID
+} IdpRequestReasonT;
+
+typedef enum
+{
+    DENY_REASON_GENERAL,
+    DENY_REASON_NETWORK_BUSY,
+    DENY_REASON_AUTH_OR_BILL_FAILURE,
+    DENY_CONN_REQ_INPROGRESS_FAILURE,
+    DENY_CONN_SETUP_TIMER_EXPIRED,
+    DENY_REASON_RESERVED
+} IdpConnDenyReasonT;
+
+typedef  struct
+{
+    kal_uint8 MaskMap;
+    MaskRecordT Mask[MAX_MASKCOUNT];
+} PagingMaskPrefT;
+
+typedef enum
+{
+    IDP_ATTRIB_PCCC,  /*Preferred Control Channel Cycle Attribute ID, 0x00*/
+    IDP_ATTRIB_SM,     /*SlottedMode Attribute ID, 0x01 */
+    IDP_ATTRIB_PM,    /* Paging MaskAttribute ID, 0x02 */
+    IDP_ATTRIB_AHCM = 0xfe, /*AccessHashingClassMask Attribute Id, 0xfe */
+    IDP_ATTRIB_SSCA               /*Small Slot Cycle Allowed Attribute Id, 0xff */
+} IdpAttribIdT;
+
+typedef enum
+{
+    IHO_WAKE_REDUCTION_STATE_INACTIVE,
+    IHO_WAKE_REDUCTION_STATE_ACTIVE,
+    IHO_WAKE_REDUCTION_STATE_MINIACQ,
+    IHO_WAKE_REDUCTION_STATE_WAKEUP,
+    IHO_WAKE_REDUCTION_STATE_MONITOR,
+    IHO_WAKE_REDUCTION_STATE_SEARCHDONE,
+    IHO_WAKE_REDUCTION_STATE_COMPLETE
+} IHOWakeReductionStateT;
+
+#ifdef MTK_DEV_C2K_IRAT
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef enum
+{
+    IDP_RSVAS_OCCUPY_STATUS_NULL,
+    IDP_RSVAS_OCCUPY_STATUS_WAIT_CNF,
+    IDP_RSVAS_OCCUPY_STATUS_WAIT_CNF_FOR_FAST_CONN,
+    IDP_RSVAS_OCCUPY_STATUS_WAIT_IND,
+    IDP_RSVAS_OCCUPY_STATUS_WAIT_IND_FOR_FAST_CONN,
+    IDP_RSVAS_OCCUPY_STATUS_COMPLETE
+} IdpRsvasOccupyStatusT;
+#endif /* MTK_DEV_C2K_IRAT */
+
+typedef struct
+{
+   IdpSubTypeT     IdpSubType;
+   IdpStateT       curIdpState;
+   kal_bool        bInUseInitialized;
+   kal_bool        bSlottedModeEnabled;
+   kal_bool        bConnectionReqInProgress;
+   kal_bool        bDsarAccessInProgress;
+   kal_bool        bSessionCloseInprogress;
+   kal_bool        bSessionIsActive;
+   kal_bool        bSubnetChangedOrCommittingIndication;
+   kal_bool        bConnectionReqPending;
+   IdpAlmpOpenConnMsgT IdpAlmpOpenConnMsgPended;
+   kal_uint8       nAcmacTxStartedCount;
+   kal_bool        bSleepCapsuleDoneRcvd;
+   kal_bool        bSectorParmsUpdated;
+   kal_bool        bSuspendPeriodInActive;
+   kal_bool        bOMPUPdatedMsgPended;
+   kal_bool        bChannelSelectPended;
+   kal_bool        bPagePended;
+   kal_bool        bProhibitEnterSleepForPageRcvd;
+   kal_bool        bSessionSeedPended;
+   kal_uint8       ChannelCount;
+   ChanRecGT       Channel[64];
+   kal_uint8       RUPSupportedChannelCount;
+   ChanRecGT       RUPSupportedChannel[64];
+   kal_uint8       nSyncCapsuleOffset;
+   kal_bool        bSessionSeedValid;
+   kal_uint32      nSessionSeed;
+   kal_uint32      nATI;
+   IdpAttribRecT   attribIdp[IDP_MAX_INSTANCE];
+   IdpAttribRecT   attribFallback;
+   kal_uint32      nPeriod1;
+   kal_uint32      nPeriod2;
+   kal_uint32      nPeriod3;
+   kal_uint32      nT12;
+   kal_uint32      nT23;
+   PagingMaskPrefT PagingMaskPref;
+   kal_uint16      TDualIdleForDefaultType;
+   kal_uint16      TDualIdle;
+   kal_uint16      THRPDExtendedSC;
+   kal_bool        bImdWakeup;
+   kal_bool        bSrchDone;
+#ifdef MTK_DEV_C2K_IRAT
+   kal_bool        bOtherRATAvailable;
+   kal_uint8       OtherRATSlotCycle;
+   kal_bool        bOtherRATUpdated;
+#endif /* MTK_DEV_C2K_IRAT */
+   kal_bool        bIdpIHOWakeReductionEnable;
+   kal_uint32      nLongPeriod;
+   kal_uint32      curPeriod;
+   kal_bool        bByPassSessionStatusForSleep;
+   kal_uint8       numHashCh;
+   kal_uint8       curHashIdx;
+   kal_bool        bNeedSpecialSessionSeed;
+   kal_uint8       nNetworkLostCout;
+   kal_bool        bWakeupInd;
+   kal_uint16      T_Dfs_TimerMSC;
+   kal_uint16      T_Dfs_NumChan;
+} IdpInfoT;
+
+/* IDP ConnectionDeny Message*/
+typedef  struct {
+   kal_uint8 nTransactionID;
+   kal_uint8 nDenyReason;
+   kal_uint8 nReserved;
+} IdpConnectionDenyT;
+
+typedef struct
+{
+  kal_bool      bSloteMode;
+  kal_uint16   ChannelNum;
+  kal_uint8    FrameUpper6;
+  kal_uint32  FrameLow32;
+} EtsGetDoSysStatusRspT;
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+extern RmcSchDataCtxT RmcSchDataCtx;
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+void IdpInit(void);
+void IdpInitialize(void);
+void IdpCalcT12AndT23Value(void);
+void RunIdpStateMachine(kal_uint32 MsgId, void *MsgDataP);
+void ProcessIdpAlmpActivateMsg(IdpAlmpActiveMsgT *MsgDataP);
+void ProcessIdpAlmpDeactivateMsg(IdpAlmpDeactiveMsgT *MsgDataP);
+void ProcessIdpAlmpOpenConnMsg(IdpAlmpOpenConnMsgT *MsgDataP);
+void ProcessIdpAlmpCloseMsg(void);
+void ProcessIdpRupConnectionInitiatedMsg(void);
+void ProcessIdpRupConnectionOpenedMsg(void);
+void ProcessIdpRupIHOResultMsg(IdpRupIHOResultMsg* MsgDataP);
+void ProcessIdpHscFreezeMsg(void);
+void ProcessIdpHscThawMsg(void);
+void ProcessIdpHscResyncIndMsg(void);
+void ProcessIdpHscResyncDeniedMsg(IdpHscResyncDeniedMsgT *MsgDataP);
+void ProcessIdpHscWakeupIndMsg(IdpHscWakeupIndMsgT *MsgDataP);
+void ProcessIdpAcmTxStartedMsg(void);
+void ProcessIdpAcmTxEndedMsg(IdpAcmTxEndedMsgT *MsgDataP);
+void ProcessIdpCcmSleepCapsuleDoneMsg(void);
+void ProcessIdpDsaFwdMsg(DsaFwdMsgT *MsgDataP);
+void ProcessIdpDsaTxStatusMsg(DsarTxStatusMsgT *MsgDataP);
+void ProcessIdpSmpSessionOpenedMsg(void);
+void ProcessIdpSmpSessionClosedMsg(IdpSmpSessionClosedMsgT *MsgDataP);
+void ProcessIdpSmpSessionStatusMsg(IdpSmpSessionStatusMsgT *MsgDataP);
+void ProcessIdpOmpUpdatedMsg(IdpOmpUpdatedMsgT *MsgDataP);
+void ProcessIdpCspSuspenPeriodTimeMsg(IdpCspSuspendPeriodTimeMsgT *MsgDataP);
+void ProcessIdpCspConnectionClosedMsg(void);
+void ProcessIdpAmpSessionSeedMsg(IdpAmpSessionSeedMsgT *MsgDataP);
+void ProcessIdpCcmOffsetMsg(IdpCcmOffsetMsgT *MsgDataP);
+void ProcessIdp1XPsPagingMaskSetMsg(Idp1XPsPagingMaskSetMsgT *MsgDataP);
+void ProcessIdpEltSlottedModeSetMsg(IdpSlottedModeSetMsgT *MsgDataP);
+void ProcessIdpScpReconfiguredMsg(void);
+void ProcessIdpScpCommittedMsg(void);
+void IdpInitStructures( kal_uint8 SubType, kal_bool InUse);
+void ProcessIdpConnectionSetupTmrExpired(void);
+void ProcessIdpPagePendingTmrExpired(void);
+void ProcessIdpSuspendPeriodTmrExpired(void);
+void ProcessIdpNoSrchDoneWakeUpTmrExpired(void);
+void ProcessIdpDfsTmrExpired(void);
+void ProcessIdpEltHardoffTestMsg(IdpEltHandoffMsgT *HandoffMsg);
+kal_bool IdpCheckSubTypeInUseAndInConfigProtocol(void);
+void ProcessIdpAlmpSysInfoUpdateMsg(IdpAlmpSysInfoUpdateMsgT *MsgDataP);
+void ProcessIdpEltGetDoSysStatusMsg(ExeRspMsgT*  pMsg);
+void ProcessIdpDsarAccessStartMsg(void);
+void ProcessIdpDsarAccessStopMsg(IdpDsarAccessEndedMsgT *MsgDataP);
+void ProcessIdpPrefCCCycleMsg(DoPrefCCModeSetMsgT* MsgDataP);
+void ProcessIdpExtendedSlotCycleSetMsg(IdpExtendedSlotCycleSetMsgT *MsgDataP);
+void ProcessIdpRupChannelChangedIndMsg(IdpRupChannelChangedIndMsgT *MsgDataP);
+void ProcessIdpRupForceIHORspMsg(IdpRupForceIHORspMsgT* MsgDataP);
+void ProcessIdpBlockIHOWakeReductionExpired(void);
+void ProcessIdpRmcInterHoCnfMsg(void);
+void ProcessIdpRmcIhoWakeReductionStateCnfMsg(IdpRmcIHOWakeReductionStateCnfMsgT *MsgDataP);
+void ProcessIdpRmcIhoForceAcqOvhdIndMsg(IdpRmcForceAcqOvhdIndMsgT *MsgDataP);
+
+kal_bool IdpGetIdpFreezeState(void);
+void IdpGetCurChanInfo(ChanRecGT *pCurChanInfo);
+#ifdef MTK_DEV_C2K_IRAT
+void ProcessIdpOmpOtherRATUpdatedMsg(IdpOmpOtherRatUpdatedMsgT *MsgDataP);
+void ProcessIdpContinueRcvUatiAssignmentTmrExpired(void);
+void IdpProbeTxingProtectionDetermine(kal_bool bProtectStatus);
+void ProcessClcRmcIdleModeCfgCnfMsg(void);
+#endif /* MTK_DEV_C2K_IRAT */
+
+kal_bool IdpCheckReadyForPowerDown(void);
+
+kal_bool IdpNeedChanHash(IdpOmpUpdatedMsgT *MsgDataP);
+void ProcessIdpRupDfsEndMsg(IdpRupDfsEndMsgT *MsgDataP);
+void processIdpDfsTimerSetMsg(IdpDfsTimerSetMsgT *MsgDataP);
+void ProcessIdpHscTxAvailableInd(void);
+
+#ifdef __EVL3_EM_MODE__
+IdpInfoT* IdpShareIDPInfo(void);
+#endif
+
+void IdpSignalInteractiveProtectDetermine (kal_uint16 protocolType, kal_uint32 msgId, ConfirmResponseE Status);
+void ProcessIdpWfrRmcInterHoCnfExpired(void);
+IdpStateT IdpStateGet(void);
+
+#ifdef MTK_DEV_C2K_IRAT
+void ProcessIdpWfrRsvasOccupyIndTimerExpired (void);
+#endif
+
+void ProcessIdpGuardNonSlottedModeExpired(void);
+
+/*****************************************************************************
+* $Log: clcidp.h $
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /*_CLCIDP_H_*/
+
+
+/**Log information: \main\CBP80\cbp80_jzwang_scbp10066\1 2012-07-19 04:50:08 GMT jzwang
+** Made the change to handle the DO Long sleep command from IRAT when DO in sleep state**/
+/**Log information: \main\Trophy\Trophy_ylxiao_href22158\1 2013-04-19 09:40:29 GMT ylxiao
+** HREF#22158, remove compile warnings, fix bug**/
+/**Log information: \main\Trophy\1 2013-04-22 01:48:23 GMT zlin
+** HREF#22158. merge code.**/
+/**Log information: \main\Trophy\Trophy_yzhang_href22247\1 2013-07-30 06:34:55 GMT yzhang
+** HREF#22274=>fix concurrent UATIRequest and connectionrequest**/
+/**Log information: \main\Trophy\2 2013-07-30 07:08:05 GMT jzwang
+** href#22247**/
diff --git a/mcu/interface/protocol/as_c2k/evdo/clciratm.h b/mcu/interface/protocol/as_c2k/evdo/clciratm.h
new file mode 100644
index 0000000..8953ca6
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/clciratm.h
@@ -0,0 +1,478 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _CLCIRATM_H_
+#define _CLCIRATM_H_ 1
+/*****************************************************************************
+*
+* FILE NAME   : clciratm.h
+*
+* DESCRIPTION : This file includes the definition of OMP
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+#ifdef MTK_DEV_C2K_IRAT
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "cpbuf.h"
+#include "do_clcapi.h"
+#include "clcomp.h"
+#include "do_rupapi.h"
+#include "do_idpapi.h"
+#include "do_dsaapi.h"
+#include "do_ompapi.h"
+#include "clctimer.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+#define IRATM_ERRC_MAX_INTER_FREQUENCY 8
+
+#define IRATM_NUM_BARRED_CELLS 16
+
+#define IRATM_ERRC_MAX_INTER_FREQ_CELL           (16)
+
+#define IRATM_NUM_OF_TIMERS    IRATM_ERRC_MAX_INTER_FREQUENCY * IRATM_ERRC_MAX_INTER_FREQ_CELL
+
+#define INVALID_EARFCN                     (0xFFFF)
+
+#define INVALID_EUTRA_PHYS_CELL_ID         (0xFFFF)
+
+#define INVALID_RESELECTION_PRIORITY           (0xFF)
+
+
+/** Defines the scaling factors to be used for all dB and dBm measurements. */
+#define RRC_SYS_INFO_DB_SCALING_FACTOR     4
+
+#define IRATM_MIN_RSRQ_VALUE                (-255 * RRC_SYS_INFO_DB_SCALING_FACTOR)
+#define IRATM_MAX_RSRQ_VALUE                (255 * RRC_SYS_INFO_DB_SCALING_FACTOR)
+#define IRATM_INVALID_RSRQ_VALUE            (0xFF)
+#define IRATM_INITIAL_RSRQ_VALUE            (0)
+
+#define MAX_IRATM_TIMER_NUM                   (30)
+#define MAX_OMP_PLMN_NUM        8
+#define MAX_EUTRA_FREQ_NUM      8
+
+#define MAX_IRATM_NUM_HPLMN                 26
+#define NWSEL_MAX_IRATM_NUM_PLMNS           300
+#define MAX_PREFER_PLMN_NUM     255
+
+#define MAX_IRAT_CCELL_MEAS_MSG_QUEUE_LEN  2
+
+/** Defines the RSRP measurement in 1/8dBm units.
+ *  Range is -140 (x8) to -44 (x8).
+ */
+typedef kal_int16 EutraRsrp;
+
+/** Defines the RSRQ measurement in 1/8dB units.
+ *  Range is -19.5 (x8) to -3 (x8).
+ */
+typedef kal_int16 EutraRsrq;
+
+extern RmcIratmCcellMeasReqT rmcIratmCcellMeasReq;
+
+/*----------------------------------------------------------------------------
+ Global Typedefs
+----------------------------------------------------------------------------*/
+
+typedef kal_uint8  /* 0 to 7 */                                 CellReselectionPriority;
+
+typedef kal_uint16  /* 0 to 16 */                               Ecell_T_Reselection;
+
+typedef kal_uint16 /* 0 to 503 */                               EutraPhysCellId;
+
+typedef enum {
+    BASE_PRIORITY,
+    BASE_MEASUREMENT,
+    BASE_RESERVED
+} EutranMeasModeT;
+
+
+/** Identifies the LTE physical cell */
+typedef struct
+{
+    eas_target_cell_info target_cell;
+
+    kal_uint8   TimerID;
+}
+ECellIdentifierT;
+
+typedef struct
+{
+    kal_uint8   band;
+    kal_uint16  channel;
+    kal_uint16  pn;        /* indicate the pilot number the measurement result belonged, range: 0..511 */
+    kal_int16   phase;     /* indicate CDMA pilot phase, represent in chips */
+    kal_uint16  strength;  /* indicate CDMA pilot strength, in -0.125db format
+                              note: CAS will send the strength value calculated by formula [FLOOR(-2 x 10 x log10 Ec/Io)]
+                                    without adding negative sign, and EAS needs to multiply the strength value by (-1)
+                                    when it evaluates reselection criteria if fulfill: Srxlev > ThreshxHighP, ThreshxLowP */
+}IratmServingPilotMeasResultT;
+
+typedef struct
+{
+    kal_uint8                  tid;          /* tid is used by EAS to filter the measurement report from CAS, range: 0..255
+                                                the CCELL_MEAS_IND corresponding to this CCELL_MEAS_REQ should return the same tid
+                                                Note that (1)   ERRC will maintain two tid. One is for HP_MODE. The other one is for LP_MODE/RESEL/CONNECTED.
+                                                          (2)   CAS also needs to maintain two tid like ERRC. */
+    cas_meas_type_enum         meas_type;    /* indicate the measurement type of this CCELL_MEAS_REQ
+                                                - if 'RESEL' type is selected, the set of sectors indicated in this primitive should be a subset of the previously measured sectors
+                                                - if 'CONNECTED' type is selected, it means EAS is in connected mode and requests CAS to do measurement
+                                                  (in order to distinguish from HP/LP/RESEL modes which used in idle mode)
+                                                - when this primitive is used to stop measurement, EAS should choose correct type to inform CAS which type of measurement should be stopped */
+    kal_uint8                  meas_period;  /* indicate the absolute measurement period used by C2K to report the measurement results to LTE
+                                                this field is only valid if 'meas_type' = HP_MODE, represent in 'seconds' */
+    kal_uint8                  band_num;     /* indicate the number of measurement bands, range: 0..MAX_NUM_MEAS_C2K_BAND
+                                                if band_num=0, CAS should stop the measurement specified in the 'meas_type' */
+    cas_meas_band_info_struct  band_list[MAX_NUM_MEAS_C2K_BAND];  /* indicate the measurement information */
+}EasCasConfigCcellMeasReqT;
+
+
+
+typedef   struct
+{
+    kal_bool bWaitProcessing;
+    kal_bool bStopMeasForMissMatchConfig;
+    EasCasConfigCcellMeasReqT cCellMeasConfig;
+}IratCcellMeasConfigT;
+
+/* IRATM Timers */
+typedef enum
+{
+    /* Barred Frequency timers */
+    IRATM_FREQUENCY_BARRED_TIMER_0,
+    IRATM_FREQUENCY_BARRED_TIMER_1,
+    IRATM_FREQUENCY_BARRED_TIMER_2,
+    IRATM_FREQUENCY_BARRED_TIMER_3,
+    IRATM_FREQUENCY_BARRED_TIMER_4,
+    IRATM_FREQUENCY_BARRED_TIMER_5,
+    IRATM_FREQUENCY_BARRED_TIMER_6,
+    IRATM_FREQUENCY_BARRED_TIMER_7,
+
+    /* Barred Cell timers */
+    IRATM_CELL_BARRED_TIMER_0,
+    IRATM_CELL_BARRED_TIMER_1,
+    IRATM_CELL_BARRED_TIMER_2,
+    IRATM_CELL_BARRED_TIMER_3,
+    IRATM_CELL_BARRED_TIMER_4,
+    IRATM_CELL_BARRED_TIMER_5,
+    IRATM_CELL_BARRED_TIMER_6,
+    IRATM_CELL_BARRED_TIMER_7,
+    IRATM_CELL_BARRED_TIMER_8,
+    IRATM_CELL_BARRED_TIMER_9,
+    IRATM_CELL_BARRED_TIMER_10,
+    IRATM_CELL_BARRED_TIMER_11,
+    IRATM_CELL_BARRED_TIMER_12,
+    IRATM_CELL_BARRED_TIMER_13,
+    IRATM_CELL_BARRED_TIMER_14,
+    IRATM_CELL_BARRED_TIMER_15,
+    IRATM_DEPRIORITIZATION_TIMER,
+
+    /* Base timer for inter-frequency T-Reselection */
+    IRATM_INTER_F_T_RESELECTION_TIMER_BASE,
+
+    /* NOTE: this is not a real timer and must be last in the list! */
+    IRATM_MAX_NUM_OF_TIMERS = IRATM_INTER_F_T_RESELECTION_TIMER_BASE + IRATM_NUM_OF_TIMERS,
+}
+IratmTimerIndex;
+
+
+typedef   struct
+{
+    kal_bool              Active;
+    IratmTimerIndex       timerIndex;    
+    eventid               eventid;        
+}IratmExeTimerT;
+
+typedef  struct
+{
+    kal_uint32   TimerId;
+}IratmTimerExpiredMsgT;
+
+typedef  struct
+{
+    EARFCN  earfcn;
+    kal_bool    neverAllowed;
+    te_eval_activate_fail_type failType;
+}IratmBarFrequencyT;
+
+/* Inter-frequency priority relative to serving-frequency */
+typedef enum
+{
+    HIGH_PRIORITY_EARFCN,
+    EQUAL_PRIORITY_EARFCN,
+    LOW_PRIORITY_EARFCN
+}
+IratmPriorityRelativeToServFreq;
+
+/* E-UTRA cell information */
+typedef struct IratmCellEutraInfoTag
+{
+    /* Indicated presence of this position */
+    kal_bool         cellPresent;
+
+    /* Physical Cell Identity of the target cell */
+    kal_uint16       physCellId;
+
+    /* RSRP of the E-UTRA cell in 1/4dBm units */
+    kal_int16       rsrp;
+
+    /* RSRQ of the E-UTRA cell in 1/4dB units */
+    kal_int16       rsrq;
+
+    /* Srxlev of the E-UTRA cell in 1/4dB units */
+    kal_int16     srxlev;
+
+    /* Squal of the E-UTRA cell in 1/4dB units */
+    kal_int16     squal;
+
+    /* Ranking value of the E-UTRA cell in 1/4dB units */
+    kal_int16     rankingValue;
+
+    /* Indicated whether T-reselection timer has been expired or not */
+    kal_bool         tReselectionExpired;
+}
+IratmEutraCellInfo;
+
+
+/* E-UTRA frequency information */
+typedef struct
+{
+    /* E-UTRA Arfcn of the frequency */
+    EARFCN                earfcn;
+
+    /* Cell Reselection Priority of this Carrier */
+    kal_uint8           cellReselectionPriority;
+
+    eas_bandwidth_enum  measBandWidth;
+
+    /* E-UTRA cell information on the carrier */
+    IratmEutraCellInfo       eutraCellInfo [IRATM_ERRC_MAX_INTER_FREQ_CELL];
+}
+IratmEutraFreqInfo;
+
+typedef enum
+{
+    Home_PLMN_Type,     /*Contain at least one home or ehome Plmn*/
+    Prefer_PLMN_Type,   /*Contain no home or ehome Plmn, but at least one perfer Plmn*/
+    Any_PLMN_Type       /*Contain no home or ehome Plmn, no perfer Plmn*/
+}
+IratmPlmnType;
+
+typedef enum
+{
+    EHPLMN_Type,
+    UPLMN_Type,
+    OPLMN_Type
+}
+IratmSimPlmnType_enum;
+
+typedef struct
+{
+    kal_uint8                       NumPLMNIds;
+    cas_eas_plmn_id_struct      PLMNID[MAX_OMP_PLMN_NUM];
+}
+IratmEutranPlmnInfo;
+
+typedef struct
+{
+    /* HOME+EHOME PLMN */
+    kal_uint16                      num_of_home_plmn;
+    cas_eas_plmn_id_struct      hplmn[MAX_IRATM_NUM_HPLMN];
+    kal_uint32                      hplmnU32[MAX_IRATM_NUM_HPLMN];
+
+    /* PERFER PLMN, uplmn+oplmn from GMSS
+     For priority uplmn>oplmn, then the list include uplmn first, then oplmn*/
+    kal_uint16                      num_of_pref_plmn;
+    cas_eas_plmn_id_struct      prefplmn[MAX_PREFER_PLMN_NUM];
+    kal_uint32                      prefplmnU32[MAX_PREFER_PLMN_NUM];
+}
+IratmSimEutranPlmnInfo;
+
+
+typedef  struct
+{
+    srlteRatTypeT            curIratmState;
+    srlteRatTypeT            SettingIratmState;
+    EutranMeasModeT          currEutranMeasMode;
+    IratmServingPilotMeasResultT servingPilot;
+    kal_bool                     bIHOInProgress;
+    kal_bool                     bOmpUpdated; /* True: can start irat measurement
+                                             False: can't start irat measurement */
+    kal_bool                     bStdByHPMeasIsDoing;
+    kal_bool                     bStdByReselMeasIsDoing;
+    kal_bool                     bStdByLPMeasIsDoing;
+    kal_bool                     bStdByConnMeasIsDoing;
+    kal_bool                     bStdByStopHPMeasIsDoing;
+    kal_bool                     bStdByStopReselMeasIsDoing;
+    kal_bool                     bStdByStopLPMeasIsDoing;
+    kal_bool                     bStdByStopConnMeasIsDoing;
+    kal_bool                     bStandBySuspendIsDoing;
+    kal_bool                     bStandByLtePowerOffIsDoing;
+    kal_bool                     bStandByLtePowerOffCgiStopIsDoing;
+    kal_bool                     bStandBySyncReceivingIsDoing;
+    kal_bool                     bStandByMeasCnfIsWaiting;
+    kal_bool                     bStandbyVirtualSuspendIsDoing;
+    kal_bool                     bActIratHpMeasIsDoing;
+    kal_bool                     bActIratQualifyMeasIsDoing;
+    kal_bool                     bActIratLpMeasIsDoing;
+    kal_bool                     bActIratAllMeasIsDoing;
+    kal_bool                     bActIratSuspendIsDoing;
+    kal_bool                     bActIratVirtualSuspendIsDoing;
+    kal_bool                     bActIratMeasStopIsDoing;
+    kal_bool                     bActIratDePriorityStopMeasIsDoing;
+    kal_bool                     bActIratMeasResultIsReceived;
+    kal_bool                     bCssMeasCtrl;/* True: start; False: stop */
+    kal_bool                     bAbortMeas;/* True: abort; False: don't abort */
+    kal_bool                     bAlmpMeasCtrl;/* True: start;False stop */
+    kal_bool                     bDeprioritizationInfoValid;/* Indicate if deprioritization list exist */
+    kal_bool                     bCgiIsDoing;
+    kal_bool                     bCgiStopIsDoing;
+    kal_bool                     bSpIsAcquired;
+    kal_bool                     bCssStopMeasIsDoing;
+    kal_bool                     bAlmpStopMeasIsDoing;
+    kal_bool                     bOmpStopMeasIsDoing;
+    kal_bool                     bReselectionIsDoing;
+    kal_bool                     bEvaluationIsDoing;
+    kal_bool                     bStopEvaluationIsDoing;
+    kal_bool                     bPlmnInfoIsChanged;
+    kal_bool                     bHighPrioritySearchMode;
+    kal_bool                     bToLteReselIsDoing;
+    kal_bool                     bCssSuspendReqWaitProcess;
+    kal_bool                     bLtePowerOffWaitProcess;
+    kal_bool                     bCssPowerOffWaitProcess;
+    kal_bool                     bCssSuspendResumeReqWaitProcess;
+    kal_bool                     bCssSetRatIsDoing;
+    kal_bool                     bCssSetRatNeedCnf;
+    kal_uint8                    eCellMeasConfigTid;
+    OmpEUTRANNeigborListRecT eutranNeighborInfo;
+    kal_uint8                    sectorID[OMP_SECTORID_LENGTH_IN_BYTE];
+    /* Barred frequency list */
+    IratmBarFrequencyT       barredEutraArfcns [IRATM_ERRC_MAX_INTER_FREQUENCY];
+
+    /* Barred cell list */
+    ECellIdentifierT         barredCells [IRATM_NUM_BARRED_CELLS];
+
+    Ecell_T_Reselection      tReselection;
+
+    eas_cas_report_cgi_req_struct     cgiInfo;
+    cgi_info_status_enum              currentCgiDetectedState;
+
+    eas_deprioritization_info_struct  deprioritizationInfo;
+
+    /* Number of inter frequency carrier */
+    kal_uint8                             numberOfLteInterFreq;
+
+    /* Inter frequency information list */
+    IratmEutraFreqInfo                lteInterFreqInfoList [IRATM_ERRC_MAX_INTER_FREQUENCY];
+
+    kal_uint8                             numberOfLtePlmnInterFreq;
+
+    IratmEutraFreqInfo                ltePlmnInterFreqInfoList [IRATM_ERRC_MAX_INTER_FREQUENCY];
+
+    kal_uint8                             numHighLayer;
+
+    cas_eas_lte_measurement_req_struct currentErrcFreqMeasReq;
+    cas_eas_evaluate_ecell_req_struct  eCellEvaluateReq;
+
+    cas_eas_lte_hps_qualify_cell_ind_struct  hps_qualify_cell_ind;
+
+    IratmSimEutranPlmnInfo     SimPlmnInfo;
+
+}IratmInfoT;
+
+typedef struct
+{
+    eas_cas_config_ccell_meas_req_struct data[MAX_IRAT_CCELL_MEAS_MSG_QUEUE_LEN];
+    int front;
+    int rear;
+}MsgQueue;
+
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+void iratmInit(void);
+void iratmInfoInit(kal_bool bResetPlmnInfo,kal_bool bResetBarInfo);
+kal_bool IratmCheckCgiState (void);
+kal_bool IratmCheckStandBySyncReceivingState (void);
+void IratmResetStandBySyncReceivingState (void);
+void IratmClearBarFreqForTaNotAllowed (void);
+void IratmClearBarFreqForCellBarredResvOperatorFreq (void);
+kal_bool IratmCheckStandByMeasState (void);
+void IratmSendSyncMsgToRmc (kal_bool bMsgDecodeSuccess,kal_uint16 PilotPN, kal_uint32 Lower32, kal_uint8  Upper6,
+                            kal_uint16 cCCycleStartTime);
+void ProcessIratmRmcCgiFail(cgi_info_status_enum cgiFail);
+OmpEUTRANNeigborListRecT *IratmGeteutranNeighborInfo (void);
+void iratmTimerInit (void);
+
+void RunIratmStateMachine(kal_uint32 MsgId, void *MsgDataP);
+void ProcessIratmCgiInfo(kal_uint8 *pInfo);
+kal_bool isIratmProcessedMsg(kal_uint32 MsgId);
+void ProcessIratmAlmpToLteMeasCtrlReq(void* pMsg);
+kal_bool IratmGetAlmpMeasCtrlStatus(void);
+void IratmSetOmpUpdateFlag (kal_bool flag);
+void IratmSetActiveSetInfo(void);
+kal_bool IratmCheckIfPriorityChange(OmpEUTRANNeigborListRecT *pEutranNLRec,
+                                OmpEUTRANNeigborListRecT *pOmpOtherRatNLRec);
+kal_bool IratmJudgeIfActiveRatState (void);
+
+
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /*_CLCOMP_H_*/
+
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/clcomp.h b/mcu/interface/protocol/as_c2k/evdo/clcomp.h
new file mode 100644
index 0000000..6196969
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/clcomp.h
@@ -0,0 +1,406 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _CLCOMP_H_
+#define _CLCOMP_H_ 1
+/*****************************************************************************
+*
+* FILE NAME   : clcomp.h
+*
+* DESCRIPTION : This file includes the definition of OMP
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "cpbuf.h"
+#include "do_clcapi.h"
+#include "do_rupapi.h"
+#include "do_idpapi.h"
+#include "do_dsaapi.h"
+#include "do_ompapi.h"
+#ifdef MTK_DEV_C2K_IRAT
+#include "valapi.h"
+#endif
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define CP_1_BIT_WIDTH                  1
+#define CP_2_BITS_WIDTH                 2
+#define CP_3_BITS_WIDTH                 3
+#define CP_4_BITS_WIDTH                 4
+#define CP_5_BITS_WIDTH                 5
+#define CP_6_BITS_WIDTH                 6
+#define CP_7_BITS_WIDTH                 7
+#define CP_8_BITS_WIDTH                 8
+
+#define OMP_ATTRIB_OCP_BIT                 0x01
+#define OMP_ATTRIB_RUTC_BIT                0x02
+#define N_OMP_MIN_ZONE_SIGNATURE_LIST_SIZE 8
+#define OMP_MAX_CACHE_RECS                 6
+#define OMP_SECTORID_LENGTH_IN_BYTE        16
+
+#ifdef MTK_DEV_C2K_IRAT
+#define OMP_MAX_OTHER_RAT_REC_NUM     16
+#define OMP_MAX_NEIGHBORRAT_REC_LEN   400
+#endif /* MTK_DEV_C2K_IRAT */
+
+typedef kal_uint8 OmpSectorIdT[OMP_SECTORID_LENGTH_IN_BYTE];
+
+/*----------------------------------------------------------------------------
+ Global Typedefs
+----------------------------------------------------------------------------*/
+
+typedef enum {
+   ST_EVDO,
+   ST_CDMA_1X
+} SystemTypeT;
+
+typedef enum {
+    OMP_INACTIVE_ST,
+    OMP_ACTIVE_ST,
+    OMP_STATE_MAX
+} OmpStateT;
+
+typedef enum {
+   OMP_DEFAULT,
+   OMP_MAX_PROT
+} OmpSubTypeT;
+
+typedef enum {
+   OMP_INCONFIG,
+   OMP_INUSE,
+   OMP_MAX_INSTANCE
+} OmpInstanceT;
+
+typedef enum {
+   OMP_QUICKCONFIG_MESSAGE,
+   OMP_SECTORPARAMETERS_MESSAGE,
+#ifdef MTK_DEV_C2K_IRAT
+   OMP_HRPDSILENCEPARAMETERS_MESSAGE,
+   OMP_OTHERRAT_NEIGHBORLIST_MESSAGE,
+#endif /* MTK_DEV_C2K_IRAT */
+   OMP_CONFIG_REQUEST_MESSAGE = 0x50,
+   OMP_CONFIG_RESPONSE_MESSAGE,
+   OMP_MAX_MESSAGE_ID
+} OmpMessageTypeT;
+
+typedef enum {
+   OMP_ATTRIB_OCP  = 0xFF,  /*OverheadCachePeriod Attribute ID, 0x00*/
+   OMP_ATTRIB_RUTC = 0xFE     /*RouteUpdateTriggerCodeListSize Attribute ID, 0x00 */
+} OmpAttribIdT;
+
+typedef  struct {  
+    kal_uint8 ColorCode;
+    kal_uint32 SectorID24;
+    kal_uint16 SectorSignature;
+    kal_uint16 AccessSignature;
+    //kal_uint16 OldAccessSignature;/*not used*/
+    kal_bool   Redirect;
+    kal_uint8  RPCCount63To0;
+    kal_uint8 ForwardTrafficValid63To0[8];
+    kal_bool   RPCCount127To64Included;
+    kal_uint8 RPCCount127To64;
+    kal_uint8  ForwardTrafficValid127To64[8];
+    kal_uint8  Reserved;
+#ifdef MTK_DEV_C2K_IRAT
+       kal_bool  ReservedBitsIncluded;
+       kal_uint8 NumReservedBits;
+       kal_bool  OtherRATAvailable;
+       kal_uint8 OtherRATTXCycle;
+       kal_uint8 OtherRATSignature;
+#endif /* MTK_DEV_C2K_IRAT */
+}OMPQuickConfigMsgT;
+
+
+typedef  struct {
+    kal_uint16 CountryCode;
+    kal_uint8  SectorID[OMP_SECTORID_LENGTH_IN_BYTE];
+    kal_uint8  SubnetMask;
+    kal_uint16 SectorSignature;
+    kal_uint32 Latitude;
+    kal_uint32 Longitude;
+    kal_uint16 RouteUpdateRadiusOverhead;
+    kal_uint8  LeapSeconds;
+    kal_uint16 LocalTimeOffset;
+    kal_uint8  ReverseLinkSilenceDuration;
+    kal_uint8  ReverseLinkSilencePeriod;
+    kal_uint8  ChannelCount;
+    ChanRecGT  channelRecord[MAX_CHANNEL_SUPPORT];
+    kal_uint8  NeighborCount;
+    kal_uint16 NeighborPilotPN[MAX_CHANNEL_SUPPORT];
+    NeighborChannelT NeighborChannel[MAX_CHANNEL_SUPPORT];
+    kal_bool   NeighborSearchWindowSizeIncluded;
+    kal_uint8  NeighborSearchWindowSize[MAX_CHANNEL_SUPPORT];
+    kal_bool   NeighborSearchWindowOffsetIncluded;
+    kal_uint8  NeighborSearchWindowOffset[MAX_CHANNEL_SUPPORT];
+    kal_bool   ExtendedChannelIncluded;
+    kal_uint8  ExtendedChannelCount;
+    ChanRecGT  ExtendedChannel[MAX_CHANNEL_SUPPORT];
+    kal_bool   AccessHashingChannelMaskIncluded;
+    kal_uint8  AccessHashingMaskLength;
+    AccessHashingChannelMaskRecordT AccessHashingChannelMask[MAX_CHANNEL_SUPPORT*2];
+    kal_bool   RouteUpdateTriggerCodeIncluded;
+    kal_uint16 RouteUpdateTriggerCode;
+    kal_uint8  RouteUpdateTriggerMaxAge;
+    kal_bool   PriorSessionGAUP;
+    kal_bool   FPDCHSupportedIncluded;
+    kal_uint32 FPDCHSupported;
+    kal_bool   SecondaryColorCodeIncluded;
+    kal_uint8  SecondaryColorCodeCount;
+    kal_uint8  SecondaryColorCode[MAX_SECONDARY_COLORCODE_NUM];
+    kal_uint8  Reserved;
+} OMPSectorParametersMsgT;
+
+#ifdef MTK_DEV_C2K_IRAT
+
+#define MAX_OMP_PLMN_NUM        8
+#define MAX_EUTRA_FREQ_NUM      8
+
+/*IRAT*/
+#ifdef MTK_DEV_C2K_IRAT
+typedef struct /* 3GPP2 C.S0087 v2.0 7.1 */
+{
+    kal_uint8 ThreshXQ;
+    kal_uint8 QualMinEUTRA;
+    kal_bool  QualMinEUTRAOffsetIncl;
+    kal_uint8 QualMinEUTRAOffset;
+} OmpIratEUTRANNbrRSRQSpecT;
+#endif
+/*IRAT*/
+
+typedef struct {
+  kal_uint16 EARFCN;       /* EUTRA channel number */
+  kal_uint8  EARFCNPriority;     /* priority of EARFCN of the neighbir EUTRA system. 0xff means not provided */
+  kal_uint8  ThreshX;       /* Min required signal threshold used for selecting an EARFCN */
+  kal_uint8  RxLevMinEUTRA; /* Min ref power level to select EUTRA */
+  kal_uint8  PEMax; /* Max TX power level UE may use when transmitting up-link of EUTRA */
+  kal_bool   RxLevMinEUTRAOffsetIncl;
+  kal_uint8  RxLevMinEUTRAOffset; /* Offset to min ref power level to select EUTRA. 0xff means not provided */
+  kal_uint8  MeasurementBandwidth; /* measurement bandwidth Nrb value, Table 7.1-1 */
+  kal_bool   PLMNSameAsPreviousChannel;
+  kal_uint8  NumPLMNIds; /* number of PLMN on this EARFCN channel */
+  kal_uint32 PLMNID[MAX_OMP_PLMN_NUM];  /*PLMN ID of the neighbor EUTRA system. 0xffffffff means not provided */
+} OmpIratEUTRANNeighborT;
+
+typedef struct {
+   kal_bool  PriorityIncluded;
+   kal_uint8 ServingPriority;
+   kal_uint8 ThreshServing;
+   kal_bool  PerEARFCNParamsIncluded;
+   kal_uint8 RxLevMinEUTRACommon;
+   kal_uint8 PEMaxCommon;
+   kal_bool  RxLevMinEUTRAOffsetCommonIncl;
+   kal_uint8 RxLevMinEUTRAOffsetCommon;
+   kal_bool  MaxReselectionTimerIncluded;
+   kal_uint8 MaxReselectionTimer;
+   kal_bool  SearchBackOffTimerIncluded;
+   kal_uint8 MinMeasurementBackoff;
+   kal_uint8 MaxMeasurementBackoff;
+   kal_bool  PLMNIDIncluded;
+   kal_uint8 NumEUTRAFrequencies;
+   OmpIratEUTRANNeighborT EUTRAFreq[MAX_EUTRA_FREQ_NUM];
+
+/*IRAT*/
+#ifdef MTK_DEV_C2K_IRAT
+   kal_bool   ServingNwPLMNIncl;
+   kal_uint8  NumServingPLMNIds;   
+   kal_uint32 S_PLMNID[MAX_OMP_PLMN_NUM];
+   kal_bool   RSRQParasIncl;
+   kal_uint8  QualMinEUTRAComm;
+   kal_bool   QualMinEUTRAOffsetCommIncl;
+   kal_uint8  QualMinEUTRAOffsetComm;
+   OmpIratEUTRANNbrRSRQSpecT EUTRARsrqSpec[MAX_EUTRA_FREQ_NUM];
+#endif
+/*IRAT*/
+} OmpEUTRANNeigborListRecT;
+
+typedef  struct {
+   kal_uint8  RATType;
+   kal_uint16 NeighborListRATRecordLength;
+   union {
+      kal_uint8 NeighborListRecord[OMP_MAX_NEIGHBORRAT_REC_LEN];
+      OmpEUTRANNeigborListRecT OmpEUTRANNeigborListRec;
+   } u;
+} OmpOtherRATRecT;
+
+/* By Keith: The struct for saving Eutran neighbor frequencies */
+typedef struct {
+    kal_uint8    NumEUTRAFrequencies;
+    kal_uint16   EARFCN[MAX_EUTRA_FREQ_NUM];
+} OmpEUTRANNeigborListFreqRecT;
+
+typedef  struct {
+   kal_uint8 OtherRATSignature;
+   kal_uint8 NumOtherRAT;
+   OmpOtherRATRecT OmpOtherRATList[OMP_MAX_OTHER_RAT_REC_NUM];
+} OMPOtherRATNeighborListMsgT;
+
+typedef  struct {
+    kal_uint8 ReverseLinkSilenceDuration;
+    kal_uint8 ReverseLinkSilencePeriod;
+    kal_uint8 Reserved;
+} OMPHRPDSilenceParameterMsgT;
+#endif /* MTK_DEV_C2K_IRAT */
+
+typedef enum
+{
+  OMP_CACHE_NOTUSED,
+  OMP_CACHE_INUSE_FOR_IDLE,
+  OMP_CACHE_INUSE_FOR_CONN
+} OmpCacheStateT;
+
+typedef struct
+{
+  kal_uint32     timestamp;
+  kal_uint16     PilotPN;
+  OmpCacheStateT stOmpCache;
+  ChanRecGT      ChannelInfo;
+  
+  OMPQuickConfigMsgT      OMPQuickConfigMsg;
+  OMPSectorParametersMsgT OMPSectorParametersMsg;
+} OMPCacheRecT;
+
+typedef  struct
+{
+   kal_uint32  oldSectorID24;
+   kal_uint16  oldSectorSignature;
+   kal_uint16  newPilotPN;  
+   OmpSubTypeT OmpSubType; 
+   OmpStateT   curOmpState;
+   kal_bool    bInUseInitialized;
+   kal_bool    bOverheadParametersUpToDate;   
+   kal_bool    bQuickConfigRcvd;
+   kal_bool    bSectorParametersMsgPending;
+   kal_bool    bIHOInProgress; 
+   kal_uint8   oldColorCode;  
+   kal_bool    bOldColorCodeValid;
+   kal_bool    bColorCodeChanged;
+   kal_bool    bCurSubnetValid;
+   
+   OMPCacheRecT *pCurOmpCache;
+   OMPCacheRecT  OmpCacheItems[OMP_MAX_CACHE_RECS];
+   OMPQuickConfigMsgT      OMPQuickConfigMsg;
+   OMPSectorParametersMsgT OMPSectorParametersMsg;  
+   
+   kal_uint8   curSubnet[OMP_SECTORID_LENGTH_IN_BYTE];
+   kal_uint8   oldSubnet[OMP_SECTORID_LENGTH_IN_BYTE];
+
+#ifdef MTK_DEV_C2K_IRAT
+   kal_uint32  SectorID24CacheForRpt;
+   kal_uint16  oldCountryCode;
+   kal_bool    ConnClosedCacheForRpt;
+   kal_bool    OtherRATUpdated;
+   kal_uint8   oldOtherRATSignature;
+   kal_uint8   OtherRATSignatureCacheForRpt; 
+   kal_bool    isNeedUpdateOtherRatInfo2Iratm;
+   OMPHRPDSilenceParameterMsgT     OMPHRPDSilenceParametersMsg;
+   OMPOtherRATNeighborListMsgT     OMPOtherRATNeighborListMsg;
+   OmpEUTRANNeigborListFreqRecT    OmpEutranNeigborListFreq;
+#endif /* MTK_DEV_C2K_IRAT */
+
+   OmpAttribRecT attribOmp[OMP_MAX_INSTANCE];
+   OmpAttribRecT attribFallback;
+}OmpInfoT;
+
+typedef struct {
+   kal_uint8  Subnet[16];  
+   kal_uint32 ExpiredSysTime;
+   kal_uint16 RouteUpdateTriggerCode;
+} RouteUpdateTriggerCodeItemT;
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+void OmpInit(void);
+void RunOmpStateMachine(kal_uint32 MsgId, void *MsgDataP);
+void ProcessOmpActivateMsg(void);
+void ProcessOmpDeactivateMsg(void);
+void ProcessOmpRupIdleHandoffMsg(OmpRupIdleHandoffMsgT *MsgDataP);
+void ProcessOmpCspConnClosedMsg(void);
+void ProcessOmpAcmSysParmUpdReqMsg(void);
+void ProcessOmpDsaFwdMsg(DsaFwdMsgT *MsgDataP);
+void ProcessOmpSupervisionTmrExpired(kal_uint32 TimerId);
+void ProcessOmpIHOOhmDecodeTmrExpired(void);
+void ProcessOmpScpReconfiguredMsg(void);
+void ProcessOmpScpCommittedMsg(void);
+void OmpInitStructures( kal_uint8 SubType, kal_bool InUse);
+kal_uint8 OmpGetPriorSessionGAUP(void);
+void  OmpIdpClearIHOFlag(void);
+void OmpSetOverheadParametersUpToDate(kal_bool bUpdated, kal_bool bNeedUpdateAll,kal_bool bClearQuickConfigRcvdFlag,kal_bool bResetSubnet);
+void OmpSupTimerReset(void);
+#ifdef MTK_DEV_C2K_IRAT
+void ProcessOmpIratMccReqMsg(void);
+kal_bool OmpGetOtherRatAvail (void);
+#ifdef MTK_PLT_ON_PC_UT
+kal_bool OmpSetOtherNeighBorListMsg (OmpEUTRANNeigborListRecT *pEutranNlRec,kal_bool *bOmpEarfcnIschanged);
+#else
+kal_bool OmpSetIratmOtherNeighBorListMsg (kal_bool *bOmpEarfcnIschanged);
+#endif
+#endif /* MTK_DEV_C2K_IRAT */
+void ProcessOmpCssSystemValidatedMsg(void);
+kal_bool OmpGetIHOPilotPN(kal_uint16 *newPilotPN);
+void setUpdateOtherRat2IratmFlag(kal_bool isNeedUpdate);
+
+
+
+/*****************************************************************************
+* $Log: clcomp.h $
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /*_CLCOMP_H_*/
+
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/clctimer.h b/mcu/interface/protocol/as_c2k/evdo/clctimer.h
new file mode 100644
index 0000000..64eceaf
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/clctimer.h
@@ -0,0 +1,238 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _CLCTIMER_H_
+#define _CLCTIMER_H_ 1
+/*****************************************************************************
+*
+* FILE NAME   : clctimer.h
+*
+* DESCRIPTION : Timer Controller interface for the CLC Task
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#if 0 /* rtm3 / phy2 testing purpose */
+/* under construction !*/
+/* under construction !*/
+#else
+#define TOMPQCSUPERVISION  5333  /*Spec define: QuickConfig Supervision timer 12 * 256 * 1.667ms = 5.12second*/
+                                 /*93 using task SMP, timer expire maight be excuted before CC package decode success in CL1*/
+                                 /*Add 0.5cc =128slot Margin, 12cc + 0.5cc = 5.12s + 213ms = 5333ms*/
+
+#define TOMPSPSUPERVISION   5333  /*Spec define: SectorParamters Supervision timer 12 * 256 * 1.667 ms = 5.12 second  + 128slot Margin*/
+                                  /*93 using task SMP, timer expire maight be excuted before CC package decode success in CL1*/
+                                  /*Add 0.5cc = 128slot Margin, 12cc + 0.5cc = 5.12s + 213ms = 5333ms*/
+
+#define TOMPOVHDSUPERVISION_TEST 10 /* Define a short period timer to trigger the CLC_OMP_QC_SUPERVISION_TIMER expire easily. */
+#endif
+
+#define TIDPCONNSETUP           2500 /*Maximum access terminal time in the connection setup state */
+#define TIDPPAGEPENDING       1000 /*Default Page pending timer in Freeze state */
+
+#define TIDPLONGSLEEPDELAY  60000 /* Long sleep delay timer duration - 60 seconds */
+
+#define TOMPIHOOHMDECODE   1000   /*OMP decode tmr expired (500ms for now)*/
+
+/* TO DO - check the units of timer - 1ms OR 10ms */
+
+#define INSP_SYNC_ACQ_TIME   5000  /* Time to acquire Sync msg - 5 seconds */
+
+/* Time to acquire Sync msg on second run, to handle dead loop by 1x preemption (could be 1.28 sec) */
+#define INSP_SYNC_ACQ_TIME_SHORT     1000
+
+
+#define INSP_SYNC_TIMING_TIME    1500    /* Time to set System Time - 160ms+margin */
+                                         /* From Irvine FT - now we do ClkCal (1.28s), inc to 1.5s to wait for RMC_Syncok */
+
+#define INSP_PILOT_ACQ_TIME  10000    /* Time from tune channel to sync OK */
+
+#ifdef MTK_DEV_C2K_IRAT
+#define INSP_PILOT_ACQ_FAIL_COUNT  1
+#define INSP_SRLTE_PILOT_ACQ_TIME  10000 * INSP_PILOT_ACQ_FAIL_COUNT    /* Time from tune channel to sync OK */
+#define IDP_CONTINUE_RCV_UATI_ASSIGNMENT_PERIOD 430   /* 1 control channel cycle about 426ms.*/
+#define IDP_GUARD_CHANNEL_PROTECT_PERIOD        10000 /* The maximum time of applying channel protection for EVDO.*/
+#endif
+
+#ifndef MTK_PLT_ON_PC_UT
+#define T_WFR_RMC_INTER_HO_CNF_REDUCTION  30 /* About 3~4 frame ticks(8ms for each frame tick). */
+#else
+#define T_WFR_RMC_INTER_HO_CNF_REDUCTION  3000
+#endif
+
+#define T_BLOCK_IDO_WAKE_REDUCTION  4000
+
+#define T_CC_SYNC_CAP_CHECK  180
+
+#define INSP_WTF_ANTENNA_TIME  15000
+
+#define T_WFR_RSVAS_OCCUPY_IND_TIMER  5000
+
+#define T_GUARD_INTERVAL_BETWEEN_WAKEUP_AND_SLEEP_CMD_TIMER 17
+
+#define T_GUARD_NON_SLOTTED_MODE_TIMER 240000
+
+/*----------------------------------------------------------------------------
+ Global Typedefs
+----------------------------------------------------------------------------*/
+
+/* Connection Layer controller Errors */
+typedef enum
+{
+  CLC_OMP_QC_SUPERVISION_TIMER,
+  CLC_OMP_SP_SUPERVISION_TIMER,
+  CLC_IDP_CONNECTION_SETUP_TIMER,
+  CLC_IDP_PAGE_PENDING_TIMER,
+  CLC_IDP_SUSPENDPERIOD_TIMER,
+  CLC_INSP_SYNC_ACQ_TIMER,
+  CLC_INSP_TIMING_TIMER,
+  CLC_IDP_NO_SRCH_DONE_WAKEUP_TIME,
+  CLC_INSP_PILOT_ACQ_TIMER,
+  CLC_OMP_IHO_OHMDECODE_TIMER,
+  CLC_IDP_BLOCK_IHO_WAKE_REDUCTION_TIMER,
+  CLC_IDP_CC_SYNC_CAP_CHECK_TIMER,
+  CLC_IDP_DFS_TIMER,
+  CLC_INSP_WAITFIR_ANTENNA_TIMER,
+#ifdef MTK_DEV_C2K_IRAT
+  CLC_INSP_SRLTE_PILOT_ACQ_TIMER,
+  CLC_IDP_CONTINUE_RCV_UATI_ASSIGNMENT_TIMER,
+  CLC_IDP_WFR_RSVAS_OCCUPY_IND_TIMER,
+  CLC_IDP_GUARD_INTERVAL_BETWEEN_WAKEUP_AND_SLEEP_CMD_TIMER,
+  CLC_IDP_GUARD_CHANNEL_PROTECT_TIMER,
+#endif
+  CLC_IDP_WFR_RMC_INTER_HO_CNF_TIMER,
+  CLC_IDP_GUARD_NON_SLOTTED_MODE_TIMER,
+  NUM_CLCTMRs
+} ClcTimerId;
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+extern event_scheduler *pClcEsch;
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+void clcTimerInit (void);
+void clcStartTimer (ClcTimerId internalId, kal_uint32 duration);
+void clcStopTimer (ClcTimerId internalId);
+kal_bool clcIsTimerActive(ClcTimerId timer);
+void ProcessClcTimerExpiredMsg(kal_uint32 timerId);
+
+/*****************************************************************************
+* $Log: clctimer.h $
+*
+* 09 18 2020 dayang.liu
+* [MOLY00560078] DM??  DTS2020081904LO9PP0D00 P155  [ASSERT] file:mcu/protocol/lte_sec/errc/assert/errc_el1_assert_csr.c line:91
+* 	
+* 	.
+*
+* 08 14 2019 dayang.liu
+* sync MOLY00362652 into APOLLO.SQC.
+*
+* 07 04 2019 dayang.liu
+* [MOLY00406740] [URGENT][Cervino][MT6762][P0][MP2][Sprint][FT_REG][Kansas][SI2][C2K][Random][ASSERT] file:mcu/common/modem/c2k/rfd/external/cl1d_rf_error_check.c line:527
+* 	
+* 	MOLY00406740 - Sync to Vmoly .
+* 	MOLY00406420, MOLY00343805, MOLY00334479
+*
+* 06 28 2019 dayang.liu
+* [MOLY00374669] [Telephony PPM][Lafite][P0][OPPO][VIVO NEX A][P90][TC150] T1 Fail: DUT=5.89s vs REF=2.74s - VMOLY
+*
+* 06 26 2019 dayang.liu
+* [MOLY00372025] [MT6779][Lafite][P0][BSP+][MP2][C2K][OM][MTBF][ErrorTimes:1]Externel (EE),0,0,99,/data/vendor/core/,1,modem,Trigger time:[2018-12-08 00:54:21.378788]
+* 	
+* 	Merge [MOLY00372025] into VMOLY.
+* 	
+* 	ALPS04228687 - LR12A.R2.MP.
+*
+* 05 25 2018 dayang.liu
+* [MOLY00328321] [EIGER][MT3967][RDIT][FT][CT][SRLTE+L][random][SH][SIM1:CMCC][SIM2:CT]DUT cannot attach to 3G
+* ALPS03932411 - UMOLYE-TRUNK.
+*
+* 05 15 2018 dayang.liu
+* [MOLY00326014] [Gen95][MSPM] SW changes check in UMOLYE
+* merge EVDO into UMOLYE branch.
+*
+* 07 06 2017 sue.zhong
+* [MOLY00259241] [6293][C2K]Replace with KAL data type
+* Correct copyright file header
+*
+* 05 12 2017 wesley.li
+* [MOLY00247455] [6293][C2K][PS]Change KAL timer API to event scheduler API
+* 	
+* 	CL:timer modification
+*
+* 05 09 2017 tom.wu
+* [MOLY00247691] [BIANCO][MT6763][C2K][RDIT][PHONE][PreHQA][CCF][Spirent][C.S0033(RevA)][4.2.1]Time Reference fail
+* 	
+* 	, modify OMP supervsn timer to 12+0.5  CC cycle
+*
+* 04 26 2017 dayang.liu
+* [MOLY00245272] [BIANCO][MT6763][RDIT][PHONE][Stress][C2K][SIM1:CTC]Fail to establish ppp link @Do only mode
+* ALPS03266267 - Add protect timer for MSG_ID_IDP_RMC_INTER_HO_CNF_MSG.
+*
+* 04 19 2017 dayang.liu
+* [MOLY00241439] [BUG][PS][CLC] Add ELT cmd for idle supervision fail procedure.
+* Add ELT CMD to triggrt supervision Event.
+*
+* 11 09 2016 sue.zhong
+* [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
+* Update C2K PS code (1/2)
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /*_CLCTIMER_H_*/
+
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/cspdefs.h b/mcu/interface/protocol/as_c2k/evdo/cspdefs.h
new file mode 100644
index 0000000..bea873a
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/cspdefs.h
@@ -0,0 +1,127 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _CSPDEFS_H_
+#define _CSPDEFS_H_ 1
+/****************************************************************************
+ *
+ * Module:     cspdefs.h
+ *
+ * Purpose:    
+ *
+ ****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "sysapi.h"
+
+/*----------------------------------------------------------------------------
+ Local Defines and Macros
+----------------------------------------------------------------------------*/
+#define CP_CSP_MESSAGE_ID_WIDTH                   8
+#define CP_CLOSE_REASON_WIDTH                     3
+#define CP_SUSPEND_ENABLE_WIDTH                   1
+#define CP_CSP_32_BITS_WIDTH                     32
+#define CP_CSP_4_BITS_WIDTH                       4
+
+#define CONN_CLOSE_GUARD_TIMER_DISABLE            0
+
+typedef enum
+{
+   CSP_INACTIVE_STATE,
+   CSP_CLOSING_STATE,
+   CSP_OPEN_STATE,
+} CspStateT;
+
+typedef enum 
+{
+   CSP_CONN_CLOSE_MESSAGE = 0x00,
+   CSP_CONFIG_REQUEST_MESSAGE = 0x50,
+   CSP_CONFIG_RESPONSE_MESSAGE,
+} CspMsgTypeT;
+
+typedef enum
+{
+  CSP_NORMAL_CLOSE_NO_REASON            = 0x00,
+  CSP_CLOSE_REPLY_CLOSE_REASON          = 0x01,
+  CSP_CONN_ERROR_CLOSE_REASON           = 0x02,
+  CSP_NORMAL_CLOSE_CHANGE_SYSTEM        = 0x03,
+  CSP_NORMAL_CLOSE_WITH_SUSPEND_TIME    = 0x04,
+  CSP_NORMAL_CLOSE_WITHOUT_SUSPEND_TIME = 0x05,
+} CspCloseReasonT;
+
+/* CSP Close Connection Message */
+typedef struct
+{
+   kal_uint8              MessageId;        /* 8 bits */
+   kal_uint8              CloseReason;      /* 8 bits */
+   kal_bool               SuspendEnable;    /* 8 bits */
+   SysTimeFullT       SuspendTime; 
+} CspConnCloseMsgT;
+
+typedef struct
+{
+  kal_bool SuspendEnable;
+  kal_uint32 SuspendTime;
+} SuspendTimeConfigT;
+
+/*----------------------------------------------------------------------------
+  Function Prototypes
+----------------------------------------------------------------------------*/
+void CspInitialize(void);
+void RunCspStateMachine(kal_uint32 MsgId, void *MsgDataP);
+void ProcessCspActivateMsg(void);
+void ProcessCspCloseConnMsg(void *MsgBufPtr);
+void ProcessCspDeactivateMsg(void);
+void ProcessCspDsaFwdMsg(DsaFwdMsgT *MsgDataP); 
+void SetCspState(CspStateT state);
+CspStateT GetCspState(void);
+
+void SetCspSuspendTime(kal_bool SuspendEnable, kal_uint32 SuspendTime);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /*_CSPDEFS_H_*/
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_almpapi.h b/mcu/interface/protocol/as_c2k/evdo/do_almpapi.h
new file mode 100644
index 0000000..718bbca
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_almpapi.h
@@ -0,0 +1,159 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME   : do_almpapi.h
+*
+* DESCRIPTION : API definition for ALMP (Air Link Management Protocol) component.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_ALMPAPI_H_
+#define _DO_ALMPAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_clcapi.h"
+#include "do_rupapi.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+typedef enum
+{
+   VALIDATE_FAIL,
+	MPSS_TMR_EXP,
+	RESELECTION,
+	ASSOCIATION_BROKEN,
+	REINIT,
+	SYS_ACQ_NONE
+} SysAcqReasonT;
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+
+typedef struct
+{
+   kal_uint32    attribute;           /* Timer attribute*/
+
+} AlmpTimerTimeoutMsgT;    /* typedef for the message */
+
+/* ALMP_INSP_NTWK_ACQD_MSG */
+typedef  struct
+{
+   ChanRecGT system;
+   kal_uint16 PilotPN;
+}AlmpInspNtwkAcqdMsgT;
+
+/*ALMP_IDP_CONN_FAILED_MSG */
+typedef  struct
+{
+   kal_uint8 nFailedReason;
+}AlmpIdpConnFailedMsgT;
+
+/*ALMP_OMP_AN_REDIRECT_MSG */
+typedef  struct
+{
+   kal_uint32 ChannelCount;
+}AlmpOmpAnRedirectMsgT;
+
+typedef  struct
+{
+   kal_uint8 SectorId[16];
+   kal_uint32 Latitude;
+   kal_uint32 Longitude;
+}AlmpOmpUpdateMsgT;
+
+/* ALMP_CSS_SYS_ACQ_REQ_MSG */
+typedef struct
+{
+   SysAcqReasonT reason;
+} AlmpCssSysAcqReqMsgT;
+
+/*------------------*/
+/* Global Functions */
+/*------------------*/
+typedef enum
+{
+   ALMP_INIT_STATE,
+   ALMP_IDLE_STATE,
+   ALMP_CONN_SETUP_STATE,
+   ALMP_CONNECTED_STATE
+} AlmpStateT;
+
+extern AlmpStateT GetAlmpState(void);
+extern void SetAlmpState(AlmpStateT state);
+#ifdef MTK_DEV_C2K_IRAT
+extern void IRATSetAlmpState(AlmpStateT state);
+#endif /* MTK_DEV_C2K_IRAT */
+
+typedef enum
+{
+  AT_INIT_CONN,
+  AN_INIT_CONN,
+  AT_INIT_CONN_AFTER_1X_PREMPT = 0x0c,
+  AN_INIT_CONN_AFTER_1X_PREMPT,
+  SIP_REG_CONN_AFTER_1X_PREMPT,
+  SIP_PERIODIC_REG_CONN
+} AlmpConnReasonT;
+
+#ifdef LGT_EXTENSIONS
+typedef enum
+{
+  SIP_NULL,
+  SIP_REGISTRATION,
+  SIP_PERIODIC_REG,
+}SIPRegModeT;
+
+void AlmpClearConnRelevantInfo(void);
+void AlmpSetSipRegMode(kal_uint8 Mode);
+#endif
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_ccmapi.h b/mcu/interface/protocol/as_c2k/evdo/do_ccmapi.h
new file mode 100644
index 0000000..5a199fa
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_ccmapi.h
@@ -0,0 +1,84 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+* 
+* FILE NAME   : do_ccmapi.h
+*
+* DESCRIPTION : API definition for CCM  component.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_CCMAPI_H_
+#define _DO_CCMAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_ATIs_ACTIVE 5 
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+typedef struct ATIRecord
+{
+  kal_uint8 ATIType;
+  kal_uint32 ATI;
+} ATIRecordT;
+ 
+typedef struct AMPATIList
+{
+   unit8  NumATIsActive;  // Should be in range 0..MAX_ATIs_ACTIVE
+   ATIRecordT ATIRecords[ MAX_ATIs_ACTIVE ];
+} AMPATIListT;
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_clc_msg_struct.h b/mcu/interface/protocol/as_c2k/evdo/do_clc_msg_struct.h
new file mode 100644
index 0000000..c8efe3d
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_clc_msg_struct.h
@@ -0,0 +1,610 @@
+/*************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2015
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME   : do_clc_msg_struct.h
+*
+* DESCRIPTION : Message structure definition for CLC (Connection Layer Control) task.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_CLC_MSG_STRUCT_H_
+#define _DO_CLC_MSG_STRUCT_H_
+
+
+#include "do_clcapi.h"
+#include "pswapi.h"
+#include "do_almpapi.h"
+#include "hlpapi.h"
+#include "do_inspapi.h"
+#include "do_idpapi.h"
+#ifdef MTK_DEV_C2K_IRAT
+#include "clcomp.h"
+#include "almpdefs.h"
+#include "clcidp.h"
+#include "cspdefs.h"
+#include "inspdefs.h"
+#include "clciratm.h"
+#include "iratapi.h"
+#endif
+#include "valdbmapi.h"
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AlmpOmpUpdateMsgT msg;
+} almp_omp_update_cmd_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ClcTimerExpiredMsgT msg;
+} clc_timer_expired_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    PswPowerMsgT msg;
+} almp_psw_power_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AlmpInspNtwkAcqdMsgT msg;
+} almp_insp_ntwk_acqd_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AlmpIdpConnFailMsgT msg;
+} almp_idp_conn_failed_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AlmpOmpAnRedirectMsgT msg;
+} almp_omp_an_redirect_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AlmpCcmSupvFailMsgT msg;
+} almp_ccm_supervsn_fail_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpConnStatusMsgT msg;
+} hlp_almp_conn_released_msg_struct;
+
+typedef struct
+{
+   LOCAL_PARA_HDR
+   HlpConnStatusMsgT msg;
+} hlp_almp_conn_closed_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AlmpCssSysAcqReqMsgT msg;
+} almp_css_sys_acq_req_msg_struct;
+
+#ifdef MTK_DEV_C2K_IRAT
+typedef struct
+{
+    LOCAL_PARA_HDR
+} almp_iratm_to_lte_meas_ctrl_cnf_struct;
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    InspRmcPilotAcqRspMsgT msg;
+} insp_rmc_pilot_acq_rsp_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    InspRmcSyncOKMsgT msg;
+} insp_rmc_sync_ok_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    InspCssFreqRspMsgT msg;
+} insp_css_freq_rsp_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    InspCssOosaSleepReqMsgT msg;
+} insp_css_oosa_sleep_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    InspCssOosaSleepReqMsgT msg;
+} insp_css_oosa_cont_sleep_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR    
+} clc_hsc_oosa_sleep_cnf_msg_struct; /* for NWSIM IT case check */
+
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} insp_css_acq_abort_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} smp_css_activate_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}almp_css_system_validated_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}omp_css_system_validated_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}smp_session_close_ets_cmd_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}amp_css_data_waiting_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}almp_css_oosa_wakeup_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}almp_notify_srv_status_to_upper_layer_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    InspHscOosaWakeupIndMsgT msg;
+} insp_hsc_oosa_wakeup_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    InspRmcRFStatusMsgT msg;
+} insp_rmc_rf_status_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpAlmpActiveMsgT msg;
+} idp_almp_activate_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpAlmpDeactiveMsgT msg;
+} idp_almp_deactivate_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpAlmpOpenConnMsgT msg;
+} idp_almp_open_conn_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+} idp_rup_connection_initiated_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpRupIHOResultMsg msg;
+} idp_rup_iho_result_msg_struct;
+
+/* MSG_ID_IDP_RMC_IHO_WAKE_REDUCTION_STATE_CNF_MSG */
+typedef  struct
+{
+    LOCAL_PARA_HDR
+    IdpRmcIHOWakeReductionStateCnfMsgT msg;
+}idp_rmc_iho_wake_reduction_state_cnf_msg_struct;
+
+/* MSG_ID_IDP_RMC_FORCE_ACQ_OVHD_IND_MSG */
+typedef  struct
+{
+    LOCAL_PARA_HDR
+    IdpRmcForceAcqOvhdIndMsgT msg;
+}idp_rmc_force_acq_ovhd_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpHscResyncDeniedMsgT msg;
+} idp_hsc_resync_denied_msg_struct;
+
+/* MSG_ID_IDP_HSC_WAKEUP_IND_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpHscWakeupIndMsgT msg;
+} idp_hsc_wakeup_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpAcmTxEndedMsgT msg;
+} idp_acm_tx_ended_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpAcmProbeTxingProtectIndMsgT msg;
+} idp_acm_probe_txing_protect_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpDsarSignalInteractiveCompleteMsgT msg;
+} idp_dsar_signal_interactive_complete_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpSmpSessionClosedMsgT msg;
+} idp_smp_session_closed_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpOmpUpdatedMsgT msg;
+} idp_omp_updated_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpCspSuspendPeriodTimeMsgT msg;
+} idp_csp_suspend_period_status_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpAmpSessionSeedMsgT msg;
+} idp_amp_sessionseed_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpCcmOffsetMsgT msg;
+} idp_ccm_offset_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpSlottedModeSetMsgT msg;
+} idp_slotted_mode_set_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    Idp1XPsPagingMaskSetMsgT msg;
+} idp_1xps_pagingmask_set_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpAlmpSysInfoUpdateMsgT msg;
+} idp_almp_sysinfo_update_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpDsarAccessEndedMsgT msg;
+} idp_dsar_access_ended_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DoPrefCCModeSetMsgT msg;
+} idp_pref_cc_cycle_set_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpRupChannelChangedIndMsgT msg;
+} idp_rup_channel_changed_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpRupForceIHORspMsgT msg;
+} idp_rup_force_iho_rsp_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpExtendedSlotCycleSetMsgT msg;
+} idp_extended_slotcycle_set_msg_struct;
+
+#ifdef MTK_DEV_C2K_IRAT
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpOmpOtherRatUpdatedMsgT msg;
+} idp_omp_otherrat_updated_msg_struct;
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpSmpSessionStatusMsgT msg;
+} idp_smp_session_status_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpRupDfsEndMsgT msg;
+} idp_rup_dfs_end_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IdpDfsTimerSetMsgT msg;
+} idp_dfs_timer_set_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+#ifdef MTK_DEV_C2K_IRAT
+    PswRsvasServiceOccupyResultT msg;
+#endif
+} idp_psw_rsvas_service_occupy_cnf_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+#ifdef MTK_DEV_C2K_IRAT
+    IdpValPdnSetupStatusNotifyIndMsgT msg;
+#endif
+} idp_val_pdn_setup_status_notify_ind_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    CspAlmpCloseConnMsg msg;
+} csp_almp_close_conn_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    OmpRupIdleHandoffMsgT msg;
+} omp_rup_idle_handoff_msg_struct;
+
+#ifdef MTK_DEV_C2K_IRAT
+typedef struct
+{
+    LOCAL_PARA_HDR
+    OmpEUTRANNeigborListRecT msg;
+}iratm_omp_otherrat_updated_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_rup_idle_handoff_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmRmcCcellMeasurementCnfT msg;
+} iratm_rmc_ccell_measurement_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_rmc_sync_msg_acq_start_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_rmc_sync_msg_acq_tmr_out_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmRmcCcellMeasIndT msg;
+} iratm_rmc_ccell_meas_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmRmcAcqCgiCnfT msg;
+}iratm_rmc_acq_cgi_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_rmc_cgi_acq_start_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_rmc_pilot_acq_failed_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmCssSetRatReqT msg;
+}iratm_css_set_rat_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_css_suspend_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_css_virtual_suspend_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmRupCurSectorMeasCnfT msg;
+}iratm_rup_cur_sector_meas_cnf_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmRupCurSectorSigChangedIndT msg;
+} iratm_rup_cur_sector_sig_changed_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmCssToLteMeasCtrlReqT msg;
+}iratm_css_to_lte_meas_ctrl_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmCssPlmnListUpdateReqT msg;
+}iratm_css_plmn_list_update_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmCssToLteReselFailInfoT msg;
+}iratm_css_to_lte_resel_fail_info_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_css_wakeup_cmp_rsp_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}idp_css_rsvas_virtual_suspend_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmAlmpToLteMeasCtrlReqT msg;
+}iratm_almp_to_lte_meas_ctrl_req_struct;
+
+typedef  struct
+{
+    LOCAL_PARA_HDR
+    IratmTimerExpiredMsgT msg;
+}iratm_timer_expired_cmd_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_rmc_rx_stop_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_css_suspend_resume_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+}iratm_css_virtual_suspend_resume_req_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    IratmCssPowerCtrlReqT msg;
+}iratm_css_power_ctrl_req_struct;
+#endif
+
+
+/* DO_PARM_SET_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ValGenericSetParmMsgT msg;
+} do_parm_set_msg_struct;
+
+
+/* DO_PARM_GET_MSG */
+typedef struct
+{   LOCAL_PARA_HDR
+    ValGenericGetParmMsgT msg;
+} do_parm_get_msg_struct;
+
+
+#ifdef MTK_PLT_ON_PC_UT
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaFwdMsgT msg;
+    kal_uint8 data[CPBUF_SIZE_FWD];  /* data for the cpbuffer */
+} ut_clc_dsaf_fwd_msg_struct;
+
+typedef struct
+{
+    sbp_md_feature_enum feature;
+    kal_bool is_turned_on;
+} UtClcConfigSbpMsgT;
+typedef struct
+{
+    LOCAL_PARA_HDR
+    UtClcConfigSbpMsgT msg;
+} ut_clc_config_sbp_msg_struct;
+
+
+#endif
+
+/* MSG_ID_ELT_OMP_SUPERVISION_EXPIRED_CMD_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    OmpSupervisionExpiredCmdMsgT msg;
+} elt_omp_supervision_expired_cmd_msg_struct;
+
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_clcapi.h b/mcu/interface/protocol/as_c2k/evdo/do_clcapi.h
new file mode 100644
index 0000000..43051c4
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_clcapi.h
@@ -0,0 +1,992 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME   : do_clcapi.h
+*
+* DESCRIPTION : API definition for CLC (Connection Layer Control) task.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_CLCAPI_H_
+#define _DO_CLCAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_fcpapi.h"
+#include "syscommon.h"
+#include "do_rcpapi.h"
+#include "valapi.h"
+#include "do_clc_msgid.h"
+#include "clc_nvram.h"
+
+#ifdef MTK_DEV_C2K_IRAT
+#include "iratapi.h"
+#endif
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_NUM_STANDBY_MEAS_C2K_BAND  (1)
+
+/*----------------------------------------------------------------------------
+ Mailbox IDs
+----------------------------------------------------------------------------*/
+#define CLC_CMD_MAILBOX         EXE_MAILBOX_1_ID
+/*
+#define CLC_OTAMSG_MAILBOX      EXE_MAILBOX_2_ID
+*/
+#define CLC_TEST_MAILBOX        EXE_MAILBOX_2_ID
+
+/*----------------------------------------------------------------------------
+     Command Message IDs, for CLC task, for CLC_CMD_MAILBOX, EXE_MAILBOX_1_ID
+     The messages IDs for components shall also be put in here.
+----------------------------------------------------------------------------*/
+
+typedef enum
+{
+   CLC_NETWORK_ERROR_EVDO_CO_NO_SERVICE,
+   CLC_NETWORK_ERROR_EVDO_CO_ACCESS_FAILURE,
+   CLC_NETWORK_ERROR_EVDO_CO_REDIRECTION,
+   CLC_NETWORK_ERROR_EVDO_CO_NOT_PREFERRED,
+   CLC_NETWORK_ERROR_EVDO_CO_MODE_HANDOFF,
+   CLC_NETWORK_ERROR_EVDO_CO_IN_PROGRESS,
+   CLC_NETWORK_ERROR_EVDO_CO_SETUP_TIMEOUT,
+   CLC_NETWORK_ERROR_EVDO_CO_SESSION_NOT_OPEN,
+   CLC_NETWORK_ERROR_EVDO_RELEASE_NO_REASON,
+   CLC_NETWORK_ERROR_EVDO_PROTOCOL_FAILURE,
+   CLC_NETWORK_ERROR_EVDO_DENY_NO_REASON,
+   CLC_NETWORK_ERROR_EVDO_DENY_NETWORK_BUSY,
+   CLC_NETWORK_ERROR_EVDO_DENY_AUTHENTICATION,
+   CLC_NETWORK_ERROR_EVDO_DENY_PREFERRED_CHANNEL_UNAVAILABLE,
+   CLC_NETWORK_ERROR_EVDO_FADE,
+   CLC_NETWORK_ERROR_EVDO_USER_DISCONNECTED,
+#ifdef MTK_DEV_C2K_IRAT
+   CLC_NETWORK_ERROR_EVDO_RSVAS_OCCUPY_FAIL,
+   CLC_NETWORK_ERROR_EVDO_RSVAS_VIRTUAL_SUSPEND,
+#endif
+   CLC_NETWORK_SESSION_NEGOTIATION_COMPLETE,
+   CLC_NETWORK_ERROR_EVDO_LAST
+}ClcConnFailT;
+
+typedef enum
+{
+   CLC_CONNDENY_BUSY_GENERAL,
+   CLC_CONNDENY_NOTCA_NORTCACK,
+   CLC_CONNDENY_AUTH_BILLING,
+   CLC_UATI_FAILURE,
+   CLC_NW_CLOSE_SESSION,
+   CLC_OTHER_MSG_EXC_FAILURE,
+   CLC_AVOID_CH,
+   CLC_ERR_NUM
+}ClcErrCauseT;
+
+typedef enum
+{
+   CLC_DATA,
+   CLC_SESSION
+}ClcConnTypeT;
+
+/*----------------------------------------------------------------------------
+     define signals used by CLC task
+----------------------------------------------------------------------------*/
+
+#define CLC_xx1_SIGNAL                  EXE_SIGNAL_2
+#define CLC_xxx2_SIGNAL                 EXE_SIGNAL_3
+#define CLC_xxx3_SIGNAL                 EXE_SIGNAL_4
+
+
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+/*MSG_ID_ELT_CLC_ALMP_REL_CONN_RSP_MSG */
+typedef struct {
+   kal_uint32 Reserved;
+} ClcAlmpRelConnRspT;
+
+/*MSG_ID_CLC_TIMER_EXPIRED_MSG*/
+typedef struct
+{
+   kal_uint32   TimerId;
+} ClcTimerExpiredMsgT;
+
+typedef struct
+{
+   kal_uint8 ConnCloseReason;
+}CspAlmpCloseConnMsg;
+
+/* MSG_ID_IDP_HSC_RESYNC_DENIED_MSG */
+/* This is also used for ETS command, but since it is a kal_uint32, so removal of PACKED is ok*/
+typedef struct
+{
+   kal_uint32 PrevWakeFrameLower32;
+} IdpHscResyncDeniedMsgT;
+
+/* MSG_ID_IDP_HSC_WAKEUP_IND_MSG */
+typedef struct
+{
+   kal_bool bWakeupResult;
+} IdpHscWakeupIndMsgT;
+
+typedef struct
+{
+  kal_bool bIdleHO;
+}IdpRupIHOResultMsg;
+
+/* MSG_ID_IDP_RMC_IHO_WAKE_REDUCTION_STATE_CNF_MSG */
+typedef struct
+{
+  IHOWakeReductionEventT IhoWakeReductionEvent;
+}IdpRmcIHOWakeReductionStateCnfMsgT;
+
+/* MSG_ID_IDP_FORCE_ACQ_OVHD_IND_MSG */
+typedef struct
+{
+  kal_bool bForceAcqOvhdInd;
+}IdpRmcForceAcqOvhdIndMsgT;
+
+#if 0
+#ifdef MTK_PLT_ON_PC_IT
+/* under construction !*/
+/* under construction !*/
+#endif
+#endif
+
+typedef enum
+{
+  AT_PWROFF, /*Same as AT_INACTIVE, but can be used to check powerup */
+  AT_INACTIVE,
+  AT_PILOTACQ,
+  AT_SYNC,
+#if defined(__MCIF_SUPPORT__) && defined(__CO_ANTENNA__)
+  AT_IDLE_MONITOR,
+  AT_IDLE_SLEEP,
+#else
+  AT_IDLE,
+#endif
+  AT_ACCESS,
+  AT_CONNECTED
+}EEDOATStateEnumT;
+
+typedef enum
+{
+   POWER_DOWN,
+   POWER_UP
+}PowerStateT;
+
+typedef enum
+{
+   ALMP_INIT_ST,
+   ALMP_IDLE_ST,
+   ALMP_CONN_SETUP_ST,
+   ALMP_CONNECTED_ST
+} AlmpStT;
+
+typedef enum
+{
+  INSP_INACTIVE_ST,
+  INSP_NETWORK_DET_ST,
+  INSP_PILOT_ACQ_ST,
+  INSP_SYNC_ST,
+  INSP_TIMING_CHANGE_ST,
+  INSP_WFR_1XASSIST_SIG_ST
+} InspStT;
+
+typedef enum
+{
+    IDP_INACTIVE_STATE,
+    IDP_MONITOR_STATE,
+    IDP_SLEEP_STATE,
+    IDP_CONN_SETUP_STATE,
+    IDP_FREEZE_PENDING_STATE,
+    IDP_FREEZE_STATE,
+    IDP_CONN_FROZEN_STATE,
+    IDP_STATE_MAX_STATE
+} IdpStT;
+
+typedef enum
+{
+   CSP_INACTIVE_ST,
+   CSP_CLOSING_ST,
+   CSP_OPEN_ST,
+} CspStT;
+
+typedef enum /*RUP state*/
+{
+   RUP_INACTIVE_STATE,
+   RUP_IDLE_STATE,
+   RUP_CONNECTED_STATE,
+   RUP_INVALID_STATE
+} RupStEnumT;
+
+typedef enum {
+    OMP_INACTIVE_STATE,
+    OMP_ACTIVE_STATE,
+    OMP_STATE_MAX_STATE
+} OmpStT;
+
+typedef struct
+{
+   EEDOATStateEnumT  ATState;
+   AlmpStT           AlmpState;
+   InspStT           InspState;
+   IdpStT            IdpState;
+   CspStT            CspState;
+   RupStEnumT        RupState;
+   OmpStT            OmpState;
+   kal_bool          bHybridOn;
+}MonSpyL3StateT;
+
+#if 0
+#ifdef MTK_PLT_ON_PC_IT
+/* under construction !*/
+/* under construction !*/
+#endif
+#endif
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+typedef struct
+{
+   kal_bool   NstEvdoRev0;  /* EVDO Rev.0 NST */
+   kal_bool   NstEvdoRevA;  /* EVDO Rev.A NST */
+} ClcNstTstMsgT;
+#endif
+
+#ifdef MTK_DEV_C2K_IRAT
+typedef struct
+{
+   kal_bool  MeasOn;
+   kal_bool  priorityIncl;
+   kal_uint8 servingPriority;
+   kal_uint8 threshserving;
+   kal_bool  perEarfcnParaIncl;
+   kal_uint8 rxLevMinEUTRACommon;
+   kal_uint8 pEMaxCommon;
+   kal_bool  pLMNIDIncl;
+   //Eutran freq info
+   kal_uint8 numEutraFreq;
+   //freq 0
+   kal_uint16 earfcn0;
+   kal_uint8 priority0;
+   kal_uint8 threshX0;
+   //freq 1
+   kal_uint16 earfcn1;
+   kal_uint8 priority1;
+   kal_uint8 threshX1;
+   //freq 2
+   kal_uint16 earfcn2;
+   kal_uint8 priority2;
+   kal_uint8 threshX2;
+} ClcOtherRatNblMsgT;
+#endif
+
+typedef struct
+{
+   kal_uint8             OvhFlag;
+   kal_uint8             SysType;
+   SysCdmaBandT      BandClass;
+   kal_uint16            Channel;
+   kal_uint16            PilotPN;
+   kal_uint16            Interval;
+   kal_uint8             RmcRFMode;
+   kal_uint8             RFPaths;
+   kal_uint8             C3Enabled;
+   kal_uint8             SessionAutoMode;
+   kal_bool              CssEnabled;
+} ClcInitTstMsgT;
+
+typedef struct
+{
+   kal_uint8 BandClass;
+   kal_uint16 Channel;
+   kal_uint16 PilotPN;
+} IdpEltHandoffMsgT;
+
+/* CLC_HSC_OOSA_WAKEUP_IND_MSG */
+typedef  struct
+{
+  OosaWakeupTypeT  OosaWakeupType;
+} ClcHscOosaWakeupIndMsgT;
+
+#ifdef CCM_ACM_DSA_TEST
+typedef enum
+{
+    REVA_TEST_DATA_RATE_0,
+    REVA_TEST_DATA_RATE_1,
+    REVA_TEST_DATA_RATE_2,
+    REVA_TEST_DATA_RATE_3,
+    REVA_TEST_DATA_RATE_4,
+    REVA_TEST_DATA_RATE_5,
+    REVA_TEST_DATA_RATE_6,
+    REVA_TEST_DATA_RATE_7,
+    REVA_TEST_DATA_RATE_8,
+    REVA_TEST_DATA_RATE_9,
+    REVA_TEST_DATA_RATE_10,
+    REVA_TEST_DATA_RATE_11,
+    REVA_TEST_DATA_RATE_12,
+    REVA_TEST_DATA_RATE_12_TEST,
+    REVA_TEST_DATA_RATE_CIRCULAR,
+    REVA_TEST_DATA_RATE_QOS
+} RevATestDataRateT;
+
+typedef enum
+{
+    REV0_TEST_DATA_RATE_REAL,
+    REV0_TEST_DATA_RATE_0,
+    REV0_TEST_DATA_RATE_1,
+    REV0_TEST_DATA_RATE_2,
+    REV0_TEST_DATA_RATE_3,
+    REV0_TEST_DATA_RATE_4,
+    REV0_TEST_DATA_RATE_5,
+    REV0_TEST_DATA_RATE_5_TEST,
+    REV0_TEST_DATA_RATE_CIRCULAR
+
+} Rev0TestDataRateT;
+
+typedef enum
+{
+    REVA_TEST_MAX_SUB_PKT_NUM_REAL,
+    REVA_TEST_MAX_SUB_PKT_NUM_0,
+    REVA_TEST_MAX_SUB_PKT_NUM_1,
+    REVA_TEST_MAX_SUB_PKT_NUM_2,
+    REVA_TEST_MAX_SUB_PKT_NUM_3
+} RevATestMaxNumSubPktT;
+
+#if defined MTK_PLT_ON_PC
+#pragma pack( push, saved_packing, 1 )
+#endif
+
+typedef struct
+{
+   kal_uint8  AutoCallSetup;
+   kal_uint8  RevProtocol;
+   RevATestDataRateT  RevATestDataRate;
+   kal_uint8  RevATestDRCValue;
+   Rev0TestDataRateT Rev0TestDataRate;
+   kal_uint8  TestRABInfo; /* 0 : real mbp, 1 : alternate, 2: all-up, 3: all-down */
+   kal_uint8  CloseLoopEnable; /* 0 : disable, 1: enable */
+   kal_uint8  HwAckEnable; /* 0 : disable, 1: enable */
+   kal_uint8  RevATestHarq; /* 1 : ack, 0: nak */
+   RevATestMaxNumSubPktT  RevATestMaxNumSubPkt; /* Real,0~3 */
+/* temprorary use RTM_TM_LOLAT mode for Lucent AN and RTM_TM_HICAP mode for Agilent now */ /* need to implement real mode later */
+   kal_uint8  RevATestTransmitMode; /* 0 : RTM_TM_HICAP, 1 : RTM_TM_LOLAT, 2 : Real */
+   kal_uint8  TxDelayLoadingTestMode; /* 1 : enable */
+   kal_uint8  RTM3FixedQueueTestMode; /* 1 : enable */
+   kal_uint16 RPCTestTriggerSubframeCount;
+} ClcConnReqTstMsgT;
+#if defined MTK_PLT_ON_PC
+#pragma pack( pop, saved_packing )
+#endif
+
+#endif
+
+typedef struct
+{
+  kal_uint8  TxStatus;  /* 0-success, 1-failed, 2-aborted */
+}IdpAcmTxEndedMsgT;
+
+typedef struct
+{
+    kal_bool  bProbeTxingProtect;  /* KAL_FALSE - STOP, KAL_TRUE - START */
+}IdpAcmProbeTxingProtectIndMsgT;
+
+typedef enum
+{
+    AMP_UATI_REQ_EVENT,
+    TCC_EVENT,
+    CSP_CONN_CLOSE_EVENT,
+    INVALID_EVENT
+} SignalInteractiveEventT;
+
+typedef struct
+{
+    SignalInteractiveEventT  signalInteractiveEvent;
+}IdpDsarSignalInteractiveCompleteMsgT;
+
+typedef struct
+{
+   ClcConnFailT connFail;
+} AlmpIdpConnFailMsgT;
+
+typedef struct
+{
+    PowerStateT state;
+    kal_bool bNetworkLostInd;
+} IdpAlmpDeactiveMsgT;
+
+typedef struct {
+   kal_bool bByPassSessionStatusForSleep;
+} IdpSmpSessionStatusMsgT;
+
+typedef struct {
+   kal_bool bDueSysTimeFault;
+} AlmpCcmSupvFailMsgT;
+
+typedef struct
+{
+   kal_uint16 PilotPN;
+} OmpRupIdleHandoffMsgT;
+
+typedef enum
+{
+   DO_PARM_INIT_MODE,
+   DO_PARM_SET_HYBRID_MODE,
+   DO_PARM_GET_HYBRID_PREF_MODE,
+   DO_PREF_CC_CYCLE_SET_MODE,
+   DO_PREF_CC_CYCLE_GET_MODE,
+   DO_STR_CONFIGURATION_SET_MODE,
+   DO_STR_CONFIGURATION_GET_MODE,
+   DO_FORCE_REL0_NEG_SET_MODE,
+   DO_FORCE_REL0_NEG_GET_MODE,
+   DO_NOT_DISTURB_SET_MODE,
+   DO_NOT_DISTURB_GET_MODE,
+   DO_FT_MAC_DRC_GATING_SET_MODE,
+   DO_FT_MAC_DRC_GATING_GET_MODE,
+   DO_LUP_UNSOLICITED_SET_MODE,
+   DO_LUP_UNSOLICITED_GET_MODE,
+   DO_RX_DIVERSITY_CTRL_SET_MODE,
+   DO_RX_DIVERSITY_CTRL_GET_MODE,
+   DO_SUBTYPE_CONFIG_DATA_SET_MODE,
+   DO_SUBTYPE_CONFIG_DATA_GET_MODE,
+   DO_SUBTYPE_CONFIG_DATA_DISABLE_SET_MODE,
+   DO_EXTENDED_SLOT_CYCLE_SET_MODE,
+   DO_EXTENDED_SLOT_CYCLE_GET_MODE,
+   DO_PERIODICAL_SEARCH_CYCLE_SET_MODE,
+   DO_PERIODICAL_SEARCH_CYCLE_GET_MODE,
+   DO_CT_DEFAULTBAND_SET_MODE,
+   DO_CT_DEFAULTBAND_GET_MODE,
+   DO_PARM_SET_PREF_MODE,
+   DO_PARM_GET_PREF_MODE,
+   DO_PARM_GET_HYBRID_MODE,
+   DO_PARM_SET_HYBRID_PREF_MODE,
+   DO_PARM_SET_eHRPD_MODE,
+   DO_PARM_GET_eHRPD_MODE,
+   DO_PARM_SET_DFS_IDLE_INTERVAL, /* Time between DFS searches in Idle non-slotted mode */
+   DO_PARM_GET_DFS_IDLE_INTERVAL,
+   DO_PARM_SET_DFS_CONN_INTERVAL, /* Time between DFS searches in Connected state */
+   DO_PARM_GET_DFS_CONN_INTERVAL,
+   DO_PARM_SET_DFS_IDLE_NUM_CHAN, /* Number of DFS channels to search per DO slot */
+   DO_PARM_GET_DFS_IDLE_NUM_CHAN,
+   DO_PARM_SET_DFS_CONN_NUM_CHAN, /* Number of DFS channels to search per Conn Timeout */
+   DO_PARM_GET_DFS_CONN_NUM_CHAN,
+   DO_PARM_SET_DFS_IDLE_ECIO_THRESH, /* Active Pilot strength thresh to start DFS */
+   DO_PARM_GET_DFS_IDLE_ECIO_THRESH,
+   DO_PARM_SET_DFS_CONN_ECIO_THRESH, /* Average Active Pilot strengths to start DFS */
+   DO_PARM_GET_DFS_CONN_ECIO_THRESH,
+   DO_PARM_SET_MANUAL_AVOID_SID,
+   DO_PARM_GET_MANUAL_AVOID_SID,
+   DO_PARM_GET_SHDR_HYBRID_MODE,
+   DO_PARM_ALL_ID_MODE
+} DoParmOperationId;
+
+typedef enum
+{
+    DO_PARM_OPERATION_SUCCESS,
+    DO_PARM_OPERATION_FAIL_READ_NOT_ALLOWED,
+    DO_PARM_OPERATION_FAIL_WRITE_NOT_ALLOWED,
+    DO_PARM_OPERATION_NOT_ALLOWED_IN_CLC_STATE,
+    DO_PARM_OPERATION_FAIL_INVALID_PTR,
+    DO_PARM_OPERATION_FAIL_INVALID_LENGTH,
+    DO_PARM_OPERATION_GENERAL_FAILURE,
+    DO_PARM_OPERATION_NO_CHANGE_IN_VALUE,
+    DO_PARM_OPERATION_FAIL_VALUE_OUT_OF_RANGE,
+    DO_PARM_OPERATION_INTERFACE_NOT_SUPPORTED,
+    DO_PARM_OPERATION_RESULT_END_LIST
+} DoParmAccessResultCode;
+
+typedef enum
+{
+  DO_PARM_MIN_VALUE,
+  DO_PARM_MAX_VALUE,
+  DO_PARM_DEFAULT_VALUE,
+  DO_PARM_CUSTOM_VALUE,
+  DO_PARM_OP_TYPE_LIST_END
+} DoParmOperationType;
+
+typedef struct
+{
+   kal_uint32   HybridMode;
+   kal_uint32   PrefMode;
+   kal_bool     needSaveDbm;
+} DoHybridPrefModeData_APIStruct;
+
+typedef struct
+{
+   kal_uint32   HybridMode;
+   kal_uint32   PrefMode;
+   kal_uint16   hscMpaOpModeHwdConfig;
+   kal_uint16   hscMpaOpMode;
+} DoSHDRHybridModeData_APIStruct;
+
+
+typedef struct
+{
+   kal_uint32   HybridMode;
+} DoHybridModeData_APIStruct;
+
+typedef struct
+{
+   kal_bool Disable;
+} DoeHRPDModeData_APIStruct;
+
+typedef struct
+{
+   kal_uint32   PrefMode;
+} DoPrefModeData_APIStruct;
+
+typedef struct
+{
+   kal_bool     PrefCCCycleEnable;
+   kal_uint32   PrefCCCycle;
+} DoPrefCCCycleData_APIStruct;
+
+typedef struct
+{
+   kal_uint16   Stream0Configuration;
+   kal_uint16   Stream1Configuration;
+   kal_uint16   Stream2Configuration;
+   kal_uint16   Stream3Configuration;
+} DoStreamConfiguration_APIStruct;
+
+typedef struct
+{
+   kal_bool     ScpForceRel0Config;
+} DoForceRel0NegoData_APIStruct;
+
+typedef struct
+{
+   kal_uint8    NotDisturb;
+} DoNotDisturbData_APIStruct;
+
+typedef struct
+{
+   kal_uint8    FtMacDrcGating;
+} DoFtMacDrcGatingData_APIStruct;
+
+typedef struct
+{
+   kal_bool     LUPUnsolicitedEnable;
+ } DoLUPUnsolicitedData_APIStruct;
+
+typedef struct
+{
+   kal_uint8    RxDiversityCtrl;
+} DoRxDiversityCtrlData_APIStruct;
+
+typedef struct
+{
+   kal_uint16 attrId;
+   kal_uint8  numValue;
+   kal_uint16 value[MAX_ATTR_SIZE];
+} DoSubTypeConfigData_APIStruct;
+
+typedef struct
+{
+   kal_uint16 attrId;
+} DoSubTypeConfigDataGet_APIStruct;
+
+typedef struct
+{
+   kal_uint16 attrId;
+} DoSubTypeConfigDataDisable_APIStruct;
+
+typedef struct
+{
+   kal_uint8 interval; /* Units of Seconds */
+} DoDfsIdleIntervalData_APIStruct;
+
+typedef struct
+{
+   kal_uint8 interval; /* Units of Seconds */
+} DoDfsConnIntervalData_APIStruct;
+
+typedef struct
+{
+   kal_uint8 NumChan; /* Number of DFS Channels to search per DO slot */
+} DoDfsIdleNumChanData_APIStruct;
+
+typedef struct
+{
+   kal_uint8 NumChan; /* Number of DFS Channels to search per Conn Timeout */
+} DoDfsConnNumChanData_APIStruct;
+
+typedef struct
+{
+   kal_uint16 Thresh; /* In units of 0.125 dB */
+} DoDfsIdleEcIoThreshData_APIStruct;
+
+typedef struct
+{
+   kal_uint16 Thresh; /* In units of 0.125 dB */
+} DoDfsConnEcIoThreshData_APIStruct;
+
+typedef struct {
+   kal_uint16 T_Dfs_TimerMSC;
+   kal_uint8 T_Dfs_NumChan;
+} IdpDfsTimerSetMsgT;
+
+typedef struct
+{
+   DoParmOperationId ParmId;
+   kal_bool InProgress;
+   kal_bool RspNeeded;
+   ExeRspMsgT  RspInfo;
+   RegIdT      RegId;
+} ClcDoDbmRspType;
+
+typedef struct
+{
+   kal_uint8    RxDiversityCtrl;
+   kal_uint8    padding;
+} ClcDoRxDiversityCtrlMsgT;
+
+typedef struct
+{
+   kal_uint16 T_Dual_Idle;
+   kal_uint8 T_HRPD_ExtendedSC;
+   kal_uint8 T_1x_ExtendedSC;
+} DoExtendedSlotCycleData_APIStruct;
+
+typedef struct
+{
+   kal_uint16 T_HRPD_Init;
+   kal_uint16 T_1x_Init;
+} DoPeriodicalSearchCycleData_APIStruct;
+
+typedef struct
+{
+   CTDoDefaultBandDataT DOSystem[MAX_DO_DEFAULTBAND_SIZE];
+} DoDefaultBandData_APIStruct;
+
+typedef struct
+{
+   kal_bool  NetworkMode;
+} DoNetworOrRelayMode_APIStruct;
+
+typedef struct {
+   kal_uint16 T_Dual_Idle;
+   kal_uint8 T_HRPD_ExtendedSC;
+} IdpExtendedSlotCycleSetMsgT;
+
+typedef struct {
+   EEDOATStateEnumT State;
+} ValClcATStatusMsgT;
+
+typedef struct {
+   kal_bool bActiveDueCCMSupvFail;
+   kal_bool bTrafficIsSetup;
+} IdpAlmpActiveMsgT;
+
+typedef struct {
+   kal_bool bSuccess;
+} IdpRupForceIHORspMsgT;
+
+typedef struct {
+   kal_bool bHONeed;  /*indicated if HO to different channel or not*/
+} IdpRupDfsEndMsgT;
+
+typedef struct
+{
+   kal_uint8    CdmaBand;                /* CDMA band classe to perform init acq */
+   kal_uint16   FreqChan;                /* Frequency channel to perform init acq */
+} IdpRupChannelChangedIndMsgT;
+
+#ifdef MTK_DEV_C2K_IRAT
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct
+{
+   kal_bool bOtherRATUpdated;
+}IdpOmpOtherRatUpdatedMsgT;
+
+#if defined (MTK_DEV_C2K_SRLTE_L1) || defined (MTK_DEV_C2K_IRAT)
+/* MSG_ID_IDP_VAL_PDN_SETUP_STATUS_NOTIFY_IND_MSG */
+typedef struct
+{
+    kal_bool bPdnSetupIsInprogress;/* KAL_TRUE, measn PDN setup signal interactive procedure is inprogress; */
+                               /* KAL_FALSE,measn PDN setup signal interactive is ended. */
+}IdpValPdnSetupStatusNotifyIndMsgT;
+#endif /* (MTK_DEV_C2K_SRLTE_L1) || defined (MTK_DEV_C2K_IRAT) */
+#endif /* MTK_DEV_C2K_IRAT */
+
+typedef struct
+{
+   kal_bool bDueTmrExp;    /* KAL_FALSE - normal case, KAL_TRUE - due to DSAR timer expired for waiting for Tx available, IDP need to cancel previous wakeup request to HSC */
+} IdpDsarAccessEndedMsgT;
+
+/* MSG_ID_ELT_OMP_SUPERVISION_EXPIRED_CMD_MSG */
+typedef enum 
+{
+    OMP_SUPERVISION_EXPIRED_TEST_IDLE,
+    OMP_SUPERVISION_EXPIRED_TEST_ACCESS,
+    OMP_SUPERVISION_EXPIRED_TEST_FINISH
+} OmpSupervisionExpiredTestStateT;
+
+typedef struct
+{
+    OmpSupervisionExpiredTestStateT OmpSupervisionExpiredTestState;
+} OmpSupervisionExpiredCmdMsgT;
+
+/*RAT*/
+#ifdef MTK_DEV_C2K_IRAT
+#if defined (MTK_DEV_C2K_SRLTE_L1) || defined (MTK_DEV_C2K_IRAT)
+typedef struct
+{
+    kal_uint16  pn;
+    kal_int16   phase;
+    kal_uint16  strength;
+}CurSectorMeasResultT;
+
+/*MSG_ID_IRATM_RMC_CCELL_MEASUREMENT_CNF*/
+typedef struct
+{
+   kal_uint8    tid;           /* Transaction id */
+   cas_meas_type_enum         measType;
+} IratmRmcCcellMeasurementCnfT;
+
+/*MSG_ID_IRATM_RMC_CCELL_MEAS_IND*/
+typedef struct
+{
+    kal_uint8                  tid;                              /* tid is used by EAS to filter the measurement report from CAS, range: 0..255,
+                                                                     the CCELL_MEAS_IND corresponding to this CCELL_MEAS_REQ should return the same tid */
+    cas_meas_type_enum         measType;                         /* indicate the measurement type of this CCELL_MEAS_REQ
+                                                                     - if 'RESEL' type is selected, the set of sectors indicated in this primitive should be a subset of the previously measured sectors
+                                                                     - if 'CONNECTED' type is selected, it means EAS is in connected mode and requests CAS to do measurement
+                                                                     (in order to distinguish from HP/LP/RESEL modes which used in idle mode)
+                                                                     - when this primitive is used to stop measurement, EAS should choose correct type to inform CAS which type of measurement should be stopped */
+
+    cas_meas_band_rslt_struct  bandRslt;                         /* indicate the band measurement result for only one band and one frequency*/
+} IratmRmcCcellMeasIndT;
+
+/*MSG_ID_IRATM_RUP_CUR_SECTOR_MEAS_CNF*/
+typedef struct
+{
+    kal_uint8  Band;
+    kal_uint16 Channel;
+    CurSectorMeasResultT Pilot;
+}IratmRupCurSectorMeasCnfT;
+
+
+/*MSG_ID_IRATM_RMC_ACQ_CGI_CNF*/
+typedef struct
+{
+    kal_uint8  tid;
+    kal_uint8  Band;
+    kal_uint16 Channel;
+    cas_meas_sector_rslt_struct Pilot;
+}IratmRmcAcqCgiCnfT;
+
+
+/*MSG_ID_IRATM_ALMP_TO_LTE_MEAS_CTRL_REQ*/
+typedef struct
+{
+    kal_bool    isMeasStart;       /*Indicates whether to lte measurement can be started or
+                                 should be stopped*/
+}IratmAlmpToLteMeasCtrlReqT;
+
+/*MSG_ID_IRATM_CSS_TO_LTE_MEAS_CTRL_REQ*/
+typedef struct
+{
+    kal_bool isMeasStart;    /*Indicates whether to lte measurement can be started or should be stopped*/
+    kal_bool abortMeas;      /*Indicate if the mesurement will be aborted
+                           KAL_TRUE: abort measurement and isMeasStart is set to KAL_FALSE*/
+
+    /*Only valid when isMeasStart == KAL_TRUE;
+    Transfer the remaining time and frequency list of deprioritization info to C2K,C2K will take these EUTRA frequencies as lowest priority when C2K is
+    active RAT until the deprioritization timer expiry.*/
+    eas_deprioritization_info_struct easDeprioritizationInfo;
+
+}IratmCssToLteMeasCtrlReqT;
+
+/*MSG_ID_IRATM_CSS_TO_LTE_RESEL_FAIL_INFO*/
+typedef struct
+{
+    kal_uint32 Frequency;
+    kal_uint16 Pci;
+    ts_eval_activate_fail_handle activateFailHandle;
+}IratmCssToLteReselFailInfoT;
+
+/*MSG_ID_IRATM_CSS_SET_RAT_REQ*/
+typedef struct
+{
+    srlteRatTypeT ratType;
+    kal_bool          needCnf;
+}IratmCssSetRatReqT;
+
+
+/*MSG_ID_IRATM_CSS_POWER_CTRL_REQ*/
+typedef struct
+{
+    kal_bool powerStatus; /*0: power off; 1: power on */
+}IratmCssPowerCtrlReqT;
+
+
+/*MSG_ID_IRATM_CSS_PLMN_LIST_UPDATE_REQ */
+typedef struct
+{
+    gmss_css_sim_plmn_info_ind_struct PlmnInfo;
+}IratmCssPlmnListUpdateReqT;
+
+
+/*MSG_ID_IRATM_RUP_CUR_SECTOR_SIG_CHANGED_IND*/
+typedef struct
+{
+  kal_bool  bLessThanThreshold;           /*Indicate if pilot strength less than threshhold*/
+  kal_uint8 Band;                        /* CDMA bandclass */
+  kal_uint16 Channel;                    /* CDMA channel number */
+  CurSectorMeasResultT Pilot;         /* CDMA pilot measure result */
+} IratmRupCurSectorSigChangedIndT; /* content same as xxxCurSysMeasRspT */
+
+/* RMC_IRATM_CCELL_MEAS_REQ */
+typedef struct
+{
+    kal_uint8                  tid;          /* tid is used by EAS to filter the measurement report from CAS, range: 0..255
+                                                the CCELL_MEAS_IND corresponding to this CCELL_MEAS_REQ should return the same tid */
+    cas_meas_type_enum     measType;    /* indicate the measurement type of this CCELL_MEAS_REQ
+                                                - if 'RESEL' type is selected, the set of sectors indicated in this primitive should be a subset of the previously measured sectors
+                                                - if 'CONNECTED' type is selected, it means EAS is in connected mode and requests CAS to do measurement
+                                                  (in order to distinguish from HP/LP/RESEL modes which used in idle mode)
+                                                - when this primitive is used to stop measurement, EAS should choose correct type to inform CAS which type of measurement should be stopped */
+    kal_uint8                  measPeriod;  /* indicate the absolute measurement period used by C2K to report the measurement results to LTE
+                                                this field is only valid if 'meas_type' = HP_MODE, represent in 'seconds' */
+    kal_uint8                  bandNum;     /* indicate the number of measurement bands, range: 0..MAX_NUM_MEAS_C2K_BAND_INC
+                                                if band_num=0, CAS should stop the measurement specified in the 'meas_type' */
+    cas_meas_band_info_struct  bandList[MAX_NUM_MEAS_C2K_BAND];  /* indicate the measurement information */
+
+}RmcIratmCcellMeasReqT;
+#endif
+#endif
+/*RAT*/
+extern MonSpyL3StateT  gL3StateSpy;
+#if 0
+/* under construction !*/
+#endif
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+extern kal_bool  NstEvdoRev0; /* EVDO Rev.0 NST */
+extern kal_bool  NstEvdoRevA; /* EVDO Rev.A NST */
+#define MTK_DEV_NST_DO_REV0   (NstEvdoRev0)
+#define MTK_DEV_NST_DO_REVA   (NstEvdoRevA)
+#define MTK_DEV_NST_DO        (NstEvdoRev0 || NstEvdoRevA)
+#endif
+
+extern  OmpSupervisionExpiredTestStateT    OmpSupervisionExpiredState;
+extern  kal_bool                          bOmpSupervisionExpiredTestEnable;
+#define OMP_SUPERVISION_FAIL_TEST        (OmpSupervisionExpiredState != OMP_SUPERVISION_EXPIRED_TEST_FINISH)
+#define OMP_SUPERVISION_FAIL_TEST_IDLE   ((OmpSupervisionExpiredState == OMP_SUPERVISION_EXPIRED_TEST_IDLE) && (bOmpSupervisionExpiredTestEnable == KAL_TRUE))
+#define OMP_SUPERVISION_FAIL_TEST_ACCESS (OmpSupervisionExpiredState == OMP_SUPERVISION_EXPIRED_TEST_ACCESS)
+
+#define HSC_SUCCESS_EVENT 0x01
+#define HSC_FAIL_EVENT    0x02
+
+#define INVALID_EVDO_BAND    0xff
+#define INVALID_EVDO_CHANNEL 0xffff
+
+#if defined (MTK_DEV_C2K_IRAT)
+extern ClcOtherRatNblMsgT OtherRatNblMsg;
+extern eas_cas_param_update_ind_struct easCasParamUpdateIndMsg;
+extern kal_eventgrpid hsc_result_event;
+#endif
+
+/* insp.c */
+extern void ProcessInspFreezeMsg (void);
+extern void ProcessInspThawMsg (void);
+extern kal_bool AlmpSetATState(EEDOATStateEnumT State);
+extern void InspRecordHrbridFreezeCount(void);
+
+#ifdef MTK_DEV_C2K_IRAT
+extern kal_bool IdpCheckIfFastConnIsInProgress(void);
+extern void ProcessIratmAlmpToLteMeasCtrlReq(void* pMsg);
+extern void IratmSetOmpUpdateFlag (kal_bool flag);
+extern void IratmSetModeChangeIndex (kal_bool flag);
+extern kal_bool IratmGetModeChangeIndex (void);
+extern kal_bool IratmJudgeIfActiveRatState (void);
+#endif
+
+/*Do parms*/
+void ClcDoDataWriteCnf(void *MsgLocalParaP);
+void ClcDoParmSetMsg(void *MsgDataPtr);
+void ClcDoParmGetMsg(void *MsgDataPtr);
+void ClcDoDataInit(void);
+void ClcDoDataReadCnf(void *MsgLocalParaP, void *MsgPeerBuffP);
+void ClcDoDataValUpdateReqMsg(void *MsgDataPtr);
+void ClcOmpGetOvhdInfo(ValEvdoOvhdInfoT*  pInfo);
+void IdpGetActiveChannelInfo(RmcIdpInterHoCmdMsgT* pChan, kal_uint32* pUATI);
+kal_bool IdpSessionSeedForChHashCheck(kal_uint32 SessionSeedToUse);
+kal_uint8 IdpGetCurCcmOffset(void);
+kal_bool ClcDsaValidMsg(kal_uint8 Type,kal_uint8 MsgId);
+kal_bool ClcGetRevState(void);
+void ClcDoEltParmSetCmdMsg(kal_uint32 MsgLen,void *MsgDataPtr);
+void ClcDoEltParmGetCmdMsg(void *MsgDataPtr);
+
+#ifdef MTK_DEV_C2K_IRAT
+void ClcOmpSetMccInfo(void);
+void IdpSendSignalProtectStatusInd(kal_bool bSignalNeedProtect);
+#endif  /* MTK_DEV_C2K_IRAT */
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_defs.h b/mcu/interface/protocol/as_c2k/evdo/do_defs.h
new file mode 100644
index 0000000..1e9b5be
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_defs.h
@@ -0,0 +1,109 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME  : do_defs.h
+*
+* DESCRIPTION: This file contains defines for DO.
+*
+* ATTENTION  : 
+*
+* HISTORY    : See Log at end of file
+*
+*****************************************************************************/
+
+#ifndef _DO_DEFS_H
+#define _DO_DEFS_H
+
+#include "sysdefs.h"
+
+/*************************************************************************
+   DO state traces map to DoStateID enum, with offset, as shown below
+   list here for information purpose
+Enum {
+DSA_STATE_SPY_ID = MON_CP_DO_AUTO_STATE_LOG_SPYID_START, 
+DPA_RLP_STATE_SPY_ID,
+DPA_LOC_STATE_SPY_ID,
+
+} DoStateAutoSpyIDT;
+*/
+
+typedef enum {
+    DSA_STATE_ID,
+    DPA_RLP_STATE_ID,
+    DPA_LOC_STATE_ID,
+    IDSP_STATE_ID,
+    INSP_STATE_ID,
+    FCP_TASK_STATE_ID,
+    FTM_TASK_STATE_ID,
+    RCP_TASK_STATE_ID,
+	ACM_CONTROL_FSM_ID,
+	ACM_RADIO_BURST_FSM_ID,
+    /* put this at the end */
+    DO_STATE_MAX_NUM
+}DoStateIdT;
+
+
+
+
+
+extern kal_uint8 DoStateVar[DO_STATE_MAX_NUM];  /* Holds all DoState variables */
+
+extern void ChangeDoState(kal_uint8 StateID, kal_uint8 NewState);
+
+
+/*Access the State, macro */
+#define GetDoState(StateID)  DoStateVar[StateID];          
+
+
+
+
+
+
+#endif /* _DO_DEFS_H */
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_idpapi.h b/mcu/interface/protocol/as_c2k/evdo/do_idpapi.h
new file mode 100644
index 0000000..db6e564
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_idpapi.h
@@ -0,0 +1,197 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME   : do_idpapi.h
+*
+* DESCRIPTION : API definition for IDP (Idle State Protocol) component.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_IDPAPI_H_
+#define _DO_IDPAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_clcapi.h"
+#include "do_rupapi.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+
+#define MAX_CHANNEL_SUPPORT    32    /* 32 is too large to Call the ExeMsgBufferGet() to allocate the Msg Buf */
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+
+typedef struct
+{
+   kal_uint32    attribute;           /* Timer attribute*/
+
+} IdpTimerTimeoutMsgT;    /* typedef for the message */
+
+typedef  struct {
+  kal_bool   AccessHashingChannelMaskSameAsPrevious;
+  kal_uint16 AccessHashingChannelMask;
+} AccessHashingChannelMaskRecordT;
+
+
+typedef  struct {
+	kal_bool NeighborChannelIncluded;
+	ChanRecGT NeighborChannel;
+} NeighborChannelT;
+
+/*MSG_ID_IDP_OMP_UPDATED_MSG */
+typedef  struct {
+  kal_bool bSectorParmsUpdated;
+  kal_uint8 ChannelCount;
+  ChanRecGT Channel[MAX_CHANNEL_SUPPORT];
+  kal_uint8 NeighborCount;
+  NeighborChannelT NeighborChannel[MAX_CHANNEL_SUPPORT];
+  kal_bool ExtendedChannelIncluded;
+  kal_uint8 ExtendedChannelCount;
+  ChanRecGT ExtendedChannel[MAX_CHANNEL_SUPPORT];
+  kal_bool AccessHashingChannelMaskIncluded;
+  kal_uint8 AccessHashingMaskLength;
+  AccessHashingChannelMaskRecordT AccessHashingChannelMask[MAX_CHANNEL_SUPPORT * 2];
+#ifdef MTK_DEV_C2K_IRAT
+   kal_bool bOtherRATAvailable;
+   kal_uint8         OtherRATSlotCycle;
+#endif  /* MTK_DEV_C2K_IRAT */
+} IdpOmpUpdatedMsgT;
+
+/* MSG_ID_IDP_CSP_SUSPEND_PERIOD_STATUS_MSG */
+typedef struct {
+   SysTimeFullT tSuspendPeriod;
+}IdpCspSuspendPeriodTimeMsgT;
+
+/* MSG_ID_IDP_AMP_SESSIONSEED_MSG */
+typedef  struct {
+  kal_uint32 nSessionSeed;
+  kal_uint32 nATI;
+} IdpAmpSessionSeedMsgT;
+
+/* MSG_ID_IDP_SMP_SESSION_CLOSED_MSG */
+typedef  struct {
+   kal_bool bNeedUpdateAll;
+#ifdef MTK_CBP
+   kal_bool sessionClose;
+#endif
+} IdpSmpSessionClosedMsgT;
+
+/* MSG_ID_IDP_CCM_OFFSET_MSG */
+typedef  struct {
+  kal_uint8 nSyncCapsuleOffset;
+} IdpCcmOffsetMsgT;
+
+/*MSG_ID_IDP_ALMP_OPEN_CONN_MSG */
+typedef  struct {
+    kal_uint8 nRequestReason;
+    kal_uint8 nTransactionId;
+}IdpAlmpOpenConnMsgT;
+
+typedef  struct {
+    kal_uint16 nPrevMaskDuration;
+   kal_uint16 nMaskDuration;
+   kal_uint16 nPostMaskDuration;
+}Idp1XPsPagingMaskSetMsgT;
+
+/*MSG_ID_IDP_SLOTTED_MODE_SET_MSG */
+typedef struct {
+   kal_uint32 bSlottedModeEnabled;
+} IdpSlottedModeSetMsgT;
+
+/*MSG_ID_ELT_CLC_IDP_SLOTTED_MODE_SET_RSP_MSG */
+typedef struct {
+   kal_uint32 Reserved;
+} IdpSlottedModeSetRspT;
+
+/*    MSG_ID_IDP_ALMP_SYSINFO_UPDATE_MSG*/
+typedef struct {
+      ChanRecGT Chan;
+} IdpAlmpSysInfoUpdateMsgT;
+
+typedef struct {
+   kal_bool     PrefCCCycleEnable;
+   kal_uint32   PrefCCCycle;
+} DoPrefCCModeSetMsgT;
+
+#ifdef MTK_DEV_C2K_IRAT
+typedef enum {
+   IDP_INACTIVE,
+   IDP_IRAT,
+   IDP_NORMAL,
+   IDP_CLOSING
+} IdpModeT;
+
+typedef struct {
+   IdpModeT mode;
+} IDPIRATModeSetMsgT;
+#endif /* MTK_DEV_C2K_IRAT */
+
+/* IDP ConnectionRequest Message */
+typedef struct
+{
+   kal_uint8 nTransactionID;
+   kal_uint8 nRequestReason;
+   kal_uint8 nReserved;
+} IdpConnectionRequestT;
+
+extern void IdpSetSubnetChangedOrCommittingFlag(void);
+extern void IdpDeliverSignalProtectStatusInd(kal_bool IdleState);
+extern kal_uint16 IdpEncodeOTAMsgConnReq(kal_uint8 *cpBuf, IdpConnectionRequestT ConnReq);
+extern CpBufferT* IdpSendConnectionRequest(kal_uint8 nConnReqTransID,kal_uint8 nRequestReason);
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy\Trophy_yzhang_href22247\1 2013-07-30 06:37:42 GMT yzhang
+** HREF#22247=>fix issue of concurrent UATIReq and ConnReq**/
+/**Log information: \main\Trophy\1 2013-07-30 07:08:13 GMT jzwang
+** href#22247**/
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_inspapi.h b/mcu/interface/protocol/as_c2k/evdo/do_inspapi.h
new file mode 100644
index 0000000..cfbea1b
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_inspapi.h
@@ -0,0 +1,134 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME   : do_inspapi.h
+*
+* DESCRIPTION : API definition for INSP (Initialization State Protocol) component.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_INSPAPI_H_
+#define _DO_INSPAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_clcapi.h"
+#include "do_rupapi.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+
+typedef struct
+{
+   kal_uint32    attribute;           /* Timer attribute*/
+
+} InspTimerTimeoutMsgT;    /* typedef for the message */
+
+/* INSP_RMC_PILOT_ACQ_RSP_MSG */
+typedef  struct
+{
+   kal_bool    pilotFound;
+   kal_uint32  pilotPN;
+}  InspRmcPilotAcqRspMsgT;
+
+typedef enum
+{
+   NULL_ASSOCIATION,
+   PN_ASSOCIATION,
+   DATA_ASSOCIATION,
+   BOTH_ASSOCIATION,
+   NON_ASSO_SCAN
+} PNAssociationEnum;
+
+/* INSP_CSS_FREQ_RSP_MSG */
+typedef  struct
+{
+   ChanRecGT         system;
+   kal_uint8             RFPaths;
+   PNAssociationEnum AssociationTag;
+   kal_uint8             quickScan;
+#ifdef MTK_DEV_C2K_IRAT
+   kal_bool              pnIncluded;
+   kal_uint16            pn;
+   kal_uint8             srhWinSize;
+#endif
+}  InspCssFreqRspMsgT;
+
+typedef struct
+{
+   kal_uint16  duration;    /*in the unit of 100ms*/
+} InspCssOosaSleepReqMsgT;
+
+/* INSP_HSC_OOSA_WAKEUP_IND_MSG */
+typedef struct
+{
+  OosaWakeupTypeT  OosaWakeupType;
+} InspHscOosaWakeupIndMsgT;
+
+/* INSP_RMC_SYNC_OK_MSG */
+typedef  struct
+{
+   kal_bool syncOK;
+} InspRmcSyncOKMsgT;
+
+/* INSP_RMC_RF_STATUS_MSG */
+typedef  struct
+{
+   kal_bool    antenna_denied;
+}  InspRmcRFStatusMsgT;
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_ompapi.h b/mcu/interface/protocol/as_c2k/evdo/do_ompapi.h
new file mode 100644
index 0000000..ad7c98e
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_ompapi.h
@@ -0,0 +1,87 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+* 
+* FILE NAME   : do_ompapi.h
+*
+* DESCRIPTION : API definition for OMP (Overhead Message Protocol) component.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_OMPAPI_H_
+#define _DO_OMPAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_clcapi.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_SECONDARY_COLORCODE_NUM 8
+
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+
+typedef struct
+{
+   kal_uint32    attribute;           /* Timer attribute*/ 
+
+} OmpTimerTimeoutMsgT;    /* typedef for the message */
+
+/* OMP_CSS_VALIDATE_RSP_MSG */
+typedef struct
+{
+  kal_bool  Accepted;
+} OmpCssValidateRspMsgT;
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_scpapi.h b/mcu/interface/protocol/as_c2k/evdo/do_scpapi.h
new file mode 100644
index 0000000..22d2a79
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_scpapi.h
@@ -0,0 +1,220 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2007-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+
+#ifndef _DO_SCPAPI_H_
+#define _DO_SCPAPI_H_
+/*****************************************************************************
+* 
+* FILE NAME   : do_scpapi.h 
+*
+* DESCRIPTION :
+*
+*     Contains the interface typdefs for session configuration process.
+*
+*
+*****************************************************************************/
+
+/*------------------------------------------------------------------------
+* global definitons
+*------------------------------------------------------------------------*/
+/*------------------------ GCP Interface ---------------------------------*/
+typedef kal_bool (*AssembleConfigReqRecT)(kal_uint8 *attrDataP, kal_uint16 *attrDataLen, 
+                                      kal_uint8 *reqTransId, kal_uint8 reqSeq);
+typedef kal_bool (*HandleConfigReqRecT)(kal_uint8 *reqAttrDataP, kal_uint16 reqAttrDataLen,
+                                    kal_uint8 *rspAttrDataP, kal_uint16 *rspAttrDataLen);
+typedef void (*HandleConfigRspRecT)(kal_uint8 *rspAttrDataP, kal_uint16 rspAttrDataLen,
+                                    kal_uint8 reqSeq);
+
+/*---------------------- Personality Interface -------------------------*/
+/* personality data max size */
+#ifndef MTK_DEV_C2K_IRAT
+#define MAX_PERSONALITY_DATA_SIZE  2300        
+#else
+#define MAX_PERSONALITY_DATA_SIZE  3000
+#endif
+
+typedef kal_bool (*GetPersonalityDataT)(kal_uint8 *DataBufP, kal_uint16 *DataLen, kal_bool inConfig);
+typedef kal_bool (*SetPersonalityDataT)(kal_uint8 *DataBufP, kal_uint16 DataLen, kal_bool inConfig);
+
+/*----------------------------- DSCP Interface --------------------------*/
+typedef void (*SetupConfigInterfaceT)(kal_uint16 subtype);
+typedef void (*SendReconfiguredIndT)(void);
+typedef void (*SendCommittedIndT)(void);
+
+typedef kal_uint8 (*NeedConfigT)(kal_uint16 *subtype);
+typedef void (*CreateInConfigInstanceT)(kal_bool resetToDefault);
+
+/* Commit hander: shall put the instance to INACTIVE state 
+                  instead of OPEN per spc */
+typedef void (*CommitHandlerT)(void);
+
+/* Attribute Configuration status */
+enum {
+       NO_CONFIGURABLE_ATTR  = 0,
+       NOT_REQUEST_CONFIG_ATTR,
+       REQUEST_CONFIG_ATTR
+};
+
+#define INVALID_APP_SUBTYPE 0xffff
+
+/* ----------------------- Generic Attribute Operation interface ---------------------*/
+/* this interface is designed to set/get information data(identified by 
+   protocol self-defined CmdId)in a protocol instance specified. Current
+   uses are defined as following:
+   1. Stream protocol use:
+     CmdId = 0: Get negotiated application subtypes. Return 0 if no 
+                application was re-negotiated. Otherwise return the number
+                of the negotiated applications.
+
+   2. Virtual Stream protocol use:
+     CmdId = 0: Get negotiated application subtypes. Return 0 if no 
+                application was re-negotiated.Otherwise return the number
+                of the negotiated applications.
+
+     CmdId = 1: Return number of re-negotiated applications. Return 0 if no 
+                application was re-negotiated.
+
+   3. Session Configuration Protocols use:
+     CmdId = 0: Set Stream protocol entity negotiated application subtype 
+	            into ProtocolType attribute.
+   */
+
+typedef kal_uint8 (*ConfigCmdHandlerT)(kal_uint8 CmdId, kal_uint16 *bufP, 
+                                   kal_uint16 bufLen, kal_bool inConfig);
+/* Command ID */
+enum {
+       SCPCMD0  = 0,
+       SCPCMD1,
+       SCPCMD2,
+       SCPCMD3
+};
+
+/* ----------------------------INTERFACE --------------------------------*/
+typedef struct {
+  /* scp framework interface */
+  NeedConfigT              NeedConfig;
+  CreateInConfigInstanceT  CreateInConfigInstance;
+  CommitHandlerT           CommitHandler;
+
+  /* gcp interface */
+  AssembleConfigReqRecT AssembleConfigReqRec;
+  HandleConfigRspRecT   HandleConfigRspRec;
+  HandleConfigReqRecT   HandleConfigReqRec;
+
+  /* personality interface */
+  GetPersonalityDataT  GetPersonalityData;
+  SetPersonalityDataT  SetPersonalityData;
+
+  /* generic cmd interface */
+  ConfigCmdHandlerT    ConfigCmdHandler;
+
+} SCPConfigInterfaceT;
+
+
+typedef struct {
+  
+  SetupConfigInterfaceT SetupConfigInterface;
+  SendReconfiguredIndT  SendReconfiguredInd;
+  SendCommittedIndT     SendCommittedInd;
+
+} SCPProtocolInterfaceT;
+
+/*---------------------- OTA message process helper -------------------*/
+/* generic OTA message header */
+/* note: if there is multi-byte type field in the header, adjusting Endian
+         is necessary.
+ */
+typedef PACKED_PREFIX struct {
+
+          kal_uint8 MsgId;
+          kal_uint8 TransId;
+          kal_uint8 MsgBody[1];
+
+} PACKED_POSTFIX  OTAMsgHeaderT;
+
+
+/* OTA message sender helper */
+#define ConstructOTAMessage(messageId, MsgPtrLocPara, DsaMsgP, OtaMsgP) \
+        /* Allocate Mem for message */ \
+        MsgPtrLocPara = (dsar_rev_msg_struct*) construct_local_para( \
+                         (kal_uint32)(sizeof(dsar_rev_msg_struct)), TD_RESET); \
+        DsaMsgP = &(MsgPtrLocPara->msg); \
+        /* Allocate Mem for OTA message. Here use CPBUF_REV for large data block possible */ \
+        DsaMsgP->ptrBuffer = CpBufGet( CPBUF_SIZE_REV, CPBUF_REV ); \
+        if(DsaMsgP->ptrBuffer != NULL){ \
+        OtaMsgP = (OTAMsgHeaderT *) DsaMsgP->ptrBuffer->dataPtr; \
+        /* Fill message header */ \
+        OtaMsgP->MsgId = messageId
+
+/* Chan = AccessChannel or TrafficChannel or AccessTrafficChannel */
+#define TransmitOTAMessage(MsgPtrLocPara, DsaMsgP, Chan, reli, confirm, \
+                           InConfig, protType, transactionId, pri) \
+        /* Fill DSA message fields */ \
+        DsaMsgP->allowedChan = Chan; \
+        DsaMsgP->reliable    = reli; \
+        DsaMsgP->confirmReq  = confirm; \
+        DsaMsgP->InConfigurationProtocol = InConfig; \
+        DsaMsgP->protocolType = protType; \
+        DsaMsgP->transId  = transactionId; \
+        DsaMsgP->priority = pri; \
+        /* Send to DSA */ \
+        msg_send5(MOD_EVSLC, MOD_EVRCP, EVRCP_EVSLC_SAP, MSG_ID_DSAR_REV_MSG, \
+                  (local_para_struct*)MsgPtrLocPara); \
+        } else {free_local_para((local_para_struct*)MsgPtrLocPara);}
+
+/* Octet-aligned message field encoder and decoder */
+void PutFieldOctets(kal_uint8 **DataPtr, kal_uint8 *Data, kal_uint8 Size);
+void GetFieldOctets(kal_uint8 **DataPtr, kal_uint8 *Data, kal_uint8 Size);
+
+/* Configuration special interfaces */
+/* Interface to STR */
+kal_uint8 SCPGetSupportedAppSubtypes(kal_uint16 *appSubtypes);
+kal_uint16 SCPGetProtocolSubType(kal_uint8 ProtocolType, kal_bool InCfg);
+kal_uint16 ScpGetCurrentSessionConfigToken(void);
+void DScpHandleANConfigurationCompleteMsg(void *MsgP, kal_bool callFromDsa);
+void DScpHandleANSoftConfigurationCompleteMsg(void *MsgP, kal_bool callFromDsa);
+void DScpSetAttriUpdateReqHandlingFlag(kal_bool bHandling);
+kal_bool DScpGetAttriUpdateReqHandlingFlag(void);
+#endif /* _DO_SCPAPI_H_ */
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_sec_msg_struct.h b/mcu/interface/protocol/as_c2k/evdo/do_sec_msg_struct.h
new file mode 100644
index 0000000..296d460
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_sec_msg_struct.h
@@ -0,0 +1,180 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+ 
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2015
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+
+  FILE NAME:  do_sec_msg_struct.h
+
+  DESCRIPTION:
+
+    This file contains the defenitions of all the SEC msg structures.
+
+*****************************************************************************/
+#ifndef _DO_SEC_MSG_STRUCT_H_
+#define _DO_SEC_MSG_STRUCT_H_
+
+#include "kal_public_defs.h"
+#include "secapi.h"
+#include "secdef.h"
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SecAkaAuthReqMsgT msg;
+} sec_aka_auth_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SecAkaDeriveMKReqMsgT msg;
+} sec_aka_derivemk_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SecAkaDeriveMKReqMsgT msg;
+} sec_aka_prime_derivemk_req_msg_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	SecAkaDeriveMskReqMsgT msg;
+} sec_aka_derivemsk_req_msg_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	SecAkaDeriveReauthXKeyReqMsgT msg;
+} sec_aka_derivereauthxkey_req_msg_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	SecAkaPrimeDeriveReauthMkReqMsgT msg;
+} sec_aka_prime_derivereauthmk_req_msg_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	SecAkaDeriveMacReqMsgT msg;
+} sec_aka_derivemac_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SecAkaAuthSpyT msg;
+} sec_aka_auth_spy_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SecAkaDeriveMkSpyT msg;
+} sec_aka_derive_mk_spy_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SecAkaDeriveReauthXkeySpyT msg;
+} sec_aka_derive_reauth_xkey_spy_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	SecAkaDeriveMskSpyT msg;
+} sec_aka_derive_msk_spy_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SecAkaDeriveMacSpyT msg;
+} sec_aka_derive_mac_spy_struct;
+
+typedef struct
+{
+	LOCAL_PARA_HDR
+	SecAkaDerivePmkSpyT msg;
+} sec_aka_derive_pmk_spy_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SecAkaAesCryptSpyT msg;
+} sec_aka_aes_crypt_spy_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SecAkaAesCryptReqMsgT msg;
+} sec_aka_aescrypt_req_msg_struct;
+
+#endif
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_slapi.h b/mcu/interface/protocol/as_c2k/evdo/do_slapi.h
new file mode 100644
index 0000000..70de5de
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_slapi.h
@@ -0,0 +1,121 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+* 
+* FILE NAME   : do_slapi.h
+*
+* DESCRIPTION : API definition for Security Layer.
+*
+* HISTORY     :
+*****************************************************************************/
+
+#ifndef _DO_SLAPI_H_
+#define _DO_SLAPI_H_
+
+/*----------------------------------------------------------------------------
+Include Files
+----------------------------------------------------------------------------*/
+#include "do_rcpapi.h"
+#include "do_fcpapi.h"
+#include "slc_nvram.h"
+
+/*Mac Layer Packet*/
+typedef struct macpkt
+{
+    kal_uint8 MacPktLength;   /* Length of the MAC packet*/
+    kal_bool FormatB;          /* [0 == FormatA ; 1 == FormatB ]*/
+    kal_bool Encrypted;        /* [0 == No ; 1 == Yes ]*/
+    CpBufferT* BufPtr;      /* Points to the beginning of the 640 Byte DMA Buffer*/
+    kal_uint16 OffsetWithIn640ByteBuffer;
+    kal_uint32 SystemTimeInSlots; /* Indicates the time at which the Mac-Packet was received*/
+    kal_uint8 endpoint; /* Satya: Need to discuss this*/
+    struct macpkt* next;
+} MacPktT;	/* This structure is declared in Mac Layer, may be*/
+
+/*********************************************************************/
+extern kal_bool bEncOrAutR;
+
+#define KEY_LENGTH_BYTES      20      /* 160 bits*/
+#define SHA1_HASH_SIZE        20      /* 160 bits*/
+#define SHA1_HASH_WORDS       5
+
+/* AUT_KEP_RPCAUTHKEY_MSG */
+typedef  struct
+{
+  kal_uint8 bits;
+  kal_uint8 RPCAuthKey[KEY_LENGTH_BYTES];
+} AuthKepRPCAuthKeyMsgT;
+
+/* AUT_OMP_SECTORID_MSG */
+typedef  struct
+{
+    kal_uint8 SectorID[SECTORID_LENGTH_BYTES];
+} AuthOmpSectorIDMsgT;
+
+typedef  struct
+{
+  kal_uint8   g_size;
+  kal_uint8*  g_data;
+  kal_uint8   expsize;
+  kal_uint8*  exp;
+  kal_uint8   p_size;
+  kal_uint8*  p_data;
+}DHKepCalReqMsgT;
+
+typedef  struct
+{
+  kal_uint8 size;
+  kal_uint8 data[128];
+}DHKepCalRspMsgT;
+
+/*----------------------------------------------------------------------------
+Global Function Prototypes
+----------------------------------------------------------------------------*/
+/* For RCP */
+void SlProcessPktR(DatapktlistGT *pktList);
+
+/* For FCP*/
+void SlProcessPktF(MacPktT *pktList);
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_slc_msg_struct.h b/mcu/interface/protocol/as_c2k/evdo/do_slc_msg_struct.h
new file mode 100644
index 0000000..757023e
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_slc_msg_struct.h
@@ -0,0 +1,254 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+*
+* FILE NAME   : do_slc_msg_struct.h
+*
+* DESCRIPTION : Message stucture definition for SLC (Session Layer Control) task.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_SLC_MSG_STRUCT_H_
+#define _DO_SLC_MSG_STRUCT_H_
+
+
+#include "slcdhkep.h"
+#include "do_slapi.h"
+#include "do_slcapi.h"
+#include "slcamp.h"
+#include "do_dsaapi.h"
+#ifdef MTK_DEV_C2K_IRAT
+#include "iratapi.h"
+#include "slcsmp.h"
+#include "dscpdefs.h"
+#endif
+#include "slctimer.h"
+#include "tasktimer.h"
+#include "do_slc_msgid.h"
+
+
+/* SLC */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_uint32 TimerId;
+} slc_timer_expired_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DHKepTimerExpiredMsgT msg;
+} dhkep_timer_expired_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DHKepCalRspMsgT msg;
+} dhkep_keycal_rsp_msg_struct;
+
+/* SMP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SmpScpSessionInfoMsgT msg;
+} smp_scp_session_info_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SmpScpActivateCnfMsgT msg;
+} smp_scp_activate_cnf_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SmpScpGAUPPSCnfMsgT msg;
+} smp_scp_gaup_prior_session_cnf_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SmpAmpFailureMsgT msg;
+} smp_amp_failure_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SmpOmpPSGAUPUpdateMsgT msg;
+} smp_omp_prior_session_gaup_update_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    Smp1XConnectionStT msg;
+} smp_css_1x_connection_st_ind_struct;
+
+/* MSG_ID_SMP_SESSION_CLOSE_ETS_CMD */
+
+
+
+
+
+/* SCP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ScpSmpActivateMsgT msg;
+} scp_smp_activate_msg_struct;
+
+/*typedef struct
+{
+    LOCAL_PARA_HDR
+    ScpSmpGAUPPSReqMsgT msg;
+} scp_smp_gaup_prior_session_req_msg_struct;*/
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ScpProtConfigReqMsgT msg;
+} scp_prot_config_req_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ScpProtReConfiguredMsgT msg;
+} scp_prot_reconfigured_msg_struct;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ScpProtConfigFailMsgT msg;
+} scp_prot_config_fail_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ScpProtConfigPauseMsgT msg;
+} scp_prot_config_pause_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ScpProtConfigResumeMsgT msg;
+} scp_prot_config_resume_msg_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    ScpEtsConfigCmdT msg;
+} scp_config_ets_cmd_struct;
+
+/* AMP */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AmpOmpSectorParamsT msg;
+} amp_omp_updated_msg_struct;
+
+/* MSG_ID_AMP_IDP_ASSEMBLE_UATICMPL_AND_HWIDRSP_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AmpIdpAssembleUATICmplAndHWIdRspT msg;
+} amp_idp_assemble_uaticmpl_and_hwidrsp_msg_struct;
+
+/*typedef struct
+{
+    LOCAL_PARA_HDR
+    ScpProtReconfigCnfMsgT msg;
+} slc_scp_prot_reconfig_cnf_msg_struct;*/
+
+/* DSAR_REV_MSG
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaRevMsgT msg;
+} dsar_rev_msg_struct;*/
+
+/* CCM_AMP_ATILIST_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    CcmAmpATIListMsgT msg;
+} ccm_amp_atilist_msg_struct;
+
+/* RCP_AMP_ATILIST_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    AcmAmpATIListMsgT msg;
+} acm_amp_atilist_msg_struct;
+
+/* UT */
+#ifdef MTK_PLT_ON_PC_UT
+typedef struct
+{
+    LOCAL_PARA_HDR
+    DsaFwdMsgT msg;
+    kal_uint8 data[CPBUF_SIZE_FWD];  /* data for the cpbuffer */
+} ut_slc_dsaf_fwd_msg_struct;
+
+/* UT_SLC_SET_SBP_ID_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SlcSetSbpIdMsgT msg;
+} ut_slc_set_sbp_id_msg_struct;
+
+/* UT_SLC_CONF_SBP_FEATURE_MSG */
+typedef struct
+{
+    LOCAL_PARA_HDR
+    SlcConfSbpFeatureMsgT msg;
+} ut_slc_conf_sbp_feature_msg_struct;
+#endif
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    TaskTimerExpiredMsgT msg;
+} task_timer_expired_msg_struct;
+
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_slcapi.h b/mcu/interface/protocol/as_c2k/evdo/do_slcapi.h
new file mode 100644
index 0000000..26c0189
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_slcapi.h
@@ -0,0 +1,312 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME   : do_slcapi.h
+*
+* DESCRIPTION : API definition for SLC (Session Layer Control) task.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_SLCAPI_H_
+#define _DO_SLCAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "module_msg_range.h"
+#include "kal_general_types.h"
+#include "slc_nvram.h"
+#include "sbp_public_utility.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define CONFIGRSP_MESSAGEID_LEN      8
+#define CONFIGRSP_TRANSID_LEN        8
+#define CONFIGRSP_ATTR_LEN           8
+
+#define CONFIGREQ_MESSAGEID_LEN      8
+#define CONFIGREQ_TRANSID_LEN        8
+#define CONFIGREQ_ATTR_LEN           8
+
+#define DSA_FWD_MESSAGEID_LEN    8
+
+#define SESSION_FILE_DIR  "sys/sf"
+#define SESSION_FILE_NAME(filename)  SESSION_FILE_DIR"/"#filename
+
+#define UATI_CONREQ_FIX
+
+/*----------------------------------------------------------------------------
+ Mailbox IDs
+----------------------------------------------------------------------------*/
+#define SLC_TASK_MAILBOX         EXE_MAILBOX_1_ID
+
+#ifdef MTK_PLT_ON_PC_UT
+#define MSG_ID_SLC_CMD_MSGID_AMP_END       MSG_ID_UT_SLC_DSAF_FWD_MSG
+#else
+#define MSG_ID_SLC_CMD_MSGID_AMP_END       MSG_ID_AMP_CMD_MSGID_NUM
+#endif
+
+typedef enum {
+   ATIType_BATI = 0x00,            /*Broadcast ATI*/
+   ATIType_MATI,                   /*Multicast ATI*/
+   ATIType_UATI,                   /*Unicast ATI*/
+   ATIType_RATI,                   /*Random ATI*/
+   ATIType_NULL=0xff
+}ATIType;
+
+typedef enum {
+   ALIVESESSION    = 0x00,         /*retore an alive session*/
+   PRIORSESSION,                   /*restore a prior session*/
+   NEWSESSION,                     /*configure a new session*/
+   SCFAIL,                         /*failed to configure smp required session*/
+   NONSMPREQ                       /*non-smp requested session configure*/
+}ActivateReqT;
+
+typedef enum {
+  SESSION_NORMAL_CLOSE = 0,
+  SESSION_CLOSE_REPLY,
+  SESSION_PROTOCOL_ERROR,
+  SESSION_PROTOCOL_CONFIG_FAILURE,
+  SESSION_PROTOCOL_NEG_ERROR,
+  SESSION_CON_FAIL,
+  SESSION_LOST,
+  SESSION_UNREACHABLE,
+  SESSION_ALL_BUSY,
+
+  SESSION_ALL_CLOSE_REASON
+}SessionCloseReasonT;
+
+#define SECURITY_PACKET_LENGTH   64  /* security layer packet length */
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+
+/*AMP_SMP_RESTORE_MSG: sent by the SMP==>AMP, for restoring UATI(s), from an
+  unexpired but active session. The contents are read from a FILE. */
+
+/* AMP_OMP_UPDATED_MSG: sent by the OMP==>AMP after getting sector parameters. */
+typedef struct
+{
+   kal_bool     bSectorParmsUpdated;
+   kal_uint8    SubnetMask;
+   kal_uint8    ColorCode;
+   kal_uint8    SectorID[16];
+   kal_bool     SecondaryColorCodeInclude;
+   kal_uint8    SecondaryColorCodeCnt;
+   kal_uint8    SecondaryColorCode[8];
+   kal_uint32   Latitude;
+   kal_uint32   Longitude;
+ } AmpOmpSectorParamsT;
+
+typedef struct
+{
+   kal_uint8 nTransactionId;
+   kal_uint8 nRequestReason;
+} AmpIdpAssembleUATICmplAndHWIdRspT;
+
+/*SMP_SCP_SESSION_INFO_MSG: sent by SCP=>SMP to update session info */
+typedef struct
+{
+  kal_uint16 SessionConfigurationToken;
+  kal_uint8  SysRev;
+} SmpScpSessionInfoMsgT;
+
+/*SMP_SCP_ACTIVATE_CNF_MSG: sent by SCP=>SMP to report the session config result */
+typedef struct
+{
+  kal_uint8   SCnf;      /* ActivateReqT */
+  kal_uint8   ConnectionVerified;  /* if SCP made a connection. In case of HARDLINK, SCP will not. 1:yes */
+} SmpScpActivateCnfMsgT;
+
+
+/* SCP_SMP_ACTIVATE_MSG: sent by the SMP==>SCP to start session configuration */
+typedef struct
+{
+  kal_uint8        SReq; /* ActivateReqT */
+  kal_uint8        ScpVerifyConnection;
+  kal_uint16       SessionConfigurationToken;
+  kal_uint8        UATI[16];
+} ScpSmpActivateMsgT;
+
+/* SMP_SCP_GAUP_PRIOR_SESSION_CNF_MSG: sent by SCP==>SMP to report GAUP prior session result */
+typedef struct
+{
+  kal_uint8    result;     /* 0: fail, 1: success */
+} SmpScpGAUPPSCnfMsgT;
+
+/* SCP_PROT_CONFIG_FAIL_MSG: sent by protocol entities to report the configuration
+   failure during negotiation */
+typedef struct {
+  kal_uint8    protocolType;
+  kal_uint16   subType;
+  kal_uint8    gcpFail;  /* 0xFA: gcp is the sender */
+} ScpProtConfigFailMsgT;
+#define GCP_FAIL  0xFA
+
+
+/* SCP_PROT_RECONFIGURED_MSG: sent by protocol entities to report that it has update
+   its InUse instance by GAUP. SCP will update the corresponding personality */
+typedef struct {
+  kal_uint8    protocolType;
+  kal_uint16   subType;
+} ScpProtReConfiguredMsgT;
+
+/* SCP_PROT_CONFIG_REQ_MSG: sent by protocol entities to request SCP to use GCP to
+   negotiate attributes with AN. SCP will drive GCP to conduct negotiation */
+typedef struct {
+  kal_uint8    protocolType;
+  kal_uint16   subType;
+  kal_uint8    initRegSeq;
+} ScpProtConfigReqMsgT;
+
+/* SCP_PROT_RECONFIG_CNF_MSG: sent by protocol entities to confirm its RECONFIGURED
+   message process. SCP will start Commit all received these CNF from all protocols */
+typedef struct {
+  kal_uint8    protocolType;
+  kal_uint16   subType;
+} ScpProtReconfigCnfMsgT;
+
+/* SMP_OMP_PRIOR_SESSION_GAUP_UPDATE_MSG: sent by OMP to update PriorSessionGAUP
+   flag received from overhead air message. SMP will update its local flag */
+typedef struct {
+  kal_uint8    psGAUP;
+} SmpOmpPSGAUPUpdateMsgT;
+
+/* SCP_PROT_CONFIG_PAUSE_MSG: sent by protocol entities to request SCP to pasuse
+   sending/receiving ConfigReq/Rsp */
+typedef struct {
+  kal_uint8    protocolType;
+  kal_uint16   subType;
+} ScpProtConfigPauseMsgT;
+
+/* SCP_PROT_CONFIG_RESUME_MSG: sent by protocol entities to request SCP to resume
+   sending/receiving ConfigReq/Rsp */
+typedef struct {
+  kal_uint8    protocolType;
+  kal_uint16   subType;
+} ScpProtConfigResumeMsgT;
+
+/* SCP_CONFIG_ETS_CMD: sent from(IOP) ETSprotocol to request SCP to setup attributes
+   to specified values */
+typedef struct {
+
+  struct { kal_uint16   protocolType;
+                  kal_uint8   numSubtyes;
+                  kal_uint16  subTypes[5]; }  protSubtypes[5];
+
+  kal_uint8  configOthers;
+  kal_uint16 SupportGAUPSCToken;
+  kal_uint16 SupportConfigLock;
+  kal_uint16 PersonalityCount;
+  kal_uint8  numAppSubtypes;
+  kal_uint16 appSubtypes[12];
+} ScpEtsConfigCmdT;
+
+
+typedef enum
+{
+   SESSION_CLOSE,
+   SESSION_AMPSETUP,
+   SESSION_ATINIT,
+   SESSION_ANINIT,
+   SESSION_OPEN,
+   SESSION_CLOSING
+}MonSpySessionStateT;
+
+extern MonSpySessionStateT  gSessionStateSpy;
+
+typedef struct {
+  kal_uint8 status;  /* 0 - released; 1 - connected */
+}  Smp1XConnectionStT;
+
+typedef struct
+{
+  sbp_id_enum sbpId;
+} SlcSetSbpIdMsgT;
+
+typedef struct
+{
+  sbp_md_feature_enum feature;
+  kal_bool is_turned_on;
+} SlcConfSbpFeatureMsgT;
+
+/* global functions */
+void AmpAssembleUATICompleteAndHWIdRsp(void);
+void AmpAssembleUATICompleteAndHWIdRspAndConnReq(kal_uint8 nConnReqTransID,kal_uint8 nRequestReason);
+kal_uint8 GetAmpGetState(void);
+
+#ifdef MTK_DEV_C2K_IRAT
+kal_bool AmpWaitUATIRequestTxStatus(void);
+#endif
+
+kal_bool AmpUpdateSession(void);
+void SmpDisableSessionVerification(void);
+
+kal_bool AmpCheckSubnetChange(AmpOmpSectorParamsT *MsgDataPtr);
+
+#ifdef CBP7_EHRPD
+void DScpSetEHRPDConfig(kal_bool disable);
+void DScpResetEHRPDConfig(void);
+#endif
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+/* NST: used in NST */
+extern void AmpSendCcmAtiUpdateMsg(void);
+extern void AmpUpdateTransList(ATIType Type, kal_uint32 ATI);
+extern void AmpAddATIToRcvList(ATIType Type, kal_uint32 ATI);
+#endif
+
+#endif  /* _DO_SLCAPI_H_ */
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+
+
+/**Log information: \main\Trophy\Trophy_yzhang_href22247\1 2013-07-30 06:37:43 GMT yzhang
+** HREF#22247=>fix issue of concurrent UATIReq and ConnReq**/
+/**Log information: \main\Trophy\1 2013-07-30 07:08:15 GMT jzwang
+** href#22247**/
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/do_smpapi.h b/mcu/interface/protocol/as_c2k/evdo/do_smpapi.h
new file mode 100644
index 0000000..fd62861
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/do_smpapi.h
@@ -0,0 +1,80 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2002-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+* 
+* FILE NAME   : do_smpapi.h
+*
+* DESCRIPTION : API definition for SMP (Session Management Protocol) component.
+*
+* HISTORY     :
+*****************************************************************************/
+#ifndef _DO_SMPAPI_H_
+#define _DO_SMPAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_slcapi.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+     Message Formats structure
+----------------------------------------------------------------------------*/
+
+typedef struct
+{
+   kal_uint32    attribute;           /* Timer attribute*/ 
+
+} SmpTimerTimeoutMsgT;    /* typedef for the message */
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/dscpdefs.h b/mcu/interface/protocol/as_c2k/evdo/dscpdefs.h
new file mode 100644
index 0000000..96eac1d
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/dscpdefs.h
@@ -0,0 +1,227 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2007-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+
+#ifndef _DSCPDEFS_H_
+#define _DSCPDEFS_H_
+/*****************************************************************************
+* 
+* FILE NAME   : dscpdefs.h 
+*
+* DESCRIPTION :
+*
+*     Contains the typdefs for dscp protocol entity.
+*
+*
+*****************************************************************************/
+#include "do_dsaapi.h"
+#include "do_rcpapi.h"
+#include "do_scpapi.h"
+#include "do_slcapi.h"
+#include "slc_nvram.h"
+
+/*------------------------------------------------------------------------
+* global definitons
+*------------------------------------------------------------------------*/
+
+/*************   Default Session Configuration Protocol **********/
+/*-------------OTA messages handled by DSCP-------------------*/
+typedef enum {
+   DSCP_CONFIGURATION_COMPLETE_OTAMESSAGE = 0x00,
+   DSCP_CONFIGURATION_START_OTAMESSAGE,
+   DSCP_SOFT_CONFIGURATION_COMPLETE_OTAMESSAGE,
+   DSCP_LOCK_CONFIGURATION_OTAMESSAGE,
+   DSCP_LOCK_CONFIGURATION_ACK_OTAMESSAGE,
+   DSCP_UNLOCK_CONFIGURATION_OTAMESSAGE,
+   DSCP_UNLOCK_CONFIGURATION_ACK_OTAMESSAGE,
+   DSCP_DELETE_PERSONALITY_OTAMESSAGE,
+   DSCP_DELETE_PERSONALITY_ACK_OTAMESSAGE,
+
+   DSCP_CONFIGURATION_REQUEST_OTAMESSAGE = 0x50,
+   DSCP_CONFIGURATION_REPONSE_OTAMESSAGE,
+   
+   DSCP_ATTRIBUTE_UPDATE_REQUEST_OTAMESSAGE = 0x52,
+   DSCP_ATTRIBUTE_UPDATE_ACCEPT_OTAMESSAGE,
+   DSCP_ATTRIBUTE_UPDATE_REJECT_OTAMESSAGE
+} 
+DScpOTAMsgsT;
+
+/* DSCP SM state */
+typedef enum {
+  DSCP_INACTIVE,
+  DSCP_OPEN,
+  DSCP_AT_INITIATED,
+  DSCP_AN_INITIATED,
+  DSCP_NUM_STATE
+} DScpStateT;
+
+/* GAUP AttributeUpdateAccept transmision control */
+typedef enum {
+  GAUP_DONE,
+  GAUP_SENDINGACCEPT,    /* trans 3 times */
+  GAUP_SENDINGACCEPT1,
+  GAUP_SENDINGACCEPT2 
+} DScpGAUPStepT;
+
+/* OTA message field width */
+#define DSCP_SCC_PERSONALITY_INDEX_STORE_WIDTH 4
+#define DSCP_SCC_CONTINUE_WIDTH                1
+#define DSCP_SCC_COMMIT_WIDTH                  1
+#define DSCP_SCC_SC_TOKEN_WIDTH                16
+
+#define DSCP_DP_PERSONALITY_COUNT_WIDTH        4
+#define DSCP_DP_PERSONALITY_INDEX_WIDTH        4
+
+#define DSCP_CC_SC_TOKEN_WIDTH_IN_OCTET        2
+
+#define DSCP_ATTR_REC_LENGTH_WIDTH_IN_OCTET    1
+#define DSCP_ATTR_ID_WIDTH_IN_OCTET            2
+#define DSCP_ATTR_VALUE_ID_WIDTH_IN_OCTET      1
+#define DSCP_SIMPLE_ATTR_VALUE_WIDTH_IN_OCTET  2
+
+/*-------------------------------------------------------------*/
+/* DSCP attributes and public data definition: table 7.4.7.1-1 */
+enum {
+   CONFIG_UNLOCK = 0x00,
+   CONFIG_LOCK
+};
+typedef kal_uint8 DScpConfigurationStatusT;
+
+enum {
+   CONNECTION_CLOSED = 0x00,
+   CONNECTION_OPEN
+};
+typedef kal_uint8 DScpConnectionStateT;
+
+enum {
+   NO_GAUP_SCTOKEN      = 0x00,
+   SUPPORT_GAUP_SCTOKEN
+};
+
+enum {
+   NO_CONFIG_LOCK       = 0x00,
+   SUPPORT_CONFIG_LOCK
+};
+
+/* 7.4.7.2.1 */
+typedef struct {
+  kal_uint8  RestorePriorSession;   /* 0: not restore the session. Otherwise restore */
+  kal_uint8  ANAccepted;
+  kal_uint16 SessionConfigurationToken;
+  kal_uint8  Uati[16];
+  kal_uint8  SecurityPacketLength;
+  kal_uint8  SecurityPacket[SECURITY_PACKET_LENGTH];
+}DScpPriorSessionInfoT;
+
+
+#define PROTTYPE_SIZE (NUM_PROTOCOL_TYPE * sizeof(kal_uint16))
+
+typedef struct {
+  /* internal data */
+  DScpConnectionStateT  ConnectionState;
+
+  /* public data */ 
+  DScpConfigurationStatusT ConfigurationLock;
+  kal_uint16 SessionConfigurationToken;
+  kal_uint8  PersonalityIndex;
+
+  /* InUse attributes */
+#if defined(__GNUC__)
+  ATTRIB_ALIGNED(2)
+#endif
+  DScpAttributesDataT  InUseAttrs;
+
+  /* PriorSession */
+  DScpPriorSessionInfoT PriorSessionInfo;
+
+}DScpSessionStateInfoT;
+
+/*-------------------sample of other SCP protocol--------------------*/
+
+/* here define the attributes and public data of other SCP subtype */
+
+/* XSCP attributes */
+typedef struct {
+  kal_uint16 ProtocolType[NUM_PROTOCOL_TYPE]; /* must be first */
+
+  /* other attributes */
+} XScpAttributesDataT;
+
+/* sample subtype */
+typedef struct {
+  /* internal data */
+  DScpConnectionStateT  ConnectionState;
+
+  /* public data */ 
+  DScpConfigurationStatusT ConfigurationLock;
+  kal_uint16 SessionConfigurationToken;
+  kal_uint8  PersonalityIndex;
+
+  /* InUse attributes */
+  XScpAttributesDataT  InUseAttrs;
+
+  DScpPriorSessionInfoT PriorSessionInfo;
+
+} XScpSessionStateInfoT;
+
+
+
+/*------------------------------------------------------------------------
+* global functions
+*------------------------------------------------------------------------*/
+void DScpInit(void);
+void DScpReconfigCnfWaitTimerHandler(void);
+void DScpANInitStWaitReqTimerHandler(void);
+void DScpGaupTimerHandler(void);
+void DScpSendOpenConnectionCmd(void);
+#if 0
+/* under construction !*/
+#endif
+/*------------------------------------------------------------------------
+* global variable 
+*------------------------------------------------------------------------*/
+extern const SCPConfigInterfaceT DScpConfigInterface;
+
+
+#endif /* _DSCPDEFS_H_ */
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/inspdefs.h b/mcu/interface/protocol/as_c2k/evdo/inspdefs.h
new file mode 100644
index 0000000..8ff19a9
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/inspdefs.h
@@ -0,0 +1,142 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _INSPDEFS_H_
+#define _INSPDEFS_H_ 1
+/****************************************************************************
+ *
+ * Module:     inspdefs.h
+ *
+ * Purpose:
+ *
+ ****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_dsaapi.h"
+#include "do_inspapi.h"
+#include "sysapi.h"
+extern kal_uint16 TstPilotPN;
+
+/*----------------------------------------------------------------------------
+ Local Defines and Macros
+----------------------------------------------------------------------------*/
+#define CP_SYNC_MESSAGE_ID_WIDTH     2
+#define CP_MAX_REVISION_WIDTH        8
+#define CP_MIN_REVISION_WIDTH        8
+#define CP_PILOT_PN_WIDTH            9
+#define CP_SYSTEM_TIME_WIDTH        37
+#define CP_SYSTEM_TIME_BYTES         5
+
+typedef enum
+{
+   INSP_INACTIVE_STATE,
+   INSP_NETWORK_DET_STATE,
+   INSP_PILOT_ACQ_STATE,
+   INSP_SYNC_STATE,
+   INSP_TIMING_CHANGE_STATE,
+   INSP_WFR_1XASSIST_SIG
+} InspStateT;
+
+typedef enum
+{
+   INSP_SYNC_MESSAGE = 0x00,
+   INSP_CONFIG_REQUEST_MESSAGE = 0x50,
+   INSP_CONFIG_RESPONSE_MESSAGE,
+} InspMsgTypeT;
+
+/* INSP Sync Message */
+typedef struct
+{
+   kal_uint8     MessageId; /* 2 bits */
+   kal_uint8     MaxRevn;   /* 8 bits */
+   kal_uint8     MinRevn;    /* 8 bits */
+   kal_uint16    PilotPN;  /* 9 bits */
+   FrameRecT SystemTime;
+} InspSyncMsgT;
+
+extern kal_bool _ATRevnTestMode;
+/*----------------------------------------------------------------------------
+  Function Prototypes
+----------------------------------------------------------------------------*/
+void InspInitialize(void);
+void RunInspStateMachine(kal_uint32 MsgId, void *MsgDataP);
+void ProcessInspDsaFwdMsg(DsaFwdMsgT *MsgDataP);
+void ProcessInspActivateMsg (void);
+void ProcessInspDeactivateMsg (void);
+void ProcessInspFreqRspMsg (InspCssFreqRspMsgT *MsgP);
+void ProcessInspPilotAcqRspMsg (InspRmcPilotAcqRspMsgT *MsgP);
+void ProcessInspFreezeMsg (void);
+void ProcessInspThawMsg (void);
+void ProcessInspSyncAcqTmrExpired(void);
+void ProcessInspSyncOKTmrExpired(void);
+void ProcessInspSyncOKMsg (InspRmcSyncOKMsgT *MsgP );
+void ProcessPilotAcqTmrExpired(void);
+void ProcessInspWaitforAntTmrExpired(void);
+void SetInspState(InspStateT state);
+ChanRecGT* GetLastSavedSystem(void);
+InspStateT GetInspState(void);
+void InspCssFreqRequestMsg(kal_uint8 indication);
+void InspCssSysAcqReqMsg(void);
+void InspCssAcqAbortReqMsg(void);
+void ProcessInsp1XAssistDoAcqMsg(void);
+void ProcessInspRmcRfStatusMsg(InspRmcRFStatusMsgT *MsgDataPtr);
+kal_uint16 InspGetSyncPilotPN(void);
+
+void InspSendHrpdNtwkAcqStatusToVal(kal_bool isNwAcqd);
+void InspRecordHrbridFreezeCount(void);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /*_INSPDEFS_H_*/
+
+
+
+
+/**Log information: \main\Trophy\Trophy_ylxiao_href22158\1 2013-04-19 09:40:31 GMT ylxiao
+** HREF#22158, remove compile warnings, fix bug**/
+/**Log information: \main\Trophy\1 2013-04-22 01:48:25 GMT zlin
+** HREF#22158. merge code.**/
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/slc_nvram.h b/mcu/interface/protocol/as_c2k/evdo/slc_nvram.h
new file mode 100644
index 0000000..cfaa0d5
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/slc_nvram.h
@@ -0,0 +1,1081 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+#ifndef _SLC_NVRAM_H_
+#define _SLC_NVRAM_H_ 1
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+
+typedef struct {
+  kal_uint32 TSmpClose;             /*Nogotiation Parameter*/
+  kal_uint64  TSysTime;              /*The lastest updatedsystem time*/
+}SmpKeepAliveParaT;
+
+/* this struct shall be identical to the corresponding part of AmpParamT */
+typedef struct {
+  kal_uint8 UATIAssignMessageSeq;
+  kal_uint8 UATIColorCode;
+  kal_uint8 UATISubnetMask;
+  kal_uint8 UpperOldUATILen;
+  kal_uint8 UATI[16];
+  kal_uint8 ReducedSubnetMask[16];
+  kal_uint8 UATIAvailable;
+  
+  kal_uint8 OldUATIAssignMessageSeq;
+  kal_uint8 OldUATIColorCode;
+  kal_uint8 OldUATISubnetMask;
+  kal_uint8 OldUpperOldUATILen;
+  kal_uint8 OldUATI[16];
+  kal_uint8 OldReducedSubnetMask[16];
+  kal_uint8 OldUATIAvailable;
+
+  kal_uint8 UATIReqTransID;
+  kal_uint8 AttriTransId;
+  kal_uint8 InuseSubtype;
+  kal_uint32 SessionSeed;
+  kal_uint32 X0;
+  kal_uint32 Y0;
+}AmpSessionDataT;
+
+typedef struct {
+   SmpKeepAliveParaT KeepAliveParam; 
+   AmpSessionDataT AmpSessionData;
+   kal_uint16 SessionConfigurationToken;
+   kal_uint8  EhrpdFlag;
+}SessionDataT;
+
+typedef struct
+{
+  kal_uint8  SubType;
+  kal_uint8  CCShortPacketsMACIndex;
+}CcmAttributeT;
+
+typedef struct
+{
+  kal_uint8         CcmCfgReqTranId;
+  CcmAttributeT CcmAttribute[2];
+}CcmInfoT;
+
+/* transmission rate  used to index into max payload tables and etc. */
+#define ACM_MAX_NUM_RATES     4
+
+/* for saving into personality file, use PACKED struct */
+typedef struct
+{
+   kal_uint8  APersistenceOverride;
+   kal_uint8  TerminalAccessRateMax;
+   kal_uint8  AccessTerminalClassOverride;
+   kal_uint8  ProbeSeqMax;
+   kal_uint8  ProbeBackoff;
+   kal_uint8  ProbeSeqBackoff;
+   kal_int8   DataOffset[ACM_MAX_NUM_RATES];  /* 2's complement, [0] in 0.5dB, others in 0.25dB */
+   /* 0=DataOffsetNom(Q1),  1=DataOffset9k6(Q2), 2=DataOffset19k2(Q2),  3=DataOffset38k4(Q2) */
+}AcmAttributesT;
+
+typedef enum
+{
+    FTM_SUBTYPE_DEFAULT= 0,    
+    FTM_SUBTYPE_ENHANCE
+} FtmSubtypeT; 
+
+typedef struct
+{
+    kal_uint8 DrcLockPeriod; /*default: b'1. Length: 1bit */
+    kal_uint8 DrcLockLength; /*default: b'01. Length: 2bit */
+}DrcLockAttributeT;
+
+typedef struct
+{
+    kal_uint8 SofterHandoffDelay; //default: 0x01
+    kal_uint8 SoftHandoffDelay;   // default: 0x10
+}HandoffDelayAttributeT;
+
+typedef struct
+{
+    //default: all zero, index by Drc value
+    kal_uint8 DrcOffset[15];
+} DrcTranslationOffsetAttributeT;
+
+typedef struct
+{
+    /*---------------*
+       Simple Attributes
+      *---------------*/
+    kal_uint16 DrcGating; /* default: 0x0000 (continuous) */
+    kal_uint16 NulRateDrc38_4Enable; /*default: 0x0000*/
+
+    /*---------------*
+       Complex Attributs
+      *---------------*/
+    DrcLockAttributeT DrcLock; 
+    HandoffDelayAttributeT HandoffDelay;
+}FtmDefaultAttributesT;
+
+typedef struct
+{
+    /*--------------*
+       Simple Attributtes
+      *--------------*/
+    kal_uint8 DrcGating; /* default:0x00 */
+    kal_uint8 DrcLockLength; /* default: 0x01 (repeated 16 times) */
+    kal_uint8 MultiUserPacketsEnabled; /*default: 0x00 (disabled) */
+    kal_uint8 DscLength; /*default: 0x08 (64 slots), in uint of 8 slots */
+ 
+    kal_uint8 DeltaAckChannelGainMUP; /*default: 0x0c(6 db), in unit of 0.5 db */
+    kal_uint8 ShortPacketsEnabledThresh; /*default: 0x01 (2048 bits) 8*/
+    kal_uint8 SingleUserMultiplexPacketsEnabled; /*default: 0x00 (disabled)*/
+    kal_uint8 DrcSupervisionTimer; /*default: 0x00*/
+ 
+    kal_uint8 MinimumContinuationSpan; /* default: 0x04. in subpacket*/
+    kal_uint8 DscChannelGainBoost; /*default: 0x00. dB*/
+    kal_uint8 DscBoostLength; /*default: 0x10 (128 slots). in unit of 8 slots*/
+    kal_uint8 DrcChannelGainBoost;  /*default: 0x00. dB*/
+ 
+    kal_uint8 DrcboostLength; /*default: 0x04 (8 slots). in unit of 2 slots*/
+   
+    /*----------------
+       Complex Attributes
+      *---------------*/
+    HandoffDelayAttributeT HandoffDelay;
+    DrcTranslationOffsetAttributeT DrcTranslationOffset;   
+}FtmEnhanceAttributesT;
+
+typedef union
+{
+    FtmDefaultAttributesT FtmDefaultAttributes;
+    FtmEnhanceAttributesT FtmEnhanceAttributes;
+}FtmAttributesT;
+
+typedef struct 
+{
+    FtmSubtypeT  FtmSubtype;
+    FtmAttributesT FtmAttributes;
+} FtmCfgDataT;
+
+typedef enum
+{
+    RTM_SUBTYPE0 = 0,
+    RTM_SUBTYPE1,
+    RTM_SUBTYPE2,
+    RTM_SUBTYPE3
+} RtmRmmSubtypeT;
+
+#define RTM_MAX_RATE_TRANSITION     12      /* Subtype0/1: Max number of entries in RateTransition Table */
+#define RTM_MAX_REV_RATE            6       /* Subtype0/1: Max number of rev rates */
+#define MAX_MAC_FLOW_NUM        4
+#define RTM_MAX_INTERLACE           3       /* Standard defined 3 RevLink interlaces */
+#define RTM_MAX_REV_RATE_PHY2       13      /* RTM:TODO Subtype3: Max number of rev rates */
+#define MAX_RLP_FLOW_SUPPORTED       8
+
+typedef struct
+{
+   kal_uint8  rpcStep;          /* 0=0.5db, 1=1.0db */
+   kal_int8   pwrParm[RTM_MAX_REV_RATE];
+                            /* Channel Gains from pilotpwr, in 0.5db/0.25db, 2'complement
+                                0 = dataOffsetNom   in 0.5db
+                                1 = dataOffset9k6   in 0.25db
+                                2 = dataOffset19k2
+                                3 = dataOffset38k4
+                                4 = dataOffset76k8
+                                5 = dataOffset153k6
+                            */
+   kal_uint8  rateParm[RTM_MAX_RATE_TRANSITION];   /* GAUP */
+                            /* Transition Probability for rev rates (units of 1/255)
+                                0  = 0xFF (KAL_TRUE always)
+                                1  = Trans9k6_19k2
+                                2  = Trans19k2_38k4
+                                3  = Trans38k4_76k8
+                                4  = Trans76k8_153k6
+                                5  = 0 (KAL_FALSE always)
+                                6  = 0 (KAL_FALSE always)
+                                7  = 0 (KAL_FALSE always)
+                                8  = Trans19k2_9k6
+                                9  = Trans38k4_19k2
+                                10 = Trans76k8_38k4
+                                11 = Trans153k6_76k8
+                            */
+}Rtm01AttributesT;
+
+/* FRABFilterTC */
+typedef enum
+{
+   RTM_FRABFILTERTC_128 = 0,
+   RTM_FRABFILTERTC_256,
+   RTM_FRABFILTERTC_384,
+   RTM_FRABFILTERTC_512
+} RtmFrabFilterTcT;
+
+typedef enum
+{
+    RTM_FRAB_LOW_MINUS_0_2 =0,
+    RTM_FRAB_LOW_MINUS_0_4,
+    RTM_FRAB_LOW_MINUS_0_6,
+    RTM_FRAB_LOW_MINUS_0_8,
+    RTM_FRAB_LOW_MINUS_1_0,
+    RTM_FRAB_LOW_MAX,
+}RtmFrabLowT;
+
+typedef enum
+{
+    RTM_MERGE_THRESHOLD_128=0,
+    RTM_MERGE_THRESHOLD_256,
+    RTM_MERGE_THRESHOLD_512,
+    RTM_MERGE_THRESHOLD_1024,
+    RTM_MERGE_THRESHOLD_2048,
+    RTM_MERGE_THRESHOLD_MAX,
+}RtmMergeThresholdT;
+
+typedef enum
+{
+    RTM_PAYLOAD_THRESH_768=0,
+    RTM_PAYLOAD_THRESH_1024,
+    RTM_PAYLOAD_THRESH_1536,
+    RTM_PAYLOAD_THRESH_INFINITE,
+    RTM_PAYLOAD_THRESH_MAX,
+}RtmPayloadThreshT;
+
+typedef enum
+{
+    RTM_PILOT_STRENGTH_FILTER_TC_32=0,
+    RTM_PILOT_STRENGTH_FILTER_TC_64,
+    RTM_PILOT_STRENGTH_FILTER_TC_128,
+    RTM_PILOT_STRENGTH_FILTER_TC_MAX,
+}RtmPilotStrengthFilterTcT;
+
+typedef enum
+{
+   RTM_QRABFILTERTC_4 = 0,
+   RTM_QRABFILTERTC_8
+} RtmQrabFilterTcT;
+
+typedef enum
+{
+    RTM_T2P_NO_TX_FILTER_TC_16=0,
+    RTM_T2P_NO_TX_FILTER_TC_24,
+    RTM_T2P_NO_TX_FILTER_TC_32,
+    RTM_T2P_NO_TX_FILTER_TC_64,
+    RTM_T2P_NO_TX_FILTER_TC_128,
+    RTM_T2P_NO_TX_FILTER_TC_MAX,
+}RtmT2pNoTxFilterTcT;
+
+typedef enum
+{
+    RTM_MERGE_THRESHOLD_NN_0=0,
+    RTM_MERGE_THRESHOLD_NN_32,
+    RTM_MERGE_THRESHOLD_NN_128,
+    RTM_MERGE_THRESHOLD_NN_1024,
+    RTM_MERGE_THRESHOLD_NN_4096,
+    RTM_MERGE_THRESHOLD_NN_8192,
+    RTM_MERGE_THRESHOLD_NN_INFINITE,
+    RTM_MERGE_THRESHOLD_NN_MAX,
+    RTM_MERGE_THRESHOLD_00_INFINITE=4,
+    RTM_MERGE_THRESHOLD_00_MAX,
+}RtmMergeThresholdNnT;
+
+typedef enum
+{
+    RTM_BURST_DURATION_FACTOR_4=0,
+    RTM_BURST_DURATION_FACTOR_8,
+    RTM_BURST_DURATION_FACTOR_16,
+    RTM_BURST_DURATION_FACTOR_32,
+    RTM_BURST_DURATION_FACTOR_MAX,
+}RtmBurstDurationFactorNnT;
+
+typedef enum
+{
+    RTM_T2P_FILTER_TC_NN_16=0,
+    RTM_T2P_FILTER_TC_NN_24,
+    RTM_T2P_FILTER_TC_NN_32,
+    RTM_T2P_FILTER_TC_NN_64,
+    RTM_T2P_FILTER_TC_NN_128,
+    RTM_T2P_FILTER_TC_NN_MAX,
+}RtmT2pFilterTcNnT;
+
+typedef enum
+{
+    RTM_PAYLOAD_NO_BITS=0,
+    RTM_PAYLOAD_128_BITS,
+    RTM_PAYLOAD_256_BITS,
+    RTM_PAYLOAD_512_BITS,
+    RTM_PAYLOAD_768_BITS,
+    RTM_PAYLOAD_1024_BITS,
+    RTM_PAYLOAD_1536_BITS,
+    RTM_PAYLOAD_2048_BITS,
+    RTM_PAYLOAD_3072_BITS,
+    RTM_PAYLOAD_4096_BITS,
+    RTM_PAYLOAD_6144_BITS,
+    RTM_PAYLOAD_8192_BITS,
+    RTM_PAYLOAD_12288_BITS,
+    RTM_PAYLOAD_MAX_BITS,
+}RtmPayloadT;
+
+//start of complex type definition for RtmSubtype 3
+// complex attribute type 0x01NN
+/* AssocFlows for MacFlows */
+typedef struct
+{
+   kal_uint8  flowCount;
+   kal_uint16 stream[MAX_MAC_FLOW_NUM];
+   kal_uint8  substream[MAX_MAC_FLOW_NUM];
+} RtmAssocFlowsT;
+//complex attribute type 0x0000, not defined. it's done already.
+
+// complex attribute type 0x03NN
+typedef struct
+{
+    kal_uint8 ValueId;
+    kal_uint8 NumT2pAxisValues;
+    kal_uint8 NumFrabAxisValues;
+    kal_uint8 T2pAxis[16];
+    kal_uint8 FrabAxis[8];
+    kal_uint8 BucketFactorT2pAxisFrabAxis[128];
+}RtmBucketFactorNnT;
+
+// complex attribute type 0x0001
+typedef struct
+{
+    kal_uint8 ValueId;
+    kal_uint8 AllocationStagger;
+    kal_uint8 TxT2pMin;
+    kal_uint8 RpcStep;
+}RtmCommonPowerParameterT;
+
+// complex attribute type 0x0002, not defined. it's done already.
+
+// complex attribute type 0x0003
+typedef struct
+{
+    kal_uint8 ValueId;
+    kal_uint8 PermittedPayload[RTM_PAYLOAD_MAX_BITS][3];
+}RtmPermittedPayloadT;
+
+// complex attribute type 0x0004
+typedef struct
+{
+    kal_uint8 ValueId;
+    kal_uint8 NumPilotStrengthAxisValues;
+    kal_uint8 PilotStrengthAxis[15];
+    kal_uint8 PilotStrengthPilotStrengthAxis[15];
+}RtmPilotStrengthT;
+
+// complex attribute type 0x0005-0x0010
+typedef struct
+{
+    kal_uint8 ValueId;
+    kal_uint8 LoLatT2pTransition;
+    kal_uint8 LoLatTerminationTarget;
+    kal_uint8 HiCapT2pTransition;
+    kal_uint8 HiCapTerminationTarget;
+    kal_uint8 T2pLoLatPreTransition;
+    kal_uint8 T2pLoLatPostTransition;
+    kal_uint8 T2pHiCapPreTransition;
+    kal_uint8 T2pHiCapPostTransition;
+}RtmPowerParameterT;
+
+// complex attribute type 0x0011
+typedef struct
+{
+    kal_uint8 ValueId;
+    kal_uint8 ReqRatio;
+    kal_uint8 MaxReqInterval;
+}RtmRequestParametersT;
+
+// complex attribute type 0x0012
+typedef struct
+{
+    kal_uint8 ValueId;
+    kal_uint8 RriChanGainPreTransition0;
+    kal_uint8 RriChanGainPostTransition0;
+    kal_uint8 RriChanGainPreTransition1;
+    kal_uint8 RriChanGainPostTransition1;
+    kal_uint8 RriChanGainPreTransition2;
+    kal_uint8 RriChanGainPostTransition2;
+    kal_uint8 RriChanGainPreTransition3;
+    kal_uint8 Reserved;
+}RtmRriChanPowerParametersT;
+
+// complex attribute type 0x15NN
+typedef struct
+{
+    kal_uint8 ValueId;
+    kal_uint8 T2pInflowMin;
+    kal_uint8 T2pInflowMax;
+}RtmT2pInflowRangeNnT;
+
+// complex attribute type 0x16NN
+typedef struct
+{
+    kal_uint8 ValueId;
+    kal_uint8 NumT2pAxisValues;
+    kal_uint8 NumFrabAxisValues;
+    kal_uint8 T2pAxis[16];
+    kal_uint8 FrabAxis[8];
+    kal_uint8 T2pUpT2pAxisFrabAxis[128];
+    kal_uint8 T2pDnT2pAxisFrabAxis[128];
+}RtmT2pTransitionFunctionNnT;
+
+//complex attribute type 0x0013
+typedef struct
+{
+    kal_uint8 ValueId;
+    kal_uint8 NumPilotStrengthAxisValues;
+    kal_uint8 PilotStrengthAxis[7];
+    kal_uint8 TxT2pMaxPilotStrengthAxis[7];
+}RtmTxT2pMaxT;
+
+//complex attribute type 0x0014, not defined. It's done already.
+//end of complex type definition for RtmSubtype 3
+
+typedef struct
+{
+    //simple attributes
+    kal_uint8 arqMode;//attr id:0xffff, either 0 or 1
+    RtmFrabFilterTcT frabfilterTC;//attr id:0xfffe
+    RtmFrabLowT FrabLow;//attr id:0xfffd
+    RtmMergeThresholdT MergeThreshold;//attr id:0xfffc
+    RtmPayloadThreshT PayloadThreshold;//attr id:0xfffb
+    RtmPilotStrengthFilterTcT PilotStrengthFilterTc;//attr id:0xfffa
+    RtmQrabFilterTcT qrabfilterTC;//attr id:0xfff9
+    RtmT2pNoTxFilterTcT T2pNoTxFilterTc;//attr id:0xfff7
+    kal_uint8 PilotStrengthQrabThresholdDrcLock;//attr id: 0xfff6, -0.25dB resolution
+    kal_uint8 PilotStrengthQrabThresholdDrcUnlock;//attr id: 0xfff5, -0.25dB resolution
+    kal_uint8 rate1M8Supported;//attr id: 0xfff3 RTM3:1=ATsupports 1.8Mbps on revlink
+    kal_uint8 supportGAUPMaxNumSubPackets;//attr id:0xfff2 RTM3: 1=supports GAP for MaxNumSubPackets attr
+    kal_uint8 RtmBucketLevelMax[MAX_MAC_FLOW_NUM];//attr id: 0xfeNN, 0.25dB resolution
+    RtmMergeThresholdNnT MergeThresholdNn[MAX_MAC_FLOW_NUM];//attr id:0xfdNN, 0xfd00 has to be taken care specially.
+    kal_uint8 TransmissionModeNn[MAX_MAC_FLOW_NUM];//attr id:0xfcNN, 0:high capacity, 1:low latency
+    kal_uint8 QrabSelectNn[MAX_MAC_FLOW_NUM];//attr id:0xfbNN, 0:use QRAB, 1: use QRABps
+    RtmBurstDurationFactorNnT BurstDurationFactorNn[MAX_MAC_FLOW_NUM];//attr id:0xfaNN
+    RtmT2pFilterTcNnT T2pFilterTcNn[MAX_MAC_FLOW_NUM];//attr id:0xf9NN
+
+    //complex attributes
+    //attr id:0x01NN
+   RtmAssocFlowsT assocFlow[MAX_MAC_FLOW_NUM];  /* GAUP. The app macflows(stream,substream) assoc with each MacFlowId */
+    //attr id:0x0000
+   kal_int8   auxPilotChanGain;     /* RTM3,GAUP: relative to Traffic. In db, from -15 to 0db. */
+   kal_uint8  auxPilotMinPayload;   /* RTM3,GAUP: 0 to 0xb, units of 128bits to represent payload bits */
+    //attr id:03NN
+    RtmBucketFactorNnT BuckFactorNn[MAX_MAC_FLOW_NUM];
+    //attr id:0x0001
+    RtmCommonPowerParameterT CommonPowerParameter;
+    //attr id:0x0002
+   kal_uint8  maxNumSubPkt[RTM_MAX_INTERLACE];  /* RTM3,GAUP: Max number of subpkt allowed for this interlace */
+    //attr id:0x0003
+    RtmPermittedPayloadT PermittedPayload;
+
+    //attr id:0x0004
+    RtmPilotStrengthT PilotStrength;
+
+    //attr id:0x0005-0010
+    RtmPowerParameterT PowerParameter[RTM_MAX_REV_RATE_PHY2-1];
+
+    //attr id:0x0011
+    RtmRequestParametersT RequestParameters;
+
+    //attr id:0x0012
+    RtmRriChanPowerParametersT RriChanPowerParameters;
+
+    //attr id:0x15NN
+    RtmT2pInflowRangeNnT T2pInflowRangeNn[MAX_MAC_FLOW_NUM];
+
+    //attr id: 0x16NN
+    RtmT2pTransitionFunctionNnT T2pTransitionFunctionNn[MAX_MAC_FLOW_NUM];
+
+    //attr id:0x0013
+    RtmTxT2pMaxT Txt2pMax;
+
+    //attr id:0x0014
+    kal_uint8  maxNumMacFlows;                   /* Max num of active+inactive MAC flows */
+    kal_uint8  maxNumActiveMacFlows;             /* Max num of active MAC flows */
+}Rtm3AttributesT;
+
+typedef union
+{
+    Rtm01AttributesT Rtm01Attributes;
+    Rtm3AttributesT Rtm3Attributes;
+}RtmAttributesT;
+/* Session Configuration Data */
+/* This is a local SessCfg data structure which stores SessCfg attrib params
+   saved from OTA Config msgs, or loaded from std defaults */
+typedef struct
+{
+    RtmRmmSubtypeT     rtmSubtype;      /* RTCMAC subtype: 0, 1, 2, 3*/
+
+    RtmAttributesT RtmAttributes;
+} RtmCfgDataT;
+
+typedef struct
+{
+  kal_uint16 stream0Application;
+  kal_uint16 stream1Application;
+  kal_uint16 stream2Application;
+  kal_uint16 stream3Application;
+}StreamConfigAttribT;
+
+/* 
+The stream1, stream2, stream3 personality depends on 
+the below parsubtype:
+ParCfgAccessInCfg.parSubType
+ParCfgServiceInCfg.parSubType
+*/
+typedef enum
+{
+    DSA,
+    DPA_AccessStream = 0x01,
+    DPA_ServiceStream,
+    TAP_SUBTYPE,
+    MFPA_AccessStream = 0x04,
+    MFPA_ServiceStream,
+    CIR_SRVCS_NOT_3G1X,
+    EMFPA_AccessStream = 0x08,
+    EMFPA_ServiceStream,
+    ETAP_SUBTYPE = 0x0a,
+    BTAP,
+    NUM_APP_SUBTYPE_SUPPORTED
+} AppSubTypeT;
+
+#define MAX_RESV_LABEL_WITH_RLP_FLOW 3
+#define MAX_SUPPORT_HL_PROTOCOL_NUM  1
+
+typedef  struct
+{
+    kal_uint8 Active;
+    kal_uint8 lenSeq;
+    kal_uint8 lenRLPID;
+    kal_uint8 RLPID;
+} FlowIdentificationAttribT;
+
+typedef  struct
+{
+    kal_uint16 AbortTimer;
+    kal_uint16 FlushTimer;
+} FlowTimersAttribT;
+
+typedef  struct
+{
+    kal_uint8 MaxNumRLPFlows;
+    kal_uint8 MaxActivatedRLPFlows;
+} MaxRLPFlowsAttribT;
+
+typedef  struct
+{
+    kal_uint8 nReservationCount;
+    kal_uint8 ReservationLabel[MAX_RESV_LABEL_WITH_RLP_FLOW];
+} FlowReservationAttribT;
+
+typedef  struct
+{
+    kal_uint8 MaxNumReservationFwd;
+    kal_uint8 MaxNumReservationRev;
+    kal_uint8 MaxNumOpenReservationFwd;
+    kal_uint8 MaxNumOpenReservationRev;
+} MaxReservationsAttribT;
+
+typedef  struct
+{
+    kal_uint8  ProtocolCount;
+    kal_uint8  ProtocolIdentifier[MAX_SUPPORT_HL_PROTOCOL_NUM];
+} SupportHLProtocolT;
+
+#define MAX_QOSPROFILE_COUNT      10
+#define MAX_QOS_PROFILE_NUM    16
+#define MAX_RESERVATION_LABEL          0x100
+
+typedef struct
+{
+  kal_uint8   ProfileCount;
+  kal_uint8   ProfileLength[MAX_QOSPROFILE_COUNT];
+  kal_uint16  Profile[MAX_QOSPROFILE_COUNT][MAX_QOS_PROFILE_NUM];
+}SupportedQosProfileT;
+
+#ifdef CBP7_EHRPD
+#define MAX_PROTPARMSPROFILE_COUNT       8
+
+typedef enum
+{
+   PI_NULL     = 0x00,         /* NULL */
+   PI_HDLC     = 0x01,         /* Octet-based HDLC-like framing */
+   PI_IPV4     = 0x02,         /* IP version4 */
+   PI_IPV6     = 0x03,         /* IP version6 */
+   PI_ROHC     = 0x04,         /* ROHC */
+   PI_IPV4V6   = 0x05,         /* IP version4 and Version6 */
+   PI_HDLC_ALT = 0x06,         /* Octet-based HDLC-like framing  with AltPPP*/
+   PI_EHRPD    = 0x07,         /* Octet based HDLC like framing supporting multiple PDNs*/
+   PI_PDNMUX   = 0x08,         /* PDN-Mux (One octet PDN-ID prefix) for Internet Protocol (IP) PDNs*/
+   PI_RESERVED
+} HlpProtocolIdentifierT;
+
+typedef  struct
+{
+   kal_uint16 MaxCID;
+   kal_bool LargeCIDs;
+   kal_bool FeedbackForIncluded;
+   kal_uint8 FeedbackFor;
+   kal_uint16 MRRU;
+   kal_uint8 ProfileCount;
+   kal_uint16 Profiles[MAX_PROTPARMSPROFILE_COUNT];
+} FwdRohcProtocolParmsT;
+
+typedef  struct
+{
+   kal_uint16 MaxCID;
+   kal_bool LargeCIDs;
+   kal_bool FeedbackForIncluded;
+   kal_uint8 FeedbackFor;
+   kal_uint16 MRRU;
+   kal_bool TimerBasedCompression;
+   kal_uint8 ProfileCount;
+   kal_uint16 Profiles[MAX_PROTPARMSPROFILE_COUNT];
+} RevRohcProtocolParmsT;
+
+typedef struct {
+     HlpProtocolIdentifierT  ProtcolID;
+     RevRohcProtocolParmsT   RohcParms;
+} RevFlowProtocolParametersAttribT;
+
+typedef struct {
+     HlpProtocolIdentifierT  ProtcolID;
+     RevRohcProtocolParmsT   RohcParms;
+} RevRouteProtocolParametersAttribT;
+
+typedef struct {
+     HlpProtocolIdentifierT  ProtcolID;
+     FwdRohcProtocolParmsT   RohcParms;
+} FwdFlowProtocolParametersAttribT;
+
+typedef struct {
+     HlpProtocolIdentifierT  ProtcolID;
+     FwdRohcProtocolParmsT   RohcParms;
+} FwdRouteProtocolParametersAttribT;
+#endif
+
+typedef struct {
+  kal_uint8 Active;
+  kal_uint8 lenSeq;
+  kal_uint8 lenRLPID;
+  kal_uint8 RLPID;
+} FlowIdentificationFwdAttribT;
+
+typedef struct {
+  kal_uint16 AbortTimer;
+  kal_uint16 FlushTimer;
+} FlowTimersFwdAttribT;
+
+typedef struct {
+  kal_uint8 MaxNumRLPFlowsFwd;
+  kal_uint8 MaxActivatedRLPFlowsFwd;
+} FwdMaxRLPFlowsAttribT;
+
+typedef  struct
+{
+    AppSubTypeT  parSubType;
+    /*kal_uint16        ProtocolType;*/
+    kal_uint8        ActiveRlpNum;
+    /*Default Packet Application Attributes*/
+    kal_uint8           RANHandoff;
+
+    /*Multi-Flow Packet Application Attributes*/
+    kal_uint8           MaxAbortTimer;
+    kal_bool            RevFlowNakEnabled [MAX_RLP_FLOW_SUPPORTED];
+    kal_bool            FlowPhysicalLayerNakEnabledRev[MAX_RLP_FLOW_SUPPORTED];
+    kal_uint8           RevFlowHighLayerProtocol[MAX_RLP_FLOW_SUPPORTED];
+    kal_uint8           ReservationIdleStateRev[MAX_RESERVATION_LABEL];
+    kal_uint8           ReservationIdleStateFwd[MAX_RESERVATION_LABEL];
+    kal_uint16          FlowTransmitAbortTimerRev[MAX_RLP_FLOW_SUPPORTED];
+    kal_bool            FlowDataOverSignalingAllowedRev[MAX_RLP_FLOW_SUPPORTED];
+    FlowIdentificationAttribT attribRevFlowIdentification[MAX_RLP_FLOW_SUPPORTED];
+    FlowTimersAttribT         attribRevFlowTimer[MAX_RLP_FLOW_SUPPORTED];
+    kal_uint16          FlowAbortTimerRevInFrame[MAX_RLP_FLOW_SUPPORTED];
+    FlowReservationAttribT    attribRevFlowReservation[MAX_RLP_FLOW_SUPPORTED];
+    FlowReservationAttribT    attribFwdFlowReservation[MAX_RLP_FLOW_SUPPORTED];
+    MaxRLPFlowsAttribT        attribRevmaxRLPFlows;
+    MaxReservationsAttribT    attribMaxResv;
+    SupportHLProtocolT        SupportedHLProtocol;
+    SupportedQosProfileT      ANSupportedQosProfile;
+
+#ifdef CBP7_EHRPD
+    /*Enhanced Multi-Flow Packet Application attributes */
+    kal_bool             PPPFreeAuthenticationSupport;
+    kal_bool            TwoRouteSupported;
+    kal_bool            ATNakDelaySupported;
+    kal_uint8    attribRevFlowProtocolPDU[MAX_RLP_FLOW_SUPPORTED];
+    kal_uint8    attribRevFlowDataUnit[MAX_RLP_FLOW_SUPPORTED];
+    kal_uint8   attribRevRouteProtocolPDU[MAX_RLP_FLOW_SUPPORTED];
+    RevFlowProtocolParametersAttribT attribRevFlowProtocolParameters[MAX_RLP_FLOW_SUPPORTED];
+    RevRouteProtocolParametersAttribT attribRevRouteProtocolParameters[MAX_RLP_FLOW_SUPPORTED];
+#endif
+}ParServiceConfigDataT;
+
+typedef struct {
+  AppSubTypeT pafSubType;
+
+  /*Default Packet Application Attributes*/
+  kal_uint8 RANHandoff;
+
+  /*Multi-Flow Packet Application Attributes*/
+  kal_uint8 MaxAbortTimer;
+  kal_bool FwdFlowNakEnabled [MAX_RLP_FLOW_SUPPORTED];
+  kal_uint8 FwdFlowHighLayerProtocol[MAX_RLP_FLOW_SUPPORTED];
+  FlowIdentificationFwdAttribT attribFwdFlowIdentification[MAX_RLP_FLOW_SUPPORTED];
+  FlowTimersFwdAttribT attribFwdFlowTimer[MAX_RLP_FLOW_SUPPORTED];
+  FwdMaxRLPFlowsAttribT attribFwdmaxRLPFlows;
+
+#ifdef CBP7_EHRPD
+   /*Enhanced Multi-Flow Packet Application attributes */
+   kal_bool             PPPFreeAuthenticationSupport;
+   kal_bool            TwoRouteSupported;
+   kal_bool            ATNakDelaySupported;
+   kal_uint8    attribFwdFlowProtocolPDU[MAX_RLP_FLOW_SUPPORTED];
+   kal_uint8    attribFwdFlowDataUnit[MAX_RLP_FLOW_SUPPORTED];
+   kal_uint8   attribFwdRouteProtocolPDU[MAX_RLP_FLOW_SUPPORTED];
+   kal_bool     attribFwdFlowSimultaneousDeliveryOnBothRoutes[MAX_RLP_FLOW_SUPPORTED];
+   kal_bool     attribFwdFlowOutOfOrderDeliveryToRouteProtcol[MAX_RLP_FLOW_SUPPORTED];
+   kal_uint8     attribFwdFlowNakDelayTime[MAX_RLP_FLOW_SUPPORTED];
+   FwdFlowProtocolParametersAttribT attribFwdFlowProtocolParameters[MAX_RLP_FLOW_SUPPORTED];
+   FwdRouteProtocolParametersAttribT attribFwdRouteProtocolParameters[MAX_RLP_FLOW_SUPPORTED];
+#endif
+}PafConfigDataT;
+
+typedef struct {
+  PafConfigDataT ConfigAttribs;
+}PafRcpSessionConfigMsgT;
+
+typedef struct {
+  kal_uint16  TsmpClose;
+}SmpConfigurateAttr;
+
+typedef struct {
+   kal_bool       bMaxNoMonitorDistance;
+   kal_uint32     MaxNoMonitorDistance;
+   kal_bool       bSupportGAUPMaxNoMonitorDistance;
+   kal_uint8      SupportGAUPMaxNoMonitorDistance;
+   kal_bool       bHardwareSeparableFromSession;
+   kal_uint8      HardwareSeparableFromSession;
+   kal_bool       bReducedSubnetMaskOffset;
+   kal_uint8      ReducedSubnetMaskOffset;
+   kal_bool       bSupportSecondaryColorCode;
+   kal_uint8      SupportSecondaryColorCode;
+}AmpConfigurateAttrT;
+
+typedef enum
+{
+  ConnectionFailureReportEnable = 0xff,
+}AlmpAttribIdT;
+
+typedef struct
+{
+   kal_uint8 SubType;
+   AlmpAttribIdT AttriID;
+   kal_uint8        AlmpValue;
+}AlmpAttribT;
+
+typedef enum {
+   SSC_NOTALLOWED,
+   SSC_ALLOWED,
+   SSC_RESERVED
+} SmallSlotCycleAllowedT;
+
+typedef enum {
+   MP_UNSPECIFIED,
+   MP_1X_MONITOR,
+   MP_RESERVED
+} MaskPurposeT;
+
+typedef enum {
+   MT_1X_MONITOR,  /*Paging Mask for IS2000*/
+   MT_WIFI,               /*Paging Mask for WiFi technology */
+   MAX_MASKCOUNT
+} PagingMaskTypeT;
+
+typedef  struct {
+   kal_uint8 nValueId;
+   kal_bool bPreferredControlChannelCycleEnabled;
+   kal_uint16 nPreferredControlChannelCycle;
+   kal_uint8 nReserved;
+} PreferredControlChannelCycleAttribT;
+
+typedef  struct {
+   kal_uint8 nValueId;
+   kal_uint8 nSlotCycle1;
+   kal_uint8 nSlotCycle2;
+   kal_uint8 nSlotCycle3;
+   kal_uint8 nWakeCount1;
+   kal_uint8 nWakeCount2;
+   kal_uint8 nReserved;
+} SlottedModeAttribT;
+
+typedef  struct {
+   MaskPurposeT nMaskPurpose;
+   kal_uint16 nPrevMaskDuration;
+   kal_uint16 nMaskDuration;
+   kal_uint16 nPostMaskDuration;
+} MaskRecordT;
+
+typedef  struct {
+   kal_uint8 nValueId;
+   kal_uint8 nMaskCount;
+   MaskRecordT Mask[MAX_MASKCOUNT];
+} PagingMaskAttribT;
+
+typedef  struct
+{
+    kal_uint16 map;   /* Attrib map */
+    kal_uint8 nSubType;
+    kal_uint8 nTransactionId;
+    SmallSlotCycleAllowedT SmallSlotCycleAllowed;
+    kal_uint16 AccessHashingClassMask;
+    PreferredControlChannelCycleAttribT attribPrefCtrlChCycle;
+    SlottedModeAttribT attribSlottedMode;
+    PagingMaskAttribT attribPagingMask;
+} IdpAttribRecT;
+
+/*SearchParameters */
+typedef struct
+{
+   kal_uint8               ValueId;
+   kal_uint8               PilotIncrement;               /* 4 bits*/
+   kal_uint8               SearchWinActive;              /* 4 bits*/
+   kal_uint8               SearchWinNghbr;
+   kal_uint8               SearchWinRemaining;
+} RupAttrSearchParamsT;
+
+/* SetManagementChannelparameters*/
+typedef  struct
+{
+   kal_uint8                 ValueId;
+   kal_uint8                 PilotAdd;
+   kal_uint8                 PilotComp;
+   kal_uint8                 PilotDrop;
+   kal_uint8                 PilotDropTimer;
+   kal_uint8                 DynamicThresholds;
+   kal_uint8                 SoftSlope;
+   kal_int8                  AddIntercept;
+   kal_int8                  DropIntercept;
+   kal_uint8                 NghbrMaxAge;
+} RupAttrSetManageChanParamsT;
+
+/*SupportedChannel attribute record*/
+typedef struct
+{
+   kal_uint8                 ValueId;
+   kal_uint8                 BandClassCount;
+} RupAttrSuppChannRecT;
+
+typedef struct/*Attribute record*/
+{
+   kal_uint8                                    SubType;
+   kal_uint8                                    AttrSetManOverrideAllow;
+   kal_uint8                                    AttrRouteUpdateRadiusMult;
+   kal_int16                                    AttrRouteUpdateRadiusAdd;
+   kal_uint8                                    AttrSupportRouteUpdateEnh;
+   RupAttrSearchParamsT                     SearchParms;
+   RupAttrSetManageChanParamsT              SetManSameChParms;
+   RupAttrSetManageChanParamsT              SetManDiffChParms;
+   RupAttrSuppChannRecT                     SupChanRec;
+} RupCfgDataT;
+
+typedef  struct {
+   kal_uint8 map;   /* Attrib map */
+   kal_uint8 nSubType;
+   kal_uint8 nTransactionId;
+   kal_uint8 OverheadCachePeriod;
+   kal_uint8 RouteUpdateTriggerCodeListSize;
+} OmpAttribRecT;
+
+typedef enum
+{
+  /*eFACAuthKey = 0, 
+  eRACAuthKey,
+  eFACEncKey,
+  eRACEncKey,
+  eFPCAuthKey,*/
+  eRPCAuthKey=0,   /* current only use this one */
+ /* eFPCEncKey,
+  eRPCEncKey,*/
+  eKeysCount
+}ESubKey;
+
+typedef struct
+{
+  kal_uint8 Number[128];
+} SlcDHKepSKeyT;
+
+typedef struct
+{
+  kal_uint8 Number[20];
+} SlcDHKepKeyT;
+
+/*For DHKEY computing keys*/
+typedef  struct 
+{
+  SlcDHKepSKeyT SKey;    /* Session Key */
+  SlcDHKepKeyT Keys[eKeysCount];/* FACAuthKey, RACAuthKey, FACEncKey, RACEncKey, FPCAuthKey, RPCAuthKey, FPCEncKey, RPCEncKey */
+} SlcDHKEPKeysT;
+
+typedef struct
+{
+  kal_uint8 DHKepKeyLen;
+} SlcDHKepAttriT;
+
+/* this is the session data to save into personality */
+typedef struct
+{
+  SlcDHKEPKeysT   DHKepKeys;      /* DHKep SKey, FACAuthKey, RACAuthKey, FACEncKey, RACEncKey, FPCAuthKey, RPCAuthKey, FPCEncKey, RPCEncKey */ 
+  SlcDHKepAttriT    DHKepAttribute;    /* DHKep configuration attributes */
+} SlcKepInfoT;
+
+#define MAX_KEY_LENGTH_BYTES              128  //length of max key in bytes
+#define SECTORID_LENGTH_BYTES 16      /* 128 bits*/
+
+typedef struct{
+   kal_uint16 bits;
+   kal_uint8  value[MAX_KEY_LENGTH_BYTES];
+} AuthKeyT;
+
+typedef struct
+{
+   kal_uint8  SubType;
+   kal_uint16 ShaACAuthKeyLen;
+} RcpAuthAttriT;
+
+typedef struct
+{
+   kal_uint8         AuthCfgReqTranId;
+   kal_uint8         AuthHdrLen;
+   AuthKeyT      ACAuthKey;
+   RcpAuthAttriT AuthAttribute[2];
+   kal_uint8         SectorID[SECTORID_LENGTH_BYTES];
+} RcpAuthInfoT;
+
+typedef enum
+{
+    PHY_PROT= 0,
+    CCM_PROT,
+    ACM_PROT,
+    FTM_PROT,
+    RTM_PROT,
+    KEP_PROT,
+    AUT_PROT,
+    ENC_PROT,
+    SEC_PROT,
+    PCP_PROT,
+    ALMP_PROT,
+    INSP_PROT,
+    IDP_PROT,
+    CSP_PROT,
+    RUP_PROT,
+    OMP_PROT,
+    SMP_PROT,  /* 0x10 */
+    AMP_PROT,
+    SCP_PROT,
+    STR_PROT,
+    STR0_APP,
+    STR1_APP,
+    STR2_APP,
+    STR3_APP,
+    VSP_PROT = 0x19,
+    NUM_PROTOCOL_TYPE
+} ProtocolTypeE;
+
+/* 7.4.7.2.2 */
+typedef struct {
+  kal_uint8  numAppSubtypes;
+  kal_uint16 appSubtypes[NUM_APP_SUBTYPE_SUPPORTED];
+} DScpATSupportedAppSubtypesValueRecT;
+
+/* DSCP attributes */
+typedef struct {
+  kal_uint16 ProtocolType[NUM_PROTOCOL_TYPE];  /* must be first in all subtypes */
+  kal_uint16 SupportGAUPSessionConfigurationToken;
+  kal_uint16 PersonalityCount;
+  kal_uint16 SupportConfigurationLock;
+  DScpATSupportedAppSubtypesValueRecT ATSupAppSubtypes;
+} DScpAttributesDataT;
+
+//Personality total struct---------start
+
+/* 
+The stream1, stream2, stream3 personality depends on 
+the below parsubtype:
+ParCfgAccessInCfg.parSubType
+ParCfgServiceInCfg.parSubType
+*/
+typedef struct {
+    ParServiceConfigDataT    bRevSevConfdata;
+    PafRcpSessionConfigMsgT  bFwdSevConfdata;
+} MfpaServStrCfgData; //MFPA_ServiceStream
+
+typedef struct {
+    kal_bool                     bEHRPDNego;
+    ParServiceConfigDataT    bRevSevConfdata;  
+    PafRcpSessionConfigMsgT  bFwdSevConfdata;
+} EmfpaServStrCfgData; //EMFPA_ServiceStream
+
+typedef union
+{
+    MfpaServStrCfgData   bMfpaCfgData;
+    EmfpaServStrCfgData  bEmfpaCfgData;  
+} StreamConfigAttribEnT;
+
+/*
+The below struct matches the DSCPProtToCommit[];
+*/
+typedef struct {
+    kal_bool             pervalid;   //index of the personality valid
+    CcmInfoT             ccmcfgdata;
+    AcmAttributesT       acmcfgdata;
+    FtmCfgDataT          ftmcfgdata;
+    RtmCfgDataT          rtmcfgdata;  //rtm0, rtm3
+    StreamConfigAttribT  strcfgdata;
+    //kal_uint8            dummy;                     /* stream0 no configuration data */
+    StreamConfigAttribEnT str1cfgdata;  //stream1,
+    StreamConfigAttribEnT str2cfgdata;  //stream2
+    StreamConfigAttribEnT str3cfgdata;  //stream3
+    SmpConfigurateAttr   smpcfgdata;
+    AmpConfigurateAttrT  ampcfgdata;
+    AlmpAttribT          almpcfgdata;
+    IdpAttribRecT        idpcfgdata;
+    RupCfgDataT          rupcfgdata;
+    OmpAttribRecT        ompcfgdata;
+    SlcKepInfoT          kepcfgdata;
+    RcpAuthInfoT         authcfgdata;
+    kal_uint8            secsubtype[2];
+    DScpAttributesDataT  scpcfgdata;
+} DScpPersonality;
+//Personality total struct---------end
+
+#endif
diff --git a/mcu/interface/protocol/as_c2k/evdo/slcamp.h b/mcu/interface/protocol/as_c2k/evdo/slcamp.h
new file mode 100644
index 0000000..b9794d5
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/slcamp.h
@@ -0,0 +1,334 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _SLCAMP_H_
+#define _SLCAMP_H_ 1
+/*****************************************************************************
+* 
+* FILE NAME   : slcamp.h
+*
+* DESCRIPTION : This file includes the definition of AMP
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+#include "do_slcapi.h"
+#include "do_fcpapi.h"
+#include "do_dsaapi.h"
+#include "do_slcapi.h"
+#include "slc_nvram.h"
+
+#define UATIASSIGN_MESSAGEID_LEN                 8
+#define UATIASSIGN_MESSAGESEQ_LEN                8
+#define UATIASSIGN_RESERVED1_LEN                 7
+#define UATIASSIGN_SUBNETINCLUDED_LEN            1
+#define UATIASSIGN_UATISUBNETMASK_LEN            8
+#define UATIASSIGN_UATI104_LEN                   8
+#define UATIASSIGN_UATICOLORCODE_LEN             8
+#define UATIASSIGN_UATI1024_LEN                  8
+#define UATIASSIGN_UPPEROLDUATILEN_LEN           4
+#define UATIASSIGN_RESERVED2_LEN                 4
+
+#ifdef MTK_CBP
+ /* Max length of UpperOldUATILength in octects
+   *for UATIAssignment and UATIComplete messages. */
+ #define UPPER_OLD_UATI_MAX_LEN                  13
+#endif
+
+#define HARDWAREREQ_MESSAGEID_LEN                8
+#define HARDWAREREQ_TRANSID_LEN                  8
+
+#define UATIREQ_MESSAGEID_LEN                    8
+#define UATIREQ_TRANSID_LEN                      8
+
+#define UATICMP_MESSAGEID_LEN                    8
+#define UATICMP_TRANSID_LEN                      8 
+#define UATICMP_RESERVED_LEN                     4
+#define UATICMP_UPPEROLDUATI_LEN                 4
+
+#define HARDWARERSP_MESSAGEID_LEN                8
+#define HARDWARERSP_TRANSID_LEN                  8
+#define HARDWARERSP_IDTYPE_LEN                   24
+#define HARDWARERSP_HARDWAREID_LEN               8
+#define HARDWARERSP_ESN                          32
+
+#define CONFIGRSP_MESSAGEID_LEN                   8
+#define CONFIGRSP_TRANSID_LEN                     8
+#define CONFIGRSP_ATTR_LEN                        8
+
+#define CONFIGREQ_MESSAGEID_LEN                   8
+#define CONFIGREQ_TRANSID_LEN                     8
+#define CONFIGREQ_ATTR_LEN                        8
+#define DSA_FWD_MESSAGEID_LEN                     8
+
+#define ATTRIUPDATE_MESSAGEID_LEN                 8
+#define ATTRIUPDATE_TRANSID_LEN                   8
+#define ATTRIUPDATE_REC_LEN                       8
+#define ATTRIUPDATE_ATTRID_LEN                    8
+
+
+
+#define UATIRQ_INTERVAL                           (120*1000) 
+#define ADDR_INTERVAL                             (180*1000) /*in unit of ms*/ 
+#define ADDR_INTERVAL_IN_FRAMES                   (ADDR_INTERVAL*3/80)  
+
+#define AMP_DEFAULT_SUBTYPE                        0x0000
+
+#define UATI_COMPLETE_RESEND_DURATION             20000  /* 15s based on ALU test */
+#define UATI_RESEND_INTERVAL                      9000 /* to avoid multiple of 1X SCI-1 or SCI-2. */
+#define UATI_SEND_DELAY                           2500 /* to give time to OMP update after hash or IHO handling */
+#define UATI_SEND_DELAY_FOR_CHANNEL_HASH          5000 /* to give time to OMP update after hash or IHO handling */ 
+#define UATI_RESEND_INTERVAL_AFTER_HWDIDRSP       1000 /* To reduced lengthened timer if we've already gone this far. */
+
+typedef enum {
+  Amp_InUse,
+  Amp_InConfig,
+  Amp_Instance
+}AmpInstance;
+
+typedef enum {
+   HardwareID_MEID                  = 0x00ffff,
+   HardwareID_ESN                    = 0x010000,
+   HardwareID_NA                      = 0xffffff
+}HardwareIDType;
+
+typedef enum {
+   MaxNoMonitorDistance                       = 0xff,
+   HardwareSeparableFromSession               = 0xfe,
+   SupportGAUPMaxNoMonitorDistance            = 0xfd,
+   ReducedSubnetMaskOffset                    = 0xfc,
+   SupportSecondaryColorCodes                 = 0xfb,
+}AmpAttributeID;
+
+typedef enum {
+   AMP_UATI_REQ_MSG             = 0x00,
+   AMP_UATI_ASSIGN_MSG          = 0x01,            /*UATI Assignment Msg received from AN*/
+   AMP_UATI_CMP_MSG             = 0x02,            /*UATI Completion message*/
+   AMP_HARDWARE_REQ_MSG         = 0x03,            /*HardwareID Request received from AN*/ 
+   AMP_HARDWARE_RSP_MSG         = 0x04,            /*HardwareID Rsp message Type*/
+   AMP_CONFIG_REQ_MSG           = 0x50,
+   AMP_CONFIG_RSP_MSG           = 0x51,
+   AMP_ATTRI_UPDATE_REQ_MSG     = 0x52,
+   AMP_ATTRI_UPDATE_ACCEPT_MSG  = 0x53,
+   AMP_ATTRI_UPDATE_REJ_MSG     = 0x54,
+   ALL_AMP_MSG
+}AmpMessageTypeT;
+
+typedef enum {
+   INACTIVE_ST,
+   SETUP_ST,
+   OPEN_ST
+}AmpStateT;
+
+typedef enum {
+   AMP_UATIREQ_TRANS_ID = 0x10,
+   AMP_ATTRIUPDATE_ACCEPTREJ_TRANS_ID,
+   AMP_UATICOMPLETE_TRANS_ID,
+   AMP_HWIDRESPONSE_TRANS_ID,
+   AMP_TRANS_ID
+}AmpDsaTransIDT;
+
+typedef struct {
+   kal_uint8     MessageID;
+   kal_uint8     MessageSeq;
+   kal_bool      SubnetIncluded;
+   kal_uint8     UATISubnetMask;
+   kal_uint8     UATI104[13];
+   kal_uint8     UATIColorCode;
+   kal_uint8     UATI024[3];
+   kal_uint8     UpperOldUATILen;
+}AmpUATIAssignMsgT;
+
+typedef struct {
+  kal_uint8 UATIAssignMessageSeq;
+  kal_uint8 UATIColorCode;
+  kal_uint8 UATISubnetMask;
+  kal_uint8 UpperOldUATILen;
+  kal_uint8 UATI[16];
+  kal_uint8 ReducedSubnetMask[16];
+  kal_uint8 UATIAvailable;
+  
+  kal_uint8 OldUATIAssignMessageSeq;
+  kal_uint8 OldUATIColorCode;
+  kal_uint8 OldUATISubnetMask;
+  kal_uint8 OldUpperOldUATILen;
+  kal_uint8 OldUATI[16];
+  kal_uint8 OldReducedSubnetMask[16];
+  kal_uint8 OldUATIAvailable;
+
+  kal_uint8 UATIReqTransID;
+  kal_uint8 AttriTransId;
+  kal_uint8 InuseSubtype;
+  kal_uint32 SessionSeed;
+  kal_uint32 X0;
+  kal_uint32 Y0;
+
+  /***********above entries will be saved into session file ***********/
+  
+  AmpOmpSectorParamsT OmpSectorParam; 
+  kal_uint8 InconfigSubtype;
+  AmpStateT AmpState;
+  kal_bool bNetworkAcq;
+  kal_uint8 bConnCloseOrIdleHo;  /* 0: no event. 1:closeConnection. 2:IHO */
+  kal_bool bUATIReqSent;
+  kal_uint8 UATIReqSendCnt;
+  kal_uint8 UATIReqResendCnt;
+  kal_uint8 UATICompleteSendCnt;
+}AmpParamT;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+
+typedef struct {
+   AmpAttributeID  AttrID;
+   union  {
+      kal_uint8   AttrValue1;
+      kal_uint32  AttrValue2;
+   }AttrValue;
+}AmpAttributeRecord;
+
+typedef struct {
+   kal_uint8      MessageID;
+   kal_uint8      TransactionID;
+   AmpAttributeRecord AttrRecord[5];
+}AmpConfigurationRspMsgT;
+
+typedef struct {
+  AmpStateT AmpState;
+  kal_uint8 UATIColorCode;
+  kal_uint8 UATISubnetMask;
+  kal_uint8 UATI[16];
+  kal_uint8 OldUATI[16];
+  kal_uint8 ReducedSubnetMask[16];
+  kal_uint8 UpperOldUATILen;
+  kal_uint32 X0;
+  kal_uint32 Y0;
+} AmpSpyStatesT;
+
+typedef struct {
+  kal_uint8 NumRecvATIList;
+  ATITypeT RcvATIList[MAX_TRANS_ATI_NUMBER];
+  ATITypeT TransATI;
+} AmpSpyATIT;
+
+typedef enum {
+    REQ_SENT,
+    REQ_ACKED,
+    UATI_COMPLETE,
+    AMP_FAILING, 
+    NO_ACT
+}AmpSetupPhaseT;
+
+typedef enum {
+    RESET_FAIL,
+    SUBNET_CHANGE,
+    SYS_LOST,
+    ABORT_SETUP,
+    OTHER_REASON
+}AmpFailureT;
+
+typedef struct {
+  AmpFailureT  failReason;   
+}SmpAmpFailureMsgT;
+
+void AmpInit(void);
+void RunAmpStateMachine(kal_uint32 MsgId, void *MsgDataP);
+void ProcessAmpDsaFwdMsg(DsaFwdMsgT *MsgDataP);
+void ProcessAmpWaitUATIRspTimeout(void);
+void ProcessAmpAddrTimeout(void);
+void AmpGetSessionData(AmpSessionDataT *sessionData);
+void AmpRestoreSessionData(AmpSessionDataT *sessionData);
+kal_bool AmpSubnetChanged(void);
+void ProcessAmpUATICompleteTimeout(void);
+void ProcessAmpReSendUATIReqTimeOut(void);
+void AmpResetUATIAcquisition(void);
+void AmpSendIdpATIMsg(void);
+void AmpSessionNegoDoneInd(void);
+void AmpStopSessionUpdate(void);
+void AmpSaveRestorePriorSessionSeed(kal_uint8 op);
+void AmpSendDsaUATIReqMsg(void);
+#ifdef MTK_CBP
+void AmpSendDsarResetMsg(kal_bool emptyConfigReqsOnly);
+#else
+void AmpSendDsarResetMsg(void);
+#endif
+AmpStateT AmpGetState(void);
+void AmpDelDsarUatiReqWhenNewSession(void);
+
+/*****************************************************************************
+* $Log: slcamp.h $
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /*_SLCAMP_H_*/
+
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/slcdhkep.h b/mcu/interface/protocol/as_c2k/evdo/slcdhkep.h
new file mode 100644
index 0000000..7534814
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/slcdhkep.h
@@ -0,0 +1,159 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+
+FILE NAME:  slcdhkep.h
+
+DESCRIPTION:
+
+This file contains all the constants and apies 
+that are common for processing dhkep request/response messages.
+
+
+*****************************************************************************/
+#ifndef _SLC_DH_KEP_H
+#define _SLC_DH_KEP_H
+
+#include "pswdhapi.h"
+#include "do_dsaapi.h"
+#include "do_slapi.h"
+#include "slc_nvram.h"
+
+#define DHKEP_SIGNATURE_BYTES    20    /* the lenght of signature in bytes */
+#define T_KEPKeyResponse         30000
+#define T_KEPSigCompAT           3500
+#define AT_RAND_SIZE             4     /* this value has big influence to Key Computation time */
+
+typedef enum {
+  DHKEP_INCONFIG,
+  DHKEP_INUSE,
+  DHKEP_MAX_INSTANCE
+} DHKepInstanceT;
+
+/* Timer ID*/
+typedef enum 
+{
+  DHKEP_KEYCAL_TIMER_ID, /* for key calculation */
+  DHKEP_KEYCOMP_SIG_TIMER_ID, /* for T_KeyCompATTimer */
+  DHKEP_TIMER_NUM
+}DHKEPTimerId;
+
+/*States of DHKEP Module*/
+typedef enum
+{
+  DHKEP_INACTIVE_ST,         /* Inactive state */
+  DHKEP_IDLE_ST,
+  DHKEP_WAIT_ATKEY_RSP_ST,   /* Waiting for ATPubKey cal done */
+  DHKEP_WAIT_SKEY_RSP_ST,  /* Waiting for SKey cal is done */
+  DHKEP_WAIT_KEY_CAL_DONE_ST,
+  DHKEP_WAIT_START_ST,
+  DHKEP_WAIT_START_KEY_CAL_ST
+}DHKepStateE;
+
+
+typedef struct
+{
+  kal_uint8 Bytes;
+  kal_uint8 Number[128];
+} SlcDHKepConstantT;
+
+typedef struct 
+{  
+  kal_uint32 TimerId;
+} DHKepTimerExpiredMsgT;
+
+
+/* this is the state variables of DHKep protocol InConfig entity */
+typedef struct
+{ 
+  kal_uint64            TimeStampLong;                 /* TimeStamp form AN (ANKeyComplete Msg) */
+  kal_uint16            Nonce;                         /* Nonce from AN (ANKeyComplete Msg) */
+  kal_uint8              KeySignatureAN[SHA1_HASH_SIZE];/* Key signature form AN (ANKeyComplete Msg) */
+  SlcDHKepSKeyT      ATPubKeyInCfg;              /* AT Public Key */
+  SlcDHKepSKeyT      ANPubKeyInCfg;               /* AN Public Key */
+  kal_uint32           T_KEPKeyCompAN;                /* ExpireTime of AN send ANKeyComplete*/
+  kal_uint16           KeyLengthInBytes;              /* Length of SKey in bytes for InConfig instance */
+  kal_uint8             ATRand[AT_RAND_SIZE];          /* A Random Number between 1 and p-2, AT Private Key */
+  kal_uint8             DHKepTransId;                  /* DHKep TransactionID */
+  DHKepStateE DHKepState;                    /* the current state of DHKEP Module */
+  kal_bool              bANSendKeyReq;                 /* Is AN send KeyRequestMsg */
+  kal_bool              bANSendKeyComplete;        /* Is AN send KeyRequestMsg */
+  kal_bool              bCalcATPubKeyDone;           /* Is AT calculate AT public key done */
+  kal_bool              bCalcSKeyDone;                   /* Is AT calculate SKey done */
+}SlcDHKepStateInfoT;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*------------------------------------------------------------------------
+*  Defined Configuration attributes..
+*------------------------------------------------------------------------*/
+typedef enum
+{
+    /*Mssage ID for DH Key Exchange Protocol*/
+    DHKEP_KEY_REQ_MSG,    
+    DHKEP_KEY_RSP_MSG,
+    DHKEP_AN_KEY_COMPLETE_MSG,
+    DHKEP_AT_KEY_COMPLETE_MSG,
+
+    SEC_CONFIG_REQUEST_MESSAGE = 0x50,
+    SEC_CONFIG_RESPONSE_MESSAGE
+}SecMsgTypeE;
+
+/****************************************************************************
+   DHKep Functions...
+****************************************************************************/
+void KepInit(void);
+void DHKepHandleDsaFMsg(DsaFwdMsgT *MsgDataP);
+void DHKepHandleTmExpireMsg(DHKepTimerExpiredMsgT* pMsg);
+void DHKepRecvKeyCalRspMsg(DHKepCalRspMsgT* pData);
+void DHKepHandleEvtScpReCfgInd(void);
+void DHKepGenerateSecurityPacket(kal_uint8 *SecurityPacket, kal_uint8 *SecurityPacketLen);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/slcsmp.h b/mcu/interface/protocol/as_c2k/evdo/slcsmp.h
new file mode 100644
index 0000000..286b463
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/slcsmp.h
@@ -0,0 +1,226 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _SLCSMP_H_
+#define _SLCSMP_H_ 1
+/*****************************************************************************
+* 
+* FILE NAME   : slcsmp.h
+*
+* DESCRIPTION : This file includes the definition of SMP
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+#include "do_slcapi.h"
+#include "slcamp.h"
+#include "do_dsaapi.h"
+#include "do_clcapi.h"
+#include "slc_nvram.h"
+
+#define SESSION_CLOSE_REASON_MORE            8
+
+#define SESSION_CLOSE_MESSAGEID_LEN          8
+#define SESSION_CLOSE_REASON_LEN             8
+#define SESSION_MORE_INFO_LEN                8
+#define SESSION_TYPE_LENGTH_LEN              1
+#define SESSION_TYPE_LEN_1                   7
+#define SESSION_TYPE_LEN_2                   15
+#define SESSION_SUBTYPE_LEN                  16
+
+#define KEEPALIVE_MESSAGEID_LEN              8
+#define KEEPALIVE_TRANSID_LEN                8
+
+#define SMP_DEFAULT_TCLOSE                   0x0ca8
+#define SMP_DEFAULT_NSMPKEEPALIVE            3
+
+
+#define SMP_KEEPALIVE_TIMER_INTERVAL         12000
+
+#define SMP_DEFAULT_SUBTYPE                        0x0000
+
+typedef enum {
+  SMP_CONFIG_ATTR_ID   = 0xff,
+  ALL_SMP_ATTR
+}SmpAttributeID;
+
+typedef enum {
+  SMP_INUSE,
+  SMP_INCONFIG,
+  SMP_ALL
+}SmpInstance;
+
+typedef enum {
+  SMP_SESSION_CLOSE_MSG          = 0x01,
+  SMP_KEEPALIVE_REQ_MSG          = 0x02,
+  SMP_KEEPALIVE_RSP_MSG          = 0x03,
+  SMP_CONFIG_REQ_MSG             = 0x50,
+  SMP_CONFIG_RSP_MSG             = 0x51,
+}SmpMessageTypeT;
+
+typedef enum {
+  INACTIVE_STATE,                    /*InActive ST*/
+  SETUP_STATE,                       /*AMP Setup ST*/
+  OPEN_STATE,                        /*Open ST*/
+  CLOSING_STATE,
+  SMPSTATE
+} SmpState;
+
+typedef enum {
+   FSM_NOT_INITED,
+   FSM_OPEN_ERR,
+   FSM_READ_ERR,
+   FSM_WRITE_ERR,
+   FSM_NO_ERR,
+   FSM_ERR
+}FsmResult;
+
+typedef enum {
+   NEW_SESSION,
+   ALIVE_SESSION,
+   PRIOR_SESSION,
+   OPENED_SESSION
+}SessionStateT;
+
+
+typedef struct {
+  kal_uint8  MessageID;
+  kal_uint8  TransactionID;
+}SmpKeepAliveMsgT;
+
+typedef struct{
+  kal_uint8        Length;
+  SmpAttributeID  AttrID;
+  kal_uint16       AttrValue;
+}SmpAttributeRecord;
+
+typedef struct {
+  kal_uint8      MessageID;
+  kal_uint8      TransactionID;
+  SmpAttributeRecord AttrRecord;
+}SmpConfigurationRspMsgT;
+
+typedef struct {
+  kal_uint16                              InuseSubType;
+  kal_uint16                              InconfigSubType;
+  SmpState                         SmpState;
+  kal_uint8                              KeepAliveReqTransIdSent;
+  kal_uint8                               KeepAliveReqTransIdRcv;
+  kal_bool                                 MpsInProgress;
+  kal_uint8                                NKeepAlive; /*count parameter*/
+  kal_uint8                                NRemainKeepAliveTimes; /*The remaining system time*/
+  kal_uint8                                PriorSessionGAUP;
+  SessionStateT                   SesionState;
+}SmpParamT;
+
+typedef kal_bool (*pCallFunc)(void **retBuffer, void *storedBuffer);
+
+void SmpInit(void);
+void RunSmpStateMachine(kal_uint32 MsgId, void *MsgDataP);
+void ProcessSmpDsaFwdMsg(DsaFwdMsgT *MsgDataP);
+void ProcessSmpKeepAliveTransTimeout(void); 
+void SmpInitStructures( kal_uint16 SubType, kal_bool InUse);
+void SmpCommit(void);
+void SetSmpState(SmpState state);
+SmpState GetSmpState(void);
+void SetSessionState(SessionStateT state);
+SessionStateT GetSessionState(void);
+kal_uint8 GetSessionEhrpdFlag(void);
+void SmpDeclareSessionOpened(kal_bool informCssOnly, kal_bool newSession);
+void SmpSendSessionOpenStatus(kal_bool status);
+void SmpSetSessionNegoState(SessionStateT state);
+void SlcReportSessionNegoFailure(ClcErrCauseT cause);
+void SlcSendDsarDelMsg(kal_uint8 protocolType, kal_uint8 msgId, kal_bool reqTxStatus);
+void SlcSessionStatePrint(void);
+void smp_nvram_read_cnf_handle (local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr);
+void smp_nvram_write_cnf_handle(local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr);
+void SmpCheckSendingLocationNotificationMsg(kal_bool setFlag, kal_bool sendMsg);
+kal_bool SmpCheckSessionNegoHpsNeeded(void);
+
+/*****************************************************************************
+* $Log: slcsmp.h $
+*
+* 06 04 2018 tom.wu
+* [MOLY00328488] [Merlot][MT6761][O1][C2K][OM6M][MD3 Regression]EVDO system selecting time is longer than OPPO R11
+* 	
+* 	.
+*
+* 07 06 2017 sue.zhong
+* [MOLY00259241] [6293][C2K]Replace with KAL data type
+* Correct copyright file header
+*
+* 04 24 2017 tom.wu
+* [MOLY00231424] [6293][C2K] slc/clc common modify
+* 	
+* 	:merge MP6 CL to UMOLYA.TRUNK, 86452,86510,87001,87251,87574,87644
+*
+* 04 11 2017 tom.wu
+* [MOLY00241000] [BIANCO][MT6763][RDIT][PHONE][MD_Pre-Sanity][C2K][SIM1:CTC]fail to establish ppp link
+* 	
+* 	: session restore stream2/RTM personality set
+*
+* 02 21 2017 tom.wu
+* [MOLY00229931] [6293][C2K] merge session restore feature modify
+* 	
+* 	.
+*
+* 12 01 2016 sue.zhong
+* [MOLY00213777] [6293][C2K]Sync C2K code to UMOLYA TRUNK(W1648)
+* Update C2K source
+*
+* 11 09 2016 sue.zhong
+* [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
+* Update C2K PS code (2/2)
+*
+* 11 09 2016 sue.zhong
+* [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
+* Update C2K PS code (2/2)
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /*_SLCSMP_H_*/
+
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/slctimer.h b/mcu/interface/protocol/as_c2k/evdo/slctimer.h
new file mode 100644
index 0000000..bd310ca
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/slctimer.h
@@ -0,0 +1,130 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2007-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _SLCTIMER_H_
+#define _SLCTIMER_H_ 1
+/*****************************************************************************
+* 
+* FILE NAME   : slctimer.h
+*
+* DESCRIPTION : Timer Controller interface for the SLC Task
+*
+*****************************************************************************/
+#include "tasktimer.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+/*----------------------------------------------------------------------------
+ Global Typedefs
+----------------------------------------------------------------------------*/
+
+/* define the timer ID for timers in SLC, match following function */
+/*
+static const ProtocolTimerHandlerT protocolTimerHandlerTable[NUM_SLCTMRs] = {
+    GcpTimerHandler,
+    DScpGaupTimerHandler,
+    DScpReconfigCnfWaitTimerHandler,
+    DScpANInitStWaitReqTimerHandler,
+    ProcessAmpAddrTimeout,
+    ProcessAmpWaitUATIRspTimeout,
+    ProcessSmpKeepAliveTransTimeout,
+    ProcessAmpUATICompleteTimeout,
+    ProcessAmpReSendUATIReqTimeOut
+};
+
+*/
+typedef enum
+{
+  GCP_TRANSACTION_TICK_TIMER_ID     = 0,
+  DSCP_GAUP_TURNAROUND_TIMER_ID,
+  DSCP_RECONFIG_CNF_WAIT_TIMER_ID,
+  DSCP_AN_INIT_ST_WAIT_REQ_TIMER_ID,
+  AMP_ADDRESS_TIMER_ID,
+  AMP_WAIT_UATI_RSP_TIMER_ID,
+  SMP_KEEPALIVE_TRANS_TIMER_ID,
+  AMP_UATICOMPLETE_DURATION_TIMER_ID,
+  AMP_RESEND_UATIREQ_TIMER_ID,
+  NUM_SLCTMRs
+} slcTimerIdT;
+
+/* SLC timer TRACE code */
+typedef enum
+{
+  SCP_TIMER_START = 0,
+  SCP_TIMER_STOP,
+  SCP_TIMER_EXPIRE
+} SlcTimerTraceT;
+
+
+ 
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+/* the following Macro defines the API of SLC timer management as followings:
+     
+     void slcTimerInit(void);
+     void slcStartTimer(slcTimerIdT TimerId, kal_uint32 duration, kal_bool periodic, kal_uint16 prot);
+     void slcStopTimer(slcTimerIdT TimerId);
+     void slcStopAllProtocolTimers(void);
+     void slcStopProtProtocolTimers(kal_uint16 prot);
+     kal_bool slcIsTimerActive(slcTimerIdT TimerId);
+     void slcProcessTimerExpiredMsg(void* MsgP);
+ 
+  Note: slc is the Macro parameter, it corresponds to the "slc" in the names 
+        of each API function. Note: no ; is needed at the line end 
+ */
+
+TaskTimerAPIDef(slc)       
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /*_SLCTIMER_H_*/
+
+
diff --git a/mcu/interface/protocol/as_c2k/evdo/tasktimer.h b/mcu/interface/protocol/as_c2k/evdo/tasktimer.h
new file mode 100644
index 0000000..ca51d86
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/evdo/tasktimer.h
@@ -0,0 +1,215 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 2007-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef _TASKTIMER_H_
+#define _TASKTIMER_H_
+/*****************************************************************************
+* 
+* FILE NAME   : tasktimer.h
+*
+* DESCRIPTION : Timer Management interface 
+*
+*
+*****************************************************************************/
+#include "monapi.h"
+
+/* RTOS timer expire message */
+typedef struct
+{
+   kal_uint32 TimerId;    /* Expired timer Id */
+
+} TaskTimerExpiredMsgT;
+
+/*----------------------------------------------------------------------------
+ Timer Manager Global Defines 
+----------------------------------------------------------------------------*/
+/* protocol timer expiration handler function */
+typedef void (*ProtocolTimerHandlerT)(void);
+typedef void (*TaskTimerCallBackT)(kal_uint32 TimerId);
+
+typedef struct {
+   event_scheduler          *es;
+   eventid                  *pEventID;
+   kal_uint8                 numRtosTimers;         /* number of RTOS timer. max 255 RTOS timers */
+   kal_uint8                 *rtosTimerUserIdTable; /* RTOS timer user Id array */
+   kal_uint16                *rtosTimerUserProtType;/* protocol currently using the RTOS timer */
+   kal_bool                  *rtosTimerPeriodicAttr;/* RTOS timer periodic attribute array */ 
+   kal_uint32                *rtosTimerPeriodicDura;/* RTOS timer periodic attribute timer duration array */ 
+
+   kal_uint8                 numProtocolTimers;     /* number of protocol defined timer */
+   kal_uint8                 *protocolTimerStatusTable; /* protocol timer status array */
+   const ProtocolTimerHandlerT *protocolTimerHandlerTable; /* protocol timer handler pointer array */
+   TaskTimerCallBackT    TaskTimerCallBack;         /* RTOS timer callback function */
+   kal_uint32                ErrIdInvalidCallbackTimer; /*XXX_ERR_INVALID_CALLBACK_TIMER_ID*/ 
+   kal_uint32                ErrIdInsufficientTimer;    /*XXX_ERR_INSUFFICIENT_TIMER_ID*/
+} TaskTimerObjT;
+
+/*----------------------------------------------------------------------------
+  Timer Manager Global Function Prototypes
+----------------------------------------------------------------------------*/
+
+void InitTaskTimerObj(TaskTimerObjT         *taskTimerObj, 
+                      event_scheduler           *es,
+                      eventid                   *pEventId,
+                      kal_uint8                 numRtosTimers,  
+                      kal_uint8                 *rtosTimerUserIdTable,
+                      kal_uint16                *rtosTimerUserProtType,
+                      kal_bool                  *rtosTimerPeriodicAttr,
+                      kal_uint32                *rtosTimerPeriodicDura,
+                      kal_uint8                 numProtocolTimers,
+                      kal_uint8                 *protocolTimerStatusTable,
+                      const ProtocolTimerHandlerT *protocolTimerHandlerTable,
+                      kal_uint32                ErrIdInvalidCallbackTimer,
+                      kal_uint32                ErrIdInsufficientTimer,
+                      TaskTimerCallBackT    TaskTimerCallBack);
+
+void ProcessTaskTimerExpiredMsg(TaskTimerObjT *taskTimerObj, kal_uint32 Input_timerId);
+void StartProtocolTimer(TaskTimerObjT *taskTimerObj, kal_uint8 protocolTimerId, 
+                        kal_uint32 duration, kal_bool periodic, kal_uint16 prot);
+void StopProtocolTimer(TaskTimerObjT *taskTimerObj, kal_uint8 protocolTimerId);
+void StopAllProtocolTimers(TaskTimerObjT *taskTimerObj);
+void StopProtProtocolTimers(TaskTimerObjT *taskTimerObj, kal_uint16 prot);
+kal_bool IsProtocolTimerActive(TaskTimerObjT *taskTimerObj, kal_uint8 protocolTimerId);
+void TaskTimerCallBack(kal_uint32 TimerId, module_type _dest_mod_id, 
+                            kal_uint32 TimerExpireMsgId);
+/*----------------------------------------------------------------------------
+ Timer Manager Global Macros
+ 
+ Note: 1. when calling the following Macros, no ; is needed at the line end.
+       2. timer ID enum type shall use name of "xxxTimerIdT", where xxx is the
+          task name which muse be same as the "taskName" parameter of following
+          Macros.
+       3. xxxTimerInit() function shall be called at task initialzation point.
+       4. xxxProcessTimerExpiredMsg(void* MsgP) function shall be called as
+          the XXX_TIMER_EXPIRED_MSG handler in task message loop.
+       5. before calling , it shall first define and initiate the protocol timer
+          handler table as:
+
+   static const ProtocolTimerHandlerT protocolTimerHandlerTable[NUM_SLCTMRs] = {
+      xxxtimerHandler,
+      ...
+   }
+   the order of the functions in the table shall correspond to the time ID enum.
+ ----------------------------------------------------------------------------*/
+#define TaskTimerObjDef(taskName, numRtosTimers, numProtocolTimers, \
+                        ModuleId, MailboxId, TimerExpireMsgId, es, \
+                        ErrIdInvalidCallbackTimer, ErrIdInsufficientTimer) \
+     static TaskTimerObjT         taskTimerObj; \
+     static eventid                   pEventId[numRtosTimers]; \
+     static kal_uint8                 rtosTimerUserIdTable[numRtosTimers]; \
+     static kal_uint16                rtosTimerUserProtType[numRtosTimers]; \
+     static kal_bool                  rtosTimerPeriodicAttr[numRtosTimers]; \
+     static kal_uint32                rtosTimerPeriodicDura[numRtosTimers]; \
+     static kal_uint8                 protocolTimerStatusTable[numProtocolTimers]; \
+     \
+     void taskName##TaskTimerCallBack(kal_uint32 TimerId) \
+     { \
+        ProcessTaskTimerExpiredMsg(&taskTimerObj, TimerId); \
+     } \
+     \
+     void taskName##TimerInit(void) \
+     { \
+        InitTaskTimerObj( &taskTimerObj, \
+                           es, \
+                           pEventId, \
+                           numRtosTimers, \
+                           rtosTimerUserIdTable, \
+                           rtosTimerUserProtType, \
+                           rtosTimerPeriodicAttr, \
+                           rtosTimerPeriodicDura, \
+                           numProtocolTimers, \
+                           protocolTimerStatusTable, \
+                           protocolTimerHandlerTable, \
+                           ErrIdInvalidCallbackTimer, \
+                           ErrIdInsufficientTimer, \
+                           taskName##TaskTimerCallBack); \
+     } \
+     \
+     void taskName##StartTimer(taskName##TimerIdT TimerId, kal_uint32 duration, kal_bool periodic, kal_uint16 prot) \
+     { \
+        StartProtocolTimer(&taskTimerObj, TimerId, duration, periodic, prot); \
+     } \
+     \
+     void taskName##StopTimer(taskName##TimerIdT TimerId) \
+     { \
+        StopProtocolTimer(&taskTimerObj, TimerId); \
+     } \
+     \
+     void taskName##StopAllProtocolTimers(void) \
+     { \
+        StopAllProtocolTimers(&taskTimerObj); \
+     } \
+     \
+     void taskName##StopProtProtocolTimers(kal_uint16 prot) \
+     { \
+        StopProtProtocolTimers(&taskTimerObj, prot); \
+     } \
+     \
+     kal_bool taskName##IsTimerActive(taskName##TimerIdT TimerId) \
+     { \
+       return IsProtocolTimerActive(&taskTimerObj, TimerId); \
+     } \
+     \
+     void taskName##ProcessTimerExpiredMsg(kal_uint32 TimerId) \
+     { \
+        ProcessTaskTimerExpiredMsg(&taskTimerObj, TimerId); \
+     }
+
+/*----------------------------------------------------------------------------*/
+#define TaskTimerAPIDef(taskName) \
+     \
+     void taskName##TaskTimerCallBack(kal_uint32 TimerId); \
+     void taskName##TimerInit(void); \
+     void taskName##StartTimer(taskName##TimerIdT TimerId, kal_uint32 duration, kal_bool periodic, kal_uint16 prot); \
+     void taskName##StopTimer(taskName##TimerIdT TimerId); \
+     void taskName##StopAllProtocolTimers(void); \
+     void taskName##StopProtProtocolTimers(kal_uint16 prot); \
+     kal_bool taskName##IsTimerActive(taskName##TimerIdT TimerId); \
+     void taskName##ProcessTimerExpiredMsg(kal_uint32 TimerId);
+
+/*----------------------------------------------------------------------------*/
+
+#endif /*_TASKTIMER_H_*/
+
+
+