using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Aitex.Core.RT.Event; using Aitex.Core.Util; using MECF.Framework.Common.Equipment; using FurnaceRT.FAs; namespace FurnaceRT.Equipments.PMs { public class RecipeFACallback : IRecipeFACallback { private const string PM1RecipeStart = "PM1RecipeStart"; private const string PM1RecipeComplete = "PM1RecipeComplete"; private const string PM1RecipeStepStart = "PM1RecipeStepStart"; private const string PM1RecipeStepEnd = "PM1RecipeStepEnd"; private const string PM1RecipeFailed = "PM1RecipeFailed"; private const string PM2RecipeStart = "PM2RecipeStart"; private const string PM2RecipeComplete = "PM2RecipeComplete"; private const string PM2RecipeStepStart = "PM2RecipeStepStart"; private const string PM2RecipeStepEnd = "PM2RecipeStepEnd"; private const string PM2RecipeFailed = "PM2RecipeFailed"; private Dictionary PMRecipeStart = new Dictionary() { {ModuleName.PM1, PM1RecipeStart}, {ModuleName.PM2, PM2RecipeStart}, }; private Dictionary PMRecipeComplete = new Dictionary() { {ModuleName.PM1, PM1RecipeComplete}, {ModuleName.PM2, PM2RecipeComplete}, }; private Dictionary PMRecipeStepStart = new Dictionary() { {ModuleName.PM1, PM1RecipeStepStart}, {ModuleName.PM2, PM2RecipeStepStart}, }; private Dictionary PMRecipeStepEnd = new Dictionary() { {ModuleName.PM1, PM1RecipeStepEnd}, {ModuleName.PM2, PM2RecipeStepEnd}, }; private Dictionary PMRecipeFailed = new Dictionary() { {ModuleName.PM1, PM1RecipeFailed}, {ModuleName.PM2, PM2RecipeFailed}, }; public RecipeFACallback() { EV.Subscribe(new EventItem("Event", PM1RecipeStart, PM1RecipeStart)); EV.Subscribe(new EventItem("Event", PM1RecipeComplete, PM1RecipeComplete)); EV.Subscribe(new EventItem("Event", PM1RecipeStepStart, PM1RecipeStepStart)); EV.Subscribe(new EventItem("Event", PM1RecipeStepEnd, PM1RecipeStepEnd)); EV.Subscribe(new EventItem("Event", PM1RecipeFailed, PM1RecipeFailed)); EV.Subscribe(new EventItem("Event", PM2RecipeStart, PM2RecipeStart)); EV.Subscribe(new EventItem("Event", PM2RecipeComplete, PM2RecipeComplete)); EV.Subscribe(new EventItem("Event", PM2RecipeStepStart, PM2RecipeStepStart)); EV.Subscribe(new EventItem("Event", PM2RecipeStepEnd, PM2RecipeStepEnd)); EV.Subscribe(new EventItem("Event", PM2RecipeFailed, PM2RecipeFailed)); } public void RecipeComplete(string module, string recipeName) { ModuleName moduleName = ModuleHelper.Converter(module); EV.Notify(PMRecipeComplete[moduleName], new SerializableDictionary() { {DVIDName.RecipeID, recipeName}, {DVIDName.StationName, module}, }); } public void RecipeFailed(string module, string recipeName) { ModuleName moduleName = ModuleHelper.Converter(module); EV.Notify(PMRecipeFailed[moduleName], new SerializableDictionary() { {DVIDName.RecipeID, recipeName}, {DVIDName.StationName, module}, }); } public void RecipeStart(string module, string recipeName) { ModuleName moduleName = ModuleHelper.Converter(module); EV.Notify(PMRecipeStart[moduleName], new SerializableDictionary() { {DVIDName.RecipeID, recipeName}, {DVIDName.StationName, module}, }); } public void RecipeStepEnd(string module, string recipeName, int stepNumber) { ModuleName moduleName = ModuleHelper.Converter(module); EV.Notify(PMRecipeStepEnd[moduleName], new SerializableDictionary() { {DVIDName.RecipeID, recipeName}, {DVIDName.StationName, module}, {DVIDName.RecipeStepNumber, (stepNumber+1).ToString()}, }); } public void RecipeStepStart(string module, string recipeName, int stepNumber) { ModuleName moduleName = ModuleHelper.Converter(module); EV.Notify(PMRecipeStepStart[moduleName], new SerializableDictionary() { {DVIDName.RecipeID, recipeName}, {DVIDName.StationName, module}, {DVIDName.RecipeStepNumber, (stepNumber+1).ToString()}, }); } } }