using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; using Venus_RT.Devices; using MECF.Framework.Common.Routine; using MECF.Framework.Common.Equipment; using Venus_Core; using Aitex.Core.RT.Log; namespace Venus_RT.Modules.TM { class MFHomeRoutine : ModuleRoutineBase, IRoutine { private enum HomeStep { kHoming, kEnd, } private int _homingTimeout = 30000; private readonly JetTM _JetTM; private readonly ITransferRobot _robot; public MFHomeRoutine(JetTM jetTM, ITransferRobot robot) : base(ModuleName.TM) { _JetTM = jetTM; _robot = robot; Name = "TM Home"; } public RState Start(params object[] objs) { Reset(); _homingTimeout = SC.GetValue($"{Module}.HomeTimeout") * 1000; return Runner.Start(Module, Name); } public RState Monitor() { Runner.Run((int)HomeStep.kHoming, HomeTM, CheckHomeReady, _homingTimeout) .End((int)HomeStep.kEnd, NullFun, _delay_50ms); return Runner.Status; } private bool HomeTM() { return _robot.Home(); } private bool CheckHomeReady() { //LOG.Write(eEvent.WARN_DEVICE_INFO, _robot.Status.ToString()); LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TMRobot, ((int)_robot.Status).ToString()); return _robot.Status == RState.End; } public void Abort() { } } }