using MECF.Framework.Common.Equipment; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace VirgoRT.Scheduler { public enum StepID { Source, LoadlockIn, ProcessA, ProcessB, ProcessC, LoadlockOut, Target, } public class Step { public bool Need; public ModuleName Chamber; public int Slot; public string Recipe; public Step(bool need, ModuleName chamber, int slot, string recipe) { Need = need; Chamber = chamber; Slot = slot; Recipe = recipe; } } public class Sequence { public Step[] Steps { get { return _steps; } } private StepID _curStep = StepID.Source; private Step[] _steps = new Step[] { new Step(true, ModuleName.LP1, 0, string.Empty), new Step(true, ModuleName.LLA, 0, string.Empty), new Step(true, ModuleName.PM1, 0, string.Empty), new Step(true, ModuleName.PM2, 0, string.Empty), new Step(true, ModuleName.PM3, 0, string.Empty), new Step(true, ModuleName.LLA, 0, string.Empty), new Step(true, ModuleName.LP1, 0, string.Empty), }; public Sequence() { } public Step NextStep(bool move = true) { for (StepID _step = _curStep; _curStep < StepID.Target; _step++) { if (_steps[(int)_step].Need) { if(move) _curStep = _step; return _steps[(int)_step]; } } return null; } } }