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 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; } }
bool WaitForP2ATransition(ref PassiveToActivePinBits trackBits, PassiveToActivePinBits waitForBits, PassiveToActivePinBits deltaPinsMask) { PassiveToActivePinBits fixedPinsMask = PassiveToActivePinBits.PinsBitMask & ~deltaPinsMask; for (; ; ) { LPMSim.State lpmState = lpmSimPart.PublicState; IPassiveToActivePinsState p2aPinsState = lpmState.OutputsState.GetE84OutputBits(pioSelect); 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; } }
void ServicePerformUnloadActivity() { PassiveToActivePinBits p2aPinBits = PassiveToActivePinBits.ES_pin8 | PassiveToActivePinBits.HO_AVBL_pin7; PassiveToActivePinBits nextP2APinBits = p2aPinBits; privateState.TransferCount++; privateState.TransferProgressStr = "Unloading:Select for U_REQ"; PublishPrivateState(); SetA2PPins(new ActiveToPassivePinsState(idleA2PPins) { VALID = true, CS_0 = true }); nextP2APinBits = p2aPinBits | PassiveToActivePinBits.U_REQ_pin2; if (!WaitForP2ATransition(ref p2aPinBits, nextP2APinBits, PassiveToActivePinBits.U_REQ_pin2)) { return; } privateState.TransferProgressStr = "Unloading:Start T_REQ"; PublishPrivateState(); SetA2PPins(new ActiveToPassivePinsState(lastSetA2PPins) { TR_REQ = true }); nextP2APinBits = p2aPinBits | PassiveToActivePinBits.READY_pin4; if (!WaitForP2ATransition(ref p2aPinBits, nextP2APinBits, PassiveToActivePinBits.READY_pin4)) { return; } privateState.TransferProgressStr = "Unloading:Go BUSY"; PublishPrivateState(); SetA2PPins(new ActiveToPassivePinsState(lastSetA2PPins) { BUSY = true }); privateState.TransferProgressStr = "Unloading:Sim Lowering"; PublishPrivateState(); if (!Spin(configValues.LoweringTime)) { return; } privateState.TransferProgressStr = "Unloading:Removing Foup"; PublishPrivateState(); LPMPresentPlacedInput = PresentPlaced.Present; if (!Spin(configValues.UnloadPlacementTransitionTime)) { return; } LPMPresentPlacedInput = PresentPlaced.None; privateState.TransferProgressStr = "Unloading:Wait U_REQ clear"; PublishPrivateState(); nextP2APinBits = p2aPinBits & ~PassiveToActivePinBits.U_REQ_pin2; if (!WaitForP2ATransition(ref p2aPinBits, nextP2APinBits, PassiveToActivePinBits.U_REQ_pin2)) { return; } privateState.TransferProgressStr = "Unloading:Sim Raising"; PublishPrivateState(); if (!Spin(configValues.RaisingTime)) { return; } privateState.TransferProgressStr = "Unloading:Go COMPT"; PublishPrivateState(); SetA2PPins(new ActiveToPassivePinsState(lastSetA2PPins) { TR_REQ = false, BUSY = false, COMPT = true }); privateState.TransferProgressStr = "Unloading:Wait READY clear"; PublishPrivateState(); nextP2APinBits = p2aPinBits & ~PassiveToActivePinBits.READY_pin4; if (!WaitForP2ATransition(ref p2aPinBits, nextP2APinBits, PassiveToActivePinBits.READY_pin4)) { return; } privateState.TransferProgressStr = "Unloading:Deselecting"; PublishPrivateState(); if (!Spin(configValues.UnloadDeselectDelay)) { return; } SetA2PPins(new ActiveToPassivePinsState(idleA2PPins)); privateState.TransferProgressStr = String.Empty; PublishPrivateState(); if (currentActivity == ActivitySelect.PerformUnload) { SetCurrentActivity(ActivitySelect.Ready, "Unload complete"); } }