diff --git a/Common/Hardware/WaterMeter/Genesis/Applications/ApplicationDefinition.cs b/Common/Hardware/WaterMeter/Genesis/Applications/ApplicationDefinition.cs
index 45a0cb3f..133642fd 100644
--- a/Common/Hardware/WaterMeter/Genesis/Applications/ApplicationDefinition.cs
+++ b/Common/Hardware/WaterMeter/Genesis/Applications/ApplicationDefinition.cs
@@ -18,6 +18,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Applications
///
/// address of application
///
+ ///
+ /// - AppId from Byte to UInt16 including typecast for Byte[] return. To external, it will be used as Byte
+ /// as before this change. But being able to parse the configuration.json with OPTICALINTERFACE using the
+ /// AppId 256, which exceeds the byte range as this isn't a real application, but will be used to identify
+ /// the interface (configuration.json) version.
+ ///
public UInt16 AppId;
///
diff --git a/Common/Hardware/WaterMeter/Genesis/Applications/MeterApplications.cs b/Common/Hardware/WaterMeter/Genesis/Applications/MeterApplications.cs
index 9f6be748..ac87a28b 100644
--- a/Common/Hardware/WaterMeter/Genesis/Applications/MeterApplications.cs
+++ b/Common/Hardware/WaterMeter/Genesis/Applications/MeterApplications.cs
@@ -17,6 +17,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Applications
///
/// Identification number of application
///
+ ///
+ /// - AppId from Byte to UInt16 including typecast for Byte[] return. To external, it will be used as Byte
+ /// as before this change. But being able to parse the configuration.json with OPTICALINTERFACE using the
+ /// AppId 256, which exceeds the byte range as this isn't a real application, but will be used to identify
+ /// the interface (configuration.json) version.
+ ///
public UInt16 AppId;
///
@@ -25,10 +31,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Applications
public UInt32 Version;
///
- /// Version string of application because of FLEXNETVERSION
- /// does return a different layout, instead of decimals it
- /// used hexadecimals. Therefore the version has to be saved as
- /// string at time of receiving for the FW-Update comparison
+ /// Version string of application because of FLEXNETVERSION does return a different layout, instead of decimals
+ /// it uses hexadecimals. Therefore, the version has to be saved as string at time of receiving for the FW-Update
+ /// comparison.
///
public String StrVersion;
diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs
index 1ebbb8f7..a281bc7c 100644
--- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs
+++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs
@@ -1630,6 +1630,10 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
///
///
/// - Extract interface version (configuration.json) from "OPTICALINTERFACE".
+ /// - AppId from Byte to UInt16 including typecast for Byte on WriteRegister. To external, it will be used as Byte
+ /// as before this change. But being able to parse the configuration.json with OPTICALINTERFACE using the
+ /// AppId 256, which exceeds the byte range as this isn't a real application, but will be used to identify
+ /// the interface (configuration.json) version.
///
protected virtual void ReadMeterFirmwareAndAssignRegisters()
{
@@ -1660,7 +1664,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
var isInstalled = false;
var installationStatus = MeterAppState.MeterAppNotInstalled;
var versionString = "";
- if (WriteRegister(Register.System.CheckFwPresence, meterApp.AppId))
+ if (WriteRegister(Register.System.CheckFwPresence, (Byte)meterApp.AppId))
{
//read version, skip retries on SYSTEM 0x04-> FW nor present is a valid feedback
var readFwVersionBytes = ReadRegister(Register.System.CheckFwPresence, 4);
diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterDefinition.cs b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterDefinition.cs
index adc18c00..bbf42f03 100644
--- a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterDefinition.cs
+++ b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterDefinition.cs
@@ -20,6 +20,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers
///
/// address of application which is the base address for the register
///
+ ///
+ /// - AppAddress from Byte to UInt16 including typecast for Byte[] return. To external, it will be used as Byte
+ /// as before this change. But being able to parse the configuration.json with OPTICALINTERFACE using the
+ /// AppAddress 256, which exceeds the byte range as this isn't a real application, but will be used to identify
+ /// the interface (configuration.json) version.
+ ///
public UInt16 AppAddress;
///
@@ -57,6 +63,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers
///
/// address combined of application and register in this application
///
+ ///
+ /// - AppAddress from Byte to UInt16 including typecast for Byte[] return. To external, it will be used as Byte
+ /// as before this change. But being able to parse the configuration.json with OPTICALINTERFACE using the
+ /// AppAddress 256, which exceeds the byte range as this isn't a real application, but will be used to identify
+ /// the interface (configuration.json) version.
+ ///
public Byte[] RegisterAddress
{
get { return new[] { (Byte)AppAddress, RegAddressInApp }; }
diff --git a/Common/Ui/GenesisToolBox/FrmFwUpdate.cs b/Common/Ui/GenesisToolBox/FrmFwUpdate.cs
index 5714ed4f..b78f529c 100644
--- a/Common/Ui/GenesisToolBox/FrmFwUpdate.cs
+++ b/Common/Ui/GenesisToolBox/FrmFwUpdate.cs
@@ -224,7 +224,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
_dataTable.Columns.Add(StrStatus, typeof(String));
var version = Assembly.GetExecutingAssembly().GetName().Version;
- lblFwUpdateInfo.Text = $@"Version: {version.Major}.{version.Minor}.{version.Build}";
+ lblFwUpdateInfo.Text = $@"GTB Version: {version.Major}.{version.Minor}.{version.Build}";
_resetTimeMeasurement = true;
Init();
}
diff --git a/Common/Ui/GenesisToolBox/FrmLowLevelTools.cs b/Common/Ui/GenesisToolBox/FrmLowLevelTools.cs
index cb096f43..83e87ecd 100644
--- a/Common/Ui/GenesisToolBox/FrmLowLevelTools.cs
+++ b/Common/Ui/GenesisToolBox/FrmLowLevelTools.cs
@@ -109,7 +109,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
private void FrmLowLevelTools_Load(Object sender, EventArgs e)
{
var version = Assembly.GetExecutingAssembly().GetName().Version;
- lblFwUpdateInfo.Text = $@"Version: {version.Major}.{version.Minor}.{version.Build}";
+ lblFwUpdateInfo.Text = $@"GTB Version: {version.Major}.{version.Minor}.{version.Build}";
_resetTimeMeasurement = true;
Init();
diff --git a/Common/Ui/GenesisToolBox/FrmLutUpdate.cs b/Common/Ui/GenesisToolBox/FrmLutUpdate.cs
index 35dd712e..13c8c0a7 100644
--- a/Common/Ui/GenesisToolBox/FrmLutUpdate.cs
+++ b/Common/Ui/GenesisToolBox/FrmLutUpdate.cs
@@ -104,7 +104,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
private void FrmLutUpdate_Load(Object sender, EventArgs e)
{
var version = Assembly.GetExecutingAssembly().GetName().Version;
- lblFwUpdateInfo.Text = $@"Version: {version.Major}.{version.Minor}.{version.Build}";
+ lblFwUpdateInfo.Text = $@"GTB Version: {version.Major}.{version.Minor}.{version.Build}";
_resetTimeMeasurement = true;
Init();
@@ -219,7 +219,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
if (!_currentGenesis.IsLoggedOn)
{
- //this is needed from meter as an unsuccessfully login requires a delay for the next trial
+ //this is needed from meter as an unsuccessful login requires a delay for the next trial
Thread.Sleep(2000);
_meterBatch.MetersLogin();
}
@@ -246,7 +246,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
if (_currentGenesis.RadioFrequencyMhz != null)
{
tbxRadio.Text = $@"{_currentGenesis.RadioFrequencyMhz}";
- LogText($"Meter radio frequency [MHz]: {_currentGenesis.RadioFrequencyMhz}");
+ LogText($"Meter Radio Frequency [MHz]: {_currentGenesis.RadioFrequencyMhz}");
}
LogText("Configuration.json Version: " + _currentGenesis.InterfaceVersion);
@@ -799,7 +799,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
if (cbxDbLuts.SelectedItem is CordonelMetrologyLut lut)
{
lblLutFileLoadedInfo.Text = "";
- tbxLutFilePathName.Text = $"fromDB{lut.FileName}";
+ tbxLutFilePathName.Text = $@"fromDB{lut.FileName}";
if (_meterLutUpdate == null)
{
_meterLutUpdate = new MeterLutUpdate(_currentGenesis);
diff --git a/Common/Ui/GenesisToolBox/frmRegisterStore.Designer.cs b/Common/Ui/GenesisToolBox/frmRegisterStore.Designer.cs
index d04b002e..0045414b 100644
--- a/Common/Ui/GenesisToolBox/frmRegisterStore.Designer.cs
+++ b/Common/Ui/GenesisToolBox/frmRegisterStore.Designer.cs
@@ -54,6 +54,8 @@
this.btnRadioPressure = new System.Windows.Forms.Button();
this.nundCalResultID = new System.Windows.Forms.NumericUpDown();
this.btnFingerWeg = new System.Windows.Forms.Button();
+ this.lblGtbVersion = new System.Windows.Forms.Label();
+ this.lblConfigVersion = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.registerGridView)).BeginInit();
this.pnlBussy.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nundCalResultID)).BeginInit();
@@ -62,27 +64,27 @@
// cbComSlot
//
this.cbComSlot.FormattingEnabled = true;
- this.cbComSlot.Location = new System.Drawing.Point(79, 12);
+ this.cbComSlot.Location = new System.Drawing.Point(41, 56);
this.cbComSlot.Name = "cbComSlot";
- this.cbComSlot.Size = new System.Drawing.Size(104, 21);
+ this.cbComSlot.Size = new System.Drawing.Size(58, 21);
this.cbComSlot.TabIndex = 0;
this.cbComSlot.Text = "1";
//
// label1
//
this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(8, 21);
+ this.label1.Location = new System.Drawing.Point(10, 59);
this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(25, 13);
+ this.label1.Size = new System.Drawing.Size(28, 13);
this.label1.TabIndex = 1;
- this.label1.Text = "Slot";
+ this.label1.Text = "Slot:";
this.label1.Click += new System.EventHandler(this.label1_Click);
//
// btnRead
//
- this.btnRead.Location = new System.Drawing.Point(189, 48);
+ this.btnRead.Location = new System.Drawing.Point(10, 123);
this.btnRead.Name = "btnRead";
- this.btnRead.Size = new System.Drawing.Size(185, 30);
+ this.btnRead.Size = new System.Drawing.Size(175, 30);
this.btnRead.TabIndex = 2;
this.btnRead.Text = "Read Meter";
this.btnRead.UseVisualStyleBackColor = true;
@@ -105,9 +107,9 @@
//
// btnConnect
//
- this.btnConnect.Location = new System.Drawing.Point(189, 12);
+ this.btnConnect.Location = new System.Drawing.Point(105, 50);
this.btnConnect.Name = "btnConnect";
- this.btnConnect.Size = new System.Drawing.Size(85, 30);
+ this.btnConnect.Size = new System.Drawing.Size(80, 30);
this.btnConnect.TabIndex = 4;
this.btnConnect.Text = "Connect";
this.btnConnect.UseVisualStyleBackColor = true;
@@ -116,7 +118,7 @@
// lblState
//
this.lblState.AutoSize = true;
- this.lblState.Location = new System.Drawing.Point(5, 55);
+ this.lblState.Location = new System.Drawing.Point(10, 94);
this.lblState.Name = "lblState";
this.lblState.Size = new System.Drawing.Size(78, 13);
this.lblState.TabIndex = 5;
@@ -129,9 +131,9 @@
//
// btnGetPCbID
//
- this.btnGetPCbID.Location = new System.Drawing.Point(280, 12);
+ this.btnGetPCbID.Location = new System.Drawing.Point(309, 50);
this.btnGetPCbID.Name = "btnGetPCbID";
- this.btnGetPCbID.Size = new System.Drawing.Size(94, 30);
+ this.btnGetPCbID.Size = new System.Drawing.Size(80, 30);
this.btnGetPCbID.TabIndex = 11;
this.btnGetPCbID.Text = "Get PCB ID";
this.btnGetPCbID.UseVisualStyleBackColor = true;
@@ -198,9 +200,9 @@
//
// btnReadFwVersions
//
- this.btnReadFwVersions.Location = new System.Drawing.Point(380, 12);
+ this.btnReadFwVersions.Location = new System.Drawing.Point(400, 50);
this.btnReadFwVersions.Name = "btnReadFwVersions";
- this.btnReadFwVersions.Size = new System.Drawing.Size(114, 30);
+ this.btnReadFwVersions.Size = new System.Drawing.Size(110, 30);
this.btnReadFwVersions.TabIndex = 52;
this.btnReadFwVersions.Text = "Read FW Versions";
this.btnReadFwVersions.UseVisualStyleBackColor = true;
@@ -208,19 +210,20 @@
//
// btn_CalibrationRestore
//
- this.btn_CalibrationRestore.Location = new System.Drawing.Point(516, 12);
+ this.btn_CalibrationRestore.Location = new System.Drawing.Point(516, 50);
this.btn_CalibrationRestore.Name = "btn_CalibrationRestore";
- this.btn_CalibrationRestore.Size = new System.Drawing.Size(114, 30);
+ this.btn_CalibrationRestore.Size = new System.Drawing.Size(110, 30);
this.btn_CalibrationRestore.TabIndex = 58;
this.btn_CalibrationRestore.Text = "CalibrationRestore";
this.btn_CalibrationRestore.UseVisualStyleBackColor = true;
+ this.btn_CalibrationRestore.Visible = false;
this.btn_CalibrationRestore.Click += new System.EventHandler(this.btn_CalibrationRestore_Click);
//
// button1
//
- this.button1.Location = new System.Drawing.Point(380, 48);
+ this.button1.Location = new System.Drawing.Point(400, 85);
this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(114, 30);
+ this.button1.Size = new System.Drawing.Size(110, 30);
this.button1.TabIndex = 60;
this.button1.Text = "Battery Idle";
this.button1.UseVisualStyleBackColor = true;
@@ -228,9 +231,9 @@
//
// button2
//
- this.button2.Location = new System.Drawing.Point(516, 80);
+ this.button2.Location = new System.Drawing.Point(516, 120);
this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(114, 30);
+ this.button2.Size = new System.Drawing.Size(110, 30);
this.button2.TabIndex = 61;
this.button2.Text = "Set default Pulse";
this.button2.UseVisualStyleBackColor = true;
@@ -238,7 +241,7 @@
//
// btnStoreAll
//
- this.btnStoreAll.Location = new System.Drawing.Point(635, 12);
+ this.btnStoreAll.Location = new System.Drawing.Point(251, 52);
this.btnStoreAll.Name = "btnStoreAll";
this.btnStoreAll.Size = new System.Drawing.Size(52, 55);
this.btnStoreAll.TabIndex = 62;
@@ -248,9 +251,9 @@
//
// button3
//
- this.button3.Location = new System.Drawing.Point(34, 80);
+ this.button3.Location = new System.Drawing.Point(309, 120);
this.button3.Name = "button3";
- this.button3.Size = new System.Drawing.Size(85, 30);
+ this.button3.Size = new System.Drawing.Size(80, 30);
this.button3.TabIndex = 63;
this.button3.Text = "applist to db";
this.button3.UseVisualStyleBackColor = true;
@@ -263,9 +266,9 @@
//
// btnBatLife
//
- this.btnBatLife.Location = new System.Drawing.Point(516, 116);
+ this.btnBatLife.Location = new System.Drawing.Point(309, 85);
this.btnBatLife.Name = "btnBatLife";
- this.btnBatLife.Size = new System.Drawing.Size(114, 30);
+ this.btnBatLife.Size = new System.Drawing.Size(80, 30);
this.btnBatLife.TabIndex = 71;
this.btnBatLife.Text = "Lifetime";
this.btnBatLife.UseVisualStyleBackColor = true;
@@ -273,9 +276,9 @@
//
// btnRadioPressure
//
- this.btnRadioPressure.Location = new System.Drawing.Point(34, 116);
+ this.btnRadioPressure.Location = new System.Drawing.Point(400, 120);
this.btnRadioPressure.Name = "btnRadioPressure";
- this.btnRadioPressure.Size = new System.Drawing.Size(113, 23);
+ this.btnRadioPressure.Size = new System.Drawing.Size(110, 30);
this.btnRadioPressure.TabIndex = 72;
this.btnRadioPressure.Text = "Activate Radio";
this.btnRadioPressure.UseVisualStyleBackColor = true;
@@ -283,7 +286,7 @@
//
// nundCalResultID
//
- this.nundCalResultID.Location = new System.Drawing.Point(516, 47);
+ this.nundCalResultID.Location = new System.Drawing.Point(518, 82);
this.nundCalResultID.Maximum = new decimal(new int[] {
999999,
0,
@@ -292,22 +295,43 @@
this.nundCalResultID.Name = "nundCalResultID";
this.nundCalResultID.Size = new System.Drawing.Size(114, 20);
this.nundCalResultID.TabIndex = 73;
+ this.nundCalResultID.Visible = false;
//
// btnFingerWeg
//
- this.btnFingerWeg.Location = new System.Drawing.Point(635, 80);
+ this.btnFingerWeg.Location = new System.Drawing.Point(638, 52);
this.btnFingerWeg.Name = "btnFingerWeg";
- this.btnFingerWeg.Size = new System.Drawing.Size(52, 66);
+ this.btnFingerWeg.Size = new System.Drawing.Size(62, 98);
this.btnFingerWeg.TabIndex = 74;
- this.btnFingerWeg.Text = "Finger weg!";
+ this.btnFingerWeg.Text = "Do NOT touch! Recalib!";
this.btnFingerWeg.UseVisualStyleBackColor = true;
this.btnFingerWeg.Click += new System.EventHandler(this.FingerWeg_Clicked);
//
+ // lblGtbVersion
+ //
+ this.lblGtbVersion.AutoSize = true;
+ this.lblGtbVersion.Location = new System.Drawing.Point(10, 10);
+ this.lblGtbVersion.Name = "lblGtbVersion";
+ this.lblGtbVersion.Size = new System.Drawing.Size(79, 13);
+ this.lblGtbVersion.TabIndex = 75;
+ this.lblGtbVersion.Text = "GTB Version: ?";
+ //
+ // lblConfigVersion
+ //
+ this.lblConfigVersion.AutoSize = true;
+ this.lblConfigVersion.Location = new System.Drawing.Point(10, 31);
+ this.lblConfigVersion.Name = "lblConfigVersion";
+ this.lblConfigVersion.Size = new System.Drawing.Size(119, 13);
+ this.lblConfigVersion.TabIndex = 76;
+ this.lblConfigVersion.Text = "Configuration Version: ?";
+ //
// FrmRegisterStore
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(704, 553);
+ this.Controls.Add(this.lblConfigVersion);
+ this.Controls.Add(this.lblGtbVersion);
this.Controls.Add(this.btnFingerWeg);
this.Controls.Add(this.nundCalResultID);
this.Controls.Add(this.btnRadioPressure);
@@ -365,5 +389,7 @@
private System.Windows.Forms.Button btnRadioPressure;
private System.Windows.Forms.NumericUpDown nundCalResultID;
private System.Windows.Forms.Button btnFingerWeg;
+ private System.Windows.Forms.Label lblGtbVersion;
+ private System.Windows.Forms.Label lblConfigVersion;
}
}
\ No newline at end of file
diff --git a/Common/Ui/GenesisToolBox/frmRegisterStore.cs b/Common/Ui/GenesisToolBox/frmRegisterStore.cs
index c3a9c79b..26cc9bc1 100644
--- a/Common/Ui/GenesisToolBox/frmRegisterStore.cs
+++ b/Common/Ui/GenesisToolBox/frmRegisterStore.cs
@@ -186,6 +186,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
{
lblState.ForeColor = Color.Green;
lblState.Text = $"Connected to PCB {_currentPcbId}";
+ lblConfigVersion.Text = @"Configuration Version: " + _currentGenesis.InterfaceVersion;
_dataTable.Rows.Clear();
@@ -437,6 +438,9 @@ namespace Xylem.Common.Ui.GenesisToolBox
//{
// cbPreselection.Items.Add(info.Name);
//}
+ var version = Assembly.GetExecutingAssembly().GetName().Version;
+ lblGtbVersion.Text = $@"GTB Version: {version.Major}.{version.Minor}.{version.Build}";
+
}
private void frmRegisterStore_FormClosing(Object sender, FormClosingEventArgs e)