Upgrade structure of code base
This commit is contained in:
@@ -1,36 +1,40 @@
|
||||
using Enigmos.Ports;
|
||||
using Enigmos.Ports.DataPorts;
|
||||
using Enigmos.Ports.SignalPorts;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using TabulaSmaragdina.Constants;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
using Nocturnis.GlobalManagement.Constants;
|
||||
using Nocturnis.GlobalManagement.Controls;
|
||||
|
||||
namespace Enigmos.Modules.ControllingModules;
|
||||
|
||||
public partial class SinglePoleSingleThrowSwitchModule : ControllingModule
|
||||
public partial class SinglePoleSingleThrowSwitchModule : PiplineModule, ITerminalModule
|
||||
{
|
||||
private SignalInPort SignalIn { get; set; }
|
||||
private SignalOutPort SignalOut { get; set; }
|
||||
private DataInPort ControlInput { get; set; }
|
||||
public override IEnumerable<BasePort> Ports => new BasePort[] { SignalIn, SignalOut, ControlInput };
|
||||
public override IEnumerable<IBasePort> Ports =>
|
||||
SignalInPorts.Union(SignalOutPorts.Cast<IBasePort>()).Union(DataInPorts);
|
||||
public IDataInPort[] DataInPorts { get; set; } = Array.Empty<IDataInPort>();
|
||||
|
||||
public void Drain()
|
||||
{
|
||||
foreach (IDataInPort ip in DataInPorts)
|
||||
_ = ip.GetData.Get;
|
||||
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
SignalIn = GetPort<SignalInPort>("SignalIn");
|
||||
SignalOut = GetPort<SignalOutPort>("SignalOut");
|
||||
ControlInput = GetPort<DataInPort>("ControlInput");
|
||||
ControlInput.SetDataType(EnigmosConstant.DataPortTypes.Bit);
|
||||
this.DataInInit("Input", 1);
|
||||
this.SignalInInit("SignalIn", 1);
|
||||
this.SignalOutInit("SignalOut", 1);
|
||||
DataInPorts[0].SetDataType(EnigmosConstant.DataPortTypes.Bit);
|
||||
PostInit();
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override void Route(IRootModule root)
|
||||
public override void Execute()
|
||||
{
|
||||
Visited = true;
|
||||
if (ControlInput.GetData(root).Bit && SignalOut.Connected)
|
||||
SignalOut.ConnectedPort.Module.RouteWithTimeoutHandle(root);
|
||||
if (DataInPorts[0].GetData.Get!.Bit && SignalOutPorts[0].Connected)
|
||||
SignalOutPorts[0].Route();
|
||||
else
|
||||
root.ActionFinished = true;
|
||||
EnigmosControl.Instance.RootModule.ActionFinished = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user