1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #ifndef CUSTOMERBEINGFSM_H
- #define CUSTOMERBEINGFSM_H
- #pragma once
- #include "SpHelper.h"
- #include "SpFSM.h"
- #define USER_EVT_APPROACH EVT_USER+1
- #define USER_EVT_LEAVE EVT_USER+2
- #define USER_EVT_FRONT EVT_USER+3
- #define USER_EVT_LEAVE_APPROACH EVT_USER+4
- #define USER_EVT_LOCK EVT_USER+5
- #define USER_EVT_UNLOCK EVT_USER+6
- #define USER_EVT_EXIT EVT_USER+50
- class CCustomerBeingFSM : public FSMImpl<CCustomerBeingFSM>, public IFSMStateHooker
- {
- public:
- enum {s0, s1, s2, s3, s4};
- BEGIN_FSM_STATE(CCustomerBeingFSM)
- FSM_STATE_ENTRY(s0,"None",s0_on_entry,s0_on_exit,s0_on_event)
- FSM_STATE_ENTRY(s1,"Approach",s1_on_entry,s1_on_exit,s1_on_event)
- FSM_STATE_ENTRY(s2,"Front",s2_on_entry,s2_on_exit,s2_on_event)
- FSM_STATE_ENTRY(s3,"Lock",s3_on_entry,s3_on_exit,s3_on_event)
- FSM_STATE_ENTRY(s4,"Sleep",s4_on_entry,s4_on_exit,s4_on_event)
- END_FSM_STATE()
- BEGIN_FSM_RULE(CCustomerBeingFSM, s0)
- FSM_RULE_ENTRY_ANY(s0, s1, USER_EVT_APPROACH)
- FSM_RULE_ENTRY_ANY(s0, s2, USER_EVT_FRONT)
- FSM_RULE_ENTRY_ANY(s0, s4, EVT_TIMER)
- FSM_RULE_ENTRY_ANY(s0, FSM_STATE_EXIT, USER_EVT_EXIT)
- FSM_RULE_ENTRY_ANY(s1, s0, USER_EVT_LEAVE)
- FSM_RULE_ENTRY_ANY(s1, s2, USER_EVT_FRONT)
- FSM_RULE_ENTRY_ANY(s2, s1, USER_EVT_LEAVE_APPROACH)
- FSM_RULE_ENTRY_ANY(s2, s0, USER_EVT_LEAVE)
- FSM_RULE_ENTRY_ANY(s2, s3, USER_EVT_LOCK)
- FSM_RULE_ENTRY_ANY(s3, s2, USER_EVT_UNLOCK)
- FSM_RULE_ENTRY_ANY(s3, s0, USER_EVT_LEAVE)
- FSM_RULE_ENTRY_ANY(s3, s1, USER_EVT_APPROACH)
- FSM_RULE_ENTRY_ANY(s4, s1, USER_EVT_APPROACH)
- FSM_RULE_ENTRY_ANY(s4, s2, USER_EVT_FRONT)
- END_FSM_RULE()
- CCustomerBeingFSM();
- ~CCustomerBeingFSM();
- virtual void OnStateTrans(int iSrcState, int iDstState);
- virtual ErrorCodeEnum OnInit();
- virtual ErrorCodeEnum OnExit();
- void s0_on_entry();
- void s0_on_exit();
- unsigned int s0_on_event(FSMEvent* event);
- void s1_on_entry();
- void s1_on_exit();
- unsigned int s1_on_event(FSMEvent* event);
- void s2_on_entry();
- void s2_on_exit();
- unsigned int s2_on_event(FSMEvent* event);
- void s3_on_entry();
- void s3_on_exit();
- unsigned int s3_on_event(FSMEvent* event);
- void s4_on_entry();
- void s4_on_exit();
- unsigned int s4_on_event(FSMEvent* event);
- private:
- ErrorCodeEnum SetSysState(int state);
- };
- #endif // CUSTOMERBEINGFSM_H
|