using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; using MECF.Framework.Common.Equipment; using FurnaceRT.Equipments.PMs.Routines; namespace FurnaceRT.Equipments.PMs.RecipeExecutions { public class PostProcess : PMBaseRoutine { private enum RoutineStep { RFPowerOff, MWPowerOff, StopGasFlow, PinUp, Vent, } private int _rfOffTimeout; private int _mwOffTimeout; private int _liftTimeout; public PostProcess(ModuleName module, PMModule pm) : base(module, pm) { Module = module.ToString(); Name = "PostProcess"; } public bool Initialize() { return true; } public void Terminate() { } public override Result Start(params object[] objs) { //_rfOffTimeout = SC.GetValue($"PM.{PMModule.Name}.RF.PowerOnTimeout"); //_mwOffTimeout = SC.GetValue($"PM.{PMModule.Name}.Microwave.PowerOnTimeout"); Reset(); //_ventRoutine = new PMVentRoutine(ModuleHelper.Converter(Module), PMModule); //_liftTimeout = SC.GetValue($"PM.{PMModule.Name}.ChamberLiftPin.MoveTimeout"); return Result.RUN; } public override Result Monitor() { try { //StopAllGasFlow((int)RoutineStep.StopGasFlow, PMModule); //MovePinUp((int)RoutineStep.PinUp, PMModule, _liftTimeout); //ExecuteRoutine((int)RoutineStep.Vent, _ventRoutine); } catch (RoutineBreakException) { return Result.RUN; } catch (RoutineFaildException) { return Result.FAIL; } return Result.DONE; } public void Exit() { PMModule.RecipeRunningInfo.StepName = string.Empty; } public override void Abort() { //PMModule.GasSticks.ForEach(x=>x.SetFlow(out _, 0, 0)); PMModule.RecipeRunningInfo.StepName = string.Empty; } } }