#pragma once #include "IExamHandler.h" namespace DIOS::Dev::Detail::MachineryECOM { class CArmResetHandler : public IExamHandler { public: CArmResetHandler(); ~CArmResetHandler(); public: virtual void OnModelLoaded(IMotionModelManager *modelManager) override; virtual void OnCoordinatesLoaded(IPositionManager *coordinates) override; virtual RET_STATUS OnReset(DOF_MECH mech) override; virtual RET_STATUS OnCenterAdjust(DOF_MECH mech) override; virtual RET_STATUS OnSelectExamMode(const char *pExamKey) override; virtual RET_STATUS OnSetTechParamsInfo(ResDataObject& pParam) override; virtual RET_STATUS OnStopMech() override; virtual RET_STATUS OnStartMove(DOF_MECH mech, int nOrientation) override; virtual RET_STATUS OnStopMove(DOF_MECH mech) override; virtual RET_STATUS OnScanningSwitch(DOF_MECH mech) override; virtual void OnMotionEvent(const std::string &motionEventName) override; virtual void OnHandSwitchGearFirstPressed() override; virtual void OnHandSwitchGearFirstReleased() override; virtual void OnTubeAngleLowLimitPos() override; virtual void OnTubeAngleHighLimitPos() override; virtual void OnTubeHeightLowLimitPos() override; virtual void OnTubeHeightHighLimitPos() override; virtual void OnTubeAngleLeaveLowLimitPos()override; virtual void OnTubeAngleLeaveHighLimitPos()override; virtual void OnTubeHeightLeaveLowLimitPos()override; virtual void OnTubeHeightLeaveHighLimitPos()override; virtual void OnTubeAngleEncoderZPos() override; virtual void OnTubeHeightEncoderZPos() override; virtual void OnExit() override; private: void DoStartReset(); void DoStartSwingReset(); void DoStartCircularReset(); void StartSwingAxisReset(); void StartCircularAxisReset(); void ChangeMotionModelStage(const std::string &stageName); void OnMotionEventTubeSwingStop(); void OnMotionEventTubeCircularStop(); BOOL IsMovingEnable(); private: BOOL m_modelLoaded; BOOL m_useHandSwitchControlReset; BOOL m_isResetting; BOOL m_isResettingSwing; BOOL m_isResettingCircular; IPositionManager *m_postionManager; IMotionModelManager *m_modelManager; DOF_MECH m_MechReset; }; }