using Aitex.Core.Common.DeviceData; using Aitex.Core.Util; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.SubstrateTrackings; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Aitex.Core.RT.Device; using Aitex.Core.RT.Event; using Aitex.Core.RT.Log; using Aitex.Sorter.Common; using VirgoRT.Modules; using MECF.Framework.Common.Schedulers; using VirgoRT.Devices; using Aitex.Core.Common; namespace VirgoRT.Scheduler { public class SchedulerModule { public enum TaskType { None, PrepareTransfer, Pick, Place, PickAndPlace, PostTransfer, Preprocess, Process, PostProcess, IdlePurgeProcess, IdleCleanProcess, PreJobProcess, CompleteJobProcess, OpenCover, CloseCover, Load, Unload, Align, TransferTarget, Cooling, Heating, Map, Goto, } public ModuleName Module { get { return ModuleHelper.Converter(_module); } } public virtual bool IsAvailable { get; } public virtual bool IsOnline { get; } public virtual bool IsError { get; } protected string _module; protected TaskType _task = TaskType.None; protected EnumTransferType _inTransferType; protected int _inTransferSlot; protected ModuleName _inProcessRobot; public Dictionary WaferArriveTicks { get; set; } private R_TRIG[] firstDetectWaferArriveTrigs = new R_TRIG[25]; public SchedulerModule(string module) { _module = module; WaferArriveTicks = new Dictionary(); for(int i=0;i