From 91cf5404f98c658c7e8333ddf1cda72540a735ba Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Wed, 15 Feb 2017 10:06:49 +0100
Subject: [PATCH] distance-based driving cycle: increment distance by ds as
 reported from driver. driver: set simulation distance in response

---
 .../SimulationComponent/Impl/DistanceBasedDrivingCycle.cs    | 5 ++++-
 VectoCore/VectoCoreTest/Utils/MockDriver.cs                  | 2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
index dcd1970e7c..5ae5ec47d3 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
@@ -261,7 +261,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			}
 
 			CurrentState.WaitPhase = 0;
-			CurrentState.Distance = PreviousState.Distance + ds;
+			//CurrentState.Distance = PreviousState.Distance + ds;
 			CurrentState.SimulationDistance = ds;
 			CurrentState.VehicleTargetSpeed = Left.VehicleTargetSpeed;
 			CurrentState.Gradient = ComputeGradient(ds);
@@ -274,6 +274,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 						retVal = NextComponent.Request(absTime, ds, CurrentState.VehicleTargetSpeed, CurrentState.Gradient);
 					});
 			CurrentState.AbsTime = absTime;
+			if (retVal is ResponseSuccess) {
+				CurrentState.Distance = PreviousState.Distance + retVal.SimulationDistance;
+			}
 			return retVal;
 		}
 
diff --git a/VectoCore/VectoCoreTest/Utils/MockDriver.cs b/VectoCore/VectoCoreTest/Utils/MockDriver.cs
index 7315419a5d..90dcf0c21c 100644
--- a/VectoCore/VectoCoreTest/Utils/MockDriver.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockDriver.cs
@@ -70,7 +70,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 			LastRequest = new RequestData { AbsTime = absTime, ds = ds, Gradient = gradient, TargetVelocity = targetVelocity };
 			var acc = 0.SI<MeterPerSquareSecond>();
 			var dt = 1.SI<Second>();
-			return new ResponseSuccess { SimulationInterval = dt, Source = this };
+			return new ResponseSuccess { SimulationInterval = dt, SimulationDistance = ds, Source = this };
 		}
 
 		public IResponse Request(Second absTime, Second dt, MeterPerSecond targetVelocity, Radian gradient)
-- 
GitLab