VOS_UINT32 TAF_MMA_FSM_ProcessEvent( VOS_UINT32 ulCurState, VOS_UINT32 ulEventType, VOS_VOID *pRcvMsg ) { TAF_ACTION_FUNC pActFun = VOS_NULL_PTR; TAF_FSM_DESC_STRU *pstFsmDesc = VOS_NULL_PTR; VOS_UINT32 ulRet; TAF_INFO_LOG2(WUEPS_PID_MMA,"TAF_MMA_FSM_ProcessEvent", ulCurState, ulEventType); pstFsmDesc = TAF_MMA_GetCurFsmDesc(); /* 查找状态转移表中的相应的动作处理函数 */ pActFun = TAF_FSM_FindAct(pstFsmDesc, ulCurState, ulEventType); if (VOS_NULL_PTR != pActFun ) { /* 如果返回的事件处理函数不为空,调用它进行事件处理 */ ulRet = (*pActFun) ( ulEventType,(struct MsgCB*)pRcvMsg); TAF_INFO_LOG1(WUEPS_PID_MMA,"TAF_MMA_FSM_ProcessEvent", ulRet); return ulRet; } /* 消息未被处理完成需继续处理 */ return VOS_FALSE; }
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_UINT32 TAF_XPDS_PreProcessMsg( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { VOS_UINT32 ulRslt = VOS_FALSE; TAF_ACTION_FUNC pActFun; TAF_FSM_DESC_STRU *pstFsmDesc; /* 获取预处理动作表中的相应的动作处理函数 */ pstFsmDesc = TAF_XPDS_GetPreProcFsmDescAddr(); /* 查找状态转移表中的相应的动作处理函数 */ pActFun = TAF_FSM_FindAct(pstFsmDesc, TAF_XPDS_L1_STA_PREPROC, ulEventType); if (VOS_NULL_PTR != pActFun ) { /* 预处理消息,分为两类消息,一类为预处理结束就返回,另外一类为预处理 结束后,仍然需要进行到状态机中继续处理,因此此处直接通过函数返回预处 理结束后是否需要进行状态机处理*/ ulRslt = (*pActFun) ( ulEventType, pstMsg); } return ulRslt; }