Sic02-new/SicRT/Equipments/Schedulers/SchedulerPreHeat.cs

78 lines
1.9 KiB
C#
Raw Normal View History

2023-07-25 14:28:00 +08:00
using Aitex.Core.RT.Fsm;
using Aitex.Core.Util;
using SicRT.Scheduler;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.SubstrateTrackings;
using SicRT.Equipments;
using SicRT.Equipments.Systems;
using Mainframe.PreHeats;
namespace SicRT.Modules.Schedulers
{
public class SchedulerPreHeat : SchedulerModule
{
public override bool IsAvailable
{
get { return _preHeat.IsIdle && _preHeat.IsOnline && CheckTaskDone(); }
}
public override bool IsOnline
{
get { return _preHeat.IsOnline; }
}
public override bool IsError
{
get { return _preHeat.IsError; }
}
private PreHeatModuleBase _preHeat = null;
private int _entityTaskToken = (int)FSM_MSG.NONE;
public SchedulerPreHeat(ModuleName module) : base(module.ToString())
{
_module = module.ToString();
_preHeat = Singleton<EquipmentManager>.Instance.Modules[module] as PreHeatModuleBase;
}
public bool Monitor()
{
return true;
}
public override bool WarmUp(int warmUpTime)
{
_task = TaskType.WarmUp;
_entityTaskToken = _preHeat.InvokeWarmUp(warmUpTime);
LogTaskStart(_task, $"{Module} warm up {warmUpTime} seconds");
return _entityTaskToken != (int)FSM_MSG.NONE;
}
public bool CheckTaskDone()
{
bool ret = false;
switch (_task)
{
case TaskType.None:
ret = true;
break;
case TaskType.WarmUp:
ret = _preHeat.CheckAcked(_entityTaskToken);
break;
}
if (ret && _task != TaskType.None)
{
LogTaskDone(_task,"");
_task = TaskType.None;
}
return ret;
}
}
}