tbf/TestBenchFramework/BenchControl/Modbus/TankSelector/SelectTankOp.cs

53 lines
1.2 KiB
C#

namespace TBF.BenchControl.Modbus.TankSelector
{
public class SelectTankOp : IOperation
{
public enum OpSpecifier
{
None,
SelectTank,
UnselectTank, /// tankNo is ignored, the selected tank is unselected
}
TankSelector tankSelector;
OpSpecifier currentOp;
int tankNo;
public SelectTankOp(TankSelector tankSelector, OpSpecifier op, int tankNo)
{
this.tankSelector = tankSelector;
this.currentOp = op;
if (currentOp == OpSpecifier.SelectTank) this.tankNo = tankNo;
}
/// <summary>Start this operation</summary>
public void Start()
{
switch (currentOp)
{
case OpSpecifier.SelectTank:
tankSelector.SetOutputs((tankNo == 1) ? 1u : ((tankNo == 2) ? 2u : ((tankNo == 3) ? 4u : 0)));
break;
case OpSpecifier.UnselectTank:
tankSelector.SetOutputs((tankNo == 1) ? 8u : ((tankNo == 2) ? 16u : ((tankNo == 3) ? 32u : 0)));
break;
default:
break;
}
}
/// <summary>Run this operation</summary>
public Event Run()
{
tankSelector.SetOutputs(0);
return Event.ConditionMet;
}
/// <summary>Stop this operation</summary>
public void Stop()
{
}
}
}