[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
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_*/
+
+