CUST: - FwUpdateSw: - MeterPowerCorrectionFile modified
This commit is contained in:
parent
a8c0c1744d
commit
f97033c6c4
@ -194,6 +194,10 @@
|
||||
<Project>{AC434B18-4D7B-49BA-9AD5-0527C79E8297}</Project>
|
||||
<Name>GenesisPwd</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\GenesisStatus\GenesisStatus.csproj">
|
||||
<Project>{0F646872-D8DC-4EE5-989F-D4C73F0ACE3F}</Project>
|
||||
<Name>GenesisStatus</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Registers\Registers.csproj">
|
||||
<Project>{F4AAF7E6-7333-4284-B735-E32DEB076C64}</Project>
|
||||
<Name>Registers</Name>
|
||||
|
||||
@ -45,7 +45,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
private const Int32 PulseEvenDistributionSize = sizeof(Boolean);
|
||||
|
||||
// production data
|
||||
private const Int32 ProdTimeIdx = FileDataIdx;
|
||||
private const Int32 ProdDateTimeIdx = FileDataIdx;
|
||||
private const Int32 ProdTimeIdx = ProdDateTimeIdx + TimeSize;
|
||||
private const Int32 ProdChargeIdx = ProdTimeIdx + TimeSize;
|
||||
private const Int32 ProdRadioStateIdx = ProdChargeIdx + ChargeSize;
|
||||
private const Int32 ProdPulseAdaptInstalledIdx = ProdRadioStateIdx + RadioStateSize;
|
||||
@ -56,7 +57,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
// field data
|
||||
private const Int32 FieldFwVersionIdx = ProdPulseEvenDistributionIdx + PulseEvenDistributionSize;
|
||||
|
||||
private const Int32 FieldTimeIdx = FieldFwVersionIdx + FwVersionSize;
|
||||
private const Int32 FieldDateTimeIdx = FieldFwVersionIdx + FwVersionSize;
|
||||
private const Int32 FieldTimeIdx = FieldDateTimeIdx + TimeSize;
|
||||
private const Int32 FieldChargeIdx = FieldTimeIdx + TimeSize;
|
||||
private const Int32 FieldRadioStateIdx = FieldChargeIdx + ChargeSize;
|
||||
private const Int32 FieldPulseAdaptInstalledIdx = FieldRadioStateIdx + RadioStateSize;
|
||||
@ -84,15 +86,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
/// <summary>
|
||||
/// Content of power correction meter file
|
||||
/// </summary>
|
||||
public List<String> FileContent = new List<String>();
|
||||
|
||||
/// <summary>
|
||||
/// Power correction data.
|
||||
/// </summary>
|
||||
public PowerCorrection PowerCorrectionData
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
public readonly List<String> FileContent = new List<String>();
|
||||
|
||||
/// <summary>
|
||||
/// Ctor
|
||||
@ -167,95 +161,94 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
fc.Clear();
|
||||
fc.Add(Resources.StrPowCorrFileInfo);
|
||||
|
||||
if (CopyByteArray(value_u8a = new Byte[TimeSize], bin, TimeSize, 0, ProdTimeIdx))
|
||||
{
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} -{Resources.StrPowCorrDateTime}" +
|
||||
if (CopyByteArray(value_u8a = new Byte[TimeSize], bin, TimeSize, 0, ProdDateTimeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} - {Resources.StrPowCorrDateTime}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(TimeT))}");
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} -{Resources.StrPowCorrTime_s}" +
|
||||
if (CopyByteArray(value_u8a = new Byte[TimeSize], bin, TimeSize, 0, ProdTimeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} - {Resources.StrPowCorrTime_s}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(UInt32))}");
|
||||
}
|
||||
if (CopyByteArray(value_u8a = new Byte[ChargeSize], bin, ChargeSize, 0, ProdChargeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} -{Resources.StrPowCorrCharge_uAs}" +
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} - {Resources.StrPowCorrCharge_uAs}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(UInt64))}");
|
||||
|
||||
if (CopyByteArray(value_u8a = new Byte[TimeSize], bin, TimeSize, 0, FieldTimeIdx))
|
||||
{
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} -{Resources.StrPowCorrDateTime}" +
|
||||
if (CopyByteArray(value_u8a = new Byte[TimeSize], bin, TimeSize, 0, FieldDateTimeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} - {Resources.StrPowCorrDateTime}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(TimeT))}");
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} -{Resources.StrPowCorrTime_s}" +
|
||||
if (CopyByteArray(value_u8a = new Byte[TimeSize], bin, TimeSize, 0, FieldTimeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} - {Resources.StrPowCorrTime_s}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(UInt32))}");
|
||||
}
|
||||
if (CopyByteArray(value_u8a = new Byte[ChargeSize], bin, ChargeSize, 0, FieldChargeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} -{Resources.StrPowCorrCharge_uAs}" +
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} - {Resources.StrPowCorrCharge_uAs}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(UInt64))}");
|
||||
|
||||
if (CopyByteArray(value_u8a = new Byte[RadioStateSize], bin, RadioStateSize, 0, ProdRadioStateIdx))
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} -{Resources.StrPowCorrRadioSystemState}" +
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} - {Resources.StrPowCorrRadioSystemState}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(Byte))}");
|
||||
if (CopyByteArray(value_u8a = new Byte[RadioStateSize], bin, RadioStateSize, 0, FieldRadioStateIdx))
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} -{Resources.StrPowCorrRadioSystemState}" +
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} - {Resources.StrPowCorrRadioSystemState}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(Byte))}");
|
||||
|
||||
if (CopyByteArray(value_u8a = new Byte[PulseAdaptInstalledSize], bin, PulseAdaptInstalledSize, 0,
|
||||
ProdPulseAdaptInstalledIdx))
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} -{Resources.StrPowCorrPulseAdapterInstallationState}" +
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} - {Resources.StrPowCorrPulseAdapterInstallationState}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(Boolean))}");
|
||||
if (CopyByteArray(value_u8a = new Byte[PulseAdaptInstalledSize], bin, PulseAdaptInstalledSize, 0,
|
||||
FieldPulseAdaptInstalledIdx))
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} -{Resources.StrPowCorrPulseAdapterAutoDetected}" +
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} - {Resources.StrPowCorrPulseAdapterAutoDetected}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(Boolean))}");
|
||||
|
||||
if (CopyByteArray(value_u8a = new Byte[PulseModeSize], bin, PulseModeSize, 0, ProdPulseModeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} -{Resources.StrPowCorrPulseMode}" +
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} - {Resources.StrPowCorrPulseMode}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(Byte))}");
|
||||
if (CopyByteArray(value_u8a = new Byte[PulseModeSize], bin, PulseModeSize, 0, FieldPulseModeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} -{Resources.StrPowCorrPulseMode}" +
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} - {Resources.StrPowCorrPulseMode}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(Byte))}");
|
||||
|
||||
if (CopyByteArray(value_u8a = new Byte[PulseSequenceCtrSize], bin, PulseSequenceCtrSize, 0,
|
||||
ProdPulseSequenceCtrIdx))
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} -{Resources.StrPowCorrPulseSequenceCounter}" +
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} - {Resources.StrPowCorrPulseSequenceCounter}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(Byte))}");
|
||||
if (CopyByteArray(value_u8a = new Byte[PulseSequenceCtrSize], bin, PulseSequenceCtrSize, 0,
|
||||
FieldPulseSequenceCtrIdx))
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} -{Resources.StrPowCorrPulseSequenceCounter}" +
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} - {Resources.StrPowCorrPulseSequenceCounter}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(Byte))}");
|
||||
|
||||
if (CopyByteArray(value_u8a = new Byte[PulseEvenDistributionSize], bin, PulseEvenDistributionSize, 0,
|
||||
ProdPulseEvenDistributionIdx))
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} -{Resources.StrPowCorrPulseEvenDistribution}" +
|
||||
fc.Add($"{Resources.StrPowCorrFactoryValues} - {Resources.StrPowCorrPulseEvenDistribution}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(Boolean))}");
|
||||
if (CopyByteArray(value_u8a = new Byte[PulseEvenDistributionSize], bin, PulseEvenDistributionSize, 0,
|
||||
FieldPulseEvenDistributionIdx))
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} -{Resources.StrPowCorrPulseEvenDistribution}" +
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} - {Resources.StrPowCorrPulseEvenDistribution}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(Boolean))}");
|
||||
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} -{Resources.StrPowCorrOldFwVersion}" +
|
||||
$": {_currentGenesis.FwVersion}");
|
||||
if (CopyByteArray(value_u8a = new Byte[FwVersionSize], bin, FwVersionSize, 0, FieldFwVersionIdx))
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} - {Resources.StrPowCorrOldFwVersion}" +
|
||||
$": {GenesisMeter.BuildFlexnetFwVersion(out _, null, value_u8a[1], value_u8a[0])}");
|
||||
if (CopyByteArray(value_u8a = new Byte[FwVersionSize], bin, FwVersionSize, 0, RequiredFwVersionIdx))
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} -{Resources.StrPowCorrNewFwVersion}" +
|
||||
fc.Add($"{Resources.StrPowCorrActualValues} - {Resources.StrPowCorrNewFwVersion}" +
|
||||
$": {GenesisMeter.BuildFlexnetFwVersion(out _, null, value_u8a[1], value_u8a[0])}");
|
||||
|
||||
if (CopyByteArray(value_u8a = new Byte[CalcPulseReportLengthSize], bin, CalcPulseReportLengthSize,
|
||||
0, CalcPulseReportLengthIdx))
|
||||
fc.Add($"{Resources.StrPowCorrCalculation}-{Resources.StrPowCorrPulseReportLength}" +
|
||||
fc.Add($"{Resources.StrPowCorrPulseReportLength}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(UInt32))}");
|
||||
|
||||
if (CopyByteArray(value_u8a = new Byte[TimeSize], bin, TimeSize, 0, CalcPostProdTimeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrCalculation}-{Resources.StrPowCorrPostProdTime_s}" +
|
||||
fc.Add($"{Resources.StrPowCorrPostProdTime_s}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(UInt32))}");
|
||||
|
||||
if (CopyByteArray(value_u8a = new Byte[ChargeSize], bin, ChargeSize, 0, CalcOverestimatedChargeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrCalculation}-{Resources.StrPowCorrOverestimate_uAs}" +
|
||||
fc.Add($"{Resources.StrPowCorrOverestimate_uAs}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(UInt64))}");
|
||||
if (CopyByteArray(value_u8a = new Byte[ChargeSize], bin, ChargeSize, 0, CalcFixedEstimatedChargeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrCalculation}-{Resources.StrPowCorrFixedEstimateCharge_uAs}" +
|
||||
fc.Add($"{Resources.StrPowCorrFixedEstimateCharge_uAs}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(UInt64))}");
|
||||
if (CopyByteArray(value_u8a = new Byte[ChargeSize], bin, ChargeSize, 0, CalcMinimumChargeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrCalculation}-{Resources.StrPowCorrOverestimateLimit_uAs}" +
|
||||
fc.Add($"{Resources.StrPowCorrOverestimateLimit_uAs}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(UInt64))}");
|
||||
if (CopyByteArray(value_u8a = new Byte[ChargeSize], bin, ChargeSize, 0, CalcCorrectedChargeIdx))
|
||||
fc.Add($"{Resources.StrPowCorrCalculation}-{Resources.StrPowCorrCorrectedCharge_uAs}" +
|
||||
fc.Add($"{Resources.StrPowCorrCorrectedCharge_uAs}" +
|
||||
$": {RegisterConverter.ConvertToText(value_u8a, typeof(UInt64))}");
|
||||
|
||||
return true;
|
||||
@ -270,12 +263,15 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
/// <summary>
|
||||
/// Copy byte arrays
|
||||
/// </summary>
|
||||
/// <param name="destination"></param>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="destinationStartIndex"></param>
|
||||
/// <param name="destination">destination array to copy to</param>
|
||||
/// <param name="source">array to copy from</param>
|
||||
/// <param name="size"></param>
|
||||
/// <param name="destinationStartIndex"></param>
|
||||
/// <param name="sourceStartIndex"></param>
|
||||
/// <returns></returns>
|
||||
/// <returns>true: success</returns>
|
||||
/// <remarks date="2024-May-13" author="Thomas Wiedebusch">
|
||||
/// - Initial
|
||||
/// </remarks>
|
||||
private Boolean CopyByteArray(Byte[] destination, Byte[] source, Int32 size, Int32 destinationStartIndex = 0,
|
||||
Int32 sourceStartIndex = 0)
|
||||
{
|
||||
@ -306,23 +302,30 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
/// PRECONDITION: PowerCorrectionData has to be filled in advance!
|
||||
/// </summary>
|
||||
/// <returns>true: success</returns>
|
||||
/// <remarks date="2024-May-13" author="Thomas Wiedebusch">
|
||||
/// <remarks date="2024-May-13..15" author="Thomas Wiedebusch">
|
||||
/// - Initial
|
||||
/// </remarks>
|
||||
private Boolean BuildBinData()
|
||||
/// <param name="powerCorrectionData">power correction</param>
|
||||
/// <returns>if successfully copied</returns>
|
||||
private Boolean BuildBinData(PowerCorrection powerCorrectionData)
|
||||
{
|
||||
if (PowerCorrectionData == null || _currentGenesis == null)
|
||||
if (powerCorrectionData == null || _currentGenesis == null)
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
if (_meterBinData == null)
|
||||
_meterBinData = new Byte[FileSize];
|
||||
|
||||
var pc = PowerCorrectionData;
|
||||
var pc = powerCorrectionData;
|
||||
|
||||
// production
|
||||
var timeT = new TimeT();
|
||||
var dateTimeUtc = pc.ProductionDateTimeUtc ?? timeT.DateTimeUtc;
|
||||
var secSince2000 = timeT.UtcAnyToSecondsSince2000(dateTimeUtc);
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(secSince2000),
|
||||
TimeSize, ProdDateTimeIdx);
|
||||
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(pc.ProductionTotalUsedSeconds_s),
|
||||
TimeSize, ProdTimeIdx);
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(pc.ProductionTotalUsedCharge_uAs),
|
||||
@ -342,6 +345,13 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(pc.ActualFwVersion),
|
||||
FwVersionSize, FieldFwVersionIdx);
|
||||
|
||||
// reset timeT to 2000
|
||||
timeT.SecondsSince2000 = 0;
|
||||
dateTimeUtc = pc.ActualDateTimeUtc ?? timeT.DateTimeUtc;
|
||||
secSince2000 = timeT.UtcAnyToSecondsSince2000(dateTimeUtc);
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(secSince2000),
|
||||
TimeSize, FieldDateTimeIdx);
|
||||
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(pc.ActualTotalUsedSeconds_s),
|
||||
TimeSize, FieldTimeIdx);
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(pc.ActualTotalUsedCharge_uAs),
|
||||
@ -349,7 +359,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(pc.ActualRadioSystemState),
|
||||
RadioStateSize, FieldRadioStateIdx);
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(pc.ActualPulseAdapterIsInstalled),
|
||||
RadioStateSize, FieldPulseAdaptInstalledIdx, PulseAdaptInstalledSize);
|
||||
PulseAdaptInstalledSize, FieldPulseAdaptInstalledIdx);
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(pc.ActualPulseMode),
|
||||
PulseModeSize, FieldPulseModeIdx);
|
||||
CopyByteArray(_meterBinData, RegisterConverter.ValueToByteArray(pc.ActualPulseSequenceCounter),
|
||||
@ -394,18 +404,20 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
/// Write the meter power correction file.
|
||||
/// </summary>
|
||||
/// <returns>true successfully written </returns>
|
||||
/// <remarks date="2024-May-08" author="Thomas Wiedebusch">
|
||||
/// <remarks date="2024-May-08..15" author="Thomas Wiedebusch">
|
||||
/// - Initial.
|
||||
/// </remarks>
|
||||
public Boolean WritePowCorrMeterFile()
|
||||
/// <param name="powerCorrectionData"></param>
|
||||
/// <returns>true if successfully written</returns>
|
||||
public Boolean WritePowCorrMeterFile(PowerCorrection powerCorrectionData)
|
||||
{
|
||||
if (_currentGenesis == null || _meterFile == null)
|
||||
if (_currentGenesis == null || _meterFile == null || powerCorrectionData == null)
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
if (!BuildBinData())
|
||||
if (!BuildBinData(powerCorrectionData))
|
||||
return false;
|
||||
BuildStringListOfPowCorrFileContent();
|
||||
|
||||
|
||||
@ -1494,7 +1494,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Cpllect life time information and production status.
|
||||
/// Collect life time information and production status.
|
||||
/// </summary>
|
||||
/// <remarks date="2023-Jan-04" author="Roland Drabesch/Thomas Wiedebusch">
|
||||
/// - Initial
|
||||
|
||||
@ -207,8 +207,8 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
|
||||
ProcessState.FinalConnect,
|
||||
ProcessState.ReadEngineeringLogs,
|
||||
ProcessState.CorrectPowerOverestimation,
|
||||
ProcessState.VerifyMeterFiles,
|
||||
ProcessState.CalculateLifeTime,
|
||||
ProcessState.VerifyMeterFiles,
|
||||
ProcessState.CheckFwUpdateSuccess
|
||||
};
|
||||
|
||||
@ -1413,7 +1413,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
|
||||
/// </summary>
|
||||
/// <param name="successExitState"></param>
|
||||
/// <param name="errorExitState"></param>
|
||||
/// <remarks date="2024-May-13" author="Thomas Wiedebusch">
|
||||
/// <remarks date="2024-May-13..15" author="Thomas Wiedebusch">
|
||||
/// - Initial.
|
||||
/// </remarks>
|
||||
private void CorrectPowerOverestimation(ProcessState successExitState,
|
||||
@ -1446,27 +1446,19 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
|
||||
// CASE 2: Power correction needed due to update of FW to corrected version regarding the
|
||||
// power calculation:
|
||||
// Check required versus installed FW versions and threshold version for power correction
|
||||
// using the preset _fwUpdatePowerCorrection.ActualFwVersion on initial connect as after
|
||||
// the FW update this is lost in _currentGenesis.InstalledFwVersion and overwritten by the
|
||||
// new version after the FW update!
|
||||
if ((_currentGenesis.Region == "EMEA" &&
|
||||
_cordonelFirmwarePackage.FwPackageInfo.Version >= PowCorrConst.EmeaFwThresholdForPowCorr &&
|
||||
_currentGenesis.InstalledFwVersion < PowCorrConst.EmeaFwThresholdForPowCorr) ||
|
||||
_fwUpdatePowerCorrection.ActualFwVersion < PowCorrConst.EmeaFwThresholdForPowCorr) ||
|
||||
(_currentGenesis.Region == "NA" &&
|
||||
_cordonelFirmwarePackage.FwPackageInfo.Version >= PowCorrConst.NaFNaFwThresholdForPowCorr &&
|
||||
_currentGenesis.InstalledFwVersion < PowCorrConst.NaFNaFwThresholdForPowCorr))
|
||||
_fwUpdatePowerCorrection.ActualFwVersion < PowCorrConst.NaFNaFwThresholdForPowCorr))
|
||||
{
|
||||
// CASE 2.1: Missing power correction settings from FW update package
|
||||
if (_fwUpdatePowerCorrection == null)
|
||||
{
|
||||
//do something
|
||||
_fwUpdatePowerCorrection = new PowerCorrection();
|
||||
}
|
||||
|
||||
// fill all currently known infos to power correction
|
||||
_fwUpdatePowerCorrection.ActualPulseAdapterIsInstalled = _currentGenesis.PulseAdapterAutoDetected;
|
||||
_fwUpdatePowerCorrection.ActualFwVersion = _currentGenesis.InstalledFwVersion;
|
||||
_fwUpdatePowerCorrection.RequiredFwVersion = (UInt32?)_cordonelFirmwarePackage.FwPackageInfo.Version;
|
||||
|
||||
// preset meter power correction file
|
||||
powCorrFile.PowerCorrectionData = _fwUpdatePowerCorrection;
|
||||
_fwUpdatePowerCorrection.RequiredFwVersion = (UInt32?)_cordonelFirmwarePackage.FwPackageInfo.Version;
|
||||
|
||||
// estimate the power correction values which includes the pulse adapter installation marker and
|
||||
// the readout of Cordonel registers to get the actual status
|
||||
@ -1488,7 +1480,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
|
||||
if (retVal)
|
||||
{
|
||||
// store results to "1\\powcorr" in the meter
|
||||
powCorrFile.WritePowCorrMeterFile();
|
||||
powCorrFile.WritePowCorrMeterFile(_fwUpdatePowerCorrection);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3714,7 +3706,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
|
||||
/// <remarks date="2024-May-07" author="Thomas Wiedebusch">
|
||||
/// - Added power correction on FW update to specific version.
|
||||
/// </remarks>
|
||||
private StatusReturn ExecConnect()
|
||||
private StatusReturn ExecConnect()
|
||||
{
|
||||
// If the PCB ID is not set (read from meter) this is the first initial login.
|
||||
if (string.IsNullOrEmpty(_currentGenesis.PcbId))
|
||||
@ -3828,6 +3820,10 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
|
||||
/// <remarks date="2024-Apr-24" author="Thomas Wiedebusch">
|
||||
/// - Update app information on new connect.
|
||||
/// </remarks>
|
||||
/// <remarks date="2024-May-15" author="Thomas Wiedebusch">
|
||||
/// - Remind installed FW version on initial connect to _fwUpdatePowerCorrection as this will be lost
|
||||
/// after FW update in _currentGenesis.InstalledFwVersion and set to the version after the update.
|
||||
/// </remarks>
|
||||
private Boolean LoginAndSpecialSetupProcedure(String password)
|
||||
{
|
||||
Boolean retVal;
|
||||
@ -3876,6 +3872,16 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw
|
||||
// Set radio to customer mode (encryption active)
|
||||
if (_initialConnect && retVal)
|
||||
{
|
||||
if (_fwUpdatePowerCorrection == null)
|
||||
{
|
||||
//do something
|
||||
_fwUpdatePowerCorrection = new PowerCorrection();
|
||||
}
|
||||
|
||||
// fill all currently known infos to power correction
|
||||
_fwUpdatePowerCorrection.ActualPulseAdapterIsInstalled = _currentGenesis.PulseAdapterAutoDetected;
|
||||
_fwUpdatePowerCorrection.ActualFwVersion = _currentGenesis.InstalledFwVersion;
|
||||
|
||||
if (_currentGenesis.RadioFrequencyMhz != null)
|
||||
{
|
||||
SetRadioToCustomerMode();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user