GenesisMeter: - avoid registers of uninstalled apps,

ProductionUiCordonel: - temporary removed 'reboot counter check',
RegisterRestorer: -modified _excludedFromReadParameters
This commit is contained in:
Thomas Wiedebusch 2025-12-16 11:51:02 +01:00
parent 639aee89bb
commit 933d18d534
8 changed files with 39 additions and 16 deletions

View File

@ -13,4 +13,4 @@ using System.Reflection;
//
//[assembly: AssemblyVersion("1.2.*.0")]
[assembly: AssemblyVersion("2.8.14.*")]
[assembly: AssemblyVersion("2.8.15.*")]

View File

@ -1648,6 +1648,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
/// <remarks date="2025-Dec-09" author="Thomas Wiedebusch">
/// - Excluded register versions explicit specified in the 'configuration.json' as version.exclude list.
/// </remarks>
/// <remarks date="2025-Dec-16" author="Thomas Wiedebusch">
/// - Excluded all registers from apps which are NOT installed (isInstalled == false).
/// </remarks>
public void BuildValidMeterRegisters(List<KeyValuePair<RegisterDefinition, Byte[]>> tempConfigRegisters)
{
if (tempConfigRegisters == null || tempConfigRegisters.Count == 0)
@ -1668,7 +1671,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
foreach (var registerToCheck in tempConfigRegisters)
{
if (registerToCheck.Key?.RegisterDetail?.Version == null ||
MeterAppListVersion.All(f => f.AppId != registerToCheck.Key.AppAddress))
MeterAppListVersion.All(f => f.AppId != registerToCheck.Key.AppAddress || !f.IsInstalled))
continue;
var currentGroup = MeterAppListVersion.First(f => f.AppId == registerToCheck.Key.AppAddress);

View File

@ -274,13 +274,13 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
/// </summary>
private static readonly List<String> _excludedFromReadParameters = new List<String>
{
"CUSTOMER_InternalLoginTest", // Does NOT respond
"CUSTOMER_InternalLoginTest", //TODO THW check again which FW is impacted - Does NOT respond
"CUSTOMER_AlarmVisualAutoClearMask", // Does NOT respond
"SYSTEM_CRC", // Needs application number written to it
"SYSTEM_CRC32", // Needs application number written to it
"SYSTEM_ExitReason", // Needs application number written to it
"SYSTEM_DriveCapacity", // Needs drive number written to it
"GENESISFLOW_TriggerActive", // Does NOT respond
"GENESISFLOW_TriggerActive", //TODO THW check again which FW is impacted - Does NOT respond
"SENSUSRADIO_CurrentLoopMax", // Does NOT respond
"SENSUSRADIO_CurrentLoopSource", // Does NOT respond
"SENSUSRADIO_CustomerText", // Does NOT respond

View File

@ -17806,7 +17806,7 @@
},
"values": {
"default": 206906379,
"minimum": 201344787,
"minimum": 3,
"maximum": 4294967295
},
"statictype": "infrequentlyupdated",
@ -18099,7 +18099,7 @@
},
"values": {
"default": 206906379,
"minimum": 201344787,
"minimum": 3,
"maximum": 4294967295
},
"statictype": "infrequentlyupdated",
@ -21744,7 +21744,7 @@
},
"values": {
"default": 206906379,
"minimum": 201344787,
"minimum": 3,
"maximum": 4294967295
},
"statictype": "infrequentlyupdated",
@ -22011,7 +22011,7 @@
},
"values": {
"default": 206906379,
"minimum": 201344787,
"minimum": 3,
"maximum": 4294967295
},
"statictype": "infrequentlyupdated",

View File

@ -40,6 +40,9 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.Gener
/// <remarks date="2025-Nov-18" author="Thomas Wiedebusch">
/// - Threshold for allowed reboots to detect erroneous hardware.
/// </remarks>
/// <remarks date="2025-Dec-15" author="Thomas Wiedebusch">
/// - Reboot counter temporary deactivated with WARNING.
/// </remarks>
public override StatusReturn ExecuteProcess()
{
Boolean retVal;
@ -70,14 +73,16 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.Gener
// Read reboot count and compare with hardcoded maximum value
var rebootCount =
RegisterConverter.ByteArrayToValue<UInt32>(Meter.ReadRegister("CUSTOMER_RebootCount"));
if (rebootCount > MeterResetPsu.MAX_REBOOTS_FOR_HEALTHY_HW)
{
ErrorMsgDispatcher(Resources.StrErrorMsgTooManyReboots +
$" - {Resources.StrProcessStateAllowed}: {MeterResetPsu.MAX_REBOOTS_FOR_HEALTHY_HW}" +
$" - {Resources.StrProcessStateDetected}: {rebootCount}");
return StatusReturn.Failed;
}
//TODO THW reactivate for REBOOT Ctr check
//if (rebootCount > MeterResetPsu.MAX_REBOOTS_FOR_HEALTHY_HW)
//{
// ErrorMsgDispatcher(Resources.StrErrorMsgTooManyReboots +
// $" - {Resources.StrProcessStateAllowed}: {MeterResetPsu.MAX_REBOOTS_FOR_HEALTHY_HW}" +
// $" - {Resources.StrProcessStateDetected}: {rebootCount}");
// return StatusReturn.Failed;
//}
WarningMsgDispatcher(Resources.StrWarningRebbotCounterCheckSkipped);
// If interface is outdated
if (!Meter.InterfaceSupportsFwVersion)
{

View File

@ -2642,5 +2642,14 @@ namespace Xylem.Common.Production.ProductionUiCordonel.Properties {
return ResourceManager.GetString("StrWarningMsgServiceSirtSkipped", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to WARNING: Reboot counter check skipped.
/// </summary>
internal static string StrWarningRebbotCounterCheckSkipped {
get {
return ResourceManager.GetString("StrWarningRebbotCounterCheckSkipped", resourceCulture);
}
}
}
}

View File

@ -681,9 +681,12 @@
</data>
<data name="StrWarningMsgProcess" xml:space="preserve">
<value>WARNUNG: Ergebnis muß überprüft werden! Prozeß </value>
</data>
<data name="StrWarningRebbotCounterCheckSkipped" xml:space="preserve">
<value>WARNUNG: Hardwareneustartüberprüfung (Reboot) ausgelassen</value>
</data>
<data name="StrErrorMsgTooManyReboots" xml:space="preserve">
<value>FEHLER: Hardwareneustarts über der erlaubten Grenze</value>
<value>FEHLER: Hardwareneustarts (Reboot) über der erlaubten Grenze</value>
</data>
<data name="StrErrorMsgCsdBlocked" xml:space="preserve">
<value>FEHLER: CSD ist für die Production gesperrt</value>

View File

@ -681,6 +681,9 @@
</data>
<data name="StrWarningMsgProcess" xml:space="preserve">
<value>WARNING: Result needs inspection! Process</value>
</data>
<data name="StrWarningRebbotCounterCheckSkipped" xml:space="preserve">
<value>WARNING: Reboot counter check skipped</value>
</data>
<data name="StrErrorMsgTooManyReboots" xml:space="preserve">
<value>ERROR: Hardware reboots higher than allowed threshold</value>