| 
					
				 | 
			
			
				@@ -65,6 +65,32 @@ namespace FurnaceRT.Equipments.PMs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             EV.Subscribe(new EventItem("Event", PM1RecipeStepEnd, PM1RecipeStepEnd));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             EV.Subscribe(new EventItem("Event", PM1RecipeFailed, PM1RecipeFailed));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.RecipeAbnormalEnd, $"RecipeAbnormalEnd"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.AlarmConditionTriggerReset, $"AlarmConditionTriggerReset"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.AlarmConditionTriggerEnd, $"AlarmConditionTriggerEnd"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.AlarmConditionTriggerHold, $"AlarmConditionTriggerHold"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.AlarmConditionTriggerJumpStep, $"AlarmConditionTriggerJumpStep"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.AlarmConditionTriggerCallAlarmRecipe, $"AlarmConditionTriggerCallAlarmRecipe"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.AlarmConditionTriggerCallAbortRecipe, $"AlarmConditionTriggerCallAbortRecipe"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.LeakCheckTriggerReset, $"LeakCheckTriggerReset"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.LeakCheckTriggerEnd, $"LeakCheckTriggerEnd"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.LeakCheckTriggerHold, $"LeakCheckTriggerHold"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.LeakCheckTriggerJumpStep, $"LeakCheckTriggerJumpStep"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.LeakCheckTriggerCallAlarmRecipe, $"LeakCheckTriggerCallAlarmRecipe"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.LeakCheckTriggerCallAbortRecipe, $"LeakCheckTriggerCallAbortRecipe"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.ManualTriggerRecipeHold, $"ManualTriggerRecipeHold"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.ManualTriggerRecipeRelease, $"ManualTriggerRecipeRelease"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.ManualTriggerRecipeSkip, $"ManualTriggerRecipeSkip"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.ManualTriggerRecipeJump, $"ManualTriggerRecipeJump"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.ManualTriggerRecipeAbort, $"ManualTriggerRecipeAbort"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.RecipeTriggerReset, $"RecipeTriggerReset"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.RecipeTriggerEnd, $"RecipeTriggerEnd"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.RecipeTriggerHold, $"RecipeTriggerHold"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.RecipeTriggerLeakCheck, $"RecipeTriggerLeakCheck"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.RecipeTriggerJumpStep, $"RecipeTriggerJumpStep"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Subscribe(new EventItem("Event", UniversalEvents.RecipeTriggerCallSubRecipe, $"RecipeTriggerCallSubRecipe"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //EV.Subscribe(new EventItem("Event", PM2RecipeStart, PM2RecipeStart));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //EV.Subscribe(new EventItem("Event", PM2RecipeComplete, PM2RecipeComplete));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //EV.Subscribe(new EventItem("Event", PM2RecipeStepStart, PM2RecipeStepStart));
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -122,16 +148,17 @@ namespace FurnaceRT.Equipments.PMs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.StationName,  module},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {"ProcessWaferIdList",  _fdcwaferList},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {"ProcessCarrierIDList",  _fdccridlst},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {"ProcessLotIdList",  _fdcLotIds},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DataVariables.ProcessWaferIdList,  module},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DataVariables.ProcessWaferIdList,  _fdcwaferList},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DataVariables.ProcessCarrierIDList,  _fdccridlst},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DataVariables.ProcessLotIdList,  _fdcLotIds},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void RecipeFailed(string module, string recipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(PMRecipeFailed[moduleName], new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(PMRecipeFailed[moduleName], new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.StationName,  module},
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -186,16 +213,16 @@ namespace FurnaceRT.Equipments.PMs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.StationName,  module},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {"ProcessWaferIdList",  _fdcwaferList},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {"ProcessCarrierIDList",  _fdccridlst},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {"ProcessLotIdList",  _fdcLotIds},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DataVariables.ProcessWaferIdList,  _fdcwaferList},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DataVariables.ProcessCarrierIDList,  _fdccridlst},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DataVariables.ProcessLotIdList,  _fdcLotIds},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void RecipeStepEnd(string module, string recipeName, int stepNumber)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(PMRecipeStepEnd[moduleName], new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(PMRecipeStepEnd[moduleName], new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.StationName,  module},
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -206,104 +233,253 @@ namespace FurnaceRT.Equipments.PMs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void RecipeStepStart(string module, string recipeName, int stepNumber)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(PMRecipeStepStart[moduleName], new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(PMRecipeStepStart[moduleName], new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.StationName,  module},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeStepNumber,  (stepNumber+1).ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #region 子事件上报
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void AlarmConditionTriggerReset(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.AlarmConditionTriggerReset, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeName, otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void AlarmConditionTriggerEnd(string module, string recipeName, int stepNumber)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.AlarmConditionTriggerEnd, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void AlarmConditionTriggerHold(string module, string recipeName, int stepNumber)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.AlarmConditionTriggerHold, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void AlarmConditionTriggerJumpStep(string module, string recipeName, int stepNumber, int stepId)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.AlarmConditionTriggerJumpStep, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DataVariables.StepId, stepId},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void AlarmConditionTriggerCallAlarmRecipe(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.AlarmConditionTriggerCallAlarmRecipe, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeName, otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void AlarmConditionTriggerCallAbortRecipe(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.AlarmConditionTriggerCallAbortRecipe, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeName, otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void RecipeHold(string module, string recipeName, string recipeStep)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void LeakCheckTriggerReset(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(UniversalEvents.RecipeHold, new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.LeakCheckTriggerReset, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void LeakCheckTriggerEnd(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.LeakCheckTriggerEnd, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {"RecID",  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void RecipeRelease(string module, string recipeName, string recipeStep)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void LeakCheckTriggerHold(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(UniversalEvents.RecipeRelease, new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.LeakCheckTriggerHold, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    {DataName.NewRecipeStepNumber.ToString(),  recipeStep},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void RecipeStepSkip(string module, string recipeName, string recipeStep)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void LeakCheckTriggerJumpStep(string module, string recipeName, int stepNumber, int stepId)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(UniversalEvents.RecipeStepSkip, new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.LeakCheckTriggerJumpStep, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {DataName.NewRecipeStepNumber.ToString(),  recipeStep},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DataVariables.StepId, stepId},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void RecipeStop(string module, string recipeName, string recipeStep)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void LeakCheckTriggerCallAlarmRecipe(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(UniversalEvents.RecipeStop, new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.LeakCheckTriggerCallAlarmRecipe, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {DataName.NewRecipeStepNumber.ToString(),  recipeStep},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeName, otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void RecipeJumpStep(string module, string recipeName, string recipeStep, string jumpStpeId)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void LeakCheckTriggerCallAbortRecipe(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(UniversalEvents.RecipeJumpStep, new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.LeakCheckTriggerCallAbortRecipe, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             {DataName.NewRecipeStepNumber.ToString(),  recipeStep},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {DataName.StepId.ToString(),  jumpStpeId},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeName, otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void RecipeAbort(string module, string recipeName, string recipeStep)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void ManualTriggerRecipeHold(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(UniversalEvents.RecipeAbort, new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.ManualTriggerRecipeHold, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                   {DataName.NewRecipeStepNumber.ToString(),  recipeStep},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void RecipeJumpEnd(string module, string recipeName, string recipeStep, string jumpStpeId)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void ManualTriggerRecipeRelease(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(UniversalEvents.RecipeJumpEnd, new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.ManualTriggerRecipeRelease, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void ManualTriggerRecipeSkip(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.ManualTriggerRecipeSkip, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void ManualTriggerRecipeJump(string module, string recipeName, int stepNumber, int stepId)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.ManualTriggerRecipeJump, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DataVariables.StepId, stepId},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void ManualTriggerRecipeAbort(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.ManualTriggerRecipeAbort, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeName, otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void RecipeTriggerReset(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.RecipeTriggerReset, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeName, otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void RecipeTriggerEnd(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.RecipeTriggerEnd, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             {DataName.NewRecipeStepNumber.ToString(),  recipeStep},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {DataName.StepId.ToString(),  jumpStpeId},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void RecipeCallAlarmRecipe(string module, string recipeName, string recipeStep, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void RecipeTriggerHold(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.RecipeTriggerHold, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void RecipeTriggerLeakCheck(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(UniversalEvents.CallAlarmRecipe, new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.RecipeTriggerLeakCheck, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              {DataName.NewRecipeStepNumber.ToString(),  recipeStep},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {DataName.CallRecipeID.ToString(),  otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void RecipeCallAbortRecipe(string module, string recipeName, string recipeStep, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void RecipeTriggerJumpStep(string module, string recipeName, int stepNumber, int stepId)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(UniversalEvents.CallAbortRecipe, new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.RecipeTriggerJumpStep, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             {DataName.NewRecipeStepNumber.ToString(),  recipeStep},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                 {DataName.CallRecipeID.ToString(),  otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 {DataVariables.StepId, stepId},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void RecipeRunResetRecipe(string module, string recipeName, string recipeStep, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void RecipeTriggerCallSubRecipe(string module, string recipeName, int stepNumber, string otherRecipeName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EV.Notify(UniversalEvents.RunResetRecipe, new SerializableDictionary<string, string>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ModuleName moduleName = ModuleHelper.Converter(module);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.RecipeTriggerCallSubRecipe, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {DVIDName.RecipeID,  recipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {DataName.NewRecipeStepNumber.ToString(),  recipeStep},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             {DataName.CallRecipeID.ToString(),  otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeName, otherRecipeName},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void RecipeAbnormalEnd(string module, string recipeName, int stepNumber)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EV.Notify(UniversalEvents.RecipeAbnormalEnd, new SerializableDictionary<string, object>()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {DVIDName.RecipeID,  recipeName },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { DataVariables.ProcessWaferIdList,  ""},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { DataVariables.ProcessCarrierIDList,  ""},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { DataVariables.ProcessLotIdList,  ""},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        #endregion
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 |