diff --git a/TestBenchFramework/BenchControl/Danfoss/VLT2800/Pump.cs b/TestBenchFramework/BenchControl/Danfoss/VLT2800/Pump.cs
index 8cb105a5b..b3011d2cc 100644
--- a/TestBenchFramework/BenchControl/Danfoss/VLT2800/Pump.cs
+++ b/TestBenchFramework/BenchControl/Danfoss/VLT2800/Pump.cs
@@ -10,6 +10,7 @@ using log4net;
using Config.Entities;
using TBF.BenchControl.Generic;
using TBF.Boxes;
+using Dirichlet.Numerics;
namespace TBF.BenchControl.Danfoss.VLT2800
{
@@ -94,7 +95,7 @@ namespace TBF.BenchControl.Danfoss.VLT2800
readonly Elde.ControlBoardDev controlBoard;
readonly int bitPosition; /// 0 .. 63
- public readonly ulong Mask; /// derived from bitPosition in the constructor
+ public readonly UInt128 Mask; /// derived from bitPosition in the constructor
public bool State
{
@@ -125,8 +126,8 @@ namespace TBF.BenchControl.Danfoss.VLT2800
if (controlBoard == null) throw new Exception("Cannot find " + Name + " parent");
bitPosition = pumpCfg.BitPosition;
- Mask = (((ulong)1) << bitPosition);
- Mask |= (((ulong)1) << (bitPosition + 1));
+ Mask = (((UInt128)1) << bitPosition);
+ Mask |= (((UInt128)1) << (bitPosition + 1));
log.Debug(this.ToString());
}
diff --git a/TestBenchFramework/BenchControl/Danfoss/VLT2800/PumpCfgCtrl.cs b/TestBenchFramework/BenchControl/Danfoss/VLT2800/PumpCfgCtrl.cs
index 36490cab2..2b2298dea 100644
--- a/TestBenchFramework/BenchControl/Danfoss/VLT2800/PumpCfgCtrl.cs
+++ b/TestBenchFramework/BenchControl/Danfoss/VLT2800/PumpCfgCtrl.cs
@@ -1,5 +1,5 @@
///
-/// Copyright (c) 2013-2015 Sensus Metering Systems
+/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Windows.Forms;
@@ -161,10 +161,10 @@ namespace TBF.BenchControl.Danfoss.VLT2800
message += Environment.NewLine + "'Delay' is not valid";
}
- if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy >= 64)
+ if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy >= 128)
{
flags |= CfgUpdateFlags.Error;
- message += Environment.NewLine + "'Bit Position' should be between 0 and 63";
+ message += Environment.NewLine + "'Bit Position' should be between 0 and 127";
}
if (!protocolComboBox.Items.Contains(protocolComboBox.Text))
diff --git a/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs b/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs
index a233e9cf7..35ea53d7d 100644
--- a/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs
+++ b/TestBenchFramework/BenchControl/Elde/ControlBoardDev.cs
@@ -1,5 +1,5 @@
///
-/// Copyright (c) 2013-2015 Sensus Metering Systems
+/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Text;
@@ -110,10 +110,10 @@ namespace TBF.BenchControl.Elde
/// State of valves sent out - buffered by the last SendCommand()
- public ulong Route { get { return benchModelRoute; } }
+ public UInt128 Route { get { return benchModelRoute; } }
- ulong valvesToInvert; /// Route = valesToInvert ^ RequiredRouteWithoutInvertedVlaves
- readonly ulong routeMask; /// This mask masks out virtual valves, routeMask is set in the constructor
+ UInt128 valvesToInvert; /// Route = valesToInvert ^ RequiredRouteWithoutInvertedVlaves
+ readonly UInt128 routeMask; /// This mask masks out virtual valves, routeMask is set in the constructor
///
/// Initialization data updated by constructors of children components
@@ -126,6 +126,9 @@ namespace TBF.BenchControl.Elde
#if DN100 || FUZHOU150 || FUZHOU300 || PT200IL || PUCHONG_PT200 || GENESIS
public byte[] MeretRS485Address = new byte[4];
public float[] EtCalib = new float[6] { 1, 1, 1, 1, 1, 1 };
+#elif GENESIS
+ public byte[] MeretRS485Address = new byte[4];
+ public float[] EtCalib = new float[7] { 1, 1, 1, 1, 1, 1, 1 };
#elif MUNICH || TORINO50 || BADGER_MALA_TRAT || TORUN_PT50_2015 || CEVAK_PT40_272 || IPERLST || IPERLST_SPECIAL || MURES_PT40 || FUZHOU_40 || SLM_50
public byte[] MeretRS485Address = new byte[4];
public float[] EtCalib = new float[5] { 1, 1, 1, 1, 1 };
@@ -150,7 +153,7 @@ namespace TBF.BenchControl.Elde
bool sendCommandFlag;
Command cmd;
int refNr;
- ulong benchModelRoute;
+ UInt128 benchModelRoute;
int totalRefPulses;
int massRefPulses;
TestMethods testMethods;
@@ -244,7 +247,7 @@ namespace TBF.BenchControl.Elde
{
if (i < controlBoardCfg.VirtualValvesRangeLo || i > controlBoardCfg.VirtualValvesRangeHi)
{
- routeMask = routeMask | ((ulong)1 << i);
+ routeMask = routeMask | ((UInt128)1 << i);
}
}
@@ -269,7 +272,7 @@ namespace TBF.BenchControl.Elde
#else /// all newer benches
ControlComponent_Torino2015.UserControl1 ctrlBrdComponent,
#endif
- ulong valvesToInvert,
+ UInt128 valvesToInvert,
double[] tankCapacities)
{
this.valvesToInvert = valvesToInvert;
@@ -433,7 +436,7 @@ namespace TBF.BenchControl.Elde
/// Coefficient used to control reg. valves (1..100)
/// 0 = default value, 1 = spec. processing of very short pulses
/// What to stop
- public void SendCommand(Command cmd, int refFlowmtrNr, ulong route,
+ public void SendCommand(Command cmd, int refFlowmtrNr, UInt128 route,
int totalRefPulses, int massRefPulses, TestMethods testMethods,
float filterConstant, int regConst, int shortImp, StopDevs stopDevs)
{
@@ -457,9 +460,9 @@ namespace TBF.BenchControl.Elde
/// 'ulong' with bits of valves to open set to '1'
/// 'ulong' with bits of valves to close set to '1'
/// 'ulong' with bits of valves that have changed set to '1'
- public ulong SetValves(ulong valvesToOpen, ulong valvesToClose, IList extendedValves)
+ public UInt128 SetValves(UInt128 valvesToOpen, UInt128 valvesToClose, IList extendedValves)
{
- ulong oldRoute = benchModelRoute;
+ UInt128 oldRoute = benchModelRoute;
benchModelRoute = (((benchModelRoute ^ valvesToInvert) | valvesToOpen) & (~valvesToClose)) ^ valvesToInvert;
foreach (var extV in extendedValves) extV.UpdateRoute(ref benchModelRoute);
log.DebugFormat("SetValves(x,x), new route = {0}", Utils.ShowRoute(benchModelRoute));
@@ -471,9 +474,9 @@ namespace TBF.BenchControl.Elde
/// Set Route to value returned by RRoute. Take virtual valves into account.
///
/// 'ulong' with bits of valves that have changed set to '1'
- public ulong SyncRoute()
+ public UInt128 SyncRoute()
{
- ulong oldRoute = benchModelRoute;
+ UInt128 oldRoute = benchModelRoute;
benchModelRoute = (RRoute & routeMask) | (benchModelRoute & (~routeMask));
log.DebugFormat("SyncRoute(), new route = {0}", Utils.ShowRoute(benchModelRoute));
return oldRoute ^ benchModelRoute;
diff --git a/TestBenchFramework/BenchControl/Elde/ControlComWrap.cs b/TestBenchFramework/BenchControl/Elde/ControlComWrap.cs
index 8c06e9585..6f4152a6d 100644
--- a/TestBenchFramework/BenchControl/Elde/ControlComWrap.cs
+++ b/TestBenchFramework/BenchControl/Elde/ControlComWrap.cs
@@ -44,7 +44,7 @@ namespace TBF.BenchControl.Elde
public float Temperature(int tmpNr0) { return ctrlBrdComponent.temperature[tmpNr0]; }
public RegulValveState RegulValveState(int rvNr1) { return (RegulValveState)ctrlBrdComponent.rValveStatus[rvNr1 - 1]; }
#if GENESIS
- public UInt128 RRoute { get { return ctrlBrdComponent.rRoute; } }
+ public UInt128 RRoute { get { return ((UInt128)ctrlBrdComponent.rRoute << 64) | (UInt128)ctrlBrdComponent.rRoute; } }
#else
public UInt128 RRoute { get { return ctrlBrdComponent.rRoute; } }
#endif
@@ -315,7 +315,7 @@ namespace TBF.BenchControl.Elde
filterConstant, fmFreq, (uint)regConst, (uint)shortImp, (uint)stopDevs);
#elif GENESIS
uint[] pulsesArr = new uint[] { (uint)totalRefPulses, (uint)massRefPulses };
- ctrlBrdComponent.SendCommand((uint)cmd, (byte)refFlowMeterNr, (ulong)route, 0, pulsesArr, (uint)testMethods,
+ ctrlBrdComponent.SendCommand((uint)cmd, (byte)refFlowMeterNr, (ulong)(route & (UInt128)0xFFFFFFFFFFFFFFFF), (ulong)(route >> 64), pulsesArr, (uint)testMethods,
filterConstant, fmFreq, (uint)regConst, (uint)shortImp, (uint)stopDevs);
#else /// if IPERLST || IPERLST_SPECIAL || MALTA_WSD25 || SLM_50 || SLM_END || WARSAW_END
uint[] pulsesArr = new uint[] { (uint)totalRefPulses, (uint)massRefPulses };
diff --git a/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs b/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs
index 6cd1f95dd..320890c78 100644
--- a/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs
+++ b/TestBenchFramework/BenchControl/Elde/Diverter/Diverter.cs
@@ -1,9 +1,10 @@
///
-/// Copyright (c) 2013-2015 Sensus Metering Systems
+/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using log4net;
+using Dirichlet.Numerics;
namespace TBF.BenchControl.Elde.Diverter
{
@@ -31,7 +32,7 @@ namespace TBF.BenchControl.Elde.Diverter
readonly DiverterCfg diverterCfg;
readonly ControlBoardDev controlBoard;
- readonly ulong mask; /// derived from bitPosition in the constructor
+ readonly UInt128 mask; /// derived from bitPosition in the constructor
public int AdcNr { get { return diverterCfg.AdcNr; } }
public bool State
@@ -52,7 +53,7 @@ namespace TBF.BenchControl.Elde.Diverter
if (controlBoard == null) throw new Exception("Cannot find " + Name + " parent");
if (diverterCfg.BitPosition < 0 || diverterCfg.BitPosition >= 64) throw new ArgumentOutOfRangeException("position");
- this.mask = (((ulong)1) << diverterCfg.BitPosition);
+ this.mask = (((UInt128)1) << diverterCfg.BitPosition);
diff --git a/TestBenchFramework/BenchControl/Elde/Diverter/DiverterCfgCtrl.cs b/TestBenchFramework/BenchControl/Elde/Diverter/DiverterCfgCtrl.cs
index ca8d8fcaf..f8e95cfea 100644
--- a/TestBenchFramework/BenchControl/Elde/Diverter/DiverterCfgCtrl.cs
+++ b/TestBenchFramework/BenchControl/Elde/Diverter/DiverterCfgCtrl.cs
@@ -108,10 +108,10 @@ namespace TBF.BenchControl.Elde.Diverter
message += Environment.NewLine + "Invalid 'Parent Name'";
}
- if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy > 63)
+ if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy > 127)
{
flags |= CfgUpdateFlags.Error;
- message += Environment.NewLine + "'Bit Position' should be between 0 and 63";
+ message += Environment.NewLine + "'Bit Position' should be between 0 and 127";
}
if (!int.TryParse(adcNrTextBox.Text, out dummy) || dummy < 0 || dummy > 15)
diff --git a/TestBenchFramework/BenchControl/Elde/FlowMeter/FlowMeterCfg.cs b/TestBenchFramework/BenchControl/Elde/FlowMeter/FlowMeterCfg.cs
index 4e4b0aa5b..289304847 100644
--- a/TestBenchFramework/BenchControl/Elde/FlowMeter/FlowMeterCfg.cs
+++ b/TestBenchFramework/BenchControl/Elde/FlowMeter/FlowMeterCfg.cs
@@ -16,7 +16,7 @@ namespace TBF.BenchControl.Elde.FlowMeter
///
/// Serialized parameters
///
- public int Idx1; /// 1..5
+ public int Idx1; /// 1..7
public float NominalFlow; /// Nominal flow in m3/h at output frequency 2000 Hz
/// Calibration info serialized parameters displayed in Metrology tab page
diff --git a/TestBenchFramework/BenchControl/Elde/Pump/Pump.cs b/TestBenchFramework/BenchControl/Elde/Pump/Pump.cs
index 90678adca..ffc1dd7da 100644
--- a/TestBenchFramework/BenchControl/Elde/Pump/Pump.cs
+++ b/TestBenchFramework/BenchControl/Elde/Pump/Pump.cs
@@ -1,8 +1,9 @@
///
-/// Copyright (c) 2013-2015 Sensus Metering Systems
+/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
+using Dirichlet.Numerics;
using log4net;
namespace TBF.BenchControl.Elde.Pump
@@ -27,9 +28,9 @@ namespace TBF.BenchControl.Elde.Pump
readonly ControlBoardDev controlBoard;
- readonly int bitPosition; /// 0 .. 63
+ readonly int bitPosition; /// 0 .. 127
- public readonly ulong Mask; /// derived from bitPosition in the constructor
+ public readonly UInt128 Mask; /// derived from bitPosition in the constructor
public Pump()
@@ -45,7 +46,7 @@ namespace TBF.BenchControl.Elde.Pump
if (controlBoard == null) throw new Exception("Cannot find " + Name + " parent");
bitPosition = pumpCfg.BitPosition;
- Mask = (((ulong)1) << pumpCfg.BitPosition);
+ Mask = (((UInt128)1) << pumpCfg.BitPosition);
log.Debug(this.ToString());
}
diff --git a/TestBenchFramework/BenchControl/Elde/Pump/PumpCfgCtrl.cs b/TestBenchFramework/BenchControl/Elde/Pump/PumpCfgCtrl.cs
index 464dc1fa8..cc01bd9f2 100644
--- a/TestBenchFramework/BenchControl/Elde/Pump/PumpCfgCtrl.cs
+++ b/TestBenchFramework/BenchControl/Elde/Pump/PumpCfgCtrl.cs
@@ -98,10 +98,10 @@ namespace TBF.BenchControl.Elde.Pump
flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "Invalid 'Parent Name'";
}
- if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy >= 64)
+ if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy >= 128)
{
flags |= CfgUpdateFlags.Error;
- message += Environment.NewLine + "'Bit Position' should be between 0 and 63";
+ message += Environment.NewLine + "'Bit Position' should be between 0 and 127";
}
if (!int.TryParse(delayTextBox.Text, out dummy) || dummy < 0 || dummy >= 300 || (dummy % StateMachine.Period) != 0)
{
diff --git a/TestBenchFramework/BenchControl/Elde/PumpTandem/Pump.cs b/TestBenchFramework/BenchControl/Elde/PumpTandem/Pump.cs
index db741c98f..b2c6309c6 100644
--- a/TestBenchFramework/BenchControl/Elde/PumpTandem/Pump.cs
+++ b/TestBenchFramework/BenchControl/Elde/PumpTandem/Pump.cs
@@ -3,6 +3,7 @@
///
using System;
using System.Collections.Generic;
+using Dirichlet.Numerics;
using log4net;
namespace TBF.BenchControl.Elde.PumpTandem
@@ -37,9 +38,9 @@ namespace TBF.BenchControl.Elde.PumpTandem
}
- readonly ulong mask1;
- readonly ulong mask2;
- public ulong Mask { get { return mask1 | mask2; } } /// derived from masks of two pumps
+ readonly UInt128 mask1;
+ readonly UInt128 mask2;
+ public UInt128 Mask { get { return mask1 | mask2; } } /// derived from masks of two pumps
public Pump()
diff --git a/TestBenchFramework/BenchControl/Elde/PumpWithFM/Pump.cs b/TestBenchFramework/BenchControl/Elde/PumpWithFM/Pump.cs
index b59527d20..0ef0439fd 100644
--- a/TestBenchFramework/BenchControl/Elde/PumpWithFM/Pump.cs
+++ b/TestBenchFramework/BenchControl/Elde/PumpWithFM/Pump.cs
@@ -1,8 +1,9 @@
///
-/// Copyright (c) 2013-2015 Sensus Metering Systems
+/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
+using Dirichlet.Numerics;
using log4net;
namespace TBF.BenchControl.Elde.PumpWithFM
@@ -25,7 +26,7 @@ namespace TBF.BenchControl.Elde.PumpWithFM
readonly int bitPosition; /// 0 .. 63
int FMIndex; /// 0 .. FMPumpsCount-1
- public readonly ulong Mask; /// derived from bitPosition in the constructor
+ public readonly UInt128 Mask; /// derived from bitPosition in the constructor
public bool State
{
@@ -60,7 +61,7 @@ namespace TBF.BenchControl.Elde.PumpWithFM
if (controlBoard == null) throw new Exception("Cannot find " + Name + " parent");
bitPosition = pumpCfg.BitPosition;
- Mask = (((ulong)1) << pumpCfg.BitPosition);
+ Mask = (((UInt128)1) << pumpCfg.BitPosition);
FMIndex = pumpCfg.FMIndex;
log.Debug(this.ToString());
diff --git a/TestBenchFramework/BenchControl/Elde/PumpWithFM/PumpCfgCtrl.cs b/TestBenchFramework/BenchControl/Elde/PumpWithFM/PumpCfgCtrl.cs
index f4bce4358..971379489 100644
--- a/TestBenchFramework/BenchControl/Elde/PumpWithFM/PumpCfgCtrl.cs
+++ b/TestBenchFramework/BenchControl/Elde/PumpWithFM/PumpCfgCtrl.cs
@@ -101,10 +101,10 @@ namespace TBF.BenchControl.Elde.PumpWithFM
flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "Invalid 'Parent Name'";
}
- if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy >= 64)
+ if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy >= 128)
{
flags |= CfgUpdateFlags.Error;
- message += Environment.NewLine + "'Bit Position' should be between 0 and 63";
+ message += Environment.NewLine + "'Bit Position' should be between 0 and 127";
}
if (!int.TryParse(fmIndexTextBox.Text, out dummy) || dummy < 0)
{
diff --git a/TestBenchFramework/BenchControl/Elde/Valve/SetValvesOp.cs b/TestBenchFramework/BenchControl/Elde/Valve/SetValvesOp.cs
index d6fcc42b0..883c675b8 100644
--- a/TestBenchFramework/BenchControl/Elde/Valve/SetValvesOp.cs
+++ b/TestBenchFramework/BenchControl/Elde/Valve/SetValvesOp.cs
@@ -1,10 +1,11 @@
///
-/// Copyright (c) 2013-2015 Sensus Metering Systems
+/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using log4net;
using TBF.BenchControl.GenericDevices;
+using Dirichlet.Numerics;
namespace TBF.BenchControl.Elde.Valve
{
@@ -20,8 +21,8 @@ namespace TBF.BenchControl.Elde.Valve
public int TimeSec; /// Relative time in [s] from the start of the operation
public IList VOpen; /// List of valves to open in this point of time
public IList VClose; /// List of valves to close in this point of time
- public ulong MasksOpen; /// OR-ed bitmasks of valves to open in this point of time
- public ulong MasksClose; /// OR-ed bitmasks of valves to close in this point of time
+ public UInt128 MasksOpen; /// OR-ed bitmasks of valves to open in this point of time
+ public UInt128 MasksClose; /// OR-ed bitmasks of valves to close in this point of time
public SwitchPoint(int time, IList vOpen, IList vClose)
{
@@ -35,7 +36,7 @@ namespace TBF.BenchControl.Elde.Valve
///
/// 'ulong' with bits of valves that were actually changed set ot '1'
/// Delay in [s]
- public int MaxDelay(ulong changed)
+ public int MaxDelay(UInt128 changed)
{
int max = 0;
foreach (var vlv in VOpen)
@@ -209,7 +210,7 @@ namespace TBF.BenchControl.Elde.Valve
/// Start this operation
public void Start()
{
- ulong changed = controlBoard.SetValves(switchPoints[0].MasksOpen, switchPoints[0].MasksClose, StateMachine.ExtendedValves);
+ UInt128 changed = controlBoard.SetValves(switchPoints[0].MasksOpen, switchPoints[0].MasksClose, StateMachine.ExtendedValves);
swStartTime = StateMachine.Time;
maxDelayTime = switchPoints[0].MaxDelay(changed);
nextIx = 1;
@@ -229,7 +230,7 @@ namespace TBF.BenchControl.Elde.Valve
if (StateMachine.Time >= swStartTime + switchPoints[nextIx].TimeSec)
{
- ulong changed = controlBoard.SetValves(switchPoints[nextIx].MasksOpen, switchPoints[nextIx].MasksClose, StateMachine.ExtendedValves);
+ UInt128 changed = controlBoard.SetValves(switchPoints[nextIx].MasksOpen, switchPoints[nextIx].MasksClose, StateMachine.ExtendedValves);
int nextDelay = switchPoints[nextIx].MaxDelay(changed);
if (switchPoints[nextIx].TimeSec + nextDelay > maxDelayTime)
diff --git a/TestBenchFramework/BenchControl/Elde/Valve/Valve.cs b/TestBenchFramework/BenchControl/Elde/Valve/Valve.cs
index c2e235757..041dfd6d0 100644
--- a/TestBenchFramework/BenchControl/Elde/Valve/Valve.cs
+++ b/TestBenchFramework/BenchControl/Elde/Valve/Valve.cs
@@ -1,8 +1,9 @@
///
-/// Copyright (c) 2013-2015 Sensus Metering Systems
+/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
+using Dirichlet.Numerics;
using log4net;
using TBF.BenchControl.GenericDevices;
@@ -28,7 +29,7 @@ namespace TBF.BenchControl.Elde.Valve
public int LagOpening { get { return valveCfg.LagOpening; } }
public int LagClosing { get { return valveCfg.LagClosing; } }
- public readonly ulong Mask; /// derived from bitPosition in the constructor
+ public readonly UInt128 Mask; /// derived from bitPosition in the constructor
public int BitPosition { get { return valveCfg.BitPosition; } }
@@ -45,11 +46,11 @@ namespace TBF.BenchControl.Elde.Valve
controlBoard = (ControlBoardDev)TbfComponents.FindComponent(cfg.ParentName, components);
if (controlBoard == null) throw new Exception("Cannot find " + Name + " parent");
- if (valveCfg.BitPosition < 0 || valveCfg.BitPosition >= 64)
+ if (valveCfg.BitPosition < 0 || valveCfg.BitPosition >= 128)
{
throw new ArgumentOutOfRangeException("position");
}
- this.Mask = (((ulong)1) << valveCfg.BitPosition);
+ this.Mask = (((UInt128)1) << valveCfg.BitPosition);
if (valveCfg.CoupledToName != null)
{
diff --git a/TestBenchFramework/BenchControl/Elde/Valve/ValveCfgCtrl.cs b/TestBenchFramework/BenchControl/Elde/Valve/ValveCfgCtrl.cs
index 3d3473196..c0c0c2a85 100644
--- a/TestBenchFramework/BenchControl/Elde/Valve/ValveCfgCtrl.cs
+++ b/TestBenchFramework/BenchControl/Elde/Valve/ValveCfgCtrl.cs
@@ -1,5 +1,5 @@
///
-/// Copyright (c) 2013-2015 Sensus Metering Systems
+/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Windows.Forms;
@@ -144,10 +144,10 @@ namespace TBF.BenchControl.Elde.Valve
flags |= CfgUpdateFlags.Error;
message += Environment.NewLine + "Invalid 'Coupled To'";
}
- if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy >= 64)
+ if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy >= 128)
{
flags |= CfgUpdateFlags.Error;
- message += Environment.NewLine + "'Bit Position' should be between 0 and 63";
+ message += Environment.NewLine + "'Bit Position' should be between 0 and 127";
}
if (!int.TryParse(openCloseTimeTextBox.Text, out dummy) || dummy < 0 || dummy > 300 || (dummy % StateMachine.Period) != 0)
{
diff --git a/TestBenchFramework/BenchControl/Elde/ValveEx/Valve.cs b/TestBenchFramework/BenchControl/Elde/ValveEx/Valve.cs
index 256eed8b4..b734e9770 100644
--- a/TestBenchFramework/BenchControl/Elde/ValveEx/Valve.cs
+++ b/TestBenchFramework/BenchControl/Elde/ValveEx/Valve.cs
@@ -1,10 +1,11 @@
///
-/// Copyright (c) 2015 Sensus Metering Systems
+/// Copyright (c) 2015-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using log4net;
using TBF.BenchControl.GenericDevices;
+using Dirichlet.Numerics;
namespace TBF.BenchControl.Elde.ValveEx
{
@@ -15,7 +16,7 @@ namespace TBF.BenchControl.Elde.ValveEx
readonly ValveCfg valveCfg;
- public readonly ulong Mask; /// derived from bitPosition in the constructor
+ public readonly UInt128 Mask; /// derived from bitPosition in the constructor
///
public readonly IValve[] InputValves;
@@ -31,11 +32,11 @@ namespace TBF.BenchControl.Elde.ValveEx
//controlBoard = (ControlBoardDev)TbfComponents.FindComponent(cfg.ParentName, components);
//if (controlBoard == null) throw new Exception("Cannot find " + Name + " parent");
- if (valveCfg.BitPosition < 0 || valveCfg.BitPosition >= 64)
+ if (valveCfg.BitPosition < 0 || valveCfg.BitPosition >= 128)
{
throw new ArgumentOutOfRangeException("position");
}
- this.Mask = (((ulong)1) << valveCfg.BitPosition);
+ this.Mask = (((UInt128)1) << valveCfg.BitPosition);
InputValves = new IValve[valveCfg.InputValvesCount];
InputValves[0] = TbfComponents.FindComponent(valveCfg.Input1, components) as IValve;
@@ -50,7 +51,7 @@ namespace TBF.BenchControl.Elde.ValveEx
log.Debug(this.ToString());
}
- public void UpdateRoute(ref ulong route)
+ public void UpdateRoute(ref UInt128 route)
{
bool output;
diff --git a/TestBenchFramework/BenchControl/Elde/ValveEx/ValveCfgCtrl.cs b/TestBenchFramework/BenchControl/Elde/ValveEx/ValveCfgCtrl.cs
index 7614e9892..23b89e876 100644
--- a/TestBenchFramework/BenchControl/Elde/ValveEx/ValveCfgCtrl.cs
+++ b/TestBenchFramework/BenchControl/Elde/ValveEx/ValveCfgCtrl.cs
@@ -125,10 +125,10 @@ namespace TBF.BenchControl.Elde.ValveEx
CfgUpdateFlags flags = CfgUpdateFlags.None;
int dummy;
- if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy >= 64)
+ if (!int.TryParse(bitPositionTextBox.Text, out dummy) || dummy < 0 || dummy >= 128)
{
flags |= CfgUpdateFlags.Error;
- message += Environment.NewLine + "'Bit Position' should be between 0 and 63";
+ message += Environment.NewLine + "'Bit Position' should be between 0 and 127";
}
if (!logicalOpComboBox.Items.Contains(logicalOpComboBox.Text))
{
diff --git a/TestBenchFramework/BenchControl/StateMachine.cs b/TestBenchFramework/BenchControl/StateMachine.cs
index 75fdf1f8a..1b9a9659c 100644
--- a/TestBenchFramework/BenchControl/StateMachine.cs
+++ b/TestBenchFramework/BenchControl/StateMachine.cs
@@ -13,6 +13,7 @@ using Config.Entities;
using TBF.BenchControl.Generic;
using TBF.BenchControl.GenericDevices;
using TBF.BenchControl.Sequences;
+using Dirichlet.Numerics;
namespace TBF.BenchControl
{
@@ -217,7 +218,7 @@ namespace TBF.BenchControl
SequenceBase.PumpsWithFM = new List();
SequenceBase.WaterMeters = new List();
SequenceBase.Cameras = new List();
- ulong valvesToInvert = 0;
+ UInt128 valvesToInvert = 0;
foreach (var cmpnt in components)
{
if (cmpnt is Elde.ControlBoardDev) ControlBoard = cmpnt as Elde.ControlBoardDev;
diff --git a/TestBenchFramework/Properties/AssemblyInfo.cs b/TestBenchFramework/Properties/AssemblyInfo.cs
index e9ffac590..d8eaa92e2 100644
--- a/TestBenchFramework/Properties/AssemblyInfo.cs
+++ b/TestBenchFramework/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.12.417.1")]
-[assembly: AssemblyFileVersion("2.12.417.1")]
+[assembly: AssemblyVersion("2.12.419.1")]
+[assembly: AssemblyFileVersion("2.12.419.1")]
diff --git a/TestBenchFramework/Utils.cs b/TestBenchFramework/Utils.cs
index 4618f59dc..27391b3d7 100644
--- a/TestBenchFramework/Utils.cs
+++ b/TestBenchFramework/Utils.cs
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using Config.Entities;
+using Dirichlet.Numerics;
namespace TBF
{
@@ -456,11 +457,11 @@ namespace TBF
else return value.ToString();
}
- public static string ShowRoute(ulong route)
+ public static string ShowRoute(UInt128 route)
{
string str = string.Empty;
int i = 0;
- for (ulong bitmask = 0x8000000000000000; bitmask > 0; bitmask /= 2)
+ for (UInt128 bitmask = ((UInt128)1 << 127); bitmask > 0; bitmask /= 2)
{
str += ((route & bitmask) != 0) ? "1" : "0";
i++;