blob: 3e0427ca0c7db6498d1cdc8f76e590edc0106e58 [file] [log] [blame]
/*****************************************************************************
* 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