using SicRT.Scheduler; using System.Collections.Generic; using Aitex.Core.RT.SCCore; namespace SicRT.Modules.Schedulers { public class SchedulerModuleFactory { protected SchedulerTMRobot _tmRobot = new SchedulerTMRobot(); protected SchedulerWaferRobot _waferRobot = new SchedulerWaferRobot(); protected SchedulerTrayRobot _trayRobot = new SchedulerTrayRobot(); protected SchedulerBuffer _buffer = new SchedulerBuffer(ModuleName.Buffer); protected SchedulerLoadLock _load = new SchedulerLoadLock(ModuleName.LoadLock); protected SchedulerUnLoad _unload = new SchedulerUnLoad(ModuleName.UnLoad); protected SchedulerAligner _aligner = new SchedulerAligner(ModuleName.Aligner); protected SchedulerPM _pm1 = new SchedulerPM(ModuleName.PM1); protected SchedulerPM _pm2 = new SchedulerPM(ModuleName.PM2); protected SchedulerCassette _cassetteAL = new SchedulerCassette(ModuleName.CassAL); protected SchedulerCassette _cassetteAR = new SchedulerCassette(ModuleName.CassAR); protected SchedulerCassette _cassetteBL = new SchedulerCassette(ModuleName.CassBL); protected List _lstPms = new List(); protected List _lstWaferCassettes = new List(); protected SchedulerModuleFactory() { _lstPms.AddRange(new[] { _pm1 ,_pm2}); _lstWaferCassettes.AddRange(new[] { _cassetteAL, _cassetteAR}); } protected SchedulerModule GetModule(string name) { switch (ModuleHelper.Converter(name)) { case ModuleName.Buffer: return _buffer; case ModuleName.TMRobot: return _tmRobot; case ModuleName.WaferRobot: return _waferRobot; case ModuleName.TrayRobot: return _trayRobot; case ModuleName.PM1: return _pm1; case ModuleName.PM2: return _pm2; case ModuleName.CassAL: return _cassetteAL; case ModuleName.CassAR: return _cassetteAR; case ModuleName.CassBL: return _cassetteBL; case ModuleName.LoadLock: return _load; case ModuleName.UnLoad: return _unload; case ModuleName.Aligner: return _aligner; } return null; } protected SchedulerModule GetModule(ModuleName name) { switch (name) { case ModuleName.Buffer: return _buffer; case ModuleName.TMRobot: return _tmRobot; case ModuleName.WaferRobot: return _waferRobot; case ModuleName.TrayRobot: return _trayRobot; case ModuleName.PM1: return _pm1; case ModuleName.PM2: return _pm2; case ModuleName.CassAL: return _cassetteAL; case ModuleName.CassAR: return _cassetteAR; case ModuleName.CassBL: return _cassetteBL; case ModuleName.LoadLock: return _load; case ModuleName.UnLoad: return _unload; case ModuleName.Aligner: return _aligner; } return null; } public void Reset() { _tmRobot.ResetTask(); _waferRobot.ResetTask(); _trayRobot.ResetTask(); foreach (var pm in _lstPms) { pm.ResetTask(); } _buffer.ResetTask(); } } }