浏览代码

删除 'zf_fsm.c'

Yun_Lib_Share 1 年之前
父节点
当前提交
7519a6837d
共有 1 个文件被更改,包括 0 次插入414 次删除
  1. 0 414
      zf_fsm.c

+ 0 - 414
zf_fsm.c

@@ -1,414 +0,0 @@
-/**
-  *****************************************************************************
-  * @file    zf_fsm.c
-  * @author  Zorb
-  * @version V1.0.0
-  * @date    2018-06-28
-  * @brief   有限状态机的实现
-  *****************************************************************************
-  * @history
-  *
-  * 1. Date:2018-06-28
-  *    Author:Zorb
-  *    Modification:建立文件
-  *
-  *****************************************************************************
-  */
-
-#include "zf_fsm.h"
-#include "zf_assert.h"
-#include "zf_debug.h"
-#include "zf_malloc.h"
-
-/******************************************************************************
- * 描述  :创建状态机(内部分配空间)
- * 参数  :(out)-ppFsm   状态机指针的指针
- * 返回  :-true         成功
- *         -false        失败
-******************************************************************************/
-bool Fsm_create(Fsm ** ppFsm)
-{
-    Fsm *pFsm;
-    
-    ZF_ASSERT(ppFsm != (Fsm **)0)
-    
-    /* 分配空间 */
-    pFsm = ZF_MALLOC(sizeof(Fsm));
-    if (pFsm == NULL)
-    {
-        ZF_DEBUG(LOG_E, "malloc fsm space error\r\n");
-        return false;
-    }
-    
-    /* 初始化成员 */
-    pFsm->Level = 1;
-    pFsm->ChildList = NULL;
-    pFsm->Owner = NULL;
-    pFsm->OwnerTriggerState = NULL;
-    pFsm->CurrentState = NULL;
-    pFsm->IsRunning = false;
-    
-    /* 初始化方法 */
-    pFsm->SetInitialState = Fsm_setInitialState;
-    pFsm->Run = Fsm_run;
-    pFsm->RunAll = Fsm_runAll;
-    pFsm->Stop = Fsm_stop;
-    pFsm->StopAll = Fsm_stopAll;
-    pFsm->Dispose = Fsm_dispose;
-    pFsm->DisposeAll = Fsm_disposeAll;
-    pFsm->AddChild = Fsm_addChild;
-    pFsm->RemoveChild = Fsm_removeChild;
-    pFsm->Dispatch = Fsm_dispatch;
-    pFsm->Transfer = Fsm_transfer;
-    pFsm->TransferWithEvent = Fsm_transferWithEvent;
-    
-    /* 输出 */
-    *ppFsm = pFsm;
-    
-    return true;
-}
-
-/******************************************************************************
- * 描述  :设置状态机初始状态
- * 参数  :(in)-pFsm           状态机指针
- *         (in)-initialState   状态机初始状态
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-void Fsm_setInitialState(Fsm * const pFsm, IFsmState initialState)
-{
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    ZF_ASSERT(initialState != (IFsmState)0)
-    
-    pFsm->CurrentState = initialState;
-}
-
-/******************************************************************************
- * 描述  :运行当前状态机
- * 参数  :(in)-pFsm           状态机指针
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-bool Fsm_run(Fsm * const pFsm)
-{
-    /* 返回结果 */
-    bool res = false;
-    
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    
-    if (!pFsm->IsRunning)
-    {
-        pFsm->IsRunning = true;
-        
-        res = true;
-    }
-    
-    return res;
-}
-
-/******************************************************************************
- * 描述  :运行当前状态机和子状态机
- * 参数  :(in)-pFsm           状态机指针
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-bool Fsm_runAll(Fsm * const pFsm)
-{
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    
-    Fsm_run(pFsm);
-    
-    if (pFsm->ChildList != NULL && pFsm->ChildList->Count > 0)
-    {
-        uint32_t i;
-        Fsm * pChildFsm;
-        
-        for (i = 0; i < pFsm->ChildList->Count; i++)
-        {
-            pChildFsm = (Fsm *)pFsm->ChildList
-                ->GetElementDataAt(pFsm->ChildList, i);
-            
-            if (pChildFsm != NULL)
-            {
-                Fsm_runAll(pChildFsm);
-            }
-        }
-    }
-    
-    return true;
-}
-
-/******************************************************************************
- * 描述  :停止当前状态机
- * 参数  :(in)-pFsm           状态机指针
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-bool Fsm_stop(Fsm * const pFsm)
-{
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    
-    pFsm->IsRunning = false;
-    
-    return true;
-}
-
-/******************************************************************************
- * 描述  :停止当前状态机和子状态机
- * 参数  :(in)-pFsm           状态机指针
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-bool Fsm_stopAll(Fsm * const pFsm)
-{
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    
-    Fsm_stop(pFsm);
-    
-    if (pFsm->ChildList != NULL && pFsm->ChildList->Count > 0)
-    {
-        uint32_t i;
-        Fsm * pChildFsm;
-        
-        for (i = 0; i < pFsm->ChildList->Count; i++)
-        {
-            pChildFsm = (Fsm *)pFsm->ChildList
-                ->GetElementDataAt(pFsm->ChildList, i);
-            
-            if (pChildFsm != NULL)
-            {
-                Fsm_stopAll(pChildFsm);
-            }
-        }
-    }
-    
-    return true;
-}
-
-/******************************************************************************
- * 描述  :释放当前状态机
- * 参数  :(in)-pFsm           状态机指针
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-bool Fsm_dispose(Fsm * const pFsm)
-{
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    
-    if (pFsm->ChildList != NULL)
-    {
-        pFsm->ChildList->Dispose(pFsm->ChildList);
-    }
-    
-    ZF_FREE(pFsm);
-    
-    return true;
-}
-
-/******************************************************************************
- * 描述  :释放当前状态机和子状态机
- * 参数  :(in)-pFsm           状态机指针
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-bool Fsm_disposeAll(Fsm * const pFsm)
-{
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    
-    if (pFsm->ChildList != NULL && pFsm->ChildList->Count > 0)
-    {
-        uint32_t i;
-        Fsm * pChildFsm;
-        
-        for (i = 0; i < pFsm->ChildList->Count; i++)
-        {
-            pChildFsm = (Fsm *)pFsm->ChildList
-                ->GetElementDataAt(pFsm->ChildList, i);
-            
-            if (pChildFsm != NULL)
-            {
-                Fsm_disposeAll(pChildFsm);
-            }
-        }
-    }
-    
-    Fsm_dispose(pFsm);
-    
-    return true;
-}
-
-/******************************************************************************
- * 描述  :添加子状态机
- * 参数  :(in)-pFsm           状态机指针
- *         (in)-pChildFsm      子状态机指针
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-bool Fsm_addChild(Fsm * const pFsm, Fsm * const pChildFsm)
-{
-    /* 返回结果 */
-    bool res = false;
-    
-    List *pList;
-    ListNode *pNode;
-    
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    ZF_ASSERT(pChildFsm != (Fsm *)0)
-    
-    if (pFsm->ChildList == NULL)
-    {
-        List_create(&pList);
-        pFsm->ChildList = pList;
-    }
-    
-    pList = pFsm->ChildList;
-    
-    if (pList != NULL)
-    {
-        List_mallocNode(&pNode, NULL, 0);
-        if (pNode != NULL)
-        {
-            pNode->pData = (void *)pChildFsm;
-            pNode->Size = sizeof(Fsm);
-            
-            pList->Add(pList, pNode);
-            
-            pChildFsm->Owner = pFsm;
-            pChildFsm->Level = pFsm->Level + 1;
-            
-            res = true;
-        }
-    }
-    
-    return res;
-}
-
-/******************************************************************************
- * 描述  :移除子状态机(不释放空间)
- * 参数  :(in)-pFsm           状态机指针
- *         (in)-pChildFsm      子状态机指针
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-bool Fsm_removeChild(Fsm * const pFsm, Fsm * const pChildFsm)
-{
-    /* 返回结果 */
-    bool res = false;
-    
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    ZF_ASSERT(pChildFsm != (Fsm *)0)
-    
-    if (pFsm->ChildList != NULL && pFsm->ChildList->Count > 0)
-    {
-        ListNode *pNode;
-        
-        /* 移除状态机 */
-        while(pFsm->ChildList
-            ->GetElementByData(pFsm->ChildList, pChildFsm, &pNode))
-        {
-            if (pNode == NULL)
-            {
-                break;
-            }
-            
-            if (!pFsm->ChildList->Delete(pFsm->ChildList, pNode))
-            {
-                ZF_DEBUG(LOG_E, "delete fsm node from list error\r\n");
-                
-                break;
-            }
-            
-            res = true;
-        }
-    }
-    
-    return res;
-}
-
-/******************************************************************************
- * 描述  :调度状态机
- * 参数  :(in)-pFsm           状态机指针
- *         (in)-signal         调度信号
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-bool Fsm_dispatch(Fsm * const pFsm, FsmSignal const signal)
-{
-    /* 返回结果 */
-    bool res = false;
-    
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    
-    if (pFsm->IsRunning)
-    {
-        if (pFsm->ChildList != NULL && pFsm->ChildList->Count > 0)
-        {
-            uint32_t i;
-            Fsm * pChildFsm;
-            
-            for (i = 0; i < pFsm->ChildList->Count; i++)
-            {
-                pChildFsm = (Fsm *)pFsm->ChildList
-                    ->GetElementDataAt(pFsm->ChildList, i);
-                
-                if (pChildFsm != NULL)
-                {
-                    Fsm_dispatch(pChildFsm, signal);
-                }
-            }
-        }
-        
-        if (pFsm->CurrentState != NULL)
-        {
-            /* 1:根状态机时调度
-               2:没设置触发状态时调度
-               3:正在触发状态时调度
-             */
-            if (pFsm->Owner == NULL || pFsm->OwnerTriggerState == NULL
-                || pFsm->OwnerTriggerState == pFsm->Owner->CurrentState)
-            {
-                pFsm->CurrentState(pFsm, signal);
-                
-                res = true;
-            }
-        }
-    }
-    
-    return res;
-}
-
-/******************************************************************************
- * 描述  :状态转移
- * 参数  :(in)-pFsm           状态机指针
- *         (in)-nextState      转移后状态
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-void Fsm_transfer(Fsm * const pFsm, IFsmState nextState)
-{
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    ZF_ASSERT(nextState != (IFsmState)0)
-    
-    pFsm->CurrentState = (IFsmState)nextState;
-}
-
-/******************************************************************************
- * 描述  :状态转移(触发转出和转入事件)
- * 参数  :(in)-pFsm           状态机指针
- *         (in)-nextState      转移后状态
- * 返回  :-true               成功
- *         -false              失败
-******************************************************************************/
-void Fsm_transferWithEvent(Fsm * const pFsm, IFsmState nextState)
-{
-    ZF_ASSERT(pFsm != (Fsm *)0)
-    ZF_ASSERT(nextState != (IFsmState)0)
-    
-    Fsm_dispatch(pFsm, FSM_EXIT_SIG);
-    
-    Fsm_transfer(pFsm, nextState);
-    
-    Fsm_dispatch(pFsm, FSM_ENTER_SIG);
-}
-
-/******************************** END OF FILE ********************************/