diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs index 50b7b726376843940783db9c4214fe1d1e3b281c..0fb8c7dbc5ddd6de226acb012d4f35a3fbe6f2b8 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs @@ -113,7 +113,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl if (retryCount > 10) { throw new VectoException("HybridStrategy: retry count exceeded! {0}", DebugData); } - + var engaged = DataBus.GearboxInfo.GearEngaged(absTime); retry = false; var strategyResponse = Strategy.Request(absTime, dt, outTorque, outAngularVelocity, dryRun); DebugData.Add($"[HC-R-0-{retryCount}]", strategyResponse); @@ -162,6 +162,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl SelectedGear = strategySettings.NextGear; } + CurrentStrategySettings = strategySettings; retVal = NextComponent.Request(absTime, dt, outTorque, outAngularVelocity, dryRun); DebugData.Add($"HC.R-1-{retryCount}", new { @@ -207,6 +208,15 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl continue; } + if (retVal is ResponseOverload && DataBus.DriverInfo.DrivingAction == DrivingAction.Brake && + engaged != DataBus.GearboxInfo.GearEngaged(absTime)) { + retryCount++; + retry = true; + Strategy.OperatingpointChangedDuringRequest(absTime, dt, outTorque, outAngularVelocity, dryRun, + retVal); + continue; + } + if (retVal is ResponseInvalidOperatingPoint) { retryCount++; retry = true;