blob: ea9187feae069bae60e53a1da3a8a996b040717e [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 _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