Merge branch 'release/2.2'

This commit is contained in:
godcreator02 2024-05-07 16:46:28 +08:00
commit 2b5cba9c72
242 changed files with 29852 additions and 196 deletions

View File

@ -42,6 +42,6 @@
"files.encoding": "utf8",
"doxdocgen.file.versionTag": "@version 2.1"
}

View File

@ -6,7 +6,7 @@ include_directories(${PROJECT_SOURCE_DIR}/FSM_OOP/baseFSM)
aux_source_directory(${PROJECT_SOURCE_DIR}/FSM_OOP/baseFSM SRC_FSM_OOP)
# set(keytest 789)
set(keytest 789)
# set(child_parent 789)
if(DEFINED keytest)
include_directories(${PROJECT_SOURCE_DIR}/FSM_OOP/keytest)

View File

@ -1,3 +1,14 @@
/**
* @file FSM.c
* @author (dalaoshi@stu.xjtu.edu.cn)
* @brief
* @version 2.1
* @date 2024-05-07
*
* @copyright 2024
*
*/
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
@ -7,42 +18,55 @@
#include "FSM_protected.h"
#include "FSM_public.h"
/* -------------------------------------------------------------------------- */
/* private函数 */
/* -------------------------------------------------------------------------- */
/**
* @brief
*
* @param pFSM
*/
static inline void setNextState(FSM* pFSM){
int curState = pFSM->privateVars.curState;
int curState = pFSM->privateVars->curState;
if(curState != 0){
pFSM->signals.lastTriggeredSignal = Idle_Signal;
pFSM->privateVars.nextState = pFSM->privateVars.fcns.selectNextState[curState](pFSM->data, &pFSM->signals);
pFSM->privateVars.index = pFSM->privateVars.curState * pFSM->privateVars.numState + pFSM->privateVars.nextState;
pFSM->privateVars->nextState = pFSM->privateVars->fcns.selectNextState[curState](pFSM->data, &pFSM->signals);
pFSM->privateVars->index = pFSM->privateVars->curState * pFSM->privateVars->numState + pFSM->privateVars->nextState;
}
if(0 == pFSM->privateVars.numChild)
if(0 == pFSM->privateVars->numChild)
return;
for (int i = 0; i < pFSM->privateVars.numChild; i++)
for (int i = 0; i < pFSM->privateVars->numChild; i++)
{
FSM *cFSM = pFSM->privateVars.childFSM[i];
FSM *cFSM = pFSM->privateVars->childFSM[i];
setNextState(cFSM);
}
}
/**
* @brief
* @deprecated
* @param pFSM
*/
static inline void preload(FSM* pFSM){
if(pFSM->privateVars.preloader.isReady){
memcpy(pFSM->data, pFSM->privateVars.preloader.shadowData, pFSM->privateVars.preloader.size);
pFSM->privateVars.preloader.isReady = 0;
if(pFSM->privateVars->preloader.isReady){
memcpy(pFSM->data, pFSM->privateVars->preloader.shadowData, pFSM->privateVars->preloader.size);
pFSM->privateVars->preloader.isReady = 0;
}
}
/* -------------------------------------------------------------------------- */
/* protected */
/* -------------------------------------------------------------------------- */
/**
* @brief
* @details
* @param pFSM
*/
void stepBaseFSM(FSM *pFSM)
{
pFSM->pureVtbl.loadExternalData(pFSM->data);
@ -50,34 +74,35 @@ void stepBaseFSM(FSM *pFSM)
setNextState(pFSM);
pFSM->pureVtbl.resetSignals(&pFSM->signals, pFSM->data);
FSMHandler *fcns = &pFSM->privateVars.fcns;
int curState = pFSM->privateVars.curState;
FSMHandler *fcns = &pFSM->privateVars->fcns;
int curState = pFSM->privateVars->curState;
void *data = pFSM->data;
FSM **childFSM = pFSM->privateVars.childFSM;
int index = pFSM->privateVars.index;
int nextState = pFSM->privateVars.nextState;
FSM **childFSM = pFSM->privateVars->childFSM;
int index = pFSM->privateVars->index;
int nextState = pFSM->privateVars->nextState;
if(nextState && curState != nextState){ // 状态切换
if (fcns->transitionTable[index] != NULL) // 有特定的状态转移函数
{
if (fcns->exitActionTable[curState] != NULL)
fcns->exitActionTable[curState](data, childFSM);
if (fcns->exitActionTable[curState] != NULL)
fcns->exitActionTable[curState](data, childFSM);
if (fcns->transitionTable[index] != NULL) // 有特定的状态转移函数
(*fcns->transitionTable[index])(data);
if (fcns->enterActionTable[nextState] != NULL)
fcns->enterActionTable[nextState](data, childFSM);
}
if(fcns->transitionGeneralAction != NULL)
fcns->transitionGeneralAction(data); // 通用状态转移函数
pFSM->privateVars.curState = nextState;
}
else if(curState == 0){ // 处理刚运行进入的默认状态
nextState = pFSM->privateVars.defaultState;
if (fcns->enterActionTable[nextState] != NULL)
fcns->enterActionTable[nextState](data, childFSM);
pFSM->privateVars.curState = nextState;
pFSM->privateVars->curState = nextState;
}
else if(curState == 0){ // 处理刚运行进入的默认状态
nextState = pFSM->privateVars->defaultState;
if (fcns->enterActionTable[nextState] != NULL)
fcns->enterActionTable[nextState](data, childFSM);
pFSM->privateVars->curState = nextState;
}
else // 状态机没动
{
@ -92,32 +117,32 @@ void stepBaseFSM(FSM *pFSM)
/* -------------------------------------------------------------------------- */
void resetBaseFSM(FSM *pFSM)
{
if (pFSM->privateVars.fcns.exitActionTable[pFSM->privateVars.curState] != NULL)
pFSM->privateVars.fcns.exitActionTable[pFSM->privateVars.curState](pFSM->data, pFSM->privateVars.childFSM);
if (pFSM->privateVars->fcns.exitActionTable[pFSM->privateVars->curState] != NULL)
pFSM->privateVars->fcns.exitActionTable[pFSM->privateVars->curState](pFSM->data, pFSM->privateVars->childFSM);
pFSM->privateVars.curState = 0;
pFSM->privateVars->curState = 0;
}
void _stepFSM(FSM *pFSM){
pFSM->step(pFSM);
pFSM->publicFcns.step(pFSM);
}
int getFSMCurState(FSM *pFSM){
return pFSM->privateVars.curState;
return pFSM->privateVars->curState;
}
int getFSMNextState(FSM *pFSM){
return pFSM->privateVars.nextState;
return pFSM->privateVars->nextState;
}
void setChildNum(FSM *pFSM, int num){
pFSM->privateVars.numChild = num;
pFSM->privateVars.childFSM = (FSM **)calloc(num, sizeof(FSM *));
pFSM->privateVars->numChild = num;
pFSM->privateVars->childFSM = (FSM **)calloc(num, sizeof(FSM *));
}
void registerChildFSM(FSM *parent, FSM *child, int index){
parent->privateVars.childFSM[index] = child;
parent->privateVars->childFSM[index] = child;
}
const void *_getData(FSM* pFSM){
@ -125,26 +150,48 @@ const void *_getData(FSM* pFSM){
}
void _setSignal(FSM *pFSM, Uint16 signalFlag){
pFSM->signals.external |= (1 << signalFlag);
pFSM->signals.all |= (1 << signalFlag);
}
/**
* @brief
* @deprecated
* @param pFSM
* @return void*
*/
void *_preloadIn(FSM *pFSM){
return pFSM->privateVars.preloader.shadowData;
return pFSM->privateVars->preloader.shadowData;
}
/**
* @brief
* @deprecated
* @param pFSM
*/
void _preloaderGetReady(FSM *pFSM){
if(pFSM->privateVars.preloader.isReady){
pFSM->privateVars.preloader.isOverflow = 1;
if(pFSM->privateVars->preloader.isReady){
pFSM->privateVars->preloader.isOverflow = 1;
}
pFSM->privateVars.preloader.isReady = 1;
pFSM->privateVars->preloader.isReady = 1;
}
/**
* @brief
* @deprecated
* @param pFSM
* @return int
*/
int _getPreloaderOverFlag(FSM *pFSM){
return pFSM->privateVars.preloader.isOverflow;
return pFSM->privateVars->preloader.isOverflow;
}
/**
* @brief
* @deprecated
* @param pFSM
*/
void _clearPreloaderOverFlag(FSM *pFSM){
pFSM->privateVars.preloader.isOverflow = 0;
pFSM->privateVars->preloader.isOverflow = 0;
}
@ -160,24 +207,8 @@ FSM* newBaseFSM(int numState, int defaultState){
typedef int (*SelectNextStateFcnPtr)(void *, FSMSignals *);
FSM *pFSM = calloc(1, sizeof(FSM));
pFSM->privateVars.numState = numState;
pFSM->privateVars.defaultState = defaultState;
pFSM->privateVars.curState = 0;
pFSM->privateVars.nextState = 0;
pFSM->privateVars.numChild = 0;
pFSM->privateVars = newFMSPrivateVars(numState, defaultState);
pFSM->privateVars.preloader.isReady = 0;
pFSM->privateVars.fcns.duringActionTable = calloc(numState, sizeof(StateFuncPtr));
pFSM->privateVars.fcns.enterActionTable = calloc(numState, sizeof(StateFuncPtr));
pFSM->privateVars.fcns.exitActionTable = calloc(numState, sizeof(StateFuncPtr));
pFSM->privateVars.fcns.selectNextState = calloc(numState, sizeof(SelectNextStateFcnPtr));
pFSM->privateVars.fcns.transitionTable = calloc(numState * numState, sizeof(TransitionFuncPtr));
pFSM->privateVars.fcns.transitionGeneralAction = calloc(1, sizeof(StateFuncPtr));
pFSM->privateVars.fcns.childFSMStepTable = calloc(numState * numState, sizeof(ChildFSMStepFuncPtr));
FSMPureVtbl pureVtbl = {
.setupHandler = NULL,
.initData = NULL,
@ -188,8 +219,8 @@ FSM* newBaseFSM(int numState, int defaultState){
};
pFSM->pureVtbl = pureVtbl;
pFSM->step = stepBaseFSM;
pFSM->reset = resetBaseFSM;
pFSM->publicFcns.step = stepBaseFSM;
pFSM->publicFcns.reset = resetBaseFSM;
return pFSM;
}
@ -200,14 +231,14 @@ void constructFSM(FSM* pFSM){
assert(pFSM->pureVtbl.initData);
assert(pFSM->pureVtbl.initDataLoader);
pFSM->pureVtbl.setupHandler(&pFSM->privateVars.fcns);
pFSM->pureVtbl.setupHandler(&pFSM->privateVars->fcns);
pFSM->pureVtbl.initData(pFSM);
pFSM->pureVtbl.initDataLoader(pFSM);
/* ---------------------------------- 检查状态表 --------------------------------- */
for (int i = 1; i < pFSM->privateVars.numState; i++) // 跳过Idle状态Idle状态只能跳转到默认状态
for (int i = 1; i < pFSM->privateVars->numState; i++) // 跳过Idle状态Idle状态只能跳转到默认状态
{
if(!pFSM->privateVars.fcns.selectNextState[i]){
if(!pFSM->privateVars->fcns.selectNextState[i]){
FSM_LOG("每个状态都要有一个状态选择函数!\n");
assert(0); // 强制退出
}

View File

@ -1,7 +1,100 @@
/**
* @file FSM_private.h
* @author (dalaoshi@stu.xjtu.edu.cn)
* @brief 使
* @details 访
* @version 2.1
* @date 2024-05-07
*
* @copyright 2024
*
*/
#ifndef __FSM_PRIVATE_H_
#define __FSM_PRIVATE_H_
// 这个文件里函数定义和声明写一块
#include <string.h>
#include "FSM_protected.h"
typedef struct FSMHandler FSMHandler;
typedef struct FSM FSM;
typedef struct FSMSignals FSMSignals;
/* -------------------------------------------------------------------------- */
/* private数据类型 */
/* -------------------------------------------------------------------------- */
/**
* @brief
* @deprecated
*
*/
typedef struct FSMDataLoader
{
void *shadowData;
int isReady;
int isOverflow;
size_t size;
}FSMDataLoader;
/**
* @brief 访
*
*/
typedef struct FSMPrivateVars
{
int numState; /**< 状态数量 */
int defaultState; /**< Idle状态不能停留必须指定一个初始状态 */
int curState; /**< 当前状态 */
int nextState; /**< nextState为Idle代表状态机不发生变化 */
int index; /**< 状态转移函数表对应的标号 */
FSMHandler fcns; /**< 状态函数表 */
int numChild; /**< @deprecated 和子状态机相关的暂时弃用 */
FSM **childFSM; /**< @deprecated 和子状态机相关的暂时弃用 */
FSMDataLoader preloader; /**< @deprecated 弃用 */
}FSMPrivateVars;
/**
* @brief FSM.c中调用
*
* @param numState
* @param defaultState
* @return FSMPrivateVars*
*/
FSMPrivateVars* newFMSPrivateVars(int numState, int defaultState){
typedef void (*StateFuncPtr)(void *);
typedef void (*ChildFSMStepFuncPtr)(FSM **);
typedef int (*TransitionFuncPtr)(void *, int *);
typedef int (*SelectNextStateFcnPtr)(void *, FSMSignals *);
FSMPrivateVars *privateVars = calloc(1, sizeof(FSMPrivateVars));
privateVars->numState = numState;
privateVars->defaultState = defaultState;
privateVars->curState = 0;
privateVars->nextState = 0;
privateVars->numChild = 0;
privateVars->preloader.isReady = 0;
privateVars->fcns.duringActionTable = calloc(numState, sizeof(StateFuncPtr));
privateVars->fcns.enterActionTable = calloc(numState, sizeof(StateFuncPtr));
privateVars->fcns.exitActionTable = calloc(numState, sizeof(StateFuncPtr));
privateVars->fcns.selectNextState = calloc(numState, sizeof(SelectNextStateFcnPtr));
privateVars->fcns.transitionTable = calloc(numState * numState, sizeof(TransitionFuncPtr));
privateVars->fcns.transitionGeneralAction = calloc(1, sizeof(StateFuncPtr));
privateVars->fcns.childFSMStepTable = calloc(numState * numState, sizeof(ChildFSMStepFuncPtr));
return privateVars;
}
#endif

View File

@ -1,3 +1,14 @@
/**
* @file FSM_protected.h
* @author (dalaoshi@stu.xjtu.edu.cn)
* @brief protected函数和变量使使
* @version 2.1
* @date 2024-05-07
*
* @copyright 2024
*
*/
#ifndef __FSM_PROTECTED_H_
#define __FSM_PROTECTED_H_
@ -32,9 +43,10 @@
typedef struct _FSMHandler FSMHandler;
typedef struct _FSM FSM;
typedef struct _FSMSignals FSMSignals;
typedef struct FSMHandler FSMHandler;
typedef struct FSM FSM;
typedef struct FSMSignals FSMSignals;
typedef struct FSMPrivateVars FSMPrivateVars;
typedef void (*Avoid_WARNING_State_Fcns)(void *data, FSM **childFSM);
typedef void (*Avoid_WARNING_General_Handlers)(void *data);
@ -46,72 +58,56 @@ typedef int (*Avoid_WARNING_SelectNextState)(void *data, FSMSignals* signals);
typedef void (*Avoid_WARNING_void_fcns)(FSMHandler *fcns);
/* -------------------------------------------------------------------------- */
/* private数据类型但是不能声明到private.h里 */
/* -------------------------------------------------------------------------- */
/**
* @brief
* @details 访FSM_protect.h文件便
*
*
*/
typedef struct FSMHandler{
int (**selectNextState)(void *data, FSMSignals* signals); /**< 每个状态配置的状态选择函数 */
typedef struct _FSMHandler{
int (**selectNextState)(void *data, FSMSignals* signals);
void (**transitionTable)(void *data); /**< 状态转移函数表 */
void (*transitionGeneralAction)(void *data); /**< 通用状态转移函数,不论有没有独立的状态转移函数都会执行 */
void (**transitionTable)(void *data);
void (*transitionGeneralAction)(void *data);
void (**enterActionTable)(void *data, FSM **cFSM); /**< 进入状态时运行的函数和plecs对标 */
void (**duringActionTable)(void *data, FSM **cFSM); /**< 状态不变时运行的函数和plecs对标 */
void (**exitActionTable)(void *data, FSM **cFSM); /**< 状态退出时运行的函数和plecs对标 */
void (**enterActionTable)(void *data, FSM **cFSM);
void (**duringActionTable)(void *data, FSM **cFSM);
void (**exitActionTable)(void *data, FSM **cFSM);
void (**childFSMStepTable)(FSM **cFSM);
void (**childFSMStepTable)(FSM **cFSM); /**< @deprecated 子状态机暂时弃用 */
}FSMHandler;
typedef struct _FSMDataLoader
{
void *shadowData;
int isReady;
int isOverflow;
size_t size;
}FSMDataLoader;
typedef struct _FSMPrivateVars
/**
* @brief protected子类可以访问
* @details SetSignal函数对信号进行设置
*
*/
typedef struct FSMSignals
{
int numState;
int defaultState; // Idle状态不能停留必须指定一个初始状态
int curState;
int nextState;
int index;
FSMHandler fcns;
int numChild;
FSM **childFSM;
FSMDataLoader preloader;
}FMSPrivateVars;
#define Idle_Signal 16
typedef struct _FSMSignals
{
Uint16 external;
Uint16 lastTriggeredSignal;
Uint16 all; /**< 外部信号 */
Uint16 lastTriggeredSignal; /**< 上一次触发的外部信号,用于信号清除 */
}FSMSignals;
#define Idle_Signal 0 /**< 清空上次触发信号,占用第一个信号位 */
/* -------------------------------------------------------------------------- */
/* 纯虚函数,子类必须重新实现,父类构造函数不会初始化 */
/* -------------------------------------------------------------------------- */
typedef struct _FSMPureVtbl {
/**
* @brief
*
*/
typedef struct FSMPureVtbl {
// 状态机控制
void (*setupHandler)(FSMHandler *fcns); // =0子类必须重新实现
void (*setupHandler)(FSMHandler *fcns); /**< 设置所有的FSMHandler必须重新实现 */
void (*initData)(FSM *pFSM); // =0子类必须重新实现
void (*loadExternalData)(void *extData); // =0子类必须重新实现
void (*initData)(FSM *pFSM); /**< 初始化状态机用数据,包括内部数据和外部数据 */
void (*loadExternalData)(void *extData); /**< @deprecated 暂时没用,后续可能考虑外部数据是否允许随时修改 */
void (*initDataLoader)(FSM *pFSM); // =0子类必须重新实现
void (*initDataLoader)(FSM *pFSM); /**< @deprecated 和预装载器相关 */
void (*initSignals)(FSM *pFSM); // =0子类必须重新实现
void (*resetSignals)(FSMSignals *signalRegs, void *data); // =0子类必须重新实现
void (*initSignals)(FSM *pFSM); /**< 初始化状态机信号 */
void (*resetSignals)(FSMSignals *signals, void *data); /**< 根据条件重置状态机信号 */
}FSMPureVtbl;
@ -119,19 +115,16 @@ typedef struct _FSMPureVtbl {
/* -------------------------------------------------------------------------- */
/* 基类定义,纯虚类 */
/* -------------------------------------------------------------------------- */
typedef struct _FSM
typedef struct FSM
{
// public functions
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
void (*reset)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
FSMPublicFcns publicFcns;
// protected
FSMPureVtbl pureVtbl;
void *data;
FSMSignals signals;
// private
FMSPrivateVars privateVars;
FSMPrivateVars* privateVars; /**< 细节被隐藏,无法在子类中访问 */
} FSM;
@ -139,7 +132,6 @@ typedef struct _FSM
/* protected函数子类能用外界用不了 */
/* -------------------------------------------------------------------------- */
void stepBaseFSM(FSM *pFSM);
void constructFSM(FSM* pFSM);
FSM* newBaseFSM(int numState, int defaultState);
void resetBaseFSM(FSM *pFSM);
@ -149,13 +141,13 @@ void resetBaseFSM(FSM *pFSM);
/* 内联函数 */
/* -------------------------------------------------------------------------- */
static inline void clearSignal(FSMSignals *signals, Uint16 signalFlag){
signals->external &= ~(1 << signalFlag);
signals->all &= ~(1 << signalFlag);
}
static inline Uint16 getSignal(FSMSignals *signals, Uint16 signalFlag){
return (signals->external >> signalFlag) & 1;
return (signals->all >> signalFlag) & 1;
}
static inline void clearAllSignals(FSMSignals *signals){
signals->external = 0;
signals->all = 0;
}

View File

@ -1,10 +1,12 @@
/*
* @Author: godcreator02 qq974980621@gmail.com
* @Date: 2024-04-20 18:52:14
* @LastEditors: godcreator02 qq974980621@gmail.com
* @LastEditTime: 2024-04-23 21:51:55
* @FilePath: \vscode\FSM_OOP\baseFSM\FSM_public.h
* @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
/**
* @file FSM_public.h
* @author (dalaoshi@stu.xjtu.edu.cn)
* @brief
* @version 2.1
* @date 2024-05-07
*
* @copyright 2024
*
*/
#ifndef __FSM_PUBLIC_H_
#define __FSM_PUBLIC_H_
@ -15,17 +17,25 @@ typedef unsigned long Uint32;
#define BASE_FSM(ptr) ((FSM *)(ptr))
#define BASE_PTR (FSM *)
typedef struct _FSM FSM;
typedef struct FSM FSM;
typedef struct FSMPublicFcns
{
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
void (*reset)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
}FSMPublicFcns;
/* -------------------------------- 避免警告的函数定义 ------------------------------- */
#define Step(pFSM) _stepFSM((FSM *)pFSM)
#define PreloaderGetReady(pFSM) _preloaderGetReady((FSM *)pFSM);
#define GetPreloaderOverFlag(pFSM) _getPreloaderOverFlag((FSM *)pFSM)
#define ClearPreloaderOverFlag(pFSM) _clearPreloaderOverFlag((FSM *)pFSM)
#define GetData(pFSM) _getData((FSM*)pFSM)
#define SetSignal(pFSM, signal) _setSignal((FSM*)pFSM, signal)
#define Step(pFSM) _stepFSM((FSM *)pFSM) /**< 外界调用这个 */
#define GetData(pFSM) _getData((FSM*)pFSM) /**< 外界调用这个 */
#define SetSignal(pFSM, signal) _setSignal((FSM*)pFSM, signal) /**< 外界调用这个 */
#define PreloaderGetReady(pFSM) _preloaderGetReady((FSM *)pFSM); /**< @deprecated */
#define GetPreloaderOverFlag(pFSM) _getPreloaderOverFlag((FSM *)pFSM) /**< @deprecated */
#define ClearPreloaderOverFlag(pFSM) _clearPreloaderOverFlag((FSM *)pFSM) /**< @deprecated */
void _stepFSM(FSM *pFSM);
/* --------------------------------- 状态机信息获取 -------------------------------- */

View File

@ -32,8 +32,8 @@ static void initData(KeyFSM *pFSM){ // 必须重新实现
static void initDataLoader(KeyFSM *pFSM){ // 必须重新实现
pFSM->base.privateVars.preloader.shadowData = malloc(sizeof(KeyIn));
pFSM->base.privateVars.preloader.size = sizeof(KeyIn);
// pFSM->base.privateVars.preloader.shadowData = malloc(sizeof(KeyIn));
// pFSM->base.privateVars.preloader.size = sizeof(KeyIn);
}
@ -99,7 +99,7 @@ KeyFSM *createKeyFSM(){
pFSM = (KeyFSM *)newBaseFSM(Count_State, DEFAULT_STATE);
#ifndef DSP28377
pFSM->base.step = (Avoid_WARNING_Overrider_Fcns)step;
pFSM->base.publicFcns.step = (Avoid_WARNING_Overrider_Fcns)step;
#endif
pFSM->base.pureVtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;
pFSM->base.pureVtbl.initData = (Avoid_WARNING_Overrider_Fcns)initData;

View File

@ -1,11 +1,3 @@
/*
* @Author: godcreator02 qq974980621@gmail.com
* @Date: 2024-04-20 18:52:14
* @LastEditors: godcreator02 qq974980621@gmail.com
* @LastEditTime: 2024-04-24 13:17:49
* @FilePath: \vscode\FSM_OOP\template\main.c
* @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
#include <stdio.h>
#include "templateFSM.h"
@ -17,17 +9,11 @@ int arrindex = 10;
int x = 5;
int main(){
pFSM = createTemplateFSM();
for (int i = 0; i < 15; i++)
{
TemplateFSM_Input(pFSM)->arrindex = i;
PreloaderGetReady(pFSM);
int ovflag = GetPreloaderOverFlag(pFSM);
if(i == 3){
SetSignal(pFSM, Signal_A);

View File

@ -1,11 +1,14 @@
/*
* @Author: godcreator02 qq974980621@gmail.com
* @Date: 2024-04-20 20:08:03
* @LastEditors: godcreator02 qq974980621@gmail.com
* @LastEditTime: 2024-04-24 14:23:07
* @FilePath: \vscode\FSM_OOP\template\templateFSM.c
* @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
/**
* @file templateFSM.c
* @author (dalaoshi@stu.xjtu.edu.cn)
* @brief
* @version 2.1
* @date 2024-05-07
*
* @copyright 2024
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -17,13 +20,24 @@
/* -------------------------------------------------------------------------- */
/* 纯虚函数允许调用privateVars */
/* -------------------------------------------------------------------------- */
/**
* @brief
* @deprecated data是否需要加锁再说
* @param data
*/
static void loadExternalData(TemplateFSMData *data){ // 必须重新实现
data->external.arrindex = arrindex;
data->external.x = x;
}
/**
* @brief
* @details notion
* @param signals
* @param data
*/
static void resetSignals(FSMSignals *signals, TemplateFSMData *data){ // 必须重新实现
switch (signals->lastTriggeredSignal)
@ -37,7 +51,11 @@ static void resetSignals(FSMSignals *signals, TemplateFSMData *data){ // 必
}
}
/**
* @brief
*
* @param pFSM
*/
static void initData(TemplateFSM *pFSM){ // 必须重新实现
TemplateFSMData *data = (TemplateFSMData *)malloc(sizeof(TemplateFSMData));
@ -56,11 +74,22 @@ static void initData(TemplateFSM *pFSM){ // 必须重新实现
pFSM->base.data = data;
}
/**
* @brief
* @deprecated
* @param pFSM
*/
static void initDataLoader(TemplateFSM *pFSM){ // 必须重新实现
pFSM->base.privateVars.preloader.shadowData = malloc(sizeof(TemplateFSMExternalData));
pFSM->base.privateVars.preloader.size = sizeof(TemplateFSMExternalData);
// pFSM->base.privateVars->preloader.shadowData = malloc(sizeof(TemplateFSMExternalData));
// pFSM->base.privateVars->preloader.size = sizeof(TemplateFSMExternalData);
}
/**
* @brief
*
* @param fcns
*/
static void setupHandler(FSMHandler* fcns){ // 必须重新实现
/* ------------------------------- 添加下一个状态选择函数 ------------------------------ */
addSelectNextStateFcn(D);
@ -87,6 +116,11 @@ static void setupHandler(FSMHandler* fcns){ // 必须重新实现
/* -------------------------------------------------------------------------- */
/* 其他重新实现的函数,父类已有实现,实现多态 */
/* -------------------------------------------------------------------------- */
/**
* @brief step函数
*
* @param pFSM
*/
static void step(TemplateFSM* pFSM){
printFSM(pFSM);
stepBaseFSM(BASE_FSM(pFSM));
@ -100,12 +134,18 @@ static void step(TemplateFSM* pFSM){
/* -------------------------------------------------------------------------- */
/* 子类构造函数 */
/* -------------------------------------------------------------------------- */
/**
* @brief Create a Template FSM object
* @details 访
* @return TemplateFSM*
*/
TemplateFSM *createTemplateFSM(){
TemplateFSM *pFSM;
pFSM = (TemplateFSM *)newBaseFSM(Count_State, DEFAULT_STATE);
// 重新实现的函数
pFSM->base.step = (Avoid_WARNING_Overrider_Fcns)step;
pFSM->base.publicFcns.step = (Avoid_WARNING_Overrider_Fcns)step;
pFSM->base.pureVtbl.initData = (Avoid_WARNING_Overrider_Fcns)initData;
pFSM->base.pureVtbl.initDataLoader = (Avoid_WARNING_Overrider_Fcns)initDataLoader;
pFSM->base.pureVtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;
@ -115,5 +155,7 @@ TemplateFSM *createTemplateFSM(){
// 调用父类构造函数
constructFSM((FSM *)pFSM);
FSM_LOG("ok\n");
return pFSM;
}

View File

@ -1,3 +1,14 @@
/**
* @file templateFSM.h
* @author (dalaoshi@stu.xjtu.edu.cn)
* @brief
* @version 2.1
* @date 2024-05-07
*
* @copyright 2024
*
*/
#ifndef __TEMPLATE_FSM_H_
#define __TEMPLATE_FSM_H_
@ -9,20 +20,32 @@
/* -------------------------------------------------------------------------- */
/* 自定义数据和信号 */
/* -------------------------------------------------------------------------- */
/**
* @brief 15
* @details Unint16存储的信号位
*
*/
enum TemplateFSMSignals{
Signal_A = 0,
Signal_A = 1, /**< 必须从1开始0预留给Idle信号了*/
Signal_B,
};
typedef struct _templateFSMExternalData
/**
* @brief
*
*/
typedef struct TemplateFSMExternalData
{
int arrindex;
int x;
}TemplateFSMExternalData;
typedef struct _templateFSMInnerData
/**
* @brief
*
*/
typedef struct TemplateFSMInnerData
{
int y1;
int inner1;
@ -31,15 +54,15 @@ typedef struct _templateFSMInnerData
/* -------------------------------------------------------------------------- */
/* 下面的改个名字就行了 */
/* -------------------------------------------------------------------------- */
#define TemplateFSM_Input(pFSM) ((TemplateFSMExternalData *)_preloadIn((FSM *)pFSM))
#define TemplateFSM_Input(pFSM) ((TemplateFSMExternalData *)_preloadIn((FSM *)pFSM)) /**< @deprecated 暂时弃用 */
typedef struct _templateFSMData
typedef struct TemplateFSMData
{
TemplateFSMExternalData external;
TemplateFSMInnerData internal;
}TemplateFSMData;
typedef struct _TemplateFSM TemplateFSM;
typedef struct TemplateFSM TemplateFSM;
TemplateFSM *createTemplateFSM();

View File

@ -1,5 +1,16 @@
/**
* @file templateFSM_private.h
* @author (dalaoshi@stu.xjtu.edu.cn)
* @brief templateFSM.c引用一次
* @version 2.1
* @date 2024-05-07
*
* @copyright 2024
*
*/
#ifdef __TEMPLATE_PRIVATE_FSM_H_
#error only include once
#error This file can only be included once!!!
#else
#define __TEMPLATE_PRIVATE_FSM_H_
@ -18,7 +29,7 @@ extern int x;
/* -------------------------------------------------------------------------- */
/* 继承基类 */
/* -------------------------------------------------------------------------- */
typedef struct _TemplateFSM
typedef struct TemplateFSM
{
FSM base;
}TemplateFSM;
@ -26,19 +37,26 @@ typedef struct _TemplateFSM
/* -------------------------------------------------------------------------- */
/* 状态定义 */
/* -------------------------------------------------------------------------- */
/**
* @brief Idle和Count_State必须占据开头和结尾两个位置
*
*/
typedef enum _State
{
Idle,
Idle, /**< 必须在开头,并且枚举值=0 */
D,
E,
Count_State,
Count_State, /**< 必须在结尾,用来统计状态数量 */
} State;
#define DEFAULT_STATE E
#define DEFAULT_STATE E /**< 默认状态Idle状态会先跳转到默认状态 */
/* -------------------------------------------------------------------------- */
/* 下一个状态选择函数 */
/* -------------------------------------------------------------------------- */
static State selectNextStateFcn(D)(TemplateFSMData *data, FSMSignals *signals){
if(getSignal(signals, Signal_A)){
signals->lastTriggeredSignal = Signal_A;
@ -97,27 +115,31 @@ static void actionFcn(exit, E)()
/* -------------------------------------------------------------------------- */
/* 转移函数 */
/* -------------------------------------------------------------------------- */
static void transitionGeneralAction(TemplateFSMData *data){
static void transitionGeneralAction(FSM pFSM){
FSM_LOG("general");
}
// static void transitionGeneralAction(TemplateFSMData *data){
// FSM_LOG("general");
// }
static void transitionHandler(Idle, D)()
{
FSM_LOG(" Idle2D ");
}
static State transitionHandler(Idle, E)()
static void transitionHandler(Idle, E)()
{
FSM_LOG(" Idle2E ");
}
static State transitionHandler(D, E)(TemplateFSMData *data, int *delayedIndex)
static void transitionHandler(D, E)(TemplateFSMData *data, int *delayedIndex)
{
*delayedIndex = index(D, E);
FSM_LOG(" D2E ");
}
static State transitionHandler(E, D)()
static void transitionHandler(E, D)()
{
FSM_LOG(" E2D ");
}

2899
vscode/doxygen/Doxyfile Normal file

File diff suppressed because it is too large Load Diff

View File

View File

@ -0,0 +1,5 @@
@page ADCintro title_intro
啊手动阀手动阀撒旦啊手动阀啊手动阀
see @ref CLArun

View File

@ -0,0 +1,10 @@
@page sample title_sample
@subpage ADCintro
@tableofcontents
@section CLArun CLA运行
asdf
@section sampleconvert 采样转换
asdf
41263577128378234821098

View File

@ -0,0 +1,7 @@
@mainpage
# 啊哈哈哈哈
啊实打实的撒地方撒
撒旦发撒f阿萨
阿松大法撒旦撒地方

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -0,0 +1,338 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/baseFSM/FSM.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('_f_s_m_8c.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">FSM.c File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;assert.h&gt;</code><br />
<code>#include &lt;string.h&gt;</code><br />
<code>#include &quot;<a class="el" href="_f_s_m__private_8h_source.html">FSM_private.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="_f_s_m__protected_8h_source.html">FSM_protected.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="_f_s_m__public_8h_source.html">FSM_public.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a6b596586b33f46c312a7088e8352d226" id="r_a6b596586b33f46c312a7088e8352d226"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6b596586b33f46c312a7088e8352d226">setNextState</a> (FSM *pFSM)</td></tr>
<tr class="memdesc:a6b596586b33f46c312a7088e8352d226"><td class="mdescLeft">&#160;</td><td class="mdescRight">设置下一个状态,里面的子状态机暂时没用到 <br /></td></tr>
<tr class="separator:a6b596586b33f46c312a7088e8352d226"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fc6a4715e8cbd7660788fd9c59cb417" id="r_a7fc6a4715e8cbd7660788fd9c59cb417"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7fc6a4715e8cbd7660788fd9c59cb417">preload</a> (FSM *pFSM)</td></tr>
<tr class="separator:a7fc6a4715e8cbd7660788fd9c59cb417"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bab0f8eedb805136ee573eac09b6ebb" id="r_a9bab0f8eedb805136ee573eac09b6ebb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9bab0f8eedb805136ee573eac09b6ebb">stepBaseFSM</a> (FSM *pFSM)</td></tr>
<tr class="memdesc:a9bab0f8eedb805136ee573eac09b6ebb"><td class="mdescLeft">&#160;</td><td class="mdescRight">运行状态机,状态机框架的核心函数 <br /></td></tr>
<tr class="separator:a9bab0f8eedb805136ee573eac09b6ebb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c285ac5bbad90b0b04de18d393cf4ce" id="r_a9c285ac5bbad90b0b04de18d393cf4ce"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9c285ac5bbad90b0b04de18d393cf4ce">_preloadIn</a> (FSM *pFSM)</td></tr>
<tr class="separator:a9c285ac5bbad90b0b04de18d393cf4ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e2a8d16f390efeaecc8938ec8f2e728" id="r_a6e2a8d16f390efeaecc8938ec8f2e728"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6e2a8d16f390efeaecc8938ec8f2e728">_preloaderGetReady</a> (FSM *pFSM)</td></tr>
<tr class="separator:a6e2a8d16f390efeaecc8938ec8f2e728"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a704103961964dbb8582b59fd161a3348" id="r_a704103961964dbb8582b59fd161a3348"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a704103961964dbb8582b59fd161a3348">_getPreloaderOverFlag</a> (FSM *pFSM)</td></tr>
<tr class="separator:a704103961964dbb8582b59fd161a3348"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad909acd21e17b8073d5d9dfb8892ccb" id="r_aad909acd21e17b8073d5d9dfb8892ccb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aad909acd21e17b8073d5d9dfb8892ccb">_clearPreloaderOverFlag</a> (FSM *pFSM)</td></tr>
<tr class="separator:aad909acd21e17b8073d5d9dfb8892ccb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><dl class="section author"><dt>Author</dt><dd>天神 (<a href="#" onclick="location.href='mai'+'lto:'+'dal'+'ao'+'shi'+'@s'+'tu.'+'xj'+'tu.'+'ed'+'u.c'+'n'; return false;">dalao<span class="obfuscator">.nosp@m.</span>shi@<span class="obfuscator">.nosp@m.</span>stu.x<span class="obfuscator">.nosp@m.</span>jtu.<span class="obfuscator">.nosp@m.</span>edu.c<span class="obfuscator">.nosp@m.</span>n</a>) </dd></dl>
<dl class="section version"><dt>Version</dt><dd>2.1 </dd></dl>
<dl class="section date"><dt>Date</dt><dd>2024-05-07</dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>天神创意无限公司 2024 </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a6b596586b33f46c312a7088e8352d226" name="a6b596586b33f46c312a7088e8352d226"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b596586b33f46c312a7088e8352d226">&#9670;&#160;</a></span>setNextState()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void setNextState </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>设置下一个状态,里面的子状态机暂时没用到 </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td>状态机变量的基类指针 </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7fc6a4715e8cbd7660788fd9c59cb417" name="a7fc6a4715e8cbd7660788fd9c59cb417"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7fc6a4715e8cbd7660788fd9c59cb417">&#9670;&#160;</a></span>preload()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void preload </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated</a></b></dt><dd>去掉了所有和预装载器相关的内容 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9bab0f8eedb805136ee573eac09b6ebb" name="a9bab0f8eedb805136ee573eac09b6ebb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bab0f8eedb805136ee573eac09b6ebb">&#9670;&#160;</a></span>stepBaseFSM()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void stepBaseFSM </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>运行状态机,状态机框架的核心函数 </p>
<p>共分为三部首先判断是否有状态机切换, </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td>状态机基类指针 </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9c285ac5bbad90b0b04de18d393cf4ce" name="a9c285ac5bbad90b0b04de18d393cf4ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c285ac5bbad90b0b04de18d393cf4ce">&#9670;&#160;</a></span>_preloadIn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * _preloadIn </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated</a></b></dt><dd>弃用 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void* </dd></dl>
</div>
</div>
<a id="a6e2a8d16f390efeaecc8938ec8f2e728" name="a6e2a8d16f390efeaecc8938ec8f2e728"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e2a8d16f390efeaecc8938ec8f2e728">&#9670;&#160;</a></span>_preloaderGetReady()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void _preloaderGetReady </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000003">Deprecated</a></b></dt><dd>弃用 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a704103961964dbb8582b59fd161a3348" name="a704103961964dbb8582b59fd161a3348"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a704103961964dbb8582b59fd161a3348">&#9670;&#160;</a></span>_getPreloaderOverFlag()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int _getPreloaderOverFlag </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000004">Deprecated</a></b></dt><dd>弃用 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>int </dd></dl>
</div>
</div>
<a id="aad909acd21e17b8073d5d9dfb8892ccb" name="aad909acd21e17b8073d5d9dfb8892ccb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad909acd21e17b8073d5d9dfb8892ccb">&#9670;&#160;</a></span>_clearPreloaderOverFlag()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void _clearPreloaderOverFlag </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000005">Deprecated</a></b></dt><dd>弃用 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_80fe18a48ef62b4daee0a25030c2866c.html">baseFSM</a></li><li class="navelem"><a class="el" href="_f_s_m_8c.html">FSM.c</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,10 @@
var _f_s_m_8c =
[
[ "setNextState", "_f_s_m_8c.html#a6b596586b33f46c312a7088e8352d226", null ],
[ "preload", "_f_s_m_8c.html#a7fc6a4715e8cbd7660788fd9c59cb417", null ],
[ "stepBaseFSM", "_f_s_m_8c.html#a9bab0f8eedb805136ee573eac09b6ebb", null ],
[ "_preloadIn", "_f_s_m_8c.html#a9c285ac5bbad90b0b04de18d393cf4ce", null ],
[ "_preloaderGetReady", "_f_s_m_8c.html#a6e2a8d16f390efeaecc8938ec8f2e728", null ],
[ "_getPreloaderOverFlag", "_f_s_m_8c.html#a704103961964dbb8582b59fd161a3348", null ],
[ "_clearPreloaderOverFlag", "_f_s_m_8c.html#aad909acd21e17b8073d5d9dfb8892ccb", null ]
];

View File

@ -0,0 +1,244 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/baseFSM/FSM_private.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('_f_s_m__private_8h.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">FSM_private.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>状态机框架的私有变量,只能在状态机框架内使用。
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;string.h&gt;</code><br />
<code>#include &quot;<a class="el" href="_f_s_m__protected_8h_source.html">FSM_protected.h</a>&quot;</code><br />
</div>
<p><a href="_f_s_m__private_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_f_s_m_data_loader.html">FSMDataLoader</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">基类状态机的私有变量和函数,子类不可直接访问 <a href="struct_f_s_m_private_vars.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a19064d5985c08b2ebbdfe2b27c6986ba" id="r_a19064d5985c08b2ebbdfe2b27c6986ba"><td class="memItemLeft" align="right" valign="top">typedef struct FSMHandler&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a19064d5985c08b2ebbdfe2b27c6986ba">FSMHandler</a></td></tr>
<tr class="memdesc:a19064d5985c08b2ebbdfe2b27c6986ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">状态处理函数集合,全部需要子类重新填充内容 <br /></td></tr>
<tr class="separator:a19064d5985c08b2ebbdfe2b27c6986ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8470b4675b81ea69519ae6222c77e3f" id="r_aa8470b4675b81ea69519ae6222c77e3f"><td class="memItemLeft" align="right" valign="top">typedef struct FSMSignals&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa8470b4675b81ea69519ae6222c77e3f">FSMSignals</a></td></tr>
<tr class="memdesc:aa8470b4675b81ea69519ae6222c77e3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">状态机用的信号protected子类可以访问 <br /></td></tr>
<tr class="separator:aa8470b4675b81ea69519ae6222c77e3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9116b0a24810b38fafae2fb986517432" id="r_a9116b0a24810b38fafae2fb986517432"><td class="memItemLeft" align="right" valign="top">typedef struct FSMDataLoader&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9116b0a24810b38fafae2fb986517432">FSMDataLoader</a></td></tr>
<tr class="separator:a9116b0a24810b38fafae2fb986517432"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51a08a9c63b45851707caacfafca8cf9" id="r_a51a08a9c63b45851707caacfafca8cf9"><td class="memItemLeft" align="right" valign="top"><a id="a51a08a9c63b45851707caacfafca8cf9" name="a51a08a9c63b45851707caacfafca8cf9"></a>
typedef struct FSMPrivateVars&#160;</td><td class="memItemRight" valign="bottom"><b>FSMPrivateVars</b></td></tr>
<tr class="memdesc:a51a08a9c63b45851707caacfafca8cf9"><td class="mdescLeft">&#160;</td><td class="mdescRight">基类状态机的私有变量和函数,子类不可直接访问 <br /></td></tr>
<tr class="separator:a51a08a9c63b45851707caacfafca8cf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ac817972fed8a0babe2356c890f960e75" id="r_ac817972fed8a0babe2356c890f960e75"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac817972fed8a0babe2356c890f960e75">newFMSPrivateVars</a> (int numState, int defaultState)</td></tr>
<tr class="memdesc:ac817972fed8a0babe2356c890f960e75"><td class="mdescLeft">&#160;</td><td class="mdescRight">仅在FSM.c中调用新建私有变量并分配空间 <br /></td></tr>
<tr class="separator:ac817972fed8a0babe2356c890f960e75"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>状态机框架的私有变量,只能在状态机框架内使用。 </p>
<dl class="section author"><dt>Author</dt><dd>天神 (<a href="#" onclick="location.href='mai'+'lto:'+'dal'+'ao'+'shi'+'@s'+'tu.'+'xj'+'tu.'+'ed'+'u.c'+'n'; return false;">dalao<span class="obfuscator">.nosp@m.</span>shi@<span class="obfuscator">.nosp@m.</span>stu.x<span class="obfuscator">.nosp@m.</span>jtu.<span class="obfuscator">.nosp@m.</span>edu.c<span class="obfuscator">.nosp@m.</span>n</a>)</dd></dl>
<p>基类私有变量对子类和外界隐藏实现,通过指针进行访问。 </p><dl class="section version"><dt>Version</dt><dd>2.1 </dd></dl>
<dl class="section date"><dt>Date</dt><dd>2024-05-07</dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>天神创意无限公司 2024 </dd></dl>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a id="a19064d5985c08b2ebbdfe2b27c6986ba" name="a19064d5985c08b2ebbdfe2b27c6986ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19064d5985c08b2ebbdfe2b27c6986ba">&#9670;&#160;</a></span>FSMHandler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct FSMHandler FSMHandler</td>
</tr>
</table>
</div><div class="memdoc">
<p>状态处理函数集合,全部需要子类重新填充内容 </p>
<p>这个结构体是私有变量子状态机和外界都不该访问。但是写在FSM_protect.h文件这样方便在子类中添加函数。不然添加函数得再写个函数添加 有点麻烦 </p>
</div>
</div>
<a id="aa8470b4675b81ea69519ae6222c77e3f" name="aa8470b4675b81ea69519ae6222c77e3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8470b4675b81ea69519ae6222c77e3f">&#9670;&#160;</a></span>FSMSignals</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct FSMSignals FSMSignals</td>
</tr>
</table>
</div><div class="memdoc">
<p>状态机用的信号protected子类可以访问 </p>
<p>外部只能通过SetSignal函数对信号进行设置在状态机运行时会根据信号清除函数清除信号。信号 利用位进行存储,每个位代表一个信号,通过移位操作设置和清除信号。 </p>
</div>
</div>
<a id="a9116b0a24810b38fafae2fb986517432" name="a9116b0a24810b38fafae2fb986517432"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9116b0a24810b38fafae2fb986517432">&#9670;&#160;</a></span>FSMDataLoader</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct FSMDataLoader FSMDataLoader</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000006">Deprecated</a></b></dt><dd>预装载器弃用</dd></dl>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ac817972fed8a0babe2356c890f960e75" name="ac817972fed8a0babe2356c890f960e75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac817972fed8a0babe2356c890f960e75">&#9670;&#160;</a></span>newFMSPrivateVars()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a> * newFMSPrivateVars </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>numState</em>, </span></td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>defaultState</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>仅在FSM.c中调用新建私有变量并分配空间 </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">numState</td><td></td></tr>
<tr><td class="paramname">defaultState</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>FSMPrivateVars* </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_80fe18a48ef62b4daee0a25030c2866c.html">baseFSM</a></li><li class="navelem"><a class="el" href="_f_s_m__private_8h.html">FSM_private.h</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,10 @@
var _f_s_m__private_8h =
[
[ "FSMDataLoader", "struct_f_s_m_data_loader.html", null ],
[ "FSMPrivateVars", "struct_f_s_m_private_vars.html", "struct_f_s_m_private_vars" ],
[ "FSMHandler", "_f_s_m__private_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba", null ],
[ "FSMSignals", "_f_s_m__private_8h.html#aa8470b4675b81ea69519ae6222c77e3f", null ],
[ "FSMDataLoader", "_f_s_m__private_8h.html#a9116b0a24810b38fafae2fb986517432", null ],
[ "FSMPrivateVars", "_f_s_m__private_8h.html#a51a08a9c63b45851707caacfafca8cf9", null ],
[ "newFMSPrivateVars", "_f_s_m__private_8h.html#ac817972fed8a0babe2356c890f960e75", null ]
];

View File

@ -0,0 +1,205 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/baseFSM/FSM_private.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('_f_s_m__private_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">FSM_private.h</div></div>
</div><!--header-->
<div class="contents">
<a href="_f_s_m__private_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#ifndef __FSM_PRIVATE_H_</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#define __FSM_PRIVATE_H_</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &quot;<a class="code" href="_f_s_m__protected_8h.html">FSM_protected.h</a>&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="_f_s_m__private_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba"> 20</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_f_s_m_handler.html">FSMHandler</a> <a class="code hl_struct" href="struct_f_s_m_handler.html">FSMHandler</a>;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="keyword">typedef</span> <span class="keyword">struct </span>FSM FSM;</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="_f_s_m__private_8h.html#aa8470b4675b81ea69519ae6222c77e3f"> 22</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a> <a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a>;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">/* private数据类型 */</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="foldopen" id="foldopen00032" data-start="{" data-end="};">
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="struct_f_s_m_data_loader.html"> 32</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_f_s_m_data_loader.html">FSMDataLoader</a></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span>{ </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordtype">void</span> *shadowData;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keywordtype">int</span> isReady;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keywordtype">int</span> isOverflow;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordtype">size_t</span> size;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="_f_s_m__private_8h.html#a9116b0a24810b38fafae2fb986517432"> 38</a></span>}<a class="code hl_typedef" href="_f_s_m__private_8h.html#a9116b0a24810b38fafae2fb986517432">FSMDataLoader</a>;</div>
</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="foldopen" id="foldopen00045" data-start="{" data-end="};">
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="struct_f_s_m_private_vars.html"> 45</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>{</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="struct_f_s_m_private_vars.html#a9f8a355881f1e3e990987090e6e9e37c"> 47</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="struct_f_s_m_private_vars.html#a9f8a355881f1e3e990987090e6e9e37c">numState</a>; </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="struct_f_s_m_private_vars.html#a4cc735365b8c3946ff83d1984e2565fe"> 48</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="struct_f_s_m_private_vars.html#a4cc735365b8c3946ff83d1984e2565fe">defaultState</a>; </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="struct_f_s_m_private_vars.html#a1e013b34f3da19006fdaef781e386ba7"> 50</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="struct_f_s_m_private_vars.html#a1e013b34f3da19006fdaef781e386ba7">curState</a>; </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="struct_f_s_m_private_vars.html#a4312b61c7165398d2415c0794ac1fa8c"> 51</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="struct_f_s_m_private_vars.html#a4312b61c7165398d2415c0794ac1fa8c">nextState</a>; </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="struct_f_s_m_private_vars.html#ab14d89d4db1639abfab4a24f05cca6a7"> 52</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="struct_f_s_m_private_vars.html#ab14d89d4db1639abfab4a24f05cca6a7">index</a>; </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="struct_f_s_m_private_vars.html#a38fc9622245dd2e2272d0511a603db69"> 54</a></span> <a class="code hl_struct" href="struct_f_s_m_handler.html">FSMHandler</a> <a class="code hl_variable" href="struct_f_s_m_private_vars.html#a38fc9622245dd2e2272d0511a603db69">fcns</a>; </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="struct_f_s_m_private_vars.html#ac66fa0241dc6aa44e48e6b16811a8091"> 56</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="struct_f_s_m_private_vars.html#ac66fa0241dc6aa44e48e6b16811a8091">numChild</a>; </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="struct_f_s_m_private_vars.html#ad20548555264a67dac6b18b757e01821"> 57</a></span> FSM **<a class="code hl_variable" href="struct_f_s_m_private_vars.html#ad20548555264a67dac6b18b757e01821">childFSM</a>; </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="struct_f_s_m_private_vars.html#a71ba0d8bee3f15ed5a0dd92dda0e0ed1"> 59</a></span> <a class="code hl_struct" href="struct_f_s_m_data_loader.html">FSMDataLoader</a> <a class="code hl_variable" href="struct_f_s_m_private_vars.html#a71ba0d8bee3f15ed5a0dd92dda0e0ed1">preloader</a>; </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="_f_s_m__private_8h.html#a51a08a9c63b45851707caacfafca8cf9"> 61</a></span>}<a class="code hl_typedef" href="_f_s_m__private_8h.html#a51a08a9c63b45851707caacfafca8cf9">FSMPrivateVars</a>;</div>
</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="foldopen" id="foldopen00072" data-start="{" data-end="}">
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="_f_s_m__private_8h.html#ac817972fed8a0babe2356c890f960e75"> 72</a></span><a class="code hl_struct" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a>* <a class="code hl_function" href="_f_s_m__private_8h.html#ac817972fed8a0babe2356c890f960e75">newFMSPrivateVars</a>(<span class="keywordtype">int</span> numState, <span class="keywordtype">int</span> defaultState){</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">typedef</span> void (*StateFuncPtr)(<span class="keywordtype">void</span> *); </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">typedef</span> void (*ChildFSMStepFuncPtr)(FSM **); </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">typedef</span> int (*TransitionFuncPtr)(<span class="keywordtype">void</span> *, <span class="keywordtype">int</span> *);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">typedef</span> int (*SelectNextStateFcnPtr)(<span class="keywordtype">void</span> *, <a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a> *);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <a class="code hl_struct" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a> *privateVars = calloc(1, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a>));</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> privateVars-&gt;numState = numState;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> privateVars-&gt;defaultState = defaultState;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> privateVars-&gt;curState = 0;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> privateVars-&gt;nextState = 0;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> privateVars-&gt;numChild = 0;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> privateVars-&gt;preloader.isReady = 0;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> privateVars-&gt;fcns.duringActionTable = calloc(numState, <span class="keyword">sizeof</span>(StateFuncPtr));</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> privateVars-&gt;fcns.enterActionTable = calloc(numState, <span class="keyword">sizeof</span>(StateFuncPtr));</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> privateVars-&gt;fcns.exitActionTable = calloc(numState, <span class="keyword">sizeof</span>(StateFuncPtr));</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> privateVars-&gt;fcns.selectNextState = calloc(numState, <span class="keyword">sizeof</span>(SelectNextStateFcnPtr));</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> privateVars-&gt;fcns.transitionTable = calloc(numState * numState, <span class="keyword">sizeof</span>(TransitionFuncPtr));</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> privateVars-&gt;fcns.transitionGeneralAction = calloc(1, <span class="keyword">sizeof</span>(StateFuncPtr));</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> privateVars-&gt;fcns.childFSMStepTable = calloc(numState * numState, <span class="keyword">sizeof</span>(ChildFSMStepFuncPtr));</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">return</span> privateVars;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span>}</div>
</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="a_f_s_m__private_8h_html_a51a08a9c63b45851707caacfafca8cf9"><div class="ttname"><a href="_f_s_m__private_8h.html#a51a08a9c63b45851707caacfafca8cf9">FSMPrivateVars</a></div><div class="ttdeci">struct FSMPrivateVars FSMPrivateVars</div><div class="ttdoc">基类状态机的私有变量和函数,子类不可直接访问</div></div>
<div class="ttc" id="a_f_s_m__private_8h_html_a9116b0a24810b38fafae2fb986517432"><div class="ttname"><a href="_f_s_m__private_8h.html#a9116b0a24810b38fafae2fb986517432">FSMDataLoader</a></div><div class="ttdeci">struct FSMDataLoader FSMDataLoader</div></div>
<div class="ttc" id="a_f_s_m__private_8h_html_ac817972fed8a0babe2356c890f960e75"><div class="ttname"><a href="_f_s_m__private_8h.html#ac817972fed8a0babe2356c890f960e75">newFMSPrivateVars</a></div><div class="ttdeci">FSMPrivateVars * newFMSPrivateVars(int numState, int defaultState)</div><div class="ttdoc">仅在FSM.c中调用新建私有变量并分配空间</div><div class="ttdef"><b>Definition</b> FSM_private.h:72</div></div>
<div class="ttc" id="a_f_s_m__protected_8h_html"><div class="ttname"><a href="_f_s_m__protected_8h.html">FSM_protected.h</a></div><div class="ttdoc">状态机框架的protected函数和变量在继承的子类中可使用在外界不可使用</div></div>
<div class="ttc" id="astruct_f_s_m_data_loader_html"><div class="ttname"><a href="struct_f_s_m_data_loader.html">FSMDataLoader</a></div><div class="ttdef"><b>Definition</b> FSM_private.h:33</div></div>
<div class="ttc" id="astruct_f_s_m_handler_html"><div class="ttname"><a href="struct_f_s_m_handler.html">FSMHandler</a></div><div class="ttdoc">状态处理函数集合,全部需要子类重新填充内容</div><div class="ttdef"><b>Definition</b> FSM_protected.h:67</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html"><div class="ttname"><a href="struct_f_s_m_private_vars.html">FSMPrivateVars</a></div><div class="ttdoc">基类状态机的私有变量和函数,子类不可直接访问</div><div class="ttdef"><b>Definition</b> FSM_private.h:46</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_a1e013b34f3da19006fdaef781e386ba7"><div class="ttname"><a href="struct_f_s_m_private_vars.html#a1e013b34f3da19006fdaef781e386ba7">FSMPrivateVars::curState</a></div><div class="ttdeci">int curState</div><div class="ttdef"><b>Definition</b> FSM_private.h:50</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_a38fc9622245dd2e2272d0511a603db69"><div class="ttname"><a href="struct_f_s_m_private_vars.html#a38fc9622245dd2e2272d0511a603db69">FSMPrivateVars::fcns</a></div><div class="ttdeci">FSMHandler fcns</div><div class="ttdef"><b>Definition</b> FSM_private.h:54</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_a4312b61c7165398d2415c0794ac1fa8c"><div class="ttname"><a href="struct_f_s_m_private_vars.html#a4312b61c7165398d2415c0794ac1fa8c">FSMPrivateVars::nextState</a></div><div class="ttdeci">int nextState</div><div class="ttdef"><b>Definition</b> FSM_private.h:51</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_a4cc735365b8c3946ff83d1984e2565fe"><div class="ttname"><a href="struct_f_s_m_private_vars.html#a4cc735365b8c3946ff83d1984e2565fe">FSMPrivateVars::defaultState</a></div><div class="ttdeci">int defaultState</div><div class="ttdef"><b>Definition</b> FSM_private.h:48</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_a71ba0d8bee3f15ed5a0dd92dda0e0ed1"><div class="ttname"><a href="struct_f_s_m_private_vars.html#a71ba0d8bee3f15ed5a0dd92dda0e0ed1">FSMPrivateVars::preloader</a></div><div class="ttdeci">FSMDataLoader preloader</div><div class="ttdef"><b>Definition</b> FSM_private.h:59</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_a9f8a355881f1e3e990987090e6e9e37c"><div class="ttname"><a href="struct_f_s_m_private_vars.html#a9f8a355881f1e3e990987090e6e9e37c">FSMPrivateVars::numState</a></div><div class="ttdeci">int numState</div><div class="ttdef"><b>Definition</b> FSM_private.h:47</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_ab14d89d4db1639abfab4a24f05cca6a7"><div class="ttname"><a href="struct_f_s_m_private_vars.html#ab14d89d4db1639abfab4a24f05cca6a7">FSMPrivateVars::index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition</b> FSM_private.h:52</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_ac66fa0241dc6aa44e48e6b16811a8091"><div class="ttname"><a href="struct_f_s_m_private_vars.html#ac66fa0241dc6aa44e48e6b16811a8091">FSMPrivateVars::numChild</a></div><div class="ttdeci">int numChild</div><div class="ttdef"><b>Definition</b> FSM_private.h:56</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_ad20548555264a67dac6b18b757e01821"><div class="ttname"><a href="struct_f_s_m_private_vars.html#ad20548555264a67dac6b18b757e01821">FSMPrivateVars::childFSM</a></div><div class="ttdeci">FSM ** childFSM</div><div class="ttdef"><b>Definition</b> FSM_private.h:57</div></div>
<div class="ttc" id="astruct_f_s_m_signals_html"><div class="ttname"><a href="struct_f_s_m_signals.html">FSMSignals</a></div><div class="ttdoc">状态机用的信号protected子类可以访问</div><div class="ttdef"><b>Definition</b> FSM_protected.h:86</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_80fe18a48ef62b4daee0a25030c2866c.html">baseFSM</a></li><li class="navelem"><a class="el" href="_f_s_m__private_8h.html">FSM_private.h</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,246 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/baseFSM/FSM_protected.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('_f_s_m__protected_8h.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">FSM_protected.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>状态机框架的protected函数和变量在继承的子类中可使用在外界不可使用
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_f_s_m__public_8h_source.html">FSM_public.h</a>&quot;</code><br />
</div>
<p><a href="_f_s_m__protected_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_f_s_m_handler.html">FSMHandler</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">状态处理函数集合,全部需要子类重新填充内容 <a href="struct_f_s_m_handler.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_f_s_m_signals.html">FSMSignals</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">状态机用的信号protected子类可以访问 <a href="struct_f_s_m_signals.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_f_s_m_pure_vtbl.html">FSMPureVtbl</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">纯虚函数,子类必须重新实现,父类构造函数不会初始化 <a href="struct_f_s_m_pure_vtbl.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:addd5868b6424b70247fe4c8e5b7af29e" id="r_addd5868b6424b70247fe4c8e5b7af29e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#addd5868b6424b70247fe4c8e5b7af29e">Idle_Signal</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:addd5868b6424b70247fe4c8e5b7af29e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a19064d5985c08b2ebbdfe2b27c6986ba" id="r_a19064d5985c08b2ebbdfe2b27c6986ba"><td class="memItemLeft" align="right" valign="top">typedef struct FSMHandler&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a19064d5985c08b2ebbdfe2b27c6986ba">FSMHandler</a></td></tr>
<tr class="memdesc:a19064d5985c08b2ebbdfe2b27c6986ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">状态处理函数集合,全部需要子类重新填充内容 <br /></td></tr>
<tr class="separator:a19064d5985c08b2ebbdfe2b27c6986ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8470b4675b81ea69519ae6222c77e3f" id="r_aa8470b4675b81ea69519ae6222c77e3f"><td class="memItemLeft" align="right" valign="top">typedef struct FSMSignals&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa8470b4675b81ea69519ae6222c77e3f">FSMSignals</a></td></tr>
<tr class="memdesc:aa8470b4675b81ea69519ae6222c77e3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">状态机用的信号protected子类可以访问 <br /></td></tr>
<tr class="separator:aa8470b4675b81ea69519ae6222c77e3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cfbf21b07540615b7ac4ea49a60b037" id="r_a5cfbf21b07540615b7ac4ea49a60b037"><td class="memItemLeft" align="right" valign="top"><a id="a5cfbf21b07540615b7ac4ea49a60b037" name="a5cfbf21b07540615b7ac4ea49a60b037"></a>
typedef struct FSMPureVtbl&#160;</td><td class="memItemRight" valign="bottom"><b>FSMPureVtbl</b></td></tr>
<tr class="memdesc:a5cfbf21b07540615b7ac4ea49a60b037"><td class="mdescLeft">&#160;</td><td class="mdescRight">纯虚函数,子类必须重新实现,父类构造函数不会初始化 <br /></td></tr>
<tr class="separator:a5cfbf21b07540615b7ac4ea49a60b037"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a9bab0f8eedb805136ee573eac09b6ebb" id="r_a9bab0f8eedb805136ee573eac09b6ebb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9bab0f8eedb805136ee573eac09b6ebb">stepBaseFSM</a> (FSM *pFSM)</td></tr>
<tr class="memdesc:a9bab0f8eedb805136ee573eac09b6ebb"><td class="mdescLeft">&#160;</td><td class="mdescRight">运行状态机,状态机框架的核心函数 <br /></td></tr>
<tr class="separator:a9bab0f8eedb805136ee573eac09b6ebb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>状态机框架的protected函数和变量在继承的子类中可使用在外界不可使用 </p>
<dl class="section author"><dt>Author</dt><dd>天神 (<a href="#" onclick="location.href='mai'+'lto:'+'dal'+'ao'+'shi'+'@s'+'tu.'+'xj'+'tu.'+'ed'+'u.c'+'n'; return false;">dalao<span class="obfuscator">.nosp@m.</span>shi@<span class="obfuscator">.nosp@m.</span>stu.x<span class="obfuscator">.nosp@m.</span>jtu.<span class="obfuscator">.nosp@m.</span>edu.c<span class="obfuscator">.nosp@m.</span>n</a>) </dd></dl>
<dl class="section version"><dt>Version</dt><dd>2.1 </dd></dl>
<dl class="section date"><dt>Date</dt><dd>2024-05-07</dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>天神创意无限公司 2024 </dd></dl>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="addd5868b6424b70247fe4c8e5b7af29e" name="addd5868b6424b70247fe4c8e5b7af29e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#addd5868b6424b70247fe4c8e5b7af29e">&#9670;&#160;</a></span>Idle_Signal</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define Idle_Signal&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
<p>清空上次触发信号,占用第一个信号位 </p>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="a19064d5985c08b2ebbdfe2b27c6986ba" name="a19064d5985c08b2ebbdfe2b27c6986ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19064d5985c08b2ebbdfe2b27c6986ba">&#9670;&#160;</a></span>FSMHandler</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct FSMHandler FSMHandler</td>
</tr>
</table>
</div><div class="memdoc">
<p>状态处理函数集合,全部需要子类重新填充内容 </p>
<p>这个结构体是私有变量子状态机和外界都不该访问。但是写在FSM_protect.h文件这样方便在子类中添加函数。不然添加函数得再写个函数添加 有点麻烦 </p>
</div>
</div>
<a id="aa8470b4675b81ea69519ae6222c77e3f" name="aa8470b4675b81ea69519ae6222c77e3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8470b4675b81ea69519ae6222c77e3f">&#9670;&#160;</a></span>FSMSignals</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct FSMSignals FSMSignals</td>
</tr>
</table>
</div><div class="memdoc">
<p>状态机用的信号protected子类可以访问 </p>
<p>外部只能通过SetSignal函数对信号进行设置在状态机运行时会根据信号清除函数清除信号。信号 利用位进行存储,每个位代表一个信号,通过移位操作设置和清除信号。 </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a9bab0f8eedb805136ee573eac09b6ebb" name="a9bab0f8eedb805136ee573eac09b6ebb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bab0f8eedb805136ee573eac09b6ebb">&#9670;&#160;</a></span>stepBaseFSM()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void stepBaseFSM </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>运行状态机,状态机框架的核心函数 </p>
<p>共分为三部首先判断是否有状态机切换, </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td>状态机基类指针 </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_80fe18a48ef62b4daee0a25030c2866c.html">baseFSM</a></li><li class="navelem"><a class="el" href="_f_s_m__protected_8h.html">FSM_protected.h</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,11 @@
var _f_s_m__protected_8h =
[
[ "FSMHandler", "struct_f_s_m_handler.html", "struct_f_s_m_handler" ],
[ "FSMSignals", "struct_f_s_m_signals.html", "struct_f_s_m_signals" ],
[ "FSMPureVtbl", "struct_f_s_m_pure_vtbl.html", "struct_f_s_m_pure_vtbl" ],
[ "Idle_Signal", "_f_s_m__protected_8h.html#addd5868b6424b70247fe4c8e5b7af29e", null ],
[ "FSMHandler", "_f_s_m__protected_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba", null ],
[ "FSMSignals", "_f_s_m__protected_8h.html#aa8470b4675b81ea69519ae6222c77e3f", null ],
[ "FSMPureVtbl", "_f_s_m__protected_8h.html#a5cfbf21b07540615b7ac4ea49a60b037", null ],
[ "stepBaseFSM", "_f_s_m__protected_8h.html#a9bab0f8eedb805136ee573eac09b6ebb", null ]
];

View File

@ -0,0 +1,269 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/baseFSM/FSM_protected.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('_f_s_m__protected_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">FSM_protected.h</div></div>
</div><!--header-->
<div class="contents">
<a href="_f_s_m__protected_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#ifndef __FSM_PROTECTED_H_</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#define __FSM_PROTECTED_H_</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="_f_s_m__public_8h.html">FSM_public.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">// #define DSP28377</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#ifdef DSP28377</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor"> #define NDEBUG</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor"> #define FSM_LOG_ON</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor">#ifdef FSM_LOG_ON</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor"> #define FSM_LOG(...) printf(__VA_ARGS__)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor"> #define FSM_LOG(...) ((void)0)</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#define during during</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#define enter enter</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#define exit exit</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#define selectNextStateFcn(curstate) curstate##_##selectNextState</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#define transitionHandler(curstate, nextstate) curstate##2##nextstate##Handler</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#define actionFcn(action, curstate) curstate##_##action##Action</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor">#define index(curstate, nextstate) (curstate*Count_State + nextstate)</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="preprocessor">#define addSelectNextStateFcn(curstate) fcns-&gt;selectNextState[curstate] = (Avoid_WARNING_SelectNextState)selectNextStateFcn(curstate)</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="preprocessor">#define addStateActionFcn(type, state) fcns-&gt;type##ActionTable[state] = (Avoid_WARNING_State_Fcns)actionFcn(type, state)</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="preprocessor">#define addTransitionHandler(curstate, nextstate) fcns-&gt;transitionTable[index(curstate, nextstate)] = (Avoid_WARNING_Transition_Handler)transitionHandler(curstate, nextstate)</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="_f_s_m__protected_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba"> 46</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_f_s_m_handler.html">FSMHandler</a> <a class="code hl_struct" href="struct_f_s_m_handler.html">FSMHandler</a>;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="keyword">typedef</span> <span class="keyword">struct </span>FSM FSM;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="_f_s_m__protected_8h.html#aa8470b4675b81ea69519ae6222c77e3f"> 48</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a> <a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a>;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a> <a class="code hl_struct" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a>;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="keyword">typedef</span> void (*Avoid_WARNING_State_Fcns)(<span class="keywordtype">void</span> *data, FSM **<a class="code hl_variable" href="struct_f_s_m_private_vars.html#ad20548555264a67dac6b18b757e01821">childFSM</a>);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="keyword">typedef</span> void (*Avoid_WARNING_General_Handlers)(<span class="keywordtype">void</span> *data);</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="keyword">typedef</span> void (*Avoid_WARNING_Transition_Handler)(<span class="keywordtype">void</span> *data);</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="keyword">typedef</span> void (*Avoid_WARNING_Overrider_Fcns)(FSM *pFSM);</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="keyword">typedef</span> void (*Avoid_WARNING_ResetSignals_Fcns)(<a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a>* signals, <span class="keywordtype">void</span> *);</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="keyword">typedef</span> void (*Avoid_WARNING_loadData_Fcns)(<span class="keywordtype">void</span>*);</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="keyword">typedef</span> int (*Avoid_WARNING_SelectNextState)(<span class="keywordtype">void</span> *data, <a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a>* signals);</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="keyword">typedef</span> void (*Avoid_WARNING_void_fcns)(<a class="code hl_struct" href="struct_f_s_m_handler.html">FSMHandler</a> *<a class="code hl_variable" href="struct_f_s_m_private_vars.html#a38fc9622245dd2e2272d0511a603db69">fcns</a>);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="foldopen" id="foldopen00067" data-start="{" data-end="};">
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="struct_f_s_m_handler.html"> 67</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_f_s_m_handler.html">FSMHandler</a>{</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="struct_f_s_m_handler.html#a934ff7d1a2f7714694b8a2927b5f8451"> 68</a></span> int (**<a class="code hl_variable" href="struct_f_s_m_handler.html#a934ff7d1a2f7714694b8a2927b5f8451">selectNextState</a>)(<span class="keywordtype">void</span> *data, <a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a>* signals); </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="struct_f_s_m_handler.html#ac3b9fc077f8ba0368e8cba02a890aa2f"> 70</a></span> void (**<a class="code hl_variable" href="struct_f_s_m_handler.html#ac3b9fc077f8ba0368e8cba02a890aa2f">transitionTable</a>)(<span class="keywordtype">void</span> *data); </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="struct_f_s_m_handler.html#ab199071e132b4409d71883155e6b81f2"> 71</a></span> void (*<a class="code hl_variable" href="struct_f_s_m_handler.html#ab199071e132b4409d71883155e6b81f2">transitionGeneralAction</a>)(<span class="keywordtype">void</span> *data); </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="struct_f_s_m_handler.html#aa733ab89a48f8a63b4afb623b4d6be90"> 73</a></span> void (**<a class="code hl_variable" href="struct_f_s_m_handler.html#aa733ab89a48f8a63b4afb623b4d6be90">enterActionTable</a>)(<span class="keywordtype">void</span> *data, FSM **cFSM); </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="struct_f_s_m_handler.html#ad3506a53c3ee76655a117f7db0da7d3d"> 74</a></span> void (**<a class="code hl_variable" href="struct_f_s_m_handler.html#ad3506a53c3ee76655a117f7db0da7d3d">duringActionTable</a>)(<span class="keywordtype">void</span> *data, FSM **cFSM); </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="struct_f_s_m_handler.html#a04721875a9baabc8a51c54a668db9a2c"> 75</a></span> void (**<a class="code hl_variable" href="struct_f_s_m_handler.html#a04721875a9baabc8a51c54a668db9a2c">exitActionTable</a>)(<span class="keywordtype">void</span> *data, FSM **cFSM); </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="struct_f_s_m_handler.html#a976b4147d1c0c9aeb4a61c3cc85376bf"> 77</a></span> void (**<a class="code hl_variable" href="struct_f_s_m_handler.html#a976b4147d1c0c9aeb4a61c3cc85376bf">childFSMStepTable</a>)(FSM **cFSM); </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span>}<a class="code hl_typedef" href="_f_s_m__protected_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba">FSMHandler</a>;</div>
</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="foldopen" id="foldopen00085" data-start="{" data-end="};">
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="struct_f_s_m_signals.html"> 85</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span>{</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="struct_f_s_m_signals.html#a9586b8cdc522f49e9bc62d2b67a1d79b"> 87</a></span> Uint16 <a class="code hl_variable" href="struct_f_s_m_signals.html#a9586b8cdc522f49e9bc62d2b67a1d79b">all</a>; </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="struct_f_s_m_signals.html#a0ed78b85dbee15c4928fc85546eaa10d"> 88</a></span> Uint16 <a class="code hl_variable" href="struct_f_s_m_signals.html#a0ed78b85dbee15c4928fc85546eaa10d">lastTriggeredSignal</a>; </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span>}<a class="code hl_typedef" href="_f_s_m__protected_8h.html#aa8470b4675b81ea69519ae6222c77e3f">FSMSignals</a>;</div>
</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="_f_s_m__protected_8h.html#addd5868b6424b70247fe4c8e5b7af29e"> 90</a></span><span class="preprocessor">#define Idle_Signal 0 </span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment">/* 纯虚函数,子类必须重新实现,父类构造函数不会初始化 */</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="foldopen" id="foldopen00100" data-start="{" data-end="};">
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="struct_f_s_m_pure_vtbl.html"> 100</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_f_s_m_pure_vtbl.html">FSMPureVtbl</a> {</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// 状态机控制</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="struct_f_s_m_pure_vtbl.html#a5fe3628ecfac4830ad9f64b1439fe57d"> 102</a></span> void (*<a class="code hl_variable" href="struct_f_s_m_pure_vtbl.html#a5fe3628ecfac4830ad9f64b1439fe57d">setupHandler</a>)(<a class="code hl_struct" href="struct_f_s_m_handler.html">FSMHandler</a> *fcns); </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="struct_f_s_m_pure_vtbl.html#a24fea698707e18e2d84385bfca118db1"> 104</a></span> void (*<a class="code hl_variable" href="struct_f_s_m_pure_vtbl.html#a24fea698707e18e2d84385bfca118db1">initData</a>)(FSM *pFSM); </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="struct_f_s_m_pure_vtbl.html#a4973df3b86e460a458c9edf4699aa68d"> 105</a></span> void (*<a class="code hl_variable" href="struct_f_s_m_pure_vtbl.html#a4973df3b86e460a458c9edf4699aa68d">loadExternalData</a>)(<span class="keywordtype">void</span> *extData); </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="struct_f_s_m_pure_vtbl.html#aebfd1efad93210ac02249a81159d1472"> 107</a></span> void (*<a class="code hl_variable" href="struct_f_s_m_pure_vtbl.html#aebfd1efad93210ac02249a81159d1472">initDataLoader</a>)(FSM *pFSM); </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="struct_f_s_m_pure_vtbl.html#a58c666f5941e07c4a6ef054f1250dbd8"> 109</a></span> void (*<a class="code hl_variable" href="struct_f_s_m_pure_vtbl.html#a58c666f5941e07c4a6ef054f1250dbd8">initSignals</a>)(FSM *pFSM); </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="struct_f_s_m_pure_vtbl.html#ae326d855d6a29d089f312d965bf032f2"> 110</a></span> void (*<a class="code hl_variable" href="struct_f_s_m_pure_vtbl.html#ae326d855d6a29d089f312d965bf032f2">resetSignals</a>)(<a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a> *signals, <span class="keywordtype">void</span> *data); </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="_f_s_m__protected_8h.html#a5cfbf21b07540615b7ac4ea49a60b037"> 111</a></span>}<a class="code hl_typedef" href="_f_s_m__protected_8h.html#a5cfbf21b07540615b7ac4ea49a60b037">FSMPureVtbl</a>;</div>
</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="comment">/* 基类定义,纯虚类 */</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="keyword">typedef</span> <span class="keyword">struct </span>FSM</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span>{</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> FSMPublicFcns publicFcns;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// protected</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <a class="code hl_struct" href="struct_f_s_m_pure_vtbl.html">FSMPureVtbl</a> pureVtbl;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordtype">void</span> *data;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a> signals;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// private</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <a class="code hl_struct" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a>* privateVars; </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span>} FSM;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment">/* protected函数子类能用外界用不了 */</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="keywordtype">void</span> <a class="code hl_function" href="_f_s_m__protected_8h.html#a9bab0f8eedb805136ee573eac09b6ebb">stepBaseFSM</a>(FSM *pFSM);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="keywordtype">void</span> constructFSM(FSM* pFSM);</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span>FSM* newBaseFSM(<span class="keywordtype">int</span> numState, <span class="keywordtype">int</span> defaultState);</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="keywordtype">void</span> resetBaseFSM(FSM *pFSM);</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment">/* 内联函数 */</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> clearSignal(<a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a> *signals, Uint16 signalFlag){</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> signals-&gt;<a class="code hl_variable" href="struct_f_s_m_signals.html#a9586b8cdc522f49e9bc62d2b67a1d79b">all</a> &amp;= ~(1 &lt;&lt; signalFlag);</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span>}</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="keyword">static</span> <span class="keyword">inline</span> Uint16 getSignal(<a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a> *signals, Uint16 signalFlag){</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">return</span> (signals-&gt;<a class="code hl_variable" href="struct_f_s_m_signals.html#a9586b8cdc522f49e9bc62d2b67a1d79b">all</a> &gt;&gt; signalFlag) &amp; 1;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span>}</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> clearAllSignals(<a class="code hl_struct" href="struct_f_s_m_signals.html">FSMSignals</a> *signals){</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> signals-&gt;<a class="code hl_variable" href="struct_f_s_m_signals.html#a9586b8cdc522f49e9bc62d2b67a1d79b">all</a> = 0;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span>}</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="a_f_s_m__protected_8h_html_a19064d5985c08b2ebbdfe2b27c6986ba"><div class="ttname"><a href="_f_s_m__protected_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba">FSMHandler</a></div><div class="ttdeci">struct FSMHandler FSMHandler</div><div class="ttdoc">状态处理函数集合,全部需要子类重新填充内容</div><div class="ttdef"><b>Definition</b> FSM_protected.h:46</div></div>
<div class="ttc" id="a_f_s_m__protected_8h_html_a5cfbf21b07540615b7ac4ea49a60b037"><div class="ttname"><a href="_f_s_m__protected_8h.html#a5cfbf21b07540615b7ac4ea49a60b037">FSMPureVtbl</a></div><div class="ttdeci">struct FSMPureVtbl FSMPureVtbl</div><div class="ttdoc">纯虚函数,子类必须重新实现,父类构造函数不会初始化</div></div>
<div class="ttc" id="a_f_s_m__protected_8h_html_a9bab0f8eedb805136ee573eac09b6ebb"><div class="ttname"><a href="_f_s_m__protected_8h.html#a9bab0f8eedb805136ee573eac09b6ebb">stepBaseFSM</a></div><div class="ttdeci">void stepBaseFSM(FSM *pFSM)</div><div class="ttdoc">运行状态机,状态机框架的核心函数</div><div class="ttdef"><b>Definition</b> FSM.c:78</div></div>
<div class="ttc" id="a_f_s_m__protected_8h_html_aa8470b4675b81ea69519ae6222c77e3f"><div class="ttname"><a href="_f_s_m__protected_8h.html#aa8470b4675b81ea69519ae6222c77e3f">FSMSignals</a></div><div class="ttdeci">struct FSMSignals FSMSignals</div><div class="ttdoc">状态机用的信号protected子类可以访问</div><div class="ttdef"><b>Definition</b> FSM_protected.h:48</div></div>
<div class="ttc" id="a_f_s_m__public_8h_html"><div class="ttname"><a href="_f_s_m__public_8h.html">FSM_public.h</a></div></div>
<div class="ttc" id="astruct_f_s_m_handler_html"><div class="ttname"><a href="struct_f_s_m_handler.html">FSMHandler</a></div><div class="ttdoc">状态处理函数集合,全部需要子类重新填充内容</div><div class="ttdef"><b>Definition</b> FSM_protected.h:67</div></div>
<div class="ttc" id="astruct_f_s_m_handler_html_a04721875a9baabc8a51c54a668db9a2c"><div class="ttname"><a href="struct_f_s_m_handler.html#a04721875a9baabc8a51c54a668db9a2c">FSMHandler::exitActionTable</a></div><div class="ttdeci">void(** exitActionTable)(void *data, FSM **cFSM)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:75</div></div>
<div class="ttc" id="astruct_f_s_m_handler_html_a934ff7d1a2f7714694b8a2927b5f8451"><div class="ttname"><a href="struct_f_s_m_handler.html#a934ff7d1a2f7714694b8a2927b5f8451">FSMHandler::selectNextState</a></div><div class="ttdeci">int(** selectNextState)(void *data, FSMSignals *signals)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:68</div></div>
<div class="ttc" id="astruct_f_s_m_handler_html_a976b4147d1c0c9aeb4a61c3cc85376bf"><div class="ttname"><a href="struct_f_s_m_handler.html#a976b4147d1c0c9aeb4a61c3cc85376bf">FSMHandler::childFSMStepTable</a></div><div class="ttdeci">void(** childFSMStepTable)(FSM **cFSM)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:77</div></div>
<div class="ttc" id="astruct_f_s_m_handler_html_aa733ab89a48f8a63b4afb623b4d6be90"><div class="ttname"><a href="struct_f_s_m_handler.html#aa733ab89a48f8a63b4afb623b4d6be90">FSMHandler::enterActionTable</a></div><div class="ttdeci">void(** enterActionTable)(void *data, FSM **cFSM)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:73</div></div>
<div class="ttc" id="astruct_f_s_m_handler_html_ab199071e132b4409d71883155e6b81f2"><div class="ttname"><a href="struct_f_s_m_handler.html#ab199071e132b4409d71883155e6b81f2">FSMHandler::transitionGeneralAction</a></div><div class="ttdeci">void(* transitionGeneralAction)(void *data)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:71</div></div>
<div class="ttc" id="astruct_f_s_m_handler_html_ac3b9fc077f8ba0368e8cba02a890aa2f"><div class="ttname"><a href="struct_f_s_m_handler.html#ac3b9fc077f8ba0368e8cba02a890aa2f">FSMHandler::transitionTable</a></div><div class="ttdeci">void(** transitionTable)(void *data)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:70</div></div>
<div class="ttc" id="astruct_f_s_m_handler_html_ad3506a53c3ee76655a117f7db0da7d3d"><div class="ttname"><a href="struct_f_s_m_handler.html#ad3506a53c3ee76655a117f7db0da7d3d">FSMHandler::duringActionTable</a></div><div class="ttdeci">void(** duringActionTable)(void *data, FSM **cFSM)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:74</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html"><div class="ttname"><a href="struct_f_s_m_private_vars.html">FSMPrivateVars</a></div><div class="ttdoc">基类状态机的私有变量和函数,子类不可直接访问</div><div class="ttdef"><b>Definition</b> FSM_private.h:46</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_a38fc9622245dd2e2272d0511a603db69"><div class="ttname"><a href="struct_f_s_m_private_vars.html#a38fc9622245dd2e2272d0511a603db69">FSMPrivateVars::fcns</a></div><div class="ttdeci">FSMHandler fcns</div><div class="ttdef"><b>Definition</b> FSM_private.h:54</div></div>
<div class="ttc" id="astruct_f_s_m_private_vars_html_ad20548555264a67dac6b18b757e01821"><div class="ttname"><a href="struct_f_s_m_private_vars.html#ad20548555264a67dac6b18b757e01821">FSMPrivateVars::childFSM</a></div><div class="ttdeci">FSM ** childFSM</div><div class="ttdef"><b>Definition</b> FSM_private.h:57</div></div>
<div class="ttc" id="astruct_f_s_m_pure_vtbl_html"><div class="ttname"><a href="struct_f_s_m_pure_vtbl.html">FSMPureVtbl</a></div><div class="ttdoc">纯虚函数,子类必须重新实现,父类构造函数不会初始化</div><div class="ttdef"><b>Definition</b> FSM_protected.h:100</div></div>
<div class="ttc" id="astruct_f_s_m_pure_vtbl_html_a24fea698707e18e2d84385bfca118db1"><div class="ttname"><a href="struct_f_s_m_pure_vtbl.html#a24fea698707e18e2d84385bfca118db1">FSMPureVtbl::initData</a></div><div class="ttdeci">void(* initData)(FSM *pFSM)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:104</div></div>
<div class="ttc" id="astruct_f_s_m_pure_vtbl_html_a4973df3b86e460a458c9edf4699aa68d"><div class="ttname"><a href="struct_f_s_m_pure_vtbl.html#a4973df3b86e460a458c9edf4699aa68d">FSMPureVtbl::loadExternalData</a></div><div class="ttdeci">void(* loadExternalData)(void *extData)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:105</div></div>
<div class="ttc" id="astruct_f_s_m_pure_vtbl_html_a58c666f5941e07c4a6ef054f1250dbd8"><div class="ttname"><a href="struct_f_s_m_pure_vtbl.html#a58c666f5941e07c4a6ef054f1250dbd8">FSMPureVtbl::initSignals</a></div><div class="ttdeci">void(* initSignals)(FSM *pFSM)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:109</div></div>
<div class="ttc" id="astruct_f_s_m_pure_vtbl_html_a5fe3628ecfac4830ad9f64b1439fe57d"><div class="ttname"><a href="struct_f_s_m_pure_vtbl.html#a5fe3628ecfac4830ad9f64b1439fe57d">FSMPureVtbl::setupHandler</a></div><div class="ttdeci">void(* setupHandler)(FSMHandler *fcns)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:102</div></div>
<div class="ttc" id="astruct_f_s_m_pure_vtbl_html_ae326d855d6a29d089f312d965bf032f2"><div class="ttname"><a href="struct_f_s_m_pure_vtbl.html#ae326d855d6a29d089f312d965bf032f2">FSMPureVtbl::resetSignals</a></div><div class="ttdeci">void(* resetSignals)(FSMSignals *signals, void *data)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:110</div></div>
<div class="ttc" id="astruct_f_s_m_pure_vtbl_html_aebfd1efad93210ac02249a81159d1472"><div class="ttname"><a href="struct_f_s_m_pure_vtbl.html#aebfd1efad93210ac02249a81159d1472">FSMPureVtbl::initDataLoader</a></div><div class="ttdeci">void(* initDataLoader)(FSM *pFSM)</div><div class="ttdef"><b>Definition</b> FSM_protected.h:107</div></div>
<div class="ttc" id="astruct_f_s_m_signals_html"><div class="ttname"><a href="struct_f_s_m_signals.html">FSMSignals</a></div><div class="ttdoc">状态机用的信号protected子类可以访问</div><div class="ttdef"><b>Definition</b> FSM_protected.h:86</div></div>
<div class="ttc" id="astruct_f_s_m_signals_html_a0ed78b85dbee15c4928fc85546eaa10d"><div class="ttname"><a href="struct_f_s_m_signals.html#a0ed78b85dbee15c4928fc85546eaa10d">FSMSignals::lastTriggeredSignal</a></div><div class="ttdeci">Uint16 lastTriggeredSignal</div><div class="ttdef"><b>Definition</b> FSM_protected.h:88</div></div>
<div class="ttc" id="astruct_f_s_m_signals_html_a9586b8cdc522f49e9bc62d2b67a1d79b"><div class="ttname"><a href="struct_f_s_m_signals.html#a9586b8cdc522f49e9bc62d2b67a1d79b">FSMSignals::all</a></div><div class="ttdeci">Uint16 all</div><div class="ttdef"><b>Definition</b> FSM_protected.h:87</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_80fe18a48ef62b4daee0a25030c2866c.html">baseFSM</a></li><li class="navelem"><a class="el" href="_f_s_m__protected_8h.html">FSM_protected.h</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,364 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/baseFSM/FSM_public.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('_f_s_m__public_8h.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">FSM_public.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a href="_f_s_m__public_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a6cea0d8653df195e4325754c662be6a4" id="r_a6cea0d8653df195e4325754c662be6a4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6cea0d8653df195e4325754c662be6a4">Step</a>(pFSM)&#160;&#160;&#160;_stepFSM((FSM *)pFSM)</td></tr>
<tr class="separator:a6cea0d8653df195e4325754c662be6a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a336c6a01ee8af1e00bd175553788ec63" id="r_a336c6a01ee8af1e00bd175553788ec63"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a336c6a01ee8af1e00bd175553788ec63">GetData</a>(pFSM)&#160;&#160;&#160;_getData((FSM*)pFSM)</td></tr>
<tr class="separator:a336c6a01ee8af1e00bd175553788ec63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee4d6cf9b551102cbb7cb2f3e1e65377" id="r_aee4d6cf9b551102cbb7cb2f3e1e65377"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aee4d6cf9b551102cbb7cb2f3e1e65377">SetSignal</a>(pFSM, signal)&#160;&#160;&#160;_setSignal((FSM*)pFSM, signal)</td></tr>
<tr class="separator:aee4d6cf9b551102cbb7cb2f3e1e65377"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4b1ff528d718db75faeba03a845fe46" id="r_aa4b1ff528d718db75faeba03a845fe46"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa4b1ff528d718db75faeba03a845fe46">PreloaderGetReady</a>(pFSM)&#160;&#160;&#160;<a class="el" href="_f_s_m_8c.html#a6e2a8d16f390efeaecc8938ec8f2e728">_preloaderGetReady</a>((FSM *)pFSM);</td></tr>
<tr class="separator:aa4b1ff528d718db75faeba03a845fe46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef66ec3c44c151b23fbc98c10c514d32" id="r_aef66ec3c44c151b23fbc98c10c514d32"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aef66ec3c44c151b23fbc98c10c514d32">GetPreloaderOverFlag</a>(pFSM)&#160;&#160;&#160;<a class="el" href="_f_s_m_8c.html#a704103961964dbb8582b59fd161a3348">_getPreloaderOverFlag</a>((FSM *)pFSM)</td></tr>
<tr class="separator:aef66ec3c44c151b23fbc98c10c514d32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac11e3ebda7ba02fc42ac5de33fcfd148" id="r_ac11e3ebda7ba02fc42ac5de33fcfd148"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac11e3ebda7ba02fc42ac5de33fcfd148">ClearPreloaderOverFlag</a>(pFSM)&#160;&#160;&#160;<a class="el" href="_f_s_m_8c.html#aad909acd21e17b8073d5d9dfb8892ccb">_clearPreloaderOverFlag</a>((FSM *)pFSM)</td></tr>
<tr class="separator:ac11e3ebda7ba02fc42ac5de33fcfd148"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a9c285ac5bbad90b0b04de18d393cf4ce" id="r_a9c285ac5bbad90b0b04de18d393cf4ce"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9c285ac5bbad90b0b04de18d393cf4ce">_preloadIn</a> (FSM *pFSM)</td></tr>
<tr class="separator:a9c285ac5bbad90b0b04de18d393cf4ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e2a8d16f390efeaecc8938ec8f2e728" id="r_a6e2a8d16f390efeaecc8938ec8f2e728"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6e2a8d16f390efeaecc8938ec8f2e728">_preloaderGetReady</a> (FSM *pFSM)</td></tr>
<tr class="separator:a6e2a8d16f390efeaecc8938ec8f2e728"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a704103961964dbb8582b59fd161a3348" id="r_a704103961964dbb8582b59fd161a3348"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a704103961964dbb8582b59fd161a3348">_getPreloaderOverFlag</a> (FSM *pFSM)</td></tr>
<tr class="separator:a704103961964dbb8582b59fd161a3348"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad909acd21e17b8073d5d9dfb8892ccb" id="r_aad909acd21e17b8073d5d9dfb8892ccb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aad909acd21e17b8073d5d9dfb8892ccb">_clearPreloaderOverFlag</a> (FSM *pFSM)</td></tr>
<tr class="separator:aad909acd21e17b8073d5d9dfb8892ccb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><dl class="section author"><dt>Author</dt><dd>天神 (<a href="#" onclick="location.href='mai'+'lto:'+'dal'+'ao'+'shi'+'@s'+'tu.'+'xj'+'tu.'+'ed'+'u.c'+'n'; return false;">dalao<span class="obfuscator">.nosp@m.</span>shi@<span class="obfuscator">.nosp@m.</span>stu.x<span class="obfuscator">.nosp@m.</span>jtu.<span class="obfuscator">.nosp@m.</span>edu.c<span class="obfuscator">.nosp@m.</span>n</a>) </dd></dl>
<dl class="section version"><dt>Version</dt><dd>2.1 </dd></dl>
<dl class="section date"><dt>Date</dt><dd>2024-05-07</dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>天神创意无限公司 2024 </dd></dl>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a6cea0d8653df195e4325754c662be6a4" name="a6cea0d8653df195e4325754c662be6a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6cea0d8653df195e4325754c662be6a4">&#9670;&#160;</a></span>Step</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define Step</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname">pFSM</span></td><td>)</td>
<td>&#160;&#160;&#160;_stepFSM((FSM *)pFSM)</td>
</tr>
</table>
</div><div class="memdoc">
<p>外界调用这个 </p>
</div>
</div>
<a id="a336c6a01ee8af1e00bd175553788ec63" name="a336c6a01ee8af1e00bd175553788ec63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a336c6a01ee8af1e00bd175553788ec63">&#9670;&#160;</a></span>GetData</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define GetData</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname">pFSM</span></td><td>)</td>
<td>&#160;&#160;&#160;_getData((FSM*)pFSM)</td>
</tr>
</table>
</div><div class="memdoc">
<p>外界调用这个 </p>
</div>
</div>
<a id="aee4d6cf9b551102cbb7cb2f3e1e65377" name="aee4d6cf9b551102cbb7cb2f3e1e65377"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee4d6cf9b551102cbb7cb2f3e1e65377">&#9670;&#160;</a></span>SetSignal</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SetSignal</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname">pFSM, </span></td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname">signal</span>&#160;)&#160;&#160;&#160;_setSignal((FSM*)pFSM, signal)</td>
</tr>
</table>
</div><div class="memdoc">
<p>外界调用这个 </p>
</div>
</div>
<a id="aa4b1ff528d718db75faeba03a845fe46" name="aa4b1ff528d718db75faeba03a845fe46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4b1ff528d718db75faeba03a845fe46">&#9670;&#160;</a></span>PreloaderGetReady</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define PreloaderGetReady</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname">pFSM</span></td><td>)</td>
<td>&#160;&#160;&#160;<a class="el" href="_f_s_m_8c.html#a6e2a8d16f390efeaecc8938ec8f2e728">_preloaderGetReady</a>((FSM *)pFSM);</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000013">Deprecated</a></b></dt><dd></dd></dl>
</div>
</div>
<a id="aef66ec3c44c151b23fbc98c10c514d32" name="aef66ec3c44c151b23fbc98c10c514d32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef66ec3c44c151b23fbc98c10c514d32">&#9670;&#160;</a></span>GetPreloaderOverFlag</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define GetPreloaderOverFlag</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname">pFSM</span></td><td>)</td>
<td>&#160;&#160;&#160;<a class="el" href="_f_s_m_8c.html#a704103961964dbb8582b59fd161a3348">_getPreloaderOverFlag</a>((FSM *)pFSM)</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000014">Deprecated</a></b></dt><dd></dd></dl>
</div>
</div>
<a id="ac11e3ebda7ba02fc42ac5de33fcfd148" name="ac11e3ebda7ba02fc42ac5de33fcfd148"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac11e3ebda7ba02fc42ac5de33fcfd148">&#9670;&#160;</a></span>ClearPreloaderOverFlag</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ClearPreloaderOverFlag</td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname">pFSM</span></td><td>)</td>
<td>&#160;&#160;&#160;<a class="el" href="_f_s_m_8c.html#aad909acd21e17b8073d5d9dfb8892ccb">_clearPreloaderOverFlag</a>((FSM *)pFSM)</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000015">Deprecated</a></b></dt><dd></dd></dl>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a9c285ac5bbad90b0b04de18d393cf4ce" name="a9c285ac5bbad90b0b04de18d393cf4ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c285ac5bbad90b0b04de18d393cf4ce">&#9670;&#160;</a></span>_preloadIn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * _preloadIn </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated</a></b></dt><dd>弃用 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void* </dd></dl>
</div>
</div>
<a id="a6e2a8d16f390efeaecc8938ec8f2e728" name="a6e2a8d16f390efeaecc8938ec8f2e728"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e2a8d16f390efeaecc8938ec8f2e728">&#9670;&#160;</a></span>_preloaderGetReady()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void _preloaderGetReady </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000003">Deprecated</a></b></dt><dd>弃用 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a704103961964dbb8582b59fd161a3348" name="a704103961964dbb8582b59fd161a3348"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a704103961964dbb8582b59fd161a3348">&#9670;&#160;</a></span>_getPreloaderOverFlag()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int _getPreloaderOverFlag </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000004">Deprecated</a></b></dt><dd>弃用 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>int </dd></dl>
</div>
</div>
<a id="aad909acd21e17b8073d5d9dfb8892ccb" name="aad909acd21e17b8073d5d9dfb8892ccb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad909acd21e17b8073d5d9dfb8892ccb">&#9670;&#160;</a></span>_clearPreloaderOverFlag()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void _clearPreloaderOverFlag </td>
<td>(</td>
<td class="paramtype">FSM *</td> <td class="paramname"><span class="paramname"><em>pFSM</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000005">Deprecated</a></b></dt><dd>弃用 </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pFSM</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_80fe18a48ef62b4daee0a25030c2866c.html">baseFSM</a></li><li class="navelem"><a class="el" href="_f_s_m__public_8h.html">FSM_public.h</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,13 @@
var _f_s_m__public_8h =
[
[ "Step", "_f_s_m__public_8h.html#a6cea0d8653df195e4325754c662be6a4", null ],
[ "GetData", "_f_s_m__public_8h.html#a336c6a01ee8af1e00bd175553788ec63", null ],
[ "SetSignal", "_f_s_m__public_8h.html#aee4d6cf9b551102cbb7cb2f3e1e65377", null ],
[ "PreloaderGetReady", "_f_s_m__public_8h.html#aa4b1ff528d718db75faeba03a845fe46", null ],
[ "GetPreloaderOverFlag", "_f_s_m__public_8h.html#aef66ec3c44c151b23fbc98c10c514d32", null ],
[ "ClearPreloaderOverFlag", "_f_s_m__public_8h.html#ac11e3ebda7ba02fc42ac5de33fcfd148", null ],
[ "_preloadIn", "_f_s_m__public_8h.html#a9c285ac5bbad90b0b04de18d393cf4ce", null ],
[ "_preloaderGetReady", "_f_s_m__public_8h.html#a6e2a8d16f390efeaecc8938ec8f2e728", null ],
[ "_getPreloaderOverFlag", "_f_s_m__public_8h.html#a704103961964dbb8582b59fd161a3348", null ],
[ "_clearPreloaderOverFlag", "_f_s_m__public_8h.html#aad909acd21e17b8073d5d9dfb8892ccb", null ]
];

View File

@ -0,0 +1,165 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/baseFSM/FSM_public.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('_f_s_m__public_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">FSM_public.h</div></div>
</div><!--header-->
<div class="contents">
<a href="_f_s_m__public_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#ifndef __FSM_PUBLIC_H_</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#define __FSM_PUBLIC_H_</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Uint16;</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> Uint32;</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#define BASE_FSM(ptr) ((FSM *)(ptr))</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#define BASE_PTR (FSM *)</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">typedef</span> <span class="keyword">struct </span>FSM FSM;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="keyword">typedef</span> <span class="keyword">struct </span>FSMPublicFcns</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span>{</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> void (*step)(FSM *pFSM); <span class="comment">// 子类重新实现可以添加一些打印信息</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> void (*reset)(FSM *pFSM); <span class="comment">// 子类重新实现可以添加一些打印信息</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span>}FSMPublicFcns;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">/* -------------------------------- 避免警告的函数定义 ------------------------------- */</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="_f_s_m__public_8h.html#a6cea0d8653df195e4325754c662be6a4"> 30</a></span><span class="preprocessor">#define Step(pFSM) _stepFSM((FSM *)pFSM) </span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="_f_s_m__public_8h.html#a336c6a01ee8af1e00bd175553788ec63"> 31</a></span><span class="preprocessor">#define GetData(pFSM) _getData((FSM*)pFSM) </span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="_f_s_m__public_8h.html#aee4d6cf9b551102cbb7cb2f3e1e65377"> 32</a></span><span class="preprocessor">#define SetSignal(pFSM, signal) _setSignal((FSM*)pFSM, signal) </span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="_f_s_m__public_8h.html#aa4b1ff528d718db75faeba03a845fe46"> 35</a></span><span class="preprocessor">#define PreloaderGetReady(pFSM) _preloaderGetReady((FSM *)pFSM); </span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="_f_s_m__public_8h.html#aef66ec3c44c151b23fbc98c10c514d32"> 36</a></span><span class="preprocessor">#define GetPreloaderOverFlag(pFSM) _getPreloaderOverFlag((FSM *)pFSM) </span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="_f_s_m__public_8h.html#ac11e3ebda7ba02fc42ac5de33fcfd148"> 37</a></span><span class="preprocessor">#define ClearPreloaderOverFlag(pFSM) _clearPreloaderOverFlag((FSM *)pFSM) </span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="keywordtype">void</span> _stepFSM(FSM *pFSM);</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">/* --------------------------------- 状态机信息获取 -------------------------------- */</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="keywordtype">int</span> getFSMCurState(FSM *pFSM);</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="keywordtype">int</span> getFSMNextState(FSM *pFSM);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="keywordtype">void</span> setChildNum(FSM *pFSM, <span class="keywordtype">int</span> num);</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="keywordtype">void</span> registerChildFSM(FSM *parent, FSM *child, <span class="keywordtype">int</span> index);</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">/* ------------------------------ Data和Signals ------------------------------ */</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="keyword">const</span> <span class="keywordtype">void</span> *_getData(FSM* pFSM);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="keywordtype">void</span> _setSignal(FSM *pFSM, Uint16 signalFlag);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">/* ---------------------------------- 预装载器 ---------------------------------- */</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="keywordtype">void</span> *<a class="code hl_function" href="_f_s_m__public_8h.html#a9c285ac5bbad90b0b04de18d393cf4ce">_preloadIn</a>(FSM *pFSM);</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="keywordtype">void</span> <a class="code hl_function" href="_f_s_m__public_8h.html#a6e2a8d16f390efeaecc8938ec8f2e728">_preloaderGetReady</a>(FSM *pFSM);</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="keywordtype">int</span> <a class="code hl_function" href="_f_s_m__public_8h.html#a704103961964dbb8582b59fd161a3348">_getPreloaderOverFlag</a>(FSM *pFSM);</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="keywordtype">void</span> <a class="code hl_function" href="_f_s_m__public_8h.html#aad909acd21e17b8073d5d9dfb8892ccb">_clearPreloaderOverFlag</a>(FSM *pFSM);</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="a_f_s_m__public_8h_html_a6e2a8d16f390efeaecc8938ec8f2e728"><div class="ttname"><a href="_f_s_m__public_8h.html#a6e2a8d16f390efeaecc8938ec8f2e728">_preloaderGetReady</a></div><div class="ttdeci">void _preloaderGetReady(FSM *pFSM)</div><div class="ttdef"><b>Definition</b> FSM.c:179</div></div>
<div class="ttc" id="a_f_s_m__public_8h_html_a704103961964dbb8582b59fd161a3348"><div class="ttname"><a href="_f_s_m__public_8h.html#a704103961964dbb8582b59fd161a3348">_getPreloaderOverFlag</a></div><div class="ttdeci">int _getPreloaderOverFlag(FSM *pFSM)</div><div class="ttdef"><b>Definition</b> FSM.c:192</div></div>
<div class="ttc" id="a_f_s_m__public_8h_html_a9c285ac5bbad90b0b04de18d393cf4ce"><div class="ttname"><a href="_f_s_m__public_8h.html#a9c285ac5bbad90b0b04de18d393cf4ce">_preloadIn</a></div><div class="ttdeci">void * _preloadIn(FSM *pFSM)</div><div class="ttdef"><b>Definition</b> FSM.c:170</div></div>
<div class="ttc" id="a_f_s_m__public_8h_html_aad909acd21e17b8073d5d9dfb8892ccb"><div class="ttname"><a href="_f_s_m__public_8h.html#aad909acd21e17b8073d5d9dfb8892ccb">_clearPreloaderOverFlag</a></div><div class="ttdeci">void _clearPreloaderOverFlag(FSM *pFSM)</div><div class="ttdef"><b>Definition</b> FSM.c:201</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_80fe18a48ef62b4daee0a25030c2866c.html">baseFSM</a></li><li class="navelem"><a class="el" href="_f_s_m__public_8h.html">FSM_public.h</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,125 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('annotated.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">Data Structures</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_f_s_m_data_loader.html" target="_self">FSMDataLoader</a></td><td class="desc"></td></tr>
<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_f_s_m_handler.html" target="_self">FSMHandler</a></td><td class="desc">状态处理函数集合,全部需要子类重新填充内容 </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_f_s_m_private_vars.html" target="_self">FSMPrivateVars</a></td><td class="desc">基类状态机的私有变量和函数,子类不可直接访问 </td></tr>
<tr id="row_3_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_f_s_m_pure_vtbl.html" target="_self">FSMPureVtbl</a></td><td class="desc">纯虚函数,子类必须重新实现,父类构造函数不会初始化 </td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_f_s_m_signals.html" target="_self">FSMSignals</a></td><td class="desc">状态机用的信号protected子类可以访问 </td></tr>
<tr id="row_5_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_template_f_s_m_external_data.html" target="_self">TemplateFSMExternalData</a></td><td class="desc">自定义外部数据 </td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_template_f_s_m_inner_data.html" target="_self">TemplateFSMInnerData</a></td><td class="desc">自定义内部数据 </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,10 @@
var annotated_dup =
[
[ "FSMDataLoader", "struct_f_s_m_data_loader.html", null ],
[ "FSMHandler", "struct_f_s_m_handler.html", "struct_f_s_m_handler" ],
[ "FSMPrivateVars", "struct_f_s_m_private_vars.html", "struct_f_s_m_private_vars" ],
[ "FSMPureVtbl", "struct_f_s_m_pure_vtbl.html", "struct_f_s_m_pure_vtbl" ],
[ "FSMSignals", "struct_f_s_m_signals.html", "struct_f_s_m_signals" ],
[ "TemplateFSMExternalData", "struct_template_f_s_m_external_data.html", null ],
[ "TemplateFSMInnerData", "struct_template_f_s_m_inner_data.html", null ]
];

BIN
vscode/manual/html/bc_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

View File

@ -0,0 +1,132 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/childtest/childFSM.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('child_f_s_m_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">childFSM.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef __CHILD_FSM_H_</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define __CHILD_FSM_H_</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#define ChildFSM_Input(pFSM) ((ChildFSMData *)_preloadIn((FSM *)pFSM))</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span> </div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="keyword">typedef</span> <span class="keyword">struct </span>_childFSMData</div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span>{</div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> <span class="keywordtype">int</span> arrindex;</div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span>}ChildFSMData;</div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="keyword">typedef</span> <span class="keyword">struct </span>_ChildFSM ChildFSM;</div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span>ChildFSM *createChildFSM();</div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_b967bec748219e2f7c7f19a67051e0d6.html">childtest</a></li><li class="navelem"><b>childFSM.h</b></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,237 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/childtest/childFSM_private.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('child_f_s_m__private_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">childFSM_private.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef __CHILD_PRIVATE_FSM_H_</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define __CHILD_PRIVATE_FSM_H_</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &quot;<a class="code" href="_f_s_m__protected_8h.html">FSM_protected.h</a>&quot;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &quot;childFSM.h&quot;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">/* </span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> 继承基类</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> */</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="keyword">typedef</span> <span class="keyword">struct </span>_ChildFSM</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span>{ </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// 继承父类</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> FSM base;</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span>}ChildFSM;</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">/* </span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> 状态和对应的 action, exit, during 函数</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> */</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="keyword">typedef</span> <span class="keyword">enum</span> _State</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span>{</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> Idle,</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> D,</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> E,</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> Count_State,</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span>} State;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#define DEFAULT_STATE E</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="keywordtype">void</span> actionFcn(enter, D)()</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span>{</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> FSM_LOG(<span class="stringliteral">&quot; enterD &quot;</span>);</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span>}</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="keywordtype">void</span> actionFcn(during, D)()</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span>{</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> FSM_LOG(<span class="stringliteral">&quot; duringD &quot;</span>);</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span>}</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="keywordtype">void</span> actionFcn(exit, D)()</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>{</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> FSM_LOG(<span class="stringliteral">&quot; exitD &quot;</span>);</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span>}</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="keywordtype">void</span> actionFcn(enter, E)()</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>{</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> FSM_LOG(<span class="stringliteral">&quot; enterE &quot;</span>);</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>}</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="keywordtype">void</span> actionFcn(during, E)()</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>{</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> FSM_LOG(<span class="stringliteral">&quot; duringE &quot;</span>);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span>}</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="keywordtype">void</span> actionFcn(exit, E)()</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span>{</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> FSM_LOG(<span class="stringliteral">&quot; exitE &quot;</span>);</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span>}</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">/* </span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"> 事件和对应的转移函数</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment"> */</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="keyword">typedef</span> <span class="keyword">enum</span> _Event{</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> Idle_Event,</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> Idle2D,</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> Idle2E,</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> D2E,</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> E2D,</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> Count_Event,</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span>}Event;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span>State transitionHandler(Idle2D)()</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>{</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> FSM_LOG(<span class="stringliteral">&quot; Idle2D &quot;</span>);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordflow">return</span> D;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span>}</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span>State transitionHandler(Idle2E)()</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span>{</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> FSM_LOG(<span class="stringliteral">&quot; Idle2E &quot;</span>);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">return</span> E;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span>}</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span>State transitionHandler(D2E)()</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span>{</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> FSM_LOG(<span class="stringliteral">&quot; D2E &quot;</span>);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">return</span> E;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span>}</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span>State transitionHandler(E2D)()</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span>{</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> FSM_LOG(<span class="stringliteral">&quot; E2D &quot;</span>);</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">return</span> D;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span>}</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment">/* </span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> 用户自定义事件选择逻辑—————————————————begin </span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment">*/</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="keyword">const</span> <span class="keyword">static</span> <span class="keywordtype">char</span> *stateStr[] = {</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="stringliteral">&quot;Idle&quot;</span>,</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="stringliteral">&quot;D&quot;</span>,</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="stringliteral">&quot;E&quot;</span>,</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> };</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="keyword">const</span> <span class="keyword">static</span> <span class="keywordtype">char</span> *eventStr[] = {</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="stringliteral">&quot;Idle&quot;</span>,</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="stringliteral">&quot;Idle2D&quot;</span>,</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="stringliteral">&quot;Idle2E&quot;</span>,</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="stringliteral">&quot;D2E&quot;</span>,</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="stringliteral">&quot;E2D&quot;</span>,</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span>};</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="keyword">static</span> <span class="keywordtype">void</span> printFSM(ChildFSM* pFSM){</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> FSM_LOG(<span class="stringliteral">&quot; \t\tChildFSM: &quot;</span>);</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> FSM_LOG(<span class="stringliteral">&quot;当前状态:%s, 当前事件:%s, 动作:&quot;</span>, stateStr[getFSMCurState((FSM *)pFSM)], eventStr[getFSMCurEvent((FSM *)pFSM)]);</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span>}</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="a_f_s_m__protected_8h_html"><div class="ttname"><a href="_f_s_m__protected_8h.html">FSM_protected.h</a></div><div class="ttdoc">状态机框架的protected函数和变量在继承的子类中可使用在外界不可使用</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_b967bec748219e2f7c7f19a67051e0d6.html">childtest</a></li><li class="navelem"><b>childFSM_private.h</b></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,123 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Data Structure Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classes.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">Data Structure Index</div></div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a></div>
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a id="letter_F" name="letter_F">F</a></dt>
<dd><a class="el" href="struct_f_s_m_data_loader.html">FSMDataLoader</a></dd><dd><a class="el" href="struct_f_s_m_handler.html">FSMHandler</a></dd><dd><a class="el" href="struct_f_s_m_private_vars.html">FSMPrivateVars</a></dd><dd><a class="el" href="struct_f_s_m_pure_vtbl.html">FSMPureVtbl</a></dd><dd><a class="el" href="struct_f_s_m_signals.html">FSMSignals</a></dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_T" name="letter_T">T</a></dt>
<dd><a class="el" href="struct_template_f_s_m_external_data.html">TemplateFSMExternalData</a></dd><dd><a class="el" href="struct_template_f_s_m_inner_data.html">TemplateFSMInnerData</a></dd></dl>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,61 @@
/**
The code below is based on the Doxygen Awesome project, see
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2021 - 2022 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
let clipboard_title = "Copy to clipboard"
let clipboard_icon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>`
let clipboard_successIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>`
let clipboard_successDuration = 1000
$(function() {
if(navigator.clipboard) {
const fragments = document.getElementsByClassName("fragment")
for(const fragment of fragments) {
const clipboard_div = document.createElement("div")
clipboard_div.classList.add("clipboard")
clipboard_div.innerHTML = clipboard_icon
clipboard_div.title = clipboard_title
$(clipboard_div).click(function() {
const content = this.parentNode.cloneNode(true)
// filter out line number and folded fragments from file listings
content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() })
let text = content.textContent
// remove trailing newlines and trailing spaces from empty lines
text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'')
navigator.clipboard.writeText(text);
this.classList.add("success")
this.innerHTML = clipboard_successIcon
window.setTimeout(() => { // switch back to normal icon after timeout
this.classList.remove("success")
this.innerHTML = clipboard_icon
}, clipboard_successDuration);
})
fragment.insertBefore(clipboard_div, fragment.firstChild)
}
}
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

View File

@ -0,0 +1,58 @@
/*!
Cookie helper functions
Copyright (c) 2023 Dimitri van Heesch
Released under MIT license.
*/
let Cookie = {
cookie_namespace: 'doxygen_',
readSetting(cookie,defVal) {
if (window.chrome) {
const val = localStorage.getItem(this.cookie_namespace+cookie) ||
sessionStorage.getItem(this.cookie_namespace+cookie);
if (val) return val;
} else {
let myCookie = this.cookie_namespace+cookie+"=";
if (document.cookie) {
const index = document.cookie.indexOf(myCookie);
if (index != -1) {
const valStart = index + myCookie.length;
let valEnd = document.cookie.indexOf(";", valStart);
if (valEnd == -1) {
valEnd = document.cookie.length;
}
return document.cookie.substring(valStart, valEnd);
}
}
}
return defVal;
},
writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete
if (window.chrome) {
if (days==0) {
sessionStorage.setItem(this.cookie_namespace+cookie,val);
} else {
localStorage.setItem(this.cookie_namespace+cookie,val);
}
} else {
let date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
const expiration = days!=0 ? "expires="+date.toGMTString()+";" : "";
document.cookie = this.cookie_namespace + cookie + "=" +
val + "; SameSite=Lax;" + expiration + "path=/";
}
},
eraseSetting(cookie) {
if (window.chrome) {
if (localStorage.getItem(this.cookie_namespace+cookie)) {
localStorage.removeItem(this.cookie_namespace+cookie);
} else if (sessionStorage.getItem(this.cookie_namespace+cookie)) {
sessionStorage.removeItem(this.cookie_namespace+cookie);
}
} else {
this.writeSetting(cookie,'',-1);
}
},
}

View File

@ -0,0 +1,153 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Deprecated List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('deprecated.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">Deprecated List</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="reflist">
<dt>Global <a class="el" href="_f_s_m__public_8h.html#aad909acd21e17b8073d5d9dfb8892ccb">_clearPreloaderOverFlag</a> (FSM *pFSM)</dt>
<dd><a class="anchor" id="_deprecated000005"></a>弃用 </dd>
<dt>Global <a class="el" href="_f_s_m__public_8h.html#a704103961964dbb8582b59fd161a3348">_getPreloaderOverFlag</a> (FSM *pFSM)</dt>
<dd><a class="anchor" id="_deprecated000004"></a>弃用 </dd>
<dt>Global <a class="el" href="_f_s_m__public_8h.html#a6e2a8d16f390efeaecc8938ec8f2e728">_preloaderGetReady</a> (FSM *pFSM)</dt>
<dd><a class="anchor" id="_deprecated000003"></a>弃用 </dd>
<dt>Global <a class="el" href="_f_s_m__public_8h.html#a9c285ac5bbad90b0b04de18d393cf4ce">_preloadIn</a> (FSM *pFSM)</dt>
<dd><a class="anchor" id="_deprecated000002"></a>弃用 </dd>
<dt>Global <a class="el" href="_f_s_m__public_8h.html#ac11e3ebda7ba02fc42ac5de33fcfd148">ClearPreloaderOverFlag</a> (pFSM)</dt>
<dd><a class="anchor" id="_deprecated000015"></a> </dd>
<dt>Global <a class="el" href="_f_s_m__private_8h.html#a9116b0a24810b38fafae2fb986517432">FSMDataLoader</a> </dt>
<dd><a class="anchor" id="_deprecated000006"></a>预装载器弃用 </dd>
<dt>Global <a class="el" href="struct_f_s_m_handler.html#a976b4147d1c0c9aeb4a61c3cc85376bf">FSMHandler::childFSMStepTable</a> )(FSM **cFSM)</dt>
<dd><a class="anchor" id="_deprecated000010"></a>子状态机暂时弃用 </dd>
<dt>Global <a class="el" href="struct_f_s_m_private_vars.html#ad20548555264a67dac6b18b757e01821">FSMPrivateVars::childFSM</a> </dt>
<dd><a class="anchor" id="_deprecated000008"></a>和子状态机相关的暂时弃用 </dd>
<dt>Global <a class="el" href="struct_f_s_m_private_vars.html#ac66fa0241dc6aa44e48e6b16811a8091">FSMPrivateVars::numChild</a> </dt>
<dd><a class="anchor" id="_deprecated000007"></a>和子状态机相关的暂时弃用 </dd>
<dt>Global <a class="el" href="struct_f_s_m_private_vars.html#a71ba0d8bee3f15ed5a0dd92dda0e0ed1">FSMPrivateVars::preloader</a> </dt>
<dd><a class="anchor" id="_deprecated000009"></a>弃用 </dd>
<dt>Global <a class="el" href="struct_f_s_m_pure_vtbl.html#aebfd1efad93210ac02249a81159d1472">FSMPureVtbl::initDataLoader</a> )(FSM *pFSM)</dt>
<dd><a class="anchor" id="_deprecated000012"></a>和预装载器相关 </dd>
<dt>Global <a class="el" href="struct_f_s_m_pure_vtbl.html#a4973df3b86e460a458c9edf4699aa68d">FSMPureVtbl::loadExternalData</a> )(void *extData)</dt>
<dd><a class="anchor" id="_deprecated000011"></a>暂时没用,后续可能考虑外部数据是否允许随时修改 </dd>
<dt>Global <a class="el" href="_f_s_m__public_8h.html#aef66ec3c44c151b23fbc98c10c514d32">GetPreloaderOverFlag</a> (pFSM)</dt>
<dd><a class="anchor" id="_deprecated000014"></a> </dd>
<dt>Global <a class="el" href="template_f_s_m_8c.html#a8b945e9059bb82bf66884af5133eb898">initDataLoader</a> (TemplateFSM *pFSM)</dt>
<dd><a class="anchor" id="_deprecated000017"></a>弃用 </dd>
<dt>Global <a class="el" href="template_f_s_m_8c.html#a9e6eba3b03d1ff4c504705b2da864cb3">loadExternalData</a> (TemplateFSMData *data)</dt>
<dd><a class="anchor" id="_deprecated000016"></a>暂时没用后续考虑data是否需要加锁再说 </dd>
<dt>Global <a class="el" href="_f_s_m_8c.html#a7fc6a4715e8cbd7660788fd9c59cb417">preload</a> (FSM *pFSM)</dt>
<dd><a class="anchor" id="_deprecated000001"></a>去掉了所有和预装载器相关的内容 </dd>
<dt>Global <a class="el" href="_f_s_m__public_8h.html#aa4b1ff528d718db75faeba03a845fe46">PreloaderGetReady</a> (pFSM)</dt>
<dd><a class="anchor" id="_deprecated000013"></a> </dd>
<dt>Global <a class="el" href="template_f_s_m_8h.html#ab0325ef0b5aef6334743cdd7c1d70bd9">TemplateFSM_Input</a> (pFSM)</dt>
<dd><a class="anchor" id="_deprecated000018"></a>暂时弃用 </dd>
</dl>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,128 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/template Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_7883619b7fc78d5d5f504b4a82c84a2d.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">template Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="template_f_s_m_8c.html">templateFSM.c</a></td></tr>
<tr class="memdesc:template_f_s_m_8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">重新实现几个必须实现的函数,并赋值到父类指针里 <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="template_f_s_m_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="template_f_s_m_8h.html">templateFSM.h</a></td></tr>
<tr class="memdesc:template_f_s_m_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">对外暴露接口,外部可以设置状态机的信号 <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="template_f_s_m__private_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="template_f_s_m__private_8h.html">templateFSM_private.h</a></td></tr>
<tr class="memdesc:template_f_s_m__private_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">用来声明状态、状态函数等。这个文件只能被templateFSM.c引用一次 <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_7883619b7fc78d5d5f504b4a82c84a2d.html">template</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
var dir_7883619b7fc78d5d5f504b4a82c84a2d =
[
[ "templateFSM.c", "template_f_s_m_8c.html", "template_f_s_m_8c" ],
[ "templateFSM.h", "template_f_s_m_8h.html", "template_f_s_m_8h" ],
[ "templateFSM_private.h", "template_f_s_m__private_8h.html", "template_f_s_m__private_8h" ]
];

View File

@ -0,0 +1,129 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/baseFSM Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_80fe18a48ef62b4daee0a25030c2866c.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">baseFSM Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_f_s_m_8c.html">FSM.c</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="_f_s_m__private_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_f_s_m__private_8h.html">FSM_private.h</a></td></tr>
<tr class="memdesc:_f_s_m__private_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">状态机框架的私有变量,只能在状态机框架内使用。 <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="_f_s_m__protected_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_f_s_m__protected_8h.html">FSM_protected.h</a></td></tr>
<tr class="memdesc:_f_s_m__protected_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">状态机框架的protected函数和变量在继承的子类中可使用在外界不可使用 <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="_f_s_m__public_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_f_s_m__public_8h.html">FSM_public.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_80fe18a48ef62b4daee0a25030c2866c.html">baseFSM</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,7 @@
var dir_80fe18a48ef62b4daee0a25030c2866c =
[
[ "FSM.c", "_f_s_m_8c.html", "_f_s_m_8c" ],
[ "FSM_private.h", "_f_s_m__private_8h.html", "_f_s_m__private_8h" ],
[ "FSM_protected.h", "_f_s_m__protected_8h.html", "_f_s_m__protected_8h" ],
[ "FSM_public.h", "_f_s_m__public_8h.html", "_f_s_m__public_8h" ]
];

View File

@ -0,0 +1,123 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/keytest Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_8a682e2342309b53ef6d16f9472268bd.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">keytest Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="key_f_s_m_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>keyFSM.h</b></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="key_f_s_m__private_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>keyFSM_private.h</b></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_8a682e2342309b53ef6d16f9472268bd.html">keytest</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
var dir_8a682e2342309b53ef6d16f9472268bd =
[
[ "keyFSM.h", "key_f_s_m_8h_source.html", null ],
[ "keyFSM_private.h", "key_f_s_m__private_8h_source.html", null ]
];

View File

@ -0,0 +1,125 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/childtest Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_b967bec748219e2f7c7f19a67051e0d6.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">childtest Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="child_f_s_m_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>childFSM.h</b></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="child_f_s_m__private_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>childFSM_private.h</b></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="parent_f_s_m_8h_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><b>parentFSM.h</b></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_b967bec748219e2f7c7f19a67051e0d6.html">childtest</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
var dir_b967bec748219e2f7c7f19a67051e0d6 =
[
[ "childFSM.h", "child_f_s_m_8h_source.html", null ],
[ "childFSM_private.h", "child_f_s_m__private_8h_source.html", null ],
[ "parentFSM.h", "parent_f_s_m_8h_source.html", null ]
];

View File

@ -0,0 +1,127 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_d39bfbf75725f6289f30e50b2f1305f4.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">FSM_OOP Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_80fe18a48ef62b4daee0a25030c2866c.html">baseFSM</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_b967bec748219e2f7c7f19a67051e0d6.html">childtest</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_8a682e2342309b53ef6d16f9472268bd.html">keytest</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_7883619b7fc78d5d5f504b4a82c84a2d.html">template</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,7 @@
var dir_d39bfbf75725f6289f30e50b2f1305f4 =
[
[ "baseFSM", "dir_80fe18a48ef62b4daee0a25030c2866c.html", "dir_80fe18a48ef62b4daee0a25030c2866c" ],
[ "childtest", "dir_b967bec748219e2f7c7f19a67051e0d6.html", "dir_b967bec748219e2f7c7f19a67051e0d6" ],
[ "keytest", "dir_8a682e2342309b53ef6d16f9472268bd.html", "dir_8a682e2342309b53ef6d16f9472268bd" ],
[ "template", "dir_7883619b7fc78d5d5f504b4a82c84a2d.html", "dir_7883619b7fc78d5d5f504b4a82c84a2d" ]
];

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#4665A2">
<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
</g>
<g style="fill:#D8DFEE;stroke-width:0">
<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#C4CFE5">
<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
</g>
<g style="fill:#4665A2;stroke-width:0">
<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,107 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>Validator / crawler helper</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
</head>
<body>
<a href="_f_s_m__private_8h_source.html"/>
<a href="_f_s_m__protected_8h_source.html"/>
<a href="_f_s_m__public_8h_source.html"/>
<a href="child_f_s_m_8h_source.html"/>
<a href="child_f_s_m__private_8h_source.html"/>
<a href="parent_f_s_m_8h_source.html"/>
<a href="key_f_s_m_8h_source.html"/>
<a href="key_f_s_m__private_8h_source.html"/>
<a href="template_f_s_m_8h_source.html"/>
<a href="template_f_s_m__private_8h_source.html"/>
<a href="_f_s_m_8c.html"/>
<a href="_f_s_m__private_8h.html"/>
<a href="_f_s_m__protected_8h.html"/>
<a href="_f_s_m__public_8h.html"/>
<a href="template_f_s_m_8c.html"/>
<a href="template_f_s_m_8h.html"/>
<a href="template_f_s_m__private_8h.html"/>
<a href="deprecated.html"/>
<a href="struct_f_s_m_data_loader.html"/>
<a href="struct_f_s_m_handler.html"/>
<a href="struct_f_s_m_private_vars.html"/>
<a href="struct_f_s_m_pure_vtbl.html"/>
<a href="struct_f_s_m_signals.html"/>
<a href="struct_template_f_s_m_external_data.html"/>
<a href="struct_template_f_s_m_inner_data.html"/>
<a href="dir_80fe18a48ef62b4daee0a25030c2866c.html"/>
<a href="dir_b967bec748219e2f7c7f19a67051e0d6.html"/>
<a href="dir_d39bfbf75725f6289f30e50b2f1305f4.html"/>
<a href="dir_8a682e2342309b53ef6d16f9472268bd.html"/>
<a href="dir_7883619b7fc78d5d5f504b4a82c84a2d.html"/>
<a href="index.html"/>
<a href="doxygen_crawl.html"/>
<a href="pages.html"/>
<a href="annotated.html"/>
<a href="classes.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="files.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals.html"/>
<a href="globals_func.html"/>
<a href="globals_func.html"/>
<a href="globals_func.html"/>
<a href="globals_func.html"/>
<a href="globals_func.html"/>
<a href="globals_func.html"/>
<a href="globals_func.html"/>
<a href="globals_func.html"/>
<a href="globals_type.html"/>
<a href="globals_type.html"/>
<a href="globals_type.html"/>
<a href="globals_enum.html"/>
<a href="globals_enum.html"/>
<a href="globals_eval.html"/>
<a href="globals_eval.html"/>
<a href="globals_eval.html"/>
<a href="globals_defs.html"/>
<a href="globals_defs.html"/>
<a href="globals_defs.html"/>
<a href="globals_defs.html"/>
<a href="globals_defs.html"/>
<a href="globals_defs.html"/>
<a href="globals_defs.html"/>
</body>
</html>

View File

@ -0,0 +1,194 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
let dynsection = {
// helper function
updateStripes : function() {
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
$('table.directory tr').
removeClass('odd').filter(':visible:odd').addClass('odd');
},
toggleVisibility : function(linkObj) {
const base = $(linkObj).attr('id');
const summary = $('#'+base+'-summary');
const content = $('#'+base+'-content');
const trigger = $('#'+base+'-trigger');
const src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
},
toggleLevel : function(level) {
$('table.directory tr').each(function() {
const l = this.id.split('_').length-1;
const i = $('#img'+this.id.substring(3));
const a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
this.updateStripes();
},
toggleFolder : function(id) {
// the clicked row
const currentRow = $('#row_'+id);
// all rows after the clicked row
const rows = currentRow.nextAll("tr");
const re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
const childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
const currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
const currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
const childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
this.updateStripes();
},
toggleInherit : function(id) {
const rows = $('tr.inherit.'+id);
const img = $('tr.inherit_header.'+id+' img');
const src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
},
};
let codefold = {
opened : true,
// in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes
plusImg: [ "var(--fold-plus-image)", "var(--fold-plus-image-relpath)" ],
minusImg: [ "var(--fold-minus-image)", "var(--fold-minus-image-relpath)" ],
// toggle all folding blocks
toggle_all : function(relPath) {
if (this.opened) {
$('#fold_all').css('background-image',this.plusImg[relPath]);
$('div[id^=foldopen]').hide();
$('div[id^=foldclosed]').show();
} else {
$('#fold_all').css('background-image',this.minusImg[relPath]);
$('div[id^=foldopen]').show();
$('div[id^=foldclosed]').hide();
}
this.opened=!this.opened;
},
// toggle single folding block
toggle : function(id) {
$('#foldopen'+id).toggle();
$('#foldclosed'+id).toggle();
},
init : function(relPath) {
$('span[class=lineno]').css({
'padding-right':'4px',
'margin-right':'2px',
'display':'inline-block',
'width':'54px',
'background':'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%'
});
// add global toggle to first line
$('span[class=lineno]:first').append('<span class="fold" id="fold_all" '+
'onclick="javascript:codefold.toggle_all('+relPath+');" '+
'style="background-image:'+this.minusImg[relPath]+';"></span>');
// add vertical lines to other rows
$('span[class=lineno]').not(':eq(0)').append('<span class="fold"></span>');
// add toggle controls to lines with fold divs
$('div[class=foldopen]').each(function() {
// extract specific id to use
const id = $(this).attr('id').replace('foldopen','');
// extract start and end foldable fragment attributes
const start = $(this).attr('data-start');
const end = $(this).attr('data-end');
// replace normal fold span with controls for the first line of a foldable fragment
$(this).find('span[class=fold]:first').replaceWith('<span class="fold" '+
'onclick="javascript:codefold.toggle(\''+id+'\');" '+
'style="background-image:'+codefold.minusImg[relPath]+';"></span>');
// append div for folded (closed) representation
$(this).after('<div id="foldclosed'+id+'" class="foldclosed" style="display:none;"></div>');
// extract the first line from the "open" section to represent closed content
const line = $(this).children().first().clone();
// remove any glow that might still be active on the original line
$(line).removeClass('glow');
if (start) {
// if line already ends with a start marker (e.g. trailing {), remove it
$(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),''));
}
// replace minus with plus symbol
$(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]);
// append ellipsis
$(line).append(' '+start+'<a href="javascript:codefold.toggle(\''+id+'\')">&#8230;</a>'+end);
// insert constructed line into closed div
$('#foldclosed'+id).html(line);
});
},
};
/* @license-end */

View File

@ -0,0 +1,135 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('files.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">File List</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span><span onclick="javascript:dynsection.toggleLevel(3);">3</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="dynsection.toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="dynsection.toggleFolder('0_')">&#160;</span><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html" target="_self">FSM_OOP</a></td><td class="desc"></td></tr>
<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="dynsection.toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="dynsection.toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_80fe18a48ef62b4daee0a25030c2866c.html" target="_self">baseFSM</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="_f_s_m_8c.html" target="_self">FSM.c</a></td><td class="desc"></td></tr>
<tr id="row_0_0_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_f_s_m__private_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_f_s_m__private_8h.html" target="_self">FSM_private.h</a></td><td class="desc">状态机框架的私有变量,只能在状态机框架内使用。 </td></tr>
<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_f_s_m__protected_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_f_s_m__protected_8h.html" target="_self">FSM_protected.h</a></td><td class="desc">状态机框架的protected函数和变量在继承的子类中可使用在外界不可使用 </td></tr>
<tr id="row_0_0_3_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_f_s_m__public_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_f_s_m__public_8h.html" target="_self">FSM_public.h</a></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="dynsection.toggleFolder('0_1_')">&#9660;</span><span id="img_0_1_" class="iconfopen" onclick="dynsection.toggleFolder('0_1_')">&#160;</span><a class="el" href="dir_b967bec748219e2f7c7f19a67051e0d6.html" target="_self">childtest</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="child_f_s_m_8h_source.html"><span class="icondoc"></span></a><b>childFSM.h</b></td><td class="desc"></td></tr>
<tr id="row_0_1_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="child_f_s_m__private_8h_source.html"><span class="icondoc"></span></a><b>childFSM_private.h</b></td><td class="desc"></td></tr>
<tr id="row_0_1_2_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="parent_f_s_m_8h_source.html"><span class="icondoc"></span></a><b>parentFSM.h</b></td><td class="desc"></td></tr>
<tr id="row_0_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_2_" class="arrow" onclick="dynsection.toggleFolder('0_2_')">&#9660;</span><span id="img_0_2_" class="iconfopen" onclick="dynsection.toggleFolder('0_2_')">&#160;</span><a class="el" href="dir_8a682e2342309b53ef6d16f9472268bd.html" target="_self">keytest</a></td><td class="desc"></td></tr>
<tr id="row_0_2_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="key_f_s_m_8h_source.html"><span class="icondoc"></span></a><b>keyFSM.h</b></td><td class="desc"></td></tr>
<tr id="row_0_2_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="key_f_s_m__private_8h_source.html"><span class="icondoc"></span></a><b>keyFSM_private.h</b></td><td class="desc"></td></tr>
<tr id="row_0_3_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_3_" class="arrow" onclick="dynsection.toggleFolder('0_3_')">&#9660;</span><span id="img_0_3_" class="iconfopen" onclick="dynsection.toggleFolder('0_3_')">&#160;</span><a class="el" href="dir_7883619b7fc78d5d5f504b4a82c84a2d.html" target="_self">template</a></td><td class="desc"></td></tr>
<tr id="row_0_3_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="template_f_s_m_8c.html" target="_self">templateFSM.c</a></td><td class="desc">重新实现几个必须实现的函数,并赋值到父类指针里 </td></tr>
<tr id="row_0_3_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="template_f_s_m_8h_source.html"><span class="icondoc"></span></a><a class="el" href="template_f_s_m_8h.html" target="_self">templateFSM.h</a></td><td class="desc">对外暴露接口,外部可以设置状态机的信号 </td></tr>
<tr id="row_0_3_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="template_f_s_m__private_8h_source.html"><span class="icondoc"></span></a><a class="el" href="template_f_s_m__private_8h.html" target="_self">templateFSM_private.h</a></td><td class="desc">用来声明状态、状态函数等。这个文件只能被templateFSM.c引用一次 </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
var files_dup =
[
[ "FSM_OOP", "dir_d39bfbf75725f6289f30e50b2f1305f4.html", "dir_d39bfbf75725f6289f30e50b2f1305f4" ]
];

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#4665A2;">
<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
</g>
<g style="fill:#D8DFEE;stroke-width:0;">
<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#C4CFE5;">
<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
</g>
<g style="fill:#4665A2;stroke-width:0;">
<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#4665A2;">
<path
d="M1,5.998l0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm28,14.415l-3.456,-5.925c-0.538,-0.921 -1.524,-1.488 -2.591,-1.488c-0,0 -12.905,0 -12.906,0c-1.067,0 -2.053,0.567 -2.591,1.488l-4.453,7.635c0.03,0.751 0.342,1.465 0.876,1.998c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121l0,-1.587Zm0,-3.969l0,-6.444c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998l0,12.16l2.729,-4.677c0.896,-1.536 2.54,-2.481 4.318,-2.481c3.354,0 9.552,0 12.906,0c1.778,0 3.422,0.945 4.318,2.481l1.729,2.963Z"
id="path2" />
</g>
<g style="fill:#D8DFEE;stroke-width:0;">
<path
d="M 5.3879408,24.913408 C 4.1598821,24.650818 3.1571088,23.558656 3.053503,22.370876 L 3.0312746,22.116041 5.2606813,18.293515 C 6.486855,16.191126 7.5598351,14.372696 7.6450818,14.25256 8.0043056,13.746312 8.5423079,13.363007 9.2104664,13.137285 l 0.2548351,-0.08609 6.9294785,-0.0097 c 6.805096,-0.0095 6.934944,-0.0084 7.234011,0.06267 0.695577,0.165199 1.290483,0.557253 1.714887,1.130141 0.08158,0.110125 0.938747,1.556711 1.90481,3.214634 l 1.756479,3.014406 -0.0186,0.971942 c -0.01387,0.724723 -0.03365,1.032131 -0.07778,1.208575 -0.242792,0.970733 -0.88732,1.735415 -1.772382,2.102793 -0.58835,0.244217 0.247209,0.227436 -11.161974,0.224159 -9.0281537,-0.0026 -10.3636023,-0.0098 -10.5862902,-0.05746 z"
id="path199" /><path
d="M 3.0126385,11.849829 3.0235061,5.5881684 3.1020974,5.2969283 C 3.3478146,4.3863605 3.93576,3.6757372 4.756668,3.2971229 5.3293315,3.0330025 5.1813272,3.0450949 8.0130385,3.0310668 l 2.5522875,-0.012644 1.918693,1.9107086 c 1.404146,1.3983023 1.964459,1.9332518 2.089351,1.9947704 l 0.170657,0.084062 5.897611,0.019367 c 5.553257,0.018236 5.910365,0.023213 6.116041,0.085231 1.102257,0.3323708 1.857042,1.1184422 2.154229,2.2435244 0.05645,0.2137228 0.06373,0.5643981 0.07519,3.6220748 0.0076,2.032169 -5.42e-4,3.370979 -0.02041,3.349261 -0.0182,-0.0199 -0.414296,-0.691472 -0.880217,-1.492382 -0.46592,-0.80091 -0.93093,-1.577954 -1.033354,-1.726764 -0.735716,-1.0689 -1.983568,-1.844244 -3.315972,-2.060353 -0.280375,-0.04548 -1.345158,-0.05334 -7.238708,-0.05347 -4.713933,-1.09e-4 -6.9931825,0.01221 -7.1717862,0.03874 -1.3002273,0.193134 -2.4770512,0.889916 -3.283628,1.944192 -0.1076466,0.140705 -0.8359664,1.353438 -1.6184885,2.694963 L 3.0017709,18.11149 Z"
id="path201" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#C4CFE5;">
<path d="M1,5.998l0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm28,14.415l-3.456,-5.925c-0.538,-0.921 -1.524,-1.488 -2.591,-1.488c-0,0 -12.905,0 -12.906,0c-1.067,0 -2.053,0.567 -2.591,1.488l-4.453,7.635c0.03,0.751 0.342,1.465 0.876,1.998c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121l0,-1.587Zm0,-3.969l0,-6.444c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998l0,12.16l2.729,-4.677c0.896,-1.536 2.54,-2.481 4.318,-2.481c3.354,0 9.552,0 12.906,0c1.778,0 3.422,0.945 4.318,2.481l1.729,2.963Z"/>
</g>
<g style="fill:#4665A2;stroke-width:0;">
<path d="M 5.3879408,24.913408 C 4.1598821,24.650818 3.1571088,23.558656 3.053503,22.370876 L 3.0312746,22.116041 5.2606813,18.293515 C 6.486855,16.191126 7.5598351,14.372696 7.6450818,14.25256 8.0043056,13.746312 8.5423079,13.363007 9.2104664,13.137285 l 0.2548351,-0.08609 6.9294785,-0.0097 c 6.805096,-0.0095 6.934944,-0.0084 7.234011,0.06267 0.695577,0.165199 1.290483,0.557253 1.714887,1.130141 0.08158,0.110125 0.938747,1.556711 1.90481,3.214634 l 1.756479,3.014406 -0.0186,0.971942 c -0.01387,0.724723 -0.03365,1.032131 -0.07778,1.208575 -0.242792,0.970733 -0.88732,1.735415 -1.772382,2.102793 -0.58835,0.244217 0.247209,0.227436 -11.161974,0.224159 -9.0281537,-0.0026 -10.3636023,-0.0098 -10.5862902,-0.05746 z" />
<path d="M 3.0126385,11.849829 3.0235061,5.5881684 3.1020974,5.2969283 C 3.3478146,4.3863605 3.93576,3.6757372 4.756668,3.2971229 5.3293315,3.0330025 5.1813272,3.0450949 8.0130385,3.0310668 l 2.5522875,-0.012644 1.918693,1.9107086 c 1.404146,1.3983023 1.964459,1.9332518 2.089351,1.9947704 l 0.170657,0.084062 5.897611,0.019367 c 5.553257,0.018236 5.910365,0.023213 6.116041,0.085231 1.102257,0.3323708 1.857042,1.1184422 2.154229,2.2435244 0.05645,0.2137228 0.06373,0.5643981 0.07519,3.6220748 0.0076,2.032169 -5.42e-4,3.370979 -0.02041,3.349261 -0.0182,-0.0199 -0.414296,-0.691472 -0.880217,-1.492382 -0.46592,-0.80091 -0.93093,-1.577954 -1.033354,-1.726764 -0.735716,-1.0689 -1.983568,-1.844244 -3.315972,-2.060353 -0.280375,-0.04548 -1.345158,-0.05334 -7.238708,-0.05347 -4.713933,-1.09e-4 -6.9931825,0.01221 -7.1717862,0.03874 -1.3002273,0.193134 -2.4770512,0.889916 -3.283628,1.944192 -0.1076466,0.140705 -0.8359664,1.353438 -1.6184885,2.694963 L 3.0017709,18.11149 Z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,137 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('functions.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div><ul>
<li>all&#160;:&#160;<a class="el" href="struct_f_s_m_signals.html#a9586b8cdc522f49e9bc62d2b67a1d79b">FSMSignals</a></li>
<li>childFSM&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#ad20548555264a67dac6b18b757e01821">FSMPrivateVars</a></li>
<li>childFSMStepTable&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#a976b4147d1c0c9aeb4a61c3cc85376bf">FSMHandler</a></li>
<li>curState&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a1e013b34f3da19006fdaef781e386ba7">FSMPrivateVars</a></li>
<li>defaultState&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a4cc735365b8c3946ff83d1984e2565fe">FSMPrivateVars</a></li>
<li>duringActionTable&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#ad3506a53c3ee76655a117f7db0da7d3d">FSMHandler</a></li>
<li>enterActionTable&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#aa733ab89a48f8a63b4afb623b4d6be90">FSMHandler</a></li>
<li>exitActionTable&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#a04721875a9baabc8a51c54a668db9a2c">FSMHandler</a></li>
<li>fcns&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a38fc9622245dd2e2272d0511a603db69">FSMPrivateVars</a></li>
<li>index&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#ab14d89d4db1639abfab4a24f05cca6a7">FSMPrivateVars</a></li>
<li>initData&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#a24fea698707e18e2d84385bfca118db1">FSMPureVtbl</a></li>
<li>initDataLoader&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#aebfd1efad93210ac02249a81159d1472">FSMPureVtbl</a></li>
<li>initSignals&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#a58c666f5941e07c4a6ef054f1250dbd8">FSMPureVtbl</a></li>
<li>lastTriggeredSignal&#160;:&#160;<a class="el" href="struct_f_s_m_signals.html#a0ed78b85dbee15c4928fc85546eaa10d">FSMSignals</a></li>
<li>loadExternalData&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#a4973df3b86e460a458c9edf4699aa68d">FSMPureVtbl</a></li>
<li>nextState&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a4312b61c7165398d2415c0794ac1fa8c">FSMPrivateVars</a></li>
<li>numChild&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#ac66fa0241dc6aa44e48e6b16811a8091">FSMPrivateVars</a></li>
<li>numState&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a9f8a355881f1e3e990987090e6e9e37c">FSMPrivateVars</a></li>
<li>preloader&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a71ba0d8bee3f15ed5a0dd92dda0e0ed1">FSMPrivateVars</a></li>
<li>resetSignals&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#ae326d855d6a29d089f312d965bf032f2">FSMPureVtbl</a></li>
<li>selectNextState&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#a934ff7d1a2f7714694b8a2927b5f8451">FSMHandler</a></li>
<li>setupHandler&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#a5fe3628ecfac4830ad9f64b1439fe57d">FSMPureVtbl</a></li>
<li>transitionGeneralAction&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#ab199071e132b4409d71883155e6b81f2">FSMHandler</a></li>
<li>transitionTable&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#ac3b9fc077f8ba0368e8cba02a890aa2f">FSMHandler</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,137 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Data Fields - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('functions_vars.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented variables with links to the struct/union documentation for each field:</div><ul>
<li>all&#160;:&#160;<a class="el" href="struct_f_s_m_signals.html#a9586b8cdc522f49e9bc62d2b67a1d79b">FSMSignals</a></li>
<li>childFSM&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#ad20548555264a67dac6b18b757e01821">FSMPrivateVars</a></li>
<li>childFSMStepTable&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#a976b4147d1c0c9aeb4a61c3cc85376bf">FSMHandler</a></li>
<li>curState&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a1e013b34f3da19006fdaef781e386ba7">FSMPrivateVars</a></li>
<li>defaultState&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a4cc735365b8c3946ff83d1984e2565fe">FSMPrivateVars</a></li>
<li>duringActionTable&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#ad3506a53c3ee76655a117f7db0da7d3d">FSMHandler</a></li>
<li>enterActionTable&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#aa733ab89a48f8a63b4afb623b4d6be90">FSMHandler</a></li>
<li>exitActionTable&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#a04721875a9baabc8a51c54a668db9a2c">FSMHandler</a></li>
<li>fcns&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a38fc9622245dd2e2272d0511a603db69">FSMPrivateVars</a></li>
<li>index&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#ab14d89d4db1639abfab4a24f05cca6a7">FSMPrivateVars</a></li>
<li>initData&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#a24fea698707e18e2d84385bfca118db1">FSMPureVtbl</a></li>
<li>initDataLoader&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#aebfd1efad93210ac02249a81159d1472">FSMPureVtbl</a></li>
<li>initSignals&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#a58c666f5941e07c4a6ef054f1250dbd8">FSMPureVtbl</a></li>
<li>lastTriggeredSignal&#160;:&#160;<a class="el" href="struct_f_s_m_signals.html#a0ed78b85dbee15c4928fc85546eaa10d">FSMSignals</a></li>
<li>loadExternalData&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#a4973df3b86e460a458c9edf4699aa68d">FSMPureVtbl</a></li>
<li>nextState&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a4312b61c7165398d2415c0794ac1fa8c">FSMPrivateVars</a></li>
<li>numChild&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#ac66fa0241dc6aa44e48e6b16811a8091">FSMPrivateVars</a></li>
<li>numState&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a9f8a355881f1e3e990987090e6e9e37c">FSMPrivateVars</a></li>
<li>preloader&#160;:&#160;<a class="el" href="struct_f_s_m_private_vars.html#a71ba0d8bee3f15ed5a0dd92dda0e0ed1">FSMPrivateVars</a></li>
<li>resetSignals&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#ae326d855d6a29d089f312d965bf032f2">FSMPureVtbl</a></li>
<li>selectNextState&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#a934ff7d1a2f7714694b8a2927b5f8451">FSMHandler</a></li>
<li>setupHandler&#160;:&#160;<a class="el" href="struct_f_s_m_pure_vtbl.html#a5fe3628ecfac4830ad9f64b1439fe57d">FSMPureVtbl</a></li>
<li>transitionGeneralAction&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#ab199071e132b4409d71883155e6b81f2">FSMHandler</a></li>
<li>transitionTable&#160;:&#160;<a class="el" href="struct_f_s_m_handler.html#ac3b9fc077f8ba0368e8cba02a890aa2f">FSMHandler</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,196 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('globals.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div>
<h3><a id="index__5F" name="index__5F"></a>- _ -</h3><ul>
<li>_clearPreloaderOverFlag()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#aad909acd21e17b8073d5d9dfb8892ccb">FSM.c</a>, <a class="el" href="_f_s_m__public_8h.html#aad909acd21e17b8073d5d9dfb8892ccb">FSM_public.h</a></li>
<li>_getPreloaderOverFlag()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a704103961964dbb8582b59fd161a3348">FSM.c</a>, <a class="el" href="_f_s_m__public_8h.html#a704103961964dbb8582b59fd161a3348">FSM_public.h</a></li>
<li>_preloaderGetReady()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a6e2a8d16f390efeaecc8938ec8f2e728">FSM.c</a>, <a class="el" href="_f_s_m__public_8h.html#a6e2a8d16f390efeaecc8938ec8f2e728">FSM_public.h</a></li>
<li>_preloadIn()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a9c285ac5bbad90b0b04de18d393cf4ce">FSM.c</a>, <a class="el" href="_f_s_m__public_8h.html#a9c285ac5bbad90b0b04de18d393cf4ce">FSM_public.h</a></li>
<li>_State&#160;:&#160;<a class="el" href="template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855b">templateFSM_private.h</a></li>
</ul>
<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>ClearPreloaderOverFlag&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#ac11e3ebda7ba02fc42ac5de33fcfd148">FSM_public.h</a></li>
<li>Count_State&#160;:&#160;<a class="el" href="template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855ba1413c9e060de9405cf1898973fc25394">templateFSM_private.h</a></li>
<li>createTemplateFSM()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#ab0fc4d91dbcaaffccd8f14e56173d696">templateFSM.c</a>, <a class="el" href="template_f_s_m_8h.html#ab0fc4d91dbcaaffccd8f14e56173d696">templateFSM.h</a></li>
</ul>
<h3><a id="index_d" name="index_d"></a>- d -</h3><ul>
<li>DEFAULT_STATE&#160;:&#160;<a class="el" href="template_f_s_m__private_8h.html#af93d7c80faa6ebd086460cde2d5dd27e">templateFSM_private.h</a></li>
</ul>
<h3><a id="index_f" name="index_f"></a>- f -</h3><ul>
<li>FSMDataLoader&#160;:&#160;<a class="el" href="_f_s_m__private_8h.html#a9116b0a24810b38fafae2fb986517432">FSM_private.h</a></li>
<li>FSMHandler&#160;:&#160;<a class="el" href="_f_s_m__private_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba">FSM_private.h</a>, <a class="el" href="_f_s_m__protected_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba">FSM_protected.h</a></li>
<li>FSMPrivateVars&#160;:&#160;<a class="el" href="_f_s_m__private_8h.html#a51a08a9c63b45851707caacfafca8cf9">FSM_private.h</a></li>
<li>FSMPureVtbl&#160;:&#160;<a class="el" href="_f_s_m__protected_8h.html#a5cfbf21b07540615b7ac4ea49a60b037">FSM_protected.h</a></li>
<li>FSMSignals&#160;:&#160;<a class="el" href="_f_s_m__private_8h.html#aa8470b4675b81ea69519ae6222c77e3f">FSM_private.h</a>, <a class="el" href="_f_s_m__protected_8h.html#aa8470b4675b81ea69519ae6222c77e3f">FSM_protected.h</a></li>
</ul>
<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>GetData&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#a336c6a01ee8af1e00bd175553788ec63">FSM_public.h</a></li>
<li>GetPreloaderOverFlag&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#aef66ec3c44c151b23fbc98c10c514d32">FSM_public.h</a></li>
</ul>
<h3><a id="index_i" name="index_i"></a>- i -</h3><ul>
<li>Idle&#160;:&#160;<a class="el" href="template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855bad3fa9ae9431d6cb1772f9d9df48cab19">templateFSM_private.h</a></li>
<li>Idle_Signal&#160;:&#160;<a class="el" href="_f_s_m__protected_8h.html#addd5868b6424b70247fe4c8e5b7af29e">FSM_protected.h</a></li>
<li>initData()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#a5ebc219bfad056d35b189b8e6fa94896">templateFSM.c</a></li>
<li>initDataLoader()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#a8b945e9059bb82bf66884af5133eb898">templateFSM.c</a></li>
</ul>
<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>loadExternalData()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#a9e6eba3b03d1ff4c504705b2da864cb3">templateFSM.c</a></li>
</ul>
<h3><a id="index_n" name="index_n"></a>- n -</h3><ul>
<li>newFMSPrivateVars()&#160;:&#160;<a class="el" href="_f_s_m__private_8h.html#ac817972fed8a0babe2356c890f960e75">FSM_private.h</a></li>
</ul>
<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>preload()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a7fc6a4715e8cbd7660788fd9c59cb417">FSM.c</a></li>
<li>PreloaderGetReady&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#aa4b1ff528d718db75faeba03a845fe46">FSM_public.h</a></li>
</ul>
<h3><a id="index_r" name="index_r"></a>- r -</h3><ul>
<li>resetSignals()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#a7ae1c0974bb8e7f8b00f959a17d91f60">templateFSM.c</a></li>
</ul>
<h3><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>setNextState()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a6b596586b33f46c312a7088e8352d226">FSM.c</a></li>
<li>SetSignal&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#aee4d6cf9b551102cbb7cb2f3e1e65377">FSM_public.h</a></li>
<li>setupHandler()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#a48fc6ebf7882fb5d4437c4d64b96255b">templateFSM.c</a></li>
<li>Signal_A&#160;:&#160;<a class="el" href="template_f_s_m_8h.html#a62dbe2e9cfc18e5dc1229d428d794aa1acfabc94ee46cf07698eaa479452c78ee">templateFSM.h</a></li>
<li>State&#160;:&#160;<a class="el" href="template_f_s_m__private_8h.html#adc4b74d6f88de7c72d2e260e836d267f">templateFSM_private.h</a></li>
<li>step()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#ac23edf7d09bf4b52ca0cfbc1224c4c0d">templateFSM.c</a></li>
<li>Step&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#a6cea0d8653df195e4325754c662be6a4">FSM_public.h</a></li>
<li>stepBaseFSM()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a9bab0f8eedb805136ee573eac09b6ebb">FSM.c</a>, <a class="el" href="_f_s_m__protected_8h.html#a9bab0f8eedb805136ee573eac09b6ebb">FSM_protected.h</a></li>
</ul>
<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
<li>TemplateFSM_Input&#160;:&#160;<a class="el" href="template_f_s_m_8h.html#ab0325ef0b5aef6334743cdd7c1d70bd9">templateFSM.h</a></li>
<li>TemplateFSMExternalData&#160;:&#160;<a class="el" href="template_f_s_m_8h.html#ad30e63631e0a6c61ac9cc9a47e31a5a5">templateFSM.h</a></li>
<li>TemplateFSMInnerData&#160;:&#160;<a class="el" href="template_f_s_m_8h.html#adfdfb9e9cda040324f0952d1e8b80e05">templateFSM.h</a></li>
<li>TemplateFSMSignals&#160;:&#160;<a class="el" href="template_f_s_m_8h.html#a62dbe2e9cfc18e5dc1229d428d794aa1">templateFSM.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,122 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('globals_defs.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented macros with links to the documentation:</div><ul>
<li>ClearPreloaderOverFlag&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#ac11e3ebda7ba02fc42ac5de33fcfd148">FSM_public.h</a></li>
<li>DEFAULT_STATE&#160;:&#160;<a class="el" href="template_f_s_m__private_8h.html#af93d7c80faa6ebd086460cde2d5dd27e">templateFSM_private.h</a></li>
<li>GetData&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#a336c6a01ee8af1e00bd175553788ec63">FSM_public.h</a></li>
<li>GetPreloaderOverFlag&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#aef66ec3c44c151b23fbc98c10c514d32">FSM_public.h</a></li>
<li>Idle_Signal&#160;:&#160;<a class="el" href="_f_s_m__protected_8h.html#addd5868b6424b70247fe4c8e5b7af29e">FSM_protected.h</a></li>
<li>PreloaderGetReady&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#aa4b1ff528d718db75faeba03a845fe46">FSM_public.h</a></li>
<li>SetSignal&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#aee4d6cf9b551102cbb7cb2f3e1e65377">FSM_public.h</a></li>
<li>Step&#160;:&#160;<a class="el" href="_f_s_m__public_8h.html#a6cea0d8653df195e4325754c662be6a4">FSM_public.h</a></li>
<li>TemplateFSM_Input&#160;:&#160;<a class="el" href="template_f_s_m_8h.html#ab0325ef0b5aef6334743cdd7c1d70bd9">templateFSM.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,115 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('globals_enum.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented enums with links to the documentation:</div><ul>
<li>_State&#160;:&#160;<a class="el" href="template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855b">templateFSM_private.h</a></li>
<li>TemplateFSMSignals&#160;:&#160;<a class="el" href="template_f_s_m_8h.html#a62dbe2e9cfc18e5dc1229d428d794aa1">templateFSM.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,116 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('globals_eval.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented enum values with links to the documentation:</div><ul>
<li>Count_State&#160;:&#160;<a class="el" href="template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855ba1413c9e060de9405cf1898973fc25394">templateFSM_private.h</a></li>
<li>Idle&#160;:&#160;<a class="el" href="template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855bad3fa9ae9431d6cb1772f9d9df48cab19">templateFSM_private.h</a></li>
<li>Signal_A&#160;:&#160;<a class="el" href="template_f_s_m_8h.html#a62dbe2e9cfc18e5dc1229d428d794aa1acfabc94ee46cf07698eaa479452c78ee">templateFSM.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,128 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('globals_func.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented functions with links to the documentation:</div><ul>
<li>_clearPreloaderOverFlag()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#aad909acd21e17b8073d5d9dfb8892ccb">FSM.c</a>, <a class="el" href="_f_s_m__public_8h.html#aad909acd21e17b8073d5d9dfb8892ccb">FSM_public.h</a></li>
<li>_getPreloaderOverFlag()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a704103961964dbb8582b59fd161a3348">FSM.c</a>, <a class="el" href="_f_s_m__public_8h.html#a704103961964dbb8582b59fd161a3348">FSM_public.h</a></li>
<li>_preloaderGetReady()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a6e2a8d16f390efeaecc8938ec8f2e728">FSM.c</a>, <a class="el" href="_f_s_m__public_8h.html#a6e2a8d16f390efeaecc8938ec8f2e728">FSM_public.h</a></li>
<li>_preloadIn()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a9c285ac5bbad90b0b04de18d393cf4ce">FSM.c</a>, <a class="el" href="_f_s_m__public_8h.html#a9c285ac5bbad90b0b04de18d393cf4ce">FSM_public.h</a></li>
<li>createTemplateFSM()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#ab0fc4d91dbcaaffccd8f14e56173d696">templateFSM.c</a>, <a class="el" href="template_f_s_m_8h.html#ab0fc4d91dbcaaffccd8f14e56173d696">templateFSM.h</a></li>
<li>initData()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#a5ebc219bfad056d35b189b8e6fa94896">templateFSM.c</a></li>
<li>initDataLoader()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#a8b945e9059bb82bf66884af5133eb898">templateFSM.c</a></li>
<li>loadExternalData()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#a9e6eba3b03d1ff4c504705b2da864cb3">templateFSM.c</a></li>
<li>newFMSPrivateVars()&#160;:&#160;<a class="el" href="_f_s_m__private_8h.html#ac817972fed8a0babe2356c890f960e75">FSM_private.h</a></li>
<li>preload()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a7fc6a4715e8cbd7660788fd9c59cb417">FSM.c</a></li>
<li>resetSignals()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#a7ae1c0974bb8e7f8b00f959a17d91f60">templateFSM.c</a></li>
<li>setNextState()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a6b596586b33f46c312a7088e8352d226">FSM.c</a></li>
<li>setupHandler()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#a48fc6ebf7882fb5d4437c4d64b96255b">templateFSM.c</a></li>
<li>step()&#160;:&#160;<a class="el" href="template_f_s_m_8c.html#ac23edf7d09bf4b52ca0cfbc1224c4c0d">templateFSM.c</a></li>
<li>stepBaseFSM()&#160;:&#160;<a class="el" href="_f_s_m_8c.html#a9bab0f8eedb805136ee573eac09b6ebb">FSM.c</a>, <a class="el" href="_f_s_m__protected_8h.html#a9bab0f8eedb805136ee573eac09b6ebb">FSM_protected.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,121 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('globals_type.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented typedefs with links to the documentation:</div><ul>
<li>FSMDataLoader&#160;:&#160;<a class="el" href="_f_s_m__private_8h.html#a9116b0a24810b38fafae2fb986517432">FSM_private.h</a></li>
<li>FSMHandler&#160;:&#160;<a class="el" href="_f_s_m__private_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba">FSM_private.h</a>, <a class="el" href="_f_s_m__protected_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba">FSM_protected.h</a></li>
<li>FSMPrivateVars&#160;:&#160;<a class="el" href="_f_s_m__private_8h.html#a51a08a9c63b45851707caacfafca8cf9">FSM_private.h</a></li>
<li>FSMPureVtbl&#160;:&#160;<a class="el" href="_f_s_m__protected_8h.html#a5cfbf21b07540615b7ac4ea49a60b037">FSM_protected.h</a></li>
<li>FSMSignals&#160;:&#160;<a class="el" href="_f_s_m__private_8h.html#aa8470b4675b81ea69519ae6222c77e3f">FSM_private.h</a>, <a class="el" href="_f_s_m__protected_8h.html#aa8470b4675b81ea69519ae6222c77e3f">FSM_protected.h</a></li>
<li>State&#160;:&#160;<a class="el" href="template_f_s_m__private_8h.html#adc4b74d6f88de7c72d2e260e836d267f">templateFSM_private.h</a></li>
<li>TemplateFSMExternalData&#160;:&#160;<a class="el" href="template_f_s_m_8h.html#ad30e63631e0a6c61ac9cc9a47e31a5a5">templateFSM.h</a></li>
<li>TemplateFSMInnerData&#160;:&#160;<a class="el" href="template_f_s_m_8h.html#adfdfb9e9cda040324f0952d1e8b80e05">templateFSM.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,127 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('index.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">状态机框架 Documentation</div></div>
</div><!--header-->
<div class="contents">
<ul><li><a href="index.html"><span>Main&#160;Page</span></a>
</li><li><a href="pages.html"><span>Related&#160;Pages</span></a>
</li><li><a href="annotated.html"><span>Data&#160;Structures</span></a>
<ul><li><a href="annotated.html"><span>Data&#160;Structures</span></a>
</li><li><a href="classes.html"><span>Data&#160;Structure&#160;Index</span></a>
</li><li><a href="functions.html"><span>Data&#160;Fields</span></a>
</li></ul>
</li><li><a href="files.html"><span>Files</span></a>
<ul><li><a href="files.html"><span>File&#160;List</span></a>
</li><li><a href="globals.html"><span>Globals</span></a>
</li></ul>
</li></ul>
<a href="doxygen_crawl.html"/>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

34
vscode/manual/html/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,170 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/keytest/keyFSM.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('key_f_s_m_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">keyFSM.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef __KEY_FSM_H_</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define __KEY_FSM_H_</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#define KeyFSM_Input(pFSM) (KeyIn *)_preloadIn((FSM *)pFSM)</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="keyword">typedef</span> <span class="keyword">enum</span> _keyIn{</div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> pUp,</div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> pDown,</div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span>}KeyIn;</div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="keyword">typedef</span> <span class="keyword">enum</span> _keyOut{</div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> Idle,</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> Down,</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> Hold,</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> Down_2times,</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> Down_3times,</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span>}KeyOut;</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="keyword">const</span> <span class="keyword">static</span> <span class="keywordtype">char</span> *keyStr[] = </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span>{</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="stringliteral">&quot;Idle&quot;</span>,</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="stringliteral">&quot;Down&quot;</span>,</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="stringliteral">&quot;Hold&quot;</span>,</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="stringliteral">&quot;Down_2times&quot;</span>,</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="stringliteral">&quot;Down_3times&quot;</span>,</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span>};</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">typedef</span> <span class="keyword">struct </span>_keyFSMExternalData</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span>{</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> KeyIn in;</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span>}KeyFSMExternalData;</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="keyword">typedef</span> <span class="keyword">struct </span>_keyFSMInternalData</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span>{</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordtype">int</span> countDelay;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">int</span> countMultiDown;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> KeyOut out;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>}KeyFSMInternalData;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="keyword">typedef</span> <span class="keyword">struct </span>_keyFSMData</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span>{</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> KeyFSMExternalData external;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> KeyFSMInternalData internal;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>}KeyFSMData;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="keyword">typedef</span> <span class="keyword">struct </span>_KeyFSM KeyFSM;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span>KeyFSM *createKeyFSM();</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_8a682e2342309b53ef6d16f9472268bd.html">keytest</a></li><li class="navelem"><b>keyFSM.h</b></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,393 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/keytest/keyFSM_private.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('key_f_s_m__private_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">keyFSM_private.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef __KEY_PRIVATE_FSM_H_</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define __KEY_PRIVATE_FSM_H_</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &quot;<a class="code" href="_f_s_m__protected_8h.html">FSM_protected.h</a>&quot;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &quot;keyFSM.h&quot;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &lt;assert.h&gt;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="keyword">extern</span> KeyIn keystat;</div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">/* </span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> 继承基类</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> */</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="keyword">typedef</span> <span class="keyword">struct </span>_KeyFSM</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span>{ </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// 继承父类</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> FSM base;</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span>}KeyFSM;</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">/* </span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> 状态和对应的 action, exit, during 函数</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> */</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="keyword">typedef</span> <span class="keyword">enum</span> _State</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span>{</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> Idle_State,</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> Waiting,</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> DownDebouncing,</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> Downing,</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> Holding,</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> HoldUpDebouncing,</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> UpDebouncing,</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> MultiDownWaiting,</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> MultiDowning,</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> MultiDownDebouncing,</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> Count_State,</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span>} State;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="preprocessor">#define DEFAULT_STATE Waiting</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">/* 下一个状态选择函数 */</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="keyword">static</span> State selectNextStateFcn(Waiting)(KeyFSMData *data){</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">if</span>(data-&gt;external.in == Down){</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> FSM_LOG(<span class="stringliteral">&quot; 物理按键按下 &quot;</span>);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordflow">return</span> DownDebouncing;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> }</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">return</span> Idle_State;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span>}</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="keyword">static</span> State selectNextStateFcn(DownDebouncing)(KeyFSMData *data){</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">if</span>(data-&gt;external.in == pUp){</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> FSM_LOG(<span class="stringliteral">&quot; 物理按键松开 &quot;</span>);</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">return</span> Waiting;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> }</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data-&gt;internal.countDelay == 5){</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">return</span> Downing;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> }</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">return</span> Idle_State;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span>}</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="keyword">static</span> State selectNextStateFcn(Downing)(KeyFSMData *data){</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">if</span>(data-&gt;external.in == pUp){</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> FSM_LOG(<span class="stringliteral">&quot; 物理按键松开 &quot;</span>);</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">return</span> UpDebouncing;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> }</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data-&gt;internal.countDelay == 10){</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keywordflow">return</span> Holding;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> }</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">return</span> Idle_State;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span>}</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="keyword">static</span> State selectNextStateFcn(Holding)(KeyFSMData *data){</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordflow">if</span>(data-&gt;external.in == pUp){</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> FSM_LOG(<span class="stringliteral">&quot; 物理按键松开 &quot;</span>);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordflow">return</span> HoldUpDebouncing;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> }</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">return</span> Idle_State;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span>}</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="keyword">static</span> State selectNextStateFcn(HoldUpDebouncing)(KeyFSMData *data){</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">if</span>(data-&gt;external.in == Down){</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> FSM_LOG(<span class="stringliteral">&quot; 物理按键按下 &quot;</span>);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">return</span> Holding;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> }</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data-&gt;internal.countDelay == 5){</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">return</span> Waiting;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> }</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">return</span> Idle_State;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span>}</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="keyword">static</span> State selectNextStateFcn(UpDebouncing)(KeyFSMData *data){</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">if</span>(data-&gt;external.in == Down){</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> FSM_LOG(<span class="stringliteral">&quot; 物理按键按下 &quot;</span>);</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">if</span>(data-&gt;internal.countMultiDown){</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">return</span> MultiDowning;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">else</span>{</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">return</span> Downing;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> }</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> }</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data-&gt;internal.countDelay == 5){</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordflow">return</span> MultiDownWaiting;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> }</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">return</span> Idle_State;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span>}</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="keyword">static</span> State selectNextStateFcn(MultiDownWaiting)(KeyFSMData *data){</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">if</span>(data-&gt;external.in == Down){</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> FSM_LOG(<span class="stringliteral">&quot; 物理按键按下 &quot;</span>);</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">return</span> MultiDownDebouncing;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> }</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data-&gt;internal.countDelay == 5){</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">return</span> Waiting;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> }</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> Idle_State;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span>}</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="keyword">static</span> State selectNextStateFcn(MultiDowning)(KeyFSMData *data){</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordflow">if</span>(data-&gt;external.in == pUp){</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> FSM_LOG(<span class="stringliteral">&quot; 物理按键松开 &quot;</span>);</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="keywordflow">return</span> UpDebouncing;</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> }</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">return</span> Idle_State;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span>}</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="keyword">static</span> State selectNextStateFcn(MultiDownDebouncing)(KeyFSMData *data){</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">if</span>(data-&gt;external.in == pUp){</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> FSM_LOG(<span class="stringliteral">&quot; 物理按键松开 &quot;</span>);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">return</span> MultiDownWaiting;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> }</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data-&gt;internal.countDelay == 5){</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="keywordflow">return</span> MultiDowning;</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> }</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">return</span> Idle_State;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span>}</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment">/* 对应的 action, exit, during 函数 */</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="keyword">static</span> <span class="keywordtype">void</span> actionFcn(enter, Waiting)(KeyFSMData* data){</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> data-&gt;internal.out = Idle;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> data-&gt;internal.countDelay = 0;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> data-&gt;internal.countMultiDown = 0;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span>}</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="keyword">static</span> <span class="keywordtype">void</span> actionFcn(during, DownDebouncing)(KeyFSMData* data)</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span>{</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> data-&gt;internal.countDelay++;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> FSM_LOG(<span class="stringliteral">&quot; during开启消抖 &quot;</span>);</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span>}</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="keyword">static</span> <span class="keywordtype">void</span> actionFcn(during, Downing)(KeyFSMData* data)</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span>{</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> data-&gt;internal.countDelay++;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> data-&gt;internal.out = Idle;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span>}</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="keyword">static</span> <span class="keywordtype">void</span> actionFcn(during, UpDebouncing)(KeyFSMData* data){</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> data-&gt;internal.countDelay++;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> FSM_LOG(<span class="stringliteral">&quot; during松开消抖 &quot;</span>);</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span>}</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="keyword">static</span> <span class="keywordtype">void</span> actionFcn(during, Holding)(KeyFSMData* data){</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> data-&gt;internal.out = Idle;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> data-&gt;internal.countDelay++;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keywordflow">if</span>(data-&gt;internal.countDelay == 2){</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> data-&gt;internal.out = Hold;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> data-&gt;internal.countDelay = 0;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> }</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span>}</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="keyword">static</span> <span class="keywordtype">void</span> actionFcn(exit, Holding)(KeyFSMData* data){</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> data-&gt;internal.out = Idle;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span>}</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="keyword">static</span> <span class="keywordtype">void</span> actionFcn(during, MultiDownWaiting)(KeyFSMData* data){</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> data-&gt;internal.countDelay++;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> FSM_LOG(<span class="stringliteral">&quot; during多击等待 &quot;</span>);</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span>}</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> </div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="keyword">static</span> <span class="keywordtype">void</span> actionFcn(during, HoldUpDebouncing)(KeyFSMData* data)</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span>{</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> data-&gt;internal.countDelay++;</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span>}</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> </div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="keyword">static</span> <span class="keywordtype">void</span> actionFcn(during, MultiDownDebouncing)(KeyFSMData* data)</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span>{</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> data-&gt;internal.countDelay++;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span>}</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="comment">/* 转移函数 */</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="comment">/* -------------------------------------------------------------------------- */</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="keywordtype">void</span> transitionGeneralAction(KeyFSMData *data){</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> data-&gt;internal.countDelay = 0;</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span>}</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> </div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="keyword">static</span> State transitionHandler(DownDebouncing, Downing)(KeyFSMData* data){</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> data-&gt;internal.out = Down;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span>}</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> </div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> </div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="keyword">static</span> State transitionHandler(UpDebouncing, MultiDownWaiting)(KeyFSMData* data){</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> data-&gt;internal.out = Idle;</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> data-&gt;internal.countMultiDown++;</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span>}</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> </div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="keyword">static</span> State transitionHandler(MultiDownDebouncing, MultiDowning)(KeyFSMData* data){</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordflow">switch</span> (data-&gt;internal.countMultiDown + 1)</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> {</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">case</span> 2:</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> data-&gt;internal.out = Down_2times;</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordflow">case</span> 3:</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> data-&gt;internal.out = Down_3times;</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> </div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> printf(<span class="stringliteral">&quot;reach MultiDown Limit!\n&quot;</span>);</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> }</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> FSM_LOG(<span class="stringliteral">&quot; 多击%d &quot;</span>, data-&gt;internal.countMultiDown+1);</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span>}</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> </div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> </div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="keyword">static</span> State transitionHandler(Downing, Holding)(KeyFSMData* data){</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> data-&gt;internal.out = Hold;</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span>}</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="keyword">static</span> State transitionHandler(MultiDownWaiting, Waiting)(KeyFSMData* data){</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> data-&gt;internal.countMultiDown = 0;</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span>}</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> </div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> </div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="comment">/* </span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="comment"> 用户自定义事件选择逻辑—————————————————begin </span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="comment">*/</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="keyword">const</span> <span class="keyword">static</span> <span class="keywordtype">char</span> *stateStr[] = {</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="stringliteral">&quot;Idle&quot;</span>,</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="stringliteral">&quot;Waiting&quot;</span>,</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="stringliteral">&quot;DownDebouncing&quot;</span>,</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="stringliteral">&quot;Downing&quot;</span>,</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="stringliteral">&quot;Holding&quot;</span>,</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="stringliteral">&quot;HoldUpDebouncing&quot;</span>,</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="stringliteral">&quot;UpDebouncing&quot;</span>,</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="stringliteral">&quot;MultiDownWaiting&quot;</span>,</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="stringliteral">&quot;MultiDowning&quot;</span>,</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="stringliteral">&quot;MultiDownDebouncing&quot;</span>,</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> };</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> </div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="keyword">static</span> <span class="keywordtype">void</span> printFSM(KeyFSM* pFSM){</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> KeyFSMData* data = pFSM-&gt;base.data;</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> FSM_LOG(<span class="stringliteral">&quot;KeyFSM: &quot;</span>);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> FSM_LOG(<span class="stringliteral">&quot;%d, 当前状态:%s, \t上一个下次事件:%s \t转移&quot;</span>, data-&gt;internal.countDelay, stateStr[getFSMCurState((FSM *)pFSM)], stateStr[getFSMNextState((FSM *)pFSM)]);</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span>}</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> </div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> </div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="a_f_s_m__protected_8h_html"><div class="ttname"><a href="_f_s_m__protected_8h.html">FSM_protected.h</a></div><div class="ttdoc">状态机框架的protected函数和变量在继承的子类中可使用在外界不可使用</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_8a682e2342309b53ef6d16f9472268bd.html">keytest</a></li><li class="navelem"><b>keyFSM_private.h</b></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<g>
<rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
<rect style="fill:#fcfcfc;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
<rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 582 B

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<g>
<rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
<rect style="fill:#000000;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
<rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

View File

@ -0,0 +1,149 @@
#nav-tree .children_ul {
margin:0;
padding:4px;
}
#nav-tree ul {
list-style:none outside none;
margin:0px;
padding:0px;
}
#nav-tree li {
white-space:nowrap;
margin:0px;
padding:0px;
}
#nav-tree .plus {
margin:0px;
}
#nav-tree .selected {
background-image: url('tab_a.png');
background-repeat:repeat-x;
color: var(--nav-text-active-color);
text-shadow: var(--nav-text-active-shadow);
}
#nav-tree .selected .arrow {
color: var(--nav-arrow-selected-color);
text-shadow: none;
}
#nav-tree img {
margin:0px;
padding:0px;
border:0px;
vertical-align: middle;
}
#nav-tree a {
text-decoration:none;
padding:0px;
margin:0px;
}
#nav-tree .label {
margin:0px;
padding:0px;
font: 12px var(--font-family-nav);
}
#nav-tree .label a {
padding:2px;
}
#nav-tree .selected a {
text-decoration:none;
color:var(--nav-text-active-color);
}
#nav-tree .children_ul {
margin:0px;
padding:0px;
}
#nav-tree .item {
margin:0px;
padding:0px;
}
#nav-tree {
padding: 0px 0px;
font-size:14px;
overflow:auto;
}
#doc-content {
overflow:auto;
display:block;
padding:0px;
margin:0px;
-webkit-overflow-scrolling : touch; /* iOS 5+ */
}
#side-nav {
padding:0 6px 0 0;
margin: 0px;
display:block;
position: absolute;
left: 0px;
width: $width;
overflow : hidden;
}
.ui-resizable .ui-resizable-handle {
display:block;
}
.ui-resizable-e {
background-image:var(--nav-splitbar-image);
background-size:100%;
background-repeat:repeat-y;
background-attachment: scroll;
cursor:ew-resize;
height:100%;
right:0;
top:0;
width:6px;
}
.ui-resizable-handle {
display:none;
font-size:0.1px;
position:absolute;
z-index:1;
}
#nav-tree-contents {
margin: 6px 0px 0px 0px;
}
#nav-tree {
background-repeat:repeat-x;
background-color: var(--nav-background-color);
-webkit-overflow-scrolling : touch; /* iOS 5+ */
}
#nav-sync {
position:absolute;
top:5px;
right:24px;
z-index:0;
}
#nav-sync img {
opacity:0.3;
}
#nav-sync img:hover {
opacity:0.9;
}
@media print
{
#nav-tree { display: none; }
div.ui-resizable-handle { display: none; position: relative; }
}

View File

@ -0,0 +1,482 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function initNavTree(toroot,relpath) {
let navTreeSubIndices = [];
const ARROW_DOWN = '&#9660;';
const ARROW_RIGHT = '&#9658;';
const NAVPATH_COOKIE_NAME = ''+'navpath';
const getData = function(varName) {
const i = varName.lastIndexOf('/');
const n = i>=0 ? varName.substring(i+1) : varName;
return eval(n.replace(/-/g,'_'));
}
const stripPath = function(uri) {
return uri.substring(uri.lastIndexOf('/')+1);
}
const stripPath2 = function(uri) {
const i = uri.lastIndexOf('/');
const s = uri.substring(i+1);
const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/);
return m ? uri.substring(i-6) : s;
}
const hashValue = function() {
return $(location).attr('hash').substring(1).replace(/[^\w-]/g,'');
}
const hashUrl = function() {
return '#'+hashValue();
}
const pathName = function() {
return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, '');
}
const storeLink = function(link) {
if (!$("#nav-sync").hasClass('sync')) {
Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0);
}
}
const deleteLink = function() {
Cookie.eraseSetting(NAVPATH_COOKIE_NAME);
}
const cachedLink = function() {
return Cookie.readSetting(NAVPATH_COOKIE_NAME,'');
}
const getScript = function(scriptName,func) {
const head = document.getElementsByTagName("head")[0];
const script = document.createElement('script');
script.id = scriptName;
script.type = 'text/javascript';
script.onload = func;
script.src = scriptName+'.js';
head.appendChild(script);
}
const createIndent = function(o,domNode,node) {
let level=-1;
let n = node;
while (n.parentNode) { level++; n=n.parentNode; }
if (node.childrenData) {
const imgNode = document.createElement("span");
imgNode.className = 'arrow';
imgNode.style.paddingLeft=(16*level).toString()+'px';
imgNode.innerHTML=ARROW_RIGHT;
node.plus_img = imgNode;
node.expandToggle = document.createElement("a");
node.expandToggle.href = "javascript:void(0)";
node.expandToggle.onclick = function() {
if (node.expanded) {
$(node.getChildrenUL()).slideUp("fast");
node.plus_img.innerHTML=ARROW_RIGHT;
node.expanded = false;
} else {
expandNode(o, node, false, true);
}
}
node.expandToggle.appendChild(imgNode);
domNode.appendChild(node.expandToggle);
} else {
let span = document.createElement("span");
span.className = 'arrow';
span.style.width = 16*(level+1)+'px';
span.innerHTML = '&#160;';
domNode.appendChild(span);
}
}
let animationInProgress = false;
const gotoAnchor = function(anchor,aname) {
let pos, docContent = $('#doc-content');
let ancParent = $(anchor.parent());
if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') ||
ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') ||
ancParent.is(':header')) {
pos = ancParent.position().top;
} else if (anchor.position()) {
pos = anchor.position().top;
}
if (pos) {
const dcOffset = docContent.offset().top;
const dcHeight = docContent.height();
const dcScrHeight = docContent[0].scrollHeight
const dcScrTop = docContent.scrollTop();
let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop));
animationInProgress = true;
docContent.animate({
scrollTop: pos + dcScrTop - dcOffset
},Math.max(50,Math.min(500,dist)),function() {
window.location.href=aname;
animationInProgress=false;
});
}
}
const newNode = function(o, po, text, link, childrenData, lastNode) {
const node = {
children : [],
childrenData : childrenData,
depth : po.depth + 1,
relpath : po.relpath,
isLast : lastNode,
li : document.createElement("li"),
parentNode : po,
itemDiv : document.createElement("div"),
labelSpan : document.createElement("span"),
label : document.createTextNode(text),
expanded : false,
childrenUL : null,
getChildrenUL : function() {
if (!this.childrenUL) {
this.childrenUL = document.createElement("ul");
this.childrenUL.className = "children_ul";
this.childrenUL.style.display = "none";
this.li.appendChild(node.childrenUL);
}
return node.childrenUL;
},
};
node.itemDiv.className = "item";
node.labelSpan.className = "label";
createIndent(o,node.itemDiv,node);
node.itemDiv.appendChild(node.labelSpan);
node.li.appendChild(node.itemDiv);
const a = document.createElement("a");
node.labelSpan.appendChild(a);
po.getChildrenUL().appendChild(node.li);
a.appendChild(node.label);
if (link) {
let url;
if (link.substring(0,1)=='^') {
url = link.substring(1);
link = url;
} else {
url = node.relpath+link;
}
a.className = stripPath(link.replace('#',':'));
if (link.indexOf('#')!=-1) {
const aname = '#'+link.split('#')[1];
const srcPage = stripPath(pathName());
const targetPage = stripPath(link.split('#')[0]);
a.href = srcPage!=targetPage ? url : aname;
a.onclick = function() {
storeLink(link);
aPPar = $(a).parent().parent();
if (!aPPar.hasClass('selected')) {
$('.item').removeClass('selected');
$('.item').removeAttr('id');
aPPar.addClass('selected');
aPPar.attr('id','selected');
}
const anchor = $(aname);
gotoAnchor(anchor,aname);
};
} else {
a.href = url;
a.onclick = () => storeLink(link);
}
} else if (childrenData != null) {
a.className = "nolink";
a.href = "javascript:void(0)";
a.onclick = node.expandToggle.onclick;
}
return node;
}
const showRoot = function() {
const headerHeight = $("#top").height();
const footerHeight = $("#nav-path").height();
const windowHeight = $(window).height() - headerHeight - footerHeight;
(function() { // retry until we can scroll to the selected item
try {
const navtree=$('#nav-tree');
navtree.scrollTo('#selected',100,{offset:-windowHeight/2});
} catch (err) {
setTimeout(arguments.callee, 0);
}
})();
}
const expandNode = function(o, node, imm, setFocus) {
if (node.childrenData && !node.expanded) {
if (typeof(node.childrenData)==='string') {
const varName = node.childrenData;
getScript(node.relpath+varName,function() {
node.childrenData = getData(varName);
expandNode(o, node, imm, setFocus);
});
} else {
if (!node.childrenVisited) {
getNode(o, node);
}
$(node.getChildrenUL()).slideDown("fast");
node.plus_img.innerHTML = ARROW_DOWN;
node.expanded = true;
if (setFocus) {
$(node.expandToggle).focus();
}
}
}
}
const glowEffect = function(n,duration) {
n.addClass('glow').delay(duration).queue(function(next) {
$(this).removeClass('glow');next();
});
}
const highlightAnchor = function() {
const aname = hashUrl();
const anchor = $(aname);
if (anchor.parent().attr('class')=='memItemLeft') {
let rows = $('.memberdecls tr[class$="'+hashValue()+'"]');
glowEffect(rows.children(),300); // member without details
} else if (anchor.parent().attr('class')=='fieldname') {
glowEffect(anchor.parent().parent(),1000); // enum value
} else if (anchor.parent().attr('class')=='fieldtype') {
glowEffect(anchor.parent().parent(),1000); // struct field
} else if (anchor.parent().is(":header")) {
glowEffect(anchor.parent(),1000); // section header
} else {
glowEffect(anchor.next(),1000); // normal member
}
gotoAnchor(anchor,aname);
}
const selectAndHighlight = function(hash,n) {
let a;
if (hash) {
const link=stripPath(pathName())+':'+hash.substring(1);
a=$('.item a[class$="'+link+'"]');
}
if (a && a.length) {
a.parent().parent().addClass('selected');
a.parent().parent().attr('id','selected');
highlightAnchor();
} else if (n) {
$(n.itemDiv).addClass('selected');
$(n.itemDiv).attr('id','selected');
}
let topOffset=5;
if ($('#nav-tree-contents .item:first').hasClass('selected')) {
topOffset+=25;
}
$('#nav-sync').css('top',topOffset+'px');
showRoot();
}
const showNode = function(o, node, index, hash) {
if (node && node.childrenData) {
if (typeof(node.childrenData)==='string') {
const varName = node.childrenData;
getScript(node.relpath+varName,function() {
node.childrenData = getData(varName);
showNode(o,node,index,hash);
});
} else {
if (!node.childrenVisited) {
getNode(o, node);
}
$(node.getChildrenUL()).css({'display':'block'});
node.plus_img.innerHTML = ARROW_DOWN;
node.expanded = true;
const n = node.children[o.breadcrumbs[index]];
if (index+1<o.breadcrumbs.length) {
showNode(o,n,index+1,hash);
} else if (typeof(n.childrenData)==='string') {
const varName = n.childrenData;
getScript(n.relpath+varName,function() {
n.childrenData = getData(varName);
node.expanded=false;
showNode(o,node,index,hash); // retry with child node expanded
});
} else {
const rootBase = stripPath(o.toroot.replace(/\..+$/, ''));
if (rootBase=="index" || rootBase=="pages" || rootBase=="search") {
expandNode(o, n, true, false);
}
selectAndHighlight(hash,n);
}
}
} else {
selectAndHighlight(hash);
}
}
const removeToInsertLater = function(element) {
const parentNode = element.parentNode;
const nextSibling = element.nextSibling;
parentNode.removeChild(element);
return function() {
if (nextSibling) {
parentNode.insertBefore(element, nextSibling);
} else {
parentNode.appendChild(element);
}
};
}
const getNode = function(o, po) {
const insertFunction = removeToInsertLater(po.li);
po.childrenVisited = true;
const l = po.childrenData.length-1;
for (let i in po.childrenData) {
const nodeData = po.childrenData[i];
po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], i==l);
}
insertFunction();
}
const gotoNode = function(o,subIndex,root,hash,relpath) {
const nti = navTreeSubIndices[subIndex][root+hash];
o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]);
if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index
navTo(o,NAVTREE[0][1],"",relpath);
$('.item').removeClass('selected');
$('.item').removeAttr('id');
}
if (o.breadcrumbs) {
o.breadcrumbs.unshift(0); // add 0 for root node
showNode(o, o.node, 0, hash);
}
}
const navTo = function(o,root,hash,relpath) {
const link = cachedLink();
if (link) {
const parts = link.split('#');
root = parts[0];
hash = parts.length>1 ? '#'+parts[1].replace(/[^\w-]/g,'') : '';
}
if (hash.match(/^#l\d+$/)) {
const anchor=$('a[name='+hash.substring(1)+']');
glowEffect(anchor.parent(),1000); // line number
hash=''; // strip line number anchors
}
const url=root+hash;
let i=-1;
while (NAVTREEINDEX[i+1]<=url) i++;
if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index
if (navTreeSubIndices[i]) {
gotoNode(o,i,root,hash,relpath)
} else {
getScript(relpath+'navtreeindex'+i,function() {
navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);
if (navTreeSubIndices[i]) {
gotoNode(o,i,root,hash,relpath);
}
});
}
}
const showSyncOff = function(n,relpath) {
n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>');
}
const showSyncOn = function(n,relpath) {
n.html('<img src="'+relpath+'sync_on.png" title="'+SYNCONMSG+'"/>');
}
const o = {
toroot : toroot,
node : {
childrenData : NAVTREE,
children : [],
childrenUL : document.createElement("ul"),
getChildrenUL : function() { return this.childrenUL },
li : document.getElementById("nav-tree-contents"),
depth : 0,
relpath : relpath,
expanded : false,
isLast : true,
plus_img : document.createElement("span"),
},
};
o.node.li.appendChild(o.node.childrenUL);
o.node.plus_img.className = 'arrow';
o.node.plus_img.innerHTML = ARROW_RIGHT;
const navSync = $('#nav-sync');
if (cachedLink()) {
showSyncOff(navSync,relpath);
navSync.removeClass('sync');
} else {
showSyncOn(navSync,relpath);
}
navSync.click(() => {
const navSync = $('#nav-sync');
if (navSync.hasClass('sync')) {
navSync.removeClass('sync');
showSyncOff(navSync,relpath);
storeLink(stripPath2(pathName())+hashUrl());
} else {
navSync.addClass('sync');
showSyncOn(navSync,relpath);
deleteLink();
}
});
navTo(o,toroot,hashUrl(),relpath);
showRoot();
$(window).bind('hashchange', () => {
if (window.location.hash && window.location.hash.length>1) {
let a;
if ($(location).attr('hash')) {
const clslink=stripPath(pathName())+':'+hashValue();
a=$('.item a[class$="'+clslink.replace(/</g,'\\3c ')+'"]');
}
if (a==null || !$(a).parent().parent().hasClass('selected')) {
$('.item').removeClass('selected');
$('.item').removeAttr('id');
}
const link=stripPath2(pathName());
navTo(o,link,hashUrl(),relpath);
} else if (!animationInProgress) {
$('#doc-content').scrollTop(0);
$('.item').removeClass('selected');
$('.item').removeAttr('id');
navTo(o,toroot,hashUrl(),relpath);
}
});
$("div.toc a[href]").click(function(e) {
e.preventDefault();
const aname = $(this).attr("href");
gotoAnchor($(aname),aname);
});
}
/* @license-end */

View File

@ -0,0 +1,57 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
var NAVTREE =
[
[ "状态机框架", "index.html", [
[ "Deprecated List", "deprecated.html", null ],
[ "Data Structures", "annotated.html", [
[ "Data Structures", "annotated.html", "annotated_dup" ],
[ "Data Structure Index", "classes.html", null ],
[ "Data Fields", "functions.html", [
[ "All", "functions.html", null ],
[ "Variables", "functions_vars.html", null ]
] ]
] ],
[ "Files", "files.html", [
[ "File List", "files.html", "files_dup" ],
[ "Globals", "globals.html", [
[ "All", "globals.html", null ],
[ "Functions", "globals_func.html", null ],
[ "Typedefs", "globals_type.html", null ],
[ "Enumerations", "globals_enum.html", null ],
[ "Enumerator", "globals_eval.html", null ],
[ "Macros", "globals_defs.html", null ]
] ]
] ]
] ]
];
var NAVTREEINDEX =
[
"_f_s_m_8c.html"
];
var SYNCONMSG = 'click to disable panel synchronisation';
var SYNCOFFMSG = 'click to enable panel synchronisation';

View File

@ -0,0 +1,115 @@
var NAVTREEINDEX0 =
{
"_f_s_m_8c.html":[2,0,0,0,0],
"_f_s_m_8c.html#a6b596586b33f46c312a7088e8352d226":[2,0,0,0,0,0],
"_f_s_m_8c.html#a6e2a8d16f390efeaecc8938ec8f2e728":[2,0,0,0,0,4],
"_f_s_m_8c.html#a704103961964dbb8582b59fd161a3348":[2,0,0,0,0,5],
"_f_s_m_8c.html#a7fc6a4715e8cbd7660788fd9c59cb417":[2,0,0,0,0,1],
"_f_s_m_8c.html#a9bab0f8eedb805136ee573eac09b6ebb":[2,0,0,0,0,2],
"_f_s_m_8c.html#a9c285ac5bbad90b0b04de18d393cf4ce":[2,0,0,0,0,3],
"_f_s_m_8c.html#aad909acd21e17b8073d5d9dfb8892ccb":[2,0,0,0,0,6],
"_f_s_m__private_8h.html":[2,0,0,0,1],
"_f_s_m__private_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba":[2,0,0,0,1,2],
"_f_s_m__private_8h.html#a51a08a9c63b45851707caacfafca8cf9":[2,0,0,0,1,5],
"_f_s_m__private_8h.html#a9116b0a24810b38fafae2fb986517432":[2,0,0,0,1,4],
"_f_s_m__private_8h.html#aa8470b4675b81ea69519ae6222c77e3f":[2,0,0,0,1,3],
"_f_s_m__private_8h.html#ac817972fed8a0babe2356c890f960e75":[2,0,0,0,1,6],
"_f_s_m__private_8h_source.html":[2,0,0,0,1],
"_f_s_m__protected_8h.html":[2,0,0,0,2],
"_f_s_m__protected_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba":[2,0,0,0,2,4],
"_f_s_m__protected_8h.html#a5cfbf21b07540615b7ac4ea49a60b037":[2,0,0,0,2,6],
"_f_s_m__protected_8h.html#a9bab0f8eedb805136ee573eac09b6ebb":[2,0,0,0,2,7],
"_f_s_m__protected_8h.html#aa8470b4675b81ea69519ae6222c77e3f":[2,0,0,0,2,5],
"_f_s_m__protected_8h.html#addd5868b6424b70247fe4c8e5b7af29e":[2,0,0,0,2,3],
"_f_s_m__protected_8h_source.html":[2,0,0,0,2],
"_f_s_m__public_8h.html":[2,0,0,0,3],
"_f_s_m__public_8h.html#a336c6a01ee8af1e00bd175553788ec63":[2,0,0,0,3,1],
"_f_s_m__public_8h.html#a6cea0d8653df195e4325754c662be6a4":[2,0,0,0,3,0],
"_f_s_m__public_8h.html#a6e2a8d16f390efeaecc8938ec8f2e728":[2,0,0,0,3,7],
"_f_s_m__public_8h.html#a704103961964dbb8582b59fd161a3348":[2,0,0,0,3,8],
"_f_s_m__public_8h.html#a9c285ac5bbad90b0b04de18d393cf4ce":[2,0,0,0,3,6],
"_f_s_m__public_8h.html#aa4b1ff528d718db75faeba03a845fe46":[2,0,0,0,3,3],
"_f_s_m__public_8h.html#aad909acd21e17b8073d5d9dfb8892ccb":[2,0,0,0,3,9],
"_f_s_m__public_8h.html#ac11e3ebda7ba02fc42ac5de33fcfd148":[2,0,0,0,3,5],
"_f_s_m__public_8h.html#aee4d6cf9b551102cbb7cb2f3e1e65377":[2,0,0,0,3,2],
"_f_s_m__public_8h.html#aef66ec3c44c151b23fbc98c10c514d32":[2,0,0,0,3,4],
"_f_s_m__public_8h_source.html":[2,0,0,0,3],
"annotated.html":[1,0],
"child_f_s_m_8h_source.html":[2,0,0,1,0],
"child_f_s_m__private_8h_source.html":[2,0,0,1,1],
"classes.html":[1,1],
"deprecated.html":[0],
"dir_7883619b7fc78d5d5f504b4a82c84a2d.html":[2,0,0,3],
"dir_80fe18a48ef62b4daee0a25030c2866c.html":[2,0,0,0],
"dir_8a682e2342309b53ef6d16f9472268bd.html":[2,0,0,2],
"dir_b967bec748219e2f7c7f19a67051e0d6.html":[2,0,0,1],
"dir_d39bfbf75725f6289f30e50b2f1305f4.html":[2,0,0],
"files.html":[2,0],
"functions.html":[1,2,0],
"functions_vars.html":[1,2,1],
"globals.html":[2,1,0],
"globals_defs.html":[2,1,5],
"globals_enum.html":[2,1,3],
"globals_eval.html":[2,1,4],
"globals_func.html":[2,1,1],
"globals_type.html":[2,1,2],
"index.html":[],
"key_f_s_m_8h_source.html":[2,0,0,2,0],
"key_f_s_m__private_8h_source.html":[2,0,0,2,1],
"pages.html":[],
"parent_f_s_m_8h_source.html":[2,0,0,1,2],
"struct_f_s_m_data_loader.html":[1,0,0],
"struct_f_s_m_handler.html":[1,0,1],
"struct_f_s_m_handler.html#a04721875a9baabc8a51c54a668db9a2c":[1,0,1,5],
"struct_f_s_m_handler.html#a934ff7d1a2f7714694b8a2927b5f8451":[1,0,1,0],
"struct_f_s_m_handler.html#a976b4147d1c0c9aeb4a61c3cc85376bf":[1,0,1,6],
"struct_f_s_m_handler.html#aa733ab89a48f8a63b4afb623b4d6be90":[1,0,1,3],
"struct_f_s_m_handler.html#ab199071e132b4409d71883155e6b81f2":[1,0,1,2],
"struct_f_s_m_handler.html#ac3b9fc077f8ba0368e8cba02a890aa2f":[1,0,1,1],
"struct_f_s_m_handler.html#ad3506a53c3ee76655a117f7db0da7d3d":[1,0,1,4],
"struct_f_s_m_private_vars.html":[1,0,2],
"struct_f_s_m_private_vars.html#a1e013b34f3da19006fdaef781e386ba7":[1,0,2,2],
"struct_f_s_m_private_vars.html#a38fc9622245dd2e2272d0511a603db69":[1,0,2,5],
"struct_f_s_m_private_vars.html#a4312b61c7165398d2415c0794ac1fa8c":[1,0,2,3],
"struct_f_s_m_private_vars.html#a4cc735365b8c3946ff83d1984e2565fe":[1,0,2,1],
"struct_f_s_m_private_vars.html#a71ba0d8bee3f15ed5a0dd92dda0e0ed1":[1,0,2,8],
"struct_f_s_m_private_vars.html#a9f8a355881f1e3e990987090e6e9e37c":[1,0,2,0],
"struct_f_s_m_private_vars.html#ab14d89d4db1639abfab4a24f05cca6a7":[1,0,2,4],
"struct_f_s_m_private_vars.html#ac66fa0241dc6aa44e48e6b16811a8091":[1,0,2,6],
"struct_f_s_m_private_vars.html#ad20548555264a67dac6b18b757e01821":[1,0,2,7],
"struct_f_s_m_pure_vtbl.html":[1,0,3],
"struct_f_s_m_pure_vtbl.html#a24fea698707e18e2d84385bfca118db1":[1,0,3,1],
"struct_f_s_m_pure_vtbl.html#a4973df3b86e460a458c9edf4699aa68d":[1,0,3,2],
"struct_f_s_m_pure_vtbl.html#a58c666f5941e07c4a6ef054f1250dbd8":[1,0,3,4],
"struct_f_s_m_pure_vtbl.html#a5fe3628ecfac4830ad9f64b1439fe57d":[1,0,3,0],
"struct_f_s_m_pure_vtbl.html#ae326d855d6a29d089f312d965bf032f2":[1,0,3,5],
"struct_f_s_m_pure_vtbl.html#aebfd1efad93210ac02249a81159d1472":[1,0,3,3],
"struct_f_s_m_signals.html":[1,0,4],
"struct_f_s_m_signals.html#a0ed78b85dbee15c4928fc85546eaa10d":[1,0,4,1],
"struct_f_s_m_signals.html#a9586b8cdc522f49e9bc62d2b67a1d79b":[1,0,4,0],
"struct_template_f_s_m_external_data.html":[1,0,5],
"struct_template_f_s_m_inner_data.html":[1,0,6],
"template_f_s_m_8c.html":[2,0,0,3,0],
"template_f_s_m_8c.html#a48fc6ebf7882fb5d4437c4d64b96255b":[2,0,0,3,0,4],
"template_f_s_m_8c.html#a5ebc219bfad056d35b189b8e6fa94896":[2,0,0,3,0,2],
"template_f_s_m_8c.html#a7ae1c0974bb8e7f8b00f959a17d91f60":[2,0,0,3,0,1],
"template_f_s_m_8c.html#a8b945e9059bb82bf66884af5133eb898":[2,0,0,3,0,3],
"template_f_s_m_8c.html#a9e6eba3b03d1ff4c504705b2da864cb3":[2,0,0,3,0,0],
"template_f_s_m_8c.html#ab0fc4d91dbcaaffccd8f14e56173d696":[2,0,0,3,0,6],
"template_f_s_m_8c.html#ac23edf7d09bf4b52ca0cfbc1224c4c0d":[2,0,0,3,0,5],
"template_f_s_m_8h.html":[2,0,0,3,1],
"template_f_s_m_8h.html#a62dbe2e9cfc18e5dc1229d428d794aa1":[2,0,0,3,1,5],
"template_f_s_m_8h.html#a62dbe2e9cfc18e5dc1229d428d794aa1acfabc94ee46cf07698eaa479452c78ee":[2,0,0,3,1,5,0],
"template_f_s_m_8h.html#ab0325ef0b5aef6334743cdd7c1d70bd9":[2,0,0,3,1,2],
"template_f_s_m_8h.html#ab0fc4d91dbcaaffccd8f14e56173d696":[2,0,0,3,1,6],
"template_f_s_m_8h.html#ad30e63631e0a6c61ac9cc9a47e31a5a5":[2,0,0,3,1,3],
"template_f_s_m_8h.html#adfdfb9e9cda040324f0952d1e8b80e05":[2,0,0,3,1,4],
"template_f_s_m_8h_source.html":[2,0,0,3,1],
"template_f_s_m__private_8h.html":[2,0,0,3,2],
"template_f_s_m__private_8h.html#adc4b74d6f88de7c72d2e260e836d267f":[2,0,0,3,2,1],
"template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855b":[2,0,0,3,2,2],
"template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855ba1413c9e060de9405cf1898973fc25394":[2,0,0,3,2,2,1],
"template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855bad3fa9ae9431d6cb1772f9d9df48cab19":[2,0,0,3,2,2,0],
"template_f_s_m__private_8h.html#af93d7c80faa6ebd086460cde2d5dd27e":[2,0,0,3,2,0],
"template_f_s_m__private_8h_source.html":[2,0,0,3,2]
};

BIN
vscode/manual/html/open.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

View File

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: Related Pages</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('pages.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">Related Pages</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="deprecated.html" target="_self">Deprecated List</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,130 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>状态机框架: FSM_OOP/childtest/parentFSM.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo_transparent.png"/></td>
<td id="projectalign">
<div id="projectname">状态机框架<span id="projectnumber">&#160;0.1alpha</span>
</div>
<div id="projectbrief">by 天神</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('parent_f_s_m_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">parentFSM.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef __PARENT_FSM_H_</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define __PARENT_FSM_H_</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#define ParentFSM_Input(pFSM) ((ParentFSMData *)_preloadIn((FSM *)pFSM))</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span> </div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="keyword">typedef</span> <span class="keyword">struct </span>_parentFSMData</div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span>{</div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> <span class="keywordtype">int</span> arrindex;</div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span>}ParentFSMData;</div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keyword">typedef</span> <span class="keyword">struct </span>_ParentFSM ParentFSM;</div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span>ParentFSM *createParentFSM();</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d39bfbf75725f6289f30e50b2f1305f4.html">FSM_OOP</a></li><li class="navelem"><a class="el" href="dir_b967bec748219e2f7c7f19a67051e0d6.html">childtest</a></li><li class="navelem"><b>parentFSM.h</b></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<g>
<rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
<rect style="fill:#fcfcfc;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
<rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
<rect style="fill:#808080;stroke-width:0" width="15.874998" height="52.916668" x="44.979168" y="26.458332" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 696 B

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<g>
<rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
<rect style="fill:#000000;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
<rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
<rect style="fill:#808080;stroke-width:0" width="15.874998" height="52.916668" x="44.979168" y="26.458332" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 696 B

View File

@ -0,0 +1,109 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function initResizable() {
let sidenav,navtree,content,header,footer,barWidth=6;
const RESIZE_COOKIE_NAME = ''+'width';
function resizeWidth() {
const sidenavWidth = $(sidenav).outerWidth();
content.css({marginLeft:parseInt(sidenavWidth)+"px"});
if (typeof page_layout!=='undefined' && page_layout==1) {
footer.css({marginLeft:parseInt(sidenavWidth)+"px"});
}
Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth);
}
function restoreWidth(navWidth) {
content.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
if (typeof page_layout!=='undefined' && page_layout==1) {
footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
}
sidenav.css({width:navWidth + "px"});
}
function resizeHeight() {
const headerHeight = header.outerHeight();
const footerHeight = footer.outerHeight();
const windowHeight = $(window).height();
let contentHeight,navtreeHeight,sideNavHeight;
if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */
contentHeight = windowHeight - headerHeight - footerHeight;
navtreeHeight = contentHeight;
sideNavHeight = contentHeight;
} else if (page_layout==1) { /* DISABLE_INDEX=YES */
contentHeight = windowHeight - footerHeight;
navtreeHeight = windowHeight - headerHeight;
sideNavHeight = windowHeight;
}
content.css({height:contentHeight + "px"});
navtree.css({height:navtreeHeight + "px"});
sidenav.css({height:sideNavHeight + "px"});
if (location.hash.slice(1)) {
(document.getElementById(location.hash.slice(1))||document.body).scrollIntoView();
}
}
function collapseExpand() {
let newWidth;
if (sidenav.width()>0) {
newWidth=0;
} else {
const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250);
newWidth = (width>250 && width<$(window).width()) ? width : 250;
}
restoreWidth(newWidth);
const sidenavWidth = $(sidenav).outerWidth();
Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth);
}
header = $("#top");
sidenav = $("#side-nav");
content = $("#doc-content");
navtree = $("#nav-tree");
footer = $("#nav-path");
$(".side-nav-resizable").resizable({resize: () => resizeWidth() });
$(sidenav).resizable({ minWidth: 0 });
$(window).resize(() => resizeHeight());
const device = navigator.userAgent.toLowerCase();
const touch_device = device.match(/(iphone|ipod|ipad|android)/);
if (touch_device) { /* wider split bar for touch only devices */
$(sidenav).css({ paddingRight:'20px' });
$('.ui-resizable-e').css({ width:'20px' });
$('#nav-sync').css({ right:'34px' });
barWidth=20;
}
const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250);
if (width) { restoreWidth(width); } else { resizeWidth(); }
resizeHeight();
const url = location.href;
const i=url.indexOf("#");
if (i>=0) window.location.hash=url.substr(i);
const _preventDefault = (evt) => evt.preventDefault();
$("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
$(".ui-resizable-handle").dblclick(collapseExpand);
$(window).on('load',resizeHeight);
}
/* @license-end */

View File

@ -0,0 +1,8 @@
var searchData=
[
['_5fclearpreloaderoverflag_0',['_clearPreloaderOverFlag',['../_f_s_m_8c.html#aad909acd21e17b8073d5d9dfb8892ccb',1,'_clearPreloaderOverFlag(FSM *pFSM):&#160;FSM.c'],['../_f_s_m__public_8h.html#aad909acd21e17b8073d5d9dfb8892ccb',1,'_clearPreloaderOverFlag(FSM *pFSM):&#160;FSM.c']]],
['_5fgetpreloaderoverflag_1',['_getPreloaderOverFlag',['../_f_s_m_8c.html#a704103961964dbb8582b59fd161a3348',1,'_getPreloaderOverFlag(FSM *pFSM):&#160;FSM.c'],['../_f_s_m__public_8h.html#a704103961964dbb8582b59fd161a3348',1,'_getPreloaderOverFlag(FSM *pFSM):&#160;FSM.c']]],
['_5fpreloadergetready_2',['_preloaderGetReady',['../_f_s_m_8c.html#a6e2a8d16f390efeaecc8938ec8f2e728',1,'_preloaderGetReady(FSM *pFSM):&#160;FSM.c'],['../_f_s_m__public_8h.html#a6e2a8d16f390efeaecc8938ec8f2e728',1,'_preloaderGetReady(FSM *pFSM):&#160;FSM.c']]],
['_5fpreloadin_3',['_preloadIn',['../_f_s_m_8c.html#a9c285ac5bbad90b0b04de18d393cf4ce',1,'_preloadIn(FSM *pFSM):&#160;FSM.c'],['../_f_s_m__public_8h.html#a9c285ac5bbad90b0b04de18d393cf4ce',1,'_preloadIn(FSM *pFSM):&#160;FSM.c']]],
['_5fstate_4',['_State',['../template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855b',1,'templateFSM_private.h']]]
];

View File

@ -0,0 +1,4 @@
var searchData=
[
['all_0',['all',['../struct_f_s_m_signals.html#a9586b8cdc522f49e9bc62d2b67a1d79b',1,'FSMSignals']]]
];

View File

@ -0,0 +1,9 @@
var searchData=
[
['childfsm_0',['childFSM',['../struct_f_s_m_private_vars.html#ad20548555264a67dac6b18b757e01821',1,'FSMPrivateVars']]],
['childfsmsteptable_1',['childFSMStepTable',['../struct_f_s_m_handler.html#a976b4147d1c0c9aeb4a61c3cc85376bf',1,'FSMHandler']]],
['clearpreloaderoverflag_2',['ClearPreloaderOverFlag',['../_f_s_m__public_8h.html#ac11e3ebda7ba02fc42ac5de33fcfd148',1,'FSM_public.h']]],
['count_5fstate_3',['Count_State',['../template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855ba1413c9e060de9405cf1898973fc25394',1,'templateFSM_private.h']]],
['createtemplatefsm_4',['createTemplateFSM',['../template_f_s_m_8c.html#ab0fc4d91dbcaaffccd8f14e56173d696',1,'createTemplateFSM():&#160;templateFSM.c'],['../template_f_s_m_8h.html#ab0fc4d91dbcaaffccd8f14e56173d696',1,'createTemplateFSM():&#160;templateFSM.c']]],
['curstate_5',['curState',['../struct_f_s_m_private_vars.html#a1e013b34f3da19006fdaef781e386ba7',1,'FSMPrivateVars']]]
];

View File

@ -0,0 +1,7 @@
var searchData=
[
['default_5fstate_0',['DEFAULT_STATE',['../template_f_s_m__private_8h.html#af93d7c80faa6ebd086460cde2d5dd27e',1,'templateFSM_private.h']]],
['defaultstate_1',['defaultState',['../struct_f_s_m_private_vars.html#a4cc735365b8c3946ff83d1984e2565fe',1,'FSMPrivateVars']]],
['deprecated_20list_2',['Deprecated List',['../deprecated.html',1,'']]],
['duringactiontable_3',['duringActionTable',['../struct_f_s_m_handler.html#ad3506a53c3ee76655a117f7db0da7d3d',1,'FSMHandler']]]
];

View File

@ -0,0 +1,5 @@
var searchData=
[
['enteractiontable_0',['enterActionTable',['../struct_f_s_m_handler.html#aa733ab89a48f8a63b4afb623b4d6be90',1,'FSMHandler']]],
['exitactiontable_1',['exitActionTable',['../struct_f_s_m_handler.html#a04721875a9baabc8a51c54a668db9a2c',1,'FSMHandler']]]
];

View File

@ -0,0 +1,13 @@
var searchData=
[
['fcns_0',['fcns',['../struct_f_s_m_private_vars.html#a38fc9622245dd2e2272d0511a603db69',1,'FSMPrivateVars']]],
['fsm_2ec_1',['FSM.c',['../_f_s_m_8c.html',1,'']]],
['fsm_5fprivate_2eh_2',['FSM_private.h',['../_f_s_m__private_8h.html',1,'']]],
['fsm_5fprotected_2eh_3',['FSM_protected.h',['../_f_s_m__protected_8h.html',1,'']]],
['fsm_5fpublic_2eh_4',['FSM_public.h',['../_f_s_m__public_8h.html',1,'']]],
['fsmdataloader_5',['FSMDataLoader',['../struct_f_s_m_data_loader.html',1,'FSMDataLoader'],['../_f_s_m__private_8h.html#a9116b0a24810b38fafae2fb986517432',1,'FSMDataLoader:&#160;FSM_private.h']]],
['fsmhandler_6',['FSMHandler',['../struct_f_s_m_handler.html',1,'FSMHandler'],['../_f_s_m__private_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba',1,'FSMHandler:&#160;FSM_private.h'],['../_f_s_m__protected_8h.html#a19064d5985c08b2ebbdfe2b27c6986ba',1,'FSMHandler:&#160;FSM_protected.h']]],
['fsmprivatevars_7',['FSMPrivateVars',['../struct_f_s_m_private_vars.html',1,'FSMPrivateVars'],['../_f_s_m__private_8h.html#a51a08a9c63b45851707caacfafca8cf9',1,'FSMPrivateVars:&#160;FSM_private.h']]],
['fsmpurevtbl_8',['FSMPureVtbl',['../struct_f_s_m_pure_vtbl.html',1,'FSMPureVtbl'],['../_f_s_m__protected_8h.html#a5cfbf21b07540615b7ac4ea49a60b037',1,'FSMPureVtbl:&#160;FSM_protected.h']]],
['fsmsignals_9',['FSMSignals',['../struct_f_s_m_signals.html',1,'FSMSignals'],['../_f_s_m__private_8h.html#aa8470b4675b81ea69519ae6222c77e3f',1,'FSMSignals:&#160;FSM_private.h'],['../_f_s_m__protected_8h.html#aa8470b4675b81ea69519ae6222c77e3f',1,'FSMSignals:&#160;FSM_protected.h']]]
];

View File

@ -0,0 +1,5 @@
var searchData=
[
['getdata_0',['GetData',['../_f_s_m__public_8h.html#a336c6a01ee8af1e00bd175553788ec63',1,'FSM_public.h']]],
['getpreloaderoverflag_1',['GetPreloaderOverFlag',['../_f_s_m__public_8h.html#aef66ec3c44c151b23fbc98c10c514d32',1,'FSM_public.h']]]
];

View File

@ -0,0 +1,9 @@
var searchData=
[
['idle_0',['Idle',['../template_f_s_m__private_8h.html#af5addeb46f2b4f7f88a4de82fbf5855bad3fa9ae9431d6cb1772f9d9df48cab19',1,'templateFSM_private.h']]],
['idle_5fsignal_1',['Idle_Signal',['../_f_s_m__protected_8h.html#addd5868b6424b70247fe4c8e5b7af29e',1,'FSM_protected.h']]],
['index_2',['index',['../struct_f_s_m_private_vars.html#ab14d89d4db1639abfab4a24f05cca6a7',1,'FSMPrivateVars']]],
['initdata_3',['initData',['../struct_f_s_m_pure_vtbl.html#a24fea698707e18e2d84385bfca118db1',1,'FSMPureVtbl::initData'],['../template_f_s_m_8c.html#a5ebc219bfad056d35b189b8e6fa94896',1,'initData():&#160;templateFSM.c']]],
['initdataloader_4',['initDataLoader',['../struct_f_s_m_pure_vtbl.html#aebfd1efad93210ac02249a81159d1472',1,'FSMPureVtbl::initDataLoader'],['../template_f_s_m_8c.html#a8b945e9059bb82bf66884af5133eb898',1,'initDataLoader():&#160;templateFSM.c']]],
['initsignals_5',['initSignals',['../struct_f_s_m_pure_vtbl.html#a58c666f5941e07c4a6ef054f1250dbd8',1,'FSMPureVtbl']]]
];

Some files were not shown because too many files have changed in this diff Show More