diff --git a/Common/Common.sln b/Common/Common.sln
index bb044721..0fbf7653 100644
--- a/Common/Common.sln
+++ b/Common/Common.sln
@@ -221,6 +221,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Hardware.Interfaces.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Hardware.WaterMeter.eRegister.Features", "Hardware\WaterMeter\eRegister\Common.Hardware.WaterMeter.eRegister.Features\Common.Hardware.WaterMeter.eRegister.Features.csproj", "{E19C1694-132E-477C-86CB-8E146D5F59B0}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PendingEmails", "PendingEmails\PendingEmails.csproj", "{28FD69D1-B2DA-485D-9571-711BF3917350}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Hardware.WaterMeter.eRegister", "Hardware\WaterMeter\eRegister\Common.Hardware.WaterMeter.eRegister\Common.Hardware.WaterMeter.eRegister.csproj", "{4E8BB839-D40A-488C-88CE-F21811F1F476}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Utils.Extensions", "Utils\Common.Utils.Extensions\Common.Utils.Extensions.csproj", "{05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}"
+EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
Utils\DateTimeServerShared\DateTimeServerShared.projitems*{4806d89a-fbfb-41bc-aaa7-2242444bf55a}*SharedItemsImports = 4
@@ -5311,6 +5317,198 @@ Global
{E19C1694-132E-477C-86CB-8E146D5F59B0}.XP32bit|x64.Build.0 = Release|Any CPU
{E19C1694-132E-477C-86CB-8E146D5F59B0}.XP32bit|x86.ActiveCfg = Release|Any CPU
{E19C1694-132E-477C-86CB-8E146D5F59B0}.XP32bit|x86.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.COM|Any CPU.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.COM|Any CPU.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.COM|Mixed Platforms.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.COM|x64.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.COM|x64.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.COM|x86.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.COM|x86.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Debug|x64.Build.0 = Debug|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Debug|x86.Build.0 = Debug|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.PerformTest|Any CPU.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.PerformTest|x64.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.PerformTest|x64.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.PerformTest|x86.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.PerformTest|x86.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Release|Any CPU.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Release|x64.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Release|x64.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Release|x86.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.Release|x86.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.ReleaseTest|x64.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.ReleaseTest|x86.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.XP32bit|Any CPU.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.XP32bit|x64.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.XP32bit|x64.Build.0 = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.XP32bit|x86.ActiveCfg = Release|Any CPU
+ {28FD69D1-B2DA-485D-9571-711BF3917350}.XP32bit|x86.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.COM|Any CPU.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.COM|Any CPU.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.COM|Mixed Platforms.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.COM|x64.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.COM|x64.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.COM|x86.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.COM|x86.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Debug|x64.Build.0 = Debug|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Debug|x86.Build.0 = Debug|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.PerformTest|Any CPU.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.PerformTest|x64.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.PerformTest|x64.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.PerformTest|x86.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.PerformTest|x86.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Release|x64.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Release|x64.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Release|x86.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.Release|x86.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.ReleaseTest|x64.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.ReleaseTest|x86.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.XP32bit|Any CPU.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.XP32bit|x64.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.XP32bit|x64.Build.0 = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.XP32bit|x86.ActiveCfg = Release|Any CPU
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}.XP32bit|x86.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.COM|Any CPU.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.COM|Any CPU.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.COM|Mixed Platforms.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.COM|x64.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.COM|x64.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.COM|x86.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.COM|x86.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Debug|x64.Build.0 = Debug|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Debug|x86.Build.0 = Debug|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.GenesisDisplayTool_V01|Any CPU.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.GenesisDisplayTool_V01|Any CPU.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.GenesisDisplayTool_V01|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.GenesisDisplayTool_V01|Mixed Platforms.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.GenesisDisplayTool_V01|x64.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.GenesisDisplayTool_V01|x64.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.GenesisDisplayTool_V01|x86.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.GenesisDisplayTool_V01|x86.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.PerformTest|Any CPU.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.PerformTest|x64.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.PerformTest|x64.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.PerformTest|x86.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.PerformTest|x86.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Release|x64.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Release|x64.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Release|x86.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.Release|x86.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.ReleaseTest|x64.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.ReleaseTest|x64.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.ReleaseTest|x86.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.ReleaseTest|x86.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.XP32bit|Any CPU.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.XP32bit|x64.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.XP32bit|x64.Build.0 = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.XP32bit|x86.ActiveCfg = Release|Any CPU
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3}.XP32bit|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -5411,6 +5609,9 @@ Global
{57DDAE1E-FD6B-47E0-AD5E-8CCFAD07F1D7} = {57AA2731-BFD9-40A5-820F-E943FBC75D91}
{B23BFAF9-08AE-4311-8C08-FB2BB49EA2AD} = {B9444AB7-1EB1-484A-8DE6-4EEE03498CD7}
{E19C1694-132E-477C-86CB-8E146D5F59B0} = {43B54F41-6F09-4BCB-9F82-77621275831B}
+ {28FD69D1-B2DA-485D-9571-711BF3917350} = {696A94BE-7237-4AE2-9E36-6059DE519971}
+ {4E8BB839-D40A-488C-88CE-F21811F1F476} = {43B54F41-6F09-4BCB-9F82-77621275831B}
+ {05F0CCAF-9F2B-45F9-A7F8-12F29AD182F3} = {7A0EE7B8-6B7E-41E9-B679-319C8CA48CF1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4BCB7B69-696C-436A-86F7-C91EA5588164}
diff --git a/Common/CommonConsole/CommonConsole.csproj b/Common/CommonConsole/CommonConsole.csproj
index 303f1777..390644be 100644
--- a/Common/CommonConsole/CommonConsole.csproj
+++ b/Common/CommonConsole/CommonConsole.csproj
@@ -36,6 +36,9 @@
false
+
+ ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
+
@@ -50,12 +53,37 @@
+
+
+ {9ae071c0-db12-4e09-a3c7-43f6dcd518d6}
+ Common.Hardware.Interfaces.Ports
+
+
+ {E19C1694-132E-477C-86CB-8E146D5F59B0}
+ Common.Hardware.WaterMeter.eRegister.Features
+
{9D89FA2A-1217-4CE9-B217-E7602B974EA9}
Common.Hardware.WaterMeter.OmniPlus.Features
+
+ {6480cc2a-ab54-4a26-8413-d5141431c080}
+ Common.Hardware.WaterMeter.OmniPlus
+
+
+ {57ddae1e-fd6b-47e0-ad5e-8ccfad07f1d7}
+ Common.Logic.Extensions.Http
+
+
+ {62490923-cd17-45a6-b79f-a027927c75b5}
+ Common.Logic.Extensions.SQL
+
+
+ {F8D84B9A-0FCF-4083-B067-8C39B7314152}
+ OmniPlus
+
\ No newline at end of file
diff --git a/Common/CommonConsole/Program.cs b/Common/CommonConsole/Program.cs
index 83106c67..eeda9e6d 100644
--- a/Common/CommonConsole/Program.cs
+++ b/Common/CommonConsole/Program.cs
@@ -1,35 +1,14 @@
-using Common.Hardware.WaterMeter.OmniPlus.Features;
-using System;
-
-namespace CommonConsole
+namespace CommonConsole
{
+ using System;
+
+ using Common.Hardware.WaterMeter.eRegister.Features;
+
public static class Program
{
public static void Main()
{
- var systemTime = new SystemTime
- {
- DateTime = DateTime.Now
- };
- Console.WriteLine(systemTime.SecondsSince);
- var initilalSystemTime = new SystemTime
- {
- SecondsSince = BitConverter.ToUInt32(new byte[] { 0x69, 0x65, 0x08, 0x2C }, 0)
- };
- Console.WriteLine(initilalSystemTime.SecondsSince);
- Console.WriteLine(initilalSystemTime.DateTime);
+ Console.WriteLine(sizeof(UInt32));
}
}
-}
-
-/*
- * 01
- * 38-31-36-32-33-31-33-30-33-37-36-31-00-00-00-00
- * 69-65-08-2C
- * 9B-AD-16-2E
- * 02
- * 52-31-2E-32-34-2C-4F-4D-4E-49-2D-30-31-2C-52-30-2E-33-2E-31-38-00-00-00-00-00
- * 00-DC-0C-C8
- * 38
- * 00-00-00
- */
+}
\ No newline at end of file
diff --git a/Common/Hardware/WaterMeter/OmniPlus/Common.Hardware.WaterMeter.OmniPlus/OmniConnection.cs b/Common/Hardware/WaterMeter/OmniPlus/Common.Hardware.WaterMeter.OmniPlus/OmniConnection.cs
index 8e0a676d..b4ca49e1 100644
--- a/Common/Hardware/WaterMeter/OmniPlus/Common.Hardware.WaterMeter.OmniPlus/OmniConnection.cs
+++ b/Common/Hardware/WaterMeter/OmniPlus/Common.Hardware.WaterMeter.OmniPlus/OmniConnection.cs
@@ -490,7 +490,7 @@
data = Encoding.ASCII.GetBytes(factoryID);
}
- foreach (Byte byteU8 in data)
+ foreach (var byteU8 in data)
{
var tempU16 = crcU16;
@@ -545,12 +545,12 @@
var current = default(Byte);
var count1 = default(Byte);
- for (int i = 0; i < 4; i++)
+ for (var i = 0; i < 4; i++)
{
current = data[i];
count1 = 0;
- for (int b = 0; b < 8; b++)
+ for (var b = 0; b < 8; b++)
{
count1 += (Byte)(current >> b & 1);
}
diff --git a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Common.Hardware.WaterMeter.eRegister.csproj b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Common.Hardware.WaterMeter.eRegister.csproj
index 24c69148..e83ff24e 100644
--- a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Common.Hardware.WaterMeter.eRegister.csproj
+++ b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Common.Hardware.WaterMeter.eRegister.csproj
@@ -21,6 +21,7 @@
DEBUG;TRACE
prompt
4
+ IDE0003;IDE0049;
AnyCPU
diff --git a/Common/Ui/Common.UI.SIRTBroadcaster/Common.UI.SIRTBroadcaster.csproj b/Common/Ui/Common.UI.SIRTBroadcaster/Common.UI.SIRTBroadcaster.csproj
index 372848ce..97e4ff7f 100644
--- a/Common/Ui/Common.UI.SIRTBroadcaster/Common.UI.SIRTBroadcaster.csproj
+++ b/Common/Ui/Common.UI.SIRTBroadcaster/Common.UI.SIRTBroadcaster.csproj
@@ -58,10 +58,6 @@
MSBuild:Compile
Designer
-
-
-
-
@@ -118,6 +114,14 @@
{E19C1694-132E-477C-86CB-8E146D5F59B0}
Common.Hardware.WaterMeter.eRegister.Features
+
+ {4E8BB839-D40A-488C-88CE-F21811F1F476}
+ Common.Hardware.WaterMeter.eRegister
+
+
+ {05f0ccaf-9f2b-45f9-a7f8-12f29ad182f3}
+ Common.Utils.Extensions
+
\ No newline at end of file
diff --git a/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Bup.cs b/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Bup.cs
deleted file mode 100644
index 660d4193..00000000
--- a/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Bup.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-namespace Common.UI.SIRTBroadcaster.Models.Payloads
-{
- using System;
-
- public class Bup
- {
- //public Bup(FromAirResponse response) : base(response)
- //{
- // var payload = response.Payload;
- // var index = 0;
-
- // this.AppCode = payload[index++];
- // this.Counter = payload[index++];
- // this.Serial = BitConverter.ToUInt32(payload, index += 4);
- // this.Reading = BitConverter.ToUInt32(payload, index += 4);
- // this.Alarm = payload[index++];
- //}
-
- public Byte AppCode { get; }
-
- public Byte Counter { get; }
-
- public UInt32 Serial { get; }
-
- public UInt32 Reading { get; }
-
- public Byte Alarm { get; }
- }
-}
diff --git a/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Debug.cs b/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Debug.cs
deleted file mode 100644
index 11016a13..00000000
--- a/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Debug.cs
+++ /dev/null
@@ -1,130 +0,0 @@
-namespace Common.UI.SIRTBroadcaster.Models.Payloads
-{
- using Common.Hardware.Interfaces.Ports.SIRT.Parameters;
-
- using System;
-
- public class Debug
- {
- //public Debug(FromAirResponse response) : base(response)
- //{
- // var payload = response.Payload;
- // var index = 0;
-
- // this.AppCode = payload[index++];
- // this.FlexNetCounter = payload[index++];
- // this.ModuleAddress = BitConverter.ToUInt32(payload, index += 4);
- // this.OxOO = payload[index++];
- // this.MeterType = payload[index++];
- // this.RadioFirmwareVersion = this.VersionString(payload[index++], payload[index++]);
- // this.MetrologyFirmwareVersion = this.VersionString(payload[index++], payload[index++]);
- // this.HrdwareVersion = payload[index++];
- // this.FactoryState = payload[index++];
- // this.PCBID = BitConverter.ToUInt32(payload, index += 4);
- // this.BoardTemperature = payload[index++];
- // this.BoardVoltage = BitConverter.ToUInt16(payload, index += 2);
- // this.WakeupInterval = payload[index++];
- // this.SensusRFSetting = payload[index++];
- // this.FlexNetRFSetting = payload[index++];
- // this.FrequencyOffset = BitConverter.ToUInt32(payload, index += 4);
- // this.ResetCount = payload[index++];
- // this.WatchdogReset = payload[index++];
- // this.BatterySeconds = BitConverter.ToUInt32(payload, index += 4);
- // this.MeterSampleRate = payload[index++];
- // this.HistoryScale = payload[index++];
- // this.RegisterMode = payload[index++];
- // this.HistorySize = payload[index++];
- // this.FactoryCalibration = payload[index++];
- // this.MeterSize = payload[index++];
- // this.VolumePerLedPulse = BitConverter.ToUInt32(payload, index += 4);
- // this.VolumePerPulse = BitConverter.ToUInt32(payload, index += 4);
- // this.OffsetFactor = BitConverter.ToUInt32(payload, index += 4);
- // this.OffsetTime = payload[index++];
- // this.ActivationByFlowThreshold = payload[index++];
- //}
-
- public Byte AppCode { get; }
-
- public Byte FlexNetCounter { get; }
-
- public UInt32 ModuleAddress { get; }
-
- public Byte OxOO { get; }
-
- ///
- /// 0x0A for Residential and 0x0C for C & I
- ///
- public Byte MeterType { get; }
-
- public String RadioFirmwareVersion { get; }
-
- public String MetrologyFirmwareVersion { get; }
-
- public Byte HrdwareVersion { get; }
-
- public Byte FactoryState { get; }
-
- public UInt32 PCBID { get; }
-
- public Byte BoardTemperature { get; }
-
- public UInt16 BoardVoltage { get; }
-
- public Byte WakeupInterval { get; }
-
- public Byte SensusRFSetting { get; }
-
- public Byte FlexNetRFSetting { get; }
-
- public UInt32 FrequencyOffset { get; }
-
- public Byte ResetCount { get; }
-
- public Byte WatchdogReset { get; }
-
- public UInt32 BatterySeconds { get; }
-
- public Byte MeterSampleRate { get; }
-
- public Byte HistoryScale { get; }
-
- public Byte RegisterMode { get; }
-
- public Byte HistorySize { get; }
-
- public Byte FactoryCalibration { get; }
-
- public Byte MeterSize { get; }
-
- public UInt32 VolumePerLedPulse { get; }
-
- public UInt32 VolumePerPulse { get; }
-
- public UInt32 OffsetFactor { get; }
-
- public Byte OffsetTime { get; }
-
- public Byte ActivationByFlowThreshold { get; }
-
- ///
- /// Bit 15 – Beta or Release
- /// Bits 12-14 – Major Version
- /// Bits 8-11 – Minor Version
- /// Bits 0-7 – Patch Version
- ///
- private String VersionString(Byte param, Byte patch)
- {
- var bits = param.GetBits();
- var _major = new Byte[8];
- var _minor = new Byte[8];
-
- Array.Copy(bits, 0, _major, 0, 4);
- Array.Copy(bits, 4, _minor, 0, 3);
-
- var major = _major.GetByte();
- var minor = _minor.GetByte();
-
- return $"{bits[7]}.{major}.{minor}.{patch}";
- }
- }
-}
diff --git a/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Lat.cs b/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Lat.cs
deleted file mode 100644
index 7041d41c..00000000
--- a/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Lat.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Common.UI.SIRTBroadcaster.Models.Payloads
-{
- public class Lat : Bup
- {
- //public Lat(FromAirResponse response) : base(response)
- //{
- //}
- }
-}
diff --git a/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Semi.cs b/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Semi.cs
deleted file mode 100644
index 971a3f3d..00000000
--- a/Common/Ui/Common.UI.SIRTBroadcaster/Models/Payloads/Semi.cs
+++ /dev/null
@@ -1,143 +0,0 @@
-namespace Common.UI.SIRTBroadcaster.Models.Payloads
-{
- using System;
-
- public class Semi
- {
- //public Semi(FromAirResponse response) : base(response)
- //{
- // var payload = response.Payload;
- // var index = 0;
-
- // this.ModuleAddress = BitConverter.ToUInt32(payload, index += 4);
- // this.DisplayVolume = BitConverter.ToUInt32(payload, index += 4);
- // this.Alarms = payload[index++];
- // this.PamStatus = payload[index++];
- // this.PamRssi = payload[index++];
- // this.MeterType = payload[index++];
- // this.TransmissionInterval = BitConverter.ToUInt16(payload, index += 2);
- // this.LATInterval = BitConverter.ToUInt16(payload, index += 2);
- // this.CurrentFlow = BitConverter.ToUInt16(payload, index += 2);
- // this.BackwardVolume = BitConverter.ToUInt32(payload, index += 4);
- // this.NumberOfDials = payload[index++];
- // this.Units = payload[index++];
- // this.MeterID = BitConverter.ToUInt32(payload, index += 4);
- // this.MBusStatus = payload[index++];
- // this.MBusTransmissionInterval = BitConverter.ToUInt16(payload, index += 2);
- // this.AlarmActiveInformation = payload[index++];
- // this.LeakageDetectionParameters = payload[index++];
- // this.BrokenPipeDetectionParameters = payload[index++];
- // this.BatteryRemaining = BitConverter.ToUInt16(payload, index += 2);
- // this.BatteryEndDetected = BitConverter.ToUInt16(payload, index += 2);
- // this.MaximumFlow = BitConverter.ToUInt16(payload, index += 2);
- // this.TimeOfMaximumFlow = BitConverter.ToUInt16(payload, index += 2);
- // this.LowBatteryDetected = BitConverter.ToUInt16(payload, index += 2);
- // this.LeakStart = BitConverter.ToUInt16(payload, index += 2);
- // this.LeakEnd = BitConverter.ToUInt16(payload, index += 2);
- // this.MagneticTamperStart = BitConverter.ToUInt16(payload, index += 2);
- // this.MagneticTamperEnd = BitConverter.ToUInt16(payload, index += 2);
- // this.ModuleRemoveStart = BitConverter.ToUInt16(payload, index += 2);
- // this.ModuleRemoveEnd = BitConverter.ToUInt16(payload, index += 2);
- // this.BackflowStart = BitConverter.ToUInt16(payload, index += 2);
- // this.BackflowEnd = BitConverter.ToUInt16(payload, index += 2);
- // this.BrokenPipeStart = BitConverter.ToUInt16(payload, index += 2);
- // this.BrokenPipeEnd = BitConverter.ToUInt16(payload, index += 2);
- // this.LogContent = BitConverter.ToUInt16(payload, index += 2);
- // this.LoggingInterval = BitConverter.ToUInt16(payload, index += 2);
- // this.FixedDateReadingContent = BitConverter.ToUInt16(payload, index += 2);
- // this.DayOfMonth = payload[index++];
- // this.ActualDateTime = BitConverter.ToUInt32(payload, index += 4);
- // this.HistoricalErrorLimit = payload[index++];
- // this.CustomerSpecificText = Encoding.ASCII.GetString(payload, index += 9, 9);
- // this.TimeOfFDRReset = BitConverter.ToUInt16(payload, index += 2);
- // this.TimeOfLogReset = BitConverter.ToUInt16(payload, index += 2);
- // this.MeterSize = payload[index++];
- //}
-
- public UInt32 ModuleAddress { get; }
-
- public UInt32 DisplayVolume { get; }
-
- public Byte Alarms { get; }
-
- public Byte PamStatus { get; }
-
- public Byte PamRssi { get; }
-
- public Byte MeterType { get; }
-
- public UInt16 TransmissionInterval { get; }
-
- public UInt16 LATInterval { get; }
-
- public UInt16 CurrentFlow { get; }
-
- public UInt32 BackwardVolume { get; }
-
- public Byte NumberOfDials { get; }
-
- public Byte Units { get; }
-
- public UInt32 MeterID { get; }
-
- public Byte MBusStatus { get; }
-
- public UInt16 MBusTransmissionInterval { get; }
-
- public Byte AlarmActiveInformation { get; }
-
- public Byte LeakageDetectionParameters { get; }
-
- public Byte BrokenPipeDetectionParameters { get; }
-
- public UInt16 BatteryRemaining { get; }
-
- public UInt16 BatteryEndDetected { get; }
-
- public UInt16 MaximumFlow { get; }
-
- public UInt16 TimeOfMaximumFlow { get; }
-
- public UInt16 LowBatteryDetected { get; }
-
- public UInt16 LeakStart { get; }
-
- public UInt16 LeakEnd { get; }
-
- public UInt16 MagneticTamperStart { get; }
-
- public UInt16 MagneticTamperEnd { get; }
-
- public UInt16 ModuleRemoveStart { get; }
-
- public UInt16 ModuleRemoveEnd { get; }
-
- public UInt16 BackflowStart { get; }
-
- public UInt16 BackflowEnd { get; }
-
- public UInt16 BrokenPipeStart { get; }
-
- public UInt16 BrokenPipeEnd { get; }
-
- public UInt16 LogContent { get; }
-
- public UInt16 LoggingInterval { get; }
-
- public UInt16 FixedDateReadingContent { get; }
-
- public Byte DayOfMonth { get; }
-
- public UInt32 ActualDateTime { get; }
-
- public Byte HistoricalErrorLimit { get; }
-
- public String CustomerSpecificText { get; }
-
- public UInt16 TimeOfFDRReset { get; }
-
- public UInt16 TimeOfLogReset { get; }
-
- public Byte MeterSize { get; }
- }
-}
diff --git a/Common/Ui/Common.UI.SIRTBroadcaster/Models/SIRTBroadcasterModel.cs b/Common/Ui/Common.UI.SIRTBroadcaster/Models/SIRTBroadcasterModel.cs
index adc448d8..371ac511 100644
--- a/Common/Ui/Common.UI.SIRTBroadcaster/Models/SIRTBroadcasterModel.cs
+++ b/Common/Ui/Common.UI.SIRTBroadcaster/Models/SIRTBroadcasterModel.cs
@@ -4,6 +4,9 @@
using Common.Hardware.Interfaces.Ports.SIRT;
using Common.Hardware.Interfaces.Ports.SIRT.Requests;
using Common.Hardware.Interfaces.Ports.SIRT.Responses;
+ using Common.UI.SIRTBroadcaster.Models.Payloads;
+
+ using Newtonsoft.Json;
using System;
using System.Threading;
@@ -83,14 +86,18 @@
task.Done += _ => awaiter.Set();
task.Cancelled += _ => awaiter.Set();
+ task.Logging += content =>
+ {
+ this.ProgrammingDone?.Invoke(task, content);
+ };
- this.broadcaster.Send(new WritePamTask(request));
+ this.broadcaster.Send(task);
this.ProgrammingDone?.Invoke(task, BitConverter.ToString(request));
awaiter.Wait();
- this.ProgrammingDone?.Invoke(task, BitConverter.ToString(request));
+ this.ProgrammingDone?.Invoke(task, Environment.NewLine);
}
public class WritePamTask : SIRTTask
@@ -99,9 +106,34 @@
{
}
+ public event Action Logging;
protected override Boolean FromAirReceived(FromAirResponse response)
{
+ var payload = response.Payload;
+ var length = response.Payload.Length;
+ var content = default(String);
+
+ if (length == 13)
+ {
+ content = JsonConvert.SerializeObject(new BUP(payload), Formatting.Indented);
+ }
+ else if (length == 52)
+ {
+ content = JsonConvert.SerializeObject(new DEBUG(payload), Formatting.Indented);
+ }
+ else if (length == 91)
+ {
+ content = JsonConvert.SerializeObject(new SEMI(payload), Formatting.Indented);
+ }
+ else
+ {
+ content = BitConverter.ToString(payload);
+ }
+
+
+ this.Logging?.Invoke(content);
+
if (response.Payload[0] == SIRTConstants.Semi)
{
return true;
@@ -111,6 +143,15 @@
return false;
}
}
+
+ protected override Boolean AcknOrAnswerReceived(AcknOrAnswerResponse response)
+ {
+ var content = JsonConvert.SerializeObject(response, Formatting.Indented);
+
+ this.Logging?.Invoke(content);
+
+ return base.AcknOrAnswerReceived(response);
+ }
}
}
}