样例工程目录结构
WQiang authored at 2021-12-01 10:47:56
790.00 B
microCLib
#pragma once

#include "Type.h"

// 未测试代码

typedef struct SMItem
{
    /// <summary>状态名称</summary>
    const char* Name;

    /// <summary>进入状态时执行的动作</summary>
    void(*Enter)(struct SMItem*, void* sm);
    /// <summary>运行状态时执行的动作</summary>
    void (*Run)(struct SMItem*, void* sm);
    /// <summary>退出状态时执行的动作</summary>
    void (*Exit)(struct SMItem*, void* sm);
}SMItem_t;

typedef struct
{
    /// <summary>当前状态</summary>
    struct SMItem* Current;
    /// <summary>下一个状态</summary>
    struct SMItem* Next;
}StateMachine_t;

void StateMachineInit(StateMachine_t* sm, SMItem_t* items);

void StateMachineMain(StateMachine_t* sm);

void StateMachineGo(StateMachine_t* sm, SMItem_t* item);