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)