Code development platform for open source projects from the European Union institutions

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