#ifndef _DEVICE_CONTROL_FSM_H #define _DEVICE_CONTROL_FSM_H #pragma once #include "stdafx.h" #include "SpFSM.h" #include "DeviceControl_def_g.h" #include "DeviceControl_server_g.h" #include "DeviceControlClass.h" #include "DevFSMCommBase.hpp" #include "Interface.h" using namespace DeviceControl; enum EvtType { USER_EVT_TEST = EVT_USER+1, USER_EVT_QUIT, USER_EVT_USB, USER_EVT_USB_FINISHED, USER_EVT_GET_UKEYID, USER_EVT_GET_UKEYID_FINISHED, USER_EVT_INIT_TOKEN, USER_EVT_INIT_TOKEN_FINISHED, USER_EVT_QUERY_USB, USER_EVT_QUERY_USB_FINISHED, USER_EVT_WORKING_OP, }; class CDeviceControlFSM : public CCommDevFSM { public: enum {s0,s1,s2,s3,s4}; BEGIN_FSM_STATE(CDeviceControlFSM) FSM_STATE_ENTRY(s0,"Idle",s0_on_entry,s0_on_exit,s0_on_event) FSM_STATE_ENTRY(s1,"USB",s1_on_entry,s1_on_exit,s1_on_event) FSM_STATE_ENTRY(s2,"Failed",s2_on_entry,s2_on_exit,s2_on_event) FSM_STATE_ENTRY(s3,"GetUkeyID",s3_on_entry,s3_on_exit,s3_on_event) FSM_STATE_ENTRY(s4,"InitToken",s4_on_entry,s4_on_exit,s4_on_event) END_FSM_STATE() BEGIN_FSM_RULE(CDeviceControlFSM, s0) FSM_RULE_ENTRY(s0, FSM_STATE_EXIT, USER_EVT_QUIT, 0) FSM_RULE_ENTRY(s0, s1, USER_EVT_USB, 0) FSM_RULE_ENTRY(s0, s1, USER_EVT_QUERY_USB, 0) FSM_RULE_ENTRY(s0, s3, USER_EVT_GET_UKEYID, 0) FSM_RULE_ENTRY(s0, s4, USER_EVT_INIT_TOKEN, 0) FSM_RULE_ENTRY(s1, s0, USER_EVT_USB_FINISHED, 0) FSM_RULE_ENTRY(s1, s2, USER_EVT_USB_FINISHED, 1) FSM_RULE_ENTRY(s1, s0, USER_EVT_QUERY_USB_FINISHED, 0) FSM_RULE_ENTRY(s1, s2, USER_EVT_QUERY_USB_FINISHED, 1) FSM_RULE_ENTRY(s3, s0, USER_EVT_GET_UKEYID_FINISHED, 0) FSM_RULE_ENTRY(s3, s0, USER_EVT_GET_UKEYID_FINISHED, 1) FSM_RULE_ENTRY(s4, s0, USER_EVT_INIT_TOKEN_FINISHED, 0) FSM_RULE_ENTRY(s4, s0, USER_EVT_INIT_TOKEN_FINISHED, 1) END_FSM_RULE() CDeviceControlFSM():m_testResult(Error_Succeed){}; virtual ~CDeviceControlFSM() {}; virtual ErrorCodeEnum OnInit(); virtual ErrorCodeEnum OnExit(); virtual void s0_on_entry() {} virtual void s0_on_exit() {} virtual unsigned int s0_on_event(FSMEvent* e); virtual void s1_on_entry() {} virtual void s1_on_exit() {} virtual unsigned int s1_on_event(FSMEvent* e); virtual void s2_on_entry() {} virtual void s2_on_exit() {} virtual unsigned int s2_on_event(FSMEvent* e) { return 0; } virtual void s3_on_entry() {} virtual void s3_on_exit() {} virtual unsigned int s3_on_event(FSMEvent* e); virtual void s4_on_entry() {} virtual void s4_on_exit() {} virtual unsigned int s4_on_event(FSMEvent* e); void SelfTest(EntityTestEnum eTestType,CSmartPointer pTransactionContext) { pTransactionContext->SendAnswer(Error_Succeed); } ErrorCodeEnum RestartSogouServices(); private: ErrorCodeEnum m_testResult; CSimpleStringA m_csMachineType; }; #endif //_DEVICE_CONTROL_FSM_H