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())
{