|
@@ -21,6 +21,8 @@ using MECF.Framework.Common.Schedulers;
|
|
|
using MECF.Framework.Common.SubstrateTrackings;
|
|
|
using Venus_RT.Devices;
|
|
|
using Venus_Core;
|
|
|
+using MECF.Framework.Common.DataCenter;
|
|
|
+using System.IO;
|
|
|
|
|
|
namespace Venus_RT.Scheduler
|
|
|
{
|
|
@@ -191,8 +193,17 @@ namespace Venus_RT.Scheduler
|
|
|
return _entityTaskToken != (int)FSM_MSG.NONE;
|
|
|
}
|
|
|
|
|
|
- public override bool Process(string recipeName, bool isCleanRecipe, bool withWafer, WaferInfo wafer)
|
|
|
+ public override bool Process(string recipeName, bool isCleanRecipe, RecipeType recipeType, WaferInfo wafer)
|
|
|
{
|
|
|
+ bool withWafer;
|
|
|
+ if (recipeType == RecipeType.Clean)
|
|
|
+ {
|
|
|
+ withWafer = false;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ withWafer = true;
|
|
|
+ }
|
|
|
_task = TaskType.Process;
|
|
|
LogTaskStart(_task, $"recipe: {recipeName}, clean: {isCleanRecipe}, with wafer: {withWafer}");
|
|
|
|
|
@@ -211,11 +222,11 @@ namespace Venus_RT.Scheduler
|
|
|
{
|
|
|
if(isCleanRecipe)
|
|
|
{
|
|
|
- _entityTaskToken = _entity.InvokeClean(recipeName, "", false);
|
|
|
+ _entityTaskToken = _entity.InvokeClean(recipeName, "", RecipeType.Clean);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- _entityTaskToken = _entity.InvokeProcess(recipeName, wafer.WaferOrigin, true);
|
|
|
+ _entityTaskToken = _entity.InvokeProcess(recipeName, wafer.WaferOrigin, RecipeType.Process);
|
|
|
}
|
|
|
|
|
|
return _entityTaskToken != (int)FSM_MSG.NONE;
|
|
@@ -295,7 +306,7 @@ namespace Venus_RT.Scheduler
|
|
|
{
|
|
|
_task = TaskType.IdlePurgeProcess;
|
|
|
|
|
|
- _entityTaskToken = _entity.InvokeClean(recipeName, "", false);
|
|
|
+ _entityTaskToken = _entity.InvokeClean(recipeName, "", RecipeType.Clean);
|
|
|
|
|
|
LogTaskStart(_task, $"recipe: {recipeName}, clean: {false}, with wafer: {false}");
|
|
|
|
|
@@ -306,7 +317,7 @@ namespace Venus_RT.Scheduler
|
|
|
{
|
|
|
_task = TaskType.IdleCleanProcess;
|
|
|
|
|
|
- _entityTaskToken = _entity.InvokeClean(recipeName, "", false);
|
|
|
+ _entityTaskToken = _entity.InvokeClean(recipeName, "", RecipeType.Clean);
|
|
|
|
|
|
LogTaskStart(_task, $"recipe: {recipeName}, clean: {true}, with wafer: {false}");
|
|
|
return _entityTaskToken != (int)FSM_MSG.NONE;
|
|
@@ -321,7 +332,7 @@ namespace Venus_RT.Scheduler
|
|
|
{
|
|
|
_task = TaskType.PreJobProcess;
|
|
|
|
|
|
- _entityTaskToken = _entity.InvokeClean(recipeName, "", false);
|
|
|
+ _entityTaskToken = _entity.InvokeClean(recipeName, "", RecipeType.Clean);
|
|
|
|
|
|
LogTaskStart(_task, $"recipe: {recipeName}, clean: {true}, with wafer: {false}");
|
|
|
return _entityTaskToken != (int)FSM_MSG.NONE;
|
|
@@ -332,7 +343,7 @@ namespace Venus_RT.Scheduler
|
|
|
{
|
|
|
_task = TaskType.CompleteJobProcess;
|
|
|
|
|
|
- _entityTaskToken = _entity.InvokeClean(recipeName, "", false);
|
|
|
+ _entityTaskToken = _entity.InvokeClean(recipeName, "", RecipeType.Clean);
|
|
|
|
|
|
LogTaskStart(_task, $"recipe: {recipeName}, clean: {true}, with wafer: {false}");
|
|
|
return _entityTaskToken != (int)FSM_MSG.NONE;
|
|
@@ -344,7 +355,7 @@ namespace Venus_RT.Scheduler
|
|
|
string recipeName = wafer.ProcessJob.Sequence.GetRecipe(Module);
|
|
|
if(recipeName.Length > 0)
|
|
|
{
|
|
|
- Process(recipeName, false, true, wafer);
|
|
|
+ Process(recipeName, false, RecipeType.Process, wafer);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -412,7 +423,7 @@ namespace Venus_RT.Scheduler
|
|
|
TimeSpan span = DateTime.Now - _lastRunTime;
|
|
|
if(span.TotalHours >= _idleCleanHourSetPoint)
|
|
|
{
|
|
|
- Process(_idleCleanRecipe, true, false, null);
|
|
|
+ Process(_idleCleanRecipe, true, RecipeType.Clean, null);
|
|
|
ResetIdleCleanCounter();
|
|
|
return true;
|
|
|
}
|
|
@@ -421,7 +432,7 @@ namespace Venus_RT.Scheduler
|
|
|
{
|
|
|
if(_idleCleanWaferCount >= _idleCleanWaferSetPoint)
|
|
|
{
|
|
|
- Process(_idleCleanRecipe, true, false, null);
|
|
|
+ Process(_idleCleanRecipe, true, RecipeType.Clean, null);
|
|
|
ResetIdleCleanCounter();
|
|
|
return true;
|
|
|
}
|
|
@@ -433,8 +444,10 @@ namespace Venus_RT.Scheduler
|
|
|
public bool RunJobCleanTask(string jobCleanRecipe)
|
|
|
{
|
|
|
// validate the job clean recipe name
|
|
|
- string recipeContent = RecipeFileManager.Instance.LoadRecipe(Module.ToString(), jobCleanRecipe, false);
|
|
|
- if(recipeContent.Length == 0)
|
|
|
+ //string recipeContent = RecipeFileManager.Instance.LoadRecipe(Module.ToString(), jobCleanRecipe, false);
|
|
|
+ string path = Path.Combine( "Recipes", Module.ToString(),"Clean" , $"{jobCleanRecipe}.rcp");
|
|
|
+ string recipeContent = RecipeFileManager.Instance.LoadRecipeByPath(path);
|
|
|
+ if (recipeContent.Length == 0)
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
@@ -445,7 +458,7 @@ namespace Venus_RT.Scheduler
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- return Process(jobCleanRecipe, true, false, null);
|
|
|
+ return Process(jobCleanRecipe, true, RecipeType.Clean, null);
|
|
|
}
|
|
|
|
|
|
#endregion
|