[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/l2_c2k/evdo/fcpdefs.h b/mcu/interface/protocol/l2_c2k/evdo/fcpdefs.h
new file mode 100644
index 0000000..083fe89
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/fcpdefs.h
@@ -0,0 +1,482 @@
+/*****************************************************************************
+*  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) 2003-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef FCPDEFS_H
+#define FCPDEFS_H
+/*****************************************************************************
+ 
+  FILE NAME:  fcpdefs.h
+
+  DESCRIPTION:
+
+    This file contains all the 'hidden' constants and typedefs 
+    that are internal to the FCP task & all its associated modules..
+
+
+*****************************************************************************/
+
+#include "sysapi.h"
+#include "cpbuf.h"
+#include "do_fcpapi.h"
+#include "do_clcapi.h"
+#include "do_dsaapi.h"
+#include "slc_nvram.h"
+
+#define   PACKET_REC_VALID_SHIFT     31 /* for DRC module to use...*/
+#define   DRC0_CT_ISSUE
+#define   HWD_ST_SYMB_NUM_MASK            0x000007FF  
+
+#ifdef FCP_FTM_DRC_MIPS_BY_PASS
+     #undef FCP_FTM_DRC_MIPS_BY_PASS
+#endif
+
+#define  DRC_SLMS_ON
+
+#ifdef SYS_OPTION_DRC_DEBUG_ACTIVE
+
+            /* SLMS updating functions: it might be always ON later..*/
+    #define  DRC_IMP_SPY_ON 
+    #define  DRC_ALG_DBG_SPY_ON 
+    #define  DEBUG_SLMS              
+ 
+#endif /* end of SYS_OPTION_DRC_DEBUG_ACTIVE*/
+/*------------------------------------------------------------------------
+* global vaiables..
+*------------------------------------------------------------------------*/
+typedef enum {
+
+ CCM_SUP_TIMER_ID,
+
+}FcpTimerId;
+/*------------------------------------------------------------------------
+* global Typedefs..
+*------------------------------------------------------------------------*/
+typedef struct {
+  kal_bool formatB; // [0==FormatA; 1==FormatB]
+  kal_bool encrypted;
+}MacPktInfoT;
+
+typedef struct FwdLinkPkt
+{
+   CpBufferT*  CpBufPtr;
+   
+   kal_uint16      PktLen;
+   kal_uint16      PktStartOffset;
+   kal_uint16      SysTimeInSlots;
+   kal_uint8       endPoint;
+
+   /* Mac hdr information */
+   MacPktInfoT macHdrInfo;
+   kal_uint8      FwdPhyslots;
+   kal_uint8      FwdMacPkts;
+   kal_uint8      FwdPayLoadSize;
+   DoChanTypeT   FwdPhyChanType;
+}FwdLinkPktT;
+
+typedef struct FwdLinkPktBufList
+{
+    FwdLinkPktT  *head;
+    FwdLinkPktT  *tail;
+    kal_uint32 count;
+}FwdLinkPktBufListT;
+
+typedef struct
+{
+    kal_uint32  PacketRec;
+    kal_uint16   PacketPayload[6];  /* part of payload */ 
+} DmaMdmRxSlotInfoT;
+
+typedef struct
+{
+    kal_uint32  DmaRxStatus;
+    DmaMdmRxSlotInfoT   PacketInfo[RX_MDM_INT_INTERVAL];
+} DmaMdmRxInfoT;
+
+typedef struct
+{
+    /* temp structure, need work with FTAP */
+    kal_uint16 FixedTxDrcValue;    
+    kal_uint16 DrcMode;      
+} FtmFtapDrcAckConfigT;
+
+/*  DRC ETS message */
+typedef struct
+{
+  kal_uint16    DesigDRC;
+  kal_uint16    MaxDRCLim;
+  kal_uint16    Data_3;
+  kal_uint16    Data_4;
+
+} FtmDRCEtsMsgT;
+
+typedef enum
+{
+   RXSD_FIR_AUTO,
+   RXSD_FIR_DEFAULT,
+   RXSD_FIR_POKE_HW
+}RxsdFirTapTestModeT;
+typedef enum
+{
+   RMC_MMSE_MRC_AUTO,
+   RMC_FORCE_MRC
+}RmcMmseMrcT;
+
+
+typedef enum
+{
+    ETS_FIX_TXDRC_SET     = 0,
+    ETS_FIX_TXDRC_DISABLE = 1
+}FcpTestFixDrcValModeT;
+
+typedef struct
+{
+    FcpTestFixDrcValModeT  EtsFixDrcValMode;
+    kal_uint8                  EtsFixDrcVal;
+} FcpTestFixDrcValMsgT;
+
+typedef enum
+{
+    FCP_STAT_PERIOD_128_FRAME     = 128,
+    FCP_STAT_PERIOD_256_FRAME     = 256,
+    FCP_STAT_PERIOD_512_FRAME     = 512,
+    FCP_STAT_PERIOD_1024_FRAME    = 1024
+}FcpPerfStatPeriodTypeT;
+
+typedef struct
+{
+    FcpPerfStatPeriodTypeT     EtsStatPeriod;
+} FcpSetPerfStatPeriodMsgT;
+
+typedef enum 
+{
+    BATI_MATCH,
+    BATI_MISMATCH,
+    NON_BATI_MATCH,
+    NON_BATI_MISMATCH
+}ATIMatchStatus;
+
+/* FTM states */
+typedef  enum
+{
+    Inactive = 0,
+    Variable_Rate,
+    Fixed_Rate
+}FTMStateTypeT;
+
+typedef struct
+{
+    kal_uint8       DRCLength; /* real DRCLength = 2^DRCLength */
+    kal_uint8       DRCChannelGain;
+    kal_uint8       ACKChannelGain;
+    kal_uint8       DRCCover;
+    kal_uint8       FixedDRCRate;
+}FTMParametersT;
+
+
+/********************************************************
+ *    Enhanced FTM SC
+ ********************************************************/
+
+typedef struct
+{
+    kal_uint8        SubType; /* Default*/
+    kal_uint8        DRCGating;/*default*/
+    kal_uint8        DRCLockLength; /* Default*/
+    kal_uint8        SofterHandoffDelay; /* default:non public */
+    kal_uint8        SoftHandoffDelay;/* default: non public */ 
+    kal_uint16       NullRateDRC384Enable;/* Default Only*/
+    kal_uint16       DRCLockPeriod;/* Default only*/   
+    kal_uint8        MultiUserPacketsEnabled;
+    kal_uint8        DSCLength;
+    kal_uint8        DeltaACKChannelGainMUP;
+    kal_uint8        ShortPacketsEnableThresh;
+    kal_uint8        SingleUserMultiplexPacketsEnabled;
+    kal_uint8        DRCSupervisionTimer;
+    kal_uint8        MinimumContinuationSpan;
+    kal_uint8        DSCChannelGainBoost;
+    kal_uint8        DSCBoostLength;
+    kal_uint8        DRCChannelGainBoost;
+    kal_uint8        DRCOffset[15];/* DRCOffset:1 - 14, 0 is invalid */
+} FTMAttributeT;
+
+typedef struct
+{
+    FTMAttributeT       FTMAttributes;
+    FTMParametersT      FTMParameter;
+}FTMPersonalityInfoT;
+
+
+#define  FTMDataTypeT       FTMPersonalityInfoT
+
+
+/* AttributeId */
+typedef enum 
+{
+    FTM_DEFAULT_DRC_GATING_ATTRIBID = 0xff,
+    FTM_DEFAULT_NULL_RATE_ATTRIBID = 0xfd,
+    FTM_DEFAULT_DRC_LOCK_ATTRIBID=0x01,
+    FTM_DEFAULT_HANDOFF_DELAY_ATTRIBID=0x00
+} FtmDefaultAttribIdT; 
+
+typedef enum
+{
+    FTM_ENHANCE_DRC_GATING_ATTRIBID=0xff,
+    FTM_ENHANCE_DRC_LOCK_LEN_ATTRIBID=0xfe,
+    FTM_ENHANCE_MUL_USR_PKT_EN_ATTRIBID=0xfd,
+    FTM_ENHANCE_DSC_LEN_ATTRIBID=0xfc,
+    FTM_ENHANCE_DELTA_ACK_CHAN_GAIN_MUP_ATTRIBID=0xfb,
+    FTM_ENHANCE_SHORT_PKT_EN_THRESH_ATTRIBID=0xfa,
+    FTM_ENHANCE_SINGLE_USR_MUL_PKT_EN_ATTRIBID=0xf9,
+    FTM_ENHANCE_DRC_SUPERVISION_TIMER_ATTRIBID=0xf8,
+    FTM_ENHANCE_MIN_CON_TIMER_ATTRIBID=0xf7,
+    FTM_ENHANCE_DSC_CH_GAIN_BOOST_ATTRIBID=0xf6,
+    FTM_ENHANCE_DSC_BOOST_LEN_ATTRIBID=0xf5,
+    FTM_ENHANCE_DRC_CH_GAIN_BOOST_ATTRIBID=0xf4,
+    FTM_ENHANCE_DRC_BOOST_LEN_ATTRIBID=0xf3,
+ 
+    FTM_ENHANCE_HANDOFF_DELAY_ATTRIBID=0x00,
+    FTM_ENHANCE_DRC_TRANS_OFFSET_ATTRIBID=0x01   
+}FtmEnhanceAttribIdT;
+
+typedef enum
+{
+    FTM_DRC_GATING_CONTINUOUS=0,
+    FTM_DRC_GATING_DISCONTINUOUS,
+} FtmDrcGatingT;
+
+typedef enum
+{
+    FTM_DRC_LOCK_LENGHT_8=0,
+    FTM_DRC_LOCK_LENGHT_16,
+    FTM_DRC_LOCK_LENGHT_32,
+    FTM_DRC_LOCK_LENGHT_64
+} FtmDrcLockLengthT;
+
+typedef enum
+{
+    FTM_SHORT_PKT_EN_THRESH_1024,
+    FTM_SHORT_PKT_EN_THRESH_2048,
+    FTM_SHORT_PKT_EN_THRESH_3072,
+    FTM_SHORT_PKT_EN_THRESH_4096
+}FtmShortPacketsEnabledThreshT;
+
+
+#define FWDLINKPKTT_SIZE sizeof(FwdLinkPktT)
+#define NUM_MAC_FWDLIST_NODES 100 
+#define NUM_PCP_FWDLIST_NODES 100 
+#define NUM_CRCPASS_NUM  100 
+
+
+/*------------------------------------------------------------------------
+* global defines.. 
+*------------------------------------------------------------------------*/
+#define DMA_RX_PTR_BASE 0x0B450000
+#define DMA_RX_PRM_BASE 0x0B450000
+
+#define CRC_VALID  0x00000008
+#define VALID_PKT 0x80000000
+#define GOOD_PKT  0x40000000
+#define MAC_INDEX 0x1FC00000
+#define DMA_LENGTH 0x00038000
+#define CRC_TYPE   0x00004000
+
+#define SYNC_CAPSULE_BIT 0x80
+#define FIRST_PACKET 0x40
+#define LAST_PACKET 0x20
+#define CCM_OFFSET 0x18
+#define SLP_STATE_CAPSULE_DONE 0x04
+
+#define SEC_LAYER_FORMAT_BIT 0x80
+#define CONN_LAYER_FORMAT_BIT 0x40
+#define ATI_MASK_2BITS 0x03
+
+#define TRAFFIC_CH_CONNECTION_LAYER_FORMAT_BIT  0x80
+#define TRAFFIC_CH_MAC_LAYER_FORMAT_BIT         0x40
+#define TRAFFIC_CH_MAC_LAYER_PHY2_TRAILER       0xC0
+#define PACKET_REC_MPA_SPY_SIZE 32
+#define DRC_SLOT_INVALID                        0
+#define DRC_SLOT_CCH_DATA                       2
+#define DRC_SLOT_SINGLE_USER_SIMPLEX            1
+#define DRC_SLOT_SINGLE_USER_MULPLEX            3
+#define DRC_SLOT_MULTI_USER                     5
+
+#define MEM_LEAK_CHK_ALLOC  { \
+     extern kal_int32 FwdPktListBufferCnt; \
+     FwdPktListBufferCnt++; \
+     dhl_print ("FwdListBufferCnt: %x", FwdPktListBufferCnt); \
+    }\
+
+
+#define MEM_LEAK_CHK_FREE  { \
+     extern kal_int32 FwdPktListBufferCnt; \
+     FwdPktListBufferCnt--; \
+     dhl_print ("FwdListBufferCnt: %x", FwdPktListBufferCnt); \
+    }\
+
+#define CPBUF_LEAK_CHK_ALLOC( Buf)  { \
+     dhl_print ("CpBuf:RefCnt:%x Addr: %x", Buf->refcount, Buf->dataPtr); \
+    }\
+
+
+#define CPBUF_LEAK_CHK_FREE( Buf)  { \
+     dhl_print ("CpBuf:RefCnt:%x Addr:%x", Buf->refcount, Buf->dataPtr); \
+    }\
+
+
+#define PRINT_MAC_PKT_INFO { \
+   MonPrintf("NewPktInfo: Len:%x", length); \
+   MonPrintf("NewPktInfo: FormatB:%x",newPkt->macHdrInfo.formatB); \
+   MonPrintf("NewPktInfo: Ency:%x",newPkt->macHdrInfo.encrypted); \
+   MonPrintf("NewPktInfo: PktStartOffset:%x",newPkt->PktStartOffset); \
+} \
+
+/**********************************************************/
+/* These MACROs are used to parse the Fwd MAC Packets     */
+/* Subtype 2.                                             */
+/**********************************************************/
+#define SU_SIMPLEX_B     0xC0
+#define SU_SIMPLEX_A     0x40
+#define SU_MULTIPLEX     0x80
+#define MULT_USR         0x00
+
+/*------------------------------------------------------------------------
+ * Globle Declarations
+ *------------------------------------------------------------------------*/
+
+typedef struct
+{
+    kal_uint16 timeStampInSlot;
+    kal_uint8  UserMacIdx;
+    kal_uint8 control_2;
+    kal_uint32 packetRec[PACKET_REC_MPA_SPY_SIZE];
+    kal_uint16 Drc_C2i[PACKET_REC_MPA_SPY_SIZE]; 
+} PacketRecSpyT;
+
+typedef struct
+{
+    kal_bool   ValidPack;      
+    kal_bool   GoodPack;     
+    kal_bool   BCMCSPack;      
+    kal_uint16 Macid;        
+    kal_uint8  DRCVal;      
+    kal_uint8  EPSize;       
+    kal_uint8  RateDet;    
+    kal_uint8  SlotCount;    
+    kal_uint8  TimeStamp;
+    kal_bool   CRCStatus;          
+    kal_uint8  ReserveBit; 
+    kal_bool   RecStart; 
+    kal_bool   PacketComplete;
+    kal_bool   ControlChan; 
+    kal_uint16 PacketC2I;    
+} FcpPacketRecordDataT;
+
+typedef struct
+{
+    FTMStateTypeT   State;    
+} FcpFtmStateT;
+
+
+/******************************************************************************
+    Global
+******************************************************************************/
+typedef enum
+{
+    FTM_FIXMODE_ENABLE_MSG,
+    FTM_FIXMODE_XOFF_MSG,
+    FTM_SCP_CONFIG_REQ_MSG = 0x50,
+    FTM_SCP_CONFIG_RSP_MSG,
+    FTM_ATTRI_UPDATE_REQ_MSG     = 0x52,
+    FTM_ATTRI_UPDATE_ACCEPT_MSG  = 0x53,
+    FTM_ATTRI_UPDATE_REJ_MSG     = 0x54
+}FtmOtaMsgIdT;
+
+
+/******************************************************************************
+    Prototypes
+******************************************************************************/
+
+extern void    CcmInitialize( void );
+extern void    CcmDeActivate( void );
+extern void    CcmActivate( void );
+extern void    PcpClearCLPPktList(void);
+extern void    PcpInitialize(void);
+extern void    FtmDeActivate( void );
+extern void    FtmActivate( void );
+extern void    FtmFtapDrcAckConfig(FtmFtapDrcAckConfigT *CtrlPtr );
+
+extern void    FtmInitialize( void );
+extern void    FTMStateSet(FTMStateTypeT  State);
+extern FTMStateTypeT FTMStateGet(void);
+extern void    FTMEventProc(msg_type MsgId, ilm_struct *current_ilm);
+extern void    DRCFixedTxRateSet(FtmFtapDrcAckConfigT*   FtapMsgP);
+extern void    FcpDRCSlotAttrSet(kal_uint32   AttrValue);
+extern void    DRCEtsMsgProc(FtmDRCEtsMsgT   *MsgP);
+extern void    FcpFixDrcVal(FcpTestFixDrcValMsgT *MsgDataP);
+#if defined (MTK_DEV_ENGINEER_MODE)
+extern void    FixDrcModeProcess(kal_bool Start);
+#endif
+extern kal_uint8*  FtmAttributeRequest(kal_bool DefaultMac);
+extern void    DRCFTCAttributesGet(void);
+extern void    DRCParameterReinstate(void);
+extern void    CcmSupTimerReset(void);
+extern void    CcmHandleEltCcmSupervisionExpiredCmdMsg(EltCcmSupervisionExpiredCmdMsgT *MsgDataP);
+extern void    CcmSupervisionExpiredInAccessState(void);
+
+extern void    FwdLinkPktBufInit( FwdLinkPktT *rec );
+extern void    FwdLinkPktBufPoolInit(void);
+extern FwdLinkPktT* FwdLinkPktBufGet(void);
+extern void    FwdLinkPktBufFree( FwdLinkPktT *rec );
+
+extern void    StreamInitialize(void);
+extern void    ProcessRcpStreamConfigMsg(void *MsgDataP);
+extern kal_uint16  FcpFindAppTypeByStreamNum(kal_uint8 StreamNum);
+extern void    CcmKeepAliveCfgMsg(CcmSmpKeepAliveCfgT* MsgDataPtr);
+extern void    CcmSessionOpened(void);
+extern void    CcmSessionClosed(void);
+extern void    FtmProcessOtaFwdSigMsg(DsaFwdMsgT *MsgDataP);
+extern void    DsafProcessOtaFwdMsg(DsaFwdMsgT *MsgDataP);
+extern kal_uint8   FcpAcquireMacIndex(void);
+extern kal_uint16  FcpAcquirePER(void);
+
+#endif