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; }
VOS_UINT32 NAS_MM_RestoreContextData(struct MsgCB * pMsg) { 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; ulExpectCount = 0; ulCount = 0; ulItemCount = 0; ulExpectCount = sizeof(VOS_UINT8) /* gucMmProcessFlg */ + sizeof(VOS_UINT8) /* g_T3211Flag*/ + sizeof(MM_NSD_INFO_ST) /* g_stMmNsd*/ + sizeof(MM_GLOBAL_CTRL_STRU) /* g_MmGlobalInfo*/ + sizeof(MM_TIMER_STRU) * MM_TIMER_NUM; /*gstMmTimer*/ pstRcMsg = (NAS_MML_PC_REPLAY_COMPRESS_CONTEXT_STRU *)pMsg; pucSrc = pstRcMsg->aucData; /* 解析总长度 */ PS_MEM_CPY(&ulCount, pucSrc, sizeof(VOS_UINT32)); pucSrc += sizeof(VOS_UINT32); if( ulExpectCount != ulCount ) { return VOS_FALSE; } /* gucMmProcessFlg目标地址 */ pucDest = (VOS_UINT8 *)&gucMmProcessFlg; ulDestLen = sizeof(gucMmProcessFlg); /* 解压缩 */ if (VOS_FALSE == NAS_MML_UnCompressData(pucDest, &ulDestLen, pucSrc, &ulItemCount) ) { return VOS_FALSE; } pucSrc += (ulItemCount); /* g_T3211Flag目标地址 */ pucDest = (VOS_UINT8 *)&g_T3211Flag; ulDestLen = sizeof(g_T3211Flag); /* 解压缩 */ if (VOS_FALSE == NAS_MML_UnCompressData(pucDest, &ulDestLen, pucSrc, &ulItemCount) ) { return VOS_FALSE; } pucSrc += (ulItemCount); /* g_stMmNsd目标地址 */ pucDest = (VOS_UINT8 *)&g_stMmNsd; ulDestLen = sizeof(MM_NSD_INFO_ST); /* 解压缩 */ if (VOS_FALSE == NAS_MML_UnCompressData(pucDest, &ulDestLen, pucSrc, &ulItemCount) ) { return VOS_FALSE; } pucSrc += (ulItemCount); /* g_MmGlobalInfo目标地址 */ pucDest = (VOS_UINT8 *)&g_MmGlobalInfo; ulDestLen = sizeof(MM_GLOBAL_CTRL_STRU); /* 解压缩 */ if (VOS_FALSE == NAS_MML_UnCompressData(pucDest, &ulDestLen, pucSrc, &ulItemCount) ) { return VOS_FALSE; } pucSrc += (ulItemCount); /* gstMmTimer目标地址 */ pucDest = (VOS_UINT8 *)gstMmTimer; ulDestLen = sizeof(MM_TIMER_STRU) * MM_TIMER_NUM; /* 解压缩 */ if (VOS_FALSE == NAS_MML_UnCompressData(pucDest, &ulDestLen, pucSrc, &ulItemCount) ) { return VOS_FALSE; } pucSrc += (ulItemCount); NAS_MM_SetMmSigFunc(NAS_MML_GetCurrNetRatType()); PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "NAS_MM_RestoreContextData - data is restored."); return VOS_TRUE; }