RegisterRestorer: - Avoid SealDisplay for NA
This commit is contained in:
parent
1ab24c37cd
commit
7362087606
@ -59,9 +59,11 @@
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=prot/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=restorable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=RFID/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Sensus/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=SENSUSRADIO/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=TESTMANAGER/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Thermo/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Uart/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Uniontown/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Vako/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Wiedebusch/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
||||
@ -134,19 +134,27 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <summary>
|
||||
/// Post programming parameters for all devices
|
||||
/// </summary>
|
||||
private static readonly List<RecoveryRegisterItem> _finalizeProgramming = new List<RecoveryRegisterItem>
|
||||
private static readonly List<RecoveryRegisterItem> _finalizeProgrammingAll = new List<RecoveryRegisterItem>
|
||||
{
|
||||
new RecoveryRegisterItem("LOGGER_TriggerLogFlush", new Byte[] { 0x01 }),
|
||||
// set counter to 0 as this is a value how often the radio detected a reset
|
||||
new RecoveryRegisterItem("PERIODICLOG_ResetCounter", new Byte[] { 0x00 }),
|
||||
// trigger idle 0 releases the display to normal operation
|
||||
new RecoveryRegisterItem("GENESISFLOW_TriggerIdle", new Byte[] { 0x00 })
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Post programming parameters for EMEA region (as NA region doesn't have radio and seal display shouldn't
|
||||
/// be executed.
|
||||
/// </summary>
|
||||
private static readonly List<RecoveryRegisterItem> _finalizeProgrammingEmea = new List<RecoveryRegisterItem>
|
||||
{
|
||||
// System state 0xFF will force a storage of all parameters and reset, followed by system state 0x02
|
||||
// for customer mode, the reset needs only a few milliseconds
|
||||
// Attention logout-delay-login required after this step!
|
||||
new RecoveryRegisterItem("SENSUSRADIO_SystemState", new Byte[] { 0xFF }),
|
||||
// seal the display to lock against changes
|
||||
new RecoveryRegisterItem("GENESISFLOW_SealDisplay", new Byte[] { 0x01 }),
|
||||
// trigger idle 0 releases the display to normal operation
|
||||
new RecoveryRegisterItem("GENESISFLOW_TriggerIdle", new Byte[] { 0x00 })
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
@ -488,6 +496,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <remarks date="2024-Apr-09" author="Thomas Wiedebusch">
|
||||
/// - Removed skip recovery if already done in previous run to enable a retry.
|
||||
/// </remarks>
|
||||
/// <remarks date="2024-Jul-16" author="Thomas Wiedebusch">
|
||||
/// - Seal display and Sensus radio to EMEA finalization.
|
||||
/// </remarks>
|
||||
public StatusReturn WriteRegisters(List<RecoveryRegisterItem> recoveryRegistersDb, Boolean eolProgramming = false)
|
||||
{
|
||||
if (_currentGenesis == null ||
|
||||
@ -536,9 +547,16 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
|
||||
// add only registers which are defined as needed to restore and in the found register list
|
||||
// from installed applications
|
||||
finalizeProgrammingAll.AddRange(_finalizeProgramming.Where(finalReg =>
|
||||
finalizeProgrammingAll.AddRange(_finalizeProgrammingAll.Where(finalReg =>
|
||||
meterRegisters.MeterRegisterDic.Any(x => x.Key.GetIdent().Contains(finalReg.RegisterIdent))));
|
||||
|
||||
// add special registers for EMEA version
|
||||
if (_currentGenesis.Region.Equals("EMEA"))
|
||||
{
|
||||
finalizeProgrammingAll.AddRange(_finalizeProgrammingEmea.Where(finalReg =>
|
||||
meterRegisters.MeterRegisterDic.Any(x => x.Key.GetIdent().Contains(finalReg.RegisterIdent))));
|
||||
}
|
||||
|
||||
// set the process counter
|
||||
var recRegistersCount = recoveryRegistersDb.Count > 0 ? recoveryRegistersDb.Count : 1;
|
||||
recRegistersCount += _prepareProgramming.Count;
|
||||
@ -547,6 +565,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
// prepare recovery
|
||||
OnProcessUpdate?.Invoke(this, new ProcessExecEventArgs(Resources.StrRegisterRecoveryPreparation,
|
||||
actualProcessMessage: Resources.StrRegisterRecoveryPreparation));
|
||||
|
||||
foreach (var prepRecReg in _prepareProgramming)
|
||||
{
|
||||
_actualRegisterCtr++;
|
||||
|
||||
@ -124,7 +124,14 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisStatus
|
||||
/// </summary>
|
||||
public DateTime ApprovalDate { get; set; }
|
||||
|
||||
public Double UNTLimit { get; internal set; } = 0;
|
||||
public Boolean UNTStatus { get; internal set; } = false;
|
||||
/// <summary>
|
||||
/// Uniontown limits
|
||||
/// </summary>
|
||||
public Double UNTLimit { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Uniontown status
|
||||
/// </summary>
|
||||
public Boolean UNTStatus { get; internal set; }
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user