VOS_VOID NAS_UTRANCTRL_InitCtx( VOS_UINT8 ucInitType ) { #if (FEATURE_ON == FEATURE_UE_MODE_TDS) NAS_UTRANCTRL_CTX_STRU *pstCtx; pstCtx = NAS_UTRANCTRL_GetUtranCtrlCtx(); /* 初始化MS配置信息 */ NAS_UTRANCTRL_InitMsCfgCtx(&(pstCtx->stMsCfgInfo)); /* 初始化UTRANCTRL当前状态机上下文 */ NAS_UTRANCTRL_InitCurrFsmCtx(&(pstCtx->stCurFsm)); /* 初始化UTRANCTRL模块主控信息 */ NAS_UTRANCTRL_InitMainCtrlInfo(&(pstCtx->stMainCtrlInfo)); /* 初始化UTRANCTRL状态机缓存消息队列上下文 */ NAS_UTRANCTRL_InitFsmBufferEntryMsgQueueCtx(&(pstCtx->stBufferEntryMsgQueue)); /* 初始化UTRANCTRL状态机搜网控制上下文 */ NAS_UTRANCTRL_InitFsmPlmnSearchCtrlCtx(&(pstCtx->stPlmnSearchCtrl)); /* 初始化可维可测信息 */ NAS_UTRANCTRL_InitMaintainInfo( ucInitType, &(pstCtx->stMaintainInfo)); /* 状态机表的初始化 */ NAS_UTRANCTRL_RegFsm(); #endif }
VOS_UINT32 NAS_UTRANCTRL_RestoreContextData_Main( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { NAS_UTRANCTRL_CTX_STRU *pstUtranCtrlCtx; NAS_MML_PC_REPLAY_COMPRESS_CONTEXT_STRU *pstRcMsg; VOS_UINT32 ulExpectCount; VOS_UINT32 ulCount; VOS_UINT32 ulItemCount; VOS_UINT8 *pucDest; VOS_UINT8 *pucSrc; VOS_UINT32 ulDestLen; pstUtranCtrlCtx = NAS_UTRANCTRL_GetUtranCtrlCtx(); ulExpectCount = 0; ulCount = 0; ulItemCount = 0; ulExpectCount = sizeof(NAS_UTRANCTRL_CTX_STRU); /*注册状态机*/ NAS_UTRANCTRL_RegFsm(); pstRcMsg = (NAS_MML_PC_REPLAY_COMPRESS_CONTEXT_STRU *)pstMsg; pucSrc = pstRcMsg->aucData; /* 解析总长度 */ PS_MEM_CPY(&ulCount, pucSrc, sizeof(VOS_UINT32)); pucSrc += sizeof(VOS_UINT32); if( ulExpectCount != ulCount ) { return VOS_FALSE; } /* g_stNasUtranCtrlCtx目标地址 */ pucDest = (VOS_UINT8 *)pstUtranCtrlCtx; ulDestLen = sizeof(NAS_UTRANCTRL_CTX_STRU); /* 解压缩 */ if (VOS_FALSE == NAS_MML_UnCompressData(pucDest, &ulDestLen, pucSrc, &ulItemCount) ) { return VOS_FALSE; } pucSrc += (ulItemCount); NAS_UTRANCTRL_ReloadFsmDesc(NAS_UTRANCTRL_GetCurFsmAddr(), pstUtranCtrlCtx->stCurFsm.enFsmId); NAS_INFO_LOG(WUEPS_PID_MMC, "UTRANCTRL: NAS_UTRANCTRL_RestoreContextData_Main - data is restored."); return VOS_TRUE; }