diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfg.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfg.cs
index c952cb81e..535bed0ae 100644
--- a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfg.cs
+++ b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfg.cs
@@ -32,6 +32,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
public string CommunicationInterfaceBridge; /// Communication Interface: RFID or NFC
public bool EnableShowChanels;
public int IBeginDataFlush;
+ public int SlotNr;
@@ -51,6 +52,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
{
Name = "Genesis";
ParentName = string.Empty;
+ SlotNr = 0;
OptoComPortNr = 10;
RfidComPortNr = 0; /// = use mux. board
MuxBoardNr = 1;
@@ -70,7 +72,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
public string ToString(int i)
{
- return $"{Name} Group1 (mux#)={MuxBoardNr}, Group2={Group}, Opto=Com{OptoComPortNr}, {CommunicationInterfaceBridge}=Com{RfidComPortNr}, EnableShowChanels={EnableShowChanels}, IBeginDataFlush={IBeginDataFlush}";
+ return $"{Name} SlotNr={SlotNr} Group1 (mux#)={MuxBoardNr}, Group2={Group}, Opto=Com{OptoComPortNr}, {CommunicationInterfaceBridge}=Com{RfidComPortNr}, EnableShowChanels={EnableShowChanels}, IBeginDataFlush={IBeginDataFlush}";
}
}
}
\ No newline at end of file
diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.cs
index ca131b255..ecb358ca6 100644
--- a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.cs
+++ b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.cs
@@ -8,7 +8,6 @@ using System.Windows.Forms;
using Common;
using TBF.Resources;
using TBF.Rig.Generic;
-using TBF.Rig.RegisterReaders.GenesisRegReader.implementations;
using TBF.UI.Bench.Components;
@@ -91,6 +90,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
muxBoardNrTextBox.Text = config.MuxBoardNr.ToString();
groupTextBox.Text = config.Group.ToString();
comboBoxCommunicationInterface.SelectedItem = config.CommunicationInterfaceBridge;
+ textBoxSlotNr.Text = config.SlotNr.ToString();
tBBeginDataFlush.Text = config.IBeginDataFlush.ToString();
checkBox_EnableShowChanels.Checked = config.EnableShowChanels;
@@ -110,6 +110,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
muxBoardNrTextBox.Enabled = true;
groupTextBox.Enabled = true;
comboBoxCommunicationInterface.Enabled = true;
+ textBoxSlotNr.Enabled = true;
tBBeginDataFlush.Enabled = true;
checkBox_EnableShowChanels.Enabled = true;
}
@@ -180,6 +181,12 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
message += Environment.NewLine + "Communication Interface is not selected";
}
+ if (!int.TryParse(textBoxSlotNr.Text, out dummy) || dummy < 0 || dummy > 400)
+ {
+ flags |= CfgUpdateFlags.Error;
+ message += Environment.NewLine + string.Format(Strings.Invalid_0, tBBeginDataFlush.Text);
+ }
+
return flags;
}
@@ -210,6 +217,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
config.HeadCommunicationComPortNr = int.Parse(headPortNrTextBox.Text);
config.IBeginDataFlush = int.Parse(tBBeginDataFlush.Text);
config.EnableShowChanels = checkBox_EnableShowChanels.Checked;
+ config.SlotNr = int.Parse(textBoxSlotNr.Text);
return flags;
}
diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.designer.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.designer.cs
index b2ad2805a..9ae5fa75c 100644
--- a/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.designer.cs
+++ b/TBF/Rig/RegisterReaders/GenesisRegReader/GenesisCfgCtrl.designer.cs
@@ -33,6 +33,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
{
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
+ this.label5 = new System.Windows.Forms.Label();
+ this.textBoxSlotNr = new System.Windows.Forms.TextBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.headPortNrTextBox = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
@@ -83,6 +85,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
//
// tabPage1
//
+ this.tabPage1.Controls.Add(this.label5);
+ this.tabPage1.Controls.Add(this.textBoxSlotNr);
this.tabPage1.Controls.Add(this.groupBox2);
this.tabPage1.Controls.Add(this.label4);
this.tabPage1.Controls.Add(this.label3);
@@ -104,6 +108,22 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
this.tabPage1.Text = "Config";
this.tabPage1.UseVisualStyleBackColor = true;
//
+ // label5
+ //
+ this.label5.Location = new System.Drawing.Point(372, 55);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(100, 23);
+ this.label5.TabIndex = 28;
+ this.label5.Text = "Slot Nr:";
+ //
+ // textBoxSlotNr
+ //
+ this.textBoxSlotNr.Enabled = false;
+ this.textBoxSlotNr.Location = new System.Drawing.Point(480, 55);
+ this.textBoxSlotNr.Name = "textBoxSlotNr";
+ this.textBoxSlotNr.Size = new System.Drawing.Size(74, 26);
+ this.textBoxSlotNr.TabIndex = 27;
+ //
// groupBox2
//
this.groupBox2.Controls.Add(this.headPortNrTextBox);
@@ -445,6 +465,9 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader
this.ResumeLayout(false);
}
+ private System.Windows.Forms.TextBox textBoxSlotNr;
+ private System.Windows.Forms.Label label5;
+
private System.Windows.Forms.CheckBox checkBox_EnableShowChanels;
private System.Windows.Forms.Label labelFlush;
diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs
index bbf52cbfc..db5df7650 100644
--- a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs
+++ b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs
@@ -1,12 +1,9 @@
using System;
-using System.IO.Ports;
using Common;
using log4net;
using TBF.Rig.BridgeComponents.GciBridge;
using TBF.Rig.RegisterReaders.GenesisRegReader.implementations;
using TBF.Rig.TestMethods.iPerlCommunication.communication.C4.diagnosticLed;
-using TBF.Rig.TestMethods.iPerlCommunication.communication.Utils;
-using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
@@ -17,9 +14,9 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
private static readonly ILog log = LogManager.GetLogger(typeof(OptoHeadTest));
private GenesisSmartReader genesisHead;
- private SerialDriver serialDriver;
+ //private SerialDriver serialDriver;
- public static SerialDriver BuildConnection(GenesisSmartReader genesidHead)
+ public void BuildConnection(GenesisSmartReader genesidHead)
{
InitSlot(1, genesidHead.RfidComPortNr, genesidHead.RfidComPortNr);
genesidHead?.CommInterfaceBridgeComponent.ConnectExternal();
@@ -104,6 +101,10 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
gciBridge.ConnectExternal();
//gciBridge.GciExternalInterface.InitOneMeterFromExtern(1, GenesisMeter.ConfigSource.ExternStorage, GenesisMeter.PasswordSource.ExternUniStorage, GenesisMeter.PasswordSource.ExternUniStorage);
+
+ if (gciBridge.GciExternalInterface?.IsConnected == null)
+ BuildConnection(genesisHead);
+
gciBridge.DisconnectExternal();
}
@@ -111,17 +112,15 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
- if (serialDriver == null)
- serialDriver = BuildConnection(genesisHead);
- log.Debug("ReadSerialNr called for iHead: " + genesisHead.ToString() + " serialDriver: " + serialDriver);
- RadioService headService = new RadioService(serialDriver);
- string serialNo = headService.ReadRequest_PCB(ref genesisHead);
- if (!string.IsNullOrEmpty(serialNo))
- {
- log.Info($"Success Serial No: {serialNo} on COM{genesisHead.RfidComPortNr} serialDriver: {serialDriver}");
- return true;
- }
+ // log.Debug("ReadSerialNr called for iHead: " + genesisHead.ToString() + " serialDriver: " + serialDriver);
+ // RadioService headService = new RadioService(serialDriver);
+ // string serialNo = headService.ReadRequest_PCB(ref genesisHead);
+ // if (!string.IsNullOrEmpty(serialNo))
+ // {
+ // log.Info($"Success Serial No: {serialNo} on COM{genesisHead.RfidComPortNr} serialDriver: {serialDriver}");
+ // return true;
+ // }
}
}
catch (Exception ex)
@@ -143,14 +142,13 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
{
if (genesisHead != null)
{
- if(genesisHead.RfidComPortNr != 0 && genesisHead. )
-
- if (serialDriver == null)
- serialDriver = BuildConnection(genesisHead);
+ if(genesisHead.RfidComPortNr != 0 && !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
+ BuildConnection(genesisHead);
+
- RadioService headService = new RadioService(serialDriver);
+ RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
string serialNo = headService.ReadRequest_PCB(ref genesisHead);
- log.Info($"PCB Number: {serialNo} on COM{genesisHead.RfidComPortNr} serialDriver: {serialDriver}");
+ log.Info($"PCB Number: {serialNo} on COM{genesisHead.RfidComPortNr} SlotNr: {genesisHead.GetSlotNr} serialDriver: {genesisHead?.CommInterfaceBridgeComponent}");
return serialNo;
}
}
@@ -241,14 +239,21 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
///
private bool SetOptTestMode()
{
+
+ if (genesisHead.DebugLevel == DebugMode.Simulate)
+ {
+ return true;
+ }
+
try
{
if (genesisHead != null)
{
- if (serialDriver == null)
- serialDriver = BuildConnection(genesisHead);
-
- RadioService headService = new RadioService(serialDriver);
+ if(genesisHead.RfidComPortNr != 0 && !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
+ BuildConnection(genesisHead);
+
+
+ RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
bool optTestMode = headService.SetOptTestMode(genesisHead);
if (genesisHead.ConfigStruct != null)
genesisHead.ConfigStruct.OpthoStatusMode = optTestMode ? DiagnosticLedState.State4 : DiagnosticLedState.StatusUnknown;
@@ -259,7 +264,10 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
{
log.Error("SetOptTestMode() - Exception:" + ex.StackTrace);
}
+
return false;
+
+
}
///
@@ -300,10 +308,10 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
{
if (iHead != null)
{
- if (serialDriver == null)
- serialDriver = BuildConnection(iHead);
+ if(genesisHead.RfidComPortNr != 0 && !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
+ BuildConnection(genesisHead);
- RadioService headService = new RadioService(serialDriver);
+ RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
return headService.SetOptActiveMode(iHead);
}
}
@@ -327,11 +335,12 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
{
if (genesisHead != null)
{
- if (serialDriver == null)
- serialDriver = BuildConnection(genesisHead);
+ if (genesisHead.RfidComPortNr != 0 &&
+ !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
+ BuildConnection(genesisHead);
- log.Debug("SetActivityMode_Active called for iHead: " + genesisHead.ToString() + " serialDriver: " + serialDriver);
- RadioService headService = new RadioService(serialDriver);
+ log.Debug("SetActivityMode_Active called for iHead: " + genesisHead.ToString());
+ RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
return headService.SetActivityMode_Active(genesisHead);
}
}
@@ -355,12 +364,13 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
{
if (genesisHead != null)
{
- if (serialDriver == null)
- serialDriver = BuildConnection(genesisHead);
+ if (genesisHead.RfidComPortNr != 0 &&
+ !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
+ BuildConnection(genesisHead);
- log.Debug("SetActivityMode_Idle called for iHead: " + genesisHead.ToString() + " serialDriver: " + serialDriver);
+ log.Debug("SetActivityMode_Idle called for iHead: " + genesisHead.ToString());
- RadioService headService = new RadioService(serialDriver);
+ RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
return headService.SetActivityMode_Idle(genesisHead);
}
}
@@ -399,10 +409,11 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
{
genesisHead.ConfigStruct = new ConfigStruct();
- if (serialDriver == null)
- serialDriver = BuildConnection(genesisHead);
+ if (genesisHead.RfidComPortNr != 0 &&
+ !genesisHead?.CommInterfaceBridgeComponent?.GciExternalInterface?.IsConnected == false)
+ BuildConnection(genesisHead);
- RadioService headService = new RadioService(serialDriver);
+ RadioService headService = new RadioService(genesisHead?.CommInterfaceBridgeComponent);
genesisHead.ConfigStruct.PCBNumberString = headService.ReadRequest_PCB(ref genesisHead);
genesisHead.ConfigStruct.StatusMode = headService.GetActivityStatusMode(genesisHead);
genesisHead.ConfigStruct.Unit = headService.GetUnit(genesisHead);
diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs
index 8d7c647ec..bdc8f894f 100644
--- a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs
+++ b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs
@@ -1,4 +1,5 @@
using log4net;
+using TBF.Rig.BridgeComponents.GciBridge;
using TBF.Rig.RegisterReaders.GenesisRegReader.implementations;
using TBF.Rig.TestMethods.iPerlCommunication.communication.C4.diagnosticLed;
using TBF.Rig.TestMethods.iPerlCommunication.communication.C4.IperlHatProtocol;
@@ -15,47 +16,31 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
static string okResponse = "Command complete, no errors";
static string errorResponse = "Unable to execute";
- private ISerialDriver serialDriver;
- public RadioService(SerialDriver serialDriver)
+ private GciBridge _bridge;
+
+ public RadioService(GciBridge genesisHeadCommInterfaceBridgeComponent)
{
- this.serialDriver = serialDriver;
- log.Debug("RadioService created with serialDriver= " + serialDriver + "");
- }
-
- public RadioService(ISerialDriver serialDriver)
- {
- this.serialDriver = serialDriver;
- log.Debug("RadioService created with serialDriver= " + serialDriver + "");
+ this._bridge = genesisHeadCommInterfaceBridgeComponent;
+ log.Debug("RadioService created with GciBridge= " + genesisHeadCommInterfaceBridgeComponent + "");
}
public string ReadRequest_PCB(ref GenesisSmartReader iHead)
{
- if (!serialDriver.IsOpen())
+ if (_bridge?.GciExternalInterface?.IsConnected == false)
{
- serialDriver.Open();
+ _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
}
- var request = new IperlHatFrameBuilder()
- .RequestResponse(true)
- .AddCommand(ProtocolCommand.ViewFactoryId)
- .BuildBytes();
-
- byte[] rawData = serialDriver.SendAndWait(request, 10000);
- if (rawData == null)
- return null;
-
- // parse rawData
- var parser = new IperlHatFrameParser();
- IperlHatResponse decoded = parser.Parse(rawData);
- if (decoded.IsOk)
+ //Request PCB Number
+ string pcbId = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
+ if (!string.IsNullOrEmpty(pcbId))
{
- string asciiPayload = decoded.GetAsciiPayload();
if (iHead.ConfigStruct != null) // store mechanism
{
- iHead.ConfigStruct.PCBNumberString = asciiPayload;
+ iHead.ConfigStruct.PCBNumberString = pcbId;
}
- return asciiPayload;
+ return pcbId;
}
return null;
@@ -63,56 +48,47 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
public ProtocolStatuses GetActivityStatusMode(GenesisSmartReader iHead)
{
- if (!serialDriver.IsOpen())
- serialDriver.Open();
+ if (_bridge?.GciExternalInterface?.IsConnected == false)
+ {
+ _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
+ }
- var request = new IperlHatFrameBuilder()
- .RequestResponse(true)
- .AddCommand(ProtocolCommand.ViewState)
- .BuildBytes();
- byte[] rawData = serialDriver.SendAndWait(request, 10000);
- if (rawData == null)
- return ProtocolStatuses.Unknown;
-
- var parser = new IperlHatFrameParser();
- IperlHatResponse decoded = parser.Parse(rawData);
-
- if (!decoded.IsOk)
- return ProtocolStatuses.Unknown;
+ //Request Activity Status Mode
+ string pcbId = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
+ if (!string.IsNullOrEmpty(pcbId))
+ {
+ if (iHead.ConfigStruct != null) // store mechanism
+ {
+ iHead.ConfigStruct.PCBNumberString = pcbId;
+ }
+ return ProtocolStatuses.Active;
+ }
- ProtocolStatuses statusMode = decoded.GetResponse(out bool isOK);
-
- if (!isOK)
- return ProtocolStatuses.Unknown; // wrong payload
-
- return statusMode;
+ return ProtocolStatuses.Unknown;
}
public DiagnosticLedState SetOptoStatusMode(GenesisSmartReader iHead, DiagnosticLedState opthoStatusMode)
{
- if (!serialDriver.IsOpen())
- serialDriver.Open();
+ if (_bridge?.GciExternalInterface?.IsConnected == false)
+ {
+ _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
+ }
- var request = new IperlHatFrameBuilder()
- .RequestResponse(true)
- .AddDeviceCommand(ProtocolDeviceSubCommand.SetDiagnosticLEDState)
- .AddPayload(opthoStatusMode)
- .BuildBytes();
+ //SetDiagnosticLEDState
- byte[] rawData = serialDriver.SendAndWait(request, 10000);
- if (rawData == null)
- return DiagnosticLedState.StatusUnknown;
-
- var parser = new IperlHatFrameParser();
- IperlHatResponse decoded = parser.Parse(rawData);
-
- log.Debug("SetOptoStatusMode isOK: " + decoded.IsOk);
- // if is response ok - it set it correctly
- if (!decoded.IsOk)
- return DiagnosticLedState.StatusUnknown;
-
- return opthoStatusMode;
+ string pcbId = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
+ if (!string.IsNullOrEmpty(pcbId))
+ {
+ if (iHead.ConfigStruct != null) // store mechanism
+ {
+ iHead.ConfigStruct.PCBNumberString = pcbId;
+ }
+ return DiagnosticLedState.State1;
+ }
+
+ return DiagnosticLedState.StatusUnknown;
+
}
@@ -127,124 +103,86 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
public string GetVersion(GenesisSmartReader iHead)
{
- if (!serialDriver.IsOpen())
+ if (_bridge?.GciExternalInterface?.IsConnected == false)
{
- serialDriver.Open();
+ _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
}
- byte[] request = new IperlHatFrameBuilder()
- .RequestResponse(true)
- .AddCommand(ProtocolCommand.Question)
- .AddPayload(IperlHatProtocolConstants.Version)
- .BuildBytes();
-
-
- byte[] rawData = serialDriver.SendAndWait(request, 10000);
- if (rawData == null)
- return "";
-
- // parse rawData
- var parser = new IperlHatFrameParser();
- IperlHatResponse decoded = parser.Parse(rawData);
- log.Debug("GetVersion isOK: " + decoded.IsOk);
- if (decoded.IsOk)
+ string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
+ if (!string.IsNullOrEmpty(version))
{
- return decoded.GetAsciiPayload();
+ if (iHead.ConfigStruct != null) // store mechanism
+ {
+ iHead.ConfigStruct.Version = version;
+ }
+ return version;
}
- return "";
+ return string.Empty;
}
public bool SetActivityMode_Active(GenesisSmartReader iHead)
{
- if (!serialDriver.IsOpen())
+ if (_bridge?.GciExternalInterface?.IsConnected == false)
{
- serialDriver.Open();
+ _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
}
//Set LED to state 4
- byte[] request = new IperlHatFrameBuilder()
- .RequestResponse(true)
- .AddCommand(ProtocolCommand.SetState)
- .AddSubCommand(ProtocolStatuses.Active) // Active
- .BuildBytes();
-
- byte[] rawData = serialDriver.SendAndWait(request, 5000);
- if (rawData == null)
- return false;
-
-
- // parse rawData
- var parser = new IperlHatFrameParser();
- IperlHatResponse decoded = parser.Parse(rawData);
- log.Debug("SetActivityMode_Active isOK: " + decoded.IsOk);
- if (decoded.IsOk && iHead.ConfigStruct != null)
+ string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
+ if (!string.IsNullOrEmpty(version))
{
- iHead.ConfigStruct.StatusMode = ProtocolStatuses.Active;
+ if (iHead.ConfigStruct != null) // store mechanism
+ {
+ iHead.ConfigStruct.Version = version;
+ }
+ return true;
}
- return decoded.IsOk;
+
+ return false;
}
public bool SetActivityMode_Idle(GenesisSmartReader iHead)
{
- if (!serialDriver.IsOpen())
+ if (_bridge?.GciExternalInterface?.IsConnected == false)
{
- serialDriver.Open();
+ _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
}
//Set Activity State Idle
- byte[] request = new IperlHatFrameBuilder()
- .RequestResponse(true)
- .AddCommand(ProtocolCommand.SetState)
- .AddSubCommand(ProtocolStatuses.Idle)
- .BuildBytes();
-
- byte[] rawData = serialDriver.SendAndWait(request, 5000);
- if (rawData == null)
- return false;
-
-
- // parse rawData
- var parser = new IperlHatFrameParser();
- IperlHatResponse decoded = parser.Parse(rawData);
- log.Debug("SetActivityMode_Idle isOK: " + decoded.IsOk);
- if (decoded.IsOk && iHead.ConfigStruct != null)
+ string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
+ if (!string.IsNullOrEmpty(version))
{
- iHead.ConfigStruct.StatusMode = ProtocolStatuses.Idle;
+ if (iHead.ConfigStruct != null) // store mechanism
+ {
+ iHead.ConfigStruct.Version = version;
+ }
+ return true;
}
- return decoded.IsOk;
+
+ return false;
}
public bool SetOptTestMode(GenesisSmartReader iHead)
{
- if (!serialDriver.IsOpen())
+ if (_bridge?.GciExternalInterface?.IsConnected == false)
{
- serialDriver.Open();
+ _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
}
//Set LED to state 4
- var request = new IperlHatFrameBuilder()
- .RequestResponse(true)
- .AddDeviceCommand(ProtocolDeviceSubCommand.SetDiagnosticLEDState)
- .AddPayload(DiagnosticLedState.State4)
- .BuildBytes();
-
- byte[] rawData = serialDriver.SendAndWait(request, 5000);
- if (rawData == null)
- return false;
-
-
- // parse rawData
- var parser = new IperlHatFrameParser();
- IperlHatResponse decoded = parser.Parse(rawData);
- bool isOk = decoded.IsOk;
- log.Debug("SetOptTestMode isOK: " + isOk);
- if (decoded.IsOk && iHead.ConfigStruct != null)
+ string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
+ if (!string.IsNullOrEmpty(version))
{
- iHead.ConfigStruct.OpthoStatusMode = DiagnosticLedState.State4;
+ if (iHead.ConfigStruct != null) // store mechanism
+ {
+ iHead.ConfigStruct.Version = version;
+ }
+ return true;
}
- return isOk;
+
+ return false;
}
@@ -255,65 +193,43 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication
///
public bool SetOptActiveMode(GenesisSmartReader iHead)
{
- if (!serialDriver.IsOpen())
+ if (_bridge?.GciExternalInterface?.IsConnected == false)
{
- serialDriver.Open();
+ _bridge?.GciExternalInterface?.ConnectOneMeter(iHead.GetSlotNr);
}
//Set LED to state 1
- var request = new IperlHatFrameBuilder()
- .RequestResponse(true)
- .AddDeviceCommand(ProtocolDeviceSubCommand.SetDiagnosticLEDState)
- .AddPayload(DiagnosticLedState.StateOFF)
- .BuildBytes();
-
- byte[] rawData = serialDriver.SendAndWait(request, 5000);
- if (rawData == null)
- return false;
-
-
- // parse rawData
- var parser = new IperlHatFrameParser();
- IperlHatResponse decoded = parser.Parse(rawData);
- log.Debug("SetOptActiveMode isOK: " + decoded.IsOk);
- if (decoded.IsOk && iHead.ConfigStruct != null)
+ string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr);
+ if (!string.IsNullOrEmpty(version))
{
- iHead.ConfigStruct.OpthoStatusMode = DiagnosticLedState.StateOFF;
+ if (iHead.ConfigStruct != null) // store mechanism
+ {
+ iHead.ConfigStruct.Version = version;
+ }
+ return true;
}
- return decoded.IsOk;
+
+ return false;
}
public string GetUnit(GenesisSmartReader iperlHead)
{
- if (!serialDriver.IsOpen())
+ if (_bridge?.GciExternalInterface?.IsConnected == false)
{
- serialDriver.Open();
+ _bridge?.GciExternalInterface?.ConnectOneMeter(iperlHead.GetSlotNr);
}
- var request = new IperlHatFrameBuilder()
- .RequestResponse(true)
- .AddCommand(ProtocolCommand.ViewFactoryId)
- .BuildBytes();
-
-
- byte[] rawData = serialDriver.SendAndWait(request, 10000);
- if (rawData == null)
- return null;
-
- // parse rawData
- var parser = new IperlHatFrameParser();
- IperlHatResponse decoded = parser.Parse(rawData);
- if (decoded.IsOk)
+ string version = _bridge?.GciExternalInterface?.GetPcbId(iperlHead.GetSlotNr);
+ if (!string.IsNullOrEmpty(version))
{
- string asciiPayload = decoded.GetAsciiPayload();
if (iperlHead.ConfigStruct != null) // store mechanism
{
- iperlHead.ConfigStruct.Unit = asciiPayload;
+ iperlHead.ConfigStruct.Version = version;
}
- return asciiPayload;
+ return version;
}
- return null;
+ return string.Empty;
}
}
}
\ No newline at end of file
diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs
index 494cc718e..2c64e5abb 100644
--- a/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs
+++ b/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReader.cs
@@ -135,7 +135,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations
{
get
{
- return CommInterfaceBridge.GetComponent(null) as TBF.Rig.BridgeComponents.GciBridge.GciBridge;
+ return CommInterfaceBridge.DummyComponent() as TBF.Rig.BridgeComponents.GciBridge.GciBridge;
}
}
@@ -3960,6 +3960,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations
public double Q3Calib_Ch1Value { get => q3CalibCh[0]; }
public double Q3Calib_Ch2Value { get => q3CalibCh[1]; }
public double Q3Calib_Ch3Value { get => q3CalibCh[2]; }
+
+ public int GetSlotNr { get => genesisHeadCfg?.SlotNr ?? -1; }
void SetQ3Calibration(double[] q3CalibInitial) { this.q3CalibInitial = q3CalibInitial; }
diff --git a/TBFTests/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReaderChannelAveragingTests.cs b/TBFTests/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReaderChannelAveragingTests.cs
index 50e86ba40..6ae95fde3 100644
--- a/TBFTests/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReaderChannelAveragingTests.cs
+++ b/TBFTests/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisSmartReaderChannelAveragingTests.cs
@@ -79,7 +79,7 @@ namespace TBFTests.Rig.RegisterReaders.GenesisRegReader.implementations
cfg.RfidComPortNr = 8;
cfg.MuxBoardNr = 1;
cfg.Group = 1;
- cfg.CommunicationInterface = CommunicationInterface.RFID;
+ cfg.CommunicationInterfaceBridge = string.Empty;
if (cfg.ProcParams != null)
{