| /***************************************************************************** |
| * Copyright Statement: |
| * -------------------- |
| * This software is protected by Copyright and the information contained |
| * herein is confidential. The software may not be copied and the information |
| * contained herein may not be used or disclosed except with the written |
| * permission of MediaTek Inc. (C) 2016 |
| * |
| * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES |
| * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") |
| * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON |
| * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. |
| * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE |
| * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR |
| * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH |
| * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO |
| * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S |
| * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. |
| * |
| * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE |
| * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, |
| * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, |
| * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO |
| * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. |
| * |
| * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE |
| * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF |
| * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND |
| * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER |
| * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). |
| * |
| *****************************************************************************/ |
| /************************************************************* |
| * |
| * This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc. |
| * |
| * Any unauthorized use inconsistent with the terms of such license is strictly prohibited. |
| * |
| * Copyright (c) 2006-2010 VIA Telecom, Inc. All rights reserved. |
| * |
| *************************************************************/ |
| #ifndef _RTAP_H_ |
| #define _RTAP_H_ |
| /***************************************************************************** |
| * |
| * FILE NAME : rtap.h |
| * |
| * DESCRIPTION : This file contains function prototypes and other definitions |
| * for the Reverse TAP application |
| * |
| * HISTORY : |
| * See Log at end of file |
| * |
| *****************************************************************************/ |
| |
| /*---------------------------------------------------------------------------- |
| * Include Files |
| ----------------------------------------------------------------------------*/ |
| #include "sysdefs.h" |
| #include "do_dsaapi.h" |
| /*---------------------------------------------------------------------------- |
| Defines And Macros |
| ----------------------------------------------------------------------------*/ |
| #define RTAP_MAX_PACKET_NUM 16 |
| #define RTAP_MAX_RATE_INDEX 5 |
| #define RTAP_MAX_PAYLOAD_INDEX 12 |
| #define MAX_SUB_STREAM_NUM 4 |
| |
| extern kal_uint8 RtapTestMode; |
| /*---------------------------------------------------------------------------- |
| structure definitions |
| ----------------------------------------------------------------------------*/ |
| typedef enum |
| { |
| RTAP_START_TIMERID, |
| RTAP_CFG_TIMERID = RTAP_START_TIMERID, |
| RTAP_STAT_TIMERID, |
| RTAP_MAX_TIMERID |
| } RtapTimerEnumT; |
| |
| typedef enum |
| { |
| RCP_RTAP_INIT_SUBTYPE_ERR, |
| RCP_RTAP_GRANT_ERR, |
| RCP_RTAP_RATEINDEX_ERR, |
| RCP_RTAP_PAYLOADINDEX_ERR, |
| RCP_RTAP_OTAMSG_DEC_ERR, |
| RCP_RTAP_LINKFLOWNUM_ERR, |
| RCP_RTAP_CBBUF_ERR |
| } RtapErrEnumT; |
| |
| typedef enum |
| { |
| RTAP_INACTIVE, |
| RTAP_IDLE, |
| RTAP_CONNECTED, |
| } RtapStatEnumT; |
| |
| typedef enum |
| { |
| PARAMETER_ASSIGNMENT_MSG_ID=0x80, |
| PARAMETER_COMPLETE_MSG_ID, |
| STATS_CLEAR_REQ_MSG_ID, |
| STATS_CLEAR_RSP_MSG_ID, |
| STATS_GET_REQ_MSG_ID, |
| STATS_GET_RSP_MSG_ID |
| } RtapMsgIdEnumT; |
| |
| typedef enum |
| { |
| TEST_PKT_ENABLE_ID, |
| PKT_RATE_MODE_ID, |
| PKT_PAYLOAD_SIZE_MODE_ID, |
| EN_ACCESS_CHAN_RATE_MODE_ID, |
| BURST_PERIOD_MODE_ID, |
| BURST_SIZE_MODE_ID |
| } RtapRecIdEnumT; |
| |
| typedef struct RtapPkt |
| { |
| kal_bool bSent; |
| CpBufferT *pPktBuf; /*The payload buffer*/ |
| struct RtapPkt *pNext; |
| } RtapPktT; |
| |
| typedef struct |
| { |
| kal_uint8 num; /*number of records*/ |
| RtapPktT* pHead; |
| RtapPktT* pCurrent; |
| RtapPktT* pTail; |
| } RtapPktListT; |
| |
| |
| /*--- Test Parameters Structures---*/ |
| typedef struct |
| { |
| kal_uint8 Upper7; |
| kal_uint32 Lower32; |
| } SysSubFrameTimeT;/*in unit of subframes*/ |
| |
| typedef struct |
| { |
| kal_uint8 LinkFlowID; |
| kal_uint8 revMacId; |
| kal_uint8 PayLoadIndex; |
| kal_uint32 Sequence[RTAP_MAX_PAYLOAD_INDEX+1]; |
| SysSubFrameTimeT RevSysTime; |
| } RtapPL_2InfoT; |
| |
| typedef union |
| { |
| kal_uint16 Seq_Num[RTAP_MAX_RATE_INDEX+1]; /*12 bits*/ |
| RtapPL_2InfoT PL_2Info[MAX_SUB_STREAM_NUM];/*There are 2^8 substream_number at most*/ |
| } RtapTestInfoT; |
| |
| typedef struct |
| { |
| RtapTestInfoT TestParm; |
| kal_uint8 LinkNum; |
| kal_uint16 SubType; |
| kal_uint8 RevMacId; |
| kal_uint16 ProtocolType; /*Store stream type for sending Rev OTA message*/ |
| kal_uint8 ConnFlag; /*used to record open connection reason(ParameterAssignment,StatClearRequest,StatGetRequest)*/ |
| kal_uint8 Index; /*RateIndex*/ |
| kal_uint8 TestPktOverflowBit; |
| kal_uint32 BurstSize; /*used to record remained BurstSize*/ |
| CpBufferT* pPktBuf; /*used to put Fill Packet or PL_2 Packet*/ |
| kal_uint16 PktOffset; |
| kal_uint16 PktLen; |
| } RtapTestParmT; |
| |
| /*---- Configuration Parameters Structures ----*/ |
| typedef struct |
| { |
| kal_uint8 LinkNum; |
| kal_uint8 LinkFlowId[MAX_SUB_STREAM_NUM]; |
| kal_uint16 BurstPeriod[MAX_SUB_STREAM_NUM]; |
| kal_uint16 BurstSize[MAX_SUB_STREAM_NUM]; |
| } BurstInfoRec; |
| |
| /* RTAP Cfg Parameters*/ |
| typedef struct |
| { |
| kal_bool bInCfg; |
| kal_uint16 SubType; |
| kal_bool bTestPktMode; |
| kal_uint8 TestPktPersistence; |
| kal_bool bCfgPktRateMode; |
| kal_bool bCfgPktPayloadSizeMode; |
| kal_bool bCfgEnACRateMode; |
| kal_bool bCfgBurstMode; |
| BurstInfoRec BurstInfo; |
| kal_uint8 ParmAssigTranId; /*mod 256, 0xff means NULL*/ |
| kal_uint8 StatsClearTranId; /*mod 256, 0xff means NULL*/ |
| kal_uint8 StatsReqTranId; /*mod 256, 0xff means NULL*/ |
| } RtapParmsT; |
| |
| typedef struct |
| { |
| kal_uint8 MacFlowId; |
| kal_uint8 LinkFlowId; |
| } LinkFlowInfoT; |
| |
| /*RETAPParameterAssignment message info*/ |
| typedef struct |
| { |
| kal_uint8 TransID; |
| kal_bool TestPktEnableInc; |
| kal_uint8 TestPktPersistence; |
| kal_bool PktRateModeInc; |
| kal_uint8 MinRateIndex; |
| kal_uint8 MaxRateIndex; |
| kal_bool PktPayloadSizeModeInc; |
| kal_uint8 MinPayloadSizeIndex; |
| kal_uint8 MaxPayloadSizeIndex; |
| kal_bool EnACRateModeInc; |
| kal_uint8 EnACRateIndex; |
| kal_bool BurstPeriodModeInc; |
| kal_uint8 LinkFlowID; |
| kal_uint16 BurstPeriod; |
| kal_bool BurstSizeModeInc; |
| kal_uint8 BurstSize; |
| } REtapParamAssignMsgT; |
| |
| /*RTAPParameterAssignment message info*/ |
| typedef struct |
| { |
| kal_uint8 TransID; |
| kal_bool TestPktEnableInc; |
| kal_uint8 TestPktPersistence; |
| kal_bool PktRateModeInc; |
| kal_uint8 MinRateIndex; |
| kal_uint8 MaxRateIndex; |
| } RtapParamAssignMsgT; |
| |
| /* RTAP_TIMER_EXPIRED_MSG */ |
| typedef struct |
| { |
| kal_uint32 TimerId; |
| } RtapTimerExpiredMsgT; |
| |
| typedef struct |
| { |
| #if defined (RCP_RI_HRT_DEV) |
| kal_uint32 TimerCb; |
| #else |
| kal_timerid TimerCb; |
| #endif |
| kal_bool Active; |
| } RtapExeTimerT; |
| |
| /* RTAP OTA message structure*/ |
| typedef struct /*TestPktEnable Parameter Record*/ |
| { |
| kal_uint8 TestPktPersistence; |
| } TstPktEnaRec; |
| |
| typedef struct |
| { |
| kal_uint8 MinRateIndex; |
| kal_uint8 MaxRateIndex; |
| } PktRateModeRec; |
| |
| typedef struct |
| { |
| kal_uint8 MinPayloadSizeIndex; |
| kal_uint8 MaxPayloadSizeIndex; |
| } PktPLSizeModeRec; |
| |
| typedef struct |
| { |
| kal_uint8 EnACRateIndex; /*0-9.6kbps,1-19.2kbps,2-38.4kbps*/ |
| } EnACRateModeRec; |
| |
| typedef struct |
| { |
| kal_uint8 LinkFlowID; |
| kal_uint16 BurstPeriod; /*in units of 600 slots, 0xffff=infinite*/ |
| } BurstPeriodModeRec; |
| |
| typedef struct |
| { |
| kal_uint8 LinkFlowID; |
| kal_uint16 BurstSize; /*in units of 1000 octets,0xffff=full buffer*/ |
| } BurstSizeModeRec; |
| |
| /* RTAPParameterAssignment */ |
| typedef struct |
| { |
| kal_bool TstPktEnaInc; |
| TstPktEnaRec TstPktEnableParm; |
| kal_bool PktRateModeInc; |
| PktRateModeRec PktRateModeParm; |
| } RtapParmAssignMsgT; |
| |
| /* RETAPParameterAssignment */ |
| typedef struct |
| { |
| kal_bool TstPktEnaInc; |
| TstPktEnaRec TstPktEnableParm; |
| kal_bool PktRateModeInc; |
| PktRateModeRec PktRateModeParm; |
| kal_bool PktPayloadSizeModeInc; |
| PktPLSizeModeRec PktPLSizeModeParm; |
| kal_bool EnACRateModeInc; |
| EnACRateModeRec EnACRateModeParm; |
| kal_uint8 LinkNum; |
| kal_bool BurstPeriodModeInc; |
| BurstPeriodModeRec BurstPeriodModeParm[MAX_SUB_STREAM_NUM]; |
| kal_bool BurstSizeModeInc; |
| BurstSizeModeRec BurstSizeModeParm[MAX_SUB_STREAM_NUM]; |
| } RetapParmAssignMsgT; |
| |
| typedef struct |
| { |
| RtapStatEnumT RtapState; |
| kal_uint16 AppType; |
| kal_uint8 bTestPktMode; |
| kal_uint8 TestPktPersistence; |
| kal_uint8 bCfgPktRateMode; |
| kal_uint8 bCfgPktPayloadSizeMode; |
| kal_uint8 bCfgEnACRateMode; |
| kal_uint8 bCfgBurstMode; |
| kal_uint8 bTstPktOverWrite; |
| kal_uint8 PktBufNum; |
| } RtapSpyStatesT; |
| /*---------------------------------------------------------------------------- |
| API Functions |
| ----------------------------------------------------------------------------*/ |
| void RtapInitStructure(kal_uint16 SubType, kal_bool InUse); |
| void RtapCommit (MacFlow2StrFlowMappingT *RtapMacFlowTable, kal_uint8 StreamNum); |
| void RtapProcessRcpSig( kal_bool anyGrant); |
| void RtapHandleConnCloseMsg( void); |
| void RtapHandleConnOpenMsg( void); |
| void RtapInit( void ); |
| void RtapHandleFwdOtaMsg( DsaFwdMsgT* pMsg ); |
| void RtapHandleEvtTmExpireMsg (kal_uint32 TimerId); |
| void RtapHandleEvtBurstTmExpireMsg (kal_uint32 TimerId); |
| void RtapHandleTxStatusMsg(DsarTxStatusMsgT* pMsg); |
| kal_bool RtapGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum); |
| void RtapPktSent (kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void RtapPktNotSent (kal_uint8 revMacId,kal_uint8 subStreamNum); |
| kal_uint16 RtapGrant (DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum); |
| kal_uint32 RtapGetQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum); |
| |
| /***************************************************************************** |
| * End of File |
| *****************************************************************************/ |
| #endif |
| |
| |