[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rtap.h b/mcu/interface/protocol/l2_c2k/evdo/rtap.h
new file mode 100644
index 0000000..ea9187f
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rtap.h
@@ -0,0 +1,354 @@
+/*****************************************************************************
+*  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  _RTAP_H_
+#define  _RTAP_H_
+/*****************************************************************************
+*
+* FILE NAME   :   rtap.h
+*
+* DESCRIPTION :   This file contains function prototypes and other definitions
+*                 for the Reverse TAP application
+*
+* HISTORY     :
+*     See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "do_dsaapi.h"
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+#define  RTAP_MAX_PACKET_NUM      16
+#define  RTAP_MAX_RATE_INDEX      5
+#define  RTAP_MAX_PAYLOAD_INDEX   12
+#define  MAX_SUB_STREAM_NUM       4
+
+extern  kal_uint8  RtapTestMode;
+/*----------------------------------------------------------------------------
+  structure definitions
+----------------------------------------------------------------------------*/
+typedef enum
+{
+    RTAP_START_TIMERID,
+    RTAP_CFG_TIMERID = RTAP_START_TIMERID,
+    RTAP_STAT_TIMERID,
+    RTAP_MAX_TIMERID
+} RtapTimerEnumT;
+
+typedef enum
+{
+    RCP_RTAP_INIT_SUBTYPE_ERR,
+    RCP_RTAP_GRANT_ERR,
+    RCP_RTAP_RATEINDEX_ERR,
+    RCP_RTAP_PAYLOADINDEX_ERR,
+    RCP_RTAP_OTAMSG_DEC_ERR,
+    RCP_RTAP_LINKFLOWNUM_ERR,
+    RCP_RTAP_CBBUF_ERR
+} RtapErrEnumT;
+
+typedef enum
+{
+    RTAP_INACTIVE,
+    RTAP_IDLE,
+    RTAP_CONNECTED,
+} RtapStatEnumT;
+
+typedef enum
+{
+    PARAMETER_ASSIGNMENT_MSG_ID=0x80,
+    PARAMETER_COMPLETE_MSG_ID,
+    STATS_CLEAR_REQ_MSG_ID,
+    STATS_CLEAR_RSP_MSG_ID,
+    STATS_GET_REQ_MSG_ID,
+    STATS_GET_RSP_MSG_ID
+} RtapMsgIdEnumT;
+
+typedef enum
+{
+    TEST_PKT_ENABLE_ID,
+    PKT_RATE_MODE_ID,
+    PKT_PAYLOAD_SIZE_MODE_ID,
+    EN_ACCESS_CHAN_RATE_MODE_ID,
+    BURST_PERIOD_MODE_ID,
+    BURST_SIZE_MODE_ID
+} RtapRecIdEnumT;
+
+typedef struct RtapPkt
+{
+    kal_bool               bSent;
+    CpBufferT         *pPktBuf;    /*The payload buffer*/
+    struct RtapPkt    *pNext;
+} RtapPktT;
+
+typedef struct
+{
+    kal_uint8           num;     /*number of records*/
+    RtapPktT*       pHead;
+    RtapPktT*       pCurrent;
+    RtapPktT*       pTail;
+} RtapPktListT;
+
+
+/*---  Test Parameters Structures---*/
+typedef struct
+{
+    kal_uint8      Upper7;
+    kal_uint32     Lower32;
+} SysSubFrameTimeT;/*in unit of subframes*/
+
+typedef struct
+{
+    kal_uint8              LinkFlowID;
+    kal_uint8              revMacId;
+    kal_uint8              PayLoadIndex;
+    kal_uint32             Sequence[RTAP_MAX_PAYLOAD_INDEX+1];
+    SysSubFrameTimeT  RevSysTime;
+} RtapPL_2InfoT;
+
+typedef union
+{
+    kal_uint16          Seq_Num[RTAP_MAX_RATE_INDEX+1]; /*12 bits*/
+    RtapPL_2InfoT   PL_2Info[MAX_SUB_STREAM_NUM];/*There are 2^8 substream_number at most*/
+} RtapTestInfoT;
+
+typedef struct
+{
+    RtapTestInfoT  TestParm;
+    kal_uint8          LinkNum;
+    kal_uint16         SubType;
+    kal_uint8          RevMacId;
+    kal_uint16         ProtocolType;   /*Store stream type for sending Rev OTA message*/
+    kal_uint8          ConnFlag; /*used to record open connection reason(ParameterAssignment,StatClearRequest,StatGetRequest)*/
+    kal_uint8          Index;      /*RateIndex*/
+    kal_uint8          TestPktOverflowBit;
+    kal_uint32         BurstSize;  /*used to record remained BurstSize*/
+    CpBufferT*     pPktBuf;    /*used to put Fill Packet or PL_2 Packet*/
+    kal_uint16         PktOffset;
+    kal_uint16         PktLen;
+} RtapTestParmT;
+
+/*----  Configuration Parameters Structures ----*/
+typedef struct
+{
+   kal_uint8     LinkNum;
+   kal_uint8     LinkFlowId[MAX_SUB_STREAM_NUM];
+   kal_uint16    BurstPeriod[MAX_SUB_STREAM_NUM];
+   kal_uint16    BurstSize[MAX_SUB_STREAM_NUM];
+} BurstInfoRec;
+
+/* RTAP Cfg Parameters*/
+typedef struct
+{
+   kal_bool        bInCfg;
+   kal_uint16      SubType;
+   kal_bool        bTestPktMode;
+   kal_uint8       TestPktPersistence;
+   kal_bool        bCfgPktRateMode;
+   kal_bool        bCfgPktPayloadSizeMode;
+   kal_bool        bCfgEnACRateMode;
+   kal_bool        bCfgBurstMode;
+   BurstInfoRec  BurstInfo;
+   kal_uint8       ParmAssigTranId;     /*mod 256, 0xff means NULL*/
+   kal_uint8       StatsClearTranId;    /*mod 256, 0xff means NULL*/
+   kal_uint8       StatsReqTranId;      /*mod 256, 0xff means NULL*/
+} RtapParmsT;
+
+typedef struct
+{
+    kal_uint8    MacFlowId;
+    kal_uint8    LinkFlowId;
+} LinkFlowInfoT;
+
+/*RETAPParameterAssignment message info*/
+typedef struct
+{
+    kal_uint8      TransID;
+    kal_bool       TestPktEnableInc;
+    kal_uint8      TestPktPersistence;
+    kal_bool       PktRateModeInc;
+    kal_uint8      MinRateIndex;
+    kal_uint8      MaxRateIndex;
+    kal_bool       PktPayloadSizeModeInc;
+    kal_uint8      MinPayloadSizeIndex;
+    kal_uint8      MaxPayloadSizeIndex;
+    kal_bool       EnACRateModeInc;
+    kal_uint8      EnACRateIndex;
+    kal_bool       BurstPeriodModeInc;
+    kal_uint8      LinkFlowID;
+    kal_uint16     BurstPeriod;
+    kal_bool       BurstSizeModeInc;
+    kal_uint8      BurstSize;
+} REtapParamAssignMsgT;
+
+/*RTAPParameterAssignment message info*/
+typedef struct
+{
+    kal_uint8      TransID;
+    kal_bool       TestPktEnableInc;
+    kal_uint8      TestPktPersistence;
+    kal_bool       PktRateModeInc;
+    kal_uint8      MinRateIndex;
+    kal_uint8      MaxRateIndex;
+} RtapParamAssignMsgT;
+
+/* RTAP_TIMER_EXPIRED_MSG */
+typedef struct
+{
+    kal_uint32    TimerId;
+} RtapTimerExpiredMsgT;
+
+typedef struct
+{
+#if defined (RCP_RI_HRT_DEV)
+    kal_uint32          TimerCb;
+#else
+    kal_timerid         TimerCb;
+#endif
+    kal_bool            Active;
+} RtapExeTimerT;
+
+/* RTAP OTA message structure*/
+typedef struct /*TestPktEnable Parameter Record*/
+{
+    kal_uint8   TestPktPersistence;
+} TstPktEnaRec;
+
+typedef struct
+{
+    kal_uint8   MinRateIndex;
+    kal_uint8   MaxRateIndex;
+} PktRateModeRec;
+
+typedef struct
+{
+    kal_uint8   MinPayloadSizeIndex;
+    kal_uint8   MaxPayloadSizeIndex;
+} PktPLSizeModeRec;
+
+typedef struct
+{
+    kal_uint8   EnACRateIndex;  /*0-9.6kbps,1-19.2kbps,2-38.4kbps*/
+} EnACRateModeRec;
+
+typedef struct
+{
+    kal_uint8   LinkFlowID;
+    kal_uint16  BurstPeriod;   /*in units of 600 slots, 0xffff=infinite*/
+} BurstPeriodModeRec;
+
+typedef struct
+{
+    kal_uint8   LinkFlowID;
+    kal_uint16  BurstSize;   /*in units of 1000 octets,0xffff=full buffer*/
+} BurstSizeModeRec;
+
+/* RTAPParameterAssignment */
+typedef struct
+{
+    kal_bool              TstPktEnaInc;
+    TstPktEnaRec      TstPktEnableParm;
+    kal_bool              PktRateModeInc;
+    PktRateModeRec    PktRateModeParm;
+} RtapParmAssignMsgT;
+
+/* RETAPParameterAssignment */
+typedef struct
+{
+   kal_bool              TstPktEnaInc;
+   TstPktEnaRec      TstPktEnableParm;
+   kal_bool              PktRateModeInc;
+   PktRateModeRec    PktRateModeParm;
+   kal_bool              PktPayloadSizeModeInc;
+   PktPLSizeModeRec  PktPLSizeModeParm;
+   kal_bool              EnACRateModeInc;
+   EnACRateModeRec   EnACRateModeParm;
+   kal_uint8               LinkNum;
+   kal_bool                BurstPeriodModeInc;
+   BurstPeriodModeRec  BurstPeriodModeParm[MAX_SUB_STREAM_NUM];
+   kal_bool                BurstSizeModeInc;
+   BurstSizeModeRec    BurstSizeModeParm[MAX_SUB_STREAM_NUM];
+} RetapParmAssignMsgT;
+
+typedef struct
+{
+  RtapStatEnumT  RtapState;
+  kal_uint16       AppType;
+  kal_uint8        bTestPktMode;
+  kal_uint8        TestPktPersistence;
+  kal_uint8        bCfgPktRateMode;
+  kal_uint8        bCfgPktPayloadSizeMode;
+  kal_uint8        bCfgEnACRateMode;
+  kal_uint8        bCfgBurstMode;
+  kal_uint8        bTstPktOverWrite;
+  kal_uint8        PktBufNum;
+} RtapSpyStatesT;
+/*----------------------------------------------------------------------------
+API Functions
+----------------------------------------------------------------------------*/
+void  RtapInitStructure(kal_uint16 SubType, kal_bool InUse);
+void  RtapCommit (MacFlow2StrFlowMappingT *RtapMacFlowTable, kal_uint8 StreamNum);
+void  RtapProcessRcpSig( kal_bool anyGrant);
+void  RtapHandleConnCloseMsg( void);
+void  RtapHandleConnOpenMsg( void);
+void  RtapInit( void );
+void  RtapHandleFwdOtaMsg( DsaFwdMsgT* pMsg );
+void  RtapHandleEvtTmExpireMsg (kal_uint32 TimerId);
+void RtapHandleEvtBurstTmExpireMsg (kal_uint32 TimerId);
+void RtapHandleTxStatusMsg(DsarTxStatusMsgT* pMsg);
+kal_bool RtapGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+void RtapPktSent (kal_uint8 revMacId,kal_uint8 subStreamNum);
+void RtapPktNotSent (kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint16 RtapGrant (DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint32 RtapGetQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+