#ifndef _SUBSYSWF_H_ #define _SUBSYSWF_H_ #include "commonDataStruct.h" #include "LogicDevice.h" class WorkStationDevice; class DiosSMachine; //状态机设备对象接口,接收客户端的命令Action class StateMachineDevice : public LogicDevice { DiosSMachine* m_pWorkStateMachine; //需要动态加载 WorkStationDevice *m_pCurrWorkStation; public: //继承的接口实现 设备 virtual bool SYSTEM_CALL GetDeviceType(GUID& DevType) override; virtual RET_STATUS SYSTEM_CALL CmdToLogicDev(ResDataObject PARAM_IN* pCmd) override; RET_STATUS Request(ResDataObject PARAM_IN* pRequest, ResDataObject PARAM_OUT* pResponse) override; virtual RET_STATUS GetDeviceResource(ResDataObject PARAM_OUT* pDeviceResource) override; public: DiosSMachine* GetMachine() { return m_pWorkStateMachine; } public: StateMachineDevice(); virtual ~StateMachineDevice(); // Action: SetWorkStation // pParam: {"P0" : "Free"} virtual RET_STATUS SetWorkStation(WorkStationDevice* pWS); // Action: RESET virtual RET_STATUS RESET(); // Action: StartSMMachine virtual RET_STATUS StartSMMachine(); // Action: StopSMMachine virtual RET_STATUS StopSMMachine() ; // Action: TriggerEventSMMachine // pParam: { "P0" : "EvtFramePrep" } virtual RET_STATUS TriggerEventSMMachine(const char* pParam) ; //virtual RET_STATUS SetSEQResourceAction(const ResDataObject& pParam); //virtual RET_STATUS SetSEQResourceEvent(const ResDataObject& pParam); // 配置操作的相关接口 // Action: SetSubSystemInDemo // pParam: {P0 : "0"} virtual RET_STATUS SetSubSystemInDemo(int n); //virtual int WaitforStateNotify(HANDLE handle); public: string GetSMState();// { return (string)(m_pWorkStateMachine->GetCurrentState()); } //bool GetDeviceState(); bool IsSateMachineLive(); ResDataObject SetActionPathFromGUID(ResDataObject& rdoState); ResDataObject SetEventPathFromGUID(ResDataObject& rdoState); //bool ActiveEventFromUI(const char* pStateName); }; #endif /* _SUBSYSWF_H_ */