// @Params("<5000|120000|200000>, <true|false>") -not yet in the model public void abort(int altitude, boolean controlMotorFired) { if (internalState == cevStatesAscent) { if (internalAscentState == ascentStatesFirstStage) { spacecraft.doStage1Abort(altitude, controlMotorFired); if (altitude <= 120000) { if (controlMotorFired) { internalAscentState = ascentStatesAbortLowActiveLAS; } else { internalAscentState = ascentStatesAbortPassiveLAS; } } if (altitude >= 120000) { // <ERR> interval overlap -> ambiguity // TODO: Are this errors supposed to be found? // Should this reamin or not? internalAscentState = ascentStatesAbortHighActiveLAS; // <ERR> forgotten controlMotor branch } return; } if (internalAscentState == ascentStatesSecondStage) { spacecraft.doStage2Abort(controlMotorFired); if (controlMotorFired) { internalAscentState = ascentStatesAbortHighActiveLAS; } else { internalAscentState = ascentStatesAbortPassiveLAS; } return; } } // assert hasNextState() : errors.log("abort command did not enter abort state"); // TODO: What does hasNextState? assert false : errors.log("abort command did not enter abort state"); }
public void lsamRendezvous() { if (internalState == cevStatesEarthOrbit) { if (internalEarthOrbitState == earthOrbitStatesOrbitOps) { assert spacecraft.readyForLSAMrendezvous() : errors.last(); spacecraft.doLSAMrendezvous(); return; } } assert false; }
public void deOrbit() { if (internalState == cevStatesEarthOrbit) { if (internalEarthOrbitState == earthOrbitStatesOrbitOps) { assert spacecraft.readyForDeorbit() : errors.last(); internalState = cevStatesEntry; return; } if (internalEarthOrbitState == earthOrbitStatesSafeHold) { assert spacecraft.readyForDeorbit() : errors.last(); internalState = cevStatesEntry; return; } } assert false; }
public void smSeparation() { if (internalState == cevStatesTransitMoonEarth) { spacecraft.doSMseparation(); return; } assert false; }
public void edsSeparation() { if (internalState == cevStatesTransitEarthMoon) { spacecraft.doEDSseparation(); return; } assert false; }
public void eiBurn(boolean cmImbalance, boolean rcsFailure) { if (internalState == cevStatesTransitMoonEarth) { // spacecraft should now only consist of CM assert spacecraft.readyForEiBurn() : errors.last(); spacecraft.doEiBurn(cmImbalance, rcsFailure); if (cmImbalance) { internalState = cevStatesEntry; internalEntryState = entryStatesAbortEntryBallistic; } else if (rcsFailure) { internalState = cevStatesEntry; internalEntryState = entryStatesAbortEntryFixedBank; } else { internalState = cevStatesEntry; } return; } assert false; }
public void teiBurn() { if (internalState == cevStatesLunarOps) { if (internalLunarOpsState == lunarOpsStatesLunarOrbit) { assert spacecraft.readyForTeiBurn() : errors.last(); internalState = cevStatesTransitMoonEarth; } } assert false; }
public void lasJettison() { if (internalState == cevStatesAscent) { if (internalAscentState == ascentStatesSecondStage) { spacecraft.doLASjettison(); return; } } assert false; }
public void tliBurn() { if (internalState == cevStatesEarthOrbit) { if (internalEarthOrbitState == earthOrbitStatesOrbitOps) { assert spacecraft.readyForTliBurn() : errors.last(); internalState = cevStatesTransitEarthMoon; return; } } assert false; }
public void stage2Separation() { if (internalState == cevStatesAscent) { if (internalAscentState == ascentStatesSecondStage) { spacecraft.doStage2Separation(); internalState = cevStatesEarthOrbit; return; } } assert false; }
public void abortPassiveLAScompletion() { if (internalState == cevStatesAscent) { if (internalAscentState == ascentStatesAbortPassiveLAS) { spacecraft.doLowPassiveAbort(); internalState = cevStatesEntry; internalEntryState = entryStatesChuteSequence; return; } } assert false; }
public void lsamAscentBurn() { if (internalState == cevStatesLunarOps) { if (internalLunarOpsState == lunarOpsStatesLunarLanding) { if (internalLunarLandingLSAMState == lunarLandingLSAMStatesSurfaceOps) { spacecraft.doLSAMascentBurn(); internalLunarLandingLSAMState = lunarLandingLSAMStatesLunarAscent; return; } } } assert false; }
public void lsamAscentRendezvous() { if (internalState == cevStatesLunarOps) { if (internalLunarOpsState == lunarOpsStatesLunarLanding) { if (internalLunarLandingCEVState == lunarLandingCEVStatesOrbitOpsLoiter) { internalState = cevStatesEndState; } if (internalLunarLandingLSAMState == lunarLandingLSAMStatesLunarAscent) { spacecraft.doLSAMascentRendezvous(); internalState = cevStatesEndState; } return; } } assert false; }
public void completion() { if (internalState == cevStatesAscent) { if (internalAscentState == ascentStatesHoldLaunch) { internalState = cevStatesEndState; return; } if (internalAscentState == ascentStatesPadAbort) { internalState = cevStatesEndState; return; } if (internalAscentState == ascentStatesAbortPassiveLAS) { spacecraft.doLowPassiveAbort(); internalState = cevStatesEntry; internalEntryState = entryStatesChuteSequence; return; } if (internalAscentState == ascentStatesAbortLowActiveLAS) { assert failures.noLAS_CNTRLfailure() : errors.log("active LAS with failed control motor"); spacecraft.doLowActiveAbort(); internalState = cevStatesEntry; internalEntryState = entryStatesChuteSequence; return; } if (internalAscentState == ascentStatesAbortHighActiveLAS) { assert failures.noLAS_CNTRLfailure() : errors.log("active LAS with failed control motor"); internalState = cevStatesEntry; internalEntryState = entryStatesChuteSequence; return; } } if (internalState == cevStatesEarthOrbit) { if (internalEarthOrbitState == earthOrbitStatesInsertion) { if (failures.noEARTH_SENSORfailure()) { internalEarthOrbitState = earthOrbitStatesOrbitOps; } else { internalEarthOrbitState = earthOrbitStatesSafeHold; // <ERR> never reached } return; } } if (internalState == cevStatesLunarOps) { if (internalLunarOpsState == lunarOpsStatesInsertion) { internalLunarOpsState = lunarOpsStatesLunarOrbit; return; } if (internalLunarOpsState == lunarOpsStatesLunarLanding) { internalLunarOpsState = lunarOpsStatesLunarOrbit; } } if (internalState == cevStatesEntry) { if (internalEntryState == entryStatesEntryInterface) { internalEntryState = entryStatesNominalEntry; return; } if (internalEntryState == entryStatesNominalEntry) { internalEntryState = entryStatesChuteSequence; return; } if (internalEntryState == entryStatesChuteSequence) { assert spacecraft.readyForChuteSequence() : errors.last(); internalEntryState = entryStatesLanding; return; } if (internalEntryState == entryStatesLanding) { internalState = cevStatesEndState; return; } if (internalEntryState == entryStatesAbortEntryBallistic) { internalEntryState = entryStatesChuteSequence; return; } if (internalEntryState == entryStatesAbortEntryFixedBank) { internalEntryState = entryStatesChuteSequence; return; } if (internalState == cevStatesLunarOps) { if (internalLunarOpsState == lunarOpsStatesLunarLanding) { if (internalLunarLandingLSAMState == lunarLandingLSAMStatesLunarDescent) { internalLunarLandingLSAMState = lunarLandingLSAMStatesSurfaceOps; return; } } } } assert false; }