//internal static LoadingStates GetLoadingState(LoadStates loadState) //{ // LoadingStates states = LoadingStates.IDLE; // switch (loadState) // { // case LoadStates.SETUP: // states = LoadingStates.SETUP; // break; // case LoadStates.BUSY: // states = LoadingStates.BUSY; // break; // case LoadStates.IDLERUN: // states = LoadingStates.IDLERUN; // break; // case LoadStates.IDLE: // states = LoadingStates.IDLE; // break; // case LoadStates.PM: // states = LoadingStates.PM; // break; // case LoadStates.DOWN: // states = LoadingStates.DOWN; // break; // case LoadStates.WAIT_SETUP: // states = LoadingStates.WAIT_SETUP; // break; // case LoadStates.RENT: // states = LoadingStates.PM; // break; // } // return states; //} //internal static LoadStates GetLoadState(LoadingStates states) //{ // LoadStates loadState = LoadStates.IDLE; // switch (states) // { // case LoadingStates.BUSY: // loadState = LoadStates.BUSY; // break; // case LoadingStates.DOWN: // loadState = LoadStates.DOWN; // break; // case LoadingStates.IDLE: // loadState = LoadStates.IDLE; // break; // case LoadingStates.IDLERUN: // loadState = LoadStates.IDLERUN; // break; // case LoadingStates.PM: // loadState = LoadStates.PM; // break; // case LoadingStates.SETUP: // loadState = LoadStates.SETUP; // break; // case LoadingStates.WAIT_SETUP: // loadState = LoadStates.WAIT_SETUP; // break; // } // return loadState; //} public static List <string> GetNowAvailableChambers(AoEquipment aeqp, FabLot lot, DateTime now) { if (aeqp.IsParallelChamber == false) { return(null); } //AoChamberProc2 가 Parallel Chamber임 AoChamberProc2 proc = aeqp.FirstProcess <AoChamberProc2>(); List <string> result = new List <string>(); foreach (ChamberInfo chamber in proc.Chambers) { //chamber 진행여부(chamber.Current 는 현재 진행인 상태(currently in process)를 나타냄) if (chamber.Current != null) { continue; } //chamber.GetrAvailableTime 이 미래이면 현재 가동중, 현재(now) 이면 idle인 상태 if (chamber.GetAvailableTime() <= now) { result.Add(chamber.Label); } } return(result); }