diff --git a/VectoCommon/VectoCommon/Hashing/VectoComponents.cs b/VectoCommon/VectoCommon/Hashing/VectoComponents.cs index 35a31ccf3383a8df574e312cd846a63c280233f9..11c5729b957f4bf77ccb849ce480e173255c48cb 100644 --- a/VectoCommon/VectoCommon/Hashing/VectoComponents.cs +++ b/VectoCommon/VectoCommon/Hashing/VectoComponents.cs @@ -127,6 +127,7 @@ namespace TUGraz.VectoCommon.Hashing case VectoComponents.VectoCustomerInformation: case VectoComponents.VectoOutput: case VectoComponents.VectoPrimaryVehicleInformation: + case VectoComponents.VectoManufacturingStage: return true; default: return false; diff --git a/VectoCommon/VectoCommon/Models/AlternatorType.cs b/VectoCommon/VectoCommon/Models/AlternatorType.cs index e216758a7c6404b3c61f14782d3b85ed30062987..5419938e1c226828a48b93de5891a0eb01f1797c 100644 --- a/VectoCommon/VectoCommon/Models/AlternatorType.cs +++ b/VectoCommon/VectoCommon/Models/AlternatorType.cs @@ -11,6 +11,22 @@ namespace TUGraz.VectoCommon.Models public static class AlternatorTypeHelper { + + public static string ToXMLFormat(this AlternatorType type) + { + switch (type) + { + case AlternatorType.Conventional: + return "conventional"; + case AlternatorType.Smart: + return "smart"; + case AlternatorType.None: + return "no alternator"; + default: + throw new ArgumentOutOfRangeException(nameof(type), type, null); + }; + } + public static string GetLabel(this AlternatorType type) { switch (type) { diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs index 796ce51d7b2c044255c565f821aabdb8d746f1d8..6e87b019a0c0d857210ce2529f06ebdf0727fcb5 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs +++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs @@ -1023,6 +1023,96 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to Battery. + /// </summary> + public static string BusAux_ElectricSystem_Battery { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_Battery", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to BatteryTechnology. + /// </summary> + public static string BusAux_ElectricSystem_BatteryTechnology { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_BatteryTechnology", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Capacitor. + /// </summary> + public static string BusAux_ElectricSystem_Capacitor { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_Capacitor", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to CapacitorTechnology. + /// </summary> + public static string BusAux_ElectricSystem_CapacitorTechnology { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_CapacitorTechnology", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to NominalVoltage. + /// </summary> + public static string BusAux_ElectricSystem_NominalVoltage { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_NominalVoltage", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to RatedCapacitance. + /// </summary> + public static string BusAux_ElectricSystem_RatedCapacitance { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_RatedCapacitance", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to RatedCapacity. + /// </summary> + public static string BusAux_ElectricSystem_RatedCapacity { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_RatedCapacity", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to RatedCurrent. + /// </summary> + public static string BusAux_ElectricSystem_RatedCurrent { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_RatedCurrent", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to RatedVoltage. + /// </summary> + public static string BusAux_ElectricSystem_RatedRatedVoltage { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_RatedRatedVoltage", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to RatedVoltage. + /// </summary> + public static string BusAux_ElectricSystem_RatedVoltage { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_RatedVoltage", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to ResultCards. /// </summary> @@ -1032,6 +1122,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to SmartAlternator. + /// </summary> + public static string BusAux_ElectricSystem_SmartAlternator { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_SmartAlternator", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to SmartElectrics. /// </summary> @@ -1041,6 +1140,24 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to SupplyFromHEVPossible. + /// </summary> + public static string BusAux_ElectricSystem_SupplyFromHEVPossible { + get { + return ResourceManager.GetString("BusAux_ElectricSystem_SupplyFromHEVPossible", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Fan. + /// </summary> + public static string BusAux_Fan { + get { + return ResourceManager.GetString("BusAux_Fan", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to HVAC. /// </summary> @@ -1176,6 +1293,24 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to SteeringPump. + /// </summary> + public static string BusAux_SteeringPump { + get { + return ResourceManager.GetString("BusAux_SteeringPump", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Technology. + /// </summary> + public static string BusAux_Technology { + get { + return ResourceManager.GetString("BusAux_Technology", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to AirDrag. /// </summary> diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx index d795c59690f28677a4c01c748b1cd935fce7bb08..a5029ad819dc4661e6973774b7039c6fa2dfefa7 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.resx +++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx @@ -1527,4 +1527,49 @@ <data name="Bus_NumberPassengersStandingUpperDeck" xml:space="preserve"> <value>NumberPassengersStandingUpperDeck</value> </data> + <data name="BusAux_ElectricSystem_Battery" xml:space="preserve"> + <value>Battery</value> + </data> + <data name="BusAux_ElectricSystem_BatteryTechnology" xml:space="preserve"> + <value>BatteryTechnology</value> + </data> + <data name="BusAux_ElectricSystem_Capacitor" xml:space="preserve"> + <value>Capacitor</value> + </data> + <data name="BusAux_ElectricSystem_CapacitorTechnology" xml:space="preserve"> + <value>CapacitorTechnology</value> + </data> + <data name="BusAux_ElectricSystem_NominalVoltage" xml:space="preserve"> + <value>NominalVoltage</value> + </data> + <data name="BusAux_ElectricSystem_RatedCapacitance" xml:space="preserve"> + <value>RatedCapacitance</value> + </data> + <data name="BusAux_ElectricSystem_RatedCapacity" xml:space="preserve"> + <value>RatedCapacity</value> + </data> + <data name="BusAux_ElectricSystem_RatedCurrent" xml:space="preserve"> + <value>RatedCurrent</value> + </data> + <data name="BusAux_ElectricSystem_RatedRatedVoltage" xml:space="preserve"> + <value>RatedVoltage</value> + </data> + <data name="BusAux_ElectricSystem_RatedVoltage" xml:space="preserve"> + <value>RatedVoltage</value> + </data> + <data name="BusAux_ElectricSystem_SmartAlternator" xml:space="preserve"> + <value>SmartAlternator</value> + </data> + <data name="BusAux_ElectricSystem_SupplyFromHEVPossible" xml:space="preserve"> + <value>SupplyFromHEVPossible</value> + </data> + <data name="BusAux_Fan" xml:space="preserve"> + <value>Fan</value> + </data> + <data name="BusAux_SteeringPump" xml:space="preserve"> + <value>SteeringPump</value> + </data> + <data name="BusAux_Technology" xml:space="preserve"> + <value>Technology</value> + </data> </root> \ No newline at end of file diff --git a/VectoCommon/VectoHashing/VectoHash.cs b/VectoCommon/VectoHashing/VectoHash.cs index 2a6a8d221870ebd03cc53589f0cf7b94d01e18a9..f4d9e03b24aeb0ffa36f6b7147ff51b851c1a5ff 100644 --- a/VectoCommon/VectoHashing/VectoHash.cs +++ b/VectoCommon/VectoHashing/VectoHash.cs @@ -305,6 +305,9 @@ namespace TUGraz.VectoHashing if (Document.DocumentElement.LocalName.Equals("VectoOutputPrimaryVehicle")) { return VectoComponents.VectoPrimaryVehicleInformation; } + if (Document.DocumentElement.LocalName.Equals(XMLNames.ManufacturingStage)) { + return VectoComponents.VectoManufacturingStage; + } throw new Exception("unknown document structure! neither input data nor output data format"); } diff --git a/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs index f56be26ea50bb31236162ebf5baf9a99661d3c4a..ce6de4a3804e55b595105358b2d5707265b7cc17 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; @@ -15,6 +16,7 @@ using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Utils; +using TUGraz.VectoHashing; namespace TUGraz.VectoCore.OutputData.XML @@ -161,20 +163,37 @@ namespace TUGraz.VectoCore.OutputData.XML #region Generate new manfuacturing Stage + private XElement GetSignatureElement(XElement stage) + { + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + writer.Write(stage); + writer.Flush(); + stream.Seek(0, SeekOrigin.Begin); + + return new XElement(tns + XMLNames.DI_Signature, + VectoHash.Load(stream).ComputeXmlHash + (VectoHash.DefaultCanonicalizationMethod, VectoHash.DefaultDigestMethod)); + } + + private XElement GenerateInputManufacturingStage() { var multistageId = $"{VectoComponents.VectoManufacturingStage.HashIdPrefix()}{GetGUID()}"; var vehicleId = $"{VectoComponents.Vehicle.HashIdPrefix()}{GetGUID()}"; - return new XElement(tns + XMLNames.ManufacturingStage, - new XAttribute("stageCount", GetStageNumber()), - new XElement(tns + XMLNames.Report_DataWrap, - new XAttribute(xsi + XMLNames.Attr_Type, "BusManufacturingStageDataType"), - new XAttribute(XMLNames.Component_ID_Attr, multistageId), - GetHashPreviousStageElement(), - GetVehicleElement(vehicleId), - GetApplicationInformation()), - GetInputdataSignature(multistageId)); + var stage = new XElement(tns + XMLNames.ManufacturingStage, + new XAttribute("stageCount", GetStageNumber()), + new XElement(tns + XMLNames.Report_DataWrap, + new XAttribute(xsi + XMLNames.Attr_Type, "BusManufacturingStageDataType"), + new XAttribute(XMLNames.Component_ID_Attr, multistageId), + GetHashPreviousStageElement(), + GetVehicleElement(vehicleId), + GetApplicationInformation())); + + var sigXElement = GetSignatureElement(stage); + stage.LastNode.Parent.Add(sigXElement); + return stage; } private int GetStageNumber() diff --git a/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs index 77f77735f53a1fbf3eb75554e26b47e31799d6d1..1f3a72425991957da71fba810e05e09fb421965b 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs @@ -1,15 +1,17 @@ using System; using System.Collections.Generic; -using System.Data; +using System.IO; using System.Linq; -using System.Security.Cryptography; -using System.Text; using System.Xml; using System.Xml.Linq; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Hashing; +using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.Impl; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; @@ -17,6 +19,7 @@ using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; using TUGraz.VectoCore.Utils; +using TUGraz.VectoHashing; namespace TUGraz.VectoCore.OutputData.XML { @@ -52,11 +55,6 @@ namespace TUGraz.VectoCore.OutputData.XML public void GenerateReport(XElement resultSignature) { var retVal = new XDocument(); - var results = new XElement(Results); - results.AddFirst(new XElement(tns + XMLNames.Report_Result_Status, _allSuccess ? "success" : "error")); - - var vehicleId = $"{VectoComponents.Vehicle.HashIdPrefix()}{GetGUID()}"; - retVal.Add( new XElement(XMLNames.VectoOutputMultistage, new XAttribute("xmlns", tns), @@ -68,29 +66,46 @@ namespace TUGraz.VectoCore.OutputData.XML new XAttribute(XNamespace.Xmlns + "v2.6", v26), new XAttribute(XNamespace.Xmlns + "v2.8", v28), new XAttribute(xsi + "schemaLocation", $"{tns.NamespaceName} "+ @"V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"), - - new XElement(XMLNames.Bus_PrimaryVehicle, - new XElement(tns + XMLNames.Report_DataWrap, - new XAttribute(XMLNames.Component_ID_Attr, vehicleId), - new XAttribute(xsi + "type", "PrimaryVehicleDataType"), - VehiclePart, - InputDataIntegrity, - new XElement(tns + "ManufacturerRecordSignature", resultSignature), - results, - GetApplicationInfo()), - GetInputdataSignature(vehicleId)) - ) + + GeneratePrimaryVehicle(resultSignature)) ); - //var stream = new MemoryStream(); - //var writer = new StreamWriter(stream); - //writer.Write(retVal); - //writer.Flush(); - //stream.Seek(0, SeekOrigin.Begin); + Report = retVal; + } + + private XElement GeneratePrimaryVehicle(XElement resultSignature) + { + var results = new XElement(Results); + results.AddFirst(new XElement(tns + XMLNames.Report_Result_Status, _allSuccess ? "success" : "error")); + var vehicleId = $"{VectoComponents.Vehicle.HashIdPrefix()}{GetGUID()}"; + + var primaryVehicle = new XElement( tns + XMLNames.Bus_PrimaryVehicle, + new XElement(tns + XMLNames.Report_DataWrap, + new XAttribute(XMLNames.Component_ID_Attr, vehicleId), + new XAttribute(xsi + "type", "PrimaryVehicleDataType"), + VehiclePart, + InputDataIntegrity, + new XElement(tns + "ManufacturerRecordSignature", resultSignature), + results, + GetApplicationInfo()) + ); + + var sigXElement = GetSignatureElement(primaryVehicle); + primaryVehicle.LastNode.Parent.Add(sigXElement); + return primaryVehicle; + } + + private XElement GetSignatureElement(XElement stage) + { + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + writer.Write(stage); + writer.Flush(); + stream.Seek(0, SeekOrigin.Begin); - //var h = VectoHash.Load(stream); - //Report = h.AddHash(); - Report = retVal; + return new XElement(tns + XMLNames.DI_Signature, + VectoHash.Load(stream).ComputeXmlHash + (VectoHash.DefaultCanonicalizationMethod, VectoHash.DefaultDigestMethod)); } private XElement GetApplicationInfo() @@ -236,31 +251,126 @@ namespace TUGraz.VectoCore.OutputData.XML private XElement GetAuxiliariesDescription(VectoRunData modelData) { - var busAuxiliaries = modelData.BusAuxiliaries; - var busAuxXML = busAuxiliaries.InputData.XMLSource; - - var dataElement = new XElement(tns+ XMLNames.ComponentDataWrapper, - new XAttribute(xsi + "type", "AuxiliaryDataPIFType"), - new XAttribute("xmlns", tns.NamespaceName), + var aux = modelData.BusAuxiliaries.InputData; + var supplyHevPossible = XmlConvert.ToBoolean( + aux.XMLSource.SelectSingleNode( + $".//*[local-name()='{XMLNames.BusAux_ElectricSystem_SupplyFromHEVPossible}']")?.InnerText); - XElement.Parse(busAuxXML.InnerXml).Elements()); - dataElement = RemoveNamespace(dataElement); - return new XElement(tns + XMLNames.Component_Auxiliaries, - dataElement ); + new XElement(tns + XMLNames.ComponentDataWrapper, + new XAttribute(xsi + "type", "AuxiliaryDataPIFType"), + new XAttribute("xmlns", tns.NamespaceName), + new XElement(tns + XMLNames.BusAux_Fan, new XElement(tns + XMLNames.BusAux_Technology, aux.FanTechnology)), + GetSteeringPumpElement(aux.SteeringPumpTechnology), + GetElectricSystem(aux.ElectricSupply, supplyHevPossible), + GetPneumaticSystem(aux.PneumaticSupply, aux.PneumaticConsumers), + GetHvac(aux.HVACAux)) + ); } - private XElement RemoveNamespace(XElement elements) + private XElement GetSteeringPumpElement(IList<string> steeringPumps) { - foreach (XElement e in elements.DescendantsAndSelf()) + var technologies = new List<XElement>(); + + for (int i = 0; i < steeringPumps.Count; i++) { - if (e.Name.Namespace != XNamespace.None) - e.Name = e.Name.LocalName; + var technology = new XElement(tns + XMLNames.BusAux_Technology, + new XAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, i + 1), steeringPumps[i]); + technologies.Add(technology); } - return elements; + return new XElement(tns + XMLNames.BusAux_SteeringPump, + technologies + ); + } + + private XElement GetElectricSystem(IElectricSupplyDeclarationData electricSupply, bool supplyHevPossible) + { + var alternatorTech = new XElement(tns + XMLNames.Bus_AlternatorTechnology, electricSupply.AlternatorTechnology.ToXMLFormat()); + + List<XElement> smartAlternators = null; + List<XElement> auxBattery = null; + List<XElement> auxCapacitor = null; + + if (electricSupply.Alternators?.Any() == true) { + smartAlternators = new List<XElement>(); + + foreach (var alternator in electricSupply.Alternators) { + smartAlternators.Add(new XElement(tns + XMLNames.BusAux_ElectricSystem_SmartAlternator, + new XElement(tns + XMLNames.BusAux_ElectricSystem_RatedCurrent, alternator.RatedCurrent.Value()), + new XElement(tns + XMLNames.BusAux_ElectricSystem_RatedRatedVoltage, alternator.RatedVoltage.Value()))); + } + } + + if (electricSupply.ElectricStorage?.Any() == true) { + auxBattery = new List<XElement>(); + auxCapacitor = new List<XElement>(); + + foreach (var electricStorage in electricSupply.ElectricStorage) { + if (electricStorage is BusAuxBatteryInputData) { + var battery = electricStorage as BusAuxBatteryInputData; + auxBattery.Add(new XElement(tns + XMLNames.BusAux_ElectricSystem_Battery, + new XElement(tns + XMLNames.BusAux_ElectricSystem_BatteryTechnology, battery.Technology), + new XElement(tns + XMLNames.BusAux_ElectricSystem_RatedCapacity, battery.Capacity.AsAmpHour), + new XElement(tns + XMLNames.BusAux_ElectricSystem_NominalVoltage, battery.Voltage.Value()))); + } + else if (electricStorage is BusAuxCapacitorInputData) { + var capacitor = electricStorage as BusAuxCapacitorInputData; + auxCapacitor.Add(new XElement(tns + XMLNames.BusAux_ElectricSystem_Capacitor, + new XElement(tns + XMLNames.BusAux_ElectricSystem_CapacitorTechnology, capacitor.Technology), + new XElement(tns + XMLNames.BusAux_ElectricSystem_RatedCapacitance, capacitor.Capacity.Value()), + new XElement(tns + XMLNames.BusAux_ElectricSystem_RatedVoltage, capacitor.Voltage.Value()))); + } + } + + auxBattery = auxBattery.Any() ? auxBattery : null; + auxCapacitor = auxCapacitor.Any() ? auxCapacitor : null; + } + + return new XElement(tns + XMLNames.BusAux_ElectricSystem, + alternatorTech, + smartAlternators, + auxBattery, + auxCapacitor, + new XElement(tns + XMLNames.BusAux_ElectricSystem_SupplyFromHEVPossible, supplyHevPossible) + ); + } + + + private XElement GetPneumaticSystem(IPneumaticSupplyDeclarationData supply, IPneumaticConsumersDeclarationData consumer) + { + return new XElement(tns + XMLNames.BusAux_PneumaticSystem, + new XElement(tns + XMLNames.Bus_SizeOfAirSupply, supply.CompressorSize), + new XElement(tns + XMLNames.CompressorDrive, supply.CompressorDrive.GetLabel()), + new XElement(tns + XMLNames.Vehicle_Clutch, supply.Clutch), + new XElement(tns + XMLNames.Bus_CompressorRatio, supply.Ratio.ToMinSignificantDigits(3)), + new XElement(tns + XMLNames.Bus_SmartCompressionSystem, supply.SmartAirCompression), + new XElement(tns + XMLNames.Bus_SmartRegenerationSystem, supply.SmartRegeneration), + new XElement(tns + XMLNames.Bus_AirsuspensionControl, GetXMLAirsuspensionControl(consumer.AirsuspensionControl)), + new XElement(tns + XMLNames.BusAux_PneumaticSystem_SCRReagentDosing, consumer.AdBlueDosing == ConsumerTechnology.Pneumatically) + ); + } + + private string GetXMLAirsuspensionControl(ConsumerTechnology airsuspensionControl) + { + switch (airsuspensionControl) { + case ConsumerTechnology.Electrically: + return "electronically"; + case ConsumerTechnology.Mechanically: + return "mechanically"; + default: + throw new VectoException("Unknown AirsuspensionControl!"); + } + } + + + private XElement GetHvac(IHVACBusAuxiliariesDeclarationData hvac) + { + return new XElement(new XElement(tns + XMLNames.BusAux_HVAC, + new XElement(tns + XMLNames.Bus_AdjustableCoolantThermostat, hvac.AdjustableCoolantThermostat), + new XElement(tns + XMLNames.Bus_EngineWasteGasHeatExchanger, hvac.EngineWasteGasHeatExchanger))); } @@ -331,7 +441,7 @@ namespace TUGraz.VectoCore.OutputData.XML )), new XElement( tns + "Fuels", - mode.Fuels.Select(x => new XElement(tns + "FuelType", x.FuelType.ToXMLFormat()))) + mode.Fuels.Select(x => new XElement(tns + XMLNames.Engine_FuelType, x.FuelType.ToXMLFormat()))) ) ); } @@ -484,37 +594,11 @@ namespace TUGraz.VectoCore.OutputData.XML return retVal.Cast<object>().ToArray(); } - - - private XElement GetInputdataSignature(string multistageId) - { - return new XElement(tns + XMLNames.DI_Signature, - new XElement(di + XMLNames.DI_Signature_Reference, - new XAttribute(XMLNames.DI_Signature_Reference_URI_Attr, $"#{multistageId}"), - new XElement(di + XMLNames.DI_Signature_Reference_Transforms, - new XElement(di + XMLNames.DI_Signature_Reference_Transforms_Transform, - new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "urn:vecto:xml:2017:canonicalization")), - new XElement(di + XMLNames.DI_Signature_Reference_Transforms_Transform, - new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "http://www.w3.org/2001/10/xml-exc-c14n#")) - ), - new XElement(di + XMLNames.DI_Signature_Reference_DigestMethod, - new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "http://www.w3.org/2001/04/xmlenc#sha256")), - new XElement(di + XMLNames.DI_Signature_Reference_DigestValue, GetDigestValue(multistageId))) - ); - } - + private string GetGUID() { return Guid.NewGuid().ToString("n").Substring(0, 20); } - - private string GetDigestValue(string multistageId) - { - var alg = SHA256.Create(); - alg.ComputeHash(Encoding.UTF8.GetBytes(multistageId)); - return Convert.ToBase64String(alg.Hash); - } - } } diff --git a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs index ec837b65c65e031d025390bdbb22639938e6ed4e..305c2a461dbb4837cff635618cc1f2ac3c462323 100644 --- a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs +++ b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs @@ -691,7 +691,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage Assert.AreEqual(1, aux.SteeringPumpTechnology.Count); Assert.AreEqual("Variable displacement elec. controlled", aux.SteeringPumpTechnology[0]); - + + //ToDo SupplyFromHEVPossible to interface and reader? Assert.AreEqual(AlternatorType.Smart, aux.ElectricSupply.AlternatorTechnology); Assert.AreEqual(1, aux.ElectricSupply.Alternators.Count); @@ -713,7 +714,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage Assert.AreEqual(3.SI<Volt>(), capacitor.Voltage); Assert.AreEqual("Large Supply 2-stage", aux.PneumaticSupply.CompressorSize);//SizeOfAirSupply - Assert.AreEqual(CompressorDrive.mechanically, aux.PneumaticSupply.CompressorDrive); + Assert.AreEqual(CompressorDrive.electrically, aux.PneumaticSupply.CompressorDrive); Assert.AreEqual("none", aux.PneumaticSupply.Clutch); Assert.AreEqual(1.000, aux.PneumaticSupply.Ratio); Assert.AreEqual(false, aux.PneumaticSupply.SmartAirCompression);