private double GetRpmIncreaseForGasPressure(PedalPressure pressure) { switch (CurrentGear.Value) { case 0: return(pressure.Value * 35); case 1: return(pressure.Value * 30 - 2 * (_systems.getCurrentRpm() / 5000)); case 2: return(pressure.Value * 25 - 2 * (_systems.getCurrentRpm() / 5000)); case 3: return(pressure.Value * 20 - 3 * (_systems.getCurrentRpm() / 5000)); case 4: return(pressure.Value * 15 - 4 * (_systems.getCurrentRpm() / 5000)); case 5: return(pressure.Value * 10 - 5 * (_systems.getCurrentRpm() / 5000)); case 6: return(pressure.Value * 5 - 6 * (_systems.getCurrentRpm() / 5000)); } return(0); }
public KickdownDetectionProcess(IKickdownCharacteristics kickdownCharacteristics, IGearshiftService gearshiftService) { _kickdownCharacteristics = kickdownCharacteristics; _gearshiftService = gearshiftService; ResponsivenessMode = ResponsivenessMode.Economic; CurrentGear = new Gear(0); LastGasPressure = new PedalPressure(0.0); CurrentRpm = new Rpm(0.0); }
public EngineEmulator(ExternalSystems systems) { _systems = systems; GasPressure = new PedalPressure(0); BrakePressure = new PedalPressure(0); CurrentGear = new Gear(0); Task.Run(Run); }
public SuggestedKickdownAction GetActionFor(ResponsivenessMode responsivenessMode, PedalPressure pedalPressure, Rpm currentRpm) { switch (responsivenessMode) { case ResponsivenessMode.Comfort: if (pedalPressure.Value > SingularKickdownThresholdInComfortMode && currentRpm.Value >= SingularKickdownRpmInComfortMode) { return(SuggestedKickdownAction.Singular); } break; case ResponsivenessMode.Sport: if (pedalPressure.Value >= DoubleKickdownThresholdInSportsMode && currentRpm.Value >= DoubleKickdownRpmInSportMode) { return(SuggestedKickdownAction.Double); } else if (pedalPressure.Value >= SingularKickdownThresholdInSportsMode && currentRpm.Value >= SingularKickdownRpmInSportMode) { return(SuggestedKickdownAction.Singular); } break; } return(SuggestedKickdownAction.None); }
public void ApplyBrakePedalPressure(PedalPressure pressure) { _eventBus.SendEvent(_pedalPanel.ChangeBrakePressure(pressure)); }
public void ApplyGasPedalPressure(PedalPressure pressure) { _eventBus.SendEvent(_pedalPanel.ChangeGasPressure(pressure)); }
public IReadOnlyCollection <IEvent> ChangeGasPressure(PedalPressure pressure) { return(new List <IEvent> { new GasPressureChanged(pressure) }); }