[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/l2_c2k/evdo/ParRlp.h b/mcu/interface/protocol/l2_c2k/evdo/ParRlp.h
new file mode 100644
index 0000000..dcdc463
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/ParRlp.h
@@ -0,0 +1,257 @@
+/*****************************************************************************
+* 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 _PAR_RLP_H_
+#define _PAR_RLP_H_
+
+/*****************************************************************************
+*
+* FILE NAME : ParRlp.h
+*
+* DESCRIPTION : This file contains function prototypes and other definitions
+* for the Reverse RLP protocol
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "par.h"
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+#define RLP_RETXQ_PRIORITY 60
+#define RLP_TXQ_PRIORITY 70
+
+
+#define PAR_RLP_ABORT_TIMER_INTERVAL 500 /*500 ms for abort timer. */
+#define PAR_RLP_FLUSH_TIMER_INTERVAL 300
+
+
+
+/*----------------------------------------------------------------------------
+structure definitions
+----------------------------------------------------------------------------*/
+typedef enum
+{
+ RESV_CLOSE_ST,
+ RESV_OPEN_ST,
+ RESV_WFR_OPEN_ST,
+ RESV_WFR_CLOSE_ST,
+ RESV_MAX_ST
+}ParResrevationStateT;
+
+typedef enum
+{
+ RESV_OP_NULL,
+ RESV_OP_ONREQ,
+ RESV_OP_OFFREQ
+} ParReservationOperationTypeT;
+
+
+typedef struct
+{
+#if defined (RCP_RI_HRT_DEV)
+ kal_uint32 TimerCb;
+#else
+ kal_timerid TimerCb;
+#endif
+ kal_bool Active;
+} ParRlpFlushTimerT;
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+ kal_uint32 seq;
+ kal_uint8 RLPHdrLen;
+ kal_uint16 nAvailableBytes;
+} ParRlpNakCheckRecT;
+
+typedef struct
+{
+ kal_uint8 nAppType;
+ kal_uint8 nRLPFlow;
+} ParRlpMaxVsUpdateT;
+
+typedef struct
+{
+ kal_uint32 seq;
+ kal_uint32 range;
+ kal_bool bDeleteWhenSameSeq;
+} ParRlpTxQDeleteCheckT;
+#endif
+typedef struct
+{
+ kal_int32 EVDORevARevMFRLPStatsFlowId;
+ kal_uint32 EVDORevARevMFRLPStatsResetTime;
+ kal_int32 EVDORevARevMFRLPStatsRLPStatsNaksReceived;
+ kal_int32 EVDORevARevMFRLPStatsReXmitsNotFound;
+ kal_int64 EVDORevARevMFRLPStatsANNakBytesRequested;
+ kal_int64 EVDORevARevMFRLPStatsTxReXmitsBytes;
+ kal_int64 EVDORevARevMFRLPStatsTxNewDataBytes;
+ kal_int64 EVDORevARevMFRLPStatsTxTotalBytes;
+ kal_int32 EVDORevARevMFRLPStatsResetCount;
+ kal_int32 EVDORevARevMFRLPStatsATResetRequestCount;
+ kal_int32 EVDORevARevMFRLPStatsANResetAckCount;
+ kal_int32 EVDORevARevMFRLPStatsANResetRequestCount;
+} EVDORevARevMFRLPStatsMeasT;
+
+typedef struct
+{
+ EVDORevARevMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED];
+} EVDORevARevMFRLPStatsEventT;
+
+typedef struct
+{
+ kal_uint32 SysTime;
+ EVDORevARevMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED];
+} ParRlpStatPeekRspMsgT;
+
+/*----------------------------------------------------------------------------
+API Functions
+----------------------------------------------------------------------------*/
+void ParRlpInit(void);
+void ParRlpCommit(AppSubTypeT appType);
+void ParHlpRevDataMsgHandler(ParHlpDataTxMsgT *pMsg);
+void ParRlpAccessFlushTmExpireHandler(kal_uint32 TimerId);
+void ParRlpServiceFlushTmExpireHandler(kal_uint32 TimerId);
+void ParRlpResetTxIndicationAckProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
+void ParRlpResetRxIndicationProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
+void ParMfpaRlpNakProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
+void ParDpaRlpNakProc (DsaFwdMsgT *pMsgData, ParRlpInstanceT *pRlpInst);
+void ParRlpResetProc (kal_uint16 ProtocolType,ParRlpInstanceT *pRlpInst);
+void ParRlpResetAckProc (kal_uint16 ProtocolType,ParRlpInstanceT *pRlpInst);
+void ParRlpInitialize(ParRlpInstanceT* pInst);
+void ParRlpStateSet(ParRlpInstanceT *pRlpInst, ParRlpStateT rlpState);
+ParRlpStateT ParRlpStateGet(ParRlpInstanceT *pRlpInst);
+void ParReservationAcceptMsgProc(kal_uint8* pData);
+void ParReservationRejectMsgProc(kal_uint8* pData);
+void ParRevReservationOnMsgProc(kal_uint8* pData);
+void ParRevReservationOffMsgProc(kal_uint8* pData);
+void ParFwdReservationOnMsgProc(kal_uint8* pData);
+void ParFwdReservationOffMsgProc(kal_uint8* pData);
+void ParRlpReservTmExpireMsgProc(void);
+void ParPafRlpResetReqMsgHandler(ParPafRlpResetReqMsgT *pMsg);
+void ParHlpRevDataSig(void);
+void ParHlpRevData2Sig(void);
+kal_bool ParRlpInsertRec2RetxQ(RetxInfoT* pInfo, ParRlpInstanceT *pRlpInst);
+kal_bool Compare2Seq(kal_uint32 Seq1, kal_uint32 Seq2, kal_uint32 SeqRange);
+kal_bool ParRlpTxQManage(ParRlpInstanceT* pInst);
+kal_bool ParDpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_bool ParDpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_uint16 ParDpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint16 ParDpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaAccessPktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaAccessPktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaServicePktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaServicePktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaAccessPktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaAccessPktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaServicePktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaServicePktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaAccessPktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaAccessPktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaServicePktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaServicePktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaAccessPktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaAccessPktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParDpaServicePktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
+void ParMfpaServicePktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint16 ParMfpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_bool ParMfpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_bool ParMfpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_uint16 ParMfpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint32 ParDpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+kal_uint32 ParDpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+kal_uint32 ParMfpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+kal_uint32 ParMfpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+void ParRlpAccessFlushTimerCallBack(void);
+void ParRlpServiceFlushTimerCallBack(kal_uint32 TimerId);
+#if defined (MTK_PLT_ON_PC)
+void ParRlpStatsResetMsgProc(void);
+void ParRlpStatsPeekMsgProc(void *MsgDataP);
+#endif
+void ParRlpConnOpenMsgProc(void);
+void ParRlpConnCloseMsgProc(void);
+void ParGAUPSetRlpFlowInfo(ParRlpInstanceT* pInst, FlowIdentificationAttribT* pRlpInfo, kal_uint8 FlowNum );
+void ParRlpDsarTxStatusMsgProc(kal_uint8 nAppType);
+void ParRlpCleanUpQueue(void);
+#ifdef CBP7_EHRPD
+void ParEmpaAccessPktSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaServicePktSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaAccessPktNotSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaServicePktNotSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaAccessPktPhyTrafficMissed(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaServicePktPhyTrafficMissed(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaAccessPktPhyTrafficAcked(kal_uint8 revMacId, kal_uint8 subStreamNum);
+void ParEmpaServicePktPhyTrafficAcked(kal_uint8 revMacId, kal_uint8 subStreamNum);
+kal_uint16 ParEmpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_uint16 ParEmpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
+kal_bool ParEmpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_bool ParEmpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
+kal_uint32 ParEmpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+kal_uint32 ParEmpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
+
+kal_uint16 ParRlpSendDataFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParRlpSendDataFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpOctetOctetSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpOctetPacketSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpPacketPacketSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpOctetOctetSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpOctetPacketSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+kal_uint16 ParEmpaRlpPacketPacketSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+
+void ParEmpaRlpNakProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
+kal_bool ParEmpaRlpPacketPacketFlushCheckHdl(void *pList,void *pRecNew, void *pRecOld);
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/ParRlpList.h b/mcu/interface/protocol/l2_c2k/evdo/ParRlpList.h
new file mode 100644
index 0000000..b6face1
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/ParRlpList.h
@@ -0,0 +1,282 @@
+/*****************************************************************************
+* 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 _REV_RLP_LIST_H_
+#define _REV_RLP_LIST_H_
+
+/*****************************************************************************
+*
+* FILE NAME : RlpRList.h
+*
+* DESCRIPTION : This file contains function prototypes and other definitions
+* for the Reverse RLP buffer
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "cpbuf.h"
+#include "hlpdef.h"
+
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+#define MAX_PHYMISSED_RECORD_NUM 15
+#define MAX_REV_DATAITEM_NUM 450
+#define MAX_NAK_RECORD_NUM 300/* 50*6 Suppose 6 RLP flow will activated at most and each RLP flow 50 Nak Record */
+#define MAX_SUBFRAME_PACKET_NUM 10
+#define RLPTXQ_LOW_WATERMARK_PERCENT (0.05)
+#define RLPTXQ_HI_WATERMARK_PERCENT (0.10)
+#ifdef CBP7_EHRPD
+#define NUM_RLP_TXQ_REC 200
+#endif
+#define PAR_RLP_INC_TXQ(pInst, num) do{ pInst->TxList.totalBytesInTxQ+=num; }while(0)
+#define PAR_RLP_DEC_TXQ(pInst, num) do{ pInst->TxList.totalBytesInTxQ -=num;}while(0)
+#define PAR_RLP_INC_RTXQ(pInst, num) do{ pInst->RetxList.totalBytesInRetxQ+=num;}while(0)
+#define PAR_RLP_DEC_RTXQ(pInst, num) do{ pInst->RetxList.totalBytesInRetxQ-=num; }while(0)
+
+/*----------------------------------------------------------------------------
+structure definitions
+----------------------------------------------------------------------------*/
+
+typedef struct revDataItem
+{
+ CpBufferT *dataP;
+ kal_uint16 nPktLen;
+#ifdef CBP7_EHRPD
+ kal_uint16 nRLPPktInSent;
+#endif
+ kal_uint32 TimeStamp;
+ struct revDataItem *pNext;
+ kal_uint16 IpId;
+ kal_uint16 tcpTag;
+ kal_uint32 tcpPort;
+ kal_uint32 srcIpAddr;
+ kal_uint32 dstIpAddr;
+} RevDataItemT;
+
+typedef struct
+{
+ RevDataItemT *Head;
+ RevDataItemT *Tail;
+ kal_uint16 count; /*number of records*/
+ kal_uint16 hiWaterMark; /* if FreeCount goes above this, flow ctrl will be off (if on previously) */
+ kal_uint16 lowWaterMark; /* if FreeCount falls below this, app asserts flow ctrl */
+ kal_bool flowControlOn; /* whether flow control with higher layer on/off */
+
+} ParRlpTxQT;
+
+typedef struct
+{
+ RevDataItemT *startPtr; /*Head*/
+ kal_uint32 startSeq;
+ RevDataItemT *readPtr;
+ kal_uint16 readOffset;
+ RevDataItemT *storedReadPtr;
+ kal_uint16 storedReadOffset;
+ kal_uint32 storedseq;
+ RevDataItemT *writePtr;
+ kal_uint32 totalBytesInTxQ;
+ kal_uint8 RevMacId; /*Identifier of a RTCMAC packet*/
+} ParRlpTxListT;
+
+typedef struct
+{
+ kal_uint32 seq;
+ kal_uint16 len;
+#ifdef CBP7_EHRPD
+ kal_bool bNaked;
+#endif
+}RetxInfoT;
+
+typedef struct RetxRec
+{
+ RetxInfoT RetxInfo;
+ kal_uint32 TimeStamp;
+ struct RetxRec *pNext;
+} RetxRecordT;
+
+typedef struct
+{
+ RetxRecordT *Head;
+ RetxRecordT *Tail;
+ kal_uint16 count; /*number of records*/
+} ParRlpRetxQT;
+
+typedef struct
+{
+ RetxRecordT *readPtr;
+ kal_uint16 readOffset;
+ RetxRecordT *storedReadPtr;
+ kal_uint16 storedReadOffset;
+ RetxRecordT *writePtr;
+ kal_uint32 totalBytesInRetxQ;
+ kal_uint8 RevMacId;/*Identifier of a RTCMAC packet*/
+} ParRlpRetxListT;
+
+typedef struct
+{
+ kal_uint8 FlowId;
+ kal_uint8 revMacId;
+ RetxInfoT RetxInfo;
+ kal_uint8 AppType;
+} PhyMissRetxItemT;
+
+typedef struct PhyMissRec
+{
+ PhyMissRetxItemT RetxItem[MAX_SUBFRAME_PACKET_NUM];
+ struct PhyMissRec *pNext;
+} PhyMissBufT;
+
+typedef struct
+{
+ PhyMissBufT *startPtr;
+ PhyMissBufT *writePtr;
+ PhyMissBufT *endPtr;
+ kal_uint8 nIndex;
+} ParRlpPhyMissListT;
+
+
+#ifdef CBP7_EHRPD
+
+struct _PAR_LIST_NODE;
+struct _PAR_LIST_STR;
+
+typedef struct _PAR_LIST_NODE
+{
+ struct _PAR_LIST_NODE* next;
+ struct _PAR_LIST_NODE* prev;
+ void* data;
+} PAR_LIST_NODE;
+
+typedef struct _PAR_LIST_STR
+{
+ PAR_LIST_NODE* outHead;
+ PAR_LIST_NODE* inTail;
+ PAR_LIST_NODE* pNode; /* used to scan the list */
+ struct _PAR_LIST_STR* free;
+ kal_uint16 numRecords;
+} PAR_LIST_STR;
+
+typedef struct
+{
+ CpBufferT *DataP;
+ kal_uint32 seq;
+ kal_uint16 Len;
+ kal_uint16 offset;
+ kal_bool FirstDataUnit;
+ kal_bool LastDataUnit;
+ kal_uint32 TimeStamp;
+ RevDataItemT *pDataItem;
+} ParRlpTxReseq;
+
+typedef struct
+{
+ PAR_LIST_NODE TxQNodeList[NUM_RLP_TXQ_REC];
+ PAR_LIST_STR TxQFreeNodes;
+ PAR_LIST_STR TxQIdleList;
+
+ ParRlpTxReseq TxQPool[NUM_RLP_TXQ_REC];
+} ParRlpBufPoolT;
+
+typedef kal_bool (*pPARMATCH_FUNC)(void* list, void* testRec, void* listRec);
+#define PAR_NULL_NODE (PAR_LIST_NODE*)(0)
+#define PAR_NULL_LIST (PAR_LIST_STR*)(0)
+
+/* define values for where to start when getting from queue */
+#define FROM_HEAD KAL_TRUE
+#define FROM_TAIL KAL_FALSE
+
+/* define values for where to start when putting to queue */
+#define TO_HEAD KAL_TRUE
+#define TO_TAIL KAL_FALSE
+#endif
+/*----------------------------------------------------------------------------
+API Functions
+----------------------------------------------------------------------------*/
+kal_uint16 ParRlpTxQGetIdleNum(void);
+kal_uint16 ParRlpTxQGetNum(void);
+void ParRlpTxQInit(void);
+RevDataItemT* ParRlpTxQGet(void);
+void ParRlpTxQFree(RevDataItemT* pRec);
+void ParRlpPhyMissRetxQInit(ParRlpPhyMissListT* pList);
+void ParRlpServiceRetxQInit(ParRlpRetxListT* pList, kal_uint8 index);
+void ParRlpAccessRetxQInit(ParRlpRetxListT* pList);
+void ParRlpTxListInit(ParRlpTxListT* pList);
+void ParRlpRetxListInit(ParRlpRetxListT* pList);
+void ParRlpRetxQInit(void);
+RetxRecordT* ParRlpRetxQGet(void);
+void ParRlpRetxQFree(RetxRecordT* pRec);
+void ParRlpPhyMissRetxQReset(kal_uint8 RlpFlowId, ParRlpPhyMissListT* pList, kal_uint8 AppType);
+void RlpPhyMissRetxQDelRec(PhyMissRetxItemT* pRec, PhyMissBufT* pEntry, ParRlpPhyMissListT* pList);
+kal_bool ParRlpTxListDelHdr(ParRlpTxListT* pList);
+kal_bool ParRlpRetxQDelete(RetxRecordT* pRec, ParRlpRetxListT* pList);
+kal_bool ParRlpPhyMissRetxQDelete(PhyMissBufT* pRec, ParRlpPhyMissListT* pList);
+kal_bool ParRlpTxQFlowControlOn(void);
+void ParRlpTxQFlowControlReset(void);
+#ifdef CBP7_EHRPD
+kal_uint16 ParNumElements(PAR_LIST_STR* list);
+void ParCreateFreeList(PAR_LIST_STR* flist, PAR_LIST_NODE* nodeRecs, kal_uint16 nRecs);
+void ParCreateEmptyList(PAR_LIST_STR* list, PAR_LIST_STR* flist);
+void ParCreateFullList(PAR_LIST_STR* list, PAR_LIST_STR* flist, void* recs, kal_uint16 nRecs, kal_uint16 recSize);
+kal_bool ParPutRecord(PAR_LIST_STR* list, kal_bool toHead, void* rec);
+kal_bool ParGetRecord(PAR_LIST_STR* list, kal_bool fromHead, void** rec, kal_bool removeFromList);
+kal_bool ParGetFirstMatch(PAR_LIST_STR* list, kal_bool fromHead, void** rec, void* testRec,
+ pPARMATCH_FUNC matcher, kal_bool removeFromList);
+kal_bool ParGetNextMatch(PAR_LIST_STR* list, kal_bool fromHead, void** rec, void* testRec,
+ pPARMATCH_FUNC matcher, kal_bool removeFromList);
+void ParFlushList(PAR_LIST_STR* list);
+void ParMoveList(PAR_LIST_STR* fromList, PAR_LIST_STR* toList);
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_Qos.h b/mcu/interface/protocol/l2_c2k/evdo/do_Qos.h
new file mode 100644
index 0000000..a6dd244
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_Qos.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) 2006-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef _DO_QOS_H_
+#define _DO_QOS_H_
+/*****************************************************************************
+*
+* FILE NAME : do_qos.h
+*
+* DESCRIPTION : This file contains public QOS definitions
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "slc_nvram.h"
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+#define MAX_SUPPORTED_IPFLOW 2
+#define MAX_SUPPORTED_QOS_BLOB_NUM 16
+#define MAX_SUPPORTED_RESERVATION_NUM 15
+#define MAX_CLIENT_NUM 6
+#define MAX_TFT_NUM 12
+#define DEFAULT_PPP_LABEL 0xff
+#define DEFAULT_PPPFREE_LABEL 0xfe
+
+typedef enum
+{
+ SPARE_TFT,
+ CREATE_NEW_TFT,
+ DELETE_TFT,
+ ADD_PKTFILTER_TO_TFT,
+ REPLACE_PKTFILTER,
+ DELETE_PKTFILTER,
+ QOS_CHECK,
+ INITIAL_FLOW_REQ = 0x80,/*HSGW to UE*/
+ QOS_CHECK_CONFIRM,
+ HSGW_DEL_PKTFILTER,
+ HSGW_REPLACE_PKTFILTER,
+ UE_DEL_IDENTIFIED_PKTFILTER
+
+}TftOperationCodeT;
+
+typedef enum
+{
+ FLOW_BI,
+ FLOW_REV,
+ FLOW_FWD
+}RlpFlowDirection;
+
+typedef enum
+{
+ FLOW_PPPBESTEFORT,
+ FLOW_PPPFREE,/*PPP Free Operation*/
+ FLOW_SIP,
+ FLOW_RTP_AUDIO_RS1, /*profileID=0x100*/
+ FLOW_RTP_VIDEO_32K, /*profileID=0x301*/
+ FLOW_RTP_AUDIO_RS2, /*profileID=0x101*/
+ FLOW_RTP_VIDEO_48K, /*profileID=0x303*/
+ FLOW_RTP_VIDEO_64K, /*profileID=0x305*/
+ INVALID_FLOWTYPE
+}QoSFlowTypeT;
+
+typedef enum
+{
+ ProtoNull,
+ ProtoHDLC,
+ ProtoIPv4,
+ ProtoIPv6,
+ ProtoROHC,
+ ProtoIPv4andIPv6
+}FlowProtoTypeT;
+
+typedef enum
+{
+ QOS_OP_SUCCESS,
+ QOS_OP_REJECT,
+ QOS_OP_TIMEOUT,
+ QOS_OP_FAIL
+}QoSOpResultT;
+
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 ReservationLabel;
+ kal_uint8 Priority;
+ kal_uint8 QoSSetNum;
+ kal_uint8 QosAttrSetId[MAX_SUPPORTED_QOS_BLOB_NUM];/*7 bits,should not be zero*/
+/* kal_uint8 Verbose;
+ kal_uint8 RlpNum;
+ kal_uint8 MacFlowId;*/
+ QoSFlowTypeT FlowType;
+} PACKED_POSTFIX QosSubBlobT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool bCurSupported;
+ kal_uint16 FlowProfileID;
+/* kal_uint8 Verbose;
+ kal_uint8 TrafficClass;
+ kal_uint16 PeakRate;
+ kal_uint16 BucketSize;
+ kal_uint16 TokenRate;
+ kal_uint8 MaxLatency;
+ kal_uint8 MaxIPPacketLossRate;
+ kal_uint8 PacketSize;
+ kal_uint8 DelayVarSensitive;*/
+} PACKED_POSTFIX QosAttributeT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 Num;
+ QosAttributeT QosAttribute[MAX_SUPPORTED_QOS_BLOB_NUM];
+} PACKED_POSTFIX QosAttrProfileT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool bIpV4;
+ kal_uint8 PrecedenceIndex;/*evaluation precedence index*/
+ /*kal_uint32 SrcAddress[4];
+ kal_uint32 SrcAddrMask[4];
+ kal_uint16 DstPortRange[2];
+ kal_uint16 SrcPortRange[2];*/
+ kal_uint16 SrcPortNum;/*For Forward flow, it's DstPortNum*/
+ kal_uint8 ProNumOrNHdr;
+ kal_uint32 Spi;/*ipsec security parameter index*/
+ kal_uint8 TrafficClass; /*for ipv4, it's tos*/
+ kal_uint8 TrafficMask;
+ kal_uint32 FlowLabel;/*valid for IPv6 only*/
+} PACKED_POSTFIX QoMPktFilterContentT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool bUsed;
+ QosSubBlobT QosBlob;
+/* ProtoTypeT ProtoType;
+ kal_uint16 PortNum;
+ PayLoadTypeT PayloadType;
+ FlowProtoTypeT L2P;*//*higher Layer Protocol,0 NULL,1 Octet-based HDLC-like framing
+ 2 Internet Protocol version4, 3 IP version 6, 4 RoHC, 5 IPv4 and IPv6*/
+ QoMPktFilterContentT PktFilter;
+} PACKED_POSTFIX QosSubScriberProfileT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 num;
+ QosSubScriberProfileT SubScribProfile[MAX_SUPPORTED_RESERVATION_NUM];
+} PACKED_POSTFIX QosSubScriberTabelT;
+
+
+typedef PACKED_PREFIX struct
+{
+ QosAttrProfileT ATProfile;
+ QosSubScriberTabelT RevSubTable;
+ QosSubScriberTabelT FwdSubTable;
+} PACKED_POSTFIX QoSProfileT;
+
+
+typedef struct
+{
+ kal_uint8 ReservationLabel[MAX_RESERVATION_LABEL];
+ kal_uint8 DosAllowed[MAX_RESERVATION_LABEL];
+ kal_uint8 ReservationCount;
+ /* FlowProtoTypeT FlowProtocol;
+ kal_uint8 ResvState[MAX_RESERVATION_LABEL];
+ kal_uint8 RlpState;
+ kal_uint8 HighLayerProtocol;*/
+}RlpFlowInfoT;
+
+typedef struct
+{
+ kal_uint8 ResvLabel;
+ QoMPktFilterContentT Content;
+}QoMPktFilterT;
+
+typedef struct
+{
+ kal_uint8 Direction;
+ kal_uint8 PktFilterNum;
+ QoMPktFilterT FilterList[MAX_CLIENT_NUM];
+}QoMTFTInfoT;
+
+typedef struct
+{
+ QoSFlowTypeT FlowType;
+ kal_uint8 Priority;
+ kal_uint8 ProfileNum;
+ kal_uint16 ProfileID[4];
+ QoMPktFilterContentT PktFilter;
+}HlpQoSFlowInfoT;
+
+typedef struct
+{
+ QoSOpResultT result;
+}HlpQOMOpFlowRspMsgT;
+
+typedef struct
+{
+ kal_uint8 Label;
+ kal_uint8 Direction;
+}HlpQOMOpFlowRelIndMsgT;
+
+typedef struct
+{
+ kal_uint8 Num;
+ kal_uint8 Label[MAX_CLIENT_NUM];
+}HlpQOMFlowIndMsgT;
+
+
+typedef void (*MsgDepatchT)(kal_uint8* pData, kal_uint16 size, kal_uint8 PdnId);
+/****************************************************************************/
+void QOMQosTableInit(void);
+kal_bool QOMRlpUpdateFwdQosTable(kal_uint8 ResvLabel, kal_uint16 len, kal_uint8* pProfile);
+kal_bool QOMRlpUpdateRevQosTable(kal_uint8 ResvLabel, kal_uint16 len, kal_uint8* pProfile);
+
+void QOMRlpUpdateQoSProfile(SupportedQosProfileT* pProfile);
+kal_uint8 QoMGetRevRlpNumByLabel(kal_uint8 ResvLabel);
+kal_uint8 QoMGetFwdRlpNumByLabel(kal_uint8 ResvLabel);
+kal_uint8 QoMGetFwdLabelByRlpFlow(kal_uint8 nRlpFlow);
+kal_uint8 QoMGetRevLabelPriority(kal_uint8 ResvLabel);
+void QOMRlpReservationOnRsp(QoSOpResultT Result);
+void QOMRlpQoSNegoFail(void);
+void QOMRlpFwdQosRelease(kal_uint8 Label);
+void QOMRlpRevQosRelease(kal_uint8 Label);
+void QOMSetRevLabelRlpNum(kal_uint8 Label, kal_uint8 RlpNum);
+void QOMSetFwdLabelRlpNum(kal_uint8 Label, kal_uint8 RlpNum);
+
+kal_bool QOMSetQoSAttributeSet(kal_uint8 Direction,QosAttrProfileT* pProfile);
+kal_bool QOMSetQoSProfile(QosAttrProfileT* pProfile);
+kal_bool QOMSetSubscribQoSProfile(kal_uint8 Direction,QosSubScriberProfileT* pSubProfile);
+kal_bool QOMGetNegQoSProfile(kal_uint8 Label, kal_uint8 Direction, QosSubBlobT* pProfile);
+kal_bool HlpQOMFlowRequest(kal_uint8 FlowType, kal_uint8 Direction,kal_uint8* pLabel);
+#if 0
+/* under construction !*/
+#endif
+kal_bool HlpQOMReleaseQoS(kal_uint8* pLabel, kal_uint8* pDirection, kal_uint8 Num, kal_uint8 TftOpCode);
+void HlpQOMFlowDeactivate(kal_uint8 num,kal_uint8 *pLabel, kal_uint8 *pDirection);
+kal_bool QOMSetQoSTFT(QoMTFTInfoT* pTft);
+
+void QOMWriteDataToFile(void);
+void QOMGetSubQosProfile(QoSProfileT* pQoSData);
+
+void QOMEncReservationQoSRequestAttr(kal_uint16* bitPos,kal_uint8* pData);
+void QOMClearSubscribQoSProfile(void);
+MsgDepatchT QOMDepatchRecvdPkt(kal_uint16 DstPort);
+kal_bool QOMCheckFwdTft(kal_uint16 DstPortNum);
+void QOMCloseUdpConnection(void);
+void QOMActivate(kal_bool flag);
+QoMPktFilterContentT* QOMGetTftByLabel(kal_uint8 Label);
+
+#ifdef CBP7_EHRPD
+void HlpQOMSetRevFlowPath(kal_uint8 RlpFlowNum, kal_uint8 PathType);
+kal_uint8 HlpQOMGetRevFlowPath(kal_uint8 RlpFlowNum);
+void HlpQOMSetFwdFlowPath(kal_uint8 RlpFlowNum, kal_uint8 PathType);
+kal_uint8 HlpQOMGetFwdFlowPath(kal_uint8 RlpFlowNum);
+void HlpQoMInitSubQoSTableWithPdnTable(void);
+
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_acmapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_acmapi.h
new file mode 100644
index 0000000..c764977
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_acmapi.h
@@ -0,0 +1,125 @@
+/*****************************************************************************
+* 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_acmapi.h
+*
+* DESCRIPTION : API definition for ACMAC.
+*
+* HISTORY :
+*****************************************************************************/
+#ifndef _DO_ACMAPI_H_
+#define _DO_ACMAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_dsaapi.h"
+#include "rtm.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+/* AcmTestModes */
+typedef enum
+{
+ ACM_TEST_REAL = 0,
+ ACM_TEST_DEACTIVATE,
+ ACM_TEST_TXHW,
+ ACM_TEST_TXHW_REPEAT
+} AcmTestModeT;
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+/* Tracking variables for RTM use */
+extern kal_int16 AcmRxPwr; /* The RxPwr after each access probe */
+extern kal_int16 AcmPilotPwr; /* The final "clipped" pilot pwr after each access probe */
+extern kal_int16 AcmKsAdjust; /* The Ks after each access probe */
+extern AcmTestModeT AcmTestMode;
+extern RpcTestModeT AcmRpcTestMode;
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+/* NST: used in NST */
+extern void AcmCreateInConfigInstance(kal_bool resetToDefault);
+extern void AcmCommitHandler(void);
+#endif
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+void AcmInit(void);
+void AcmHandleDsafFwdMsg(DsaFwdMsgT *pMsg);
+void AcmHandleATIListMsg(AcmAmpATIListMsgT* MsgDataPtr);
+void AcmHandleActivateMsg(AcmRupActivateMsgT* MsgP);
+void AcmHandleDeactivateMsg(void);
+void AcmHandleDsaAddByteMsg(void);
+void AcmHandleRmcRfReadyMsg(void);
+kal_bool AcmHandleRmcRfReleaseMsg(void);
+void AcmHandleOmpParamUpdMsg(AcmOmpUpdatedMsgT *pMsg);
+void AcmHandleRupAccessHOIndMsg(void);
+void AcmHandleScpReconfiguredMsg(void);
+void AcmHandleScpCommittedMsg(void);
+void AcmHandleEltAcmSupervisionExpiredCmdMsg(void);
+void AcmHandleSignals(kal_uint32 TaskSignals);
+void AcmHandleAckMsg(void);
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+extern void AcmHandleAckMsgNST(kal_uint32 dummy); /* NST: used in NST */
+#endif
+void AcmHandleProtStopAccessMsg(kal_uint8 action);
+void AcmHandleTestCfgMsg(AcmTestCfgMsgT *pMsg);
+#if defined(MTK_CBP) && (!defined(MTK_PLT_ON_PC))
+kal_bool AcmCtrlStateCheck(void);
+#endif
+#ifdef MTK_CBP
+kal_bool AcmIsDeactivated(void);
+#endif
+void AcmHandleTrafficPwrRefParamMsg (RcpRtcPwrRefParamMsgT *pMsgPtr);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_dsaapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_dsaapi.h
new file mode 100644
index 0000000..7f429f3
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_dsaapi.h
@@ -0,0 +1,193 @@
+/*****************************************************************************
+* 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_dsaapi.h
+*
+* DESCRIPTION : API definition for Default Signalling component.
+*
+* HISTORY :
+*****************************************************************************/
+#ifndef _DO_DSAAPI_H_
+#define _DO_DSAAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "cpbuf.h"
+#include "do_fcpapi.h"
+#include "do_clcapi.h"
+#include "do_rcpapi.h"
+#include "do_slcapi.h"
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_REV_MSG 3
+
+/*----------------------------------------------------------------------------
+ Message Formats structure
+----------------------------------------------------------------------------*/
+typedef enum
+{
+ none,
+ ended,
+ success
+} ConfirmRequiredE;
+
+typedef enum
+{
+ sendSuccess,
+ sendFail
+} ConfirmResponseE;
+
+typedef enum
+{
+ DSA_RESET_MSG,
+ DSA_RESET_ACK_MSG,
+ DSA_CONFIG_REQ_MSG = 0x50,
+ DSA_CONFIG_RSP_MSG = 0x51,
+ DSA_SLP_D_HDR_ONLY,
+ MSG_ALL
+}DsafMsgTypeT;
+
+typedef enum
+{
+ /* please don't modify these two enum vaule for sync with ELT tool */
+ CP_FCP_OTA_MSG = 9,
+ CP_FCP_SLPD_ACK = 10,
+ CP_RCP_SLPD_ACK = 11,
+ CP_RCP_OTA_MSG = 12
+}DsaOtaMsgT;
+
+typedef enum
+{
+ bestEffort,
+ reliable,
+ bestEfforInAccessReliableInTraffic
+} DsarTransModeT;
+
+typedef enum
+{
+ DO_CC, /* for UTS (MON_CP_FCP_SNP_RAW_DATA_SPY_ID), this is msg in CC for UATI or RATI*/
+ DO_FTC,
+ DO_AC,
+ DO_RTC,
+ DO_EAC, /* NoUsed*/
+ DO_BCMC,
+ DO_BC_ADR /* msg in CC for broadcast (BATI), for UTS (MON_CP_FCP_SNP_RAW_DATA_SPY_ID) only */
+}DoChanTypeT;
+
+typedef struct
+{
+ kal_uint8 transId;
+ kal_uint16 protocolType;
+ kal_bool InConfigurationProtocol;
+ ConfirmResponseE status;
+} DsarTxStatusMsgT;
+
+typedef struct DsaFwdMsg
+{
+ kal_uint16 len; // Length of the SLP-F packet
+ kal_uint16 offset; // offset within 640 bytes buffer
+ kal_uint16 protocolType;
+ kal_bool InConfigurationProtocol;
+ CpBufferT * bufPtr; // Points to the SLP-F fragments
+ DoChanTypeT FwdPhyChanType;
+ kal_uint16 sysTimeInSlots;
+ void (*OTAMsgHandlerT)( struct DsaFwdMsg* );
+}DsaFwdMsgT;
+
+typedef struct
+{
+ CpBufferT *ptrBuffer;
+#ifdef MTK_PLT_ON_PC_UT
+ kal_uint8 bufData[20];
+#endif
+ kal_uint8 allowedChan;
+ kal_uint8 reliable;
+ ConfirmRequiredE confirmReq;
+ kal_bool InConfigurationProtocol;
+ kal_uint16 protocolType;
+ kal_uint8 transId;
+ kal_uint8 priority;
+} DsaRevMsgT;
+
+typedef struct
+{
+ kal_uint8 msgNum;
+ DsaRevMsgT msg[MAX_REV_MSG];
+} DsaRevMultiMsgT;
+
+typedef struct
+{
+ kal_uint8 Msg;
+} DsarTimeExpMsgT;
+
+typedef struct
+{
+ kal_uint8 revMacId;
+ kal_uint8 subStreamNum;
+} DsarTransmitRespMsgT;
+
+typedef struct
+{
+ module_type moduleId;
+ sap_type sapId;
+} DsaModuleT;
+
+kal_bool DsarAcquireTxAvailStatus (void);
+kal_bool DsarIsTxAvailFailStatus (void);
+kal_bool DsarIsWfrTxAvailStatus (void);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy\Trophy_wzhou_href22315\1 2013-11-27 05:31:00 GMT wzhou
+** HREF#22315: change DSAR callback to message-control mechanism.**/
+/**Log information: \main\Trophy\1 2013-11-27 05:40:02 GMT jzwang
+** href#22315**/
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_fcp_msg_struct.h b/mcu/interface/protocol/l2_c2k/evdo/do_fcp_msg_struct.h
new file mode 100644
index 0000000..560467d
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_fcp_msg_struct.h
@@ -0,0 +1,491 @@
+/*****************************************************************************
+* 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 :fcp_msg_struct.h
+*
+* DESCRIPTION :This module defines the Layer 2 ILM messgae IDs for the 1xRTT Protocol Stack.
+*
+*
+* HISTORY :
+* 1.File Create by atlas.xu, 2016,1,27
+*
+*****************************************************************************/
+
+#ifndef _FCP_MSG_STRUCT_H
+#define _FCP_MSG_STRUCT_H
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "kal_public_defs.h"
+#include "do_rcpapi.h"
+#include "do_rtmapi.h"
+#include "do_fcpapi.h"
+#include "ftapf.h"
+
+#include "fcpdefs.h"
+
+
+/* EvDO FCP Message */
+
+/* FCP_BRP_FWD_PKT_MSG */
+typedef struct
+{
+ kal_uint32 CrcResult;
+ kal_uint32 PreambleMacId;
+ kal_uint32 SupMacId;
+ kal_uint32 EpSize;
+ kal_uint32 SlotCount;
+ kal_uint32 DrcIndex;
+ kal_uint32 TimeStamp;
+ CpBufferT* RxDmaBufPtr;
+} fcp_brp_fwd_pkt_msg;
+
+/* MSG_ID_ELT_CCM_SUPERVISION_EXPIRED_CMD_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ EltCcmSupervisionExpiredCmdMsgT msg;
+} elt_ccm_supervision_expired_cmd_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ fcp_brp_fwd_pkt_msg msg;
+} fcp_brp_fwd_pkt_msg_struct;
+
+
+/* CCM_SCM_SESSION_OPENED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ccm_scm_session_opened_msg_struct;
+
+/* CCM_SCM_SESSION_CLOSED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ccm_scm_session_closed_msg_struct;
+
+/* CCM_CSP_ACTIVATE_CMD */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ccm_csp_activate_cmd_struct;
+
+/* CCM_IDP_ACTIVATE_CMD */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ccm_idp_activate_cmd_struct;
+
+/* CCM_INSP_ACTIVATE_CMD */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ccm_insp_activate_cmd_struct;
+
+/* CCM_IDP_DEACTIVATE_CMD */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ccm_idp_deactivate_cmd_struct;
+
+/* CCM_INSP_DEACTIVATE_CMD */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ccm_insp_deactivate_cmd_struct;
+
+/* CCM_ALMP_DEACTIVATE_CMD */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ccm_almp_deactivate_cmd_struct;
+
+/* CCM_SCM_KEEPALIVE_CFG_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ CcmSmpKeepAliveCfgT msg;
+} ccm_scm_keepalive_cfg_msg_struct;
+
+/* CCM_SCM_KEEPALIVE_RESET_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ccm_scm_keepalive_reset_msg_struct;
+
+
+/* FCP_RCP_STREAM_CONFIG_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FcpRcpStreamConfigMsgT msg;
+} fcp_rcp_stream_config_msg_struct;
+
+/* DSAF_RTM_LINK_ACQ_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsaf_rtm_link_acq_msg_struct;
+
+/* DSA_CCM_INTERRUPTED_IND_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsa_ccm_interrupted_ind_msg_struct;
+
+/* PAF_RUP_NETWORK_LOST_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} paf_rup_network_losg_msg_struct;
+
+/* DSAF_RUP_CONNECTION_INIT_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsaf_rup_connection_init_msg_struct;
+
+/* FTM_RUP_TCA_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FTCMACParmsGT ftcMacParams;
+} ftm_rup_tca_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FtmFtapDrcAckConfigT ftcMacParams;
+} ftm_ftap_drc_ack_config_msg_struct;
+
+/* FTAP_FTAPR_INIT_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FtaprFtapfInitMsgT msg;
+} ftap_ftapr_init_msg_struct;
+
+/* FTAP_ALMP_ST_UPDATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FtapAlmpStateupdateMsgT msg;
+} ftap_almp_st_update_msg_struct;
+
+/* FTAP_RUP_IDLEHO_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ftap_rup_idleho_msg_struct;
+
+/* FTAP_RUP_SERVING_SECTOR_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ftap_ccm_first_sync_cc_msg_struct;
+
+/* FTAP_RUP_SERVING_SECTOR_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ftap_rup_serving_sector_msg_struct;
+
+/* FTAP_RUP_TRAFFICCHANASSIGN_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FtapRupTrafficChanAssignMsgT msg;
+} ftap_rup_trafficchanassign_msg_struct;
+
+
+/* FTAP_ALMP_CONN_CLOSED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ftap_almp_conn_closed_msg_struct;
+
+/* FTAP_ALMP_CONN_FAILED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ftap_almp_conn_failed_msg_struct;
+
+/* FTAP_ALMP_CONN_RELEASED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ftap_almp_conn_released_msg_struct;
+
+/* FTAP_ALMP_CONN_OPENED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ftap_lmp_conn_opened_msg_struct;
+
+/* DRC_CSM_CELL_SWITCH_REQED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} drc_csm_cell_switch_reqed_msg_struct;
+
+/* DRC_CSM_CELL_SWITCH_OCCUR_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} drc_csm_cell_switch_occur_msg_struct;
+
+/* CCM_CLC_SUP_TIMER_RST_CMD */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ccm_clc_sup_timer_rst_cmd_struct;
+
+/* UT_FCP_DSAF_FWD_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsaFwdMsgT msg;
+ kal_uint8 data[CPBUF_SIZE_FWD]; /* data for the cpbuffer */
+} ut_fcp_dsaf_fwd_msg_struct;
+
+/* FTM_RUP_ACTIVATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ftm_rup_activate_msg_struct;
+
+/* FTM_RUP_DEACTIVATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ftm_rup_deactivate_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ PafDpaRlpStatPeekMsgT msg;
+} paf_dparlp_stat_peek_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ PafMfpaRlpStatPeekMsgT msg;
+} paf_mfparlp_stat_peek_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParPafRspStatusMsgT msg;
+} paf_paf_rsp_status_msg_struct;
+
+#ifdef PKT_TEST
+/*PAF_OTTS_FWD_DATA_IND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ PafOttsFwdDataIndMsgT msg;
+} paf_otts_fwd_data_ind_msg_struct;
+#endif
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpRlpRouteChangedMsgT msg;
+} hlp_fcp_rlproute_changed_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ PafTimerExpiredMsgT msg;
+} paf_timer_expired_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FcpTestFixDrcValMsgT msg;
+} fcp_est_fix_drcval_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ScpProtReconfigCnfMsgT msg;
+} scp_prot_reconfig_cnf_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ PafHlpFlowCtrlMsgT msg;
+} paf_hlp_flow_ctrl_msg_struct;
+
+/* PAF_RCP_SESSION_CONFIG_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ PafRcpSessionConfigMsgT msg;
+} paf_rcp_session_config_msg_struct;
+
+
+/* DSAF_SLP_BUF_FREE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint32* ptrPktList;
+ kal_bool bCpbufFree;
+} dsaf_slp_buf_free_msg_struct;
+
+
+/* PAF_IDP_CONN_OPENED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} paf_idp_conn_opened_msg_struct;
+
+/* PAF_CSP_CONN_CLOSED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} paf_csp_conn_closed_msg_struct;
+
+#ifdef MTK_PLT_ON_PC_UT
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FcpHlpRevDataReqMsgT msg;
+} ut_fcp_hlp_rev_data_req_msg_struct;
+
+/* UT_CCM_AMP_ATILIST_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UtCcmAmpATIListMsgT msg;
+} ut_ccm_amp_atilist_msg_struct;
+
+/* UT_FCP_CCM_COMMIT_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UtFcpCcmCommitMsgT msg;
+} ut_fcp_ccm_commit_msg_struct;
+
+/* FCP_TEST_RTM_DATA_IND_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ PafTestRtmDataIndMsgT msg;
+} fcp_test_rtm_data_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UtFtmGetAttribRspMsgT msg;
+} ut_fcp_ftm_get_attrib_rsp_msg_struct;
+
+/* UT_FCP_FWD_DATA_IND_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FcpFwdPktMsgT msg;
+ kal_uint8 RxDmaBufPtr[4][CPBUF_SIZE_FWD]; /* data for four cpbuffers */
+} ut_fcp_fwd_data_ind_msg_struct;
+
+#endif
+
+/*FCP_RMC_4_SLOT_IND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ut_fcp_rmc_4_slot_ind_msg_struct;
+
+/*MSG_ID_FCP_START_PCPF_OPERATIONS*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} fcp_start_pcpf_operations_msg_struct;
+
+/*MSG_ID_FCP_START_STREAM_LAYER_OPERATIONS*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} fcp_start_stream_layer_operations_msg_struct;
+
+/* MSG_ID_FCP_ETS_FTAP_STATS_CLR_REQ_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FtapEtsStatClrGetReqMsgT msg;
+} fcp_ets_ftap_stats_clr_req_msg_struct;
+
+/* MSG_ID_FCP_ETS_FTAP_STATS_GET_REQ_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FtapEtsStatClrGetReqMsgT msg;
+} fcp_ets_ftap_stats_get_req_msg_struct;
+
+/* MSG_ID_FCP_TST_CCM_INITIALIZE*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} fcp_tst_ccm_initialize_msg_struct;
+
+/* MSG_ID_FCP_TST_CCM_ACTIVATE*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} fcp_tst_ccm_activate_msg_struct;
+
+/* MSG_ID_FCP_TST_CCM_DEACTIVATE*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} fcp_tst_ccm_deactivate_msg_struct;
+
+/* MSG_ID_FCP_TST_MAC_PKT_LIST_INTEGRITY*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} fcp_tst_mac_pkt_list_integrity_msg_struct;
+
+/* MSG_ID_FCP_TST_CONN_LAYER_PKT_LIST_INTEGRITY*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} fcp_tst_conn_layer_pkt_list_integrity_msg_struct;
+#endif
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_fcpapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_fcpapi.h
new file mode 100644
index 0000000..aab07c8
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_fcpapi.h
@@ -0,0 +1,445 @@
+/*****************************************************************************
+* 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_fcpapi.h
+*
+* DESCRIPTION : API definition for FCP (Forward Channnel Processing) Task.
+*
+* HISTORY :
+*****************************************************************************/
+#ifndef _DO_FCPAPI_H_
+#define _DO_FCPAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_rupapi.h"
+#include "cpbuf.h"
+#include "do_slcapi.h"
+#include "do_hwdrxpdefs.h"
+#include "hlpapi.h"
+#ifdef MTK_PLT_ON_PC_UT
+#include "do_rcpapi.h"
+#endif
+#include "kal_public_defs.h"
+#include "slc_nvram.h"
+#include "do_fcp_msgid.h"
+
+
+#ifdef EXE_UTE_TST_TASK /* test task is ON...*/
+ #ifndef DRC_TEST
+ #define DRC_TEST
+ #endif
+#endif
+
+
+#ifdef SYS_OPTION_DRC_ASIC_TEST /* For ASIC TEST...*/
+ #ifndef DRC_TEST
+ #define DRC_TEST 1
+ #endif
+#endif
+
+#ifdef SYS_OPTION_DRC_HW_TEST
+ #ifndef DRC_TEST
+ #define DRC_TEST
+ #endif
+#endif
+
+/*
+#if (USE_TST_TASK==KAL_TRUE)
+ #ifndef DRC_TEST
+ #define DRC_TEST
+ #endif
+#endif
+*/
+/* Just turn on the DRC_TEST now...*/
+/* #define DRC_TEST */
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_TRANS_ATI_NUMBER 10
+#define MAX_NUM_AppStream 4
+
+/*----------------------------------------------------------------------------
+ Mailbox IDs
+----------------------------------------------------------------------------*/
+#define FCP_TASK_MAILBOX EXE_MAILBOX_1_ID
+#define FCP_DATA_MAILBOX EXE_MAILBOX_2_ID
+
+#define FCP_TASK_MAILBOX_EVENT EXE_MESSAGE_MBOX_1 /* EXE_MAILBOX_1 */
+#define FCP_DATA_MAILBOX_EVENT EXE_MESSAGE_MBOX_2 /* EXE_MAILBOX_2 */
+
+/*----------------------------------------------------------------------------
+ * Q-value definitions
+----------------------------------------------------------------------------*/
+/* Amplitude Log2 value * 6.0206 = 20log10(dBm) value */
+#define ALOG2_TO_DBM_CONVERSION_FACTOR_Q10 0x1815
+
+/* X(dBm) = 20 log X = (20 log2 X) / (log2 10),
+ * therefore log2 X = 1 / (20 log 2) * X(dBm)
+ * 1 / (20 log 2) = 0.16609640474436811... */
+#define DBM_TO_ALOG2_CONVERSION_FACTOR_Q16 0x2A85
+
+#define DrcRegisterTypeT kal_uint16
+
+/*----------------------------------------------------------------------------
+ Command Message IDs, for FCP task, for FCP_CMD_MAILBOX, EXE_MAILBOX_1_ID
+ The message IDs for components shall also be put in here.
+ Satya: Add all the PKT_SIM related messages into the area that is defined
+ between #ifdef/#endif..Contact me, if you need any clarifications!.
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+ define signals used by FCP task
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+ Message Formats structure
+----------------------------------------------------------------------------*/
+typedef enum {
+ CCM_INCONFIG,
+ CCM_INUSE,
+ CCM_MAX_INSTANCE
+} CcmInstanceT;
+
+typedef enum
+{
+ CCM_SUPERVISION_EXPIRED_TEST_IDLE,
+ CCM_SUPERVISION_EXPIRED_TEST_ACCESS,
+ CCM_SUPERVISION_EXPIRED_TEST_FINISH
+} CcmSupervisionExpiredTestStateT;
+
+extern CcmSupervisionExpiredTestStateT CcmSupervisionExpiredState;
+#define CCM_SUPERVISION_FAIL_TEST (CcmSupervisionExpiredState != CCM_SUPERVISION_EXPIRED_TEST_FINISH)
+#define CCM_SUPERVISION_FAIL_TEST_IDLE (CcmSupervisionExpiredState == CCM_SUPERVISION_EXPIRED_TEST_IDLE)
+#define CCM_SUPERVISION_FAIL_TEST_ACCESS (CcmSupervisionExpiredState == CCM_SUPERVISION_EXPIRED_TEST_ACCESS)
+
+typedef PACKED_PREFIX struct {
+ kal_uint32 TKeepAliveTransTime;
+} PACKED_POSTFIX CcmSmpKeepAliveCfgT;
+
+typedef PACKED_PREFIX struct{
+ kal_uint8 ATIType;
+ kal_uint32 ATI;
+ kal_uint32 SystemTime;
+ kal_bool Use;
+} PACKED_POSTFIX ATITypeT;
+
+typedef PACKED_PREFIX struct
+{
+ ATITypeT *RcvATIList;
+} PACKED_POSTFIX CcmAmpATIListMsgT;
+
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 MsgSeq;
+ kal_uint8 ChanInc;
+ ChanRecGT Chan;
+ kal_uint8 DRCLength; /*in unit of slot*/
+ kal_int8 DRCChannelGainBase; /*in unit of 0.5db, valid range (-9dB,+6dB) */
+ kal_int8 ACKChannelGain; /* 0.5db, valid range (-3dB,+6dB) */
+ kal_uint8 NumPilots;
+ kal_uint8 SofterHandoff[SYS_MAX_ACTIVE_LIST_PILOTS];/*1 bit*/
+ kal_uint8 MACIndex[SYS_MAX_ACTIVE_LIST_PILOTS]; /* 7 bits, computed MACIndex by LSB&MSB fields*/
+ kal_uint8 DRCCover[SYS_MAX_ACTIVE_LIST_PILOTS]; /* 3 bits*/
+ kal_uint8 RAChannelGainInc; /*1 bits*/
+ kal_uint8 RAChannelGain[SYS_MAX_ACTIVE_LIST_PILOTS];/* 2 bits*/
+ kal_uint8 DSCChanInc;
+ kal_int8 DSCChannelGainBase; /*0.5dB*/
+ kal_uint8 DSC[SYS_MAX_ACTIVE_LIST_PILOTS]; /* 3 bits each pilot of SofterHandOff=0 */
+} PACKED_POSTFIX FTCMACParmsGT;
+
+typedef struct {
+ kal_uint32 TimerId;
+}PafTimerExpiredMsgT;
+
+
+typedef enum {
+ ACCESSSTREAM=1,
+ SERVICESTREAM
+}StreamType;
+
+
+typedef struct {
+ kal_bool bXOnOff;
+ StreamType StreamID;
+} PafHlpFlowCtrlMsgT;
+
+typedef struct {
+ StreamConfigAttribT StreamConfigData;
+} FcpRcpStreamConfigMsgT;
+
+typedef enum
+{
+ PAF_Default = 0x0,
+ PAF_MultiFlow
+}
+PafSubTypeT;
+
+
+
+
+#if defined (MTK_PLT_ON_PC)
+ typedef struct {
+ DatapktlistGT pktList;
+ } PafTestRtmDataIndMsgT;
+#endif
+
+#ifdef PKT_TEST
+ typedef PACKED_PREFIX struct {
+ kal_uint8 nAppType;
+ kal_uint16 PktLen;
+ CpBufferT* CpBufPtr;
+ kal_uint16 PktStartOffset;
+ } PACKED_POSTFIX PafOttsFwdDataIndMsgT;
+#endif
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 TCAMsgSeq;
+} PACKED_POSTFIX FtapRupTrafficChanAssignMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 AlmpST;
+} PACKED_POSTFIX FtapAlmpStateupdateMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 Protocol;
+ kal_uint16 SubApp;
+} PACKED_POSTFIX FtaprFtapfInitMsgT;
+
+/* Packet performance measurement */
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 TotalFwdPhySlot; /* Count how many slots have been used.*/
+ kal_uint32 TotalBits; /* in unit of 128 bit*/
+ kal_uint32 BadPackets; /* missing packet on AT side*/
+ kal_uint32 TotalTxPacket; /* Number of packet sent by AN*/
+ kal_uint16 TotalCCPacket;
+ kal_uint16 FwdPER; /* BadPackets/TotalTxPacket*/
+ kal_uint16 AN_ThrPut; /* TotalBits/TotalFwdPhySlot*/
+ kal_uint16 AT_ThrPut; /* TotalBits/time*/
+} PACKED_POSTFIX FcpPacketPerfStatT;
+
+extern FcpPacketPerfStatT FcpPacketPerfStat;
+extern FcpPacketPerfStatT FtapPacketPerfStat;
+
+/* Periodic packet performance statistics for debug */
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 PeriodStartSystimeFrame;
+ kal_uint32 PeriodEndSystimeFrame;
+ kal_uint32 CCValidPackets; /* Number of valid packets received on Control Channel */
+ kal_uint32 CCBadPackets; /* Number of CRC error packets on Control Channel*/
+ kal_uint32 CCTotalPackets; /* Total number of packets on Control Channel*/
+ kal_uint32 FTCValidPackets; /* Number of valid packets received on Forward Traffic Channel */
+ kal_uint32 FTCBadPackets; /* Number of CRC error packets on Forward Traffic Channel */
+ kal_uint32 FTCTotalPackets; /* Total number of packets on Forward Traffic Channel */
+ kal_uint32 TotalPackets; /* Total number of packets on AT side */
+} PACKED_POSTFIX FcpPeriodicPacketPerfStatT;
+
+/* MSG_ID_ELT_CCM_SUPERVISION_EXPIRED_RSP_MSG */
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 Reserved;
+} PACKED_POSTFIX EltCcmSupervisionExpiredRspMsgT;
+
+/* MSG_ID_ELT_CCM_SUPERVISION_EXPIRED_CMD_MSG */
+typedef PACKED_PREFIX struct
+{
+ CcmSupervisionExpiredTestStateT CcmSupervisionExpiredTestState;
+} PACKED_POSTFIX EltCcmSupervisionExpiredCmdMsgT;
+
+extern FcpPeriodicPacketPerfStatT FcpPeriodicPacketPerfStat;
+
+extern kal_uint32 FcpPerfStartTimeInSlot;
+extern void FcpPerfDataReset(kal_uint32 CurTimeInSlot);
+
+extern kal_uint32 TotalSingUserPacketBytes;
+extern kal_uint32 TotalMultUserPacketBytes;
+
+
+
+typedef struct {
+ DatapktlistGT pktList;
+} FtapTestRtmDataIndMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ ExeRspMsgT RspInfo;
+} PACKED_POSTFIX PafMfpaRlpStatPeekMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ ExeRspMsgT RspInfo;
+} PACKED_POSTFIX PafDpaRlpStatPeekMsgT;
+
+typedef struct
+{
+ kal_timerid ccmTimerId;
+} CcmSupTimerT;
+
+
+#ifdef MTK_PLT_ON_PC_UT
+typedef struct {
+ ATITypeT RcvATIList[MAX_TRANS_ATI_NUMBER];
+} UtCcmAmpATIListMsgT;
+
+typedef struct {
+ kal_uint8 CCShortPacketsMACIndex;
+ RcpModeT UtRcpMode;
+} UtFcpCcmCommitMsgT;
+
+typedef struct {
+ CpBufferT *bufPtr;
+ kal_uint16 offset;
+ kal_uint16 dataLen;
+} FcpHlpRevDataReqMsgT;
+
+typedef struct {
+ kal_uint8 reqSeq;
+ kal_uint8 ucRsv;
+ kal_uint16 rspAttribDataLen;
+ kal_uint8 AttribId;
+ kal_uint8 aucRsv[3];
+} UtFcpFtmSetAttribMsgT;
+
+typedef struct {
+ kal_uint8 AttribId;
+ kal_uint8 ucRsv[3];
+} UtFtmGetAttribMsgT;
+
+typedef struct {
+ kal_uint8 AttribId;
+ kal_uint8 usRsv;
+ kal_uint16 usLen;
+ kal_uint8 *pucData;
+} UtFtmGetAttribRspMsgT;
+
+typedef struct FcpFwdPktMsg
+{
+ kal_uint32 RxDmaStatus;
+ kal_uint8 bMacValid[4];
+ kal_uint8 MacId[4];
+ kal_uint16 MacPacketTimestamp[4];
+ kal_uint16 Drc_C2i[4];
+ kal_uint32 RxDmaPakcetRec[4];
+ CpBufferT *RxDmaBufPtr[4];
+ kal_uint8 PrevFmpMacId[4];
+ kal_uint8 CurrFmpMacId[4];
+ kal_bool FmpMacIdChange[4];
+ kal_uint16 PacketC2I;
+}FcpFwdPktMsgT;/*This message use only on UT, otherwise in 6293, most FCP UT testcase must be changed.*/
+
+
+#endif /* MTK_PLT_ON_PC_UT */
+
+/*----------------------------------------------------------------------------
+ Global Variables
+----------------------------------------------------------------------------*/
+typedef enum
+{
+ FAST_2_ch = 0,
+ FAST_1_ch,
+ SLOW_ch,
+ Stationary_ch,
+ AWGN_ch,
+ NO_Decision_ch,
+ Non_Force_chTyp /* For test mode*/
+
+}DRCChanTypeT;
+
+typedef enum {
+ NO_DECISION,
+ RLP_ACK,
+ RLP_NAK
+} RlpAckNakStatusT;
+
+typedef enum {
+ CCM_SCP_CONFIG_REQ_MSG = 0x50,
+ CCM_SCP_CONFIG_RSP_MSG = 0x51
+} CcmOTAMsgIdT;
+
+extern RlpAckNakStatusT RlpAckNakStatus;
+extern DRCChanTypeT DRCChannelType;
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+extern void DRCFixedTxRateDisable(void);
+extern void DRCParameterReinstate(void);
+
+extern void FtmFwdTrafficValidFailure(void);
+
+extern kal_bool GetFtapLoopBackMode(void);
+extern kal_uint8 GetFixDrcMode(void);
+
+
+extern kal_uint16 CCCycleStartTime;
+extern kal_bool FirstCCMPktFound;
+extern void FcpGetFwdDataStats(kal_uint32* pRxTotalBytes, kal_uint32* pRxNewDataPkts, kal_uint32* pCurFrameCnt);
+extern void FcpHwTestHwTrigger(kal_uint32 dummy);
+extern void DrcFastChSingleAntImprv(kal_bool enable);
+extern kal_uint16 FcpGetFtmSubtype (void);
+extern void FcpInit(void);
+
+extern void fcp_process_ilm(ilm_struct *current_ilm);
+extern void FcpSendEltMsg(msg_type msg_id, local_para_struct *log_msg_ptr);
+extern kal_bool PafCheckNoData(void);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy\Trophy_yanliu_href21996\1 2013-03-12 07:53:32 GMT yanliu
+** HREF#21996: fix for DO MPS 3.3.1 Dynamic Range - Test 2 and Test3 Fail**/
+/**Log information: \main\Trophy\1 2013-03-12 08:05:42 GMT yanliu
+** HREF#21996 merged, fix DO dynamic range failure**/
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_ftmapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_ftmapi.h
new file mode 100644
index 0000000..b28db84
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_ftmapi.h
@@ -0,0 +1,98 @@
+/*****************************************************************************
+* 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_ftmapi.h
+*
+* DESCRIPTION : API definition for FTM (Forward Traffic Channel MAC).
+*
+* HISTORY :
+*****************************************************************************/
+#ifndef _DO_FTMAPI_H_
+#define _DO_FTMAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_fcpapi.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+typedef enum {
+ FTM_INACTIVE_STATE,
+ FTM_ACTIVE_STATE,
+ FTM_PENDING_STATE,
+ FTM_STATE_END
+}FtmStateT;
+
+/******************************************************************************
+ Prototypes
+******************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Message Formats structure
+----------------------------------------------------------------------------*/
+
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+/* NST: used in NST */
+extern void FtmEnhanceCreateInConfigInstance(kal_bool resetToDefault);
+extern void FtmEnhanceCommitHandler(void);
+extern void FtmDefaultCreateInConfigInstance(kal_bool resetToDefault);
+extern void FtmDefaultCommitHandler(void);
+#endif
+
+#ifdef MTK_PLT_ON_PC_UT
+extern void FtmSetAttrib(UtFcpFtmSetAttribMsgT *pFtmSetAttrib);
+extern void FtmGetAttrib(kal_uint16 attr_id);
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_hwdrxpdefs.h b/mcu/interface/protocol/l2_c2k/evdo/do_hwdrxpdefs.h
new file mode 100644
index 0000000..2bc10d3
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_hwdrxpdefs.h
@@ -0,0 +1,172 @@
+/*****************************************************************************
+* 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_HWDRXPDEFS_H_
+#define _DO_HWDRXPDEFS_H_
+/*****************************************************************************
+*
+* FILE NAME : do_hwdrxpdefs.h
+*
+* DESCRIPTION : DO RxPath register defines
+* It include preamble detector, Harq, Turbo decoder, Rx Controller.
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+#define HWD_CP_TD_MODE_SHIFT 0
+#define HWD_CP_TD_DEC_TYPE_SHIFT 1
+#define HWD_CP_TD_LC_SCALE_SHIFT 2
+#define HWD_CP_TD_ITER_OTHERS_SHIFT 5
+#define HWD_CP_TD_ITER_5120_SHIFT 9
+
+#define HWD_CP_TD_MODE_DO (0x00000000 << HWD_CP_TD_MODE_SHIFT)
+#define HWD_CP_TD_MODE_1X_SCH (0x00000001 << HWD_CP_TD_MODE_SHIFT)
+
+#define HWD_CP_TD_DEC_TYPE_MAX_LOG_MAP (0x00000000 << HWD_CP_TD_DEC_TYPE_SHIFT)
+#define HWD_CP_TD_DEC_TYPE_MAX_STAR (0x00000001 << HWD_CP_TD_DEC_TYPE_SHIFT)
+
+
+/* HWD_DMA_MDM_RX_CTL */
+#define DMA_MDM_RX_RST_N_SHIFT 24 /* [24] */
+#define DMA_MDM_RX_RST_N (0x00000001 << DMA_MDM_RX_RST_N_SHIFT)
+#define DMA_MDM_RX_RST (0x00000000 << DMA_MDM_RX_RST_N_SHIFT)
+
+#define DMA_MDM_RX_ENABLE_SHIFT 16 /* [16] */
+#define DMA_MDM_RX_ENABLE (0x00000001 << DMA_MDM_RX_ENABLE_SHIFT)
+#define DMA_MDM_RX_DISABLE (0x00000000 << DMA_MDM_RX_ENABLE_SHIFT)
+
+#define DMA_MDM_RX_CHANNEL_SHIFT 8 /* [10:8] */
+#define DMA_MDM_RX_CHANNEL_MASK (0x00000007 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_0 (0x00000000 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_1 (0x00000001 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_2 (0x00000002 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_3 (0x00000003 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_4 (0x00000004 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_5 (0x00000005 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_6 (0x00000006 << DMA_MDM_RX_CHANNEL_SHIFT)
+#define DMA_MDM_RX_CHANNEL_7 (0x00000007 << DMA_MDM_RX_CHANNEL_SHIFT)
+
+
+#define DMA_MDM_RX_CHANNEL DMA_MDM_RX_CHANNEL_6
+
+#define DMA_MDM_RX_SW_SOF_SHIFT 4 /* [4] */
+#define DMA_MDM_RX_SW_SOF (0x00000001 << DMA_MDM_RX_SW_SOF_SHIFT)
+
+#define DMA_MDM_RX_DEST_TYPE_SHIFT 3 /* [3] */
+#define DMA_MDM_RX_DEST_INC (0x00000001 << DMA_MDM_RX_DEST_TYPE_SHIFT)
+#define DMA_MDM_RX_DEST_FIX (0x00000000 << DMA_MDM_RX_DEST_TYPE_SHIFT)
+
+#define DMA_MDM_RX_TD_DEBUG_SHIFT 2 /* [2] */
+#define DMA_MDM_RX_TD_DEBUG_EN (0x00000001 << DMA_MDM_RX_TD_DEBUG_SHIFT)
+#define DMA_MDM_RX_TD_DEBUG_NO (0x00000000 << DMA_MDM_RX_TD_DEBUG_SHIFT)
+
+#define DMA_MDM_RX_INT_INTERVAL_SHIFT 0 /* [1:0] */
+#define DMA_MDM_RX_INT_1_SLOT (0x00000000 << DMA_MDM_RX_INT_INTERVAL_SHIFT)
+#define DMA_MDM_RX_INT_2_SLOT (0x00000001 << DMA_MDM_RX_INT_INTERVAL_SHIFT)
+#define DMA_MDM_RX_INT_4_SLOT (0x00000002 << DMA_MDM_RX_INT_INTERVAL_SHIFT)
+#define DMA_MDM_RX_INT_8_SLOT (0x00000003 << DMA_MDM_RX_INT_INTERVAL_SHIFT)
+
+#define DMA_MDM_RX_ERROR_CLR_SHIFT 25
+#define DMA_MDM_RX_ERROR_CLR_MASK (0x00000001 << DMA_MDM_RX_ERROR_CLR_SHIFT)
+
+/* Bit defines for PacketRecord/HWD_DMA_MDM_RX_PRMx*/
+/* #define PACKET_REC_VALID_SHIFT 31 Bit[31] */
+#define PACKET_REC_GOOD_SHIFT 30 /* Bit[30]*/
+#define PACKET_REC_BCMCS_SHIFT 29 /* Bit[29]*/
+#define PACKET_REC_MAC_IDX_SHIFT 22 /* Bits[28:22]*/
+#define PACKET_REC_DRC_SHIFT 18 /* Bit[21:18]*/
+#define PACKET_REC_EP_SIZE_SHIFT 15 /* Bit[17:15]*/
+#define PACKET_REC_RATE_DET_SHIFT 14 /* Bit[14]*/
+#define PACKET_REC_SLOT_COUNT_SHIFT 10 /* Bit[13:10]*/
+#define PACKET_REC_TIME_STAMP_SHIFT 4 /* Bit[9:4]*/
+#define PACKET_REC_CRC_SHIFT 3 /* Bit[3]*/
+#define PACKET_REC_FIXED_NAK_FIX_SHIFT 2 /* Bit[2]*/ /* no defined by HW, SW defined value*/
+#define PACKET_REC_START_OF_PKT_SHIFT 1 /* Bit[1]*/
+#define PACKET_REC_COMPLETE_SHIFT 0 /* Bit[0]*/
+
+/* the commented define causes compiler warnings, replaced with a direct bitfield define
+#define PACKET_REC_VALID_MASK (0x00000001 << PACKET_REC_VALID_SHIFT )
+*/
+#define PACKET_REC_VALID_MASK 0x80000000
+#define PACKET_REC_GOOD_MASK (0x00000001 << PACKET_REC_GOOD_SHIFT )
+#define PACKET_REC_BCMCS_MASK (0x00000001 << PACKET_REC_BCMCS_SHIFT )
+#define PACKET_REC_MAC_IDX_MASK (0x0000007F << PACKET_REC_MAC_IDX_SHIFT )
+#define PACKET_REC_DRC_MASK (0x0000000F << PACKET_REC_DRC_SHIFT )
+#define PACKET_REC_EP_SIZE_MASK (0x00000007 << PACKET_REC_EP_SIZE_SHIFT )
+#define PACKET_REC_RATE_DET_MASK (0x00000001 << PACKET_REC_RATE_DET_SHIFT )
+#define PACKET_REC_SLOT_COUNT_MASK (0x0000000F << PACKET_REC_SLOT_COUNT_SHIFT )
+#define PACKET_REC_TIME_STAMP_MASK (0x0000003F << PACKET_REC_TIME_STAMP_SHIFT )
+#define PACKET_REC_CRC_MASK (0x00000001 << PACKET_REC_CRC_SHIFT )
+#define PACKET_REC_FIXED_NAK_FIX_MASK (0x00000001 << PACKET_REC_FIXED_NAK_FIX_SHIFT ) /* no defined by HW, SW defined value*/
+#define PACKET_REC_START_OF_PKT_MASK (0x00000001 << PACKET_REC_START_OF_PKT_SHIFT )
+#define PACKET_REC_COMPLETE_MASK (0x00000001 << PACKET_REC_COMPLETE_SHIFT )
+
+/* HWD_DMA_MDM_RX_STAT */
+#define DMA_RX_ERROR_SHIFT 24
+#define DMA_RX_ERROR_MASK (0xf << DMA_RX_ERROR_SHIFT)
+
+
+/*************************
+* DMA's view of memory address*
+**************************/
+/* Note HWD_DMA_IRAMx_BASE and HWD_CP_IRAMx_BASE share the same memory*/
+
+/* DO turbo decoder buffer access */
+#define HWD_DO_TD_OUTPUT 0x0B480000 /*DMA TD IF */
+
+/*************************
+* Defines *
+**************************/
+
+#define DO_FWD_MAX_PKT_SIZE 640
+#define RX_MDM_INT_INTERVAL_CFG DMA_MDM_RX_INT_4_SLOT
+#define RX_MDM_INT_INTERVAL (0x01 << RX_MDM_INT_INTERVAL_CFG) /* in slots*/
+#define RX_MDM_SPY_INTERVAL 4 /* count by INT interval*/
+
+/*****************************************************************************
+* $Log: $
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_ims.h b/mcu/interface/protocol/l2_c2k/evdo/do_ims.h
new file mode 100644
index 0000000..9784512
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_ims.h
@@ -0,0 +1,521 @@
+/*****************************************************************************
+* 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) 2009-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: do_ims.h
+ * Module: inc
+ * Description: definitions of IMS
+ *
+ * Restrictions:
+ *
+ * Dependencies:
+ *
+ *************************************************************************
+ *************************************************************************
+
+ ************************************************************************/
+#ifndef _DO_IMS_H
+#define _DO_IMS_H
+
+#include "do_Qos.h"
+#include "hlpapi.h"
+#include "iratapi.h"
+
+#ifndef MAX_APN_NUM
+#define MAX_APN_NUM 20
+#endif
+
+#ifndef MAX_APN_NI_LEN
+#define MAX_APN_NI_LEN 100
+#endif
+
+#ifndef MTK_DEV_C2K_IRAT
+#ifndef MAX_PDN_NUM
+#define MAX_PDN_NUM 5
+#endif
+#ifndef MAX_APN_LEN
+#define MAX_APN_LEN 100
+#endif
+#endif /* MTK_DEV_C2K_IRAT */
+#define MAX_ADDR_STR_LEN 72
+#define MAX_SUPPORTED_ADDR_NUM 4
+extern kal_uint8 HlpMainPdnID;
+
+typedef enum
+{
+ IMS_IDLE,
+ IMS_WFR_PPP_CONN,
+ IMS_WFR_PDN_CONN,
+ IMS_WFR_IPADDR_CONFIG,
+ IMS_WFR_QOS_NEGO,
+ IMS_PPP_CONNECTED,
+ IMS_WFR_PDN_REL,
+ IMS_WFR_SIP_REGISTRATION,
+ IMS_WFR_QOS_REL,
+ IMS_WFR_CALL_SETUP,
+ IMS_CALL_CONNECTED,
+ IMS_WFR_CALL_RELEASE,
+ IMS_WFR_SIP_DEREGISTRATION,
+ IMS_WFR_SESSION_MODIFY,
+ IMS_PDN_CONNECTED
+}IMSStateEnumT;
+
+typedef enum
+{
+ NullReq,
+ DialUpReq,
+ SIPRegReq,
+ AppConnReq,
+ NetwkConnReq,
+ NetwkInitQoSReq,
+ NetwkRelReq,
+ AppRelReq,
+ /*DailUpRelInd,*/
+ PdnRelInd,
+ SessionSetupInd,
+ SessionRelInd,
+ SIPDeregInd,
+ QoSRelInd
+}IMSEventTypeT;
+
+typedef enum
+{
+ OPT_SUCC,
+ OPT_FAIL,
+ OPT_DUPLICATE,
+ OPT_PDN_RENEGO
+}AppOptStatusT;
+
+typedef enum
+{
+ UM_PPP_REL,
+ RM_PPP_REL,
+ SIP_DEREGISTER
+
+}AppReleaseIndT;
+
+typedef enum
+{
+ APP_DIAL_UP,
+ APP_SIP,
+ APP_VOIP,
+ APP_LTE,
+ MAX_SUPPORTED_APPLICATION
+}AppTypeEnumT;
+
+typedef enum
+{
+ PDN_SUCCESS,
+ PDN_FAIL,
+ PDN_REJECT,
+ PDN_TIMEOUT
+}PdnResultEnumT;
+
+/*this flag is used to set to include additional param in PCO, 1-P-CSCF addr req, the other values are reserved*/
+typedef enum
+{
+ NULL_FLAG,
+ PCSCF_ADDR_REQ,
+}PDPTypeEnumT;
+
+
+typedef struct
+{
+ AppTypeEnumT Application;
+ kal_uint8 FlowNum;
+ HlpQoSFlowInfoT FlowInfo[MAX_SUPPORTED_IPFLOW];
+}IMSApplicationResourceT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ IPAddrTypeT AddrType;
+ kal_uint8 AppNum;
+ IMSApplicationResourceT AppRes[MAX_SUPPORTED_APPLICATION];
+}IMSResourceInfoT;
+
+typedef struct
+{
+ kal_uint8 num;
+ IMSResourceInfoT ResourceInfo[MAX_PDN_NUM];
+}IMSResourceInfoList;
+
+
+typedef struct
+{
+ IMSResourceInfoList ResourceList;
+}ImsAppNetwkResourceMsgT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ kal_uint8 PdnType;
+ kal_uint8 AttachType;
+ kal_uint32 PDN_Address[5]; /*the last byte is IPv4 Addr*/
+ kal_uint32 IP4DefRouterAddr;
+ PDPTypeEnumT PDPFlag;
+ kal_uint8 APNLen;
+ kal_uint8 APN[MAX_APN_LEN];
+}ImsAppNetwkConnReqMsgT;
+
+typedef struct
+{
+ AppTypeEnumT AppType;
+ kal_uint8 DialAddr[MAX_ADDR_STR_LEN];
+ kal_uint8 FlowNum;
+ kal_uint16 PortNum[MAX_SUPPORTED_IPFLOW];
+}ImsAppConnReqMsgT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ AppTypeEnumT AppType;
+}ImsAppConnRelMsgT;
+
+typedef struct
+{
+ kal_uint8 SIPServerAddr[MAX_ADDR_STR_LEN];
+}ImsAppSIPRegistrationReqMsgT;
+
+typedef struct
+{
+ kal_uint8 Result;
+ kal_uint32 LocalIPAddr;
+ kal_uint32 RemoteIPAddr;
+}ImsCamPppIndT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ PdnResultEnumT Result;
+}ImsPppPdnConnRspMsgT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ kal_uint8 RecInd;
+}ImsPppPdnRelIndMsgT;
+
+typedef struct
+{
+ kal_uint8 result;
+ kal_uint32 IP6GlobalAddress[4];
+ kal_uint32 IP6LocalAddress[4];
+ kal_uint32 IP6RouterAddress[4];
+ kal_uint8 PdnId;
+}IMSIpv6ConfgRspMsgT;
+
+typedef struct
+{
+ AppOptStatusT Status;
+ AppTypeEnumT AppType;
+ IPAddrTypeT AddrType;
+ kal_uint32 LocalIPAddr[5];/*the last kal_uint32 is IPv4*/
+ kal_uint32 RemoteIPAddr;
+ DataConnErrCodeT ErrCode;
+}AppImsSetupRspMsgT;
+
+typedef struct
+{
+ AppOptStatusT Status;
+ AppTypeEnumT AppType;
+}AppImsReleaseRspMsgT;
+
+typedef struct
+{
+ kal_uint8 AppType;
+ kal_uint8 Reason;
+}AppImsReleaseIndMsgT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ kal_uint8 BearerId;/*use 0xf0|PdnId to indicate default bearer*/
+ AppOptStatusT Status;
+ IPAddrTypeT AddrType;
+ kal_uint32 LocalIPAddr[5];/*the last kal_uint32 is Ipv4 addr*/
+ kal_uint8 Pcscf6Num;
+ kal_uint32 PCSCF6Addr[MAX_SUPPORTED_ADDR_NUM][4];
+ kal_uint8 DNS6Num;
+ kal_uint32 DNS6Addr[MAX_SUPPORTED_ADDR_NUM][4];
+ kal_uint8 Pcscf4Num;
+ kal_uint32 PCSCF4Addr[MAX_SUPPORTED_ADDR_NUM];
+ kal_uint8 DNS4Num;
+ kal_uint32 DNS4Addr[MAX_SUPPORTED_ADDR_NUM];
+
+ kal_uint32 RouteAddr;
+ kal_uint8 IP6Interfaceid[8];
+ kal_uint8 SelBearerCtrlMode;
+ DataConnErrCodeT ErrCode;
+ kal_uint8 ResContainerLen; /*length of Operation reserved PCO container FF00H, 0 means not available*/
+ kal_uint8 ResContainer[255]; /*content of operation reserved PCO container FF00H*/
+#ifdef SPRINT_EXTENSIONS
+ kal_uint32 DNSPriAddr;
+ kal_uint32 DNSSecAddr;
+#endif
+#ifdef MTK_CBP //MTK_DEV_C2K_IRAT
+ kal_uint16 IPv4MTU;
+#endif /* MTK_DEV_C2K_IRAT */
+}AppImsNetwkConnRspMsgT;
+
+typedef struct
+{
+ AppOptStatusT Status;
+}AppImsNetwkRelRspMsgT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ IPAddrTypeT AddrType;
+ kal_uint8 APNLen;
+ kal_uint8 APN[MAX_APN_LEN];
+ kal_uint8 Num;
+ kal_uint16 ProfileID[MAX_SUPPORTED_IPFLOW];
+ QoMPktFilterContentT Tft[MAX_SUPPORTED_IPFLOW];
+}AppImsBearerReqMsgT;
+
+typedef enum
+{
+ TYPE_LOCAL_ADDR,
+ TYPE_GLOBAL_ADDR
+}HlpImsIPv6AddrTypeT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ kal_uint8 Type;
+ kal_uint8 Ipv6Addr[16];
+}HlpImsSetIPv6AddrMsgT;
+
+typedef enum
+{
+ PDN_AUTH_NULL,
+ PDN_AUTH_PAP,
+ PDN_AUTH_CHAP,
+}HlpImsPdnAuthTypeT;
+
+#ifdef MTK_CBP //MTK_DEV_C2K_IRAT
+typedef PACKED_PREFIX struct {
+ kal_uint8 PdnId;
+ kal_uint8 PdnType;
+ kal_uint8 AttachType;
+ kal_uint32 PDN_Address[5]; /*the last kal_uint32 is IPv4 Addr*/
+ kal_uint32 IP4DefRouterAddr;
+ PDPTypeEnumT PDPFlag;
+ kal_uint8 APNLen;
+ kal_uint8 APN[MAX_APN_LEN];
+ kal_uint8 AuthType;
+ kal_uint8 UserId[HLP_MAX_USRID_LEN+1];
+ kal_uint8 pwdLen;
+ kal_uint8 PassWord[HLP_MAX_PSWD_LEN];
+ kal_uint8 ModuleName[HLP_MAX_USRID_LEN+1];
+} PACKED_POSTFIX HlpNetConnReqT;
+
+typedef struct {
+ kal_bool NeedResetConn; /* Flag to indicate if we have to locally reset the data connection without communicating with the network. */
+} HlpCssNetRelT;
+
+typedef struct {
+ kal_uint32 Cause; /* Cause to trigger Network Release Request */
+} HlpValNetRelT, HlpValNetwkRelRspMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 PdnId;
+ IPAddrTypeT AddrType;
+ kal_uint8 APNLen;
+ kal_uint8 APN[MAX_APN_LEN];
+ kal_uint8 Num;
+ kal_uint16 ProfileID[MAX_SUPPORTED_IPFLOW];
+ QoMPktFilterContentT Tft[MAX_SUPPORTED_IPFLOW];
+} PACKED_POSTFIX HlpBearerSetupReqT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ kal_uint8 Bearer_Id;
+}HlpBearerDisconnReqT;
+#endif /* MTK_DEV_C2K_IRAT */
+
+typedef struct
+{
+ kal_uint8 ApnIdx;
+ kal_uint8 ApnLength;
+ kal_uint8 Apn[MAX_APN_LEN];
+ kal_uint16 InactivityTime; /*unit: minute*/
+}EApnSyncT;
+
+typedef struct
+{
+ kal_bool ClearAllApnInfo;
+ EApnSyncT EApnSynUserDef;
+}HlpEapnsyncDefineReqMsgT;
+
+typedef struct
+{
+ kal_uint8 Mcc1;
+ kal_uint8 Mcc2;
+ kal_uint8 Mcc3;
+ kal_uint8 Mnc1;
+ kal_uint8 Mnc2;
+ kal_uint8 Mnc3;
+}OpPcoPlmnIdT;
+
+typedef struct
+{
+ kal_bool ReqV4MTU;
+ kal_uint32 OpPcoId;
+ OpPcoPlmnIdT OpPcoPlmnId;
+}VzwPcoCfgT;
+
+#define HLP_VZW_PCO_MCCMNC_TO_SEND_LEN 3
+
+typedef struct
+{
+ kal_bool MtuReq;
+ kal_uint16 PcoCode;
+ kal_uint8 PcoMccMnc[HLP_VZW_PCO_MCCMNC_TO_SEND_LEN];
+} HlpVzwSpecPco;
+
+typedef enum
+{
+ InitialAttach = 1,
+ HandOverAttach = 3
+}EHRPDPdnAttachTypeT;
+
+typedef struct
+{
+ IPAddrTypeT AddrType;
+ kal_uint32 LocalIPAddr[5];/*the last uint32 is Ipv4 addr*/
+ kal_uint8 Pcscf6Num;
+ kal_uint32 PCSCF6Addr[MAX_SUPPORTED_ADDR_NUM][4];
+ kal_uint8 DNS6Num;
+ kal_uint32 DNS6Addr[MAX_SUPPORTED_ADDR_NUM][4];
+ kal_uint8 Pcscf4Num;
+ kal_uint32 PCSCF4Addr[MAX_SUPPORTED_ADDR_NUM];
+ kal_uint8 DNS4Num;
+ kal_uint32 DNS4Addr[MAX_SUPPORTED_ADDR_NUM];
+ kal_uint32 RouteAddr;
+ kal_uint8 SelBearerCtrlMode;
+ kal_uint8 ResContainerLen; /*length of Operation reserved PCO container FF00H, 0 means not available*/
+ kal_uint8 ResContainer[255]; /*content of operation reserved PCO container FF00H*/
+ kal_uint32 PriDNSAddr;
+ kal_uint32 SecDNSAddr;
+ kal_uint16 IPv4MTU;
+}NwAppliedParmEHRPDT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ IPAddrTypeT PdnType;
+ EHRPDPdnAttachTypeT AttachType;
+ kal_uint32 PDN_Address[5]; /*the last uint32 is IPv4 Addr*/
+ kal_uint32 IP4DefRouterAddr;
+ PDPTypeEnumT PDPFlag;
+ kal_uint8 APNLen;
+ kal_uint8 APN[MAX_APN_LEN];
+ HlpImsPdnAuthTypeT AuthType;
+ kal_uint8 UserId[HLP_MAX_USRID_LEN+1];
+ kal_uint8 pwdLen;
+ kal_uint8 PassWord[HLP_MAX_PSWD_LEN];
+ VzwPcoCfgT PCO4Vzw;
+ HlpPppRouteTypeE RouteType;
+} HlpEhrpdBearerConnReqMsgT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ DataConnErrCodeT ErrCode;
+ NwAppliedParmEHRPDT Parm;
+} HlpEhrpdBearerConnCnfMsgT;
+
+typedef enum {
+ NORMAL_RELEASE,
+ LOCAL_RESET,
+}DataDiscTypeT;
+
+typedef struct {
+ kal_uint8 PdnId;
+ DataDiscTypeT DiscType;
+}HlpEhrpdBearerDisconReqMsgT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ DataDiscTypeT DiscType;
+}HlpEhrpdBearerDisconCnfMsgT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ DataConnErrCodeT ErrCode;
+ DataDiscCauseT Cause;
+}HlpEhrpdBearerDisconIndMsgT;
+
+typedef struct
+{
+ kal_uint8 PdnId;
+ NwAppliedParmEHRPDT Parm;
+}HlpEhrpdBearerModifyIndMsgT;
+
+
+#ifdef CBP7_EHRPD
+kal_bool HlpImsGeteHRPDAttr(void);
+kal_uint8 HlpImsGetPdnIdByAppType(AppTypeEnumT AppType);
+void HlpImsClearAppInfo(void);
+#endif
+/***********************************************************************
+ Structures and Definitions
+***********************************************************************/
+
+
+
+#endif
+/**Log information: \main\CBP80\cbp80_yzhang_scbp10127\1 2012-08-03 06:45:35 GMT yzhang
+** Sprint EHRPD requirement:IPCP,AUTH,DNS Server Addr in PCO of VSNCP**/
+/**Log information: \main\Trophy\Trophy_xding_href22331\1 2013-12-10 07:17:40 GMT xding
+** HREF#22331, ºÏ²¢MMCÏà¹Ø¹¦Äܵ½Trophy baselineÉÏ**/
+/**Log information: \main\Trophy\1 2013-12-10 08:33:07 GMT jzwang
+** href#22331:Merge MMC latest implementation from Qilian branch.**/
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_msgdefs.h b/mcu/interface/protocol/l2_c2k/evdo/do_msgdefs.h
new file mode 100644
index 0000000..c6daebf
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_msgdefs.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 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.
+*
+*************************************************************/
+#ifndef _DO_MSGDEFS_H_
+#define _DO_MSGDEFS_H_
+/*****************************************************************************
+
+ FILE NAME: do_msgdefs.h
+
+ DESCRIPTION:
+
+ This file contains message defines for DO system
+
+*****************************************************************************/
+
+/*-----------------------------------------------------------------------**
+** DO mailbox message ID range, 0x00002000~0x00003FFF **
+**Notes: DO mailbox message ID will be unique in the system, differnt to **
+** 1xRTT, which is unique in mailbox. **
+** DO message ID can map to DO SPY ID for automatic mailbox log. **
+**-----------------------------------------------------------------------*/
+#define DO_MBOX_MSG_ID_BASE 0x00002000
+
+/*-----------------------------------------------------------------------**
+** DO mailbox message ID block defines **
+**Notes: DO mailbox message ID will be unique in the system, differnt to **
+** those in 1xRTT, which are unique in mailbox. **
+** DO message IDs are partitioned into 64 blocks, each block has **
+** 128 IDs. A mailbox can have multiple ID blocks if needed. **
+**-----------------------------------------------------------------------*/
+
+/* Mailbox message block start address. 59 blocks used. Total allows 64 blocks */
+/* one command block, one data block and one OtaMsg block for each task */
+/* one command block for each component */
+
+#define HSC_MPA_MSGID_START 0x00002000
+#define HSC_SPDO_MSGID_START 0x00002040
+#define HSC_SP1X_MSGID_START 0x00002080
+#define HSC_CMD_MSGID_START 0x000020C0
+#define SLC_CMD_MSGID_START 0x00002180
+#define SLC_CMD_MSGID_SMP_START 0x00002200
+#define SLC_CMD_MSGID_SCP_START 0x00002280
+#define SLC_CMD_MSGID_AMP_START 0x00002300
+#define SLC_OTAMSG_MSGID_START 0x00002380
+#define CLC_CMD_MSGID_START 0x00002400
+#define CLC_CMD_MSGID_ALMP_START 0x00002480
+#define CLC_CMD_MSGID_INSP_START 0x00002500
+#define CLC_CMD_MSGID_IDP_START 0x00002580
+#define CLC_CMD_MSGID_CSP_START 0x00002600
+#define CLC_CMD_MSGID_OMP_START 0x00002680
+#define CLC_CMD_MSGID_IRATM_START 0x000026A0
+#define CLC_OTAMSG_MSGID_START 0x00002700
+#define RMC_CMD_MSGID_START 0x00002780
+#define RMC_CMD_MSGID_SCH_START 0x00002800
+#define RMC_CMD_MSGID_FMP_START 0x00002880
+#define RMC_CMD_MSGID_CSM_START 0x00002900
+#define RMC_CMD_MSGID_RFC_START 0x00002980
+#define RMC_CMD_MSGID_RUP_START 0x00002A00
+#define CLC_CMD_MSGID_RUP_IRATM_START 0x00002A60
+#define RMC_OTAMSG_MSGID_START 0x00002B00
+#define FCP_CMD_MSGID_START 0x00002B80
+#define FCP_CMD_MSGID_FTM_START 0x00002C00
+#define FCP_CMD_MSGID_CCM_START 0x00002C80
+#define FCP_CMD_MSGID_PCPF_START 0x00002D00
+#define FCP_CMD_MSGID_DSPR_START 0x00002D80
+#define FCP_CMD_MSGID_VSPF_START 0x00002E00
+#define FCP_CMD_MSGID_AESF_START 0x00002E80
+#define FCP_CMD_MSGID_AUPF_START 0x00002F00
+#define FCP_CMD_MSGID_SECF_START 0x00002F80
+#define FCP_CMD_MSGID_DSAF_START 0x00003000
+#define FCP_CMD_MSGID_CSNR_START 0x00003080
+#define FCP_CMD_MSGID_DPAR_START 0x00003100
+#define FCP_CMD_MSGID_MFPAR_START 0x00003180
+#define FCP_CMD_MSGID_EMFAR_START 0x00003200
+#define FCP_CMD_MSGID_FTAP_START 0x00003280
+#define FCP_DATA_MSGID_START 0x00003300
+#define FCP_OTAMSG_MSGID_START 0x00003380
+#define RCP_CMD_MSGID_START 0x00003400
+#define RCP_CMD_MSGID_ACM_START 0x00003480
+#define RCP_CMD_MSGID_RTM_START 0x00003500
+#define RCP_CMD_MSGID_PCPR_START 0x00003580
+#define RCP_CMD_MSGID_DSPR_START 0x00003600
+#define RCP_CMD_MSGID_VSPR_START 0x00003680
+#define RCP_CMD_MSGID_AESR_START 0x00003700
+#define RCP_CMD_MSGID_AUPR_START 0x00003780
+#define RCP_CMD_MSGID_SECR_START 0x00003800
+#define RCP_CMD_MSGID_DSAR_START 0x00003880
+#define RCP_CMD_MSGID_CSNR_START 0x00003900
+#define RCP_CMD_MSGID_DPAR_START 0x00003980
+#define RCP_CMD_MSGID_MFPAR_START 0x00003A00
+#define RCP_CMD_MSGID_EMFAR_START 0x00003A80
+#define RCP_CMD_MSGID_RTAP_START 0x00003B00
+#define RCP_CMD_MSGID_TXH_START 0x00003B80
+#define RCP_DATA_MSGID_START 0x00003C00
+#define RCP_OTAMSG_MSGID_START 0x00003C80
+#define RCP_TEST_MSGID_START 0x00003D00
+#define RCP_CMD_MSGID_SL_START 0x00003D80
+#define SEC_CMD_MSGID_START 0x00003E00
+#define SEC_CMD_MSGID_EAKA_START 0x00003E20
+#define TLS_CMD_MSGID_START 0x00003F00
+#define DO_MAILBOX_MSGID_END 0x00003F00
+
+
+/*-----------------------------------------------------------------------**
+** END **
+**-----------------------------------------------------------------------*/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_rcp_msg_struct.h b/mcu/interface/protocol/l2_c2k/evdo/do_rcp_msg_struct.h
new file mode 100644
index 0000000..62eb8a3
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_rcp_msg_struct.h
@@ -0,0 +1,1154 @@
+/*****************************************************************************
+* 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_rcp_msg_struct.h
+*
+* DESCRIPTION :
+*
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#ifndef _DO_RCP_MSG_STRUCT_H
+#define _DO_RCP_MSG_STRUCT_H
+#include "par.h"
+#include "rtap.h"
+#include "ftapf.h"
+#include "rtm.h"
+#include "rtmqos.h"
+#include "rcpcsm.h"
+#include "do_rcpapi.h"
+#include "do_slapi.h"
+#include "do_dsaapi.h"
+
+/* MACRO definitions */
+#define MAX_LLD_LOG_DATA_LEN 16
+#define MAX_LLD_LOG_NUM 10
+
+/* EvDO RCP Message */
+/* RCP_DATA_MAILBOX */
+
+/* UT_RCP_DSAF_FWD_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsaFwdMsgT msg;
+ kal_uint8 data[CPBUF_SIZE_FWD]; /* data for the cpbuffer */
+} ut_rcp_dsaf_fwd_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint16 data_size;
+ kal_uint16 lld_num;
+ struct
+ {
+ kal_uint16 data_len;
+ kal_uint8 data[MAX_LLD_LOG_DATA_LEN]; /* MAC data of each LLD for UT check */
+ }lld_data[MAX_LLD_LOG_NUM];
+} ut_rcp_dma_data_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmCfgDataT msg;
+} ut_rcp_rtm_commit_msg_struct;
+
+#ifdef MTK_PLT_ON_PC_UT
+/* UT_PAR_DSA_FWD_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsaFwdMsgT msg;
+ kal_uint8 data[CPBUF_SIZE_FWD]; /* data for the cpbuffer */
+} ut_par_dsa_fwd_msg_struct;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint16 acm_subtype;
+ AcmAttributesT acmAttribute;
+} ut_rcp_acm_commit_msg_struct;
+
+/* UT_PAR_QOM_SEND_QOSREQUEST_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 data[CPBUF_SIZE_REV];
+} ut_par_qom_send_qosrequest_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 revMacId;
+} rcp_tst_phy_traffic_acked_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 revMacId;
+} rcp_tst_phy_traffic_missed_struct;
+
+/*MSG_ID_RCP_TST_PKT_SENT*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 macid;
+} rcp_tst_pkt_sent_msg_struct;
+
+/*MSG_ID_RCP_TST_PKT_NOT_SENT*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 macid;
+} rcp_tst_pkt_not_sent_msg_struct;
+
+/* MSG_ID_RCP_TST_CREATE_MAC_FLOW_LIST*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 macid;
+ kal_uint8 streamId;
+ kal_uint8 SSid;
+ kal_uint8 stype;
+} rcp_tst_create_mac_flow_list_msg_struct;
+
+/* RCP_TST_MAC_FLOW_LIST_INTEGRITY*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_tst_mac_flow_list_integrity_msg_struct;
+
+/* MSG_ID_RCP_TST_COMMIT_APP_FN_PTRS*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_tst_commit_app_fn_ptrs_msg_struct;
+
+/* MSG_ID_RCP_TST_ADD_MSG_TO_QUE*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 appsubtype;
+ kal_uint8 size;
+ kal_uint8 prio;
+} rcp_tst_add_msg_to_que_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_tst_print_app_ques_msg_struct;
+
+/* MSG_ID_RCP_TST_GRANT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 NumFlowsRcvingThisGrant;
+ kal_uint8 grantByteSize[4];
+} rcp_tst_grant_msg_struct;
+
+
+/* MSG_ID_RCP_TST_PRINT_ASSEMBLED_PKT_LIST*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_tst_print_assembled_pkt_list_struct;
+
+
+#endif
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ StreamConfigAttribT msg;
+} ut_stream_commit_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint16 subtype;
+} ut_stream1_commit_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint16 subtype;
+} ut_stream2_commit_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParServiceConfigDataT serviceConfigData;
+} ut_stream3_commit_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint16 signalId;
+ kal_uint32 action;
+ kal_uint16 slot;
+} ut_acm_log_out_signal_msg_struct;
+
+
+/* used to set mac bits */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmTestMbpMacBitsOutputMsgT mbpMacBitsOutput;
+} ut_mbp_mac_bits_output_msg_struct;
+
+/* used to set do systime */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ SysTimeFullT sysTimeFull;
+} ut_set_stdo_msg_struct;
+
+/* DSAF_FWD_MSG, only for from SNP to RCP */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsaFwdMsgT msg;
+} dsaf_fwd_msg_struct;
+
+
+/* RCP_ADJ_UPDATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpAdjUpdateT msg;
+} rcp_adj_update_msg_struct;
+
+
+/* RCP_CMD_MAILBOX */
+/* RCP_RMC_RFREADY_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_rmc_rfready_msg_struct;
+
+/* RCP_RMC_RFRELEASE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_rmc_rfrelease_msg_struct;
+
+/* MSG_ID_RCP_CSM_SECTOR_INFO_UPDATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpUpdateSectorInfoMsg msg;
+} rcp_csm_sector_info_update_msg_struct;
+
+/* MSG_ID_RCP_CSM_SECTOR_C2I_UPDATE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpUpdateC2IMsg msg;
+} rcp_rmc_sector_c2i_update_msg_struct;
+
+/*RCP_CSM_ACTIVE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpCsmActiveMsgT msg;
+} rcp_csm_active_msg_struct;
+
+/*RCP_CSM_DEACTIVE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_csm_deactive_msg_struct;
+
+/*RCP_CSM_SECTOR_INFO_REQ_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_csm_sector_info_req_struct;
+
+/*RCP_CSM_DONE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_csm_done_msg_struct;
+
+
+/*RCP_CSM_FORCE_DEDICATE_COVER_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_csm_force_dedicate_cover_struct;
+
+/*RCP_CSM_HSC_PREEMPT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpCsmHscStopTxMsgT msg;
+} rcp_csm_hsc_preempt_struct;
+
+/*RCP_CSM_HSC_RESUME_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_csm_hsc_resume_struct;
+
+/*RCP_CSM_TX_FREEZE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_csm_tx_freeze_struct;
+
+/*RCP_CSM_TX_UNFREEZE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_csm_tx_unfreeze_struct;
+
+/*RCP_CSM_TCA_IND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpCsmTcaIndMsgT msg;
+} rcp_csm_tca_ind_msg_struct;
+
+/*MSG_ID_RCP_CSM_CELLSWRDY_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ Evl1CsmRdyMsgT msg;
+} rcp_csm_cellswrdy_msg_struct;
+
+
+/*MSG_ID_RCP_CSM_C2I_RD_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ Evl1CsmC2iRdMsgT msg;
+} rcp_csm_c2i_rd_msg_struct;
+
+
+/*RCP_SH_RFREADY_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_sh_rfready_msg_struct;
+
+/*RCP_SH_RFRELEASE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rcp_sh_rfrelease_msg_struct;
+
+
+/* RCP_AMP_ATILIST_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AcmAmpATIListMsgT msg;
+} rcp_amp_atilist_msg_struct;
+
+/* RTM_TXOFF_INIT_BUFFER_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmTxOffInitBufferMsgT msg; /* rtm.h */
+} rtm_txoff_init_buffer_msg_struct;
+
+/* MSG_ID_RTM_AMP_TXATI_UPDATE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AcmAmpATIListMsgT msg;
+} rtm_amp_txati_update_msg_struct;
+
+
+/* ACM_RUP_ACTIVATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AcmRupActivateMsgT msg;
+} acm_rup_activate_msg_struct;
+
+/* ACM_RUP_DEACTIVATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} acm_rup_deactivate_msg_struct;
+
+/* ACM_DSA_ADD_BYTE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} acm_dsa_add_byte_msg_struct;
+
+/* ACM_OMP_SECTORPARMS_UPDATED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AcmOmpUpdatedMsgT msg;
+} acm_omp_sectorparms_updated_msg_struct;
+
+/* ACM_TIMER_EXPIRED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} acm_timer_expired_msg_struct;
+
+/* ACM_RUP_ACCESS_HO_IND_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} acm_rup_access_ho_ind_msg_struct;
+
+/* ACM_PROT_STOP_ACCESS_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AcmProtStopAccessMsgT msg;
+} acm_prot_stop_access_msg_struct;
+
+/* ACM_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} acm_scp_reconfigured_msg_struct;
+
+/* ACM_SCP_COMMITTED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} acm_scp_committed_msg_struct;
+
+/* RTM_RUP_ACTIVATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rtm_rup_activate_msg_struct;
+
+/* RTM_RUP_DEACTIVATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rtm_rup_deactivate_msg_struct;
+
+/* RTM_RUP_TCHASSIGN_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmRupTchAssignMsgT msg;
+} rtm_rup_tchassign_msg_struct;
+
+/* RTM_OMP_SECTORPARMS_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmOmpSectorParmsMsgT msg;
+} rtm_omp_sectorparms_msg_struct;
+
+/* RTM_FTM_CFG_DATA_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmFtmCfgDataMsgT msg;
+} rtm_ftm_cfg_data_msg_struct;
+
+/* RTM_SMP_SESSION_OPEN_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmSmpSessionOpenMsgT msg;
+} rtm_smp_session_open_msg_struct;
+
+/* RTM_CSS_SEARCH_END_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmCssSearchEndMsgT msg;
+} rtm_css_search_end_msg_struct;
+
+
+/* RTM_RTAP_MODE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmRtapModeMsgT msg;
+} rtm_rtap_mode_msg_struct;
+
+/* RTM_TMR_EXPIRED_MSG */
+
+/* RMC_RCP_RTAP_MODE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool RtapModeEn;
+} rtm_rmc_rtap_cfg_msg_struct;
+
+/* RMC_FCP_FTAP_MODE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool FtapModeEn;
+} fcp_rmc_ftapr_cfg_msg_struct;
+
+
+/* RTM_TMR_EXPIRED_MSG */
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmTmrExpiredMsgT msg;
+} rtm_tmr_expired_msg_struct;
+
+/* RTM_DRC_TX_CONTROL_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmDrcTxControlMsgT msg;
+} rtm_drc_tx_control_msg_struct;
+
+/* RTM_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rtm_scp_reconfigured_msg_struct;
+
+/* RTM_SCP_COMMITTED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rtm_scp_committed_msg_struct;
+
+/* SPY_RTM3_T2P_STATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtmQoSSpyDataT RtmQoSSpyData[RTM_QOS_SPY_SUBFR_NO];
+} spy_rtm3_t2p_state_msg_struct;
+
+/* UT_RTM_SWEEP_MODE_ACTIVATE_MSG */
+/* UT_DSAR_REV_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ut_rtm_sweep_mode_active_msg_struct;
+
+/* UT_RTM_SWEEP_MODE_DEACTIVATE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ut_rtm_sweep_mode_deactive_msg_struct;
+
+/* UT_DSAR_REV_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsaRevMsgT msg;
+ /* kal_uint8 dataLen; */
+ kal_uint8 data[CPBUF_SIZE_SIG]; /* data for the cpbuffer */
+} ut_dsar_rev_msg_struct;
+
+/* DSAR_REV_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsaRevMsgT msg;
+} dsar_rev_msg_struct;
+
+/* DSAR_REV_MULTI_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsaRevMultiMsgT multiMsg;
+} dsar_rev_multi_msg_struct;
+
+/* DSAR_TX_STATUS_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsarTxStatusMsgT msg;
+} dsar_tx_status_msg_struct;
+
+/* DSAR_DSAF_ACK_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsarAckMsgInfoT msg;
+} dsar_dsaf_ack_msg_struct;
+
+/* DSAR_DSAF_ACK_REQ_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsarAckReqMsgInfoT msg;
+} dsar_dsaf_ack_req_msg_struct;
+
+/* DSAR_DSAF_RESET_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsarResetMsgT msg;
+} dsar_dsaf_reset_msg_struct;
+
+/* DSAR_RUP_CONNECTION_INIT_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsar_rup_connection_init_msg_struct;
+
+/* DSAR_RTM_LINK_ACQ_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsar_rtm_link_acq_msg_struct;
+
+/* DSAR_TIME_EXP_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsarTimeExpMsgT msg;
+} dsar_time_exp_msg_struct;
+
+/* DSAR_SENT_IND_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsarTransmitRespMsgT msg;
+} dsar_sent_ind_msg_struct;
+
+/* DSAR_NOT_SENT_IND_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsarTransmitRespMsgT msg;
+} dsar_not_sent_ind_msg_struct;
+
+/* DSAR_ALMP_CONNECTION_CLOSED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsar_almp_connection_closed_msg_struct;
+
+/* DSAR_ALMP_DEL_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsarDelMsgCmdMsgT msg;
+} dsar_almp_del_msg_struct;
+
+/* DSAR_RUP_DEL_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsarDelMsgCmdMsgT msg;
+} dsar_rup_del_msg_struct;
+
+/* DSAR_ALMP_POWER_DOWN_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsar_almp_power_down_msg_struct;
+
+/* DSAR_AMP_RESET_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsarAmpResetMsgCmdMsgT msg;
+} dsar_amp_reset_msg_struct;
+
+/* DSAR_RUP_IDLE_HHO_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsar_rup_idle_hho_msg_struct;
+
+/* DSAR_CSS_CHAN_SCAN_START_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsar_css_chan_scan_start_msg_struct;
+
+/* DSAR_CSS_CHAN_SCAN_DONE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsar_css_chan_scan_done_msg_struct;
+
+/* DSAR_IDP_TX_AVAIL_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} dsar_idp_tx_avail_msg_struct;
+
+/* PAR_QOM_RESERVATION_REQ_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParRlpReservationOnOffMsgT msg;
+} par_qom_reservation_req_msg_struct;
+
+/* PAR_QOM_SEND_QOSREQUEST_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParSnKKQosReqMsgT msg;
+} par_qom_send_qosrequest_msg_struct;
+
+/* PAR_LUP_UNSOLICITED_CFG_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LUPUnsolicitedCfgMsgT msg;
+} par_lup_unsolicited_cfg_msg_struct;
+
+/* PAR_HLP_CLEANUP_QUEUE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} paf_hlp_stop_svcstrm_xoff_msg_struct;
+
+/* PAR_HLP_CLEANUP_QUEUE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} par_hlp_cleanup_queue_msg_struct;
+
+/* RTAP_ALMP_CONN_OPENED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rtap_almp_conn_opened_msg_struct;
+
+/* RTAP_ALMP_CONN_RELEASED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rtap_almp_conn_released_msg_struct;
+
+/* RTAP_ALMP_CONN_CLOSED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rtap_almp_conn_closed_msg_struct;
+
+/* RTAP_ALMP_CONN_FAILED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rtap_almp_conn_failed_msg_struct;
+
+/*RTAP_TIMER_EXPIRED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtapTimerExpiredMsgT msg;
+} rtap_timer_expired_msg_struct;
+
+
+/* RTAP_BURSTTIMER_EXPIRED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RtapTimerExpiredMsgT msg;
+} rtap_bursttimer_expired_msg_struct;
+
+/* RTAP_DSA_FWD_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsaFwdMsgT msg;
+} rtap_dsa_fwd_msg_struct;
+
+/* STR_SCP_COMMITTED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} str_scp_committed_msg_struct;
+
+/* STR1_SCP_COMMITTED_MSG */
+/* STR_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} str1_scp_committed_msg_struct;
+
+/* STR2_SCP_COMMITTED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} str2_scp_committed_msg_struct;
+
+/* STR3_SCP_COMMITTED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} str3_scp_committed_msg_struct;
+
+/* STR_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} str_scp_reconfigured_msg_struct;
+
+/* STR1_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} str1_scp_reconfigured_msg_struct;
+
+/* STR2_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} str2_scp_reconfigured_msg_struct;
+
+/* STR3_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} str3_scp_reconfigured_msg_struct;
+
+/* RCP_APP_TO_NEG_SET_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DoStreamConfigurationSetMsgT msg;
+} rcp_app_to_neg_set_msg_struct;
+
+/* AUTH_SHA_KEP_RPCAUTHKEY_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AuthKepRPCAuthKeyMsgT msg;
+} auth_sha_kep_rpcauthkey_msg_struct;
+
+
+/* AUTH_UPDATE_SECTORID_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AuthOmpSectorIDMsgT msg;
+} auth_update_sectorid_msg_struct;
+
+
+/* FTAPR_FTAPF_LOOPBACK_STATUS_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FtaprLoopBackStatusMsgT msg;
+} ftapr_ftapf_loopback_status_msg_struct;
+
+/* FTAPR_FTAPF_TEST_PKT_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ FtaprFcpTestPktMsgT msg;
+} ftapr_ftapf_test_pkt_msg_struct;
+
+/* FTAPR_RTM_STATUS_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} ftapr_rtm_status_msg_struct;
+
+/* PAR_DSA_FWD_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ DsaFwdMsgT msg;
+} par_dsa_fwd_msg_struct;
+
+/* UT_PAR_HLP_DATA_TX_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParHlpDataTxMsgT msg;
+ kal_uint8 data[MAX_RLP_HLP_PKT_NUM][CPBUF_SIZE_REV]; /* data for cpbuffer */
+} ut_par_hlp_data_tx_msg_struct;
+
+
+/* PAR_PAF_FLOWCTL_STATUS_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParPafFlowCtlStatMsgT msg;
+} par_paf_flowctl_status_msg_struct;
+
+/* PAR_PAF_RLP_RESET_REQ_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParPafRlpResetReqMsgT msg;
+} par_paf_rlp_reset_req_msg_struct;
+
+
+/* PAR_PAF_RSP_STATUS_MSG */
+/* PAR_IDP_CONN_OPENED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParPafRspStatusMsgT msg;
+} par_paf_rsp_status_msg_struct;
+
+
+/* PAR_IDP_CONN_OPENED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} par_idp_conn_opened_msg_struct;
+
+/* PAR_CSP_CONN_CLOSE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} par_csp_conn_close_msg_struct;
+
+/* PAR_HLP_DOS_TX_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParHlpDOSTxMsgT msg;
+} par_hlp_dos_tx_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParTExpireMsgT msg;
+} par_access_timer_expire_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParTExpireMsgT msg;
+} par_service_timer_expire_msg_struct;
+
+
+/* PAR_RESERVATION_TRANSITION_TIMER_EXPIRE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ParTExpireMsgT msg;
+} par_reservation_transition_timer_expire_msg_struct;
+
+/* PAR_GAUP_TM_EXPIRE_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} par_gaup_tm_expire_msg_struct;
+
+
+
+/* AUTH_SCP_RECONFIGURED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} auth_scp_reconfigured_msg_struct;
+
+/* AUTH_SCP_COMMITED_MSG */
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} auth_scp_commited_msg_struct;
+
+/* SEC_SCP_COMMITTED_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} sec_scp_commited_msg_struct;
+
+
+
+/* 93 adaptive interface */
+typedef struct
+{
+ kal_uint8 length;
+ kal_uint8 data[MAX_LLD_LOG_DATA_LEN]; /* MAC data of each LLD for UT check */
+} data_node_struct;
+
+/* 93 adaptive interface */
+typedef struct
+{
+ kal_uint16 data_size;
+ kal_uint16 node_num;
+ data_node_struct data_node[MAX_LLD_LOG_NUM];/* Each node for head or pkt content */
+} ut_rev_data_req_info_struct;
+
+/* Access */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ Evl1AccessPreambleT msg;
+} ut_acm_preamble_start_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ Evl1AccessCapsuleT msg;
+} ut_acm_data_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool immAction;
+} ut_acm_trans_stop_msg_struct;
+
+/* Traffic */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ Evl1TrafficParamInitT msg;
+} ut_rtm_param_init_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ Evl1TrafficParamReCfgT msg;
+} ut_rtm_param_recfg_msg_struct;
+
+typedef struct
+{
+ Evl1TrafficTransStartT trafficTransStart;
+ kal_bool isSlientExit;
+} ut_rtm_traffic_trans_start_info_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ut_rtm_traffic_trans_start_info_struct msg;
+} ut_rtm_trans_start_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ Evl1TrafficDataTransT trafficDataInfo;
+ ut_rev_data_req_info_struct dataContent;
+} ut_rtm_data_req_msg_struct;
+
+typedef struct
+{
+ kal_bool immAction;
+ Evl1TxTrafficReleaseTypeT releaseType;
+} ut_rtm_trans_stop_info_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ut_rtm_trans_stop_info_struct msg;
+} ut_rtm_trans_stop_msg_struct;
+
+
+typedef struct {
+ kal_uint8 *DataP;
+ kal_uint32 NumBytes;
+} GatherItemT;
+
+typedef struct {
+ ProtocolTypeE protocolType;
+ kal_uint8 subType;
+ kal_uint8 msgId;
+ GatherItemT ListP[10];
+ kal_uint8 NumSeg;
+} ota_msg_info_struct;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ota_msg_info_struct msg;
+} dsar_ota_msg_struct;
+
+typedef struct
+{
+ CpBufferT* freeCpBufList[MAX_RCP_RI_CPBUF_FREE_NUM];
+} cp_buf_free_list_struct;
+
+/* MSG_ID_RCP_CP_BUF_LIST_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ cp_buf_free_list_struct msg;
+} rcp_cp_buf_list_msg_struct;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpCsmHscStopTxMsgT msg;
+} rcp_csm_hsc_preempt_msg_struct;
+
+typedef struct
+{
+ kal_uint16 pktSize;
+ kal_uint8 *dataPtr;
+} RcpPktInfoMsgT;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpPktInfoMsgT msg;
+} rcp_pkt_info_msg_struct;
+
+
+#define MAX_UTS_RCP_RI_MSG_LENGTH 504
+typedef struct
+{
+ kal_uint32 msg_id;
+ kal_uint16 length;
+ CpBufferT* uts_msg_content_ptr;
+} uts_msg_content_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ uts_msg_content_struct msg;
+} uts_rcp_ri_msg_to_rcp_msg_struct;
+
+/* MSG_ID_ELT_ACM_SUPERVISION_EXPIRED_CMD_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} elt_acm_supervision_expired_cmd_msg_struct;
+
+/* end of rcp task msg */
+
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_rcpapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_rcpapi.h
new file mode 100644
index 0000000..50b1c51
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_rcpapi.h
@@ -0,0 +1,1801 @@
+/*****************************************************************************
+* 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_rcpapi.h
+*
+* DESCRIPTION : API definition for RCP (Reverse Channel Processing) task.
+*
+* HISTORY :
+*****************************************************************************/
+#ifndef _DO_RCPAPI_H_
+#define _DO_RCPAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "cpbuf.h"
+#include "hlpapi.h"
+#include "do_rmcapi.h"
+#include "kal_public_defs.h"
+#include "evl1rcpapi.h"
+#include "rcptxagc.h"
+#include "slc_nvram.h"
+#include "dspmapi.h"
+#include "cl1tsteltif.h"
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_STREAM_NUM 4
+#define MAX_NUM_DATAPKT_REC 120
+#define MAX_NUM_REVMACPKT_REC 10
+#define MAX_NUM_TXDMALLD_REC 120
+/* Fenix: Changed from 4 to 6, since Ericsson supports 5. */
+#define MAX_RLP_HLP_PKT_NUM 6
+
+#define MAX_FORMAT_B_SESSION_LAYER_LEN 255
+#define INVALID_REVMACID 0xFF
+#define MAX_REVMACID 0xFE
+
+#define INVALID_REVMACFLOWID 0xFF
+
+#define CONNLAYER_FORMATA 0
+#define CONNLAYER_FORMATB 1
+
+#define TXHW_ACCESS_CHAN 0
+#define TXHW_REV_TRAFFIC_CHAN 1
+
+#define MAX_RCP_RI_CPBUF_FREE_NUM 30
+
+/* SysTime Hw */
+#define ST_TX_MIL_0_MASK 0x0000FFFF
+#define ST_TX_MIL_1_MASK 0xFFFF0000
+#define ST_TX_MIL_1_SHIFT 16
+
+/* Macros used for Tx AGC Clipper threshold settings (should be the same as
+** clipper settings sent down to the DSPM for 1xRTT operations */
+#define RCP_REV_CLIP_MAX_LEVEL 0x03FF /* <10,2,u> = 3.996 - effectively disables reverse clipping */
+#define RCP_REV_CLIP_THRESHOLD_LIMIT 0x007F /* <7,0,u> = i.e., fractional ratio - no value greater than one */
+#define RCP_REV_CLIP_DEFAULT 0x02c0 /* same as SYS_DSPM_REV_REVMIXSIGPARM3_DEFAULT */
+
+#define RCP_REV_DELAY_LOAD_WINDOW_DEFAULT 0x3C /* delay loading window value: 60 chips */
+#define CHIP_OFFSET_BETWEEN_ON_AIR_AND_SLOT_INT 13
+/** Define DDPC control mode */
+#define DDPC_BYPASS 0 //DDPC disable in normal mode
+#define DDPC_OL_AB 1 //DDPC open loop,Delta using Absolute algorithm in normal mode
+#define DDPC_OL_REL 2 //DDPC open loop,Delta using Relative algorithm in normal mode
+#define DDPC_CL_AB 3 //DDPC closed loop,Delta using Absolute algorithm in normal mode
+#define DDPC_CL_REL 4 //DDPC closed loop,Delta using Relative algorithm in normal mode
+#define DDPC_TST_ENABLE 6 //DDPC loop enable, used in calibration mode, couplerLoss calibration
+#define DDPC_CAL_ENABLE 7 //DDPC loop diable, used in calibration mode, PA calibration
+#define RCP_MAX_NUM_PILOTS 6
+#define RCP_MAX_NUM_PCGS 6
+#define RCP_TX_DATA_ACK_ARRAY_SIZE 1 //RCP TX data buffer ACK arrary size
+#define RCP_TX_DATA_NAK_ARRAY_SIZE 3 //RCP TX data buffer NAK arrary size
+#define RCP_TX_DATA_ARRAY_SIZE (RCP_TX_DATA_ACK_ARRAY_SIZE + RCP_TX_DATA_NAK_ARRAY_SIZE)
+#define RCP_TX_DATA_BUFF_SIZE 1536//add one byte for 2 bits MAC trailer, and 128 alignment as well
+
+
+extern kal_bool bAcmSupervisionExpiredTest;
+#define ACM_SUPERVISION_FAIL_TEST (bAcmSupervisionExpiredTest == KAL_TRUE)
+
+/*----------------------------------------------------------------------------
+ Mailbox IDs
+----------------------------------------------------------------------------*/
+#define RCP_CMD_MAILBOX EXE_MAILBOX_1_ID
+#define RCP_DATA_MAILBOX EXE_MAILBOX_2_ID
+#define RCP_OTAMSG_MAILBOX EXE_MAILBOX_3_ID
+#define RCP_TEST_MAILBOX EXE_MAILBOX_4_ID
+
+/** PA mode enumeration */
+typedef enum
+{
+ HWD_PA_MODE_HIGH = 0,
+ HWD_PA_MODE_MID = 1,
+ HWD_PA_MODE_LOW = 2,
+ HWD_PA_MODE_NUM
+}HwdRfPaModeEnumT;
+
+
+#ifdef PKT_SIM
+/* temp solution for task ID */
+typedef enum /*_Task_ID_define*/
+{
+ EXE_HSC_ID_23 = 23, /* DO defines. */
+ EXE_SLC_ID_24 = 24,
+ EXE_CLC_ID_25 = 25,
+ EXE_RMC_ID_26 = 26, /* DO defines */
+ EXE_FCP_ID_27 = 27,
+ EXE_RCP_ID_28 = 28,
+ EXE_NUM_TASKS_end
+
+}ExeTaskIdT_PktSim;
+#endif
+
+/* Enumeration for ACMAC */
+typedef enum
+{
+ DEFAULT_ACMAC = 0,
+ ENHANCED_ACMAC
+} AcmacSubtypeE;
+
+/* define the timer ID for timers in ACMAC */
+typedef enum
+{
+ ACM_RTOS_TRANSMISSION_FAIL_TIMER,
+ ACM_RTOS_AP_SUPERVISION_TIMER,
+ ACM_RTOS_TRANSACTION_TIMER,
+ ACM_RTOS_TRANSACTION_TIMER1,
+ ACM_RTOS_TRANSACTION_TIMER2,
+ ACM_RTOS_TRANSACTION_TIMER3,
+ NUM_ACMTMRs
+} AcmTimerIdT;
+
+typedef enum
+{
+ ACM_CTL_INACTIVE_ST,
+ ACM_CTL_IDLE_ST,
+ ACM_CTL_PARMUPD_ST,
+ ACM_CTL_ACTXING_ST
+} AcmCtlStateE;
+
+/* CTL SM events */
+typedef enum {
+ ACM_START_ACCESS_EV,
+ ACM_ACCESS_PARMS_UPD_EV,
+ ACM_OMP_SYS_PARMS_UPD_EV,
+ ACM_ACTIVATE_EV,
+ ACM_DEACTIVATE_EV,
+ ACM_RUP_ACCESS_HO_EV,
+ ACM_RMC_RF_READY_EV,
+ ACM_RMC_RF_RELEASE_EV,
+ ACM_ACK_EV,
+ ACM_STOP_TRANS_EV
+} AcmCtlEventE;
+
+/* ACMAC RB state machine states and handler table */
+typedef enum
+{
+ ACM_RB_INACTIVE_ST,
+ ACM_RB_INTERSEQ_ST,
+ ACM_RB_PROBING_ST,
+ ACM_RB_INTERPROBE_ST
+} AcmRbStateE;
+
+/* RB SM events */
+typedef enum {
+ ACM_RB_ACTIVATE_EV,
+ ACM_RB_DEACTIVATE_EV,
+ ACM_RB_RF_RELEASE_EV,
+ ACM_RB_RF_READY_EV,
+ ACM_RB_HANDOFF_EV,
+ ACM_RB_PREAMBLE_SIG_EV,
+ ACM_RB_DATA_SIG_EV,
+ ACM_RB_INTER_SEQ_BACKOFF_TIMEOUT_EV,
+ ACM_RB_TEST_DELAY_TIMEOUT_EV,
+ ACM_TXOFF_CB_EV
+} AcmRbEventE;
+
+typedef enum
+{
+ RTM_INACTIVE = 0,
+ RTM_INACTIVE_NORF,
+ RTM_SETUP,
+ RTM_SETUP_NORF,
+ RTM_OPEN,
+ RTM_OPEN_NORF,
+ RTM_SETUP_SILENT,
+ RTM_SETUP_NORF_SILENT,
+ RTM_OPEN_SILENT,
+ RTM_OPEN_NORF_SILENT
+} RtmRmmStateT;
+
+typedef enum
+{
+ /* TX_SETTLE_DOWN_ST means TX is already at opened state or closed state
+ and doesn't plan to open or close */
+ TX_SETTLE_DOWN_ST = 0,
+ TXPATH_WAIT_FOR_SET_ST,
+ TXPATH_WAIT_FOR_RELEASE_ST,
+ TX_INVALID_ST
+} RtmTxStateT;
+
+typedef enum
+{
+ RTM_TX_PATH_RELEASE_EV = 0,
+ //RTM_TX_PATH_SET_EV,
+ RTM_RUP_ACTIVATE_EV,
+ RTM_RUP_DEACTIVATE_EV,
+ //RTM_TXAGC_OFF_EV,
+ RTM_RF_RELEASE_EV,
+ RTM_RF_READY_EV,
+ RTM_RTC_ACK_EV,
+ RTM_SILENT_ENTRY_EV,
+ RTM_SILENT_EXIT_EV,
+ RTM_RCP_TASK_SIG_EV,
+ RTM_INVALID_EV
+} RtmEvent;
+
+/*----------------------------------------------------------------------------
+ OTA Message IDs, for RCP_OTAMSG_MAILBOX
+----------------------------------------------------------------------------*/
+typedef enum /*_Message_ID_define*/
+{
+ /* ACM_OTA_SIGNALING_MSG = RCP_OTAMSG_MSGID_START, */
+ ACM_ACK_MSG, /* 0x00 */
+ ACM_ACCESS_PARMS_MSG, /* 0x01 */
+ ACM_SCP_CONFIG_REQ_MSG = 0x50,
+ ACM_SCP_CONFIG_RSP_MSG = 0x51,
+ ACM_ATTRIBUTE_UPDATE_REQUEST_MSG = 0x52,
+ ACM_ATTRIBUTE_UPDATE_ACCEPT_MSG,
+ ACM_ATTRIBUTE_UPDATE_REJECT_MSG,
+
+ Acm_OTA_MSG_MSGID_LAST
+} AcmOTAMsgIdT;
+
+
+/*----------------------------------------------------------------------------
+ RCP Test Message IDs, for RCP_TEST_MAILBOX
+----------------------------------------------------------------------------*/
+typedef enum /*_Message_ID_define*/
+{
+ RCP_TST_TX_CDMA_CTRL_MSG,
+
+ /* RTM Test Msgs */
+ RTM_TEST_CFG_MSG,
+ RTM_TEST_MBPMACBITSOUTPUT_MSG,
+ RTM_TEST_MFCGRANTCAL23_MSG,
+ RTM_TEST_PARM_GET_MSG,
+ RTM_TEST_PARM_SET_MSG,
+ RTM_TEST_TXCHANSTAT_GET_MSG,
+
+ /* ACM Test Msgs */
+ ACM_TEST_CFG_MSG,
+ ACM_TEST_ACACK_MSG,
+
+ /* PHY CHAN Test Msgs */
+ RCP_PHY_ACH_TEST_MSG,
+ RCP_PHY_TCH0_TEST_MSG,
+ RCP_PHY_TCH2_TEST_MSG,
+ RCP_TXDMA_TEST_CFG_MSG,
+ RCP_TXDMA_TEST_START_MSG,
+ RCP_TXDMA_TEST_READ_MSG,
+ RCP_PHY_TCH_TEST_DATA_WRITE_MSG,
+ RCP_PACKET_PERF_STAT_RESET_MSG,
+ RCP_RTM_QOS_TXMODE_SELECTION_MSG,
+
+ /* CpBuf Test Msgs */
+ SYS_CPBUF_TEST_GET_CMD_MSG,
+ SYS_CPBUF_TEST_FREE_CMD_MSG,
+ SYS_CPBUF_TEST_STATS_CMD_MSG,
+
+ TAP_TEST_INIT_MSG,
+ TAP_CONN_CLOSE_MSG,
+
+ FTAP_TEST_INIT_MSG,
+ FTAP_CONN_CLOSE_MSG,
+
+ ETS_SET_STRAPP_MSG,
+ ETS_MFPA_SET_SIMPLE_ATTR,
+ ETS_MFPA_SET_FlowNNIdentification_Attr,
+ ETS_MFPA_SET_FlowNNReservation_Attr,
+ ETS_MFPA_SET_FlowNNTimers_Attr,
+ ETS_MFPA_SET_SupportedHLProtocols_Attr,
+ ETS_MFPA_SET_ATSupportedQoSProfiles_Attr,
+ ETS_MFPA_READ_SUBSCRIB_QOS_PROFILE,
+ ETS_MFPA_IPFlow_Request_Attr,
+ ETS_MFPA_SET_CURLABEL_Attr,
+ ETS_MFPA_Delete_Flow,
+ ETS_MFPA_PPP_OPEN,
+ ETS_MFPA_RLP_STAT_RESET_MSG,
+ ETS_MFPA_RLP_STAT_PEEK_MSG,
+ ETS_MFPA_SEND_DOS_MSG,
+
+ ETS_DSAR_MSG_BLK_MSG,
+ RCP_TEST_MSG_MSGID_LAST
+
+} RcpTestMsgT;
+
+/* DecodeMessageResult*/
+typedef enum
+{
+ RCP_DECODE_MSG_OK,
+ RCP_DECODE_MSG_DUP, /*duplicate message, discard but not print error*/
+ RCP_DECODE_MSG_ERROR
+} RcpDecodeMsgResultE;
+
+/*----------------------------------------------------------------------------
+ define signals used by RCP task
+----------------------------------------------------------------------------*/
+#define RCP_CMD_MAILBOX_EVENT EXE_MESSAGE_MBOX_1 /* EXE_MAILBOX_1 */
+#define RCP_DATA_MAILBOX_EVENT EXE_MESSAGE_MBOX_2 /* EXE_MAILBOX_2 */
+#define RCP_OTAMSG_MAILBOX_EVENT EXE_MESSAGE_MBOX_3 /* EXE_MAILBOX_3 */
+#define RCP_TEST_MAILBOX_EVENT EXE_MESSAGE_MBOX_4 /* EXE_MAILBOX_4 */
+
+/*----------------------------------------------------------------------------
+ Message Formats structure
+----------------------------------------------------------------------------*/
+/** Define TX Calibration Type */
+typedef enum
+{
+ RCP_SIG_TYPE_PILOT = 0,
+ RCP_SIG_TYPE_ST2,
+ RCP_SIG_TYPE_PHYUT
+}RcpTstSigTypeT;
+
+/** define the command action enumeration */
+typedef enum
+{
+ RCP_ACTION_OFF,
+ RCP_ACTION_ON
+} RcpTstActionT;
+
+/* RCP_ETS_TX_AVAILABLE_PWR_TEST_MODE_MSG*/
+typedef enum
+{
+ TX_AVAILABLE_PWR_NORMAL_MODE = 0,
+ TX_AVAILABLE_PWR_NO_ACK_MODE,
+ TX_AVAILABLE_PWR_NO_ACK_DSC_MODE
+} RcpTxAvailPwrTestModeT;
+
+/* RCP_ETS_SET_HW_TRIGGER_MSG*/
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 Trigger; /* Disable, Access, Traffic*/
+ kal_uint8 FrameDelay;
+ kal_uint16 LongCodeMIL0; /* non-zero is for long code mask override*/
+ kal_uint16 LongCodeMIL1;
+ kal_uint16 LongCodeMIH0;
+} PACKED_POSTFIX RcpEtsSetHwTriggerMsgT;
+
+/* HW trigger type */
+typedef enum
+{
+ HW_TRIGGER_DISABLE=0,
+ HW_TRIGGER_ACCESS,
+ HW_TRIGGER_TRAFFIC
+} RcpHwTriggerT;
+
+/* array size for long code mask */
+#define RCP_LONG_CODE_MASK_SIZE 6
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint16 frameOffset;
+ kal_uint16 prePilotScale; /* 9,3,u */
+ kal_uint16 pilotScale; /* 9,3,u */
+ kal_uint16 rriDataAck0; /* Access Rate 1:9.6k, 2:19.2k, 3:38.4k */
+ kal_uint16 dataScale0Ack; /* 11,6,u */
+ kal_uint16 sDScale1; /* 4,3,t */
+ kal_uint16 sDScale2; /* 4,3,t */
+ kal_uint32 frameData[32]; /* 2 frame data 512 bits */
+ kal_uint16 bbCaptureFrame;
+ kal_uint16 testCase;
+} PACKED_POSTFIX RcpPhyAchTestMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint16 pilotScale; /* 9,3,u */
+ kal_uint16 dRCGating;
+ kal_uint16 dRCLen;
+ kal_uint16 dRCScale;
+ kal_uint16 ackSUPScale;
+ kal_uint16 ackMUPScale;
+ kal_uint16 rriDataAck1[4]; /* Access Rate 1:9.6k, 2:19.2k, 3:38.4k */
+ kal_uint16 dataScale0Ack[4]; /* 11,6,u per frame */
+ kal_uint16 sDScale1[4]; /* 4,3,t */
+ kal_uint16 sDScale2[4]; /* 4,3,t */
+ kal_uint16 dRCCover;
+ kal_uint16 dRCValue;
+ kal_uint16 rRIScaleAck;
+ kal_uint16 bbCaptureFrame;
+ kal_uint16 testCase;
+} PACKED_POSTFIX RcpPhyTch01TestMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint16 pilotScale; /* 9,3,u */
+ kal_uint16 dRCGating;
+ kal_uint16 dRCLen;
+ kal_uint16 dRCScale;
+ kal_uint16 ackSUPScale;
+ kal_uint16 ackMUPScale;
+ kal_uint16 rriDataAck2[12];
+ kal_uint16 rriDataNak2[12];
+ kal_uint16 dataScale0Ack[12]; /* 11,6,u per frame */
+ kal_uint16 dataScale0Nak[12]; /* 11,6,u per frame */
+ kal_uint16 dataScale1Ack[12]; /* 11,6,u per frame */
+ kal_uint16 dataScale1Nak[12]; /* 11,6,u per frame */
+ kal_uint16 dataScale2Ack[12]; /* 11,6,u per frame */
+ kal_uint16 dataScale2Nak[12]; /* 11,6,u per frame */
+ kal_uint16 dataScale3Ack[12]; /* 11,6,u per frame */
+ kal_uint16 dataScale3Nak[12]; /* 11,6,u per frame */
+ kal_uint16 dataScaleAck[12]; /* 11,6,u per frame */
+ kal_uint16 revAckData[12];
+ kal_uint16 twoBitAckNak[12];
+ kal_uint16 dRCLenBoost[12];
+ kal_uint16 dSCLenBoost[12];
+ kal_uint16 fwdAckData[48];
+ kal_uint16 rRIScaleAck;
+ kal_uint16 rRIScaleNak;
+ kal_uint16 dSCScale;
+ kal_uint16 dRCScaleBoost;
+ kal_uint16 dSCScaleBoost;
+ kal_uint16 auxPilotMinPayload;
+ kal_uint16 auxPilotScale;
+ kal_uint16 bbCaptureFrame;
+ kal_uint16 testCase;
+} PACKED_POSTFIX RcpPhyTch2TestMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 offsetAddr;
+ kal_uint32 dataLen;
+ kal_uint32 testData[128];
+} PACKED_POSTFIX RcpPhyTch01TestDataWriteMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 lldAddress;
+ kal_uint32 srcAddress;
+ kal_uint32 destAddress;
+ kal_uint32 nextLldAddress;
+ kal_uint8 srcData[32];
+ kal_uint16 dataLen;
+ kal_uint16 ackNak;
+ kal_uint16 firstLld;
+ kal_uint16 width;
+} PACKED_POSTFIX RcpTxDMATestMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool ackNak;
+} PACKED_POSTFIX RcpTxDMATestStartMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ ExeRspMsgT RspInfo;
+ kal_uint16 NumWords;
+ kal_uint32 Address;
+} PACKED_POSTFIX RcpTxDmaReadMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 Data[1];
+} PACKED_POSTFIX RcpTxDmaReadRspMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint16 slot_no;
+
+ kal_int16 ksd_scale_1st;
+ kal_int16 ksd_scale_2nd;
+ kal_int16 ksd_log2_1st;
+ kal_int16 ksd_log2_2nd;
+ kal_int16 ksd_index_1st;
+ kal_int16 ksd_index_2nd;
+} PACKED_POSTFIX RcpTxKsDataT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 TransATI;
+ kal_uint8 TransATIType;
+} PACKED_POSTFIX AcmAmpATIListMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool bUpdated;
+ kal_uint16 AccessSignature;
+ kal_uint8 ColorCode;
+ kal_uint32 SectorId;
+ kal_uint8 ReverseLinkSilencePeriod;
+ kal_uint8 ReverseLinkSilenceDuration;
+} PACKED_POSTFIX AcmOmpUpdatedMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 reason; /* 0--normal; 1--after preempt; */
+} PACKED_POSTFIX AcmRupActivateMsgT;
+
+typedef PACKED_PREFIX struct {
+ kal_uint8 action; /* 0--reset msg queue; 1--stop current msg; 2--*/
+} PACKED_POSTFIX AcmProtStopAccessMsgT;
+
+
+/* ETS ACM Test Cmd */
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 AcmTestMode;
+ kal_uint8 AccessDataRate;
+ kal_uint8 AccessCycleDuration;
+ kal_uint8 PreambleLength;
+ kal_uint8 ProbeSequenceMax;
+ kal_uint8 ProbeNumStep;
+ kal_uint8 ColorCode;
+ kal_uint32 SectorId;
+ kal_uint8 RpcTestMode;
+} PACKED_POSTFIX AcmTestCfgMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool TxStatus;
+
+} PACKED_POSTFIX RtmDrcTxControlMsgT;
+
+/* Tx Rate Test Message */
+typedef struct
+{
+ /* Turn on or off action*/
+ RcpTstActionT Action;
+
+ /* 0: reverse EVDO pilot only for EVDO
+ 1: reverse EVDO subtype2 for EVDO */
+ RcpTstSigTypeT DoSigType;
+ kal_uint16 EvChannelType;
+ kal_uint16 EvProtocolSubtype;
+ kal_uint16 EvAuxPilotMiniPayload;
+ kal_uint16 EvDrcGating;
+ kal_uint16 EvDrcBoostLength;
+ kal_uint16 EvDscBoostLength;
+ kal_uint16 EvDrcLength;
+ kal_uint16 EvFrameOffset;
+ kal_uint16 EvDataRate;
+ kal_uint16 EvDRCCover;
+ kal_uint16 EvDRCCover1;
+ kal_uint16 EvDRCCover2;
+ kal_uint16 EvDRCValue;
+ kal_uint16 EvDRCValue1;
+ kal_uint16 EvDSCValue;
+ kal_uint16 EvDSCValue1;
+ kal_uint16 EvDSCValue2;
+ kal_uint16 EvAckEnalble;
+ kal_uint16 EvAckUserType;
+ kal_uint16 EvAckBits;
+ kal_uint16 EvAckBits1;
+ kal_uint16 EvAckSuScale;
+ kal_uint16 EvAckMuScale;
+ kal_uint16 EvPreSlot;
+ kal_uint16 EvCapFrame;
+} RcpTstTxCdmaCtrlMsgT;
+
+/** define Tx CDMA channel contorl message*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpTstTxCdmaCtrlMsgT msg;
+} rcp_tst_tx_cdma_ctrl_msg_struct;
+
+typedef struct
+{
+ /* Request execute status */
+ kal_uint32 Status;
+ kal_int16 ReqPwr; /* Q6 dBm */
+ kal_uint16 Reserved;
+} RcpTstTxAgcCtrlRspT;
+
+/*define MSG_ID_ELT_ACC_RTB_RSP_MSG */
+typedef struct
+{
+ kal_uint16 TxsthAcStatus; /*0 txsth_status_Idle;1 txsth_status_access; 2 txsth_status_traffic ;3 txsth_status_FREEZE*/
+ kal_uint16 TxsthEventType; /*0 txsth_unfreeze; 1 txsth_freeze*/
+ kal_uint16 RaNum; /* random access numbers*/
+} Evl1TxsthAccRtbPreemptionRspMsgT;
+
+/** define Tx CDMA channel contorl message*/
+/** MSG_ID_RCP_TST_TX_AGC_CTRL_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpTstTxAgcCtrlCmdT Msg;
+} rcp_tst_tx_agc_ctrl_msg_struct;
+
+/** define Random access preemption contorl message*/
+/** MSG_ID_RCP_ACC_RTB_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpTxSthRtbHscPreemptCtrlCmdT AccPreemptMsg;
+} rcp_acc_rtb_msg_struct;
+
+/*----------------------------------------------------------------------------
+ Global typedefs
+----------------------------------------------------------------------------*/
+
+/* RCP Mode */
+typedef enum
+{
+ RCP_INACTIVE=0,
+ RCP_ACCESS,
+ RCP_TRAFFIC,
+ RCP_TX_CHAN_SWEEP
+} RcpModeT;
+
+
+/* RCP Component Protocol Types */
+typedef enum
+{
+ RCP_ACM=2,
+ RCP_RTM=4
+} RcpProtocolTypeT;
+
+typedef enum
+{
+ AccessChannel,
+ TrafficChannel,
+ AccessTrafficChannel
+}RevChannelTypeT;
+
+typedef struct {
+ kal_uint8 pktpriority;
+ kal_uint32 timestamp;
+} BestPktInfoT;
+
+
+/* Grant Allocation */
+/* The Grant Allocation consists of the flows which are allocated for this grant,
+ for each subframe (phy2) or frame (phy0/1).
+ Each flow's macFlowId and the grantSize in bytes are calculated by the reverse
+ MAC and given to PCP and higher layer applications to fulfill the grant.
+ Note that each grant is identified by a revMacId when the grant is allocated. */
+
+typedef struct
+{
+ kal_uint8 macFlowID;
+ kal_uint16 grantByteSize;
+} GrantAllocationT;
+
+typedef struct
+{
+ kal_uint8 NumFlowsRcvingThisGrant;
+ kal_uint8 revMacId;
+ GrantAllocationT Grants[ MAX_MAC_FLOW_NUM];
+} PcpAcmRtmGrantAllocationT;
+
+
+
+/* Datapkt */
+/* This is a data pkt which contains a pointer to a chunk of cpbuffer.
+ The offset and len specifies the location of this data pkt */
+typedef struct datapkt
+{
+#ifdef PKT_SIM
+ BestPktInfoT pktinfo; // SS: Added this here. It will save lot of test-code
+ kal_uint8 pktSrc; // SS: helps debugging for-B pkts. Identifies, the App-Q
+ // from which the pkt was assembled from.
+#endif
+ kal_uint16 len;/* The length of this datapkt. */
+ kal_uint16 offset;/* The starting location for the datapkt. */
+ CpBufferT *buffer;/* The buffer which makes up this datapkt. This is a ptr */
+ /* to a single cpbuffer in the cpbuffer pool. */
+#if defined (RCP_RI_HRT_DEV)
+ CpBufferT headBuffer;
+ kal_uint32 headData[4]; /* reserved to header buffer */
+#endif
+ struct datapkt *next;
+} DatapktGT;
+
+
+/* Datapktlist */
+/* A List descriptor which keeps track of the DataPkt queue params */
+typedef struct
+{
+ kal_uint8 count;
+ kal_uint8 hdrcount; /* The number of hdr pkts */
+ kal_uint8 connLayerFormat; /* Format A/B */
+ kal_uint32 totalLen; /* Total length of all the Datapkts in this linked-list*/
+ DatapktGT *head;
+ DatapktGT *tail;
+ DatapktGT *lastHdr;
+} DatapktlistGT;
+
+
+
+/* RevMacPkt */
+/* The reverse MAC Pkt that is sent every frame/subframe, consisting of a DatapktList
+ of security/conn layer packets */
+typedef struct revMacPktGT
+{
+ DatapktlistGT pktList; /* linked-list of machdr, sechdr, connlayer pkts, sectrailer, mactrailer */
+ kal_uint8 revMacPktId; /* used for correlating the revMacPkt with the app pkt sent */
+
+ kal_uint8 revRate; /* For prog RRIData: RTM0/1=rateIndex */
+ kal_uint8 revPktSz; /* For prog RRIData: RTM2/3=pkSzIndex */
+ kal_uint8 macLayerFormat; /* For prog MAC trailer */
+ /* RTM3: This will be the Transmission Mode:
+ 1-LowLatency, 0-HighCapacity. */
+
+ kal_uint16 dataGainScale; /* RTM0/1=(dataOffNom+dataOffxx) -> from SCM cfg data *//* store as Q7 */
+ /* RTM2/3=(T2Pxxx): MFC will prov this each time */ /* store as Q5 */
+
+ /* Note: RTM2/3=>The MFC will recalc this for old/new pkts based on T2P, since it will be diff for each subpkt */
+ kal_uint16 dataGainScale0; /* RTM3 only */
+ kal_uint16 dataGainScale1; /* RTM3 only */
+ kal_uint16 dataGainScale2; /* RTM3 only */
+ kal_uint16 dataGainScale3; /* RTM3 only */
+ kal_uint16 rriGainScale; /* RTM3 only: RRI gain assoc with the revRate */ /* store as Q6 */
+ /* MFC will provide this for old/new pkt, since it dep on subpktN */
+
+ struct revMacPktGT *next;
+} RevMacPktGT;
+
+typedef struct RevMacPktListGT
+{
+ RevMacPktGT *head;
+ RevMacPktGT *tail;
+ kal_uint32 count;
+
+}RevMacPktListGT;
+
+
+/* 1X Slotted Overlap */
+typedef struct
+{
+ kal_bool valid;
+ FrameRecT startFrame1x; /* 1X frame in which 1X slotted wakes up */ /* TODO: need to convert these to the DO times */
+ kal_uint8 startSlot1x; /* 1X slot in which 1X slotted wakes up */
+ FrameRecT startFrame; /* DO frame in which 1X slotted overlap start slot overlaps */
+ kal_uint8 startSubFrame; /* DO subframe in which 1X slotted overlap start slot overlaps. from 0-3 */
+} Rcp1XSlotOverlapT;
+
+
+/* Sent by the SCP ==> RCP, after session negotiation. */
+/* It is going to be populated with the Phy-SubType information after it is negotiated. */
+typedef struct
+{
+ kal_uint8 phySubType;
+
+} RcpSubTypeInfoT;
+
+
+
+/*----------------*/
+/* TxH Structures */
+/*----------------*/
+/* Define RCP Test Mode Flags */
+typedef struct
+{
+ kal_bool FixRatiInd;
+
+ /* Response info*/
+ ExeRspMsgT RspInfo;
+} RcpTestModesT;
+
+/* Generic Tx AGC Data structure used for tracking AGC variables and providing periodic
+** ETS Tx AGC measurement reports - can be used regardless of active air interface */
+typedef struct
+{
+
+ /* Close Loop Tx Power adjustments */
+ kal_int16 CloseLoopAdj; /** Bryan_Keep */
+
+ /* Tx Power Adjustments */
+ kal_int16 UnadjPwr; /* Unadjusted Tx antenna power, in dBm */
+ kal_int16 TotalAdj; /* Total Tx AGC adjustments, in dBm */
+
+ /* Tx Gain Scaling values */
+
+ /* Max Allowed Tx Power */
+ kal_int16 TotalMaxTxPwr; /* Adjusted Max Tx antenna power allowed, in dBm */
+
+ /* External RF settings */
+ kal_uint16 TxGainStateSlot; /* Current Tx AGC gain state: Bryan_Keep */
+} RcpTxAgcDataT;
+
+/* Defince RCP Boundary load identifiers */
+typedef enum
+{
+ TX_IMMEDIATE_LOAD=0, /* Load/latch Tx values immediately */
+ TX_SLOT_BOUNDARY_LOAD, /* Load/latch Tx values on DO Slot boundary */
+ TX_HALFSLOT_BOUNDARY_LOAD /* Load/latch Tx values on DO Half-slot boundary */
+
+} RcpTxLoadBoundaryT;
+
+/* Structure specific to RCP RI */
+#if defined (RCP_RI_HRT_DEV)
+typedef struct rcpRiTimeCheckNode
+{
+ kal_uint64 destTime;
+ kal_uint32 checkerId;/* signalId or timerId */
+ void* paramPtr;
+ kal_uint32 delay;
+ kal_uint32 period;
+ kal_timer_func_ptr Routine;
+ struct rcpRiTimeCheckNode *next;
+ kal_bool bRescheduled;
+} RcpRiTimeCheckNodeT;
+
+typedef struct
+{
+ RcpRiTimeCheckNodeT *head;
+ RcpRiTimeCheckNodeT *tail;
+ kal_uint32 count;
+} RcpRiTimeCheckListT;
+#endif
+
+/* DO RCP protocol subtype identifiers */
+typedef enum
+{
+ RCP_PROTOCOL_SUBTYPE_0_1=0,
+ RCP_PROTOCOL_SUBTYPE_2
+
+} RcpProtocolSubtypeT;
+
+/* DO-specifc Reverse Channel identifiers */
+typedef enum
+{
+ RCP_REV_PILOT_CHANNEL=0,
+ RCP_REV_AUX_PILOT_CHANNEL,
+ RCP_REV_RRI_CHANNEL,
+ RCP_REV_DSC_CHANNEL,
+ RCP_REV_DRC_CHANNEL,
+ RCP_REV_ACK_CHANNEL,
+ RCP_REV_DATA_CHANNEL
+
+} RcpRevChanT;
+
+/* Identifier use to indicate channel scale units (i.e., in dB or in linear gain) */
+typedef enum
+{
+ RCP_CHAN_SCALE_TYPE_DB=0,
+ RCP_CHAN_SCALE_TYPE_LINEAR
+
+} RcpChanScaleTypeT;
+
+/* DO-specifc Reverse Channel Scales used to program RCP/Transmitter hardware */
+typedef enum
+{
+ RCP_REV_PILOT_SCALE=0,
+ RCP_REV_PREAMBLE_SCALE, /* Pilot Channel scale during preample portion of Access Channel */
+ RCP_REV_AUX_PILOT_ACK_SCALE,
+ RCP_REV_AUX_PILOT_NAK_SCALE,
+ RCP_REV_RRI_ACK_SCALE, /* RRI Channel when transmitting in response to an ACK */
+ RCP_REV_RRI_NAK_SCALE, /* RRI Channel when transmitting in response to a NAK */
+ RCP_REV_ACK_SUP_SCALE, /* ACK Channel when acknowledging a single-user packet */
+ RCP_REV_ACK_MUP_SCALE, /* ACK Channel when acknowledging a multi-user packet */
+ RCP_REV_DSC_SCALE,
+ RCP_REV_DSC_BOOST_SCALE,
+ RCP_REV_DRC_SCALE,
+ RCP_REV_DRC_BOOST_SCALE,
+ RCP_REV_DATA_ACK_SCALE, /* Data Channel scale in reponse to an ACK dependant on packet sizes (see DO transmitter spec) */
+ RCP_REV_DATA_ACK_SCALE0, /* Data Channel scale in reponse to an ACK dependant on packet sizes (see DO transmitter spec) */
+ RCP_REV_DATA_ACK_SCALE1, /* Data Channel scale in reponse to an ACK dependant on packet sizes (see DO transmitter spec) */
+ RCP_REV_DATA_ACK_SCALE2, /* Data Channel scale in reponse to an ACK dependant on packet sizes (see DO transmitter spec) */
+ RCP_REV_DATA_ACK_SCALE3, /* Data Channel scale in reponse to an ACK dependant on packet sizes (see DO transmitter spec) */
+ RCP_REV_DATA_NAK_SCALE, /* Data Channel scale in reponse to an NAK dependant on packet sizes (see DO transmitter spec) */
+ RCP_REV_DATA_NAK_SCALE0, /* Data Channel scale in reponse to an NAK dependant on packet sizes (see DO transmitter spec) */
+ RCP_REV_DATA_NAK_SCALE1, /* Data Channel scale in reponse to an NAK dependant on packet sizes (see DO transmitter spec) */
+ RCP_REV_DATA_NAK_SCALE2, /* Data Channel scale in reponse to an NAK dependant on packet sizes (see DO transmitter spec) */
+ RCP_REV_DATA_NAK_SCALE3, /* Data Channel scale in reponse to an NAK dependant on packet sizes (see DO transmitter spec) */
+
+ RCP_REV_NUM_SCALE_REGS /* Number of hardware RCP scale registers */
+
+} RcpRevChanScaleT;
+
+/* Define RCP Gain Scaling tracking parameters */
+typedef struct
+{
+ kal_int16 ScaleDb; /* Reverse Channel Scaling Adjustment, in dB, Q=7 */
+ kal_uint16 ScaleLinear; /* Reverse Channel Scaling ADjustment, in linear notation, Q=7 */
+ kal_uint8 RegQValue; /* Hardware register Q-value (is not uniform across the hw interface) */
+} RcpRevChanScaleParamsT;
+
+typedef enum
+{
+ RCP_FIRST_DELAY_ADDR = 0,
+ RCP_SECOND_DELAY_ADDR,
+
+ RCP_MAX_DELAY_ADDR
+
+} RcpDelayAddrT;
+
+/* for delay load mode selection */
+typedef enum
+{
+ HWD_DELAY_TX_DAC=0,
+ HWD_DELAY_TX_ON0,
+ HWD_DELAY_TX_ON1,
+ HWD_DELAY_TX_ON2,
+ HWD_DELAY_TX_ON3,
+ HWD_DELAY_TX_ON4,
+ HWD_DELAY_TX_ON5,
+ HWD_DELAY_TX_ON6,
+ HWD_DELAY_TX_ON7,
+ HWD_DELAY_TX_ON8,
+ HWD_DELAY_TX_MAX
+} HwdDelayTxOnTypeT;
+
+typedef enum
+{
+ HWD_DELAY_MASK_TX_ON0=0,
+ HWD_DELAY_MASK_TX_ON1,
+ HWD_DELAY_MASK_TX_ON2,
+ HWD_DELAY_MASK_TX_ON3,
+ HWD_DELAY_MASK_TX_ON4,
+ HWD_DELAY_MASK_TX_ON5,
+ HWD_DELAY_MASK_TX_ON6,
+ HWD_DELAY_MASK_TX_ON7,
+ HWD_DELAY_MASK_TX_ON8,
+ HWD_DELAY_MASK_TX_DAC,
+ HWD_DELAY_MASK_MAX
+} HwdDelayModeTxOnTypeT;
+
+typedef enum
+{
+ HWD_DELAY_PDM0 = 0,
+ HWD_DELAY_PDM1 = 1,
+ HWD_DELAY_PDM2 = 2,
+ HWD_DELAY_PDM3 = 3,
+ HWD_DELAY_PDM4 = 4,
+ HWD_DELAY_PDM5 = 5,
+ HWD_DELAY_PDM6 = 6
+}HwdDelayPdmT;
+
+/* Define Tx AGC Closed-Loop Step Size enum */
+typedef enum
+{
+ RCP_TXAGC_STEP_SIZE_HALF_DB = 0,
+ RCP_TXAGC_STEP_SIZE_ONE_DB,
+ RCP_TXAGC_STEP_SIZE_QUARTER_DB
+
+} RcpTxAgcClosedLoopStepSizeT;
+
+/*---------------*/
+/* ETS Test Cmds */
+/*---------------*/
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 type; /* For CpBufGet, CpBufStats. The pool partition type */
+} PACKED_POSTFIX CpBufTestCmdMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 freeAllFlag; /* For freeing all the cpbufs alloc earlier */
+ kal_uint32 freeIndex; /* For CpBufFree, index of the cpbuf alloc previously */
+} PACKED_POSTFIX CpBufTestFreeCmdMsgT;
+
+
+/*---------------*/
+/* DSAR, PCPR Structures */
+/*---------------*/
+typedef PACKED_PREFIX struct {
+ kal_uint8 msgSeq; /* sequence number of msg this Ack is for */
+} PACKED_POSTFIX DsarAckMsgInfoT;
+
+typedef PACKED_PREFIX struct {
+ kal_uint8 msgSeq; /* sequence number of msg requiring Ack */
+} PACKED_POSTFIX DsarAckReqMsgInfoT;
+
+typedef DsarAckMsgInfoT DsarResetMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 MacFlowId;
+ kal_uint8 SubStreamNum;
+} PACKED_POSTFIX MacFlow2StrFlowInfoT;
+
+typedef PACKED_PREFIX struct
+{
+ MacFlow2StrFlowInfoT Info[MAX_RLP_FLOW_SUPPORTED];
+ kal_uint8 Num;
+} PACKED_POSTFIX MacFlow2StrFlowMappingT;
+
+
+/*------------------------*/
+/* PAR message structure definitions*/
+/*------------------------*/
+/* structure for message with HLP */
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 nAppType;
+ kal_uint8 nRlpFlowId;
+ kal_bool bBusy;
+} PACKED_POSTFIX HlpParBufStatMsg;
+
+typedef struct {
+ CpBufferT *dataPtr;
+ kal_uint16 offset;
+ kal_uint16 dataLen;
+ kal_uint16 tcpTag;
+ kal_uint32 tcpPort;
+ kal_uint32 srcIpAddr;
+ kal_uint32 dstIpAddr;
+} ParHlpRevDataPktT;
+
+typedef struct
+{
+ kal_uint8 nAppType;
+ kal_uint8 nRLPFlowId;
+ kal_uint8 numHlpFrames;
+ ParHlpRevDataPktT hlpFrames[MAX_RLP_HLP_PKT_NUM];
+} ParHlpDataTxMsgT;/*PAR_HLP_DATA_TX_MSG*/
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 nAppType;
+ kal_uint8 nRlpFlowId;
+ kal_uint8 Route; /*0-Route A, 1-Route B*/
+ kal_uint8 nRevLable;
+ kal_bool bAckRequired;
+ kal_uint8 Reset;
+ kal_uint16 dataLen;
+ kal_uint16 Offset;
+ CpBufferT *dataPtr;
+ kal_uint8 nPriority;
+} PACKED_POSTFIX ParHlpDOSTxMsgT;/*PAR_HLP_DOS_TX_MSG*/
+
+/*------------------------*/
+/* structure for Flow Control Protocol */
+/*------------------------*/
+
+typedef enum
+{
+ PAR_FLOWCTRL_CLOSE_ST,
+ PAR_FLOWCTRL_OPEN_ST,
+ PAR_FLOW_CTL_MAX
+} ParFlowCtrlStateT;
+
+typedef enum
+{
+ PAR_AccessStream,
+ PAR_ServiceStream,
+ PAR_STREAM_MAX
+} PARAppStreamT;
+
+typedef PACKED_PREFIX struct
+{
+ PARAppStreamT StreamType;
+ ParFlowCtrlStateT Status;
+} PACKED_POSTFIX ParPafFlowCtlStatMsgT;
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 AppType;
+ kal_uint16 ProtocolType;
+ kal_uint8 RlpFlow;
+} PACKED_POSTFIX ParPafRlpResetReqMsgT;
+
+#ifdef CBP7_EHRPD
+typedef enum {
+ RSP_AOPENBSETTING_ST,
+ RSP_AOPENBRISING_ST,
+ RSP_ASETTINGBOPEN_ST,
+ RSP_ARISINGBOPEN_ST,
+ RSP_MAX_ST
+}ParRspStateT;
+
+typedef enum {
+ OCTET_STREAM,
+ PACKET_STREAM
+} RlpStreamPduT;
+
+typedef enum {
+ OCTET_DATAUNIT,
+ PACKET_DATAUNIT
+} RlpDataUnitT;
+
+typedef enum {
+ RSP_ROUTE_A,
+ RSP_ROUTE_B,
+ RSP_MAX_RT
+} ParRspRouteT;
+
+
+typedef struct {
+ kal_uint8 FlowProtocolPDU;
+ kal_uint8 RouteProtocolPDU;
+ kal_uint8 FlowDataUnit;
+ kal_uint8 FlowProtocolID;
+ RevRohcProtocolParmsT FlowProtocolParms;
+ kal_uint8 RouteProtocolID;
+ RevRohcProtocolParmsT RouteProtocolParms;
+} ParFlowInstanceT;
+
+typedef struct {
+ PARAppStreamT StreamType;
+ ParRspStateT stRsp;
+} ParPafRspStatusMsgT;
+#endif
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint16 FwdSysTime; /* in uint of 16 slot! */
+ kal_uint8 TCAMsgSeq;
+ kal_uint8 DRCCover;
+ kal_uint8 FwdPhysSlots;
+ kal_uint8 FwdMACPkts;
+ kal_uint8 FwdPayloadSizeIndex; /*used for fetap*/
+ kal_uint16 FwdSeq;
+} PACKED_POSTFIX FtaprFcpTestPktMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool bActive;
+} PACKED_POSTFIX FtaprLoopBackStatusMsgT;
+
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint16 AppType[4];
+} PACKED_POSTFIX EtsAppCfgT;
+
+
+typedef PACKED_PREFIX struct
+{
+ ExeRspMsgT RspInfo;
+} PACKED_POSTFIX ParRlpStatPeekMsgT;
+
+typedef struct
+{
+ CpBufferT* pBuf;
+}ParSnKKQosReqMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 Link;/*0-Rev, 1-Fwd*/
+ kal_uint8 Label;
+} PACKED_POSTFIX ReservationInfoT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool bOn;
+ kal_uint8 Count;
+ ReservationInfoT LabelInfo[8];
+} PACKED_POSTFIX ParRlpReservationOnOffMsgT;
+
+typedef struct
+{
+ kal_int32 EVDORLPStatsFlowId;
+ kal_uint32 EVDORLPStatsResetTime;
+ kal_int32 EVDORLPStatsNaksReceived;
+ kal_int32 EVDORLPStatsReXmitsNotFound;
+ kal_int64 EVDORLPStatsANNakBytesRequested;
+ kal_int64 EVDORLPStatsRxDuplicateBytes;
+ kal_int64 EVDORLPStatsRxReXmitsBytes;
+ kal_int64 EVDORLPStatsRxNewDataBytes;
+ kal_int64 EVDORLPStatsRxTotalBytes;
+ kal_int32 EVDORLPStatsNaksSent;
+ kal_int64 EVDORLPStatsATNakBytesRequested;
+ kal_int64 EVDORLPStatsTxReXmitsBytes;
+ kal_int64 EVDORLPStatsTxNewDataBytes;
+ kal_int64 EVDORLPStatsTxTotalBytes;
+ kal_int32 EVDORLPStatsNakTimesOuts;
+ kal_int32 EVDORLPStatsResetCount;
+ kal_int32 EVDORLPStatsATResetRequestCount;
+ kal_int32 EVDORLPStatsANResetAckCount;
+ kal_int32 EVDORLPStatsANResetRequestCount;
+} EVDORLPStatsMeasT;
+
+typedef struct
+{
+ EVDORLPStatsMeasT rlpMeas;
+} EVDORLPStatsEventT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 protocolType;
+ kal_uint8 msgId;
+ kal_bool bNeedTxStatus;
+} PACKED_POSTFIX DsarDelMsgCmdMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ /* Change for CR ALPS02665609, if bEmptyConfigReqsOnly is TRUE, only delete pending un-acked ConfigurationRequests.*/
+ kal_bool bEmptyConfigReqsOnly;
+} PACKED_POSTFIX DsarAmpResetMsgCmdMsgT;
+
+typedef PACKED_PREFIX struct {
+ kal_uint16 Stream0Configuration;
+ kal_uint16 Stream1Configuration;
+ kal_uint16 Stream2Configuration;
+ kal_uint16 Stream3Configuration;
+} PACKED_POSTFIX DoStreamConfigurationSetMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool enable;
+} PACKED_POSTFIX LUPUnsolicitedCfgMsgT;
+
+
+/* Packet performance measurement */
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 TotalRevPhySubFrame; /* Count how many subframes have been used.*/
+ kal_uint32 TotalAckBits; /* in unit of 128 bit*/
+ kal_uint32 NakSubPackets; /* missing sub-packet on AN side*/
+ kal_uint32 NakPackets; /* missing packet on AN side*/
+ kal_uint32 TotalTxSubPacket; /* Number of sub-packet sent by AT */
+ kal_uint32 TotalTxPacket; /* Number of packet sent by AT */
+ kal_uint32 RevSubPER; /* NakSubPackets/TotalTxPacket*/
+ kal_uint32 RevPER; /* NakPackets/TotalTxPacket*/
+ kal_uint32 PHY_ThrPut; /* TotalAckBits/TotalRevPhySubFrame*/
+ kal_uint32 AT_ThrPut; /* TotalBits/time*/
+} PACKED_POSTFIX RcpPacketPerfStatT;
+
+extern RcpPacketPerfStatT RcpPacketPerfStat;
+extern void RcpPerfDataReset(void);
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool Mode;
+} PACKED_POSTFIX RcpRtmQosTxModeSelectionAlgoMsgT;
+
+/*----------------------------------------------------------------------------
+ define for RCP_ADJ_UPDATE_MSG
+----------------------------------------------------------------------------*/
+typedef struct
+{
+ kal_int16 TxMaxPwr;
+ kal_int16 TxMinPwr;
+ void *TxAdjPtr;
+}RcpAdjUpdateT;
+
+
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint16 PilotPN;
+ kal_uint16 PcgId;
+ kal_uint16 ServCell;
+ kal_uint16 MacId;
+ kal_uint16 DRCCover;
+ kal_uint16 DSC;
+ kal_uint16 PwrEst;
+} PACKED_POSTFIX SecInfoT;
+
+
+typedef PACKED_PREFIX struct
+{
+ kal_bool MacCfgChangeFlag;
+ kal_uint16 ServingPN;
+ kal_uint8 NumPcg;
+ kal_uint8 NumSec;
+ kal_uint8 PcgRenumId[RCP_MAX_NUM_PCGS];
+ kal_uint8 SecRenumId[RCP_MAX_NUM_PILOTS];
+ SecInfoT SectorInfo[RCP_MAX_NUM_PILOTS];
+} PACKED_POSTFIX RcpUpdateSectorInfoMsg;
+
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 DRCLockValid; /* 0->NotVal, 1->Valid, Valid occurs every */
+ kal_uint8 DRCLockPcgFinal[RCP_MAX_NUM_PCGS];
+} PACKED_POSTFIX RcpUpdateC2IMsg;
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+extern RcpModeT RcpMode;
+
+/* RCP RF Control AGC Management Boolean flags */
+/* Trigger Tx_Ons in TxAGC after 4 slots delay - for tx power gating at the start time*/
+extern kal_bool RcpTxAgcEnabled;
+
+/* delay mode register control bit position - RCP local variable */
+extern kal_uint8 RcpTxDlyModeBitMaskPA, RcpTxDlyModeBitMaskGATE, RcpTxDlyModeBitMaskPDM;
+extern kal_uint8 RcpTxDlyModeBitMaskPA2;
+
+extern kal_uint32 RcpPA1DlyMaskRegAddress;
+extern kal_uint32 RcpPA2DlyMaskRegAddress;
+extern kal_uint32 RcpPA1DlyMaskReadRegAddress;
+extern kal_uint32 RcpPA2DlyMaskReadRegAddress;
+
+/* delay mask register control bit position - RCP local variable */
+extern kal_uint8 RcpTxDlyMaskBitMaskPA, RcpTxDlyMaskBitMaskGATE;
+extern kal_uint8 RcpTxDlyMaskBitMaskPA2;
+
+extern HwdRfBandT RmcIsrCurrentMainRfBand;
+extern HwdRfBandT RmcIsrCurrentDivRfBand;
+
+extern kal_bool RcpHwdRfSpiDlyEnable;
+
+extern RtmRmmStateT RtmState;
+
+extern kal_uint8 *RcpTxDataAckPtr;
+extern kal_uint8 *RcpTxDataNakPtr[RCP_TX_DATA_NAK_ARRAY_SIZE];
+
+/*----------------------------------------------------------------------------
+ Global DO TXHA Register Macro Prototypes
+----------------------------------------------------------------------------*/
+
+/* Define Macros that manage the HWD_DO_TXHA_RRI_ACK0 register */
+#define DOTX_RRI_ACCESS_RATE_0BPS 0x0000
+#define DOTX_RRI_ACCESS_RATE_9600BPS 0x0011
+#define DOTX_RRI_ACCESS_RATE_19200BPS 0x001a
+#define DOTX_RRI_ACCESS_RATE_38400BPS 0x002b
+#define DOTX_RRI_ACCESS_RATE_76800BPS 0x003c
+#define DOTX_RRI_ACCESS_RATE_153600BPS 0x004d
+
+
+/* Define Macros that manages the HWD_DO_TXHA_RRI_ACK1 register */
+#define DOTX_RRI_SYMBOL_RATE_ZERO 0x0000
+#define DOTX_RRI_SYMBOL_RATE_9600BPS 0x0011
+#define DOTX_RRI_SYMBOL_RATE_19200BPS 0x001a
+#define DOTX_RRI_SYMBOL_RATE_38400BPS 0x002b
+#define DOTX_RRI_SYMBOL_RATE_76800BPS 0x003c
+#define DOTX_RRI_SYMBOL_RATE_153600BPS 0x004d
+
+/* Define Macros that manages the HWD_DO_TXHA_RRI_ACK2 register, in 6293, it is used at RriDataNak in Evl1TrafficDataTransT*/
+#define DOTX_RRI_PAYLOAD_IDX_0 0x0000 << 2 /* HWD_DO_TXHA_RRI_ACK2[5:2] */
+#define DOTX_RRI_PAYLOAD_IDX_128 0x0001 << 2
+#define DOTX_RRI_PAYLOAD_IDX_256 0x0002 << 2
+#define DOTX_RRI_PAYLOAD_IDX_512 0x0003 << 2
+#define DOTX_RRI_PAYLOAD_IDX_768 0x0004 << 2
+#define DOTX_RRI_PAYLOAD_IDX_1024 0x0005 << 2
+#define DOTX_RRI_PAYLOAD_IDX_1536 0x0006 << 2
+#define DOTX_RRI_PAYLOAD_IDX_2048 0x0007 << 2
+#define DOTX_RRI_PAYLOAD_IDX_3072 0x0008 << 2
+#define DOTX_RRI_PAYLOAD_IDX_4096 0x0009 << 2
+#define DOTX_RRI_PAYLOAD_IDX_6144 0x000A << 2
+#define DOTX_RRI_PAYLOAD_IDX_8192 0x000B << 2
+#define DOTX_RRI_PAYLOAD_IDX_12288 0x000C << 2
+
+#define DOTX_RRI_SUBPACKET_IDX_0 0x0000 /* HWD_DO_TXHA_RRI_ACK2[1:0] */
+#define DOTX_RRI_SUBPACKET_IDX_1 0x0001
+#define DOTX_RRI_SUBPACKET_IDX_2 0x0002
+#define DOTX_RRI_SUBPACKET_IDX_3 0x0003
+
+/* payload first and then subpacketId set - always pair */
+
+/* Define Macros that manages the HWD_DO_TXHA_RRI_ACK2 register RRI ACK Payload and
+** Subpacket Indexes */
+
+/* Define Macros that manages the HWD_DO_TXHA_CHNL_TYPE register */
+#define DOTX_CHNL_TYPE_ACCESS 0x0000
+#define DOTX_CHNL_TYPE_TRAFFIC 0x0001
+
+/* Define Macros that manages the HWD_DO_TXHA_PROTOCOL_SUBTYP register */
+#define DOTX_CHNL_SUBTYPE_0_ACCESS 0x0000
+#define DOTX_CHNL_SUBTYPE_1_ACCESS 0x0001
+#define DOTX_CHNL_SUBTYPE_2_ACCESS 0x0001
+#define DOTX_CHNL_SUBTYPE_0_TRAFFIC 0x0000
+#define DOTX_CHNL_SUBTYPE_1_TRAFFIC 0x0000
+#define DOTX_CHNL_SUBTYPE_2_TRAFFIC 0x0001
+
+
+/* Define Macros that manages the HWD_DO_TXHA_TX_RESET register */
+#define HWD_DO_TXHA_TX_RESET_PWR 0x0001
+#define HWD_DO_TXHA_TX_RESET_RESET 0x0002
+#define HWD_DO_TXHA_TX_RESET_FCS 0x0004
+#define HWD_DO_TXHA_TX_RESET_SYMBOL 0x0008
+
+
+/* Define Macros that manages the HWD_DO_TXHA_STATUS register */
+#define HWD_DO_TXHA_STATUS_INTERLACE_MODE 0x0001 /* for data rate 12 */
+#define HWD_DO_TXHA_STATUS_TX_EARLY_EN 0x0002
+#define HWD_DO_TXHA_STATUS_FCS_IDLE 0x0004
+#define HWD_DO_TXHA_STATUS_FCS_ERROR 0x0008
+#define HWD_DO_TXHA_STATUS_SYMBOL_ERROR 0x0010
+#define HWD_DO_TXHA_STATUS_CHANNEL_RD_ERROR 0x0020
+
+
+/* Define Macros that manages the HWD_DO_TXHA_DRC_LENGTH register */
+#define DOTX_DRC_LENGTH_1_SLOT 0x0000
+#define DOTX_DRC_LENGTH_2_SLOTS 0x0001
+#define DOTX_DRC_LENGTH_4_SLOTS 0x0002
+#define DOTX_DRC_LENGTH_8_SLOTS 0x0003
+
+
+
+/* Define Macros that manages the HWD_DO_TXHA_DSC_LENGTH register */
+#define DOTX_DSC_LENGTH_8_SLOTS 0x0001
+#define DOTX_DSC_LENGTH_16_SLOTS 0x0002
+#define DOTX_DSC_LENGTH_24_SLOTS 0x0003
+#define DOTX_DSC_LENGTH_32_SLOTS 0x0004
+#define DOTX_DSC_LENGTH_40_SLOTS 0x0005
+#define DOTX_DSC_LENGTH_48_SLOTS 0x0006
+#define DOTX_DSC_LENGTH_56_SLOTS 0x0007
+#define DOTX_DSC_LENGTH_64_SLOTS 0x0008
+#define DOTX_DSC_LENGTH_72_SLOTS 0x0009
+#define DOTX_DSC_LENGTH_80_SLOTS 0x000A
+#define DOTX_DSC_LENGTH_88_SLOTS 0x000B
+#define DOTX_DSC_LENGTH_96_SLOTS 0x000C
+#define DOTX_DSC_LENGTH_104_SLOTS 0x000D
+#define DOTX_DSC_LENGTH_112_SLOTS 0x000E
+#define DOTX_DSC_LENGTH_120_SLOTS 0x000F
+#define DOTX_DSC_LENGTH_128_SLOTS 0x0010
+#define DOTX_DSC_LENGTH_136_SLOTS 0x0011
+#define DOTX_DSC_LENGTH_144_SLOTS 0x0012
+#define DOTX_DSC_LENGTH_152_SLOTS 0x0013
+#define DOTX_DSC_LENGTH_160_SLOTS 0x0014
+#define DOTX_DSC_LENGTH_168_SLOTS 0x0015
+#define DOTX_DSC_LENGTH_176_SLOTS 0x0016
+#define DOTX_DSC_LENGTH_184_SLOTS 0x0017
+#define DOTX_DSC_LENGTH_192_SLOTS 0x0018
+#define DOTX_DSC_LENGTH_200_SLOTS 0x0019
+#define DOTX_DSC_LENGTH_208_SLOTS 0x001A
+#define DOTX_DSC_LENGTH_216_SLOTS 0x001B
+#define DOTX_DSC_LENGTH_224_SLOTS 0x001C
+#define DOTX_DSC_LENGTH_232_SLOTS 0x001D
+#define DOTX_DSC_LENGTH_240_SLOTS 0x001E
+#define DOTX_DSC_LENGTH_248_SLOTS 0x001F
+#define DOTX_DSC_LENGTH_256_SLOTS 0x0020
+#define DOTX_DSC_LENGTH_264_SLOTS 0x0021
+#define DOTX_DSC_LENGTH_272_SLOTS 0x0022
+#define DOTX_DSC_LENGTH_280_SLOTS 0x0023
+#define DOTX_DSC_LENGTH_288_SLOTS 0x0024
+#define DOTX_DSC_LENGTH_296_SLOTS 0x0025
+#define DOTX_DSC_LENGTH_304_SLOTS 0x0026
+#define DOTX_DSC_LENGTH_312_SLOTS 0x0027
+#define DOTX_DSC_LENGTH_320_SLOTS 0x0028
+#define DOTX_DSC_LENGTH_328_SLOTS 0x0029
+#define DOTX_DSC_LENGTH_336_SLOTS 0x002A
+#define DOTX_DSC_LENGTH_344_SLOTS 0x002B
+#define DOTX_DSC_LENGTH_352_SLOTS 0x002C
+#define DOTX_DSC_LENGTH_360_SLOTS 0x002D
+#define DOTX_DSC_LENGTH_368_SLOTS 0x002E
+#define DOTX_DSC_LENGTH_376_SLOTS 0x002F
+#define DOTX_DSC_LENGTH_384_SLOTS 0x0030
+#define DOTX_DSC_LENGTH_392_SLOTS 0x0031
+#define DOTX_DSC_LENGTH_400_SLOTS 0x0032
+#define DOTX_DSC_LENGTH_408_SLOTS 0x0033
+#define DOTX_DSC_LENGTH_416_SLOTS 0x0034
+#define DOTX_DSC_LENGTH_424_SLOTS 0x0035
+#define DOTX_DSC_LENGTH_432_SLOTS 0x0036
+#define DOTX_DSC_LENGTH_440_SLOTS 0x0037
+#define DOTX_DSC_LENGTH_448_SLOTS 0x0038
+#define DOTX_DSC_LENGTH_456_SLOTS 0x0039
+#define DOTX_DSC_LENGTH_464_SLOTS 0x003A
+#define DOTX_DSC_LENGTH_472_SLOTS 0x003B
+#define DOTX_DSC_LENGTH_480_SLOTS 0x003C
+#define DOTX_DSC_LENGTH_488_SLOTS 0x003D
+#define DOTX_DSC_LENGTH_496_SLOTS 0x003E
+#define DOTX_DSC_LENGTH_504_SLOTS 0x003F
+#define DOTX_DSC_LENGTH_512_SLOTS 0x0040
+
+
+/* Define Macros that manages the HWD_DO_TXHA_DRC_BOOST_LEN register */
+#define DOTX_DRC_BOOST_LENGTH_2_SLOTS 0x0001
+#define DOTX_DRC_BOOST_LENGTH_4_SLOTS 0x0002
+#define DOTX_DRC_BOOST_LENGTH_6_SLOTS 0x0003
+#define DOTX_DRC_BOOST_LENGTH_8_SLOTS 0x0004
+#define DOTX_DRC_BOOST_LENGTH_10_SLOTS 0x0005
+#define DOTX_DRC_BOOST_LENGTH_12_SLOTS 0x0006
+#define DOTX_DRC_BOOST_LENGTH_14_SLOTS 0x0007
+#define DOTX_DRC_BOOST_LENGTH_16_SLOTS 0x0008
+#define DOTX_DRC_BOOST_LENGTH_18_SLOTS 0x0009
+#define DOTX_DRC_BOOST_LENGTH_20_SLOTS 0x000A
+#define DOTX_DRC_BOOST_LENGTH_22_SLOTS 0x000B
+#define DOTX_DRC_BOOST_LENGTH_24_SLOTS 0x000C
+#define DOTX_DRC_BOOST_LENGTH_26_SLOTS 0x000D
+#define DOTX_DRC_BOOST_LENGTH_28_SLOTS 0x000E
+#define DOTX_DRC_BOOST_LENGTH_30_SLOTS 0x000F
+#define DOTX_DRC_BOOST_LENGTH_32_SLOTS 0x0010
+#define DOTX_DRC_BOOST_LENGTH_34_SLOTS 0x0011
+#define DOTX_DRC_BOOST_LENGTH_36_SLOTS 0x0012
+#define DOTX_DRC_BOOST_LENGTH_38_SLOTS 0x0013
+#define DOTX_DRC_BOOST_LENGTH_40_SLOTS 0x0014
+#define DOTX_DRC_BOOST_LENGTH_42_SLOTS 0x0015
+#define DOTX_DRC_BOOST_LENGTH_44_SLOTS 0x0016
+#define DOTX_DRC_BOOST_LENGTH_46_SLOTS 0x0017
+#define DOTX_DRC_BOOST_LENGTH_48_SLOTS 0x0018
+#define DOTX_DRC_BOOST_LENGTH_50_SLOTS 0x0019
+#define DOTX_DRC_BOOST_LENGTH_52_SLOTS 0x001A
+#define DOTX_DRC_BOOST_LENGTH_54_SLOTS 0x001B
+#define DOTX_DRC_BOOST_LENGTH_56_SLOTS 0x001C
+#define DOTX_DRC_BOOST_LENGTH_58_SLOTS 0x001D
+#define DOTX_DRC_BOOST_LENGTH_60_SLOTS 0x001E
+#define DOTX_DRC_BOOST_LENGTH_62_SLOTS 0x001F
+#define DOTX_DRC_BOOST_LENGTH_64_SLOTS 0x0020
+
+
+/* Define Macros that manages the HWD_DO_TXHA_DSC_BOOST_LENGTH register */
+#define DOTX_DSC_BOOST_LENGTH_8_SLOTS 0x0001
+#define DOTX_DSC_BOOST_LENGTH_16_SLOTS 0x0002
+#define DOTX_DSC_BOOST_LENGTH_24_SLOTS 0x0003
+#define DOTX_DSC_BOOST_LENGTH_32_SLOTS 0x0004
+#define DOTX_DSC_BOOST_LENGTH_40_SLOTS 0x0005
+#define DOTX_DSC_BOOST_LENGTH_48_SLOTS 0x0006
+#define DOTX_DSC_BOOST_LENGTH_56_SLOTS 0x0007
+#define DOTX_DSC_BOOST_LENGTH_64_SLOTS 0x0008
+#define DOTX_DSC_BOOST_LENGTH_72_SLOTS 0x0009
+#define DOTX_DSC_BOOST_LENGTH_80_SLOTS 0x000A
+#define DOTX_DSC_BOOST_LENGTH_88_SLOTS 0x000B
+#define DOTX_DSC_BOOST_LENGTH_96_SLOTS 0x000C
+#define DOTX_DSC_BOOST_LENGTH_104_SLOTS 0x000D
+#define DOTX_DSC_BOOST_LENGTH_112_SLOTS 0x000E
+#define DOTX_DSC_BOOST_LENGTH_120_SLOTS 0x000F
+#define DOTX_DSC_BOOST_LENGTH_128_SLOTS 0x0010
+#define DOTX_DSC_BOOST_LENGTH_136_SLOTS 0x0011
+#define DOTX_DSC_BOOST_LENGTH_144_SLOTS 0x0012
+#define DOTX_DSC_BOOST_LENGTH_152_SLOTS 0x0013
+#define DOTX_DSC_BOOST_LENGTH_160_SLOTS 0x0014
+#define DOTX_DSC_BOOST_LENGTH_168_SLOTS 0x0015
+#define DOTX_DSC_BOOST_LENGTH_176_SLOTS 0x0016
+#define DOTX_DSC_BOOST_LENGTH_184_SLOTS 0x0017
+#define DOTX_DSC_BOOST_LENGTH_192_SLOTS 0x0018
+#define DOTX_DSC_BOOST_LENGTH_200_SLOTS 0x0019
+#define DOTX_DSC_BOOST_LENGTH_208_SLOTS 0x001A
+#define DOTX_DSC_BOOST_LENGTH_216_SLOTS 0x001B
+#define DOTX_DSC_BOOST_LENGTH_224_SLOTS 0x001C
+#define DOTX_DSC_BOOST_LENGTH_232_SLOTS 0x001D
+#define DOTX_DSC_BOOST_LENGTH_240_SLOTS 0x001E
+#define DOTX_DSC_BOOST_LENGTH_248_SLOTS 0x001F
+#define DOTX_DSC_BOOST_LENGTH_256_SLOTS 0x0020
+#define DOTX_DSC_BOOST_LENGTH_264_SLOTS 0x0021
+#define DOTX_DSC_BOOST_LENGTH_272_SLOTS 0x0022
+#define DOTX_DSC_BOOST_LENGTH_280_SLOTS 0x0023
+#define DOTX_DSC_BOOST_LENGTH_288_SLOTS 0x0024
+#define DOTX_DSC_BOOST_LENGTH_296_SLOTS 0x0025
+#define DOTX_DSC_BOOST_LENGTH_304_SLOTS 0x0026
+#define DOTX_DSC_BOOST_LENGTH_312_SLOTS 0x0027
+#define DOTX_DSC_BOOST_LENGTH_320_SLOTS 0x0028
+#define DOTX_DSC_BOOST_LENGTH_328_SLOTS 0x0029
+#define DOTX_DSC_BOOST_LENGTH_336_SLOTS 0x002A
+#define DOTX_DSC_BOOST_LENGTH_344_SLOTS 0x002B
+#define DOTX_DSC_BOOST_LENGTH_352_SLOTS 0x002C
+#define DOTX_DSC_BOOST_LENGTH_360_SLOTS 0x002D
+#define DOTX_DSC_BOOST_LENGTH_368_SLOTS 0x002E
+#define DOTX_DSC_BOOST_LENGTH_376_SLOTS 0x002F
+#define DOTX_DSC_BOOST_LENGTH_384_SLOTS 0x0030
+#define DOTX_DSC_BOOST_LENGTH_392_SLOTS 0x0031
+#define DOTX_DSC_BOOST_LENGTH_400_SLOTS 0x0032
+#define DOTX_DSC_BOOST_LENGTH_408_SLOTS 0x0033
+#define DOTX_DSC_BOOST_LENGTH_416_SLOTS 0x0034
+#define DOTX_DSC_BOOST_LENGTH_424_SLOTS 0x0035
+#define DOTX_DSC_BOOST_LENGTH_432_SLOTS 0x0036
+#define DOTX_DSC_BOOST_LENGTH_440_SLOTS 0x0037
+#define DOTX_DSC_BOOST_LENGTH_448_SLOTS 0x0038
+#define DOTX_DSC_BOOST_LENGTH_456_SLOTS 0x0039
+#define DOTX_DSC_BOOST_LENGTH_464_SLOTS 0x003A
+#define DOTX_DSC_BOOST_LENGTH_472_SLOTS 0x003B
+#define DOTX_DSC_BOOST_LENGTH_480_SLOTS 0x003C
+#define DOTX_DSC_BOOST_LENGTH_488_SLOTS 0x003D
+#define DOTX_DSC_BOOST_LENGTH_496_SLOTS 0x003E
+#define DOTX_DSC_BOOST_LENGTH_504_SLOTS 0x003F
+#define DOTX_DSC_BOOST_LENGTH_512_SLOTS 0x0040
+
+
+/* Define Macros that manages the DO_TXHA_AUXPLTMIN_PYLD register */
+#define DOTX_AUXPILOT_MIN_PYLD_128_SLOTS 0x0000
+#define DOTX_AUXPILOT_MIN_PYLD_256_SLOTS 0x0001
+#define DOTX_AUXPILOT_MIN_PYLD_512_SLOTS 0x0002
+#define DOTX_AUXPILOT_MIN_PYLD_768_SLOTS 0x0003
+#define DOTX_AUXPILOT_MIN_PYLD_1024_SLOTS 0x0004
+#define DOTX_AUXPILOT_MIN_PYLD_1536_SLOTS 0x0005
+#define DOTX_AUXPILOT_MIN_PYLD_2048_SLOTS 0x0006
+#define DOTX_AUXPILOT_MIN_PYLD_3072_SLOTS 0x0007
+#define DOTX_AUXPILOT_MIN_PYLD_4096_SLOTS 0x0008
+#define DOTX_AUXPILOT_MIN_PYLD_6144_SLOTS 0x0009
+#define DOTX_AUXPILOT_MIN_PYLD_8192_SLOTS 0x000A
+#define DOTX_AUXPILOT_MIN_PYLD_12288_SLOTS 0x000B
+
+
+/* Define default ks_calc strobe setup time before fiq - HWD_STDO_KS_CALC_STB register */
+#define DO_TXHA_KS_CALC_STB_SETUP_FIQ 4
+
+/*Because message to HRT should be transfer to EVENT by rcp task and RCP HRT is scheduled every 4 slot,
+the max delay before process the event is 4 slot(6.67ms),round up to 7ms,
+RCP task and RCP HRT may be interrupted by higher prior task, so add 3ms for margins.
+total 10ms */
+#define DO_RCP_MAX_DELAY_FOR_MESSAGE 10
+
+/*At least 3 slot after AC stop, L1 could deal with AC start or RTC start*/
+#define RCP_MIN_SLOTS_AFTER_ACSTOP 3
+
+#ifdef MTK_PLT_ON_PC_UT
+extern SysTimeFullT RcpDoGetUtSysTimer(kal_bool UseFrameOffset);
+#define L2GetDoSysFullTime(UseFrameOffset) RcpDoGetUtSysTimer(UseFrameOffset)
+#else
+#define L2GetDoSysFullTime(UseFrameOffset) SysDoTimeFullGet(UseFrameOffset)
+
+#endif
+
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+/* rcptask.c */
+extern void RcpInit( void );
+extern void rcp_process_ilm(ilm_struct *current_ilm);
+
+/**************************************************************************************
+ SS: the CpBufTypeT parameter was added to take care of the
+ special case, when the DatapktGT* was being allocated for a
+ HDR i.e. when used as: DatapktGet( CPBUF_HEADER ); Refer code for details..
+ In all other cases, the type field is a don't care. i.e. when invoked as follows
+ (a) DatapktGet( CPBUF_REV ) (b) DatapktGet( CPBUF_SIGNALING_MSG )
+*************************************************************************************/
+extern DatapktGT* DatapktGet( CpBufTypeT type );
+ /* The CpBufTypeT parameter was added to take care of the
+ special case, when the DatapktGT* was being allocated for a
+ HDR i.e. when used as: DatapktGet( CPBUF_HEADER ); Refer code for details..
+ In all other cases, the type field is a don't care. i.e. when invoked as follows
+ (a) DatapktGet( CPBUF_REV ) (b) DatapktGet( CPBUF_SIGNALING_MSG ) */
+
+extern void DatapktFree( DatapktGT *pdu ); /* Frees pdu, add back to Pool */
+extern void DatapktlistAdd( DatapktlistGT *pktlist, DatapktGT *newDatapkt ); /* Adds to tail of a pktlist */
+extern void DatapktlistInit( DatapktlistGT *pktlist );
+extern kal_uint16 DatapktCpy(DatapktGT *pktPtr, kal_uint8 *dataPtr, kal_bool isLimitLen, kal_uint16 cpyLenLimit);
+extern RevMacPktGT* RevMacPktGet( void ); /* Get a new pdu from RevMacPktPool */
+extern void RevMacPktFree( RevMacPktGT *pkt ); /* Frees revMacPkt */
+
+extern void RcpStHwProgFrameOffset( kal_uint8 frameOffset );
+extern void DatapktlistRemoveLast(DatapktlistGT * pktlist);
+
+extern kal_uint8 FtapParamAssignCmpSent;
+
+
+/* rcptest.c */
+extern kal_bool RcpProcTestMsg(void *MsgDataPtr, RcpTestMsgT MsgId, kal_uint32 MsgSize);
+
+/* CPBuf Test Cmds */
+extern kal_uint8 CpBufTestBufferCount;
+
+
+/* rcptxh.c */
+extern void RcpTxhInit(void);
+extern kal_uint16 RcpGetChannelScale(RcpRevChanScaleT Channel, RcpChanScaleTypeT Type, kal_int16 ChanGain, kal_uint8 Qval);
+extern kal_uint32 RcpLinearChanScaleConv(kal_int16 Scale);
+extern kal_int16 RcpGetTchInitialKsAdjust(kal_int8 drcChanGainBase, kal_int8 ackChanGainBase);
+#if (defined(MTK_PLT_ON_PC))
+extern void RcpRtmQosTxModeSelectionAlgo(RcpRtmQosTxModeSelectionAlgoMsgT *MsgDataPtr);
+
+extern void CpBufProcessTestStatsCmd( CpBufTestCmdMsgT *MsgDataPtr);
+extern void CpBufProcessTestGetCmd( CpBufTestCmdMsgT *MsgDataPtr);
+extern void CpBufProcessTestFreeCmd( CpBufTestFreeCmdMsgT *MsgDataPtr);
+#endif
+
+/*pcpr.c*/
+extern kal_uint32 PcpRFormRevDummyMacPkt ( PcpAcmRtmGrantAllocationT *grant, DatapktlistGT* pktList);
+extern kal_uint32 PcpRProcessGrant( PcpAcmRtmGrantAllocationT *grant, DatapktlistGT* datapktList) ;
+extern kal_uint8 PcpRProcessGrantAcm(PcpAcmRtmGrantAllocationT *rcvdGrant, DatapktlistGT* datapktList);
+extern kal_uint8 PcprMacFlowListAddFuncPtrs(kal_uint16 SubType,
+ MacFlow2StrFlowMappingT* pTable,
+ kal_bool (*getMaxPktPriorityFunc)( BestPktInfoT*, kal_uint8),
+ void (*phyTrafficAckedFunc)(kal_uint8,kal_uint8),
+ void (*phyTrafficMissedFunc)(kal_uint8,kal_uint8),
+ void (*pktSentFunc)(kal_uint8,kal_uint8),
+ void (*pktNotSentFunc)(kal_uint8,kal_uint8),
+ kal_uint16 (*grant)( DatapktlistGT* , kal_uint16 grantSize, kal_uint8 revMacId, kal_uint8 subStreamNum),
+ kal_uint32 (*getPktQueSz)(kal_uint8 macFlowId, kal_uint8 subStreamNum)
+ );
+extern kal_bool PcpRAddPadBits( DatapktlistGT* datapktList, kal_uint16 val );
+extern void PcpRPktSent( kal_uint8 revMacId );
+extern void PcpRPktNotSent( kal_uint8 revMacId );
+extern void PcpRPhyTrafficAcked( kal_uint8 revMacId );
+extern void PcpRPhyTrafficMissed( kal_uint8 revMacId );
+extern void RcpAddNodeToMacFlowList( kal_uint8 macFlowId, kal_uint16 streamId, kal_uint8 substreamId, kal_bool NoCheckRlpActive );
+extern void RcpAddAppToMacFlow(kal_uint16 AppType, kal_uint8 StreamNum);
+extern kal_uint16 RcpFindAppTypeByStreamNum(kal_bool InUse,kal_uint8 StreamNum);
+extern kal_uint8 RcpFindStreamNumByAppType(kal_bool InUse,kal_uint16 AppType);
+extern void RcpDeleteNodeFromMacFlowList( void );
+
+extern void StreamInit(void);
+extern void StreamHandleStrCommitMsg(void);
+extern void StreamHandleStrReconfiguredMsg(void);
+extern void StreamCommit(void);
+
+extern kal_bool GetRtapTestPktMode(void);
+
+extern void PcpProcessGrantRtmTest
+(
+ PcpAcmRtmGrantAllocationT *grant,
+ DatapktlistGT *pktlist );
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+/* NST: used in NST */
+extern void PcpProcessGrantRtmNST(DatapktlistGT *pktlist);
+#endif
+
+#ifdef MTK_DEV_C2K_IRAT
+extern void RcpIratTxPowerReqHandler(void);
+#endif /* MTK_DEV_C2K_IRAT */
+
+/* Timing Profile Measurement */
+/* Macro does nothing */
+#define RCP_TIME_PROFILE_START() ((void) 0)
+#define RCP_TIME_PROFILE_END() ((void) 0)
+
+void RcpGetTxDataStat(kal_uint32* pTotalTxBytes, kal_uint32* pTotalTxNewPkts);
+void RcpParSetDefServiceRlpFlow(kal_uint8 RlpFlow);
+kal_uint8 RcpParGetDefServiceRlpFlow(void);
+
+extern void RcpTxChanSweepModeRtmCommit(void);
+extern void RtmTxPathNotSetStHandleRcpTaskSig( void );
+extern void RtmSetupHandleRcpTaskSig(void);
+extern void RtmTxhProgActivateTCH(void);
+extern kal_uint8 RtmStateSilentChk(void);
+extern void RcpSendEltMsg(msg_type msg_id, local_para_struct *log_msg_ptr);
+#if defined (RCP_RI_HRT_DEV)
+extern void RcpRiStartTimer (kal_uint32 delay, kal_uint32 timerId, void* paramPtr,
+ kal_timer_func_ptr Routine, kal_uint32 period);
+extern void RcpRiStopTimer (kal_uint32 timerId);
+extern kal_uint32 RcpRiCreateTimer (void);
+extern kal_uint32 RCP_CREATE_TIMER (kal_char *timer_name_ptr);
+extern void RCP_SET_TIMER (kal_uint32 ext_t_id,
+ kal_timer_func_ptr handler_func_ptr,
+ void* handler_param_ptr,
+ kal_uint32 delay,
+ kal_uint32 reshedule_time);
+extern void RCP_CANCEL_TIMER (kal_uint32 ext_timer);
+extern void RCP_CALLBACK_REG (kal_uint32 ActionTime, kal_uint16 SlotNum, SysTagTypeT TagType,
+ SysEventTypeT EventType, module_type module_id, msg_type message,
+ void (*Routine) (kal_uint32));
+extern void RCP_CALLBACK_REG_CANCEL (kal_uint32 ActionTime, kal_uint16 SlotNum, SysTagTypeT TagType,
+ SysEventTypeT EventType, module_type module_id, msg_type message,
+ void (*Routine) (kal_uint32));
+extern void rcp_cpbuf_free (const char *moduleName, unsigned lineNumber, CpBufferT *cpPktPtr);
+extern void RcpRiEvtHandler(void* EvtPtr);
+extern void RcpRiTrigger(void);
+#define RCP_CPBUF_FREE(cpPktPtr) rcp_cpbuf_free (__FUNCTION__, __LINE__, cpPktPtr)
+#else
+extern event_scheduler * pRcpEs;
+
+#define RCP_CREATE_TIMER(timer_name_ptr) NULL
+#define RCP_SET_TIMER(timer_id, handler_func_ptr, handler_param_ptr, delay, reshedule_time) \
+ timer_id = evshed_set_event(pRcpEs, handler_func_ptr, handler_param_ptr, kal_milli_secs_to_ticks(delay))
+#define RCP_CANCEL_TIMER(timer_id) \
+ if (timer_id) evshed_cancel_event(pRcpEs, &timer_id)
+#if (defined (MTK_PLT_ON_PC_UT))
+#define RCP_CALLBACK_REG(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine) \
+ UNUSED_PARAMETER(ActionTime)
+#define RCP_CALLBACK_REG_CANCEL(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine) \
+ UNUSED_PARAMETER(ActionTime)
+#else
+#define RCP_CALLBACK_REG(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine) \
+ C2kSysCallbackRegister(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine)
+#define RCP_CALLBACK_REG_CANCEL(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine) \
+ C2kSysCallbackRegisterCancel(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine)
+#endif
+#define RCP_CPBUF_FREE(cpPktPtr) CpBufFree(cpPktPtr)
+#endif
+
+#if (!defined (MTK_PLT_ON_PC_UT)) && (defined (RCP_RI_HRT_DEV))
+extern void RCP_MSG_SEND4(module_type _src_mod_id, module_type _dest_mod_id, sap_type _sap_id, msg_type _msg_id);
+extern void RCP_MSG_SEND5(module_type _dest_mod_id, msg_type _msg_id, kal_uint8 *_msg_ptr, kal_uint16 _msg_length);
+extern void RcpRiSendUtsMsgToRcpTask(kal_uint32 msgId, kal_uint8* msg_ptr, kal_uint16 length);
+#else
+#define RCP_MSG_SEND4(_src_mod_id, _dest_mod_id, _sap_id, _msg_id) \
+ msg_send4(_src_mod_id, _dest_mod_id, _sap_id, _msg_id)
+#endif
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy\Trophy_ylxiao_href22033\1 2013-03-18 14:15:23 GMT ylxiao
+** HREF#22033, merge 4.6.0**/
+/**Log information: \main\Trophy\1 2013-03-19 05:19:41 GMT hzhang
+** HREF#22033 to merge 0.4.6 code from SD.**/
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/do_rtmapi.h b/mcu/interface/protocol/l2_c2k/evdo/do_rtmapi.h
new file mode 100644
index 0000000..6dbecc9
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/do_rtmapi.h
@@ -0,0 +1,411 @@
+/*****************************************************************************
+* 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_rtmapi.h
+*
+* DESCRIPTION : API definition for RTCMAC.
+*
+* HISTORY :
+*****************************************************************************/
+#ifndef _DO_RTMAPI_H_
+#define _DO_RTMAPI_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "do_rcpapi.h"
+#include "do_dsaapi.h"
+#include "slc_nvram.h"
+
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define RTM_HARQ 1
+#define RTM_LARQ 0
+#define RTM_RAB_NOT_BUSY 0
+#define RTM_RAB_BUSY 1
+#define RTM_DRC_UNLOCK 0
+#define RTM_DRC_LOCK 1
+#define RTM_PHYNAK 1
+#define RTM_PHYACK 0
+#define RTM_ARQMODE_BPSK 0
+#define RTM_ARQMODE_OOK 1
+#define RTM_SILENT 1
+#define RTM_NOT_SILENT 0
+
+
+/*----------------------------------------------------------------------------
+ Message Formats structure
+----------------------------------------------------------------------------*/
+
+/* RTM_RUP_TCHASSIGN_MSG */
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 frameOffset; /* slots */
+ kal_uint8 drcLen; /* slots */
+ kal_int8 drcChanGainBase; /* 0.5db, valid range (-9dB,+6dB) */
+ kal_bool dscChanGainBaseIncl;
+ kal_int8 dscChanGainBase; /* 0.5db */
+ kal_int8 ackChanGain; /* 0.5db, valid range (-3dB,+6dB) */
+ kal_uint8 numPilot;
+ kal_uint8 userMacId[SYS_MAX_ACTIVE_LIST_PILOTS];
+ kal_uint8 rabLength[SYS_MAX_ACTIVE_LIST_PILOTS]; /* slots */
+ kal_uint8 rabOffset[SYS_MAX_ACTIVE_LIST_PILOTS]; /* slots */
+ kal_bool raChanGainIncl; /* KAL_TRUE => RAChanGain included */
+ kal_int8 raChanGain[SYS_MAX_ACTIVE_LIST_PILOTS]; /* db */
+} PACKED_POSTFIX RtmRupTchAssignMsgT;
+
+typedef struct
+{
+ kal_int32 hlarqPcomb;
+ kal_uint32 ciPcomb;
+}MacPcombInfo;
+
+typedef struct
+{
+ kal_uint16 PilotPN;
+ kal_uint16 ServCell;
+ kal_uint16 PwrEst;
+ kal_uint16 PcgId;
+}MacSectorInfo;
+
+typedef struct
+{
+ kal_bool parqValid;
+ kal_bool nextParqValid;
+ kal_uint8 hlarqTypePcomb;
+ kal_uint8 nextHLarqType;
+ kal_uint16 ServingPN;
+ kal_uint8 NumPcg;
+ kal_uint8 NumSec;
+ kal_uint8 PcgRenumId[RCP_MAX_NUM_PCGS]; /*PCG Id Renum Array*/
+ kal_uint8 SecRenumId[SYS_MAX_ACTIVE_LIST_PILOTS];/*Sector Id Renum Array*/
+ MacPcombInfo PcombInfo[SYS_MAX_ACTIVE_LIST_PILOTS];
+ MacSectorInfo MacSecInfo[SYS_MAX_ACTIVE_LIST_PILOTS];
+ kal_uint8 ArqServingCell;
+ kal_uint8 RtcMacSubtype;
+ kal_uint16 usRsv;
+} MbpGetMacBitsParamsT;
+
+
+/* RTM_CSM_USERMACID_MSG */
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 userMacId; /* current userMacId from selected monitoring sector */
+} PACKED_POSTFIX RtmCsmUserMacIdMsgT;
+
+
+/* RTM_AMP_TXATI_UPDATE_MSG */
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 transmitATI;
+} PACKED_POSTFIX RtmAmpTxAtiUpdateMsgT;
+
+
+/* RTM_OMP_SECTORPARMS_MSG */
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 revlinkSilenceDuration;
+ kal_uint8 revlinkSilencePeriod;
+} PACKED_POSTFIX RtmOmpSectorParmsMsgT;
+
+
+
+/* RTM_FTM_CFG_DATA_MSG */
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 drcGating;
+ kal_uint8 dscLen;
+ kal_uint8 drcBoostLen;
+ kal_uint8 dscBoostLen;
+ kal_uint8 drcChanGainBoost;
+ kal_uint8 dscChanGainBoost;
+ kal_uint8 deltaAckChanGainMUP;
+} PACKED_POSTFIX RtmFtmCfgDataMsgT;
+
+
+
+/* RTM_SCP_SESSION_OPEN_MSG */
+typedef PACKED_PREFIX struct
+{
+ kal_bool sessionOpenFlag; /* KAL_TRUE => Session Opened */
+} PACKED_POSTFIX RtmSmpSessionOpenMsgT;
+
+
+/* RTM_CSS_SEARCH_END_MSG */
+typedef PACKED_PREFIX struct
+{
+ kal_bool cssSearchEndFlag; /* KAL_TRUE => CSS Search Ended */
+} PACKED_POSTFIX RtmCssSearchEndMsgT;
+
+
+/* RTM_RTAP_MODE_MSG */
+typedef PACKED_PREFIX struct
+{
+ kal_bool bTestPktMode;
+
+ kal_bool configuredPacketRateMode;
+ kal_uint8 rtapMinRate; /* def=0 */
+ kal_uint8 rtapMaxRate; /* def=5 */ /* PHY0/1, RTM0/1/2: Rate: 0-5
+ 0 = 0kbps
+ 1 = 9.6kbps
+ 2 = 19.2kbps
+ 3 = 38.4kbps
+ 4 = 76.8kbps
+ 5 = 153.6kbps */
+ kal_bool configuredPacketPayloadSizeMode;
+ kal_uint8 rtapMinPayloadSize; /* def=0 */
+ kal_uint8 rtapMaxPayloadSize; /* def=12 */ /* PHY2, RTM3: PayloadSz: 0-12
+ 0 = 0 bits
+ 1 = 96 bits
+ 2 = 224 bits
+ 3 = 480 bits
+ 4 = 736 bits
+ 5 = 992 bits
+ 6 = 1504 bits
+ 7 = 2016 bits
+ 8 = 3040 bits
+ 9 = 4064 bits
+ 10 = 6112 bits
+ 11 = 8160 bits
+ 12 = 12256 bits */
+} PACKED_POSTFIX RtmRtapModeMsgT;
+
+
+
+
+/* RTM_TIMER_EXPIRED_MSG */
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 timerId;
+} PACKED_POSTFIX RtmTmrExpiredMsgT;
+
+
+
+
+/*------------------------*/
+/* MFC (RTM2/3) Interface */
+/*------------------------*/
+
+/* MFC output to RMM */
+typedef struct
+{
+ kal_uint8 revRate; /* For prog RRIData: RTM0/1/2=rateIndex */
+ kal_uint8 revPktSz; /* For prog RRIData: RTM2/3=pkSzIndex */
+ PcpAcmRtmGrantAllocationT *grant; /* grant for PCP */
+ kal_uint8 transmissionMode; /* 1-LowLatency, 0-HighCapacity. Needed for MAC Trailer */
+} RtmMfcOutDataT;
+
+
+/* RMM input to MFC */
+typedef struct
+{
+ /* General params */
+ /*----------------*/
+ kal_uint8 prevPrevInterlace; /* Previous previous Interlace which was tx */
+ kal_uint8 prevInterlace; /* Previous Interlace which was tx */
+ kal_uint8 currInterlace; /* Current Interlace that RTM is preparing for */
+ kal_uint8 prevSubpktId; /* Previous SubpktId which was tx */
+ kal_uint8 currSubpktId; /* Current SubpktId for this Interlace */
+
+ kal_uint8 revPktSzSentInPrevPrevInterlace; /* rev packet size sent in Previous previous Interlace which was tx in n-2 subframe */
+ kal_uint8 revPktSzSentInPrevInterlace; /* rev packet size sent in Previous Interlace which was tx in n-1 subframe */
+ kal_uint8 revPktSzSentInCurrInterlace; /* rev packet size sent in Current Interlace which was tx in n-3 subframe */
+
+ kal_uint8 macLayerFormatSentInPrevInterlace;
+ /* RTM3: This is the Transmission Mode which was tx in n-1 subframe :
+ 1-LowLatency, 0-HighCapacity. */
+
+ kal_bool fwdChanValid; /* Fwd chan valid or not, now */
+ kal_uint8 revLinkSilent; /* RevLink silent or not, for the currInterlace */
+ kal_bool newPktSentFlag; /* T=>New pkt sent previously (Ack)
+ F=>Old pkt sent previously (Nak) */
+ PcpAcmRtmGrantAllocationT *grantTx; /* grant that was actually transmitted.
+ Note that if newPkt was sent, this is the
+ grant that was formed earlier. If an oldPkt was
+ sent, then this will be the same grant for the
+ old pkt from subpktId=0, for this interlace. */
+ /* MAC Bits from MBP */
+ /*-------------------*/
+ kal_uint8 numPilots; /* Number of Active Pilots */
+ kal_uint8 servingPN; /* Which index corresponds to the servingPN */
+ kal_int8 frab; /* Soft value FRABn */
+ kal_uint8 qrab; /* Hard value qrabn */
+ kal_uint8 *qrabs; /* Hard value qrabn,s for each Active Sector */
+ kal_uint8 *drcLock; /* Note: */
+ kal_uint16 *pilotStrength;
+/* - Ptrs to the RtmMbpMacBits arrays xxx[SYS_MAX_ACTIVE_LIST_PILOTS] */
+ /* - xxx[i] valid for numPilots */
+} RtmMfcInDataT;
+
+
+
+
+
+/*---------------*/
+/* MBP Interface */
+/*---------------*/
+
+/* MBP to RTM MAC Bit values */
+/* Mac Bits Values read from MAC Hw and processed by MBP */
+/* These are valid for the current subframe processed */
+typedef struct
+{
+ /* ARQ hw bits */
+ /*-------------*/
+ kal_uint8 hlarq; /* Hard value of H/L-ARQ */
+ kal_uint8 parq; /* Hard value of P-ARQ */
+
+ /* Note: Valid for the valid pcg, otherwise -1 (i.e. non-compact) */
+ kal_int32 hlarqMetric[SYS_MAX_ACTIVE_LIST_PILOTS]; /* Soft value of H/L-ARQ for each PwrCtlGp */
+ kal_uint32 ciMetric[SYS_MAX_ACTIVE_LIST_PILOTS]; /* Soft value of C/I for each PwrCtlGp */
+
+ /* RAB, DRCLock, PS bits */
+ /*-----------------------*/
+ kal_uint8 numPilots; /* Number of Active Pilots */
+ kal_uint8 servingPN; /* Which index corresponds to the servingPN */
+ kal_int16 frab; /* Soft value FRABn
+ (Hw) softRABphy -> filter with FRABFilterTC to get SlotFRABm,s
+ (Mbp) SlotFRABm,s -> sample every subfr to get FRABn,s
+ (Mbp) FRABn -> Set to max of all ActiveS sec's FRABn,s */
+
+ kal_uint8 qrab; /* RTM0/1: RAB Hard value
+ RTM2/3: Hard value qrabn
+ (Hw) softRABphy -> filter with QRABFilterTC to get SoftQRABm,s
+ (Mbp) SoftQRABm,s -> hard lim to get SlotQRABm,s every subfr = QRABn,s
+ (Mbp) qrabn -> OR of all Active Secs QRABn,s */
+
+ /* Note: Valid for only numPilots entries (i.e. compacted array) */
+ kal_uint8 qrabs[SYS_MAX_ACTIVE_LIST_PILOTS]; /* Hard value qrabn,s for each Active Sector */
+ kal_uint8 drcLock[SYS_MAX_ACTIVE_LIST_PILOTS]; /* DRCLock bit for each PCG */
+ kal_uint16 pilotStrength[SYS_MAX_ACTIVE_LIST_PILOTS]; /* PilotStrength for each Active Sector */
+
+} RtmMbpMacBitsT;
+
+
+typedef enum
+{
+ RTM_QOS_SCALE_DRC=0,
+ RTM_QOS_SCALE_DRC_BOOST,
+ RTM_QOS_SCALE_DSC,
+ RTM_QOS_SCALE_DSC_BOOST,
+ RTM_QOS_SCALE_ACK_SUP,
+ RTM_QOS_SCALE_ACK_MUP,
+}RtmQosSetScaleSqT;
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+extern RtmMbpMacBitsT RtmMbpMacBits;
+extern kal_bool RtmCommitInProgressFlag;
+
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+extern void RtmInitStructures( kal_uint8 subtype, kal_bool inUse, kal_bool resetToDefaul);
+extern void RtmCommit( void );
+extern kal_bool RtmProcessConfigRspMsg( DsaFwdMsgT *pMsg );
+extern void RtmProcessConfigReqMsg( DsaFwdMsgT *pMsg );
+extern kal_uint8 RtmSendConfigReqMsg( void );
+
+
+
+/* From MFC for RTM2/3 */
+/*---------------------*/
+extern kal_uint16 RcpRtmQuryDummyPktSize (void);
+extern void CalGrant3DataUpdate( void );
+extern void CalGrant3DataInit(void);
+
+extern kal_bool RtmMfcCalculateGrantSubtype23( RtmMfcInDataT *MfcIn, RtmMfcOutDataT *MfcOut );
+extern kal_bool RtmMfcCalculateGrantSubtype23Test( RtmMfcOutDataT *MfcOut );
+extern kal_bool RtmQoSMfcCalculateGrantSubtype23( RtmMfcInDataT *MfcIn, RtmMfcOutDataT *MfcOut );
+
+void RtmQosGetUpdatedGains(RevMacPktGT *pkt, kal_uint8 subPktId);
+
+extern kal_int16 RtmQosGetAuxPilotGain( kal_uint8 pktSz, kal_uint8 transmissionMode, kal_uint8 subPktId );
+
+extern kal_int16 RtmQosGetChannelGain( kal_uint8 pktSz, kal_uint8 transmissionMode );
+
+extern void RtmQosGrantSizeUpdate(RtmMfcOutDataT *MfcOut, kal_uint8 newMfcPktSz);
+
+extern kal_uint8 RtmQosGetMaxTxT2P( void );
+
+extern kal_uint32 RtmQosGetPotentialT2P( kal_uint8 macFlowID );
+
+extern kal_uint16 RtmQosGetQueueOutflow( kal_uint8 macFlowID );
+
+
+extern void RtmQosSetAvailableTxPwr( kal_int16 availableTxPwr);
+
+extern void RtmQosSetScaleDb2LinearSq( kal_int16 dBValue, RtmQosSetScaleSqT ScaleIdx);
+
+extern kal_uint16 RtmQosGetUpdatedRriScaleForNullRate(void);
+
+/* From MBP */
+/*----------*/
+extern void MbpGetMacBits(kal_bool fwdChanValid, kal_uint8 revLinkSilent, MbpGetMacBitsParamsT *MbpGetMacBitsParamsIn, RtmMbpMacBitsT *MbpMacBitsPtr);
+
+extern kal_bool RtmRmmGetSilentStatus(kal_uint8 *revSilentStatus, kal_uint64 *revSilentStart);
+extern void RtmRmmCheckDRCSilentPending(void);
+extern void RtmRmmCheckDelayedDRCSilentEntry(void);
+
+
+#if defined (MTK_DEV_OPTIMIZE_EVL1)
+/* NST: used in NST */
+extern void Rtm01CreateInConfigInstance(kal_bool resetToDefault);
+extern void Rtm01CommitHandler(void);
+extern void RtmScmSetupConfigInterface(kal_uint16 subtype);
+extern void Rtm3CreateInConfigInstance(kal_bool resetToDefault);
+extern void Rtm3CommitHandler(void);
+#endif
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
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
diff --git a/mcu/interface/protocol/l2_c2k/evdo/ftapf.h b/mcu/interface/protocol/l2_c2k/evdo/ftapf.h
new file mode 100644
index 0000000..ec09637
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/ftapf.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) 2002-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME : FTAPF.h
+*
+* DESCRIPTION : Varaibles and API definition for FTAP module.
+*
+* HISTORY :
+*****************************************************************************/
+#ifndef _FTAPF_H_
+#define _FTAPF_H_
+
+#include "do_dsaapi.h"
+#include "do_fcpapi.h"
+#include "fcpdefs.h"
+
+#define FTAP_OTA_MESSAGEID_LEN 8
+#define FTAP_OTA_TRANSID_LEN 8
+#define FETAP_PARAASSIGNMSG_RECORD_NUM 5
+#define FTAP_PARAASSIGNMSG_RECORD_NUM 4
+#define FTAP_PARAM_ASSIGN_ATTR_LEN 8
+#define FTAP_PARAM_ASSIGN_ATTR_ID_LEN 8
+#define FTAP_PARAM_ASSIGN_ATTR_VAL_LEN 8
+#define FTAP_STATISTICREQ_RECORD_NUM 3
+#define FTAP_STATUS_ATTR_LEN 8
+#define FTAP_STATUS_ATTR_ID_LEN 8
+#define FTAP_STATUS_ATTR_PARAM1_OVERFLOW_LEN 1
+#define FTAP_STATUS_ATTR_PARAM1_VALUE_LEN 15
+#define FTAP_STATUS_ATTR_PARAM2_OVERFLOW_LEN 1
+#define FTAP_STATUS_ATTR_PARAM2_VALUE1_LEN 23
+#define FTAP_STATUS_ATTR_PARAM2_VALUE2_LEN 15 /*Only for CCTime*/
+#define FTAP_LOOPBACK_PRO_LEN 2
+#define FTAP_LOOPBACK_PKTTYPE_LEN 4
+#define FTAP_LOOPBACK_SEQ_LEN 14
+#define FTAP_LOOPBACK_RES_LEN 2
+
+#define PENDING_TRAFFICCMP 0x01
+#define PENDING_STATUSGETRSP 0x02
+#define PENDING_STATUSCLRRSP 0x04
+
+#define CONFIGTIMER_INTERVAL 4000
+#define CONFIGSTAT_INTERVAL 2000
+
+typedef enum
+{
+ FCP_FTAP_INIT_SUBTYPE_ERR,
+ FCP_FTAP_STATE_ERR,
+ FCP_FTAP_OTA_PARAMASSIGN_MSG_ID_ERR,
+ FCP_FTAP_DECODE_OTA_PARAMASSIGN_MSG_ID_ERR,
+ FCP_FTAP_OTA_PARAMASSIGN_ERR,
+ FCP_FTAP_OTA_STATUS_CLR_GET_MSG_ID_ERR,
+ FCP_FTAP_OTA_STATUS_GET_MSG_ID_ERR,
+ FCP_FTAP_OTA_STATUS_GET_MSG_ERR,
+ FCP_FTAP_MSG_ID_ERR,
+ FCP_FTAP_INIT_ERR,
+ FCP_FTAP_TIME_EXP_ERR,
+ FCP_FTAP_FORWARD_LINK_ERR,
+ FCP_FTAP_DSAR_TX_STATUS_ERR,
+}FtapfErrT;
+
+/*keep order with ALMP*/
+typedef enum
+{
+ FTAP_INIT_STATE,
+ FTAP_IDLE_STATE,
+ FTAP_CONN_SETUP_STATE,
+ FTAP_CONNECTED_STATE
+} FtapStateT;
+
+typedef enum
+{
+ FTAP_PARAM_ASSIGN_MESSAGE = 0x00,
+ FTAP_PARAM_ASSIGN_CMP_MESSAGE = 0x01,
+ FTAP_STATS_CLR_REQ_MESSAGE = 0x02,
+ FTAP_STATS_CLR_RSP_MESSAGE = 0x03,
+ FTAP_STATS_GET_REQ_MESSAGE = 0x04,
+ FTAP_STATS_GET_RSP_MESSAGE = 0x05,
+ NUM_MSG
+}FtapMsgTypeT;
+
+typedef enum
+{
+ DRCValueFixedModeAttrID = 0x00,
+ DRCCoverFixedModeAttrID = 0x01,
+ ACKChanBitFixedModeAttrID = 0x02,
+ LoopBackModeAttrID = 0x03,
+ AckChannelModulationType = 0x04,
+ NUM_TYPE
+}FtapParamRecAttriIDType;
+
+typedef enum
+{
+ FTAP_CONFIG_ID,
+ FTAP_STAT_GET_ID,
+ FTAP_STAT_CLR_ID,
+ NUM_MSG_ID
+}FtapTimerIdType;
+
+typedef enum
+{
+ FTAP_PARAM_ASSIGN_CMP_MSG_TRANSID = 0x10,
+ FTAP_STAT_GET_RSP_TRANSID,
+ FTAP_STAT_CLR_RSP_TRANSID,
+ NUM_TRANSID
+} FtapTransIdType;
+
+typedef enum
+{
+ IdleASPStatesAttrID = 0x04,
+ ConnectedSSStatesAttrID = 0x05,
+ FirstSyncCCPktStatesAttrID = 0x06
+}FtapStatisticsRecAttriIDType;
+
+typedef struct
+{
+ kal_uint16 ConnectionSSChange;
+ kal_uint32 ConnectedTime;
+ kal_uint32 ConnectedTimeStarted;
+ kal_uint16 FirstSyncCCPkt;
+ kal_uint16 CCTime;
+ kal_uint32 CCTimeStarted;
+ kal_uint32 IdleASPChange;
+ kal_uint32 IdleTime;
+ kal_uint32 IdleTimeStarted;
+}FtapStatisticsT;
+
+typedef struct
+{
+ kal_timerid TimerId;
+ kal_bool bTimeCreated;
+}FtapTimeT;
+
+typedef struct
+{
+ kal_bool bAckChannelBitFixedMode;
+ kal_uint8 AckChannelBit;
+ kal_bool bDRCCoverFixedMode;
+ kal_uint8 DRCCover;
+ kal_bool bDRCValueFixedMode;
+ kal_uint8 DRCValue;
+ kal_bool bAckChannelModulationMode;
+ kal_uint8 ACKChannelModulationType;
+ kal_bool bLoopBackEnable;
+ kal_uint8 LoopBackPersistence;
+ FtapTimeT timer[NUM_MSG_ID];
+ kal_uint8 MsgTransId[NUM_MSG_ID];
+ kal_uint8 TCAMsgSeq;
+ FtapStateT state;
+ kal_bool bInit;
+ kal_uint16 SubApp;
+ kal_uint8 ProtocolType;
+}FtapMode;
+
+typedef struct
+{
+ kal_uint8 len;
+ kal_uint8 AttrID;
+ kal_uint8 RecValue;
+}FtapAttriRecT;
+
+typedef struct
+{
+ kal_uint8 TransId;
+ kal_uint8 AttriNum;
+ FtapAttriRecT AttriRec[FETAP_PARAASSIGNMSG_RECORD_NUM];
+}FtapParaAssignMsgT;
+
+typedef struct
+{
+ kal_uint8 TransId;
+ kal_uint8 AttrNum;
+ FtapStatisticsRecAttriIDType AttrId[FTAP_STATISTICREQ_RECORD_NUM];
+}FtapStatsReqMsgT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 IdleASPStats;
+ kal_uint8 ConnectedSSStats;
+ kal_uint8 FirstSyncCCPktStats;
+} PACKED_POSTFIX FtapEtsStatClrGetReqMsgT;
+
+typedef struct
+{
+ kal_uint8 FtapClrReqTransId;
+ kal_uint8 FtapGetReqTransId;
+}FtapEtsClrGetReqMsgInfoT;
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint32 IdleASPChange;
+ kal_uint32 IdleTime;
+ kal_uint32 ConnectedSSChange;
+ kal_uint32 ConnectedTime;
+ kal_uint32 FirstSyncCCPkt;
+ kal_uint32 CCTime;
+} PACKED_POSTFIX FtapStatSpyT;
+
+void RunFtapfStateMachine(ilm_struct *current_ilm);
+void ProcessFtapDsaFwdMsg(DsaFwdMsgT *MsgDataP);
+kal_bool FtapProcessDsarTxStatusMsg(DsarTxStatusMsgT *StatusMsgP);
+
+extern FtapMode _ftapMode;
+
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/paflist.h b/mcu/interface/protocol/l2_c2k/evdo/paflist.h
new file mode 100644
index 0000000..743d038
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/paflist.h
@@ -0,0 +1,125 @@
+/*****************************************************************************
+* 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 : paflist.h
+*
+* DESCRIPTION : General purpose linked list routines.
+*
+* HISTORY :
+*****************************************************************************/
+#ifndef _PAFLIST_H_
+#define _PAFLIST_H_
+
+/*----------------------------------------------------------------------------
+Include Files
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+Global Typedefs
+----------------------------------------------------------------------------*/
+
+struct _LIST_NODE;
+struct _LIST_STR;
+
+typedef struct _LIST_NODE
+{
+ struct _LIST_NODE* next;
+ struct _LIST_NODE* prev;
+ void* data;
+} LIST_NODE;
+
+typedef struct _LIST_STR
+{
+ LIST_NODE* outHead;
+ LIST_NODE* inTail;
+ LIST_NODE* pNode; /* used to scan the list */
+ struct _LIST_STR* free;
+ kal_uint16 numRecords;
+ kal_uint8 nRLPFlow;
+ kal_uint8 nAppType;
+ kal_uint32 ss;
+ kal_uint8 DataUnit;
+} LIST_STR;
+
+typedef kal_bool (*pPAFMATCH_FUNC)(void* list, void* testRec, void* listRec);
+#define NULL_NODE (LIST_NODE*)(0)
+#define NULL_LIST (LIST_STR*)(0)
+
+/* define values for where to start when getting from queue */
+#define FROM_HEAD KAL_TRUE
+#define FROM_TAIL KAL_FALSE
+
+/* define values for where to start when putting to queue */
+#define TO_HEAD KAL_TRUE
+#define TO_TAIL KAL_FALSE
+
+/*----------------------------------------------------------------------------
+Global Data
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+Global Function Prototypes
+----------------------------------------------------------------------------*/
+
+kal_uint16 PafNumElements(LIST_STR* list);
+void PafCreateFreeList(LIST_STR* flist, LIST_NODE* nodeRecs, kal_uint16 nRecs);
+void PafCreateEmptyList(LIST_STR* list, LIST_STR* flist);
+void PafCreateFullList(LIST_STR* list, LIST_STR* flist, void* recs, kal_uint16 nRecs, kal_uint16 recSize);
+kal_bool PafPutRecord(LIST_STR* list, kal_bool toHead, void* rec);
+kal_bool PafPutRecordAt(LIST_STR* list, kal_bool toHead, void* rec, pPAFMATCH_FUNC matcher);
+kal_bool PafGetRecord(LIST_STR* list, kal_bool fromHead, void** rec, kal_bool removeFromList);
+kal_bool PafGetFirstMatch(LIST_STR* list, kal_bool fromHead, void** rec, void* testRec,
+ pPAFMATCH_FUNC matcher, kal_bool removeFromList);
+kal_bool PafGetNextMatch(LIST_STR* list, kal_bool fromHead, void** rec, void* testRec,
+ pPAFMATCH_FUNC matcher, kal_bool removeFromList);
+void PafFlushList(LIST_STR* list);
+void PafMoveList(LIST_STR* fromList, LIST_STR* toList);
+kal_bool PafGetHeadNode(LIST_STR* list, LIST_NODE* *node, kal_bool removeFromList);
+
+#endif /* _PAFLIST_H */
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_*/
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/par.h b/mcu/interface/protocol/l2_c2k/evdo/par.h
new file mode 100644
index 0000000..dced0c7
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/par.h
@@ -0,0 +1,355 @@
+/*****************************************************************************
+* 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 _PAR_H_
+#define _PAR_H_
+/*****************************************************************************
+*
+* FILE NAME : par.h
+*
+* DESCRIPTION : This file contains function prototypes and other definitions
+* for the Reverse Packet Application
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "ParRlpList.h"
+#include "do_fcpapi.h"
+#include "do_dsaapi.h"
+#include "do_Qos.h"
+#ifdef CBP7_EHRPD
+//#include "../fcp/paflist.h"
+#endif
+
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+#define RLP_DPA_HEADER_BITS 22
+
+
+#define MAX_LOCATION_LEN 128
+#define MAX_STORAGEBLOB_LEN 128
+#define MAX_NAK_REC_NUM 20 /* Max NakRequests # in Nak msg */
+/*----------------------------------------------------------------------------
+structure definitions
+----------------------------------------------------------------------------*/
+/* Enum definitions */
+typedef enum
+{
+ RCP_PAR_SUBTYPE_ERR,
+ RCP_PAR_STRNUM_ERR,
+ RCP_PAR_TXLIST_ERR,
+ RCP_PAR_RETXLIST_ERR,
+ RCP_PAR_PHYMISSLIST_ERR,
+ RCP_PAR_MSGDEC_ERR,
+ RCP_PAR_APPNOTINIT_ERR,
+ RCP_PAR_TXLIST_FULL_ERR,
+ RCP_PAR_MSGID_ERR,
+ RCP_PAR_OTAMSGID_ERR,
+ RCP_PAR_GAUP_ATTR_ERR,
+ RCP_PAR_NAK_NOT_SUPPORT_ERR,
+ RCP_PAR_GRANT_SIZE_NOT_ENOUGH_ERR,
+ RCP_PAR_MAX_ERR_ID
+}PARErrorT;
+
+
+
+typedef struct
+{
+ kal_uint8 nAppType;
+ kal_uint16 nProtocolType;
+ ParFlowCtrlStateT stFlowCtrl;
+#ifdef CBP7_EHRPD
+ ParRspStateT stRsp;
+#endif
+}ParAppInstanceT;
+
+typedef struct
+{
+ kal_uint16 nProtocolType;
+ kal_uint8 nAppType;
+}ParStreamConfigInfoT;
+
+typedef enum
+{
+ PAR_Invalid = 0x0,
+ PAR_Default = 0x1,
+ PAR_MultiFlow
+} PARAppTypeT;
+
+typedef enum
+{
+ RESET_TX_INDICATION_MSG,
+ RESET_MSG = RESET_TX_INDICATION_MSG,
+ RESET_RX_INDICATION_MSG,
+ RESET_ACK_MSG = RESET_RX_INDICATION_MSG,
+ NAK_MSG,
+ LOCATION_REQUEST_MSG,
+ LOCATION_NOTIFICATION_MSG,
+ LOCATION_ASSIGNMENT_MSG,
+ LOCATION_COMPLETE_MSG,
+ XON_REQUEST_MSG,
+ XON_RESPONSE_MSG,
+ XOFF_REQUEST_MSG,
+ XOFF_RESPONSE_MSG,
+ DATA_READY_MSG,
+ DATA_READY_ACK_MSG,
+ RESET_TX_INDICATION_ACK_MSG = 0x0d,
+ RESET_TX_COMPLETE_MSG,
+ RESET_RX_COMPLETE_MSG,
+
+ STORAGEBLOB_REQ_MSG,
+ STORAGEBLOB_NOTIFICATION_MSG,
+ STORAGEBLOB_ASSIGNMENT_MSG,
+ STORAGEBLOB_COMPLETE_MSG,
+
+ DATA_OVER_SIGNALING_MSG = 0x14,
+ DATA_OVER_SIGNALING_ACK_MSG,
+ RESERVATION_ON_REQ_MSG=0x16,
+ RESERVATION_OFF_REQ_MSG,
+ RESERVATION_ACCEPT_MSG,
+ RESERVATION_REJECT_MSG,
+ REV_RESERVATION_ON_MSG,
+ REV_RESERVATION_OFF_MSG,
+ FWD_RESERVATION_OFF_MSG = 0x22,
+ FWD_RESERVATION_ON_MSG,
+ FWD_RESERVATION_ACK_MSG,
+ CONFIGURATION_REQUEST_MSG = 0x50,
+ CONFIGURATION_RESPONSE_MSG,
+ ATTRIBUTE_UPDATE_REQ_MSG = 0x52,
+ ATTRIBUTE_UPDATE_ACCEPT_MSG,
+ ATTRIBUTE_UPDATE_REJECT_MSG
+}PAROtaMsgIdT;
+
+typedef enum
+{
+ RLP_NULL_ST,
+ RLP_DATA_ST,
+ RLP_RESET_INIT_ST,
+ RLP_RESET_RSP_ST,
+ RLP_MAX_ST
+} ParRlpStateT;
+
+typedef enum
+{
+ RLP_NONE,
+ RLP_TXQ,
+ RLP_RETXQ
+}RlpTxQTypeT;
+
+typedef struct
+{
+ kal_uint32 FirstErased;
+ kal_uint16 WindowLen;
+} ParRlpNakReqT;
+typedef struct
+{
+ kal_uint8 RLPFlow;
+#ifdef CBP7_EHRPD
+ ParRspRouteT RspRoute;
+#endif
+ kal_uint8 SequenceLength;
+ kal_uint8 NakRequests;
+ ParRlpNakReqT Request[MAX_NAK_REC_NUM];
+#ifdef CBP7_EHRPD
+ kal_uint8 VR;
+#endif
+}ParRlpNakMsgT;
+
+typedef struct
+{
+ kal_uint32 TimerId;
+}ParTExpireMsgT;
+/************************************************************/
+/* structure for RLP */
+
+typedef struct
+{
+ /* kal_bool bBufFull;*/
+ RlpTxQTypeT BufType; /*Type of buffer the last packet sent from*/
+ kal_uint16 BytesTx;
+ kal_uint16 BytesRetx;
+#ifdef CBP7_EHRPD
+ PAR_LIST_STR TxReseqQ; /*If the DataUnit is packet for a Packet stream, need this for retx */
+#endif
+}ParRlpTxInfoT;
+
+
+typedef struct ParRlpInstance_Struct
+{
+ kal_uint8 AppType;
+ kal_uint8 RLPId;
+ kal_uint8 RLPFlowId;
+ kal_uint8 RLPIDLen; /*In Bits*/
+ kal_uint8 SEQLen; /* In Bits*/
+ kal_uint8 RLPHdrLen; /*In Bytes */
+ kal_uint8 Priority;
+ ParRlpStateT RlpState;
+ kal_uint32 vs;
+ kal_uint32 range;
+ BestPktInfoT bestPktInfo;
+ ParRlpTxListT TxList;
+ ParRlpRetxListT RetxList;
+ ParRlpTxInfoT TxInfo;
+ kal_uint8 MacFlowId;
+ kal_bool FlushTimerExpired;
+#ifdef CBP7_EHRPD
+ kal_uint32 maxVS;
+ ParRspRouteT curRoute;
+ kal_uint16 (*ParRlpSendDataFromTxQ)(struct ParRlpInstance_Struct *pInst, DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+ kal_uint16 (*ParRlpSendDataFromRetxQ)(struct ParRlpInstance_Struct *pInst, DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
+ PAR_LIST_STR TxReseqQ; /*If the DataUnit is packet for a Packet stream, need this for retx */
+#endif
+}ParRlpInstanceT;
+
+
+/*************************************************************************************/
+/* structure for Location Update Protocol */
+typedef struct
+{
+ kal_uint8 LocationType;
+ kal_uint8 LocationLen;
+ kal_uint8 LocationValue[MAX_LOCATION_LEN];
+} ParLocationDataRecT;
+
+typedef struct
+{
+ kal_uint16 StorageBLOBType;
+ kal_uint8 StorageBLOBLen;
+ kal_uint8 StorageBLOBValue[MAX_STORAGEBLOB_LEN];
+} ParStorageBLOBDataRecT;
+
+typedef struct
+{
+ kal_bool bLocValueStored;
+ kal_uint8 LocTransId;
+ kal_bool bStorageBlobStored;
+ kal_uint8 BlobTransId;
+ ParLocationDataRecT LocationData;
+ ParStorageBLOBDataRecT StorageBlob;
+ /*kal_bool bConnSetup;*/
+}ParLocUpdInfoT;
+/*************************************************************************************/
+/* structure for Attribute */
+typedef struct
+{
+ AppSubTypeT parSubType;
+ /* kal_uint16 ProtocolType;*/
+
+ /*Default Packet Application Attributes*/
+ kal_uint8 RANHandoff;
+
+ /*Multi-Flow Packet Application Attributes*/
+ kal_uint8 MaxAbortTimer; /*in units of 100ms*/
+ kal_bool RevFlowNakEnabled;
+ kal_bool FlowPhysicalLayerNakEnabledRev;
+ kal_uint8 RevFlowHighLayerProtocol;
+ /* kal_uint8 ReservationIdleStateRev[MAX_NUM_RESERVATIONS];
+ kal_uint8 ReservationIdleStateFwd[MAX_NUM_RESERVATIONS];*/
+ kal_uint16 FlowTransmitAbortTimerRev;
+ kal_bool FlowDataOverSignalingAllowedRev;
+ FlowIdentificationAttribT attribRevFlowIdentification;
+ FlowTimersAttribT attribRevFlowTimer;
+ kal_uint16 FlowAbortTimerRevInFrame;
+ /* FlowReservationAttribT attribRevFlowReservation;
+ FlowReservationAttribT attribFwdFlowReservation;*/
+
+ MaxRLPFlowsAttribT attribRevmaxRLPFlows;
+ /* MaxReservationsAttribT attribRevMaxResv;*/
+ SupportHLProtocolT SupportedHLProtocol;
+#ifdef CBP7_EHRPD
+
+ /*Enhanced Multi-Flow Packet Application attributes */
+ kal_bool PPPFreeAuthenticationSupport;
+ kal_bool TwoRouteSupported;
+ kal_bool ATNakDelaySupported;
+ kal_uint8 attribRevFlowProtocolPDU;
+ kal_uint8 attribRevFlowDataUnit;
+ kal_uint8 attribRevRouteProtocolPDU;
+ RevFlowProtocolParametersAttribT attribRevFlowProtocolParameters;
+ RevRouteProtocolParametersAttribT attribRevRouteProtocolParameters;
+#endif
+}ParAccessConfigDataT;
+
+
+typedef struct
+{
+ kal_uint8 AttrToBeNegotiated;
+ kal_uint8 CfgReqTranId;
+} ParAttrNegotiationInfoT;
+
+/*----------------------------------------------------------------------------
+API Functions
+----------------------------------------------------------------------------*/
+void ParMsgHandler(kal_uint32 MsgId, kal_uint32 MsgSize, void* pMsg);
+void ProcessParDsaFwdMsg(DsaFwdMsgT *MsgDataP);
+void ParInit(void);
+void ParInitAppInstWithStreamConfigInfo(StreamConfigAttribT *pConfigData);
+void ParRlpPhyMissRetxQUpdate(void);
+void ParAppFlowCtrlStateSet(ParAppInstanceT *pAppInst, ParFlowCtrlStateT state);
+kal_bool ParSendDSARMsg(DsaRevMsgT* pMailMsg);
+void ParSendFwdAttribute(PafRcpSessionConfigMsgT* pCfgData);
+void ParAccessCommit(void);
+void ParServiceCommit(void);
+void ParInitStructures(kal_uint16 SubType, kal_bool InUse);
+void ParHandleReservationLabelCmd(ParRlpReservationOnOffMsgT* pMsg);
+void ParHandleSnKKQoSRequestCmd(ParSnKKQosReqMsgT* pMsg);
+void ParSendReservationOnReq(kal_uint8 Count, ReservationInfoT* pResv);
+void ParSendReservationOffReq(kal_uint8 Count, ReservationInfoT* pResv);
+void ProcessParLupUnsolicitedCfgMsg(LUPUnsolicitedCfgMsgT* MsgDataP);
+ParRlpInstanceT *GetRlpInstByAppStream(ParHlpDataTxMsgT *pMsg, PARAppStreamT AppStream);
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rcpauth.h b/mcu/interface/protocol/l2_c2k/evdo/rcpauth.h
new file mode 100644
index 0000000..def99ba
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rcpauth.h
@@ -0,0 +1,76 @@
+/*****************************************************************************
+* 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: rcpauth.h
+
+DESCRIPTION:
+
+This file contains all the constants and apies for Authentication Protocol
+
+*****************************************************************************/
+#ifndef _RCP_AUTH_H_
+#define _RCP_AUTH_H_
+
+#include "do_slapi.h"
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define DEFAULT_AUTHENTICATION_PROTOCPL 0x00
+#define SHA1_AUTHENTICATION_PROTOCPL 0x01
+
+typedef enum {
+ AUTH_INCONFIG,
+ AUTH_INUSE,
+ AUTH_MAX_INSTANCE
+} AuthInstanceT;
+
+void RcpAuthHandleSectorIDMsg(AuthOmpSectorIDMsgT *pMsgSectorID);
+void RcpAuthHandleRPCAuthKeyMsg(AuthKepRPCAuthKeyMsgT *pMsgRPCAuthKey);
+void AuthHandleEvtScpReCfgInd(void);
+kal_bool RcpAuthProcessAcmPktR(DatapktlistGT *PktList);
+kal_uint8 RcpAuthGetHdrLen(void);
+#endif
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rcpcsm.h b/mcu/interface/protocol/l2_c2k/evdo/rcpcsm.h
new file mode 100644
index 0000000..bac0e70
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rcpcsm.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).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* 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 _RMCCSM_H_
+#define _RMCCSM_H_
+/*****************************************************************************
+*
+* FILE NAME : rcpcsm.h
+*
+DESCRIPTION : This file contains function prototypes and other definitions
+* for the RCP CSM component used within RMC task
+*
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "evl1shcsm.h"
+#include "do_rcpapi.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines And Macros
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+Global Typedefs
+----------------------------------------------------------------------------*/
+
+typedef enum
+{
+ CSM_START_NEW,
+ CSM_START_UPDATE,
+ CSM_START_CANCEL,
+} Evl1shCsmEvtStartTypT;
+
+typedef enum
+{
+ INTRA_CELL,
+ INTER_CELL
+} CsmSoftHOTypeT;
+
+
+typedef struct
+{
+ Evl1ShCsmPhySubtypeT PhySubtype;
+ kal_uint16 DrcLength;
+ kal_uint16 DscLength;
+ kal_uint8 FrameOffset;
+}RcpCsmActiveMsgT;
+
+typedef struct
+{
+ kal_uint32 ResyncFrcCnt;
+ kal_bool ResyncFrcCntValid;
+} RcpCsmHscStopTxMsgT;
+
+
+
+typedef struct
+{
+ kal_uint8 DrcLockValid;
+ kal_uint8 DrcLockPcgFinal[CSM_MAX_ACTIVE_PILOTS];
+}RcpCsmSectorC2IUpdateMsgT;
+
+
+typedef struct
+{
+ kal_uint16 PilotPN;
+ kal_uint8 MACIndex;
+ kal_uint8 DRCCover;
+ kal_uint8 DSC;
+} RcpCsmActiveParamsT;
+
+
+typedef struct
+{
+ kal_uint8 ActiveNum;
+ RcpCsmActiveParamsT ActiveParams[CSM_MAX_ACTIVE_PILOTS];
+}RcpCsmTcaIndMsgT;
+
+
+typedef enum
+{
+ RESUME,
+ NULLCOVER,
+ NULLCOVER_SUSPEND,
+} CsmForceNullCoverT;
+
+
+
+typedef struct
+{
+ kal_int16 TestPn;
+ kal_int8 DRCCover; /* The target DRCCover */
+ kal_int8 DSC; /* The target DSCCover */
+ kal_int8 PcgId; /*The target PcgId*/
+}RcpCsmTestSwtichParamT;
+
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+void RcpCsmActiveMsg(RcpCsmActiveMsgT *CsmActiveMsgPtr);
+void RcpCsmDeActiveMsg(void);
+void RcpCsmSectorInfoUpdateMsg(RcpUpdateSectorInfoMsg *CsmSectorInfoPtr);
+void RcpCsmSectorC2IUpdateMsg(RcpCsmSectorC2IUpdateMsgT *CsmSectorC2IInfoPtr);
+void RcpCsmHscPreemptMsg(RcpCsmHscStopTxMsgT *HscStopTxMsgPtr);
+void RcpCsmHscResumeMsg(void);
+void RcpCsmDoneMsg(Evl1CsmDoneMsgT *CsmDoneMsgptr);
+void RcpCsmTxFreezeMsg(void);
+void RcpCsmTxUnfreezeMsg(void);
+void RcpCsmTcaIndMsg(RcpCsmTcaIndMsgT *TcaIndMsgPtr);
+void RcpCsmC2iRdMsg(Evl1CsmC2iRdMsgT *C2iRdMsgPtr);
+void RcpCsmSuspendMsg(void);
+void RcpCsmResumeMsg(void);
+void RcpCsmForceNullCover(module_type SrcMod, CsmForceNullCoverT ForceNullCover);
+kal_bool RcpCsmGetCellSwitchStatus(void);
+kal_uint8 RcpCsmGetC2IHwCounterThreshold(void);
+kal_bool RcpCsmGet1XScheduledWakeupTime(kal_uint64 *time1xWakeupInDOSlots);
+void RcpCsmTestSwich(RcpCsmTestSwtichParamT *RcpCsmTestSwtichParamPtr);
+void RcpCsmPreempTimeUpMsg(void);
+#ifdef __EVL1_EM_MODE__
+void * Evl1EmRcpCsmInfoGet(void);
+#endif
+void RcpCsmInit(kal_bool TcaInit);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rcprievtid.h b/mcu/interface/protocol/l2_c2k/evdo/rcprievtid.h
new file mode 100644
index 0000000..bb22a9e
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rcprievtid.h
@@ -0,0 +1,301 @@
+/*****************************************************************************
+* 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 _RCPRIEVTID_H_
+#define _RCPRIEVTID_H_
+
+/***********************************************************************************
+*
+* FILE NAME : evl1shevtid.h
+*
+* DESCRIPTION : Please keep conform to do_rcp_msgid.h
+*
+*
+************************************************************************************/
+
+#define RCPRIEVTID_SET(name, val) FR_EVT_ID_DEFINE(EVT_ID_RCP_TO_RCP_RI_##name, val, RCP_RI)
+#define RCPRIEVTID_NEXT(name) EVT_ID_RCP_TO_RCP_RI_##name,
+
+/*----------------------------------------------------------------------------
+ Global Defines
+----------------------------------------------------------------------------*/
+/*---------------*/
+/* RCP Task Msgs */
+/*---------------*/
+RCPRIEVTID_SET(MSG_ID_RCP_RMC_RFREADY_MSG, 0x01)
+RCPRIEVTID_NEXT(MSG_ID_RCP_RMC_RFRELEASE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_SH_RFRELEASE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_SH_RFREADY_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_SCP_RECONFIGURED_IND)
+RCPRIEVTID_NEXT(MSG_ID_RCP_AMP_ATILIST_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR1_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR2_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR3_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR1_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR2_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_STR3_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_APP_TO_NEG_SET_MSG)
+
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_ACTIVE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_DEACTIVE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_SECTOR_INFO_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_SECTOR_INFO_UPDATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_SECTOR_C2I_UPDATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_DONE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_FORCE_DEDICATE_COVER_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_HSC_PREEMPT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_HSC_RESUME_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_TX_FREEZE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_TX_UNFREEZE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_TCA_IND_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_C2I_RD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_SUSPEND_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_RESUME_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_CELLSWRDY_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CSM_HSC_PREEMPT_TIME_UP_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_RF_TST_POWER_CONTROL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TXAGC_RTC_PWR_REF_PARAM_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_ADJ_UPDATE_MSG)
+
+/*-----------------------*/
+/* ACM (ACMAC) component */
+/*-----------------------*/
+RCPRIEVTID_NEXT(MSG_ID_ACM_RUP_ACTIVATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_RUP_DEACTIVATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_RUP_ACCESS_HO_IND_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_OMP_SECTORPARMS_UPDATED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_DSA_ADD_BYTE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_TIMER_EXPIRED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ACM_PROT_STOP_ACCESS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_ELT_ACM_SUPERVISION_EXPIRED_CMD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CMD_MSGID_ACM_LAST)
+
+/*------------------------*/
+/* RTM (RTCMAC) component */
+/*------------------------*/
+RCPRIEVTID_NEXT(MSG_ID_RTM_RUP_ACTIVATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_RUP_DEACTIVATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_RUP_TCHASSIGN_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_AMP_TXATI_UPDATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_OMP_SECTORPARMS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_FTM_CFG_DATA_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_SMP_SESSION_OPEN_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_CSS_SEARCH_END_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_RTAP_MODE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_TMR_EXPIRED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTM_DRC_TX_CONTROL_MSG) /* DRC supervision process Tx control Msg */
+RCPRIEVTID_NEXT(MSG_ID_RTM_TXOFF_INIT_BUFFER_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_IRAT_TX_PWR_REQ)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CMD_MSGID_RTM_LAST)
+
+/*----------------*/
+/* DSAR component */
+/*----------------*/
+RCPRIEVTID_NEXT(MSG_ID_DSAR_REV_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_TX_STATUS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_DSAF_ACK_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_DSAF_ACK_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_TIME_EXP_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_DSAF_RESET_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_RUP_CONNECTION_INIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_RTM_LINK_ACQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_ALMP_CONNECTION_CLOSED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_ALMP_DEL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_AMP_RESET_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_RUP_IDLE_HHO_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_RUP_DEL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_ALMP_POWER_DOWN_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_CSS_CHAN_SCAN_START_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_CSS_CHAN_SCAN_DONE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_IDP_TX_AVAIL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_IDP_TX_UNAVAIL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_IDP_TX_UPDATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_SENT_IND_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_NOT_SENT_IND_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_REV_MULTI_MSG)
+RCPRIEVTID_NEXT(MSG_ID_DSAR_OTA_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CMD_MSGID_DSAR_LAST)
+
+/*-------------------*/
+/* PAR component */
+/*-------------------*/
+RCPRIEVTID_NEXT(MSG_ID_PAR_HLP_DATA_TX_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_ACCESS_TIMER_EXPIRE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_SERVICE_TIMER_EXPIRE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_DSA_FWD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_PAF_FLOWCTL_STATUS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_PAF_RLP_RESET_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_IDP_CONN_OPENED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_CSP_CONN_CLOSE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_HLP_DOS_TX_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_RESERVATION_TRANSITION_TIMER_EXPIRE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_GAUP_TM_EXPIRE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_QOM_RESERVATION_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_QOM_SEND_QOSREQUEST_MSG)
+
+/*EMFPA*/
+RCPRIEVTID_NEXT(MSG_ID_PAR_PAF_RSP_STATUS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_LUP_UNSOLICITED_CFG_MSG)
+RCPRIEVTID_NEXT(MSG_ID_PAR_HLP_CLEANUP_QUEUE_MSG)
+/*------------------------*/
+/* RTAP component */
+/*------------------------*/
+RCPRIEVTID_NEXT(MSG_ID_RTAP_ALMP_CONN_OPENED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_ALMP_CONN_RELEASED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_ALMP_CONN_CLOSED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_ALMP_CONN_FAILED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_TIMER_EXPIRED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_BURSTTIMER_EXPIRED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RTAP_DSA_FWD_MSG)
+
+/*----------------*/
+/* FTAP component */
+/*------------------------*/
+RCPRIEVTID_NEXT(MSG_ID_FTAPR_FTAPF_LOOPBACK_STATUS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_FTAPR_FTAPF_TEST_PKT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_FTAPR_RTM_STATUS_MSG) /*If RTM is OK, this messge will be used any more.*/
+#ifdef OTTS
+RCPRIEVTID_NEXT(MSG_ID_FTAPR_TEST_PKT_MSG)
+#endif
+
+#if defined (PKT_SIM) || defined (MTK_PLT_ON_PC)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_CREATE_MAC_FLOW_LIST)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_MAC_FLOW_LIST_INTEGRITY)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_COMMIT_APP_FN_PTRS)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_ADD_MSG_TO_QUE)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PRINT_APP_QUES)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_GRANT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PRINT_ASSEMBLED_PKT_LIST)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PKT_SENT)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PKT_NOT_SENT)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PHY_TRAFFIC_ACKED)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_PHY_TRAFFIC_MISSED)
+RCPRIEVTID_NEXT(MSG_ID_ACM_PKTSIM_RET_ACM_SEC_PKT_CMD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_PKTSIM_SEND_PKT_LIST_EXE_MSG_CMD_MSG) /*_MsgStruct PktSimSendPktListExeMsgT*/
+RCPRIEVTID_NEXT(MSG_ID_RCP_PKTSIM_SEND_PAYLAOD_CMD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_PKTSIM_SEND_DATAPKT_CMD_MSG) /*_MsgStruct PktSimFormDataPktMsgT*/
+#endif
+RCPRIEVTID_NEXT(MSG_ID_AUTH_SHA_KEP_RPCAUTHKEY_MSG)
+RCPRIEVTID_NEXT(MSG_ID_AUTH_UPDATE_SECTORID_MSG)
+
+/* RCP UT Msgs */
+RCPRIEVTID_NEXT(MSG_ID_UT_DSAR_REV_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_PAR_HLP_DATA_TX_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RCP_DSAF_FWD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RCP_DMA_DATA_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RCP_RTM_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_STREAM_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_STREAM1_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_STREAM2_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_STREAM3_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_SET_STDO_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_MBP_MAC_BITS_OUTPUT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_ACM_LOG_OUT_SIGNAL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RCP_ACM_COMMIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_PAR_DSA_FWD_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_PAR_QOM_SEND_QOSREQUEST_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_SWEEP_MODE_ACTIVATE_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_SWEEP_MODE_DEACTIVATE_MSG)
+ /* Access */
+RCPRIEVTID_NEXT(MSG_ID_UT_ACM_PREAMBLE_START_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_ACM_DATA_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_ACM_TRANS_STOP_MSG)
+/* Traffic */
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_PARAM_INIT_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_PARAM_RECFG_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_TRANS_START_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_DATA_REQ_MSG)
+RCPRIEVTID_NEXT(MSG_ID_UT_RTM_TRANS_STOP_MSG)
+
+/* AUTH segment */
+RCPRIEVTID_NEXT(MSG_ID_AUTH_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_AUTH_SCP_COMMITTED_MSG)
+/* SEC seqment*/
+RCPRIEVTID_NEXT(MSG_ID_SEC_SCP_RECONFIGURED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_SEC_SCP_COMMITTED_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_CMD_MSGID_SL_LAST)
+
+RCPRIEVTID_NEXT(MSG_ID_RCP_TASK_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_PREAMBLE_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_DATA_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_PST_DELAY_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_INTER_SEQUENCE_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_TXOFF_CB_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_ACM_TXON_CB_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_PAR_HLP_DATA_TX_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_PAR_HLP_DATA_TX2_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_PAR_PHYMISSEDLIST_UPDATE_SIGNAL)
+RCPRIEVTID_NEXT(MSG_ID_RCP_SIGNAL_MSGID_LAST)
+
+RCPRIEVTID_NEXT(MSG_ID_RCP_SH_CRCREADY_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_TX_CDMA_CTRL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_TST_TX_AGC_CTRL_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_ACC_RTB_MSG)
+
+RCPRIEVTID_NEXT(MSG_ID_RCP_CP_BUF_LIST_MSG)
+RCPRIEVTID_NEXT(MSG_ID_RCP_PKT_INFO_MSG)
+RCPRIEVTID_NEXT(MSG_ID_EM_RCP_TRAFFIC_INFO_TRANS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_EM_ACM_STATE_INFO_TRANS_MSG)
+RCPRIEVTID_NEXT(MSG_ID_EM_RTM3_T2P_INFO_TRANS_MSG)
+
+RCPRIEVTID_NEXT(MSG_ID_DSAF_FWD_MSG)
+
+RCPRIEVTID_NEXT(MSG_ID_SLC_RTM_COMMIT_MSG)
+
+
+
+/* PD Event ID */
+
+/* MUST be less than 255 (0xFF) !!! */
+
+
+
+
+
+
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rcptxagc.h b/mcu/interface/protocol/l2_c2k/evdo/rcptxagc.h
new file mode 100644
index 0000000..1f35471
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rcptxagc.h
@@ -0,0 +1,163 @@
+/*****************************************************************************
+* 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).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * rcptxagc.h
+ *
+ * Project:
+ * --------
+ * C2K
+ *
+ * Description:
+ * ------------
+ * global definition of RxAGC in Slot Tick.
+ *
+ * Author:
+ * -------
+ *
+ *
+ *==============================================================================
+ * HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _RCP_TXAGC_H_
+#define _RCP_TXAGC_H_
+
+#include "sysapi.h"
+#include "evl1shtxagc.h"
+
+/* define the close loop RPC step set structure */
+typedef struct TxAgcClosedLoopRpcStepSetEvtTag
+{
+ kal_uint8 RpcStep; /* 00: 0.5dB, 01: 1dB, all other values: invalid */
+} TxAgcClosedLoopRpcStepSetEvtT;
+
+/* define the CMU RETAP flag set structure */
+typedef struct TxAgcCmuRetapFlagSetEvtTag
+{
+ kal_bool CmuRetapFlag;
+} TxAgcCmuRetapFlagSetEvtT;
+
+typedef struct
+{
+ /* TX AGC control type,
+ 0: stop sw txagc,
+ 1: start sw txagc,
+ 2: obtain current request power */
+ kal_uint8 CtrlType;
+
+ /* Tx slot */
+ kal_uint8 TxSlot;
+
+ /* Access/ Traffic channel */
+ TxAgcChanTypeE ChanType;
+
+ /* PHY subtype */
+ TxAgcPhySubTypeE PhySubType;
+
+ /* Power reference used for open loop estimation in 1/64dBm@S9.6 unit.*/
+ kal_int16 PowerBase; /* Q6 dB */
+
+ /* Bit0: trans ind TRUE/FALSE,
+ Bit8: Close loop parameters enable/disable */
+ kal_uint16 TestBmp;
+
+ /* close loop step up size in 1/64dB@S2.6 unit */
+ kal_int16 ClStepUp;
+
+ /* close loop step down size in 1/64dB@S2.6 unit */
+ kal_int16 ClStepDown;
+
+ /* close loop adjustment limited in 1/64dB@S8.6 unit */
+ kal_int16 ClAdjMax;
+
+ /* close loop adjustment limited in 1/64dB@S8.6 unit */
+ kal_int16 ClAdjMin;
+
+ /* maximum transmit power adjustment in 1/64dB@S5.6 unit, set zero
+ if not use it */
+ kal_int16 MaxPwrAdj;
+
+ /* RPC bit in SW mode with U2.0 unit*/
+ kal_uint16 RpcBitSw; /* Q6 dB */
+
+ /* KS value in SW mode with S6.6 unit*/
+ kal_int16 KsValueSw; /* Q6 dB */
+
+ /* Reserved */
+ kal_uint16 Reserved;
+
+} TxAgcCtrlEvtT;
+
+/* define the power information report structure */
+typedef struct
+{
+ kal_int16 openLoopRxPwr; /* The RxPwr after each access probe */
+ kal_int16 TxPilotPwr; /* The final "clipped" pilot pwr after each access probe */
+ kal_int16 KsAdj;
+} RcpRtcPwrRefParamMsgT;
+
+/** MSG_ID_RCP_TXAGC_RTC_PWR_REF_PARAM_MSG
+*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RcpRtcPwrRefParamMsgT Msg;
+} rcp_txagc_rtc_pwr_ref_param_msg_struct;
+
+/*----------------------------------------------------------------------------
+ Global Defines And Macros
+----------------------------------------------------------------------------*/
+extern void TxAgcInit();
+extern kal_int16 RcpTxAgcGetCurrRxPwr();
+extern kal_int16 RcpTxAgcGetMaxTxPwr();
+extern kal_int16 RcpTxAgcGetAvailTxPwr();
+extern void RcpTxAgcClosedLoopRpcStepSet(kal_uint8 RpcStep);
+extern void RcpTxAgcCMURetapFlagSet(kal_bool CmuRetapFlag);
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
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
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rtm.h b/mcu/interface/protocol/l2_c2k/evdo/rtm.h
new file mode 100644
index 0000000..3e0427c
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rtm.h
@@ -0,0 +1,1195 @@
+/*****************************************************************************
+* 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 _RTM_H_
+#define _RTM_H_
+/*****************************************************************************
+*
+* FILE NAME : rtm.h
+*
+* DESCRIPTION : This file contains function prototypes and other definitions
+* for the RCP RTM component, which are shared between other
+* components within RCP.
+*
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "sysdefs.h"
+#include "sysapi.h"
+#include "do_rtmapi.h"
+#include "do_dsaapi.h"
+#if (defined MTK_PLT_ON_PC) && (!defined GEN_FOR_PC)
+#include "osc_type.h"
+#endif
+#include "slc_nvram.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines And Macros
+----------------------------------------------------------------------------*/
+#define RTM_MAX_SUBFRAME_COUNT 4 /* Wraparound subframe counter number, from 0-3 */
+#define RTM_MAX_TX_HISTORY_SUBFRAME 256 /* Wraparound TxHistory subframe counter number, mult of 14 */
+#define RTM_MAX_TXHISTORY 16 /* Max TxHistory count to keep RevMacId */
+#define RTM_MAX_RATE_PROB_RANGE 255 /* Max range of random number for transition probability */
+#define RTM_MAX_CONFIG_REQ 5 /* Max number of outstanding ConfigReqs msgs sent by AT */
+#define RTM_MAX_STATES_SPY_SUBFR_NO 4 /* Max subframe num for rtm23 spy */
+
+
+#define RTM_PROTOCOL_TYPE 0x4
+#define RTM_NEWSUBPKT 0xFF
+#define RTM_VALID_PAYLOAD 1
+#define RTM_LCM_ATI_H 0x3FF /* LongCode Mask, most sig. 10 bits */
+
+
+#define RTM_DRC_GATE_CONT 0 /* DRCGating = Continuous */
+#define RTM_DRC_GATE_DISCONT 1 /* DRCGating = Discontinuous */
+#define RTM_TM_HICAP 0 /* RTM3: TransmissionMode = High Capacity */
+#define RTM_TM_LOLAT 1 /* RTM3: TransmissionMode = Low Latency */
+
+#define RTM_TMR_SETUP 1500 /* 1.5s = 1500ms */
+#define RTM_TMR_FAKERTCACK 1000
+#define RTM_OTA_MSG_ID_LEN 8
+#define RTM_MAX_RATELIMIT 64
+#define RTM_MAX_ATTRIB_REC 3
+
+
+#define RTM_HWD_ST_SYMB_MASK 0x000007FF
+
+#define MAX_SUB_PACKET_NUM 4
+
+#if defined MTK_PLT_ON_PC
+#define ISR_EV_RTM_RF_RELEASE OSC_ISR_SRC_CUSTOM5
+#endif
+#define RTM3_DUMMY_PKT_INTERVAL_SUB_FRAME 150
+
+
+/*----------------------------------------------------------------------------
+ Local Defines And Macros
+----------------------------------------------------------------------------*/
+
+#define RTM_TXH_TXPWR_SLEW 0 /* Q7 dbm. slew: the max pwrInc allowed from prevRate to maxRate */
+#define RTM_TXH_TXPWR_HEADROOM 0x100 /* Q7 dbm. 2dbm. headroom: allowed for rpc adj in the next 5 slots */
+
+#define RTM3_DEACTIVATE_DELAY1 6900 /* Us. Delay=(4slots*2048+256chips). DelayUs= (DelayChips*0.8154us/chip)us */
+#define RTM3_DEACTIVATE_DELAY2 10240 /* Us. Delay=(6slots*2048+256chips) */
+#define RTM3_DEACTIVATE_DELAY3 3540 /* Us. Delay=(2slots*2048+256chips). DelayUs= (DelayChips*0.8154us/chip)us */
+#define RTM_ABORT_DELAY 3560 /* Us. Delay=(2slots*2048+256chips) */
+#define RTM_RLSILENT_DELAY 8570 /* Us. Delay=(5slots*2048+256chips) */
+#define RTM_TXON_DELAY 6430 /* Us. Delay=(4slots*2048-300chips) */
+
+#define RTM_TIME_FOR_WORK_SLICE 1948
+
+/*----------------------------------------------------------------------------
+Global Typedefs
+----------------------------------------------------------------------------*/
+/*--------------------*/
+/* RTM Global structs */
+/*--------------------*/
+
+
+/* RTCMAC Configuration Data */
+/* This contains cfg data that are not part of the std's sessCfg data */
+typedef struct
+{
+ /* from RTM_OMP_SECTORPARMS_MSG */
+ kal_uint8 revlinkSilenceDuration; /* frames */
+ kal_uint8 revlinkSilencePeriod;
+
+
+ /* TxHw Cfg Data */
+ /*---------------*/
+ /* from RTM_AMP_TXATI_UPDATE_MSG */
+ kal_uint32 lcmATIL;
+ kal_uint16 lcmATIH; /* 10 bits, all 1's */
+
+ /* from RTM_RUP_TCHASSIGN_MSG */
+ kal_uint8 frameOffset; /* slots */
+ kal_uint8 drcLen; /* 0=1, 1=2slots, 2=4slots, 3=8slots */
+ kal_int8 drcChanGainBase; /* 0.5db, valid range (-9dB,+6dB) */
+ kal_int8 dscChanGainBase; /* 0.5db */
+ kal_int8 ackChanGain; /* 0.5db, valid range (-9dB,+6dB) */
+ kal_uint8 numPilot;
+ kal_uint8 userMacId[SYS_MAX_ACTIVE_LIST_PILOTS];
+ kal_uint8 rabLength[SYS_MAX_ACTIVE_LIST_PILOTS]; /* slots */
+ kal_uint8 rabOffset[SYS_MAX_ACTIVE_LIST_PILOTS]; /* slots */
+ kal_int8 raChanGain[SYS_MAX_ACTIVE_LIST_PILOTS]; /* db */
+
+ /* from RTM_FTM_CFG_DATA_MSG */
+ kal_uint8 drcGating; /* 0=cont, 1=disc */
+ kal_uint8 dscLen; /* units = 8 slots */
+ kal_uint8 drcBoostLen; /* units = 2 slots */
+ kal_uint8 dscBoostLen; /* units = 8 slots */
+ kal_uint8 drcChanGainBoost; /* db */
+ kal_uint8 dscChanGainBoost; /* db */
+ kal_uint8 deltaAckChanGainMUP; /* units = 0.5db */
+
+ /* RTCMAC SessCfg data */
+ /* Mostly Stored in RtmInUse, here are some which requires separate conversion. */
+ kal_uint16 dataGainScale_Subtype01[RTM_MAX_REV_RATE];
+ /* RTM0/1: Channel Gains from pilotpwr, in linear Q7
+ 0 = 0
+ 1 = dataScale9k6 ( scalar of (dataOffsetNom+dataOffsetxxx) )
+ 2 = dataScale19k2
+ 3 = dataScale38k4
+ 4 = dataScale76k8
+ 5 = dataScale153k6 */
+
+ /* RTM: TODO: RRIgain, dataGains for RTM2/3, in linear Q7 */
+ kal_uint16 dataGainScale_Subtype2; /* RTM2 */
+
+ /* RTM3: for now, these are used temporarily for testing... */
+ kal_uint16 rriGainScale_Subtype3; /* RTM3 */
+ kal_uint16 dataGainScale_Subtype3; /* RTM3 */
+ kal_uint16 dataGainScale0_Subtype3; /* RTM3 */
+ kal_uint16 dataGainScale1_Subtype3;
+ kal_uint16 dataGainScale2_Subtype3;
+ kal_uint16 dataGainScale3_Subtype3;
+
+
+ /* RTM01/3: Ks0 - Ks without data
+ Ks0 = (1 + Gack^2 + Gdrc^2) */
+ kal_uint16 Ks0;
+
+
+ /* Msg Rx flags */
+ /*--------------*/
+ kal_bool sessionOpenFlag; /* KAL_TRUE=Session Opened */
+ kal_bool cssSearchEndFlag; /* KAL_TRUE=CSS Search Ended */
+} RtmScmT;
+
+
+
+
+/* RTAP Configuration Data */
+typedef struct
+{
+ /* RTAP/RETAP rates */
+ /*------------------*/
+ kal_bool bTestPktMode;
+
+ kal_uint8 rtapTargetRate;
+ kal_uint8 retapTargetRate;
+
+
+ /* from RTM_RTAP_MODE_MSG */
+ /*------------------------*/
+ /* PHY0/1, RTM0/1/2 */
+ kal_bool configuredPacketRateMode;
+ kal_uint8 rtapMinRate; /* def=0 */
+ kal_uint8 rtapMaxRate; /* def=5 */ /* PHY0/1, RTM0/1/2: Rate: 0-5 */
+
+ /* PHY2, RTM3 */
+ kal_bool configuredPacketPayloadSizeMode;
+ kal_uint8 rtapMinPayloadSize; /* def=0 */
+ kal_uint8 rtapMaxPayloadSize; /* def=12 */ /* PHY2, RTM3: PayloadSz: 0-12
+ 0 = 0 bits
+ 1 = 96 bits
+ 2 = 224 bits
+ 3 = 480 bits
+ 4 = 736 bits
+ 5 = 992 bits
+ 6 = 1504 bits
+ 7 = 2016 bits
+ 8 = 3040 bits
+ 9 = 4064 bits
+ 10 = 6112 bits
+ 11 = 8160 bits
+ 12 = 12256 bits */
+} RtmRtapT;
+
+
+/* RTM_TXOFF_INIT_BUFFER_MSG */
+typedef struct
+{
+ kal_bool Silent;
+} RtmTxOffInitBufferMsgT;
+
+
+/*--------------*/
+/* OTA Msg Defs */
+/*--------------*/
+typedef enum
+{
+ RTM_RTCACK_MSG = 0,
+ RTM_BROADCAST_REV_RATE_LIMIT_MSG = 1,
+ RTM_UNICAST_REV_RATE_LIMIT_MSG = 2,
+ RTM_GRANT_MSG = 3,
+ RTM_SCP_CONFIG_REQ_MSG = 0x50,
+ RTM_SCP_CONFIG_RSP_MSG = 0x51,
+ RTM_ATTRIBUTE_UPDATE_REQUEST = 0x52,
+ RTM_ATTRIBUTE_UPDATE_ACCEPT = 0x53,
+ RTM_ATTRIBUTE_UPDATE_REJECT = 0x54
+} RtmOtaMsgIdT;
+
+typedef enum
+{
+ STREAM_CONFIG_REQ_MSG = 0x50,
+ STREAM_CONFIG_RSP_MSG = 0x51
+} StrOtaMsgIdT;
+/* RTM: TODO */
+/* same msgId ? */
+#define RTM_REQUEST_MSG 2
+
+
+
+/* RTM_BROADCAST_REV_RATE_LIMIT_MSG */
+typedef struct
+{
+ kal_uint8 rpcCount;
+ kal_uint8 rateLimit[RTM_MAX_RATELIMIT]; /* rate = 0 to 5 */
+} RtmOtaBroadcastRevRateLimitMsgT;
+
+
+/* RTM_UNICAST_REV_RATE_LIMIT_MSG */
+typedef struct
+{
+ kal_uint8 rateLimit; /* rate = 0 to 5 */
+} RtmOtaUnicastRevRateLimitMsgT;
+
+
+/*------------------------------------*/
+/* SessCfg: CONFIGREQ, CONFIGRSP msgs */
+/*------------------------------------*/
+
+/* AttributeId */
+typedef enum
+{
+ RTM01_PWRPARM_ATTRIBID = 0,
+ RTM01_RATEPARM_ATTRIBID = 1,
+ RTM01_ATTRIBID_MAX,
+} Rtm01AttribIdT;
+
+//AttributeNN need to be extended if Max Mac Flow extends.
+typedef enum
+{
+ /* simple attributes */
+ RTM3_ARQ_MODE_ATTRIBID = 0xFFFF,
+ RTM3_FRAB_FILTER_TC_ATTRIBID = 0xFFFE,
+ RTM3_FRAB_LOW_ATTRIBID=0xFFFD,
+ RTM3_MERGE_THRESHOLD_ATTRIBID=0xFFFC,
+ RTM3_PAYLOAD_THRESH_ATTRIBID=0xFFFB,
+ RTM3_PILOT_STRENGTH_FILTER_TC_ATTRIBID = 0xFFFA,
+ RTM3_QRAB_FILTER_TC_ATTRIBID = 0xFFF9,
+ RTM3_T2P_NO_TX_FILTER_TC_ATTRIBID=0xFFF7,
+ RTM3_PILOT_STRENGTH_QRAB_THRESHOLD_DRC_LOCK_ATTRIBID = 0xFFF6,
+ RTM3_PILOT_STRENGTH_QRAB_THRESHOLD_DRC_UNLOCK_ATTRIBID = 0xFFF5,
+ RTM3_RATE_1M8_SUPPORTED_ATTRIBID = 0xFFF3,
+ RTM3_SUPPORT_GAUP_MAX_NUM_SUB_PACKETS_ATTRIBID = 0xFFF2,
+ RTM3_BUCKET_LEVEL_MAX_00_ATTRIBID = 0xFE00,
+ RTM3_BUCKET_LEVEL_MAX_01_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_02_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_03_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_04_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_05_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_06_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_07_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_08_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_09_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_10_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_11_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_12_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_13_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_14_ATTRIBID,
+ RTM3_BUCKET_LEVEL_MAX_15_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_00_ATTRIBID = 0xFD00,
+ RTM3_MERGE_THRESHOLD_01_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_02_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_03_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_04_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_05_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_06_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_07_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_08_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_09_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_10_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_11_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_12_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_13_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_14_ATTRIBID,
+ RTM3_MERGE_THRESHOLD_15_ATTRIBID,
+
+ RTM3_TRANSMISSION_MODE_00_ATTRIBID = 0xFC00,
+ RTM3_TRANSMISSION_MODE_01_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_02_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_03_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_04_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_05_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_06_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_07_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_08_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_09_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_10_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_11_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_12_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_13_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_14_ATTRIBID,
+ RTM3_TRANSMISSION_MODE_15_ATTRIBID,
+ RTM3_QRAB_SELECT_00_ATTRIBID = 0xFB00,
+ RTM3_QRAB_SELECT_01_ATTRIBID,
+ RTM3_QRAB_SELECT_02_ATTRIBID,
+ RTM3_QRAB_SELECT_03_ATTRIBID,
+ RTM3_QRAB_SELECT_04_ATTRIBID,
+ RTM3_QRAB_SELECT_05_ATTRIBID,
+ RTM3_QRAB_SELECT_06_ATTRIBID,
+ RTM3_QRAB_SELECT_07_ATTRIBID,
+ RTM3_QRAB_SELECT_08_ATTRIBID,
+ RTM3_QRAB_SELECT_09_ATTRIBID,
+ RTM3_QRAB_SELECT_10_ATTRIBID,
+ RTM3_QRAB_SELECT_11_ATTRIBID,
+ RTM3_QRAB_SELECT_12_ATTRIBID,
+ RTM3_QRAB_SELECT_13_ATTRIBID,
+ RTM3_QRAB_SELECT_14_ATTRIBID,
+ RTM3_QRAB_SELECT_15_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_00_ATTRIBID = 0xFA00,
+ RTM3_BURST_DURATION_FACTOR_01_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_02_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_03_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_04_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_05_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_06_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_07_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_08_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_09_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_10_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_11_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_12_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_13_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_14_ATTRIBID,
+ RTM3_BURST_DURATION_FACTOR_15_ATTRIBID,
+ RTM3_T2P_FILTER_TC_00_ATTRIBID = 0xf900,
+ RTM3_T2P_FILTER_TC_01_ATTRIBID,
+ RTM3_T2P_FILTER_TC_02_ATTRIBID,
+ RTM3_T2P_FILTER_TC_03_ATTRIBID,
+ RTM3_T2P_FILTER_TC_04_ATTRIBID,
+ RTM3_T2P_FILTER_TC_05_ATTRIBID,
+ RTM3_T2P_FILTER_TC_06_ATTRIBID,
+ RTM3_T2P_FILTER_TC_07_ATTRIBID,
+ RTM3_T2P_FILTER_TC_08_ATTRIBID,
+ RTM3_T2P_FILTER_TC_09_ATTRIBID,
+ RTM3_T2P_FILTER_TC_10_ATTRIBID,
+ RTM3_T2P_FILTER_TC_11_ATTRIBID,
+ RTM3_T2P_FILTER_TC_12_ATTRIBID,
+ RTM3_T2P_FILTER_TC_13_ATTRIBID,
+ RTM3_T2P_FILTER_TC_14_ATTRIBID,
+ RTM3_T2P_FILTER_TC_15_ATTRIBID,
+ /* complex attributes */
+ RTM3_ASSOCIATED_FLOWS_00_ATTRIBID = 0x0100,
+ RTM3_ASSOCIATED_FLOWS_01_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_02_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_03_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_04_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_05_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_06_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_07_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_08_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_09_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_10_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_11_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_12_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_13_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_14_ATTRIBID,
+ RTM3_ASSOCIATED_FLOWS_15_ATTRIBID,
+ RTM3_AUX_PILOT_CHAN_PARAMETERS_ATTRIBID = 0x0000,
+ RTM3_BUCKET_FACTOR_00_ATTRIBID = 0x0300,
+ RTM3_BUCKET_FACTOR_01_ATTRIBID,
+ RTM3_BUCKET_FACTOR_02_ATTRIBID,
+ RTM3_BUCKET_FACTOR_03_ATTRIBID,
+ RTM3_BUCKET_FACTOR_04_ATTRIBID,
+ RTM3_BUCKET_FACTOR_05_ATTRIBID,
+ RTM3_BUCKET_FACTOR_06_ATTRIBID,
+ RTM3_BUCKET_FACTOR_07_ATTRIBID,
+ RTM3_BUCKET_FACTOR_08_ATTRIBID,
+ RTM3_BUCKET_FACTOR_09_ATTRIBID,
+ RTM3_BUCKET_FACTOR_10_ATTRIBID,
+ RTM3_BUCKET_FACTOR_11_ATTRIBID,
+ RTM3_BUCKET_FACTOR_12_ATTRIBID,
+ RTM3_BUCKET_FACTOR_13_ATTRIBID,
+ RTM3_BUCKET_FACTOR_14_ATTRIBID,
+ RTM3_BUCKET_FACTOR_15_ATTRIBID,
+ RTM3_COMMON_POWER_PARAMETERS_ATTRIBID=0x0001,
+ RTM3_MAX_NUM_SUB_PACKETS_ATTRIBID = 0x0002,
+ RTM3_PERMITTED_PAYLOAD_ATTRIBID = 0x0003,
+ RTM3_PILOT_STRENGTH_ATTRIBID = 0x0004,
+ RTM3_POWER_PARAMETERS_128_ATTRIBID = 0x0005,
+ RTM3_POWER_PARAMETERS_256_ATTRIBID,
+ RTM3_POWER_PARAMETERS_512_ATTRIBID,
+ RTM3_POWER_PARAMETERS_768_ATTRIBID,
+ RTM3_POWER_PARAMETERS_1024_ATTRIBID,
+ RTM3_POWER_PARAMETERS_1536_ATTRIBID,
+ RTM3_POWER_PARAMETERS_2048_ATTRIBID,
+ RTM3_POWER_PARAMETERS_3072_ATTRIBID,
+ RTM3_POWER_PARAMETERS_4096_ATTRIBID,
+ RTM3_POWER_PARAMETERS_6144_ATTRIBID,
+ RTM3_POWER_PARAMETERS_8192_ATTRIBID,
+ RTM3_POWER_PARAMETERS_12288_ATTRIBID,
+ RTM3_REQUEST_PARAMETERS_ATTRIBID,
+ RTM3_RRI_CHAN_POWER_PARAMETERS_ATTRIBID,
+ RTM3_T2P_INFLOW_RANGE_00_ATTRIBID = 0x1500,
+ RTM3_T2P_INFLOW_RANGE_01_ATTRIBID,
+ RTM3_T2P_INFLOW_RANGE_02_ATTRIBID,
+ RTM3_T2P_INFLOW_RANGE_03_ATTRIBID,
+ RTM3_T2P_TRANSITION_FUNCTION_00_ATTRIBID = 0x1600,
+ RTM3_T2P_TRANSITION_FUNCTION_01_ATTRIBID,
+ RTM3_T2P_TRANSITION_FUNCTION_02_ATTRIBID,
+ RTM3_T2P_TRANSITION_FUNCTION_03_ATTRIBID,
+ RTM3_TX_T2P_MAX_ATTRIBID=0x0013,
+ RTM3_MAX_MAC_FLOWS_ATTRIBID=0x0014,
+} Rtm3AttribIdT;
+
+/* RTM 0/1 */
+/*---------*/
+/* PwrParm Attribute Rec */
+typedef struct
+{
+ kal_uint8 valueId;
+ /* Channel Gains from pilotpwr, in 0.5db/0.25db, 2'complement */
+ kal_uint8 dataOffsetNom; /* in 0.5db */
+ kal_uint8 dataOffset9k6; /* in 0.25db onwards */
+ kal_uint8 dataOffset19k2;
+ kal_uint8 dataOffset38k4;
+ kal_uint8 dataOffset76k8;
+ kal_uint8 dataOffset153k6;
+ kal_uint8 rpcStep;
+} RtmPwrParmAttrT;
+
+typedef struct
+{
+ kal_uint8 len;
+ Rtm01AttribIdT attribId;
+ kal_uint8 pwrParmAttrCount;
+ RtmPwrParmAttrT pwrParmAttr[RTM_MAX_ATTRIB_REC];
+} RtmPwrParmAttrRecT;
+
+
+
+/* RateParm Attribute Rec */
+typedef struct
+{
+ kal_uint8 valueId;
+ /* Transition Probability for rev rates (units of 1/255) */
+ kal_uint8 trans9k6_19k2;
+ kal_uint8 trans19k2_38k4;
+ kal_uint8 trans38k4_76k8;
+ kal_uint8 trans76k8_153k6;
+ kal_uint8 trans19k2_9k6;
+ kal_uint8 trans38k4_19k2;
+ kal_uint8 trans76k8_38k4;
+ kal_uint8 trans153k6_76k8;
+} RtmRateParmAttrT;
+
+typedef struct
+{
+ Rtm01AttribIdT attribId;
+ kal_uint8 len;
+ kal_uint8 rateParmAttrCount;
+ RtmRateParmAttrT rateParmAttr[RTM_MAX_ATTRIB_REC];
+} RtmRateParmAttrRecT;
+
+
+
+
+/* CONFIG_REQ, RSP Msgs */
+/*----------------------*/
+/* RTM_SCP_CONFIG_REQ_MSG */
+/* RTM_SCP_CONFIG_RSP_MSG */
+typedef struct
+{
+ kal_uint8 transId;
+ /* RTM 0/1 */
+ kal_bool pwrParmAttrRecIncl;
+ RtmPwrParmAttrRecT pwrParmAttrRec;
+ kal_bool rateParmAttrRecIncl;
+ RtmRateParmAttrRecT rateParmAttrRec;
+
+ /* RTM 2/3 */
+
+} RtmOtaConfigMsgT;
+
+
+
+
+/*------------------------------*/
+/* ETS, OTTS, Test Data Structs */
+/*------------------------------*/
+/*-----------*/
+/* Test Cmds */
+/*-----------*/
+/* RTM_TEST_CFG_MSG */
+typedef struct
+{
+ kal_uint8 RtmTestMode; /* 0=Init_RcpSig, 1=Cont_RcpSig, 2=Repeat_RcpSig, 3=AddBytes */
+
+ /* RTM Init */
+ kal_uint8 RcpMode;
+ kal_uint8 RtmSubtype;
+ kal_uint8 RtmState;
+ kal_uint8 RtmCurrInterlace;
+ kal_uint8 RtmCurrSubframeCnt;
+ kal_uint8 RtmCurrTxHistSubframe;
+ kal_uint8 minRateLimAN;
+ kal_uint8 testTxhwRate; /* RTM0/1: fixed rate for Txhw test */
+ kal_uint8 testTxhwPktSz; /* RTM2/3: fixed PktSz for Txhw test */
+
+ /* RCP_TASK_SIG */
+ kal_uint8 hlarq; /* Hard value of H/L-ARQ */
+ kal_uint8 parq; /* Hard value of P-ARQ */
+
+ /* AddBytes() */
+ kal_uint32 addByteSize;
+ kal_uint8 addByteMacFlowId;
+
+ /* Rtap */
+ kal_bool bTestPktMode;
+
+ kal_uint8 configuredPacketRateMode;
+ kal_uint8 rtapMinRate; /* def=0 */
+ kal_uint8 rtapMaxRate; /* def=5 */ /* PHY0/1, RTM0/1/2: Rate: 0-5 */
+ kal_uint8 configuredPacketPayloadSizeMode;
+ kal_uint8 rtapMinPayloadSize; /* def=0 */
+ kal_uint8 rtapMaxPayloadSize; /* def=12 */ /* PHY2, RTM3: PayloadSz: 0-12 */
+
+ kal_uint8 RtmSpyTxHistInterval;
+ kal_uint8 RpcTestMode;
+} RtmTestCfgMsgT;
+
+/* RtmTestModes */
+typedef enum
+{
+ RTM_TEST_REAL = 0, /* Not test mode */
+ RTM_TEST_TXHW,
+ RTM_TEST_DEACTIVATE,
+ RTM_TEST_ACTIVATE_RCPSIG,
+ RTM_TEST_INIT_RCPSIG,
+ RTM_TEST_CONT_RCPSIG,
+ RTM_TEST_ADD_BYTES,
+ RTM_TEST_RF_RELEASE,
+ RTM_TEST_RF_READY,
+ RTM_TEST_RTAP,
+ RTM_TEST_PACKETAPP
+} RtmTestModeT;
+
+
+/* RpcTestMode */
+typedef enum
+{
+ RPC_TEST_UP = 0,
+ RPC_TEST_DOWN,
+ RPC_TEST_ALTERNATE,
+ RPC_TEST_REAL
+} RpcTestModeT;
+
+/* RpcBitValue */
+typedef enum
+{
+ RPC_BIT_UP = 0,
+ RPC_BIT_DOWN,
+ RPC_BIT_INVALID
+} RpcBitValueT;
+
+/* RTM_TEST_MBPMACBITSOUTPUT_MSG */
+typedef struct
+{
+ RtmMbpMacBitsT macBits;
+
+} RtmTestMbpMacBitsOutputMsgT;
+
+
+
+/* RTM_TEST_MFCGRANTCAL23_MSG */
+typedef struct
+{
+ PcpAcmRtmGrantAllocationT grant;
+
+} RtmTestMfcGrantCal23MsgT;
+
+
+
+/*-----------------------*/
+/* RTM Parm Get/Set Cmds */
+/*-----------------------*/
+/* RTM_TEST_PARM_GET_CMD */
+typedef struct
+{
+ /* RtmScm Data */
+ /*-------------*/
+ /* from RTM_OMP_SECTORPARMS_MSG */
+ kal_uint8 revlinkSilenceDuration; /* frames */
+ kal_uint8 revlinkSilencePeriod;
+
+ /* from RTM_RUP_TCHASSIGN_MSG */
+ kal_uint8 frameOffset; /* slots */
+ kal_uint8 drcLen; /* 0=1, 1=2slots, 2=4slots, 3=8slots */
+ kal_int8 drcChanGainBase; /* 0.5db, valid range (-9dB,+6dB) */
+ kal_int8 dscChanGainBase; /* 0.5db */
+ kal_int8 ackChanGain; /* 0.5db, valid range (-9dB,+6dB) */
+
+ /* from RTM_FTM_CFG_DATA_MSG */
+ kal_uint8 drcGating; /* 0=cont, 1=disc */
+ kal_uint8 dscLen; /* units = 8 slots */
+ kal_uint8 drcBoostLen; /* units = 2 slots */
+ kal_uint8 dscBoostLen; /* units = 8 slots */
+ kal_uint8 drcChanGainBoost; /* db */
+ kal_uint8 dscChanGainBoost; /* db */
+ kal_uint8 deltaAckChanGainMUP; /* units = 0.5db */
+
+
+ /* RTM SessConfig Data */
+ /*---------------------*/
+ kal_uint8 rpcStep; /* 0=0.5db, 1=1.0db */
+
+ /* RTM0/1: Channel Gains from pilotpwr, in 0.5db/0.25db, 2'complement */
+ kal_int8 dataOffNom_01; /* 0.5db (Q1) */
+ kal_int8 dataOff9k6_01; /* 0.25db (Q2) */
+ kal_int8 dataOff19k2_01;
+ kal_int8 dataOff38k4_01;
+ kal_int8 dataOff76k8_01;
+ kal_int8 dataOff153k6_01;
+
+ /* RTM3: TxHw config params */
+ kal_int8 auxPilotChanGain; /* relative to Traffic. In db, from -15 to 0db. */
+ kal_uint8 auxPilotMinPayload; /* 0 to 0xb, units of 128bits to represent payload bits */
+
+
+ /* RTM3: ChanGains -> fixed for testing purposes, in RtmScm */
+ kal_uint16 rriGainScale_3; /* Q7 linear */
+ kal_uint16 dataGainScale0_3;
+ kal_uint16 dataGainScale1_3;
+ kal_uint16 dataGainScale2_3;
+ kal_uint16 dataGainScale3_3;
+} RtmTestParmT;
+
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+} RtmTestParmGetMsgT;
+
+
+typedef struct
+{
+ RtmTestParmT parm; /* Get current params */
+} RtmTestParmGetRspMsgT;
+
+
+
+/* RTM_TEST_PARM_SET_CMD */
+typedef struct
+{
+ kal_uint8 type; /* 0=default, 1=new */
+ RtmTestParmT parm;
+} RtmTestParmSetMsgT;
+
+
+
+/* RTM_TEST_TXCHANSTAT_GET_CMD */
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+} RtmTestTxChanStatGetMsgT;
+
+typedef struct
+{
+ kal_uint16 pilotChanGain; /* Q6: Pilot Scale uses <9,3,u> format */
+ kal_uint16 drcChanGain; /* Q7: DRC Scale uses <9,2,u> format */
+ kal_uint16 ackChanGain; /* Q6: SUP ACK Scale uses <9,3,u> format */
+ kal_uint16 dataChanGain; /* Q5: Data Scale ACK uses <11,6,u> format */
+ kal_uint16 rriChanGain; /* Q6: RRI ACK Scale uses <9,3,u> format */
+ kal_uint16 drcLockPeriod; /* From FTM */
+} RtmTestTxChanStatGetRspMsgT;
+
+
+
+
+/*----------*/
+/* ETS Spys */
+/*----------*/
+/* RtmSpyStatesT */
+typedef struct
+{
+ kal_uint8 RtmSubtype;
+ RcpModeT RcpMode;
+ RtmRmmStateT RtmState;
+ kal_uint8 RtmSilentState;
+ kal_uint8 currChip;
+ kal_uint8 currSlot; /* 0-15, in 1 frame */
+ kal_uint8 currSubframe; /* 0-11, in 80ms count */
+ kal_uint8 RtmCurrSubframeCnt;
+ kal_uint8 RtmCurrInterlace;
+ kal_uint8 RtmPrevInterlace;
+ kal_uint8 RtmPrevPrevInterlace;
+ kal_uint8 RtmCurrTxHistSubframe;
+ kal_uint8 frameOffset; /* slots */
+ kal_uint8 currRate; /* RTM0/1: CurrentRate */
+ kal_uint8 prevRate; /* RTM0/1: Last Rate */
+} RtmSpyStatesT;
+
+/* Rtm3SpyStatesT */
+typedef struct
+{
+ kal_uint8 macFlowIDAck;
+ kal_uint8 macFlowIDNak;
+ kal_uint8 macFlowID;
+ kal_uint16 grantByteSizeAck;
+ kal_uint16 grantByteSizeNak;
+ kal_uint16 grantByteSize;
+} Rtm3FlowSpyStatesT;
+
+typedef struct
+{
+ kal_uint8 maxNumSubPkt; /* 0~3 */
+ kal_uint8 RtmCurrInterlace; /* 0~2 */
+ kal_uint8 ArqMode; /* bit 0 : h/l mode - 1:h, 0:l, bit 1 : p valid - 1:valid */
+ kal_uint8 Arq; /* bit 0 : HL Arq, bit1 : Parq */
+ kal_uint32 SubframeCnt;
+ kal_uint8 subPktNum; /* 0~maxNumSubPkt */
+ kal_uint8 subPktNumAck; /* 0~maxNumSubPkt */
+ kal_uint8 subPktNumNak; /* 0~maxNumSubPkt */
+ kal_uint8 pktSzIdxAck; /* 0~12 */
+ kal_uint8 pktSzIdxNak; /* 0~12 */
+ kal_uint8 pktSzIdx; /* 0~12 */
+ kal_uint8 TransmitModeAck; /* 1-LowLatency, 0-HighCapacity. */
+ kal_uint8 TransmitModeNak; /* 1-LowLatency, 0-HighCapacity. */
+ kal_uint8 TransmitMode; /* 1-LowLatency, 0-HighCapacity. */
+
+ Rtm3FlowSpyStatesT Rtm3FlowSpyStates[MAX_MAC_FLOW_NUM];
+
+} Rtm3SpyStatesT;
+
+/* RtmQoSSpyDataT for UTS : EVDORevAReverseLinkT2PStatisticsEvent() */
+typedef struct
+{
+ kal_uint8 macFlowID; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 0 */
+ kal_uint16 grantByteSize; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 1 */
+ kal_int32 t2POutflow; /* Q8 */ /* 0 ~ 2000 */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 2 */
+ kal_int32 bucketLevelSat; /* Q8->Q6 to avoid overflow */ /* -1000000~1000000 : 0 to 63.5 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 3 */
+ kal_uint8 qrab; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 4 */
+ kal_int32 deltaT2PInflow; /* Q8 */ /* -1000~1000 : -32 to 31.75 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 5 */
+ kal_int32 t2PInflow; /* Q8 */ /* -1000000~1000000 : 0 to 63.5 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 6 */
+ kal_uint8 tT2PHold; /* 0 to 15 frames */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 7 */
+ kal_int32 bucketLevel; /* Q8->Q6 to avoid overflow */ /* -1000000~1000000 : 0 to 63.5 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 8 */
+ kal_int32 bucketFactor; /* Q8 */ /* 0~1000000 : 0 to 63.5 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 9 */
+} RtmQoSFlowSpyDataT;
+
+
+typedef struct
+{
+ kal_uint16 txT2P; /* Q8 */ /* 0~1000 */ /* output to Tx Pwr ctrl */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 0 */
+ kal_uint8 SubpktId; /* 0~3 */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 1 */
+ kal_uint32 SubframeCnt; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 2 */
+ kal_uint16 revPktSzInBits; /* 0~12288 */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 3 */
+ kal_uint16 SumPayload; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 4 */
+
+ kal_uint8 HRDStatus; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 5 */
+
+ kal_int16 pilotStrength; /* Q2 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 6 */
+ kal_int8 frab; /* signed Q7 */ /* Soft value FRABn */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 7 */
+ kal_bool qrabPs;
+ kal_uint8 activeFlowNo; /* 1~4 */
+
+ RtmQoSFlowSpyDataT RtmQoSFlowSpyData[MAX_MAC_FLOW_NUM];
+} RtmQoSSpyDataT;
+
+
+/* RtmSpyHarqT */
+typedef struct
+{
+ kal_uint8 revMacPktId;
+ kal_uint8 revRate;
+ kal_uint8 revPktSz;
+
+ kal_uint8 subPktIndex;
+ kal_uint8 maxSubPktReached;
+ kal_uint8 larqPresentFlag;
+ kal_uint8 nextHLarqType;
+
+ kal_uint32 pktListHead;
+ kal_uint32 pktListLen;
+ kal_uint16 dataGainScale;
+ kal_uint16 dataGainScale1;
+ kal_uint16 dataGainScale2;
+ kal_uint16 dataGainScale3;
+ kal_uint16 rriGainScale;
+
+ kal_uint8 grantTxNumFlows;
+ kal_uint8 macFlowID0;
+ kal_uint16 grantByteSize0;
+} RtmSpyHarqT;
+
+
+/* Rtm3PktInfoSpyStatesT for UTS : EVDORevAReverseLinkPacketInfoEvent() */
+typedef struct
+{
+ kal_uint8 macFlowID; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 0 */
+ kal_uint8 NonEmpty; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 1 */
+ kal_uint8 eligible; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 2 */
+ kal_uint32 InitialQueueSize; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 3 */
+ kal_uint32 potentialT2POutflow; /* Q8 */ /* 0~1000000 */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 4 */
+ kal_uint32 queueOutflow; /* in Bytes */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 5 */
+ kal_uint16 grantByteSize; /* in Bytes */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 6 */
+ kal_uint16 grantByteSizeSent; /* in Bytes */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 7 */
+} Rtm3SpyPktInfoFlowStatesT;
+
+
+typedef struct
+{
+ kal_uint32 SubframeCnt; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 0 */
+ kal_uint16 CandidatePktSzIdxSet; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 1 */
+ kal_uint16 pktSzInBits; /* 0~12288 */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 2 */
+ kal_uint8 TransmitMode; /* 1-LowLatency, 0-HighCapacity. */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 3 */
+ kal_int16 txT2Pmax; /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 4 */
+ kal_uint16 smallestDataUnit; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 5 */
+ kal_uint8 activeFlowNo; /* 1~4 */
+
+ Rtm3SpyPktInfoFlowStatesT Rtm3SpyPktInfoFlowStates[MAX_MAC_FLOW_NUM];
+} Rtm3SpyPktInfoStatesT;
+
+
+/* RtmSpyTxHistT */
+typedef struct
+{
+ kal_uint8 revMacId;
+ kal_uint8 firstSubPkt;
+ kal_int16 hlarqPcomb0;
+ kal_int16 hlarqPcomb1;
+ kal_int16 hlarqPcomb2;
+ kal_int16 hlarqPcomb3;
+ kal_int16 hlarqPcomb4;
+ kal_int16 hlarqPcomb5;
+} RtmSpyTxHistT;
+
+/*----------------------------------------------------------------------------
+ Local Typedefs
+----------------------------------------------------------------------------*/
+/*-----*/
+/* RMM */
+/*-----*/
+/* RtmTmrID */
+/* RTM Timers IDs */
+typedef enum
+{
+ RTM_TMR_SETUP_ID=0
+} RtmTmrIdT;
+
+/* RtmTmrStat */
+typedef enum
+{
+ RTM_TMR_NOT_STARTED,
+ RTM_TMR_ACTIVE,
+ RTM_TMR_EXPIRED
+} RtmTmrStatT;
+
+
+/* Harq for each Interlace */
+typedef struct
+{
+ RevMacPktGT *revMacPkt; /* The revMacPkt transmitted and saved for this interlace */
+ kal_uint8 subPktIndex; /* Set to RTM_NEWPKT=0xff in the beginning.
+ - reset to 0 when a new pkt is saved.
+ - incremented when a pkt is retx due to Nak rx. */
+ kal_bool maxSubPktReached; /* T=>maxSubpkt reached, subPktIndex reset to 0 */
+
+ kal_bool larqPresentFlag;/* If T => no Ack was rx yet on an Interlace before
+ maxSubpktNum was reached, hence the need to softcombine
+ the L-ARQ and P-ARQ bit in the next subframe. */
+
+ kal_uint8 nextHLarqType; /* Next expected ARQ=H/L. L if maxSubPkt reached. For MAChw */
+ /* 0=H, 1=L */
+
+ PcpAcmRtmGrantAllocationT grantTx; /* The grant that was tx for this pkt. Valid for all subpkts. */
+} RtmRmmHarqT;
+
+
+/* TxHistory */
+typedef struct
+{
+ kal_uint8 revMacId; /* The revMacId of the revMacPkt that was transmitted */
+ kal_bool firstSubPkt; /* Indicates if this is the 1st Subpkt.
+ This is used for deciding if P-ARQ needs to be processed. */
+
+ kal_int32 hlarqPcomb[SYS_MAX_ACTIVE_LIST_PILOTS];
+ kal_uint32 ciPcomb[SYS_MAX_ACTIVE_LIST_PILOTS];
+ kal_uint8 hlarqTypePcomb;
+ /* Store the last HARQ & CI (for 6 secs) (ack) for this pkt, if early term.
+ Or the LARQ. This will then be sent to MBP for P-ARQ combining later */
+} RtmTxHistoryT;
+
+
+/* RMM data structure */
+typedef struct
+{
+ /* RTOS Timers */
+ /*-------------*/
+#if defined (RCP_RI_HRT_DEV)
+ kal_uint32 tmrSetup;
+#else
+ eventid tmrSetup; /* T_RTCMPATSETUP */
+#endif
+ RtmTmrStatT tmrSetupStatus; /* Tmr Status */
+
+#if (!defined (RCP_RI_HRT_DEV))
+ /* RCP_TASK_SIG actionTime */
+ /*-------------------------*/
+ kal_uint32 rcpTaskSigFrame; /* The action time frame for RCP_TASK_SIG registration. Periodic reg starts at next frame */
+ kal_uint8 rcpTaskSigSlot; /* The action time slot for RCP_TASK_SIG registration */
+#endif
+
+ /* RevLinkSilentTime */
+ /*-------------------*/
+ kal_uint64 revSilentStart; /* The next revLink silent start frame */
+ kal_uint64 revSilentEnd; /* The current revLink silent end frame */
+ kal_uint32 revSilentInt; /* The revLink silent Interval between 2 start times, in frames */
+
+ /* Harq */
+ /*--------*/
+ RtmRmmHarqT txHarq[RTM_MAX_INTERLACE]; /* Harq struct for 3 interlaces. (Phy 2) */
+ kal_uint8 revMacIdCounter; /* Running counter, incremented if new revMacId requested */
+ RtmTxHistoryT txHistory[RTM_MAX_TXHISTORY];
+ /* Contains the RevMacId for the last 14 subframes transmitted */
+
+ /* FuncPtrs */
+ /*----------*/
+ void (*ProcPhyAckNak)( void ); /* Func ptr to ProcPhyAckNak proc */
+ kal_bool (*TransmitPkt)( kal_uint32 dummy ); /* Func ptr to TxPkt functions */
+} RtmRmmT;
+
+
+/*-----*/
+/* RRC */
+/*-----*/
+
+/* RRC data structure (RTM 0/1) */
+typedef struct
+{
+ /* CurrentRate */
+ /*-------------*/
+ kal_uint8 currRate; /* CurrentRate */
+ kal_uint8 prevRate; /* Last Rate */
+
+ /* RateLimit (from AN Msg) */
+ /*-------------------------*/
+ kal_uint8 currRateLimitAN; /* CurrentRateLimit from AN msg */
+ kal_uint8 rateLimitInMsg; /* The RateLimit value from BC/Uni RevRateLimMsg */
+ kal_bool dlyRateLimUpdate; /* KAL_TRUE=delay currRateLim update till 1 frame later */
+
+ /* MaxRate limit (from Transition Prob Table) */
+ /*--------------------------------------------*/
+ kal_uint8 combBusyBit; /* from RAB. 1=Busy, i.e. RAB is 1 from any Active Sector. */
+ kal_uint8 maxRate; /* Rate:
+ 0 = 0kbps
+ 1 = 9.6kbps
+ 2 = 19.2kbps
+ 3 = 38.4kbps
+ 4 = 76.8kbps
+ 5 = 153.6kbps */
+} RtmRrcT;
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+extern RtmRmmSubtypeT RtmInCfgSubtype; /* RTCMAC subtype: 0, 1, 2, 3*/
+extern RtmRmmSubtypeT RtmSubtype; /* RTCMAC subtype: 0, 1, 2, 3*/
+extern RtmRmmStateT RtmState; /* RMM State */
+extern kal_uint8 RtmSilentState; /* RLSilent State */
+extern kal_uint8 RtmDrcSilentState; /* RLSilent State due to DRC Supv */
+extern kal_bool RtmOverlap1x; /* overlap with 1X or not */
+
+extern kal_uint32 RtmQueueSz[ MAX_MAC_FLOW_NUM ];
+extern RtmScmT RtmScm; /* Config Data that are not in the SessCfg attrib */
+extern RtmCfgDataT RtmInUse; /* InUse Data */
+extern RtmRtapT RtmRtap; /* RTAP Data */
+
+extern RtmTestModeT RtmTestMode;
+
+extern RpcTestModeT RtmRpcTestMode;
+
+extern kal_uint32 deadline_slot;
+
+extern RtmCfgDataT RtmInUse; /* InUse Data */
+
+/*------*/
+/* RMM */
+/*------*/
+extern RtmRmmT RtmRmm; /* The RMM data struct */
+extern kal_uint8 RtmCurrInterlace; /* Current interlace (s) */
+extern kal_uint8 RtmPrevInterlace; /* Prev interlace (s-1) */
+extern kal_uint8 RtmPrevPrevInterlace; /* Prev interlace (s-2) */
+extern kal_uint8 RtmCurrSubframeCnt; /* Current subframe counter, from 0-3 */
+extern kal_uint8 RtmCurrTxHistSubframe; /* Current TxHistory subframe counter, from 0-251 */
+extern kal_bool RtmFwdChanValid; /* FwdChan valid or not. T=>Valid */
+extern kal_int16 RtmPwrRef; /* The PwrRef base pwr when TCH is first activated */
+extern RevMacPktGT *RtmCurrRevMacPkt; /* The current revMacPkt that is formatted. */
+extern RtmMbpMacBitsT RtmMbpMacBits; /* The current MAC Bits from MACHw */
+extern PcpAcmRtmGrantAllocationT RtmGrant; /* The grant for each frame/subframe that was serviced by PCP/Upplayer. */
+extern kal_bool RtmSetupTimerEnable; /* KAL_TRUE=>RTM start setup timer when activate */
+
+
+/*-----*/
+/* RRC */
+/*-----*/
+extern RtmRrcT RtmRrc; /* The RRC data struct */
+extern const kal_int16 RtmRrcDataGainBase[ RTM_MAX_REV_RATE ] ;
+
+/*-----*/
+/* Test */
+/*-----*/
+extern kal_uint8 RtmTestBBCapture;
+extern RtmTxStateT RtmTxSt;
+
+
+/*----------------------------------------------------------------------------
+ Global Function Prototypes
+----------------------------------------------------------------------------*/
+extern void RtmInit( void );
+extern void RtmHandleRupActivateMsg( void );
+extern void RtmHandleRupDeactivateMsg( void );
+extern void RtmHandleRupTchAssignMsg( RtmRupTchAssignMsgT *pMsg );
+extern void RtmHandleRmcRfReadyMsg( void );
+extern void RtmHandleRmcRfReleaseMsg( void );
+extern void RtmHandleAmpTxAtiUpdateMsg( AcmAmpATIListMsgT *pMsg );
+extern void RtmHandleOmpSectorParmsMsg( RtmOmpSectorParmsMsgT *pMsg );
+extern void RtmHandleFtmCfgDataMsg( RtmFtmCfgDataMsgT *pMsg );
+extern void RtmHandleSmpSessionOpenMsg( RtmSmpSessionOpenMsgT *pMsg );
+extern void RtmHandleCssSearchEndMsg( RtmCssSearchEndMsgT *pMsg );
+extern void RtmHandleRtapModeMsg( RtmRtapModeMsgT *pMsg );
+extern void RtmHandleTmrExpiredMsg( kal_uint32 userId );
+extern void RtmHandleDrcTxControlMsg( RtmDrcTxControlMsgT *pMsg );
+extern void RtmHandleDsafFwdMsg( DsaFwdMsgT *pMsg );
+extern void RtmTimerCallBack(kal_uint32 id);
+extern kal_bool RtmProcPhyAckNak( void );
+extern kal_bool RtmTransmitPkt( PcpAcmRtmGrantAllocationT *grant, DatapktlistGT *pktList, kal_uint32 totalPadSize);
+extern kal_bool RtmCalculateGrant( PcpAcmRtmGrantAllocationT *grant );
+extern kal_uint8 RtmGetCurrRevRate( void );
+extern kal_uint8 RtmGetCurrRevPktSz( void );
+extern void RtmHandleTxOffInitBufferMsg(kal_bool isSilent);
+extern void RtmTxhProgNullDataPhy(void);
+extern void RtmMbpSectorInfoUpdata(RcpUpdateSectorInfoMsg *pUpdataSectorInfoMsg);
+
+#ifdef MTK_DEV_ENGINEER_MODE
+extern void RtmHandleRfTstPowerControlMsg(RcpRfTstPowerControlMsgT *pMsg);
+#endif
+
+extern void Rtm23SpyStates( void );
+
+
+/* RMM */
+extern void RtmRmmHarqInit( void );
+extern void RtmRmmAbortHarq( void );
+extern void RtmRmmProcAckNakPhy2( void );
+extern void RtmRmmProcAckNakPhy01( void );
+extern kal_bool RtmRmmTransmitPktPhy2( kal_uint32 dummy );
+extern kal_bool RtmRmmTransmitPktPhy01( kal_uint32 dummy );
+extern void RtmRmmSilentChk( kal_uint8 callerID );
+extern void RtmRmmSilentEntry( void );
+extern void RtmRmmSilentExit( void );
+extern void RtmRmmStartTimer( RtmTmrIdT tmrId );
+extern void RtmRmmRtcInitialSetChanScale(void);
+extern void RtmRmmCloseTxPath (void);
+
+
+/* Test Msgs */
+extern void RtmHandleTestCfgMsg( RtmTestCfgMsgT *pMsg );
+#if defined (MTK_PLT_ON_PC)
+extern void RtmHandleTestMbpMacBitsOutputMsg( RtmTestMbpMacBitsOutputMsgT *pMsg );
+extern void RtmHandleTestMfcGrant23Msg( RtmTestMfcGrantCal23MsgT *pMsg );
+extern void RtmHandleTestParmGetMsg( RtmTestParmGetMsgT *MsgPtr );
+extern void RtmHandleTestParmSetMsg( RtmTestParmSetMsgT *MsgPtr );
+extern void RtmHandleTestTxChanStatGetMsg( RtmTestTxChanStatGetMsgT *MsgPtr );
+extern void StreamHandleEtsCfgAppMsg(EtsAppCfgT* pData);
+#endif
+
+extern void RtmHandleTestTxhw( kal_uint8 rtmSubtype, kal_uint8 testRate, kal_uint8 testPktSz, kal_int16 pwrRef, kal_uint8 RpcTestMode );
+
+extern void RtmSetMaxNumSubPkt( kal_uint8 maxNumSubPkt);
+
+extern void RcpPerfDataReset( void );
+
+extern void RtmHandleTxChanSweepActivateCmd (void);
+extern void RtmHandleTxChanSweepDeactivateCmd (void);
+extern void RtmTransmitPktForTxChanSweepMode (void);
+extern void RtmStateHandle(kal_uint32 event);
+extern kal_uint8 RtmRmmGetRevMacId( void );
+extern void RtmOpenTxSettleDownStHandleRcpTaskSig(void);
+#if defined (RCP_RI_HRT_DEV)
+extern void RcpRiAlignCurTime (kal_uint64 *curTimePtr);
+#endif
+extern kal_uint8 RtmReturnNextArqMode (void);
+/*---------------------------------------------------------------*/
+/* RTM: TODO */
+/* temporary declarations */
+
+
+/* MsgEnc/Dec functions */
+/*----------------------*/
+extern kal_bool RtmRmmDecConfigRspMsg
+(
+ kal_uint8 *pData,
+ kal_uint16 offset,
+ kal_uint16 len,
+ RtmOtaConfigMsgT *pDecMsg );
+
+extern kal_bool RtmRmmDecConfigReqMsg
+(
+ kal_uint8 *pData,
+ kal_uint16 offset,
+ kal_uint16 len,
+ RtmOtaConfigMsgT *pDecMsg );
+
+
+
+extern kal_uint32 RtmSubFrameNumber;
+extern kal_uint8 RtmDummyMacPktId;
+extern kal_bool RtmT2pBoostMode;
+
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
diff --git a/mcu/interface/protocol/l2_c2k/evdo/rtmqos.h b/mcu/interface/protocol/l2_c2k/evdo/rtmqos.h
new file mode 100644
index 0000000..122929a
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/evdo/rtmqos.h
@@ -0,0 +1,187 @@
+/*****************************************************************************
+* 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) 2008-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+/*****************************************************************************
+*
+* FILE NAME : rtmqos.h
+*
+* DESCRIPTION : This file contains function prototypes and other definitions
+* for the RCP RTM QOS component
+*
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#ifndef _RTM_QOS_H_
+#define _RTM_QOS_H_
+
+#include "rtm.h"
+#include "sysdefs.h"
+#include "do_rcpapi.h"
+#include "do_rtmapi.h"
+#define RTM_QOS_SPY_SUBFR_NO 3
+
+/* Internal Data for each MAC flow */
+typedef struct
+{
+ kal_int32 t2POutflow; /* Q8 */ /* 0 ~ 2000 */
+ kal_int32 deltaT2PInflow; /* Q8 */ /* -1000~1000 : -32 to 31.75 dB */
+ kal_uint32 potentialT2POutflowHC; /* Q8 */ /* 0~1000000 */
+ kal_uint32 potentialT2POutflowLL; /* Q8 */ /* 0~1000000 */
+ kal_uint16 queueOutflowHC; /* suppose max 32788 bytes */
+ kal_uint16 queueOutflowLL; /* suppose max 32788 bytes */
+ kal_bool setF;
+ /* for real time mode selection */
+ kal_bool setFLL[(RTM_MAX_REV_RATE_PHY2-1)];
+ kal_uint8 qrab;
+} MfcFlowDataT;
+
+/* Internal common Data for MAC flow - temporal parameter in RTM QOS module */
+typedef struct
+{
+ kal_int8 rN; /* -255~255 (-1 to 1) signed Q7 */
+ kal_uint8 TMmin;
+ kal_uint32 txT2P; /* Q8 */ /* 0~1000 */ /* output to Tx Pwr ctrl */
+ kal_uint32 sumQueueOutflow; /* 32 * max 32788 bytes */
+ kal_int16 pilotStrength[SYS_CP_MAX_NUM_TC_ACTIVE_PILOTS]; /* Q2 dB */
+ kal_int8 frab; /* signed Q7 */ /* Soft value FRABn */
+} MfcCommonDataT;
+
+/* Stored Data - data should be saved for next packet calculation */
+typedef struct
+{
+ kal_uint8 lastBucketLevelMax[MAX_MAC_FLOW_NUM]; /* 0:NULL, 1~255: 0 to 63.5 dB per 0.25dB unit */
+ kal_int32 t2PInflow[MAX_MAC_FLOW_NUM]; /* Q8 */ /* -1000000~1000000 : 0 to 63.5 dB */
+ kal_int32 bucketLevel[MAX_MAC_FLOW_NUM]; /* Q8->Q6 to avoid overflow */ /* -1000000~1000000 : 0 to 63.5 dB */
+ kal_int32 bucketLevelSat[MAX_MAC_FLOW_NUM]; /* Q8->Q6 to avoid overflow */ /* -1000000~1000000 : 0 to 63.5 dB */
+ kal_uint8 tT2PHold[MAX_MAC_FLOW_NUM]; /* 0 to 15 frames for n-1 */
+
+ /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+ kal_uint8 txT2PHiCap[(RTM_MAX_REV_RATE_PHY2-1)][ MAX_SUB_PACKET_NUM]; /* Q2 */
+ /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x3,0xf¡¦. */
+ kal_uint8 txT2PLoLat[(RTM_MAX_REV_RATE_PHY2-1)][ MAX_SUB_PACKET_NUM]; /* Q2 */
+ /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x3,0xf¡¦. */
+ kal_uint8 txT2PHiCapNominal[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q2 */
+ /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+ kal_uint8 txT2PLoLatNominal[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q2 */
+ /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+ kal_uint16 t2PConversionFactorHC; /* Q8 */ /* 0~1536 */
+ kal_uint16 t2PConversionFactorLL; /* Q8 */ /* 0~1536 */
+ kal_int32 bucketFactor[MAX_MAC_FLOW_NUM]; /* Q8 */ /* 0~1000000 : 0 to 63.5 dB */
+ /* bucketFactor_interpolation(linearTodB10(MfcStoredData.t2PInflow[i]), MfcIn->frab, i) * MfcStoredData.t2PInflow[i]) ); */
+ kal_uint32 txT2PHiCapNominalLinear[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q8 */
+ /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+ kal_uint32 txT2PLoLatNominalLinear[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q8 */
+ /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+ kal_uint8 t2PHiCapNominalTransition[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q2 */
+ /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x1c,0x28¡¦. */
+ kal_uint8 t2PLoLatNominalTransition[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q2 */
+ /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x1c,0x28¡¦. */
+ kal_int32 t2PHiCapNominalAuxTransition[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q2 */
+ /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x1c,0x28¡¦. */
+ kal_int32 t2PLoLatNominalAuxTransition[(RTM_MAX_REV_RATE_PHY2-1)]; /* Q2 */
+ /* 8bits (0 to 0x80, 0~32dB per 0.25 dB), unsigned Q2;default: 0x1c,0x28¡¦. */
+
+ kal_int16 maxTxT2P;
+ /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */
+
+ kal_int16 availableTxPwr; /* Q7 */
+} MfcStoredDataT;
+
+
+/* Pre-calculated (dB to Linear conversion) Linear Attribute table */
+typedef struct
+{
+ /* T2PInflowRangeNN */
+ kal_uint32 t2PInflowmax[MAX_MAC_FLOW_NUM]; /* Q8 */
+ /* 255:infinite, 0~255 (0~63.5dB/ 0.25dB), unsigned Q2, default :00:0x10,else:0x07 */
+ kal_uint32 t2PInflowmin[MAX_MAC_FLOW_NUM]; /* Q8 */
+ /* 255:infinite, 0~255 (0~63.5dB/ 0.25dB), unsigned Q2, default :00:0x10,else:0x07 */
+ /* BucketLevelMax00/01/NN */
+ kal_int32 bucketLevelMax[MAX_MAC_FLOW_NUM]; /* Q8 */
+ /* 0: NULL, 1~255 (0~63.5 dB per 0.25 dB), unsigned Q2 ; default 00:0x50,01:0x6c,NN:0x00 */
+ /* AuxiliaryPilotChannelParameters */
+ kal_uint32 auxPilotChannelGain; /* Q8 */ /* 4bits, 0 to -15dB per -1dB; default: 0x0c */
+ /* CommonPowerParameters */
+ kal_uint32 txT2Pmin; /* Q8 */ /* 8bits unsigned Q2, 0~255(0~63.75dB per0.25dB); default:0xf */
+ /* RRIChannelPowerParameters */
+ kal_uint32 rRIChannelGainPreTransition[MAX_SUB_PACKET_NUM]; /* Q8 */
+ /* 2'comp 4 bit (-8¡¦7 per 1 dB); default: 0x0,0x0,0xa,0xa */
+ kal_uint32 rRIChannelGainPostTransition[MAX_SUB_PACKET_NUM-1]; /* Q8 */
+ /* 2'comp 4 bit (-8¡¦7 per 1 dB); default: 0xa,0xa,0xa */
+
+ /* prepared data for interpolation */
+ kal_int16 pilotStrengthStrengthAxisSlope[14]; /* Q6 */
+ kal_int16 txT2PmaxPilotStrengthT2PAxisSlope[6]; /* Q7 */
+ kal_int8 pilotStrengthStrengthAxis[15]; /* -8~7 dB per 1dB */
+ kal_int8 T2PTransitionFunctionT2PDnT2PAxisFRABAxis[MAX_MAC_FLOW_NUM][128];
+ /* -128~127(-32¡¦31.75 dB per 0.25 dB), signed Q2 */
+ kal_int8 T2PTransitionFunctionT2PUpT2PAxisFRABAxis[MAX_MAC_FLOW_NUM][128];
+ /* -128~127(-32¡¦31.75 dB per 0.25 dB), signed Q2 */
+ kal_int8 T2PTransitionFunctionFRABAxis[MAX_MAC_FLOW_NUM][8];
+ /* -8~7(-1¡¦7/8), signed Q3 */
+ kal_int8 BucketFactorFRABAxis[MAX_MAC_FLOW_NUM][8];
+ /* -8~7(-1¡¦7/8), signed Q3 */
+
+ kal_int16 T2PTransitionFunctionT2PAxisSlopeConst[MAX_MAC_FLOW_NUM][15]; /* Q12 */
+ /* (1<<16)/T2PTransitionFunctionT2PAxis[index][i]-T2PTransitionFunctionT2PAxis[index][i-1] */
+ kal_int16 T2PTransitionFunctionFRABAxisSlopeConst[MAX_MAC_FLOW_NUM][7]; /* Q11 */
+ /* (1<<16)/T2PTransitionFunctionFRABAxis[index][i]-T2PTransitionFunctionFRABAxis[index][i-1] */
+
+ kal_int16 BucketFactorT2PAxisSlopeConst[MAX_MAC_FLOW_NUM][15]; /* Q12 */
+ /* (1<<16)/BucketFactorT2PAxis[index][i]-BucketFactorT2PAxis[index][i-1] */
+ kal_int16 BucketFactorFRABAxisSlopeConst[MAX_MAC_FLOW_NUM][7]; /* Q11 */
+ /* (1<<16)/BucketFactorFRABAxis[index][i]-BucketFactorFRABAxis[index][i-1] */
+
+} MfcAttributeLinearDataT;
+
+
+#define RAB_UNLOADED_PERIOD 60000 /* 20 sec */ //for signaling conformance test variable
+
+#endif
+