using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Device.Unit; using Aitex.Core.RT.Device; using MECF.Framework.Common.Equipment; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.TMs; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static Mono.Security.X509.X520; namespace Venus_RT.Devices.TM { public enum PumpState { Idle, TMUsing, VCEUsing, VCEAUsing, VCEBUsing, } public class TMBase : BaseDevice, IDevice, ITM { public virtual double ChamberPressure { get; } public virtual double ForelinePressure { get; } public virtual bool IsTMATM { get; } public virtual bool IsVCEATM { get; } public virtual bool IsVCEAATM { get; } public virtual bool IsVCEBATM { get; } public virtual bool IsTMVAC { get; } public virtual bool IsVCEAVAC { get; } public virtual bool IsVCEBVAC { get; } public virtual bool IsVCEVAC { get; } public virtual bool IsPressureControl { get; } public virtual bool IsTMFastPumpOpen { get; } public virtual bool IsTMSoftPumpOpen { get; } public virtual bool IsTMFastVentOpen { get; } public virtual bool IsTMSoftVentOpen { get; } public virtual bool IsVCEAFastPumpOpen { get; } public virtual bool IsVCEBFastPumpOpen { get; } public virtual bool IsVCEASoftPumpOpen { get; } public virtual bool IsVCEBSoftPumpOpen { get; } public virtual bool IsVCEAFastVentOpen { get; } public virtual bool IsVCEBFastVentOpen { get; } public virtual bool IsVCEASoftVentOpen { get; } public virtual bool IsVCEBSoftVentOpen { get; } public virtual bool IsTMVentValveOpen { get; } public virtual bool IsVCEAVentValveOpen { get; } public virtual bool IsVCEBVentValveOpen { get; } public virtual bool VCEASlitDoorClosed { get; } public virtual bool VCEBSlitDoorClosed { get; } public virtual bool PMASlitDoorClosed { get; } public virtual bool PMBSlitDoorClosed { get; } public virtual bool PMCSlitDoorClosed { get; } public virtual bool PMDSlitDoorClosed { get; } public virtual bool AllPMSlitDoorClosed { get; } public virtual double TMPressure { get; } public virtual double VCEPressure { get; } public virtual double VCEAPressure { get; } public virtual double VCEBPressure { get; } public virtual bool VCECassPresent { get; } public virtual bool VCEACassPresent { get; } public virtual bool VCEBCassPresent { get; } public virtual bool VCEALOCKED { get; } public virtual bool VCEBLOCKED { get; } public virtual bool VCEProtrusion { get; } public virtual bool VCEAProtrusion { get; } public virtual bool VCEBProtrusion { get; } public virtual PumpState PumpingState { get; } public TMBase(string module) : base(module, module, module, module) { } public virtual bool Initialize() { DATA.Subscribe($"{Name}.IsAtm", () => { return CheckAtm(); }); DATA.Subscribe($"{Name}.IsVacuum", () => { return CheckVacuum(); }); DATA.Subscribe($"{Name}.ChamberPressure", () => ChamberPressure); DATA.Subscribe($"{Name}.ForelinePressure", () => ForelinePressure); return true; } public virtual void CloseModuleAllValves(ModuleName module) { } public virtual bool CheckLidClosed() { return false; } public virtual bool CheckAtm() { return false; } public virtual bool CheckVacuum() { return false; } public virtual bool CheckIsPumping() { return false; } public virtual bool VCESlitDoorClosed(ModuleName vcename) { return false; } public virtual bool SetFastVentValve(bool isOpen, out string reason) { reason = string.Empty; return true; } public virtual bool SetSlowVentValve(bool isOpen, out string reason) { reason = string.Empty; return true; } public virtual bool SetFastPumpValve(bool isOpen, out string reason) { reason = string.Empty; return true; } public virtual bool SetSlowPumpValve(bool isOpen, out string reason) { reason = string.Empty; return true; } public virtual IoSlitValve GetSlitValve(ModuleName module) { return null; } public virtual bool SetSlitValve(ModuleName module, bool isOpen, out string reason) { reason = string.Empty; return true; } public virtual bool CheckSlitValveOpen(ModuleName module) { return true; } public virtual bool CheckSlitValveClose(ModuleName module) { return true; } public virtual bool TurnSlitDoor(ModuleName mod, bool bOn) { return false; } public virtual void TurnFastPumpValve(ModuleName mod, bool bOn) { } public virtual void TurnSoftPumpValve(ModuleName mod, bool bOn) { } public virtual void TurnFastVentValve(ModuleName mod, bool bOn) { } public virtual void TurnSoftVentValve(ModuleName mod, bool bOn) { } public virtual bool CloseAllSlitDoor() { return false; } public virtual void PressureControl(bool iscontrol) { } public virtual void HomeVceSlitDoor() { } public virtual void CloseVentValve() { } public virtual bool CheckPumpValveClosed(ModuleName mod) { return false; } public virtual bool CheckVentValveClosed(ModuleName mod) { return false; } public virtual void SetTMFlow(int flowValue) { } public virtual double GetModulePressure(ModuleName mod) { return 0; } public virtual bool TryGetPump(ModuleName mod) { return false; } public virtual void ReleasePump(ModuleName Module) { } public virtual void Monitor() { } public virtual void Terminate() { } public virtual void Reset() { } } }