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);
        }
Esempio n. 2
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);
        }
Esempio n. 5
0
 public void ApplyBrakePedalPressure(PedalPressure pressure)
 {
     _eventBus.SendEvent(_pedalPanel.ChangeBrakePressure(pressure));
 }
Esempio n. 6
0
 public void ApplyGasPedalPressure(PedalPressure pressure)
 {
     _eventBus.SendEvent(_pedalPanel.ChangeGasPressure(pressure));
 }
 public IReadOnlyCollection <IEvent> ChangeGasPressure(PedalPressure pressure)
 {
     return(new List <IEvent> {
         new GasPressureChanged(pressure)
     });
 }