public void OnGet() { WorkDays = WorkDay.WorkDays.ToArray(); using (var cn = Data.GetConnection()) { MyOrgSelect = new MyOrgSelect() { UserId = CurrentUser.UserId }.ExecuteSelectList(cn, CurrentUser.OrganizationId); ActivitySelect = new ActivitySelect() { OrgId = OrgId }.ExecuteSelectList(cn, CurrentOrgUser.DefaultActivityId); Responsibilities = new Responsibilities().Execute(cn); TimeZoneSelect = new TimeZoneSelect().ExecuteSelectList(cn, CurrentUser.TimeZoneOffset); AdjustForDaylightSaving = CurrentUser.AdjustForDaylightSaving; } OrgUser = CurrentOrgUser ?? new OrganizationUser() { UserId = CurrentUser.UserId, OrganizationId = CurrentOrg.Id, DisplayName = User.Identity.Name, WorkDays = 62 // mon -> fri flag values }; }
private string PerformStartReset() { nextActivitySelect = ActivitySelect.Reset; if (IsActive) { abortCurrentActivityReason = "Reset has been requested"; } return(String.Empty); }
private string PerformSingleUnload() { if (currentActivity != ActivitySelect.Ready) { return(Utils.Fcns.CheckedFormat("Unload Request not permitted, engine is not ready [{0}]", currentActivity)); } nextActivitySelect = ActivitySelect.PerformUnload; return(String.Empty); }
void ServiceReadyActivity() { IValueAccessor a2pPinsStateIVA = SelectedActiveToPassivePinsStateIVA; IValueAccessor p2aPinsStateIVA = SelectedPassiveToActivePinsStateIVA; IActiveToPassivePinsState a2pPinsState = new ActiveToPassivePinsState(a2pPinsStateIVA.Update().VC); IPassiveToActivePinsState p2aPinsState = new PassiveToActivePinsState(p2aPinsStateIVA.Update().VC); if (!a2pPinsState.IsIdle) { SetCurrentActivity(ActivitySelect.WaitForPinsReady, Utils.Fcns.CheckedFormat("A2P pins are no longer idle [{0}]", a2pPinsState)); return; } if (!p2aPinsState.IsSelectable) { SetCurrentActivity(ActivitySelect.WaitForPinsReady, Utils.Fcns.CheckedFormat("P2A pins are no longer selectable [{0}]", p2aPinsState)); return; } // interface is idle and is selectable. detect auto trigger conditions and automatically request next transition accordingly. UpdateReadyToLoadAndUnload(false, true); if (nextActivitySelect == ActivitySelect.None) { PresentPlaced presentPlacedInput = lpmPresentPlacedInputIVA.Update().VC.GetValue <PresentPlaced>(false); if (presentPlacedInput.IsNeitherPresentNorPlaced() && enableAutoLoadIVA.Update().VC.GetValue <bool>(false)) { if (loadUnloadStartHoldoffTimer.StartIfNeeded(configValues.LoadUnloadStartHoldoff).IsTriggered) { nextActivitySelect = ActivitySelect.PerformLoad; loadUnloadStartHoldoffTimer.Stop(); } } else if (presentPlacedInput.IsProperlyPlaced() && enableAutoUnloadIVA.Update().VC.GetValue <bool>(false)) { if (loadUnloadStartHoldoffTimer.StartIfNeeded(configValues.LoadUnloadStartHoldoff).IsTriggered) { nextActivitySelect = ActivitySelect.PerformUnload; loadUnloadStartHoldoffTimer.Stop(); } } else { loadUnloadStartHoldoffTimer.StopIfNeeded(); } } else { loadUnloadStartHoldoffTimer.StopIfNeeded(); } }
void ServiceDispatchNextActivity() { if (nextActivitySelect == ActivitySelect.None) { return; } Log.Debug.Emit("Processing nextActivity:{0}", nextActivitySelect); SetCurrentActivity(nextActivitySelect, "Starting new activity"); nextActivitySelect = ActivitySelect.None; }
bool Spin() { WaitForSomethingToDo(TimeSpan.FromSeconds(0.02)); ServiceInstantActionQueue(); ServiceConfig(); ActivitySelect abortToActivity = (nextActivitySelect == ActivitySelect.Reset) ? nextActivitySelect : ActivitySelect.WaitForPinsReady; switch (currentActivity) { case ActivitySelect.PerformLoad: case ActivitySelect.PerformUnload: if (abortCurrentActivityReason != null) { SetCurrentActivity(abortToActivity, abortCurrentActivityReason); abortCurrentActivityReason = null; return(false); } break; default: if (abortCurrentActivityReason != null) { if (nextActivitySelect == ActivitySelect.Reset) { if (currentActivity == ActivitySelect.Reset) { Log.Debug.Emit("Ignoring extra Reset request - Reset as already in progress"); } else if (currentActivity == ActivitySelect.Offline) { Log.Warning.Emit("Unable to abort activity:{0} with reason:{1}", currentActivity, abortCurrentActivityReason); } else { SetCurrentActivity(abortToActivity, abortCurrentActivityReason); } } else { Log.Warning.Emit("Unable to abort activity:{0} with reason:{1}", currentActivity, abortCurrentActivityReason); } abortCurrentActivityReason = null; } break; } return(true); }
protected override string PerformGoOnlineAction(bool andInitialize) { SetBaseState(UseState.Online, "GoOnline Action has been performed", true); if (currentActivity == ActivitySelect.Offline) { SetCurrentActivity(ActivitySelect.None, "Performing GoOnline Action"); } if (andInitialize) { nextActivitySelect = ActivitySelect.Reset; } return(String.Empty); }
protected override string PerformGoOfflineAction() { SetBaseState(UseState.Offline, "GoOffline Action has been performed", true); SetCurrentActivity(ActivitySelect.Offline, "Performing GoOffline Action"); nextActivitySelect = ActivitySelect.None; lastSetA2PPins = new ActiveToPassivePinsState(); lastSetA2PPins.IFaceName = PartID; lastSetA2PPins.XferILock = true; ohtActiveToPassivePinsStateIVA.Set(lastSetA2PPins as IActiveToPassivePinsState); agvActiveToPassivePinsStateIVA.Set(lastSetA2PPins as IActiveToPassivePinsState); privateState = new E084ActiveTransferSimEngineState() { StateStr = "Offline" }; PublishPrivateState(); return(String.Empty); }
protected override string PerformGoOfflineAction() { SetBaseState(UseState.Offline, "GoOffline Action has been performed", true); SetCurrentActivity(ActivitySelect.Offline, "Performing GoOffline Action"); nextActivitySelect = ActivitySelect.None; lastSetA2PPins = new ActiveToPassivePinsState(); lastSetA2PPins.IFaceName = PartID; lastSetA2PPins.XferILock = true; lpmSimPart.CreateSetE084ActivePins(pioSelect, lastSetA2PPins).Start(); privateState = new E084ActiveTransferSimEngineState() { StateStr = "Offline" }; PublishPrivateState(); return String.Empty; }
void SetCurrentActivity(ActivitySelect activity, string reason) { ActivitySelect entryActivity = currentActivity; Log.Debug.Emit("SetCurrentActivity changing activity to:{0} [from:{1}, reason:'{2}']", activity, currentActivity, reason); currentActivity = activity; privateState.StateStr = (Utils.Fcns.CheckedFormat("{0} [{1}]", activity, reason)); privateState.IsCycling = (currentActivity == ActivitySelect.AutoLoadAndUnload); privateState.IsReady = (currentActivity == ActivitySelect.Ready); if (entryActivity != currentActivity) { privateState.TransferProgressStr = String.Empty; if (activity == ActivitySelect.AutoLoadAndUnload) privateState.TransferCount = 0; } bool busy = false; switch (currentActivity) { case ActivitySelect.AutoLoadAndUnload: busy = !String.IsNullOrEmpty(privateState.TransferProgressStr); break; case ActivitySelect.PerformLoad: case ActivitySelect.PerformUnload: case ActivitySelect.Reset: busy = true; break; default: break; } // update PrivateBaseState now. if (currentActivity == ActivitySelect.Offline) { if (!PrivateBaseState.IsOnline) { if (entryActivity == ActivitySelect.Ready || entryActivity == ActivitySelect.None) SetBaseState(UseState.Offline, reason, true); else SetBaseState(UseState.FailedToOffline, reason, true); } } else if (!PrivateBaseState.IsOnline) SetBaseState(UseState.OnlineBusy, reason, true); else if (!PrivateBaseState.IsBusy && busy) SetBaseState(UseState.OnlineBusy, reason, true); else if (PrivateBaseState.IsBusy && !busy) SetBaseState(UseState.Online, reason, true); PublishPrivateState(); }
void ServicePerformAutoLoadAndUnloadActivity() { LPMSim.State lpmState = lpmSimPart.PublicState; IPassiveToActivePinsState p2aPinsState = lpmState.OutputsState.GetE84OutputBits(pioSelect); // first keep waiting until passive to active pins are seletable if (!p2aPinsState.IsSelectable) { if (!p2aPinsState.IsIdle) SetCurrentActivity(ActivitySelect.WaitForPinsReady, Utils.Fcns.CheckedFormat("{0} failed: p2a pins are no longer idle [{1}]", currentActivity, p2aPinsState)); return; } // passive to active pins are selectable. if (!lpmState.InputsState.PodPresenceSensorState.DoesPlacedEqualPresent) { SetCurrentActivity(ActivitySelect.WaitForPinsReady, Utils.Fcns.CheckedFormat("{0} failed: Unexpected Pod Presence state [{1}]", currentActivity, lpmState.InputsState.PodPresenceSensorState)); return; } // transfer start holdoff timer if (lpmState.InputsState.PodPresenceSensorState.IsPlacedAndPresent) { Log.Info.Emit("{0}: P2A is selectable and FOUP is placed, starting unload", currentActivity); ServicePerformUnloadActivity(); if (currentActivity == ActivitySelect.AutoLoadAndUnload) Spin(TimeSpan.FromSeconds(5.0)); } else { Log.Info.Emit("{0}: P2A is selectable and port is empty, starting load", currentActivity); ServicePeformLoadActivity(); if (currentActivity == ActivitySelect.AutoLoadAndUnload) Spin(TimeSpan.FromSeconds(5.0)); } if (nextActivitySelect == ActivitySelect.Ready) { SetCurrentActivity(ActivitySelect.Ready, "Cycling stopped normally"); nextActivitySelect = ActivitySelect.None; } }
void ServiceDispatchNextActivity() { if (nextActivitySelect == ActivitySelect.None) return; Log.Debug.Emit("Processing nextActivity:{0}", nextActivitySelect); SetCurrentActivity(nextActivitySelect, "Starting new activity"); nextActivitySelect = ActivitySelect.None; }
private string PerformStartReset() { nextActivitySelect = ActivitySelect.Reset; if (IsActive) abortCurrentActivityReason = "Reset has been requested"; return String.Empty; }
private string PerformSingleUnload() { if (currentActivity != ActivitySelect.Ready) return Utils.Fcns.CheckedFormat("Unload Request not permitted, engine is not ready [{0}]", currentActivity); nextActivitySelect = ActivitySelect.PerformUnload; return String.Empty; }
private string PerformSetEnableCycle(bool enableCycle) { if (enableCycle) { if (IsReady) nextActivitySelect = ActivitySelect.AutoLoadAndUnload; else return Utils.Fcns.CheckedFormat("SetEnableCycle(true) Request not permitted, engine is not ready [{0}]", currentActivity); } else { if (currentActivity == ActivitySelect.AutoLoadAndUnload) nextActivitySelect = ActivitySelect.Ready; else return Utils.Fcns.CheckedFormat("SetEnableCycle(false) Request not permitted, engine is not cycling [{0}]", currentActivity); } return String.Empty; }
protected override string PerformGoOnlineAction(bool andInitialize) { SetBaseState(UseState.Online, "GoOnline Action has been performed", true); if (currentActivity == ActivitySelect.Offline) SetCurrentActivity(ActivitySelect.None, "Performing GoOnline Action"); if (andInitialize) nextActivitySelect = ActivitySelect.Reset; return String.Empty; }
void SetCurrentActivity(ActivitySelect activity, string reason) { ActivitySelect entryActivity = currentActivity; Log.Debug.Emit("SetCurrentActivity changing activity to:{0} [from:{1}, reason:'{2}']", activity, currentActivity, reason); currentActivity = activity; privateState.StateStr = (Utils.Fcns.CheckedFormat("{0} [{1}]", activity, reason)); privateState.IsCycling = (enableAutoLoadIVA.Update().VC.GetValue <bool>(false) && enableAutoUnloadIVA.Update().VC.GetValue <bool>(false)); privateState.NotReadyReason = ((currentActivity == ActivitySelect.Ready) ? "" : currentActivity.ToString()); UpdateReadyToLoadAndUnload(true, false); if (entryActivity != currentActivity) { privateState.TransferProgressStr = String.Empty; if (!privateState.IsCycling) { privateState.TransferCount = 0; } } bool busy = false; switch (currentActivity) { case ActivitySelect.PerformLoad: case ActivitySelect.PerformUnload: case ActivitySelect.Reset: busy = true; break; default: break; } // update PrivateBaseState now. if (currentActivity == ActivitySelect.Offline) { if (!PrivateBaseState.IsOnline) { if (entryActivity == ActivitySelect.Ready || entryActivity == ActivitySelect.None) { SetBaseState(UseState.Offline, reason, true); } else { SetBaseState(UseState.FailedToOffline, reason, true); } } } else if (!PrivateBaseState.IsOnline) { SetBaseState(UseState.OnlineBusy, reason, true); } else if (!PrivateBaseState.IsBusy && busy) { SetBaseState(UseState.OnlineBusy, reason, true); } else if (PrivateBaseState.IsBusy && !busy) { SetBaseState(UseState.Online, reason, true); } PublishPrivateState(); }