[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/l2_c2k/evdo/pafrlp.h b/mcu/interface/protocol/l2_c2k/evdo/pafrlp.h
new file mode 100644
index 0000000..7a7cf73
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/pafrlp.h
@@ -0,0 +1,247 @@
+/*****************************************************************************
+* 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 _PAFRLP_H_
+#define _PAFRLP_H_ 1
+
+#include "paflist.h"
+#include "cpbuf.h"
+#include "hlpapi.h"
+#include "fcpdefs.h"
+#include "do_rcpapi.h"
+#include "do_rcp_msgid.h"
+
+#include "kal_public_api.h"
+#include "kal_public_defs.h"
+#include "md_sap.h"
+
+
+#define NUM_RLP_RESEQ_REC 1500
+#define FCP_TASK_INTERVAL 4
+#define PAF_RLP_ABORT_TIMER_INTERVAL 500 /*500 ms for abort timer. */
+#define PAF_RLP_FLUSH_TIMER_INTERVAL 300
+#define PAF_RLP_DDW (48/FCP_TASK_INTERVAL)
+#define PAF_RLP_ABORT_BACKOFF_INTERVAL 80 /*48 slot * 1.6667 */
+#define PAF_DATAPASS_UPPERLAYER_INTERVAL 1
+#define MAX_NAK_REC_NUM 20 /* Max NakRequests # in Nak msg */
+#ifdef CBP7_EHRPD
+#define NUM_RLP_ROUTE_PROTOCOL_PKT_REC 1
+#endif
+
+
+/* See 0x18 ~ 0x1c most of time in field test, which shall be from RLP_NAK. So if it is less than 0x14, flag monfault.*/
+#define DELAY_RLP_OCTET_NAK_FAULT_INTERVAL (20)
+typedef enum
+{
+ PAFRLP_NULL_ST,
+ PAFRLP_DATA_ST,
+ PAFRLP_RESET_ST,
+ PAFRLP_MAX_ST
+}
+PafRlpStateT;
+
+
+typedef struct PafReseqRecT
+{
+ kal_uint32 seq;
+ kal_uint16 len;
+ CpBufferT *datap;
+ kal_uint16 dataoffset;
+#ifdef CBP7_EHRPD
+ kal_bool FirstDataUnit;
+ kal_bool LastDataUnit;
+#endif
+} PafReseqRecT;
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+ kal_uint32 seq; /* First seq of this route packet */
+ kal_uint32 nextSeq; /* Next seq of this route packet to receive */
+ kal_bool IsCompletedPacket;
+ LIST_STR routePacketQ;
+} PafRouteProtocolPktT;
+#endif
+
+typedef struct
+{
+ kal_uint8 nAppType;
+ kal_uint8 nRLPFlow;
+ kal_uint8 RLPId;
+ kal_uint8 RLPIDLen;
+ kal_uint8 SeqLen;
+ PafRlpStateT stRlp;
+ kal_bool bFlowNakEnabled;
+ /*This is the timer for passing the in sequence RLP packet to upper layer*/
+ kal_uint8 nDataPassUpperlayerInterval;
+ HlpRlpFwdDataPktT *pHlpRlpFwdDataIndMsg;
+ kal_uint32 vr;
+ kal_uint32 vn;
+ kal_uint32 ss; // Sequence Space for this RLP
+ LIST_STR reseqQ;
+ LIST_STR nakGapQ;
+#ifdef CBP7_EHRPD
+ kal_uint8 RoutePDU; /* Octet stream or packet stream */
+ kal_uint8 DataUnit;
+ kal_uint8 nRoute;
+ LIST_STR routeProtocolPktQ;
+#endif
+}PafRlpInstanceT;
+
+typedef struct PafNakGapRecT
+{
+ kal_uint32 seq;
+ kal_uint16 len;
+ //initialized as the Tddw in units of slot when added be NakGapQ, will be
+ //descreased in PAFApplicationLayerProcessing() when received
+ //FCP_TASK_SIG and when it reaches zero, the NAK for this gap should be sent.
+ kal_uint8 nTicksForNak;
+ kal_uint32 time;
+ kal_uint32 tNakSent;
+ kal_bool bNakSent;
+ kal_bool bTimerRunning;
+} PafNakGapRecT;
+
+typedef struct
+{
+ kal_uint32 FirstErased;
+ kal_uint16 WindowLen;
+} PafRlpNakReqT;
+
+typedef struct
+{
+ kal_uint8 NumNakRequest;
+ PafRlpNakReqT NakRequest[MAX_NAK_REC_NUM];
+}PafRlpNakInfoT;
+
+typedef struct
+{
+ LIST_NODE ResQNodeList[NUM_RLP_RESEQ_REC];
+ LIST_STR ResQFreeNodes;
+ LIST_STR ResQIdleList;
+
+ PafReseqRecT resPool[NUM_RLP_RESEQ_REC];
+ LIST_NODE NakGapNodeList[NUM_RLP_RESEQ_REC];
+ LIST_STR NakGapFreeNodes;
+ LIST_STR NakGapIdleList;
+ PafNakGapRecT nakGapPool[NUM_RLP_RESEQ_REC];
+#ifdef CBP7_EHRPD
+ LIST_NODE RouteProtocolQNodeList[NUM_RLP_ROUTE_PROTOCOL_PKT_REC];
+ LIST_STR RouteProtocolQFreeNodes;
+ LIST_STR RouteProtocolQIdleList;
+ PafRouteProtocolPktT RouteProtocolPool[NUM_RLP_ROUTE_PROTOCOL_PKT_REC];
+#endif
+} PafRlpBufPool;
+
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint16 EVDORevAFwdMFRLPStatsFlowId;
+ kal_uint32 EVDORevAFwdMFRLPStatsResetTime;
+ kal_uint16 EVDORevAFwdMFRLPStatsReXmitsNotFound;
+ kal_int64 EVDORevAFwdMFRLPStatsATNakBytesRequested;
+ kal_int64 EVDORevAFwdMFRLPStatsRxDuplicateBytes;
+ kal_int64 EVDORevAFwdMFRLPStatsRxReXmitsBytes;
+ kal_int64 EVDORevAFwdMFRLPStatsRxNewDataBytes;
+ kal_int64 EVDORevAFwdMFRLPStatsRxTotalBytes;
+ kal_int32 EVDORevAFwdMFRLPStatsNaksSent;
+ kal_int32 EVDORevAFwdMFRLPStatsRxNakTimesOuts;
+ kal_int32 EVDORevAFwdMFRLPStatsResetCount;
+ kal_uint16 EVDORevAFwdMFRLPStatsATResetRequestCount;
+ kal_uint16 EVDORevAFwdMFRLPStatsANResetAckCount;
+ kal_uint16 EVDORevAFwdMFRLPStatsANResetRequestCount;
+} PACKED_POSTFIX EVDORevAFwdMFRLPStatsMeasT;
+
+typedef PACKED_PREFIX struct
+{
+ EVDORevAFwdMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED];
+} PACKED_POSTFIX EVDORevAFwdMFRLPStatsEventT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 SysTime;
+ EVDORevAFwdMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED];
+} PACKED_POSTFIX PafMfpaRlpStatPeekRspMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 SysTime;
+ EVDORLPStatsMeasT rlpMeas;
+} PACKED_POSTFIX PafDpaRlpStatPeekRspMsgT;
+
+typedef struct
+{
+ kal_uint32 ulTaskId;
+ kal_uint32 ulSapId;
+}PafSapInfo;
+void PafInit(void);
+void PafRlpInit(PafRlpInstanceT *pRlpInstance);
+void PafRlpCspConnCloseMsg(PafRlpInstanceT *pRlpInstance);
+void PafRlpIdpConnOpenMsg(PafRlpInstanceT *pRlpInstance);
+void PafRlpReset(PafRlpInstanceT *pRlpInstance);
+kal_uint32 PafRlpGetSeqSpace(kal_uint8 s);
+
+kal_bool PafRlpFrameDecode(kal_uint8 nAppType, FwdLinkPktT *pNode, kal_uint8 *pRLPFlow, PafReseqRecT **pReseq);
+void PafRlpFrameRecv(PafRlpInstanceT *pRlpInstance, PafReseqRecT *pReseq);
+void PafRlpBufferFramesForUpperLayerDelivery(PafRlpInstanceT *pRlpInstance, PafReseqRecT *pReseq);
+void PafRlpServiceNakTimer(PafRlpInstanceT *pRlpInstance);
+void PafRlpAbortTmrExpired(PafRlpInstanceT *pRlpInstanace);
+void PafRlpResetTxIndAllFlowMsg(PafRlpInstanceT *pRlpInstance, kal_uint8 nRlpFlow);
+void PafRlpResetTxIndMsg(PafRlpInstanceT *pRlpInstance, kal_uint8 nRlpFlow);
+void PafRlpResetRxIndMsg(PafRlpInstanceT *pRlpInstance); // ResetAck to DPA
+void PafRlpResetTxCompleteMsg(PafRlpInstanceT *pRlpInstance);
+void PafRlpResetRxCompleteMsg(PafRlpInstanceT *pRlpInstance);
+kal_bool PafRlpSendDsarMsg(DsaRevMsgT *MsgDataP);
+void PafRlpStateSet(PafRlpInstanceT *pRlpInstance, PafRlpStateT rlpState);
+PafRlpStateT PafRlpStateGet(PafRlpInstanceT *pRlpInstance);
+
+#ifdef CBP7_EHRPD
+void PafRlpPacketFrameRecv(PafRlpInstanceT *pRlpInstance, PafReseqRecT *pReseq);
+void PafRlpIpPacketFramesForUpperLayerDelivery(PafRlpInstanceT *pRlpInstance, PafRouteProtocolPktT *pRouteProtocolPkt);
+void PafRlpPacketAbortTmrExpired(PafRlpInstanceT *pRlpInstance);
+#endif
+
+void PafResetLastRLPStat(void);
+
+#endif /*_PAFRLP_H_*/
+