#ifndef __PS_CFG_NVM_H__ #define __PS_CFG_NVM_H__ /****************************************************************************** ****************************************************************************** Copyright: - 2017- Copyrights of EigenComm Ltd. File name: - pscfgnvm.h Description: - Protocol Stack configuration NVM operation History: - 2020/11/03, Originated by Jason ****************************************************************************** ******************************************************************************/ #include "pssys.h" #include "pscommtype.h" #include "osacfgnvm.h" /****************************************************************************** ****************************************************************************** 1. "NVMCFG" use the struture: a> TV: LF: Length Flag: 0, T: Parameter Type, V: Value 15 14 12 11 0 +-----+-----+----------------+ |LF(0)|RSVD |ParamId(12 bits)| +-----+-----+----------------+ | Value (16 bits) | +----------------------------+ b> TLV: LF: Length Flag: 1, T: Value type, L: Value byte length, V: Value 15 14 12 11 0 +-----+-----+----------------+ |LF(1)|RSVD |ParamId(12 bits)| +-----+-----+----------------+ |Value byte length (16 bits) | +----------------------------+ \ Value \ +----------------------------+ 2. The 3 "RSVD" bits must set to 0, and used for future; 3. The "paramId" is 12 bits, with the range: [0 ~ 4095] a> [0 ~ 1023], reserved for PS b> [1024 ~ 1535], reserved for middle ware ****************************************************************************** ******************************************************************************/ /* * !!!! PARAM ID !!!! * 1> Only allowed * a) add into the end * 2> Not allow * a) insert * b) delete * c) change the struct * !!!! */ typedef enum _EPAT_PsConfigParamId_Enum { PS_CFG_PARAM_BASE = 0, CCM_CFG_NW_MODE, /* TV, NwMode */ CCM_CFG_UE_SERVICE, /* TV, UeService */ CCM_CFG_UE_OPERATION_MODE, /* TV, PsUeOperationModeEnum */ CCM_CFG_ROHC_ENABLE, /* TV, BOOL bRohc */ CCM_CFG_IPV6_RS_FOR_TEST_SIM_ENABLE, /* TV, BOOL bIpv6RsForTestSim */ CCM_CFG_TCP_TPT_OPT_ENABLE, /* TV, UINT8 bTcpTptOpt */ CCM_CFG_SMS_SERVICE_TYPE, /* TV, MsgService, AT+CSMS= not used in CCM now */ CCM_CFG_IPV6_GET_PREFIX_DELAY, /* TV, UINT16 ipv6GetPrefixTime, the maximum time of getting IPv6 prefix Unit: second. */ CCM_CFG_PS_SOFT_RESET, /* TV, BOOL bEnablePsSoftReset */ CCM_CFG_SMS_MORE_MSG_MODE = 10, /* TV, CmiSmsMoreMessage, AT+CMMS */ UICC_CFG_SIM_POWER_SAVE_ENABLE, /* TV, BOOL bSimPowerSave, whether enable USIM card power save mode */ UICC_CFG_SIM_PRESENCE_DETECTION_ENABLE, /* TV, BOOL bSimPreDetect, whether enable SIM presence detection */ UICC_CFG_SOFT_SIM_ENABLE, /* TV, BOOL bSoftSim, whether use softSIM */ CEPLMN_CFG_PLMN_SELECT_TYPE, /* TV, UINT8 */ CEPLMN_CFG_CELL_LOCK_INFO, /* TLV, PsCfgCellLockInfo */ CEPLMN_CFG_BAND_INFO, /* TLV, PsCfgPlmnBandInfo */ CEPLMN_CFG_PLMN_SEARCH_LEVEL, /* TV, PlmnSearchPowerLevel */ CESM_CFG_EPCO_ENABLE, /* TV, bEpco */ CESM_CFG_ATT_EPS_CID, /* TV, attEpsCid */ CESM_CFG_USER_DEFINED_T3482 = 20, /* TLV, PsCfgCesmUserDefinedT3482 */ CESM_CFG_USER_DEFINED_T3492, /* TLV, PsCfgCesmUserDefinedT3492 */ CESM_CFG_ACL_ENABLE, /* TV, bAclEnable, one byte */ CEPLMN_CFG_USER_DEFINED_HIGH_PRI_PLMN_TIMER, /* TLV, PsCfgUserDefinedHighPriPlmnTimer */ CEPLMN_CFG_ENABLE_ROAM, /* TV, BOOL */ CEPLMN_CFG_SAVE_PLMN_SEL_MODE, /* TV, BOOL */ CEPLMN_CFG_UPDATE_FREQ_CTRL, /* TV, BOOL */ CEPLMN_CFG_OOS_PLMN_INTERVAL, /* TLV, PsCfgPlmnOosInterval */ CEMM_CFG_UE_NW_CAPA = 30, /* TLV, PsCfgCemmUeNwCapa */ CEMM_CFG_MS_CLASSMARK2, /* TLV, PsCfgCemmMsClassMark2 */ CEMM_CFG_PSM_SETTING, /* TLV, PsCfgCemmPsmSetting */ CEMM_CFG_EDRX_SETTING, /* TLV, PsCfgCemmEdrxSetting */ CEMM_CFG_TAU_FOR_SMS_CTRL, /* TV, BOOL tauForSmsControl */ CEMM_CFG_ATTACH_WITHOUT_PDN, /* TV, BOOL attachWithoutPdn */ CEMM_CFG_USER_MAX_T3324_SETTING, /* TLV, PsCfgCemmUserMaxT3324Setting */ CEMM_CFG_CIOT_SETTING, /* TV, PsCfgCemmCiotSetting */ CEMM_CFG_SMS_ONLY_CTRL, /* TV, BOOL */ CEMM_CFG_NONIP_NO_SMS_CTRL, /* TV, BOOL */ CEMM_CFG_VOICE_DOMAIN_PREFER = 40, /* TLV, VoiceDomainPreferenceT */ CEMM_CFG_USER_SIB14_BAR_SECOND, /* TV, UINT16 */ CEMM_CFG_ENABLE_EAB, /* TV, BOOL */ CEMM_CFG_ATTACH_WITH_IMSI_CTRL, /* TV, UINT8 */ CEMM_CFG_POWER_ATTACH_WITHOUT_EIA, /* TV, BOOL */ CEMM_CFG_UPDATE_LOCI_CTRL, /* TV, BOOL */ CEMM_CFG_IGNORE_EMM_CAUSE, /* TV, BOOL */ CEMM_CFG_UE_USAGE_SETTING, /* TV, UeUsageSettingT */ CEMM_CFG_FAKE_CELL_OPT, /* TLV, PsCfgCemmFakeCellOpt */ CEPLMN_CFG_PLMN_SEARCH_OPT, /* TV, PlmnSearchOpt */ CERRC_CFG_AS_RELEASE_TYPE = 50, /* TV, AsReleaseType_t */ CERRC_CFG_UE_CATEGORY_TYPE, /* TV, UeCategoryType_t */ CERRC_CFG_DISABLE_NCELL_MEAS, /* TV, BOOL bDisableNCellMeas */ CERRC_CFG_RELAX_MONITOR_DELTA_P, /* TV, UINT8 sSearchDeltaP */ CERRC_CFG_DATA_INACT_TIMER, /* TV, UINT8 dataInactivityTimer */ CERRC_CFG_ENABLE_AB_CHECK, /* TV, BOOL enableABCheck */ CERRC_CFG_WEAK_CELL_OPT = 56, /* TV, BOOL weakCellOpt */ CERRC_CFG_Q_RX_LEV_MIN = 57, /* TV, INT16 qRxLevMin */ CERRC_CFG_RESEL_TO_WEAK_NCELL_OPT = 58, /* TV, UINT8 reselToWeakNcellOpt */ CERRC_CFG_QUALITY_FIRST = 59, /* TV, BOOL qualityFirst */ CCM_CFG_DATA_COUNTER_CTRL = 60, /* TV, BOOL bEnableDataCounter */ L2_CFG_DATA_COUNTER_INFO, /* TLV, PsCfgL2DataCounterInfo */ CCM_CFG_SMS_CSCB_SETTING, /* TLV, CcmCscbNvmConfig, AT+CSCB */ CCM_CFG_EMERGENCY_CAMP, /* TV, BOOL bEnableEmergencyCamp */ UICC_CFG_SIM_SLOT, /* TV, UINT8 simSlot */ CESM_CFG_PDP_REMAP, /* TV, UINT8 bPdpRemap * 0 - disabled, * 1 - remap once for attached bearer, * 2 - always remap if APN/IP type is same */ CESM_CFG_PDP_REACT, /* TV, UINT8 bPdpReact, 0/1, * 1 - default bearer/PDP is need to re-act if APN/IP type changes, when CGACT */ CERRC_CFG_STATIC_CONFIG, /* TV, BOOL staticConfig */ CERRC_CFG_DISABLE_CDRX_CONFIG, /* TV, BOOL disableCDRX */ CERRC_CFG_USER_DRX_CYCLE, /* TV, UINT8 userDrxCycle */ PS_CFG_IMS_SOLUTION_TYPE, /* TV, UINT8 psImsSolutionType PsImsSolutionType * 0 - no IMS solution * 1 - HIMS * 2 - EIMS */ CERRC_CFG_ROHC_PROFILE_BIT, /* TV, UINT16 rohcProfileBit */ CERRC_CFG_ENABLE_SPS, /* TV, BOOL enableSps */ CERRC_CFG_ENABLE_TTIBUNDLING, /* TV, BOOL ttiBundling */ CERRC_CFG_MEAS_ADJUST_SETTING, /* TLV, CerrcCcmMeasAdjustConfig, AT+ECMEASCFG */ CERRC_CFG_CFUN_CLEAR_BARCELL, /* TV, BOOL cfunClrBarCell */ CERRC_CFG_ENABLE_LOGGED_MDT, /* TV, BOOL enableLoggedMDT */ CERRC_CFG_TX_POWER_THRESHOLD_RPT, /* TLV, CerrcTxPowerThresholdRptCfg */ CCM_CFG_SMALL_UL_TBS_OPT, /* TV, BOOL smallUlTbsOpt */ CERRC_CFG_L2_EXT_SN_CAPA_BITMAP, /* TV, UINT8,L2 extended SN capability definition,via bitmap. */ CEMM_CFG_T3402_OPT, /* TV, BOOL T3402Opt */ CEMM_CFG_ANTIDETECT, /* TV, BOOL */ UICC_CFG_ISIM_DISABLE, /* TV, BOOL bIsimDisable, whether disable ISIM app or not */ CEMM_CFG_CLEAR_FORBIDDEN_TAC, /* TV, BOOL clear list of forbidden TAC when perform AT+CGATT=0 */ CEMM_CFG_FORBIDDEN_TAC_TIMER, /* TV, UINT16 timer values of periodically remove list of forbidden TAC */ /* * !!!! PARAM ID !!!! * 1> Only allowed * a) add into the end * 2> Not allow * a) insert * b) delete * c) change the struct * !!!! */ PS_CFG_PARAM_END, /* As need a bitmap to record which CFG is set/configed, here limit the MAX ID to 256, than 8 words bitmap is enough */ PS_CFG_PARAM_MAX = 0x100 }PsConfigParamId; typedef enum PsCfgType_Enum { PS_CFG_TV_TYPE = OSA_CFG_TV_TYPE, PS_CFG_TLV_TYPE = OSA_CFG_TLV_TYPE //OsaCfgParam->lf = 1 }PsCfgType; /* */ #define PS_CFG_DEFAULT_TV_VALUE(paramId, value) {(paramId), (value)} /****************************************************************************** ***************************************************************************** * STRUCT ***************************************************************************** ******************************************************************************/ /* */ typedef OsaCfgParam PsCfgParam; typedef OsaCfgParseInfo PsCfgParseInfo; typedef OsaCfgTVTypeValue PsCfgTVTypeValue; /****************************************************************************** ***************************************************************************** * Parameter STRUCT start here ***************************************************************************** ******************************************************************************/ /* * CEPLMN_CFG_CELL_LOCK_INFO */ typedef struct _SIG_EPAT_CEPLMN_CFG_CELL_LOCK_INFO { UINT8 bCellLock; UINT8 rsvd0; UINT16 phyCellId; //range(0..503), 0xFFFF means invalid /* EARFCN locked by AT+ECFREQ=2,earfcn */ UINT32 lockedFreq; }PsCfgCellLockInfo; // 8 bytes /* * CEPLMN_CFG_BAND_INFO */ typedef struct _SIG_EPAT_CEPLMN_CFG_BAND_INFO { UINT8 band[SUPPORT_MAX_BAND_NUM]; }PsCfgPlmnBandInfo; // 32 bytes /* * CEMM_CFG_UE_NW_CAPA */ typedef struct _SIG_EPAT_CEMM_CFG_UE_NW_CAPA { UINT8 capaLen; UINT8 rsvd0; UINT8 rsvd1; union { struct { /* here Little-endian */ UINT8 eea7 : 1; UINT8 eea6 : 1; UINT8 eea5 : 1; UINT8 eea4 : 1; UINT8 eea3 : 1; UINT8 eea2 : 1; UINT8 eea1 : 1; UINT8 eea0 : 1; UINT8 eia7 : 1; UINT8 eia6 : 1; UINT8 eia5 : 1; UINT8 eia4 : 1; UINT8 eia3 : 1; UINT8 eia2 : 1; UINT8 eia1 : 1; UINT8 eia0 : 1; UINT8 uea7 : 1; UINT8 uea6 : 1; UINT8 uea5 : 1; UINT8 uea4 : 1; UINT8 uea3 : 1; UINT8 uea2 : 1; UINT8 uea1 : 1; UINT8 uea0 : 1; UINT8 uia7 : 1; UINT8 uia6 : 1; UINT8 uia5 : 1; UINT8 uia4 : 1; UINT8 uia3 : 1; UINT8 uia2 : 1; UINT8 uia1 : 1; UINT8 ucs2 : 1; UINT8 nf : 1; UINT8 oneXSRVCC : 1; UINT8 lcs : 1; UINT8 lpp : 1; UINT8 accCsfb : 1; UINT8 h245Ash : 1; UINT8 proSe : 1; UINT8 proSeDd : 1; UINT8 proSeDc : 1; UINT8 proseRelay : 1; UINT8 cpCiot : 1; UINT8 upCiot : 1; UINT8 S1UData : 1; UINT8 erWoPdn : 1; UINT8 hcCpCiot : 1; UINT8 ePco : 1; UINT8 multiDrb : 1; UINT8 v2xPc5 : 1; UINT8 restrictEc : 1; UINT8 cpBackoff : 1; UINT8 rsvd0 : 4; UINT8 rsvd1[6]; }capaBitmap; UINT8 capaByte[13]; }ueCapa; }PsCfgCemmUeNwCapa; //16 bytes /* * CEMM_CFG_MS_CLASSMARK2 */ typedef struct _SIG_EPAT_CEMM_CFG_MS_CLASSMARK2 { UINT8 classmark2Len; union { struct { /* here Little-endian */ UINT8 rfCap : 3; UINT8 a51 : 1; UINT8 esInd : 1; UINT8 revLev : 2; UINT8 spare1 : 1; UINT8 fc : 1; UINT8 vgcs : 1; UINT8 vbs : 1; UINT8 smCap : 1; UINT8 ssScreen : 2; UINT8 psCap : 1; UINT8 spare2 : 1; UINT8 a52 : 1; UINT8 a53 : 1; UINT8 cmsp : 1; UINT8 soLsa : 1; UINT8 ucs2 : 1; UINT8 lcsvaCap : 1; UINT8 spare3 : 1; UINT8 cm3 : 1; }classmark2Bitmap; UINT8 classmark2Byte[3]; }classmark2; }PsCfgCemmMsClassMark2; //4 bytes /* * CEMM_CFG_PSM_SETTING */ typedef struct _SIG_EPAT_CEMM_CFG_PSM_SETTING { UINT8 mode; //CemmPsmReqModeEnum, 0/1/2 UINT8 rsvd0; UINT16 rsvd1; GprsTimer2 t3324Value; //2 bytes GprsTimer3 t3412ExtendedValue; //2 bytes }PsCfgCemmPsmSetting; // 8 bytes /* * CEMM_CFG_EDRX_SETTING */ typedef struct _SIG_EPAT_CEMM_CFG_EDRX_SETTING { UINT8 edrxMode; //CemmEdrxReqModeEnum, 0/1/2 UINT8 rsvd0; ExtendedDrxParameters extendedDrxParameters; //maybe 2 bytes, note eDRX paramaters need EURAN parameter }PsCfgCemmEdrxSetting; // 4 bytes /* * CEMM_CFG_USER_MAX_T3324_SETTING */ typedef struct _SIG_EPAT_CEMM_CFG_USER_MAX_T3324_SETTING { UINT32 userSetT3324Value; //in unit of second }PsCfgCemmUserMaxT3324Setting; /* * CEMM_CFG_CIOT_SETTING */ #pragma pack(2) typedef struct _SIG_EPAT_CEMM_CFG_CIOT_SETTING { UINT8 ciotOptimization; //CemmCiotOptTypeEnum UINT8 preferedCiotOptimization; //CemmCiotOptTypeEnum }PsCfgCemmCiotSetting; #pragma pack() /* * CESM_CFG_USER_DEFINED_T3482 * T3482 used for "PDN CONNECTIVITY REQUEST" procedure, 3GPP value: Cat1: 8s, NB: 188s */ typedef struct _SIG_EPAT_CESM_CFG_USER_DEFINED_T3482 { BOOL present; /* whether user define/cfg the T3482 parameter. if not, using 3GPP timer */ UINT8 tryCount; /* "PDN CONNECTIVITY REQUEST" try count, 3GPP value: 5 */ UINT16 tValueS; /* Timer value in seconds */ }PsCfgCesmUserDefinedT3482; /* * CESM_CFG_USER_DEFINED_T3492 * T3492 used for "PDN DISCONNECT REQUEST" procedure, 3GPP value: Cat1: 6s, NB: 186s */ typedef struct _SIG_EPAT_CESM_CFG_USER_DEFINED_T3492 { BOOL present; /* whether user define/cfg the T3492 parameter. if not, using 3GPP timer */ UINT8 tryCount; /* "PDN DISCONNECT REQUEST" try count, 3GPP value: 5 */ UINT16 tValueS; /* Timer value in seconds */ }PsCfgCesmUserDefinedT3492; /* * CEPLMN_CFG_USER_DEFINED_HIGH_PRI_PLMN_TIMER * Higher Priority PLMN search timer */ typedef struct _SIG_EPAT_CEPLMN_CFG_USER_DEFINED_HIGH_PRI_PLMN_TIMER { UINT32 present : 1; /* whether user define/cfg the high Priority PLMN search timer. if not, using 3GPP timer */ UINT32 revd : 3; UINT32 tryCount : 8; /* [1-255], if set to 255, means try all the time, 0 - not try high priority plmn search */ UINT32 tValueS : 20; /* in second, MAX: 0xFFFFFseconds ~= 290 hours, is enough*/ }PsCfgUserDefinedHighPriPlmnTimer; // 4 bytes /* * CCM_CFG_DATA_COUNTER_INFO */ typedef struct _SIG_EPAT_L2_CFG_DATA_COUNTER_INFO { UINT64 pkgSentBytes; /* ul sent bytes save in nvm */ UINT64 pkgRecvBytes; /* dl recv bytes save in nvm */ }PsCfgL2DataCounterInfo; // 16 bytes /* * CEPLMN_CFG_OOS_PLMN_INTERVAL */ #pragma pack(1) typedef struct _SIG_EPAT_CEPLMN_CFG_OOS_PLMN_INTERVAL { /* parameters of PLMN search power level: 0, 1, 2, 3, 4 (AT+ECPLMNINTERVAL) */ UINT16 plmnMaxGuardTimeS[5]; /* guard timer of PLMN search, should > 0, and if set to 0xFFFF, means no guard timer */ UINT16 interval0[5]; /* OOS timer value in unit of second after 1st round of PLMN search, * must > 0, and if set to "0xFFFF", means that if still OOS in this round, no PLMN search later */ UINT16 interval1[5]; /* OOS timer value in unit of second after 2nd round of PLMN search*/ UINT16 interval2[5]; /* OOS timer value in unit of second after 3rd round of PLMN search*/ }PsCfgPlmnOosInterval; // 40 bytes #pragma pack() /* * CEMM_CFG_FAKE_CELL_OPT */ typedef struct _SIG_EPAT_CEMM_CFG_FAKE_CELL_OPT { BOOL enableFakeCellOpt; /* Enable or disable fake cell detect optimisation */ UINT8 rsvd0; UINT16 fakeCellBarTimerS; /* The timer to bar the fake cell, in second */ }PsCfgCemmFakeCellOpt; /****************************************************************************** ***************************************************************************** * Functions ***************************************************************************** ******************************************************************************/ /** \fn OsaNvmRet OsaCfgNvmGetNextParam(OsaCfgParam **pCfgParam, OsaCfgParseInfo *pNvmParseInfo) \brief Get next config parameters info from NVM body info, used when parse all CFG NVM file \param[out] pCfgParam return cfg parameter info \param[in] pNvmParseInfo CFG NVM parse info \returns OsaNvmRet \ Note: a) if all parsed, return OSA_NVM_SUCC, and "*pCfgParam" set to PNULL \ b) if CFG NVM file error, return ERR, and caller should delete this cfg file */ #define PsCfgNvmGetNextParam OsaCfgNvmGetNextParam /** \fn void OsaCfgNvmRemoveParamFromParseInfo(OsaCfgParam *pRmCfg, OsaCfgParseInfo *pNvmParseInfo) \brief Remove config parameters info from NVM body info, and update the parse offset \param[out] pRmCfg config parameter info which need remove \param[in] pNvmParseInfo CFG NVM parse info \returns void */ #define PsCfgNvmRemoveParamFromParseInfo OsaCfgNvmRemoveParamFromParseInfo /** \fn OsaCfgNvmUpdateParam(UINT16 paramId, UINT8 cfgType, UINT16 paramLen, void *pParamValue, OsaNvmBodyInfo *pNvmBufInfo) \brief Update one configuration into NVM body, note: not write to flash in this API \param[in] paramId 12 bits parameter ID \param[in] cfgType TV or TLV type \param[in] paramLen parameter length \param[in] pParamValue parameter value \param[in] pNvmBodyInfo NVM body buffer info \returns INT32 //OsaNvmRet */ #define PsCfgNvmUpdateParam OsaCfgNvmUpdateParam /** \fn OsaNvmRet OsaCfgNvmAddParam(UINT16 paramId, UINT8 cfgType, UINT16 paramLen, void *pParamValue, OsaNvmBodyInfo *pNvmBodyInfo) \brief Add one configuration into end of NVM body \param[in] paramId 12 bits parameter ID \param[in] cfgType TV or TLV type \param[in] paramLen parameter length \param[in] pParamValue parameter value \param[in] pNvmBodyInfo NVM body buffer info \returns INT32 //OsaNvmRet \Note: The caller must make sure no this cfg already in the NVM */ #define PsCfgNvmAddParam OsaCfgNvmAddParam /** \fn BOOL OsaCfgNvmParseParam(const OsaCfgParam *pCfgParam, UINT8 cfgType, UINT16 expectLen, void *pOutValue) \brief parse the config parameter from OsaCfgParam \param[in] pCfgParam OsaCfgParam \param[in] cfgType TV or TLV type \param[in] expectLen expect parameter length \param[out] pOutValue parameter output \returns BOOL //OsaNvmRet */ #define PsCfgNvmParseParam OsaCfgNvmParseParam /* * Get default setting */ UINT16 PsCfgGetTVTypeDefaultValue(PsConfigParamId paramId); void PsCfgDefaultPlmnCellLockInfo(PsCfgCellLockInfo *pCellLockInfo); void PsCfgDefaultPlmnBandInfo(PsCfgPlmnBandInfo *pBandInfo); void PsCfgDefaultCemmUeNwCapability(PsCfgCemmUeNwCapa *pCemmUeNwCapability); void PsCfgDefaultCemmMsClassmark2(PsCfgCemmMsClassMark2 *pCemmMsClassMark2); void PsCfgDefaultCemmPsmSetting(PsCfgCemmPsmSetting *pCemmPsmSetting); void PsCfgDefaultCemmEdrxSetting(PsCfgCemmEdrxSetting *pCemmEdrxSetting); void PsCfgDefaultCemmUserMaxT3324Setting(PsCfgCemmUserMaxT3324Setting *pUserMaxT3324Setting); void PsCfgDefaultCemmCiotSetting(PsCfgCemmCiotSetting *pCemmCiotSetting); void PsCfgDefaultCerrcUePowerClassSetting(PsCfgCerrcUePowerClassSetting *pCerrcUePowerClassSetting); /* * Initial checking */ void PsCfgInitCheck(void); /* * Read UE config */ void PsCfgReadUeConfig(PsNvmBodyInfo *pRetInfo, UINT32 rsvdLen); /* * reset all config, when detect config parameter not right */ void PsCfgResetAllUeConfig(void); /* * SAVE UE config */ void PsCfgSaveUeConfig(OsaNvmBodyInfo *pCfgInfo); /* to Set the HighPriPlmn TIMER default value */ void PsCfgDefaultCemmHighPriPlmnTm(PsCfgUserDefinedHighPriPlmnTimer *pCmmHighPlmnTmSetting); /* to Set the esm3482 TIMER default value */ void PsCfgDefaultCesm3482Tm(PsCfgCesmUserDefinedT3482 *pCesm3482TmSetting); /* to Set the esm3492 TIMER default value */ void PsCfgDefaultCesm3492Tm(PsCfgCesmUserDefinedT3492 *pCesm3492TmSetting); /*to Set the L2 Data Counter Info default value*/ void PsCfgDefaultL2DataCounterInfoSetting(PsCfgL2DataCounterInfo *pL2DataCounterInfo); /* to Set the default OOS PLMN interval */ void PsCfgDefaultOosPlmnInterval(PsCfgPlmnOosInterval *pOosPlmnInterval); /* to Set the default Fake Cell Opt value */ void PsCfgDefaultCemmFakeCellOptSetting(PsCfgCemmFakeCellOpt *pCemmFakeCellOpt); #endif