#pragma once #include "IPositionManager.h" class LogicDevice; namespace DIOS::Dev::Detail::MachineryECOM { class PositionManager : public IPositionManager { public: PositionManager(); ~PositionManager(); public: static PositionManager *Instance(); public: void Attach(IPositionManager *impl); public: virtual void Initialize(IMachineryManager *machmanager) override; virtual float GetLandmarkPosition(DOF_MECH dof, LANDMARK_TYPE landmarkType) override; virtual float GetCurrentAbsolutePhysical(DOF_MECH dof) override; virtual float GetPhysicalPerMotorPulse(DOF_MECH dof) override; virtual float GetCurrentPhysical(DOF_MECH dof) override; virtual int GetCurrentSensorValue(DOF_MECH dof) override; virtual DWORD ConvertMotorSpeed(const std::string &componentName, float speed) override; virtual float ConvertSensorValue(const std::string &componentName, int sensorValue) override; virtual int ConvertPhysicsValue(const std::string &componentName, float physicsValue) override; virtual DWORD ConvertMotorStepValue(const std::string &componentName, float physicsOffset) override; virtual void ResetSystem() override; virtual BOOL IsSystemReady() override; virtual int IsTomoMotionLimitationStatus() override; virtual BOOL IsNeedCenterAdjust() override; virtual void SetNotifyLogicDevice(MachineryECOMDriver* logicdriver) override; virtual void NotifyAlignStatus(BOOL isAligned) override; virtual void NotifySystemIsReady() override; virtual void NotifySystemIsTomoMotionLimitation(int nLimitaionStatus) override; virtual void ResetSystem(const std::string &componentName) override; virtual BOOL IsSystemReady(const std::string &componentName) override; virtual void NotifySystemIsReady(const std::string &componentName) override; private: static PositionManager *m_instance; IPositionManager *m_implposManager; }; }