| /***************************************************************************** |
| * 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 _CLCOMP_H_ |
| #define _CLCOMP_H_ 1 |
| /***************************************************************************** |
| * |
| * FILE NAME : clcomp.h |
| * |
| * DESCRIPTION : This file includes the definition of OMP |
| * |
| * HISTORY : |
| * See Log at end of file |
| * |
| *****************************************************************************/ |
| |
| /*---------------------------------------------------------------------------- |
| Include Files |
| ----------------------------------------------------------------------------*/ |
| #include "cpbuf.h" |
| #include "do_clcapi.h" |
| #include "do_rupapi.h" |
| #include "do_idpapi.h" |
| #include "do_dsaapi.h" |
| #include "do_ompapi.h" |
| #ifdef MTK_DEV_C2K_IRAT |
| #include "valapi.h" |
| #endif |
| #include "slc_nvram.h" |
| |
| /*---------------------------------------------------------------------------- |
| Global Defines and Macros |
| ----------------------------------------------------------------------------*/ |
| #define CP_1_BIT_WIDTH 1 |
| #define CP_2_BITS_WIDTH 2 |
| #define CP_3_BITS_WIDTH 3 |
| #define CP_4_BITS_WIDTH 4 |
| #define CP_5_BITS_WIDTH 5 |
| #define CP_6_BITS_WIDTH 6 |
| #define CP_7_BITS_WIDTH 7 |
| #define CP_8_BITS_WIDTH 8 |
| |
| #define OMP_ATTRIB_OCP_BIT 0x01 |
| #define OMP_ATTRIB_RUTC_BIT 0x02 |
| #define N_OMP_MIN_ZONE_SIGNATURE_LIST_SIZE 8 |
| #define OMP_MAX_CACHE_RECS 6 |
| #define OMP_SECTORID_LENGTH_IN_BYTE 16 |
| |
| #ifdef MTK_DEV_C2K_IRAT |
| #define OMP_MAX_OTHER_RAT_REC_NUM 16 |
| #define OMP_MAX_NEIGHBORRAT_REC_LEN 400 |
| #endif /* MTK_DEV_C2K_IRAT */ |
| |
| typedef kal_uint8 OmpSectorIdT[OMP_SECTORID_LENGTH_IN_BYTE]; |
| |
| /*---------------------------------------------------------------------------- |
| Global Typedefs |
| ----------------------------------------------------------------------------*/ |
| |
| typedef enum { |
| ST_EVDO, |
| ST_CDMA_1X |
| } SystemTypeT; |
| |
| typedef enum { |
| OMP_INACTIVE_ST, |
| OMP_ACTIVE_ST, |
| OMP_STATE_MAX |
| } OmpStateT; |
| |
| typedef enum { |
| OMP_DEFAULT, |
| OMP_MAX_PROT |
| } OmpSubTypeT; |
| |
| typedef enum { |
| OMP_INCONFIG, |
| OMP_INUSE, |
| OMP_MAX_INSTANCE |
| } OmpInstanceT; |
| |
| typedef enum { |
| OMP_QUICKCONFIG_MESSAGE, |
| OMP_SECTORPARAMETERS_MESSAGE, |
| #ifdef MTK_DEV_C2K_IRAT |
| OMP_HRPDSILENCEPARAMETERS_MESSAGE, |
| OMP_OTHERRAT_NEIGHBORLIST_MESSAGE, |
| #endif /* MTK_DEV_C2K_IRAT */ |
| OMP_CONFIG_REQUEST_MESSAGE = 0x50, |
| OMP_CONFIG_RESPONSE_MESSAGE, |
| OMP_MAX_MESSAGE_ID |
| } OmpMessageTypeT; |
| |
| typedef enum { |
| OMP_ATTRIB_OCP = 0xFF, /*OverheadCachePeriod Attribute ID, 0x00*/ |
| OMP_ATTRIB_RUTC = 0xFE /*RouteUpdateTriggerCodeListSize Attribute ID, 0x00 */ |
| } OmpAttribIdT; |
| |
| typedef struct { |
| kal_uint8 ColorCode; |
| kal_uint32 SectorID24; |
| kal_uint16 SectorSignature; |
| kal_uint16 AccessSignature; |
| //kal_uint16 OldAccessSignature;/*not used*/ |
| kal_bool Redirect; |
| kal_uint8 RPCCount63To0; |
| kal_uint8 ForwardTrafficValid63To0[8]; |
| kal_bool RPCCount127To64Included; |
| kal_uint8 RPCCount127To64; |
| kal_uint8 ForwardTrafficValid127To64[8]; |
| kal_uint8 Reserved; |
| #ifdef MTK_DEV_C2K_IRAT |
| kal_bool ReservedBitsIncluded; |
| kal_uint8 NumReservedBits; |
| kal_bool OtherRATAvailable; |
| kal_uint8 OtherRATTXCycle; |
| kal_uint8 OtherRATSignature; |
| #endif /* MTK_DEV_C2K_IRAT */ |
| }OMPQuickConfigMsgT; |
| |
| |
| typedef struct { |
| kal_uint16 CountryCode; |
| kal_uint8 SectorID[OMP_SECTORID_LENGTH_IN_BYTE]; |
| kal_uint8 SubnetMask; |
| kal_uint16 SectorSignature; |
| kal_uint32 Latitude; |
| kal_uint32 Longitude; |
| kal_uint16 RouteUpdateRadiusOverhead; |
| kal_uint8 LeapSeconds; |
| kal_uint16 LocalTimeOffset; |
| kal_uint8 ReverseLinkSilenceDuration; |
| kal_uint8 ReverseLinkSilencePeriod; |
| kal_uint8 ChannelCount; |
| ChanRecGT channelRecord[MAX_CHANNEL_SUPPORT]; |
| kal_uint8 NeighborCount; |
| kal_uint16 NeighborPilotPN[MAX_CHANNEL_SUPPORT]; |
| NeighborChannelT NeighborChannel[MAX_CHANNEL_SUPPORT]; |
| kal_bool NeighborSearchWindowSizeIncluded; |
| kal_uint8 NeighborSearchWindowSize[MAX_CHANNEL_SUPPORT]; |
| kal_bool NeighborSearchWindowOffsetIncluded; |
| kal_uint8 NeighborSearchWindowOffset[MAX_CHANNEL_SUPPORT]; |
| kal_bool ExtendedChannelIncluded; |
| kal_uint8 ExtendedChannelCount; |
| ChanRecGT ExtendedChannel[MAX_CHANNEL_SUPPORT]; |
| kal_bool AccessHashingChannelMaskIncluded; |
| kal_uint8 AccessHashingMaskLength; |
| AccessHashingChannelMaskRecordT AccessHashingChannelMask[MAX_CHANNEL_SUPPORT*2]; |
| kal_bool RouteUpdateTriggerCodeIncluded; |
| kal_uint16 RouteUpdateTriggerCode; |
| kal_uint8 RouteUpdateTriggerMaxAge; |
| kal_bool PriorSessionGAUP; |
| kal_bool FPDCHSupportedIncluded; |
| kal_uint32 FPDCHSupported; |
| kal_bool SecondaryColorCodeIncluded; |
| kal_uint8 SecondaryColorCodeCount; |
| kal_uint8 SecondaryColorCode[MAX_SECONDARY_COLORCODE_NUM]; |
| kal_uint8 Reserved; |
| } OMPSectorParametersMsgT; |
| |
| #ifdef MTK_DEV_C2K_IRAT |
| |
| #define MAX_OMP_PLMN_NUM 8 |
| #define MAX_EUTRA_FREQ_NUM 8 |
| |
| /*IRAT*/ |
| #ifdef MTK_DEV_C2K_IRAT |
| typedef struct /* 3GPP2 C.S0087 v2.0 7.1 */ |
| { |
| kal_uint8 ThreshXQ; |
| kal_uint8 QualMinEUTRA; |
| kal_bool QualMinEUTRAOffsetIncl; |
| kal_uint8 QualMinEUTRAOffset; |
| } OmpIratEUTRANNbrRSRQSpecT; |
| #endif |
| /*IRAT*/ |
| |
| typedef struct { |
| kal_uint16 EARFCN; /* EUTRA channel number */ |
| kal_uint8 EARFCNPriority; /* priority of EARFCN of the neighbir EUTRA system. 0xff means not provided */ |
| kal_uint8 ThreshX; /* Min required signal threshold used for selecting an EARFCN */ |
| kal_uint8 RxLevMinEUTRA; /* Min ref power level to select EUTRA */ |
| kal_uint8 PEMax; /* Max TX power level UE may use when transmitting up-link of EUTRA */ |
| kal_bool RxLevMinEUTRAOffsetIncl; |
| kal_uint8 RxLevMinEUTRAOffset; /* Offset to min ref power level to select EUTRA. 0xff means not provided */ |
| kal_uint8 MeasurementBandwidth; /* measurement bandwidth Nrb value, Table 7.1-1 */ |
| kal_bool PLMNSameAsPreviousChannel; |
| kal_uint8 NumPLMNIds; /* number of PLMN on this EARFCN channel */ |
| kal_uint32 PLMNID[MAX_OMP_PLMN_NUM]; /*PLMN ID of the neighbor EUTRA system. 0xffffffff means not provided */ |
| } OmpIratEUTRANNeighborT; |
| |
| typedef struct { |
| kal_bool PriorityIncluded; |
| kal_uint8 ServingPriority; |
| kal_uint8 ThreshServing; |
| kal_bool PerEARFCNParamsIncluded; |
| kal_uint8 RxLevMinEUTRACommon; |
| kal_uint8 PEMaxCommon; |
| kal_bool RxLevMinEUTRAOffsetCommonIncl; |
| kal_uint8 RxLevMinEUTRAOffsetCommon; |
| kal_bool MaxReselectionTimerIncluded; |
| kal_uint8 MaxReselectionTimer; |
| kal_bool SearchBackOffTimerIncluded; |
| kal_uint8 MinMeasurementBackoff; |
| kal_uint8 MaxMeasurementBackoff; |
| kal_bool PLMNIDIncluded; |
| kal_uint8 NumEUTRAFrequencies; |
| OmpIratEUTRANNeighborT EUTRAFreq[MAX_EUTRA_FREQ_NUM]; |
| |
| /*IRAT*/ |
| #ifdef MTK_DEV_C2K_IRAT |
| kal_bool ServingNwPLMNIncl; |
| kal_uint8 NumServingPLMNIds; |
| kal_uint32 S_PLMNID[MAX_OMP_PLMN_NUM]; |
| kal_bool RSRQParasIncl; |
| kal_uint8 QualMinEUTRAComm; |
| kal_bool QualMinEUTRAOffsetCommIncl; |
| kal_uint8 QualMinEUTRAOffsetComm; |
| OmpIratEUTRANNbrRSRQSpecT EUTRARsrqSpec[MAX_EUTRA_FREQ_NUM]; |
| #endif |
| /*IRAT*/ |
| } OmpEUTRANNeigborListRecT; |
| |
| typedef struct { |
| kal_uint8 RATType; |
| kal_uint16 NeighborListRATRecordLength; |
| union { |
| kal_uint8 NeighborListRecord[OMP_MAX_NEIGHBORRAT_REC_LEN]; |
| OmpEUTRANNeigborListRecT OmpEUTRANNeigborListRec; |
| } u; |
| } OmpOtherRATRecT; |
| |
| /* By Keith: The struct for saving Eutran neighbor frequencies */ |
| typedef struct { |
| kal_uint8 NumEUTRAFrequencies; |
| kal_uint16 EARFCN[MAX_EUTRA_FREQ_NUM]; |
| } OmpEUTRANNeigborListFreqRecT; |
| |
| typedef struct { |
| kal_uint8 OtherRATSignature; |
| kal_uint8 NumOtherRAT; |
| OmpOtherRATRecT OmpOtherRATList[OMP_MAX_OTHER_RAT_REC_NUM]; |
| } OMPOtherRATNeighborListMsgT; |
| |
| typedef struct { |
| kal_uint8 ReverseLinkSilenceDuration; |
| kal_uint8 ReverseLinkSilencePeriod; |
| kal_uint8 Reserved; |
| } OMPHRPDSilenceParameterMsgT; |
| #endif /* MTK_DEV_C2K_IRAT */ |
| |
| typedef enum |
| { |
| OMP_CACHE_NOTUSED, |
| OMP_CACHE_INUSE_FOR_IDLE, |
| OMP_CACHE_INUSE_FOR_CONN |
| } OmpCacheStateT; |
| |
| typedef struct |
| { |
| kal_uint32 timestamp; |
| kal_uint16 PilotPN; |
| OmpCacheStateT stOmpCache; |
| ChanRecGT ChannelInfo; |
| |
| OMPQuickConfigMsgT OMPQuickConfigMsg; |
| OMPSectorParametersMsgT OMPSectorParametersMsg; |
| } OMPCacheRecT; |
| |
| typedef struct |
| { |
| kal_uint32 oldSectorID24; |
| kal_uint16 oldSectorSignature; |
| kal_uint16 newPilotPN; |
| OmpSubTypeT OmpSubType; |
| OmpStateT curOmpState; |
| kal_bool bInUseInitialized; |
| kal_bool bOverheadParametersUpToDate; |
| kal_bool bQuickConfigRcvd; |
| kal_bool bSectorParametersMsgPending; |
| kal_bool bIHOInProgress; |
| kal_uint8 oldColorCode; |
| kal_bool bOldColorCodeValid; |
| kal_bool bColorCodeChanged; |
| kal_bool bCurSubnetValid; |
| |
| OMPCacheRecT *pCurOmpCache; |
| OMPCacheRecT OmpCacheItems[OMP_MAX_CACHE_RECS]; |
| OMPQuickConfigMsgT OMPQuickConfigMsg; |
| OMPSectorParametersMsgT OMPSectorParametersMsg; |
| |
| kal_uint8 curSubnet[OMP_SECTORID_LENGTH_IN_BYTE]; |
| kal_uint8 oldSubnet[OMP_SECTORID_LENGTH_IN_BYTE]; |
| |
| #ifdef MTK_DEV_C2K_IRAT |
| kal_uint32 SectorID24CacheForRpt; |
| kal_uint16 oldCountryCode; |
| kal_bool ConnClosedCacheForRpt; |
| kal_bool OtherRATUpdated; |
| kal_uint8 oldOtherRATSignature; |
| kal_uint8 OtherRATSignatureCacheForRpt; |
| kal_bool isNeedUpdateOtherRatInfo2Iratm; |
| OMPHRPDSilenceParameterMsgT OMPHRPDSilenceParametersMsg; |
| OMPOtherRATNeighborListMsgT OMPOtherRATNeighborListMsg; |
| OmpEUTRANNeigborListFreqRecT OmpEutranNeigborListFreq; |
| #endif /* MTK_DEV_C2K_IRAT */ |
| |
| OmpAttribRecT attribOmp[OMP_MAX_INSTANCE]; |
| OmpAttribRecT attribFallback; |
| }OmpInfoT; |
| |
| typedef struct { |
| kal_uint8 Subnet[16]; |
| kal_uint32 ExpiredSysTime; |
| kal_uint16 RouteUpdateTriggerCode; |
| } RouteUpdateTriggerCodeItemT; |
| |
| /*---------------------------------------------------------------------------- |
| Global Data |
| ----------------------------------------------------------------------------*/ |
| |
| /*---------------------------------------------------------------------------- |
| Global Function Prototypes |
| ----------------------------------------------------------------------------*/ |
| void OmpInit(void); |
| void RunOmpStateMachine(kal_uint32 MsgId, void *MsgDataP); |
| void ProcessOmpActivateMsg(void); |
| void ProcessOmpDeactivateMsg(void); |
| void ProcessOmpRupIdleHandoffMsg(OmpRupIdleHandoffMsgT *MsgDataP); |
| void ProcessOmpCspConnClosedMsg(void); |
| void ProcessOmpAcmSysParmUpdReqMsg(void); |
| void ProcessOmpDsaFwdMsg(DsaFwdMsgT *MsgDataP); |
| void ProcessOmpSupervisionTmrExpired(kal_uint32 TimerId); |
| void ProcessOmpIHOOhmDecodeTmrExpired(void); |
| void ProcessOmpScpReconfiguredMsg(void); |
| void ProcessOmpScpCommittedMsg(void); |
| void OmpInitStructures( kal_uint8 SubType, kal_bool InUse); |
| kal_uint8 OmpGetPriorSessionGAUP(void); |
| void OmpIdpClearIHOFlag(void); |
| void OmpSetOverheadParametersUpToDate(kal_bool bUpdated, kal_bool bNeedUpdateAll,kal_bool bClearQuickConfigRcvdFlag,kal_bool bResetSubnet); |
| void OmpSupTimerReset(void); |
| #ifdef MTK_DEV_C2K_IRAT |
| void ProcessOmpIratMccReqMsg(void); |
| kal_bool OmpGetOtherRatAvail (void); |
| #ifdef MTK_PLT_ON_PC_UT |
| kal_bool OmpSetOtherNeighBorListMsg (OmpEUTRANNeigborListRecT *pEutranNlRec,kal_bool *bOmpEarfcnIschanged); |
| #else |
| kal_bool OmpSetIratmOtherNeighBorListMsg (kal_bool *bOmpEarfcnIschanged); |
| #endif |
| #endif /* MTK_DEV_C2K_IRAT */ |
| void ProcessOmpCssSystemValidatedMsg(void); |
| kal_bool OmpGetIHOPilotPN(kal_uint16 *newPilotPN); |
| void setUpdateOtherRat2IratmFlag(kal_bool isNeedUpdate); |
| |
| |
| |
| /***************************************************************************** |
| * $Log: clcomp.h $ |
| *****************************************************************************/ |
| |
| /***************************************************************************** |
| * End of File |
| *****************************************************************************/ |
| #endif /*_CLCOMP_H_*/ |
| |
| |