blob: ea9187feae069bae60e53a1da3a8a996b040717e [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2016
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35/*************************************************************
36*
37* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
38*
39* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
40*
41* Copyright (c) 2006-2010 VIA Telecom, Inc. All rights reserved.
42*
43*************************************************************/
44#ifndef _RTAP_H_
45#define _RTAP_H_
46/*****************************************************************************
47*
48* FILE NAME : rtap.h
49*
50* DESCRIPTION : This file contains function prototypes and other definitions
51* for the Reverse TAP application
52*
53* HISTORY :
54* See Log at end of file
55*
56*****************************************************************************/
57
58/*----------------------------------------------------------------------------
59* Include Files
60----------------------------------------------------------------------------*/
61#include "sysdefs.h"
62#include "do_dsaapi.h"
63/*----------------------------------------------------------------------------
64Defines And Macros
65----------------------------------------------------------------------------*/
66#define RTAP_MAX_PACKET_NUM 16
67#define RTAP_MAX_RATE_INDEX 5
68#define RTAP_MAX_PAYLOAD_INDEX 12
69#define MAX_SUB_STREAM_NUM 4
70
71extern kal_uint8 RtapTestMode;
72/*----------------------------------------------------------------------------
73 structure definitions
74----------------------------------------------------------------------------*/
75typedef enum
76{
77 RTAP_START_TIMERID,
78 RTAP_CFG_TIMERID = RTAP_START_TIMERID,
79 RTAP_STAT_TIMERID,
80 RTAP_MAX_TIMERID
81} RtapTimerEnumT;
82
83typedef enum
84{
85 RCP_RTAP_INIT_SUBTYPE_ERR,
86 RCP_RTAP_GRANT_ERR,
87 RCP_RTAP_RATEINDEX_ERR,
88 RCP_RTAP_PAYLOADINDEX_ERR,
89 RCP_RTAP_OTAMSG_DEC_ERR,
90 RCP_RTAP_LINKFLOWNUM_ERR,
91 RCP_RTAP_CBBUF_ERR
92} RtapErrEnumT;
93
94typedef enum
95{
96 RTAP_INACTIVE,
97 RTAP_IDLE,
98 RTAP_CONNECTED,
99} RtapStatEnumT;
100
101typedef enum
102{
103 PARAMETER_ASSIGNMENT_MSG_ID=0x80,
104 PARAMETER_COMPLETE_MSG_ID,
105 STATS_CLEAR_REQ_MSG_ID,
106 STATS_CLEAR_RSP_MSG_ID,
107 STATS_GET_REQ_MSG_ID,
108 STATS_GET_RSP_MSG_ID
109} RtapMsgIdEnumT;
110
111typedef enum
112{
113 TEST_PKT_ENABLE_ID,
114 PKT_RATE_MODE_ID,
115 PKT_PAYLOAD_SIZE_MODE_ID,
116 EN_ACCESS_CHAN_RATE_MODE_ID,
117 BURST_PERIOD_MODE_ID,
118 BURST_SIZE_MODE_ID
119} RtapRecIdEnumT;
120
121typedef struct RtapPkt
122{
123 kal_bool bSent;
124 CpBufferT *pPktBuf; /*The payload buffer*/
125 struct RtapPkt *pNext;
126} RtapPktT;
127
128typedef struct
129{
130 kal_uint8 num; /*number of records*/
131 RtapPktT* pHead;
132 RtapPktT* pCurrent;
133 RtapPktT* pTail;
134} RtapPktListT;
135
136
137/*--- Test Parameters Structures---*/
138typedef struct
139{
140 kal_uint8 Upper7;
141 kal_uint32 Lower32;
142} SysSubFrameTimeT;/*in unit of subframes*/
143
144typedef struct
145{
146 kal_uint8 LinkFlowID;
147 kal_uint8 revMacId;
148 kal_uint8 PayLoadIndex;
149 kal_uint32 Sequence[RTAP_MAX_PAYLOAD_INDEX+1];
150 SysSubFrameTimeT RevSysTime;
151} RtapPL_2InfoT;
152
153typedef union
154{
155 kal_uint16 Seq_Num[RTAP_MAX_RATE_INDEX+1]; /*12 bits*/
156 RtapPL_2InfoT PL_2Info[MAX_SUB_STREAM_NUM];/*There are 2^8 substream_number at most*/
157} RtapTestInfoT;
158
159typedef struct
160{
161 RtapTestInfoT TestParm;
162 kal_uint8 LinkNum;
163 kal_uint16 SubType;
164 kal_uint8 RevMacId;
165 kal_uint16 ProtocolType; /*Store stream type for sending Rev OTA message*/
166 kal_uint8 ConnFlag; /*used to record open connection reason(ParameterAssignment,StatClearRequest,StatGetRequest)*/
167 kal_uint8 Index; /*RateIndex*/
168 kal_uint8 TestPktOverflowBit;
169 kal_uint32 BurstSize; /*used to record remained BurstSize*/
170 CpBufferT* pPktBuf; /*used to put Fill Packet or PL_2 Packet*/
171 kal_uint16 PktOffset;
172 kal_uint16 PktLen;
173} RtapTestParmT;
174
175/*---- Configuration Parameters Structures ----*/
176typedef struct
177{
178 kal_uint8 LinkNum;
179 kal_uint8 LinkFlowId[MAX_SUB_STREAM_NUM];
180 kal_uint16 BurstPeriod[MAX_SUB_STREAM_NUM];
181 kal_uint16 BurstSize[MAX_SUB_STREAM_NUM];
182} BurstInfoRec;
183
184/* RTAP Cfg Parameters*/
185typedef struct
186{
187 kal_bool bInCfg;
188 kal_uint16 SubType;
189 kal_bool bTestPktMode;
190 kal_uint8 TestPktPersistence;
191 kal_bool bCfgPktRateMode;
192 kal_bool bCfgPktPayloadSizeMode;
193 kal_bool bCfgEnACRateMode;
194 kal_bool bCfgBurstMode;
195 BurstInfoRec BurstInfo;
196 kal_uint8 ParmAssigTranId; /*mod 256, 0xff means NULL*/
197 kal_uint8 StatsClearTranId; /*mod 256, 0xff means NULL*/
198 kal_uint8 StatsReqTranId; /*mod 256, 0xff means NULL*/
199} RtapParmsT;
200
201typedef struct
202{
203 kal_uint8 MacFlowId;
204 kal_uint8 LinkFlowId;
205} LinkFlowInfoT;
206
207/*RETAPParameterAssignment message info*/
208typedef struct
209{
210 kal_uint8 TransID;
211 kal_bool TestPktEnableInc;
212 kal_uint8 TestPktPersistence;
213 kal_bool PktRateModeInc;
214 kal_uint8 MinRateIndex;
215 kal_uint8 MaxRateIndex;
216 kal_bool PktPayloadSizeModeInc;
217 kal_uint8 MinPayloadSizeIndex;
218 kal_uint8 MaxPayloadSizeIndex;
219 kal_bool EnACRateModeInc;
220 kal_uint8 EnACRateIndex;
221 kal_bool BurstPeriodModeInc;
222 kal_uint8 LinkFlowID;
223 kal_uint16 BurstPeriod;
224 kal_bool BurstSizeModeInc;
225 kal_uint8 BurstSize;
226} REtapParamAssignMsgT;
227
228/*RTAPParameterAssignment message info*/
229typedef struct
230{
231 kal_uint8 TransID;
232 kal_bool TestPktEnableInc;
233 kal_uint8 TestPktPersistence;
234 kal_bool PktRateModeInc;
235 kal_uint8 MinRateIndex;
236 kal_uint8 MaxRateIndex;
237} RtapParamAssignMsgT;
238
239/* RTAP_TIMER_EXPIRED_MSG */
240typedef struct
241{
242 kal_uint32 TimerId;
243} RtapTimerExpiredMsgT;
244
245typedef struct
246{
247#if defined (RCP_RI_HRT_DEV)
248 kal_uint32 TimerCb;
249#else
250 kal_timerid TimerCb;
251#endif
252 kal_bool Active;
253} RtapExeTimerT;
254
255/* RTAP OTA message structure*/
256typedef struct /*TestPktEnable Parameter Record*/
257{
258 kal_uint8 TestPktPersistence;
259} TstPktEnaRec;
260
261typedef struct
262{
263 kal_uint8 MinRateIndex;
264 kal_uint8 MaxRateIndex;
265} PktRateModeRec;
266
267typedef struct
268{
269 kal_uint8 MinPayloadSizeIndex;
270 kal_uint8 MaxPayloadSizeIndex;
271} PktPLSizeModeRec;
272
273typedef struct
274{
275 kal_uint8 EnACRateIndex; /*0-9.6kbps,1-19.2kbps,2-38.4kbps*/
276} EnACRateModeRec;
277
278typedef struct
279{
280 kal_uint8 LinkFlowID;
281 kal_uint16 BurstPeriod; /*in units of 600 slots, 0xffff=infinite*/
282} BurstPeriodModeRec;
283
284typedef struct
285{
286 kal_uint8 LinkFlowID;
287 kal_uint16 BurstSize; /*in units of 1000 octets,0xffff=full buffer*/
288} BurstSizeModeRec;
289
290/* RTAPParameterAssignment */
291typedef struct
292{
293 kal_bool TstPktEnaInc;
294 TstPktEnaRec TstPktEnableParm;
295 kal_bool PktRateModeInc;
296 PktRateModeRec PktRateModeParm;
297} RtapParmAssignMsgT;
298
299/* RETAPParameterAssignment */
300typedef struct
301{
302 kal_bool TstPktEnaInc;
303 TstPktEnaRec TstPktEnableParm;
304 kal_bool PktRateModeInc;
305 PktRateModeRec PktRateModeParm;
306 kal_bool PktPayloadSizeModeInc;
307 PktPLSizeModeRec PktPLSizeModeParm;
308 kal_bool EnACRateModeInc;
309 EnACRateModeRec EnACRateModeParm;
310 kal_uint8 LinkNum;
311 kal_bool BurstPeriodModeInc;
312 BurstPeriodModeRec BurstPeriodModeParm[MAX_SUB_STREAM_NUM];
313 kal_bool BurstSizeModeInc;
314 BurstSizeModeRec BurstSizeModeParm[MAX_SUB_STREAM_NUM];
315} RetapParmAssignMsgT;
316
317typedef struct
318{
319 RtapStatEnumT RtapState;
320 kal_uint16 AppType;
321 kal_uint8 bTestPktMode;
322 kal_uint8 TestPktPersistence;
323 kal_uint8 bCfgPktRateMode;
324 kal_uint8 bCfgPktPayloadSizeMode;
325 kal_uint8 bCfgEnACRateMode;
326 kal_uint8 bCfgBurstMode;
327 kal_uint8 bTstPktOverWrite;
328 kal_uint8 PktBufNum;
329} RtapSpyStatesT;
330/*----------------------------------------------------------------------------
331API Functions
332----------------------------------------------------------------------------*/
333void RtapInitStructure(kal_uint16 SubType, kal_bool InUse);
334void RtapCommit (MacFlow2StrFlowMappingT *RtapMacFlowTable, kal_uint8 StreamNum);
335void RtapProcessRcpSig( kal_bool anyGrant);
336void RtapHandleConnCloseMsg( void);
337void RtapHandleConnOpenMsg( void);
338void RtapInit( void );
339void RtapHandleFwdOtaMsg( DsaFwdMsgT* pMsg );
340void RtapHandleEvtTmExpireMsg (kal_uint32 TimerId);
341void RtapHandleEvtBurstTmExpireMsg (kal_uint32 TimerId);
342void RtapHandleTxStatusMsg(DsarTxStatusMsgT* pMsg);
343kal_bool RtapGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
344void RtapPktSent (kal_uint8 revMacId,kal_uint8 subStreamNum);
345void RtapPktNotSent (kal_uint8 revMacId,kal_uint8 subStreamNum);
346kal_uint16 RtapGrant (DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
347kal_uint32 RtapGetQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
348
349/*****************************************************************************
350* End of File
351*****************************************************************************/
352#endif
353
354