#pragma once namespace DiosCtrlBox { enum DOF_MECH { TOMO_TUBE_ANGLE, TOMO_TUBE_HEIGHT, TOMO_DETECTOR_HEIGHT, CARM_TUBE_SWING, CARM_TUBE_CIRCULAR, }; enum LANDMARK_TYPE { LANDMARK_HIGH, LANDMARK_LOW, }; const std::string NOTIFY_KEY_SYSTEM_READY = "MachineryReady"; const std::string NOTIFY_KEY_ALIGNSTATUS = "AlignStatus"; class IMachineryManager; class IPositionManager { public: IPositionManager(){} virtual ~IPositionManager(){} public: public: virtual void Initialize(IMachineryManager *machmanager) = 0; virtual float GetLandmarkPosition(DOF_MECH dof,LANDMARK_TYPE landmarkType) = 0; virtual float GetCurrentAbsolutePhysical(DOF_MECH dof) = 0; virtual float GetPhysicalPerMotorPulse(DOF_MECH dof) = 0; virtual float GetCurrentPhysical(DOF_MECH dof) = 0; virtual int GetCurrentSensorValue(DOF_MECH dof) = 0; virtual float ConvertSensorValue(const std::string &componentName, int sensorValue) = 0; virtual int ConvertPhysicsValue(const std::string &componentName, float physicsValue) = 0; virtual DWORD ConvertMotorStepValue(const std::string &componentName, float physicsOffset) = 0; virtual DWORD ConvertMotorSpeed(const std::string &componentName, float speed) = 0; virtual void ResetSystem() = 0; virtual BOOL IsSystemReady() = 0; virtual BOOL IsNeedCenterAdjust() = 0; virtual void SetNotifyLogicDevice(LogicDevice *logicdevice) = 0; virtual void NotifyAlignStatus(BOOL isAligned) = 0; virtual void NotifySystemIsReady() = 0; }; }