From 4758a18f8b65233d5290d9f3c8ffc5bb70424b8f Mon Sep 17 00:00:00 2001
From: "harald.martini@student.tugraz.at" <harald.martini@student.tugraz.at>
Date: Mon, 20 Sep 2021 17:14:52 +0200
Subject: [PATCH] Check for ATPEcoRollReleaseLockupClutch only on ATPowerSplit
 and ATSerial Gearboxes

---
 .../XMLDeclarationMultistageInputReader.cs    | 53 +++++++++++++++----
 1 file changed, 43 insertions(+), 10 deletions(-)

diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
index 2758ae3957..c733bfb432 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
@@ -415,6 +415,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			InvalidEntry  = variableName; 
 			return false;
 		}
+
+		protected bool InputComplete<T>(T value, string variableName, bool mandatory)
+		{
+			if (mandatory) {
+				return InputComplete(value, variableName);
+			} else {
+				return true;
+			}
+		}
 	}
 
 	// ---------------------------------------------------------------------------------------
@@ -779,12 +788,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 	{
 		private readonly bool _usePrimaryData;
 		private readonly IAdvancedDriverAssistantSystemDeclarationInputData _primaryAdas;
+		private readonly IVehicleDeclarationInputData _primaryVehicleData;
 
 		public ConsolidatedADASData(IEnumerable<IManufacturingStageInputData> manufacturingStages,
 			IVehicleDeclarationInputData primaryVehicleData, bool usePrimaryData)
 			: base(manufacturingStages)
 		{
 			_usePrimaryData = usePrimaryData;
+			_primaryVehicleData = primaryVehicleData;
 			_primaryAdas = primaryVehicleData.ADAS;
 		}
 
@@ -819,16 +830,38 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck)
 		{
-			return true;
-			//if (fullCheck) {
-			//	//use Binary AND to execute all Statements and gather information about missing parameters.
-			//	return InputComplete(EngineStopStart, nameof(EngineStopStart))
-			//			& InputComplete(EcoRoll, nameof(EcoRoll))
-			//			& InputComplete(PredictiveCruiseControl, nameof(PredictiveCruiseControl));
-			//}
-			//return InputComplete(EngineStopStart, nameof(EngineStopStart))
-			//		&& InputComplete(EcoRoll, nameof(EcoRoll))
-			//		&& InputComplete(PredictiveCruiseControl, nameof(PredictiveCruiseControl));
+            if (fullCheck)
+            {
+                //use Binary AND to execute all Statements and gather information about missing parameters.
+                return InputComplete(EngineStopStart, nameof(EngineStopStart))
+                        & InputComplete(EcoRoll, nameof(EcoRoll))
+                        & InputComplete(PredictiveCruiseControl, nameof(PredictiveCruiseControl))
+						& InputComplete(IsATPEcoRollComplete(), "APTEcoRollReleaseLockupClutch");
+            }
+            return InputComplete(EngineStopStart, nameof(EngineStopStart))
+                    && InputComplete(EcoRoll, nameof(EcoRoll))
+                    && InputComplete(PredictiveCruiseControl, nameof(PredictiveCruiseControl))
+					&& InputComplete(IsATPEcoRollComplete(), "APTEcoRollReleaseLockupClutch");
+		}
+
+		private bool IsATPEcoRollComplete()
+		{
+			if (PrimaryGearboxIsAT()) {
+				return ATEcoRollReleaseLockupClutch != null;
+			} else {
+				return false;
+			}
+		}
+
+		private bool PrimaryGearboxIsAT()
+		{
+			switch (_primaryVehicleData.Components.GearboxInputData.Type) {
+				case GearboxType.ATPowerSplit:
+				case GearboxType.ATSerial:
+					return true;
+				default: 
+					return false;
+			}
 		}
 
 		public override string GetInvalidEntry()
-- 
GitLab