using Aitex.Core.Common; using Aitex.Core.RT.Device; using Aitex.Sorter.Common; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Schedulers; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.RT.EquipmentLibrary.LogicUnits; using System; using FurnaceRT.Equipments.Systems; namespace FurnaceRT.Equipments.CarrierRobots { public abstract class CarrierRobotModuleBase : ModuleFsmDevice, ITransferTarget, IModuleDevice { public CarrierRobotModuleBase() { } public override bool Initialize() { return base.Initialize(); } //IModuleDevice public abstract bool IsReady { get; } public abstract bool IsError { get; } public abstract bool IsInit { get; } public abstract bool Home(out string reason); //Job Task public abstract void NoteJobStart(); public abstract void NoteJobComplete(); //Transfer public abstract bool PrepareTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason); public abstract bool TransferHandoff(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason); public abstract bool PostTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason); public abstract bool CheckReadyForTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason); public abstract void NoteTransferStart(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType); public abstract void NoteTransferStop(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType); public abstract bool CheckReadyForMap(ModuleName robot, Hand blade, out string reason); public abstract bool Pick(ModuleName target, Hand blade, int targetSlot, out string reason); public abstract bool Place(ModuleName target, Hand blade, int targetSlot, out string reason); public abstract bool Load(ModuleName target, Hand blade, int targetSlot, ModuleName destinationStocker, CarrierType carrierType, string reservedCarrierId, out string reason); public abstract bool Unload(ModuleName target, Hand blade, int targetSlot, out string reason); } }