From f21be59db453d74e74b4669d2a68c09b5ec706c4 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Mon, 31 Dec 2018 13:19:54 +0100
Subject: [PATCH] add info about current gradient to data bus

---
 .../VectoCore/Models/Simulation/Impl/VehicleContainer.cs     | 5 +++++
 .../Models/SimulationComponent/IDrivingCycleInfo.cs          | 2 ++
 .../SimulationComponent/Impl/DistanceBasedDrivingCycle.cs    | 3 +++
 .../SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs    | 2 ++
 .../SimulationComponent/Impl/PowertrainDrivingCycle.cs       | 2 ++
 VectoCore/VectoCoreTest/Utils/MockAuxiliaryDemand.cs         | 2 ++
 VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs        | 1 +
 7 files changed, 17 insertions(+)

diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
index a6e16a6e0a..b06f9f3f59 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
@@ -425,6 +425,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			get { return Driver != null ? Driver.DriverAcceleration : 0.SI<MeterPerSquareSecond>(); }
 		}
 
+		public Radian RoadGradient
+		{
+			get { return DrivingCycle.RoadGradient; }
+		}
+
 		public Meter CycleStartDistance
 		{
 			get { return DrivingCycle == null ? 0.SI<Meter>() : DrivingCycle.CycleStartDistance; }
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/IDrivingCycleInfo.cs b/VectoCore/VectoCore/Models/SimulationComponent/IDrivingCycleInfo.cs
index 71bde5add4..b1dbbb4f80 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/IDrivingCycleInfo.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/IDrivingCycleInfo.cs
@@ -58,6 +58,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 
 		Meter Altitude { get; }
 
+		Radian RoadGradient { get; }
+
 		Meter CycleStartDistance { get; }
 
 		IReadOnlyList<DrivingCycleData.DrivingCycleEntry> LookAhead(Meter lookaheadDistance);
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
index 41e0fb4be6..880d2db7d8 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
@@ -496,6 +496,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			get { return PreviousState.Altitude; }
 		}
 
+		public Radian RoadGradient { get { return CurrentState.Gradient; } }
+
+
 		public sealed class DrivingCycleState
 		{
 			public DrivingCycleState Clone()
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs
index 488de7cd83..0a034b7e93 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs
@@ -360,6 +360,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			get { return CycleIterator.LeftSample.Altitude; }
 		}
 
+		public Radian RoadGradient { get { return CycleIterator.LeftSample.RoadGradient; } }
+
 		public Meter CycleStartDistance
 		{
 			get { return 0.SI<Meter>(); }
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
index 8ab87a9c10..ca9a5ad198 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
@@ -203,6 +203,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			get { return 0.SI<Meter>(); }
 		}
 
+		public Radian RoadGradient { get { return 0.SI<Radian>(); } }
+
 		public Meter CycleStartDistance
 		{
 			get { return 0.SI<Meter>(); }
diff --git a/VectoCore/VectoCoreTest/Utils/MockAuxiliaryDemand.cs b/VectoCore/VectoCoreTest/Utils/MockAuxiliaryDemand.cs
index 5727095d70..e7c52d8c31 100644
--- a/VectoCore/VectoCoreTest/Utils/MockAuxiliaryDemand.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockAuxiliaryDemand.cs
@@ -88,6 +88,8 @@ namespace TUGraz.VectoCore.Tests.Utils
 			get { return 0.SI<Meter>(); }
 		}
 
+		public Radian RoadGradient { get { return 0.SI<Radian>(); } }
+
 		protected override void DoWriteModalResults(IModalDataContainer container)
 		{
 			container[ModalResultField.dist] = 0.SI<Meter>();
diff --git a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
index 51429c000e..297349fcf0 100644
--- a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
@@ -163,6 +163,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 		}
 
 		public Watt BrakePower { get; set; }
+		public Radian RoadGradient { get; set; }
 		public Meter CycleStartDistance { get; set; }
 
 		public IReadOnlyList<DrivingCycleData.DrivingCycleEntry> LookAhead(Meter lookaheadDistance)
-- 
GitLab