VOS_UINT32 TAF_MMA_PreProcessMsg( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { TAF_FSM_DESC_STRU *pstFsmDesc = VOS_NULL_PTR; TAF_ACTION_FUNC pActFun; VOS_UINT32 ulRet; ulRet = VOS_TRUE; /* 消息预处理 */ TAF_INFO_LOG1(WUEPS_PID_MMA,"TAF_MMA_PreProcessMsg", ulEventType); pstFsmDesc = TAF_MMA_GetPreFsmDescAddr(); /* 查找状态转移表中的相应的动作处理函数 */ pActFun = TAF_FSM_FindAct(pstFsmDesc, TAF_MMA_MAIN_STA_PREPROC, ulEventType); if (VOS_NULL_PTR != pActFun ) { /* 预处理消息,分为两类消息,一类为预处理结束就返回,另外一类为预处理 结束后,仍然需要进行到状态机中继续处理,因此此处直接通过函数返回预处 理结束后是否需要进行状态机处理*/ ulRet = (*pActFun) ( ulEventType, (struct MsgCB*)pstMsg); return ulRet; } /* 消息未被处理完成需继续处理 */ return VOS_FALSE; }
VOS_VOID TAF_MMA_RegFsm( VOS_VOID ) { /* 预处理注册 */ TAF_FSM_RegisterFsm((TAF_MMA_GetPreFsmDescAddr()), "TAF:FSM:MMA:PreProcess", TAF_MMA_GetPreProcessStaTblSize(), TAF_MMA_GetPreProcessStaTbl(), VOS_NULL_PTR, VOS_NULL_PTR); /* 注册Main状态机 */ TAF_FSM_RegisterFsm((TAF_MMA_GetMainFsmDescAddr()), "TAF:FSM:MMA:MAIN", (VOS_UINT32)(TAF_MMA_GetMainStaTblSize()), TAF_MMA_GetMainStaTbl(), VOS_NULL_PTR, VOS_NULL_PTR); /* 注册Sub状态机 */ TAF_FSM_RegisterFsm((TAF_MMA_GetPhoneModeFsmDescAddr()), "TAF:FSM:MMA:Phone Mode", (VOS_UINT32)TAF_MMA_GetPhoneModeStaTblSize(), TAF_MMA_GetPhoneModeProcessStaTbl(), VOS_NULL_PTR, TAF_MMA_InitFsmCtx_PhoneMode); }
VOS_VOID TAF_MMA_RegFsm( VOS_VOID ) { /* 预处理注册 */ TAF_FSM_RegisterFsm((TAF_MMA_GetPreFsmDescAddr()), "TAF:FSM:MMA:PreProcess", TAF_MMA_GetPreProcessStaTblSize(), TAF_MMA_GetPreProcessStaTbl(), VOS_NULL_PTR, VOS_NULL_PTR); /* 注册Main状态机 */ TAF_FSM_RegisterFsm((TAF_MMA_GetMainFsmDescAddr()), "TAF:FSM:MMA:MAIN", (VOS_UINT32)(TAF_MMA_GetMainStaTblSize()), TAF_MMA_GetMainStaTbl(), VOS_NULL_PTR, VOS_NULL_PTR); /* 注册Sub状态机 */ /* 注册Phone Mode子状态机 */ TAF_FSM_RegisterFsm((TAF_MMA_GetPhoneModeFsmDescAddr()), "TAF:FSM:MMA:Phone Mode", (VOS_UINT32)TAF_MMA_GetPhoneModeStaTblSize(), TAF_MMA_GetPhoneModeProcessStaTbl(), VOS_NULL_PTR, TAF_MMA_InitFsmCtx_PhoneMode); #if (FEATURE_IMS == FEATURE_ON) /* 注册IMS SWITCH子状态机 */ TAF_FSM_RegisterFsm((TAF_MMA_GetImsSwitchFsmDescAddr()), "TAF:FSM:MMA:IMS SWITCH", (VOS_UINT32)TAF_MMA_GetImsSwitchStaTblSize(), TAF_MMA_GetImsSwitchProcessStaTbl(), VOS_NULL_PTR, VOS_NULL_PTR); #endif /* 注册SYS CFG SUB状态机 */ TAF_FSM_RegisterFsm((TAF_MMA_GetSysCfgFsmDescAddr()), "TAF:FSM:MMA:SYS CFG", (VOS_UINT32)TAF_MMA_GetSysCfgStaTblSize(), TAF_MMA_GetSysCfgProcessStaTbl(), VOS_NULL_PTR, TAF_MMA_InitFsmCtx_SysCfg); }