GenesisMeter: - Excluded register versions explicit specified in the 'configuration.json' as version.exclude list

This commit is contained in:
Thomas Wiedebusch 2025-12-09 12:45:35 +01:00
parent e6eb4659b9
commit 30f3f61376
4 changed files with 27 additions and 14 deletions

View File

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

View File

@ -1,6 +1,17 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeEditing/ContextActionTable/DisabledContextActions/=JetBrains_002EReSharper_002EAI_002ECore_002EContextActions_002EOpenAIAssistantContextAction/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/CodeEditing/ContextActionTable/DisabledContextActions/=JetBrains_002EReSharper_002EAI_002ECore_002EContextActions_002EOpenAIAssistantContextAction/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/AdditionalAliasItemsToCorrectCommonErrors/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/AutoCompleteBasicCompletion/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/AutoCompleteImportCompletion/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/AutoCompleteSmartCompletion/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/AutopopupEnabled/AutopopupEnabled/@EntryValue">False</s:Boolean>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/ConfirmReferenceAdd/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/ImportItemsInBasicCompletion/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/InsertSpacingAfterKeywordsWhenRequired/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/IntellisenseGloballyEnabled/IntellisenseEnabled/@EntryValue">Enabled</s:String>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/MiddleMatchingCompletion/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/ParenthesesInsertType/@EntryValue">Left</s:String> <s:String x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/ParenthesesInsertType/@EntryValue">Left</s:String>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/ReplaceKeywordsWithTemplates/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/Highlighting/IdentifierHighlightingEnabled/@EntryValue">True</s:Boolean> <s:Boolean x:Key="/Default/CodeInspection/Highlighting/IdentifierHighlightingEnabled/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeMissingParentheses/@EntryIndexedValue">HINT</s:String> <s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeMissingParentheses/@EntryIndexedValue">HINT</s:String>

View File

@ -1645,6 +1645,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
/// <remarks date="2024-Apr-04" author="Roland Drabesch/Thomas Wiedebusch"> /// <remarks date="2024-Apr-04" author="Roland Drabesch/Thomas Wiedebusch">
/// - Initial, extracted from <see cref="ReadMeterFirmwareAndAssignRegisters"/> /// - Initial, extracted from <see cref="ReadMeterFirmwareAndAssignRegisters"/>
/// </remarks> /// </remarks>
/// <remarks date="2025-Dec-09" author="Thomas Wiedebusch">
/// - Excluded register versions explicit specified in the 'configuration.json' as version.exclude list.
/// </remarks>
public void BuildValidMeterRegisters(List<KeyValuePair<RegisterDefinition, Byte[]>> tempConfigRegisters) public void BuildValidMeterRegisters(List<KeyValuePair<RegisterDefinition, Byte[]>> tempConfigRegisters)
{ {
if (tempConfigRegisters == null || tempConfigRegisters.Count == 0) if (tempConfigRegisters == null || tempConfigRegisters.Count == 0)
@ -1677,7 +1680,10 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
(registerToCheck.Key.RegisterDetail.Version.Last != null && (registerToCheck.Key.RegisterDetail.Version.Last != null &&
registerToCheck.Key.RegisterDetail.Version.First != null && registerToCheck.Key.RegisterDetail.Version.First != null &&
registerToCheck.Key.RegisterDetail.Version.First.Value <= currentGroup.Version && registerToCheck.Key.RegisterDetail.Version.First.Value <= currentGroup.Version &&
registerToCheck.Key.RegisterDetail.Version.Last.Value >= currentGroup.Version)) registerToCheck.Key.RegisterDetail.Version.Last.Value >= currentGroup.Version &&
( registerToCheck.Key.RegisterDetail.Version.Exclude == null ||
// Exclude named versions
registerToCheck.Key.RegisterDetail.Version.Exclude.All(exVer => exVer != currentGroup.Version))))
{ {
configRegisterListForDebug.Add(registerToCheck.Key.GetIdent()); configRegisterListForDebug.Add(registerToCheck.Key.GetIdent());
// Avoid multiple assignment of identical register in dictionary if one has passed the test // Avoid multiple assignment of identical register in dictionary if one has passed the test

View File

@ -121,14 +121,13 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
/// <summary> /// <summary>
/// Registers manually explicit excluded for in-field updatable parameters for the CUST to prevent inadvertent /// Registers manually explicit excluded for in-field updatable parameters for the CUST to prevent inadvertent
/// modifications resulting in potential MID violations. /// modifications resulting in potential MID violations.
///
/// Defined by M.C., J.L. and A.F. with the file: 'FwUpdateController.cs-GetRecoveryFile()-2507160616.xlsx'.
///
/// All commands defined here will not be accepted from 'external' to adjust. Program internally, those
/// commands are potentially allowed if those do not change any MID dependent 'values'.
/// </summary> /// </summary>
/// <remarks date="2025-Nov-18" author="Thomas Wiedebusch"> /// <remarks date="2025-Jul-16" author="Thomas Wiedebusch">
/// - SENSUSRADIO_WakeupInterval added to keep radio active after field update if it was active before. /// Defined by M.C., J.L. and A.F. with the file: 'FwUpdateController.cs-GetRecoveryFile()-2507160616.xlsx'.
/// </remarks>
/// <remarks date="2025-Dec-08" author="Thomas Wiedebusch">
/// CUST 2.8.13:
/// - Added:SENSUSRADIO_WakeupInterval
/// </remarks> /// </remarks>
private static readonly List<String> _fieldUpdateBlacklist = new List<String> private static readonly List<String> _fieldUpdateBlacklist = new List<String>
{ {
@ -253,7 +252,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
"SENSUSRADIO_Tfx_Structure", //21 "SENSUSRADIO_Tfx_Structure", //21
"SENSUSRADIO_UpgFWVersion", //22 "SENSUSRADIO_UpgFWVersion", //22
"SENSUSRADIO_UtcTimeOffset", //23 "SENSUSRADIO_UtcTimeOffset", //23
"SENSUSRADIO_WakeupInterval", //24 - CUST_2.8.13 "SENSUSRADIO_WakeupInterval", //24 - 2025-Dec-08 - CUST_2.8.13
"SYSTEM_CalendarSeconds", // 1 "SYSTEM_CalendarSeconds", // 1
"SYSTEM_CheckPresence", // 2 "SYSTEM_CheckPresence", // 2
@ -1210,15 +1209,13 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
/// <remarks date="2025-Dec-08" author="Thomas Wiedebusch"> /// <remarks date="2025-Dec-08" author="Thomas Wiedebusch">
/// - Leave the initial 'FailedComparisonRegisters' intact. /// - Leave the initial 'FailedComparisonRegisters' intact.
/// </remarks> /// </remarks>
public Boolean RestoreAndCompareRegistersAfterReboot(CancellationToken cancellationToken) public Boolean RestoreAndCompareRegistersAfterReboot(CancellationToken cancellationToken)
{ {
if (!HasRestoreRegistersAfterRebootIfCompareFailed) if (!HasRestoreRegistersAfterRebootIfCompareFailed)
return false; return false;
HasRestoreRegistersAfterRebootIfCompareFailed = false; HasRestoreRegistersAfterRebootIfCompareFailed = false;
//FailedComparisonRegisters.Clear();
// get the pre-defined dictionary // get the pre-defined dictionary
var meterRegisters = _currentGenesis.GetConfigRegistersDefinitions(); var meterRegisters = _currentGenesis.GetConfigRegistersDefinitions();
@ -1320,7 +1317,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
var retVal = true; var retVal = true;
// build a string list of the registers being able to sort those // build a string list of the registers being able to sort those
//var registerNames = RecoveryRegisters.Select(register => register.RegisterIdent).ToList();
var registerNames = recoveryRegisters.Select(register => register.RegisterIdent).ToList(); var registerNames = recoveryRegisters.Select(register => register.RegisterIdent).ToList();
// Remove all excluded registers // Remove all excluded registers