Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit b5094fdf authored by Michael KRISPER's avatar Michael KRISPER
Browse files

added ExtensionMethods for PortProvider-Classes

parent 746b18ba
No related branches found
No related tags found
No related merge requests found
using System;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCore.Models.Connector.Ports;
using TUGraz.VectoCore.Models.Simulation;
using TUGraz.VectoCore.Models.SimulationComponent;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Impl;
namespace TUGraz.VectoCore.Utils
{
public static class ProviderExtensions
{
public static IDriver AddComponent(this IDrivingCycleInProvider prev, IDriver next)
{
prev.InPort().Connect(next.OutPort());
return next;
}
public static IVehicle AddComponent(this IDriverDemandInProvider prev, IVehicle next)
{
prev.InPort().Connect(next.OutPort());
return next;
}
public static IWheels AddComponent(this IFvInProvider prev, IWheels next)
{
prev.InPort().Connect(next.OutPort());
return next;
}
public static IPowerTrainComponent AddComponent(this ITnInProvider prev, IPowerTrainComponent next)
{
prev.InPort().Connect(next.OutPort());
return next;
}
public static IPowerTrainComponent AddComponent(this IPowerTrainComponent prev, IPowerTrainComponent next)
{
prev.InPort().Connect(next.OutPort());
return next;
}
public static CombustionEngine AddComponent(this IPowerTrainComponent prev, CombustionEngine next)
{
prev.InPort().Connect(next.OutPort());
var clutch = prev as IClutch;
if (clutch != null)
next.IdleController.RequestPort = clutch.IdleControlPort;
return next;
}
public static IPowerTrainComponent AddRetarderAndGearbox(this IPowerTrainComponent prev, RetarderData data,
IGearbox gearbox,
IVehicleContainer container)
{
switch (data.Type) {
case RetarderType.Primary:
return prev.AddComponent(new Retarder(container, data.LossMap, data.Ratio)).AddComponent(gearbox);
case RetarderType.Secondary:
return prev.AddComponent(gearbox).AddComponent(new Retarder(container, data.LossMap, data.Ratio));
case RetarderType.None:
return prev.AddComponent(new DummyRetarder(container)).AddComponent(gearbox);
case RetarderType.LossesIncludedInTransmission:
return prev.AddComponent(new DummyRetarder(container)).AddComponent(gearbox);
default:
throw new ArgumentOutOfRangeException();
}
}
}
}
\ No newline at end of file
......@@ -131,6 +131,7 @@
<Compile Include="Models\Connector\Ports\Impl\Response.cs" />
<Compile Include="Models\Connector\Ports\IFvPort.cs" />
<Compile Include="Models\Connector\Ports\ITnPort.cs" />
<Compile Include="Utils\ProviderExtensions.cs" />
<Compile Include="Models\Declaration\AirDrag.cs" />
<Compile Include="Models\Declaration\Fan.cs" />
<Compile Include="Models\Declaration\HVAC.cs" />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment