[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
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
+
+