[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_*/
+
+
+