| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | using System.Collections.Generic;using Aitex.Core.RT.Fsm;using Aitex.Core.RT.Routine;using Aitex.Core.RT.SCCore;using Aitex.Core.Util;using MECF.Framework.Common.Equipment;namespace VirgoRT.Modules{    public class HomeAll    {        private List<List<IModuleEntity>> _lstModules = new List<List<IModuleEntity>>();        private Dictionary<IModuleEntity, int> _homeToken = new Dictionary<IModuleEntity, int>();        public HomeAll()        {        }        public Result Start(params object[] objs)        {            var pms = new List<IModuleEntity>();            if (ModuleHelper.IsInstalled(ModuleName.PMA))                pms.Add(Singleton<RouteManager>.Instance.PMA);            if (ModuleHelper.IsInstalled(ModuleName.PMB))                pms.Add(Singleton<RouteManager>.Instance.PMB);            _lstModules.Clear();            _lstModules.Add(pms);            _lstModules.Add(new List<IModuleEntity>() { Singleton<RouteManager>.Instance.EFEM });            return Result.RUN;        }        public Result Monitor(params object[] objs)        {            if (_homeToken.Count == 0 && _lstModules.Count == 0)                return Result.DONE;            if (_homeToken.Count > 0)            {                foreach (var moduleToken in _homeToken)                {                    IModuleEntity module = moduleToken.Key;                    if (module.IsError)                        return Result.FAIL;                    if (!module.CheckAcked(moduleToken.Value) || module.IsBusy || module.IsInit)                        return Result.RUN;                }                _homeToken.Clear();                if (_lstModules.Count == 0)                    return Result.DONE;            }            if (_homeToken.Count == 0)            {                foreach (var moduleEntity in _lstModules[0])                {                    _homeToken[moduleEntity] = moduleEntity.Invoke("Home");                }                _lstModules.RemoveAt(0);            }            return Result.RUN;        }        public void Clear()        {            _lstModules.Clear();            _homeToken.Clear();        }    }}
 |