protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e) { if (e.Property == pinsStateDP) { PassiveToActivePinsState p2aPinsState = new PassiveToActivePinsState(e.NewValue); if (E84_L_REQ_CB.IsChecked != p2aPinsState.L_REQ) { E84_L_REQ_CB.IsChecked = p2aPinsState.L_REQ; } if (E84_U_REQ_CB.IsChecked != p2aPinsState.U_REQ) { E84_U_REQ_CB.IsChecked = p2aPinsState.U_REQ; } if (E84_READY_CB.IsChecked != p2aPinsState.READY) { E84_READY_CB.IsChecked = p2aPinsState.READY; } if (E84_HO_AVBL_CB.IsChecked != p2aPinsState.HO_AVBL) { E84_HO_AVBL_CB.IsChecked = p2aPinsState.HO_AVBL; } if (E84_ES_CB.IsChecked != p2aPinsState.ES) { E84_ES_CB.IsChecked = p2aPinsState.ES; } UpdateLabelContents(p2aPinsState); } else { base.OnPropertyChanged(e); } }
bool WaitForP2ATransition(ref PassiveToActivePinBits trackBits, PassiveToActivePinBits waitForBits, PassiveToActivePinBits deltaPinsMask) { IValueAccessor p2aPinsStateIVA = SelectedPassiveToActivePinsStateIVA; PassiveToActivePinBits fixedPinsMask = PassiveToActivePinBits.PinsBitMask & ~deltaPinsMask; for (; ;) { IPassiveToActivePinsState p2aPinsState = new PassiveToActivePinsState(p2aPinsStateIVA.Update().VC); PassiveToActivePinBits packedWord = p2aPinsState.PackedWord; if (packedWord == waitForBits) { trackBits = packedWord; return(true); } if ((packedWord & fixedPinsMask) != (trackBits & fixedPinsMask)) { SetCurrentActivity(ActivitySelect.WaitForPinsReady, Utils.Fcns.CheckedFormat("{0}[{1}] failed: unexpected P2A pins transition to {2}", currentActivity, privateState.TransferProgressStr, p2aPinsState)); return(false); } if (!Spin()) { return(false); } } }
private void UpdateLabelContents(PassiveToActivePinsState state) { string pwStr = "${0:X4}".CheckedFormat(unchecked ((int)state.PackedWord)); if (pwStr != (packedWordLabel.Content as string)) { packedWordLabel.Content = pwStr; } }
void ServiceResetActivity() { using (var eeLog = new Logging.EnterExitTrace(Log)) { // clear the enable auto load and enable auto unload values if (enableAutoLoadIVA.Update().VC.GetValue <bool>(false)) { enableAutoLoadIVA.Set(false); } if (enableAutoUnloadIVA.Update().VC.GetValue <bool>(false)) { enableAutoUnloadIVA.Set(false); } IValueAccessor a2pPinsStateIVA = SelectedActiveToPassivePinsStateIVA; IValueAccessor p2aPinsStateIVA = SelectedPassiveToActivePinsStateIVA; IActiveToPassivePinsState a2pPinsState = new ActiveToPassivePinsState(a2pPinsStateIVA.Update().VC); IPassiveToActivePinsState p2aPinsState = new PassiveToActivePinsState(p2aPinsStateIVA.Update().VC); if (!a2pPinsState.IsIdle) { lastSetA2PPins = new ActiveToPassivePinsState(); lastSetA2PPins.IFaceName = PartID; lastSetA2PPins.XferILock = true; a2pPinsStateIVA.Set(lastSetA2PPins as IActiveToPassivePinsState); } if (config.GetConfigKeyAccessOnce("E84Sim.ResetForcesESandHO").GetValue <bool>(false) && !p2aPinsState.IsSelectable) { p2aPinsStateIVA.Set(new PassiveToActivePinsState(p2aPinsState) { ES = true, HO_AVBL = true } as IPassiveToActivePinsState); } Spin(TimeSpan.FromSeconds(0.5)); a2pPinsState = new ActiveToPassivePinsState(a2pPinsStateIVA.Update().VC); p2aPinsState = new PassiveToActivePinsState(p2aPinsStateIVA.Update().VC); if (!p2aPinsState.IsSelectable) { SetCurrentActivity(ActivitySelect.WaitForPinsReady, Utils.Fcns.CheckedFormat("Reset complete with E84 P->A pins not selectable [{0}]", p2aPinsState)); } else if (!a2pPinsState.IsIdle) { SetCurrentActivity(ActivitySelect.WaitForPinsReady, Utils.Fcns.CheckedFormat("Reset complete with E84 A->P pins not idle [{0}]", a2pPinsState)); } else { SetCurrentActivity(ActivitySelect.Ready, "Reset complete and Ready for select"); } } }
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(); } }
private void E084_PtoA_CheckBox_Clicked(object sender, RoutedEventArgs e) { PassiveToActivePinsState p2aPinsState = new PassiveToActivePinsState(PinsState); PassiveToActivePinBits entryPackedWord = p2aPinsState.PackedWord; p2aPinsState.L_REQ = E84_L_REQ_CB.IsChecked.GetValueOrDefault(); p2aPinsState.U_REQ = E84_U_REQ_CB.IsChecked.GetValueOrDefault(); p2aPinsState.READY = E84_READY_CB.IsChecked.GetValueOrDefault(); p2aPinsState.HO_AVBL = E84_HO_AVBL_CB.IsChecked.GetValueOrDefault(); p2aPinsState.ES = E84_ES_CB.IsChecked.GetValueOrDefault(); p2aPinsState.IFaceName = "From:E084_PtoA_CheckBox_Clicked"; UpdateLabelContents(p2aPinsState); if (entryPackedWord != p2aPinsState.PackedWord) { PinsState = p2aPinsState as IPassiveToActivePinsState; } }
void ServiceWaitForPinsReadyActivity() { IValueAccessor a2pPinsStateIVA = SelectedActiveToPassivePinsStateIVA; IValueAccessor p2aPinsStateIVA = SelectedPassiveToActivePinsStateIVA; IActiveToPassivePinsState a2pPinsState = new ActiveToPassivePinsState(a2pPinsStateIVA.Update().VC); IPassiveToActivePinsState p2aPinsState = new PassiveToActivePinsState(p2aPinsStateIVA.Update().VC); if (!a2pPinsState.IsIdle) { privateState.TransferProgressStr = Utils.Fcns.CheckedFormat("Wait A2P Idle: {0}", a2pPinsState); } else if (!p2aPinsState.IsSelectable) { privateState.TransferProgressStr = Utils.Fcns.CheckedFormat("Wait P2A Selectable: {0}", p2aPinsState); } else { SetCurrentActivity(ActivitySelect.Ready, "A2P pins are selectable now"); } }