diff --git a/ServiceFwUpdate/Documents/Cordonel Service FW-Update Drawingse.vsd b/ServiceFwUpdate/Documents/Cordonel Service FW-Update Drawingse.vsd index c3bcc6e0..8030a676 100644 Binary files a/ServiceFwUpdate/Documents/Cordonel Service FW-Update Drawingse.vsd and b/ServiceFwUpdate/Documents/Cordonel Service FW-Update Drawingse.vsd differ diff --git a/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.Designer.cs b/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.Designer.cs index cc6170f2..6f3b5a9a 100644 --- a/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.Designer.cs +++ b/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.Designer.cs @@ -656,7 +656,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw.Properties { } /// - /// Looks up a localized string similar to Installed LUT is equal to required LUT.. + /// Looks up a localized string similar to Installed LUT is equal to required.. /// internal static string StrLutFileCompareSucceeded { get { @@ -701,7 +701,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw.Properties { } /// - /// Looks up a localized string similar to ERROR: LUT is not in FW updae safe!. + /// Looks up a localized string similar to ERROR: LUT is not in FW update safe!. /// internal static string StrLutFileNotDelivered { get { diff --git a/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.resx b/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.resx index 23882360..3dba6bd7 100644 --- a/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.resx +++ b/ServiceFwUpdate/UI/ServiceFwUpdateSw/Properties/Resources.resx @@ -620,13 +620,13 @@ ERROR: Installed LUT is unequal to required! - Installed LUT is equal to required LUT. + Installed LUT is equal to required. ERROR: LUT from FW update safe invalid! - ERROR: LUT is not in FW updae safe! + ERROR: LUT is not in FW update safe! ERROR: LUT readout failed! diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs index fd722ebd..a9f5087f 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs @@ -2717,6 +2717,9 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// /// - Error state decides what to do next. /// + /// + /// - If LUT restore generates an error all processes have to be stopped as the meter is NOT functional. + /// private void ErrorProcesses() { SetOverallProgressDisplayOff(); @@ -2770,9 +2773,11 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw _processState = GetNextProcessState(_invokerProcessState, _stateSequencePrepareMeterRelease); break; case ProcessState.RestoreLutFile: - msg = Resources.StrLutFileRestoreFailed; + //msg = Resources.StrLutFileRestoreFailed; + msg = Resources.StrLutFileCompareFailed; ErrorProcessCommon(msg); - _processState = GetNextProcessState(_invokerProcessState, _stateSequencePrepareMeterRelease); + // If LUT file is invalid all processes have to be stopped as the meter is NOT functional. + _processState = ProcessState.Idle; break; case ProcessState.RecoverRegisters: msg = Resources.StrRegisterRecoveryFailed; @@ -4363,28 +4368,40 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw /// /// - Added check for string LutCrc is not null or empty. /// + /// + /// - Use installed FW version to decide if LUT is required. + /// private void RestoreLutFile(ProcessState successExitState, ProcessState errorExitState = ProcessState.Error) { // Remind the invoker being able to generate error messages based on the last state _invokerProcessState = _processState; InfoProcessActive(lblLutFileCheck, Resources.StrLutFileRestoreActive, false); - - // 1. LUT file is invalid indicated by CRC - if (!string.IsNullOrEmpty(_currentGenesis.LutCrc) && _currentGenesis.LutCrc.Contains(MeterLutFile.StrLutFileInvalidCrc)) + //1. If InstalledFwVersion is below 1.2.xxx a LUT file is NOT required + if (_currentGenesis.InstalledFwVersion < 1200) + { + InfoProcessSuccess(lblLutFileCheck, Resources.StrLutFileNotNeeded); + _processState = successExitState; + LogText(Resources.StrLutFileNotNeeded); + return; + } + + // 2. LUT file is needed but invalid indicated by CRC or cannot be observed in file list + if ((!string.IsNullOrEmpty(_currentGenesis.LutCrc) && _currentGenesis.LutCrc.Contains(MeterLutFile.StrLutFileInvalidCrc)) + || (_readMeterFiles != null && !_readMeterFiles.Any(f => f.Contains(MeterLutFile.StrLutMeterFileName)))) { InfoProcessFailed(lblLutFileCheck, Resources.StrLutFileNotInstalled); _processState = errorExitState; return; } - // 2. LUT file NOT installed: + // 3. LUT file NOT installed: // If meter LUT CRC is not set and the meter files do not report the LUT, the meter does not have an // installed LUT if ((string.IsNullOrEmpty(_currentGenesis.LutCrc) || _currentGenesis.LutCrc.Equals(Constants.StrUnknown)) && _readMeterFiles != null && !_readMeterFiles.Any(f => f.Contains(MeterLutFile.StrLutMeterFileName))) { - // 2. a) LUT file not installed but required by the FW update safe: + // 3. a) LUT file not installed but required by the FW update safe: // If the safe contains a LUT file, the installation of it has failed or it got lost during // update if (_fwUpdateSafeLutFile != null) @@ -4394,7 +4411,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw return; } - // 2. b) LUT file not installed and not delivered by the FW update safe + // 3. b) LUT file not installed and not delivered by the FW update safe // This FW version does not require a LUT file InfoProcessSuccess(lblLutFileCheck, Resources.StrLutFileNotNeeded); _processState = successExitState; @@ -4402,11 +4419,11 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw return; } - // 3. LUT file is installed: - // 3.a) Lut file is installed but NOT in the safe: + // 4. LUT file is installed: + // 4.a) Lut file is installed but NOT in the safe: // If the LUT is not in the safe it cannot be restored or compared to the required content but can // be analyzed and logged - // 3.b) LUT file is installed and delivered by the FW update safe: + // 4.b) LUT file is installed and delivered by the FW update safe: // On validated installed LUT file in meter this can be compared with the required LUT file if (!ReadLogAndCompareMeterLutFile()) {