| /***************************************************************************** |
| * 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 |
| |
| |