添加一个打印信息
This commit is contained in:
parent
d48d5c7cc1
commit
27acc2bb1b
|
@ -54,7 +54,6 @@
|
||||||
<option id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.ADVICE__PERFORMANCE.171868085" name="Provide advice on optimization techniques (--advice:performance)" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.ADVICE__PERFORMANCE" value="--advice:performance=all" valueType="string"/>
|
<option id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.ADVICE__PERFORMANCE.171868085" name="Provide advice on optimization techniques (--advice:performance)" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.ADVICE__PERFORMANCE" value="--advice:performance=all" valueType="string"/>
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEFINE.1681891118" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEFINE" valueType="definedSymbols">
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEFINE.1681891118" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEFINE" valueType="definedSymbols">
|
||||||
<listOptionValue builtIn="false" value="_INLINE"/>
|
<listOptionValue builtIn="false" value="_INLINE"/>
|
||||||
<listOptionValue builtIn="false" value="DSP28377"/>
|
|
||||||
<listOptionValue builtIn="false" value="CPU1"/>
|
<listOptionValue builtIn="false" value="CPU1"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEBUGGING_MODEL.1901056751" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
|
<option id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEBUGGING_MODEL.1901056751" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
|
||||||
|
|
|
@ -81,7 +81,7 @@ void childFSMTest(){
|
||||||
|
|
||||||
for (int k = 0; k < 15; k++)
|
for (int k = 0; k < 15; k++)
|
||||||
{
|
{
|
||||||
printf("第%d次: ",k+1);
|
printf("i: ",k+1);
|
||||||
SetSignal(pFSM, i[k]);
|
SetSignal(pFSM, i[k]);
|
||||||
SetSignal(cFSM, j[k]);
|
SetSignal(cFSM, j[k]);
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ aux_source_directory(${PROJECT_SOURCE_DIR}/FSM_OOP/baseFSM SRC_FSM_OOP)
|
||||||
|
|
||||||
|
|
||||||
# set(keytest 789)
|
# set(keytest 789)
|
||||||
set(child_parent 789)
|
#set(child_parent 789)
|
||||||
if(DEFINED keytest)
|
if(DEFINED keytest)
|
||||||
include_directories(${PROJECT_SOURCE_DIR}/FSM_OOP/keytest)
|
include_directories(${PROJECT_SOURCE_DIR}/FSM_OOP/keytest)
|
||||||
aux_source_directory(${PROJECT_SOURCE_DIR}/FSM_OOP/keytest SRC_FSM_USR)
|
aux_source_directory(${PROJECT_SOURCE_DIR}/FSM_OOP/keytest SRC_FSM_USR)
|
||||||
|
|
|
@ -41,11 +41,11 @@ static inline void updateNextState(FSM* pFSM){
|
||||||
*
|
*
|
||||||
* @param pFSM 状态机变量的基类指针
|
* @param pFSM 状态机变量的基类指针
|
||||||
*/
|
*/
|
||||||
static void exitFSM(FSM *pFSM)
|
static void shutFSM(FSM *pFSM)
|
||||||
{
|
{
|
||||||
int curState = getCurState(pFSM);
|
int curState = getCurState(pFSM);
|
||||||
if(hasChildFSM(pFSM, curState)){
|
if(hasChildFSM(pFSM, curState)){
|
||||||
exitFSM(getChildFSM(pFSM, curState));
|
shutFSM(getChildFSM(pFSM, curState));
|
||||||
}
|
}
|
||||||
doExit(pFSM);
|
doExit(pFSM);
|
||||||
setCurState(pFSM, FSM_Idle);
|
setCurState(pFSM, FSM_Idle);
|
||||||
|
@ -89,7 +89,7 @@ void stepBaseFSM(FSM *pFSM)
|
||||||
// 退出子状态机
|
// 退出子状态机
|
||||||
if(hasChildFSM(pFSM, curState)){
|
if(hasChildFSM(pFSM, curState)){
|
||||||
FSM *cFSM = getChildFSM(pFSM, curState);
|
FSM *cFSM = getChildFSM(pFSM, curState);
|
||||||
exitFSM(cFSM);
|
shutFSM(cFSM);
|
||||||
}
|
}
|
||||||
|
|
||||||
doExit(pFSM);
|
doExit(pFSM);
|
||||||
|
@ -128,10 +128,14 @@ void _stepFSM(FSM *pFSM){
|
||||||
pFSM->publicFcns.step(pFSM);
|
pFSM->publicFcns.step(pFSM);
|
||||||
}
|
}
|
||||||
|
|
||||||
int getFSMCurState(FSM *pFSM){
|
const char * _curState2ASCII(FSM *pFSM){
|
||||||
|
return pFSM->publicFcns.curState2ASCII(pFSM);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int getFSMCurState(FSM *pFSM){
|
||||||
return pFSM->privateVars->curState;
|
return pFSM->privateVars->curState;
|
||||||
}
|
}
|
||||||
int getFSMNextState(FSM *pFSM){
|
inline int getFSMNextState(FSM *pFSM){
|
||||||
return pFSM->privateVars->nextState;
|
return pFSM->privateVars->nextState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,6 +156,7 @@ void _setSignal(FSM *pFSM, Uint16 signalFlag){
|
||||||
pFSM->signals.all |= (1 << signalFlag);
|
pFSM->signals.all |= (1 << signalFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
* @deprecated 弃用
|
* @deprecated 弃用
|
||||||
|
|
|
@ -52,6 +52,7 @@ typedef void (*Avoid_WARNING_State_Fcns)(void *data);
|
||||||
typedef void (*Avoid_WARNING_General_Handlers)(void *data);
|
typedef void (*Avoid_WARNING_General_Handlers)(void *data);
|
||||||
typedef void (*Avoid_WARNING_Transition_Handler)(void *data);
|
typedef void (*Avoid_WARNING_Transition_Handler)(void *data);
|
||||||
typedef void (*Avoid_WARNING_Overrider_Fcns)(FSM *pFSM);
|
typedef void (*Avoid_WARNING_Overrider_Fcns)(FSM *pFSM);
|
||||||
|
typedef const char * (*Avoid_WARNING_2ASCII_Fcns)(FSM *pFSM);
|
||||||
typedef void (*Avoid_WARNING_ResetSignals_Fcns)(FSMSignals* signals, void *);
|
typedef void (*Avoid_WARNING_ResetSignals_Fcns)(FSMSignals* signals, void *);
|
||||||
typedef void (*Avoid_WARNING_loadData_Fcns)(void*);
|
typedef void (*Avoid_WARNING_loadData_Fcns)(void*);
|
||||||
typedef int (*Avoid_WARNING_SelectNextState)(void *data, FSMSignals* signals);
|
typedef int (*Avoid_WARNING_SelectNextState)(void *data, FSMSignals* signals);
|
||||||
|
|
|
@ -23,11 +23,12 @@ typedef struct FSMPublicFcns
|
||||||
{
|
{
|
||||||
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
||||||
void (*reset)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
void (*reset)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
||||||
|
const char *(*curState2ASCII)(FSM *pFSM);
|
||||||
}FSMPublicFcns;
|
}FSMPublicFcns;
|
||||||
|
|
||||||
/* -------------------------------- 避免警告的函数定义 ------------------------------- */
|
/* -------------------------------- 避免警告的函数定义 ------------------------------- */
|
||||||
#define Step(pFSM) _stepFSM((FSM *)pFSM) /**< 外界调用这个 */
|
#define Step(pFSM) _stepFSM((FSM *)pFSM) /**< 外界调用这个 */
|
||||||
|
#define CurState2ASCII(pFSM) _curState2ASCII((FSM *)pFSM) /**< 外界调用这个 */
|
||||||
#define GetData(pFSM) _getData((FSM*)pFSM) /**< 外界调用这个 */
|
#define GetData(pFSM) _getData((FSM*)pFSM) /**< 外界调用这个 */
|
||||||
#define SetSignal(pFSM, signal) _setSignal((FSM*)pFSM, signal) /**< 外界调用这个 */
|
#define SetSignal(pFSM, signal) _setSignal((FSM*)pFSM, signal) /**< 外界调用这个 */
|
||||||
|
|
||||||
|
@ -37,6 +38,7 @@ typedef struct FSMPublicFcns
|
||||||
|
|
||||||
|
|
||||||
void _stepFSM(FSM *pFSM);
|
void _stepFSM(FSM *pFSM);
|
||||||
|
const char * _curState2ASCII(FSM *pFSM);
|
||||||
/* --------------------------------- 状态机信息获取 -------------------------------- */
|
/* --------------------------------- 状态机信息获取 -------------------------------- */
|
||||||
int getFSMCurState(FSM *pFSM);
|
int getFSMCurState(FSM *pFSM);
|
||||||
int getFSMNextState(FSM *pFSM);
|
int getFSMNextState(FSM *pFSM);
|
||||||
|
|
|
@ -110,7 +110,7 @@ static void setupHandler(FSMHandler* fcns){ // 必须重新实现
|
||||||
static void step(ParentFSM* pFSM){
|
static void step(ParentFSM* pFSM){
|
||||||
printFSM(pFSM);
|
printFSM(pFSM);
|
||||||
stepBaseFSM(BASE_FSM(pFSM));
|
stepBaseFSM(BASE_FSM(pFSM));
|
||||||
FSM_LOG("下次状态:%s", stateStr[getFSMNextState((FSM *)pFSM)]);
|
FSM_LOG("NextState:%s", stateStr[getFSMNextState((FSM *)pFSM)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -161,5 +161,5 @@ const static char *stateStr[] = {
|
||||||
|
|
||||||
static void printFSM(ParentFSM* pFSM){
|
static void printFSM(ParentFSM* pFSM){
|
||||||
FSM_LOG(" \tParent: ");
|
FSM_LOG(" \tParent: ");
|
||||||
FSM_LOG("当前状态:%s, 动作:", stateStr[getFSMCurState((FSM *)pFSM)]);
|
FSM_LOG("CurrentState:%s, Action", stateStr[getFSMCurState((FSM *)pFSM)]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,7 @@ static void setupHandler(FSMHandler* fcns){ // 必须重新实现
|
||||||
static void step(ChildFSM* pFSM){
|
static void step(ChildFSM* pFSM){
|
||||||
printFSM(pFSM);
|
printFSM(pFSM);
|
||||||
stepBaseFSM(BASE_FSM(pFSM));
|
stepBaseFSM(BASE_FSM(pFSM));
|
||||||
FSM_LOG("下次状态:%s", stateStr[getFSMNextState((FSM *)pFSM)]);
|
FSM_LOG("NextState:%s", stateStr[getFSMNextState((FSM *)pFSM)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -133,5 +133,5 @@ const static char *stateStr[] = {
|
||||||
|
|
||||||
static void printFSM(ChildFSM* pFSM){
|
static void printFSM(ChildFSM* pFSM){
|
||||||
FSM_LOG(" \tChild: ");
|
FSM_LOG(" \tChild: ");
|
||||||
FSM_LOG("当前状态:%s, 动作:", stateStr[getFSMCurState((FSM *)pFSM)]);
|
FSM_LOG("CurrentState:%s, Action", stateStr[getFSMCurState((FSM *)pFSM)]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ int main(){
|
||||||
|
|
||||||
for (int k = 0; k < 15; k++)
|
for (int k = 0; k < 15; k++)
|
||||||
{
|
{
|
||||||
printf("第%d次: ",k+1);
|
printf("%d: ",k+1);
|
||||||
SetSignal(pFSM, i[k]);
|
SetSignal(pFSM, i[k]);
|
||||||
SetSignal(cFSM, j[k]);
|
SetSignal(cFSM, j[k]);
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,11 @@ int main(){
|
||||||
x = 0;
|
x = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
printf("%d, " ,i);
|
printf("%d, " ,i);
|
||||||
|
|
||||||
|
printf("\t\t %s", CurState2ASCII(pFSM));
|
||||||
|
|
||||||
Step(pFSM);
|
Step(pFSM);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,11 @@
|
||||||
#include "templateFSM.h"
|
#include "templateFSM.h"
|
||||||
#include "templateFSM_private.h"
|
#include "templateFSM_private.h"
|
||||||
|
|
||||||
|
|
||||||
|
const char * curState2ASCII(TemplateFSM *pFSM){
|
||||||
|
return stateStr[getFSMCurState((FSM *)pFSM)];
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
/* 纯虚函数,允许调用privateVars */
|
/* 纯虚函数,允许调用privateVars */
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
|
@ -147,6 +152,7 @@ TemplateFSM *createTemplateFSM(){
|
||||||
|
|
||||||
// 重新实现的函数
|
// 重新实现的函数
|
||||||
pFSM->base.publicFcns.step = (Avoid_WARNING_Overrider_Fcns)step;
|
pFSM->base.publicFcns.step = (Avoid_WARNING_Overrider_Fcns)step;
|
||||||
|
pFSM->base.publicFcns.curState2ASCII = (Avoid_WARNING_2ASCII_Fcns)curState2ASCII;
|
||||||
pFSM->base.pureVtbl.initData = (Avoid_WARNING_Overrider_Fcns)initData;
|
pFSM->base.pureVtbl.initData = (Avoid_WARNING_Overrider_Fcns)initData;
|
||||||
pFSM->base.pureVtbl.initDataLoader = (Avoid_WARNING_Overrider_Fcns)initDataLoader;
|
pFSM->base.pureVtbl.initDataLoader = (Avoid_WARNING_Overrider_Fcns)initDataLoader;
|
||||||
pFSM->base.pureVtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;
|
pFSM->base.pureVtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;
|
||||||
|
|
|
@ -62,6 +62,7 @@ typedef struct TemplateFSMData
|
||||||
|
|
||||||
typedef struct TemplateFSM TemplateFSM;
|
typedef struct TemplateFSM TemplateFSM;
|
||||||
TemplateFSM *createTemplateFSM();
|
TemplateFSM *createTemplateFSM();
|
||||||
|
const char * curState2ASCII_TemplateFSM(TemplateFSM *pFSM);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue