using System; using System.Collections.Generic; using System.Linq; using System.Net.Configuration; using System.Text; using System.Threading.Tasks; using System.Xml; using Aitex.Core.Common.DeviceData; using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Device; using Aitex.Core.RT.Event; using Aitex.Core.RT.IOCore; using Aitex.Core.RT.OperationCenter; using Aitex.Core.RT.SCCore; using Aitex.Core.Util; namespace MECF.Framework.Common.Device.Bases { public abstract class SMIFBase : BaseDevice, IDevice { public virtual bool IsIdle { get; set; } public virtual bool IsHomed { get; set; } public virtual bool IsLoaded { get; set; } public virtual bool IsUnloaded { get; set; } public virtual bool IsExtend { get; set; } public virtual bool IsRetract { get; set; } public virtual bool IsPodPresent { get; set; } public virtual bool IsProtruded { get; set; } public virtual bool IsWaferProtruded { get; set; } public virtual bool IsPodOpened { get; set; } public virtual bool IsPodClosed { get; set; } public virtual bool IsArmRetract { get; set; } public virtual bool IsAlarm { get; set; } public virtual string ErrorCode { get; set; } public virtual string ErrorText { get;} public virtual bool IsConnected { get; set; } public virtual bool IsEnableMoving { get; set; } public virtual List MappingResult { get; set; } public virtual bool IsLockPod { get; set; } public virtual Dictionary WaferThicknessResult { get; set; } = new Dictionary(); protected SMIFBase() : base() { } protected SMIFBase(string module, string name) : base(module, name, name, name) { } public virtual bool Initialize() { DATA.Subscribe($"{Module}.{Name}.IsLoaded", () => IsLoaded); DATA.Subscribe($"{Module}.{Name}.IsUnloaded", () => IsUnloaded); DATA.Subscribe($"{Module}.{Name}.IsExtend", () => IsExtend); DATA.Subscribe($"{Module}.{Name}.IsRetract", () => IsRetract); DATA.Subscribe($"{Module}.{Name}.IsPodPresent", () => IsPodPresent); DATA.Subscribe($"{Module}.{Name}.IsProtruded", () => IsProtruded); OP.Subscribe($"{Module}.{Name}.Home", (string cmd, object[] args) => { HomeSmif(out _); return true; }); OP.Subscribe($"{Module}.{Name}.Abort", (string cmd, object[] args) => { Stop(); return true; }); OP.Subscribe($"{Module}.{Name}.Reset", (string cmd, object[] args) => { Reset(); return true; }); OP.Subscribe($"{Module}.{Name}.Unload", (string cmd, object[] args) => { UnloadCassette(out _); return true; }); OP.Subscribe($"{Module}.{Name}.Load", (string cmd, object[] args) => { LoadCassette(out _); return true; }); return true; } public virtual void Terminate() { } public virtual void Monitor() { } public virtual void Reset() { } public virtual void ResetDevice() { } public virtual bool HomeSmif(out string reason) { reason = string.Empty; return true; } public virtual bool LoadCassette(out string reason) { reason = string.Empty; return true; } public virtual bool UnloadCassette(out string reason) { reason = string.Empty; return true; } public virtual bool LockCassettePOD(out string reason) { reason = string.Empty; return true; } public virtual bool UnLockCassettePOD(out string reason) { reason = string.Empty; return true; } public virtual void Stop() { return; } public virtual bool CheckMappingResult(out string reason) { reason = string.Empty; return true; } public virtual bool CheckPodPresent(out string reason) { reason = string.Empty; return true; } public virtual bool HomeSmif(string port, out string reason) { reason = string.Empty; return true; } public virtual bool LoadCassette(string port, out string reason) { reason = string.Empty; return true; } public virtual bool UnloadCassette(string port, out string reason) { reason = string.Empty; return true; } public virtual bool LockCassettePOD(string port, out string reason) { reason = string.Empty; return true; } public virtual bool UnLockCassettePOD(string port, out string reason) { reason = string.Empty; return true; } public virtual void Stop(string port) { return; } public virtual bool CheckMappingResult(string port, out string reason) { reason = string.Empty; return true; } public virtual bool CheckPodPresent(string port, out string reason) { reason = string.Empty; return true; } public virtual bool CheckWaferThickness(out string reason, string startSlot = "1", string endSlot = "25") { reason = string.Empty; return true; } public virtual bool QueryLoadStatus(out string reason) { reason = string.Empty; return true; } public virtual bool QuerySTNMappingInfo(out string reason) { reason = string.Empty; return true; } public virtual bool SaveSTNMappingInfo(string paraName, string paraValue, out string reason) { reason = string.Empty; return true; } public virtual bool StoreSTNMappingInfo(out string reason) { reason = string.Empty; return true; } public virtual bool SetPodUp(bool isUp,out string reason) { reason = string.Empty; return true; } public virtual bool SetPodOpen(bool isOpen,out string reason) { reason = string.Empty; return true; } } }