blob: 935e5130cb3ac8ad558ede314cf3944a72ff197b [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) 2003-2010 VIA Telecom, Inc. All rights reserved.
42*
43*************************************************************/
44/*******************************************************************************
45 *
46 * File Name: RLP_API.h
47 *
48 * Creation Date: Jan. 6, 2004
49 *
50 * Description : It contains RLP API and the related data structure
51 *
52 *******************************************************************************
53 ******************************************************************************/
54
55#ifndef __RLP_API_H__
56#define __RLP_API_H__
57
58/*******************************************************************************
59 Include Header Files
60 (No absolute paths - paths handled by make file)
61*******************************************************************************/
62#include "sysdefs.h"
63#include "cpbuf.h"
64#include "rlp_msgid.h"
65
66#include "module_msg_range.h"
67/*******************************************************************************
68 Macros
69*******************************************************************************/
70#define RLP_MAX_SPY_LEN 64 /* Max size for Monspy output */
71#define RLP_IOP_MAX_REV_SIZE 120 /* Max size per IOP->RLP data xfer at REV link */
72
73#define RLP_MAILBOX_CMD EXE_MAILBOX_1_ID
74#if 0
75/* under construction !*/
76/* under construction !*/
77/* under construction !*/
78#endif
79
80/*******************************************************************************
81 User-Defined Types (Typedefs)
82*******************************************************************************/
83
84typedef enum
85{
86 RLP_PRIMARY_CHANNEL = 0, /* Do not change */
87 RLP_SECONDARY_CHANNEL,
88 NUM_TRAFFIC_CHAN
89} RlpChannelSelE;
90
91typedef enum
92{
93 RLP_NON_TRANSPARENT = 0, /* Do not change */
94 RLP_TRANSPARENT
95} RlpModeE;
96
97typedef enum
98{
99 RLP_RATE_SET1 = 0,
100 RLP_RATE_SET2,
101 NUM_RATE_SET
102} RlpRateSetE;
103
104typedef enum
105{
106 RLP_TYPE_1 = 0, /* Do not change the starting value */
107 RLP_TYPE_2,
108 RLP_TYPE_3,
109 NUM_RLP_TYPE
110} RlpTypeE;
111
112typedef enum
113{
114 RLP_FOR_HLP,
115 RLP_FOR_IOP,
116 RLP_AS_IS
117} RlpClientT;
118
119/*******************************************************************************
120 Message Definitions
121*******************************************************************************/
122/* RLP_PSW_INIT_CFG_MSG */
123typedef struct
124{
125 kal_uint8 srId; /* SR_ID */
126 RlpChannelSelE channel; /* Primary or Secondary Channel. */
127 RlpRateSetE fwdRateSet; /* Rate set for forward link. */
128 RlpRateSetE revRateSet; /* Rate set for reverse link. */
129 RlpRateSetE fwdSchRateSet; /* Rate set for SCH forward link. */
130 RlpRateSetE revSchRateSet; /* Rate set for SCH reverse link. */
131 kal_uint16 fwdSchMuxOpt; /* Mux option for fwd SCH */
132 kal_uint16 revSchMuxOpt; /* Mux option for rev SCH */
133 RlpTypeE rlpType; /* RLP_TYPE_1, 2 and 3 */
134 kal_bool paramValid; /* KAL_TRUE: valid in next two params */
135 kal_uint32 rand; /* To generate LTable. */
136 kal_uint8 SSDB[8]; /* To generate Data Key. */
137} RlpInitCfgMsgT;
138
139typedef struct
140{
141 kal_uint8 RateCtrlParam; /* Rate control parameter. */
142} RlpRateControlMsgT;
143
144/* RLP_PSW_BLOB_CFG_MSG */
145#define RLP3_MAX_ROUNDS_FWD 7
146#define RLP3_MAX_ROUNDS_REV 7
147
148typedef struct
149{
150 kal_bool revSchSupported; /* Whether RSCH is supported by BS or not */
151 kal_uint16 fwdSchMuxOpt; /* Mux option for fwd SCH */
152 kal_uint16 revSchMuxOpt; /* Mux option for rev SCH */
153 kal_uint16 fwdPdchMuxOpt; /* Mux option for fwd PDCH */
154
155 kal_uint8 rlpBlobType;
156 kal_uint8 rlpVersion;
157
158 kal_uint8 rtt;
159 kal_uint8 ddw;
160 kal_uint8 rexmit_timer;
161 kal_bool initVar;
162
163 kal_uint32 bsExtSeqM;
164 kal_uint32 msExtSeqM;
165
166 kal_uint8 maxMsNakRoundsFwd;
167 kal_uint8 maxMsNakRoundsRev;
168 kal_uint8 nakRoundsFwd;
169 kal_uint8 nakRoundsRev;
170
171 kal_uint8 nakPerRoundFwd[RLP3_MAX_ROUNDS_FWD];
172 kal_uint8 nakPerRoundRev[RLP3_MAX_ROUNDS_REV];
173} RlpBlobMsgT;
174
175typedef struct
176{
177 kal_uint8 SrId; /* SR_ID */
178 RlpChannelSelE ChannelSel; /* Primary or Secondary Channel. */
179 RlpModeE ModeType; /* Non/transparent mode. */
180 RlpClientT Client;
181 kal_uint16 InActTimeOut; /* 0 = disable, non_zero = number
182 of 20 msec frames. */
183 ExeRspMsgT fwdDataDest; /* Destination for forward data. */
184 kal_bool reOpen; /* indicate it's a reopen triggered by RLP open failed. */
185} RlpOpenMsgT;
186
187
188/* RLP_AIW_CLOSE_CFG_MSG */
189/* RLP_HLW_CLOSE_CFG_MSG */
190typedef struct
191{
192 kal_uint8 SrId; /* SR_ID */
193 RlpChannelSelE ChannelSel; /* Primary or Secondary Channel. */
194 kal_bool FlushPending; /* KAL_TRUE, to flush any pending RLP */
195 /* data frame. */
196 /* KAL_FALSE, RLP to transmit any */
197 /* pending data before close. */
198} RlpCloseMsgT;
199
200
201/* RLP_AIW_INACT_TIMEOUT_CFG_MSG */
202/* RLP_HLW_INACT_TIMEOUT_CFG_MSG */
203typedef struct
204{
205 kal_uint8 srId;
206 RlpChannelSelE channel; /* Primary or Secondary Channel. */
207 kal_uint16 timeOutPeriod; /* unit of second. */
208} RlpInActTimeOutMsgT;
209
210typedef enum
211{
212 SYS_RLP_RATE_BLANK = 0, /* blank rate */
213 SYS_RLP_RATE_1_16, /* 1/16 rate */
214 SYS_RLP_RATE_1_8, /* 1/8 rate */
215 SYS_RLP_RATE_3_16, /* 3/16 rate */
216 SYS_RLP_RATE_1_4, /* 1/4 rate */
217 SYS_RLP_RATE_3_8, /* rate 3/8 */
218 SYS_RLP_RATE_7_16, /* rate 7/16 */
219 SYS_RLP_RATE_1_2, /* rate 1/2 */
220 SYS_RLP_RATE_3_4, /* rate 3/4 */
221 SYS_RLP_RATE_7_8, /* rate 7/8 */
222 SYS_RLP_RATE_1, /* full rate */
223 SYS_RLP_RATE_1x, /* 1x rate for SCH */
224 SYS_RLP_RATE_2x, /* 2x rate for SCH */
225 SYS_RLP_RATE_TOTAL, /* number of rates */
226 SYS_RLP_RATE_NON_CRITICAL, /* NON_CRITICAL */
227 SYS_RLP_RATE_BAD = 255 /* erasure frame */
228} SysRlpFrameRateE;
229
230typedef enum
231{
232 B_NEW = 0x40,
233 B_REXMIT = 0x60,
234 Blank = 0x10,
235 A_UnSeg = 0x00,
236 A_Seg = 0x80,
237 Fill_Frame = 0x90,
238 Idle_Frame = 0xa0,
239 SYNC_Frame = 0xd0,
240 SYNC_ACK_Frame = 0xf0,
241 ACK_Frame = 0xe0,
242 NAK_Frame = 0xc0
243} SysRlpFchFrameTypeE;
244typedef struct
245{
246 kal_bool RateAllowed[SYS_RLP_RATE_TOTAL]; /* Table entries to be read */
247 /* in the order of entries */
248 /* "SysRlpFrameRateE". KAL_TRUE */
249 /* if rate is allowed; */
250 /* KAL_FALSE, otherwise. */
251} RlpFrameRateTabT;
252
253/*
254 * RLP_LMD_FWD_FUNDICATED_DATA_IND_MSG
255 * This message is sent from LMD to indicate a new data frame received
256 * on the forward FCH or DCCH
257 */
258typedef struct
259{
260 kal_uint8 priSrId; /* SR_ID for the primary channel */
261 SysRlpFrameRateE priRate; /* frame rate received for primary */
262 CpBufferT *priDataPtr; /* data received for primary, null */
263 /* if PrimaryRate is blank or bad */
264 kal_uint8 secSrId; /* SR_ID for the secondary channel */
265 SysRlpFrameRateE secRate; /* frame rate received for secondary */
266 CpBufferT *secDataPtr; /* data received for secondary, null */
267 /* if SecondaryRate is blank or bad */
268} RlpFwdFundicatedDataIndMsgT;
269
270typedef enum
271{
272 FORMAT_D = 0,
273 FORMAT_AB,
274 FORMAT_C_NEW,
275 FORMAT_C_REXMIT,
276 FORMAT_A,
277 FORMAT_B
278} RlpFrmFormatE;
279
280typedef struct
281{
282 kal_uint8 srId;
283 RlpFrmFormatE frameFormat;
284 kal_uint8 offset;
285 kal_uint8 reserved; /* Word alignment */
286 kal_uint16 frameLen;
287 CpBufferT *dataCpPtr;
288} RlpFrameInfoT;
289
290/* RLP_LMD_FWD_SCH_DATA_IND_MSG */
291#define NUM_FSCH_FRAMES 16
292typedef struct
293{
294 kal_uint8 numRlpFrames; /* The number of RLP frames */
295 RlpFrameInfoT rlpFrame[NUM_FSCH_FRAMES];
296}RlpFwdSchDataIndMsgT;
297
298/* RLP_LMD_FWD_PDCH_DATA_IND_MSG */
299#define NUM_FPDCH_FRAMES 20
300typedef struct
301{
302 kal_uint16 numRlpFrames;
303 RlpFrameInfoT rlpFrame[NUM_FPDCH_FRAMES];
304}RlpFwdPdchDataIndMsgT;
305
306/* RLP_LMD_REV_DTCH_DATA_AVAIL_IND_MSG */
307typedef struct
308{
309 ExeRspMsgT rspMsg; /* required response message */
310 kal_uint8 priSrId; /* SR_ID for the primary channel */
311 SysRlpFrameRateE priRate; /* The highest frame rate for primary */
312
313 kal_uint8 secSrId; /* SR_ID for the secondary channel */
314 SysRlpFrameRateE secRate; /* The highest frame rate for secondary */
315
316 ExeRspMsgT schRspMsg; /* The Rev Sch's required Rsp msg */
317 kal_uint8 numSchPdu; /* Number of PDU's allowed */
318 SysRlpFrameRateE schRate; /* The rate allowed for each MuxPDU */
319 SysMultiplexOptionT schMuxOpt; /* Current R-SCH assignment Mux Option */
320}RlpRevDataAvailIndMsgT;
321
322/* RLP_RLP_MORE_FWD_DATA_AVAIL_IND_MSG */
323typedef struct
324{
325 kal_uint8 srId;
326}RlpFwdMoreDataAvailIndMsgT;
327
328/* RLP_ETS_RESET_STAT_CFG_MSG */
329/* Message body is not needed */
330
331/* RLP_ETS_PEEK_RXQ_STAT_CFG_MSG */
332/* RLP_ETS_PEEK_FRAME_STAT_CFG_MSG */
333typedef struct
334{
335 ExeRspMsgT rspInfo;
336} RlpPeekStatMsgT;
337
338/* RLP_ETS_NUM_FRAME_PER_UPPER_LAYER_IND_CFG_MSG */
339typedef struct
340{
341 kal_uint16 numRlpFrames;
342} RlpNumFramesPerIndT;
343
344enum EcdmaSysRlpFramePhyChan_enum
345{
346 CDMA_SYS_FCH,
347 CDMA_SYS_DCCH,
348 CDMA_SYS_SCH0,
349 CDMA_SYS_SCH1
350};
351
352enum EcdmaSysRlpFrameMuxPdu_enum
353{
354 MUX_PDU1 = 1,
355 MUX_PDU2,
356 MUX_PDU3
357};
358
359enum EcdmaSysRlpFramePhyChanRate_enum
360{
361 CDMA_SYS_PHY_CHAN_RATE_9600,
362 CDMA_SYS_PHY_CHAN_RATE_14400,
363 CDMA_SYS_PHY_CHAN_RATE_19200,
364 CDMA_SYS_PHY_CHAN_RATE_28800,
365 CDMA_SYS_PHY_CHAN_RATE_38400,
366 CDMA_SYS_PHY_CHAN_RATE_57600,
367 CDMA_SYS_PHY_CHAN_RATE_76800,
368 CDMA_SYS_PHY_CHAN_RATE_115200,
369 CDMA_SYS_PHY_CHAN_RATE_153600,
370 CDMA_SYS_PHY_CHAN_RATE_1200,
371 CDMA_SYS_PHY_CHAN_RATE_1800,
372 CDMA_SYS_PHY_CHAN_RATE_2400,
373 CDMA_SYS_PHY_CHAN_RATE_3600,
374 CDMA_SYS_PHY_CHAN_RATE_4800,
375 CDMA_SYS_PHY_CHAN_RATE_7200,
376 CDMA_SYS_PHY_CHAN_RATE_BLANK
377 };
378
379#define RLP_SPY_MAX_FRAME_PAYLOAD_LEN 44 /* bytes */
380
381typedef struct
382{
383 enum EcdmaSysRlpFramePhyChan_enum CdmaSysRlpFramePhyChan;
384 enum EcdmaSysRlpFrameMuxPdu_enum CdmaSysRlpFrameMuxPdu;
385 enum EcdmaSysRlpFramePhyChanRate_enum CdmaSysRlpFramePhyChanRate;
386 kal_uint8 CdmaSysRlpFrameTimeDelta;
387 kal_int16 CdmaSysRlpFrameLen;
388 kal_uint8 CdmaSysRlpFramePayload[RLP_SPY_MAX_FRAME_PAYLOAD_LEN];
389
390} EcdmaSysRlpFrameData;
391
392typedef struct
393{
394 kal_int32 CdmaSysRlpServiceId;
395 EcdmaSysRlpFrameData CdmaSysRlpFrames;
396
397} EcdmaSysRlpData;
398
399typedef struct
400{
401 kal_uint32 timestamp;
402 EcdmaSysRlpData FrameData;
403} RlpFrameEvent;
404
405typedef struct
406{
407 kal_bool bStatusReport;
408} RlpActivityStatusQueryMsgT;
409
410typedef enum EcdmaSysRlpFramePhyChanRate_enum RlpRxFrameRateT;
411typedef enum EcdmaSysRlpFrameMuxPdu_enum RlpFrameMuxPduTypeT;
412typedef enum EcdmaSysRlpFramePhyChan_enum RlpFramePhyChanT;
413
414
415typedef struct
416{
417 ExeRspMsgT RspMsg;
418} RlpQueryStatMsgT;
419
420typedef enum
421{
422 RLP_SCH_RATE_1X = 0,
423 RLP_SCH_RATE_2X = 1,
424 RLP_SCH_RATE_4X = 2,
425 RLP_SCH_RATE_8X = 3,
426 RLP_SCH_RATE_16X = 4
427}RlpSchRateT;
428
429typedef enum
430{
431 RLP_SCH_SINGLE_SIZE = 0,
432 RLP_SCH_DOUBLE_SIZE = 1
433}RlpSchDataBlockSizeT;
434
435typedef struct
436{
437 kal_uint32 CdmaSysServiceId; /* Service ID */
438 kal_uint32 CdmaSysResetTime; /* The system time when RLP stat resets */
439 kal_uint32 CdmaSysNaksReceived; /* Received NAK count */
440 kal_int32 CdmaSysReXmitsNotFound; /* Invalid NAK count for type 01, 10, 11 plus accumulated
441 distance between invalid 00 NAK seq and v_s */
442 kal_uint32 CdmaSysLargestContigErasure; /* Maximum count of contiguous erasures received */
443 kal_uint32 CdmaSysResets; /* Reset RLP count */
444 kal_uint32 CdmaSysAborts; /* Abort frame count */
445 kal_uint32 CdmaSysLastRtt; /* Last RTT in counts of 20 msec slot */
446 kal_uint32 CdmaSysRlpBlobUsed; /* 3 when BLOB includes RTT or 1 when not
447 (not used currently) */
448 kal_uint32 CdmaSysRxRexmitFrCnt; /* Rx Rexmit data frame count */
449 kal_uint32 CdmaSysRxIdleFrCnt; /* Rx Idle frame count */
450 kal_uint32 CdmaSysRxFillFrCnt; /* Rx Fill frame count */
451 kal_uint32 CdmaSysRxBlankFrCnt; /* Rx Blank frame count */
452 kal_uint32 CdmaSysRxNullFrCnt; /* Rx Null frame (not used currently) */
453 kal_uint32 CdmaSysRxNewDataFrCnt; /* Rx new data frame count */
454 kal_uint32 CdmaSysRx20msFrCnt; /* Rx data frame count */
455 kal_uint32 CdmaSysRxTotalBytes; /* Total bytes received for passing to upper layer */
456 kal_uint32 CdmaSysRxRlpErasures; /* Rx RLP erasures count */
457 kal_uint32 CdmaSysRxMuxErasures; /* Rx MUX erasures count */
458 kal_uint32 CdmaSysTxRexmitFrCnt; /* Tx Rexmit data frame count */
459 kal_uint32 CdmaSysTxIdleFrCnt; /* Tx Idle frame count */
460 kal_uint32 CdmaSysTxNewDataFrCnt; /* Tx new data frame count */
461 kal_uint32 CdmaSysTx20msFrCnt; /* Tx data frame count */
462 kal_uint32 CdmaSysTxTotalBytes; /* Total bytes requested from upper layer sent */
463 kal_uint32 CdmaSysTxNaksCnt; /* Count for the last Tx round set by BLOB */
464 kal_uint32 CdmaSysTxNaks[7]; /* Counts for 0 - 7 NAK Tx remaining for a particular
465 round when Rx the missing frame */
466 kal_bool IsForSchAssigned; /* If forward supplement channel is assigned */
467 RlpSchRateT ForSchRate; /* Current forward Supplement channel rate */
468 RlpSchDataBlockSizeT ForSchDataBlockSize; /* Current forward SCH data block size */
469 kal_uint8 NumForSchUsed; /* Number of forward SCH are being used */
470 kal_bool IsRevSchAssigned; /* If reverse supplement channel is assigned */
471 RlpSchDataBlockSizeT RevSchDataBlockSize; /* Current reverse SCH data block size */
472 RlpSchRateT RevSchRate; /* Current reverse Supplement channel rate */
473 kal_uint8 NumRevSchUsed; /* Number of reverse SCH are being used */
474} RlpQueryStatIndMsgT;
475/*****************************************************************************
476* $Log: rlpwapi.h $
477* Revision 1.9 2005/05/04 12:46:51 dstecker
478* Renamed RLP_ETS_NUM_FRAME_PER_IOP_IND_CFG_MSG to RLP_ETS_NUM_FRAME_PER_UPPER_LAYER_IND_CFG_MSG
479* Revision 1.8 2005/01/19 14:40:26 blee
480* Added ETS function that peeks RLP RxQ variables
481* Revision 1.7 2004/12/10 14:01:37 blee
482* Changed RLP blob data structure
483* Revision 1.6 2004/10/22 15:10:43 blee
484* Adde frame format field for FCH to display into ETS
485* Revision 1.5 2004/08/06 16:41:32 blee
486* Added ETS message that comes from ETS through IOP.
487*
488* Created by Brenndon
489*****************************************************************************/
490
491#endif /* __RLP_API_H__ */
492
493
494