Register restorer: - modified restore register handling

This commit is contained in:
Thomas Wiedebusch 2023-12-11 16:33:06 +01:00
parent 64f13fa9b2
commit 91a44ffca1
5 changed files with 29 additions and 7 deletions

View File

@ -155,7 +155,7 @@
</site>
<site name="MeterProcessState" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\drabesch_ro\Repo\lab\la_operations\laa_production\Common\Service\MeterProcessState" />
<virtualDirectory path="/" physicalPath="D:\Projekte\SENSUS_GitLab\laa_production\Common\Service\MeterProcessState" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:56011:localhost" />

View File

@ -2435,6 +2435,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
}
}
/// <summary>
/// Dummy
/// </summary>
/// <remarks date="2023-Dec-11" author="Roland Drabesch">
/// - Initial.
/// </remarks>
public void TestBenchDispose()
{
if (IsLoggedOn)

View File

@ -207,6 +207,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
/// - Moved register dictionary value set to inner try catch loop to avoid early exit if one register is
/// unknown.
/// </remarks>
/// <remarks date="2023-Dec-11" author="Thomas Wiedebusch">
/// - Logging of some exception messages.
/// </remarks>
public Boolean RecoverRegisters(List<RecoveryRegisterItem> recoveryRegisters)
{
if (_currentGenesis == null ||
@ -310,8 +313,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
_restoreRegisters?.Set(regDef, recReg.WriteValue);
}
catch (Exception)
catch (Exception ex)
{
_currentGenesis.WriteLog("Could not replace register value of " + recReg.RegisterIdent + "; " + ex.Message);
// nothing to do
}
finally
@ -745,6 +749,10 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
/// <remarks date="2023-Nov-24" author="Thomas Wiedebusch">
/// - Extended try catch to avoid break on one register failed.
/// </remarks>
/// <remarks date="2023-Dec-11" author="Thomas Wiedebusch">
/// - Filtered restore registers to access only if assigned,
/// - Logging of some exception messages.
/// </remarks>
private Boolean ReadRegistersSet(MeterRegisters registers, MeterRegisters restoreRegisters = null)
{
if (_currentGenesis == null)
@ -779,16 +787,24 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
{
registers.Set(regDef, rawRegister);
}
catch (Exception)
catch (Exception ex)
{
_currentGenesis.WriteLog("Register unknown " + regName + "; " + ex.Message);
// nothing to do
}
try
{
restoreRegisters?.Set(regDef, rawRegister);
if (restoreRegisters != null)
{
if (restoreRegisters.MeterRegisterDic.Any(reg => reg.Key.GetIdent().Equals(regName)))
{
restoreRegisters.Set(regDef, rawRegister);
}
}
}
catch (Exception)
catch (Exception ex)
{
_currentGenesis.WriteLog("Could not set register restore value of " + regName + "; " + ex.Message);
// nothing to do
}

View File

@ -1 +1 @@
c43c40a030005a8f189e6179faf40a6d42bfef5c
bf6bb8fceb3db5a9977dadc407cf576684bf7127

View File

@ -1 +1 @@
65d75c3322f8a137c69963cfdc0cb6f1ffacf62a
247396738e2c5d26ac00f9df05c0cc5c61d7f33a