ReSharper: - GenesisFile

This commit is contained in:
Thomas Wiedebusch
2022-09-08 17:40:19 +02:00
parent e031489c31
commit 08b7769991
5 changed files with 25 additions and 29 deletions
+4 -1
View File
@@ -11,6 +11,8 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Consts/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=Consts/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Cordonel/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=Cordonel/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=dispached/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=dispached/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Drabesch/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Drahbesch/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=FFFF/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=FFFF/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Flexnet/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=Flexnet/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=FLEXNETVERSION/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=FLEXNETVERSION/@EntryIndexedValue">True</s:Boolean>
@@ -26,4 +28,5 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=RFID/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=RFID/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=SENSUSRADIO/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=SENSUSRADIO/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Thermo/@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></wpf:ResourceDictionary> <s:Boolean x:Key="/Default/UserDictionary/Words/=Uart/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Wiedebusch/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
@@ -1,6 +1,5 @@
using System; using System;
using System.Linq; using System.Linq;
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.Properties;
namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.Consts namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.Consts
{ {
@@ -969,20 +969,18 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
/// <summary> /// <summary>
/// Load file from memory /// Load file from memory
/// </summary> /// </summary>
/// <param name="Name">origin Name</param> /// <param name="name">origin Name</param>
/// /// <param name="StreamData">list of bytes of the file strean</param> /// <param name="streamData">list of bytes of the file strean</param>
/// <returns></returns> /// <returns></returns>
/// <remarks date="2022-Feb-15" author="Thomas Wiedebusch"> /// <remarks date="2022-Feb-15" author="Thomas Wiedebusch">
/// - Initial /// - Initial
/// </remarks> /// </remarks>
public Boolean LoadLutFromStream(String Name, List<Byte> StreamData ) public Boolean LoadLutFromStream(String name, List<Byte> streamData )
{ {
LutFile = null; LutFile = null;
LutFile = new MeterLutFile(Name) LutFile = new MeterLutFile(name)
{ {
BinData = StreamData BinData = streamData
}; };
// validate the file // validate the file
@@ -64,7 +64,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
///// <remarks date="2019-Mai-15" author="Thomas Wiedebusch"> ///// <remarks date="2019-Mai-15" author="Thomas Wiedebusch">
///// - Initial. ///// - Initial.
///// </remarks> ///// </remarks>
///// <remarks date="2020-Mai-15" author="Roland Drahbesh"> ///// <remarks date="2020-Mai-15" author="Roland Drabesch">
///// - Insert of Level 3 password with skeletonKey, ///// - Insert of Level 3 password with skeletonKey,
///// - SHA 1 of passwords. ///// - SHA 1 of passwords.
///// </remarks> ///// </remarks>
@@ -26,7 +26,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
#region Variables #region Variables
// Template of FLEXNETVERSION has to be modified for version, version string and CRC // Template of FLEXNETVERSION has to be modified for version, version string and CRC
private static readonly Byte[] TemplateUpg18File = private static readonly Byte[] TemplateUpgradeFile =
{ {
0x41, 0x50, 0x50, 0x3E, 0x83, 0xBA, 0x47, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x50, 0x50, 0x3E, 0x83, 0xBA, 0x47, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00,
@@ -39,7 +39,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
}; };
// upgrade file for FLEXNETVERSION // upgrade file for FLEXNETVERSION
private Byte[] _upg18File; private Byte[] _upgradeFile;
// FLEXNETVERSION application Id // FLEXNETVERSION application Id
private const Byte FlexnetVersionAppId = 0x18; private const Byte FlexnetVersionAppId = 0x18;
@@ -54,7 +54,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
public event EventHandler<ProcessExecEventArgs> OnProcessUpdate; public event EventHandler<ProcessExecEventArgs> OnProcessUpdate;
//disk and name of lookup file //disk and name of lookup file
private const String StrFlexnetUpgradeFileName = "1\\upg18"; private static readonly String StrFlexnetUpgradeFileName = $"1\\upg{FlexnetVersionAppId:X2}";
//update reties for files //update reties for files
private const Int32 FileWriteRetries = 1; private const Int32 FileWriteRetries = 1;
@@ -83,9 +83,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
private MeterResetPsuState _meterResetPsuState; private MeterResetPsuState _meterResetPsuState;
private MeterResetPsuState _backupMeterResetPsuState; private MeterResetPsuState _backupMeterResetPsuState;
// Look up table file
public MeterLutFile LutFile;
// number of operations for over all access // number of operations for over all access
private const Int32 NumberOfOperations = 11; private const Int32 NumberOfOperations = 11;
private Int32 _operationCtr; private Int32 _operationCtr;
@@ -291,7 +288,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
/// </remarks> /// </remarks>
public void ResetAll() public void ResetAll()
{ {
LutFile = null;
//remove the update stop action //remove the update stop action
StopUpdateProcess = false; StopUpdateProcess = false;
@@ -509,8 +505,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
} }
// generate the upgrade file based on the template // generate the upgrade file based on the template
_upg18File = new Byte[TemplateUpg18File.Length]; _upgradeFile = new Byte[TemplateUpgradeFile.Length];
Buffer.BlockCopy(TemplateUpg18File, 0, _upg18File, 0, _upg18File.Length); Buffer.BlockCopy(TemplateUpgradeFile, 0, _upgradeFile, 0, _upgradeFile.Length);
// rebuild numerical version out of the string because the FLEXNETVERSION version cannot be used // rebuild numerical version out of the string because the FLEXNETVERSION version cannot be used
// as it does lose the "B" information on conversion which is represented with the mask 0x80. // as it does lose the "B" information on conversion which is represented with the mask 0x80.
@@ -537,21 +533,21 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
strVersion = "R"; strVersion = "R";
} }
_upg18File[MeterFwUpdate.FileAppVersionIndex] = (Byte)(hexVersion & 0xFF); _upgradeFile[MeterFwUpdate.FileAppVersionIndex] = (Byte)(hexVersion & 0xFF);
_upg18File[MeterFwUpdate.FileAppVersionIndex + 1] = (Byte)((hexVersion & 0xFF00) >> 8); _upgradeFile[MeterFwUpdate.FileAppVersionIndex + 1] = (Byte)((hexVersion & 0xFF00) >> 8);
// build the version string and copy it to the upgrade file // build the version string and copy it to the upgrade file
strVersion += $"{charVersion[0]}.{charVersion[1]}.{charVersion[2]}{charVersion[3]}"; strVersion += $"{charVersion[0]}.{charVersion[1]}.{charVersion[2]}{charVersion[3]}";
var upg18Idx = FlexVersionStringIndex; var upg18Idx = FlexVersionStringIndex;
foreach (var t in strVersion) foreach (var t in strVersion)
{ {
_upg18File[upg18Idx] = Convert.ToByte(t); _upgradeFile[upg18Idx] = Convert.ToByte(t);
upg18Idx++; upg18Idx++;
} }
// take the payload starting with version index // take the payload starting with version index
var payload = new Byte[_upg18File.Length - MeterFwUpdate.FileAppVersionIndex]; var payload = new Byte[_upgradeFile.Length - MeterFwUpdate.FileAppVersionIndex];
Buffer.BlockCopy(_upg18File, MeterFwUpdate.FileAppVersionIndex, payload, 0, payload.Length); Buffer.BlockCopy(_upgradeFile, MeterFwUpdate.FileAppVersionIndex, payload, 0, payload.Length);
var calculatedCrc = Crc16Ccitt.CalculateMsb1021(payload); var calculatedCrc = Crc16Ccitt.CalculateMsb1021(payload);
// avoid replacement wit invalid generated FLEXNETVERSION // avoid replacement wit invalid generated FLEXNETVERSION
@@ -561,8 +557,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
} }
// replace the CRC // replace the CRC
_upg18File[MeterFwUpdate.FileAppCrcIndex] = (Byte)(calculatedCrc & 0xFF); _upgradeFile[MeterFwUpdate.FileAppCrcIndex] = (Byte)(calculatedCrc & 0xFF);
_upg18File[MeterFwUpdate.FileAppCrcIndex + 1] = (Byte)((calculatedCrc & 0xFF00) >> 8); _upgradeFile[MeterFwUpdate.FileAppCrcIndex + 1] = (Byte)((calculatedCrc & 0xFF00) >> 8);
return true; return true;
} }
@@ -577,7 +573,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
private Boolean DownloadUpgradeFile() private Boolean DownloadUpgradeFile()
{ {
//initiate upgrade by writing the upgrade control file //initiate upgrade by writing the upgrade control file
if (_upg18File == null || _upg18File.Length != TemplateUpg18File.Length || if (_upgradeFile == null || _upgradeFile.Length != TemplateUpgradeFile.Length ||
!_meterFile.UnlockEraseWriteMeterFile(StrFlexnetUpgradeFileName)) !_meterFile.UnlockEraseWriteMeterFile(StrFlexnetUpgradeFileName))
{ {
return false; return false;
@@ -590,7 +586,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
//write file and retry if not successful //write file and retry if not successful
do do
{ {
returnValue = _meterFile.WriteMeterFile(StrFlexnetUpgradeFileName, _upg18File); returnValue = _meterFile.WriteMeterFile(StrFlexnetUpgradeFileName, _upgradeFile);
if (!returnValue) if (!returnValue)
{ {
@@ -598,7 +594,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
} }
} while (!returnValue && retryCtr++ < FileWriteRetries && !StopUpdateProcess); } while (!returnValue && retryCtr++ < FileWriteRetries && !StopUpdateProcess);
_upg18File = null; _upgradeFile = null;
return !StopUpdateProcess && returnValue; return !StopUpdateProcess && returnValue;
} }
/// <summary> /// <summary>