blob: 6196969b674401ac58506b35e546542a631c9583 [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 _CLCOMP_H_
45#define _CLCOMP_H_ 1
46/*****************************************************************************
47*
48* FILE NAME : clcomp.h
49*
50* DESCRIPTION : This file includes the definition of OMP
51*
52* HISTORY :
53* See Log at end of file
54*
55*****************************************************************************/
56
57/*----------------------------------------------------------------------------
58 Include Files
59----------------------------------------------------------------------------*/
60#include "cpbuf.h"
61#include "do_clcapi.h"
62#include "do_rupapi.h"
63#include "do_idpapi.h"
64#include "do_dsaapi.h"
65#include "do_ompapi.h"
66#ifdef MTK_DEV_C2K_IRAT
67#include "valapi.h"
68#endif
69#include "slc_nvram.h"
70
71/*----------------------------------------------------------------------------
72 Global Defines and Macros
73----------------------------------------------------------------------------*/
74#define CP_1_BIT_WIDTH 1
75#define CP_2_BITS_WIDTH 2
76#define CP_3_BITS_WIDTH 3
77#define CP_4_BITS_WIDTH 4
78#define CP_5_BITS_WIDTH 5
79#define CP_6_BITS_WIDTH 6
80#define CP_7_BITS_WIDTH 7
81#define CP_8_BITS_WIDTH 8
82
83#define OMP_ATTRIB_OCP_BIT 0x01
84#define OMP_ATTRIB_RUTC_BIT 0x02
85#define N_OMP_MIN_ZONE_SIGNATURE_LIST_SIZE 8
86#define OMP_MAX_CACHE_RECS 6
87#define OMP_SECTORID_LENGTH_IN_BYTE 16
88
89#ifdef MTK_DEV_C2K_IRAT
90#define OMP_MAX_OTHER_RAT_REC_NUM 16
91#define OMP_MAX_NEIGHBORRAT_REC_LEN 400
92#endif /* MTK_DEV_C2K_IRAT */
93
94typedef kal_uint8 OmpSectorIdT[OMP_SECTORID_LENGTH_IN_BYTE];
95
96/*----------------------------------------------------------------------------
97 Global Typedefs
98----------------------------------------------------------------------------*/
99
100typedef enum {
101 ST_EVDO,
102 ST_CDMA_1X
103} SystemTypeT;
104
105typedef enum {
106 OMP_INACTIVE_ST,
107 OMP_ACTIVE_ST,
108 OMP_STATE_MAX
109} OmpStateT;
110
111typedef enum {
112 OMP_DEFAULT,
113 OMP_MAX_PROT
114} OmpSubTypeT;
115
116typedef enum {
117 OMP_INCONFIG,
118 OMP_INUSE,
119 OMP_MAX_INSTANCE
120} OmpInstanceT;
121
122typedef enum {
123 OMP_QUICKCONFIG_MESSAGE,
124 OMP_SECTORPARAMETERS_MESSAGE,
125#ifdef MTK_DEV_C2K_IRAT
126 OMP_HRPDSILENCEPARAMETERS_MESSAGE,
127 OMP_OTHERRAT_NEIGHBORLIST_MESSAGE,
128#endif /* MTK_DEV_C2K_IRAT */
129 OMP_CONFIG_REQUEST_MESSAGE = 0x50,
130 OMP_CONFIG_RESPONSE_MESSAGE,
131 OMP_MAX_MESSAGE_ID
132} OmpMessageTypeT;
133
134typedef enum {
135 OMP_ATTRIB_OCP = 0xFF, /*OverheadCachePeriod Attribute ID, 0x00*/
136 OMP_ATTRIB_RUTC = 0xFE /*RouteUpdateTriggerCodeListSize Attribute ID, 0x00 */
137} OmpAttribIdT;
138
139typedef struct {
140 kal_uint8 ColorCode;
141 kal_uint32 SectorID24;
142 kal_uint16 SectorSignature;
143 kal_uint16 AccessSignature;
144 //kal_uint16 OldAccessSignature;/*not used*/
145 kal_bool Redirect;
146 kal_uint8 RPCCount63To0;
147 kal_uint8 ForwardTrafficValid63To0[8];
148 kal_bool RPCCount127To64Included;
149 kal_uint8 RPCCount127To64;
150 kal_uint8 ForwardTrafficValid127To64[8];
151 kal_uint8 Reserved;
152#ifdef MTK_DEV_C2K_IRAT
153 kal_bool ReservedBitsIncluded;
154 kal_uint8 NumReservedBits;
155 kal_bool OtherRATAvailable;
156 kal_uint8 OtherRATTXCycle;
157 kal_uint8 OtherRATSignature;
158#endif /* MTK_DEV_C2K_IRAT */
159}OMPQuickConfigMsgT;
160
161
162typedef struct {
163 kal_uint16 CountryCode;
164 kal_uint8 SectorID[OMP_SECTORID_LENGTH_IN_BYTE];
165 kal_uint8 SubnetMask;
166 kal_uint16 SectorSignature;
167 kal_uint32 Latitude;
168 kal_uint32 Longitude;
169 kal_uint16 RouteUpdateRadiusOverhead;
170 kal_uint8 LeapSeconds;
171 kal_uint16 LocalTimeOffset;
172 kal_uint8 ReverseLinkSilenceDuration;
173 kal_uint8 ReverseLinkSilencePeriod;
174 kal_uint8 ChannelCount;
175 ChanRecGT channelRecord[MAX_CHANNEL_SUPPORT];
176 kal_uint8 NeighborCount;
177 kal_uint16 NeighborPilotPN[MAX_CHANNEL_SUPPORT];
178 NeighborChannelT NeighborChannel[MAX_CHANNEL_SUPPORT];
179 kal_bool NeighborSearchWindowSizeIncluded;
180 kal_uint8 NeighborSearchWindowSize[MAX_CHANNEL_SUPPORT];
181 kal_bool NeighborSearchWindowOffsetIncluded;
182 kal_uint8 NeighborSearchWindowOffset[MAX_CHANNEL_SUPPORT];
183 kal_bool ExtendedChannelIncluded;
184 kal_uint8 ExtendedChannelCount;
185 ChanRecGT ExtendedChannel[MAX_CHANNEL_SUPPORT];
186 kal_bool AccessHashingChannelMaskIncluded;
187 kal_uint8 AccessHashingMaskLength;
188 AccessHashingChannelMaskRecordT AccessHashingChannelMask[MAX_CHANNEL_SUPPORT*2];
189 kal_bool RouteUpdateTriggerCodeIncluded;
190 kal_uint16 RouteUpdateTriggerCode;
191 kal_uint8 RouteUpdateTriggerMaxAge;
192 kal_bool PriorSessionGAUP;
193 kal_bool FPDCHSupportedIncluded;
194 kal_uint32 FPDCHSupported;
195 kal_bool SecondaryColorCodeIncluded;
196 kal_uint8 SecondaryColorCodeCount;
197 kal_uint8 SecondaryColorCode[MAX_SECONDARY_COLORCODE_NUM];
198 kal_uint8 Reserved;
199} OMPSectorParametersMsgT;
200
201#ifdef MTK_DEV_C2K_IRAT
202
203#define MAX_OMP_PLMN_NUM 8
204#define MAX_EUTRA_FREQ_NUM 8
205
206/*IRAT*/
207#ifdef MTK_DEV_C2K_IRAT
208typedef struct /* 3GPP2 C.S0087 v2.0 7.1 */
209{
210 kal_uint8 ThreshXQ;
211 kal_uint8 QualMinEUTRA;
212 kal_bool QualMinEUTRAOffsetIncl;
213 kal_uint8 QualMinEUTRAOffset;
214} OmpIratEUTRANNbrRSRQSpecT;
215#endif
216/*IRAT*/
217
218typedef struct {
219 kal_uint16 EARFCN; /* EUTRA channel number */
220 kal_uint8 EARFCNPriority; /* priority of EARFCN of the neighbir EUTRA system. 0xff means not provided */
221 kal_uint8 ThreshX; /* Min required signal threshold used for selecting an EARFCN */
222 kal_uint8 RxLevMinEUTRA; /* Min ref power level to select EUTRA */
223 kal_uint8 PEMax; /* Max TX power level UE may use when transmitting up-link of EUTRA */
224 kal_bool RxLevMinEUTRAOffsetIncl;
225 kal_uint8 RxLevMinEUTRAOffset; /* Offset to min ref power level to select EUTRA. 0xff means not provided */
226 kal_uint8 MeasurementBandwidth; /* measurement bandwidth Nrb value, Table 7.1-1 */
227 kal_bool PLMNSameAsPreviousChannel;
228 kal_uint8 NumPLMNIds; /* number of PLMN on this EARFCN channel */
229 kal_uint32 PLMNID[MAX_OMP_PLMN_NUM]; /*PLMN ID of the neighbor EUTRA system. 0xffffffff means not provided */
230} OmpIratEUTRANNeighborT;
231
232typedef struct {
233 kal_bool PriorityIncluded;
234 kal_uint8 ServingPriority;
235 kal_uint8 ThreshServing;
236 kal_bool PerEARFCNParamsIncluded;
237 kal_uint8 RxLevMinEUTRACommon;
238 kal_uint8 PEMaxCommon;
239 kal_bool RxLevMinEUTRAOffsetCommonIncl;
240 kal_uint8 RxLevMinEUTRAOffsetCommon;
241 kal_bool MaxReselectionTimerIncluded;
242 kal_uint8 MaxReselectionTimer;
243 kal_bool SearchBackOffTimerIncluded;
244 kal_uint8 MinMeasurementBackoff;
245 kal_uint8 MaxMeasurementBackoff;
246 kal_bool PLMNIDIncluded;
247 kal_uint8 NumEUTRAFrequencies;
248 OmpIratEUTRANNeighborT EUTRAFreq[MAX_EUTRA_FREQ_NUM];
249
250/*IRAT*/
251#ifdef MTK_DEV_C2K_IRAT
252 kal_bool ServingNwPLMNIncl;
253 kal_uint8 NumServingPLMNIds;
254 kal_uint32 S_PLMNID[MAX_OMP_PLMN_NUM];
255 kal_bool RSRQParasIncl;
256 kal_uint8 QualMinEUTRAComm;
257 kal_bool QualMinEUTRAOffsetCommIncl;
258 kal_uint8 QualMinEUTRAOffsetComm;
259 OmpIratEUTRANNbrRSRQSpecT EUTRARsrqSpec[MAX_EUTRA_FREQ_NUM];
260#endif
261/*IRAT*/
262} OmpEUTRANNeigborListRecT;
263
264typedef struct {
265 kal_uint8 RATType;
266 kal_uint16 NeighborListRATRecordLength;
267 union {
268 kal_uint8 NeighborListRecord[OMP_MAX_NEIGHBORRAT_REC_LEN];
269 OmpEUTRANNeigborListRecT OmpEUTRANNeigborListRec;
270 } u;
271} OmpOtherRATRecT;
272
273/* By Keith: The struct for saving Eutran neighbor frequencies */
274typedef struct {
275 kal_uint8 NumEUTRAFrequencies;
276 kal_uint16 EARFCN[MAX_EUTRA_FREQ_NUM];
277} OmpEUTRANNeigborListFreqRecT;
278
279typedef struct {
280 kal_uint8 OtherRATSignature;
281 kal_uint8 NumOtherRAT;
282 OmpOtherRATRecT OmpOtherRATList[OMP_MAX_OTHER_RAT_REC_NUM];
283} OMPOtherRATNeighborListMsgT;
284
285typedef struct {
286 kal_uint8 ReverseLinkSilenceDuration;
287 kal_uint8 ReverseLinkSilencePeriod;
288 kal_uint8 Reserved;
289} OMPHRPDSilenceParameterMsgT;
290#endif /* MTK_DEV_C2K_IRAT */
291
292typedef enum
293{
294 OMP_CACHE_NOTUSED,
295 OMP_CACHE_INUSE_FOR_IDLE,
296 OMP_CACHE_INUSE_FOR_CONN
297} OmpCacheStateT;
298
299typedef struct
300{
301 kal_uint32 timestamp;
302 kal_uint16 PilotPN;
303 OmpCacheStateT stOmpCache;
304 ChanRecGT ChannelInfo;
305
306 OMPQuickConfigMsgT OMPQuickConfigMsg;
307 OMPSectorParametersMsgT OMPSectorParametersMsg;
308} OMPCacheRecT;
309
310typedef struct
311{
312 kal_uint32 oldSectorID24;
313 kal_uint16 oldSectorSignature;
314 kal_uint16 newPilotPN;
315 OmpSubTypeT OmpSubType;
316 OmpStateT curOmpState;
317 kal_bool bInUseInitialized;
318 kal_bool bOverheadParametersUpToDate;
319 kal_bool bQuickConfigRcvd;
320 kal_bool bSectorParametersMsgPending;
321 kal_bool bIHOInProgress;
322 kal_uint8 oldColorCode;
323 kal_bool bOldColorCodeValid;
324 kal_bool bColorCodeChanged;
325 kal_bool bCurSubnetValid;
326
327 OMPCacheRecT *pCurOmpCache;
328 OMPCacheRecT OmpCacheItems[OMP_MAX_CACHE_RECS];
329 OMPQuickConfigMsgT OMPQuickConfigMsg;
330 OMPSectorParametersMsgT OMPSectorParametersMsg;
331
332 kal_uint8 curSubnet[OMP_SECTORID_LENGTH_IN_BYTE];
333 kal_uint8 oldSubnet[OMP_SECTORID_LENGTH_IN_BYTE];
334
335#ifdef MTK_DEV_C2K_IRAT
336 kal_uint32 SectorID24CacheForRpt;
337 kal_uint16 oldCountryCode;
338 kal_bool ConnClosedCacheForRpt;
339 kal_bool OtherRATUpdated;
340 kal_uint8 oldOtherRATSignature;
341 kal_uint8 OtherRATSignatureCacheForRpt;
342 kal_bool isNeedUpdateOtherRatInfo2Iratm;
343 OMPHRPDSilenceParameterMsgT OMPHRPDSilenceParametersMsg;
344 OMPOtherRATNeighborListMsgT OMPOtherRATNeighborListMsg;
345 OmpEUTRANNeigborListFreqRecT OmpEutranNeigborListFreq;
346#endif /* MTK_DEV_C2K_IRAT */
347
348 OmpAttribRecT attribOmp[OMP_MAX_INSTANCE];
349 OmpAttribRecT attribFallback;
350}OmpInfoT;
351
352typedef struct {
353 kal_uint8 Subnet[16];
354 kal_uint32 ExpiredSysTime;
355 kal_uint16 RouteUpdateTriggerCode;
356} RouteUpdateTriggerCodeItemT;
357
358/*----------------------------------------------------------------------------
359 Global Data
360----------------------------------------------------------------------------*/
361
362/*----------------------------------------------------------------------------
363 Global Function Prototypes
364----------------------------------------------------------------------------*/
365void OmpInit(void);
366void RunOmpStateMachine(kal_uint32 MsgId, void *MsgDataP);
367void ProcessOmpActivateMsg(void);
368void ProcessOmpDeactivateMsg(void);
369void ProcessOmpRupIdleHandoffMsg(OmpRupIdleHandoffMsgT *MsgDataP);
370void ProcessOmpCspConnClosedMsg(void);
371void ProcessOmpAcmSysParmUpdReqMsg(void);
372void ProcessOmpDsaFwdMsg(DsaFwdMsgT *MsgDataP);
373void ProcessOmpSupervisionTmrExpired(kal_uint32 TimerId);
374void ProcessOmpIHOOhmDecodeTmrExpired(void);
375void ProcessOmpScpReconfiguredMsg(void);
376void ProcessOmpScpCommittedMsg(void);
377void OmpInitStructures( kal_uint8 SubType, kal_bool InUse);
378kal_uint8 OmpGetPriorSessionGAUP(void);
379void OmpIdpClearIHOFlag(void);
380void OmpSetOverheadParametersUpToDate(kal_bool bUpdated, kal_bool bNeedUpdateAll,kal_bool bClearQuickConfigRcvdFlag,kal_bool bResetSubnet);
381void OmpSupTimerReset(void);
382#ifdef MTK_DEV_C2K_IRAT
383void ProcessOmpIratMccReqMsg(void);
384kal_bool OmpGetOtherRatAvail (void);
385#ifdef MTK_PLT_ON_PC_UT
386kal_bool OmpSetOtherNeighBorListMsg (OmpEUTRANNeigborListRecT *pEutranNlRec,kal_bool *bOmpEarfcnIschanged);
387#else
388kal_bool OmpSetIratmOtherNeighBorListMsg (kal_bool *bOmpEarfcnIschanged);
389#endif
390#endif /* MTK_DEV_C2K_IRAT */
391void ProcessOmpCssSystemValidatedMsg(void);
392kal_bool OmpGetIHOPilotPN(kal_uint16 *newPilotPN);
393void setUpdateOtherRat2IratmFlag(kal_bool isNeedUpdate);
394
395
396
397/*****************************************************************************
398* $Log: clcomp.h $
399*****************************************************************************/
400
401/*****************************************************************************
402* End of File
403*****************************************************************************/
404#endif /*_CLCOMP_H_*/
405
406