From 8cc64f9a8c0a7897d714fec3009a81094bb373a2 Mon Sep 17 00:00:00 2001 From: Thomas Wiedebusch Date: Wed, 24 Apr 2024 15:16:49 +0200 Subject: [PATCH] CUST: - FwUpdateSw: - communication problems at app detection --- .../Properties/Resources.Designer.cs | 4 +- .../GenesisCore/Properties/Resources.de.resx | 4 +- .../GenesisCore/Properties/Resources.resx | 4 +- .../Genesis/GenesisFile/MeterFwUpdate.cs | 33 +++------ ...erRegisters.csproj.CoreCompileInputs.cache | 2 +- .../ServiceFwUpdate.sln.DotSettings.user | 8 +- .../Properties/Resources.Designer.cs | 9 +++ .../Properties/Resources.resx | 3 + .../ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs | 73 +++++++++++-------- .../Properties/Resources.de.resx | 5 +- .../ServiceFwUpdateSw.csproj | 15 ++-- 11 files changed, 94 insertions(+), 66 deletions(-) diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.Designer.cs b/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.Designer.cs index 3a01c5dd..a824b71b 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.Designer.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.Designer.cs @@ -124,7 +124,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.Properties { } /// - /// Looks up a localized string similar to Reading registers after update. + /// Looks up a localized string similar to Reading registers after maintenance. /// internal static string StrReadRegistersAfterUpdate { get { @@ -133,7 +133,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.Properties { } /// - /// Looks up a localized string similar to Reading registers before update. + /// Looks up a localized string similar to Reading registers before maintenance. /// internal static string StrReadRegistersBeforeUpdate { get { diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.de.resx b/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.de.resx index d2e7d786..7e6add5e 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.de.resx +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.de.resx @@ -148,10 +148,10 @@ Schreibe Register - Lese Register vor dem Firmware Update + Lese Register vor der Wartung - Lese Register nach dem Firmware Update + Lese Register nach der Wartung Ausführung Konfigurationswiederherstellungssequenz.... diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.resx b/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.resx index a9d942ba..aecdd20e 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.resx +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/Properties/Resources.resx @@ -139,10 +139,10 @@ Scan port - Reading registers after update + Reading registers after maintenance - Reading registers before update + Reading registers before maintenance Compare register diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterFwUpdate.cs b/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterFwUpdate.cs index 2a764004..a289b197 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterFwUpdate.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterFwUpdate.cs @@ -359,28 +359,19 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile { CompareMeterAppWithFileApp(meterApp); } - if (!_genesisMeter.IsLoggedOn) - { - _genesisMeter.ReLogin(); - //set display code to up to date if not needed to be installed or up to date - _genesisMeter.SetProcessState(_genesisMeter.MeterAppListVersion.All( - f => f.Status == MeterAppState.MeterAppUpToDate || - f.Status == MeterAppState.MeterAppNotRequired ) - ? DisplayCodes.FwUpToDate - : DisplayCodes.FwUpdateFailed, false); - _genesisMeter.Logout(); - } - else - { - //set display code to up to date if not needed to be installed or up to date - _genesisMeter.SetProcessState(_genesisMeter.MeterAppListVersion.All( - f => f.Status == MeterAppState.MeterAppUpToDate || - f.Status == MeterAppState.MeterAppNotRequired ) - ? DisplayCodes.FwUpToDate - : DisplayCodes.FwUpdateFailed, false); - } - + //remind the login status to logout if not logged in here + var wasLoggedOn = _genesisMeter.IsLoggedOn; + + _genesisMeter.ReLogin(); + //set display code to up to date if not needed to be installed or up to date + _genesisMeter.SetProcessState(_genesisMeter.MeterAppListVersion.All( + f => f.Status == MeterAppState.MeterAppUpToDate || + f.Status == MeterAppState.MeterAppNotRequired) + ? DisplayCodes.FwUpToDate + : DisplayCodes.FwUpdateFailed, false); + + if (!wasLoggedOn) _genesisMeter.Logout(); } /// diff --git a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache index 8d4994b0..82bc2c16 100644 --- a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache +++ b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -8fbe991b217e7692af4817ad205b768685aa5a72 +bf6bb8fceb3db5a9977dadc407cf576684bf7127 diff --git a/ServiceFwUpdate/ServiceFwUpdate.sln.DotSettings.user b/ServiceFwUpdate/ServiceFwUpdate.sln.DotSettings.user index bbe11f2e..fba0b808 100644 --- a/ServiceFwUpdate/ServiceFwUpdate.sln.DotSettings.user +++ b/ServiceFwUpdate/ServiceFwUpdate.sln.DotSettings.user @@ -4,4 +4,10 @@ <Assembly Path="D:\Projekte\SENSUS_tfs_workspaces\WorkBenchV2\Main\ServiceFwUpdate\packages\NLog.4.7.8\lib\net45\NLog.dll" /> </AssemblyExplorer> NewVersion - True \ No newline at end of file + True + + + + True + True + True \ No newline at end of file diff --git a/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.Designer.cs b/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.Designer.cs index 10d96542..2d8bbe4b 100644 --- a/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.Designer.cs +++ b/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.Designer.cs @@ -529,6 +529,15 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw.Properties { } } + /// + /// Looks up a localized string similar to ERROR: Firmware update failed!. + /// + internal static string StrFwUpdateFailed { + get { + return ResourceManager.GetString("StrFwUpdateFailed", resourceCulture); + } + } + /// /// Looks up a localized string similar to Firmware is up to date!. /// diff --git a/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.resx b/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.resx index 1927ac9f..605ba6ae 100644 --- a/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.resx +++ b/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.resx @@ -691,4 +691,7 @@ ERROR: Communication problems! + + ERROR: Firmware update failed! + \ No newline at end of file diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs index 713cfd2d..c5687179 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs @@ -1041,6 +1041,9 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// /// - MeterAppState.FileAppInvalid changed from _styleDownloadOngoing to _styleNotInstalled /// + /// + /// - New style for communication error + /// private void UpdateInformationStyleSet() { Thread.CurrentThread.CurrentUICulture = _cultureInfo; @@ -1056,6 +1059,9 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw switch (meterAppState) { + case MeterAppState.MeterAppInstalledUnchecked: + dataGridRow.DefaultCellStyle = _styleInstalled; + break; case MeterAppState.MeterAppUpToDate: dataGridRow.DefaultCellStyle = _styleValidated; break; @@ -1074,6 +1080,9 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw case MeterAppState.MeterAppNotInstalled: dataGridRow.DefaultCellStyle = _styleNotInstalled; break; + case MeterAppState.MeterAppNotRequired: + dataGridRow.DefaultCellStyle = _styleNotInstalled; + break; case MeterAppState.InvalidCrc: dataGridRow.DefaultCellStyle = _styleInvalidMeterCrc; break; @@ -1122,14 +1131,14 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// - Removed information like region and size of fw update package from name of package, /// - Added check for null of FwPackage info, binary content and description file. /// + /// + /// - Update app installation status. + /// private void LoadUpdateFiles(ProcessState successExitState, ProcessState errorExitState = ProcessState.Error) { // remind the invoker being able to generate error messages based on the last state _invokerProcessState = _processState; - Thread.CurrentThread.CurrentUICulture = _cultureInfo; - Thread.CurrentThread.CurrentCulture = _cultureInfo; - if (_meterFwUpdate == null) _meterFwUpdate = new MeterFwUpdate(_currentGenesis); _binaryPackageLoaded = false; @@ -1179,6 +1188,11 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw if (_meterFwUpdate.LoadFileApps(fileApps)) { + // Check status of installed applications + _meterFwUpdate.AssignGenesis(_currentGenesis); + _meterFwUpdate.CompareAllMeterAndFileApps(); + FillDataGridWithAllInfos(); + _binaryPackageLoaded = true; _processState = successExitState; break; @@ -1323,15 +1337,19 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw // remind the invoker being able to generate error messages based on the last state _invokerProcessState = _processState; - _meterFwUpdate?.AssignGenesis(_currentGenesis); - _meterFwUpdate?.CompareAllMeterAndFileApps(); - - FillDataGridWithAllInfos(); + //// Check status of installed applications + //_meterFwUpdate?.AssignGenesis(_currentGenesis); + //_meterFwUpdate?.CompareAllMeterAndFileApps(); + //FillDataGridWithAllInfos(); Invoke(new Action(() => { Thread.CurrentThread.CurrentUICulture = _cultureInfo; Thread.CurrentThread.CurrentCulture = _cultureInfo; + + // check if apps are marked as status unknown due to communication error + var allAppsDetected = AllAppsDetected(); + if (_invokerProcessState == ProcessState.CheckUpdateRequest) { if (!CheckPackageFileAndFileApps()) @@ -1342,17 +1360,16 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw return; } - if (!AllAppsDetected()) + if (!allAppsDetected) { - _processState = errorExitState; - // overwrite the invoker state to create a message - _invokerProcessState = ProcessState.CheckCommunication; + _processState = errorExitState; + // overwrite the invoker state to create a message + _invokerProcessState = ProcessState.CheckCommunication; + return; } } - // check if apps are marked as status unknown due to communication error - var allAppsDetected = AllAppsDetected(); if (allAppsDetected) { if (!_currentGenesis.MeterAppListVersion.Any(f => f.Update) && @@ -1429,9 +1446,6 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// private Boolean CoreRevisionValid() { - Thread.CurrentThread.CurrentUICulture = _cultureInfo; - Thread.CurrentThread.CurrentCulture = _cultureInfo; - // check the update capability if (MeterFwUpdateCapability.CheckCoreRevision(_meterFwUpdate, _currentGenesis.CoreRevision)) { @@ -1468,9 +1482,6 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// private Boolean MetrologyUpdateCapability() { - Thread.CurrentThread.CurrentUICulture = _cultureInfo; - Thread.CurrentThread.CurrentCulture = _cultureInfo; - // check the update capability if (MeterFwUpdateCapability.CheckMetrology(_meterFwUpdate, _currentGenesis)) { @@ -1492,9 +1503,6 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// private Boolean AllAppsDetected() { - Thread.CurrentThread.CurrentUICulture = _cultureInfo; - Thread.CurrentThread.CurrentCulture = _cultureInfo; - // check the update capability if (_currentGenesis.MeterAppListVersion.All(f => f.Status != MeterAppState.Unknown)) return true; @@ -1529,9 +1537,6 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// private Boolean RegionRadioUpdateCapability() { - Thread.CurrentThread.CurrentUICulture = _cultureInfo; - Thread.CurrentThread.CurrentCulture = _cultureInfo; - var retVal = true; // extract the package information @@ -1604,9 +1609,6 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// private Boolean MeterSizeUpdateCapability() { - Thread.CurrentThread.CurrentUICulture = _cultureInfo; - Thread.CurrentThread.CurrentCulture = _cultureInfo; - var retVal = true; // extract the package information @@ -2808,6 +2810,9 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// /// - If LUT restore generates an error all processes have to be stopped as the meter is NOT functional. /// + /// + /// - COmmunication error on app detection. + /// private void ErrorProcesses() { SetOverallProgressDisplayOff(); @@ -2908,6 +2913,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw case ProcessState.CheckFwUpdateSuccess: msg = Resources.StrFirmwareUpdateFailed; ErrorProcessCommon(msg); + InfoProcessFailed(lblCordonelUpdateCapability, Resources.StrFwUpdateFailed); _processState = ProcessState.ReleaseMeterToNormalOperation; break; case ProcessState.CheckCoreRevision: @@ -3268,7 +3274,6 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw // Check status of installed applications _meterFwUpdate?.CompareAllMeterAndFileApps(); - _processState = _currentGenesis.IsLoggedOn ? successExitState : errorExitState; // change first the process state, otherwise the timer may switch the bar on again @@ -3682,6 +3687,9 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// /// - Changed program flow. /// + /// + /// - Update app information on new connect. + /// private Boolean LoginAndSpecialSetupProcedure(String password) { Boolean retVal; @@ -3727,8 +3735,6 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw // Second login if initial was executed including reading out all installed applications retVal = _currentGenesis.Login(password); - FillDataGridWithAllInfos(); - // Set radio to customer mode (encryption active) if (_initialConnect && retVal ) { @@ -3750,6 +3756,11 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw // display to normal operation and stores the setup permanently retVal = ReleaseDisplayAndSwitchLedOff(); + // Check status of installed applications + _meterFwUpdate?.AssignGenesis(_currentGenesis); + _meterFwUpdate?.CompareAllMeterAndFileApps(); + FillDataGridWithAllInfos(); + return retVal; } /// diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/Properties/Resources.de.resx b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/Properties/Resources.de.resx index 4d793056..67c6f067 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/Properties/Resources.de.resx +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/Properties/Resources.de.resx @@ -689,6 +689,9 @@ WARNUNG: Konfiguration unvollständig! - FEHLER: Kommunikationsprobleme! + FEHLER: Kommunikationsproblem! + + + FEHLER: Firmware Update fehlgeschlagen! \ No newline at end of file diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/ServiceFwUpdateSw.csproj b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/ServiceFwUpdateSw.csproj index e2bd0c73..603f998b 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/ServiceFwUpdateSw.csproj +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/ServiceFwUpdateSw.csproj @@ -117,6 +117,11 @@ FrmServiceFwUpdateSw.cs + + True + True + Resources.de.resx + FrmHistory.cs @@ -132,11 +137,6 @@ FrmServiceFwUpdateSw.cs Designer - - ResXFileCodeGenerator - Designer - Resources.de1.Designer.cs - ResXFileCodeGenerator Designer @@ -145,6 +145,11 @@ PreserveNewest + + Designer + ResXFileCodeGenerator + Resources.de.Designer.cs + Designer