[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/Rlp_ofst.h b/mcu/interface/protocol/l2_c2k/1xrtt/Rlp_ofst.h
new file mode 100644
index 0000000..196a1a1
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/Rlp_ofst.h
@@ -0,0 +1,119 @@
+/*****************************************************************************
+* 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) 1999-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+/****************************************************************
+ *
+ * Module: t_offset.h
+ *
+ * Purpose: Defines module id offsets to add with token value
+ * to create contiguous tokens.
+ *
+ **********************************************************************
+ **********************************************************************/
+
+kal_uint16 TokenOffsetsRlp[13] =
+{
+ 0,
+ 15,
+ 100,
+ 146,
+ 176,
+ 179,
+ 192,
+ 195,
+ 195,
+ 200,
+ 201,
+ 207,
+ 207
+};
+
+/*****************************************************************************
+$Log: rlp_ofst.h $
+Revision 1.2 2004/05/04 13:41:05 ameya
+Merged the CP 10.0.0 changes from CBP 4.0 into the CBP 4.05 baseline.
+Revision 1.6 2004/01/20 18:49:32 hhong
+Added two more token traces in rlp_enc.c.
+Revision 1.1 2004/01/22 10:52:23 fpeng
+Initial revision
+Revision 1.5 2003/11/21 20:36:27 hhong
+Fixed TokenOffsetsRlp[ ].
+Revision 1.4 2002/06/06 13:54:23 chinh
+Changed and Added Copyright
+Revision 1.3 2001/11/14 14:29:28 hhong
+Changed to accomodate added tokens.
+Revision 1.2 2001/08/08 18:26:34 hhong
+To update offset due to additional engine traces for RLP type III.
+Revision 1.1 2001/04/26 11:43:17 fpeng
+Initial revision
+Revision 1.6 2000/12/14 15:58:42 hhong
+Change the offset for Rlp_stat.c for added engine traces.
+Revision 1.5 2000/05/19 12:38:03 hhong
+Revision 1.4.1.2 2000/05/18 19:05:39Z hhong
+A duplicated version of 1.4
+Revision 1.4.1.1 2000/05/11 18:43:15Z hhong
+Duplicate revision
+Revision 1.4 2000/05/11 18:43:15Z hhong
+Updated from the Isotel release R2.30.
+Revision 1.2.1.2 2000/03/27 23:28:04Z hhong
+Bugs fix from Isotel's release in 02/2000
+Revision 1.2.1.1 1999/12/04 01:21:39Z hhong
+Duplicate revision
+Revision 1.4.1.2 2000/05/18 19:05:39Z hhong
+A duplicated version of 1.4
+Revision 1.4.1.1 2000/05/11 18:43:15Z hhong
+Duplicate revision
+Revision 1.4 2000/05/11 18:43:15Z hhong
+Updated from the Isotel release R2.30.
+Revision 1.2.1.2 2000/03/27 23:28:04Z hhong
+Bugs fix from Isotel's release in 02/2000
+Revision 1.2.1.1 1999/12/04 01:21:39Z hhong
+Duplicate revision
+Revision 1.2 1999/12/04 01:21:39Z etarolli
+Fixed EOL in file
+Revision 1.1 1999/11/30 23:18:40Z cdma
+Initial revision
+Revision 1.5 1999/08/03 22:01:01 hhong
+Patches from ISOTEL dated 08/03/99.
+*****************************************************************************/
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmd_audio.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmd_audio.h
new file mode 100644
index 0000000..318e33c
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmd_audio.h
@@ -0,0 +1,296 @@
+/*******************************************************************************
+* 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) 2005
+*
+* 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:
+ * ---------
+ * lmd_audio.h
+ *
+ * Project:
+ * --------
+ *
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ *
+ *
+ ******************************************************************************/
+#ifndef _LMD_AUDIO_H_
+#define _LMD_AUDIO_H_
+
+#include "kal_general_types.h"
+
+#define MAX_FCH_FRAME_WORD_LEN 17
+
+typedef struct
+{
+ kal_uint16 SpkrVoiceFwdChPcktRate; /* forward channel voice packet rate */
+ kal_uint16 SpkrVoiceFwdChPcktSize; /* forward channel voice packet size (in x16 words) */
+ kal_uint16 SpkrVoiceFwdChPcktData[MAX_FCH_FRAME_WORD_LEN]; /* forward channel voice packet data */
+}IpcDsvSendSpkrVoiceFwdChPcktDataMsgT;
+
+typedef struct
+{
+ kal_uint16 EbNt; /* Eb/Nt for FCH */
+}IpcDsvSendAudioChanQltyMsgT;
+
+typedef struct
+{
+ kal_uint16 AudioSpchSrvcOpt; /* speech service option connection type */
+ kal_uint16 AudioSpchSrvcOptMaxRate; /* maximum voice encode rate */
+} IpcDsvSendAudioSsoConnectMsgT;
+
+/*MSG_ID_IPC_DSV_SEND_SPKR_VOICE_FWD_CH_PCKT_DATA_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IpcDsvSendSpkrVoiceFwdChPcktDataMsgT msg;
+} ipc_dsv_send_spkr_voice_fwd_ch_pckt_data_msg_struct;
+
+/*MSG_ID_IPC_DSV_SEND_AUDIO_CHAN_QLTY_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IpcDsvSendAudioChanQltyMsgT msg;
+}ipc_dsv_send_audio_chan_qlty_msg_struct;
+
+/*MSG_ID_IPC_DSV_SEND_AUDIO_SSO_CONNECT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IpcDsvSendAudioSsoConnectMsgT msg;
+} ipc_dsv_send_audio_sso_connect_msg_struct;
+typedef struct
+{
+ kal_uint16 RoutingDisabled; /* KAL_TRUE if speech routing disabled */
+} IpcDsvSendAudioSpchRoutingMsgT;
+
+/*MSG_ID_IPC_DSV_SEND_AUDIO_SPCH_ROUTING_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IpcDsvSendAudioSpchRoutingMsgT msg;
+} ipc_dsv_send_audio_spch_routing_msg_struct;
+
+typedef struct
+{
+ kal_uint16 AudioSsoCtrlRrmLevel; /* rate reduced mode bit-field */
+ kal_uint16 AudioSsoCtrlM2mMode; /* mobile-to-mobile mode bit-field */
+ kal_uint16 AudioSsoCtrlInitCodecMode; /* initialize codec mode bit-field */
+} IpcDsvSendSsoCtrlParamsMsgT;
+
+/*MSG_ID_IPC_DSV_SEND_AUDIO_SSO_CTRL_PARAMS_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IpcDsvSendSsoCtrlParamsMsgT msg;
+}ipc_dsv_send_audio_sso_ctrl_params_msg_struct;
+
+/*MSG_ID_IPC_DSV_SEND_AUDIO_SSO_DISCONNECT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+}ipc_dsv_send_audio_sso_disconnect_msg_struct;
+typedef struct
+{
+ kal_uint16 MicVoiceEncMaxRate; /* maximum voice encode rate for connected SSO */
+} IpcDsvSetMicVoiceEncMaxRateMsgT;
+
+
+/*MSG_ID_IPC_DSV_SET_MIC_VOICE_ENC_MAX_RATE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IpcDsvSetMicVoiceEncMaxRateMsgT msg;
+} ipc_dsv_set_mic_voice_enc_max_rate_msg_struct;
+
+/*MSG_ID_LMD_AUDIO_SSO_CONNECT_RSP_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} lmd_audio_sso_connect_rsp_msg_struct;
+
+/*MSG_ID_LMD_AUDIO_SSO_DISCONN_RSP_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} lmd_audio_sso_disconn_rsp_msg_struct;
+typedef struct
+{
+ kal_uint16 MppSpchRate; /* Encoder rate decision indicator */
+ kal_uint16 NumMppSpchData; /* Number of Tx Speech Data */
+ kal_uint16 MppSpchData[MAX_FCH_FRAME_WORD_LEN]; /* Starting address of Tx Speech Data */
+} IpcCpSpchDataRevChPacketMsgT;
+
+/*MSG_ID_LMD_TX_SPCH_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IpcCpSpchDataRevChPacketMsgT msg;
+} lmd_tx_spch_msg_struct;
+/*MSG_ID_LMD_SPCH_DATA_ENC_AGC_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lmd_spch_data_enc_agc_msg_struct;
+
+/*MSG_ID_LMD_SPCH_DATA_ENC_HFREE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lmd_spch_data_enc_hfree_msg_struct;
+
+/*MSG_ID_LMD_SPCH_DATA_DEC_HFREE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lmd_spch_data_dec_hfree_msg_struct;
+
+/*
+** LMD_SPEECH_LOOPBACK_MODE_MSG, start or stop speech loopback mode
+*/
+typedef struct
+{
+ kal_bool start;
+ kal_uint16 ServiceOption; /* associated service option */
+} LmdSpeechLoopBackMsgT;
+
+/*MSG_ID_LMD_SPEECH_LOOPBACK_MODE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdSpeechLoopBackMsgT msg;
+}lmd_speech_loopback_mode_msg_struct;
+
+typedef enum
+{
+ IPC_SPCH_BLANK = 0x0,
+ IPC_SPCH_EIGHTH = 0x1,
+ IPC_SPCH_QUARTER = 0x2, /* not used for SSO 3 */
+ IPC_SPCH_HALF = 0x3,
+ IPC_SPCH_FULL = 0x4,
+#ifdef MTK_CBP_ENCRYPT_VOICE
+ IPC_SPCH_ENCRYPT_BLK = 0x5, /*used only for SO32944*/
+ IPC_SPCH_ENCRYPT_FULL = 0X6, /*used only for SO32944*/
+#endif
+ IPC_SPCH_NON_CRITICAL= 0xC,/*change to 0xc since there's a definition in other Branches which already used 0X5*/
+ IPC_SPCH_ERASURE = 0xE,
+ IPC_SPCH_FULL_LIKELY = 0xF /* used only for SSO's 1&3 */
+} IpcSpchSrvcOptRateT;
+
+typedef enum
+{
+ IPC_SPCH_SRVC_OPTION_NULL = 0, /* Invalid service option */
+ IPC_SPCH_SRVC_OPTION1 = 1, /* SO1. QCELP8. not supported */
+ IPC_SPCH_SRVC_OPTION3 = 3, /* SO3. EVRC-A */
+ IPC_SPCH_SRVC_OPTION17 = 17, /* SO17. QCELP13 */
+ IPC_SPCH_SRVC_OPTION68 = 68, /* SO68. EVRC-B */
+ IPC_SPCH_SRVC_OPTION73 = 73, /* SO73. EVRC-NB */
+ IPC_SPCH_SRVC_OPTION73WB = 173, /* SO73. EVRC-WB */
+ IPC_SPCH_SRVC_OPTION_AMR = 100, /* WCDMA. AMR */
+ IPC_SPCH_SRVC_OPTION_AMRWB = 101, /* WCDMA. AMR-WB */
+ IPC_SPCH_SRVC_OPTION_GSMFR = 256, /* GSM. GSMFR */
+ IPC_SPCH_SRVC_OPTION_GSMEFR = 257, /* GSM GSMEFR */
+ IPC_SPCH_SRVC_OPTION_GSMHR = 258 /* GSM. GSMHR */
+#ifdef MTK_CBP_ENCRYPT_VOICE
+ ,
+ IPC_SPCH_SRVC_OPTION32944 =32944 /*SO0x80b0 Voice Encryption*/
+#endif
+} IpcSpchSrvcOptT;
+
+typedef struct
+{
+ kal_uint32 u4HBFrmCountUL1, u4HBFrmCountUL2;
+ kal_uint32 u4HBFrmCountDL1, u4HBFrmCountDL2;
+ kal_bool bSta;
+ kal_bool bCodRdy;
+ kal_bool bFstDLFrm;
+ kal_bool bAppSta;
+ kal_bool bLMDLbk;
+ kal_bool bCAALLbk;
+ kal_uint16 u2Cod;
+ kal_uint16 u2RS;
+ kal_uint16 u2Dbg;
+
+}SPC2K_Struct;
+
+
+typedef struct
+{
+ kal_uint16 u2Mode;
+ kal_uint16 u2SO;
+ kal_bool bStart;
+
+}HwdSphLbkMsgT;
+
+//enum CAALMsgId
+//{
+// MSG_ID_CAAL_SSO_CONN_RSP_MSG = 0,
+// MSG_ID_CAAL_SSO_DISCONN_RSP_MSG,
+// MSG_ID_CAAL_SPH_DATA_UL_MSG
+//};
+
+//enum SphEtsMsgId
+//{
+// SPH_ETS_READ_DSP_MEM = IPC_CP_FROM_SPH_ETS_MIN_MSG,
+// SPH_ETS_LBK,
+// SPH_ETS_FRC_TONE
+//};
+
+void SPC2K_init( void );
+void SPC2K_ConSSO_Req( kal_uint16 u2SrvOpt, kal_uint16 u2MaxEncRate);
+void SPC2K_DisconSSO_Req( void );
+void SPC2K_ConSSO_Done( void );
+void SPC2K_DisconSSO_Done( void );
+void SPC2K_ConSSO_Done_Rsp( void );
+void SPC2K_DisconSSO_Done_Rsp( void );
+kal_bool SPC2K_State( void );
+void SPC2K_UL_GetSpeechFrame( void );
+void SPC2K_DL_PutSpeechFrame(IpcDsvSendSpkrVoiceFwdChPcktDataMsgT *MsgFLDataP);
+void SPC2K_DL_PutSpeechFrame_Do(IpcDsvSendSpkrVoiceFwdChPcktDataMsgT *MsgFLDataP);
+void SPC2K_SOCM_Set(IpcDsvSendSsoCtrlParamsMsgT *pMsg);
+void SPC2K_EncMaxRate_Set(IpcDsvSetMicVoiceEncMaxRateMsgT *pMsg);
+void SPC2K_GetSyncDelayRW( kal_uint16 *u2DelR, kal_uint16 *u2DelW, kal_uint16 *u2DelM);
+void SPC2K_Debug_Info(IpcDsvSendAudioChanQltyMsgT * pMsg);
+void SPC2K_Link_Lbk(HwdSphLbkMsgT *pMsg);
+
+extern SPC2K_Struct spc2k;
+
+
+#endif
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmd_msg_struct.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmd_msg_struct.h
new file mode 100644
index 0000000..0c6eac8
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmd_msg_struct.h
@@ -0,0 +1,396 @@
+/*****************************************************************************
+* 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 _LMD_MSG_STRUCT_H
+#define _LMD_MSG_STRUCT_H
+
+/*****************************************************************************
+*
+* FILE NAME :lmd_msg_struct.h
+*
+* DESCRIPTION :
+*
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "c2k_lmd_model.h"
+#include "lmddefs.h"
+
+/* LMD Messages */
+/*MSG_ID_LMD_L1D_FWD_DATA_IND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdL1dFwdDataIndMsgT msg;
+
+} lmd_l1d_fwd_data_ind_msg_struct;
+
+
+
+/*MSG_ID_LMD_REVERSE_ACCESS_SIG_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdReverseAccessSigMsgT msg;
+} lmd_reverse_access_sig_msg_struct;
+
+/*MSG_ID_LMD_ACCESS_PROBE_ABORT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} lmd_access_probe_abort_msg_struct;
+
+/*MSG_ID_LMD_TRAFFIC_CHAN_START_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdTrafficChanStartMsgT msg;
+} lmd_traffic_chan_start_msg_struct;
+
+/*MSG_ID_LMD_TRAFFIC_CHAN_STOP_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} lmd_traffic_chan_stop_msg_struct;
+
+/*MSG_ID_LMD_RLP_REV_FUNDICATED_DATA_REQ_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdRevFundicatedDataReqMsgT msg;
+} lmd_rlp_rev_fundicated_data_req_msg_struct;
+
+/* MSGs used in UT */
+/*MSG_ID_UT_LMD_FWD_DATA_IND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ c2k_fwd_dbuf_mailbox_registers_struct c2k_fwd_dbuf_mailbox_registers;
+} ut_lmd_fwd_data_ind_msg_struct;
+
+/*MSG_ID_UT_LMD_REV_DATA_REQ_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ c2k_rev_dbuf_mailbox_registers_struct msg;
+} ut_lmd_rev_data_req_msg_struct;
+
+/*MSG_ID_LMD_SERVICE_CONFIGURATION_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdServiceConfigurationMsgT msg;
+} lmd_service_configuration_msg_struct;
+
+/*MSG_ID_LMD_SERVICE_CONFIG_NN_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdServiceConfigurationNnMsgT msg;
+} lmd_service_config_nn_msg_struct;
+
+/*MSG_ID_LMD_SERVICE_OPTION_CONTROL_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdServiceOptionControlMsgT msg;
+} lmd_service_option_control_msg_struct;
+
+/*MSG_ID_LMD_PWR_CTL_PARMS_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdPwrCtlParmsMsgT msg;
+} lmd_pwr_ctl_parms_msg_struct;
+
+/*MSG_ID_LMD_SCH_REV_TDSO_DATA_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdRevSchDataReqMsgT msg;
+} lmd_sch_rev_tdso_data_msg_struct;
+
+/*MSG_ID_LMD_FCH_REV_TDSO_DATA_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdRevFundicatedDataReqMsgT msg;
+} lmd_fch_rev_tdso_data_msg_struct;
+
+/*MSG_ID_LMD_RLP_REV_SCH_DATA_REQ_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdRevSchDataReqMsgT msg;
+} lmd_rlp_rev_sch_data_req_msg_struct;
+
+/*MSG_ID_LMD_TRANSMITTER_STATUS_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdTransmitterStatusMsgT msg;
+} lmd_transmitter_status_msg_struct;
+
+/*MSG_ID_LMD_SET_STAT_CNT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdSetStatCntMsgT msg;
+} lmd_set_stat_cnt_msg_struct;
+
+/*MSG_ID_LMD_GET_STAT_CNT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdGetStatCntMsgT msg;
+} lmd_get_stat_cnt_msg_struct;
+
+/*MSG_ID_LMD_SET_FER_STATS_NUM_FRAMES_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdSetFerStatsNumFramesMsgT msg;
+} lmd_set_fer_stats_num_frames_msg_struct;
+
+/*MSG_ID_LMD_GET_DEBUG_SCRN_INFO_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdGetDebugScrnInfoRequestT msg;
+} lmd_get_debug_scrn_info_msg_struct;
+
+/*MSG_ID_LMD_SPEECH_DISABLE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdSpeechDisableMsgT msg;
+} lmd_speech_disable_msg_struct;
+
+/*MSG_ID_LMD_COUNTER_SUSPEND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdCounterSuspendMsgT msg;
+} lmd_counter_suspend_msg_struct;
+
+/*MSG_ID_LMD_RESOURCE_UPDATE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdResourceUpdateT msg;
+} lmd_resource_update_msg_struct;
+
+/*MSG_ID_LMD_FSCH_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdFschMsgT msg;
+} lmd_fsch_msg_struct;
+
+/*MSG_ID_LMD_FSCH_BURST_END_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdFschBurstEndMsgT msg;
+} lmd_fsch_burst_end_msg_struct;
+
+/*MSG_ID_LMD_RSCH_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdRschMsgT msg;
+} lmd_rsch_msg_struct;
+
+/*MSG_ID_LMD_FSCH_PDU_ORDER_CTRL_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdFschPduOrderCtrlMsgT msg;
+} lmd_fsch_pdu_order_ctrl_msg_struct;
+
+/*MSG_ID_LMD_MARKOV_SERVICE_OPTION_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdMsoFwdChDataMsgT msg;
+} lmd_markov_service_option_msg_struct;
+
+/*MSG_ID_LMD_CLEAR_MARKOV_STATS_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdMsoClearStatsMsgT msg;
+} lmd_clear_markov_stats_msg_struct;
+
+/*MSG_ID_LMD_LOOPBACK_SERVICE_OPTION_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IpcDsvSendSpkrVoiceFwdChPcktDataMsgT msg;
+} lmd_loopback_service_option_msg_struct;
+
+/* MSG_ID_LMD_REVERSE_TRAFFIC_SIG_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdReverseTrafficSigMsgT msg;
+} lmd_reverse_traffic_sig_msg_struct;
+
+/* MSG_ID_LMD_CONVERSATION_SUBSTATE_CONN_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+} lmd_conversation_substate_conn_msg_struct;
+
+/*MSG_ID_LMD_CONVERSATION_SUBSTATE_DISC_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} lmd_conversation_substate_disc_msg_struct;
+
+/*MSG_ID_LMD_RSCH_STOP_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} lmd_rsch_stop_msg_struct;
+
+
+
+/*MSG_ID_LMD_RESET_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} lmd_reset_msg_struct;
+
+/*MSG_ID_LMD_RLP_STOP_REQ_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} lmd_rlp_stop_req_msg_struct;
+
+
+
+/*MSG_ID_LMD_TX_LOOPBACK_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IpcCpSpchDataRevChPacketMsgT msg;
+} lmd_tx_loopback_msg_struct;
+
+/*MSG_ID_LMD_TX_MARKOV_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IpcCpSpchDataRevChPacketMsgT msg;
+} lmd_tx_markov_msg_struct;
+
+
+/* LMD_S Messages */
+/*MSG_ID_LMD_S_TDSO_CONNECT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdTdsoConnectMsgT msg;
+} lmd_s_tdso_connect_msg_struct;
+
+/*MSG_ID_LMD_S_TDSO_DISCONNECT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdTdsoDisconnectMsgT msg;
+} lmd_s_tdso_disconnect_msg_struct;
+
+/*MSG_ID_LMD_S_TDSO_CONTROL_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdServiceOptionControlMsgT msg;
+} lmd_s_tdso_control_msg_struct;
+
+/*MSG_ID_LMD_S_TDSO_DATA_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdTdsoFwdChDataMsgT msg;
+} lmd_s_tdso_data_msg_struct;
+
+/*MSG_ID_LMD_S_TDSO_CLEAR_STATS_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdTdsoClearStatsMsgT msg;
+} lmd_s_tdso_clear_stats_msg_struct;
+
+/*MSG_ID_LMD_S_TDSO_RANDOM_NUMBER_CALC_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdTdsoRandomNumberCalcMsgT msg;
+} lmd_s_tdso_random_number_calc_msg_struct;
+
+/*MSG_ID_LMD_EACH_SIG_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LmdReverseEACHSigMsgT msg;
+}lmd_each_sig_msg_struct;
+
+/*MSG_ID_LMD_SIM_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lmd_sim_msg_struct;
+
+/*MSG_ID_LMD_RESET_STAT_CNT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lmd_reset_stat_cnt_msg_struct;
+
+/*MSG_ID_LMD_CLEAR_FWD_SCH_DTX_STATS_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lmd_clear_fwd_sch_dtx_stats_msg_struct;
+
+
+
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmdapi.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmdapi.h
new file mode 100644
index 0000000..9c6611c
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmdapi.h
@@ -0,0 +1,1235 @@
+/*****************************************************************************
+* 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) 1998-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef _LMDAPI_H_
+#define _LMDAPI_H_
+/*****************************************************************************
+*
+* FILE NAME : lmdapi.h
+*
+* DESCRIPTION :
+*
+* This is the interface include file for LMD.
+* It is organized by first defining the EXE mailboxes and signals used.
+* After this, the enumerated message IDs are defined. Basic typedefs follow
+* this and Following that is the message structure for each message.
+*
+* NOTE: At the end of the file are typedefs that the PS had expected to find in
+* this file during CBP3 development. These are included here as a temporary
+* workaround until these issues can be resolved.
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+#include "sysdefs.h"
+#include "sysapi.h"
+#include "rlpwapi.h"
+#include "lmd_msgid.h"
+#include "lmd_audio.h"
+
+/*----------------------------------------------------------------------------
+* EXE Interfaces - Definition of Signals and Mailboxes
+*----------------------------------------------------------------------------*/
+/* array size for long code mask */
+#define LMD_LONG_CODE_MASK_SIZE 6
+#define MOD_DUMMY 0
+
+/* Voice Memo prefetch buffer size = (max size frame + the rate word) X 4.
+ *
+ * LMD defines a static buffer SpchData[] where it prefetches the speech
+ * data during voice memo or answering machine playback. There are
+ * conditions where FSM is late in doing the block reads and LMD would
+ * be starving of data. By making the buffer size 4 times bigger than
+ * the maximun speech packet size we guarantee that LMD will always have
+ * at least one packet in prefetch buffer.
+ */
+
+/*---------------------------------------------------------------
+* Message IDs for signals and commands sent to LMD
+*---------------------------------------------------------------*/
+/* Maximum number of SCH */
+
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+#define MAX_PDU_NUM 8 /* now 8 for one SCH */
+#else
+#define MAX_PDU_NUM 1 /* now 8 for one SCH */
+#endif
+
+#define MAX_ACCESS_MSG_LEN 111
+#define MAX_MSG_LEN 255
+#define PCH_FRAME_LEN 24
+#define MAX_FCH_FRAME_BYTE_LEN 34
+
+/*
+** Messages of LmdCmdMsgIdT type
+** should be sent to the LMD_CMD_MAILBOX.
+*/
+#include "lmd_msgid.h"
+
+
+/*Move some structures form dspmapi.h to here*/
+/* Forward channel modem channel buffer sizes in kal_uint16 */
+#define IPC_DTA_MBOX_M2C_CH0_SIZE 17
+#define IPC_DTA_MBOX_M2C_CH1_SIZE 30
+#define IPC_DTA_MBOX_M2C_CH2_SIZE 47
+
+/* Reverse channel modem channel buffer sizes in kal_uint16 */
+#define IPC_DTA_MBOX_C2M_CH0_SIZE 17
+#define IPC_DTA_MBOX_C2M_CH1_SIZE 17
+#define IPC_DTA_MBOX_C2M_CH2_SIZE 390
+/* Reverse channel signaling buffer size in kal_uint16 */
+#define IPC_DTA_MBOX_C2M_SIGBUF_SIZE 5
+
+/* define for varais in lmddbuf.c*/
+#define IPC_DTA_MBOX_C2M_CH0_SIZE_IN_DB_WORDS 9
+#define IPC_DTA_MBOX_C2M_CH2_SIZE_IN_DB_WORDS 195
+
+typedef enum
+{
+ LMD_REV_NULL_CHNL = 0,
+ LMD_REV_ACCESS_CHNL,
+ LMD_REV_EACH_CHNL,
+ LMD_REV_TRAFFIC_CHNL
+} LmdRevChanTypeT;
+
+typedef enum /* Rev fch rate */
+{
+ R_FULL = 0,
+ R_HALF,
+ R_QUARTER,
+ R_EIGHTH,
+ R_ZERO
+} LmdRevFundRateTypeT;
+
+typedef enum
+{
+ IPC_FWD_FRAME_BLANK = 0x0,
+ IPC_FWD_FRAME_EIGHTH = 0x1,
+ IPC_FWD_FRAME_QUARTER = 0x2, /* not used for SSO 3 */
+ IPC_FWD_FRAME_HALF = 0x3,
+ IPC_FWD_FRAME_FULL = 0x4,
+ IPC_FWD_FRAME_ERASURE = 0xE,
+ IPC_FWD_FRAME_FULL_LIKELY = 0xF /* used only for SSO's 1&3 */
+} LmdFwdFrameRateT;
+
+typedef enum
+{
+ FER_FCH = 0,
+ FER_SCH,
+ FER_MAX_CHANNELS
+} LmdFerStatsChannelsT;
+
+typedef enum
+{
+ FSYNC,
+ FPAGE,
+ FBCCH,
+ FQPCH,
+ FCPCCH,
+ FCACH,
+ FCCCH,
+ FDCCH,
+ FFCH, /* also for traffic channel in IS95 FTCH */
+ FSCH,
+ F_MON_CHNL,
+ FPDCH,
+ FWD_MAX_CHNL_TYPS
+} LmdFwdChnlTypeT;
+
+/*---------------------------------------------------------------
+* Basic Types
+*---------------------------------------------------------------*/
+
+/*
+** The Logic To Physical Mapping (LPM) table is used in
+** the service configuration messages.
+*/
+#define MAX_LPM_ENTRIES 15
+
+typedef struct
+{
+ kal_uint8 SrId;
+ kal_uint8 LogicalResource;
+ kal_uint8 PhysicalResource;
+ kal_bool ForwardFlag;
+ kal_bool ReverseFlag;
+ kal_uint8 Priority;
+} LmdLpmT;
+
+
+/*---------------------------------------------------------------
+* Message Definitions
+* There is a section for each defined message type. If
+* there is no MsgT shown, there is no data associated with
+* the message.
+*---------------------------------------------------------------*/
+
+/*LMD_L1D_FWD_DATA_IND_MSG*/
+typedef struct
+{
+ kal_bool FchChnlQuality;
+ kal_bool SchChnlReady;
+ kal_bool SchChnlQuality;
+ kal_uint16 FchEbNt;
+ kal_uint16 DecodeSucPcgIndex;
+ kal_uint16 AckReceivePcgIndex;
+ LmdFwdFrameRateT FchRate;
+ kal_uint16 FchDataLength;
+ kal_uint16 SchEbNt;
+ kal_uint16 SchDataLength;
+ kal_uint32 *FchDataAddress;
+ kal_uint32 *SchDataAddress;
+} LmdL1dFwdDataIndMsgT;
+
+
+
+
+
+
+
+
+/*
+** LMD_REVERSE_ACCESS_SIG_MSG
+*/
+typedef struct
+{
+ kal_uint8 MsgLength; /* Length of the message in bytes */
+ kal_uint8 MsgData[MAX_ACCESS_MSG_LEN]; /* Starting address of the message */
+} LmdReverseAccessSigMsgT;
+
+/* The follwoing is for EACH frame durations*/
+typedef enum
+{
+ LMD_FRAME_DURATION_5MS,
+ LMD_FRAME_DURATION_10MS,
+ LMD_FRAME_DURATION_20MS
+}LmdFrameDurationT;
+
+/*
+** LMD_EACH_SIG_MSG
+*/
+typedef struct
+{
+ kal_uint16 FrameNumBits; /* number of bits per frame */
+ LmdFrameDurationT FrameDuration; /* Frame duration of EACH:5ms,10ms,20ms*/
+ kal_uint16 MsgLength; /* Message length in bytes */
+ kal_uint8 MsgData[1]; /* Starting address of the message */
+} LmdReverseEACHSigMsgT;
+
+/*
+** LMD_REVERSE_TRAFFIC_SIG_MSG
+*/
+typedef struct
+{
+ kal_uint8 PrevInUse; /* minimum of mob_p_rev and p_rev */
+ kal_uint8 retryCount;
+ kal_uint16 MsgLength; /* Length of message in bytes */
+ kal_uint8 MsgData[MAX_MSG_LEN];
+} LmdReverseTrafficSigMsgT;
+
+/*
+** LMD_ACCESS_PROBE_ABORT_MSG
+*/
+
+/*
+** LMD_TRAFFIC_CHAN_START_MSG
+*/
+typedef struct
+{
+ kal_uint8 LcMask[LMD_LONG_CODE_MASK_SIZE]; /* Long code Mask */
+ kal_uint8 ChInd; /* Channel Indicator: 1=FCH, 2=DCCH, 3=BOTH */
+ /* Note that the ch_ind has additional new entries
+ corresponding to the ExtChInd for PDCH channel
+ configurations, as follows:
+ 4 = FPDCH_FCPCCH_RFCH,
+ 5 = FPDCH_FCPCCH_RDCCH,
+ 6 = FPDCH_FFCH_RFCH,
+ 7 = FPDCH_FDCCH_RDCCH,
+ 8 = FPDCH_RFCH_FFCH_RDCCH,
+ 9 = FPDCH_RFCH_FFCH_RDCCH_FDCCH */
+
+ kal_uint16 ForMuxOption;
+ kal_uint16 RevMuxOption;
+ kal_uint8 ForRc; /* RC for FCH and DCCH, see Table 3.7.2.3.2.21-3 */
+ kal_uint8 RevRc; /* RC for FCH and DCCH, see Table 3.7.2.3.2.21-3 */
+ kal_uint8 NumLpmEntries;
+ LmdLpmT LpmEntries[MAX_LPM_ENTRIES];
+ kal_uint8 FrameOffset;
+} LmdTrafficChanStartMsgT;
+
+/*
+** LMD_SERVICE_CONFIGURATION_MSG
+*/
+#define LMD_MAX_CON_REC 5
+#define LMD_MAX_SCH_NUM 2
+
+typedef enum
+{
+ LMD_NO_TRAFFIC,
+ LMD_PRIMARY_TRAFFIC,
+ LMD_SECONDARY_TRAFFIC
+} LmdTrafficTypeT;
+
+typedef struct
+{
+ kal_uint8 ConRef; /* service option connection reference */
+ kal_uint16 ServiceOption; /* associated service option */
+ LmdTrafficTypeT ForTraffic; /* forward traffic type */
+ LmdTrafficTypeT RevTraffic; /* reverse traffic type */
+ kal_uint8 SrId;
+} LmdConnectionRecordT;
+
+typedef struct
+{
+ kal_uint8 SchId;
+ kal_bool Coding; /* True-- Turbo is On */
+ kal_uint16 SchMux; /* MuxOption of */
+ kal_uint8 SchRc;
+} LmdSchChanConfigT;
+
+typedef struct
+{
+ kal_uint16 ForMuxOption;
+ kal_uint16 RevMuxOption;
+ kal_uint8 ForNumBits;
+ kal_uint8 RevNumBits;
+ kal_uint8 NumConRec;
+ LmdConnectionRecordT ConRec[LMD_MAX_CON_REC];
+ kal_bool FchCcIncl;
+ SysFchFrameSizeT FchFrameSize; /* valid only if FchCcIncl = 1 */
+ kal_uint8 FchForRc;
+ kal_uint8 FchRevRc;
+ kal_bool DcchCcIncl;
+ SysDcchFrameSizeT DcchFrameSize; /* valid only if dcch_cc_incl = 1 */
+ kal_uint8 DcchForRc;
+ kal_uint8 DcchRevRc;
+ kal_bool ForSchCcIncl;
+ kal_uint8 NumForSch; /* Number of Fwd SCH*/
+ LmdSchChanConfigT ForSchConfig[LMD_MAX_SCH_NUM];
+ kal_bool RevSchCcIncl;
+ kal_uint8 NumRevSch; /* number of Rev SCH*/
+ LmdSchChanConfigT RevSchConfig[LMD_MAX_SCH_NUM];
+
+ kal_bool ForPdchCcIncl; /* If T, the following F-PDCH fields apply */
+ kal_uint16 ForPdchMuxOption;
+ kal_uint8 ForPdchRc;
+} LmdServiceConfigurationT;
+
+/*used for lmdsrvcfg.c*/
+typedef struct
+{
+ kal_uint8 FwdLogicalRes;
+ kal_uint8 FwdPhysicalResCount;
+ kal_uint8 FwdPhysicalRes;/* bit map */
+ kal_uint8 FwdPhysicalResOn;
+ LmdTrafficTypeT FwdTraffic;
+}ForwardConfigT;
+
+typedef struct
+{
+ kal_uint8 RevLogicalRes;
+ kal_uint8 RevPhysicalResCount;
+ kal_uint8 RevPhysicalRes;/* bit map*/
+ kal_uint8 RevPhysicalResOn;
+ LmdTrafficTypeT RevTraffic;
+}ReverseConfigT;
+
+typedef struct
+{
+ LmdServiceOptionT ServiceOpt;
+ kal_uint16 SvcTaskId;
+}ServiceConfigT;
+
+typedef struct
+{
+ kal_uint8 priority;
+ ForwardConfigT forward;
+ ReverseConfigT reverse;
+ ServiceConfigT service;
+}LmdSridDataT;
+
+typedef struct
+{
+ LmdServiceConfigurationT SrvcConfig; /* traffic channel service configuration */
+ SysActionTimeT ActTime; /* Time this message takes effect */
+ kal_bool SrvcConfigNonNegInc;
+} LmdServiceConfigurationMsgT;
+
+
+/*
+** LMD_SERVICE_CONFIG_NN_MSG
+*/
+typedef struct
+{
+ kal_uint8 NumLpmEntries;
+ LmdLpmT LpmEntries[MAX_LPM_ENTRIES];
+ SysActionTimeT ActTime; /* Time this message takes effect */
+} LmdServiceConfigurationNnMsgT;
+
+typedef struct
+{
+ SysActionTimeT ActTime; /* system time (uint=20 ms) to */
+ /* send message */
+ LmdServiceOptionT ServiceOption; /* service option number */
+ kal_uint8 ConRef; /* connection reference being controled */
+ kal_uint8 DataSize; /* control data size in bytes */
+ kal_uint8 Data[MAX_MSG_LEN]; /* control data */
+} LmdServiceOptionControlMsgT;
+
+/*
+** LMD_CONVERSATION_SUBSTATE_CONN_MSG
+*/
+
+/*
+** LMD_CONVERSATION_SUBSTATE_DISC_MSG
+*/
+
+/*
+** LMD_PWR_CTL_PARMS_MSG
+*/
+typedef struct
+{
+ kal_uint8 ChanMonitor; /* 0 = FCH, 1 = DCCH */
+ kal_bool PwrThreshEnable;
+ kal_uint8 PwrRepThresh;
+ kal_bool PwrPeriodEnable;
+ kal_uint8 PwrRepFrames;
+ kal_uint8 PwrRepDelay;
+ kal_bool ResetFPC;
+} LmdPwrCtlParmsMsgT;
+
+
+typedef struct
+{
+ kal_uint16 ParmId;
+ kal_uint32 Value;
+} LmdRevStatT;
+
+typedef struct
+{
+ kal_uint16 NumRecs;
+ LmdRevStatT Rec[1];
+} LmdRevStatSetMsgT;
+
+typedef enum
+{
+ LMD_FULL_RATE = 0x80,
+ LMD_HALF_RATE = 0x40,
+ LMD_QUARTER_RATE = 0x20,
+ LMD_EIGHTH_RATE = 0x10,
+ LMD_NULL_RATE = 0x00
+} LmdRatesT;
+
+
+ /*
+ ** LMD_RLP_REV_FUNDICATED_DATA_REQ_MSG
+ */
+
+#define MAX_FUNDICATED_FRAME_SIZE 34 /* Max. size per RLP frame in byte. */
+ typedef struct
+ {
+ kal_uint8 priSrId; /* SR_ID for Primary Traffic */
+ SysRlpFrameRateE priRate; /* frame rate for primary */
+ kal_uint8 priData[MAX_FUNDICATED_FRAME_SIZE]; /* data buffer for primary */
+
+ kal_uint8 secSrId; /* SR_ID for Secondary Traffic */
+ SysRlpFrameRateE secRate; /* frame rate for secondary */
+ kal_uint8 secData[MAX_FUNDICATED_FRAME_SIZE]; /* data buffer for secondary */
+ } LmdRevFundicatedDataReqMsgT;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+/*
+** LMD_RLP_REV_SCH_DATA_REQ_MSG
+*/
+#define NUM_RSCH_FRAMES 8
+#define REV_SCH_NON_RLP_IND 0xFF
+#define REV_SCH_RLP_IND 0
+
+ typedef struct
+ {
+ kal_uint8 srId;
+ kal_uint8 frameFormat; /* The first 2 bits of RLP frame at SCH goes to the lower
+ 2 bits of frameType */
+ SysRlpFrameRateE frameRate; /* The number of byte */
+ kal_uint8 pduType; /* MuxPdu Type used for TDSO */
+ kal_uint16 frameLen;
+ kal_uint8* dataPtr;
+ } LmdPduT;
+
+ typedef struct
+ {
+ kal_uint8 schUser; /* Used to indicate if RLP or TDSO uses R-SCH */
+ kal_uint8 numSchFrames; /* Number of PDU data packets */
+ LmdPduT schFrames[NUM_RSCH_FRAMES]; /* data type defined in PDUOctet */
+ } LmdRevSchDataReqMsgT;
+
+/*
+** LMD_SCCH_REV_DATA_MSG
+*/
+typedef struct
+{
+ kal_bool IsSecondary; /* False=Primary, True=Secondary */
+ kal_uint8 NumberOfSCCH; /* Number of SCCH included */
+ kal_uint8* Data[7]; /* data pointed by Data */
+} LmdScchRevDataMsgT;
+
+/*
+** LMD_SEC_HIGH_MSG,
+*/
+typedef struct
+{
+ kal_bool SecPriorityHigh;
+} LmdSecHighMsgT;
+
+typedef enum
+{
+ LMD_TRANSMITTER_STATUS_ON, /* Transmitter is off */
+ LMD_TRANSMITTER_STATUS_OFF /* Transmitter is on */
+} LmdTransmitterStatusT;
+
+/*
+** LMD_TRANSMITTER_STATUS_MSG,
+*/
+typedef struct
+{
+ LmdTransmitterStatusT Status;
+} LmdTransmitterStatusMsgT;
+
+/*
+** LMD_SET_STAT_CNT_MSG,
+*/
+
+typedef struct {
+ kal_uint8 Offset; /* Offset from first element */
+ kal_uint32 Value; /* Value received from BS */
+} SetValueT;
+
+/*
+** LMD_SET_STAT_CNT_MSG,
+*/
+typedef struct {
+ StatCounterT StatCounter; /* Statistics counter */
+ kal_uint8 NumSetValue; /* Number of set value included */
+ SetValueT SetValue[MAX_STAT_ELEMENT];
+} LmdSetStatCntMsgT;
+
+/*
+** LMD_GET_STAT_CNT_MSG,
+*/
+typedef struct {
+ StatCounterT StatCounter; /* Statistics counter */
+} LmdGetStatCntMsgT;
+
+/*
+** LMD_SET_FER_STATS_NUM_FRAMES_MSG,
+*/
+typedef struct {
+ kal_uint16 NumFrames; /* Number of frames for running average */
+} LmdSetFerStatsNumFramesMsgT;
+
+/*
+**LMD_GET_DEBUG_SCRN_INFO_MSG,
+*/
+typedef struct {
+ ExeRspMsgT RspInfo; /* Response routing information */
+} LmdGetDebugScrnInfoRequestT;
+
+typedef struct {
+ kal_uint16 badframes;
+ kal_uint16 totframes;
+} LmdGetDebugScrnInfoResponseT;
+
+/*
+** LMD_SPEECH_DISABLE_MSG,
+*/
+typedef struct
+{
+ kal_bool Disable;
+ kal_bool Restart; /* KAL_TRUE if speech connection to be restarted,
+ KAL_FALSE if just disabling routing of speech but remain connected */
+} LmdSpeechDisableMsgT;
+
+/****************FSCH muxHwPdu********************/
+/* MuxPDU Type Definitions */
+typedef enum
+{
+ LMD_MP_MUXTYPE_1 = 0,
+ LMD_MP_MUXTYPE_2,
+ LMD_MP_MUXTYPE_3,
+ LMD_MP_MUXTYPE_5,
+ LMD_MP_MUXTYPE_MAX
+} LmdMpMuxTypeT;
+
+/* MuxPDU Header */
+typedef struct
+{
+ kal_uint16 sr_id;
+ kal_uint16 Len;
+ kal_uint16 ExtHeader;
+ kal_uint16 Padding[1];
+ CpBufferT *MpBufPtr; /* MuxPDU RAM buffer pointer */
+} LmdSchHeaderT; /* 12 bytes */
+
+/* MuxPDU Configuration */
+typedef struct
+{
+ kal_uint8 MuxType; /* 1/2/3/5 */
+ kal_uint16 FrameLength; /* Frame length in bits - used in BYPASS mode */
+} LmdMpConfigT;
+
+//extern kal_bool LmdMpRawSpyEnabled;
+#define LMD_MP_MAX_PDUS 100
+
+typedef enum
+{
+ MUX1_REV_FCH_1 = 1,
+ MUX1_REV_FCH_2,
+ MUX1_REV_FCH_3,
+ MUX1_REV_FCH_4,
+ MUX1_REV_FCH_5,
+ MUX1_REV_FCH_6,
+ MUX1_REV_FCH_7,
+ MUX1_REV_FCH_8,
+ MUX1_REV_FCH_9, /* Reserved */
+ MUX1_REV_FCH_10, /* Reserved */
+ MUX1_REV_FCH_11,
+ MUX1_REV_FCH_12,
+ MUX1_REV_FCH_13,
+ MUX1_REV_FCH_14,
+ MUX1_FOR_FCH_1 = 15,
+ MUX1_FOR_FCH_2,
+ MUX1_FOR_FCH_3,
+ MUX1_FOR_FCH_4,
+ MUX1_FOR_FCH_5,
+ MUX1_FOR_FCH_6,
+ MUX1_FOR_FCH_7,
+ MUX1_FOR_FCH_8,
+ MUX1_FOR_FCH_9,
+ MUX1_FOR_FCH_10,
+ MUX1_FOR_FCH_11,
+ MUX1_FOR_FCH_12,
+ MUX1_FOR_FCH_13,
+ MUX1_FOR_FCH_14,
+ PAG_1 = 29, /* number of paging ch messages received */
+ PAG_2, /* number of paging ch messages with bad crc */
+ PAG_3, /* number of paging ch msgs addressed to mobile */
+ PAG_4, /* number of paging ch half frames received */
+ PAG_5, /* # pag half frames rec. part of a valid message*/
+ PAG_6, /* number of times loss of paging ch declared */
+ PAG_7, /* number of idle handoffs */
+ ACC_1 = 36, /* number of layer 3 requests messages generated */
+ ACC_2, /* number of layer 3 response messages generated */
+ ACC_3, /* number of times access probe was gen. 2 times */
+ ACC_4, /* number of times access probe was gen. 3 times */
+ ACC_5, /* number of times access probe was gen. 4 times */
+ ACC_6, /* number of times access probe was gen. 5 times */
+ ACC_7, /* number of times access probe was gen. 6 times */
+ ACC_8, /* number of unsuccessful access attempts */
+ LAYER2_RTC1 = 44,
+ LAYER2_RTC2,
+ LAYER2_RTC3,
+ LAYER2_RTC4,
+ LAYER2_RTC5,
+ OTHER_SYS_TIME = 49,
+ MUX2_REV_FCH_1 = 50,
+ MUX2_REV_FCH_2,
+ MUX2_REV_FCH_3,
+ MUX2_REV_FCH_4,
+ MUX2_REV_FCH_5,
+ MUX2_REV_FCH_6,
+ MUX2_REV_FCH_7,
+ MUX2_REV_FCH_8,
+ MUX2_REV_FCH_9,
+ MUX2_REV_FCH_10,
+ MUX2_REV_FCH_11,
+ MUX2_REV_FCH_12,
+ MUX2_REV_FCH_13,
+ MUX2_REV_FCH_14,
+ MUX2_REV_FCH_15,
+ MUX2_REV_FCH_16,
+ MUX2_REV_FCH_17,
+ MUX2_REV_FCH_18,
+ MUX2_REV_FCH_19,
+ MUX2_REV_FCH_20,
+ MUX2_REV_FCH_21,
+ MUX2_REV_FCH_22,
+ MUX2_REV_FCH_23,
+ MUX2_REV_FCH_24,
+ MUX2_REV_FCH_25,
+ MUX2_REV_FCH_26,
+ MUX2_FOR_FCH_1 = 76,
+ MUX2_FOR_FCH_2,
+ MUX2_FOR_FCH_3,
+ MUX2_FOR_FCH_4,
+ MUX2_FOR_FCH_5,
+ MUX2_FOR_FCH_6,
+ MUX2_FOR_FCH_7,
+ MUX2_FOR_FCH_8,
+ MUX2_FOR_FCH_9,
+ MUX2_FOR_FCH_10,
+ MUX2_FOR_FCH_11,
+ MUX2_FOR_FCH_12,
+ MUX2_FOR_FCH_13,
+ MUX2_FOR_FCH_14,
+ MUX2_FOR_FCH_15,
+ MUX2_FOR_FCH_16,
+ MUX2_FOR_FCH_17,
+ MUX2_FOR_FCH_18,
+ MUX2_FOR_FCH_19,
+ MUX2_FOR_FCH_20,
+ MUX2_FOR_FCH_21,
+ MUX2_FOR_FCH_22,
+ MUX2_FOR_FCH_23,
+ MUX2_FOR_FCH_24,
+ MUX2_FOR_FCH_25,
+ MUX2_FOR_FCH_26,
+ /* reverse SCCH not supported in CBP4 */
+ SCCH1_REV_S = 102,
+ SCCH1_REV_P,
+ SCCH2_REV_S,
+ SCCH2_REV_P,
+ SCCH3_REV_S,
+ SCCH3_REV_P,
+ SCCH4_REV_S,
+ SCCH4_REV_P,
+ SCCH5_REV_S,
+ SCCH5_REV_P,
+ SCCH6_REV_S,
+ SCCH6_REV_P,
+ SCCH7_REV_S,
+ SCCH7_REV_P,
+ /* forward SCCH not supported in CBP4 */
+ SCCH1_FOR_S = 116,
+ SCCH1_FOR_P,
+ SCCH2_FOR_S,
+ SCCH2_FOR_P,
+ SCCH3_FOR_S,
+ SCCH3_FOR_P,
+ SCCH4_FOR_S,
+ SCCH4_FOR_P,
+ SCCH5_FOR_S,
+ SCCH5_FOR_P,
+ SCCH6_FOR_S,
+ SCCH6_FOR_P,
+ SCCH7_FOR_S,
+ SCCH7_FOR_P,
+ /* MM RTC not supported in CBP4 */
+ MM_RTC1 = 130,
+ MM_RTC2,
+ MM_RTC3,
+ MM_RTC4,
+ MM_RTC5,
+
+ MUX1_REV_FCH_15 = 135, /* Reserved */
+ MUX1_REV_FCH_5_ms, /* not supported in CBP4 */
+ MUX1_FOR_FCH_15, /* Reserved */
+ MUX1_FOR_FCH_5_ms, /* not supported in CBP4 */
+ MUX2_REV_FCH_27, /* Reserved */
+ MUX2_REV_FCH_5_ms, /* not supported in CBP4 */
+ MUX2_FOR_FCH_27, /* Reserved */
+ MUX2_FOR_FCH_5_ms, /* not supported in CBP4 */
+
+ MUX1_REV_DCCH_1 = 143,
+ MUX1_REV_DCCH_2,
+ MUX1_REV_DCCH_3,
+ MUX1_REV_DCCH_4,
+ MUX1_REV_DCCH_5,
+ MUX1_REV_DCCH_6,
+ MUX1_REV_DCCH_7,
+ MUX1_REV_DCCH_8,
+ MUX1_REV_DCCH_9,
+ MUX1_REV_DCCH_10,
+ MUX1_REV_DCCH_11,
+ MUX1_REV_DCCH_12,
+ MUX1_REV_DCCH_13,
+ MUX1_REV_DCCH_14,
+ MUX1_REV_DCCH_15,
+ MUX1_REV_DCCH_5_ms, /* not supported in CBP4 */
+
+ MUX1_FOR_DCCH_1 = 159,
+ MUX1_FOR_DCCH_2,
+ MUX1_FOR_DCCH_3,
+ MUX1_FOR_DCCH_4,
+ MUX1_FOR_DCCH_5,
+ MUX1_FOR_DCCH_6,
+ MUX1_FOR_DCCH_7,
+ MUX1_FOR_DCCH_8,
+ MUX1_FOR_DCCH_9,
+ MUX1_FOR_DCCH_10,
+ MUX1_FOR_DCCH_11,
+ MUX1_FOR_DCCH_12,
+ MUX1_FOR_DCCH_13,
+ MUX1_FOR_DCCH_14,
+ MUX1_FOR_DCCH_15,
+ MUX1_FOR_DCCH_5_ms, /* not supported in CBP4 */
+
+ MUX2_REV_DCCH_1 = 175,
+ MUX2_REV_DCCH_2,
+ MUX2_REV_DCCH_3,
+ MUX2_REV_DCCH_4,
+ MUX2_REV_DCCH_5,
+ MUX2_REV_DCCH_6,
+ MUX2_REV_DCCH_7,
+ MUX2_REV_DCCH_8,
+ MUX2_REV_DCCH_9,
+ MUX2_REV_DCCH_10,
+ MUX2_REV_DCCH_11,
+ MUX2_REV_DCCH_12,
+ MUX2_REV_DCCH_13,
+ MUX2_REV_DCCH_14,
+ MUX2_REV_DCCH_15,
+ MUX2_REV_DCCH_16,
+ MUX2_REV_DCCH_17,
+ MUX2_REV_DCCH_18,
+ MUX2_REV_DCCH_19,
+ MUX2_REV_DCCH_20,
+ MUX2_REV_DCCH_21,
+ MUX2_REV_DCCH_22,
+ MUX2_REV_DCCH_23,
+ MUX2_REV_DCCH_24,
+ MUX2_REV_DCCH_25,
+ MUX2_REV_DCCH_26,
+ MUX2_REV_DCCH_27,
+ MUX2_REV_DCCH_5_ms, /* not supported in CBP4 */
+
+ MUX2_FOR_DCCH_1 = 203,
+ MUX2_FOR_DCCH_2,
+ MUX2_FOR_DCCH_3,
+ MUX2_FOR_DCCH_4,
+ MUX2_FOR_DCCH_5,
+ MUX2_FOR_DCCH_6,
+ MUX2_FOR_DCCH_7,
+ MUX2_FOR_DCCH_8,
+ MUX2_FOR_DCCH_9,
+ MUX2_FOR_DCCH_10,
+ MUX2_FOR_DCCH_11,
+ MUX2_FOR_DCCH_12,
+ MUX2_FOR_DCCH_13,
+ MUX2_FOR_DCCH_14,
+ MUX2_FOR_DCCH_15,
+ MUX2_FOR_DCCH_16,
+ MUX2_FOR_DCCH_17,
+ MUX2_FOR_DCCH_18,
+ MUX2_FOR_DCCH_19,
+ MUX2_FOR_DCCH_20,
+ MUX2_FOR_DCCH_21,
+ MUX2_FOR_DCCH_22,
+ MUX2_FOR_DCCH_23,
+ MUX2_FOR_DCCH_24,
+ MUX2_FOR_DCCH_25,
+ MUX2_FOR_DCCH_26,
+ MUX2_FOR_DCCH_27,
+ MUX2_FOR_DCCH_5_ms, /* not supported in CBP4 */
+
+ SCH0_REV_1X = 231,
+ SCH0_REV_2X,
+ SCH0_REV_4X,
+ SCH0_REV_8X,
+ SCH0_REV_16X,
+ SCH0_REV_LTU,
+ SCH0_REV_LTUOK, /* not supported in CBP4 */
+
+ /* reverse SCH1 not supported in CBP4 */
+ SCH1_REV_1X = 238,
+ SCH1_REV_2X,
+ SCH1_REV_4X,
+ SCH1_REV_8X,
+ SCH1_REV_16X,
+ SCH1_REV_LTU,
+ SCH1_REV_LTUOK, /* not supported in CBP4 */
+
+ SCH0_FOR_1X = 245,
+ SCH0_FOR_2X,
+ SCH0_FOR_4X,
+ SCH0_FOR_8X,
+ SCH0_FOR_16X,
+ SCH0_FOR_LTU,
+ SCH0_FOR_LTUOK, /* not supported in CBP4 */
+
+ /* forward SCH1 not supported in CBP4 */
+ SCH1_FOR_1X = 252,
+ SCH1_FOR_2X,
+ SCH1_FOR_4X,
+ SCH1_FOR_8X,
+ SCH1_FOR_16X,
+ SCH1_FOR_LTU,
+ SCH1_FOR_LTUOK, /* not supported in CBP4 */
+ BCCH_1,/* = 259 */
+ BCCH_2,
+ BCCH_3,
+ BCCH_4,
+ BCCH_5,
+ FCCCH_1,
+ FCCCH_2,
+ FCCCH_3,
+ FCCCH_4,
+/* EACH */
+ #ifdef LMD_EACH_ON
+ EACH_BA_1 = 470,
+ EACH_BA_2,
+ EACH_BA_3,
+ EACH_BA_4,
+ EACH_BA_5,
+ EACH_BA_6,
+ EACH_BA_7,
+ EACH_BA_8,
+ #endif
+ PCG_0_FOR_FCH_1 = 661,
+ PCG_0_FOR_FCH_2,
+ PCG_0_FOR_FCH_3,
+ PCG_0_FOR_FCH_4,
+ PCG_1_FOR_FCH_1,
+ PCG_1_FOR_FCH_2,
+ PCG_1_FOR_FCH_3,
+ PCG_1_FOR_FCH_4,
+ PCG_2_FOR_FCH_1,
+ PCG_2_FOR_FCH_2,
+ PCG_2_FOR_FCH_3,
+ PCG_2_FOR_FCH_4,
+ PCG_3_FOR_FCH_1,
+ PCG_3_FOR_FCH_2,
+ PCG_3_FOR_FCH_3,
+ PCG_3_FOR_FCH_4,
+ PCG_4_FOR_FCH_1,
+ PCG_4_FOR_FCH_2,
+ PCG_4_FOR_FCH_3,
+ PCG_4_FOR_FCH_4,
+ PCG_5_FOR_FCH_1,
+ PCG_5_FOR_FCH_2,
+ PCG_5_FOR_FCH_3,
+ PCG_5_FOR_FCH_4,
+ PCG_6_FOR_FCH_1,
+ PCG_6_FOR_FCH_2,
+ PCG_6_FOR_FCH_3,
+ PCG_6_FOR_FCH_4,
+ PCG_7_FOR_FCH_1,
+ PCG_7_FOR_FCH_2,
+ PCG_7_FOR_FCH_3,
+ PCG_7_FOR_FCH_4,
+ PCG_8_FOR_FCH_1,
+ PCG_8_FOR_FCH_2,
+ PCG_8_FOR_FCH_3,
+ PCG_8_FOR_FCH_4,
+ PCG_9_FOR_FCH_1,
+ PCG_9_FOR_FCH_2,
+ PCG_9_FOR_FCH_3,
+ PCG_9_FOR_FCH_4,
+ PCG_10_FOR_FCH_1,
+ PCG_10_FOR_FCH_2,
+ PCG_10_FOR_FCH_3,
+ PCG_10_FOR_FCH_4,
+ PCG_11_FOR_FCH_1,
+ PCG_11_FOR_FCH_2,
+ PCG_11_FOR_FCH_3,
+ PCG_11_FOR_FCH_4,
+ PCG_12_FOR_FCH_1,
+ PCG_12_FOR_FCH_2,
+ PCG_12_FOR_FCH_3,
+ PCG_12_FOR_FCH_4,
+ PCG_13_FOR_FCH_1,
+ PCG_13_FOR_FCH_2,
+ PCG_13_FOR_FCH_3,
+ PCG_13_FOR_FCH_4,
+ PCG_14_FOR_FCH_1,
+ PCG_14_FOR_FCH_2,
+ PCG_14_FOR_FCH_3,
+ PCG_14_FOR_FCH_4,
+ PCG_15_FOR_FCH_1,
+ PCG_15_FOR_FCH_2,
+ PCG_15_FOR_FCH_3,
+ PCG_15_FOR_FCH_4,
+ PCG_0_FOR_SCH_1 = 725,
+ ACK_TX_PCG_0_FCH = 805,
+ ACK_TX_PCG_1_FCH,
+ ACK_TX_PCG_2_FCH,
+ ACK_TX_PCG_3_FCH,
+ ACK_TX_PCG_4_FCH,
+ ACK_TX_PCG_5_FCH,
+ ACK_TX_PCG_6_FCH,
+ ACK_TX_PCG_7_FCH,
+ ACK_TX_PCG_8_FCH,
+ ACK_TX_PCG_9_FCH,
+ ACK_TX_PCG_10_FCH,
+ ACK_TX_PCG_11_FCH,
+ ACK_TX_PCG_12_FCH,
+ ACK_TX_PCG_13_FCH,
+ ACK_TX_PCG_14_FCH,
+ ACK_TX_PCG_15_FCH,
+ ACK_TX_PCG_0_SCH = 821,
+ ACK_RX_PCG_1_FCH = 837,
+ ACK_RX_PCG_2_FCH,
+ ACK_RX_PCG_3_FCH,
+ ACK_RX_PCG_4_FCH,
+ ACK_RX_PCG_5_FCH,
+ ACK_RX_PCG_6_FCH,
+ ACK_RX_PCG_7_FCH,
+ ACK_RX_PCG_8_FCH,
+ ACK_RX_PCG_9_FCH,
+ ACK_RX_PCG_10_FCH,
+ ACK_RX_PCG_11_FCH,
+ ACK_RX_PCG_12_FCH,
+ ACK_RX_PCG_13_FCH,
+ ACK_RX_PCG_14_FCH,
+ ACK_RX_PCG_15_FCH,
+ ACK_RX_PCG_1_SCH = 852,
+ END_OF_LIST
+ } RetrievableAndSettableParametersT;
+
+typedef enum
+{
+ R_NULL = 0,
+ R_ACCESS,
+ R_EACH,
+ R_TRAFFIC
+
+}RevChnlTypeT;
+
+typedef struct
+{
+ kal_bool CounterSuspend;
+} LmdCounterSuspendMsgT;
+
+typedef struct
+{
+ SysActionTimeT ActTime;
+ kal_uint8 ch_ind; /* Channel Indicator: 1=FCH, 2=DCCH, 3=BOTH */
+ /* Note that the ch_ind has additional new entries
+ corresponding to the ExtChInd for PDCH channel
+ configurations, as follows:
+ 4 = FPDCH_FCPCCH_RFCH,
+ 5 = FPDCH_FCPCCH_RDCCH,
+ 6 = FPDCH_FFCH_RFCH,
+ 7 = FPDCH_FDCCH_RDCCH,
+ 8 = FPDCH_RFCH_FFCH_RDCCH,
+ 9 = FPDCH_RFCH_FFCH_RDCCH_FDCCH */
+ kal_bool SrvConfigNonNegInc;
+} LmdResourceUpdateT;
+
+/*-----------------------------------------
+* The Forward SCH Msg.
+*------------------------------------------*/
+
+typedef struct
+{
+ kal_uint8 ForSchId;
+ kal_uint8 ForSchDuration;
+ kal_uint8 ForSchRate;
+
+} LmdFschRecT;
+
+typedef struct
+{
+ kal_bool PilotGatingUseRate;
+ kal_bool ForSchFerRep;
+ kal_uint8 NumForSch; /* number of SCH assigned.*/
+ LmdFschRecT FschRec[2];
+
+} LmdFschMsgT;
+
+typedef struct
+{
+ kal_uint8 sch_id;
+ kal_bool FinalBurst;
+
+} LmdFschBurstEndMsgT;
+/*-----------------------------------------
+* The Reverse SCH Msg.
+*------------------------------------------*/
+typedef struct
+{
+ kal_uint8 RevSchId;
+ kal_uint8 RevSchDuration;
+ kal_uint8 RevSchRate;
+
+} LmdRschRecT;
+
+typedef struct
+{
+ kal_uint8 RevSchDtxDuration;
+ kal_uint8 NumRevSch; /* number of SCH assigned.*/
+ LmdRschRecT RschRec[LMD_MAX_SCH_NUM];
+
+} LmdRschMsgT;
+
+
+/* The Fwd RLP Data Reading Order revert Msg */
+typedef struct
+{
+
+ kal_bool ReadSwap;
+
+} LmdFschPduOrderCtrlMsgT;
+
+/*========================================================================================
+==========================================================================================
+===================== The following sections need to be resolved. ========================
+==========================================================================================
+========================================================================================*/
+
+
+typedef enum
+{
+ LMD_PRIORITY_NO_MSG,
+ LMD_PRIORITY_HIGH, /* send in < 200 msec */
+ LMD_PRIORITY_MEDIUM, /* send in < 300 msec */
+ LMD_PRIORITY_LOW /* send in < 500 msec */
+} LmdMsgPriorityT;
+
+/*---------------------------------------------------------------
+* Miscellaneous Typedefs
+* These typedefs are not used in any of the messages defined
+* so far. They are here in case other units need these definitions
+* to compile. If they do not eventually move to message definitions,
+* they should be removed from this file.
+*---------------------------------------------------------------*/
+
+typedef enum
+{
+ LMD_FRAME_RATE_FULL,
+ LMD_FRAME_RATE_HALF,
+ LMD_FRAME_RATE_QUARTER,
+ LMD_FRAME_RATE_EIGHTH,
+ LMD_FRAME_ERASURE,
+ LMD_FRAME_RATE_FULL_LIKELY,
+ LMD_FRAME_RATE = 0x7FFFFFFF
+} LmdFrameRateFwdT;
+
+typedef struct
+{
+ kal_uint8 Frames;
+} LmdPowerReportFramesT;
+
+typedef enum
+{
+ LMD_RTC_PREAMBLE = 0,
+ LMD_RTC_SIGNALING_ONLY,
+ LMD_RTC_TRAFFIC
+} LmdRTCTrafficT;
+/* Tx signal Control data type */
+typedef enum
+{
+ LMD_REV_TX_DISABLE =0,
+ LMD_REV_TX_ENABLE=1
+
+}LmdTxSignalControlT;
+
+/* PT DATA */
+typedef struct
+{
+ kal_uint16 MsgId;
+ IpcCpSpchDataRevChPacketMsgT* PtDataMsgP;
+} LmdRevPtDataT;
+/* DS FCH DATA */
+typedef struct
+{
+ kal_uint16 MsgId;
+ LmdRevFundicatedDataReqMsgT* fchDataMsgP;
+} LmdRevDsFchDataT;
+/* DS SCH DATA */
+typedef struct
+{
+ kal_uint16 MsgId;
+ LmdRevSchDataReqMsgT* schDataMsgP;
+}LmdRevDsSchDataT;
+
+/*---------------------------------------------------------------
+** Global function prototypes for use outside LMD
+**---------------------------------------------------------------*/
+/*--forward channel functions--*/
+extern void LmdIpcUpdateFwdStats(LmdFwdChnlTypeT ChnlType, kal_uint16 TotalFrames, kal_uint16 BadFrames);
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/*--- Reverse Tx Signal Control handler----------*/
+extern void LmdRevTxSignalControl(LmdTxSignalControlT TxSigControl, RevChnlTypeT Channel, kal_uint8 PcgIdx);
+
+
+/*--- Rev Sch Transmission Status --- */
+extern void LmdRevSchTxStatusSet(kal_bool RschTxAllowed);
+void LmdGetFrameInfo(kal_uint16 *badframes, kal_uint16 *totframes);
+
+/*--- Interrupt handlers --- */
+//extern void LmdMpLisr (void);
+//extern void LmdMpFIQIsr (void);
+
+extern void LmdFwdSetFrameOffset (kal_uint8 FrameOffset);
+extern void LmdFwdSetFwdBlankingDutyCycles (kal_uint8 FwdBlankingDutyCycle);
+extern void LmdFwdSetRevBlankingDutyCycles (kal_uint8 RevBlankingDutyCycle);
+
+/*---------------------------------------------------------------
+** Global variable prototypes for use outside LMD
+**---------------------------------------------------------------*/
+
+//extern kal_uint16 LmdFerConsecutiveBadFrames[FER_MAX_CHANNELS]; /* 0: FCH, 1: SCH */
+//extern kal_uint16 LmdFerStats[FER_MAX_CHANNELS]; /* 0: FCH, 1: SCH */
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy_SO73\1 2013-07-10 07:00:01 GMT yanliu
+** HREF#0000: 1x advance SD 20130708_1xAdvanced version merge**/
+/**Log information: \main\2 2013-07-17 08:16:12 GMT yanliu
+** HREF#0000: 1x advance SD 20130708_1xAdvanced version merge**/
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmddefs.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmddefs.h
new file mode 100644
index 0000000..79e5a03
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmddefs.h
@@ -0,0 +1,1297 @@
+/*****************************************************************************
+* 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) 1998-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef _LMDDEFS_H_
+#define _LMDDEFS_H_
+/*****************************************************************************
+*
+* FILE NAME : lmddefs.h
+*
+* DESCRIPTION : LMD unit definitions
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+#include "lmdapi.h"
+#include "lmdsapi.h"
+#include "sysapi.h"
+#include "pswapi.h"
+#include "l1dapi.h"
+#include "rlpwapi.h"
+#include "cpbuf.h"
+#include "lmderr.h"
+#include "xl2_em.h"
+#include "lmd_audio.h"
+
+/* Bit maps for the Physical channel type */
+#define PHY_RES_NULL 0x00
+#define PHY_RES_FCH 0x01
+#define PHY_RES_DCCH 0x02
+#define PHY_RES_SCH0 0x04
+#define PHY_RES_SCH1 0x08
+
+/* MUX Pdu Types */
+#define MUXPDUTYPE1 1
+#define MUXPDUTYPE2 2
+#define MUXPUDTYPE3 3
+#define MUXPDUTYPE4 4
+#define MUXPDUTYPE5 5
+#define MUXPDUTYPE6 6
+
+#define MUX_PDU_TYPE_5_SIGNALING_LIM 10
+
+#ifdef MTK_CBP_ENCRYPT_VOICE
+/*Used for VoiceEncryption in so32944*/
+#define PLAINT_LEN 171
+#define PLAINT_LEN_IN_SIZE 22
+#define PLAINT_LEN_IN_WORD 11
+#endif
+
+/*---------------------------------------------------------------
+* IPC Direct Buffer Mailbox Interface
+*---------------------------------------------------------------*/
+
+/* Direct buffer maximum sizes */
+#define REV_EACH_MBX_SIZE 47
+
+#define REV_FCH_MBX_SIZE IPC_DTA_MBOX_C2M_CH0_SIZE
+#define REV_DCCH_MBX_SIZE IPC_DTA_MBOX_C2M_CH1_SIZE
+#define REV_SCH_MBX_SIZE IPC_DTA_MBOX_C2M_CH2_SIZE
+#define REV_FCH_MBX_SIZE_IN_DB_WORD IPC_DTA_MBOX_C2M_CH0_SIZE_IN_DB_WORDS
+#define REV_SCH_MBX_SIZE_IN_DB_WORD IPC_DTA_MBOX_C2M_CH2_SIZE_IN_DB_WORDS
+
+/* FCH MUXPDU1 number of bits definition */
+#define FCH_MUX_PDU1_9600 0x0080
+#define FCH_MUX_PDU1_4800 0x0040
+#define FCH_MUX_PDU1_2400 0x0020
+#define FCH_MUX_PDU1_1200 0x0010
+
+/* FCH MUXPDU2 number of bits definition */
+#define FCH_MUX_PDU2_14400 0x0080
+#define FCH_MUX_PDU2_7200 0x0040
+#define FCH_MUX_PDU2_3600 0x0020
+#define FCH_MUX_PDU2_1800 0x0010
+
+#define FCH_MUX_PDU_ALL_RATE 0x00F0
+
+/* Channel type used by the reverse traffic channel carrier type data struct */
+#define LMD_REV_FCH 0x01
+#define LMD_REV_DCCH 0x02
+#define LMD_REV_SCH 0x04
+
+#define LMD_FRAME_DELAY_TRAFFIC_CHAN 1
+#define MUX_PDU_NO_HEADER 0x07
+
+/* the rate type of the PT data */
+/* The DSPV packet Rate representation, using IpcSpchSrvcOptRateT */
+/* The DSPM will use the LmdFrameRateFwdT, which Full = 0 */
+#define PT_BLANK IPC_SPCH_BLANK /* 0 */
+#define PT_EIGHTH IPC_SPCH_EIGHTH
+#define PT_QUARTER IPC_SPCH_QUARTER /* not used for SSO 3 */
+#define PT_HALF IPC_SPCH_HALF
+#define PT_FULL IPC_SPCH_FULL
+#define PT_ERASURE IPC_SPCH_ERASURE
+#define PT_FULL_LIKELY IPC_SPCH_FULL_LIKELY
+#define PT_NON_CRITICAL IPC_SPCH_NON_CRITICAL
+
+
+#define RLP_FRAME_TYPE_BITS 2 /* RLP request LMD to read FRAME Type*/
+
+/* Static Tdso Data Buffer count and size in bytes
+ The size is derived from the largest size of a PDU block.
+ The count is (NumPdus for Fch/Dcch + NumPdus for Sch) * 4 = (1+8) * 4 = 36.
+ We quadruble the count to have some cushion in case Tdso generates more
+ data than LmdRevch.c can handle */
+#define TDSO_BUFFER_SIZE 68
+#define TDSO_BUFFER_COUNT 36
+
+
+#define SCH_INFINITE_DURATION 0xFFFF
+#define SCH_INFINITE_DTX_DURATION 0x000F
+
+
+/* LSO counters */
+#define RECEIVE_ACK_NAK_COUNTERS_MAX 4
+extern kal_uint32 LsoFAckChCounters[RECEIVE_ACK_NAK_COUNTERS_MAX];
+typedef enum
+{
+ LSO_FACKCH_EACK_RACK = 0,
+ LSO_FACKCH_EACK_RNAK = 1,
+ LSO_FACKCH_ENAK_RNAK = 2,
+ LSO_FACKCH_ENAK_RACK = 3
+} LsoReceiveAckNakCountersT;
+/*the amount of counters*/
+
+/*---------------------------------------------------------------
+* Task Id definitions used for primary traffic routing
+*---------------------------------------------------------------*/
+
+#define MARKOV_TASK (MOD_LMD|0x8000)
+/* EACH Frame Size limitation...*/
+
+/*
+ Each of the following data structures are passed as parameters to
+ functions which write various LMD channel data to the IPC direct
+ buffer mailbox.
+*/
+
+/* Access channel data structure */
+typedef struct
+{
+ kal_uint8 DataLength; /* Number of bytes in access channel data */
+ kal_uint8* AccessData; /* Pointer to access channel data */
+} LmdAccessDataCarrierT;
+
+/* Fch data structure */
+typedef struct
+{
+ kal_uint16 RevFchRate; /* Fch rate */
+ kal_uint16 RevFchLength; /* Number of fch bytes */
+ kal_uint16 RevFchData[REV_FCH_MBX_SIZE]; /* Array of fch data */
+} LmdRevFchCarrierT;
+
+/* Dcch data structure */
+typedef struct
+{
+ kal_uint16 RevDcchLength; /* Number of dcch bytes */
+ kal_uint16 RevDcchData[REV_DCCH_MBX_SIZE]; /* Array of fch data */
+} LmdRevDcchCarrierT;
+
+/* Sch data structure */
+typedef struct
+{
+ kal_uint16 RevSchLength; /* Number of sch bytes */
+ kal_uint16 RevSchData[REV_SCH_MBX_SIZE]; /* Array of sch data */
+} LmdRevSchCarrierT;
+
+/* Traffic channel data structure */
+typedef struct
+{
+ kal_uint8 ChannelType; /* FCH, DCCH, SCH */
+ LmdRevFchCarrierT *FchCarrierP; /* Pointer to fch data struct */
+ LmdRevDcchCarrierT *DcchCarrierP;/* Pointer to dcch data struct */
+ LmdRevSchCarrierT *SchCarrierP; /* Pointer to sch data struct */
+} LmdReverseTchCarrierT;
+
+typedef struct
+{
+ kal_uint16 NumBits;
+ kal_uint8 *DataP;
+} LmdDataTypeT;
+
+/* Data structures used to communicate service configurations to the reverse object */
+
+/* The FCH rev mux format */
+typedef struct
+{
+ kal_uint8 FchHeader; /* The header to use for fch */
+ kal_uint8 FchHeaderBits; /* The number of bits in the fch header */
+ kal_uint16 FchPtBits; /* The number of primary traffic bits in fch */
+ kal_uint16 FchSigBits; /* The number of signaling bits in fch */
+ kal_uint8 FchSigNumInsertBits;/* The number of signaling insert bits in fch */
+ kal_uint16 FchSecBits; /* The number of secondary traffic bits in fch */
+ kal_bool CreateNullFrame;/* Boolean indicating the frame should be null */
+ LmdRevFundRateTypeT FchRate; /* The FCH rate information used for DSPM. */
+ SysMultiplexOptionT MuxOpt; /* The current FCH mux option */
+ kal_uint16 NumBits; /* Number of bits per second */
+ PswFrameCatagoryT Category; /* Frame category */
+ kal_bool NonCritical;
+}FchRevMuxFormatT;
+
+/* The DCCH rev mux format */
+typedef struct
+{
+ kal_uint8 DcchHeader; /* The header to use for dcch */
+ kal_uint8 DcchHeaderBits; /* The number of bits in the dcch header */
+ kal_uint16 DcchPtBits; /* The number of primary traffic bits in dcch */
+ kal_uint16 DcchSigBits; /* The number of signaling bits in dcch */
+ kal_uint8 DcchSigNumInsertBits;/* The number of signaling insert bits in dcch */
+ kal_uint16 DcchSecBits; /* The number of secondary traffic bits in dcch */
+ kal_bool CreateNullFrame;/* Boolean indicating the frame should be null */
+ SysMultiplexOptionT MuxOpt; /* The current DCCH mux option */
+ kal_uint16 NumBits; /* Number of bits per second */
+ PswFrameCatagoryT Category; /* Frame category */
+}DcchRevMuxFormatT;
+
+typedef struct
+{
+ kal_uint8 SrId;
+ kal_uint8 FrameFormat;
+}LmdSvcRevDsSchInfoT;
+
+typedef struct
+{
+ kal_uint8 NumberOfSchPdu; /* Getting it from the RLP Msg*/
+ LmdSvcRevDsSchInfoT PduInfo[MAX_PDU_NUM];
+} LmdSvcDsSchT;
+
+/* The SCH rev mux format */
+typedef struct
+{
+ kal_uint8 sch_id;
+ kal_bool Coding; /* True-- Turbo is On */
+ kal_uint8 NumLtu; /* Number of LTU */
+ kal_uint16 LtuBits;
+ kal_uint8 NumPdu; /* Number of PDU: in case LTU = 0: total
+ PDU num in a frame; LTU >=2, PDU num
+ per LTU.*/
+ kal_uint8 PduHeader; /* The header of each Pdu: Only for
+ MuxPdu Type 1 and 2. in the MuxPdu
+ Type3, the Header is sr_id + '0000'
+ for Mux PDu3 Filled PDU:
+ Header = '111' + '0000'
+ */
+ kal_uint8 MuxPduType;
+ kal_uint8 NumFilledPdu;/* LTU >0 only */
+ kal_uint8 HeaderBits; /* the number of header in each PDU */
+ kal_uint16 PduBits;
+ SysMultiplexOptionT MuxOpt; /* reverse Mux Option*/
+ LmdSvcDsSchT *RevSchConfig;/* contains each Pdu's SrId and FrameType*/
+}SchRevMuxFormatT;
+
+/*
+ The structure that ties it all together and is filled in by the service
+ configuration object
+*/
+typedef struct
+{
+ FchRevMuxFormatT FchRevMuxFormat;
+ DcchRevMuxFormatT DcchRevMuxFormat;
+ SchRevMuxFormatT SchRevMuxFormat[SYS_MAX_FSCH];
+}LmdRevSvcConfigT;
+
+/* Data structure used to communicate service configurations to the forward object */
+typedef struct
+{
+ kal_uint16 NumBits; /* Number of primary/sec traffic bits associated with
+ this physical channel */
+ kal_uint16 Routing;
+ /* How the primary/sec traffic for this channel should be
+ routed, this contains the task id for the task to
+ which the data should be routed */
+ kal_uint8 SrId; /* Primary/sec Channel Sr_id: used in RLP Fwd Frame Ind. */
+ kal_uint32 MsgId; /* The message id that should be used to route the
+ primary/sec traffic to the PtRouting task */
+}SubChnlT;
+
+typedef struct
+{
+ /**---------- Signaling channel ------------------------------------------*/
+ kal_uint16 NumBits; /* Number of signaling bits associated with this
+ physical channel */
+ kal_uint16 Routing;
+ /* How the signaling for this channel should be routed,
+ this contains the task id for the task to which the data
+ should be routed */
+ PswFrameCatagoryT Category;
+ PswFrameQuality Quality; /* Good for bad signalling frame */
+ SysMultiplexOptionT MuxOpt;
+ kal_uint32 MsgId; /* The message id that should be used to route the
+ signaling data to the SigRouting task */
+}SigChnlT;
+
+typedef struct
+{
+ kal_bool IsSecondary;
+ kal_uint8 HeaderBits; /* Number of Headerbits */
+ kal_uint8 DataBits;
+ kal_uint16 Routing;
+}FwdScchT;
+
+typedef struct
+{
+ kal_uint8 sch_id;
+ kal_uint8 NumLtu;
+ kal_uint16 LtuBits; /* Num of each Ltu's length in bits*/
+ kal_uint8 NumPdu; /* Num of PDU: in case LTU = 0: total
+ PDU num in a frame; LTU >=2, PDU num
+ per LTU.*/
+ kal_uint8 MuxPduType; /* MuxPdu type for each PDU */
+ SysRlpFrameRateE PduRate;
+ kal_uint8 PduHeaderBits;
+ kal_uint16 PduBits;
+ kal_uint8 PduSrId; /* only offered in case PDUType1 or 2 */
+ kal_uint16 Routing;
+ SysMultiplexOptionT mux_option;
+ kal_uint32 MsgId;
+}FwdSchT;
+
+/* SCH Frame from L1D public buffer*/
+typedef struct
+{
+ kal_uint32 TimeStamp; /* System time in frames, needed by TDSO */
+ kal_uint16 NumMuxPdus; /* Number of MuxPDUS */
+ kal_uint16 NumGoodFrames;
+ kal_uint8 MuxPduType;
+ LmdSchHeaderT Header[1];
+} LmdSchFrameT;
+
+
+typedef struct
+{
+ SubChnlT Primary;
+ SigChnlT Signaling;
+ SubChnlT Secondary;
+ /*----------- Header and null frame indicator --------------------- */
+ kal_uint8 HeaderBits; /* Number of header bits for this physical channel */
+ kal_bool NullFramePossible; /* Identifies that the forward object should determine if
+ this in fact is a null frame */
+ kal_uint16 NumBits; /* Number of bits per second */
+ /*----------- Channel assigned --------------------- */
+ kal_bool FchAssigned;
+ kal_bool DcchAssigned; /* Dcch assigned kal_boolean, indicates that Dcch is assigned. */
+}FwdDtchT;
+
+typedef enum
+{
+ FFch = 0,
+ FDcch,
+ FScch,
+ FSch,
+ FNull
+}FwdDataChnlT;
+
+/* Data structure used to communicate service configurations to the forward object */
+typedef struct
+{
+ FwdDataChnlT PhysChnlType; /* Channel type indicator -- FCH, DCCH, SCCH, SCH */
+ FwdDtchT Dtch;
+ FwdScchT Scch;
+ FwdSchT Sch[SYS_MAX_FSCH];
+}LmdFwdSvcConfigT;
+
+/* data info sent to SVC */
+typedef struct
+{
+ LmdFwdChnlTypeT PhysChan; /* this will tell SVC FWD receives SCH data.*/
+ kal_uint8 Header;
+ kal_uint16 DtchNumBits;/* Only for FCH, DCCH*/
+ LmdFwdFrameRateT DtchRate; /* Only for FCH, DCCH*/
+}FwdDataT;
+
+typedef enum
+{
+ LMD_REV_FCH_PT = 0x0,
+ LMD_REV_FCH_SIG,
+ LMD_REV_FCH_SEC,
+ LMD_REV_DCCH_PT,
+ LMD_REV_DCCH_SIG,
+ LMD_REV_DCCH_SEC,
+ LMD_REV_NONE
+} LmdRevPhysChnlTypeT;
+
+typedef struct
+{
+ //ExeMailboxIdT PtMbox;
+ LmdRevPhysChnlTypeT PtPhysChannel;/* the PT mailbox's carrier channel */
+}LmdPtMboxSetT;
+
+typedef struct
+{
+ //ExeMailboxIdT Mbox; /* used for frame request, then RLP put data in this Mbox */
+ kal_uint8 PrimSrId; /* used for frame request */
+ LmdRevPhysChnlTypeT PrimChannel; /* used for Rev to dispose data */
+ RlpFrameRateTabT PrimRateMax; /* used for Frame request*/
+ kal_uint8 SecSrId; /* used for frame request */
+ LmdRevPhysChnlTypeT SecChannel; /* used for Rev to dispose rev data */
+ RlpFrameRateTabT SecRateMax; /* used for Frame request*/
+ kal_uint8 SchId; /* SCH id for the REV channel*/
+ //ExeMailboxIdT SchMbox;
+ kal_uint8 NumberOfSchPDU; /* Number of PDU's allowed */
+ SysRlpFrameRateE PDURate;
+}LmdRlpMboxSetT;
+
+typedef struct
+{
+ LmdRevPhysChnlTypeT PtPhysChannel;
+ LmdRlpMboxSetT* RlpFch; /*RLP mail FCH setups*/
+ LmdRevPhysChnlTypeT SigPhysChannel; /* Signaling carrier channel */
+ kal_bool RlpDtchShareMbox;
+}LmdRevMboxSetT;
+
+typedef struct
+{
+ kal_uint16 PtBits;
+ kal_uint16 PtRate;
+}LmdSvcPtDataT;
+
+typedef struct
+{
+ kal_uint8 PrimSrId;
+ SysRlpFrameRateE PrimRate;
+ kal_uint8 SecSrId;
+ SysRlpFrameRateE SecRate;
+}LmdSvcDsDtchT;
+
+/* The Fsch config info from SVC to FWD */
+typedef struct
+{
+ kal_bool PilotGatingUseRate;
+ kal_bool ForSchFerRep;
+ kal_uint8 sch_id;
+
+}LmdSvcFschInfoT;
+
+/* The Rsch config info from SVC to FWD */
+typedef struct
+{
+ kal_uint16 RevSchDtxDuration;
+ kal_uint8 sch_id;
+ kal_uint16 RevSchDuration;
+}LmdSvcRschInfoT;
+
+
+/*
+ Markov structures
+ */
+/* Markov data message */
+typedef struct
+{
+ kal_uint16 MuxCat; /* mux option category */
+ kal_uint16 RxNumBits; /* size of data in bits */
+ kal_uint16 RxPacket [MAX_FCH_FRAME_WORD_LEN]; /* data */
+} LmdMsoFwdChDataMsgT;
+
+/* Markov control message */
+typedef struct
+{
+ kal_uint8 CtlRecType;
+ union
+ {
+ kal_uint8 Control;
+ kal_uint8 VectCounterId;
+ } Directive;
+} LmdMsoControlDataT;
+
+/* Markov Clear Spy Statistics message */
+typedef enum
+{
+ CLEAR_TX_STATS = 0x01,
+ CLEAR_RX_STATS = 0x02,
+ CLEAR_BOTH_STATS = 0x03
+} LmdDirectionFlagT;
+
+typedef struct
+{
+ LmdDirectionFlagT DirFlag; /* a bit mask variable (TX, RX, or both) */
+} LmdMsoClearStatsMsgT;
+
+/*
+ LSO structures
+ */
+
+
+/*SO75 control message*/
+typedef struct
+{
+ kal_uint8 CtlRecType;
+ union
+ {
+ kal_uint8 AckOrNak;//wait to be confirmed
+ kal_uint8 VectCounterId;
+ }Directive;
+ kal_uint8 ClearCounters;
+} LmdLsoControlDataT;
+
+/*Control for ACK Channel(used for 1xAdv)*/
+typedef enum
+{
+ DEPEND =0x0,
+ ACK =0x1,
+ NAK =0x2
+} AckNakControlT;
+
+
+/*
+ Tdso definitions
+ */
+/* Tdso connect message structure */
+typedef struct
+{
+ kal_uint8 RC; /* Radio Configuration */
+ kal_uint8 ChanMask; /* PHY_RES_FCH, DCCH, SCH0 or SCH1 */
+ LmdTrafficTypeT TrafficType; /* PRIMARY or SECONDARY */
+ kal_uint16 MuxOptions[4]; /* 0 for Fch, 1 for Dcch, 2 for Sch0, 3 for Sch1 */
+} LmdTdsoConfigT;
+
+typedef struct
+{
+ LmdTdsoConfigT Fwd;
+ LmdTdsoConfigT Rev;
+} LmdTdsoConnectMsgT;
+
+/* Tdso data message structures */
+typedef enum
+{
+ DCID_FCH = 0,
+ DCID_DCCH,
+ DCID_SCH0,
+ DCID_SCH1,
+ DCID_NULL
+} LmdDataChanIdT;
+
+typedef struct
+{
+ LmdDataChanIdT DataChanId; /* FCH, DCCH, SCH0 or SCH1 */
+ kal_uint16 NumPdus;
+ kal_uint16 NumBits;
+ kal_uint8 *DataP[8];
+} LmdTdsoDataT;
+
+typedef struct
+{
+ kal_uint8 FwdChanMask; /* PHY_RES_FCH, DCCH, SCH0 or SCH1 */
+ kal_uint16 MuxCat;
+ kal_uint16 NumPdus;
+ kal_uint16 NumBits;
+ kal_uint32 SysTime;
+ CpBufferT *DataP[8];
+} LmdTdsoFwdChDataMsgT;
+
+typedef struct
+{
+ kal_uint8 FwdChanMask; /* PHY_RES_FCH, DCCH, SCH0 or SCH1 */
+ kal_uint8 RevChanMask; /* PHY_RES_FCH, DCCH, SCH0 or SCH1 */
+} LmdTdsoDisconnectMsgT;
+
+typedef enum
+{
+ FWD_LINK = 0,
+ REV_LINK
+} LmdLinkDirectionT;
+
+/* Tdso clear statisctics ETS command message structure */
+typedef struct
+{
+ LmdDirectionFlagT DirFlag; /* a bit mask variable (TX, RX, or both) */
+} LmdTdsoClearStatsMsgT;
+
+/* Tdso Random Number Calc ETS command message structures */
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ kal_bool NewSeed;
+ kal_uint32 Seed;
+} LmdTdsoRandomNumberCalcMsgT;
+
+typedef struct
+{
+ kal_uint8 SeqNum;
+ kal_uint32 Y31;
+ kal_uint32 Y24;
+} RngT;
+
+typedef struct
+{
+ RngT Yn[5];
+} LmdTdsoRandomNumberCalcRspMsgT;
+
+/* Voice memo and voice recognition definitions */
+typedef enum
+{
+ LMD_VMEM_REASON_COMMANDED = 0,
+ LMD_VMEM_REASON_COMPLETED,
+ LMD_VMEM_REASON_CANNOT_DO
+} LmdVmemReasonT;
+
+typedef struct
+{
+ kal_uint8 NumMuxPDUs;
+ kal_uint8 Pad;
+ kal_uint16 MuxPDUSize;
+} LmdMpInputOutputDebugInputSpyT;
+
+typedef struct
+{
+ kal_uint8 NumRlpFrames;
+ kal_uint8 RlpFrameFormat;
+ kal_uint16 RlpFrameLen;
+} LmdMpInputOutputDebugOutputSpyT;
+
+typedef struct
+{
+ kal_uint16 MuxPduCtrl;
+ kal_uint16 MuxPduType5Ctrl;
+ kal_uint16 NumFrames;
+ kal_uint16 NumGoodFrames;
+ kal_uint16 NumMuxPDUs;
+ kal_uint16 SrId;
+ kal_uint16 MuxPDULen;
+ kal_uint16 MuxPDUExtHeader;
+ kal_uint8 MuxPDUData[4];
+} LmdMpPdchInputDebugSpyT;
+
+typedef struct
+{
+ kal_uint8 priSrId;
+ SysRlpFrameRateE priRate;
+ kal_uint8 priDataPtr[4];
+ kal_uint8 secSrId;
+ SysRlpFrameRateE secRate;
+ kal_uint8 secDataPtr[4];
+} LmdMpFundicatedDataOutputSpyT;
+
+typedef struct
+{
+ kal_uint8 srId;
+ RlpFrmFormatE frameFormat;
+ kal_uint8 offset;
+ kal_uint8 reserved;
+ kal_uint16 frameLen;
+ kal_uint8 Data[4];
+} LmdMpPdchOutputSpyFrameInfoT;
+
+typedef enum
+{
+ UNINITIALIZED = 0,
+ INITIALIZED,
+ ACCESS,
+ EACH_STATE,
+ TRAFFIC,
+ TEST_STATE,
+ NULL_STATE,
+ WAIT_2_FRAME_STATE
+} LmdRevStateTypeT;
+
+typedef enum
+{
+ MPDU_NORMAL = 0,
+ MPDU_BYPASS,
+ MPDU_AUTOMATIC
+} MpOpModeT;
+
+/* MuxPDU Training States */
+typedef enum
+{
+ TRAINING_DISABLED = 0,
+ TRAINING_ACTIVE,
+ TRAINING_COMPLETE
+} MpStateT;
+/* MuxPDU Training State sub-trace ids */
+typedef enum
+{
+ MPT_SETUP_ID = 0,
+ MPT_CHECK_LTU_CRC_ID,
+ MPT_ACTIVATE_NEW_CONFIG_ID
+} MpActionIdT;
+/* MuxPDU Set Op Mode Msg */
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ MpOpModeT PreferredMode;
+} LmdMpSetOpModeMsgT;
+
+typedef struct
+{
+ MpOpModeT PreferredMode;
+ kal_uint8 CurrentMode;
+ kal_uint8 CheckLtuCrc;
+} LmdMpSetOpModeRspMsgT;
+
+/* MuxPDU Get Op Mode Msg */
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+} LmdMpGetOpModeMsgT;
+
+typedef struct
+{
+ MpOpModeT PreferredMode;
+ kal_uint8 CurrentMode;
+ kal_uint8 CheckLtuCrc;
+} LmdMpGetOpModeRspMsgT;
+
+
+typedef struct
+{
+ kal_uint8 FFchId;
+ kal_uint8 FSchId;
+ kal_uint8 RFchId;
+ kal_uint8 RSchId;
+}TdsoSrIdT;
+
+typedef struct
+{
+ kal_bool Enabled;
+ kal_uint8 ChanMonitor; /* 0 = FCH, 1 = DCCH */
+ kal_bool PwrThreshEnable;
+ kal_uint8 PwrRepThresh;
+ kal_bool PwrPeriodEnable;
+ kal_uint8 PwrRepFrames;
+ kal_uint8 PwrRepDelay;
+ kal_uint8 CurrRepDelay;
+ kal_uint8 BadFrames;
+ kal_uint8 DcchBadFrames;
+ kal_uint32 TotFrames;
+ kal_uint32 DcchTotFrames;
+ kal_uint8 FrameOffset;
+ kal_uint8 FwdBlankingDutyCycle;
+ kal_uint8 RevBlankingDutyCycle;
+}LmdFwdPwrCtlT;
+
+#ifdef MTK_CBP_ENCRYPT_VOICE
+typedef enum
+{
+ Discard_In_Config = 0,
+ Discard_Full_0_Frame,
+ Discard_first_rev_3_Frame,
+ VoiceEncryptDelay_Reset,
+ Decrypt_Voice,
+ Encrypt_Voice
+} LmdVoiceEncryptEventT;
+#endif
+/*----------------------------------------------------------------------
+ Global variables.
+-----------------------------------------------------------------------*/
+/* Flag Value to indicate the Fwd counters are suspended */
+/* declared and initialized in lmdfwdch.c and used in lmdfwdch.c and lmdmpfwd.c */
+extern kal_bool FwdCounterSuspend;
+extern kal_bool LmdMpSchAssigned;
+
+
+extern TdsoSrIdT TdsoSrId;
+extern kal_uint8 FwdRc;
+extern kal_uint8 RevRc;
+extern LmdFwdPwrCtlT LmdFwdPwrCtlParms;
+extern kal_uint8 VocSrId;
+extern LmdSridDataT LmdSrId[SYS_SR_ID_MAX + 1];
+
+/*flags for statistic and loopback data processing*/
+extern kal_bool EAckCounter;
+extern kal_bool ENakCounter;
+extern kal_bool LsoTxFCHIsNull;
+
+#ifdef MTK_CBP_ENCRYPT_VOICE
+extern kal_bool VoiceEncDataDisable;
+#endif
+
+
+/*----------------------------------------------------------------------
+ Global Function Prototypes
+-----------------------------------------------------------------------*/
+/*-------------------- TRACE/SPY MSG ID Handle------------------------*/
+extern void LmdDhlMsgLog(module_type mod_id, msg_type msg_id, local_para_struct *msgPtr);
+
+/*-- Reverse Object Operations ---------------------------------*/
+extern void LmdRevSig(kal_uint32 SigId);
+extern void LmdRevCmdMsg(void *MsgDataPtr, kal_int32 MsgId);
+extern void LmdRevSigMsg(void *MsgDataPtr, kal_int32 MsgId);
+extern kal_uint16 LmdRevSigDataQueueSizeGet(void);
+extern kal_uint8 LmdRevPrevGet(void);
+extern void LmdRevSchMsg(LmdSvcRschInfoT *RschInfoP);
+extern void LmdGetRevStatCntMsg(LmdGetStatCntMsgT *MsgP);
+extern void LmdSetRevStatCntMsg(LmdSetStatCntMsgT *MsgP);
+extern void LmdResetRevStatCntMsg(void);
+extern void LmdRevSchStop(kal_uint8 sch_id);
+extern void LmdRevTrafficMBoxesFlush(void);
+extern void LmdRevDataMsg(void* MsgDataPtr, kal_uint16 MsgId);
+
+/*-- Reverse channel rate test case handler -----*/
+extern void LmdRateTestControl(L1dTstChnTypeT ChnlType, L1dTstFchRateT FchRate, L1dTstSchRateT SchRate);
+
+
+/*-- Forward Object Operations ---------------------------------*/
+extern void LmdFwdSig(kal_uint32 SigId);
+extern void LmdFwdCmdMsg(void *MsgDataPtr, kal_int32 MsgId);
+extern void LmdFwdSchMsg(LmdSvcFschInfoT *FschInfoP);
+extern void LmdGetFwdStatCntMsg(LmdGetStatCntMsgT *MsgP);
+extern void LmdSetFwdStatCntMsg(LmdSetStatCntMsgT *MsgP);
+extern void LmdResetFwdStatCntMsg(void);
+extern void LmdFwdSchStopSigProc(kal_uint8 sch_id);
+extern void LmdFwdSchPwrMeasRep(kal_uint8 sch_id);
+extern void LmdFwdChannelInit(void);
+extern void LmdFwdUpdateAllSchStats (kal_bool PhysChanQlty, kal_bool SchChanRdy, LmdFwdSvcConfigT *LmdFwdConfig);
+//extern void LmdClearDtxStats(void);
+extern void LmdIpcClearFwdStats(void);
+
+#ifdef MTK_DEV_BUG_FIX_XL2
+extern void LmdFwdSchFrameCountReset(kal_bool CountReset);
+#endif
+
+/*-- Service Configuration Object Operations ---------------------------------*/
+extern void LmdSvcSig(kal_uint32 SigId);
+extern void LmdSvcCmdMsg(void *MsgDataPtr, kal_int32 MsgId);
+extern void LmdSvcRevConfigGet(LmdRevSvcConfigT *LmdRevConfig,
+ LmdSvcPtDataT *LmdPtData,
+ LmdSvcDsDtchT *RevRlpFch,
+ LmdSvcDsSchT *RevRlpSch,
+ kal_uint16 SigBits);
+extern void LmdSvcFwdConfigGet(LmdFwdSvcConfigT *LmdFwdConfig,
+ FwdDataT *FwdData,
+ kal_bool ChnlQlty);
+extern kal_uint8 LmdSvcFwdMuxPDUType(void);
+extern void LmdSvcFwdFrameReceive(LmdFwdChnlTypeT PhysChan);
+extern kal_uint16 LmdSvcFwdPtRate(kal_uint16 PtBits, kal_uint16 PtRouting, LmdFwdFrameRateT PhysChanRate);
+extern kal_uint16 LmdSvcFwdSecRate(kal_uint16 SecBits, kal_uint16 SecRouting);
+extern void LmdSvcVocRateLimit(kal_bool Limit);
+extern void LmdSvcRevMboxSet(LmdRevMboxSetT* LmdRevMboxSet, kal_uint16 SigBits);
+
+extern kal_uint8 LmdSvcRevSigPhysRes(void);
+extern kal_uint8 LmdSvcServiceOptPhysRes(LmdLinkDirectionT LinkDir, LmdServiceOptionT SvcOpt);
+extern void LmdSvcRevTdsoDataConvert(LmdTdsoDataT* GenMsgP, void* RevDsMsgP);
+extern kal_uint8 * LmdSvcLCMaskGet(void);
+
+extern RlpRxFrameRateT LmdRlpFrameSpyRate(SysMultiplexOptionT MuxOption,
+ kal_uint16 PduType,SysRlpFrameRateE PduRate);
+
+extern void LmdSvcSpeechDisableMsgHandler(LmdSpeechDisableMsgT *);
+
+extern kal_bool LmdSvcRevSchCodingGet();
+extern kal_uint8 LmdSvcFwdSchMuxPduGet();
+/* for RSCH DTX*/
+extern void LmdSvcRschDtxExpired(kal_uint8 sch_id);
+extern void LmdRevSchSendDtxExpiration(void);
+
+
+
+/* FSCH rate determination...*/
+extern void LmdSvcActivateNewFSchConfig (void);
+extern kal_uint16 LmdSvcFwdSchDurationGet(kal_uint8 sch_id);
+
+/*-------- Direct Buffer functions --------------------*/
+extern void LmdRevSendAccessFrame(LmdAccessDataCarrierT *LmdAccessDataCarrierP, kal_uint32 FrameBytes);
+extern void LmdRevSendTrafficFrame(LmdReverseTchCarrierT *LmdRevTchCarrierP
+#if defined (MTK_DEV_OPTIMIZE_XL2)
+ , kal_uint8 vocieFlag, kal_uint8 SigFlag
+#endif
+ , kal_uint8 retryCount
+ );
+extern void LmdRevSendTestFrame(void);
+extern void LmdRevInitTestFrame(L1dTstChnTypeT ChnlType,L1dTstFchRateT FchRate,L1dTstSchRateT SchRate);
+extern void LmdRevResetFrameTracking (void);
+extern void LmdFwdStatistics(LmdFwdChnlTypeT PhysChanType, SysMultiplexOptionT MuxOpt,
+ kal_uint16 NumBits, PswFrameCatagoryT Category, kal_bool NullFrame,
+ kal_uint8 NumLtus, kal_uint8 NumGoodLtuCrc);
+
+/*-------- LMD Bit Copying Functions --------------------*/
+extern void LmdPacked8to16BitCpy(kal_uint8 *FromP, kal_uint32 FromBitOffset,
+ kal_uint16 *ToP, kal_uint32 ToBitOffset, kal_uint32 NumBits);
+
+extern void Lmd16toPacked8bitcpy(kal_uint16 *FromP, kal_uint8 *ToP, kal_uint32 NumBits,
+ kal_uint32 BuffBitOffset);
+
+extern void Lmd16toPacked16BitCpy(kal_uint16 *FromP, kal_uint16 *ToP,
+ kal_uint32 NumBits, kal_uint32 BuffBitOffset);
+
+extern void LmdPacked16to16BitCpy(kal_uint16 *FromP, kal_uint16 *ToP,
+ kal_uint32 NumBits, kal_uint32 BuffBitOffset);
+
+extern void LmdPacked16toPacked16BitCpy(register kal_uint16 *FromP,
+ register kal_uint16 *ToP,
+ kal_uint32 NumBits, kal_uint32 FromBitOffset);
+
+extern void Lmd8Bitto8BitCpy(register kal_uint8 *FromP, register kal_uint8 *ToP,
+ kal_uint32 NumBits, kal_uint32 ToBitOffset);
+
+extern void Lmd8BitOffsetto8BitOffsetCpy(register kal_uint8 *FromP, register kal_uint8 *ToP,
+ kal_uint32 NumBits, kal_uint32 FromBitOffset,
+ kal_uint32 ToBitOffset);
+
+extern void LmdSendPswCmdStatusMsg(PswCmdStatusT Status);
+
+/* LMD Crc Functions */
+extern kal_uint16 LmdCrc16BitCalculate (kal_uint8 *msg, kal_uint8 len);
+extern kal_bool LmdCrc16BitCheck (kal_uint8 *message, kal_uint8 len);
+
+/* LMD IRAM Functions that are used by Markov and Test Data Service options */
+extern kal_uint32 LmdRNG48 ( kal_uint32 RNG32 );
+//extern void LmdResetMpPdchCounter (void);
+
+/*for MOD_SPCH Functions*/
+extern void lmdSpch_process_ilm(ilm_struct *current_ilm);
+
+
+/*-------- Markov Functions --------------------*/
+extern void LmdMsoInit ( void );
+extern void LmdMsoConnect ( kal_uint16 MultiplexOption, LmdServiceOptionT ServiceOption );
+extern void LmdMsoControlMsg ( LmdServiceOptionControlMsgT *RxMsgP );
+extern void LmdMsoProcessing ( LmdMsoFwdChDataMsgT *RxMsgP );
+extern void LmdMsoDisconnect ( void );
+extern void LmdMarkovClearStatsMsg ( LmdMsoClearStatsMsgT *RxMsgP );
+
+/*-------- Tdso Functions --------------------*/
+extern void LmdTdsoInit ( void );
+extern void lmds_process_ilm(ilm_struct *current_ilm);
+extern void LmdTdsoConnect ( LmdTdsoConnectMsgT *TdsoConnMsgP );
+extern void LmdTdsoControlMsg ( LmdServiceOptionControlMsgT *RxMsgP );
+extern void LmdTdsoProcessFwdChData ( LmdTdsoFwdChDataMsgT *RxMsgP );
+extern void LmdTdsoProcessRevChData ( void );
+extern void LmdTdsoDisConnect ( LmdTdsoDisconnectMsgT *RxMsgP );
+extern void LmdTdsoClearStatsMsg ( LmdTdsoClearStatsMsgT *RxMsgP );
+extern void LmdTdsoRandomNumberCalcMsg ( LmdTdsoRandomNumberCalcMsgT *RxMsgP );
+
+/*-------- Lso75 Functions --------------------*/
+extern void LmdLsoReset(void);
+extern kal_bool LmdOnTrafficChannel( void );
+extern kal_bool LmdInTestMode( void );
+
+/*------------- Debug Screen Info Response --------------------*/
+extern void LmdDebugScrnFERCalc (kal_bool badframe);
+extern void LmdDebugScrnInfoMsg (LmdGetDebugScrnInfoRequestT* RxMsgP);
+extern void LmdInitializeDebugScrnCounters (void);
+extern LmdRevStateTypeT getLmdRevState(void);
+#ifdef MTK_CBP_ENCRYPT_VOICE
+extern void LmdResetVoiceEncryptDelay(void);
+#endif
+
+/*****************************************************************************
+* $Log: lmddefs.h $
+* Revision 1.12.2.3 2006/03/21 14:38:21 vxnguyen
+* - Removed references to compiler flag LMD_MPDU_BYPASS_OPERATION.
+* - Defined MuxPdu SetMode and GetMode variables, message structures
+* and function prototypes.
+* Revision 1.12.2.2 2006/02/17 10:22:11 wfu
+* - For Bypass mode.
+* Revision 1.12.2.1 2005/10/05 09:38:46 wfu
+* Revision 1.12.3.2 2006/03/13 17:31:56 winston
+* Fix CR7312: Added function prototypes for resetting the fwd/rev mux stat counters, LmdResetRevStatCntMsg() and LmdResetFwdStatCntMsg().
+* Revision 1.12.3.1 2005/10/05 09:38:46 winston
+* Duplicate revision
+* Revision 1.12 2005/10/05 09:38:46 chinh
+* - Move LmdRevStateTypeT from lmdrevch.c to this file.
+* Revision 1.11 2005/03/18 10:14:22 bcolford
+* CBP4.05 [4.21] to CBP6.1 [2.9.0] CP Software Merge.
+* Revision 1.6 2005/01/31 11:59:32 mmalopy
+* - LmdSvcGpsSpeechDisableMsgHandler() reprotoytyped as
+* LmdSvcSpeechDisableMsgHandler() (denotes its used by
+* applications other than GPS).
+* Revision 1.5 2005/01/14 16:08:38 wfu
+* Revision 1.4 2004/07/29 15:48:12 robertk
+* CR 3500: Removed SYS_OPTION_VOICE_MEMO compile switch from definitions.
+* Revision 1.3 2004/05/04 15:32:25 ckackman
+* CP_LMD_0.08.0_MergeCBP4.0_10.0
+* Revision 1.10 2005/02/03 12:10:39 wfu
+* - Update LmdEachCarrierT and functional prototype for LmdRevSendEachFrame() and declare the global buffer EachBuff[] for EACH frame.
+* Revision 1.9 2004/11/18 11:11:02 vxnguyen
+* New LMD function prototypes.
+* Revision 1.8 2004/10/21 14:15:15 bcolford
+* Add new data structures to suppot F-PDCH, F-SCH and F-FCH
+* spies.
+* Revision 1.7 2004/10/06 14:01:14 bcolford
+* Add new data structures to support MuxPDU Type 5, F-PDCH
+* development.
+* Revision 1.6 2004/09/28 13:22:26 bcolford
+* CBP6.0 ver 3.3.0 to CBP6.1 merge
+* Revision 1.8 2004/06/29 11:14:39 bcolford
+* Updated for CBP4.0 to CBP6.0 merge
+* Revision 1.66 2004/03/12 15:16:33 ameya
+* Added prototypes for LmdDebugScrnFERCalc(), LmdDebugScrnInfoMsg() and LmdInitializeDebugScrnCounters().
+* Revision 1.65 2004/02/13 13:06:18 wfu
+* .Declare LmdFwdChannelInit() as a global function call.
+* Revision 1.2 2004/04/07 16:08:58 vxnguyen
+* Removed all SpchDataMppAgc definitions/code in the effort of cleaning up IPC.
+* Revision 1.1 2004/01/22 10:44:44 fpeng
+* Revision 1.5 2004/08/27 10:48:22 bcolford
+* Export a subroutine to allow initialazation of PDCH counter.
+* Revision 1.4 2004/07/29 11:29:23 bcolford
+* Export the new PDCH Test Mode flag and the
+* LmdSrvMpPdchCtrl() subroutine.
+* Revision 1.3 2004/07/08 11:07:20 blee
+* Added support for new RLP API and support for MuxPDU Type 5
+* data objects on F-PDCH.
+* Revision 1.2.1.2 2004/04/20 10:38:34 bcolford
+* MuxPDU Type five development
+* Revision 1.2 2004/03/25 11:55:18 fpeng
+* Updated from 6.0 CP 2.5.0
+* Revision 1.7 2004/02/10 11:52:06 bcolford
+* Merged CBP4.0 Release 8.05.0 changes.
+* Revision 1.6 2004/01/30 10:32:31 vxnguyen
+* - Simplified LmdFwdSchMpFrameProc() function prototype.
+* (the LtuOn, PhysChanQlty and SysTime arguments are no
+* longer passed to this function).
+* Revision 1.5 2003/12/19 11:44:58 wavis
+* Removed NULL_TASK definition (replaced by EXE_DUMMY_TASK).
+* Revision 1.4 2003/12/10 16:07:13 bcolford
+* Add a new macro to support MuxPDU Bypass operation.
+* Revision 1.3.1.2 2003/12/02 16:30:40 bcolford
+* Add a new pre-processor directive to support MuxPDU Type 3
+* operation in bypass mode.
+* Revision 1.3 2003/11/26 15:37:42 bcolford
+* Added new prototypes for MuxType 3 processing on SCH.
+* Export a new flag to coordinate Sch Assigned status.
+* Revision 1.2.1.3 2003/11/26 11:09:12 bcolford
+* Completed integration between MuxPDU and TDSO.
+* Revision 1.2.1.2 2003/11/07 16:36:40 bcolford
+* Updated the prototype for MuxPDU processing subroutine.
+* Revision 1.2 2003/11/03 11:21:27 bcolford
+* Share some subroutines between normal forward channel
+* processing and MuxPDU forward channel processing.
+* Revision 1.1 2003/05/12 15:31:49 fpeng
+* Initial revision
+* Revision 1.64 2003/12/09 09:37:22 mshaver
+* Added LmdFwdSchPwrMeasRep() function prototype.
+* Revision 1.63 2003/04/25 15:02:16 wfu
+* .Change the data types of RevSchDtxDuration and RevSchDuration
+* from kal_uint8 to kal_uint16 to avoid roundoff problem when
+* the value goes beyond 255. CR2171.
+* Revision 1.62 2003/03/13 16:11:20 wfu
+* . LMD should inform SVC when RSCH DTX expired. Add function prototype
+* for LmdSvcRschDtxExpired().
+* Revision 1.61 2002/11/11 16:20:33 wfu
+* . Add one additional element of SysTime in
+* LmdTdsoFwdChDataMsgT for 153K FSCH
+* Revision 1.60 2002/10/23 08:05:55 mshaver
+* Removed prototypes for LmdProcessSpchDataMppHfree() and
+* LmdProcessSpchDataSppHfree() as they are not needed.
+* Revision 1.59 2002/10/03 15:21:33 jbenders
+* Added function proto for LmdSvcGpsSpeechDisableMsgHandler()
+* which will be used to properly disable/reenable the voice path and
+* vocoder at the beginning/end of a traffic channel GPS session.
+* Revision 1.58 2002/09/26 15:18:18 vxnguyen
+* Added additional Voice Memo function prototypes.
+* Revision 1.57 2002/09/09 16:18:50 wfu
+* . Add new element 'Coding' in
+* SchRevMuxFormatT to indicate the
+* RSCH's Turbo coding's status.
+* Revision 1.56 2002/08/27 17:28:31 wfu
+* . add LmdRevSchStop() and LmdfwdSchStopSigProc()
+* as global functions.
+* Revision 1.55 2002/07/15 18:33:02 vxnguyen
+* Added 'LmdRNG48()' function prototype.
+* Revision 1.54 2002/06/18 11:58:03 wfu
+* .Added codes for CR 507:
+* RLP Rx/Tx Frame Spies:
+*
+* 1).Move #define MUXPDUTYPE1 - 6
+* from lmdsrvcf.c.
+* 2).Declare prototype of
+* LmdRlpFrameSpyRate().
+*
+* Revision 1.53.1.2 2002/06/07 15:08:41 wfu
+* . CR507 working version for RLp RX/TX frame spy.
+* Revision 1.53.1.1 2002/05/30 11:11:28 wfu
+* Duplicate revision
+* Revision 1.53 2002/05/30 11:11:28 mshaver
+* Added VIA Technologies copyright notice.
+* Revision 1.52 2002/05/17 11:27:07 vxnguyen
+* - Updated Tdso function prototypes and definitions as a new
+* Lmd Secondary task has been created to handle Tdso.
+* Revision 1.51 2002/04/10 15:47:04 mshaver
+* Add the element FchAssigned to FwdDtchT to indicate to the
+* forward channel code whether or not FCH is in use.
+* Revision 1.50 2002/04/10 10:43:18 vxnguyen
+* Modified LmdSvcLCMaskGet() prototype.
+* Revision 1.49 2002/03/28 18:39:27 hans
+* is2000 rev 0 add 2, retrievable and settable parameters implemented.
+*
+* Revision 1.48 2002/02/07 16:50:53 vxnguyen
+* Added the use of compilor options SYS_OPTION_VOICE_MEMO
+* and SYS_OPTION_VOICE_RECOGNITION.
+* Revision 1.47 2002/01/23 17:29:24 mmalopy
+* - LmdRevSendTestFrame() and LmdRevInitTestFrame() functions
+* prototyped.
+* Revision 1.46 2002/01/09 19:58:57 vxnguyen
+* - Added Tdso definitions.
+* - Renamed _SvcRlp_ definitions to _SvcDs_ whereever applicable
+* so that these definitions could be shared between RLP and TDSO.
+* Revision 1.45 2001/11/19 15:42:09 vxnguyen
+* Added new Voice Rec and Voice Memo definitions.
+* Revision 1.44 2001/11/13 13:10:58 mshaver
+* - Changes to be compliant with the new LMD-RLP interface design.
+* - Changes to support forward and reverse SCH.
+* - Changed fundamental and dedicated channel data structure
+* organization to allow the code to be read easier.
+* - Changed the LMD service config get routine prototypes for both
+* forward and reverse channels to be consistent with the above
+* changes.
+* - Add RlpDtchShareMbox in the data structure of LmdRevMboxSetT to
+* indicate whether the RLP FCH and DCCH are sharing the same mailbox
+* for delivery of reverse data to LMD.
+* - Add one element in the data structure SchRevMuxFormatT
+* to indicate the R-SCH's mux_option.
+* - Add LmdSchFschInfoT to allow SVC to pass FSCH Msg
+* information to FWD.
+* - Add LmdSchRschInfoT to allow SVC to pass RSCH Msg
+* information to REV.
+* - Declare LmdRevSchMsg() and LmdFwdSchMsg() as global in
+* LMD, since the LMD_RSCH_MSG and LMD_FSCH_MSG will
+* only be handled by SVC, and SVC will call these
+* two functions to pass necessary information to REV and FWD.
+* Revision 1.43 2001/10/16 18:47:21 vxnguyen
+* Fixed LmdMsoConnect() prototype.
+* Revision 1.42 2001/08/29 14:49:31 vxnguyen
+* Added MSO data structure definitions and function prototypes.
+* Revision 1.41 2001/06/13 11:22:01 mshaver
+* For implementation of forward and reverse channel statistics, the
+* fch mux pdu 1 and 2 number of bits #defines were moved from
+* lmdsrvcf.c to lmddefs.h. Also, NumBits was added to
+* LmdFwdSvcConfigT, and MuxOpt, NumBits and Category were
+* added to the FchRevMuxFormatT and DcchRevMuxFormatT
+* data structures.
+* Revision 1.40 2001/06/12 15:11:14 mshaver
+* Changed LmdFwdSvcConfigT to add message id elements to
+* allow the service configuration object to tell the forward object
+* what message id should be used to route the sub channel data.
+* Revision 1.39 2001/06/06 10:21:29 mshaver
+* Merge in revision 1.38.1.2
+* Revision 1.38.1.2 2001/06/05 14:42:29 mshaver
+* Changed LmdFwdSvcConfigT ChanAssigned element to
+* DcchAssigned to indicate whether or not Dcch is assigned.
+* Revision 1.38.1.1 2001/06/04 14:37:02 mshaver
+* Duplicate revision
+* Revision 1.38 2001/06/04 14:37:02 mshaver
+* Moved signal definitions to lmdapi.h
+* Revision 1.37 2001/06/01 11:31:20 mshaver
+* Added prototypes for lmd crc utility functions.
+* Revision 1.36 2001/05/25 11:01:05 mshaver
+* Added ChanAssigned kal_boolean to LmdFwdSvcConfigT for
+* determining if a channel is assigned whether or not statistics
+* for that channel should be updated.
+* Revision 1.35 2001/05/03 15:41:46 mshaver
+* Merge in changes from rev 1.30.1.2 which changed the prototype
+* for LmdSvcFwdConfigGet() to change the type for FchRate from
+* kal_uint16 to LmdFwdFrameRateT.
+* Revision 1.34 2001/04/26 16:41:52 wfu
+* Change in the data structure: LmdSvcRlpDataT: The PrimaRate from kal_uint8 to SysRlpFrameRateT, same as SecRate.
+* Revision 1.33 2001/04/25 11:57:20 mshaver
+* Changed LmdSvcRevMboxSet() prototype to add a second
+* parameter to pass the number of signaling bits in the signaling
+* queue. This is needed by the service configuration object in order
+* for it to determine the maximum primary and secondary rates to be
+* assigned to RLP
+* Revision 1.32 2001/04/20 16:07:14 mshaver
+* Deleted unused data struct PtMboxSetT, changed types in
+* RlpChanMboxSetT to SysRlpFrameRateT, added signaling
+* physical channel type to LmdRevMboxSetT.
+* Revision 1.31 2001/04/19 17:46:37 wfu
+* Add the new data structures and functions for supporting RLP.
+* Revision 1.30 2001/04/18 15:23:11 mshaver
+* Changed LmdWvcFwdConfigGet() and
+* LmdSvcFwdFrameReceive() prototypes' physical channel
+* parameter to be 'LmdFwdChnlTypeT' type.
+* Revision 1.29 2001/04/10 15:04:23 mshaver
+* Changes for revision 1.27 were deleted by revision 1.28. These
+* function prototypes have been restored.
+* Revision 1.28 2001/04/10 14:09:51 wfu
+* 1). Merge with 1.26.1.2
+* 2). Added the DSPV rate representation: PT_FULL = IPC_SPCH_BLANK , and so on.
+* Revision 1.26 2001/03/28 15:30:18 mshaver
+* Call integration. Add prototype for LmdSendPswCmdStatusMsg().
+* Revision 1.25 2001/03/19 13:57:40 wfu
+* Add MUX_PDU_NO_HEADER = 0x07
+* Revision 1.24 2001/03/16 13:32:57 wfu
+* Change the data type of Rev Config FchRate as LmdRevFundRateTypeT.
+* Revision 1.23 2001/03/16 12:53:35 wfu
+* Add FchRate in the Reverse Config.
+* Revision 1.22 2001/03/12 08:23:56 mshaver
+* Added prototype for LmdSvcVocRateLimit().
+* Revision 1.21 2001/03/08 17:07:08 mshaver
+* Added RevFchRate to LmdRevFchCarrierT as it is to be
+* written to the signal buffer if there is FCH data. Also, added
+* a prototype for the reverse object function LmdRevPrevGet().
+* Revision 1.20 2001/03/02 16:35:25 wfu
+* Revision 1.19 2001/02/28 17:00:08 mshaver
+* Added prototype for reverse object for LmdRevSigDataQueueSizeGet().
+* Revision 1.18 2001/02/28 09:38:01 mshaver
+* Added rate parameter to LmdSvcRevConfigGet().
+* Revision 1.17 2001/02/27 10:10:02 wfu
+* Small changes in the functions' prototypes.
+* Revision 1.16 2001/02/27 10:07:59 wfu
+* Delete the functions' prototypes for LmdSvcInit() and LmdSvcSigBack().
+* Revision 1.15 2001/02/23 14:03:34 wfu
+* Add the function prototype: LmdServiceConfigInit(void);
+* Revision 1.14 2001/02/23 11:03:42 wfu
+* Add the following signals:
+* LMD_SERVICE_OPTION_CONTROL_SIG
+* LMD_START_NN_SERVICE_CONFIG_SIG
+* LMD_START_SERVICE_CONFIG_SIG
+* Used from LMD<->LMD
+* Revision 1.13 2001/02/22 13:43:12 mshaver
+* Add parameter to LmdRevSendAccessFrame to pass the maximum
+* number of bytes in the access frame
+* Revision 1.12 2001/02/21 13:23:25 mshaver
+* Added parameter to LmdSvcFwdConfigGet to indicate the
+* quality of the current channel (CRC).
+* Revision 1.11 2001/02/20 08:26:09 mshaver
+* Change header size from 16 to 8 bits in LmdSvcFwdConfigGet().
+* Revision 1.10 2001/02/16 14:48:53 mshaver
+* Added FchRate to LmdSvcFwdConfigGet() parameter list.
+* Revision 1.9 2001/02/15 17:32:01 mshaver
+* Changed the forward service config struct to define the routing
+* fields in terms of task ids, added frame category and mux option
+* to the struct as well. Added prototypes for addition service
+* configuration operations LmdSvcFwdMuxPDUType(),
+* LmdSvcFwdFrameReceive() and LmcSvcFwdPtRate().
+* Revision 1.8 2001/02/14 13:53:37 mshaver
+* Added forward and reverse function prototypes to be consistent
+* with the Rhapsody model. Removed unneeded information that
+* is now local to a specific object.
+* Revision 1.7 2001/01/29 11:53:42 mshaver
+* Added Lmd8BitOffsetto8BitOffsetCpy() prototype, and signal
+* data queueing function prototypes.
+* Revision 1.6 2001/01/19 11:53:10 mshaver
+* Added LmdDataTypeTand LmdRevTchCarrierT data structures,
+* and lmdbit.c function prototypes.
+* Revision 1.5 2001/01/16 16:30:17 mshaver
+* Merge in revision 1.4.1.2.
+* Revision 1.4.1.2 2001/01/16 16:08:18 mshaver
+* Define enum typedef for lmd state, remove PACKED qualifier from the data structs used to write data to direct buffer as it is not needed, changed various function prototypes to be extern.
+* Revision 1.4.1.1 2001/01/10 16:07:11 mshaver
+* Duplicate revision
+* Revision 1.4 2001/01/10 16:07:11 wfu
+* revison on 01/10/01
+* Revision 1.3 2001/01/08 08:54:38 mshaver
+* Moved IPC direct buffer mailbox definitions from lmdapi.h to
+* lmddefs.h as they are not global. Added rcs log at bottom of
+* file.
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+
+#endif
+/**Log information: \main\Trophy\Trophy_ylxiao_href22033\1 2013-03-18 14:16:24 GMT ylxiao
+** HREF#22033, merge 4.6.0**/
+/**Log information: \main\Trophy\1 2013-03-19 05:20:51 GMT hzhang
+** HREF#22033 to merge 0.4.6 code from SD.**/
+/**Log information: \main\Trophy\Trophy_SO73\1 2013-07-10 07:00:08 GMT yanliu
+** HREF#0000: 1x advance SD 20130708_1xAdvanced version merge**/
+/**Log information: \main\Trophy\2 2013-07-17 08:16:58 GMT yanliu
+** HREF#0000: 1x advance SD 20130708_1xAdvanced version merge**/
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmderr.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmderr.h
new file mode 100644
index 0000000..2060a4e
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmderr.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) 2002-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef _LMDERR_H_
+#define _LMDERR_H_
+/*****************************************************************************
+*
+* FILE NAME :lmderr.h
+*
+* DESCRIPTION :
+*
+* Contains the error typdefs for error traping
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ Global Typedefs
+----------------------------------------------------------------------------*/
+
+typedef enum
+{
+ /* Events */
+ LMD_ERR_UNEXPECTED_EVENT = 0x01,
+
+ /* Main object related */
+ LMD_ERR_CMD_MAILBOX_SHOULD_NOT_BE_EMPTY = 0x10,
+ LMD_ERR_INVALID_CMD_MSG_ID = 0x11,
+ LMD_ERR_INVALID_SIG_MSG_ID = 0x12,
+ LMD_ERR_INVALID_PRIMARY_TRAFFIC_MSG_ID = 0x13,
+ LMD_ERR_SIG_MAILBOX_SHOULD_NOT_BE_EMPTY = 0x14,
+
+ /* Forward channel object */
+ LMD_ERR_NO_FSCH_IND_ON_DIR_MBOX = 0x20,
+
+ /* Reverse channel object */
+ LMD_ERR_ACCESS_MSG_FAIL = 0x30,
+ LMD_ERR_EACH_MSG_FAIL = 0x31,
+ LMD_ERR_RTC_SIG_MSG_FAIL = 0x32,
+ LMD_ERR_TCSTART_MSG_FAIL = 0x33,
+ LMD_ERR_TCSTOP_MSG_FAIL = 0x34,
+ LMD_ERR_SUBSTATE_DISC_MSG_FAIL = 0x35,
+ LMD_ERR_ACCESS_ABORT_MSG_FAIL = 0x36,
+ LMD_ERR_MBOX_ROUTING = 0x37,
+ LMD_DBUF_ACCESS_TIMEOUT_ERR = 0x38,
+ LMD_REV_TRAFFIC_FRAME_TIMING_ERR = 0x39,
+
+ /* Service configuration object */
+ LMD_ERR_INVALID_SVC_CMD_MSG = 0x60,
+ LMD_MUX_PDU_1_RATE_UNKNOWN = 0x61,
+ LMD_MUX_PDU_2_RATE_UNKNOWN = 0x62,
+ LMD_DTCH_NOT_IN_USE = 0x63,
+ LMD_DCCH_MUX_PDU_1_BITS_ERROR = 0x64,
+ LMD_DCCH_MUX_PDU_2_BITS_ERROR = 0x65,
+ LMD_CHANNEL_NOT_SUPPORT_IN_PHASE = 0x66,
+ LMD_ERR_INVALID_PACKET_RATE_PRI = 0x67,
+ LMD_INVALID_FWD_FCH_MUX_OPT = 0x68,
+ LMD_INVALID_REV_FCH_MUX_OPT = 0x69,
+ LMD_INVALID_FWD_DCCH_MUX_OPT = 0x6A,
+ LMD_ERR_INVALID_MUX_PDU_TYPE = 0x6B,
+ LMD_ERR_CHNL_RATE_NOT_SUPPORT = 0x6C,
+ LMD_ERR_LOOPBACK_TABLE_DEPENDENCY_OUT_SYNC = 0x6D,
+ LMD_ERR_INVALID_LOOPBACK_MUX_PDU_TYPE = 0x6E,
+ LMD_INVALID_SVC_OPT_FOR_CONTROL = 0x6F,
+ LMD_ERR_UNABLE_SCHED_SRV_OPT_CONTROL_MSG = 0x70,
+ LMD_ERR_SVC_OPT_NOT_SUPPORTED = 0x71,
+ LMD_ERR_INVALID_REV_FCH_NUM_BITS = 0x72,
+ LMD_ERR_INVALID_LPM_ENTRIES = 0x73,
+ LMD_INVALID_FWD_FCH_NUM_BITS = 0x74,
+ LMD_INVALID_SVC_SRID_CONFIG = 0x75,
+ LMD_ERR_RLP_SRID_NOMATCH = 0x76,
+ LMD_ERR_RLP_SRID_DISC = 0x77,
+ /* FCH PT,SIG, SEC all in use MUXPDU1.*/
+ LMD_ERR_REV_MUX1_ALL_INUSE = 0x78,
+ /* The FCH SEC and SIG in USE w/o PT */
+ LMD_ERR_REV_FCHSEC_SIG_INUSE = 0x79,
+ LMD_ERR_REV_DCCHSEC_SIG_INUSE = 0x7A,
+
+ LMD_ERR_REV_FCH_4_RLP = 0x7B,
+ LMD_ERR_REV_DCCH_4_RLP = 0x7C,
+ LMD_ERR_REV_FCH_DATA_MSG = 0x7D,
+ LMD_ERR_REV_DCCH_DATA_MSG = 0x7E,
+ LMD_ERR_REV_SCH_DATA_MSG = 0x7F,
+ LMD_ERR_FWD_SCH_MSG_EMPTY_QUEUE = 0x80,
+ LMD_ERR_REV_SCH_MSG_EMPTY_QUEUE = 0x81,
+ LMD_ERR_FWD_PHY_CHNL_TYPE_4_RLP = 0x82,
+ LMD_INVALID_SIGNAL_CANCELATION = 0x83,
+ LMD_ERR_TASK_NOT_CONNECTED = 0x84,
+ LMD_ERR_SRID_FOR_RSCH = 0x85,
+ LMD_ERR_RSCH_DATA_FROM_RLP = 0x86,
+ LMD_ERR_AUDIO_DISABLED = 0x87,
+ /*
+ * Voice Memo and Voice Recognition errs
+ */
+ /* Record errs */
+ LMD_ERR_RECORD_START_INVALID_DATATYPE = 0x90,
+ LMD_ERR_RECORD_START_INVALID_FOR_PRESENT_STATE = 0x91,
+ LMD_ERR_RECORD_START_INVALID_WHILE_ON_TRAFFIC_CH = 0x92,
+ LMD_ERR_RECORD_STOP_INVALID_FOR_PRESENT_STATE = 0x93,
+ LMD_ERR_RECORD_RECEIVED_ZERO_LEN_ENCODE_PACKET = 0x94,
+ LMD_ERR_RECORD_RECEIVED_INVALID_ENCODE_PACKET_MSGID = 0x95,
+ LMD_ERR_RECORD_EXPECTED_ENCODE_PACKET = 0x96,
+ LMD_ERR_RECORD_INVALID_DATATYPE_FROM_DSPV = 0x97,
+ LMD_ERR_RECORD_INVALID_RATE_FOR_SERVICE_OPTION_1 = 0x98,
+ LMD_ERR_RECORD_INVALID_RATE_FOR_SERVICE_OPTION_3 = 0x99,
+ LMD_ERR_RECORD_INVALID_RATE_FOR_SERVICE_OPTION_17 = 0x9A,
+ LMD_ERR_RECORD_INVALID_DATA_LEN_FROM_DSPV = 0x9B,
+ LMD_ERR_RECORD_INVALID_SRVC_OPT_DURING_LOOPBACK = 0x9C,
+ /* Playback errs */
+ LMD_ERR_PLAYBACK_START_INVALID_FOR_PRESENT_STATE = 0xA0,
+ LMD_ERR_PLAYBACK_START_INVALID_WHILE_ON_TRAFFIC_CH = 0xA1,
+ LMD_ERR_PLAYBACK_STOP_INVALID_FOR_PRESENT_STATE = 0xA2,
+ LMD_ERR_PLAYBACK_INVALID_PACKET_RATE = 0xA3,
+ LMD_ERR_PLAYBACK_SERVICE_OPTION_MISMATCH = 0xA4,
+ /* Specific Conversation Record and Answering Machine Playback errs */
+ LMD_ERR_CONV_RECORD_INVALID_NO_SPEECH_SRV_OPT = 0xA8,
+ LMD_ERR_ANSWER_PLAYBACK_WITH_NO_PACKETS = 0xA9,
+ /* General Record or Playback errs */
+ LMD_ERR_INVALID_RECORD_OR_PLAYBACK_SPCH_SRV_OPT = 0xB0,
+ LMD_ERR_INVALID_RECORD_OR_PLAYBACK_MSG = 0xB1,
+ LMD_ERR_CANT_ENABLE_TIMER_FOR_RECORD_OR_PLAYBACK = 0xB2,
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+ /* Markov */
+ LMD_ERR_MARKOV_INVALID_ZN = 0x1100,
+ LMD_ERR_MARKOV_INVALID_RATEMODE = 0x1101,
+ LMD_ERR_MARKOV_INVALID_MULTIPLEXOPTION = 0x1102,
+ LMD_ERR_MARKOV_INVALID_PACKETTYPE = 0x1103,
+ LMD_ERR_MARKOV_INVALID_PACKETRATE = 0x1104,
+ LMD_ERR_MARKOV_INVALID_PACKETCAT = 0x1105,
+ LMD_ERR_MARKOV_INVALID_COUNTERID = 0x1106,
+ LMD_ERR_MARKOV_INVALID_CTRLRECTYPE = 0x1107,
+
+ /* TDSO */
+ LMD_ERR_TDSO_INVALID_PACKETCAT = 0x1120,
+ LMD_ERR_TDSO_INVALID_COUNTERID = 0x1121,
+ LMD_ERR_TDSO_INVALID_CONNECT_TRAFTYPE = 0x1122,
+ LMD_ERR_TDSO_INVALID_PACKETTYPE = 0x1123,
+ LMD_ERR_TDSO_INVALID_MUXOPTION = 0x1124,
+ LMD_ERR_TDSO_INVALID_Nx_BUFSIZE = 0x1125,
+ LMD_ERR_TDSO_INVALID_FWD_RC = 0x1126,
+ LMD_ERR_TDSO_INVALID_REV_RC = 0x1127,
+ LMD_ERR_TDSO_INVALID_PROBABILITY = 0x1128,
+ LMD_ERR_TDSO_INVALID_CONNECT_CHANNELID = 0x1129,
+ LMD_ERR_TDSO_INVALID_PROCESS_CHANNELID = 0x112A,
+ LMD_ERR_TDSO_INVALID_DISCONN_CHANNELID = 0x112B,
+ LMD_ERR_TDSO_INVALID_CTRLRECTYPE = 0x112C,
+ LMD_ERR_TDSO_BUFSIZE_NOT_MULTIPLE_OF_3 = 0x112D,
+
+ /* error codes from the secondary task */
+ LMD_ERR_S_INVALID_SIG_ID = 0x1140,
+ LMD_ERR_S_MAILBOX_EMPTY = 0x1141,
+ LMD_ERR_S_INVALID_MSG_ID = 0x1142,
+
+ /* Resource Control */
+ LMD_DCCH_NOT_VALID_PHYRES = 0x1150,
+ LMD_FCH_NOT_VALID_PHYRES = 0x1151,
+ LMD_RES_ALLOC_DEALLOC_CONFLIC = 0x1152,
+
+ /* MuxPDU FIQ ISR Error Codes */
+ LMD_ERR_MPISR_INVALID_NUM_PDUS = 0x1160,
+ LMD_ERR_MP_OUT_OF_RAM_BUFFERS = 0x1161,
+ LMD_ERR_MPISR_FRAME_QUE_FULL = 0x1162,
+ LMD_ERR_MPISR_INVALID_PDU_LEN_ZERO = 0x1163,
+ LMD_ERR_MPISR_BAD_CRC = 0x1164,
+ LMD_ERR_MP_FRAME_FREE_BAD_PTR = 0x1165,
+ LMD_ERR_MP_FRAME_FREE_NOT_ALLOCATED = 0x1166,
+
+ /* MuxPDU RAM Buffer Access Error Codes */
+ LMD_ERR_MPMEM_BUF_FREE_BAD_PTR = 0x1170,
+ LMD_ERR_MPMEM_BUF_FREE_NOT_ALLOCATED = 0x1171,
+ LMD_ERR_MPMEM_BUF_FREE_CORRUPTED = 0x1172,
+ LMD_ERR_MPMEM_BUF_GET_BAD_SIZE = 0x1173,
+ LMD_ERR_MPMEM_BUF_GET_OUT_OF_BUFFERS = 0x1174,
+
+ /* MuxPDU Test Error Codes */
+ LMD_ERR_MPTEST_FRAME_DATA_MISMATCH = 0x1180,
+ LMD_ERR_MPTEST_INVALID_NUM_PDUS_RCVD = 0x1181,
+ LMD_ERR_REV_DATA_MSG_QUEUED = 0x1182,
+ LMD_ERR_INVALID_INDEX_TO_CHIND_TABLE = 0x1183,
+
+ /* 1X PC Voice stream Error Codes */
+ LMD_ERR_VSTRM_INVALID_MSG_RCVD = 0x1190,
+ LMD_ERR_VSTRM_FWD_PKT_DISCARD = 0x1191,
+ LMD_ERR_VSTRM_CANT_ENABLE_TIMER = 0x1192,
+
+ /* Last entry place holder */
+ LMD_ERR_MAX_NUM_ERR_CODES
+} LmdErrorCodeT;
+
+
+/*****************************************************************************
+* $Log: lmderr.h $
+* Revision 1.6 2005/03/31 16:42:43 wfu
+* FixCR5920: Add new MonFault id: Rev Data Msg queued.
+* Revision 1.5 2004/10/20 18:30:15 vxnguyen
+* Added/changed some MuxPDU-related error codes.
+* Revision 1.4 2004/10/06 16:50:33 vxnguyen
+* Added new MuxPDU ISR 'BAD CRC' error code.
+* Revision 1.3 2004/07/16 14:13:54 vxnguyen
+* Added 2 new MPMEM_BUF_GET error codes.
+* Revision 1.2 2004/03/25 11:55:19 fpeng
+* Updated from 6.0 CP 2.5.0
+* Revision 1.2 2003/10/21 15:45:23 wavis
+* Added MuxPDU error codes.
+* Revision 1.1 2003/05/12 15:31:49 fpeng
+* Initial revision
+*
+*
+* Revision 1.23 2003/03/13 16:17:33 wfu
+* .Add new fault id: LMD_ERR_RSCH_DATA_FROM_RLP.
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy\Trophy_ylxiao_href22033\1 2013-03-18 14:16:25 GMT ylxiao
+** HREF#22033, merge 4.6.0**/
+/**Log information: \main\Trophy\1 2013-03-19 05:20:53 GMT hzhang
+** HREF#22033 to merge 0.4.6 code from SD.**/
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmdsapi.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmdsapi.h
new file mode 100644
index 0000000..221bca0
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmdsapi.h
@@ -0,0 +1,120 @@
+/*****************************************************************************
+* 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) 2001-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef _LMDSAPI_H_
+#define _LMDSAPI_H_
+/*****************************************************************************
+*
+* FILE NAME : lmdsapi.h
+*
+* DESCRIPTION :
+*
+* This is the interface include file for LMD secondary task.
+* It is organized by first defining the EXE mailboxes and signals used.
+* After this, the enumerated message IDs are defined, then basic typedefs
+* and message structures, if any.
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+#include "sysapi.h"
+
+#include "lmds_msgid.h"
+#include "lmd_audio.h"
+
+
+/*----------------------------------------------------------------------------
+* EXE Interfaces - Definition of Signals and Mailboxes
+*----------------------------------------------------------------------------*/
+
+#define LMD_S_MAILBOX EXE_MAILBOX_1_ID
+
+
+/*---------------------------------------------------------------
+* Message IDs for signals and commands sent to LMD_S
+* (NOTE: TDSO Message Definitions are defined in lmdtdso.h)
+*---------------------------------------------------------------*/
+
+
+
+/*---------------------------------------------------------------
+* Basic Types
+*---------------------------------------------------------------*/
+
+
+typedef enum
+{
+ IPC_VOICE_REC_SEL_PATH_REV = 0,
+ IPC_VOICE_REC_SEL_PATH_FWD = 1,
+ IPC_VOICE_REC_SEL_PATH_BOTH = 2
+} IpcVoiceRecSelPathModeT;
+
+typedef enum
+{
+ IPC_VOICE_MUTE_AT_PLAYBACK = 0,
+ IPC_VOICE_MIX_SPKR_AT_PLAYBACK = 1,
+ IPC_VOICE_MIX_MIC_AT_PLAYBACK = 2
+} IpcVoiceRecPlaybackVoiceMixT;
+
+
+/*---------------------------------------------------------------
+* Message Definitions
+*---------------------------------------------------------------*/
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+/**Log information: \main\Trophy_SO73\1 2013-07-09 02:12:56 GMT jtzhang
+** scbp#11737**/
+/**Log information: \main\Trophy\1 2013-07-17 08:23:59 GMT jtzhang
+** scbp#11737**/
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/lmdtdso.h b/mcu/interface/protocol/l2_c2k/1xrtt/lmdtdso.h
new file mode 100644
index 0000000..a0a6981
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/lmdtdso.h
@@ -0,0 +1,509 @@
+/*****************************************************************************
+* 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) 1998-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef _LMDTDSO_H_
+#define _LMDTDSO_H_
+
+/*****************************************************************************
+*
+* FILE NAME : lmdtdso.h
+*
+* DESCRIPTION : Test Data Service Option definitions
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+
+#include "sysapi.h"
+
+/*----------------------------------------------------------------------------
+ Test Data Service Option Defines and Macros
+----------------------------------------------------------------------------*/
+
+/* service option control counter response size */
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+
+/* this is 3 times the max of (FUND_TDSO_RX_MAX, SUPP_TDSO_RX_MAX, PDU_TDSO_RX_MAX,
+ FUND_TDSO_TX_MAX, SUPP_TDSO_TX_MAX) */
+#define MAX_COUNTER_RESPONSE_SIZE (3 * PDU_TDSO_RX_MAX)
+
+#else
+
+/* this is 3 times the max of (FUND_TDSO_RX_MAX, FUND_TDSO_TX_MAX) */
+#define MAX_COUNTER_RESPONSE_SIZE (3 * FUND_TDSO_RX_MAX)
+
+#endif /* SYS_OPTION_SCH_RAM_INUSE */
+
+/*----------------------------------------------------------------------------
+ Test Data Service Option Typedefs
+----------------------------------------------------------------------------*/
+
+/* Traffic (channel) Direction type */
+typedef enum
+{
+ FUND_FORWARD = 0,
+ FUND_REVERSE,
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+ SUPP0_FORWARD,
+ SUPP0_REVERSE,
+#endif /* SYS_OPTION_SCH_RAM_INUSE */
+ TDSO_MAX_DIR
+} TdsoDirectionT;
+
+/* Frame Type Index based on MuxOption and TrafficType
+ * This index can and will be used to access parameters
+ * from many fast look up tables. */
+typedef enum
+{
+ /* muxoption: 0x01 */
+ FTI_1X_171_FUND = 0, /* primary */
+ FTI_1X_168_FUND, /* secondary */
+
+ /* muxoption: 0x02 */
+ FTI_1X_266_FUND,
+ FTI_1X_262_FUND,
+
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+ /* muxoption: 0x03 */
+ FTI_1X_171_SUPP,
+ FTI_1X_168_SUPP,
+
+ /* muxoption: 0x04 */
+ FTI_1X_266_SUPP,
+ FTI_1X_262_SUPP,
+
+ /* muxoptions: 0x809, 0x811, 0x821 */
+ FTI_2X_170_PRI,
+ FTI_2X_170_SEC,
+ FTI_4X_170_PRI,
+ FTI_4X_170_SEC,
+ FTI_8X_170_PRI,
+ FTI_8X_170_SEC,
+
+ /* muxoptions: 0x80A, 0x812, 0x822 */
+ FTI_2X_266_PRI,
+ FTI_2X_266_SEC,
+ FTI_4X_266_PRI,
+ FTI_4X_266_SEC,
+ FTI_8X_266_PRI,
+ FTI_8X_266_SEC,
+
+ /* muxoptions: 0x905 0x909, 0x911, 0x921 */
+ FTI_1X_346_PRI,
+ FTI_1X_346_SEC,
+ FTI_2X_346_PRI,
+ FTI_2X_346_SEC,
+ FTI_4X_346_PRI,
+ FTI_4X_346_SEC,
+ FTI_8X_346_PRI,
+ FTI_8X_346_SEC,
+
+ /* muxoptions: 0x906 0x90A, 0x912, 0x922 */
+ FTI_1X_538_PRI,
+ FTI_1X_538_SEC,
+ FTI_2X_538_PRI,
+ FTI_2X_538_SEC,
+ FTI_4X_538_PRI,
+ FTI_4X_538_SEC,
+ FTI_8X_538_PRI,
+ FTI_8X_538_SEC,
+#endif /* SYS_OPTION_SCH_RAM_INUSE */
+
+ FTI_MAX_SIZE
+} TdsoFrameTypeIndexT;
+
+/* Frame Params type */
+typedef struct
+{
+ kal_uint16 NumPdus;
+ kal_uint16 NumBits;
+ kal_uint16 PadBits;
+} TdsoFrameParamsT;
+
+/* Frame packet type */
+typedef enum
+{
+ FULL_PACKET = 0,
+ BLNK_PACKET
+} TdsoPacketTypeT;
+
+/* Data source used in the generation of local packets */
+typedef enum
+{
+ USE_PATTERN = 0,
+ USE_CIRBUF,
+ USE_ONES
+} TdsoDataSourceT;
+
+/* Frame activity types */
+typedef enum
+{
+ FA_DETERMINISTIC = 0,
+ FA_RANDOM
+} TdsoFrameActivityT;
+
+/* Control parameters */
+typedef struct
+{
+ kal_uint8 Nx;
+ TdsoFrameActivityT FrameActivity;
+ kal_uint32 OnThreshold;
+ kal_uint32 OffThreshold;
+ kal_uint8 TxOnPer;
+ kal_uint8 TxOffPer;
+ TdsoDataSourceT DataSource;
+ kal_uint8 DataPattern;
+} TdsoControlParmT;
+
+/* transition state definitions */
+typedef enum
+{
+ TDSO_STATE_OFF = 0,
+ TDSO_STATE_ON
+} TdsoStateT;
+
+typedef enum
+{
+ LAST_TIME = 0,
+ THIS_TIME,
+ NEXT_TIME,
+ MAX_TIME
+} TdsoTimeT;
+
+typedef struct
+{
+ kal_uint32 Value;
+ kal_uint32 Time;
+} TdsoSRNGT;
+
+/* Receive Counter Id Lookup Table type */
+typedef struct
+{
+ const kal_uint16 *FullRateTableP;
+ const kal_uint16 *BlnkRateTableP;
+ const kal_uint16 TableSize;
+} TdsoRxLookUpTableT;
+
+/* Receive frame counters on the fundicated channel
+ * NOTE: the order of these ids MUST match that described
+ * in section 3.8.1.4 - see GetFundRECCounters() */
+typedef enum
+{
+ FUND_TDSO_E1_R1 = 0,
+ FUND_TDSO_E1_RD,
+ FUND_TDSO_E1_RO,
+ FUND_TDSO_E1_RB,
+ FUND_TDSO_E1_RFL,
+ FUND_TDSO_E1_RE,
+ FUND_TDSO_E1_RERR,
+
+ FUND_TDSO_EN_RN,
+ FUND_TDSO_EN_RB,
+ FUND_TDSO_EN_RO,
+
+ FUND_TDSO_RX_MAX /* 10, check out MAX_COUNTER_RESPONSE_SIZE */
+} TdsoFundRxCntrT;
+
+/* Transmit frame counters on the fundicated channel
+ * NOTE: the order of these ids MUST match that described
+ * in section 3.8.2.3 - see GetFundTXCounters() */
+typedef enum
+{
+ FUND_TDSO_E1_T1 = 0,
+ FUND_TDSO_E1_TD,
+ FUND_TDSO_E1_TB,
+ FUND_TDSO_EB_TB,
+ FUND_TDSO_EB_TO,
+ FUND_TDSO_TX_MAX /* 5, check out MAX_COUNTER_RESPONSE_SIZE */
+} TdsoFundTxCntrT;
+
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+
+/* Receive frame counters on the supplemental channel */
+typedef enum
+{
+ SUPP_TDSO_ENx_RNx = 0,
+ SUPP_TDSO_ENx_RERR,
+ SUPP_TDSO_ENx_RE,
+ SUPP_TDSO_ENx_RB,
+ SUPP_TDSO_EB_RB,
+ SUPP_TDSO_EB_RO,
+
+ SUPP_TDSO_RX_MAX /* 6, check out MAX_COUNTER_RESPONSE_SIZE */
+} TdsoSuppRxCntrT;
+
+/* Receive PDU counters for the supplemental channel
+ * NOTE: the order of these ids MUST match that described
+ * in section 3.8.2.2 - see GetSuppPERCounters() */
+typedef enum
+{
+ PDU_TDSO_E3_R3 = 0,
+ PDU_TDSO_E3_RERR,
+ PDU_TDSO_E3_RE,
+
+ PDU_TDSO_E2_R2,
+ PDU_TDSO_E2_RERR,
+ PDU_TDSO_E2_RE,
+
+ PDU_TDSO_E1a_R1a,
+ PDU_TDSO_E1a_RERR,
+ PDU_TDSO_E1a_RE,
+
+ PDU_TDSO_E1b_R1b,
+ PDU_TDSO_E1b_RERR,
+ PDU_TDSO_E1b_RE,
+
+ PDU_TDSO_RX_MAX /* 12, check out MAX_COUNTER_RESPONSE_SIZE */
+} TdsoRxPduCntrT;
+
+/* Transmit frame counters on the supplemental channel
+ * NOTE: the order of these ids MUST match that of
+ * SuppTXData.Counters[] - see GetSuppTXCounters() */
+typedef enum
+{
+ SUPP_TDSO_ENx_TNx = 0,
+ SUPP_TDSO_ENx_TB,
+ SUPP_TDSO_EB_TB,
+ SUPP_TDSO_EB_TO,
+
+ SUPP_TDSO_TX_MAX /* 5, check out MAX_COUNTER_RESPONSE_SIZE */
+} TdsoSuppTxCntrT;
+
+#endif /* SYS_OPTION_SCH_RAM_INUSE */
+
+/* signaling type */
+typedef enum
+{
+ SIGTYPE_NONE = 0,
+ SIGTYPE_BLNKnBURST
+} TdsoSigTypeT;
+
+
+/*
+ * Definitions used in processing the Service Option Control Message
+ */
+
+typedef PACKED_PREFIX struct
+{
+ kal_uint8 CtlRecType;
+ PACKED_PREFIX union /* the meaning of the 2nd byte is dependent on CtlRecType */
+ {
+ kal_uint8 CtrlCode;
+ kal_uint8 VectorId;
+ } PACKED_POSTFIX Directive;
+ kal_uint8 Misc; /* ChannelDirection:2, CopyCounters:1, ClearCounters:1,
+ DataSource:1, FrameSource:2, FrameActivity:1 */
+ kal_uint8 TestOptions;
+ kal_uint8 Data[1]; /* NumCirBufFrames, On2OffProb, Off2OnProb, TxOnPer, TxOffPer, DataPat */
+} PACKED_POSTFIX LmdTdsoControlDataT;
+
+/* channel direction field */
+typedef enum
+{
+ CHANDIR_BOTH = 0,
+ CHANDIR_FORWARD,
+ CHANDIR_REVERSE
+} TdsoChannelDirectionT;
+
+/* control record type field */
+typedef enum
+{
+ DIRECTIVE_CONTROLS_FOR_ALL_CHANNELS = 0,
+ DIRECTIVE_CONTROLS_FOR_FCH,
+ DIRECTIVE_CONTROLS_FOR_DCCH,
+ DIRECTIVE_CONTROLS_FOR_SCH0,
+ DIRECTIVE_CONTROLS_FOR_SCH1,
+
+ DIRECTIVE_CNTR_RETRIEVAL_FOR_FCH,
+ DIRECTIVE_CNTR_RETRIEVAL_FOR_DCCH,
+ DIRECTIVE_CNTR_RETRIEVAL_FOR_SCH0,
+ DIRECTIVE_CNTR_RETRIEVAL_FOR_SCH1
+} TdsoControlRecTypeT;
+
+/* vector id field */
+typedef enum
+{
+ VECTORID_FER = 0, /* 0 */
+ VECTORID_PER, /* 1 */
+ VECTORID_REC = VECTORID_PER, /* 1 */
+ VECTORID_TX /* 2 */
+} TdsoVectorIdT;
+
+/* counter response definitions */
+typedef struct
+{
+ kal_uint8 CtlRecType;
+ kal_uint8 VectorId;
+ kal_uint8 Counters[MAX_COUNTER_RESPONSE_SIZE];
+} TdsoCountersResponseT;
+
+/*
+ * Definitions used in generating spy data
+ */
+/* FER structure */
+typedef struct
+{
+ kal_uint32 Good;
+ kal_uint32 Bad;
+ kal_uint32 Total;
+ kal_uint16 FER;
+} TdsoRxFerT;
+
+/* Fch/Dcch Transmit spy structure */
+typedef struct
+{
+ kal_uint16 MuxOption;
+ kal_uint32 Counters[FUND_TDSO_TX_MAX];
+} TdsoFundTxSpyT;
+
+/* Fch/Dcch Receive spy structure */
+typedef struct
+{
+ kal_uint16 MuxOption;
+ kal_uint32 Counters[FUND_TDSO_RX_MAX];
+} TdsoFundRxSpyT;
+
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+
+/* Sch Transmit spy structure */
+typedef struct
+{
+ kal_uint16 MuxOption;
+ kal_uint16 Rate; /* N times base rate */
+ kal_uint32 Counters[SUPP_TDSO_TX_MAX];
+} TdsoSuppTxSpyT;
+
+/* Sch Pdu Receive spy structure */
+typedef struct
+{
+ kal_uint16 MuxOption;
+ kal_uint32 Counters[PDU_TDSO_RX_MAX];
+} TdsoSuppPduRxSpyT;
+
+/* Sch Receive spy structure */
+typedef struct
+{
+ kal_uint16 MuxOption;
+ kal_uint16 Rate; /* N times base rate */
+ kal_uint32 Counters[SUPP_TDSO_RX_MAX];
+} TdsoSuppRxSpyT;
+
+#endif /* SYS_OPTION_SCH_RAM_INUSE */
+
+/* Fch/Dcch/Sch Receive FER spy structure */
+typedef struct
+{
+ kal_uint16 MuxOption;
+ TdsoRxFerT FullRate;
+} TdsoRxFerSpyT;
+
+/* TDSO Functional Trace Types */
+typedef enum
+{
+ LMD_TDSO_FUNC_RESYNC_CHANNEL = 0,
+ LMD_TDSO_FUNC_COMPARE_NUMPDUS_DIFFER = 1,
+ LMD_TDSO_FUNC_COMPARE_NUMBITS_DIFFER = 2,
+ LMD_TDSO_FUNC_COMPARE_DATA_DIFFER = 3,
+ LMD_TDSO_FUNC_COMPARE_IDENTICAL = 4,
+ LMD_TDSO_FUNC_NOT_COMPARED = 5,
+ LMD_TDSO_FUNC_SSO_CONNECT = 6,
+ LMD_TDSO_FUNC_SSO_PROCESSING = 7,
+ LMD_TDSO_FUNC_SSO_DISCONNECT = 8,
+ LMD_TDSO_FUNC_CONTROL_MSG = 9,
+ LMD_TDSO_FUNC_CNTRRET_DIR = 10,
+ LMD_TDSO_FUNC_CONTROL_DIR = 11,
+ LMD_TDSO_PROC_RESET_CHANNEL = 12,
+ LMD_TDSO_PROC_SETUP_CHANNEL = 13,
+ LMD_TDSO_FUNC_DEBUG_RX_PACKET = 14
+} TdsoFunctionalTraceTypeT;
+
+/* TDSO Processing Trace Types */
+typedef enum
+{
+ LMD_TDSO_PROC_BUILD_CIRBUF = 0,
+ LMD_TDSO_PROC_GEN_INFO_BITS = 1,
+ LMD_TDSO_PROC_GEN_BLNK_BITS = 2,
+ LMD_TDSO_PROC_ADVANCE_OFFSET = 3,
+ LMD_TDSO_PROC_SET_CIRBUF_SIZE = 4
+} TdsoProcessingTraceTypeT;
+
+/*----------------------------------------------------------------------------
+ Global Variables
+----------------------------------------------------------------------------*/
+extern kal_uint32 TdsoRNG[]; /* Current Random Number */
+extern kal_uint16 TdsoBn[]; /* Circular Buffer Size */
+extern kal_uint8 * const TdsoCirBufP[]; /* Circular Buffer Pointers */
+
+/*----------------------------------------------------------------------------
+ External Function Prototypes
+----------------------------------------------------------------------------*/
+extern void TdsoBuildCirBuf ( TdsoDirectionT Direction );
+
+
+/*****************************************************************************
+* $Log: lmdtdso.h $
+* Revision 1.2 2004/03/25 11:55:23 fpeng
+* Updated from 6.0 CP 2.5.0
+* Revision 1.1 2003/05/12 15:31:54 fpeng
+* Initial revision
+* Revision 1.4 2002/07/15 18:36:31 vxnguyen
+* Added global Tdso data and funtion declarations.
+* Revision 1.3 2002/05/30 11:11:36 mshaver
+* Added VIA Technologies copyright notice.
+* Revision 1.2 2002/04/10 10:44:27 vxnguyen
+* Added compilor option SYS_OPTION_SCH_RAM_INUSE.
+* Revision 1.1 2002/02/07 16:56:39 vxnguyen
+* Initial revision
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/rlp_data.h b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_data.h
new file mode 100644
index 0000000..99b7d07
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_data.h
@@ -0,0 +1,359 @@
+/*****************************************************************************
+* 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) 1999-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: rlp_data.h
+ * Project: IS-707 Mobile Terminal
+ * Original Author: BJC
+ * Creation Date: Nov. 19/97
+ *
+ * Description: IS-707 Mobile Terminal Engine API Data Definitions
+ *
+ * Restrictions:
+ *
+ * Dependencies:
+ *
+ ****************************************************************************
+ ****************************************************************************
+ *
+ * RCS Log Information
+ *
+ *
+ * $Log: rlp_data.h $
+ *
+ * 06 05 2019 angie.wu
+ * [MOLY00411583] [Global Variable][C2K PDCA][VMOLY]XL2 counters remove&modify
+ *
+ * xl2 counter review merge
+ *
+ * 06 28 2017 sue.zhong
+ * [MOLY00259241] [6293][C2K]Replace with KAL data type
+ * ::KAL type - folder fcp,lmd,rlp
+ *
+ * 06 15 2017 angie.wu
+ * [MOLY00226758] [C2K][LMD]remove unused code&code optimized
+ *
+ * &&decrease L2 code size
+ * Revision 1.3 2005/12/05 17:02:17 hhong
+ * Changed CDMASysTxNaks[ ] to type of kal_int32.
+ * Revision 1.2 2005/01/14 16:18:08 mshaver
+ * Fix CR 5701.
+ * Added definiton of RlpMissingFrameCountT.
+ * Revision 1.1 2004/01/22 10:52:19 fpeng
+ * Initial revision
+ * Revision 1.7 2003/05/02 14:31:15 sulinlow
+ * To add RLP BLOB params received from PS
+ * Revision 1.6 2002/06/18 12:16:24 wfu
+ * . Merged with Revision 1.5.1.2
+ * for CR 507: RLPRx/Tx Frame spies
+ * Revision 1.5.1.2 2002/06/17 17:29:25 wfu
+ * . Removed the RLP Rx/Tx Frame spies related
+ * data structures to rlpwapi.h
+ * Revision 1.5.1.1 2002/06/06 13:53:43 wfu
+ * Duplicate revision
+ * Revision 1.5 2002/06/06 13:53:43 chinh
+ * Changed and Added Copyright
+ * Revision 1.4 2002/02/25 13:46:37 chinh
+ * Defined RLP statistic structures
+ * Revision 1.3 2001/11/14 14:30:42 hhong
+ * Changed to support F-SCH.
+ * Revision 1.2 2001/06/21 10:10:31 yfang
+ * supported RLP3
+ * Revision 1.1 2001/04/26 11:43:15 fpeng
+ * Initial revision
+ * Revision 1.3 2000/08/28 14:37:14 hhong
+ * Moving up to Ver 1.3 by checking out 1.1 and locking 1.2. A
+ * duplicate version of 1.1.
+ * Revision 1.1 1999/11/30 23:18:25Z cdma
+ * Initial revision
+ * Revision 1.4 1999/07/01 17:22:45 hhong
+ * Incorporate new data engine.
+ * Revision 1.11 1999/03/01 23:26:18 dehman
+ * Updated copyright notices.
+ *
+ * Revision 1.10 1999/02/08 18:18:35 dehman
+ * Changes for dual protocol compliance.
+ *
+ * Revision 1.9 1998/07/14 19:24:26 bcassidy
+ * 1. Add statistics structure definition.
+ *
+ * Revision 1.8 1998/06/19 19:59:50 bcassidy
+ * 1. Remove unused error code: notConnected.
+ *
+ * Revision 1.7 1998/03/04 22:32:33 bcassidy
+ * 1. Add RetQueueFull error code.
+ *
+ * Revision 1.6 1998/02/26 17:54:21 bcassidy
+ * 1. Add more error codes.
+ *
+ * Revision 1.5 1998/02/05 21:36:19 dehman
+ * 1. Added value to header guard def for ITE.
+ * 2. Tagged enums for ITE consumption.
+ *
+ * Revision 1.4 1998/01/31 22:44:07 bcassidy
+ * 1. Add "NakQ Full" error.
+ *
+ * Revision 1.3 1998/01/22 23:45:11 bcassidy
+ * 1. Change RlpFrameType to RlpFrameRate. Change enum
+ * prefixes to match.
+ *
+ * Revision 1.2 1998/01/15 16:42:46 bcassidy
+ * 1. Add new component.
+ * 2. Remove RlpServiceConfig definition.
+ * 3. Add new error types.
+ * 4. Change Mux Option definitions.
+ *
+ * Revision 1.1 1998/01/09 22:54:24 bcassidy
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _RLP_DATA_H
+#define _RLP_DATA_H 1
+
+#include "pswcustom.h"
+#include "rlp_prot.h"
+
+enum RlpProtocolVersion_enum
+{
+ RLP_PV_Rlp,
+ RLP_PV_Rlp2,
+ RLP_PV_Rlp3,
+ NUM_RLP_PVs
+};
+typedef kal_uint8 RlpProtocolVersion;
+
+enum RlpChannel_enum
+{
+ RLP_CHAN_Primary,
+ RLP_CHAN_Secondary,
+ NUM_RLP_Chans=1
+};
+typedef kal_uint8 RlpChannel;
+
+enum RlpComponent_enum
+{
+ RLP_COMP_Primary,
+ RLP_COMP_Secondary,
+ RLP_COMP_MuxManager,
+ RLP_COMP_IFC,
+ NUM_RLP_COMPs
+};
+typedef kal_uint32 RlpComponent;
+
+enum RlpMode_enum
+{
+ RLP_MODE_NonTransparent,
+ RLP_MODE_Transparent,
+ NUM_RLP_MODEs
+};
+typedef kal_uint8 RlpMode;
+
+enum RlpRateSet_enum
+{
+ RLP_RATESET_1,
+ RLP_RATESET_2,
+ NUM_RLP_RATESETs
+};
+typedef kal_uint8 RlpRateSet;
+
+enum RlpRateControl_enum
+{
+ RLP_RC_1,
+ RLP_RC_3_4,
+ RLP_RC_1_2,
+ RLP_RC_1_4,
+ RLP_RC_0,
+ NUM_RLP_RCs
+};
+typedef kal_uint8 RlpRateControl;
+
+enum RlpTrafficChanType_enum
+{
+ RLP_TCT_Fund,
+ RLP_TCT_Dcch,
+ RLP_TCT_Supp,
+ NUM_RLP_TCTs,
+ RLP_TCT_Bad = 255
+};
+typedef kal_uint8 RlpTrafficChanType;
+
+enum RlpSsrId_enum
+{
+ RLP_SSRID_PRI = 0,
+ RLP_SSRID_SEC = 1,
+ NUM_RLP_SSRIDs= 2,
+ RLP_SSRID_NUL = 255
+};
+typedef kal_uint8 RlpSsrId;
+
+enum RlpFrameRate_enum
+{
+ RLP_FR_Blank,
+ RLP_FR_1_16,
+ RLP_FR_1_8,
+ RLP_FR_3_16,
+ RLP_FR_1_4,
+ RLP_FR_3_8,
+ RLP_FR_7_16,
+ RLP_FR_1_2,
+ RLP_FR_3_4,
+ RLP_FR_7_8,
+ RLP_FR_Full,
+ RLP_FR_1x,
+ RLP_FR_2x,
+ NUM_RLP_TxFRs,
+ RLP_FR_Bad = 255
+};
+typedef kal_uint8 RlpFrameRate;
+
+enum Rlp3SchRate_enum
+{
+ RLP3_PRI_1_1x,
+ RLP3_PRI_1_2x,
+ RLP3_PRI_2_1x,
+ RLP3_PRI_2_2x,
+ RLP3_SEC_1_1x,
+ RLP3_SEC_1_2x,
+ RLP3_SEC_2_1x,
+ RLP3_SEC_2_2x
+};
+typedef kal_uint8 Rlp3SchRate;
+
+typedef struct
+{
+ kal_bool revSCHsupported; /* Whether RSCH is supported by BS or not */
+
+ /* The following are negotiated rlp blob params by the PS */
+ kal_uint8 rlpBlobType;
+ kal_uint8 rlpVersion;
+ kal_uint8 rtt;
+ kal_bool initVar;
+ kal_uint32 bsExtSeqM;
+ kal_uint32 msExtSeqM;
+ kal_uint8 maxMsNakRoundsFwd;
+ kal_uint8 maxMsNakRoundsRev;
+ kal_uint8 nakRoundsFwd;
+ kal_uint8 nakRoundsRev;
+ kal_uint8 nakPerRoundFwd[ RLP3_MAX_MS_NAK_ROUNDS_FWD ];
+ kal_uint8 nakPerRoundRev[ RLP3_MAX_MS_NAK_ROUNDS_REV ];
+} RlpServConf;
+
+#define RLP_MAX_DATA_LEN 66 /* (538-10)/8 = 66; Rate 2, even mux-option */
+typedef struct
+{
+ kal_uint32 txData[RLP_MAX_DATA_LEN];
+ kal_uint32 rxData[RLP_MAX_DATA_LEN];
+ kal_uint32 txRetran;
+ kal_uint32 rxRetran;
+ kal_uint32 rxLost;
+} RlpStats;
+
+typedef struct
+{
+ kal_uint32 TotalMissingFwdFrame;
+ kal_uint32 TotalRcvdGoodFwdFrame;
+ kal_uint32 TotalMissingRevFrame;
+ kal_uint32 TotalSendRevFrame;
+ kal_uint32 MaxBlockMissingFrame;
+ kal_uint32 Total8PDUFrame;
+ kal_uint32 Total4PDUFrame;
+ kal_uint32 Total2PDUFrame;
+ kal_uint32 Total1PDUFrame;
+ kal_uint32 TotalResets;
+} RlpMissingFrameCountT;
+
+#ifdef RLP_STATISTIC
+typedef struct
+{
+ kal_uint32 SeqNum;
+ kal_uint32 NumNaks;
+} RlpTxNaks;
+
+typedef struct
+{
+ kal_uint32 CdmaSysServiceId; /* Service ID */
+ kal_uint32 CdmaSysResetTime; /* The system time when RLP stat resets */
+ kal_uint32 CdmaSysNaksReceived; /* Received NAK count */
+ kal_int32 CdmaSysReXmitsNotFound; /* Invalid NAK count for type 01, 10, 11 plus accumulated
+ distance between invalid 00 NAK seq and v_s */
+ kal_uint32 CdmaSysLargestContigErasure; /* Maximum count of contiguous erasures received */
+ kal_uint32 CdmaSysResets; /* Reset RLP count */
+ kal_uint32 CdmaSysAborts; /* Abort frame count */
+ kal_uint32 CdmaSysLastRtt; /* Last RTT in counts of 20 msec slot */
+ kal_uint32 CdmaSysRlpBlobUsed; /* 3 when BLOB includes RTT or 1 when not
+ (not used currently) */
+ kal_uint32 CdmaSysRxRexmitFrCnt; /* Rx Rexmit data frame count */
+ kal_uint32 CdmaSysRxIdleFrCnt; /* Rx Idle frame count */
+ kal_uint32 CdmaSysRxFillFrCnt; /* Rx Fill frame count */
+ kal_uint32 CdmaSysRxBlankFrCnt; /* Rx Blank frame count */
+ kal_uint32 CdmaSysRxNullFrCnt; /* Rx Null frame (not used currently) */
+ kal_uint32 CdmaSysRxNewDataFrCnt; /* Rx new data frame count */
+ kal_uint32 CdmaSysRx20msFrCnt; /* Rx data frame count */
+ kal_uint32 CdmaSysRxTotalBytes; /* Total bytes received for passing to upper layer */
+ kal_uint32 CdmaSysRxRlpErasures; /* Rx RLP erasures count */
+ kal_uint32 CdmaSysRxMuxErasures; /* Rx MUX erasures count */
+ kal_uint32 CdmaSysTxRexmitFrCnt; /* Tx Rexmit data frame count */
+ kal_uint32 CdmaSysTxIdleFrCnt; /* Tx Idle frame count */
+ kal_uint32 CdmaSysTxNewDataFrCnt; /* Tx new data frame count */
+ kal_uint32 CdmaSysTx20msFrCnt; /* Tx data frame count */
+ kal_uint32 CdmaSysTxTotalBytes; /* Total bytes requested from upper layer sent */
+ kal_uint32 CdmaSysTxNaksCnt; /* Count for the last Tx round set by BLOB */
+ kal_uint32 CdmaSysTxNaks[7]; /* Counts for 0 - 7 NAK Tx remaining for a particular
+ round when Rx the missing frame */
+} EcdmaSysRlpMeasurement;
+
+typedef struct
+{
+ kal_uint32 timestamp; /* Not used currently */
+ EcdmaSysRlpMeasurement rlpMeas;
+} RlpStatsEvent;
+
+extern RlpStatsEvent rlpStat;
+
+#endif /* RLP_STATISTIC */
+
+#endif /* _RLP_DATA_H */
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/rlp_msg_struct.h b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_msg_struct.h
new file mode 100644
index 0000000..11e52d3
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_msg_struct.h
@@ -0,0 +1,211 @@
+/*****************************************************************************
+* 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 _RLP_MSG_STRUCT_H
+#define _RLP_MSG_STRUCT_H
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * rlp_msg_struct.h
+ *
+ * Project:
+ * --------
+ * C2K
+ *
+ * Description:
+ * ------------
+ * This module defines the RLP ILM messgae IDs
+ *
+ * Author:
+ * -------
+ * -------
+ *
+----------------------------------------------------------------------------*/
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "rlpwapi.h"
+
+/* RLP Messages */
+/*MSG_ID_RLP_PSW_BLOB_CFG_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpBlobMsgT msg;
+} rlp_psw_blob_cfg_msg_struct;
+
+/*MSG_ID_RLP_PSW_INIT_CFG_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpInitCfgMsgT msg;
+} rlp_psw_init_cfg_msg_struct;
+
+/*MSG_ID_RLP_OPEN_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpOpenMsgT msg;
+} rlp_open_msg_struct;
+
+/*MSG_ID_RLP_CLOSE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpCloseMsgT msg;
+} rlp_close_msg_struct;
+
+/*MSG_ID_RLP_LMD_FWD_FUNDICATED_DATA_IND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpFwdFundicatedDataIndMsgT msg;
+} rlp_lmd_fwd_fundicated_data_ind_msg_struct;
+
+/*MSG_ID_UT_RLP_LMD_FWD_FUNDICATED_DATA_IND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpFwdFundicatedDataIndMsgT msg;
+ kal_uint8 pri_data [MAX_FUNDICATED_FRAME_SIZE];
+} ut_rlp_lmd_fwd_fundicated_data_ind_msg_struct;
+
+/*MSG_ID_RLP_LMD_FWD_SCH_DATA_IND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpFwdSchDataIndMsgT msg;
+} rlp_lmd_fwd_sch_data_ind_msg_struct;
+
+#define MAX_RLP_FRAME_SIZE 68 /* 538-bit */
+
+/*MSG_ID_UT_RLP_LMD_FWD_SCH_DATA_IND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpFwdSchDataIndMsgT msg;
+ kal_uint8 rlp_data[MAX_PDU_NUM][MAX_RLP_FRAME_SIZE]; /* in-band RLP Frame data */
+} ut_rlp_lmd_fwd_sch_data_ind_msg_struct;
+
+/*MSG_ID_RLP_LMD_REV_DATA_AVAIL_IND_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpRevDataAvailIndMsgT msg;
+} rlp_lmd_rev_data_avail_ind_msg_struct;
+
+/*MSG_ID_RLP_INACT_TMO_REQ_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpInActTimeOutMsgT msg;
+} rlp_inact_tmo_req_msg_struct;
+
+/*MSG_ID_RLP_QUERY_STAT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpQueryStatMsgT msg;
+} rlp_query_stat_msg_struct;
+
+/*MSG_ID_RLP_REINSTATE_RATE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rlp_reinstate_rate_msg_struct;
+
+/*MSG_ID_RLP_RATE_CONTROL_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ RlpRateControlMsgT msg;
+} rlp_rate_control_msg_struct;
+
+/*MSG_ID_RLP_RESET_STAT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rlp_reset_stat_msg_struct;
+
+/*MSG_ID_RLP_RESET_FRAME_COUNT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rlp_reset_frame_count_msg_struct;
+
+/*MSG_ID_RLP_PEEK_FRAME_STAT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rlp_peek_frame_stat_msg_struct;
+
+/*MSG_ID_RLP_DISABLE_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rlp_disable_msg_struct;
+
+/*MSG_ID_RLP_REV_DATA_REQ_SIGNAL*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rlp_rev_data_req_signal_struct;
+
+/*MSG_ID_RLP_REV_DATA_REQ_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ValRevTxReqMsgT msg;
+}rlp_rev_data_req_msg_struct;
+
+
+/*MSG_ID_RLP_REV_DATA_REQ2_SIGNAL*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+} rlp_rev_data_req2_signal_struct;
+
+/*MSG_ID_UT_RLP_SET_MAX_ELEMENT_MSG*/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint8 maxElement;
+}ut_rlp_set_max_element_msg_struct;
+
+
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/rlp_prot.h b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_prot.h
new file mode 100644
index 0000000..5d84a65
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/rlp_prot.h
@@ -0,0 +1,426 @@
+/*****************************************************************************
+* 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) 1999-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+/*************************************************************************
+ *
+ * File Name: rlp_prot.h
+ * Project: IS-707 Mobile Terminal
+ * Original Author: BJC
+ * Creation Date: Jan. 13, 1998
+ *
+ * Description: RLP Protocol Frame Data Defintions
+ *
+ * Restrictions:
+ *
+ * Dependencies:
+ *
+ ****************************************************************************
+ ****************************************************************************
+
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: rlp_prot.h $
+ *
+ * 06 28 2017 sue.zhong
+ * [MOLY00259241] [6293][C2K]Replace with KAL data type
+ * ::KAL type - folder fcp,lmd,rlp
+ * Revision 1.2 2005/10/05 11:16:21 hhong
+ * Changed to shorten the idle timer to 5 frames from 8 frames.
+ * Revision 1.1 2004/01/22 10:52:23 fpeng
+ * Initial revision
+ * Revision 1.7 2003/05/02 14:26:58 sulinlow
+ * To incorporate RLP1 bug fixes due to RLP3 changes
+ * Revision 1.6 2003/04/24 14:14:23 hhong
+ * Changed SEGF_MAX_DATA_BYTE from 15 to 16.
+ * Revision 1.5 2002/06/06 13:54:27 chinh
+ * Changed and Added Copyright
+ * Revision 1.4 2002/03/19 17:36:11 hhong
+ * Added compiler option SYS_OPTION_SCH_RAM_INUSE to reduce RLP_MAX_FRAME_BYTES for saving RAM usage.
+ * Revision 1.3 2001/11/14 14:30:45 hhong
+ * Changed to support F-SCH.
+ * Revision 1.2 2001/06/21 10:11:41 yfang
+ * supported RLP3
+ * Revision 1.1 2001/04/26 11:43:17 fpeng
+ * Initial revision
+ * Revision 1.3 2000/08/28 14:37:23 hhong
+ * Moving up to Ver 1.3 by checking out 1.1 and locking 1.2. A
+ * duplicate version of 1.1.
+ * Revision 1.1 1999/11/30 23:18:41Z cdma
+ * Initial revision
+ * Revision 1.5 1999/07/01 17:23:17 hhong
+ * Incorporate new data engine.
+ * Revision 1.9 1999/06/09 18:17:32 gfrye
+ * Added defines for Secondary Type A frames.
+ * See problem logs 30 and 31.
+ *
+ * Revision 1.8 1999/03/01 23:26:18 dehman
+ * Updated copyright notices.
+ *
+ * Revision 1.7 1999/02/23 23:16:16 dehman
+ * Major revisions for IS-707-A.8 compliance.
+ *
+ * Revision 1.6 1998/12/09 21:40:18 dehman
+ * 1. Changes to support IS-707-A.2 compliance.
+ * 2. Added Inactivity Monitor feature to support packet mode operation.
+ *
+ * Revision 1.5 1998/05/15 21:28:31 bcassidy
+ * 1. Fix EXT_V_S_MAX definition.
+ *
+ * Revision 1.4 1998/03/12 18:24:11 bcassidy
+ * 1. Fix FULL_PRIMARY_1_BITS definition.
+ * 2. Use FULL_PRIMARY_2_BITS definition in MAX_RLP_FRAME_BYTES as
+ * this is the longest frame type.
+ *
+ * Revision 1.3 1998/02/12 17:54:01 bcassidy
+ * 1. Add definitions to support idle frame validation and encryption.
+ *
+ * Revision 1.2 1998/02/07 20:31:42 bcassidy
+ * 1. Fix CTLF_BYTES definitions.
+ * 2. Mods to remove Borland compiler warnings.
+ *
+ * Revision 1.1 1998/01/31 22:48:18 bcassidy
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _RLP_PROT_H
+#define _RLP_PROT_H
+
+
+/* Maximum number of user data bytes in a frame */
+#define MAX_DATA_LEN 68
+
+/* External Sequence Numbers - Useful Defines */
+#define EXT_V_S_MASK 0xFFFFFF00L
+#define RLP2_EXT_V_S_MASK 0xFFFFF000L
+
+#define EXT_V_S_POS 8
+#define RLP2_EXT_V_S_POS 12
+
+#define EXT_V_S_MAX (1L<<22)
+#define RLP2_EXT_V_S_MAX (1L<<18)
+
+#define EXT_V_R_MASK 0xFFFFFF00L
+#define RLP2_EXT_V_R_MASK 0xFFFFF000L
+
+/* Erasure Counts */
+#define MAX_ERASURE_COUNT 127
+#define RLP2_MAX_ERASURE_COUNT 255
+
+/* Frame lengths (in bits) */
+#define FULL_PRIMARY_1_BITS 171
+#define FULL_PRIMARY_2_BITS 266
+#define FULL_SECONDARY_1_BITS 168
+#define FULL_SECONDARY_2_BITS 262
+#define FULL_PRIMARY_1_X2_BITS 346
+#define FULL_PRIMARY_2_X2_BITS 538
+#define FULL_SECONDARY_1_X2_BITS 346
+#define FULL_SECONDARY_2_X2_BITS 538
+
+
+/* Data field maximum lengths for Mux Option 1 */
+#define DBYTES_1_2_PRIMARY_1 8
+#define DBYTES_FULL_PRIMARY_1 19
+
+#define DBYTES_1_2_SECONDARY_1 9
+#define DBYTES_3_4_SECONDARY_1 14
+#define DBYTES_7_8_SECONDARY_1 17
+#define DBYTES_FULL_SECONDARY_1 19
+
+/* Data field maximum lengths for Mux Option 2 */
+#define DBYTES_1_4_PRIMARY_2 4
+#define DBYTES_1_2_PRIMARY_2 13
+#define DBYTES_FULL_PRIMARY_2 31
+
+#define DBYTES_1_8_SECONDARY_2 2
+#define DBYTES_3_16_SECONDARY_2 4
+#define DBYTES_1_4_SECONDARY_2 6
+#define DBYTES_3_8_SECONDARY_2 10
+#define DBYTES_7_16_SECONDARY_2 13
+#define DBYTES_1_2_SECONDARY_2 15
+#define DBYTES_3_4_SECONDARY_2 24
+#define DBYTES_7_8_SECONDARY_2 28
+#define DBYTES_FULL_SECONDARY_2 30
+
+#ifdef SYS_OPTION_SCH_RAM_INUSE
+#define RLP_MAX_FRAME_BYTES ((FULL_PRIMARY_2_X2_BITS + 7) / 8)
+#else
+#define RLP_MAX_FRAME_BYTES ((FULL_PRIMARY_2_BITS + 7) / 8)
+#endif
+
+
+/* Frame field byte indexes */
+#define FI_SEQ 0
+#define FI_CTL 1
+#define FI_LEN 1
+#define FI_FULL_RATE_FORMAT_B_DATA 1
+#define FI_FULL_RATE_FORMAT_C_DATA 1
+#define FI_FCS8 1
+#define FI_DATA 2
+#define FI_FIRST 2
+#define FI_20_BIT_TYPE 2
+#define FI_LAST 3
+#define FI_EM 4
+#define FI_EXT_SEQ_M 4
+#define FI_PRIMARY_1_TYPE (((FULL_PRIMARY_1_BITS + 7)/8) - 1)
+#define FI_PRIMARY_2_TYPE (((FULL_PRIMARY_2_BITS + 7)/8) - 1)
+#define FI_FCS16_NO_ENC 4
+#define FI_FCS16_ENC 7
+
+/* RLP2 Specific Frame Field Byte Indexes */
+#define FI_RLP2_EM 2
+
+#define FI_SECONDARY_1_TYPE (((FULL_SECONDARY_1_BITS + 7)/8) - 1)
+#define FI_SECONDARY_2_TYPE (((FULL_SECONDARY_2_BITS + 7)/8) - 1)
+
+/* RLP3 Specific Frame Field Byte Indexes */
+#define FI_RLP3_FORMAT_TYPE 0
+#define FI_RLP3_IDLE_SEQ_HI 1
+#define FI_RLP3_FILL_SEQ_HI 1
+
+#define FI_RLP3_INIT_VAR 1
+#define FI_RLP3_SEGMENT_SQI 1
+#define FI_RLP3_SEGMENT_LST 1
+#define FI_RLP3_SEGMENT_RTX 1
+
+
+/* Full Rate Primary frame field definitions */
+#define FULL_RATE_1_TYPE_MASK (0x07 << 5)
+#define FULL_RATE_1_TYPE_A (0x01 << 5)
+#define FULL_RATE_1_TYPE_B (0x02 << 5)
+
+/* Full Rate Secondary (RLP2) frame field definitions */
+#define RLP2_SEC_A2_TYPE_MASK (0x03 << 2)
+#define RLP2_SEC_A2_TYPE (0x01 << 2)
+#define RLP2_SEC_B2_TYPE (0x02 << 2)
+
+/* Full Rate Secondary (RLP2) frame field definitions */
+#define RLP2_SEC_A1_TYPE_MASK 0x07
+#define RLP2_SEC_A1_TYPE 0x01
+#define RLP2_SEC_B1_TYPE 0x02
+
+#define FORMAT_B_1_DATA_BYTES 20
+
+#define FULL_RATE_2_TYPE_MASK (0x03 << 6)
+#define FULL_RATE_2_TYPE_A (0x01 << 6)
+#define FULL_RATE_2_TYPE_B (0x02 << 6)
+#define FORMAT_B_2_DATA_BYTES 32
+
+/* RLP2 Specific Full Rate Frame Definitions */
+#define RLP2_PRIM_FULL_RATE_1_TYPE_MASK (0x06 << 5)
+#define RLP2_PRIM_FULL_RATE_1_TYPE_B (0x02 << 5)
+#define RLP2_PRIM_FULL_RATE_1_REXMIT_MASK (0x01 << 5)
+
+#define RLP2_PRIM_FULL_RATE_2_TYPE_MASK (0x02 << 6)
+#define RLP2_PRIM_FULL_RATE_2_TYPE_B (0x02 << 6)
+#define RLP2_PRIM_FULL_RATE_2_REXMIT_MASK (0x01 << 6)
+
+#define RLP2_SEC_FULL_RATE_1_TYPE_MASK (0xFE)
+#define RLP2_SEC_FULL_RATE_1_TYPE_B (0x02)
+#define RLP2_SEC_FULL_RATE_1_REXMIT_MASK (0x01)
+
+#define RLP2_SEC_FULL_RATE_2_TYPE_MASK (0x3E << 2)
+#define RLP2_SEC_FULL_RATE_2_TYPE_B (0x02 << 2)
+#define RLP2_SEC_FULL_RATE_2_REXMIT_MASK (0x01 << 2)
+
+#define RLP2_SEC_FORMAT_B_1_DATA_BYTES 19
+#define RLP2_SEC_FORMAT_B_2_DATA_BYTES 31
+
+/* RLP3 format C and D frame field definitions */
+#define RLP3_FORMAT_C_TYPE_MASK (0x80 >> 6)
+#define RLP3_FORMAT_C_REXMIT_MASK (0x40 >> 6)
+
+#define RLP3_FORMAT_C_1x_1_DATA_BYTES 20
+#define RLP3_FORMAT_C_1x_2_DATA_BYTES 32
+#define RLP3_FORMAT_C_2x_1_DATA_BYTES 42
+#define RLP3_FORMAT_C_2x_2_DATA_BYTES 66
+
+/* CTL field definitions */
+#define CTL_TYPE_MASK (0x03 << 6)
+#define CTL_CONTROL (0x03 << 6)
+#define CTL_SEGMENT (0x02 << 6)
+
+/* RLP3 CTL field definitions */
+#define CTL_RLP3_TYPE_MASK 0xF0
+#define CTL_RLP3_CONTROL_SYNC 0xD8
+#define CTL_RLP3_CONTROL_SYNC_ACK 0xF8
+#define CTL_RLP3_CONTROL_ACK 0xE8
+#define CTL_RLP3_CONTROL_NAK 0xC0
+#define CTL_RLP3_SEGMENT 0x80
+#define CTL_RLP3_IDLE 0xA0
+#define CTL_RLP3_FILL 0x90
+
+/* Control frame definitions */
+#define CTLF_TYPE_MASK (0x03 << 4)
+#define CTLF_NAK (0x00 << 4)
+#define CTLF_SYNC (0x01 << 4)
+#define CTLF_ACK (0x02 << 4)
+#define CTLF_SYNC_ACK (0x03 << 4)
+
+#define CTLF_ENC_MASK 0x03
+#define CTLF_ENC_OFF 0x00
+#define CTLF_ENC_ENHANCED 0x01
+#define CTLF_ENC_BOTH 0x02
+#define CTLF_ENC_BASIC 0x03
+
+#define CTLF_EM_MASK (0x03 << 6)
+#define CTLF_EM_INACTIVE (0x00 << 6)
+#define CTLF_EM_ACTIVE (0x01 << 6)
+
+#define CTLF_EXT_SEQ_M_BYTES 3
+#define CTLF_EXT_SEQ_M_MASK 0x3FFFFFL
+
+#define CTLF_BYTES_NO_ENC 6
+#define CTLF_BYTES_ENC 9
+
+/* RLP2 Specific Control frame definitions */
+#define CTLF_RLP2_TYPE_MASK (0x0F << 2)
+#define CTLF_RLP2_NAK (0x00 << 2)
+#define CTLF_RLP2_SYNC (0x06 << 2)
+#define CTLF_RLP2_ACK (0x0A << 2)
+#define CTLF_RLP2_SYNC_ACK (0x0E << 2)
+#define CTLF_RLP2_FILTER (0xF7)
+
+#define CTLF_RLP2_BYTES_NO_ENC 4
+#define CTLF_RLP2_BYTES_ENC 7
+
+#define CTLF_RLP2_NAK00_TYPE 0x00
+#define CTLF_RLP2_NAK01_TYPE 0x01
+#define CTLF_RLP2_LSEQHI_MASK 0x0F00
+#define CTLF_RLP2_NAK00_BYTES 8
+
+/* RLP3 Specific Control frame definitions */
+#define CTLF_RLP3_NAK_TYPE_00 0x00
+#define CTLF_RLP3_NAK_TYPE_01 0x01
+#define CTLF_RLP3_NAK_TYPE_10 0x02
+#define CTLF_RLP3_NAK_TYPE_11 0x03
+#define CTLF_RLP3_NUM_NAK_TYPES 4
+
+#define CTLF_RLP3_INIT_VAR 0x02
+
+#define CTLF_RLP3_SEQHI_MASK 0x0F00
+
+#define CTLF_RLP3_BYTES_NO_ENC 4
+#define CTLF_RLP3_BYTES_ENC 7
+
+
+/* RLP2 Field Bit Indexes */
+#define BI_RLP2_EXT_SEQ_M 18
+#define CTLF_EXT_SEQ_M_BITS 18
+
+#define BI_RLP2_NAK_TYPE 14
+#define BI_RLP2_NAK_LSEQHI 16
+#define BI_RLP2_NAK00_FIRST 20
+#define BI_RLP2_NAK00_LAST 32
+#define BI_RLP2_NAK00_FCS 44
+#define BI_RLP2_NAK01_MAP_COUNT 20
+#define BI_RLP2_NAK01_MAP_SEQ0 22
+#define BI_RLP2_NAK01_MAP0 34
+
+/* RLP3 Field Bit Indexes */
+#define BI_RLP3_EXT_SEQ_M 15
+#define BI_RLP3_NAK_TYPE 14
+#define BI_RLP3_SEGMENT_LEN 15
+
+#define BI_RLP3_FMT_TYPE 0
+
+
+/* Segment frame defintions */
+#define SEGF_TYPE_MASK (0x03 << 4)
+#define SEGF_FIRST (0x00 << 4)
+#define SEGF_SECOND (0x01 << 4)
+#define SEGF_LAST (0x02 << 4)
+#define SEGF_ISF (0x03 << 4)
+
+#define SEGF_LEN_MASK 0x0F
+#define SEGF_RLP3_FFA_MAX_DATA_BYTES 16
+#define SEGF_MAX_DATA_BYTES 15
+#define SEGF_OVERHEAD_BYTES 2
+
+/* RLP3 segment frame definition */
+#define SEGF_RLP3_TYPE_MASK 0x80
+#define SEGF_RLP3_SQI (0x01 << 3)
+#define SEGF_RLP3_LST (0x01 << 2)
+#define SEGF_RLP3_RTX (0x01 << 1)
+#define SEGF_RLP3_OVHD_BYTES 4
+#define SEGF_RLP3_OVHD_SEQHI_BYTES 5
+
+
+/* Unsegmented data frame definitions */
+#define DATAF_LEN_MASK 0x7F
+#define DATAF_RLP2_LEN_MASK 0x3F
+#define DATAF_RLP2_REXMIT_MASK 0x40
+#define BI_RLP2_REXMIT 9
+
+/* 20-bit frame definitions */
+#define F20BIT_TYPE_MASK (0x0F << 4)
+#define F20BIT_IDLE (0x00 << 4)
+#define F20BIT_ISF (0x0F << 4)
+
+#define IDLEF_BYTES 2
+#define IDLEF_RLP3_BYTES 2
+#define FILLF_RLP3_BYTES 2
+
+
+#define IDLE_FRAME_RETRAN_COUNT 1
+
+#define CONSECUTIVE_OOR_COUNT 3
+
+#define RLP2_MAX_NAK_RECORDS 4
+#define RLP3_MAX_NAK_RECORDS 4
+
+#define RLP_ENCRYPT_HOOK_PREFIX (0x00 << 30)
+#define RLP_DECRYPT_HOOK_PREFIX (0x01 << 30)
+
+/* RLP3 NAK Round Count */
+#define RLP3_MAX_MS_NAK_ROUNDS_FWD 7
+#define RLP3_MAX_MS_NAK_ROUNDS_REV 7
+
+
+#endif /* _RLP_PROT_H */
+
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/rlpwapi.h b/mcu/interface/protocol/l2_c2k/1xrtt/rlpwapi.h
new file mode 100644
index 0000000..935e513
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/rlpwapi.h
@@ -0,0 +1,494 @@
+/*****************************************************************************
+* 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.
+*
+*************************************************************/
+/*******************************************************************************
+ *
+ * File Name: RLP_API.h
+ *
+ * Creation Date: Jan. 6, 2004
+ *
+ * Description : It contains RLP API and the related data structure
+ *
+ *******************************************************************************
+ ******************************************************************************/
+
+#ifndef __RLP_API_H__
+#define __RLP_API_H__
+
+/*******************************************************************************
+ Include Header Files
+ (No absolute paths - paths handled by make file)
+*******************************************************************************/
+#include "sysdefs.h"
+#include "cpbuf.h"
+#include "rlp_msgid.h"
+
+#include "module_msg_range.h"
+/*******************************************************************************
+ Macros
+*******************************************************************************/
+#define RLP_MAX_SPY_LEN 64 /* Max size for Monspy output */
+#define RLP_IOP_MAX_REV_SIZE 120 /* Max size per IOP->RLP data xfer at REV link */
+
+#define RLP_MAILBOX_CMD EXE_MAILBOX_1_ID
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+/*******************************************************************************
+ User-Defined Types (Typedefs)
+*******************************************************************************/
+
+typedef enum
+{
+ RLP_PRIMARY_CHANNEL = 0, /* Do not change */
+ RLP_SECONDARY_CHANNEL,
+ NUM_TRAFFIC_CHAN
+} RlpChannelSelE;
+
+typedef enum
+{
+ RLP_NON_TRANSPARENT = 0, /* Do not change */
+ RLP_TRANSPARENT
+} RlpModeE;
+
+typedef enum
+{
+ RLP_RATE_SET1 = 0,
+ RLP_RATE_SET2,
+ NUM_RATE_SET
+} RlpRateSetE;
+
+typedef enum
+{
+ RLP_TYPE_1 = 0, /* Do not change the starting value */
+ RLP_TYPE_2,
+ RLP_TYPE_3,
+ NUM_RLP_TYPE
+} RlpTypeE;
+
+typedef enum
+{
+ RLP_FOR_HLP,
+ RLP_FOR_IOP,
+ RLP_AS_IS
+} RlpClientT;
+
+/*******************************************************************************
+ Message Definitions
+*******************************************************************************/
+/* RLP_PSW_INIT_CFG_MSG */
+typedef struct
+{
+ kal_uint8 srId; /* SR_ID */
+ RlpChannelSelE channel; /* Primary or Secondary Channel. */
+ RlpRateSetE fwdRateSet; /* Rate set for forward link. */
+ RlpRateSetE revRateSet; /* Rate set for reverse link. */
+ RlpRateSetE fwdSchRateSet; /* Rate set for SCH forward link. */
+ RlpRateSetE revSchRateSet; /* Rate set for SCH reverse link. */
+ kal_uint16 fwdSchMuxOpt; /* Mux option for fwd SCH */
+ kal_uint16 revSchMuxOpt; /* Mux option for rev SCH */
+ RlpTypeE rlpType; /* RLP_TYPE_1, 2 and 3 */
+ kal_bool paramValid; /* KAL_TRUE: valid in next two params */
+ kal_uint32 rand; /* To generate LTable. */
+ kal_uint8 SSDB[8]; /* To generate Data Key. */
+} RlpInitCfgMsgT;
+
+typedef struct
+{
+ kal_uint8 RateCtrlParam; /* Rate control parameter. */
+} RlpRateControlMsgT;
+
+/* RLP_PSW_BLOB_CFG_MSG */
+#define RLP3_MAX_ROUNDS_FWD 7
+#define RLP3_MAX_ROUNDS_REV 7
+
+typedef struct
+{
+ kal_bool revSchSupported; /* Whether RSCH is supported by BS or not */
+ kal_uint16 fwdSchMuxOpt; /* Mux option for fwd SCH */
+ kal_uint16 revSchMuxOpt; /* Mux option for rev SCH */
+ kal_uint16 fwdPdchMuxOpt; /* Mux option for fwd PDCH */
+
+ kal_uint8 rlpBlobType;
+ kal_uint8 rlpVersion;
+
+ kal_uint8 rtt;
+ kal_uint8 ddw;
+ kal_uint8 rexmit_timer;
+ kal_bool initVar;
+
+ kal_uint32 bsExtSeqM;
+ kal_uint32 msExtSeqM;
+
+ kal_uint8 maxMsNakRoundsFwd;
+ kal_uint8 maxMsNakRoundsRev;
+ kal_uint8 nakRoundsFwd;
+ kal_uint8 nakRoundsRev;
+
+ kal_uint8 nakPerRoundFwd[RLP3_MAX_ROUNDS_FWD];
+ kal_uint8 nakPerRoundRev[RLP3_MAX_ROUNDS_REV];
+} RlpBlobMsgT;
+
+typedef struct
+{
+ kal_uint8 SrId; /* SR_ID */
+ RlpChannelSelE ChannelSel; /* Primary or Secondary Channel. */
+ RlpModeE ModeType; /* Non/transparent mode. */
+ RlpClientT Client;
+ kal_uint16 InActTimeOut; /* 0 = disable, non_zero = number
+ of 20 msec frames. */
+ ExeRspMsgT fwdDataDest; /* Destination for forward data. */
+ kal_bool reOpen; /* indicate it's a reopen triggered by RLP open failed. */
+} RlpOpenMsgT;
+
+
+/* RLP_AIW_CLOSE_CFG_MSG */
+/* RLP_HLW_CLOSE_CFG_MSG */
+typedef struct
+{
+ kal_uint8 SrId; /* SR_ID */
+ RlpChannelSelE ChannelSel; /* Primary or Secondary Channel. */
+ kal_bool FlushPending; /* KAL_TRUE, to flush any pending RLP */
+ /* data frame. */
+ /* KAL_FALSE, RLP to transmit any */
+ /* pending data before close. */
+} RlpCloseMsgT;
+
+
+/* RLP_AIW_INACT_TIMEOUT_CFG_MSG */
+/* RLP_HLW_INACT_TIMEOUT_CFG_MSG */
+typedef struct
+{
+ kal_uint8 srId;
+ RlpChannelSelE channel; /* Primary or Secondary Channel. */
+ kal_uint16 timeOutPeriod; /* unit of second. */
+} RlpInActTimeOutMsgT;
+
+typedef enum
+{
+ SYS_RLP_RATE_BLANK = 0, /* blank rate */
+ SYS_RLP_RATE_1_16, /* 1/16 rate */
+ SYS_RLP_RATE_1_8, /* 1/8 rate */
+ SYS_RLP_RATE_3_16, /* 3/16 rate */
+ SYS_RLP_RATE_1_4, /* 1/4 rate */
+ SYS_RLP_RATE_3_8, /* rate 3/8 */
+ SYS_RLP_RATE_7_16, /* rate 7/16 */
+ SYS_RLP_RATE_1_2, /* rate 1/2 */
+ SYS_RLP_RATE_3_4, /* rate 3/4 */
+ SYS_RLP_RATE_7_8, /* rate 7/8 */
+ SYS_RLP_RATE_1, /* full rate */
+ SYS_RLP_RATE_1x, /* 1x rate for SCH */
+ SYS_RLP_RATE_2x, /* 2x rate for SCH */
+ SYS_RLP_RATE_TOTAL, /* number of rates */
+ SYS_RLP_RATE_NON_CRITICAL, /* NON_CRITICAL */
+ SYS_RLP_RATE_BAD = 255 /* erasure frame */
+} SysRlpFrameRateE;
+
+typedef enum
+{
+ B_NEW = 0x40,
+ B_REXMIT = 0x60,
+ Blank = 0x10,
+ A_UnSeg = 0x00,
+ A_Seg = 0x80,
+ Fill_Frame = 0x90,
+ Idle_Frame = 0xa0,
+ SYNC_Frame = 0xd0,
+ SYNC_ACK_Frame = 0xf0,
+ ACK_Frame = 0xe0,
+ NAK_Frame = 0xc0
+} SysRlpFchFrameTypeE;
+typedef struct
+{
+ kal_bool RateAllowed[SYS_RLP_RATE_TOTAL]; /* Table entries to be read */
+ /* in the order of entries */
+ /* "SysRlpFrameRateE". KAL_TRUE */
+ /* if rate is allowed; */
+ /* KAL_FALSE, otherwise. */
+} RlpFrameRateTabT;
+
+/*
+ * RLP_LMD_FWD_FUNDICATED_DATA_IND_MSG
+ * This message is sent from LMD to indicate a new data frame received
+ * on the forward FCH or DCCH
+ */
+typedef struct
+{
+ kal_uint8 priSrId; /* SR_ID for the primary channel */
+ SysRlpFrameRateE priRate; /* frame rate received for primary */
+ CpBufferT *priDataPtr; /* data received for primary, null */
+ /* if PrimaryRate is blank or bad */
+ kal_uint8 secSrId; /* SR_ID for the secondary channel */
+ SysRlpFrameRateE secRate; /* frame rate received for secondary */
+ CpBufferT *secDataPtr; /* data received for secondary, null */
+ /* if SecondaryRate is blank or bad */
+} RlpFwdFundicatedDataIndMsgT;
+
+typedef enum
+{
+ FORMAT_D = 0,
+ FORMAT_AB,
+ FORMAT_C_NEW,
+ FORMAT_C_REXMIT,
+ FORMAT_A,
+ FORMAT_B
+} RlpFrmFormatE;
+
+typedef struct
+{
+ kal_uint8 srId;
+ RlpFrmFormatE frameFormat;
+ kal_uint8 offset;
+ kal_uint8 reserved; /* Word alignment */
+ kal_uint16 frameLen;
+ CpBufferT *dataCpPtr;
+} RlpFrameInfoT;
+
+/* RLP_LMD_FWD_SCH_DATA_IND_MSG */
+#define NUM_FSCH_FRAMES 16
+typedef struct
+{
+ kal_uint8 numRlpFrames; /* The number of RLP frames */
+ RlpFrameInfoT rlpFrame[NUM_FSCH_FRAMES];
+}RlpFwdSchDataIndMsgT;
+
+/* RLP_LMD_FWD_PDCH_DATA_IND_MSG */
+#define NUM_FPDCH_FRAMES 20
+typedef struct
+{
+ kal_uint16 numRlpFrames;
+ RlpFrameInfoT rlpFrame[NUM_FPDCH_FRAMES];
+}RlpFwdPdchDataIndMsgT;
+
+/* RLP_LMD_REV_DTCH_DATA_AVAIL_IND_MSG */
+typedef struct
+{
+ ExeRspMsgT rspMsg; /* required response message */
+ kal_uint8 priSrId; /* SR_ID for the primary channel */
+ SysRlpFrameRateE priRate; /* The highest frame rate for primary */
+
+ kal_uint8 secSrId; /* SR_ID for the secondary channel */
+ SysRlpFrameRateE secRate; /* The highest frame rate for secondary */
+
+ ExeRspMsgT schRspMsg; /* The Rev Sch's required Rsp msg */
+ kal_uint8 numSchPdu; /* Number of PDU's allowed */
+ SysRlpFrameRateE schRate; /* The rate allowed for each MuxPDU */
+ SysMultiplexOptionT schMuxOpt; /* Current R-SCH assignment Mux Option */
+}RlpRevDataAvailIndMsgT;
+
+/* RLP_RLP_MORE_FWD_DATA_AVAIL_IND_MSG */
+typedef struct
+{
+ kal_uint8 srId;
+}RlpFwdMoreDataAvailIndMsgT;
+
+/* RLP_ETS_RESET_STAT_CFG_MSG */
+/* Message body is not needed */
+
+/* RLP_ETS_PEEK_RXQ_STAT_CFG_MSG */
+/* RLP_ETS_PEEK_FRAME_STAT_CFG_MSG */
+typedef struct
+{
+ ExeRspMsgT rspInfo;
+} RlpPeekStatMsgT;
+
+/* RLP_ETS_NUM_FRAME_PER_UPPER_LAYER_IND_CFG_MSG */
+typedef struct
+{
+ kal_uint16 numRlpFrames;
+} RlpNumFramesPerIndT;
+
+enum EcdmaSysRlpFramePhyChan_enum
+{
+ CDMA_SYS_FCH,
+ CDMA_SYS_DCCH,
+ CDMA_SYS_SCH0,
+ CDMA_SYS_SCH1
+};
+
+enum EcdmaSysRlpFrameMuxPdu_enum
+{
+ MUX_PDU1 = 1,
+ MUX_PDU2,
+ MUX_PDU3
+};
+
+enum EcdmaSysRlpFramePhyChanRate_enum
+{
+ CDMA_SYS_PHY_CHAN_RATE_9600,
+ CDMA_SYS_PHY_CHAN_RATE_14400,
+ CDMA_SYS_PHY_CHAN_RATE_19200,
+ CDMA_SYS_PHY_CHAN_RATE_28800,
+ CDMA_SYS_PHY_CHAN_RATE_38400,
+ CDMA_SYS_PHY_CHAN_RATE_57600,
+ CDMA_SYS_PHY_CHAN_RATE_76800,
+ CDMA_SYS_PHY_CHAN_RATE_115200,
+ CDMA_SYS_PHY_CHAN_RATE_153600,
+ CDMA_SYS_PHY_CHAN_RATE_1200,
+ CDMA_SYS_PHY_CHAN_RATE_1800,
+ CDMA_SYS_PHY_CHAN_RATE_2400,
+ CDMA_SYS_PHY_CHAN_RATE_3600,
+ CDMA_SYS_PHY_CHAN_RATE_4800,
+ CDMA_SYS_PHY_CHAN_RATE_7200,
+ CDMA_SYS_PHY_CHAN_RATE_BLANK
+ };
+
+#define RLP_SPY_MAX_FRAME_PAYLOAD_LEN 44 /* bytes */
+
+typedef struct
+{
+ enum EcdmaSysRlpFramePhyChan_enum CdmaSysRlpFramePhyChan;
+ enum EcdmaSysRlpFrameMuxPdu_enum CdmaSysRlpFrameMuxPdu;
+ enum EcdmaSysRlpFramePhyChanRate_enum CdmaSysRlpFramePhyChanRate;
+ kal_uint8 CdmaSysRlpFrameTimeDelta;
+ kal_int16 CdmaSysRlpFrameLen;
+ kal_uint8 CdmaSysRlpFramePayload[RLP_SPY_MAX_FRAME_PAYLOAD_LEN];
+
+} EcdmaSysRlpFrameData;
+
+typedef struct
+{
+ kal_int32 CdmaSysRlpServiceId;
+ EcdmaSysRlpFrameData CdmaSysRlpFrames;
+
+} EcdmaSysRlpData;
+
+typedef struct
+{
+ kal_uint32 timestamp;
+ EcdmaSysRlpData FrameData;
+} RlpFrameEvent;
+
+typedef struct
+{
+ kal_bool bStatusReport;
+} RlpActivityStatusQueryMsgT;
+
+typedef enum EcdmaSysRlpFramePhyChanRate_enum RlpRxFrameRateT;
+typedef enum EcdmaSysRlpFrameMuxPdu_enum RlpFrameMuxPduTypeT;
+typedef enum EcdmaSysRlpFramePhyChan_enum RlpFramePhyChanT;
+
+
+typedef struct
+{
+ ExeRspMsgT RspMsg;
+} RlpQueryStatMsgT;
+
+typedef enum
+{
+ RLP_SCH_RATE_1X = 0,
+ RLP_SCH_RATE_2X = 1,
+ RLP_SCH_RATE_4X = 2,
+ RLP_SCH_RATE_8X = 3,
+ RLP_SCH_RATE_16X = 4
+}RlpSchRateT;
+
+typedef enum
+{
+ RLP_SCH_SINGLE_SIZE = 0,
+ RLP_SCH_DOUBLE_SIZE = 1
+}RlpSchDataBlockSizeT;
+
+typedef struct
+{
+ kal_uint32 CdmaSysServiceId; /* Service ID */
+ kal_uint32 CdmaSysResetTime; /* The system time when RLP stat resets */
+ kal_uint32 CdmaSysNaksReceived; /* Received NAK count */
+ kal_int32 CdmaSysReXmitsNotFound; /* Invalid NAK count for type 01, 10, 11 plus accumulated
+ distance between invalid 00 NAK seq and v_s */
+ kal_uint32 CdmaSysLargestContigErasure; /* Maximum count of contiguous erasures received */
+ kal_uint32 CdmaSysResets; /* Reset RLP count */
+ kal_uint32 CdmaSysAborts; /* Abort frame count */
+ kal_uint32 CdmaSysLastRtt; /* Last RTT in counts of 20 msec slot */
+ kal_uint32 CdmaSysRlpBlobUsed; /* 3 when BLOB includes RTT or 1 when not
+ (not used currently) */
+ kal_uint32 CdmaSysRxRexmitFrCnt; /* Rx Rexmit data frame count */
+ kal_uint32 CdmaSysRxIdleFrCnt; /* Rx Idle frame count */
+ kal_uint32 CdmaSysRxFillFrCnt; /* Rx Fill frame count */
+ kal_uint32 CdmaSysRxBlankFrCnt; /* Rx Blank frame count */
+ kal_uint32 CdmaSysRxNullFrCnt; /* Rx Null frame (not used currently) */
+ kal_uint32 CdmaSysRxNewDataFrCnt; /* Rx new data frame count */
+ kal_uint32 CdmaSysRx20msFrCnt; /* Rx data frame count */
+ kal_uint32 CdmaSysRxTotalBytes; /* Total bytes received for passing to upper layer */
+ kal_uint32 CdmaSysRxRlpErasures; /* Rx RLP erasures count */
+ kal_uint32 CdmaSysRxMuxErasures; /* Rx MUX erasures count */
+ kal_uint32 CdmaSysTxRexmitFrCnt; /* Tx Rexmit data frame count */
+ kal_uint32 CdmaSysTxIdleFrCnt; /* Tx Idle frame count */
+ kal_uint32 CdmaSysTxNewDataFrCnt; /* Tx new data frame count */
+ kal_uint32 CdmaSysTx20msFrCnt; /* Tx data frame count */
+ kal_uint32 CdmaSysTxTotalBytes; /* Total bytes requested from upper layer sent */
+ kal_uint32 CdmaSysTxNaksCnt; /* Count for the last Tx round set by BLOB */
+ kal_uint32 CdmaSysTxNaks[7]; /* Counts for 0 - 7 NAK Tx remaining for a particular
+ round when Rx the missing frame */
+ kal_bool IsForSchAssigned; /* If forward supplement channel is assigned */
+ RlpSchRateT ForSchRate; /* Current forward Supplement channel rate */
+ RlpSchDataBlockSizeT ForSchDataBlockSize; /* Current forward SCH data block size */
+ kal_uint8 NumForSchUsed; /* Number of forward SCH are being used */
+ kal_bool IsRevSchAssigned; /* If reverse supplement channel is assigned */
+ RlpSchDataBlockSizeT RevSchDataBlockSize; /* Current reverse SCH data block size */
+ RlpSchRateT RevSchRate; /* Current reverse Supplement channel rate */
+ kal_uint8 NumRevSchUsed; /* Number of reverse SCH are being used */
+} RlpQueryStatIndMsgT;
+/*****************************************************************************
+* $Log: rlpwapi.h $
+* Revision 1.9 2005/05/04 12:46:51 dstecker
+* Renamed RLP_ETS_NUM_FRAME_PER_IOP_IND_CFG_MSG to RLP_ETS_NUM_FRAME_PER_UPPER_LAYER_IND_CFG_MSG
+* Revision 1.8 2005/01/19 14:40:26 blee
+* Added ETS function that peeks RLP RxQ variables
+* Revision 1.7 2004/12/10 14:01:37 blee
+* Changed RLP blob data structure
+* Revision 1.6 2004/10/22 15:10:43 blee
+* Adde frame format field for FCH to display into ETS
+* Revision 1.5 2004/08/06 16:41:32 blee
+* Added ETS message that comes from ETS through IOP.
+*
+* Created by Brenndon
+*****************************************************************************/
+
+#endif /* __RLP_API_H__ */
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/1xrtt/xl2_em.h b/mcu/interface/protocol/l2_c2k/1xrtt/xl2_em.h
new file mode 100644
index 0000000..a66f6dc
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/1xrtt/xl2_em.h
@@ -0,0 +1,122 @@
+/*****************************************************************************
+* 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) 2015
+*
+* 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).
+*
+*****************************************************************************/
+
+/****************************************************************************
+ *
+ * Module: xl2_em.h
+ *
+ * Purpose: xl2 engineer mode definitions and prototypes.
+ *
+ ****************************************************************************/
+
+#ifndef _XL2_EM_H_
+#define _XL2_EM_H_
+
+#ifdef __MODEM_EM_MODE__
+
+#include "em_struct.h"
+#include "em_msgid.h"
+#include "md_sap.h"
+//#include "lmdapi.h"
+//#include "srbp_access.h"
+#include "sysfrc.h"
+#include "em_public_struct_xl2.h"
+
+#ifndef MTK_PLT_ON_PC
+#define __XL2_EM_MODE__ 1
+#endif
+
+typedef enum
+{
+ Fwd_Chnl = 0,
+ Rev_Chnl = 1
+}channel_enum;
+
+typedef enum
+{
+ Fill_frame = 0,
+ Nak_frame = 1,
+ Reset_frame = 2,
+ Rlp_Close = 3,
+ Data_frame = 4
+}frame_type_enum;
+
+typedef enum
+{
+ PHY_CHAN_RATE_9600,
+ PHY_CHAN_RATE_14400,
+ CHAN_RATE_19200,
+ CHAN_RATE_28800,
+ CHAN_RATE_38400,
+ CHAN_RATE_57600,
+ CHAN_RATE_76800,
+ CHAN_RATE_115200,
+ CHAN_RATE_153600,
+ CHAN_RATE_1200,
+ CHAN_RATE_1800,
+ CHAN_RATE_2400,
+ CHAN_RATE_3600,
+ CHAN_RATE_4800,
+ CHAN_RATE_7200,
+ CHAN_RATE_BLANK
+}RlpFramePhyChanRate_enum;
+
+
+void xl2EmUpdateReqMsg(local_para_struct *local_para_ptr);
+
+void xl2SendRevStateInfo(void);
+
+void xl2UpdateAchProbeInfo(kal_uint8 maxProbeSeq, kal_uint8 probeNum,
+ kal_uint8 seqNum, kal_int16 powerCorrection);
+
+void xl2VoiceRateInfoInit(void);
+void xl2SendVoiceRateInfo(void);
+void xl2UpdateVoiceRateInfo(em_lmd_voice_rate_enum voice_rate , channel_enum channel);
+
+
+void xl2UpdateRlpInfo(frame_type_enum *FrmType ,em_rlp_general_info_struct *rlpGenrlInfo,
+ em_rlp_fwd_nak_list_struct *FwdnakList);
+
+void xl2PsRateInfoInit(void);
+void xl2SendPsRateInfo(void);
+void xl2UpdatePsRateInfo(RlpFramePhyChanRate_enum RlpRate,
+ kal_uint16 RlpFrameLength , channel_enum channel);
+
+void xl2UpdateSchAssignedRate(kal_uint8 AssignedRate, channel_enum channel);
+
+#endif/* __MODEM_EM_MODE__ */
+
+#endif/* _XL2_EM_H_ */
+
diff --git a/mcu/interface/protocol/l2_c2k/common/7074API.H b/mcu/interface/protocol/l2_c2k/common/7074API.H
new file mode 100644
index 0000000..761a1df
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/7074API.H
@@ -0,0 +1,199 @@
+/*************************************************************
+*
+* 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: 7074api.h
+ * Project: NSPE stack
+ *
+ * Original Author: Steve Pye
+ * Creation Date: July 10, 1998
+ *
+ * Description: Header file for 7074api.c
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ ************************************************************************/
+
+#ifndef _7074API_H_
+#define _7074API_H_ 1
+
+#include "USER_API.H"
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+
+/* Connect Status/Disconnect Reasons */
+#define IS707_CONNECT_SUCCESS 0
+#define IS707_CONNECT_FAIL_TCP 1
+#define IS707_CONNECT_FAIL_PPP 2
+#define IS707_CONNECT_FAIL_RLP 3
+#define IS707_CONNECT_FAIL_UART 4
+#define IS707_DISCONNECT_NORMAL 5
+#define IS707_CONNECTING_MIP 20
+#define IS707_DISCONNECTING_MIP 21
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum
+{
+ CONN_FAIL_UNUSED = 0,
+ CONN_FAIL_PPP_AUTH_FAIL = 6,
+ CONN_FAIL_MIP_PPP_LCP_TMO,
+ CONN_FAIL_MIP_PPP_NCP_TMO,
+ CONN_FAIL_SIP_PPP_LCP_TMO,
+ CONN_FAIL_SIP_PPP_NCP_TMO,
+ CONN_FAIL_MIP_PPP_OPT_MISMATCH,
+ CONN_FAIL_SIP_PPP_OPT_MISMATCH,
+ CONN_FAIL_MIP_SOL_TMO,
+ CONN_FAIL_MIP_RRQ_TMO,
+ CONN_FAIL_MIP_RRP_ERR,
+ CONN_FAIL_MIP_LCP_FAIL,
+ CONN_FAIL_SIP_LCP_FAIL,
+ CONN_FAIL_MIP_NCP_FAIL,
+ CONN_FAIL_SIP_NCP_FAIL,
+ CONN_FAIL_PPP_A12_AUTH_FAIL,
+ CONN_FAIL_PPP_EAP_AKA_AUTH_FAIL,
+ CONN_FAIL_MIP_ADMIN_PROHIB_FAIL,
+ CONN_FAIL_MULTI_TCH_FAIL,
+ CONN_FAIL_PPP_A12_LCP_TMO,
+
+ /*the code from 64 to 144 have been token as MIP Error codes*/
+ /*GTR-DATA-SPEC*/
+ CONN_FAIL_MIP_UNSPECIFIED = 64,
+ CONN_FAIL_MIP_ADMIN_PROHIBITED = 65,
+ CONN_FAIL_MIP_INSUFF_RESOURCES_1 = 66,
+ CONN_FAIL_MIP_MN_FAILED_AUTH = 67,
+ CONN_FAIL_MIP_HA_FAILED_AUTH = 68,
+ CONN_FAIL_MIP_LIFETIME_TOO_LONG = 69,
+ CONN_FAIL_MIP_POORLY_FORMED_REQ = 70,
+ CONN_FAIL_MIP_POORLY_FORMED_REPLY = 71,
+ CONN_FAIL_MIP_ENCAP_UNAVAIL = 72,
+ CONN_FAIL_MIP_RESERVED_UNAVAIL = 73,
+ CONN_FAIL_MIP_REV_TUN_UNAVAIL = 74,
+ CONN_FAIL_MIP_RT_N_T_NOT_SET = 75,
+ CONN_FAIL_MIP_MN_TOO_DISTANT = 76,
+ CONN_FAIL_MIP_INVALID_CARE_OF_ADDR = 77,
+ CONN_FAIL_MIP_REG_TIMEOUT = 78,
+ CONN_FAIL_MIP_DS_NOT_SUPPORT = 79,
+ CONN_FAIL_MIP_HN_UNREACHABLE = 80,
+ CONN_FAIL_MIP_HA_HOST_UNREACHABLE = 81,
+ CONN_FAIL_MIP_HA_PORT_UNREACHABLE = 82,
+ CONN_FAIL_MIP_HA_UNREACHABLE = 88,
+ CONN_FAIL_MIP_VENDOR_SPECIFIC = 89,
+ CONN_FAIL_MIP_NONZERO_HA_ADDR = 90,
+ CONN_FAIL_MIP_NONZERO_HOME_ADDR = 96,
+ CONN_FAIL_MIP_MISSING_NAI = 97,
+ CONN_FAIL_MIP_MISSING_HA = 98,
+ CONN_FAIL_MIP_MISSING_HOME_ADDR = 99,
+ CONN_FAIL_MIP_UNKNOWN_CHALL = 104,
+ CONN_FAIL_MIP_MISSING_CHALL = 105,
+ CONN_FAIL_MIP_STALE_CHALL = 106,
+ CONN_FAIL_MIP_MISSING_MN_FA = 107,
+ CONN_FAIL_MIP_REASON_UNSPEC = 128,
+ CONN_FAIL_MIP_ADMIN_PROHIB = 129,
+ CONN_FAIL_MIP_INSUFF_RESOURCES_2 = 130,
+ CONN_FAIL_MIP_MN_FAILED_AUTH_2 = 131,
+ CONN_FAIL_MIP_FA_FAILED_AUTH = 132,
+ CONN_FAIL_MIP_IDENT_MISMATCH = 133,
+ CONN_FAIL_MIP_POORLY_FORMED_REQ_2 = 134,
+ CONN_FAIL_MIP_TOO_MANY_BINDINGS = 135,
+ CONN_FAIL_MIP_UNKNOWN_HA_ADDR = 136,
+ CONN_FAIL_MIP_REV_TUNNEL_UNAVAIL = 137,
+ CONN_FAIL_MIP_RT_N_T_NOT_SET_2 = 138,
+ CONN_FAIL_MIP_ENCAPSULATION_UNAVAIL = 139,
+ CONN_FAIL_MIP_REG_WITH_REDIRECTED = 143,
+ CONN_FAIL_MIP_ERR_CODE_FROM_HOME = 144
+}ConnFailReasonT;
+
+/* Async App -> Browser Control/Bottom of PPP functions for Browser Mode */
+void is7074HDLCPacketRxd( kal_uint8 *data, kal_uint16 size );
+void is7074AppIntEndConnection( kal_bool graceful );
+void is7074AppIntTxReq( kal_uint8 *data, kal_uint16 size, kal_bool push, kal_uint8 sap );
+void is7074AppIntRxRsp( kal_uint8 sap );
+void is7074BrowserSendDatagram( kal_uint8 sap, SendToRequest *s );
+void is7074BrowserRxRsp(kal_uint8 sap);
+
+/* RLP -> Bottom of PPP functions in all modes */
+void is7074RlpTxComplete( kal_bool rlp_channel );
+void is7074RlpHDLCPacketRxd( kal_uint8 app, kal_uint8 *data, kal_uint16 size );
+
+/* UART -> Bottom of PPP via the UART during Packet mode */
+void is7074UartHDLCPacketRxd( kal_uint8 *data, kal_uint16 size );
+
+/* 'IP or CLNP' -> Top of PPP (and then UART) functions for Packet Mode */
+void is7074RmPppConnect( kal_uint32 local_ip, kal_uint32 remote_ip );
+void is7074RmConnectStatus(kal_uint8 status);
+
+#ifdef PPP_RECONNECT
+void is7074RmPppReConnect( void );
+void is7074UmPppReConnect( kal_uint16 port);
+#endif
+
+/* TCP browser -> top of TCP/IP/PPP stack */
+void is7074TcpbEndConnection( kal_bool graceful );
+void is7074TcpbSendDataReq( kal_uint8 *data, kal_uint16 size, kal_bool push, kal_uint8 sap );
+void is7074TcpbRecvDataRsp( kal_uint8 sapRsp );
+
+kal_int16 is7074SocketCreate(kal_bool TcpType, kal_uint8 *sap);
+kal_int16 is7074SocketClose(kal_uint8 sap, kal_bool graceful);
+kal_int16 is7074SocketBind(kal_uint8 sap, kal_uint32 ipAddr, kal_uint16 port, kal_bool FromApp);
+void is7074SocketConnect(kal_uint8 sap, kal_bool passive, kal_uint32 ipAddr, kal_uint16 port);
+kal_int16 is7074SocketListen(kal_uint8 sap, kal_uint8 listenSap);
+kal_int16 is7074SocketOptionSet(kal_uint8 sap, kal_uint8 opt_type, kal_uint16 size);
+kal_int16 is7074SocketShutDown(kal_uint8 sap, kal_uint8 shutdown);
+kal_int16 is7074SocketSetLinger(kal_uint8 sap, kal_bool lingerOnoff, kal_uint32 lingerTime);
+
+/* Mobile IP */
+void is7074MipRrpRsp( kal_uint8 MipState, kal_bool deRegPassed );
+void is7074MipAgentAdvRsp( void );
+kal_bool is7074MipRrq(kal_uint32 srcIp, kal_uint32 dstIp, kal_uint16 srcPort, kal_uint16 dstPort, kal_uint16 len, kal_uint8* data);
+void is7074MipAgentSol(kal_uint32 srcIp, kal_uint32 dstIp, kal_uint16 len, kal_uint8* data );
+void is7074MipIpAddr(kal_uint32 LocalIp, kal_uint32 RemoteIp);
+void is7074MipIpInitAddr(kal_uint32 LocalIp, kal_uint32 RemoteIp);
+void is7074MipUmPppStatus( kal_uint8 status,kal_uint32 local_ip, kal_uint32 remote_ip );
+void is7074Md5(kal_uint8 *data, kal_uint16 dataLen, kal_uint8 *key, kal_uint16 keyLen, kal_uint8 *digest);
+void is7074Md5MIPCHAP(kal_uint8 *data, kal_uint16 dataLen, kal_uint8 *key, kal_uint16 keyLen, kal_uint8 *chal, kal_uint16 chalLen, kal_uint8 *digest);
+void is7074Md5SIPCHAP(kal_uint8 *id, kal_uint16 idLen, kal_uint8 *key, kal_uint16 keyLen, kal_uint8 *chal, kal_uint16 chalLen, kal_uint8 *digest);
+void is7074MipDMUVersionSet(kal_uint8 nDMUV);
+kal_uint8 is7074MipDMUVersionGet(void);
+void is7074MipPreferModeSet(kal_uint8 nMipPreferMode);
+kal_uint8 is7074MipPreferModeGet(void);
+void is7074MipConnFail (void);
+kal_bool HlpCheckAgpsData(kal_uint8 *IpData,kal_bool bMip);
+kal_uint8 HlpGetInternetPdnId(void);
+kal_bool is7074AppSendUdpPkt(kal_uint32 srcIp, kal_uint32 dstIp,
+ kal_uint16 srcPort, kal_uint16 dstPort,
+ kal_uint16 len, kal_uint8* data,kal_uint8 UdpSap);
+#ifdef CBP7_EHRPD
+kal_int16 is7074AppSendUdp4PppPkt(kal_uint32 srcIp, kal_uint32 dstIp,
+ kal_uint16 srcPort, kal_uint16 dstPort,
+ kal_uint16 len, kal_uint8* data,kal_uint8 UdpSap, kal_uint8 PdnId);
+#endif
+
+void is707_connect_lcp( kal_uint8 app );
+void is707_set_ppp_addr( kal_uint8 app, kal_uint32 local_ip, kal_uint32 remote_ip );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _7074API_H_ */
diff --git a/mcu/interface/protocol/l2_c2k/common/7074BIOS.H b/mcu/interface/protocol/l2_c2k/common/7074BIOS.H
new file mode 100644
index 0000000..0663f61
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/7074BIOS.H
@@ -0,0 +1,102 @@
+/*************************************************************
+*
+* 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: 7074bios.h
+ * Project: NSPE stack
+ *
+ * Original Author: Steve Pye
+ * Creation Date: July 10, 1998
+ *
+ * Description: Header file containing the TCP/UDP/IP/PPP
+ * Engine BIOS prototypes.
+ * Restrictions:
+ * Dependencies:
+ *
+ ************************************************************************/
+
+#ifndef _7074BIOS_H_
+#define _7074BIOS_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+
+#include "USER_API.H"
+#include "cpbuf.h"
+#include "do_rcpapi.h"
+#include "hlpdef.h"
+
+ /* 'Bottom' of App Int indications */
+void bios7074AppIntTCPConnectStatus( kal_uint8 connect_status,
+ kal_uint32 mobile_ip,
+ kal_uint32 iwf_ip );
+void bios7074AppIntRxInd ( kal_uint8 sap, kal_uint8 *data, kal_uint16 size );
+void bios7074AppIntTxRsp ( kal_uint8 sap, kal_int16 status );
+
+ /* Browser notifications */
+void bios7074BrowserRxDatagramInd( kal_uint8 sap, ReceiveFromRequest *r );
+void bios7074BrowserSendDatagramRsp(kal_uint8 sap, kal_int8 status);
+
+ /* PPP -> RLP commands/indications */
+void bios7074RlpSendData(CpBufferT* dataToSend, kal_uint16 Len, kal_uint16 offset, kal_uint8 RLPFlow, AppSubTypeT SvcStream, socketInfoT *dstSocket);
+
+ /* Top of PPP (and UART) -> 'IP or CLNP' functions for Packet Mode (Rm) */
+void bios7074RmPppConnectStatus( kal_uint8 status );
+
+ /* Top of PPP (and RLP) -> Network Layer functions for Packet Mode (Um) */
+void bios7074UmDormantReconnectReq(void);
+ /*
+ void bios7074UmLcpConnectStatus( kal_uint8 status );
+ void bios7074UmIpcpConnectStatus( kal_uint8 status,
+ kal_uint32 local_ip,
+ kal_uint32 remote_ip );
+ */
+void bios7074UmPppConnectStatus(kal_uint8 status,
+ kal_uint32 local_ip,
+ kal_uint32 remote_ip,
+ kal_uint32 priDNSaddr,
+ kal_uint32 secDNSaddr,
+ kal_bool IsAccessStream);
+void bios7074SocketConnStatus(kal_uint8 sap, kal_int16 status, kal_uint32 srcIP, kal_uint32 destIP, kal_uint16 srcPort, kal_uint16 dstPort);
+
+/* Configuration */
+void bios7074CfgGetUserInfo(kal_uint8 app, char** userName, char** password, kal_uint8 *lenPassword);
+#ifdef MTK_DEV_HLP_PPP_MNRP
+void bios7074CfgSetMNRPRegCounter(kal_uint8 regCounter);
+kal_uint8 bios7074CfgGetMNRPRegCounter(void);
+#endif
+kal_uint16 bios7074ReadTimer(kal_uint16 timer_id);
+
+/* Mobile IP */
+void bios7074MipAgentAdv (kal_uint32 srcIP, kal_uint32 destIP, kal_uint16 len, kal_uint8* data);
+void bios7074MipRrp (kal_uint32 srcIP, kal_uint32 destIP, kal_uint16 srcPort, kal_uint16 dstPort, kal_uint16 len, kal_uint8* data);
+void bios7074MipUmPppStatus( kal_uint8 status, kal_uint32 local_ip, kal_uint32 remote_ip );
+void HlpSendValA12AuthStatus(kal_bool success);
+kal_bool SetConnErrorCode(kal_uint8 PdnIdTmp, DataConnErrCodeT ErrorCodeTmp);
+void ResetConnErrorCode(kal_uint8 PdnIdTmp);
+kal_bool ForceSetConnErrorCode(kal_uint8 PdnIdTmp, DataConnErrCodeT ErrorCode);
+DataConnErrCodeT GetConnErrorCode(kal_uint8 PdnIdTmp);
+kal_bool CheckConnErrorCodeExsitWithPdnId(kal_uint8 PdnIdTmp);
+kal_bool A12FailureFlagGet(void);
+void A12FailureFlagSet(kal_bool flag);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _7074BIOS_H_ */
+
+/**Log information: \main\Trophy\Trophy_wzhou_href22163\1 2013-04-25 03:06:41 GMT wzhou
+** HREF#22163: add A12 auth status message in VAL**/
+/**Log information: \main\Trophy\1 2013-04-25 03:06:22 GMT jzwang
+** href#22163**/
diff --git a/mcu/interface/protocol/l2_c2k/common/7074CUST.H b/mcu/interface/protocol/l2_c2k/common/7074CUST.H
new file mode 100644
index 0000000..33468bd
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/7074CUST.H
@@ -0,0 +1,95 @@
+/*************************************************************
+*
+* 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: 7074cust.h
+ * Project: NSPE stack
+ *
+ * Original Author: Steve Pye
+ * Creation Date: July 13, 1998
+ *
+ * Description:
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ ************************************************************************/
+
+#ifndef _7074CUST_H_
+#define _7074CUST_H_ 1
+
+
+/* this size is the number of bytes in the mbuf pool */
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define IS707_MBUF_POOL_SIZE 30000
+#else
+#define IS707_MBUF_POOL_SIZE 1
+#endif
+
+/* Currently this parameter does not affect the code.
+ The parameter of interest is M_HIGHPERCENT,
+ defined in ip_mbuf.h. */
+#define IS707_MBUF_HPERCENT 50
+
+/* Currently this parameter does not affect the code.
+ The parameter of interest is M_LOWPERCENT,
+ defined in ip_mbuf.h. */
+#define IS707_MBUF_LPERCENT 25
+
+/* this is the buffer that is filled on a bios7074AppIntRxInd call */
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define IS707_APPINT_RX_BUFFERSIZE 1536
+#define IS707_BROSWER_RX_BUFFERSIZE 1600
+#else
+#define IS707_APPINT_RX_BUFFERSIZE 1
+#define IS707_BROSWER_RX_BUFFERSIZE 1
+#endif
+
+/* These are in the IS-707 spec. but we put them here anyway */
+#define IS707_MODEM_CLIENT_PORT 379
+#define IS707_MODEM_SERVER_PORT 380
+
+/* time-to-live value as defined in IS-707.4 */
+#define IS707_IP_TTL_DEFAULT (0xfe)
+
+
+/* For TCP/IP data transfers, this is the number of
+ retransmission attempts before a connection is abandoned.
+ This value is valid only during connection initialization. */
+#define IS707_TCP_INIT_RETRANSMIT_ATTEMPTS 25
+
+/* The maximum size that client can request TCP to send
+ received data across. */
+#define IS_707_TCP_MAX_RECV_SIZE 1500
+/* For TCP/IP data transfers, this is the number of
+ retransmission attempts before a current connection
+ is abandoned. This value is valid only after a
+ connection is established */
+#define IS707_TCP_RETRANSMIT_ATTEMPTS 10
+/* receive buffer size for UDP*/
+
+#define Max_Browser_RxInd_Length 500
+
+#ifdef SYS_OPTION_NTWKRMPKT_RAM_INUSE
+#define USE_NAT 1 /* To use Network Rm Packet */
+#endif
+
+
+#endif /* _7074CUST_H_ */
diff --git a/mcu/interface/protocol/l2_c2k/common/7074STAT.H b/mcu/interface/protocol/l2_c2k/common/7074STAT.H
new file mode 100644
index 0000000..c9988bd
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/7074STAT.H
@@ -0,0 +1,296 @@
+/*************************************************************
+*
+* 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: 7074stat.h
+ * Project: NSPE stack
+ *
+ * Original Author: Steve Pye
+ * Creation Date: July 13, 1998
+ *
+ * Description:
+ * Restrictions:
+ * Dependencies:
+ *
+ ************************************************************************/
+
+#ifndef _7074STAT_H_
+#define _7074STAT_H_ 1
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+
+#include "7074CUST.H"
+#include "PPPAPI.H"
+#include "PP_FRAME.H"
+#include "IP_CUSTM.H"
+#include "USER_API.H"
+#include "hlpapi.h"
+
+/* IS-707 Applications */
+#define IS707_APP_ASYNC_TCP 0
+#define IS707_APP_PACKET_RLP 1
+#define IS707_APP_BROWSER_UDP 2
+#define IS707_APP_PACKET_UART 3
+#define IS707_APP_BROWSER_ON_ASYNC 4
+#define IS707_APP_BROWSER_CKT_TCP 5
+#define IS707_APP_BROWSER_PKT_TCP 6
+#define IS707_APP_PPP_ONLY 7
+#define IS707_APP_ACS_STREAM 8
+#define IS707_APP_MAIN_CONN 9
+#define IS707_APP_NULL 10 /* Adding any new type should be before this */
+#define IS707_NUM_APPS 11
+
+/*add for Trace, keep in the same order as IS707_APP...#defines above*/
+typedef enum
+{
+ NSPE_ASYNC_TCP,
+ NSPE_PACKET_RLP,
+ NSPE_BROWSER_UDP,
+ NSPE_PACKET_UART,
+ NSPE_BROWSER_ON_ASYNC,
+ NSPE_BROWSER_CKT_TCP,
+ NSPE_BROWSER_PKT_TCP,
+ NSPE_PPP_ONLY,
+ NSPE_ACS_STREAM,
+ NSPE_MAIN_CONN,
+ NSPE_NULL,
+ NSPE_APP_MAX_NUM
+} NspeAppsT;
+
+/* IS-707 Task states */
+#define IS707_S_IDLE 0
+#define IS707_S_RLP_CONNECTING 1
+#define IS707_S_NET_CONNECTING 2
+#define IS707_S_TCP_CONNECTING 3
+#define IS707_S_PPP_CONNECTING 4
+#define IS707_S_LCP_CONNECTED 5
+#define IS707_S_PPP_CONNECTED 6
+#define IS707_S_NET_CONNECTED 7
+#define IS707_S_ABORTING 8
+#define IS707_S_CLOSING 9
+#define IS707_S_UM_RENEGOTIATION 10
+#define IS707_S_DEREGISTERING 11
+
+/*add for Trace, keep in the same order as IS707_S...#defines above*/
+typedef enum
+{
+ NSPE_IDLE,
+ NSPE_RLP_CONNECTING ,
+ NSPE_NET_CONNECTING,
+ NSPE_TCP_CONNECTING,
+ NSPE_PPP_CONNECTING,
+ NSPE_LCP_CONNECTED,
+ NSPE_PPP_CONNECTED,
+ NSPE_NET_CONNECTED,
+ NSPE_ABORTING,
+ NSPE_CLOSING,
+ NSPE_UM_RENEGO,
+ NSPE_DEREGISTERING,
+ NSPE_STATE_MAX_NUM
+} NspeStatesT;
+
+/* Mobile IP states */
+#define MIP_NULL_STATE 0
+#define MIP_INIT_STATE 1
+#define MIP_AGENT_DIS_STATE 2
+#define MIP_REGISTRATION_STATE 3
+#define MIP_ACTIVE_STATE 4
+#define MIP_TERMINATE_STATE 5
+
+/*add for Trace, keep in the same order as MIP_..._STATE#defines above*/
+typedef enum
+{
+ MIP_NULL_ST,
+ MIP_INIT_ST ,
+ MIP_AGENT_DIS_ST,
+ MIP_REGISTRATION_ST,
+ MIP_ACTIVE_ST,
+ MIP_TERMINATE_ST,
+ MIP_ST_MAX_NUM
+} MipStatesT;
+
+struct nspeBufferType
+{
+ kal_uint8 pppIpScratch[ PPP_BUFFERSIZE*2 ];
+ kal_uint8 mbufPool[ IS707_MBUF_POOL_SIZE ];
+};
+
+struct scb
+{
+ kal_uint8 SocketRxBuf[ IS707_APPINT_RX_BUFFERSIZE ];
+ kal_bool tcpPassive;
+ kal_bool tcpPeerClosing;
+ kal_bool tcpWereClosing;
+
+ kal_uint8 sap;
+ kal_uint8 ipProtocol;
+ kal_uint16 nDataToRead;
+ kal_bool bCloseWaitDefer;
+
+ /* Application Interface variables */
+ kal_bool appIntRecvReady;
+ kal_bool appIntSendPending;
+ kal_bool bDataPending;
+ SendRequest appIntSendRqst;
+ ReceiveRequest appIntRecvRqst;
+ SendToRequest appIntSendToRqst;
+ ReceiveFromRequest appIntRecvFromRqst;
+ /* variables for pending */
+ kal_bool bTCPOrUDPDataReqPending;
+ kal_bool bSocketConnectReqPending;
+ kal_bool bSocketCloseReqPending;
+ kal_bool bSocketShutdownReqPending;
+ HlpTcpbDataSendReqMsgT PendingTCPDataRqstToSend;
+ HlpUpbSendDataMsgT PendingUDPDataRqstToSend;
+ HlpSocketConnectMsgT PendingSktConnMsg;
+ HlpSocketCloseMsgT PendingSktCloseMsg;
+ HlpSocketShutDownMsgT PendingSktShutDownMsg;
+};
+
+struct nspeGlobalsType
+{
+ /* RLP variables */
+ kal_uint8 rlpApp;
+ kal_uint8 uartApp;
+ kal_uint8 rlpAppAccess;
+ kal_bool rlpFlushPending;
+ kal_bool rlpTransparent;
+
+ /* Packet variables */
+ kal_uint8 packetUdpSap;
+ kal_bool packetBrowserMode;
+
+ /* PPP variables */
+ kal_uint8 *pppRxData;
+ kal_uint16 pppRxDataSize;
+ kal_uint16 pppSendMTU;
+
+ /* PPP variables for RM interface to Uart */
+ kal_uint8 *pppUartRxData;
+ kal_uint16 pppUartRxDataSize;
+
+
+ /* TCP variables */
+ kal_bool tcpPassive;
+ kal_bool tcpPeerClosing;
+ kal_bool tcpWereClosing;
+
+ kal_bool tcpFlowOn;
+ kal_uint8 tcpSap;
+
+ /* Application Interface variables */
+ kal_bool appIntRxReady;
+ kal_bool appIntTxPending;
+ SendRequest appIntTxRqst;
+/* ReceiveRequest appIntRxRqst; */
+
+ /* Browser UDP variables */
+ kal_bool DoubleStackUpperLayerDown;
+ /* variable handle rlpresetInd */
+ kal_bool RlpReset; /* set after rlpReset, */
+ kal_bool RlpOpenRspRcvd; /* set after receive rlpOpenRsp which caused by rlpReset */
+ kal_bool Um_Rm_Connected; /*set after UM and RM interface are both connected */
+ kal_bool Um_DataPending; /* set to KAL_TRUE is there is data pending which is ready to be sent to Rm */
+ kal_bool Rm_DataPending; /* set to KAL_TRUE is there is data pending which is ready to be sent to Um */
+ kal_bool Um_Renegotiating;
+#ifdef TEST
+ /* these variablee can be removed */
+ kal_bool enableIpFlowControlIteMessages;
+ kal_bool enableTcpRxDataIteMessages;
+#endif
+};
+
+struct Pending_Data
+{
+ kal_bool canBeSent;
+ kal_bool dormant_flag; /* Remember the current Mode*/
+ kal_bool Data_Pending; /* Set the flag if we saved any data.*/
+ kal_bool Tx_Pending; /* pending flag cuased by UDP busy */
+ SendToRequest saved; /* save the data */
+};
+
+struct Um_Dormant
+{
+ kal_bool dataPending;
+ kal_bool dormant;
+};
+
+void nspeUmDormantReconnect(void);
+void UmProcessPendingData(void);
+
+struct Interface_Busy
+{
+ kal_bool rx_busy;
+ kal_bool tx_busy;
+};
+
+extern struct Interface_Busy um_rlp;
+extern struct Interface_Busy rm_uart;
+
+extern struct nspeGlobalsType nspe;
+extern struct nspeBufferType nspeBuffers;
+extern struct scb nspeSCB[IP_NTCBS];
+extern kal_uint8 pppAccStrmScratch[PPP_BUFFERSIZE*2];
+
+/* Prototypes */
+void Shut_TCP_Quietly( void );
+void nspeTxReq( void );
+void udpTxReq( void );
+void nspeSetState( kal_uint8 app, kal_uint8 state );
+kal_uint8 nspeGetState( kal_uint8 app );
+void nspeSetRlpAppAccess(kal_uint8 rlpAppAcs);
+kal_uint8 nspeGetRlpAppAccess(void);
+void nspeSetIpAddr( kal_uint8 app, kal_uint32 ip_address );
+kal_uint32 nspeGetIpAddr( kal_uint8 app );
+void nspeSetPppPort( kal_uint8 app, kal_uint16 ppp_port );
+kal_uint16 nspeGetPppPort( kal_uint8 app );
+void nspeSetPppSending( kal_uint8 app, kal_bool sending );
+kal_bool nspeGetPppSending( kal_uint8 app );
+kal_uint32 nspeGetApp( kal_uint16 ppp_port );
+void nspeInit( kal_uint8 app );
+void nspeInitApps(void);
+void nspeCleanPort( kal_uint8 app );
+void nspePassIpDataToPpp( kal_uint8 app );
+void nspePurgeIPDataQueue( kal_uint8 app );
+
+kal_uint8 nspeGetAppByPDNId(kal_uint8 PDNId);
+void nspeSetPdnId( kal_uint8 app, kal_uint8 PdnId );
+kal_uint8 nspeGetPdnId( kal_uint8 app);
+void nspeIpData2Ppp(kal_uint8 app);
+#ifdef WeDoPacketMode
+
+kal_bool nspeGetBufferfromTxQueue( kal_uint8 *buffer, kal_uint16 *size, kal_uint8 app );
+void nspePacketBufferRxd( kal_uint8 app, kal_uint8 *data, kal_uint16 len, kal_uint16 prot );
+void nspePassPacketDataToHost( kal_uint8 app );
+void nspePerformMqueueFlowCtl( void );
+void nspeQueuePacket( kal_uint8 app, kal_uint8 *data, kal_uint16 len, kal_uint16 prot );
+void nspeDequeuePacket( kal_uint8 app, kal_uint8 *data, kal_uint16 *len, kal_uint16 *prot );
+void nspePassIpDataToPacket( void );
+void nspePacketInit( void );
+
+#else
+
+#define nspePacketBufferRxd( a,b,c,d )
+#define nspeQueuePacket( a,b,c,d )
+#define nspeDequeuePacket( a,b,c,d )
+#define nspePassIpDataToPacket()
+
+#endif /* WeDoPacketMode */
+
+/* functions support network layer */
+void umReConnected(void);
+
+struct scb* nspeAllocScb(void);
+struct scb* nspeGetScbBySap(kal_uint8 sap);
+
+
+#endif /* _7074STAT_H_ */
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/HlpQos.h b/mcu/interface/protocol/l2_c2k/common/HlpQos.h
new file mode 100644
index 0000000..7263d60
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/HlpQos.h
@@ -0,0 +1,328 @@
+/*****************************************************************************
+* 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 _HLP_QOS_H_
+#define _HLP_QOS_H_
+/*****************************************************************************
+*
+* FILE NAME : hlpqos.h
+*
+* DESCRIPTION : This file contains function prototypes and other definitions
+* for the QOS
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+* Include Files
+----------------------------------------------------------------------------*/
+#include "do_Qos.h"
+/*----------------------------------------------------------------------------
+Defines And Macros
+----------------------------------------------------------------------------*/
+typedef enum
+{
+ QosFileDirCreateErr,
+ FlowRequestErr,
+ FlowReleaseErr,
+ QosNegoFail,
+ ReservationOpFail,
+ RsvpCommonHdrDecErr,
+ RsvpCheckSumCalErr,
+ RsvpErrSpecNotReceived,
+ Rsvp3GPPObjNotReceived,
+ TFTIpAddrNotMatch,
+ RsvpMsgEncodeErr,
+ RsvpMsgDecodeErr,
+ RsvpDstPortErr,
+ ResvMsgBufFull,
+ RsvpInvalidMsgId,
+ RsvpInvalidTransId,
+ RsvpMsgLengthErr,
+ QoSCheckFail,
+}QOMErrCodeT;
+
+typedef enum
+{
+ TftNull,
+ TftToBeSent,
+ TftSent,
+ TftConfirmed
+}ResvTftStatusT;
+
+typedef enum
+{
+ QOS_INACTIVE,
+ QOS_IDLE,
+ QOS_WFR_CHECK_CONFIRM,
+ QOS_WFR_GRANT,
+ QOS_WFR_TFT_CONFIRM,
+ QOS_WFR_TFT_CONFIRM_NTWK_INIT,
+ QOS_WFR_TFT_REL_CONFIRM,
+ QOS_WFR_TFT_REL_CONFIRM_NTWK_INIT,
+}QoMStateT;
+
+typedef enum
+{
+ QOS_NOT_CHECKED,
+ QOS_CONFIRMED,
+ QOS_CHECKING
+}QoMCheckStateT;
+
+typedef struct
+{
+ QosSubBlobT QosSetInfo;
+/* kal_uint8 MacFlowId;
+ kal_uint8 RlpState;
+ kal_uint8 RlpFlowNum; */
+ kal_bool bReserved;
+}QosTabelT;
+
+typedef struct
+{
+ kal_uint8 Num;
+ kal_uint8 PdnId;
+ kal_uint8 Label[16];
+}QosPdnInfoT;
+
+typedef struct
+{
+ kal_uint8 RlpFlowNum;
+ kal_uint8 cid;
+ ResvTftStatusT Status;
+} ResvInfoT;
+
+typedef struct
+{
+ kal_uint16 len;/* The length of this data*/
+ kal_uint16 offset;/* The starting location for the data */
+ CpBufferT *buffer;/* The buffer which makes up this data. This is a ptr */
+} RsvpDatapktT;
+
+typedef enum
+{
+ PATH_MSG=1,
+ RESV_MSG,
+ PATHERR_MSG,
+ RESVERR_MSG,
+ PATHTEAR_MSG,
+ RESVTEAR_MSG,
+ RESVCONF_MSG
+}RsvpMsgTypeT;
+
+typedef enum
+{
+ TFTIPv4,
+ TFTIPv4Err,
+ TFTIPv6,
+ TFTIPv6Err,
+ HeaderRemoval,
+ HeaderRemovalErr,
+ ChannelTreatment,
+ ChannelTreatmentErr
+}RsvpIETypeT;
+
+
+
+typedef enum
+{
+ IP4SrcAdr_SubnetMask = 16,
+ IP4DstAdr_SubnetMask,
+ IP6SrcAdr_SubnetMask = 32,
+ IP6DstAdr_SubnetMask,
+ Protocol_NextHdr = 48,
+ Single_DstPort = 64,
+ DstPortRange,
+ Single_SrcPort = 80,
+ SrcPortRange,
+ SecurityParmInd = 96,
+ Tos_TrafficClass = 112,
+ Flow_Label = 128,
+ Type2RoutingHdr_PreLen,
+ HomeAdrOpt_PreLen
+}TftPktFilterComponentIdT;
+
+typedef enum
+{
+ ErrReserved,
+ PktFilterAddFailure,
+ PktFilterUnavailable,
+ UnsuccessfulTFTProcessing,
+ ChannelNotAvailable,
+ EvaluationPrecedenceContention,
+ TreatmentNotSupported,
+ PacketFilterReplaceFailure,
+ PersistencyLimitReached,
+ PersistencyNotAllowed,
+ UnauthorizedTFT,
+ MaxNumPktFilters,
+ AddToNonExistTFT,
+ UEUnsuccessfulTftProcess = 0x80,
+ InvalidIPAddress,
+ NotSupportProfileID,
+ InvalidPdnID,
+}TftErrCodeT;
+
+typedef enum
+{
+ QoSCheckSuccessfull,
+ QoSIsNotAuthorized,
+}QoSCheckResultCodeT;
+
+typedef struct
+{
+ kal_uint32 RsvpSnTransId;
+ kal_uint32 RsvpRvTransId;
+ kal_bool bTftCreated;
+ kal_bool bIpV4;
+ kal_uint32 SrcIpAddr[4];
+ kal_uint32 DstIpAddr[4];
+}RsvpInfoT;
+
+typedef struct
+{
+ RsvpDatapktT MsgPkt;
+ kal_uint8 NumOfPktList;
+ RlpFlowDirection Direction[MAX_TFT_NUM]; /*0 Forward, 1 Reverse*/
+ kal_uint8 ResvLabel[MAX_TFT_NUM];
+ kal_uint8 FilterIndex[MAX_TFT_NUM];
+ kal_uint32 TransId;
+ kal_uint8 NumOfSend;
+}RsvpResvMsgT;
+
+typedef struct
+{
+ //ExeTimerT TimerCb;
+ kal_timerid TimerId;
+ kal_bool bActive;
+}RsvpResvTimerT;
+
+typedef struct
+{
+ TftOperationCodeT OpCode;
+ kal_uint8 Num;
+ RlpFlowDirection Direction[MAX_TFT_NUM];
+ kal_uint8 Label[MAX_TFT_NUM];
+ kal_uint8 FilterIndex[MAX_TFT_NUM];
+}ResvTftReqT;
+
+typedef struct
+{
+ kal_uint8 PFType;
+ kal_uint8 length;
+ kal_uint8 PktComponent[200];
+ kal_bool bTreatmentInc;
+ kal_uint8 PFT; /*Packet Filter Treatment*/
+ kal_uint32 Hint; /*RFC3006 hint*/
+}QoMPktContentT;
+
+typedef struct
+{
+ kal_uint8 FlowId;
+ kal_uint8 PrecedenceIndex;/*evaluation precedence index*/
+ QoMPktContentT PktContent;
+}QoMRsvpPktFilterT;
+
+typedef 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_uint16 FlowProfileId[MAX_SUPPORTED_QOS_BLOB_NUM];
+} QosRsvpSubBlobT;
+
+typedef struct
+{
+ kal_uint8 PktFlterNum;
+ kal_uint8 bIPv4;
+ QoMRsvpPktFilterT PktFilter[MAX_TFT_NUM];
+ kal_uint8 FlowNum;
+ QosRsvpSubBlobT QosBlob[MAX_TFT_NUM];
+}EhrpdResvMsgIEDataT;
+
+typedef struct
+{
+ kal_uint8 num;
+ RlpFlowDirection Direction[2];
+ TftOperationCodeT OpCode[2];
+ EhrpdResvMsgIEDataT IEData[2];
+}ResvMsgIEListT;
+
+typedef struct
+{
+ kal_uint8 num;
+ kal_uint8 Direction[MAX_CLIENT_NUM*2];
+ kal_uint8 Label[MAX_CLIENT_NUM*2];
+ kal_uint8 RsvpTimerId;
+}ResvLabelInfoT;
+/****************************************************************************/
+kal_bool QOMSetFwdQoSSubscribProfile(QosSubScriberProfileT* pSubProfile);
+kal_bool QOMSetRevQoSSubscribProfile(QosSubScriberProfileT* pSubProfile);
+void QOMInit(void);
+void QOMSetRlpFlowProfile(void);
+kal_bool QOMActivateQoSFlow(kal_uint8 Label, kal_uint8 Direction);
+kal_bool QOMSendTFT(ResvTftReqT* pReq, kal_uint32 TransId);
+kal_bool QOMGetRevSubscribQoSBlob(kal_uint8 Label,QosSubBlobT* pSubProfile);
+kal_bool QOMGetFwdSubscribQoSBlob(kal_uint8 Label,QosSubBlobT* pSubProfile);
+kal_uint8 QOMEncKKQoSRequest(RlpFlowDirection direction,kal_uint8 Label,kal_uint8* pData,QosSubBlobT* pSubBlob);
+kal_uint8 QOMEncNullKKQoSRequest(RlpFlowDirection direction,kal_uint8 Label,kal_uint8* pData);
+void HlpQoMSetSubscribQoSProfile(kal_bool eHRPD,kal_uint8 FlowNum, kal_uint8 PdnId, HlpQoSFlowInfoT* pFlow, kal_uint8 *pFlowId);
+
+kal_bool HlpQoMIsActive(void);
+void QOMSetUpUDPConnection(void);
+void QOMSetUpUDP6Connection(kal_uint8 PdnId);
+void QOMSetMainConnAddr(kal_bool bIPv4, kal_uint32 *pSrcAddr, kal_uint32 *pDstAddr);
+kal_bool HlpQOMReleaseTft(kal_uint8* pLabel, kal_uint8* pDirection, kal_uint8 Num);
+kal_bool HlpQOMFlowRelease(kal_uint8* pLabel, kal_uint8* pDirection, kal_uint8 Num);
+kal_bool HlpQoMFlowRenego(kal_uint8 Num, kal_uint8 *pLabel, kal_uint8* pDirec);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/IP.H b/mcu/interface/protocol/l2_c2k/common/IP.H
new file mode 100644
index 0000000..4065fb8
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/IP.H
@@ -0,0 +1,226 @@
+/*************************************************************
+*
+* 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: ip.h
+ * Project: TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date: Based on PVCS Rev 1.1 (15 Apr 1998)
+ *
+ * Description: IP Data Structures
+ * Restrictions:
+ * Dependencies:
+ *
+ ************************************************************************/
+
+#ifndef _IP_H_
+#define _IP_H_ 1
+
+#include "IP_TYPE.H"
+
+
+/* IP Protocol Types */
+
+#define IP_ICMP 1 /* IP control message protocol */
+#define IP_ICMPv6 58
+#define IP_TCP 6 /* transmission control protocol */
+#define IP_UDP 17 /* user datagram protocol */
+
+/*
+ * Address families.
+ */
+#define AF_UNSPEC 0 /* unspecified */
+#define AF_INET 2 /* internetwork: UDP, TCP, etc. */
+#define AF_INET6 28 /* IPv6 */
+
+/* Note that ip_len and ip_off are declared to be signed integers rather
+ than unsigned since unsigned comparisons can result during arithmetic
+ operations of unsigned and signed integers. Such comparisons can fail
+ in subtle ways. */
+
+
+/* IP datagram identifier field fragmentation bit flags. Note that these
+ bit masks can be applied only after the field has been converted to
+ HOST-ENDIAN format. */
+
+#define IP_DF 0x4000 /* dont fragment bit flag */
+#define IP_MF 0x2000 /* more fragments bit flag */
+
+
+/* IP constant sizes */
+
+#define IP_ADDRSIZE 4 /* IP dotted 4-tuple host address */
+#define IP_HEADERSIZE 20 /* default IP header size */
+#define IP_MAXHDRSIZE 60 /* max header + options size */
+#define IP_MAXDGMSIZE 576 /* default max header+options+data */
+#define IP_MAXPKTSIZE 65535 /* max header+options+data size */
+#define IP_EXTHDRSIZE 12 /* TCP/UDP extended header size */
+#define IP_EXTHDROFF 8 /* offset from start of IP header */
+
+
+/* IP addresses and masks. The masks are applied to IP addresses in
+ NET-endian format, yielding results also in NET-endian format. */
+
+#define IP_ANYADDR 0x00000000
+#define IP_ANYPORT 0x0000
+
+#if HOST_ENDIAN == NET_ENDIAN
+
+#define IP_BROADCAST_ADDR 0xFFFFFFFFUL
+#define IP_OLD_BROADCAST 0x00000000UL
+#define IP_LOOPBACK_ADDR 0x7F000001UL
+#define IP_CLASSA_MASK 0x80000000UL
+#define IP_CLASSB_MASK 0xC0000000UL
+#define IP_CLASSC_MASK 0xE0000000UL
+#define IP_CLASSA_BITS 0x00000000UL
+#define IP_CLASSB_BITS 0x80000000UL
+#define IP_CLASSC_BITS 0xC0000000UL
+#define IP_CLASSA_NET 0xFF000000UL
+#define IP_CLASSB_NET 0xFFFF0000UL
+#define IP_CLASSC_NET 0xFFFFFF00UL
+#define IP_CLASSA_HOST 0x00FFFFFFUL
+#define IP_CLASSB_HOST 0x0000FFFFUL
+#define IP_CLASSC_HOST 0x000000FFUL
+
+#else /* HOST_ENDIAN == LITTLE_ENDIAN */
+
+#define IP_BROADCAST_ADDR 0xFFFFFFFFUL
+#define IP_OLD_BROADCAST 0x00000000UL
+#define IP_LOOPBACK_ADDR 0x0100007FUL
+#define IP_CLASSA_MASK 0x00000080UL
+#define IP_CLASSB_MASK 0x000000C0UL
+#define IP_CLASSC_MASK 0x000000E0UL
+#define IP_CLASSA_BITS 0x00000000UL
+#define IP_CLASSB_BITS 0x00000080UL
+#define IP_CLASSC_BITS 0x000000C0UL
+#define IP_CLASSA_NET 0x000000FFUL
+#define IP_CLASSB_NET 0x0000FFFFUL
+#define IP_CLASSC_NET 0x00FFFFFFUL
+#define IP_CLASSA_HOST 0xFFFFFF00UL
+#define IP_CLASSB_HOST 0xFFFF0000UL
+#define IP_CLASSC_HOST 0xFF000000UL
+#endif
+
+
+/* IP address class macros */
+
+#define IP_CLASSA_ADDR( a ) \
+((((kal_uint32)(a))&IP_CLASSA_MASK)==IP_CLASSA_BITS)
+
+#define IP_CLASSB_ADDR( a ) \
+((((kal_uint32)(a))&IP_CLASSB_MASK)==IP_CLASSB_BITS)
+
+#define IP_CLASSC_ADDR( a ) \
+((((kal_uint32)(a))&IP_CLASSC_MASK)==IP_CLASSC_BITS)
+
+
+/* IP Version Number */
+
+#define IP_VERSION 4
+
+
+/* IP Type-of-Service */
+
+#define IPTOS_LOWDELAY 0x10
+#define IPTOS_THROUGHPUT 0x08
+#define IPTOS_RELIABILITY 0x04
+
+
+/* IP Type-of-Service Precedence Fields (usually unused)*/
+
+#define IPTOS_NETCONTROL 0xE0
+#define IPTOS_INETCONTROL 0xC0
+#define IPTOS_CRITIC_ECP 0xA0
+#define IPTOS_FLASHOVERRIDE 0x80
+#define IPTOS_FLASH 0x60
+#define IPTOS_IMMEDIATE 0x40
+#define IPTOS_PRIORITY 0x20
+#define IPTOS_ROUTINE 0x10
+
+
+/* IP Option Types */
+
+#define IPOPT_EOL 0 /* end of option list */
+#define IPOPT_NOP 1 /* no operation */
+#define IPOPT_RR 7 /* record packet route */
+#define IPOPT_TS 68 /* timestamp */
+#define IPOPT_SECURITY 130 /* provide s,c,h,tcc */
+#define IPOPT_LSRR 131 /* loose source route */
+#define IPOPT_SATID 136 /* satnet id */
+#define IPOPT_SSRR 137 /* strict source route */
+
+
+/* IP Multi-Byte Option Format */
+
+#define IPOPT_HEADERSIZE 3 /* option header size */
+#define IPOPT_TYPE 0 /* option type field offset */
+#define IPOPT_LEN 1 /* option length field offset */
+#define IPOPT_OFF 2 /* option pointer field offset */
+
+#define IPOPT_MINOFF 4 /* pointer field is offset from */
+ /* start of option + 1 */
+
+#define IP_MAXOPTSIZE 40 /* max IP header options */
+#define IPOPT_MAXROUTEHOPS ((IP_MAXOPTSIZE-IPOPT_HEADERSIZE)/IP_ADDRSIZE)
+
+
+/* IP Implementation Parameters */
+
+#define IP_MAXTTL 255 /* maximum time-to-live (seconds) */
+#define IP_FRAGTTL 60 /* time-to-live for fragments */
+
+
+/* IP Source Port Selection Boundaries */
+#define IP_MINSPORT 0x1000
+#define IP_MAXSPORT 0xffff
+
+
+/* IP Checksum Structure */
+
+union ip_checksum
+ {
+ kal_uint32 u;
+ kal_uint16 w[2];
+ };
+
+
+/* IP Header */
+
+struct ip_header
+ {
+ kal_uint8 hlen; /* [7:3] version [3:0] header len */
+ kal_uint8 tos; /* type-of-service */
+ kal_uint16 len; /* total length */
+ kal_uint16 id; /* datagram identifier */
+ kal_uint16 off; /* fragment offset */
+ kal_uint8 ttl; /* time-to-live */
+ kal_uint8 pro; /* higher-level protocol id */
+ kal_uint16 chk; /* header checksum */
+ kal_uint32 src; /* source host address */
+ kal_uint32 dst; /* destination host address */
+ };
+
+
+/* IP source route descriptor */
+
+struct ip_srcroute
+ {
+ kal_uint32 addr;
+ kal_uint32 nhops;
+ kal_uint8 nop;
+ kal_uint8 opt[ IPOPT_HEADERSIZE ];
+ kal_uint32 list[ IPOPT_MAXROUTEHOPS ];
+ };
+
+
+#endif /* _IP_H_ */
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/IP_CUSTM.H b/mcu/interface/protocol/l2_c2k/common/IP_CUSTM.H
new file mode 100644
index 0000000..e7587d4
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/IP_CUSTM.H
@@ -0,0 +1,119 @@
+/*************************************************************
+*
+* 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: ip_custm.h
+ * Project: NSPE stack
+ *
+ * Original Author: Steve Pye
+ * Creation Date: July 13, 1998
+ *
+ * Description: Code-build options
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.3 $
+ *
+ * $Log: IP_CUSTM.H $
+ *
+ * 11 29 2017 sue.zhong
+ * [MOLY00292266] [MT6295] Modification of coexisting for GCCv4 and GCCv6
+ * .
+ * Revision 1.3 2005/03/18 13:49:03 blee
+ * 4.05 Merge
+ * Revision 1.2 2004/03/24 16:41:22 fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.3 2004/02/10 11:31:10 cmastro
+ * merge with 4.0 8.050.0
+ * Revision 1.4 2004/01/21 10:47:58 hhong
+ * Added mechanism to support PPP open only and multi-sockets operations.
+ * Revision 1.3 2003/08/19 18:57:17 hhong
+ * Added mechanism to trigger Um/Rm PPP-reopen in the case of packet zone ID change after re-connection.
+ * Revision 1.2 2002/06/06 11:44:02 hhong
+ * Added VIA Copyright Labels
+ * Revision 1.1 2001/04/26 11:42:17 fpeng
+ * Initial revision
+ * Revision 1.5 2001/02/05 10:55:04 hhong
+ * Change NET_MTU from 1500 to 296 bytes.
+ * Revision 1.4 2000/08/23 17:59:09 hhong
+ * To update to engine release 1.6.0.1
+ * Revision 1.3 2000/03/13 18:39:15 pjiang
+ * changed IP_NLOCALS to 4 from 2
+ *
+ * Revision 1.2 1999/03/29 16:29:11 pjiang
+ * change define IP_NTCBS and IP_NLOCALS to 2 from 1
+ *
+ * Revision 1.1 1998/08/13 22:17:44 sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _IP_CUSTM_H_
+#define _IP_CUSTM_H_ 1
+
+#include "hlpapi.h"
+#define WeDoUDP
+#define WeDoICMP
+#define WeDoStats
+#define WeDoTCP
+/* #define WeDoRAW */
+
+#define PPP_RECONNECT
+
+/* Processor Memory Architecture Types */
+#ifdef __has_include
+#if __has_include("mips/endian.h")
+#include <mips/endian.h>
+#else
+#define BIG_ENDIAN 4321
+#define LITTLE_ENDIAN 1234
+#define NET_ENDIAN BIG_ENDIAN
+#endif
+#else
+#define BIG_ENDIAN 4321
+#define LITTLE_ENDIAN 1234
+#define NET_ENDIAN BIG_ENDIAN
+#endif
+
+/* Host Processor Architecture Type */
+#define HOST_ENDIAN LITTLE_ENDIAN
+
+
+/* IP Default Values */
+#define IP_TOSDFLT 0
+#define IP_TTLDFLT 60
+
+/* Network Maximum Transmission Unit */
+#define IP_NTCBS HLP_MAX_SOCKET /* 10 */ /* number of connections (it was two) */
+#define IP_NLOCALS 4 /* number of local IP addresses */
+#define TCP_NROUTES 4 /* number of route cache entries */
+
+#endif /* _IP_CUSTM_H_ */
+
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/IP_MBUF.H b/mcu/interface/protocol/l2_c2k/common/IP_MBUF.H
new file mode 100644
index 0000000..0b93a4f
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/IP_MBUF.H
@@ -0,0 +1,402 @@
+/*************************************************************
+*
+* 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: ip_mbuf.h
+ * Project: TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date: Based on PVCS Rev 1.1 (15 Apr 1998)
+ *
+ * Description: IP Memory Management Buffer Definitions
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: IP_MBUF.H $
+ *
+ * 01 18 2017 anson.feng
+ * [MOLY00221557] [Gen93] L4 Integration M1 check in
+ * EM head file conflict
+ *
+ * 11 09 2016 sue.zhong
+ * [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
+ * Fix c2k build error
+ * Revision 1.2 2004/03/24 16:41:23 fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.3 2004/02/10 11:31:11 cmastro
+ * merge with 4.0 8.050.0
+ * Revision 1.7 2004/01/21 10:47:59 hhong
+ * Added mechanism to support PPP open only and multi-sockets operations.
+ * Revision 1.6 2003/11/21 20:11:48 hhong
+ * Refdefined M_SIZE to be 300 so that 1500 bytes IP datagrams in most of the case in Network Model can be handled effciciently.
+ * Revision 1.5 2003/06/26 18:43:23 hhong
+ * To seperate rlpTxQueue and uartTxQueue and create two sets of hi/lo water mark threshold to handle them seperately.
+ * Revision 1.4 2003/06/10 10:56:05 hhong
+ * Added mechanism to support bug fixes for Mobile IP and Network Layer Rm Interface.
+ * Revision 1.3 2002/06/06 11:44:04 hhong
+ * Added VIA Copyright Labels
+ * Revision 1.2 2002/03/19 16:10:44 hhong
+ * Added 7074cust.h in the included file list.
+ * Added compiler flag SYS_OPTION_DATA_RAM_INUSE.
+ * Revision 1.1 2001/04/26 11:42:18 fpeng
+ * Initial revision
+ * Revision 1.4 2001/02/05 14:14:59 hhong
+ * To move IP_Control_Flow to be out of the criterion called by lowalert in order top prevent time out.
+ * Revision 1.3 2000/08/28 14:57:51 hhong
+ * Moving up to rev 1.3 by schecking out 1.1 but locking 1.2. It's a
+ * duplicated version of 1.1
+ * Revision 1.1 1999/11/30 23:01:17Z cdma
+ * Initial revision
+ * Revision 1.5 1999/07/01 16:44:21 hhong
+ * Incorporate new protocol engine.
+ * Revision 1.2 1999/01/27 22:39:54 bcassidy
+ * 1. Change LOWDELTA to FAILSENDPERCENT so that the
+ * threshold cannot go negative.
+ *
+ * Revision 1.1 1998/06/10 15:32:21 sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _IP_MBUF_H_
+#define _IP_MBUF_H_ 1
+
+#include "7074CUST.H"
+#include "IP_TYPE.H"
+#include "IP.H"
+#include "TCP.H"
+/* #SHARKER add udp_head.h */
+#include "UDP_HEAD.H"
+/* #include "udp.h" */
+#include "ICMP.H"
+#include "IP_USER.H"
+
+
+/* System constants */
+
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define M_SIZE 300 /* mbuf data buffer size */
+#else
+#define M_SIZE 1 /* mbuf data buffer size */
+#endif
+#define M_FLOWCONTROL 35 /* free mbuf to set off flowcontrol*/
+/* #define M_LOWPERCENT 20 */ /* free mbuf lo-water mark (was 25)*/
+/* #define M_HIGHPERCENT 50 */ /* free mbuf hi-water mark */
+#define M_LOWPERCENT 35 /* 30 */ /* free mbuf lo-water mark (was 25)*/
+#define M_HIGHPERCENT 50 /* free mbuf hi-water mark */
+#define M_LOWALERT 1 /* free mbuf low alert indication */
+#define M_FAILSENDPERCENT 15 /* free mbuf fail send requests */
+
+/* Header flags field bit masks */
+
+#define M_INUSE 0x01 /* mbuf has been allocated */
+#define M_DROP 0x10 /* don't pass to IP layer */
+#define M_BCAST 0x20 /* incoming datagram is broadcast */
+#define M_MCAST 0x40 /* incoming datagram is multicast */
+#define M_IP6 0x02 /* whether it's an ipv6 mbuf */
+#define M_DONTFREE 0x80 /* do not free mbuf chain */
+
+
+/* Standard mbuf header */
+
+#define IP_MBUFHDRSIZE (sizeof( struct mbuf_header ))
+
+/* IP datagram */
+
+struct ip_datagram
+ {
+ struct ip_header ip;
+ union
+ {
+ char opt[ IP_MAXOPTSIZE ];
+ struct tcp_header tcp;
+ struct udp_header udp;
+ struct icmp_header icmp;
+ }data;
+ };
+
+struct mbuf_header
+ {
+ struct mbuf *next;
+ struct mbuf *link;
+ kal_uint16 len;
+ kal_uint16 size;
+ kal_uint16 data;
+ kal_uint16 flags;
+ kal_uint8 ipoff;
+ kal_uint8 tcpoff;
+ kal_uint8 pdnindex;
+ };
+
+
+/* IP data structure mbuf */
+
+struct mbuf
+ {
+ struct mbuf_header mbuf_hdr;
+
+ union
+ {
+ kal_uint8 buff[ M_SIZE ];
+ struct ip_datagram dgm;
+ struct ip_srcroute route;
+ CpBufferT *cpbufp;
+ }data;
+
+ kal_uint32 m_check;
+ };
+
+#define FREE 0x99999999UL /* m_check word for free mbufs */
+#define INUSE 0xAAAAAAAAUL /* m_check word for used mbufs */
+
+/*-
+ * Macros for type conversion:
+ * mtod(m, t) -- Convert mbuf pointer to data pointer of correct type.
+ */
+#define mtod(m, t) (((m)->m_flags & M_CPBUF) ? (t)((kal_uint8 *)((m)->m_cpbufp->dataPtr) + (m)->m_data) : (t)(&(m)->m_mbuf[(m)->m_data]))
+
+#define mtod_off(m, t, off) (((m)->m_flags & M_CPBUF) ? (t)((kal_uint8 *)((m)->m_cpbufp->dataPtr) + off) : (t)(&(m)->m_mbuf[off]))
+/*
+ * Set the m_data pointer of a newly-allocated mbuf (m_get/MGET) to place
+ * an object of the specified size at the end of the mbuf, longword aligned.
+ */
+#define M_ALIGN(m, len) do { \
+ (m)->m_data = (M_SIZE - (len)) & ~(sizeof(int) - 1); \
+} while (0)
+
+/* Standard mbuf header fields */
+
+#define m_next mbuf_hdr.next
+#define m_link mbuf_hdr.link
+#define m_hlen mbuf_hdr.len
+#define m_size mbuf_hdr.size
+#define m_data mbuf_hdr.data
+#define m_flags mbuf_hdr.flags
+#define m_mbuf data.buff
+
+#define m_ipoff mbuf_hdr.ipoff
+#define m_tcpoff mbuf_hdr.tcpoff
+#define m_udpoff mbuf_hdr.tcpoff
+#define m_pdnindex mbuf_hdr.pdnindex
+#define m_cpbufp data.cpbufp
+
+
+/* Singly-linked mbuf queue listhead. The mbufs on a queue are linked by
+ their m_next fields. */
+
+struct mqueue
+ {
+ struct mbuf *m_head; /* when queue is empty m_head is 0 */
+ struct mbuf *m_tail; /* and m_tail points to m_head */
+ kal_bool full_flag; /* this is set when the ip_pktcount reaches highmark */
+ kal_uint8 ip_pktcount; /* number of IP pkts in the mqueue */
+ };
+
+/* Singly-linked mbuf data buffer listhead. The mbufs of a data buffer
+ are linked by their m_link fields. */
+
+struct mbuffer
+ {
+ struct mbuf *m_tail; /* when buffer is empty m_head is */
+ struct mbuf *m_head; /* 0 and m_tail points to m_tail */
+ };
+
+
+/* State vector for mbuf management */
+
+struct mstate
+ {
+ kal_uint8 *m_pooladdr; /* mbuf pool address */
+ kal_uint16 m_poolsize; /* number of bytes in mbuf pool */
+ kal_uint16 m_mbufsize; /* mbuf header+buffer size */
+ kal_uint16 m_datasize; /* mbuf data buffer size */
+ kal_uint16 m_totalcount; /* total mbuf count */
+ kal_uint16 m_freecount; /* free mbuf count */
+ kal_uint16 m_freecounted; /* counted when m_status called */
+ kal_uint16 m_freemin; /* lowest free mbuf count */
+ kal_uint16 m_lowmark; /* number of mbufs at low mark */
+ kal_uint16 m_failsendmark; /* number of mbufs when sends fail */
+ kal_uint16 m_highmark; /* number of mbufs at high mark */
+ kal_bool m_lowalert; /* in alert state if free < low */
+ kal_uint16 m_xoffcount; /* number of xoff notifications */
+ kal_uint16 m_xoncount; /* number of xon notifications */
+ kal_uint16 m_flowcontrolmark; /* lowest of mbuf before flow off */
+ };
+
+
+/* Function prototypes for mbuf management operations */
+
+void m_init( kal_uint8 *buffer, kal_uint16 size );
+void m_status( struct mstate *p );
+void m_free( struct mbuf *m );
+struct mbuf *m_get( void );
+
+
+/* Function prototypes for mbuf chain operations */
+
+void m_freem( struct mbuf *m );
+void m_freed( struct mbuf *m );
+void m_compact( struct mbuf *m );
+void m_join( struct mbuf *m, struct mbuf *n );
+void m_keep( struct mbuf *m, kal_uint16 size );
+kal_uint16 m_freeCount ( void );
+kal_uint16 m_unchain( struct mbuf *m, kal_uint8 *data, kal_uint16 size );
+kal_uint16 m_length ( struct mbuf *m );
+struct mbuf *m_chain( kal_uint8 *data, kal_uint16 size );
+struct mbuf *m_drop( struct mbuf *m, kal_uint16 size );
+struct mbuf *m_split( struct mbuf *m, kal_uint16 size );
+struct mbuf *m_copy( struct mbuf *m, kal_uint16 size );
+struct mbuf *m_ecopy( struct mbuf *m, kal_int16 off0, kal_uint16 size );
+struct mbuf * m_prepend(struct mbuf *m, int len );
+struct mbuf *m_get_cpbuf( CpBufferT *cpbufp);
+
+/* Function prototypes for mbuf queue operations */
+
+void m_initq( struct mqueue *q );
+void m_freeq( struct mqueue *q );
+void m_enq( struct mbuf *m, struct mqueue *q );
+void m_pushq( struct mbuf *m, struct mqueue *q );
+void m_insertq( struct mqueue *q, struct mbuf *n, struct mbuf *p );
+void m_removeq( struct mqueue *q, struct mbuf *n, struct mbuf *p );
+struct mbuf *m_deq( struct mqueue *q );
+
+
+/* Function prototypes for mbuf data buffer operations */
+
+void m_initb( struct mbuffer *q );
+void m_freeb( struct mbuffer *q );
+void m_buffer( struct mbuffer *q, struct mbuf *m );
+struct mbuf *m_unbuffer( struct mbuffer *q, kal_uint16 size );
+
+
+#ifdef M_DEBUG
+/* Function prototypes for mbuf debug operations */
+
+int_16 m_chkq( struct mqueue *q );
+void m_freemx( struct mbuf *m, char *file, int_16 line );
+#endif
+
+
+/* When inserting or removing the mbuf (chain) at the head of a queue
+ identify the previous mbuf as HEADQ( q ). */
+
+#define HEADQ( q ) (struct mbuf *)(q)
+
+
+/* IP Header */
+
+#define ip_dgm data.buff /* char[ M_SIZE ] */
+#define ip_hdr data.dgm.ip /* struct ip_header */
+#define ip_hlen data.dgm.ip.hlen
+#define ip_ver data.dgm.ip.ver
+#define ip_tos data.dgm.ip.tos
+#define ip_len data.dgm.ip.len
+#define ip_id data.dgm.ip.id
+#define ip_off data.dgm.ip.off
+#define ip_ttl data.dgm.ip.ttl
+#define ip_pro data.dgm.ip.pro
+#define ip_chk data.dgm.ip.chk
+#define ip_src data.dgm.ip.src
+#define ip_dst data.dgm.ip.dst
+#define ip_opt data.dgm.data.opt /* char[ IP_MAXOPTSIZE ] */
+#define ip_tcp data.dgm.data.opt
+#define ip_udp data.dgm.data.opt
+
+#define ip_fragq data.dgm.data.opt[0]
+#define ip_mff data.dgm.ip.tos
+
+
+/* TCP Header */
+
+#define tcp_hdr data.dgm.data.tcp
+#define tcp_src data.dgm.data.tcp.src
+#define tcp_dst data.dgm.data.tcp.dst
+#define tcp_seq data.dgm.data.tcp.seq
+#define tcp_ack data.dgm.data.tcp.ack
+#define tcp_hlen data.dgm.data.tcp.hlen
+#define tcp_ctl data.dgm.data.tcp.ctl
+#define tcp_win data.dgm.data.tcp.win
+#define tcp_chk data.dgm.data.tcp.chk
+#define tcp_urg data.dgm.data.tcp.urg
+
+
+/* TCP and UDP Extended Header */
+
+#define tcp_seg data.dgm.ip.ttl /* TCP extended header */
+#define tcp_len data.dgm.ip.chk /* TCP header+data len */
+
+#define ext_zer data.dgm.ip.ttl /* must be zero */
+#define ext_pro data.dgm.ip.pro /* IP_TCP or IP_UDP */
+#define ext_len data.dgm.ip.chk /* TCP/UDP header+data */
+#define ext_saddr data.dgm.ip.src /* IP source address */
+#define ext_daddr data.dgm.ip.dst /* IP destin address */
+
+
+/* UDP Header */
+
+#define udp_hdr data.dgm.data.udp
+#define udp_src data.dgm.data.udp.src
+#define udp_dst data.dgm.data.udp.dst
+#define udp_len data.dgm.data.udp.len
+#define udp_chk data.dgm.data.udp.chk
+
+
+/* ICMP Header and Message */
+
+#define icmp_hdr data.dgm.data.icmp
+#define icmp_type data.dgm.data.icmp.type
+#define icmp_code data.dgm.data.icmp.code
+#define icmp_chk data.dgm.data.icmp.chk
+#define icmp_void data.dgm.data.icmp.data.advice.type.u
+#define icmp_prob data.dgm.data.icmp.data.advice.type.prob
+#define icmp_redir data.dgm.data.icmp.data.advice.type.redirect
+#define icmp_unreach data.dgm.data.icmp.data.advice.type.unreach
+#define icmp_expired data.dgm.data.icmp.data.advice.type.expired
+#define icmp_quench data.dgm.data.icmp.data.advice.type.quench
+#define icmp_echo data.dgm.data.icmp.data.echo
+#define icmp_time data.dgm.data.icmp.data.time
+
+
+/* IP Source Route Fields */
+
+#define sr_addr data.route.addr
+#define sr_nhops data.route.nhops
+#define sr_opt data.route.opt
+#define sr_list data.route.list
+
+
+/* Global References */
+
+extern struct mstate mstate;
+extern struct mstate *pool;
+extern struct mqueue mfreeq;
+
+#endif /* _IP_MBUF_H_ */
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/IP_PROC.H b/mcu/interface/protocol/l2_c2k/common/IP_PROC.H
new file mode 100644
index 0000000..7360090
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/IP_PROC.H
@@ -0,0 +1,109 @@
+/*************************************************************
+*
+* 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: ip_proc.h
+ * Project: TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date: Based on PVCS Rev 1.1 (15 Apr 1998)
+ *
+ * Description: Processor Architecture Dependencies
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: IP_PROC.H $
+ * Revision 1.2 2004/03/24 16:41:24 fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.1 2003/05/12 15:24:07 fpeng
+ * Initial revision
+ * Revision 1.2 2002/06/06 11:44:05 hhong
+ * Added VIA Copyright Labels
+ * Revision 1.1 2001/04/26 11:42:19 fpeng
+ * Initial revision
+ * Revision 1.3 2000/08/28 14:57:53 hhong
+ * Moving up to rev 1.3 by schecking out 1.1 but locking 1.2. It's a
+ * duplicated version of 1.1
+ * Revision 1.1 1999/11/30 23:01:22Z cdma
+ * Initial revision
+ * Revision 1.5 1999/07/01 16:44:25 hhong
+ * Incorporate new protocol engine.
+ * Revision 1.3 1999/01/25 19:02:15 bcassidy
+ * 1. Fix NTOH and HTON macros for little-Endian machines.
+ *
+ * Revision 1.2 1999/01/05 18:37:26 dcc
+ * move HTON macros to function calls to remove compiler warnings
+ *
+ * Revision 1.1 1998/06/10 15:32:21 sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _IP_PROC_H_
+#define _IP_PROC_H_ 1
+
+#include "IP_CUSTM.H"
+
+
+/* HOST-to-NET and NET-to-HOST Endian Conversion Macros */
+
+#if HOST_ENDIAN == NET_ENDIAN
+
+/* In-Place Endian Exchange Conversions */
+
+#define HTON16X(i)
+#define NTOH16X(i)
+#define HTON32X(i)
+#define NTOH32X(i)
+
+/* Assignment Endian Conversions */
+
+#define NTOH16(i) (i)
+#define NTOH32(i) (i)
+#define HTON16(i) (i)
+#define HTON32(i) (i)
+
+#else /* HOST_ENDIAN != NET_ENDIAN */
+
+/* Assignment Endian Conversions */
+kal_uint16 Swap_Endian_16 (kal_uint16 val);
+kal_uint32 Swap_Endian_32 (kal_uint32 val);
+
+#define NTOH16(i) Swap_Endian_16(i)
+#define NTOH32(i) Swap_Endian_32(i)
+#define HTON16(i) Swap_Endian_16(i)
+#define HTON32(i) Swap_Endian_32(i)
+
+#define NTOH16X(i) (i) = Swap_Endian_16(i)
+#define NTOH32X(i) (i) = Swap_Endian_32(i)
+#define HTON16X(i) (i) = Swap_Endian_16(i)
+#define HTON32X(i) (i) = Swap_Endian_32(i)
+
+#endif /* ENDIAN_H */
+
+#endif /* _IP_PROC_H_ */
diff --git a/mcu/interface/protocol/l2_c2k/common/IP_TYPE.H b/mcu/interface/protocol/l2_c2k/common/IP_TYPE.H
new file mode 100644
index 0000000..db77acf
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/IP_TYPE.H
@@ -0,0 +1,87 @@
+/*************************************************************
+*
+* 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: ip_type.h
+ * Project: TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date: Based on PVCS Rev 1.1 (15 Apr 1998)
+ *
+ * Description: IP Portable Type Definitions
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: IP_TYPE.H $
+ * Revision 1.2 2004/03/24 16:41:26 fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.1 2003/05/12 15:24:10 fpeng
+ * Initial revision
+ * Revision 1.2 2002/06/06 11:44:07 hhong
+ * Added VIA Copyright Labels
+ * Revision 1.1 2001/04/26 11:42:20 fpeng
+ * Initial revision
+ * Revision 1.3 2000/08/28 14:57:56 hhong
+ * Moving up to rev 1.3 by schecking out 1.1 but locking 1.2. It's a
+ * duplicated version of 1.1
+ * Revision 1.1 1999/11/30 23:01:32Z cdma
+ * Initial revision
+ * Revision 1.5 1999/07/01 16:44:37 hhong
+ * Incorporate new protocol engine.
+ * Revision 1.2 1998/08/13 21:02:57 sharker
+ * Removed stype include from the header file.
+ *
+ * Revision 1.1 1998/06/10 15:32:21 sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _IP_TYPE_H_
+#define _IP_TYPE_H_ 1
+
+#include "IP_CUSTM.H"
+
+#endif /* _IP_TYPE_H_ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/NSP_OFST.H b/mcu/interface/protocol/l2_c2k/common/NSP_OFST.H
new file mode 100644
index 0000000..942ddde
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/NSP_OFST.H
@@ -0,0 +1,31 @@
+/*************************************************************
+*
+* 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.
+*
+*************************************************************/
+/****************************************************************
+ *
+ * Module: NSP_Ofst.h
+ *
+ * Purpose: Defines module id offsets to add with token value
+ * to create contiguous tokens.
+ *
+ ***************************************************************/
+
+
+const kal_uint16 TokenOffsetsNspe[9] =
+{
+ 0,
+ 14,
+ 27,
+ 48,
+ 51,
+ 55,
+ 58,
+ 62,
+ 62
+};
diff --git a/mcu/interface/protocol/l2_c2k/common/PPPAPI.H b/mcu/interface/protocol/l2_c2k/common/PPPAPI.H
new file mode 100644
index 0000000..09c40b4
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/PPPAPI.H
@@ -0,0 +1,472 @@
+/*************************************************************
+*
+* 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: pppapi.h
+ * Project: PPP
+ *
+ * Original Author: Steve Pye
+ * Creation Date:
+ *
+ * Description: Header File for the PPP Application Programming Interface
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ ************************************************************************/
+
+#ifndef _PPPAPI_H_
+#define _PPPAPI_H_ 1
+
+/* Standard type definitions */
+#include "7074CUST.H"
+#include "IP_PROC.H"
+
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define PPP_NPORTS 4
+#else
+#define PPP_NPORTS 1
+#endif
+
+
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define PPP_DATASIZE 1500
+#else
+#define PPP_DATASIZE 1
+#endif
+
+/* Macros to store a 16-bit integer LS byte first */
+#if ( HOST_ENDIAN == BIG_ENDIAN )
+#define LSBYTE_FIRST(i) (kal_uint16)( (((kal_uint16)(i) << 8) & 0xff00)| \
+ (((kal_uint16)(i) >> 8) & 0x00ff) \
+ )
+
+#define LSBYTE_FIRST_32(i) (kal_uint32)( (((kal_uint32)(i) << 24) & 0xff000000)| \
+ (((kal_uint32)(i) << 8) & 0x00ff0000)| \
+ (((kal_uint32)(i) >> 8) & 0x0000ff00)| \
+ (((kal_uint32)(i) >> 24) & 0x000000ff) \
+ )
+#else /* HOST_ENDIAN = LITTLE_ENDIAN */
+#define LSBYTE_FIRST(i) (kal_uint16)(i)
+#define LSBYTE_FIRST_32(i) (kal_uint32)(i)
+#endif /* HOST_ENDIAN */
+
+/* IE_xxx Status Codes -- others may be already defined elsewhere! */
+/* #define IE_SUCCESS 0 */ /* Let user_api.h define it. */
+
+#define IE_NOMOREPORTS 100
+#define IE_OPENPORTFAIL 101
+#define IE_INVALIDPPPPORT 102
+#define IE_PORTNOTOPEN 103
+#define IE_INVALIDEVENT 104
+#define IE_INVALIDTIMER 105
+#define IE_INVALID_AUTHPROT 106
+
+#define IE_RESTARTTIMER 110
+#define IE_MAXTERMINATE 111
+#define IE_MAXCONFIGURE 112
+#define IE_MAXFAILURE 113
+#define IE_BUFFERSIZE 114
+#define IE_NUMSLOTS 115
+#define IE_AUTHRETRYTIMER 116
+#define IE_AUTHMAXTRIES 117
+
+#define IE_NORXBUFFER 120
+#define IE_RXBUFFERFULL 121
+#define IE_NORXDATA 122
+#define IE_SENDINPROGRESS 123
+
+/* PPP/LCP Protocol Numbers */
+#define PRO_IP 0x0021 /* Internet Protocol */
+#define PRO_IPV6 0x0057 /* Internet Protocol Version 6 */
+#define PRO_TCPIP_VJ 0x002d /* Van Jacobson Compressed TCP/IP */
+#define PRO_TCPIP_UC 0x002f /* Uncompressed TCP/IP */
+
+#define PRO_IPCP 0x8021 /* NCP: IP Control Protocol */
+#define PRO_IPV6CP 0x8057 /* NCP: IPV6 Control Protocol */
+#define PRO_CCP 0x80fd /* Compression Control Protocol */
+
+#define PRO_LCP 0xc021 /* Link Control Protocol */
+#define PRO_PAP 0xc023 /* Password Authentication */
+#define PRO_LQR 0xc025 /* Link Quality Report */
+#define PRO_CHAP 0xc223 /* Challenge Handshake Authentication */
+#ifdef CBP7_EHRPD
+#define PRO_EAP 0xc227 /* Extensible Authentication Protocol */
+#endif
+
+#define PRO_MNRP 0x4003 /* MNRP CDPD registration protocol */
+#define PRO_VSNCP 0x805b /* Vendor-Specific Net Ctrl Protocol */
+#define PRO_VSNP 0x005b /* Vendor-Specific Network Protocol */
+#define PRO_IPV6 0x0057 /* IPv6 over PPP */
+#define PRO_CDP 0x8207 /* Cisco Discovery Protocol Control */
+
+
+/* PPP Configuration Vector */
+typedef struct config
+{
+ /* PPP-LCP Parameters */
+ kal_uint16 restart; /* restart timer */
+ kal_uint16 mconfigs; /* max LCP Configure-REQ */
+ kal_uint16 mterms; /* max LCP Terminate-REQ */
+ kal_uint16 mfails; /* max LCP Configure-NAK */
+ kal_uint16 termRestart; /* termination timer */
+
+ /* PPP-NCP Parameters */
+ kal_uint16 ncpRestart; /* restart timer */
+ kal_uint16 ncpMconfigs; /* max NCP Configure-REQ */
+ kal_uint16 ncpMterms; /* max NCP Terminate-REQ */
+ kal_uint16 ncpMfails; /* max NCP Configure-NAK */
+ kal_uint16 ncpTermRestart; /* termination timer */
+
+ /* LCP Options */
+ kal_uint32 accm; /* Async Control-Character Map */
+ kal_bool UseQual; /* Use Link Quality Reporting? */
+ kal_bool UseMagic; /* Use Magic-Number? */
+ kal_bool UsePcomp; /* Use Protocol Compression? */
+ kal_bool UseAcomp; /* Use Address/Control Compression? */
+
+ /* Authentication Options */
+ char* userName; /* User Name */
+ char* password; /* PAP:password, CHAP:secret */
+ kal_uint8 lenPassword;
+ kal_uint16 authRetryTimer; /* Auth-Rqst/Challenge retry timer */
+ kal_uint16 authMaxTries; /* Auth-Rqst/Challenge max tries */
+
+ /* LQR Options */
+ kal_uint16 LqrPeriod; /* LQR Reporting Period (sec) */
+
+ /* NCP (IPCP) Options */
+ kal_uint32 LocIPAddr; /* IP Address: Local */
+ kal_uint32 RmtIPAddr; /* IP Address: Remote (peer) */
+ kal_uint32 PriDNSAddr; /* IP Address: Primary DNS Server */
+ kal_uint32 SecDNSAddr; /* IP Address: Secondary DNS Server */
+ kal_bool txUseVJC; /* Van Jacobson Compression (peer) */
+ kal_bool rxUseVJC; /* Van Jacobson Compression */
+ kal_uint8 NumSlots; /* Number of Slots */
+ kal_bool UseScomp; /* Use Slot ID Compression? */
+ kal_bool UseDNSPri; /* Use DNS Primary? */
+ kal_bool UseDNSSec; /* Use DNS Secondary? */
+
+ /* Peer's options available to Network App */
+ kal_uint16 PeerMRU; /* The peer's Maximum Receive Unit */
+} CONFIG;
+
+/* Defaults for Configuration Vector */
+#define DEFL_LOCAL_RM_IP 0x0a000001
+#define DEFL_REMOTE_RM_IP 0x0a000070
+
+
+#ifdef CBP7_EHRPD
+#define DFLT_RESTART_EHRPD 2000
+#endif
+
+#define DFLT_RESTART 3000
+#define DFLT_MCONFIGS 10
+#define DFLT_MFAILS 10
+#define DFLT_MTERMS 2
+#define DFLT_TERM_TMO 3000
+#define DFLT_NCP_RESTART 3000
+#define DFLT_NCP_MCONFIGS 10
+#define DFLT_NCP_MFAILS 10
+#define DFLT_NCP_MTERMS 2
+#define DFLT_NCP_TERM_TMO 3000
+#define DFLT_MCONFIGS_SHORT 3
+
+#define DFLT_ACCM 0xffffffffL
+#define DFLT_USELQR KAL_FALSE
+#define DFLT_LQRPERIOD 120
+#ifdef MTK_PLT_ON_PC_UT
+#define DFLT_USEMAGIC KAL_FALSE
+#else
+#define DFLT_USEMAGIC KAL_TRUE /* for India */
+#endif
+#define DFLT_PCOMP KAL_FALSE
+#define DFLT_ACOMP KAL_FALSE
+
+#define DFLT_AUTH_TIMER 3000
+#define DFLT_AUTH_MAXTRIES 5
+
+#define DFLT_IPADDRESS 0x00000000L
+#define DFLT_NUMSLOTS 16
+#define DFLT_COMPSLOTID KAL_FALSE
+#define DFLT_DNSPRI KAL_TRUE
+#define DFLT_DNSSEC KAL_TRUE
+
+/* Maximum values for Configuration Vector */
+#define MAX_RESTART 10000
+#define MAX_MCONFIGS 20
+#define MAX_MTERMS 5
+#define MAX_MFAILS 20
+
+/* Max/Min values for Configuration Vector */
+#define MAX_NUMSLOTS DFLT_NUMSLOTS
+#define MIN_NUMSLOTS 2
+#if (MAX_NUMSLOTS < MIN_NUMSLOTS)
+#error [pppapi.h] MAX_NUMSLOTS < MIN_NUMSLOTS
+#endif
+
+/* Counter structure used for Link Quality Reporting (LQR) */
+typedef struct lqr_counts
+{
+ kal_uint32 LastOutLQRs;
+ kal_uint32 LastOutPackets;
+ kal_uint32 LastOutOctets;
+ kal_uint32 PeerInLQRs;
+ kal_uint32 PeerInPackets;
+ kal_uint32 PeerInDiscards;
+ kal_uint32 PeerInErrors;
+ kal_uint32 PeerInOctets;
+ kal_uint32 PeerOutLQRs;
+ kal_uint32 PeerOutPackets;
+ kal_uint32 PeerOutOctets;
+
+} LQR_COUNTS;
+
+#define NUM_LQR_COUNTS ( sizeof(LQR_COUNTS) / sizeof(kal_uint32) )
+
+/* LQR counters "logically appended" by PPP to a received LQR packet */
+typedef struct lqr_appends
+{
+ kal_uint32 SaveInLQRs;
+ kal_uint32 SaveInPackets;
+ kal_uint32 SaveInDiscards;
+ kal_uint32 SaveInErrors;
+ kal_uint32 SaveInOctets;
+
+} LQR_APPENDS;
+
+#define NUM_LQR_APPENDS ( sizeof(LQR_APPENDS) / sizeof(kal_uint32) )
+
+/* LQR Rx Packet data format (as delivered by PPP) */
+typedef struct lqr_rxdata
+{
+ /* LQR fields received from the peer */
+ LQR_COUNTS counts;
+
+ /* LQR fields "logically appended" by PPP to received LQR data */
+ LQR_APPENDS appends;
+
+} LQR_RXDATA;
+
+/* PPP Connection Communication Statistics */
+typedef struct ppp_stats
+{
+ kal_uint32 packets_sent;
+ kal_uint32 bytes_sent;
+ kal_uint32 packets_rcvd;
+ kal_uint32 bytes_rcvd;
+ kal_uint32 packets_dropped;
+ kal_uint32 overrun_errors;
+ kal_uint32 recvfcs_errors;
+ kal_uint32 lqrpackets_sent;
+
+} PPP_STATS;
+
+/* LCP Statistics */
+typedef struct lcp_stats
+{
+ kal_uint32 illegal_ups;
+ kal_uint32 illegal_downs;
+
+} LCP_STATS;
+
+/* PPP Event types -> NET */
+enum netEvents
+{
+ PPE_ILLEGAL = 0, /* Illegal Event occurred */
+ PPE_LOOPBACK, /* Connection is looped back to itself */
+
+ PPE_CONNECT_LCP, /* Connect -> Can carry traffic */
+ PPE_CONNECT_IPCP, /* Connect -> Can carry IP traffic */
+ PPE_DISCONNECT, /* Disconnect -> Link Dead */
+
+ PPE_RXDATA, /* Datagram Received */
+ PPE_SENDCOMPLETE, /* Datagram Send Completed */
+
+ /* This one must always be last! */
+ netNUMEVENTS
+};
+
+/* PPP Internal Event types -> Link Manager */
+enum pEvents
+{
+ pNONE = 0, /* Switch-Kicker */
+
+ pUP, /* Up */
+ pDOWN, /* Down */
+ pOPEN, /* Open */
+ pCLOSE, /* Close */
+ pTIMEOUT, /* TO+, TO- */
+
+ pSENDDATA, /* Send Data */
+
+ /* COM Layer -> Link Manager */
+ pCOMUP, /* COM Layer Up */
+ pCOMDOWN, /* COM Layer Down */
+ pRXPACKET, /* Received Raw HDLC Packet */
+ pTXDONE, /* Transmit Complete */
+
+ /* LCP -> Link Manager */
+ pTLU, /* This Layer Up */
+ pTLD, /* This Layer Down */
+
+ /* SYS -> AUTH */
+ pREMOTE_AUTH_TMO, /* Peer: PAP Auth-Request retry or
+ * CHAP Response-Retry timeout */
+ pLOCAL_AUTH_TMO, /* Auth: CHAP Challenge retry timeout */
+
+ /* AUTH -> Link Manager */
+ pAUTH_DONE, /* All Authentication complete */
+
+ /* SYS -> MNRP */
+ pMNRP_TMO, /* MNRP timeout of configuration timer */
+ pMNRP_DONE, /* MNRP finished registration */
+
+#ifdef PPP_RECONNECT
+ pREOPEN, /* ppp Re-Open */
+#endif
+
+ pDORMANT_RECONNECT,
+ /* This one must be last! */
+ pNUMEVENTS
+};
+
+/* NET-to-PPP Function Prototypes */
+kal_uint16 PPP_Initialize(void);
+kal_uint16 PPP_Open (kal_uint8 appType, kal_uint8 *buffer, kal_uint16 buflen, kal_uint16 *port, kal_uint16 authProt, kal_bool mnrp);
+kal_uint16 PPP_GetConfig(kal_uint16 port, CONFIG *r);
+kal_uint16 PPP_SetConfig(kal_uint16 port, CONFIG *r);
+kal_uint16 PPP_Connect(kal_uint16 port);
+kal_uint16 PPP_Send(kal_uint16 port, kal_uint16 prot, kal_uint8 *data, kal_uint16 len, kal_uint8 PdnId);
+kal_uint16 PPP_Receive(kal_uint16 port, kal_uint16 *prot, kal_uint8 **data, kal_uint16 *len,
+ kal_bool copy);
+kal_uint16 PPP_Disconnect(kal_uint16 port);
+kal_uint16 PPP_Close(kal_uint16 port);
+kal_uint16 PPP_Init(kal_uint16 port);
+kal_uint16 PPP_GetStatus(kal_uint16 port, PPP_STATS *status);
+
+#ifdef PPP_RECONNECT
+kal_uint16 PPP_ReConnect(kal_uint16 port);
+#endif
+
+/* PPP-to-PPP Function Prototypes */
+void PPP_Timeout(hlp_timer_enum timer_id);
+kal_uint16 PPP_PostEvent(kal_uint16 port, kal_uint8 type);
+void PPP_SetState(kal_uint16 port, kal_uint8 state);
+
+/* PPP-to-NET Function Prototypes */
+void PPP_SendNetEvent(kal_uint16 port, kal_uint8 type);
+
+/* Interface between Browser and Async for supporting Browser_on_Async mode */
+void Browser_Close_Async(kal_bool graceful);
+
+#endif /* _PPPAPI_H_ */
+
diff --git a/mcu/interface/protocol/l2_c2k/common/PPP_OFST.H b/mcu/interface/protocol/l2_c2k/common/PPP_OFST.H
new file mode 100644
index 0000000..28d4a54
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/PPP_OFST.H
@@ -0,0 +1,35 @@
+/*************************************************************
+*
+* 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.
+*
+*************************************************************/
+/****************************************************************
+ *
+ * Module: PPP_Ofst.h
+ *
+ * Purpose: Defines module id offsets to add with token value
+ * to create contiguous tokens.
+ *
+ ***************************************************************/
+
+
+kal_uint16 TokenOffsetsPpp[13] =
+{
+ 0,
+ 0,
+ 101,
+ 135,
+ 166,
+ 174,
+ 182,
+ 195,
+ 214,
+ 217,
+ 220,
+ 230,
+ 240
+};
diff --git a/mcu/interface/protocol/l2_c2k/common/PP_FRAME.H b/mcu/interface/protocol/l2_c2k/common/PP_FRAME.H
new file mode 100644
index 0000000..e61c690
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/PP_FRAME.H
@@ -0,0 +1,129 @@
+/*************************************************************
+*
+* 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: pp_frame.h
+ * Project: PPP
+ *
+ * Original Author: Steve Pye
+ * Creation Date:
+ *
+ * Description: PPP in HDLC Framing
+ * See: RFC 1549
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: PP_FRAME.H $
+ * Revision 1.2 2004/03/24 16:41:40 fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.1 2003/05/12 15:24:18 fpeng
+ * Initial revision
+ * Revision 1.2 2002/06/06 11:44:18 hhong
+ * Added VIA Copyright Labels
+ * Revision 1.1 2001/04/26 11:42:24 fpeng
+ * Initial revision
+ * Revision 1.3 2000/08/28 15:06:46 hhong
+ * Moving up to Rev 1.3 by checking out 1.1.2.1 and locking 1.2.
+ * It's a duplicate version of 1.1.2.1
+ * Revision 1.1.2.1 2000/08/24 00:58:52Z hhong
+ * To update to engine release 1.6.0.1
+ * Revision 1.7 2000/03/24 00:09:13 pjiang
+ * added structure define for Ethernet support
+ *
+ * Revision 1.6 2000/02/25 00:35:14 ddoucett
+ * *** empty log message ***
+ *
+ * Revision 1.5 1998/09/10 20:30:12 sharker
+ * Increased PPP_BUFFERSIZE to handle 32-bit boundary alignment.
+ *
+ * Revision 1.4 1998/08/13 21:02:02 sharker
+ * Removed stype.h include from header file.
+ *
+ * Revision 1.3 1998/07/23 15:58:50 sharker
+ * Changed uchar,ushort, and ulong to kal_uint8, kal_uint16 and kal_uint32.
+ *
+ * Revision 1.2 1998/06/30 15:44:07 sharker
+ * Added #define for inplace tcp/ip header decompression handling.
+ *
+ * Revision 1.1 1998/06/10 15:39:11 sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _PP_FRAME_H_
+#define _PP_FRAME_H_ 1
+
+ /* Standard definitions */
+#include "PPPAPI.H"
+
+/* HDLC Frame Header structure */
+typedef struct ppp_header
+{
+ kal_uint8 flag; /* Flag Field */
+ kal_uint8 addr; /* Address Field */
+ kal_uint8 ctrl; /* Control Field */
+ kal_uint8 prot[2]; /* Protocol Field */
+} PPP_HEADER;
+
+/* HDLC Frame Trailer structure */
+typedef struct ppp_trailer
+{
+ kal_uint8 fcs[2]; /* Frame Check Sequence (FCS) */
+ kal_uint8 flag; /* Flag Field */
+} PPP_TRAILER;
+
+/* HDLC Frame sizes */
+#define PPP_HEADERSIZE 5
+#define PPP_TRAILERSIZE 3
+#define PPP_HEADER_OFFSET 8
+
+
+
+
+/* HDLC Frame constants defined by RFC 1549 */
+#define HDLC_FLAG 0x7e /* HDLC Flag: 01111110 */
+#define HDLC_ALL_ADDR 0xff /* HDLC All-Station Address */
+#define HDLC_UI 0x03 /* HDLC Unnumbered Information */
+#define PP_ESC 0x7d /* Control Escape: 01111101 */
+#define PP_ESC_MASK 0x20 /* XOR Mask for escaped character */
+
+/* PPP Implementation Constants */
+/* the extra space at the beginning of the buffer
+ is for 32-bit address alignments, that may be required */
+#define PPP_BUFFERSIZE (2*PPP_HEADERSIZE+PPP_DATASIZE+PPP_TRAILERSIZE)
+
+/* This offset allows for tcp/ip header decompression in place.
+ The maximum allowable tcp/ip header size is 128 bytes */
+#define TCPIP_INPLACE_COMPRESS_SIZE 128
+
+#endif /* _PP_FRAME_H_ */
+
+
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/TCP.H b/mcu/interface/protocol/l2_c2k/common/TCP.H
new file mode 100644
index 0000000..eafc6e5
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/TCP.H
@@ -0,0 +1,243 @@
+/*************************************************************
+*
+* 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: tcp.h
+ * Project: TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date: Based on PVCS Rev 1.1 (15 Apr 1998)
+ *
+ * Description: TCP Data Structures
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ ************************************************************************/
+
+#ifndef _TCP_H_
+#define _TCP_H_ 1
+
+#include "IP_TYPE.H"
+#include "IP.H"
+
+
+/* TCP Header */
+
+struct tcp_header
+ {
+ kal_uint16 src; /* source port number */
+ kal_uint16 dst; /* destination port number */
+ kal_uint32 seq; /* sequence number */
+ kal_uint32 ack; /* acknowledgement sequence number */
+ kal_uint8 hlen; /* [7:3] header 32-bit word length */
+ kal_uint8 ctl; /* TCP control bit flags */
+ kal_uint16 win; /* offered window */
+ kal_uint16 chk; /* checksum over TCP header+data */
+ kal_uint16 urg; /* offset from seq of last byte of */
+ }; /* urgent data */
+
+
+/* TCP Header Control Field Bit Flags */
+
+#define TCP_FIN 0x01
+#define TCP_SYN 0x02
+#define TCP_RST 0x04
+#define TCP_PSH 0x08
+#define TCP_ACK 0x10
+#define TCP_URG 0x20
+
+
+/* TCP/IP Header */
+
+struct tcpip_header
+ {
+ struct ip_header ip; /* IP header without options */
+ struct tcp_header tcp; /* TCP header without options */
+ };
+
+
+/* TCP Constant Sizes */
+
+#define TCP_HEADERSIZE 20 /* default TCP header size */
+#define TCP_MAXHDRSIZE 40 /* should really be 24 but nops ok */
+#define TCP_MAXSEGSIZE 536 /* IP_MAXDGMSIZE-TCPIP_HEADERSIZE */
+#define TCP_MSSOPTSIZE 4 /* max seg size option length */
+#define TCP_MSS_BACKOFF 80 /* in the case of VSNP type packets */
+
+
+/* TCP Maximum Segment Size Option */
+
+struct tcp_mssopt
+ {
+ kal_uint8 type; /* TCPOPT_MAXSEG */
+ kal_uint8 len; /* TCP_MSSOPTSIZE */
+ kal_uint16 mss; /* maximum segment size */
+ };
+
+#define TCPOPT_TYPE 0 /* option type field offset */
+#define TCPOPT_LEN 1 /* option length field offset */
+#define TCPOPT_MSS 2 /* option mss field offset */
+
+
+/* TCP Option Types */
+
+#define TCPOPT_EOL 0 /* end-of-list option */
+#define TCPOPT_NOP 1 /* no-operation option (padding) */
+#define TCPOPT_MAXSEG 2 /* maximum segment size option */
+
+
+/* TCP Protocol States */
+
+#define TCPS_CLOSED 0 /* closed */
+#define TCPS_LISTEN 1 /* passive: listening for SYN */
+#define TCPS_SYNSENT 2 /* active: have sent SYN */
+#define TCPS_SYNRCVD 3 /* have sent and received SYN */
+#define TCPS_ESTABLISHED 4 /* established */
+#define TCPS_CLOSEWAIT 5 /* rcvd FIN, awaiting user close */
+#define TCPS_FINWAIT1 6 /* user closed, sent FIN */
+#define TCPS_CLOSING 7 /* closed xchd FIN; await FIN ACK */
+#define TCPS_LASTACK 8 /* had FIN and close await FIN ACK */
+#define TCPS_FINWAIT2 9 /* have closed, FIN is acked */
+#define TCPS_TIMEWAIT 10 /* in 2*MSL quiet wait after close */
+
+#define TCP_NSTATES 11
+
+/*set for trace, copy from TCP Protocol States above*/
+enum TraceTcpStates
+{
+ TCP_CLOSED,
+ TCP_LISTEN,
+ TCP_SYNSENT,
+ TCP_SYNRCVD,
+ TCP_ESTABLISHED,
+ TCP_CLOSEWAIT,
+ TCP_FINWAIT1,
+ TCP_CLOSING,
+ TCP_LASTACK,
+ TCP_FINWAIT2,
+ TCP_TIMEWAIT,
+ TCP_STATE_NUM
+};
+
+#define TCP_HAVERCVDSYN(s) ((s) >= TCPS_SYNRCVD)
+#define TCP_HAVERCVDFIN(s) ((s) >= TCPS_TIMEWAIT)
+#define TCP_HAVESENTSYN(s) ((s) >= TCPS_SYNSENT)
+#define TCP_HAVESENTFIN(s) ((s) >= TCPS_FINWAIT1)
+
+
+/* TCP Sequence Number Ordinality Macros. Note that if two sequence numbers
+ differ by more than half the sequence space, then their ordinality is
+ reversed and wraparound is assumed to have occurred. */
+
+#define SEQ_LT(a,b) ( (kal_int32)((a)-(b)) < 0 )
+#define SEQ_LE(a,b) ( (kal_int32)((a)-(b)) <= 0 )
+#define SEQ_GT(a,b) ( (kal_int32)((a)-(b)) > 0 )
+#define SEQ_GE(a,b) ( (kal_int32)((a)-(b)) >= 0 )
+
+
+/* TCP Send and Receive Sequence Number Initialization Macros */
+
+#define TCP_RECVSEQINIT(tp) \
+(tp)->rcv_adv = (tp)->rcv_nxt = (tp)->rcv_irs + 1
+
+#define TCP_SENDSEQINIT(tp) \
+(tp)->snd_una = (tp)->snd_nxt = (tp)->snd_max = (tp)->snd_iss
+
+#define TCP_PUSHURGINIT(tp) \
+(tp)->snd_psh = (tp)->snd_urg = (tp)->snd_una-1
+
+
+/* TCP Set Time Value Within a Defined Range Macro */
+
+#define TCPT_RANGESET( tv, value, tvmin, tvmax ) \
+ { \
+ (tv) = (value); \
+ if( (tv) < (tvmin) ) \
+ (tv) = (tvmin); \
+ else if( (tv) > (tvmax) ) \
+ (tv) = (tvmax); \
+ }
+
+
+/* TCP Initial Sequence Number Assignment Increment. RFC793 suggests that
+ the TCP connection snd_iss should be assigned from a counter that is
+ incremented by 1 every 4 usecs. Then TCP_ISSINCR =
+
+ 1 (incr) 1 (secs) 10^6 (incr)
+ ------------------ x ------------------ = --------------------
+ 4 x 10^(-6) (secs) IP_CLOCKHZ (ticks) 4 x IP_CLOCKHZ (tick)
+
+ For an IP clock tick of 250 msecs (i.e. IP_CLOCKHZ = 4 ticks/sec)
+ TCP_ISSINCR = 1/16 x 10^6 = 62500 incr/tick. */
+
+#define TCP_ISSINCR (62500UL) /* tcp_iss increment on each tick */
+
+
+/* Round-Trip Time and Variance Scaling Factors. The smoothed round-trip
+ time and estimated variance are stored in the tcb as fixed point
+ values scaled-up by the multipliers below. */
+
+#define TCP_RTT_SCALE 8 /* multiplier for SRTT */
+#define TCP_RTT_SHIFT 3 /* log2 of SRTT multiplier */
+#define TCP_RTTVAR_SCALE 4 /* multiplier for RTTVAR */
+#define TCP_RTTVAR_SHIFT 2 /* log2 of RTTVAR multiplier */
+
+#define REAL_RTTUNIT 1000000UL /* route cache rtt values recorded */
+ /* in units of microseconds */
+
+/* TCP Retransmit Timeout Macro */
+
+#define TCP_REXMTVAL(tp) ((((kal_int32)(tp)->t_srtt)>>TCP_RTT_SHIFT)+((kal_int32)(tp)->t_rttvar))
+
+#endif /* _TCP_H_ */
diff --git a/mcu/interface/protocol/l2_c2k/common/TCP_OFST.H b/mcu/interface/protocol/l2_c2k/common/TCP_OFST.H
new file mode 100644
index 0000000..a279622
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/TCP_OFST.H
@@ -0,0 +1,38 @@
+/*************************************************************
+*
+* 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.
+*
+*************************************************************/
+/****************************************************************
+ *
+ * Module: TCP_Ofst.h
+ *
+ * Purpose: Defines module id offsets to add with token value
+ * to create contiguous tokens.
+ *
+ ***************************************************************/
+
+
+kal_uint16 TokenOffsetsTcpip[16] =
+{
+ 0,
+ 6,
+ 6,
+ 6,
+ 6,
+ 6,
+ 6,
+ 6,
+ 6,
+ 6,
+ 6,
+ 9,
+ 12,
+ 12,
+ 13,
+ 14
+};
diff --git a/mcu/interface/protocol/l2_c2k/common/UDP_HEAD.H b/mcu/interface/protocol/l2_c2k/common/UDP_HEAD.H
new file mode 100644
index 0000000..2476f67
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/UDP_HEAD.H
@@ -0,0 +1,100 @@
+/*************************************************************
+*
+* 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: udp_head.h
+ * Project: TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date: Based on PVCS Rev 1.1 (15 Apr 1998)
+ *
+ * Description: User Datagram Protocol Definitions
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: UDP_HEAD.H $
+ *
+ * 07 04 2017 sue.zhong
+ * [MOLY00259241] [6293][C2K]Replace with KAL data type
+ * ::KAL type - hlp
+ * Revision 1.2 2004/03/24 16:41:45 fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.1 2003/05/12 15:24:26 fpeng
+ * Initial revision
+ * Revision 1.2 2002/06/06 11:44:22 hhong
+ * Added VIA Copyright Labels
+ * Revision 1.1 2001/04/26 11:42:31 fpeng
+ * Initial revision
+ * Revision 1.3 2000/08/28 14:58:11 hhong
+ * Moving up to rev 1.3 by schecking out 1.1 but locking 1.2. It's a
+ * duplicated version of 1.1
+ * Revision 1.1 1999/11/30 23:02:44Z cdma
+ * Initial revision
+ * Revision 1.5 1999/07/01 16:45:57 hhong
+ * Incorporate new protocol engine.
+ * Revision 1.1 1998/06/10 15:32:21 sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _UDP_HEAD_H_
+#define _UDP_HEAD_H_ 1
+
+#ifdef WeDoUDP
+/* UDP Header */
+struct udp_header
+{
+ kal_uint16 src; /* UDP source port number */
+ kal_uint16 dst; /* UDP destination port number */
+ kal_uint16 len; /* UDP header + data length */
+ kal_uint16 chk; /* UDP header + data checksum */
+};
+
+
+/* UDP/IP Header */
+struct udpip_header
+{
+ struct ip_header ip; /* IP header without options */
+ struct udp_header udp; /* UDP header without options */
+};
+
+
+/* UDP Constant Sizes */
+#define UDP_HEADERSIZE 8 /* UDP header size */
+#define UDPIP_HEADERSIZE 28 /* IP header + UDP header size */
+
+#endif /* WeDoUDP */
+
+#endif /* _UDP_HEADER_H_ */
+
+
+
+
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/USER_API.H b/mcu/interface/protocol/l2_c2k/common/USER_API.H
new file mode 100644
index 0000000..2d086f5
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/USER_API.H
@@ -0,0 +1,432 @@
+/*************************************************************
+*
+* 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: user_api.h
+ * Project: TCP/IP
+ *
+ * Original Author: Steve Pye
+ * Creation Date: Based on PVCS Rev 1.0 (15 Apr 1998)
+ *
+ * Description: Prototypes/Structure definitions for requests
+ * coming from Higher Level Applications
+ * Restrictions:
+ * Dependencies:
+ *
+ *************************************************************************
+ *
+ * This Software is the property of ISOTEL Research Ltd.
+ * Unauthorized use is prohibited.
+ *
+ * ISOTEL Research Ltd.
+ * Suite 340, 525 - 28th Street S.E.
+ * Calgary, Alberta, Canada T2A 6W9
+ * Tel: (403)275-0041 Fax: (403)274-3598
+ *
+ *
+ *************************************************************************
+ *
+ * RCS Log Information
+ *
+ * $Revision: 1.2 $
+ *
+ * $Log: USER_API.H $
+ *
+ * 07 04 2017 sue.zhong
+ * [MOLY00259241] [6293][C2K]Replace with KAL data type
+ * ::KAL type - hlp
+ *
+ * 04 21 2017 adel.liao
+ * [MOLY00240756] [6293][C2K][HLP]remove unused code.
+ *
+ * remove MTK_DEV_BUG_FIX_HLP.
+ *
+ * 11 09 2016 sue.zhong
+ * [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
+ * Update C2K PS code (1/2)
+ * Revision 1.2 2004/03/24 16:41:45 fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.2 2004/02/10 11:31:27 cmastro
+ * merge with 4.0 8.050.0
+ * Revision 1.4 2004/01/21 10:48:08 hhong
+ * Added mechanism to support PPP open only and multi-sockets operations.
+ * Revision 1.3 2002/06/06 11:44:23 hhong
+ * Added VIA Copyright Labels
+ * Revision 1.2 2002/03/19 16:03:00 hhong
+ * Added 7074cust.h in the included file list.
+ * Added compiler flag SYS_OPTION_DATA_RAM_INUSE to guard against #define WeDoPacketMode.
+ * Revision 1.1 2001/04/26 11:42:31 fpeng
+ * Initial revision
+ * Revision 1.3 2000/08/28 15:06:55 hhong
+ * Moving up to Rev 1.3 by checking out 1.1.2.1 and locking 1.2.
+ * It's a duplicate version of 1.1.2.1
+ * Revision 1.1.4.1 2000/08/24 00:58:20Z hhong
+ * To update to engine release 1.6.0.1
+ * Revision 1.11 2000/03/04 01:28:25 pjiang
+ * remove Interface_Busy define
+ *
+ * Revision 1.10 1999/08/09 22:15:14 pjiang
+ * remove definition of Structure Pending_Data
+ *
+ * Revision 1.9 1999/07/23 21:01:07 pjiang
+ * remove UDP_Send_Rqst and UDP_Recv_Rqst
+ *
+ * Revision 1.8 1999/04/26 18:08:18 pjiang
+ * added TCP_Hiccup_Rqst( kal_uint8 sap )
+ *
+ * Revision 1.7 1999/04/19 22:44:52 bcassidy
+ * 1. Move use_rlp_flag to 7074api2.c
+ *
+ * Revision 1.6 1999/03/16 00:41:42 pjiang
+ * added kal_bool use_rlp_flag
+ *
+ * Revision 1.5 1999/02/09 01:18:06 pjiang
+ * added struct Interface_Busy and Pending_Data and enum _BrowserStatus
+ *
+ * Revision 1.4 1998/10/07 20:32:56 sharker
+ * Changed frame re-transmit number from constant to variable which can be set
+ * via IP_SetOpt_Rqst. New variable is maxrxtshift.
+ *
+ * Revision 1.3 1998/08/10 18:10:32 sharker
+ * Changed kal_uint8 to kal_uint8.
+ *
+ * Revision 1.2 1998/07/31 19:26:33 sharker
+ * Fixed C++ name mangling.
+ *
+ * Revision 1.1 1998/06/10 15:32:21 sharker
+ * Initial revision
+ *
+ *
+ ************************************************************************/
+
+#ifndef _USER_API_H_
+#define _USER_API_H_ 1
+
+#include "IP_CUSTM.H"
+#include "7074CUST.H"
+/* ------------- API #defines ----------------------------------------------*/
+
+#ifdef SYS_OPTION_DATA_RAM_INUSE
+#define WeDoPacketMode 1
+#endif
+/* Return values for the API calls */
+
+#define IE_CLOSEPENDINGWAIT 6 /* TCP close by peers, wait for user */
+#define IE_CLOSEPENDING 5 /* TCP graceful close in progress */
+#define IE_RECVMOREDATA 4 /* more UDP or raw IP data */
+#define IE_NODATA 3 /* no data available for receive */
+#define IE_CONNECTPENDING 2 /* TCP connect attempt in progress */
+#define IE_LISTENPENDING 1 /* listening for remote connect */
+#define IE_SUCCESS 0 /* request successful */
+#define IE_INVALIDRQST -1 /* invalid or unknown request */
+#define IE_INVALIDSAP -2 /* invalid service access point */
+#define IE_INVALIDPORT -4 /* invalid listen or connect port */
+#define IE_INVALIDADDR -5 /* invalid connect host address */
+#define IE_NOMOREMBUFS -6 /* no mbufs available */
+#define IE_NOMORETCBS -7 /* no tcbs available */
+#define IE_NOLOCALADDR -8 /* local host address not set */
+#define IE_INVALIDSIZE -9 /* invalid send or receive size */
+#define IE_INVALIDDATA -10 /* invalid request field */
+#define IE_INVALIDOPT -11 /* option incorrectly specified */
+#define IE_INVALIDFLAGS -12 /* invalid send/sento flags */
+#define IE_INVALIDSTATE -13 /* invalid TCP state */
+#define IE_TCPTIMEOUT -14 /* TCP time out */
+#define IE_TCPRESET -15 /* TCP reset at peers */
+#define IE_TCPABORT -16 /* TCP abort */
+#define IE_TCPDISCNTNORMAL -17 /* TCP disconnect normal */
+#define IE_EINVAL -18 /* Invalid argument */
+#define IE_EADDRNOTAVAIL -19 /* Can't assign requested address */
+#define IE_EISCONN -20 /* Socket is already connected */
+#define IE_EAFNOSUPPORT -21 /* Address family not supported by protocol family */
+#define IE_ETIMEDOUT -22 /* Operation timed out */
+
+
+/* Send and Receive Flags */
+
+#define TCP_URGENT 0x01 /* TCP send/received urgent data */
+#define TCP_PUSH 0x02 /* TCP send data immediately */
+#define IP_MOREDATA 0x04 /* UDP, raw IP datagram incomplete */
+#define HDLC_RECEIVE 0x08 /* Return a complete HDLC packet */
+
+
+/* Set Connection-Specific Option Request Types */
+
+#define OP_TOS 1 /* set IP type-of-service */
+#define OP_TTL 2 /* set IP datagram time-to-live */
+#define OP_FLAGS 3 /* set or clear binary option */
+#define OP_RECVBUF 4 /* set receive buffer size */
+#define OP_MAXSEG 5 /* set maximum data segment size */
+#define OP_MAXRXTSHIFT 6 /* set maximum frame re-transmission */
+#define OP_KEEPALIVE 7
+
+/* Connection-Specific Binary Options */
+
+#define OF_NOSENDDELAY 0x01 /* always send immediately */
+#define OF_SENDIFIDLE 0x02 /* send TCP data if conn is idle */
+
+
+
+/* ------------- Structure Declarations ------------------------------------*/
+struct AppAddress_tag
+{
+ kal_uint32 addr; /* Net-endian IP address */
+ kal_uint16 port; /* Net-endian application port */
+};
+
+typedef struct AppAddress_tag AppAddress;
+
+struct BindRequest_tag
+{
+ struct AppAddress_tag source; /* Local application */
+ struct AppAddress_tag dest; /* Remote application */
+};
+
+typedef struct BindRequest_tag BindRequest;
+
+
+struct ReceiveRequest_tag
+{
+ kal_uint8 *data; /* Pointer to receive buffer */
+ kal_uint16 size; /* Length of application data */
+ kal_uint8 flags; /* TCP_PUSH, TCP_URG, ??? */
+};
+
+typedef struct ReceiveRequest_tag ReceiveRequest;
+
+struct ReceiveFromRequest_tag
+{
+ struct ReceiveRequest_tag r;
+ struct AppAddress_tag from;
+ kal_uint16 to_port;
+};
+
+typedef struct ReceiveFromRequest_tag ReceiveFromRequest;
+
+
+struct SendRequest_tag
+{
+ kal_uint8 *data; /* Pointer to application data */
+ kal_uint16 size; /* Length of application data */
+ kal_uint8 flags; /* TCP_PSH, TCP_URG, ??? */
+};
+
+typedef struct SendRequest_tag SendRequest;
+
+struct SendToRequest_tag
+{
+ struct SendRequest_tag s;
+ struct AppAddress_tag to;
+ kal_uint16 from_port;
+ kal_uint8 sap;
+};
+
+typedef struct SendToRequest_tag SendToRequest;
+
+/* Note that the 'size' field is set on input to the maximum amount of
+ data to receive and updated on output to the actual amount of data
+ returned. */
+
+struct OptionRequest_tag
+{
+ kal_uint8 opt_type; /* Specifies which option is being set */
+ union
+ {
+ kal_uint8 opt_tos; /* Use with opt_type = OP_TOS */
+ kal_uint8 opt_ttl; /* Use with opt_type = OP_TTL */
+ kal_uint8 opt_flags; /* Use with opt_type = OP_FLAGS */
+ kal_uint16 opt_recvbuf; /* Use with opt_type = OP_RECVBUF */
+ kal_uint16 opt_maxseg; /* Use with opt_type = OP_MAXSEG */
+ kal_int16 opt_maxrxtshift; /* Use with opt_type = OP_MAXRXTSHIFT */
+ kal_bool opt_keepalive;
+ } u;
+ };
+
+typedef struct OptionRequest_tag OptionRequest;
+
+
+enum _BrowserStatus
+{
+ BrS_Success,
+ BrS_Busy,
+ BrS_Rejected,
+ BrS_Failed,
+ BrS_NoSvc,
+ BrS_DisconnectNormal,
+ BrS_ConnectionDropped,
+ BrS_Dormant,
+ BrS_Reconnected,
+ NUM_BrSs
+};
+typedef kal_uint8 BrowserStatus;
+
+
+#ifdef WeDoStats
+
+/* IP Statistics */
+
+struct ip_stats
+ {
+ kal_uint16 ips_badver; /* bad datagram version number */
+ kal_uint16 ips_total; /* total packets received */
+ kal_uint16 ips_badsum; /* checksum bad */
+ kal_uint16 ips_tooshort; /* packet too short */
+ kal_uint16 ips_toosmall; /* not enough data */
+ kal_uint16 ips_badhlen; /* ip header length < data size */
+ kal_uint16 ips_badlen; /* ip length < ip header length */
+ kal_uint16 ips_fragments; /* fragments received */
+ kal_uint16 ips_fragdropped; /* frags dropped (dups, no space) */
+ kal_uint16 ips_fragtimeout; /* fragments timed out */
+ kal_uint16 ips_cantforward; /* packets rcvd for unreach dest */
+ kal_uint16 ips_delivered; /* packets consumed here */
+ kal_uint16 ips_reassembled; /* total packets reassembled ok */
+ kal_uint16 ips_fragmented; /* output packets fragmented ok */
+ };
+
+
+/* TCP Statistics */
+
+struct tcp_stats
+ {
+ kal_uint16 tcps_connattempt; /* connections initiated */
+ kal_uint16 tcps_accepts; /* connections accepted */
+ kal_uint16 tcps_connects; /* connections established */
+ kal_uint16 tcps_drops; /* connections dropped */
+ kal_uint16 tcps_conndrops; /* embryonic connections dropped */
+ kal_uint16 tcps_closed; /* conn. closed (includes drops) */
+ kal_uint16 tcps_segstimed; /* segs where we tried to get rtt */
+ kal_uint16 tcps_rttupdated; /* times we succeeded */
+ kal_uint16 tcps_delack; /* delayed acks sent */
+ kal_uint16 tcps_timeoutdrop; /* conn. dropped in rxmt timeout */
+ kal_uint16 tcps_rexmttimeo; /* retransmit timeouts */
+ kal_uint16 tcps_persisttimeo; /* persist timeouts */
+ kal_uint16 tcps_sndtotal; /* total packets sent */
+ kal_uint16 tcps_sndpack; /* data packets sent */
+ kal_uint32 tcps_sndbyte; /* data bytes sent */
+ kal_uint16 tcps_sndrexmitpack; /* data packets retransmitted */
+ kal_uint32 tcps_sndrexmitbyte; /* data bytes retransmitted */
+ kal_uint16 tcps_sndacks; /* ack-only packets sent */
+ kal_uint16 tcps_sndprobe; /* window probes sent */
+ kal_uint16 tcps_sndwinup; /* window update-only packets sent */
+ kal_uint16 tcps_sndctrl; /* SYN|FIN|RST packets sent */
+ kal_uint16 tcps_rcvtotal; /* total packets received */
+ kal_uint16 tcps_rcvpack; /* packets received in sequence */
+ kal_uint32 tcps_rcvbyte; /* bytes received in sequence */
+ kal_uint16 tcps_rcvbadsum; /* packets received with chksum err */
+ kal_uint16 tcps_rcvbadoff; /* packets received with bad offset */
+ kal_uint16 tcps_rcvshort; /* packets received too short */
+ kal_uint16 tcps_rcvduppack; /* duplicate-only packets received */
+ kal_uint16 tcps_rcvdupbyte; /* duplicate-only bytes received */
+ kal_uint16 tcps_rcvpartduppack; /* packets with some duplicate data */
+ kal_uint16 tcps_rcvpartdupbyte; /* dup. bytes in part-dup. packets */
+ kal_uint16 tcps_rcvoopack; /* out-of-order packets received */
+ kal_uint32 tcps_rcvoobyte; /* out-of-order bytes received */
+ kal_uint16 tcps_rcvpackafterwin; /* packets with data after window */
+ kal_uint16 tcps_rcvbyteafterwin; /* bytes rcvd after window */
+ kal_uint16 tcps_rcvwinprobe; /* rcvd window probe packets */
+ kal_uint16 tcps_rcvdupack; /* rcvd duplicate acks */
+ kal_uint16 tcps_rcvacktoomuch; /* rcvd acks for unsent data */
+ kal_uint16 tcps_rcvackpack; /* rcvd ack packets */
+ kal_uint16 tcps_rcvackbyte; /* bytes acked by rcvd acks */
+ kal_uint16 tcps_rcvwinupd; /* rcvd window update packets */
+ };
+
+
+/* UDP Statistics */
+
+struct udp_stats
+ {
+ kal_uint16 udps_ipackets; /* total input packets */
+ kal_uint16 udps_hdrops; /* packet shorter than header */
+ kal_uint16 udps_badsum; /* checksum error */
+ kal_uint16 udps_badlen; /* data length larger than packet */
+ kal_uint16 udps_fullrecvq; /* not delivered receive queue full*/
+ kal_uint16 udps_notcbfound; /* input packets can't find tcb */
+ kal_uint16 udps_opackets; /* total output packets */
+ kal_uint16 udps_nosum; /* no checksum */
+ };
+
+
+/* ICMP Statistics */
+
+struct icmp_stats
+ {
+ kal_uint16 icps_error; /* number of calls to icmp_error */
+ kal_uint16 icps_oldshort; /* no error as old ip too short */
+ kal_uint16 icps_oldicmp; /* no error as old was icmp */
+ kal_uint16 icps_badcode; /* icmp_code out of range */
+ kal_uint16 icps_tooshort; /* packet < ICMP_MINLEN */
+ kal_uint16 icps_checksum; /* bad checksum */
+ kal_uint16 icps_reflect; /* number of responses */
+ kal_uint16 icps_inhist[32]; /* history count by ICMP type */
+ kal_uint16 icps_outhist[32]; /* history count by ICMP type */
+ };
+
+#endif
+
+/* ------------- API Prototypes --------------------------------------------*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+kal_int16 IP_Add_Address( kal_uint32 address );
+kal_int16 IP_Delete_Address( kal_uint32 address );
+kal_int16 IP_SetOpt_Rqst( kal_uint8 sap, OptionRequest *r );
+void IP_Start( kal_uint8 *buffer_pool, kal_uint16 buffer_size );
+void IP_Stop( void );
+void IP_250ms_Timer_Expired(hlp_timer_enum timer_id);
+
+#ifdef WeDoTCP
+
+kal_int16 TCP_Open_Rqst( kal_uint8 *sap );
+kal_int16 TCP_Bind_Rqst( kal_uint8 sap, BindRequest *r );
+kal_int16 TCP_Listen_Rqst( kal_uint8 sap );
+kal_int16 TCP_Connect_Rqst( kal_uint8 sap );
+kal_int16 TCP_Send_Rqst( kal_uint8 sap, SendRequest *r );
+kal_int16 TCP_Recv_Rqst( kal_uint8 sap, ReceiveRequest *r );
+kal_int16 TCP_Close_Rqst( kal_uint8 sap );
+kal_int16 TCP_Abort_Rqst( kal_uint8 sap );
+void TCP_Send_KeepAlive_Probe( kal_uint8 sap );
+#ifdef WeDoStats
+struct tcp_stats *TCP_Stats_Rqst( void );
+#endif /* WeDoStats */
+kal_int16 TCP_Local_Cleanup(kal_uint8 sap);
+#endif /* WeDoTCP */
+
+
+#ifdef WeDoUDP
+
+kal_int16 UDP_Open_Rqst( kal_uint8 *sap );
+kal_int16 UDP_Bind_Rqst( kal_uint8 sap, BindRequest *r );
+kal_int16 UDP_Listen_Rqst( kal_uint8 sap );
+kal_int16 UDP_Connect_Rqst( kal_uint8 sap );
+kal_int16 UDP_SendTo_Rqst( kal_uint8 sap, SendToRequest *r );
+kal_int16 UDP_RecvFrom_Rqst( kal_uint8 sap, ReceiveFromRequest *r );
+kal_int16 UDP_Close_Rqst( kal_uint8 sap );
+kal_int16 UDP_Abort_Rqst( kal_uint8 sap );
+kal_int16 TCP_Hiccup_Rqst( kal_uint8 sap );
+
+#ifdef WeDoStats
+struct udp_stats *UDP_Stats_Rqst( void );
+#endif /* WeDoStats */
+
+#endif /* WeDoUDP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _USER_API_H_ */
+
+
+
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/bitbash.h b/mcu/interface/protocol/l2_c2k/common/bitbash.h
new file mode 100644
index 0000000..5e7bb7d
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/bitbash.h
@@ -0,0 +1,136 @@
+/*****************************************************************************
+* 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) 1999-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+/****************************************************************************
+ *
+ * Module: bitbash.h
+ *
+ * Purpose: Header File for the IS-136 Bitfield Functions.
+ *
+ ****************************************************************************
+ *
+ * PVCS Header Information
+ *
+ * $Workfile$
+ * $Revision: 1.2 $
+ * $Modtime$
+ * $Author: fpeng $
+ *
+ * $Log: bitbash.h $
+ *
+ * 06 29 2017 sue.zhong
+ * [MOLY00259241] [6293][C2K]Replace with KAL data type
+ * ::KAL type - folder inc
+ * Revision 1.2 2004/03/25 12:09:17 fpeng
+ * Updated from 6.0 CP 2.5.0
+ * Revision 1.1 2003/05/12 15:38:28 fpeng
+ * Initial revision
+ * Revision 1.2 2002/06/06 13:10:35 chinh
+ * Changed and Added Copyright
+ * Revision 1.1 2001/01/17 10:58:03 plabarbe
+ * Initial revision
+ * Revision 1.1 2000/10/24 14:11:02 fpeng
+ * Initial revision
+ * Revision 1.2 2000/03/01 18:05:39Z rsattari
+ * Isotel release 2.3 updates.
+ * Revision 1.1 1999/11/30 23:11:42Z cdma
+ * Initial revision
+ * Revision 1.18 1999/08/25 20:02:39 dstecker
+ * Merges from patches
+ * Revision 1.14.1.2.1.4 1999/08/23 21:42:43 dstecker
+ * ISOTEL R2.10
+ * Revision 1.3 1998/03/30 23:26:03 mhayduk
+ * Release 0.03.
+ *
+ * Revision 1.1 1997/11/06 17:49:24 mhayduk
+ * Initial revision
+ *
+ *
+ ****************************************************************************
+ ****************************************************************************/
+
+
+#ifndef _BITBASH_H_
+
+ #define _BITBASH_H_
+
+#include "sysdefs.h"
+
+
+#ifdef SYS_DEBUG_FAULT_FILE_INFO
+#define getByte( Data, StartBit, NumBits )\
+ __getByte( __MODULE__, __LINE__ , Data, StartBit, NumBits )
+#define getWord( Data, StartBit, NumBits)\
+ __getWord( __MODULE__, __LINE__, Data, StartBit, NumBits)
+#define getDword( Data, StartBit, NumBits)\
+ __getDword( __MODULE__, __LINE__, Data, StartBit, NumBits)
+#define putByte( Data, StartBit, NumBits, Value)\
+ __putByte( __MODULE__, __LINE__, Data, StartBit, NumBits, Value)
+#define putWord( Data, StartBit, NumBits, Value)\
+ __putWord( __MODULE__, __LINE__, Data, StartBit, NumBits, Value)
+#define putDword( Data, StartBit, NumBits, Value)\
+ __putDword( __MODULE__, __LINE__, Data, StartBit, NumBits, Value)
+
+ kal_uint8 __getByte( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+ kal_uint16 __getWord( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+ kal_uint32 __getDword( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+
+ void __putByte( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint8 Value );
+ void __putWord( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint16 Value );
+ void __putDword( const char *moduleName, unsigned lineNumber, kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint32 Value );
+
+#else
+ kal_uint8 getByte( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+ kal_uint16 getWord( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+ kal_uint32 getDword( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits );
+
+ void putByte( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint8 Value );
+ void putWord( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint16 Value );
+ void putDword( kal_uint8 *Data, kal_uint16 StartBit, kal_uint8 NumBits, kal_uint32 Value );
+
+#endif
+
+
+#endif /* _BITBASH_H_ */
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/cpbuf.h b/mcu/interface/protocol/l2_c2k/common/cpbuf.h
new file mode 100644
index 0000000..a4b962c
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/cpbuf.h
@@ -0,0 +1,162 @@
+/*****************************************************************************
+* 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 _CPBUF_H_
+#define _CPBUF_H_
+/*****************************************************************************
+*
+* FILE NAME : cpbuf.h
+*
+* DESCRIPTION : CP Buffer Manager
+*
+* HISTORY :
+* See Log at end of file
+*
+*****************************************************************************/
+#include "kal_public_api.h"
+#include "flc2_ent_functions.h"
+#include "monapi.h"
+
+
+#define CPBUF_SIZE_FWD 640 /* bytes */
+#define CPBUF_SIZE_REV 252 /* bytes */
+#define CPBUF_SIZE_SIG 100 /* bytes */
+#define CPBUF_SIZE_HDR 15 /* bytes */
+#define CPBUF_SIZE_FWD1X 48 /* bytes */
+
+#define CPBUF_ONEBUF 0xFFFF
+
+//#define CPBUF_SPIN_LOCK
+#define DEBUG_CPBUF_FILE_INFO
+
+extern kal_spinlockid cpBufSpinLock[5];
+
+
+/*----------------------------------------------------------------------------
+ CP Buf Data Struct
+----------------------------------------------------------------------------*/
+
+/* Allocation Status of each CP Buf memory buffer */
+typedef enum
+{
+ CPBUF_FREE = 0xFE, /* non-zero nor one to avoid unwanted matching of uninitialized data field. */
+ CPBUF_BUSY = 0xB0
+} CpBufStatusT;
+
+
+/* Allocation Type of CP Buf memory buffer */
+typedef enum
+{
+ CPBUF_FWD = 0,
+ CPBUF_REV,
+ CPBUF_SIGNALING_MSG,
+ CPBUF_POOL_NUM,
+ CPBUF_HEADER = CPBUF_POOL_NUM, /* Obsolete pool */
+ CPBUF_FWD1X /* Obsolete pool */
+} CpBufTypeT;
+
+typedef struct cpBuffer
+{
+ kal_uint32* dataPtr; /* Ptr to the CPBUF addr in CPBUF_Pool[] */
+ kal_uint16 len; /* Length of data in bytes. */
+ CpBufStatusT status; /* Free or Busy */
+ CpBufTypeT type; /* partition type. Need this info to Free cpbuf */
+ kal_uint32 refCount; /* reference count of this cp buffer */
+ struct cpBuffer *nextPtr; /* Ptr to the next cpPktHdr in this CP Pkt */
+} CpBufferT;
+
+
+/* cpBufQ - This is a generic CpBufferT type Queue Linked-List */
+typedef struct cpBufQ
+{
+ CpBufferT *head;
+ CpBufferT *tail;
+ kal_uint32 count; /* Total number of CpBufferT in this linked-list */
+} CpBufQT;
+
+
+/*----------------------------------------------------------------------------
+ CP Pkt Functions
+----------------------------------------------------------------------------*/
+#ifndef DEBUG_CPBUF_FILE_INFO
+extern CpBufferT* CpBufGet(kal_uint16 size, CpBufTypeT CpBufType );
+extern void CpBufCopy( CpBufferT *cpPktPtr );
+extern void CpBufFree( CpBufferT *cpPktPtr );
+#else
+extern CpBufferT* __CpBufGet(const char *moduleName, unsigned lineNumber, kal_uint16 size, CpBufTypeT CpBufType );
+extern void __CpBufCopy(const char *moduleName, unsigned lineNumber, CpBufferT *cpPktPtr );
+extern void __CpBufFree(const char *moduleName, unsigned lineNumber, CpBufferT *cpPktPtr );
+
+#define CpBufGet(size, CpBufType) __CpBufGet( __FUNCTION__, __LINE__, size, CpBufType)
+#define CpBufFree( cpPktPtr ) __CpBufFree( __FUNCTION__, __LINE__, cpPktPtr )
+#define CpBufCopy( cpPktPtr ) __CpBufCopy(__FUNCTION__, __LINE__, cpPktPtr )
+
+#endif
+extern kal_bool CpBufFwdFlowCtrlOn(void);
+extern kal_bool CpBufRevFlowCtrlOn(void);
+extern CpBufferT * CpBufMerge (kal_uint16 numCpBuffers,
+ CpBufferT *cpBufList[],
+ kal_uint16 *offsetList,
+ kal_uint16 *lenList,
+ kal_uint16 *mergedLen,
+ CpBufTypeT cpBufType);
+extern void CpBufSpinLocksCreate(void);
+extern CpBufferT * isr_get_cpbuf(kal_uint16 size, CpBufTypeT cpBufType, const char *moduleName, kal_uint16 lineNumber);
+extern void fill_isr_cpbuf_queue(kal_uint16 size, CpBufTypeT cpBufType);
+extern void fill_rcp_ri_cpbuf_queue(void);
+
+#if defined (RCP_RI_HRT_DEV)
+#define RCP_CPBUF_GET(size, cpbufType) isr_get_cpbuf(size, cpbufType, __FUNCTION__, __LINE__)
+#else
+#define RCP_CPBUF_GET(size, cpbufType) CpBufGet(size, cpbufType)
+#endif
+
+
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
diff --git a/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace.h b/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace.h
new file mode 100644
index 0000000..5f83a13
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace.h
@@ -0,0 +1,281 @@
+/*******************************************************************************
+* 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:
+ * ---------
+ * hlp_dhl_trace.h
+ *
+ * Project:
+ * --------
+ * C2K
+ *
+ * Description:
+ * ------------
+ *
+ * Author:
+ * -------
+ *
+ *==============================================================================
+ * HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ ******************************************************************************/
+#ifndef _HLP_DHL_TRACE_H
+#define _HLP_DHL_TRACE_H
+#ifndef GEN_FOR_PC
+#include "stack_config.h"
+#endif
+#include "dhl_trace.h"
+#if !defined(GEN_FOR_PC)
+#if defined(__DHL_MODULE__) || defined(__CUSTOM_RELEASE__)
+#endif
+#endif
+#if !defined(GEN_FOR_PC)
+#include"hlp_dhl_trace_mod_chlp_utmd.h"
+#endif
+#endif /* _HLP_DHL_TRACE_H */
diff --git a/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace_mod_chlp_utmd.json b/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace_mod_chlp_utmd.json
new file mode 100644
index 0000000..76d751c
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlp_dhl_trace_mod_chlp_utmd.json
@@ -0,0 +1,1740 @@
+{
+ "endGen": "-",
+ "legacyParameters": {},
+ "module": "MOD_CHLP",
+ "startGen": "Legacy",
+ "traceClassDefs": [
+ {
+ "TRACE_INFO": {
+ "debugLevel": "High",
+ "tag": [
+ "Baseline",
+ "TRACE_INFO"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_WARNING": {
+ "debugLevel": "Ultra-High",
+ "tag": [
+ "Baseline",
+ "TRACE_WARNING"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_ERROR": {
+ "debugLevel": "Ultra-High",
+ "tag": [
+ "Baseline",
+ "TRACE_ERROR"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_FUNC": {
+ "debugLevel": "Ultra-Low",
+ "tag": [
+ "Baseline",
+ "TRACE_FUNC"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_STATE": {
+ "debugLevel": "Medium",
+ "tag": [
+ "Baseline",
+ "TRACE_STATE"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_GROUP_1": {
+ "debugLevel": "Low",
+ "tag": [
+ "Baseline",
+ "Sensitive"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_GROUP_2": {
+ "debugLevel": "Ultra-Low",
+ "tag": [
+ "Baseline",
+ "Sensitive"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_GROUP_3": {
+ "debugLevel": "Ultra-Low",
+ "tag": [
+ "Baseline",
+ "Sensitive"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_GROUP_4": {
+ "debugLevel": "Ultra-Low",
+ "tag": [
+ "Baseline",
+ "Sensitive"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_GROUP_5": {
+ "debugLevel": "Ultra-Low",
+ "tag": [
+ "Baseline",
+ "Sensitive"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_GROUP_6": {
+ "debugLevel": "Ultra-Low",
+ "tag": [
+ "Baseline",
+ "Sensitive"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_GROUP_7": {
+ "debugLevel": "Ultra-Low",
+ "tag": [
+ "Baseline",
+ "Sensitive"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_GROUP_8": {
+ "debugLevel": "Ultra-Low",
+ "tag": [
+ "Baseline",
+ "Sensitive"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_GROUP_9": {
+ "debugLevel": "Ultra-Low",
+ "tag": [
+ "Baseline",
+ "Sensitive"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_GROUP_10": {
+ "debugLevel": "Ultra-Low",
+ "tag": [
+ "Baseline",
+ "Sensitive"
+ ],
+ "traceType": "Public"
+ }
+ },
+ {
+ "TRACE_SENSITIVE_USIR": {
+ "debugLevel": "High",
+ "tag": [
+ "Baseline",
+ "USIR"
+ ],
+ "traceType": "Public"
+ }
+ }
+ ],
+ "traceDefs": [
+ {
+ "DHL_HLP_CAM_STATE_TRANSITION": {
+ "apiType": "index",
+ "format": "[HLP_CAM_STATE_TRANS]OldSt=%MCamStatesT, Ev=%MCamEventsT, NewSt=%MCamStatesT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_NSPE_STATE_TRANSITION": {
+ "apiType": "index",
+ "format": "[HLP_NSPE_STATE_TRANS]NspeApp=%MNspeAppsT, OldSt=%MNspeStatesT, NewSt=%MNspeStatesT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_IMS_STATE_TRANSITION": {
+ "apiType": "index",
+ "format": "[HLP_IMS_STATE_TRANS]OldSt=%MIMSStateEnumT, NewSt=%MIMSStateEnumT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_EHRPD_STATE_TRANSITION": {
+ "apiType": "index",
+ "format": "[HLP_EHRPD_STATE_TRANS]PdnId=%d, OldSt=%MEHRPDVsncpStateT, NewSt=%MEHRPDVsncpStateT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_MIP_STATE_TRANSITION": {
+ "apiType": "index",
+ "format": "[HLP_MIP_STATE_TRANS]OldSt=%MMipStatesT, NewSt=%MMipStatesT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_MIP_REREG_STATE_TRANSITION": {
+ "apiType": "index",
+ "format": "[HLP_MIP_REREG_STATE_TRANS]OldSt=%MReRegStateT, NewSt=%MReRegStateT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_PPP_FSM_STATE_TRANSITION": {
+ "apiType": "index",
+ "format": "[HLP_PPP_FSM_STATE_TRANS]PppPhase=%MpppFsmPhases, OldSt=%MfsmStates, NewSt=%MfsmStates",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_PPP_PHASE_STATE_TRANSITION": {
+ "apiType": "index",
+ "format": "[HLP_PPP_PHASE_STATE_TRANS]OldSt=%MpppPhases, Ev=%MpEvents, NewSt=%MpppPhases",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_EAP_STATE_TRANSITION": {
+ "apiType": "index",
+ "format": "[HLP_EAP_STATE_TRANS]OldSt=%MEapStateT, NewSt=%MEapStateT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_GENERIC_TRACE": {
+ "apiType": "index",
+ "format": "[HLP_TRACE] (%d): %d, %d, %d, %d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPP_DEBUG": {
+ "apiType": "index",
+ "format": "[HLP_PPP_DEBUG] %s(%d): %d, %d, %d, %d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_ACS_STREAM_INFO": {
+ "apiType": "index",
+ "format": "[HLP_ACS_STREAM] %s(%d): %d, %d, %d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TCP_INPUT_INFO": {
+ "apiType": "index",
+ "format": "[HLP_TCP_INPUT_INFO]%d: %d, %d, %d, %d, %d, %d, %d, %d, %d, %d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TCP_INPUT_CHECK": {
+ "apiType": "index",
+ "format": "[HLP_TCP_INPUT_CHECK] %d: %d, %d, %d, %d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_1XDO_ABORT": {
+ "apiType": "index",
+ "format": "[HLP_1XDO_ABORT] %d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_ERROR_CODE_SET_DISCARD": {
+ "apiType": "index",
+ "format": "[HLP_ERROR_CODE_SET_DISCARD]PdnId=%d, HlpErrCode=%MDataConnErrCodeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_ERROR_CODE_SET": {
+ "apiType": "index",
+ "format": "[HLP_ERROR_CODE_SET]index=%d, PdnId=%d, HlpErrCode=%MDataConnErrCodeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_ERROR_CODE_FORCE_SET": {
+ "apiType": "index",
+ "format": "[HLP_ERROR_CODE_FORCE_SET]index=%d, PdnId=%d, HlpErrCode=%MDataConnErrCodeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_ERROR_CODE_RESET": {
+ "apiType": "index",
+ "format": "[HLP_ERROR_CODE_RESET]index=%d (255 indicates to reset all, otherwise, to reset the corresponding pdn error code)",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPP_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_UM_RM_PPP_STATUS]interface=%MpppEndPointT, Status=%d, localAddr=%x, remoteAddr=%x, priDNS=%x, secDNS=%x",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_THROTT_ENABLE_SET": {
+ "apiType": "index",
+ "format": "[HLP_THROTT_ENABLE_SET]enable=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_THROTT_START": {
+ "apiType": "index",
+ "format": "[HLP_THROTT_START]enable=%Mkal_bool, Sys=%MCamSysTypeT, timer active=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_THROTT_SYS_ID": {
+ "apiType": "index",
+ "format": "[HLP_THROTT_SYS_ID]Sys=%MCamSysTypeT, Id=%d,%d,%d,%d,%d,%d,%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TIMER_START": {
+ "apiType": "index",
+ "format": "[HLP_TIMER_START]Id=%Mhlp_timer_enum, Duration=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TIMER_STOP": {
+ "apiType": "index",
+ "format": "[HLP_TIMER_STOP]TimerID=%Mhlp_timer_enum, InUse=%Mkal_bool, Duration=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TIMER_EXPIRED": {
+ "apiType": "index",
+ "format": "[HLP_TIMER_EXPIRED]TimerID=%Mhlp_timer_enum, Duration=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TIMER_PENDING_SET": {
+ "apiType": "index",
+ "format": "[HLP_TIMER_PENDING_SET]ID=%Mhlp_timer_enum, Pending=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TIMER_PENDING_GET": {
+ "apiType": "index",
+ "format": "[HLP_TIMER_PENDING_GET]ID=%Mhlp_timer_enum, Pending=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_CALL_INSTANCE_INCREASE": {
+ "apiType": "index",
+ "format": "[HLP_CAM_CALL_INSTANCE_INCREASE]CurCallNum=%d, CallType=%MNspeAppT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_CALL_INSTANCE_DECREASE": {
+ "apiType": "index",
+ "format": "[HLP_CAM_CALL_INSTANCE_DECREASE]CurCallNum=%d, CallType=%MNspeAppT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_CALL_INSTANCE_RESET": {
+ "apiType": "index",
+ "format": "[HLP_CAM_CALL_INSTANCE_RESET]TotalCallNum=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_SYSTEM_UPDATE": {
+ "apiType": "index",
+ "format": "[HLP_CAM_SYSTEM_UPDATE]CurSysFound=%MNetworkRspT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_SERVINGNW_UPDATE": {
+ "apiType": "index",
+ "format": "[HLP_CAM_SERVINGNW_UPDATE]CurServingNW=%MNetworkT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_CAM_PPP_CONN_PARAMS": {
+ "apiType": "index",
+ "format": "[HLP_CAM_PPP_CONN_PARAMS]Cid=%d, NetworkPref=%MNetworkPrefT, AppType=%MNspeAppT, MoIpType=%d, InactivityTmr=%d, ReleaseTchwhenFB=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_CONN_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_CAM_CONN_STATUS]ConnStatus=%MConnStateT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_SYSTEM_RETRY": {
+ "apiType": "index",
+ "format": "[HLP_CAM_SYSTEM_RETRY]AppType=%MNspeAppT, DoRetryCount=%d, DoCloseReason=%MHlpConnCloseReasonT, RttRetryCount=%d, RttFailReason=%MCallProcessingEventT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_PSC_CPC_STATE": {
+ "apiType": "index",
+ "format": "[HLP_CAM_PSC_CPC_STATE]CpcState=%MTraceCpcState, PscState=%MTracePscState",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_RETRY_FALLBACK_1X": {
+ "apiType": "index",
+ "format": "[HLP_CAM_RETRY_FALLBACK_1X]DoTo1xFallback_Enabled=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_OOSA": {
+ "apiType": "index",
+ "format": "[HLP_CAM_OOSA]CpState=%MCPState, VoCalRel=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_FWDQ_CLEANUP": {
+ "apiType": "index",
+ "format": "[HLP_CAM_FWDQ_CLEANUP]RdIndex=%d, WtIndex=%d, Bytes=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_DO_TO_1X_ENABLE": {
+ "apiType": "index",
+ "format": "[HLP_CAM_DO_TO_1X_ENABLE]DoTo1xEnable=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_SYSTEM_QUERY_REQ": {
+ "apiType": "index",
+ "format": "[HLP_CAM_SYSTEM_QUERY_REQ]ConnectionCmd=%MConnCmdT, AppType=%MNspeAppT, eHRPDEnable=%d, PendingDormantReconnect=%MPendingRcnT, HlpDormancyTimerExpired=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_PPP_CLOSE_UM_REQ": {
+ "apiType": "index",
+ "format": "[HLP_CAM_PPP_CLOSE_UM_REQ]CurrentAppNum=%d, AppType=%MNspeAppT, NspeStateRlpApp=%d, NspeStateUartApp=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_DO_TO_1X": {
+ "apiType": "index",
+ "format": "[HLP_CAM_DO_TO_1X]%d,%d,%d,%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_WFR_FAST_EXPIRE": {
+ "apiType": "index",
+ "format": "[DHL_HLP_CAM_WFR_FAST_EXPIRE]AppType=%MNspeAppT, cam state=%MCamStatesT, RetryCount=%d, HLP_TIMER_DO_RETRY=%Mkal_bool, ServingNetwork=%MNetworkT, CSSsysRespnse=%MNetworkRspT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_CAM_RSVAS_ABORT_REQ": {
+ "apiType": "index",
+ "format": "[HLP_CAM_RSVAS_ABORT_REQ]CamFsmDesc.state=%MCamStatesT, CpcState=%d, PscState=%d, TriggeredByCs=%Mkal_bool, Timer=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_SET_ROUTE_TYPE": {
+ "apiType": "index",
+ "format": "[HLP_CAM_SET_ROUTE_TYPE] %MHlpPppRouteTypeE",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_SET_RETRY_COUNT": {
+ "apiType": "index",
+ "format": "[HLP_CAM_SET_RETRY_COUNT] %d %d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_PPPHA_STATUS]PpphaPhase=%MPpphaPhaseT, PpphaStatus=%MPpphaStatusT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_DEC_START": {
+ "apiType": "index",
+ "format": "[HLP_PPPHA_DEC_START]PpphaPhase=%MPpphaPhaseT, ItemsToPppha=%d, BytesToPppha=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_DEC_COMPLETE": {
+ "apiType": "index",
+ "format": "[HLP_PPPHA_DEC_COMPLETE]PpphaPhase=%MPpphaPhaseT, Complete=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_QBUF_CTRL": {
+ "apiType": "index",
+ "format": "[HLP_PPPHA_QBUF_CTRL]PpphaPhase=%MPpphaPhaseT, DstSpace=%d, FlowCtrl=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_CLOCK_CTRL": {
+ "apiType": "index",
+ "format": "[HLP_PPPHA_CLOCK_CTRL]ClockCtrl=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_ADDR_INFO": {
+ "apiType": "index",
+ "format": "[HLP_PPPHA_ADDR_INFO]PpphaPhase=%MPpphaPhaseT, DecCrtAddr=%d, DEC0MaxAddr=%d, CurrentCpBufAddr=%d, addrMask=%d, ForceDstBurstLen=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_REG_INFO": {
+ "apiType": "index",
+ "format": "[HLP_PPPHA_REG_INFO]PpphaPhase=%MPpphaPhaseT, LLD_ADR=%d, DST_ADR=%d, TRNSCNT=%d, CNFG=%d, CNTL=%d, RES_ADR=%d, MAX_ADR=%d, CRT_ADR=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_PDN_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_IMS_PDN_STATUS]PdnId=%d, State=%MPdnStatusEnumT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_PDN_SETUP_RSP_0": {
+ "apiType": "index",
+ "format": "[HLP_IMS_PDN_SETUP_RSP_0]Result=%MPdnResultEnumT, PdnId=%d, ErrCode=%MDataConnErrCodeT, HlpMainPdnID=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_PDN_SETUP_RSP_1": {
+ "apiType": "index",
+ "format": "[HLP_IMS_PDN_SETUP_RSP_1]IMSPdnSt=%MPdnStatusEnumT, ReqType=%MIMSEventTypeT, bHandOver=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_EV_SAVE": {
+ "apiType": "index",
+ "format": "[HLP_IMS_EV_SAVE]PdnId=%d, EvType=%MIMSEventTypeT, TotalEv=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_EV_PROC": {
+ "apiType": "index",
+ "format": "[HLP_IMS_EV_PROC]PdnId=%d, EvType=%MIMSEventTypeT, TotalEv=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_EV_CLEAR": {
+ "apiType": "index",
+ "format": "[HLP_IMS_EV_CLEAR]TotalEv=%d, Idx=%d, EvType=%MIMSEventTypeT, Parm1=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_REQ_EV_SET": {
+ "apiType": "index",
+ "format": "[HLP_IMS_REQ_EV_SET]PdnId=%d, EvType=%MIMSEventTypeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_REL_EV_SET": {
+ "apiType": "index",
+ "format": "[HLP_IMS_REL_EV_SET]PdnId=%d, EvType=%MIMSEventTypeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_REL_ENQ": {
+ "apiType": "index",
+ "format": "[HLP_IMS_REL_ENQ]Num=%d, begin=%d, end=%d, srcModId=%Mmodule_type, parm=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_REL_DEQ": {
+ "apiType": "index",
+ "format": "[HLP_IMS_REL_DEQ]Num=%d, begin=%d, end=%d, srcModId=%Mmodule_type, parm=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_UM_PPP_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_IMS_UM_PPP_STATUS]eHRPDEnable=%Mkal_bool, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT, bMainConn=%Mkal_bool, CurPdnId=%d, Result=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_NETWK_REL_REQ": {
+ "apiType": "index",
+ "format": "[HLP_IMS_NETWK_REL_REQ]SrcModule=%Mmodule_type, IMSState=%MIMSStateEnumT, ReleaseType=%MIMSEventTypeT, ReqType=%MIMSEventTypeT, AlmpState=%d, HO21xFlag=%Mkal_bool, eHRPDEnable=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_EHRPD_DISC_REQ": {
+ "apiType": "index",
+ "format": "[HLP_IMS_EHRPD_DISC_REQ]eHRPDEnable=%Mkal_bool, IMSState=%MIMSStateEnumT, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT, bMainConn=%Mkal_bool, PdnId=%d, DiscType=%MDataDiscTypeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_PDN_REL_RSP_0": {
+ "apiType": "index",
+ "format": "[HLP_IMS_PDN_REL_RSP_0]PdnId=%d, IMSState=%MIMSStateEnumT, ReleaseType=%MIMSEventTypeT, bMainConn=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_PDN_REL_RSP_1": {
+ "apiType": "index",
+ "format": "[HLP_IMS_PDN_REL_RSP_1]PdnId=%d, CurPdn ReleaseType=%MIMSEventTypeT, ReqType=%MIMSEventTypeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_SET_ST_TO_IDLE": {
+ "apiType": "index",
+ "format": "[HLP_IMS_SET_ST_TO_IDLE] TotalPdn=%d, Idx=%d, PdnId=%d, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_RESET_EHRPD": {
+ "apiType": "index",
+ "format": "[HLP_IMS_RESET_EHRPD] bMainConn=%Mkal_bool, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT, TotalPdn=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IMS_RELEASE_ALL_PDN": {
+ "apiType": "index",
+ "format": "[HLP_IMS_RELEASE_ALL_PDN] IMSState=%MIMSStateEnumT, TotalPdn=%d, emergency_card=%Mkal_bool",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_IMS_RELEASE_PDN": {
+ "apiType": "index",
+ "format": "[HLP_IMS_RELEASE_PDN] PdnId=%d, IMSPdnSt=%MPdnStatusEnumT, EHRPDPdnSt=%MEHRPDVsncpStateT, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_IMS_PDN_LOCAL_RESET": {
+ "apiType": "index",
+ "format": "[HLP_IMS_PDN_LOCAL_RESET]IMSState=%MIMSStateEnumT, bMainConn=%Mkal_bool, ReqType=%MIMSEventTypeT, ReleaseType=%MIMSEventTypeT",
+ "traceClass": "TRACE_STATE"
+ }
+ },
+ {
+ "DHL_HLP_IMS_AUX_PDN_REL_IND": {
+ "apiType": "index",
+ "format": "[HLP_IMS_AUX_PDN_REL_IND]PdnId=%d, IMSState=%MIMSStateEnumT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_EHRPD_CHECK_REC": {
+ "apiType": "index",
+ "format": "[HLP_EHRPD_CHECK_REC]PrebPdn=%Mkal_bool, PrePdnId=%d, CurPdnId=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_EHRPD_ENABLE": {
+ "apiType": "index",
+ "format": "[HLP_EHRPD_ENABLE]eHRPDenable=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_EHRPD_TERM_BY_NW": {
+ "apiType": "index",
+ "format": "[HLP_EHRPD_TERM_BY_NW]TermByNW=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_SET_HO_EHRPD_ENABLE": {
+ "apiType": "index",
+ "format": "[HLP_SET_HO_EHRPD_ENABLE]bHOEHRPDEnabled=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_EHRPD_RECV_REJ": {
+ "apiType": "index",
+ "format": "[DHL_HLP_EHRPD_RECV_REJ]ErrorCode=%MDataConnErrCodeT state=%MEHRPDVsncpStateT AttachType=%d FieldNum=%d VSNCPReqRetxNum=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_EHRPD_UPLANE_DETECT": {
+ "apiType": "index",
+ "format": "[DHL_HLP_EHRPD_UPLANE_DETECT]%d %d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPP_TCP_DECOMPRESS_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_PPP_TCP_DECOMPRESS_STATUS]DeCompressStatus=%MTraceDeCompressStatusT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPP_SEND_DISCARD": {
+ "apiType": "index",
+ "format": "[HLP_PPP_SEND_DISCARD]PppPort=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPP_RECV_DISCARD": {
+ "apiType": "index",
+ "format": "[HLP_PPP_RECV_DISCARD]PppPort=%d, reason=%MDR_REASONT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPP_RENEGO": {
+ "apiType": "index",
+ "format": "[HLP_PPP_RENEGO]PppRenego=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPP_FWD_PKT": {
+ "apiType": "index",
+ "format": "[HLP_PPP_FWD_PKT]RLPFlowId=%d, RlpPath=%MHlpRlpDataPathT, DataLen=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_PPP_DISC_REQ": {
+ "apiType": "index",
+ "format": "[HLP_PPP_DISC_REQ] AppType=%MNspeAppT, eHRPDEnable=%Mkal_bool, CamSt=%MCamStatesT, _EmergencyCardInit=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IGNORE_EVDO_PAGING": {
+ "apiType": "index",
+ "format": "'[HLP_IGNORE_EVDO_PAGING] ConnectionCmd=%MConnCmdT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_TO_IDLE": {
+ "apiType": "index",
+ "format": "[HLP_CAM_TO_IDLE]AppType=%MNspeAppT, MipFallbcakSip=%Mkal_bool, DataRetryFallBackTo1X=%Mkal_bool, DataRetryTimer=%Mkal_bool, pendingRedialForA12Failure=%Mkal_bool, SbpQuery=%Mkal_bool, MipCheckRrpAdminProhibRetry=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CAM_CONNECTION_OPEN_REQ": {
+ "apiType": "index",
+ "format": "[HLP_CAM_CONNECTION_OPEN_REQ]CSSsysRespnse=%MNetworkRspT, ServingNetwork=%MNetworkT, CamState=%MFSMState, DataRetryFallBackTo1X=%Mkal_bool, DoReconnectwithDRSZero=%Mkal_bool, ToRespReleaseStateToVAL=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_CHAP_METHOD": {
+ "apiType": "index",
+ "format": "[HLP_CHAP_METHOD]NspeApp=%MNspeAppsT, AuthInUim=%Mkal_bool, AuthInMD5=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_EAP_VAR": {
+ "apiType": "index",
+ "format": "[HLP_EAP_VAR]EapBoolVar=%MEapOwnerBoolVarT, value=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_EAP_UIM_FAILURE": {
+ "apiType": "index",
+ "format": "[HLP_EAP_UIM_FAILURE]AuthResult=%MEapAkaAuthResultT, UimRspSw=%#x",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_MODE_SET": {
+ "apiType": "index",
+ "format": "[HLP_MIP_MODE_SET]MipPreferMode=%MIPServiceTypeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_MODE_GET": {
+ "apiType": "index",
+ "format": "[HLP_MIP_MODE_GET]MipPreferMode=%MIPServiceTypeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_RRP_ERR": {
+ "apiType": "index",
+ "format": "[HLP_MIP_RRP_ERR]PriHA=%#x, SecHA=%#x, LastHA=%#x, Retries=%d, MaxRetries=%d, LastErr=%d, CurErr=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_RRP_TO": {
+ "apiType": "index",
+ "format": "[HLP_MIP_RRP_TO]Retries=%d, MaxRetries=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_RRP_LIFETM": {
+ "apiType": "index",
+ "format": "[HLP_MIP_RRP_LIFETM]RrpLifetime=%d, RRA=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_FALLBACK_ACT": {
+ "apiType": "index",
+ "format": "[HLP_MIP_FALLBACK_ACT]MipFallbackSipActive=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_RRA_SET": {
+ "apiType": "index",
+ "format": "[HLP_HLP_MIP_RRA_SET]RRA=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_REG_RETRIES_SET": {
+ "apiType": "index",
+ "format": "[HLP_HLP_MIP_REG_RETRIES_SET]MaxRegRetries=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_REG_TIMER_SET": {
+ "apiType": "index",
+ "format": "[HLP_HLP_MIP_REG_TIMER_SET]RrpTimeOut=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_DEREG_RETRIES_SET": {
+ "apiType": "index",
+ "format": "[HLP_HLP_MIP_DEREG_RETRIES_SET]MaxDeRegRetries=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_NAI_ENABLE_SET": {
+ "apiType": "index",
+ "format": "[HLP_HLP_MIP_NAI_ENABLE_SET]NaiEnabled=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_REREG_ONLYIF_TRAFFIC_SET": {
+ "apiType": "index",
+ "format": "[HLP_HLP_MIP_REREG_ONLYIF_TRAFFIC_SET]ReRegOnlyIfTraffic=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_REV_TUNNELING_SET": {
+ "apiType": "index",
+ "format": "[HLP_HLP_MIP_REV_TUNNELING_SET]RevTunneling=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_MIP_HA_IP_SET": {
+ "apiType": "index",
+ "format": "[HLP_MIP_HA_IP_SET]PriHA=%#x, SecHA=%#x",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DBM_IMSI_GET": {
+ "apiType": "index",
+ "format": "[HLP_DBM_IMSI_GET]mcc=%#x, imsi_11_12=%#x, imsi_s2=%#x, imsi_s1=%#x, bNeedUpdate=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DBM_IMSI_GET_RESULT": {
+ "apiType": "index",
+ "format": "[HLP_DBM_IMSI_GET]bNeedUpdate=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_REV_READ": {
+ "apiType": "index",
+ "format": "[HLP_DATA_REV_READ]RdLen=%d, RestLen=%d, RestItems=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_FWD_WRITE": {
+ "apiType": "index",
+ "format": "[HLP_DATA_FWD_WRITE]WtLen=%d, RestSpace=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_FWD_QUEUE_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_DATA_FWD_QUEUE_STATUS]RdIndex=%d, WtIndex=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_LIST_APPEND": {
+ "apiType": "index",
+ "format": "[HLP_DATA_LIST_APPEND]dir=%MHlpDataDirEnum, pdn_id=%d, new_head=%x, new_tail=%x",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_LIST_REMOVE": {
+ "apiType": "index",
+ "format": "[HLP_DATA_LIST_REMOVE]dir=%MHlpDataDirEnum, in_list=%Mkal_bool, is_not_empty=%Mkal_bool, remove_node=%x, list_head=%x, list_tail=%x",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_LIST_IS_NODE_IN_LIST": {
+ "apiType": "index",
+ "format": "[HLP_DATA_LIST_IS_NODE_IN_LIST]dir=%MHlpDataDirEnum, in_list=%Mkal_bool, node=%x, list_head=%x, list_tail=%x, prev=%x",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_LIST_GET_HEAD_DATA": {
+ "apiType": "index",
+ "format": "[HLP_DATA_LIST_GET_HEAD_DATA]dir=%MHlpDataDirEnum, is_not_empty=%Mkal_bool, data_ptr=%x, data_len=%d, pdn_id=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_PPP_FRAME_INFO": {
+ "apiType": "index",
+ "format": "[HLP_DATA_PPP_FRAME_INFO]dir=%MHlpDataDirEnum, interface=%MpppEndPointT, len=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_DATA_CLEAR_LIST": {
+ "apiType": "index",
+ "format": "[HLP_DATA_CLEAR_LIST]dir=%MHlpDataDirEnum, pdn_id=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_LIST_IS_EMTPY": {
+ "apiType": "index",
+ "format": "[HLP_DATA_LIST_IS_EMTPY]dir=%MHlpDataDirEnum, empty=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_INDEX_UL_1": {
+ "apiType": "index",
+ "format": "[HLP_PPP_REV_DATA_INDEX_1]%s, HlpRevDataEnc1SrcRdIndex=%d, HlpRevDataEnc1SrcWrIndex=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_INDEX_UL_2": {
+ "apiType": "index",
+ "format": "[HLP_PPP_REV_DATA_INDEX_2]%s, HlpRevToRlpRdIndex=%d, HlpRevToRlpWrIndex=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_INDEX_DL": {
+ "apiType": "index",
+ "format": "[HLP_PPP_FWD_DATA_INDEX]%s, HlpFwdDataIndRdIndex=%d, HlpFwdDataIndWrIndex=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_LIST_DL_BUF_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_DATA_LIST_DL_BUF_STATUS]DL data ind on buffering=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_DATA_LIST_DL_FIND": {
+ "apiType": "index",
+ "format": "[HLP_DATA_LIST_DL_FIND]pdn_id=%d, dl_queue_id=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_RM_REV_PATH_SET": {
+ "apiType": "index",
+ "format": "[HLP_RM_REV_PATH_SET]path=%MRevDataPathT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_RM_READ": {
+ "apiType": "index",
+ "format": "[HLP_RM_READ]QType=%MQFwdRevT, QReadIndex=%d, QWriteIndex=%d, QReadingByte=%d, QRestItemNum=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_RM_WRITE": {
+ "apiType": "index",
+ "format": "[HLP_RM_WRITE]QType=%MQFwdRevT, QReadIndex=%d, QWriteIndex=%d, QWritingByte=%d, QFreeSpace=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_RM_RESETQ": {
+ "apiType": "index",
+ "format": "[HLP_RM_RESETQ]QType=%MQFwdRevT, QReadIndex=%d, QWriteIndex=%d, QTotalByte=%d, QRestItemNum=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_RM_SEND": {
+ "apiType": "index",
+ "format": "[HLP_RM_SEND]DclSt=%MDCL_STATUS_T, TotalLen=%d, SentLen=%d, RestLen=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_RM_RECV": {
+ "apiType": "index",
+ "format": "[HLP_RM_RECV]DclSt=%MDCL_STATUS_T, BufLen=%d, RecvLen=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_RM_FLOW_CTRL_STATUS_SET": {
+ "apiType": "index",
+ "format": "[HLP_RM_FLOW_CTRL_STATUS_SET]HlpRmFlowCtrlOn=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_RM_FLOW_CTRL_STATUS_GET": {
+ "apiType": "index",
+ "format": "[HLP_RM_FLOW_CTRL_STATUS_GET]HlpRmFlowCtrlOn=%Mkal_bool",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_CAM_UM_STATE": {
+ "apiType": "index",
+ "format": "[HLP_CAM_WARNING_UM_STATE]RlpAppState=%MNspeStatesT",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_CAM_RM_STATE": {
+ "apiType": "index",
+ "format": "[HLP_CAM_WARNING_RM_STATE]UartAppState=%MNspeStatesT",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_CAM_EVENT": {
+ "apiType": "index",
+ "format": "[HLP_CAM_WARNING_EVENT]FsmEvent=%MCamEventsT",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_TCP_TCB_NULL": {
+ "apiType": "index",
+ "format": "[HLP_TCP_WARNING_TCB_NULL](%s,%d)sap=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_TCP_INVALID_OPT": {
+ "apiType": "index",
+ "format": "[HLP_TCP_WARNING_INVALID_OPT]opt_type=%d, size=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_TCP_INVALID_SCB": {
+ "apiType": "index",
+ "format": "[HLP_TCP_WARNING_INVALID_SCB](%s,%d)sap=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_TCP_MBUF_CHAIN": {
+ "apiType": "index",
+ "format": "[HLP_TCP_WARNING_MBUF_CHAIN]size=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_TCP_MBUF_GET": {
+ "apiType": "index",
+ "format": "[HLP_TCP_WARNING_MBUF_CHAIN]FreeCnt=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_TCP_ERR_LEN": {
+ "apiType": "index",
+ "format": "[HLP_TCP_WARNING_ERR_LEN]%d, %d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_IP4_MTU": {
+ "apiType": "index",
+ "format": "[HLP_IP4_WARNING_MTU]%d, %x",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_REV_DISCARD_DATA_WRONG_SRC_IP_ADDR": {
+ "apiType": "index",
+ "format": "[HLP_REV_DISCARD_DATA_WRONG_SRC_IP_ADDR]mip=%Mkal_bool, SrcIpAddr=%x, MSIPAddr=%x",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_IP6_HOP_LIMIT": {
+ "apiType": "index",
+ "format": "[HLP_IP6_WARNING_HOP_LIMIT]hlim=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_IP6_RA": {
+ "apiType": "index",
+ "format": "[HLP_IP6_WARNING_RA]off=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_MIP_INVALID_STATE": {
+ "apiType": "index",
+ "format": "[HLP_MIP_WARNING_STATE](%s,%d)MipState=%MMipStatesT",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_MIP_ADV_AGENT": {
+ "apiType": "index",
+ "format": "[HLP_MIP_WARNING_ADV_AGENT]TmpAgent=%#x, CurAgent=%#x",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_MIP_ADV": {
+ "apiType": "index",
+ "format": "[HLP_MIP_WARNING_ADV]Type=%MHlpMipAdvErrTypeT, Temp=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_MIP_RRP": {
+ "apiType": "index",
+ "format": "[HLP_MIP_WARNING_RRP]Type=%MHlpMipRrpErrTypeT, Temp=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_MIP_RRQ_ENCODE": {
+ "apiType": "index",
+ "format": "[HLP_MIP_WARNING_RRQ_ENCODE]DmuVersion=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_MIP_AUTH_UIM_RSP": {
+ "apiType": "index",
+ "format": "[HLP_MIP_WARNING_AUTH_UIM_RSP](%s,%d)UimRspSw=%#x",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_MIP_NAI": {
+ "apiType": "index",
+ "format": "[HLP_MIP_WARNING_NAI] %d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_OPTION": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_OPTION](%s,%d)Option=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_NOT_CHAP": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_NOT_CHAP]RemoteAuth=%#x",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_INVALID_PORT": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_INVALID_PORT](%s,%d)Port=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_INVALID_STATE": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_INVALID_STATE](%s,%d)State=%MfsmStates",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_INVALID_TIMER": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_INVALID_TIMER](%s,%d)TimerId=%Mhlp_timer_enum",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_INVALID_BUFSIZE": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_INVALID_BUFSIZE](%s,%d)BufLen=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_UIM_MSG_BOOM": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_UIM_MSG_QUE_BOOM]QueSize=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_RM_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_RM_STATUS]NspeStatus=%MNspeStatesT",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_MNRP_USE": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_MNRP_USE]MnrpUse=%Mkal_bool",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_MNRP_ERR": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_MNRP_ERR]MnrpErr=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPP_HEADER_ENC": {
+ "apiType": "index",
+ "format": "[HLP_PPP_WARNING_HEADERENC]%MHlpPppHeaderEncWarningT, %d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_CHAP_FAIL_IN_UIM": {
+ "apiType": "index",
+ "format": "[HLP_CHAP_WARNING_FAIL_IN_UIM]UimRspSw=%#x, len=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_EAP_REQ_INVALID": {
+ "apiType": "index",
+ "format": "[HLP_EAP_WARNING_REQ_INVALID]len=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_EAP_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_EAP_WARNING_STATUS](%s,%d)",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_AKA_IDENTITY": {
+ "apiType": "index",
+ "format": "[HLP_AKA_WARNING_IDENTITY](%d)temp=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_EAP_PROCESS": {
+ "apiType": "index",
+ "format": "[HLP_EAP_WARNING_PROCESS](%s,%d)temp=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_AUTH_MODE": {
+ "apiType": "index",
+ "format": "[HLP_WARNING_AUTH_MODE](%s,%d)AuthMode=%d, AppType=%d, Num=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_RM_STATUS": {
+ "apiType": "index",
+ "format": "[HLP_RM_WARNING_STATUS](%s,%d)QBuf=%MQFwdRevT",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_RM_BUF_FAIL": {
+ "apiType": "index",
+ "format": "[HLP_RM_WARNING_BUF_FAIL](%s,%d)BufStatus=%MCpBufStatusT",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_RM_PORT_INIT_FAIL": {
+ "apiType": "index",
+ "format": "[HLP_RM_WARNING_PORT_INIT_FAIL]PortStatus=%MDCL_STATUS_T",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_RM_LINE_STATUS_SEND_FAIL": {
+ "apiType": "index",
+ "format": "[HLP_RM_WARNING_LINE_STATUS_SEND_FAIL]UART_HANDLE=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPPHA_ENC_SRCRD_INDEX": {
+ "apiType": "index",
+ "format": "[HLP_PPPHA_WARNING_ENC_SRCRD_INDEX]PpphaPhase=%MPpphaPhaseT, wrindex=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_PPPHA_DEC_LEN": {
+ "apiType": "index",
+ "format": "[HLP_PPPHA_WARNING_DEC_LEN]PpphaPhase=%MPpphaPhaseT, FirstHalfLen=%d, TotalLen=%d, WrapBufLen=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_IMS_ERR_TYPE": {
+ "apiType": "index",
+ "format": "[HLP_IMS_WARNING_ERR_TYPE](%s,%d)ErrType=%MIMSErrEnumT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_EHRPD_INVALID_OPT": {
+ "apiType": "index",
+ "format": "[HLP_EHRPD_WARNING_INVALID_OPT]opt_type=%MEHRPDVsncpConfigOptionT, size=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_EHRPD_INVALID_PCO": {
+ "apiType": "index",
+ "format": "[HLP_EHRPD_WARNING_INVALID_PCO]len=%d, ContLen=%d, DataLen=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_EHRPD_REC_NULL": {
+ "apiType": "index",
+ "format": "[HLP_EHRPD_WARNING_REC_NULL]PdnID=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_EHRPD_VZWPCO_ERR": {
+ "apiType": "index",
+ "format": "[HLP_EHRPD_WARNING_VZWPCO]index=%d, %d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_EAPN_ERR": {
+ "apiType": "index",
+ "format": "[HLP_EHRPD_WARNING_VZWPCO]index=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DBM_INVALID_PROFILE": {
+ "apiType": "index",
+ "format": "[HLP_DBM_WARNING_INVALID_PROFILE](%s,%d)ProfileId=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DBM_3GPD_FROM_UIM": {
+ "apiType": "index",
+ "format": "[HLP_DBM_WARNING_3GPD_FROM_UIM](%s,%d)UimRspResult=%#x",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DBM_INVALID_PARM": {
+ "apiType": "index",
+ "format": "[HLP_DBM_WARNING_INVALID_PARM](%s,%d)ParmId=%MHlpParmOperationId",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DBM_NVRAM_READ": {
+ "apiType": "index",
+ "format": "[HLP_DBM_WARNING_NVRAM_READ]Err=%MHlpNvRdWtErrT",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DBM_NVRAM_WRITE": {
+ "apiType": "index",
+ "format": "[HLP_DBM_WARNING_NVRAM_WRITE]Err=%MHlpNvRdWtErrT",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DBM_NVRAM_SET": {
+ "apiType": "index",
+ "format": "[HLP_DBM_WARNING_NVRAM_WRITE]Err=%MHlpNvRdWtErrT",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DBM_NAI_FROM_MDN": {
+ "apiType": "index",
+ "format": "[HLP_DBM_WARNING_NAI_FROM_MDN](HlpNAIDerivationFromMDN(),%d)",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DATA_PACKET_TOO_BIG": {
+ "apiType": "index",
+ "format": "[HLP_DATA_WARNING_PACKET_TOO_BIG]PktSize=%d, Mru=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DATA_BUF_ERR_DL": {
+ "apiType": "index",
+ "format": "[HLP_DATA_WARNING_BUF_ERR_DL]PdnId=%d, addr=%x, len=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DATA_BUF_ERR_UL": {
+ "apiType": "index",
+ "format": "[HLP_DATA_WARNING_BUF_ERR_UL]head=%x, tail=%x",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DATA_BUF_ERR_UL_HWM_REACHED": {
+ "apiType": "index",
+ "format": "[HLP_WARNING_DATA_BUF_ERR_UL_HWM_REACHED]%s",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DATA_CONDITION_NOT_READY": {
+ "apiType": "index",
+ "format": "[HLP_DATA_WARNING_CONDITION_NOT_READY]route_type=%MHlpPppRouteTypeE, nspe_um_state=%d, pdn_active=%Mkal_bool, ul_disc_flag_for_fc=%Mkal_bool",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DATA_SEND_SHUT": {
+ "apiType": "index",
+ "format": "[HLP_DATA_WARNING_SEND_SHUT](%s,%d)",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DATA_LIST_NODE_DISMATCH": {
+ "apiType": "index",
+ "format": "[HLP_WARNING_DATA_LIST_NODE_DISMATCH]ha_cal_peer=%x, list_head=%x",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DATA_LIST_APPEND_FAIL": {
+ "apiType": "index",
+ "format": "[HLP_DATA_LIST_APPEND_FAIL]DL queue array full, pdn_id=%d, only upto %d PDN supported",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_DATA_RATDM_EXT_MSG_QUEUE_ALMOST_FULL": {
+ "apiType": "index",
+ "format": "[HLP_WARNING_DATA_RATDM_EXT_MSG_QUEUE_ALMOST_FULL]ratdm external msg queue capacity=%d, now used=%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_IT": {
+ "apiType": "index",
+ "format": "[HLP_IT_WARNING]%d",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_QOS_ERR": {
+ "apiType": "index",
+ "format": "[HLP_QOS_WARNING](%s,%d) %MQOMErrCodeT",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_WARNING_TIMER_PENDING": {
+ "apiType": "index",
+ "format": "[HLP_WARNING_TIMER_PENDING]Id=%Mhlp_timer_enum",
+ "traceClass": "TRACE_WARNING"
+ }
+ },
+ {
+ "DHL_HLP_PPP_CHAP_RSP_RAW": {
+ "apiType": "raw",
+ "format": "[HLP_PPP_CHAP_RSP]",
+ "traceClass": "TRACE_GROUP_1"
+ }
+ },
+ {
+ "DHL_HLP_EAP_AKA_IDENTITY": {
+ "apiType": "raw",
+ "format": "[HLP_EAP_AKA_IDENTITY]",
+ "traceClass": "TRACE_GROUP_1"
+ }
+ },
+ {
+ "DHL_HLP_MIP_MN_NAI_RAW": {
+ "apiType": "raw",
+ "format": "[HLP_MIP_MN_NAI]",
+ "traceClass": "TRACE_GROUP_1"
+ }
+ },
+ {
+ "DHL_HLP_MIP_MN_DUN_NAI_RAW": {
+ "apiType": "raw",
+ "format": "[HLP_MIP_MN_DUN_NAI]",
+ "traceClass": "TRACE_GROUP_1"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_DEC0_RAW": {
+ "apiType": "raw",
+ "format": "[HLP_PPPHA_DEC0]",
+ "traceClass": "TRACE_GROUP_2"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_DEC1_RAW": {
+ "apiType": "raw",
+ "format": "[HLP_PPPHA_DEC1]",
+ "traceClass": "TRACE_GROUP_2"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_ENC0_RAW": {
+ "apiType": "raw",
+ "format": "[HLP_PPPHA_ENC0]",
+ "traceClass": "TRACE_GROUP_2"
+ }
+ },
+ {
+ "DHL_HLP_PPPHA_ENC1_RAW": {
+ "apiType": "raw",
+ "format": "[HLP_PPPHA_ENC1]",
+ "traceClass": "TRACE_GROUP_2"
+ }
+ },
+ {
+ "DHL_HLP_RM_REV_PPP_FRAME": {
+ "apiType": "raw",
+ "format": "[HLP_RM_REV_PPP_FRAME]",
+ "traceClass": "TRACE_GROUP_3"
+ }
+ },
+ {
+ "DHL_HLP_RM_FWD_PPP_FRAME": {
+ "apiType": "raw",
+ "format": "[HLP_RM_FWD_PPP_FRAME]",
+ "traceClass": "TRACE_GROUP_3"
+ }
+ },
+ {
+ "DHL_HLP_TCP_OUTPUT": {
+ "apiType": "index",
+ "format": "[HLP_TCP_OUTPUT]sendcnt=%d, win=%d, intransit=%d, len=%d, flag=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TCP_INPUT": {
+ "apiType": "index",
+ "format": "[HLP_TCP_INPUT]ctl=%d, wnd=%d, seq=%d, ack=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TCP_INPUT_CHKSUM": {
+ "apiType": "index",
+ "format": "[HLP_TCP_INPUT_CHKSUM]RecvChkSum=%#x, LocalChkSum=%#x",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TCP_STATE": {
+ "apiType": "index",
+ "format": "[HLP_TCP_STATE]St=%MTraceTcpStates",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_TCP_SAP": {
+ "apiType": "index",
+ "format": "[HLP_TCP_SAP]sap=%d",
+ "traceClass": "TRACE_GROUP_5"
+ }
+ },
+ {
+ "DHL_HLP_TCP_SOCKET": {
+ "apiType": "index",
+ "format": "[HLP_TCP_SOCKET]SocketNum=%d, address=%#x, Port=%d",
+ "traceClass": "TRACE_INFO"
+ }
+ },
+ {
+ "DHL_HLP_IP6_SEND_DATA": {
+ "apiType": "index",
+ "format": "[HLP_IP6_SEND_DATA]RLPFlowId=%d, PdnId=%d, RlpPath=%MHlpRlpDataPathT, DataLen=%d",
+ "traceClass": "TRACE_GROUP_6"
+ }
+ },
+ {
+ "DHL_HLP_IP6_TCP_OUTPUT": {
+ "apiType": "index",
+ "format": "[HLP_IP6_TCP_OUTPUT]%d: %d %d",
+ "traceClass": "TRACE_GROUP_6"
+ }
+ },
+ {
+ "DHL_HLP_IP6_TCP_INPUT": {
+ "apiType": "index",
+ "format": "[HLP_IP6_TCP_INPUT]%d: %d, %d",
+ "traceClass": "TRACE_GROUP_6"
+ }
+ },
+ {
+ "DHL_HLP_IP6_INPUT": {
+ "apiType": "index",
+ "format": "[HLP_IP6_INPUT]%d: %d %d",
+ "traceClass": "TRACE_GROUP_6"
+ }
+ },
+ {
+ "DHL_HLP_IP6_OUTPUT": {
+ "apiType": "index",
+ "format": "[HLP_IP6_OUTPUT]%d: %d %d",
+ "traceClass": "TRACE_GROUP_6"
+ }
+ },
+ {
+ "DHL_HLP_REV_DISCARD_DATA_WRONG_SRC_IP_ADDR_USIR": {
+ "apiType": "index",
+ "format": "[HLP_REV_DISCARD_DATA_WRONG_SRC_IP_ADDR]mip=%Mkal_bool, SrcIpAddr=%S, MSIPAddr=%S",
+ "traceClass": "TRACE_SENSITIVE_USIR"
+ }
+ },
+ {
+ "DHL_HLP_MIP_RRP_ERR_USIR": {
+ "apiType": "index",
+ "format": "[HLP_MIP_RRP_ERR]PriHA=%S, SecHA=%S, LastHA=%S, Retries=%d, MaxRetries=%d, LastErr=%d, CurErr=%d",
+ "traceClass": "TRACE_SENSITIVE_USIR"
+ }
+ }
+ ],
+ "traceFamily": "PS",
+ "userModule": ""
+}
\ No newline at end of file
diff --git a/mcu/interface/protocol/l2_c2k/common/hlp_msg_struct.h b/mcu/interface/protocol/l2_c2k/common/hlp_msg_struct.h
new file mode 100644
index 0000000..e0d06e9
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlp_msg_struct.h
@@ -0,0 +1,1061 @@
+/*****************************************************************************
+* 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:
+ * ---------
+ * hlp_msg_struct.h
+ *
+ * Description:
+ * ------------
+ * This file defines the ILM structures for HLP task.
+ *
+ *
+ ****************************************************************************/
+
+#ifndef _HLP_MSG_STRUCT_H
+#define _HLP_MSG_STRUCT_H
+
+#include "hlpapi.h"
+#include "valdbmapi.h"
+#include "do_Qos.h"
+#include "hlpdef.h"
+#include "hlpmip.h"
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_fwd_data_ind_signal_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_rev_data_ind_signal_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_ppp_ha_dec0_complete_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_ppp_ha_enc0_complete_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_ppp_ha_dec1_complete_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_ppp_ha_enc1_complete_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_rev_data_dorm_signal_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_fwd_pkt_data_ind_signal_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_rlp_idle_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_rlp_rev_data_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_rlp_open_failed_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_ppp_release_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_answer_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_dormant_reconnect_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_voice_call_release_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_otapa_update_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_color_code_change_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_1x_mt_conn_in_null_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_almp_conn_opened_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_xoff_resp_rcvd_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_acstrm_xon_resp_rcvd_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_do_inactivity_expr_msg_struct;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ValGenericSetParmMsgT msg;
+} hlp_parm_set_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ValGenericGetParmMsgT msg;
+} hlp_parm_get_msg_struct;
+
+/* MSG_ID_HLP_DBM_GET_ESN_MEID_RSP_MSG */
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ValDbmApiGetParmRspMsgT msg;
+} hlp_dbm_get_esn_meid_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_psws_dmu_keygen_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_psws_dmu_keyenc_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpConnectionIndMsgT msg;
+} hlp_connection_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ValRevTxReqMsgT msg;
+} hlp_rev_data_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPppConnectReqMsgT msg;
+} hlp_ppp_connect_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPppStatusMsgT msg;
+} hlp_ppp_status_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpTimerExpiredMsgT msg;
+} hlp_timer_expired_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSystemQueryRspMsgT msg;
+} hlp_sytem_query_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpConnectionReleasedIndMsgT msg;
+} hlp_connection_released_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpConnectionFailedIndMsgT msg;
+} hlp_connection_failed_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpOosaIndMsgT msg;
+} hlp_oosa_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_dormant_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AppSubTypeT sub_type;
+} hlp_um_ppp_renegotiation_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPowerReqMsgT msg;
+} hlp_power_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpUmAppInstanceMsgT msg;
+} hlp_um_app_instance_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSocketCreateMsgT msg;
+} hlp_socket_create_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSocketBindMsgT msg;
+} hlp_socket_bind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSocketConnectMsgT msg;
+} hlp_socket_connect_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSocketCloseMsgT msg;
+} hlp_socket_close_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSocketSendReqMsgT msg;
+} hlp_socket_send_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSysSelPrefSetMsgT msg;
+} hlp_sys_sel_pref_set_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpUpbSendDataMsgT msg;
+} hlp_upb_send_data_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpUpbRecvDataRspMsgT msg;
+} hlp_upb_recv_data_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpTcpbRecvRspMsgT msg;
+} hlp_tcpb_data_recv_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpIp6SocketConnectMsgT msg;
+} hlp_ipv6_socket_connect_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSidNidChangIndMsgT msg;
+} hlp_sid_nid_change_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPktZoneIdChangIndMsgT msg;
+} hlp_pkt_zone_id_change_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSubnetIdChangIndMsgT msg;
+} hlp_subnet_id_change_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpValPingReqMsgT msg;
+} hlp_icmp_ping_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpValUpdatePdnInactivityTimerT msg;
+} hlp_val_update_pdn_inactivity_timer_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpMipRrpMsgT msg;
+} hlp_mip_rrp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpMipAgentAdvMsgT msg;
+} hlp_mip_agent_adv_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpMipUmPppStatusMsgT msg;
+} hlp_mip_um_ppp_status_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpGetIPServiceTypeMsgT msg;
+}hlp_get_ip_service_type_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpConnStatusMsgT msg;
+} hlp_almp_conn_failed_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSvcStatusMsgT msg;
+} hlp_service_status_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpTestBrowserConnectMsgT msg;
+} hlp_test_browser_connect_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ExeRspMsgT msg;
+} hlp_ip_counters_peek_ets_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ExeRspMsgT msg;
+} hlp_pure_ack_tag_rate_get_ets_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpEtsPureAckRateMsgT msg;
+} hlp_pure_ack_tag_rate_set_ets_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ExeRspMsgT msg;
+} hlp_throttling_tmr_status_get_ets_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpValDMUVSetMsgT msg;
+} hlp_val_dmuv_set_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSocketListenMsgT msg;
+} hlp_socket_listen_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpOptionRequestMsgT msg;
+} hlp_socket_option_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSocketShutDownMsgT msg;
+} hlp_socket_shutdown_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSocketLingerMsgT msg;
+} hlp_socket_linger_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpValPingReqMsgT msg;
+} hlp_val_ping_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpValCtaUpdateReqMsgT msg;
+} hlp_val_cta_update_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpDmuSecureDataMsgT msg;
+} hlp_dmu_secure_data_changed_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_val_power_cycle_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPswMDNUpdatedMsgT msg;
+} hlp_psw_mdn_updated_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPswRsvasAbortReqMsgT msg;
+} hlp_psw_rsvas_abort_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_sip_chap_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_mip_mnha_auth_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_mip_rrq_hash_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_mip_mnaaa_auth_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_aka_auth_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_access_chap_resp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_3gpd_opc_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_update_3gpd_opc_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_3gpd_opm_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_update_3gpd_opm_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_3gpd_sipcap_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_3gpd_mipcap_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_3gpd_sipupp_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_3gpd_mipupp_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_3gpd_sipsp_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_update_3gpd_sipsp_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_3gpd_mipsp_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_update_3gpd_mipsp_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_3gpd_sippapss_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_update_3gpd_sippapss_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpDormancyTimersSetMsgT msg;
+} hlp_dormancy_timers_set_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpDORetryTimersSetMsgT msg;
+} hlp_doretry_timers_set_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSetNetworkOrRelayModeMsgT msg;
+} hlp_set_network_or_relay_mode_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimNotifyMsgT msg;
+} hlp_uim_notify_register_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpUimFileChangeMsgT msg;
+} hlp_uim_file_changed_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_hrpdcap_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_3gpduppext_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_tcpcfg_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_dgc_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_mipflags_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_ipv6cap_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_usim_ust_data_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_usim_est_data_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_uim_get_usim_acl_data_rsp_msg_struct;
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+ ImsAppNetwkConnReqMsgT msg;
+} ims_app_netwk_conn_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ImsAppConnReqMsgT msg;
+} ims_app_setup_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ImsAppConnRelMsgT msg;
+} ims_app_rel_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+
+} ims_app_netwk_rel_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ImsPppPdnConnRspMsgT msg;
+} ims_ppp_pdn_conn_set_up_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ImsPppPdnRelIndMsgT msg;
+} ims_ppp_pdn_conn_rel_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ImsPppPdnRelIndMsgT msg;
+} ims_ppp_pdn_rel_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_set_pdn_info_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ IMSIpv6ConfgRspMsgT msg;
+} ims_ipv6_addr_config_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ImsCamPppIndT msg;
+} ims_cam_ppp_um_status_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ImsCamPppIndT msg;
+} ims_cam_ppp_rm_status_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpImsEHRPDAttriMsgT msg;
+} ims_rlp_ehrpd_attribute_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AppImsBearerReqMsgT msg;
+} ims_app_bearer_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSecAkaAuthRspMsgT msg;
+} hlp_sec_akaauth_rsp_msg_struct;
+#endif /* CBP7_EHRPD */
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSecAesCryptRspMsgT msg;
+} hlp_sec_aescrypt_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_get_usim_imsi_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_get_usim_ad_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ UimRspMsgT msg;
+} hlp_get_isim_impu_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpRlpFlowProtocolInfoMsgT msg;
+} hlp_rcp_rlpflow_protocol_info_msg_struct;
+
+#ifdef MTK_DEV_C2K_IRAT
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpNetConnReqT msg;
+} hlp_default_bearer_conn_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpBearerSetupReqT msg;
+} hlp_eps_bearer_setup_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpBearerDisconnReqT msg;
+} hlp_eps_bearer_disconn_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpDataConnectionCmdT msg;
+} hlp_data_connection_cmd_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpImsSetIPv6AddrMsgT msg;
+} hlp_irat_set_ipv6addr_cmd_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpCssNetRelT msg;
+} hlp_css_network_rel_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpValNetRelT msg;
+} val_hlp_network_rel_req_struct;
+
+#endif /* MTK_DEV_C2K_IRAT */
+
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpIp6UdpConnectionOpenMsgT msg;
+} hlp_ip6_udp_connection_open_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpIp6UdpConnectionCloseMsgT msg;
+} hlp_ip6_udp_connection_close_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpIp6TcpConnectionOpenMsgT msg;
+} hlp_ip6_tcp_connection_open_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpIp6TcpConnectionCloseMsgT msg;
+} hlp_ip6_tcp_connection_close_msg_struct;
+#endif /* CBP7_EHRPD */
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPppRouteTypeSetMsgT msg;
+} hlp_ppp_route_set_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ExeRspMsgT msg;
+} hlp_ppp_route_get_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpDOANAuthAlgoSetMsgT msg;
+} hlp_an_auth_algo_set_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpQOMOpFlowRspMsgT msg;
+} ims_qom_flow_req_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpQOMOpFlowRspMsgT msg;
+} ims_qom_flow_rel_rsp_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpQOMOpFlowRelIndMsgT msg;
+} ims_qom_flow_rel_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpQOMFlowIndMsgT msg;
+} ims_qom_flow_ntwk_init_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_sec_derivemk_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_sec_derivereauthxkey_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_sec_derivemsk_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_sec_derivemac_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpSetNetworkOrRelayModeMsgT msg;
+} hlp_set_nw_or_relay_mode_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpDORetryTimersSetMsgT msg;
+} hlp_do_retry_timers_set_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpValPcmtParaMsgT msg;
+} hlp_val_pcmt_para_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_uint16 FmpReferencePN;
+}hlp_rmc_fmp_ref_pn_update_ind_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool ho_ehrpd_enable;
+ kal_bool idp_in_sleep;
+}hlp_idp_update_ho_ehrpd_enable_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPppConnectReqMsgT msg;
+} val_hlp_ppp_connect_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPppDisconnectReqMsgT msg;
+} val_hlp_ppp_disconnect_req_struct;
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPppUpdateReqMsgT msg;
+} val_hlp_ppp_update_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpEhrpdBearerConnReqMsgT msg;
+} val_hlp_ehrpd_bearer_connect_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpEhrpdBearerDisconReqMsgT msg;
+} val_hlp_ehrpd_bearer_disconnect_req_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpEapnsyncDefineReqMsgT msg;
+} val_hlp_eapnsync_define_req_struct;
+
+typedef struct
+{
+ /** ILM specific header. */
+ LOCAL_PARA_HDR
+
+ /** true: on; false: off */
+ kal_bool flag;
+}hlp_rm_buffer_status_notify_struct;
+
+#ifdef MTK_PLT_ON_PC
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpIpDataSendReqMsgT msg;
+} hlp_ip_data_send_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPppDataReqMsgT msg;
+} hlp_ppp_data_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpPppDataReqMsgT msg;
+} hlp_ppp_data_ind_msg_struct;
+#endif /* MTK_PLT_ON_PC */
+
+#ifdef MTK_PLT_ON_PC_UT
+typedef struct
+{
+ LOCAL_PARA_HDR
+} hlp_init_nvram_read_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ HlpUtConfigParamT msg;
+}hlp_ut_config_param_msg_struct;
+#endif /* MTK_PLT_ON_PC_UT */
+
+
+#endif /* _HLP_MSG_STRUCT_H */
diff --git a/mcu/interface/protocol/l2_c2k/common/hlp_nvram.h b/mcu/interface/protocol/l2_c2k/common/hlp_nvram.h
new file mode 100644
index 0000000..1ebe201
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlp_nvram.h
@@ -0,0 +1,403 @@
+/*****************************************************************************
+* 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 CONSKAL_TRUED 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 _HLP_NVRAM_H_
+
+#define _HLP_NVRAM_H_ 1
+
+/*****************************************************************************
+ * Includes
+ ****************************************************************************/
+#define HLP_DEFAULT_HSPD_LOCKED KAL_FALSE
+#define HLP_DEFAULT_HSPD_NETWORKMODE KAL_TRUE
+
+#define HLP_DEFAULT_RRP_TIMEOUT 3 /* 1750 ms */
+#define HLP_DEFAULT_NUM_REG_RETRIES 2
+#define HLP_DEFAULT_NUM_DEREG_RETRIES 2
+#define HLP_DEFAULT_RRA 26
+#define HLP_DEFAULT_SPRINT_RRA 1800
+#define HLP_DEFAULT_REREG_ONLYIF_TRAFFIC KAL_FALSE
+#define HLP_DEFAULT_IP_ADDR 0x00000000L
+
+#define HLP_DEFAULT_NAI_ENABLED KAL_TRUE
+
+#define HLP_DEFAULT_NAI "ctnet@mycdma.cn"
+#define HLP_DEFAULT_DUN_NAI "ctnet@mycdma.cn"
+#define HLP_DEFAULT_SIP_PASSWRD "vnet.mobi"
+
+#define HLP_DEFAULT_AN_PASSWRD 0
+#define HLP_DEFAULT_AKA_PASSWRD 0
+#define HLP_DEFAULT_MN_HA_PASSWRD 0
+#define HLP_DEFAULT_MN_AAA_PASSWRD 0
+
+#define HLP_DEFAULT_DORMANT_HANDOFF_OPTION KAL_TRUE
+#define HLP_DEFAULT_DATA_SCRM_ENABLED KAL_TRUE
+#define HLP_DEFAULT_DATA_THROTTLING_ENABLED KAL_TRUE
+#define HLP_DEFAULT_PREFERRED_RC 3 /*PSW_RC_PREF_3 */
+#define HLP_DEFAULT_MIP_MODE IPSERVICE_TYPE_MIP_PREFER
+#define HLP_DEFAULT_ACTIVE_PROFILE 0
+#define HLP_DEFAULT_NUM_PROFILES HLP_MAX_HSPD_PROFILES
+#define HLP_DEFAULT_MN_HA_SPI_ENABLE KAL_TRUE
+#define HLP_DEFAULT_MN_AAA_SPI_ENABLE KAL_TRUE
+#define HLP_DEFAULT_VJCOMPRESSION_ENABLED KAL_FALSE
+#define HLP_DEFAULT_DOTO1X_FALLBACK_ENABLED KAL_TRUE
+
+#define HLP_DEFAULT_HSPD_T_DORMACNY 30
+#define HLP_DEFAULT_HSPD_T_HRPD_SEARCH 300
+#define HLP_DEFAULT_HSPD_T_RAPID_DORMACNY 5
+#define HLP_DEFAULT_HSPD_T_RES_DEF_DORMACNY 2
+
+#define HLP_DEFAULT_PPP_UM_LCP_REQ_RETRIES 10
+#define HLP_DEFAULT_PPP_UM_LCP_NAK_RETRIES 10
+#define HLP_DEFAULT_PPP_UM_LCP_RESTART_TMR 3000
+#define HLP_DEFAULT_PPP_UM_LCP_TERM_RETRIES 2
+#define HLP_DEFAULT_PPP_UM_LCP_TERM_TIMER 3000
+#define HLP_DEFAULT_PPP_UM_AUTH_RETRIES 5
+#define HLP_DEFAULT_PPP_UM_AUTH_TIMER 3000
+#define HLP_DEFAULT_PPP_UM_NCP_REQ_RETRIES 10
+#define HLP_DEFAULT_PPP_UM_NCP_NAK_RETRIES 3
+#define HLP_DEFAULT_PPP_UM_NCP_RESTART_TMR 3000
+#define HLP_DEFAULT_PPP_UM_NCP_TERM_RETRIES 2
+#define HLP_DEFAULT_PPP_UM_NCP_TERM_TIMER 3000
+
+#define HLP_DEFAULT_PPP_RM_PPP_KEEP_LIVE KAL_FALSE
+#define HLP_DEFAULT_PPP_RM_PPP_DETECT KAL_FALSE
+#define HLP_DEFAULT_PPP_RM_LCP_REQ_RETRIES 10
+#define HLP_DEFAULT_PPP_RM_LCP_NAK_RETRIES 3
+
+#define NET_MTU 1500 /* it was 1500 */
+#define TCPIP_HEADERSIZE 40 /* IP header + TCP header size */
+#define TCP_MAXWINSIZE 65535UL /* max TCP window size */
+
+#define HLP_DEFAULT_TCP_MTU NET_MTU - TCPIP_HEADERSIZE
+#define HLP_DEFAULT_TCP_WIN_1XRTT TCP_MAXWINSIZE
+#define HLP_DEFAULT_TCP_WIN_EVDO TCP_MAXWINSIZE
+#define DO_RETRY_TIMER 60
+
+#define HLP_DEFAULT_PKOID 10
+#define HLP_DEFAULT_MN_HA_SPI 300
+#define HLP_DEFAULT_MN_AAA_SPI 2
+#define HLP_DEFAULT_IS801_IP_ADDR 0x00000000L
+#define HLP_DEFAULT_IS801_PORT_NUM 0
+#define HLP_DEFAULT_MN_HOME_IP_ADDR 0x00000000L
+#define HLP_DEFAULT_HA_PRI_IP_ADDR 0xFFFFFFFF
+#define HLP_DEFAULT_HA_SEC_IP_ADDR 0xFFFFFFFF
+#define HLP_DEFAULT_SPRINT_HA_PRI_IP_ADDR 0x441C0F0C /* 68.28.15.12 */
+#define HLP_DEFAULT_SPRINT_HA_SEC_IP_ADDR 0x441C1F0C /* 68.28.31.12 */
+#define HLP_DEFAULT_MN_REV_TUNNELING KAL_TRUE
+#define HLP_DEFAULT_ACTIVE_RSA_PUBLIC_KEY DMU_RSA_PUBLICKEY_1
+#define HLP_DEFAULT_HA_AUTH RFC2002bis
+#define HLP_DEFAULT_HA_AUTH_ALGORITHM MD5_AUTH_ALGO
+#define HLP_MTU_SIZE_VZW 1428
+#define HLP_MTU_SIZE_SPRINT 1422
+/* CTCC requires at least 10 min for ppp context maintaince time 600 is in second unit */
+#define PPP_EHRPD_MAX_INACT_TIME_LEN_CT 600
+/* SPRINT ppp partial context maintenance timer on ehrpd, 3600 in second unit */
+#define PPP_EHRPD_MAX_INACT_TIME_LEN_SPRINT 3600
+/* VZW UE context maintenance timer, 0, by req on Feb 16 */
+#define PPP_EHRPD_MAX_INACT_TIME_LEN_VZW 0
+
+#define HLP_MAX_USRID_LEN 72
+#define HLP_MAX_PSWD_LEN 16
+#define HLP_MAX_BWSR_DIG_LEN 33 /* (CP_MAX_CALLING_PARTY_NUMBER_SIZE +1) */
+#define HLP_MN_NAI_MAX_SIZE HLP_MAX_USRID_LEN
+#define MN_AUTH_MAX_SIZE 3
+
+#define HLP_AKA_OP_LEN 16
+#define HLP_AKA_SEQ_ARRAY_SIZE 32
+#define HLP_AKA_SQN_LEN 6 /*48 bits 3G TS 33.105.v.3.0(2000-03)*/
+
+#define HLP_MAX_HSPD_PROFILES 8
+
+#define HLP_HSPD_DB_PAD_SIZE 57
+#define HLP_HSPD_PROFILE_PAD_SIZE 128
+
+#ifdef CBP7_EHRPD
+#define HLP_HSPD_SECURE_DB_PAD_SIZE 114
+#else
+#define HLP_HSPD_SECURE_DB_PAD_SIZE 130
+#endif
+
+#define HLP_HSPD_SECURE_PROFILE_PAD_SIZE 64
+#define HLP_EHRPD_DB_PAD_SIZE 47
+
+#define MN_PASSWD_MAX_SIZE HLP_MAX_PSWD_LEN
+
+#define RSA_PUBKEY_EXPONENT_MAX_SIZE 128
+#define RSA_PUBKEY_MODULUS_MAX_SIZE 128
+
+/*****************************/
+/* HlpNam definitions start */
+/*****************************/
+typedef struct
+{
+ kal_uint32 RxBytes;
+ kal_uint32 RxPackets;
+ kal_uint32 BadRxPackets;
+ kal_uint32 TxBytes;
+ kal_uint32 TxPackets;
+ kal_uint64 TotalRxBytes;
+ kal_uint64 TotalRxPackets;
+ kal_uint64 TotalBadRxPackets;
+ kal_uint64 TotalTxBytes;
+ kal_uint64 TotalTxPackets;
+ kal_uint8 Flag[4];
+ kal_uint8 Unused[10];
+} IPCounterStruct;
+
+typedef struct
+{
+ kal_uint8 lcpReqTries;
+ kal_uint8 lcpNakTries;
+ kal_uint16 lcpRestartTimer;
+ kal_uint8 lcpTermTries;
+ kal_uint16 lcpTermTimer;
+ kal_uint8 authRetries;
+ kal_uint16 authTimer;
+ kal_uint8 ncpReqTries;
+ kal_uint8 ncpNakTries;
+ kal_uint16 ncpReStrTimer;
+ kal_uint8 ncpTermTries;
+ kal_uint16 ncpTermTimer;
+ kal_uint8 unused[8];
+} HlpPppUmCfgT;
+
+typedef struct
+{
+ kal_bool pppKeepAlive;
+ kal_bool pppDetect;
+ kal_uint8 lcpReqTries;
+ kal_uint8 lcpNakTries;
+ kal_uint16 lcpRestartTimer;
+ kal_uint8 lcpTermTries;
+ kal_uint16 lcpTermTimer;
+ kal_uint8 ncpReqTries;
+ kal_uint8 ncpNakTries;
+ kal_uint16 ncpReStrTimer;
+ kal_uint8 ncpTermTries;
+ kal_uint16 ncpTermTimer;
+ kal_uint8 unused[3];
+} HlpPppRmCfgT;
+
+typedef struct
+{
+ kal_uint16 tcpMtu;
+ kal_uint16 tcpWinSize_1XRTT;
+ kal_uint16 tcpWinSize_EVDO;
+ kal_uint8 unused[4];
+} HlpTcpCfgT;
+
+typedef struct{
+ kal_uint8 ProfileId;
+ kal_bool Profile_Valid;
+ kal_uint32 MN_HOME_IP_ADDR;
+ kal_uint32 HA_PRI_IP_ADDR;
+ kal_uint32 HA_SEC_IP_ADDR;
+ kal_uint8 MN_NAI[HLP_MN_NAI_MAX_SIZE];
+ kal_uint8 MN_DUN_NAI[HLP_MN_NAI_MAX_SIZE];
+ kal_uint8 MN_REV_TUNNELING;
+ kal_bool bMN_HA_SPI_Enable;
+ kal_uint32 MN_HA_SPI;
+ kal_bool bMN_AAA_SPI_Enable;
+ kal_uint32 MN_AAA_SPI;
+ kal_uint8 Padding[HLP_HSPD_PROFILE_PAD_SIZE];
+} HlpHspdProfileData;
+
+
+typedef struct {
+ kal_uint8 RRPTimeout; /* RRP MIP Registration timeout */
+ kal_uint8 NumRegRetries; /* RRP MIP Registration Retry Attempts */
+ kal_uint16 RRA; /* Pre Re-registration backoff */
+ kal_uint32 Is801_IpAddr;
+ kal_uint16 Is801_PortNum;
+ kal_uint8 Is801_UserId[HLP_MAX_USRID_LEN];
+ kal_uint8 Is801_Pswd[HLP_MAX_PSWD_LEN];
+ kal_uint8 Is801_CalledNumber[HLP_MAX_BWSR_DIG_LEN];
+
+ kal_uint8 MN_HA_AUTH; /* 0-RFC2002, 1-RFC2002bis, 2-bypassHA */
+ kal_uint8 MN_HA_Auth_Algo;
+ kal_uint8 MN_AAA_Auth_Algo;
+
+ kal_uint8 MN_Authenticator[MN_AUTH_MAX_SIZE];
+ kal_uint8 ActiveDmuRsaPublicKey; /* 0-TestKey, 1-CommercialKey */
+ kal_uint8 nPKOID;
+
+ kal_uint8 SIP_NAI[HLP_MN_NAI_MAX_SIZE];
+ kal_uint8 SIP_DUN_NAI[HLP_MN_NAI_MAX_SIZE];
+ kal_uint8 AN_NAI[HLP_MN_NAI_MAX_SIZE];
+
+ kal_uint8 DormantHandoffOptSet; /* 0-Disabled, 1-Enabled */
+ kal_uint8 DataScrmEnabled; /* Supp Chan Supported */
+ kal_uint8 DataTrtlEnabled; /* Slow Down data at high CPU utilization */
+ kal_uint8 PrefRc; /* Preferred Radio Cfg. Default-RC3 */
+ kal_uint32 DNS_PRI_IP_ADDR;
+ kal_uint32 DNS_SEC_IP_ADDR;
+ kal_uint8 MIPMode;
+
+ kal_uint32 ActiveProfile;
+ kal_uint8 NumProfiles;
+ kal_uint8 VJCompEnabled;
+ kal_bool HspdLocked;
+ kal_uint16 LockCode;
+ kal_bool HspdNetworkMode;
+ kal_uint16 T_Dormancy;
+ kal_uint16 T_HRPD_Search;
+ kal_uint16 T_DO_Retry;
+ kal_uint16 T_Rapid_Dormancy;
+ kal_uint16 T_ResDef_Dormancy;
+ kal_uint8 NumDeRegRetries;
+ kal_bool MipReRegOnlyIfTraffic;
+ kal_bool MipNaiEnabled;
+ kal_bool DoTo1X_Enabled;
+
+ HlpPppUmCfgT PppUmCfg;
+ HlpPppRmCfgT PppRmCfg;
+ HlpTcpCfgT TcpCfg;
+ kal_uint8 Ipv6V4Mode;
+
+ kal_uint8 Padding[HLP_HSPD_DB_PAD_SIZE];
+ HlpHspdProfileData ProfileData [HLP_MAX_HSPD_PROFILES];
+}HlpHspdSegData;
+
+typedef struct
+{
+ kal_uint8 ProfileId;
+ kal_bool Profile_Valid;
+ kal_uint8 MN_AAA_PASSWORD_LEN;
+ kal_uint8 MN_AAA_PASSWORD[MN_PASSWD_MAX_SIZE]; /* MIP AAA Shared Secret*/
+ kal_uint8 MN_HA_PASSWORD_LEN;
+ kal_uint8 MN_HA_PASSWORD[MN_PASSWD_MAX_SIZE]; /* MIP HA Shared Secret */
+ kal_uint8 Padding[HLP_HSPD_SECURE_PROFILE_PAD_SIZE];
+} HlpSecureProfileData;
+
+typedef struct
+{
+ kal_uint32 checkSum;
+ kal_uint8 SIP_PASSWORD_LEN;
+ kal_uint8 SIP_PASSWORD[HLP_MAX_PSWD_LEN]; /* Simple IP User Password */
+ kal_uint8 AN_PASSWORD_LEN;
+ kal_uint8 AN_PASSWORD[HLP_MAX_PSWD_LEN]; /* AN Shared Secret*/
+#ifdef CBP7_EHRPD
+ kal_uint8 AKA_PASSWORD[HLP_MAX_PSWD_LEN];
+#endif
+ kal_uint8 Padding[HLP_HSPD_SECURE_DB_PAD_SIZE];
+ HlpSecureProfileData ProfileData [HLP_MAX_HSPD_PROFILES];
+} HlpHspdSecureSegData;
+
+#ifdef CBP7_EHRPD
+
+#if defined MTK_PLT_ON_PC
+#pragma pack( push, saved_packing, 1 )
+#endif
+typedef struct {
+ kal_uint8 NAI[HLP_MN_NAI_MAX_SIZE];
+ kal_uint8 AcessNetworkId[HLP_MN_NAI_MAX_SIZE];
+ kal_uint8 OP[HLP_AKA_OP_LEN];
+ kal_uint8 SQN[HLP_AKA_SEQ_ARRAY_SIZE][HLP_AKA_SQN_LEN];
+} HlpHspdAkaProfileDataT;
+#if defined MTK_PLT_ON_PC
+#pragma pack( pop, saved_packing )
+#endif
+
+typedef struct
+{
+ kal_bool SmsOverIpNetworks;
+ kal_bool SigComp;
+ kal_uint8 ImsDomain[72];
+ kal_uint8 ImsAkaPassword[72];
+ kal_uint16 SipT1Timer_ims;
+ kal_uint16 SipTFTimer_ims;
+ kal_uint16 SipT2Timer_ims;
+ kal_uint16 SipPcscfPort;
+} SmsOverImsT;
+
+typedef struct
+{
+ HlpHspdAkaProfileDataT AkaProfileData;
+ kal_uint32 pcmt_val_ehrpd; /* PPP Partial Context Maintenance timer eHRPD: standalone eHRPD scenario. Unit: second. */
+ kal_uint32 pcmt_val_irat; /* PPP Partial Context Maintenance timer eHRPD: LTE IRAT transition scenario. Unit: second. */
+} HlpEHrpdSegDataT;
+#endif
+
+typedef enum
+{
+ InvalidIP=0,
+ IPv4=1,
+ IPv6,
+ IPv4andIPv6,
+}IPAddrTypeT;
+
+typedef enum
+{
+ IPSERVICE_TYPE_SIP_ONLY,
+ IPSERVICE_TYPE_MIP_PREFER,
+ IPSERVICE_TYPE_MIP_ONLY
+} IPServiceTypeT;
+
+typedef enum
+{
+ DMU_RSA_PUBLICKEY_1 = 0,
+ DMU_RSA_PUBLICKEY_2
+} DmuRsaPublickKeyNumber;
+
+typedef enum
+{
+ RFC2002,
+ RFC2002bis,
+ BypassHA
+}HAAuthNumber;
+
+typedef enum
+{
+ NONE_AUTH_ALGO,
+ MD5_AUTH_ALGO
+}AuthAlgoNumber;
+
+typedef struct {
+ kal_uint8 nPKOID;
+ kal_uint8 nPKOI;
+ kal_uint8 nPK_Expansion;
+ kal_uint8 nATVAndDMUV;
+} HlpRSAPublicKeyInfoHdrT;
+
+typedef struct {
+ HlpRSAPublicKeyInfoHdrT hdrRSAPublicKeyInfo;
+ kal_uint8 RSAPubKeyExponent[RSA_PUBKEY_EXPONENT_MAX_SIZE];
+ kal_uint8 RSAPubKeyModulus[RSA_PUBKEY_MODULUS_MAX_SIZE];
+} HlpRSAPublicKeyInfoT;
+
+
+#endif /* _HLP_NVRAM_H_ */
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpapi.h b/mcu/interface/protocol/l2_c2k/common/hlpapi.h
new file mode 100644
index 0000000..4d9562e
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpapi.h
@@ -0,0 +1,1971 @@
+/*****************************************************************************
+* 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 _HLPAPI_H_
+#define _HLPAPI_H_
+/*****************************************************************************
+*
+* FILE NAME : hlpapi.h
+*
+* DESCRIPTION :
+*
+* This include file provides system wide global type declarations and
+* constants
+*
+* HISTORY :
+* See Log at end of file.
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "module_msg_range.h"
+#include "sysdefs.h"
+#include "pswcustom.h"
+#include "valatdata.h"
+#include "cpbuf.h"
+#include "iopapi.h"
+#include "sbp_public_utility.h"
+#include "hlp_nvram.h"
+#include "slc_nvram.h"
+
+#define EAP_AKA_PRIME 1
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define HLP_MAILBOX_CMD EXE_MAILBOX_1_ID
+#define HLP_MAILBOX2_CMD EXE_MAILBOX_2_ID
+#define HLP_SEC_MAILBOX EXE_MESSAGE_MBOX_3
+#define HLP_SEC_CMD EXE_MAILBOX_3_ID
+
+#define HLP_MAX_SIZE_DATA 240
+#define HLP_MAX_NUM_REV_RLP 300
+#define HLP_MAX_SPY_LEN 164
+#define MAX_NUM_DO_INACTIVITY_TICKS 4500 /* 4500 x 6.67ms = 30 sec */
+#define MAX_NUM_1X_INACTIVITY_TICKS 30 /* second */
+
+#define HLP_AKA_KEY_LEN 16 /*128 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_RAND_LEN 16 /*128 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_FMK_LEN 4 /*32 bits */
+#define HLP_AKA_AMF_LEN 2 /*16 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_MACA_LEN 8 /*64 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_MACS_LEN 8 /*64 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_RES_LEN 16 /*32<->128 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_CK_LEN 16 /*128 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_IK_LEN 16 /*128 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_AK_LEN 6 /*48 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_AKS_LEN 6 /*48 bits 3G TS 33.105.v.3.0(2000-03)*/
+#define HLP_AKA_UAK_LEN 16
+#define HLP_AKA_AUTN_LEN 16
+#define HLP_AKA_AUTS_LEN 16
+
+#define EAP_AKA_NONCE_S_LEN 16
+#define EAP_AKA_NONCE_MT_LEN 16
+#define EAP_AKA_MAC_LEN 16
+#define EAP_AKA_K_AUT_LEN 32
+#define EAP_AKA_K_ENCR_LEN 16
+#define EAP_AKA_MSK_DATA_LEN 64
+#define EAP_AKA_IV_LEN 16
+
+#define EAP_AKA_RAND_LEN 16
+#define EAP_AKA_AUTN_LEN 16
+#define EAP_AKA_RES_MAX_LEN 16
+#define EAP_AKA_MK_LEN 20
+#define EAP_AKA_MSK_LEN 64
+#define EAP_AKA_AUTS_LEN 14
+#define EAP_AKA_IK_LEN 16
+#define EAP_AKA_CK_LEN 16
+#define EAP_AKA_SHA1_MAC_LEN 20
+
+#define EAP_AKA_PSEUDONYM_LEN 128
+#define EAP_AKA_REAUTH_ID_LEN 128
+#define EAP_AKA_KC_LEN 8
+#define RM_WRITE_FLAG_SND_ACK 1
+
+#if EAP_AKA_PRIME
+#define EAP_AKA_K_RE_LEN 32
+#define EAP_AKA_EMSK_DATA_LEN 64
+#define EAP_AKA_PRIME_MK_LEN 208
+#endif
+
+#define HLP_MAX_SOCKET 10
+
+#define HLP_MN_PASSWD_MAX_SIZE HLP_MAX_PSWD_LEN
+#define HLP_BETTER_SYSTEM_THRESH 20
+#define MN_NAI_MAX_SIZE HLP_MAX_USRID_LEN
+#define HLP_NUM_DIAL_STRING_DIGITS 11
+
+#ifdef CBP7_EHRPD
+#define MAX_HLP_FLOW_SUPPORTED 8 /* 6 */ /*Must be same as MAX_RLP_FLOW_SUPPORTED*/
+#define MAX_RLP_FRAMES_PER_IP_PKT 32
+#define NUM_HLP_FWD_IP_DATA_IND_ENTRIES 16
+#endif
+
+#define HSPD_PRI
+
+
+#define VAL_UIM_FILE_CHANGE_LIST_MAX 50
+#define HLP_VZW_PCO_CODE 0xFF00
+#define HLP_VZW_PCO_CODE_STR "FF00"
+#define HLP_VZW_PCO_MCCMNC_LEN 6
+#define HLP_VZW_PCO_MCCMNC_STR "311480"
+#define HLP_VZW_PCO_CODE_STR_LEN 4
+
+#define HLP_MAX_APN_NUM 10
+#define HLP_UIM_USIM_ACL_TAG 0xDD
+#define HLP_UIM_USIM_ACL_SEPERATOR 0x2E
+#define HLP_MIP_ERROR_CODE_BASE 0x80b0
+#define HLP_PDN_ERROR_CODE_BASE 0x8000
+
+/***********************************************************************/
+/* Global Typedefs */
+/**********************************************************************/
+
+
+/***********************************************************************/
+/* Enumeration Definitions */
+/***********************************************************************/
+typedef enum
+{
+ HlpDataChRetOK,
+ HlpDataChRetOK_Empty,
+ HlpDataChRetFull,
+ HlpDataChRetErr
+} HlpDataChRetStatus;
+
+typedef struct {
+ CpBufferT *bufPtr;
+ kal_uint16 offset;
+ kal_uint16 dataLen;
+ kal_uint8 nRLPFlow;
+ kal_uint8 streamType;
+
+ kal_uint16 tcpTag;
+ kal_uint32 tcpPort;
+ kal_uint32 srcIpAddr;
+ kal_uint32 dstIpAddr;
+
+#ifdef CBP7_EHRPD
+ kal_uint16 FrameType; /* distinguish Ipv4/Ipv6 and PDN-ID */
+#endif
+
+ kal_uint8 BearerId;
+} RmDataCpBuffDescT;
+
+typedef enum
+{
+ RmDataQBuffOK,/*Process successfully*/
+ RmDataQBuffOK_Empty,/* Buffer Q empty after read successfully */
+ RmDataQBuffFull,/* Buffer Q full */
+ RmDataQBuffErr /* Error occurred. */
+} RmDataQBuffStatusE;
+
+typedef enum
+{
+ DO_NETWORK,
+ RTT_NETWORK,
+ NON_CONNECTED
+} NetworkT;
+
+typedef enum
+{
+ IN_SERVICE,
+ OOSA,
+ TO_ACQUIRE
+} SvcStatusT;
+
+typedef enum
+{
+ ASYNC_DATA,
+ NETWORK_RM,
+ PPP_ONLY,
+ RELAY_RM,
+ MAIN_CONN
+} NspeAppT;
+
+typedef enum
+{
+ DO_ONLY, /* DO is active and is the only system that is allowed. */
+ DO_PREFERRED, /* DO and 1X are both active, DO is preferred. */
+ RTT_ONLY, /* 1X is active and is the only system that is allowed. */
+ RTT_PREFERRED, /* DO and 1X are both active, 1X is preferred. */
+ NO_PREFERENCE,
+#ifdef MTK_CBP
+ HLP_NTW_PREF_NONE
+#endif
+} NetworkPrefT;
+
+typedef enum
+{
+ CONNECTION_FAILED_IND,
+ CONNECTION_CLOSED_IND,
+ CONNECTION_OPENED_IND
+} ConnectionRspT;
+
+typedef enum
+{
+ Um, /* Service Stream */
+ Rm,
+ Um_AccessStream,
+ PppEndPointMax
+} pppEndPointT;
+
+typedef enum
+{
+ DO_FOUND, /* Only DO network is found */
+ RTT_FOUND, /* Only 1X network is found */
+ BOTH, /* Both network are found */
+ NEITHER /* Nothing available */
+} NetworkRspT;
+
+typedef enum
+{
+ HA_DEC0,
+ HA_DEC1,
+ HA_ENC0,
+ HA_ENC1
+} pppHaPortT;
+
+typedef enum
+{
+ HLP_NETWORK_ERROR_EVDO_CO_NO_SERVICE,
+ HLP_NETWORK_ERROR_EVDO_CO_ACCESS_FAILURE,
+ HLP_NETWORK_ERROR_EVDO_CO_REDIRECTION,
+ HLP_NETWORK_ERROR_EVDO_CO_NOT_PREFERRED,
+ HLP_NETWORK_ERROR_EVDO_CO_MODE_HANDOFF,
+ HLP_NETWORK_ERROR_EVDO_CO_IN_PROGRESS,
+ HLP_NETWORK_ERROR_EVDO_CO_SETUP_TIMEOUT,
+ HLP_NETWORK_ERROR_EVDO_CO_SESSION_NOT_OPEN,
+ HLP_NETWORK_ERROR_EVDO_RELEASE_NO_REASON,
+ HLP_NETWORK_ERROR_EVDO_PROTOCOL_FAILURE,
+ HLP_NETWORK_ERROR_EVDO_DENY_NO_REASON,
+ HLP_NETWORK_ERROR_EVDO_DENY_NETWORK_BUSY,
+ HLP_NETWORK_ERROR_EVDO_DENY_AUTHENTICATION,
+ HLP_NETWORK_ERROR_EVDO_REDIRECT_TO_1X,
+ HLP_NETWORK_ERROR_EVDO_FADE,
+ HLP_NETWORK_ERROR_EVDO_USER_DISCONNECTED
+#if defined (MTK_DEV_C2K_IRAT) && defined (MTK_DEV_C2K_SRLTE_L1)
+ ,
+ HLP_NETWORK_ERROR_EVDO_RSVAS_SUSPEND,
+ HLP_NETWORK_ERROR_EVDO_RSVAS_VIRTUAL_SUSPEND
+#endif
+ ,
+ HLP_NETWORK_SESSION_NEGOTIATION_COMPLETE,
+ HLP_NETWORK_ERROR_EVDO_LAST
+}HlpConnCloseReasonT;
+
+typedef struct HlpPPPHaLLD
+{
+ kal_uint32 sourceAddr;
+ kal_uint32 xferCount;
+ kal_uint32 configReg;
+ kal_uint32 nextInLLD;
+} HlpPPPHaLLDT;
+
+typedef enum
+{
+ REG_TIMER_EXPIRED,
+ DORMANT_RECONN,
+ SID_NID_CHANGE,
+ PKT_ZID_CHANGE,
+ COLOR_CODE_CHANGE
+} MipReRegReasonT;
+
+typedef enum
+{
+ Check_T_Dormancy = 0x01,
+ Check_T_HRPD_Search = 0x02,
+ Check_T_Rapid_Dormancy = 0x04,
+ Check_T_ResDef_Dormancy = 0x08,
+ Check_Dormancy_All = 0x0f
+} DormParmCheckT;
+
+typedef enum
+{
+ HLP_TIMER_TCH_SETUP,
+ HLP_TIMER_WFR_SYS_RSP,
+ HLP_TIMER_1X_CONNECTION_5MIN,
+ HLP_TIMER_WFR_FAST_CONN,
+ HLP_TIMER_DATA_RETRY,
+ HLP_TIMER_DO_RETRY,
+ HLP_TIMER_FALLBACK,
+ HLP_TIMER_DO_OOSA_CONNECT_1X,
+ HLP_TIMER_WFR_RM_CONNECT,
+ HLP_TIMER_PPP_UM_REQ,
+ HLP_TIMER_PPP_RM_REQ,
+ HLP_TIMER_PPP_A12_REQ,
+ HLP_TIMER_PPP_AUX_REQ,
+ HLP_TIMER_PPP_UM_LOCAL_AUTH_REQ,
+ HLP_TIMER_PPP_RM_LOCAL_AUTH_REQ,
+ HLP_TIMER_PPP_A12_LOCAL_AUTH_REQ,
+ HLP_TIMER_PPP_AUX_LOCAL_AUTH_REQ,
+ HLP_TIMER_PPP_UM_REMOTE_AUTH_REQ,
+ HLP_TIMER_PPP_RM_REMOTE_AUTH_REQ,
+ HLP_TIMER_PPP_A12_REMOTE_AUTH_REQ,
+ HLP_TIMER_PPP_AUX_REMOTE_AUTH_REQ,
+ HLP_TIMER_PPP_MNRP_REQ,
+ HLP_TIMER_WFR_UIM_AUTH_RSP,
+ HLP_TIMER_THROTTLING_HSPD,
+ HLP_TIMER_THROTTLING_HRPD,
+ HLP_TIMER_IP_250MS,
+ HLP_TIMER_DRMNT_RCNT_BACKOFF,
+ HLP_TIMER_WFR_HANDOFF_HYST,
+ HLP_TIMER_XOFF_RSP,
+ HLP_TIMER_TCH_REL,
+ HLP_TIMER_C109_PULSE,
+ HLP_TIMER_PPP_CONNECT_BACKOFF,
+ HLP_TIMER_DATA_RELEASE,
+ HLP_TIMER_PDN_REQ_0, /* ehrpd start, 0-4 not the pdn id, but the pdn array index */
+ HLP_TIMER_PDN_REQ_1,
+ HLP_TIMER_PDN_REQ_2,
+ HLP_TIMER_PDN_REQ_3,
+ HLP_TIMER_PDN_REQ_4,
+ HLP_TIMER_VSE_VER_CAP_IND,
+ HLP_TIMER_VSE_PPP_INACT,
+ HLP_TIMER_IMS_WFR_RSP,
+ HLP_TIMER_PDN_INACT_0,
+ HLP_TIMER_PDN_INACT_1,
+ HLP_TIMER_PDN_INACT_2,
+ HLP_TIMER_PDN_INACT_3,
+ HLP_TIMER_PDN_INACT_4,
+ HLP_TIMER_THROTTLING_EHRPD,
+ HLP_TIMER_UE_PARTIAL_CONTEXT, /* ehrpd end */
+ HLP_TIMER_MIP_RRP_REG, /* mip start */
+ HLP_TIMER_MIP_RRP_DEREG,
+ HLP_TIMER_MIP_RRQ_REG,
+ HLP_TIMER_MIP_AGENT_ADV,
+ HLP_TIMER_MIP_LIFETIME, /* mip end */
+ HLP_TIMER_IPV6_TEST,
+ HLP_TIMER_NAT,
+ HLP_TIMER_A12_REDIAL_PENDING,
+ HLP_TIMER_RSVAS_ABORT_REQ,
+ HLP_TIMER_VSNCP_PDN_OPEN,
+ HLP_TIMER_MAX_NUM
+}hlp_timer_enum;
+
+typedef enum
+{
+ /*Network Generates PDN Error*/
+ GeneralError = 0x8000,
+ UnauthorizedAPN,
+ PDNLimitExceeded,
+ NoPGWAvailable,
+ PGWUnreachable,
+ PGWReject,
+ InsufficientParameters,
+ ResourceUnavailable,
+ AdminProhibited,
+ PDNIDAlreadyInUse,
+ SubScriptionLimitation,
+ PDNConnAlreadyExistForPDN,
+ EmergencyNotSupported,
+ ReconnectNotAllowed,
+ /*User Defined PDN Error*/
+ EAPAKAfailure = 0x8080,
+ RetryTmrThrottling,
+ NetworkNoRsp,
+ PDNAttachAbort,
+ PDNLimitExceededInUESide,
+ PDNIDAlreadyInUseInUESide,
+ InvalidPDNAttachReq,
+ PdnRecFailure,
+ MainConnSetupFailure,
+ BearerResourceUnAvailable,
+ OpAbortByUser,
+ RttDataConnected,
+ EAPAKAReject,
+ LCPNego3Failure,
+ TCHSetupFailure,
+ NwNoRspInLCP,
+ NwNoRspInAuth,
+ A12Retry3Failure,
+ RsvasSuspended,
+ AbortByGMSS,
+ /*User Defined PPP Error*/
+ PppAuthFail = 0x80b0,
+ MipPppLcpTmo,
+ MipPppNcpTmo,
+ SipPppLcpTmo,
+ SipPppNcpTmo,
+ MipPppOptMismatch,
+ SipPppOptMismatch,
+ MipSolTmo,
+ MipRrqTmo,
+ MipRrpErr,
+ MipLcpFail,
+ SipLcpFail,
+ MipNcpFail,
+ SipNcpFail,
+ A12AuthFail,
+ EapAkaAuthFail,
+ MipAdminProhibFail,
+ MultiTchFail,
+ PppA12LcpTmo,
+ DnsNoResponse,
+ /*Network Generates MIP Error*/
+ /*0x80f0 - 0x8140: MIP error code, shall not disorder it*/
+ MipUnspecifiedFailure = 0x80f0,
+ MipAdminProhibited,
+ MipInsuffResources1,
+ MipMnFailedAuth,
+ MipHaFailedAuth,
+ MipLifetimeTooLong,
+ MipPoorlyFormedReq,
+ MipPoorlyFormedReply,
+ MipEncapUnavail,
+ MipReservedUnavail,
+ MipRevTunUnavail,
+ MipRTNTNotSet,
+ MipMnTooDistant,
+ MipInvalidCareOfAddr,
+ MipRegTimeout,
+ MipDsNotSupport,
+ MipHnUnreachable,
+ MipHaHostUnreachable,
+ MipHaPortUnreachable,
+ MipHaUnreachable = 0x8108,
+ MipVendorSpecific,
+ MipNonzeroHaAddr,
+ MipNonzeroHomeAddr = 0x8110,
+ MipMissingNai,
+ MipMissingHa,
+ MipMissingHomeAddr,
+ MipUnknownChall = 0x8118,
+ MipMissingChall,
+ MipStaleChall,
+ MipMissingMnFa,
+ MipReasonUnspec = 0x8130,
+ MipAdminProhib,
+ MipInsuffResources2,
+ MipMnFailedAuth2,
+ MipFaFailedAuth,
+ MipIdentMismatch,
+ MipPoorlyFormedReq2,
+ MipTooManyBindings,
+ MipUnknownHaAddr,
+ MipRevTunnelUnavail,
+ MipRTNTNotSet2,
+ MipEncapsulationUnavail = 0x813b,
+ MipRegWithRedirected = 0x813f,
+ MipErrCodeFromHome = 0x8140,
+ NullError = 0xeeee,
+ NoError = 0xffff
+}DataConnErrCodeT;
+
+/***********************************************************************/
+/* Message/Struct Definitions */
+/***********************************************************************/
+typedef struct
+{
+ NetworkT networkType;
+ SvcStatusT svcStatus;
+} networkSvcT;
+
+typedef struct
+{
+ networkSvcT ServiceStatus;
+} HlpOosaIndMsgT;
+
+typedef struct
+{
+ NetworkRspT SysToBeConnected;
+} HlpSystemQueryRspMsgT;
+
+/* Same as ValPswCallEndReasonT defined in valpswapi.h */
+typedef enum
+{
+ HLP_PSW_ORIG_FAIL=2,
+ HLP_PSW_ORIG_CANCELED_NDSS,
+ HLP_PSW_ORIG_CANCELED,
+ HLP_PSW_INTERCEPT,
+ HLP_PSW_REORDER,
+ HLP_PSW_CC_RELEASE,
+ HLP_PSW_CC_RELEASE_SO_REJ,
+ HLP_PSW_FNM_RELEASE,
+ HLP_PSW_DIALING_COMPLETE,
+ HLP_PSW_DIALING_CONTINUE,
+ HLP_PSW_MAINTENANCE,
+ HLP_PSW_VP_ON,
+ HLP_PSW_VP_OFF,
+ HLP_PSW_PSIST_FAIL,
+ HLP_PSW_TC_RELEASE_MS,
+ HLP_PSW_TC_RELEASE_PDOWN,
+ HLP_PSW_TC_RELEASE_DISABLE,
+ HLP_PSW_TC_RELEASE_BS,
+ HLP_PSW_TC_RELEASE_SO_REJECT,
+ HLP_PSW_TC_RELEASE_TIMEOUT,
+ HLP_PSW_TC_RELEASE_ACK_FAIL,
+ HLP_PSW_TC_RELEASE_FADE,
+ HLP_PSW_TC_RELEASE_LOCK,
+ HLP_PSW_PAGE_FAIL,
+ HLP_PSW_RETRY_TIMER_ACTIVE,
+ HLP_PSW_RETRY_TIMER_INACTIVE,
+ HLP_PSW_AMPS_INSVC,
+ HLP_PSW_ORIG_REJECTED,
+ HLP_PSW_EV_ORIG_RETRY_ORDER,
+ HLP_PSW_SO_REDIRECT
+} HlpPswCallEndReasonT;
+
+typedef struct
+{
+ HlpPswCallEndReasonT reason;
+} HlpConnectionFailedIndMsgT;
+
+typedef struct
+{
+ ConnectionRspT ConnRsp;
+} HlpConnectionRspMsgT;
+
+typedef struct
+{
+ kal_uint16 sid;
+ kal_uint16 nid;
+} HlpSidNidChangIndMsgT;
+
+typedef struct
+{
+ kal_uint8 pid;
+} HlpPktZoneIdChangIndMsgT;
+
+typedef struct
+{
+ kal_uint8 subnetId[16];
+} HlpSubnetIdChangIndMsgT;
+
+typedef struct
+{
+ kal_uint8 CallNumber[HLP_MAX_BWSR_DIG_LEN]; /* ASCII chars, NULL terminated */
+ kal_uint8 UserId[HLP_MAX_USRID_LEN]; /* Username use for SIP */
+ kal_uint8 Pswd[HLP_MAX_PSWD_LEN]; /* Password use for SIP */
+} DialingInfoT;
+
+typedef struct
+{
+ NspeAppT AppInstance;
+ kal_uint8 Action;
+} HlpUmAppInstanceMsgT;
+
+typedef struct
+{
+ kal_uint8 FileCount;
+ kal_uint16 FileId[VAL_UIM_FILE_CHANGE_LIST_MAX];
+} HlpUimFileChangeMsgT;
+
+typedef struct {
+ kal_uint32 ipaddress;
+ kal_uint16 port;
+} FilterMux;
+
+typedef struct {
+ FilterMux socket[4];
+ kal_uint16 currentSocketNum;
+}MuxInfo;
+
+typedef struct
+{
+ kal_bool gotoDormant;
+} HlpConnectionReleasedIndMsgT;
+
+typedef struct
+{
+ kal_bool success; /* True = TCH connection and 1X RLP established. */
+} HlpConnectionIndMsgT;
+
+typedef struct
+{
+ kal_bool TcpType; /* KAL_TRUE=TCP, KAL_FALSE=UDP */
+ kal_int16 socketId; /* input socket Id, will be used in the response message */
+ ExeRspMsgT SocketCreateRspInfo;
+ ExeRspMsgT SocketConnRspInfo;
+ ExeRspMsgT SocketCloseRspInfo;
+} HlpSocketCreateMsgT;
+
+typedef struct
+{
+ kal_uint32 IpAddr;
+ kal_uint16 Port;
+} HlpAppAddrT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+ HlpAppAddrT ResourceAddr;
+ ExeRspMsgT SocketBindRspInfo;
+} HlpSocketBindMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+ kal_bool Passive; /* KAL_FALSE=active, TURE=listen */
+ HlpAppAddrT DestAddr; /* IP and port number if active mode is chosen */
+} HlpSocketConnectMsgT;
+
+typedef enum
+{
+ HLP_IP6_ADDR_TYPE_PUBLIC,
+ HLP_IP6_ADDR_TYPE_PUBLIC_TEMP,
+ HLP_IP6_ADDR_TYPE_LOCAL
+} HlpIp6AddrTypeE;
+
+typedef struct
+{
+ kal_uint8 Sap;
+ kal_uint8 FlowId;
+ HlpIp6AddrTypeE AddrType;
+ kal_uint16 PeerAddrPort;
+ kal_uint32 PeerAddrIp[4];
+} HlpIp6SocketConnectMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+} HlpIp6SocketConnectRspMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+ kal_bool Graceful;
+} HlpSocketCloseMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap; /*server's sap*/
+ kal_int16 SockListenfd;
+ kal_int16 sockfd[5];
+ kal_uint8 SocketNum;
+ ExeRspMsgT MmiSocketListenRspInfo;
+} HlpSocketListenMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+ kal_uint8 opt_type; /* Specifies which option is being set */
+ kal_uint16 size;
+} HlpOptionRequestMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+ kal_int8 how;
+} HlpSocketShutDownMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+ kal_bool lingerOnOff;
+ kal_uint32 lingerTime;
+} HlpSocketLingerMsgT;
+
+typedef struct
+{
+ kal_uint32 IpAddr; /* 32-bit IP address. */
+ kal_uint16 UdpPort; /* UDP port address. */
+} HlpDatagramAddrT;
+
+typedef struct
+{
+ kal_uint8* DataBufP; /* Point to the first byte */
+ kal_uint16 DataLen; /* size of data in byte */
+ kal_uint8 Flags; /* if IP_MOREDATA is set in the flag
+ it indicates that datagram is not
+ able to fit into allocated buffer
+ Datagram is truncated to fit. */
+} HlpDatagramT;
+
+typedef struct
+{
+#if defined(MTK_PLT_ON_PC) && defined(MTK_PLT_ON_PC_UT)
+ kal_uint8 data[255];
+#endif
+ kal_uint8* DataP; /* point to the first byte of data. */
+ kal_uint16 Size; /* The size of data in byte. */
+ kal_bool Push; /* KAL_TRUE, send immediately; */
+ /* KAL_FALSE, TCP determine by itself. */
+ HlpDatagramAddrT To; /* The address of receipent for UDP */
+ kal_uint8 Sap; /* Socket of which the data is going to
+ be sent. */
+} HlpSocketSendReqMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+} HlpUpbRecvDataRspMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+} HlpTcpbRecvRspMsgT;
+
+typedef struct
+{
+ kal_uint32 SrcIp;
+ kal_uint32 DestIp;
+ kal_uint16 SrcPort;
+ kal_uint16 DestPort;
+ kal_uint16 DataLength;
+ kal_uint8 *DataPtr;
+} HlpMipRrpMsgT;
+
+typedef struct
+{
+ kal_uint32 SrcIp;
+ kal_uint32 DestIp;
+ kal_uint16 DataLength;
+ kal_uint8 *DataPtr;
+} HlpMipAgentAdvMsgT;
+
+typedef struct
+{
+ kal_uint8 Status;
+ kal_uint32 LocalIp;
+ kal_uint32 RemoteIp;
+} HlpMipUmPppStatusMsgT;
+
+typedef struct
+{
+ pppEndPointT interface;
+ kal_uint8 status;
+ kal_uint32 localAddr;
+ kal_uint32 remoteAddr;
+ kal_uint32 priDNS;
+ kal_uint32 secDNS;
+} HlpPppStatusMsgT;
+
+typedef struct
+{
+ kal_uint8 UserId[HLP_MAX_USRID_LEN];
+ kal_uint8 Pswd[HLP_MAX_PSWD_LEN];
+} HlpUsernamePasswdMsgT;
+
+typedef struct
+{
+ hlp_timer_enum TimerID;
+} HlpTimerExpiredMsgT;
+
+typedef struct
+{
+ kal_uint8* DataP; /* point to the first byte of data. */
+ kal_uint16 Size; /* The size of data in byte. */
+ kal_bool Push; /* KAL_TRUE, send immediately; */
+ /* KAL_FALSE, TCP determine by itself. */
+ kal_uint8 Sap; /* Socket of which the data is going to
+ be sent. */
+} HlpTcpbDataSendReqMsgT;
+
+typedef struct
+{
+ HlpDatagramT SendData; /* Datagram itself.. */
+ HlpDatagramAddrT To; /* The address of receipent. */
+ kal_uint8 Sap; /* SAP to TCB */
+} HlpUpbSendDataMsgT;
+
+typedef struct
+{
+ kal_bool NetworkMode; /* True: Network Mode, +CRM=2 */
+ /* False: Relay Mode, +CRM=1 */
+} HlpSetNetworkOrRelayModeMsgT;
+
+#ifdef CBP7_EHRPD
+typedef struct {
+ CpBufferT *dataPtr;
+ kal_uint16 offset;
+ kal_uint16 dataLen;
+} PafHlpFwdDataPktT;
+
+typedef struct
+{
+ kal_uint8 nAppType;
+ kal_uint8 nRLPFlowId;
+ kal_uint8 nRoute;
+ kal_bool bRohcEnabled;
+ kal_uint8 numRlpFrames;
+ PafHlpFwdDataPktT rlpFrames[MAX_RLP_FRAMES_PER_IP_PKT];
+} HlpRlpFwdIPDataPktT;
+#endif
+
+#if 1 //!defined (MTK_DEV_MEMORY_OPT)
+#define NUM_HLP_FWD_DATA_IND_ENTRIES 600
+#define NUM_HLP_REV_DATA_IND_ENTRIES 150
+#else
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef RmDataCpBuffDescT HlpRlpFwdDataPktT;
+typedef RmDataCpBuffDescT HlpRlpRevDataPktT;
+
+typedef struct
+{
+ kal_uint8 forceNetworkPref;
+ kal_uint8 forceCSSResp;
+} HlpSysSelPrefSetMsgT;
+
+typedef struct
+{
+ kal_uint8 nDMUV;
+} HlpValDMUVSetMsgT;
+
+typedef struct
+{
+ HlpConnCloseReasonT ConnCloseReason;
+} HlpConnStatusMsgT;
+
+#ifdef HSPD_PRI
+
+#define RSA_PUBLIC_KEY_BIT (1<<0)
+#define AUTH_SET_BIT (1<<1)
+#define PKOID_SET_BIT (1<<2)
+
+typedef enum
+{
+ RSA_PUBLIC_KEY_SET = RSA_PUBLIC_KEY_BIT,
+ AUTH_SET = AUTH_SET_BIT,
+ SET_BOTH = RSA_PUBLIC_KEY_BIT|AUTH_SET_BIT,
+ PKOID_SET = PKOID_SET_BIT
+} RsaSetE;
+
+typedef struct
+{
+ kal_uint8 nPKOID;
+ kal_uint8 nActiveDmuRsaPublicKeyNo;
+ kal_uint8 MN_Authenticator[MN_AUTH_MAX_SIZE];
+} HlpRSAPublicKeyOrgIdInfoT;
+
+typedef enum
+{
+ /* Set All Params in a Profile */
+ HL_PARM_SET_HSPD_SEG_PROFILE_DATA = 0,
+ HL_PARM_GET_HSPD_SEG_PROFILE_DATA,
+ HL_PARM_SET_HSPD_SECURE_SEG_PROFILE_DATA, /* no Gets for Secure Data */
+
+ HL_PARM_SET_HSPD_SECURE_SEG_PROFILE_BYTE_DATA,
+
+ HL_PARM_GET_HSPD_SECURE_SEG_PROFILE_DATA,
+
+ /* Set All HSPD SegData together, that are not part of a Profile */
+ HL_PARM_SET_HSPD_SEG_ALL_DATA,
+ HL_PARM_GET_HSPD_SEG_ALL_DATA,
+
+ /* Init HSPD Db to defaults */
+ HL_PARM_SET_HSPD_SEG_INIT, /* Init Hspd Data that are not part of a Profile */
+ HL_PARM_SET_HSPD_SEG_PROFILE_INIT, /* Init a Profile, with ProfileId */
+
+ /* Set Individual Params in HSPD SegData, that are not part of a Profile */
+ HL_PARM_SET_ACTIVE_PROFILE, /* ActiveProfile */
+ HL_PARM_GET_ACTIVE_PROFILE = 10,
+ HL_PARM_SET_NUM_PROFILE, /* NumProfiles */
+ HL_PARM_GET_NUM_PROFILE,
+ HL_PARM_SET_RRP_TIMEOUT, /* RRPTimeout */
+ HL_PARM_GET_RRP_TIMEOUT,
+ HL_PARM_SET_NUM_REG_RETRIES, /* NumRegRetries */
+ HL_PARM_GET_NUM_REG_RETRIES,
+ HL_PARM_SET_REG_BACKOFF, /* RRA */
+ HL_PARM_GET_REG_BACKOFF,
+ HL_PARM_SET_IS801_IPADDR, /* Is801_IpAddr */
+ HL_PARM_GET_IS801_IPADDR = 20,
+ HL_PARM_SET_IS801_PORTNUM, /* Is801_PortNum */
+ HL_PARM_GET_IS801_PORTNUM,
+ HL_PARM_SET_IS801_USERID, /* Is801_UserId[HLP_MAX_USRID_LEN]*/
+ HL_PARM_GET_IS801_USERID,
+ HL_PARM_SET_IS801_PSWD, /* Is801_Pswd[HLP_MAX_PSWD_LEN] */
+ HL_PARM_GET_IS801_PSWD,
+ HL_PARM_SET_IS801_CALLEDNUMBER, /* Is801_CalledNumber[HLP_MAX_BWSR_DIG_LEN] */
+ HL_PARM_GET_IS801_CALLEDNUMBER,
+ HL_PARM_SET_MN_HA_AUTH, /* 0-RFC2002, 1-RFC2002bis */
+ HL_PARM_GET_MN_HA_AUTH = 30,
+ HL_PARM_SET_MN_HA_AUTH_ALGO, /* MN_HA_Auth_Algo */
+ HL_PARM_GET_MN_HA_AUTH_ALGO,
+ HL_PARM_SET_MN_AAA_AUTH_ALGO, /* MN_AAA_Auth_Algo */
+ HL_PARM_GET_MN_AAA_AUTH_ALGO,
+ HL_PARM_SET_MN_AUTHENTICATOR, /* MN_Authenticator[MN_AUTH_MAX_SIZE] */
+ HL_PARM_GET_MN_AUTHENTICATOR,
+ HL_PARM_SET_ACTIVE_DMURSA_PK, /* ActiveDmuRsaPublicKey */
+ HL_PARM_GET_ACTIVE_DMURSA_PK,
+ HL_PARM_SET_NPKOID, /* nPKOID */
+ HL_PARM_GET_NPKOID = 40,
+ HL_PARM_SET_SIP_NAI, /* SIP_NAI[HLP_MN_NAI_MAX_SIZE] */
+ HL_PARM_GET_SIP_NAI,
+ HL_PARM_SET_SIP_DUN_NAI, /* SIP_DUN_NAI[HLP_MN_NAI_MAX_SIZE] */
+ HL_PARM_GET_SIP_DUN_NAI,
+ HL_PARM_SET_AN_NAI, /* AN_NAI[HLP_MN_NAI_MAX_SIZE] */
+ HL_PARM_GET_AN_NAI,
+ HL_PARM_SET_DORMANT_HANDOFF_OPTSET, /* DormantHandoffOptSet */
+ HL_PARM_GET_DORMANT_HANDOFF_OPTSET,
+ HL_PARM_SET_DATA_SCRM_ENABLED, /* DataScrmEnabled */
+ HL_PARM_GET_DATA_SCRM_ENABLED = 50,
+ HL_PARM_SET_DATA_TRTL_ENABLED, /* DataTrtlEnabled */
+ HL_PARM_GET_DATA_TRTL_ENABLED,
+ HL_PARM_SET_PREFRC, /* PrefRc */
+ HL_PARM_GET_PREFRC,
+ HL_PARM_SET_DNS_PRI_IP_ADDR,
+ HL_PARM_GET_DNS_PRI_IP_ADDR,
+ HL_PARM_SET_DNS_SEC_IP_ADDR,
+ HL_PARM_GET_DNS_SEC_IP_ADDR,
+ HL_PARM_GET_DNS_IP_ADDR,
+ HL_PARM_SET_DNS_IP_ADDR = 60,
+ HL_PARM_SET_MIP_MODE,
+ HL_PARM_GET_MIP_MODE,
+
+ /* Set Individual Params in HSPD Secure SegData, that are not part of a Profile */
+ HL_PARM_SET_SIP_STRING_PASSWORD,
+ HL_PARM_GET_SIP_STRING_PASSWORD,
+ HL_PARM_SET_AN_PASSWORD,
+ HL_PARM_GET_AN_PASSWORD,
+ HL_PARM_SET_AN_BINARY_PASSWORD,
+ HL_PARM_SET_SIP_BINARY_PASSWORD,
+ HL_PARM_SET_PACKET_DIAL_STRING,
+ HL_PARM_GET_PACKET_DIAL_STRING = 70,
+ HL_PARM_SET_VJ_COMPRESSION_ENABLE,
+ HL_PARM_GET_VJ_COMPRESSION_ENABLE,
+ HL_PARM_SET_MIP_STRING_PASSWORD,
+ HL_PARM_GET_MIP_STRING_PASSWORD,
+ HL_PARM_SET_MIP_BINARY_PASSWORD,
+ HL_PARM_GET_MIP_BINARY_PASSWORD,
+ HL_PARM_SET_QNC_ENABLED,
+ HL_PARM_GET_QNC_ENABLED,
+ HL_PARM_SET_MDR_MODE_ENABLED,
+ HL_PARM_GET_MDR_MODE_ENABLED = 80,
+ HL_PARM_SECURE_PROFILE_DATA_INIT,
+ HL_PARM_GET_SIP_BINARY_PASSWORD,
+#ifdef CBP7_EHRPD
+ HL_PARM_SET_AKA_PASSWORD = 83,
+ HL_PARM_GET_AKA_PASSWORD,
+ HL_PARM_SET_AKA_RROFILEDATA,
+ HL_PARM_GET_AKA_PROFILEDATA,
+#endif
+ HL_PARM_GET_HSPD_LOCK = 87,
+ HL_PARM_SET_HSPD_LOCK,
+ HL_PARM_SET_HSPD_LOCK_CODE,
+ HL_PARM_SET_DATA_AUTO_PACKET_DETECTION,
+ HL_PARM_GET_DATA_AUTO_PACKET_DETECTION,
+ HL_PARM_SET_DATA_SO,
+ HL_PARM_GET_DATA_SO,
+ HL_PARM_SET_MN_NAI,
+ HL_PARM_GET_MN_NAI,
+ HL_PARM_SET_MN_DUN_NAI,
+ HL_PARM_GET_MN_DUN_NAI,
+ HL_PARM_SET_MN_HA_SPI_ENABLE,
+ HL_PARM_GET_MN_HA_SPI_ENABLE,
+ HL_PARM_SET_MN_HA_SPI,
+ HL_PARM_GET_MN_HA_SPI,
+ HL_PARM_SET_MN_AAA_SPI_ENABLE,
+ HL_PARM_GET_MN_AAA_SPI_ENABLE,
+ HL_PARM_SET_MN_AAA_SPI,
+ HL_PARM_GET_MN_AAA_SPI,
+ HL_PARM_SET_MN_REVERSE_TUNNELING,
+ HL_PARM_GET_MN_REVERSE_TUNNELING,
+ HL_PARM_SET_MN_HOME_IP_ADDRESS,
+ HL_PARM_GET_MN_HOME_IP_ADDRESS,
+ HL_PARM_SET_HOME_AGENT_PRIMARY_IP_ADDRESS,
+ HL_PARM_GET_HOME_AGENT_PRIMARY_IP_ADDRESS,
+ HL_PARM_SET_HOME_AGENT_SECONDARY_IP_ADDRESS,
+ HL_PARM_GET_HOME_AGENT_SECONDARY_IP_ADDRESS,
+
+ HL_PARM_SET_HSPD_NETWORKMODE,
+ HL_PARM_GET_HSPD_NETWORKMODE,
+
+ HL_PARM_SET_HSPD_DORMANT_TIMER_MODE,
+ HL_PARM_GET_HSPD_DORMANT_TIMER_MODE,
+
+ HL_PARM_SET_MIP_DE_REG_RETRIES = 118,
+ HL_PARM_GET_MIP_DE_REG_RETRIES,
+ HL_PARM_SET_MIP_RE_REG_ONLYIF_TRAFFIC,
+ HL_PARM_GET_MIP_RE_REG_ONLYIF_TRAFFIC,
+ HL_PARM_SET_MIP_NAI_ENABLE,
+ HL_PARM_GET_MIP_NAI_ENABLE,
+
+ HL_PARM_SET_DATA_DO_TO_1X_ENABLE,
+ HL_PARM_GET_DATA_DO_TO_1X_ENABLE,
+
+ HL_PARM_SET_DATA_PPP_UM_CONFIG = 126,
+ HL_PARM_GET_DATA_PPP_UM_CONFIG,
+ HL_PARM_SET_DATA_PPP_RM_CONFIG,
+ HL_PARM_GET_DATA_PPP_RM_CONFIG,
+ HL_PARM_SET_DATA_TCP_CONFIG,
+ HL_PARM_GET_DATA_TCP_CONFIG,
+
+ HL_PARM_SET_DO_RETRY_TIMER = 132,
+ HL_PARM_GET_DO_RETRY_TIMER,
+
+#ifdef CBP7_EHRPD
+ HL_PARM_SET_EHRPD_TEST_MODE = 148,
+ HL_PARM_GET_EHRPD_TEST_MODE,
+#endif
+
+ HL_PARM_SET_PROFILE_VALID = 150,
+ HL_PARM_GET_PROFILE_VALID,
+ HL_PARM_VAL_AT_SET_HSPD_NETWORKMODE,
+ HL_PARM_VAL_AT_SET_AN_NAI,
+ HL_PARM_VAL_AT_GET_AN_NAI,
+
+ HL_PARM_OPERATION_ID_END_LIST
+} HlpParmOperationId;
+
+typedef enum
+{
+ HL_PARM_MIN_VALUE,
+ HL_PARM_MAX_VALUE,
+ HL_PARM_DEFAULT_VALUE,
+ HL_PARM_CUSTOM_VALUE,
+ HL_PARM_OP_TYPE_LIST_END
+} HlpParmOperationType;
+
+typedef enum
+{
+ HL_PARM_OPERATION_SUCCESS,
+ HL_PARM_OPERATION_FAIL_READ_NOT_ALLOWED,
+ HL_PARM_OPERATION_FAIL_WRITE_NOT_ALLOWED,
+ HL_PARM_OPERATION_NOT_ALLOWED_IN_HL_STATE,
+ HL_PARM_OPERATION_FAIL_INVALID_PTR,
+ HL_PARM_OPERATION_FAIL_INVALID_LENGTH,
+ HL_PARM_OPERATION_GENERAL_FAILURE,
+ HL_PARM_OPERATION_NO_CHANGE_IN_VALUE,
+ HL_PARM_OPERATION_FAIL_VALUE_OUT_OF_RANGE,
+ HL_PARM_OPERATION_PARAMETER_NOT_SUPPORTED,
+ HL_PARM_OPERATION_INTERFACE_NOT_SUPPORTED,
+ HL_PARM_OPERATION_FAIL_OP_TYPE_NOT_SUPPORTED,
+ HL_PARM_OPERATION_FAIL_DEFAULT_NOT_DEFINED,
+ HL_PARM_OPERATION_FAIL_DEFAULT_NOT_SUPPORTED_FOR_PARM,
+ HL_PARM_OPERATION_RESULT_END_LIST
+} HlpParmAccessResultCode;
+
+typedef enum
+{
+ NOT_CONNECTED,
+ DO_CONNECTING,
+ DO_CONNECTED,
+ RTT_CONNECTING,
+ RTT_CONNECTED
+} ConnStateT;
+
+typedef struct
+{
+ ExeRspMsgT resp;
+ kal_uint8 SMS_Over_IP_Networks_Indication;
+ kal_uint8 SigComp;
+ kal_uint8 ImsDomain[72];
+ kal_uint8 AkaPassword[72];
+ kal_uint16 SipT1Timer_ims;
+ kal_uint16 SipTFTimer_ims;
+ kal_uint16 SipT2Timer_ims;
+ kal_uint16 SipPcscfPort;
+} HlpSmsImsEtsCfgSetT;
+
+typedef struct
+{
+ kal_uint8 SMS_Over_IP_Networks_Indication;
+ kal_uint8 SigComp;
+ kal_uint8 ImsDomain[72];
+ kal_uint8 AkaPassword[72];
+ kal_uint16 SipT1Timer_ims;
+ kal_uint16 SipTFTimer_ims;
+ kal_uint16 SipT2Timer_ims;
+ kal_uint16 SipPcscfPort;
+} HlpSmsImsEtsCfgGetT;
+
+/* The following structures are to be obsolete
+ but keep them for backword compatible now
+typedef struct
+{
+ ExeRspMsgT resp;
+ kal_uint16 restartTimer;
+ kal_uint8 lcpReqTry;
+ kal_uint8 lcpNakTry;
+ kal_uint8 lcpTermTry;
+ kal_uint8 authRetry;
+ kal_uint8 ipcpReqTry;
+ kal_uint8 ipcpNakTry;
+ kal_uint8 ipcpTermTry;
+ kal_uint8 ipcpCompression;
+} HlpPppUmEtsCfgSetT;
+
+typedef struct
+{
+ kal_uint8 result;
+} HlpPppUmEtsCfgSetRespT;
+
+typedef struct
+{
+ kal_uint8 result;
+ kal_uint16 restartTimer;
+ kal_uint8 lcpReqTry;
+ kal_uint8 lcpNakTry;
+ kal_uint8 lcpTermTry;
+ kal_uint8 authRetry;
+ kal_uint8 ipcpReqTry;
+ kal_uint8 ipcpNakTry;
+ kal_uint8 ipcpTermTry;
+ kal_uint8 ipcpCompression;
+} HlpPppUmEtsCfgGetT;
+
+typedef struct
+{
+ kal_uint16 restartTimer;
+ kal_uint8 lcpReqTry;
+ kal_uint8 lcpNakTry;
+ kal_uint8 lcpTermTry;
+ kal_uint8 authRetry;
+ kal_uint8 ipcpReqTry;
+ kal_uint8 ipcpNakTry;
+ kal_uint8 ipcpTermTry;
+ kal_uint8 ipcpCompression;
+} HlpPppUmEtsCfgT;
+ The above structures are to be obsolete
+ but keep them for backword compatible now */
+
+
+
+typedef struct
+{
+ kal_uint32 RxBytes;
+ kal_uint32 RxPackets;
+ kal_uint32 BadRxPackets;
+ kal_uint32 TxBytes;
+ kal_uint32 TxPackets;
+ kal_uint64 TotalRxBytes;
+ kal_uint64 TotalRxPackets;
+ kal_uint64 TotalBadRxPackets;
+ kal_uint64 TotalTxBytes;
+ kal_uint64 TotalTxPackets;
+} IPCounterT;
+
+typedef struct
+{
+ kal_uint8 lcpReqTries;
+ kal_uint8 lcpNakTries;
+ kal_uint16 lcpRestartTimer;
+ kal_uint8 lcpTermTries;
+ kal_uint16 lcpTermTimer;
+ kal_uint8 authRetries;
+ kal_uint16 authTimer;
+ kal_uint8 ncpReqTries;
+ kal_uint8 ncpNakTries;
+ kal_uint16 ncpReStrTimer;
+ kal_uint8 ncpTermTries;
+ kal_uint16 ncpTermTimer;
+} HlpPppUmCfg_APIStruct;
+
+typedef struct
+{
+ kal_bool pppKeepAlive;
+ kal_bool pppDetect;
+ kal_uint8 lcpReqTries;
+ kal_uint8 lcpNakTries;
+} HlpPppRmCfg_APIStruct;
+
+typedef struct
+{
+ kal_uint16 tcpMtu;
+} HlpTcpCfgSet_APIStruct;
+
+typedef struct
+{
+ kal_uint16 tcpMtu;
+ kal_uint16 tcpWinSize_1XRTT;
+ kal_uint16 tcpWinSize_EVDO;
+} HlpTcpCfg_APIStruct;
+
+typedef struct{
+ kal_uint8 ProfileId;
+ kal_uint8 NAI[HLP_MN_NAI_MAX_SIZE];
+} HlpHspdMNNAI_APIStruct;
+
+typedef struct{
+ kal_uint8 ProfileId;
+ kal_uint8 MN_REV_TUNNELING;
+} HlpHspdRevTunneling_APIStruct;
+
+typedef struct{
+ kal_uint8 ProfileId;
+ kal_uint32 SPI;
+} HlpHspdMNSPI_APIStruct;
+
+typedef struct{
+ kal_uint8 ProfileId;
+ kal_bool SPI_Enable;
+} HlpHspdMNSPIEnable_APIStruct;
+
+typedef struct{
+ kal_uint8 ProfileId;
+ kal_uint32 IPAddress;
+} HlpHspdProfileIPAddress_APIStruct;
+
+typedef struct{
+ kal_uint8 ProfileId;
+} HlpHspdProfileParmGet_APIStruct;
+
+typedef struct{
+ kal_uint8 ProfileId;
+ kal_bool Profile_Valid;
+ kal_uint32 MN_HOME_IP_ADDR;
+ kal_uint32 HA_PRI_IP_ADDR;
+ kal_uint32 HA_SEC_IP_ADDR;
+ kal_uint8 MN_NAI[HLP_MN_NAI_MAX_SIZE];
+ kal_uint8 MN_DUN_NAI[HLP_MN_NAI_MAX_SIZE];
+ kal_uint8 MN_REV_TUNNELING;
+ kal_bool bMN_HA_SPI_Enable;
+ kal_uint32 MN_HA_SPI;
+ kal_bool bMN_AAA_SPI_Enable;
+ kal_uint32 MN_AAA_SPI;
+} HlpProfileData_APIStruct;
+
+typedef struct
+{
+ kal_uint8 ProfileId;
+ kal_bool Profile_Valid;
+ kal_uint8 MN_AAA_PASSWORD_LEN;
+ kal_uint8 MN_AAA_PASSWORD[MN_PASSWD_MAX_SIZE]; /* MIP AAA Shared Secret*/
+ kal_uint8 MN_HA_PASSWORD_LEN;
+ kal_uint8 MN_HA_PASSWORD[MN_PASSWD_MAX_SIZE]; /* MIP HA Shared Secret */
+} HlpSecureProfileData_APIStruct;
+
+typedef struct
+{
+ kal_uint8 ProfileId; /* Init the data to defaults, for this ProfileId */
+} HlpInitHspdProfileData_APIStruct;
+
+typedef struct
+{
+ kal_uint8 ProfileId; /* Init the data to defaults, for this ProfileId */
+} HlpGetHspdProfileData_APIStruct;
+
+typedef struct
+{
+
+ /* HSPD Seg Data, that are not part of a profile */
+ /*===============================================*/
+ kal_uint8 RRPTimeout; /* RRP MIP Registration timeout */
+ kal_uint8 NumRegRetries; /* RRP MIP Registration Retry Attempts */
+ kal_uint16 RRA; /* Pre Re-registration backoff */
+ kal_uint32 Is801_IpAddr;
+ kal_uint16 Is801_PortNum;
+ kal_uint8 Is801_UserId[HLP_MAX_USRID_LEN];
+ kal_uint8 Is801_Pswd[HLP_MAX_PSWD_LEN];
+ kal_uint8 Is801_CalledNumber[HLP_MAX_BWSR_DIG_LEN];
+
+ kal_uint8 MN_HA_AUTH; /* 0-RFC2002, 1-RFC2002bis, 2-bypassHA */
+ kal_uint8 MN_HA_Auth_Algo;
+ kal_uint8 MN_AAA_Auth_Algo;
+ kal_uint8 MN_Authenticator[MN_AUTH_MAX_SIZE];
+ kal_uint8 ActiveDmuRsaPublicKey; /* 0-TestKey, 1-CommercialKey */
+ kal_uint8 nPKOID;
+
+ kal_uint8 SIP_NAI[HLP_MN_NAI_MAX_SIZE];
+ kal_uint8 SIP_DUN_NAI[HLP_MN_NAI_MAX_SIZE];
+ kal_uint8 AN_NAI[HLP_MN_NAI_MAX_SIZE];
+
+ kal_uint8 DormantHandoffOptSet; /* 0-Disabled, 1-Enabled */
+ kal_uint8 DataScrmEnabled; /* Supp Chan Supported */
+ kal_uint8 DataTrtlEnabled; /* Slow Down data at high CPU utilization */
+ kal_uint8 PrefRc; /* Preferred Radio Cfg. Default-RC3 */
+ kal_uint32 DNS_PRI_IP_ADDR;
+ kal_uint32 DNS_SEC_IP_ADDR;
+ kal_uint8 MIPMode;
+
+ kal_uint32 ActiveProfile;
+ kal_uint8 NumProfiles;
+ kal_uint8 VJCompEnabled;
+ /* HSPD Secure Seg Data, that are not part of a profile */
+ /*======================================================*/
+ /* Only Set applies, no Gets for Secure Data */
+ kal_uint8 SIP_PASSWORD[HLP_MAX_PSWD_LEN]; /* Simple IP User Password */
+ kal_uint8 AN_PASSWORD[HLP_MAX_PSWD_LEN]; /* AN Shared Secret*/
+} HlpHspdSegData_APIStruct;
+
+typedef struct
+{
+ kal_uint8 RRPTimeout;
+} HlpRrpTimeout_APIStruct;
+
+typedef struct
+{
+ kal_uint8 NumRegRetries;
+} HlpNumRegRetries_APIStruct;
+
+typedef struct
+{
+ kal_uint8 NumDeRegRetries;
+} HlpDeRegRetries_APIStruct;
+
+typedef struct
+{
+ kal_bool ReRegOnlyIfTraffic;
+} HlpReRegOnlyIfTraffic_APIStruct;
+
+typedef struct
+{
+ kal_bool MipNaiEnabled;
+} HlpMipNaiEnable_APIStruct;
+
+typedef struct
+{
+ kal_uint16 RRA;
+} HlpReRegBackoff_APIStruct;
+
+typedef struct
+{
+ kal_uint32 Is801_IpAddr;
+} HlpIs801IpAddr_APIStruct;
+
+typedef struct
+{
+ kal_uint16 Is801_PortNum;
+} HlpIs801PortNum_APIStruct;
+
+typedef struct
+{
+ kal_uint8 Is801_UserId[HLP_MAX_USRID_LEN];
+} HlpIs801UserId_APIStruct;
+
+typedef struct
+{
+ kal_uint8 Is801_Pswd[HLP_MAX_PSWD_LEN];
+} HlpIs801Pswd_APIStruct;
+
+typedef struct
+{
+ kal_uint8 Is801_CalledNumber[HLP_MAX_BWSR_DIG_LEN];
+} HlpIs801CalledNumber_APIStruct;
+
+typedef struct
+{
+ kal_uint8 MN_HA_AUTH; /* 0-RFC2002, 1-RFC2002bis, 2-bypassHA */
+} HlpMNHAAUTH_APIStruct;
+typedef struct
+{
+ kal_uint8 MN_HA_Auth_Algo;
+} HlpMNHAAuthAlgo_APIStruct;
+
+typedef struct
+{
+ kal_uint8 MN_AAA_Auth_Algo;
+} HlpMNAAAAuthAlgo_APIStruct;
+
+typedef struct
+{
+ kal_uint8 MN_Authenticator[MN_AUTH_MAX_SIZE];
+} HlpMNAuthenticator_APIStruct;
+
+typedef struct
+{
+ kal_uint8 ActiveDmuRsaPublicKey; /* 0-TestKey, 1-CommercialKey */
+} HlpActiveDmuRsaPublicKey_APIStruct;
+
+typedef struct
+{
+ kal_uint8 nPKOID;
+} HlpPKOID_APIStruct;
+
+typedef struct
+{
+ kal_uint8 SIP_NAI[HLP_MN_NAI_MAX_SIZE];
+} HlpSIPNAI_APIStruct;
+
+typedef struct
+{
+ kal_uint8 SIP_DUN_NAI[HLP_MN_NAI_MAX_SIZE];
+} HlpSIPDUNNAI_APIStruct;
+
+typedef struct
+{
+ kal_uint8 AN_NAI[HLP_MN_NAI_MAX_SIZE];
+} HlpANNAI_APIStruct;
+
+typedef struct
+{
+ kal_uint8 DormantHandoffOptSet; /* 0-Disabled, 1-Enabled */
+} HlpDormantHandoffOptSet_APIStruct;
+
+typedef struct
+{
+ kal_uint8 DataScrmEnabled; /* Supp Chan Supported */
+} HlpDataScrmEnabled_APIStruct;
+
+typedef struct
+{
+ kal_uint8 DataTrtlEnabled; /* Slow Down data at high CPU utilization */
+} HlpDataTrtlEnabled_APIStruct;
+
+typedef struct
+{
+ kal_uint8 PrefRc; /* Preferred Radio Cfg. Default-RC3 */
+} HlpPrefRc_APIStruct;
+
+typedef struct
+{
+ kal_uint8 VJCompressionEnabled;
+} HlpVJCompressionEnabled_APIStruct;
+
+typedef struct
+{
+ kal_uint8 DialString[HLP_NUM_DIAL_STRING_DIGITS];
+} HlpDialString_APIStruct;
+
+typedef struct
+{
+ kal_bool QNC_Enabled;
+} HlpQncEnabled_APIStruct;
+
+typedef struct
+{
+ kal_uint8 MDR_Mode;
+} HlpMdrMode_APIStruct;
+
+typedef struct
+{
+ kal_bool DoTo1X_Enabled;
+} HlpDoTo1XEnabled_APIStruct;
+
+typedef struct
+{
+ kal_uint32 DNS_PRI_IP_ADDR;
+} HlpDNSPRIIPADDR_APIStruct;
+
+typedef struct
+{
+ kal_uint32 DNS_SEC_IP_ADDR;
+} HlpDNSSECIPADDR_APIStruct;
+
+typedef struct
+{
+ HlpDNSPRIIPADDR_APIStruct PriIpAddr;
+ HlpDNSSECIPADDR_APIStruct SecIpAddr;
+} HlpDNSIPADDR_APIStruct;
+
+typedef struct
+{
+ kal_uint32 ActiveProfile;
+} HlpActiveProfile_APIStruct;
+
+typedef struct
+{
+ kal_uint8 ProfileId;
+ kal_bool Profile_Valid;
+} HlpProfileValid_APIStruct;
+
+typedef struct
+{
+ kal_uint8 NumProfiles;
+} HlpNumProfiles_APIStruct;
+
+typedef struct
+{
+ kal_uint8 MipMode;
+} HlpMipMode_APIStruct;
+
+typedef struct
+{
+ kal_uint8 SIP_PASSWORD[HLP_MAX_PSWD_LEN];
+} HlpSipPassword_APIStruct;
+
+typedef struct
+{
+ kal_uint8 AN_PASSWORD[HLP_MAX_PSWD_LEN];
+} HlpAnPassword_APIStruct;
+
+typedef struct
+{
+ kal_uint8 AN_PASSWORD_LEN;
+ kal_uint8 AN_PASSWORD[HLP_MAX_PSWD_LEN];
+} HlpAnBinaryPassword_APIStruct;
+
+typedef struct
+{
+ kal_uint8 ProfileId;
+ kal_uint8 MN_AAA_PASSWORD_LEN;
+ kal_uint8 MN_AAA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+ kal_uint8 MN_HA_PASSWORD_LEN;
+ kal_uint8 MN_HA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+} HlpMIPPasswordHex_APIStruct;
+
+typedef struct
+{
+ kal_uint8 ProfileId;
+ kal_uint8 MN_HA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+ kal_uint8 MN_AAA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+} HlpMIPPasswordString_APIStruct;
+
+typedef struct
+{
+ kal_uint8 SIP_PASSWORD_LEN;
+ kal_uint8 SIP_PASSWORD[HLP_MAX_PSWD_LEN];
+} HlpSIPPasswordHex_APIStruct;
+
+typedef struct
+{
+ kal_uint8 ProfileId; /* Init the data to defaults, for this ProfileId */
+} HlpSecureSegInit_APIStruct;
+
+typedef struct
+{
+ kal_bool HspdLocked;
+} HlpHspdLockGet_APIStruct;
+
+typedef struct
+{
+ kal_uint16 LockCode;
+ kal_bool Lock;
+} HlpHspdLockSet_APIStruct;
+
+typedef struct
+{
+ kal_uint16 CurrentLockCode;
+ kal_uint16 NewLockCode;
+} HlpHspdLockCode_APIStruct;
+
+typedef struct
+{
+ kal_bool Enable; /* KAL_TRUE: Scan the serial link for PPP packets
+ Default is KAL_FALSE: Wait for ATD #777*/
+} HlpDataAutoPacketDetection_APIStruct;
+
+typedef struct
+{
+ kal_bool HspdNetworkMode;
+} HlpHspdNetworkMode_APIStruct;
+
+typedef struct
+{
+ kal_uint16 T_Dormancy;
+ kal_uint16 T_HRPD_Search;
+ kal_uint16 T_Rapid_Dormancy;
+ kal_uint16 T_ResDef_Dormancy;
+#ifdef MTK_CBP
+ /* refer to DormParmCheckT enum
+ * bit3: T_ResDef_Dormancy; bit2: T_Rapid_Dormancy; bit1: T_HRPD_Search; bit0: T_Dormancy.
+ * if 1, need check
+ */
+ DormParmCheckT Check_Flag;
+#endif
+} HlpDormantTimerData_APIStruct;
+
+typedef struct
+{
+ kal_uint16 T_DO_Retry;
+} HlpDoRetryTimerData_APIStruct;
+
+typedef struct {
+ kal_uint16 T_Dormancy;
+} HlpValCtaUpdateReqMsgT;
+
+typedef enum
+{
+ HLP_DATA_SO_PRE701=0,
+ HLP_DATA_SO_QP=1,
+ HLP_DATA_SO_IS701=2
+} HlpDataSOType;
+
+typedef struct
+{
+ HlpDataSOType SOSetType;
+} HlpDataSO_APIStruct;
+
+typedef struct
+{
+ HlpParmOperationId ParmId;
+ kal_bool InProgress;
+ kal_bool RspNeeded;
+ ExeRspMsgT RspInfo;
+ kal_int16 RegId;
+} HlpSecureRspType;
+
+typedef struct {
+ kal_uint8 N_DIGITS;
+ kal_uint8 MDN[OTA_MAX_MDN_DIGITS];
+} HlpPswMDNUpdatedMsgT;
+
+typedef struct
+{
+ kal_bool TriggeredByCs;
+} HlpPswRsvasAbortReqMsgT;
+
+#define MAX_CHAP_DATA_LEN 16
+
+typedef struct{
+ kal_uint8 ChapId;
+ kal_uint8 ChapLen;
+ kal_uint8 ChapData[MAX_CHAP_DATA_LEN];
+} HlpUimAccessChapTestMsgT;
+
+typedef struct {
+ kal_uint16 T_Dormancy;
+ kal_uint16 T_HRPD_Search;
+ kal_uint16 T_Rapid_Dormancy;
+ kal_uint16 T_ResDef_Dormancy;
+ DormParmCheckT Check_Flag;
+} HlpDormancyTimersSetMsgT;
+
+typedef struct {
+ kal_uint16 T_DO_Retry;
+} HlpDORetryTimersSetMsgT;
+
+typedef HlpSecureRspType HlpSegRspType;
+#endif
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+ kal_uint8 AKA_PASSWORD[HLP_MAX_PSWD_LEN];
+} HlpAkaPassword_APIStruct;
+
+typedef struct
+{
+ HlpHspdAkaProfileDataT AkaProfileData;
+} HlpAkaProfileData_APIStruct;
+
+typedef enum
+{
+ AKAAuth_Success,
+ AKAAuth_AUTNFailure,
+ AKAAuth_SQNSyncFailure,
+ AKAAuth_RESInvalid,
+ AKAAuth_CKInvalid,
+ AKAAuth_IKInvalid,
+ AKAAuth_UnknowFailure
+#if EAP_AKA_PRIME
+ ,
+ AKAAuth_KDFIputInvalid,
+ AKAAuth_KDFInvalid
+#endif
+} EapAkaAuthResultT;
+
+typedef struct
+{
+ EapAkaAuthResultT authResult;
+} HlpSecAkaAuthRspMsgT;
+#endif
+
+typedef struct
+{
+ kal_bool bEncryptDecryptResult;
+} HlpSecAesCryptRspMsgT;
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ kal_uint8 FlowId;
+ HlpIp6AddrTypeE AddrType;
+ kal_uint16 LocalAddrPort;
+ kal_uint16 PeerAddrPort;
+ kal_uint32 PeerAddrIp[4];
+} HlpIp6TcpConnectionOpenMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+} HlpTcpConnectionOpenRspMsgT;
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ kal_uint16 LocalAddrPort;
+ kal_uint16 PeerAddrPort;
+ kal_uint32 PeerAddrIp;
+} HlpIp4TcpConnectionOpenMsgT;
+
+#ifdef CBP7_EHRPD
+typedef struct
+{
+ kal_bool eEHRPD;
+} HlpImsEHRPDAttriMsgT;
+
+/* IP6 related Begin */
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ kal_uint8 FlowId;
+ HlpIp6AddrTypeE AddrType;
+ kal_uint16 LocalAddrPort;
+ kal_uint16 PeerAddrPort;
+ kal_uint32 PeerAddrIp[4];
+ kal_int32 PayloadSize;
+} HlpIp6UdpConnectionOpenMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+} HlpIp6UdpConnectionOpenRspMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+} HlpIp6UdpConnectionCloseMsgT;
+
+typedef struct
+{
+ kal_uint8 Sap;
+} HlpIp6TcpConnectionCloseMsgT;
+
+/* IP6 related End */
+
+
+typedef struct
+{
+ kal_bool bRevRohcOnRlpFlow;
+ HlpProtocolIdentifierT RevProtcolID;
+ RevRohcProtocolParmsT RevRohcParms;
+ kal_bool bFwdRohcOnRlpFlow;
+ HlpProtocolIdentifierT FwdProtcolID;
+ FwdRohcProtocolParmsT FwdRohcParms;
+} HlpRlpFlowProtocolInfoT;
+
+typedef struct
+{
+ HlpRlpFlowProtocolInfoT RlpFlowProtocolInfo[MAX_HLP_FLOW_SUPPORTED];
+} HlpRlpFlowProtocolInfoMsgT;
+
+typedef struct
+{
+ kal_uint8 curRoute;
+} HlpRlpRouteChangedMsgT;
+#endif
+
+typedef enum
+{
+ HLP_PPP_ROUTE_DEFAULT,
+ HLP_PPP_ROUTE_NDIS
+} HlpPppRouteTypeE;
+
+typedef struct
+{
+ kal_uint8 RouteType;
+} HlpPppRouteTypeSetMsgT;
+
+typedef enum
+{
+ PATH_HDLC,
+ PATH_IP,
+ PATH_ROHC,
+ PATH_IP_WITH_PDNMUX
+} HlpRlpDataPathT;
+
+typedef struct
+{
+ NetworkT network;
+ SvcStatusT svcStatus;
+} HlpSvcStatusMsgT;
+
+typedef enum
+{
+ CONN_SUSPEND,
+ CONN_RESUME,
+ CONN_DISABLE,
+ CONN_RELEASE,
+ CONN_RESET
+} ConnCmdT;
+
+typedef struct
+{
+ ConnCmdT dataCmd;
+} HlpDataConnectionCmdT;
+
+typedef enum
+{
+ PowerUp,
+ HybridRegistration,
+ RTTOnlyRegistration,
+ TriggerPDRegistration,
+ DefaultAttach,
+ SetIPv6Address,
+ DedicateAttach,
+ DetachAll,
+ SendPING_IPv4,
+ SendPING_IPv6
+} ActionT;
+
+typedef struct
+{
+ ActionT myAction;
+ kal_uint32 Ipv4Src;
+ kal_uint32 Ipv4Dst;
+ kal_uint32 Ipv6Src[4];
+ kal_uint32 Ipv6Dst[4];
+ kal_uint8 PDNid;
+ kal_uint8 PDNtype;
+ kal_uint8 AttachType;
+ kal_uint8 APNstring[16];
+} HlpTestBrowserConnectMsgT;
+
+typedef struct
+{
+ kal_bool bPowerUp;
+} HlpPowerReqMsgT;
+
+
+typedef enum
+{
+ HLP_DOANAUTH_CHINATELECOM,
+ HLP_DOANAUTH_INDONESIASMART,
+ HLP_DOANAUTH_CARRIER_MAX
+} HlpDOANAuthT;
+
+typedef struct
+{
+ HlpDOANAuthT DOANAuthAlgo;
+} HlpDOANAuthAlgoSetMsgT;
+
+typedef struct
+{
+ kal_uint32 SrcAddr;
+ kal_uint32 DstAddress;
+ kal_uint32 Length;
+ kal_uint8 Data[520];
+} HlpValPingReqMsgT;
+
+typedef struct
+{
+ kal_uint8 Apn[100]; /* APN of PDN which need update its inactivity timer */
+} HlpValUpdatePdnInactivityTimerT;
+
+typedef enum
+{
+ HLP_VAL_SET_PCMT_MODE = 0,
+ HLP_VAL_READ_PCMT_MODE,
+ HLP_VAL_PCMT_INVALID_MODE = 255
+}HlpValPcmtModeT;
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ HlpValPcmtModeT mode;
+ kal_bool pcmtIratSet;
+ kal_uint32 pcmtIratValue;
+ kal_bool pcmtEhrpdSet;
+ kal_uint32 pcmtEhrpdValue;
+} HlpValPcmtParaMsgT;
+
+typedef struct
+{
+ kal_uint8 AppSubType;
+} HlpPppDataReqMsgT;
+
+typedef enum
+{
+ HLP_UT_CONFIG_PARAM_1X_PS_ORIG_FAIL_REASON,
+ HLP_UT_CONFIG_PARAM_CONTINUE_PROCESS_RATDM_UL_DATA,
+ HLP_UT_CONFIG_PARAM_MCC,
+ HLP_UT_CONFIG_PARAM_COMPLETE_PROCESS_DL_DATA,
+ HLP_UT_CONFIG_PARAM_SBP_ID,
+ HLP_UT_CONFIG_PARAM_MAX
+}HlpUtConfigParamT;
+
+typedef struct
+{
+ kal_uint32 LocalIPAddr;
+ kal_uint32 PriDNSAddr;
+ kal_uint32 RemoteIPAddr;
+ kal_uint32 SecDNSAddr;
+ kal_uint16 IPv4MTU;
+}NwAppliedParm1xHRPDT;
+
+typedef struct
+{
+ kal_uint8 Cid; /*context id of PDP*/
+ NetworkPrefT NetworkPref;
+ NspeAppT AppType;
+ DialingInfoT CallInfo;
+ kal_uint16 InactivityTmr; /* number of seconds for 1X RLP only */
+ kal_bool ReleaseTchWhenFallback; /* MIP to SIP fallback, release TCH */
+ HlpPppRouteTypeE RouteType;
+}HlpPppConnectReqMsgT;
+
+typedef struct
+{
+ kal_uint8 Cid; /*context id of PDP*/
+ DataConnErrCodeT ErrCode;
+ NwAppliedParm1xHRPDT Parm;
+}HlpPppConnectCnfMsgT;
+
+typedef struct
+{
+ kal_uint8 Cid; /*context id of PDP*/
+}HlpPppDisconnectReqMsgT;
+
+typedef struct
+{
+ kal_uint8 Cid; /*context id of PDP*/
+}HlpPppUpdateReqMsgT;
+
+typedef struct
+{
+ kal_uint8 Cid; /*context id of PDP*/
+}HlpPppDisconnectCnfMsgT;
+
+typedef enum
+{
+ DISCONNECT_BY_NW,
+ DISCONNECT_BY_ME
+}DataDiscCauseT;
+
+typedef struct
+{
+ kal_uint8 Cid; /*context id of PDP*/
+ DataDiscCauseT Cause;
+}HlpPppDisconnectIndMsgT;
+
+typedef struct
+{
+ kal_uint8 Cid; /*context id of PDP*/
+ NwAppliedParm1xHRPDT Parm;
+}HlpPppModifyIndMsgT;
+
+/*---------------------------------------------------------------
+* Declare global variables
+*----------------------------------------------------------------*/
+extern kal_bool PppFilterIpMux;
+
+extern MuxInfo FilterMuxInfo;
+/*---------------------------------------------------------------
+* Declare global function prototypes
+*----------------------------------------------------------------*/
+
+extern void PppHaDecode0Lisr (kal_uint32 irq_id);
+extern void PppHaDecode1Lisr (kal_uint32 irq_id);
+extern void PppHaEncode0Lisr (kal_uint32 irq_id);
+extern void PppHaEncode1Lisr (kal_uint32 irq_id);
+extern void HlpSetInternetPdnId(kal_uint8 PdnId);
+
+RmDataQBuffStatusE RmWrite(RmDataCpBuffDescT *Buff, kal_uint32 flags);
+RmDataQBuffStatusE RmRead(RmDataCpBuffDescT * Buff);
+void C2kPppLineStatusNotify(kal_uint32 PppStatus);
+void C2kPppLineStatusIndicate(kal_uint32 PppStatus);
+kal_bool HlpIsHightPriorityConnReq(void);
+
+#endif
+
+
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpcam.h b/mcu/interface/protocol/l2_c2k/common/hlpcam.h
new file mode 100644
index 0000000..b0fd5e0
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpcam.h
@@ -0,0 +1,226 @@
+/*****************************************************************************
+* 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.
+*
+*************************************************************/
+/*******************************************************************************
+ *
+ * FILE NAME : HlpCam.H
+ *
+ * DATE CREATED : 06/22/06
+ *
+ * DESCRIPTION : Header file for HlpCam.c
+ *
+ *******************************************************************************
+ ******************************************************************************/
+
+#ifndef _HLPCAM_H_
+#define _HLPCAM_H_
+
+/*******************************************************************************
+ Include Header Files
+ (No absolute paths - paths handled by make file)
+*******************************************************************************/
+#include "hlpapi.h"
+#include "cpbuf.h"
+#include "valapi.h"
+
+/*******************************************************************************
+ Macros
+*******************************************************************************/
+
+#define PPP_STATUS_FLAG_INTERFACE 1
+#define PPP_STATUS_FLAG_STATUS 2
+#define PPP_STATUS_FLAG_LOCALADDR 4
+#define PPP_STATUS_FLAG_REMOTEADDR 8
+#define PPP_STATUS_FLAG_PRIDNS 16
+#define PPP_STATUS_FLAG_SECDNS 32
+#define CAM_FORCE_STATE_EV 0xFF
+
+#define HLP_DO_SUBNET_ID_MAX_LEN 16
+#define HLP_1X_SID_PID_MAX_LEN 16
+#define MAX_NUM_SYS_TMR_ENTRY 7
+
+/*******************************************************************************
+ User-Defined Types (Typedefs)
+*******************************************************************************/
+typedef enum
+{
+ CAM_IDLE_ST,
+ CAM_IDLE_WFR_SYSTEM_RSP_ST,
+ CAM_IDLE_WFR_CP_CONNECT_ST,
+ CAM_IDLE_WFR_CP_CONNECT_RETRY_ST,
+ CAM_WFR_UM_CONNECT_ST,
+ CAM_WFR_RM_CONNECT_ST,
+ CAM_CONNECTED_ST,
+ CAM_WFR_UM_RELEASE_ST,
+ CAM_WFR_RM_RELEASE_ST,
+ CAM_WFR_CP_DORMANT_ST,
+ CAM_DORMANT_ST,
+ CAM_DORMANT_WFR_SYSTEM_RSP_ST,
+ CAM_DORMANT_WFR_CP_CONNECT_ST,
+ CAM_DORMANT_WFR_CP_CONNECT_RETRY_ST,
+ CAM_WFR_CP_RELEASE_ST,
+ CAM_WFR_XOFF_RESPONSE_ST,
+ CAM_NUM_STATES
+} CamStatesT;
+
+typedef enum
+{
+ CAM_PPP_CONNECT_REQ_EV,
+ CAM_ANSWER_REQ_EV,
+ CAM_DORMANT_REQ_EV,
+ CAM_PPP_RELEASE_REQ_EV,
+ CAM_DORMANT_RECONNECT_REQ_EV,
+ CAM_CONNECTION_OPENED_IND_EV,
+ CAM_CONNECTION_FAILED_IND_EV,
+ CAM_CONNECTION_RELEASED_IND_EV,
+ CAM_SYSTEM_QUERY_RSP_EV,
+ CAM_OOSA_IND_EV,
+ CAM_UM_PPP_STATUS_RSP_EV,
+ CAM_RM_PPP_STATUS_RSP_EV,
+ CAM_RLP_INACT_IND_EV,
+ CAM_RLP_OPEN_FAILED_EV,
+ CAM_XOFF_RESPONSE_RCVD_EV,
+ CAM_NUM_EVENTS
+} CamEventsT;
+
+typedef struct
+{
+ kal_bool InUse;
+ kal_uint8 PdnId;/*PPP error: 0xff, PDN error: pdn id*/
+ DataConnErrCodeT ErrorCode;
+} PsConnErrorCodeT;
+
+typedef struct
+{
+ kal_uint8 Cid;
+ NetworkPrefT NetworkPref;
+ NspeAppT AppType;
+ DialingInfoT* CallInfo;
+ kal_uint16 InactivityTmr; /* units of msec for 1X RLP only */
+ kal_bool ReleaseTchWhenFallback;
+ HlpPppRouteTypeE RouteType;
+} PppConnParamsT;
+
+typedef struct
+{
+ kal_bool DormantFrom1x;
+ kal_bool gotoDormant;
+} PppDormParamsT;
+
+typedef struct
+{
+ kal_bool connFromDo;
+} TchConnParamsT;
+
+/*TracePscState/TraceCpcState set for Trace, copy from SCC*/
+typedef enum
+{
+ PSC_NULL,
+ PSC_INIT,
+ PSC_CONNECTED,
+ PSC_NO_DMC_CONNECTED,
+ PSC_DORMANT,
+ PSC_RECONNECT,
+ PSC_NUM
+} TracePscState;
+
+typedef enum
+{
+ CPC_IDLE,
+ CPC_CONNECTING,
+ CPC_CONNECTED,
+ CPC_DISCONNECT,
+ CPC_ANALOG_CONN,
+ CPC_NUM
+} TraceCpcState;
+
+typedef enum
+{
+ NO_PENDING_RECONN_REQ,
+ PENDING_REQ_1X_BUSY,
+ PENDING_REQ_1X_IDLE
+} PendingRcnT;
+
+/*******************************************************************************
+ Global Variable Declarations
+*******************************************************************************/
+
+/*******************************************************************************
+ Global Function Prototypes
+*******************************************************************************/
+
+void camProcessEvent(CamEventsT event, void* parms, kal_uint8 parmSize);
+void camProcessEventNoParms(CamEventsT event);
+void HlpCamInit(void);
+CamStatesT camGetCurrentState(void);
+void camSetCurrentState(CamStatesT);
+kal_bool HlpCamReadyForReconnect(void);
+void HlpCallInstanceIncrease(NspeAppT callType);
+void HlpCallInstanceDecrease(NspeAppT callType);
+kal_bool HlpCallInstanceRequested(NspeAppT callType);
+void HlpCamSetDoTo1XFallbackMode(kal_bool DoTo1X_Enabled);
+void HlpSendDormantCnfToPsw(void);
+void PppResetAtUmRm(void);
+kal_uint16 GetIpv4MTU(void);
+void HlpSendPppConnStatusToValATC(HlpConnStatusT status, kal_uint32 localAddr, kal_uint32 remoteAddr, kal_uint32 priDNS, kal_uint32 secDNS);
+void HlpSendPSDMPppDisconnectStatus(CamStatesT oldCamState, DataDiscCauseT DataDisconnCause);
+void HlpSendPSDMPppConnectStatus(CamStatesT oldCamState);
+void HlpSendPppConnCnfMsg(HlpConnStatusT status, kal_uint32 localAddr, kal_uint32 remoteAddr, kal_uint32 priDNS, kal_uint32 secDNS);
+void HlpSendPppDisconnCnfMsg(void);
+void HlpSendPppDisconnIndMsg(DataDiscCauseT DiscType);
+void HlpSendPppModifyIndMsg(kal_uint32 localAddr, kal_uint32 remoteAddr, kal_uint32 priDNS, kal_uint32 secDNS);
+kal_bool HlpNeedIgnoreEvdoPaging(void);
+kal_bool HlpNeedIgnoreEvdoPaging(void);
+void HlpCamEnableEhrpdIfFallback(void);
+void HlpRsvasAbortReq(void *MsgDataPtr);
+void HlpCamEnableEhrpdIfFallback(void);
+void ConnectionReq(NetworkT networkType);
+#ifdef MTK_DEV_C2K_IRAT
+void HlpSendPppSetupStatusToClc(kal_bool PppSetupStatus);
+#endif
+kal_bool HlpGetFlightModeStatus(void);
+void HlpSetFlightModeStatus(kal_bool);
+kal_uint8 HlpCheckCAMState(void);
+
+#endif /* _HLPCAM_H_ */
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpcustom.h b/mcu/interface/protocol/l2_c2k/common/hlpcustom.h
new file mode 100644
index 0000000..11dd9ae
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpcustom.h
@@ -0,0 +1,81 @@
+/*****************************************************************************
+* 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 _HLPCUSTOM_H_
+#define _HLPCUSTOM_H_
+
+/****************************************************************************
+ *
+ * Module: hlpcustom.h
+ *
+ * Purpose: Default/Customized values for the HLP parameters
+ *
+ * HISTORY :
+ *
+***************************************************************************/
+
+#define HLP_DEFAULT_DNS_PRI_IP_ADDR HLP_DEFAULT_IP_ADDR
+#define HLP_DEFAULT_DNS_SEC_IP_ADDR HLP_DEFAULT_IP_ADDR
+
+#define HLP_DEFAULT_AAA_AUTH_ALGORITHM MD5_AUTH_ALGO
+#define HLP_DEFAULT_MN_AUTHENTICATOR 0x07B201 /* byte reversed */
+
+#define HLP_DEFAULT_DDTM_MODE_ENABLED KAL_FALSE
+
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif /* _CUSTOM_H_ */
+
+/**Log information: \main\CBP80\cbp80_xding_scbp10176\1 2012-08-30 06:35:56 GMT xding
+** add an PRI item under HSPD menu for retry time on KDDI 2-19**/
+/**Log information: \main\SMART\1 2013-04-28 05:01:20 GMT jzwang
+** HREF#0000: Add smartfren compile option**/
+/**Log information: \main\SMART\2 2013-04-28 05:13:00 GMT jzwang
+** HREF#0000: Add smartfren compile option**/
+/**Log information: \main\Trophy\Trophy_xding_href22316\1 2013-11-27 06:00:43 GMT xding
+** HREF#22316,RDUD feature **/
+/**Log information: \main\Trophy\2 2013-11-27 06:04:14 GMT jzwang
+** href#22316**/
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpdef.h b/mcu/interface/protocol/l2_c2k/common/hlpdef.h
new file mode 100644
index 0000000..c3c8da1
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpdef.h
@@ -0,0 +1,858 @@
+/*****************************************************************************
+* 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) 1998-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef _HLPDEF_H_
+#define _HLPDEF_H_
+/*****************************************************************************
+*
+* FILE NAME : hlpdef.h
+*
+* DESCRIPTION :
+*
+* This include file provides unit wide regional type declarations and
+* constants
+*
+* HISTORY :
+* See Log at end of file.
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "valapi.h"
+#include "hlpcam.h"
+#include "do_rcpapi.h"
+#include "reg_base.h"
+#include "cssapi.h"
+#include "do_almpapi.h"
+#include "hlpem.h"
+#include "sim_exported_enum.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define MAX_SIZE_REVERSE_BUFFER 512
+#define MAX_NUM_DATA_PAGE 2
+#define MAX_NUMBER_OF_TIMERS 20
+#define MAX_NUM_DECODE_RESULTS 20
+#define WFR_HAND_OFF_HYST_TMR 10000
+
+#define START_DECODER_OPERATION 0x0001
+#define DEFAULT_DECODER_CONFIG 0x0350
+#define START_ENCODER_OPERATION 0x0001
+#define DEFAULT_ENCODER_CONFIG 0x0350
+
+#define PPPReMap(data) ((kal_uint32)(data))
+#define PPP_MAX_ENC0_SRC 75 /* 75 entries max. */
+#define PPP_MAX_ENC1_SRC 150 /* 150 entries max. */
+#define PPP_MAX_RESULT0 75 /* 75 entries max. */
+#define PPP_MAX_RESULT1 150 /* 150 entries max. */
+#define PPP_MAX_LLD0 480 /* 480 entries max. */
+#define PPP_MAX_LLD1 480 /* 480 entries max. */
+
+#define PPP_MAX_DEST0 0x8000 /* 32K bytes. */
+#define PPP_MAX_DEST1 0x4000 /* 64K bytes. */
+
+/*---------------------------------
+Foward path : ENC0 & DEC0
+Reverse path: ENC1 & DEC1
+----------------------------------*/
+#define PPPHA_BASE_ADDR BASE_MADDR_MDINFRA_PPPHA
+#define PPP_ENC0_SRC_ADR (PPPHA_BASE_ADDR + 0x0000)
+#define PPP_ENC0_DST_ADR (PPPHA_BASE_ADDR + 0x0004)
+#define PPP_ENC0_TRNSCNT (PPPHA_BASE_ADDR + 0x0008)
+#define PPP_ENC0_CNFG (PPPHA_BASE_ADDR + 0x000C)
+#define PPP_ENC0_CNTL (PPPHA_BASE_ADDR + 0x0010)
+#define PPP_ENC0_ACCM (PPPHA_BASE_ADDR + 0x0014)
+#define PPP_ENC0_BYTECNT (PPPHA_BASE_ADDR + 0x0018)
+#define PPP_ENC0_BYTES_TOT (PPPHA_BASE_ADDR + 0x001C)
+
+#define PPP_ENC1_SRC_ADR (PPPHA_BASE_ADDR + 0x0040)
+#define PPP_ENC1_DST_ADR (PPPHA_BASE_ADDR + 0x0044)
+#define PPP_ENC1_TRNSCNT (PPPHA_BASE_ADDR + 0x0048)
+#define PPP_ENC1_CNFG (PPPHA_BASE_ADDR + 0x004C)
+#define PPP_ENC1_CNTL (PPPHA_BASE_ADDR + 0x0050)
+#define PPP_ENC1_ACCM (PPPHA_BASE_ADDR + 0x0054)
+#define PPP_ENC1_BYTECNT (PPPHA_BASE_ADDR + 0x0058)
+#define PPP_ENC1_BYTES_TOT (PPPHA_BASE_ADDR + 0x005C)
+
+#define PPP_DEC0_LLD_ADR (PPPHA_BASE_ADDR + 0x0080)
+#define PPP_DEC0_DST_ADR (PPPHA_BASE_ADDR + 0x0084)
+#define PPP_DEC0_TRNSCNT (PPPHA_BASE_ADDR + 0x0088)
+#define PPP_DEC0_CNFG (PPPHA_BASE_ADDR + 0x008C)
+#define PPP_DEC0_CNTL (PPPHA_BASE_ADDR + 0x0090)
+#define PPP_DEC0_RES_ADR (PPPHA_BASE_ADDR + 0x0094)
+#define PPP_DEC0_MAX_ADR (PPPHA_BASE_ADDR + 0x0098)
+#define PPP_DEC0_CRT_ADR (PPPHA_BASE_ADDR + 0x009C)
+
+#define PPP_DEC1_LLD_ADR (PPPHA_BASE_ADDR + 0x00C0)
+#define PPP_DEC1_DST_ADR (PPPHA_BASE_ADDR + 0x00C4)
+#define PPP_DEC1_TRNSCNT (PPPHA_BASE_ADDR + 0x00C8)
+#define PPP_DEC1_CNFG (PPPHA_BASE_ADDR + 0x00CC)
+#define PPP_DEC1_CNTL (PPPHA_BASE_ADDR + 0x00D0)
+#define PPP_DEC1_RES_ADR (PPPHA_BASE_ADDR + 0x00D4)
+#define PPP_DEC1_MAX_ADR (PPPHA_BASE_ADDR + 0x00D8)
+#define PPP_DEC1_CRT_ADR (PPPHA_BASE_ADDR + 0x00DC)
+
+#define PPP_DMA_SUSPEND (PPPHA_BASE_ADDR + 0x00E0)
+
+/* #define PPP_SRAM_ACCESS 0xABC0001C */
+
+#define HLP_DEFAULT_ACCM 0xFFFFFFFF
+
+#define HLP_BURST_LENGTH_4
+#define HLP_HA_DEC_DST_BURST_LEN_MASK 0xFF3F
+
+#if defined(HLP_BURST_LENGTH_8) /* burst length 8 */
+#define HLP_DEFAULT_HA_ENC_CFG 0x03a0
+#define HLP_HA_32BIT_ENC_CFG 0x03a2
+#define HLP_HA_16BIT_ENC_CFG 0x03a1
+
+#define HLP_DEFAULT_HA_DEC_CFG 0x07a0
+#define HLP_HA_32BIT_DEC_CFG 0x07a2
+#define HLP_HA_16BIT_DEC_CFG 0x07a1
+
+#elif defined(HLP_BURST_LENGTH_4) /* burst length 4 */
+#define HLP_DEFAULT_HA_ENC_CFG 0x0350
+#define HLP_HA_16BIT_ENC_CFG 0x0351
+
+#define HLP_HA_32BIT_ENC_CFG 0x0368
+
+#define HLP_DEFAULT_HA_DEC_CFG 0x07a0
+#define HLP_HA_32BIT_DEC_CFG 0x07a2
+#define HLP_HA_16BIT_DEC_CFG 0x07a1
+
+#else /* non-burst 1 */
+#define HLP_DEFAULT_HA_CFG 0x0300
+#define HLP_HA_32BIT_CFG 0x0302
+#define HLP_HA_16BIT_CFG 0x0301
+#endif
+
+#define TCP_TAG_NOT_PURE_ACK 38
+#define TCP_TAG_PURE_ACK 49
+#define TCP_TAG_RETRANSMIT 50
+
+
+/* Define Macros that manages the PPP_DMA_SUSPEND register (This feature is not used) */
+#define PppDmaSuspend() HwdWrite(PPP_DMA_SUSPEND, 0x0001)
+#define PppDmaResume() HwdWrite(PPP_DMA_SUSPEND, 0x0000)
+
+#define HLP_UIM_MAX_PROFILE_NUM 16
+#define HLP_UIM_MAX_MIP_ADD_ACT_NAI_NUM 16
+
+#define WFR_PPP_RSP_TM 20000 /* 250 seconds, seems too long. changed to 10 seconds by Fenix */
+#define WFR_NWK_RSP_TM 15000
+#define WFR_USER_RSP_TM 60000 /*1 minute for call setup*/
+
+/* memory size occupied by ppp header, 2B as its data type is kal_uint16 */
+#define HLP_PPP_HEADER_DATA_TYPE_SIZE sizeof(kal_uint16)
+
+extern kal_spinlockid chlp_spinlock;
+
+#if defined (__SMP_ARCH__)
+#define CHLP_TAKE_SPINLOCK() kal_take_spinlock(chlp_spinlock, KAL_INFINITE_WAIT)
+#define CHLP_GIVE_SPINLOCK() kal_give_spinlock(chlp_spinlock)
+#else
+#define CHLP_TAKE_SPINLOCK()
+#define CHLP_GIVE_SPINLOCK()
+#endif /* __SMP_ARCH__ */
+
+enum
+{
+ HO_NULL,
+ HO_TO_DO,
+ HO_TO_1X,
+ HO_TO_EHRPD
+};
+
+typedef enum
+{
+ CAM_SYS_HSPD,
+ CAM_SYS_HRPD,
+ CAM_SYS_EHRPD,
+ CAM_SYS_MAX
+} CamSysTypeT;
+
+typedef enum
+{
+ PPPHA_NOT_INITIALIZED,
+ PPPHA_CLOSE_TO_END_DEC0,
+ PPPHA_CLOSE_TO_END_DEC1,
+ PPPHA_FLOW_CTRL_TURNED_ON,
+ PPPHA_BUF_FAIL,
+ PPPHA_CRC_FAIL,
+ PPPHA_DEST_ADDR_NULL,
+ PPPHA_STATUS_MAX
+} PpphaStatusT;
+
+typedef enum
+{
+ PPPHA_ENC0,/*Rev Encode*/
+ PPPHA_DEC0,/*Fwd Decode*/
+ PPPHA_ENC1,/*Fwd Encode*/
+ PPPHA_DEC1 /*Rev Decode*/
+} PpphaPhaseT;
+
+typedef enum
+{
+ DATA_SERVICE_SIP,
+ DATA_SERVICE_MIP,
+ DATA_SERVICE_HRPD,
+ DATA_SERVICE_3GPDEXT,
+ DATA_SERVICE_IPv6,
+ DATA_SERVICE_UST_ACL,
+ DATA_SERVICE_EST_ACL
+} DataServiceTypeT;
+
+typedef enum
+{
+ HLP_DATA_DIR_UL,
+ HLP_DATA_DIR_DL,
+ HLP_DATA_DIR_MAX
+}HlpDataDirEnum;
+
+typedef enum
+{
+ HLP_NV_IP_COUNTER_ERR,
+ HLP_NV_IP_COUNTER_LEN_ERR,
+ HLP_NV_HSPD_DATA_ERR,
+ HLP_NV_HSPD_DATA_LEN_ERR,
+ HLP_NV_HSPD_SECURE_ERR,
+ HLP_NV_HSPD_SECURE_LEN_ERR,
+ HLP_NV_EHRPD_DATA_ERR,
+ HLP_NV_EHRPD_DATA_LEN_ERR,
+ HLP_NV_DMU_PUBKEY_ERR,
+ HLP_NV_DMU_PUBKEY_LEN_ERR,
+ HLP_NV_ERR_MAX
+} HlpNvRdWtErrT;
+
+typedef enum
+{
+ NO_SILENTLY_RETRY, /*don't retry by modem, directly notify AP*/
+ SILENTLY_AFRESH_CONN,/*re-establish connection*/
+ SILENTLY_AFRESH_PS,/*re-establish connection and re-nego ppp*/
+ SILENTLY_PPP_RENEGO /*re-establish PPP*/
+} HlpRecoverFlagT;
+
+typedef enum
+{
+ HLP_PROTOCOL_COMPRESSION, /* Protocol Compression */
+ HLP_ADDRESS_CONTROL_COMPRESSION, /* Address/Control Compression */
+ HLP_PPP_HEADER_ENC_GETBUFF_NULL
+}HlpPppHeaderEncWarningT;
+
+typedef struct
+{
+ kal_uint16 tcpTag;
+ kal_uint32 tcpPort;
+ kal_uint32 srcIpAddr;
+ kal_uint32 dstIpAddr;
+}socketInfoT;
+
+typedef struct
+{
+ CpBufferT* sourceAddr;
+ CpBufferT* destAddr;
+ kal_uint8* directSrcAddr;
+ kal_uint32 xferCount;
+ kal_uint32 configReg;
+#ifdef SYS_OPTION_PPPHA_ENC_ENH
+ kal_uint8 leadingPad;
+ kal_uint8 tailingPad;
+#endif
+ kal_uint32 accmInUse;
+ kal_uint16 encodedLen;
+ kal_uint16 sourceOffset;
+ kal_bool isCpBufPtr;
+ AppSubTypeT AppSubType;
+ socketInfoT dstSocket;
+} HlpPPPHaEncTableT;
+
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+} HlpGetIPServiceTypeMsgT;
+
+typedef struct
+{
+ kal_uint8 pureAckTagRateTD;
+ kal_uint8 pureAckTagRate;
+} HlpEtsPureAckRateMsgT;
+
+typedef struct
+{
+ kal_uint32 tmrStatusHspd;
+ kal_uint32 tmrSysIdHspd[MAX_NUM_SYS_TMR_ENTRY];
+ kal_uint32 tmrStatusHrpd;
+ kal_uint32 tmrSysIdHrpd[MAX_NUM_SYS_TMR_ENTRY];
+ kal_uint32 tmrStatusEhrpd;
+ kal_uint32 tmrSysIdEhrpd[MAX_NUM_SYS_TMR_ENTRY];
+} HlpEtsThrottlingTmrStatusMsgT;
+
+#define HLP_UIM_MAX_PROFILE_NUM 16
+#define HLP_UIM_MAX_MIP_ADD_ACT_NAI_NUM 16
+typedef struct
+{
+ kal_uint8 MaxNumNAI;
+ kal_uint8 MaxNAILen;
+ kal_uint8 MaxSSLen;
+ kal_uint8 AuthAlgo;
+} HlpUim3GPDSipCapT;
+
+typedef struct
+{
+ kal_uint8 MaxNumNAI;
+ kal_uint8 MaxNAILen;
+ kal_uint8 MaxMNAAASSLen;
+ kal_uint8 MNAAAAuthAlgo;
+ kal_uint8 MaxMNHASSLen;
+ kal_uint8 MNHAAuthAlgo;
+} HlpUim3GPDMipCapT;
+
+typedef struct
+{
+ kal_uint8 NAIEntryIndex;
+ kal_uint8 NAILen;
+ kal_uint8 NAI[MN_NAI_MAX_SIZE];
+ kal_uint8 AuthAlgo;
+} HlpSipUserProfileT;
+
+typedef struct
+{
+ kal_uint8 NumNAI;
+ HlpSipUserProfileT SipUserProfile[HLP_UIM_MAX_PROFILE_NUM];
+} HlpUim3GPDSipUserProfileT;
+
+typedef struct
+{
+ kal_uint8 NAIEntryIndex;
+ kal_uint8 NAILen;
+ kal_uint8 NAI[MN_NAI_MAX_SIZE];
+ kal_bool TBit;
+ kal_uint32 HomeAddress;
+ kal_uint32 PrimaryHomeAgent;
+ kal_uint32 SecondaryHomeAgent;
+ kal_uint8 MNAAAAuthAlgo;
+ kal_bool MNAAASpiInd;
+ kal_uint32 MNAAASpi;
+ kal_uint8 MNHAAuthAlgo;
+ kal_bool MNHASpiInd;
+ kal_uint32 MNHASpi;
+} HlpMipUserProfileT;
+
+typedef struct
+{
+ kal_bool RetryInfoIncluded;
+ kal_uint8 MaxNumRetry;
+ kal_uint8 FirstRetryTimeOut;
+ kal_uint8 ReregThreshold;
+ kal_uint8 NumNAI;
+ HlpMipUserProfileT MipUserProfile[HLP_UIM_MAX_PROFILE_NUM];
+} HlpUim3GPDMipUserProfileT;
+
+typedef struct
+{
+ kal_uint8 ActNAIEntryIndex;
+ kal_uint8 NumAddActNAI;
+ kal_uint8 AddActNaiEntryIndex[HLP_UIM_MAX_MIP_ADD_ACT_NAI_NUM];
+} HlpUim3GPDMipStatusT;
+
+typedef struct
+{
+ kal_uint8 ActNAIEntryIndex;
+ kal_uint8 SSLen;
+ kal_uint8 SS[32];
+} HlpSipPapSSParmsT;
+
+typedef struct
+{
+ kal_uint8 NumNAI;
+ HlpSipPapSSParmsT SipPapSSParms[HLP_UIM_MAX_PROFILE_NUM];
+} HlpUim3GPDSipPapSSParmsT;
+
+typedef struct
+{
+ kal_uint8 NAIEntryIndex;
+ kal_uint32 Application;
+ kal_uint8 Priority;
+ kal_uint8 DataRateMode;
+ kal_uint8 DataBearer;
+} HlpUserProfileExtParamsT;
+
+typedef struct
+{
+ kal_uint8 NumNAI;
+ HlpUserProfileExtParamsT UppExtParams[HLP_UIM_MAX_PROFILE_NUM];
+} HlpUim3GPDUserProfileExtT;
+
+typedef struct
+{
+ kal_uint16 InitNeighborSolicitDelayTime;
+ kal_uint16 SolicitInterval;
+ kal_uint16 ReSolicitInterval;
+ kal_uint16 MaxSolicitAttempt;
+ kal_uint16 MaxReSolicitAttempt;
+ kal_uint16 PreRAExpiryReSolicitTime;
+ kal_uint8 IidInfo[8];
+ kal_uint8 Flags;
+} HlpUim3GPDIpv6capT;
+
+typedef struct
+{
+ kal_uint8 Flags;
+ kal_uint8 KeepAliveIdleTimer;
+} HlpUim3GPDTcpConfigT;
+
+typedef struct
+{
+ kal_uint8 DataDormTimer;
+ kal_uint8 EpzidTypeInfo;
+ kal_uint8 HystActTime;
+} HlpUim3GPDDgcT;
+
+typedef struct
+{
+ kal_uint8 MaxNaiLen;
+ kal_uint8 MaxSsLen;
+ kal_uint8 AuthAlgo;
+} HlpUimHrpdAccessAuthCapT;
+
+typedef struct
+{
+ kal_uint8 NaiLen;
+ kal_uint8 Nai[HLP_MAX_USRID_LEN];
+ kal_uint8 AuthAlgo;
+} HlpUimHrpdAccessAuthUppT;
+
+typedef struct
+{
+ /* this field indicates the EFcst, EFust, EFest file be used or not
+ * used only for UIM file test critical checking
+ * KAL_FALSE, not use the files
+ * KAL_TRUE, use the files
+ * default value should be KAL_FALSE
+ */
+ kal_bool TurnOnCheck;
+ kal_bool SipEnabled;
+ kal_bool MipEnabled;
+ kal_bool HrpdEnabled;
+ kal_bool Msg3gpdExtEnabled;
+ kal_bool Ipv6Enabled;
+ /* EFust, 6F38, byte5.bit3 */
+ kal_bool UstAclEnabled;
+ /* EFest, 6F56, byte1.bit3 */
+ kal_bool EstAclEnabled;
+} HlpUimServiceTableT;
+
+typedef struct
+{
+ kal_bool Flag;
+ kal_uint16 FileId[2];
+ kal_bool IsNeededForCTCard;
+} HlpUimFileTableT;
+
+typedef struct
+{
+ /*-------------card status----------------*/
+ kal_uint8 CardStatus;
+ /*-------------card index----------------*/
+ sim_interface_enum sim_index;
+ /*-------------card type-----------------*/
+ kal_bool is_uicc_card;
+ kal_bool is_omh_card;
+ kal_bool is_ct_card;
+ /*-------------file read flag-------------*/
+ /* read index point to next file index */
+ kal_uint8 ReadIndex;
+ kal_bool ReadDone;
+ /* this flag is ugly! to solve the duplicated 0x6F56 EF ID
+ * in RUIM/CSIM, it's EFhrpdcap, in USIM, it's EFest
+ * in HLP_UIM_FILE_CHANGED_MSG, if 0x6F56 received, both files are read
+ * EFhrpdcap will always be handled before EFest
+ * default value is KAL_FALSE, once EFhrpdcap is handled, this flag is set to KAL_TRUE
+ * after the whole read procedure is finished, this flag is reset to KAL_FALSE
+ */
+ kal_bool Cur6F56IsUsimFile;
+
+ /*-------------service table--------------*/
+ HlpUimServiceTableT srvtbl;
+
+ /*-------------operation mode-------------*/
+ /* EFme3gpdopc */
+ kal_uint8 opc;
+ /* EF3gpdopm */
+ kal_uint8 opm;
+
+ /*----------------simpe IP----------------*/
+ /* EFsipsp */
+ kal_uint8 sipsp;
+ /* EFsipcap */
+ HlpUim3GPDSipCapT sipcap;
+ /* EFsipupp */
+ HlpUim3GPDSipUserProfileT sipupp;
+ /* EFsippapss */
+ HlpUim3GPDSipPapSSParmsT sippapss;
+
+ /*----------------mobile IP----------------*/
+ /* EFmipsp */
+ HlpUim3GPDMipStatusT mipsp;
+ /* EFmipcap */
+ HlpUim3GPDMipCapT mipcap;
+ /* EFmipupp */
+ HlpUim3GPDMipUserProfileT mipupp;
+
+ /*-------------extension files-------------*/
+ /* EFmipflags */
+ kal_uint8 mipflags;
+ /* EF3gpduppext */
+ HlpUim3GPDUserProfileExtT uppext;
+ /* EFtcpconfig */
+ HlpUim3GPDTcpConfigT tcpcfg;
+ /* EFdgc */
+ HlpUim3GPDDgcT dgc;
+ /* EFipv6cap */
+ HlpUim3GPDIpv6capT ipv6cap;
+
+ /*---------HRPD Access Auth files---------*/
+ /* EFhrpdcap */
+ HlpUimHrpdAccessAuthCapT hrpdcap;
+ /* EFhrpdupp */
+ HlpUimHrpdAccessAuthUppT hrpdupp;
+ /* EFimsi */
+ IMSIType imsi;
+ kal_bool bUSIMIMSINeedUpdate;
+ /* EFad */
+ kal_uint8 MncLen;
+} HlpUimFilesT;
+
+typedef void (*hlp_timer_expiry_func)(hlp_timer_enum timer_id);
+
+typedef struct
+{
+ eventid id;
+ hlp_timer_enum timer_id;
+ kal_bool pending;
+ kal_uint32 duration_ms;
+ hlp_timer_expiry_func expiry_func;
+}hlp_es_struct;
+
+typedef struct
+{
+ peer_buff_struct *head;
+ peer_buff_struct *tail;
+}hlp_sll_ul_queue_struct;
+
+typedef struct
+{
+ peer_buff_struct *head;
+ peer_buff_struct *tail;
+ kal_uint8 pdn_id;
+}hlp_sll_dl_queue_struct;
+
+/*----------------------------------------------------------------------------
+ Global Variable Declarations
+----------------------------------------------------------------------------*/
+extern kal_bool PppRenego;
+
+/*----------------------------------------------------------------------------
+ Function Declarations
+----------------------------------------------------------------------------*/
+void HlpConnectionIndMsg(void *MsgDataP, kal_bool atDONetwork);
+void Hlp1XMTConnInNullStIndMsg(void *MsgDataP);
+void HlpConnectionReleasedIndMsg(void *MsgDataP);
+void HlpConnectionFailedIndMsg(void *MsgDataP);
+void HlpPppConnectReqMsg(void *MsgDataP);
+void HlpPppDisconnectReqMsg(void *MsgDataP);
+void HlpPppUpdateReqMsg(void *MsgDataP);
+void HlpPppReleaseReqMsg(void *MsgDataP);
+void HlpPppStatusMsg(void *MsgDataP);
+void HlpUmAppInstance(void * MsgDataPtr);
+void HlpPppAnswerReqMsg(void *MsgDataP);
+void HlpRlpResetIndMsg(void *MsgDataP);
+void HlpFwdDataIndSig(void);
+void HlpRevDataIndSig(void);
+void HlpRlpRevDataRspMsg(void *MsgDataP);
+void HlpRlpIdleIndMsg(void *MsgDataP);
+void HlpRlpOpenFailedMsg(void *MsgDataP);
+void HlpRlpRevDataRspMsg(void *MsgDataP);
+void HlpUpbConnStatusMsg(void *MsgDataP);
+void HlpUpbConnReqMsg(void* MsgDataP);
+void HlpAiwBeginUdpMsg(void* MsgDataP);
+void HlpUpbEndMsg(void* MsgDataP);
+void HlpUpbSendDataMsg(void* MsgDataP);
+void HlpUpbDormantReq(void *MsgDataP);
+void HlpUpbRecvDataRspMsg(void *MsgDataP);
+void HlpRmPppBeginMsg(void* MsgDataP);
+void HlpRmDisconnectInd(void *MsgDataP);
+void HlpRmConnectStatusMsg(void *MsgDataP);
+void HlpServiceStatusMsg(void *MsgDataPtr);
+void HlpUmPppBeginMsg(void* MsgDataP);
+void HlpUmRestartRlpMsg(void* MsgDataP);
+void HlpUmDisconnMsg(void* MagDataP);
+void HlpDormantReconnectReqMsg(void* MagDataP);
+void HlpUmAbortReqMsg(void* MagDataP);
+void HlpMipUmPppStatusMsg(void * MsgDataP);
+void HlpPktZoneIdMsg(void* MagDataP);
+void HlpTimerExpiredMsg(void* MsgDataP);
+void HlpTestBrowserConnectMsg(void* MsgDataP);
+void HlpTcpbConnReqMsg(void* MsgDataP);
+void HlpTcpbConnEndMsg(void* MsgDataP);
+void HlpTcpbDataSendReqMsg(void* MsgDataP);
+void HlpTcpbDataRecvRspMsg(void *MsgDataP);
+void HlpSocketCreateMsg(void *MsgDataP);
+void HlpSocketBindMsg(void *MsgDataP);
+void HlpSocketConnectMsg(void *MsgDataP);
+void HlpSocketCloseMsg(void *MsgDataP);
+void HlpSocketSendReqMsg(void *MsgDataP);
+void HlpSocketListenMsg(void *MsgDataP);
+void HlpSocketOptionMsg(void *MsgDataP);
+void HlpSocketShutDownMsg(void *MsgDataP);
+void HlpSocketLingerMsg(void *MsgDataP);
+void HlpUartReadyMsg(void *MsgDataP);
+void HlpMipInit(void);
+void HlpMipRrpMsg(void *MsgDataP);
+void HlpMipAgentAdvMsg(void *MsgDataP);
+void HlpMipUmPppStatusMsg(void *MsgDataP);
+void HlpOosaIndMsg(void *MsgDataPtr);
+void HlpSystemQueryRspMsg(void* MsgDataPtr);
+void HlpSysSelPrefSetMsg(void* MsgDataPtr);
+void HlpUmPppReNegotiationMsg(void *MsgDataPtr);
+void HlpSetNetworkOrRelayModeMsg(void *MsgDataPtr);
+void HlpAlmpConnReleased(void);
+void HlpAlmpConnFailed(void);
+void HlpXoffRspRcvdMsg(void);
+#ifdef KDDI_EXTENSIONS
+extern void HlpDORetryTmrExp(void);
+#endif
+void HlpDormantReqMsg(void);
+void HlpValCtaUpdateReqMsg(HlpValCtaUpdateReqMsgT* MsgDataPtr);
+void HlpSetHoFlag(kal_uint8 direction);
+kal_uint8 HlpGetHoFlag(void);
+extern void HlpVoiceCallReleaseIndMsg(void);
+#ifdef MTK_DEV_C2K_IRAT
+void HlpSetHO21xFlag(kal_bool bHO21xEnabledFlag);
+kal_bool HlpGetHO21xFlag(void);
+void HlpSetByPassThresholdCheckFlag(kal_bool bNewFlag);
+kal_bool HlpGetByPassThresholdCheckFlag(void);
+#endif /* MTK_DEV_C2K_IRAT */
+void HlpValDMUVSetMsg(void *MsgDataPtr);
+void HlpDOInactivityExprMsg(void);
+#ifdef MTK_DEV_C2K_IRAT
+void HlpSendPppMtu2Val(void);
+#endif
+HlpDataChRetStatus HlpWrite(RmDataCpBuffDescT *Buff);
+HlpDataChRetStatus HlpRead(RmDataCpBuffDescT *Buff);
+kal_uint16 GetRevHlpDataSize(void);
+kal_uint16 HlpCheckRxReadyStatus(void);
+void HlpAccessStreamStart(void);
+void HlpGetPPPConnParams(PppConnParamsT *connPtr);
+
+/* System ID Change message function prototypes */
+void HlpSidNidChangeIndMsg(void *MsgDataPtr);
+void HlpPktZoneIdChangeIndMsg(void *MsgDataPtr);
+void HlpSubnetIdChangeIndMsg(void *MsgDataPtr);
+void HlpColorCodeIndMsg(void *MsgDataP);
+
+/* Hlpdbm function prototypes */
+void HlpDbmHspdSegInitReq(void);
+void HlpNvHspdSegDataReadHandler(void);
+void HlpParmSetMsg(void *MsgDataPtr);
+void hlp_elt_set_parm_msg(ilm_struct* ilm_ptr, HlpParmOperationId ParmId);
+
+void HlpNvSecureDataReadHandler(void);
+void HlpParmGetMsg(void *MsgDataPtr);
+void hlp_elt_get_parm_msg(ilm_struct* ilm_ptr, HlpParmOperationId ParmId);
+void HlpDbmGetEsnMeidRspMsg(void *MsgDataPtr);
+void HlpDmuSecureDataChangedMsg(void *MsgDataP);
+void HlpPswMDNUpdatedMsg(void *MsgDataPtr);
+void HlpSetMipPasswordMsg(void *MsgDataPtr);
+kal_uint8 HlpDbmGetMipMode(void);
+kal_uint8 HlpDbmGetHaAuthMode(void);
+kal_uint8 HlpDbmGetVJCompressionEnabled(void);
+void HlpDbmGetPppUmCfg(HlpPppUmCfg_APIStruct *HlpPppUmCfg);
+void HlpDbmGetPppRmCfg(HlpPppRmCfg_APIStruct *HlpPppRmCfg);
+void HlpDbmGetTcpCfg(HlpTcpCfg_APIStruct *HlpTcpCfg);
+kal_bool HlpDbmGetHspdLocked(void);
+void HlpNvEHrpdDataReadHandler(void);
+
+void HlpDormancyTimersSetMsg(void *MsgDataPtr);
+void HlpDORetryTimersSetMsg(void *MsgDataPtr);
+
+/* Timer expiration function prototypes */
+void HlpTimerStartReq(hlp_timer_enum timer_id);
+void HlpTimerKillReq(hlp_timer_enum timer_id);
+void HlpTimerSetDuration(hlp_timer_enum timer_id, kal_uint32 duration);
+void HlpTimerSetPending(hlp_timer_enum timer_id, kal_bool pending);
+kal_bool HlpTimerIsActive(hlp_timer_enum timer_id);
+kal_bool HlpTimerIsPending(hlp_timer_enum timer_id);
+kal_uint32 HlpTimerGetDuration(hlp_timer_enum timer_id);
+void WfrFastConnTimeUp(hlp_timer_enum timer_id);
+void HlpWfsSysRspTimeup(hlp_timer_enum timer_id);
+void HlpWfrUimAuthRspTimeup(hlp_timer_enum timer_id);
+void WfrRmConnectionTimeUp(hlp_timer_enum timer_id);
+void DataRetryTimeUp(hlp_timer_enum timer_id);
+void DoRetryTimeUp(hlp_timer_enum timer_id);
+void HlpWaitForIratReleaseTimerExp(hlp_timer_enum timer_id);
+void HlpWfrFallBack1XConnectTimeUp(hlp_timer_enum timer_id);
+void HlpSetC109LowExp(hlp_timer_enum timer_id);
+void HlpProcThrottlingTmrExp(hlp_timer_enum timer_id);
+void DormantReconnectBackOffTimerUp(hlp_timer_enum timer_id);
+void HlpPppConnectBackOffTimerExp (hlp_timer_enum timer_id);
+void HlpFiveMinsTimeOut(hlp_timer_enum timer_id);
+void HlpForceCpIdle(hlp_timer_enum timer_id);
+void HlpCloseConnAtDO(hlp_timer_enum timer_id);
+void HlpMipTimerRrpRegTimeUp(hlp_timer_enum timer_id);
+void HlpMipTimerRrpDeregTimeUp(hlp_timer_enum timer_id);
+void HlpMipTimerRrqRegTimeUp(hlp_timer_enum timer_id);
+void HlpMipTimerAgentAdvTimeUp(hlp_timer_enum timer_id);
+void HlpMipTimerLifetimeTimeUp(hlp_timer_enum timer_id);
+void HlpIp6TestTmrExp(hlp_timer_enum timer_id);
+void natTimerExpire(hlp_timer_enum timer_id);
+void HlpPendingRedailA12TmrExp(hlp_timer_enum timer_id);
+void HlpSetPendingRedailA12Flag(kal_bool flag);
+kal_bool HlpGetPendingRedailA12Flag(void);
+void HlpRsvasAbortReqTimeUp(hlp_timer_enum timer_id);
+
+/* Throttling function prototypes */
+void HlpThrottSetEnable(kal_bool enable);
+kal_bool HlpThrottGetEnable(void);
+void HlpThrottSetCurrSys(CamSysTypeT system);
+CamSysTypeT HlpThrottGetCurrSys(void);
+kal_bool HlpThrottIsActive(CamSysTypeT SystemType);
+void HlpThrottLogSysId(CamSysTypeT SystemType);
+void HlpThrottInit(void);
+void HlpThrottResetAll(void);
+void HlpThrottStop(CamSysTypeT SystemType);
+void HlpThrottStart(void);
+
+/* IPv6 function prototypes */
+#ifdef CBP7_EHRPD
+kal_bool EapAkaFailureByNwkRejFlagGet(void);
+void EapAkaFailureByNwkRejFlagSet(kal_bool bRejByNetworkNotification);
+#endif
+
+void HlpFwdPktDataIndSig( void );
+
+/* PPP free mode support */
+void HLPRouteTypeSet(HlpPppRouteTypeE type);
+HlpPppRouteTypeE HLPRouteTypeGet(void);
+/* TCP/IP filter-mux function prototypes */
+void IP_Add_TCP_FilterMux(MuxInfo *Info, kal_uint32 address, kal_uint16 port);
+void IP_Delete_TCP_FilterMux(MuxInfo *Info, kal_uint32 address, kal_uint16 port);
+kal_bool CheckTcpPacketWithTcpFilterMux(MuxInfo *Info, kal_uint32 address, kal_uint16 port, kal_bool fragmentIpPkt);
+void IP_Init_TCP_FilterMux(MuxInfo *Info);
+
+/* UIM function prototypes */
+void HlpUimNotifyRegisterMsg(void *MsgDataPtr);
+void HlpDbmPowerCycleMsg(void);
+void HlpUim3GPDDataUpdate(void);
+void HlpUimGet3GPDOpcRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDOpcRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDOpmRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDOpmRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDSipCapRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDMipCapRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDSipUPPRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDMipUPPRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDSipSPRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDSipSPRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDMipSPRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDMipSPRspMsg(void *MsgDataPtr);
+void HlpUimGet3GPDSipPapSSRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDSipPapSSRspMsg(void *MsgDataPtr);
+void HlpUimUpdate3GPDImsiRspMsg(void *MsgDataPtr, kal_bool NeedToReadOtherFile);
+void HlpUimUpdate3GPDAdRspMsg(void *MsgDataPtr);
+kal_uint8 HlpUimGetMipMnHaAuthAlgorithm(void);
+
+/* System ID function prototypes */
+void HlpSetCurrentSidNid(kal_uint16 sid, kal_uint16 nid);
+void HlpSetCurrentPid(kal_uint8 pid);
+kal_uint8 *HlpGetCurrentSidPid(void);
+void HlpSetCurrentSubnetId(kal_uint8 *pSubnetId);
+kal_uint8 *HlpGetCurrentSubnetId(void);
+void HlpColorCodeIndMsg(void *MsgDataP);
+kal_uint16 HlpGetDormancyTimer(kal_bool bForRDUD);
+IMSIType HlpGetImsiInfoInUimCntx(void);
+kal_uint8 HlpGetMncLenInUimCntx(void);
+kal_bool HlpCheckImsiInfoNeedUpdate(void);
+void HlpWaitForExtMsg(kal_uint32 expMsgId, ilm_struct *ilm);
+#ifdef CBP7_EHRPD
+void HlpGetImsiFromUsim(void);
+#endif
+void HlpSendTchSetupStatusToCss(CssTchSetupStatusT status);
+void HlpSendConnStatusMsg2Val(ValWmcConnStatusT connStatus);
+void HlpSendPppConnStatusMsg2Val(ValHlpPppConnStatusMsgT *ConnStatus);
+void HlpSendPppConnStatusMsg2ValAtc(ValHlpPppConnStatusMsgT *ConnStatus);
+
+void hlp_nvram_read_cnf_handler(local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr);
+void hlp_nvram_write_cnf_handler(local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr);
+void HlpProcessRevDataFromHIF(void* MsgDataP);
+AlmpStateT HlpGetAlmpState(void);
+void HlpTcpPacketTagPureAck(kal_uint8 *pIpPacket, socketInfoT *dstSocketPtr);
+kal_uint16 PPP_HeaderEncode_CopyFree(kal_uint16 prot, kal_uint8 *data, kal_bool acomp, kal_bool pcomp, kal_uint8 pdn_id);
+void HlpHandleDnsQueryNoNwRsp(kal_uint8 *pIpPacket, kal_bool *pToRelPpp);
+HlpRecoverFlagT HlpGetRecoverFlag(void);
+void HlpSetRecoverFlag(HlpRecoverFlagT value);
+kal_bool HlpTransferToLower(char* pStrIn, char* pStrOut, kal_uint32 nLen);
+DialingInfoT* HlpCallInfoGet(void);
+void HlpSendXonXoffToFcp(kal_bool bXOnOff, StreamType StreamID);
+kal_uint8 HlpGetPPPConnParamsCid(void);
+kal_bool HlpUimIsUiccCard(void);
+kal_bool HlpUimIsOmhCard(void);
+void HlpConnectionSuspendCmd(void);
+void HlpConnectionResumeCmd(void);
+void HlpConnectionDisableCmd(void);
+void HlpConnectionResetCmd(void);
+void HlpConnectionFallbackCmd(void);
+
+void HlpSetHOEHRPDEnableFlag(kal_bool bEnable);
+kal_bool HlpGetHOEHRPDEnableFlag(void);
+sim_interface_enum HlpUimGetCurSimIndex(void);
+kal_uint16 HlpRmCheckRxReadyStatus(void);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpem.h b/mcu/interface/protocol/l2_c2k/common/hlpem.h
new file mode 100644
index 0000000..d828339
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpem.h
@@ -0,0 +1,72 @@
+/*****************************************************************************
+* 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).
+*
+*****************************************************************************/
+/****************************************************************************
+ *
+ * Module: hlpem.h
+ *
+ * Purpose: hlp engineer mode definitions and prototypes.
+ *
+ ****************************************************************************/
+
+#ifndef _HLPEM_H_
+#define _HLPEM_H_
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "em_public_struct_c2k_hlp.h"
+
+void HlpEmSendTimerStatusInd(kal_uint32 hlp_timer_tmp, kal_bool act_tmp, kal_uint32 duration_tmp);
+void HlpEmSendCamStateInd(kal_uint8 old_state_tmp, kal_uint8 event_tmp, kal_uint8 new_state_tmp);
+void HlpEmSendNspeStateInd(void);
+void HlpEmSendPdnStatusInd(void);
+void HlpEmSendPpphaStatusInd(em_hlp_pppha_enum hlp_pppha_name, kal_uint16 PullOut_tmp);
+void HlpEmSendPppStatusInd(void);
+void HlpEmSendRmBufQInfoInd(void);
+void HlpEmSendUmBufQInfoInd(void);
+void HlpEmSendPacketInfoInd(void);
+void HlpEmDecPacketInfo(em_hlp_data_dir_enum UL_DL, kal_uint8 *pIpPacket, kal_uint16 data_len);
+void HlpEmSendStatusCnf(void);
+void HlpEmUpdateReqMsg(local_para_struct *local_para_ptr);
+void HlpEmInitDataPlaneInfo(void);
+void HlpEmPpphaBadPacketIncrease(em_hlp_pppha_enum hlp_pppha_name, kal_uint16 Add_in);
+void HlpEmDiscardUmData(em_queue_type_enum FwdRevFlag);
+void HlpEmSendAbnormalEventInfoInd(em_hlp_abnormal_event_enum hlp_abnormal_event);
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
diff --git a/mcu/interface/protocol/l2_c2k/common/hlpmip.h b/mcu/interface/protocol/l2_c2k/common/hlpmip.h
new file mode 100644
index 0000000..4019366
--- /dev/null
+++ b/mcu/interface/protocol/l2_c2k/common/hlpmip.h
@@ -0,0 +1,249 @@
+/*****************************************************************************
+* 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 _HLPMIP_H_
+#define _HLPMIP_H_
+/*****************************************************************************
+*
+* FILE NAME : hlpmip.h
+*
+* DESCRIPTION :
+*
+* This include file provides type declarations and constants for Mobile IP
+*
+* HISTORY :
+* See Log at end of file.
+*
+*****************************************************************************/
+
+/*----------------------------------------------------------------------------
+ Include Files
+----------------------------------------------------------------------------*/
+#include "pswnam.h"
+
+/*----------------------------------------------------------------------------
+ Global Defines and Macros
+----------------------------------------------------------------------------*/
+#define AAA_AUTH_MAX_SIZE 8
+#define DMU_ENCRYPTED_DATA_MAX_SIZE 128
+
+#define MAX_RSA_PUBLIC_KEY_SUPPORTED 2
+
+#define HLP_DEFAULT_INLAND_NAI_REALM "@inland3g.com"
+#define HLP_DEFAULT_IVC_NAI_REALM "@ivcdata.com" /* IIIinois Valley Cellular */
+#define HLP_DEFAULT_APPALACHIAN_NAI_REALM "@myawi.com" /* Applalachian */
+typedef struct {
+ kal_uint8 MN_AAAH_Key[MN_PASSWD_MAX_SIZE];
+ kal_uint8 MN_HA_Key[MN_PASSWD_MAX_SIZE];
+ kal_uint8 CHAP_Key[MN_PASSWD_MAX_SIZE];
+ kal_uint8 MN_Authenticator[MN_AUTH_MAX_SIZE];
+ kal_uint8 AAA_Authenticator[AAA_AUTH_MAX_SIZE];
+} HlpDMUKeyDataT;
+
+typedef struct {
+ kal_uint8 MN_AAA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+ kal_uint8 MN_HA_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+ kal_uint8 MN_SIP_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+ kal_uint8 MN_AN_PASSWORD[HLP_MN_PASSWD_MAX_SIZE];
+} HlpDmuSecureDataMsgT;
+
+typedef enum
+{
+ MIP_WFR_REREG_WINDOW,
+ MIP_REREG_WINDOW,
+ MIP_REREG_RRQ_SENT_WINDOW,
+ MIP_REREG_LIFETIME_EXPIRED,
+ MIP_DEREG_ALREADY
+} ReRegStateT;
+
+typedef enum
+{
+ MIP_RRP_TYPE,
+ MIP_RRP_CODE,
+ MIP_RRP_IDENT,
+ MIP_RRP_VENDOR_ID,
+ MIP_RRP_PUBLIC_KEY,
+ MIP_RRP_KEY_ENCRYPT,
+ MIP_RRP_CVSE_LEN,
+ MIP_RRP_AAA_AUTHENTICATOR,
+ MIP_RRP_CVSE_VENDOR_TYPE,
+ MIP_RRP_CVSE_TYPE_NUMBER,
+ MIP_RRP_LIFETIME,
+ MIP_RRP_AUTH_DATA,
+ MIP_RRP_EXT_TYPE,
+ MIP_RRP_EXT_LEN,
+ MIP_RRP_MAX_NUM
+} HlpMipRrpErrTypeT;
+
+typedef enum
+{
+ MIP_ADV_TYPE,
+ MIP_ADV_CODE,
+ MIP_ADV_ROUTER_NUM,
+ MIP_ADV_ENTRY_SIZE,
+ MIP_ADV_MOB_EXT_TYPE,
+ MIP_ADV_CHALL_EXT_TYPE,
+ MIP_ADV_FA_BUSY,
+ MIP_ADV_COA_NUM,
+ MIP_ADV_EXT_LEN,
+ MIP_ADV_MAX_NUM
+} HlpMipAdvErrTypeT;
+
+#define SECURE_DATA_SIP_PWD_BIT (1<<0)
+#define SECURE_DATA_AN_PWD_BIT (1<<1)
+#define SECURE_PROFILE_BIT (1<<2)
+#ifdef CBP7_EHRPD
+#define SECURE_DATA_AKA_PWD_BIT (1<<3)
+#endif
+
+typedef enum
+{
+ SECURE_DATA_SIP_PWD_SET = SECURE_DATA_SIP_PWD_BIT,
+ SECURE_DATA_AN_PWD_SET = SECURE_DATA_AN_PWD_BIT,
+#ifdef CBP7_EHRPD
+ SECURE_DATA_AKA_PWD_SET = SECURE_DATA_AKA_PWD_BIT,
+#endif
+ SECURE_SET_BOTH = RSA_PUBLIC_KEY_BIT|SECURE_DATA_SIP_PWD_BIT|SECURE_DATA_AN_PWD_BIT,
+ SECURE_PROFILE_SET = SECURE_PROFILE_BIT,
+#ifdef CBP7_EHRPD
+ SET_ALL = SECURE_DATA_SIP_PWD_BIT|SECURE_DATA_AN_PWD_BIT|SECURE_PROFILE_BIT|SECURE_DATA_AKA_PWD_BIT
+#else
+ SET_ALL = SECURE_DATA_SIP_PWD_BIT|SECURE_DATA_AN_PWD_BIT|SECURE_PROFILE_BIT
+#endif
+}SecureDataSetE;
+
+typedef enum
+{
+ HLP_MIP_ERR_INVALID_STATE, /* MIP error codes */
+ HLP_MIP_ERR_INVALID_TIMER_ID,
+ HLP_MIP_ERR_AGENT_ADV_INVALID_TYPE,
+ HLP_MIP_ERR_AGENT_ADV_INVALID_CODE,
+ HLP_MIP_ERR_AGENT_ADV_INVALID_NUM_ROUTER,
+ HLP_MIP_ERR_AGENT_ADV_INVALID_ENTRY_SIZE,
+ HLP_MIP_ERR_AGENT_ADV_INVALID_NUM_COA,
+ HLP_MIP_ERR_AGENT_ADV_INVALID_EXT_TYPE, /* 0x10 */
+ HLP_MIP_ERR_AGENT_ADV_INVALID_EXT_LEN,
+ HLP_MIP_ERR_AGENT_ADV_INVALID_AGENT,
+ HLP_MIP_ERR_AGENT_ADV_FA_BUSY,
+ HLP_MIP_ERR_AGENT_SOL_BUFFER_BUSY,
+ HLP_MIP_ERR_RRP_INVALID_TYPE,
+ HLP_MIP_ERR_RRP_INVALID_CODE,
+ HLP_MIP_ERR_RRP_INVALID_LIFETIME,
+ HLP_MIP_ERR_RRP_INVALID_IDENT,
+ HLP_MIP_ERR_RRP_INVALID_EXT_TYPE,
+ HLP_MIP_ERR_RRP_INVALID_EXT_LEN,
+ HLP_MIP_ERR_RRP_INVALID_AUTH_DATA,
+ HLP_MIP_ERR_RRP_INVALID_CHALLENGE_DATA,
+ HLP_MIP_ERR_RRQ_TOO_LARGE,
+ HLP_MIP_ERR_RRQ_BUFFER_BUSY,
+ HLP_MIP_ERR_USER_DATA_GET_FAILED,
+ HLP_MIP_ERR_INVALID_CVSE_TYPE_NUMBER, /* 0x20 */
+ HLP_MIP_ERR_INVALID_VENDOR_ID,
+ HLP_MIP_ERR_INVALID_CVSE_VENDOR_TYPE,
+ HLP_MIP_ERR_INVALID_PUBLIC_KEY,
+ HLP_MIP_ERR_INVALID_CVSE_LEN,
+ HLP_MIP_ERR_MIP_KEY_ENCRYPT_INVALID,
+ HLP_MIP_ERR_INVALID_AAA_AUTHENTICATOR,
+} HlpMipErrCodeE;
+
+/*----------------------------------------------------------------------------
+ Externs Declarations
+----------------------------------------------------------------------------*/
+extern void HlpMipInit(void);
+extern void HlpMipFallbackSipSet(kal_bool bEnable);
+extern kal_bool HlpMipFallbackSipGet(void);
+extern void HlpMipFallbackSipActive(void);
+
+extern void HlpMipRrpMsg(void *MsgDataP);
+extern void HlpMipAgentAdvMsg(void *MsgDataP);
+extern void HlpMipUmPppStatusMsg(void *MsgDataP);
+extern void HlpMipNvmMiscData(void* MsgDataP);
+extern void HlpMipNvmRRAUpdate(kal_uint16 Rra);
+extern void HlpMipNvmNumRegRetriesUpdate(kal_uint8 Num);
+extern void HlpMipNvmDeRegRetriesUpdate(kal_uint8 Num);
+extern void HlpMipNvmReRegOnlyIfTrafficUpdate(kal_bool ReRegOnlyIfTraffic);
+extern void HlpMipNvmMipNaiEnabledUpdate(kal_bool NaiEnabled);
+extern void HlpMipNvmRegTimeoutUpdate(kal_uint8 Timeout);
+extern void HlpMipNvmActivedProfileDataUpdate(HlpHspdSegData * MsgDataP);
+extern void HlpMipNvmSecureProfileDataUpdate(kal_uint8 SetType, HlpHspdSecureSegData* MsgDataP);
+
+extern void HlpDMUInit(void);
+extern void HlpMipKeysGenEnc(void);
+/*extern void HlpResetMNAuthMsg(void *MsgDataP);*/
+/*extern void HlpSetMNAuthMsg(void *MsgDataP);*/
+extern void HlpPswSDmuKeyGenRspMsg(void);
+extern void HlpPswSDmuKeyEncRspMsg(void);
+extern void HlpDmuRsaPublicKeyActiveAndMNAuthSetMsg(kal_uint8 SetType, HlpRSAPublicKeyOrgIdInfoT *MsgDataP);
+
+extern void HlpMipStartRrpAdminProhibRetry(void);
+extern kal_bool HlpMipCheckRrpAdminProhibRetry(void);
+extern kal_bool HlpMipCheckRrpAdminProhibRetryOtherErr(void);
+extern void HlpMipClearRrpAdminProhibRetry(void);
+
+extern void HlpMipResetRrpCode(void);
+extern void HlpMipSetRrpCode(kal_uint8 RrpCode);
+extern kal_uint8 HlpMipGetRrpCode(void);
+extern void HlpMIPReRegistration(MipReRegReasonT Reason);
+extern void HlpReturnToService(void);
+
+extern void HlpToReadNVRSAPublicKeyInfo(void);
+extern kal_bool HlpCheckRSAPublicKeyInfo(kal_uint8 nPKOID);
+extern kal_bool HlpIsAcgOpTetheringMode(void);
+extern kal_bool HlpIsAcgOpMipOnlyMode(void);
+extern kal_bool HlpCheckIsAcgSpecialNAI(char *pStr);
+extern kal_uint8 HlpDeriveTetheredNAIForACG(kal_uint8 *InputNAI, kal_uint8 InNAILen);
+/*****************************************************************************
+* $Log: hlpmip.h $
+*
+* 11 09 2016 sue.zhong
+* [MOLY00208435] [6293][C2K]Sync C2K code to UMOLYA TRUNK
+* Update C2K PS code (1/2)
+*****************************************************************************/
+
+/*****************************************************************************
+* End of File
+*****************************************************************************/
+#endif
+
+
+
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
+