diff --git a/Common/CommonConsole/PAM03.cs b/Common/CommonConsole/PAM03.cs
index 92aacfbc..c4bff90f 100644
--- a/Common/CommonConsole/PAM03.cs
+++ b/Common/CommonConsole/PAM03.cs
@@ -14,51 +14,49 @@
public class PAM03
{
- ///
- /// Process.ExitCode:
- /// 0 - OK
- /// 1 - Execution Error
- /// 2 - Connection Error
- /// 3 - Invalid Arguments
- ///
- private int exitCode;
private string portName;
private uint address;
private byte[] key;
public int Run(params string[] args)
{
- this.exitCode = this.ParseArguments(args);
+ ///
+ /// Process.ExitCode:
+ /// 0 - OK
+ /// 1 - Execution Error
+ /// 2 - Connection Error
+ /// 3 - Invalid Arguments
+ ///
+ var exitCode = this.ParseArguments(args);
- if (this.exitCode == 0)
+ if (exitCode == 0)
{
- this.exitCode = 2;
-
var processAwaiter = new ManualResetEventSlim();
var sirtBroadcaster = new SIRTBroadcaster(this.portName);
+ var pinI = new ProvidePin { AuthLevel = AuthLevel.I };
void SIRTBroadcaster_Connected(SIRTBroadcaster sirt)
{
- var auth = new ProvidePin
- {
- AuthLevel = AuthLevel.I
- };
var task = new CordonelTask(sirt.Frequency)
{
- Timeout = 60_000,
DelPamSemi = true,
+ WakeUpCmd = true,
+ WakeUpModul = true,
RequestAddress = address,
EncryptionKey = key,
- WakeUpModul = true,
- WakeUpCmd = true,
IsEncrypted = true
};
- this.exitCode = 1;
-
- int ResetAlarms(byte alarmMask)
+ void ResetAlarms(byte alarmMask)
{
- task.Data = new ResetAlarms(0xFF).Append(auth);
+ if (exitCode != 0)
+ {
+ return;
+ }
+
+ task.WakeUpCmd = false;
+ task.WakeUpModul = false;
+ task.Data = new ResetAlarms(alarmMask).Append(pinI);
task.SetPending();
sirt.Start(task);
task.Wait();
@@ -67,37 +65,32 @@
{
Console.WriteLine($"{nameof(SIRTTaskState)}.{task.State}");
- return 1;
+ exitCode = 1;
}
- return 0;
+ exitCode = 0;
}
- this.exitCode = ResetAlarms(0xFF);
+ task.SetPending();
+ sirt.Start(task);
+ task.Wait();
- if (this.exitCode != 0)
+ if (task.State != SIRTTaskState.Completed)
{
- processAwaiter.Set();
-
- return;
+ exitCode = 1;
}
- this.exitCode = ResetAlarms(0xFE);
-
- if (this.exitCode != 0)
+ ResetAlarms(new AlarmsMask(0xFF)
{
- processAwaiter.Set();
-
- return;
- }
-
+ MediumAbsent = false
+ });
+ ResetAlarms(0xFE);
processAwaiter.Set();
}
void SIRTBroadcaster_Disconnected(SIRTBroadcaster _)
=> processAwaiter.Set();
-
sirtBroadcaster.Connected += SIRTBroadcaster_Connected;
sirtBroadcaster.Disconnected += SIRTBroadcaster_Disconnected;
@@ -109,7 +102,7 @@
sirtBroadcaster.Connected -= SIRTBroadcaster_Connected;
}
- return this.exitCode;
+ return exitCode;
}
public int ParseArguments(string[] args)
diff --git a/Common/CommonConsole/Program.cs b/Common/CommonConsole/Program.cs
index afd5c65d..4fef4d28 100644
--- a/Common/CommonConsole/Program.cs
+++ b/Common/CommonConsole/Program.cs
@@ -6,9 +6,17 @@
{
var pam03 = new PAM03();
- return pam03.Run("COM17", "412004190", "0E9FACC6A0E1EF1C3B27A49BAC216535");
- return pam03.Run(args);
- }
+ //return pam03.Run("COM7", "412004190", "0E9FACC6A0E1EF1C3B27A49BAC216535");
+
+ try
+ {
+ return pam03.Run("COM10", "402009768", "3CB64CBCB71F8D0F9F69FF18DF5D24D3");
+ }
+ catch (System.Exception e)
+ {
+ return -1;
+ }
+ }
//public static void Main()
//{
diff --git a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Eregister.cs b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Eregister.cs
index eb094e6b..4560eca8 100644
--- a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Eregister.cs
+++ b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Eregister.cs
@@ -118,11 +118,13 @@
if (task.ErrorMessage != null)
{
var error = task.ErrorMessage;
- var result = MessageBox.Show(error.Text + $"{Environment.NewLine}{Environment.NewLine}Möchten Sie fortfahren?", error.Title, MessageBoxButtons.YesNo);
+ var message = $"{error.Text}{Environment.NewLine}{Environment.NewLine}Möchten Sie fortfahren?";
+ var result = MessageBox.Show(message, error.Title, MessageBoxButtons.YesNo);
if (result == DialogResult.No)
{
task.SetCancelled();
+
stopProgramming = true;
break;
@@ -132,18 +134,18 @@
task.MessageReceived -= this.history.Push;
+ if (task.FactoryState == FactoryState.Shipment)
+ {
+ task.Label = "GESCHLOSSEN";
+
+ break;
+ }
+
if (stopProgramming)
{
break;
}
- //if (task.FactoryState == FactoryState.Shipment && !this.runningTasks.IsEmpty)
- //{
- // task.Label = "GESCHLOSSEN";
-
- // break;
- //}
-
this.UpdateTasksStateInTheQueue(task);
if (task.State == SIRTTaskState.Completed)
diff --git a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/EregisterCheckInitializationTask.cs b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/EregisterCheckInitializationTask.cs
index a91d3836..63b10867 100644
--- a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/EregisterCheckInitializationTask.cs
+++ b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/EregisterCheckInitializationTask.cs
@@ -33,6 +33,7 @@
if (this.State == SIRTTaskState.Completed)
{
this.ErrorMessage = default(ErrorMessage);
+ var hasValidConfiguration = true;
var message = new StringBuilder();
message.AppendLine();
message.AppendLine();
@@ -47,12 +48,14 @@
message.AppendLine();
message.AppendLine($"- Das Rechenwerk ist um {over:0.0000} Tage älter als erlaubt. Bitte informieren Sie die Linienleitung und QS.");
+ hasValidConfiguration = false;
}
if (this.SEMIMessage.BatteryRemainingYears <= this.parameters.MinBatteryRemainingYears)
{
message.AppendLine();
- message.AppendLine($"- Die Batterielaufzeit ({this.SEMIMessage.BatteryRemainingYears}) liegt unter dem angegebenen Minimum von ({this.parameters.MinBatteryRemainingYears}). ");
+ message.AppendLine($"- Die Batterielaufzeit ({this.SEMIMessage.BatteryRemainingYears}) liegt unter dem angegebenen Minimum von ({this.parameters.MinBatteryRemainingYears}).");
+ hasValidConfiguration = false;
}
// Min metrology FW version (>= 1108) CSD dependent
@@ -67,6 +70,7 @@
{
message.AppendLine();
message.AppendLine($"- Die Metrologische FW Version ({curFW}) liegt unter dem angegebenen Minimum von ({minFW}).");
+ hasValidConfiguration = false;
}
}
@@ -77,12 +81,14 @@
{
message.AppendLine();
message.AppendLine($"- Die Metrologische FW Version ({this.DEBUGMessage.MetrologyFWVersion}) ist nicht für Produktion freigegeben. ");
+ hasValidConfiguration = false;
}
if (!this.parameters.FWVersionsList.Contains(this.DEBUGMessage.RadioFWVersion))
{
message.AppendLine();
message.AppendLine($"- Die Radio FW Version ({this.DEBUGMessage.RadioFWVersion}) ist nicht für Produktion freigegeben. ");
+ hasValidConfiguration = false;
}
}
@@ -90,16 +96,17 @@
{
message.AppendLine();
message.AppendLine($"- Der rechenwerk wurde mehr als {this.parameters.MaxRebootCount} mal rebooted.");
+ hasValidConfiguration = false;
}
}
- if (message.Length > 10)
+ if (!hasValidConfiguration)
{
message.Insert(0, $"Am Einbauplatz: {this.SlotNr}, "
+ $"eingebaute E-Register mit Funkadressen: {this.RequestAddress} | {this.ResponseAddress}, "
- + $"sind folgenden Fehler sind aufgetreten:");
+ + $"sind folgenden Fehler aufgetreten:");
message.AppendLine();
- message.AppendLine("Linienleitung informieren!");
+ message.AppendLine("Linienleitung und QS informieren!");
this.ErrorMessage = new ErrorMessage
{
diff --git a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/EregisterTask.cs b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/EregisterTask.cs
index aeb8fa60..9c5611e4 100644
--- a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/EregisterTask.cs
+++ b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/EregisterTask.cs
@@ -198,14 +198,14 @@
if (pamStatus == PAMStatus.OK)
{
- if (this.request.Length > 0 && this.request.Payload[0] == Pam.GetDebug && this.DEBUGMessage == null)
- {
- this.Label = "!DEBUG";
- }
- else if (this.LATMessage is null)
+ if (this.LATMessage is null)
{
this.Label = "!LAT";
}
+ else if (this.request.Length > 0 && this.request.Payload[0] == Pam.GetDebug && this.DEBUGMessage == null)
+ {
+ this.Label = "!DEBUG";
+ }
else
{
this.SetCompleted();
diff --git a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Features/AlarmsMask.cs b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Features/AlarmsMask.cs
index ecbaa499..fcce4fd0 100644
--- a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Features/AlarmsMask.cs
+++ b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Features/AlarmsMask.cs
@@ -83,5 +83,7 @@
return alarmMaskBuilder.ToString().Trim();
}
+
+ public static implicit operator byte(AlarmsMask alarmMask) => alarmMask.bits.GetByteLE();
}
}
diff --git a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Models/EregisterAvailableParametersParser.cs b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Models/EregisterAvailableParametersParser.cs
index df9456af..f37e8e62 100644
--- a/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Models/EregisterAvailableParametersParser.cs
+++ b/Common/Hardware/WaterMeter/eRegister/Common.Hardware.WaterMeter.eRegister/Models/EregisterAvailableParametersParser.cs
@@ -18,6 +18,7 @@
while (bytesLength > cmdIX)
{
cmd = bytes[cmdIX];
+ _ = cmdLengths.TryGetValue(cmd, out cmdLength);
available = !cmdUnavailableAfterSeal.ContainsKey(cmd);
if (cmd == Pam.SetPowerLevel && bytes[cmdIX + 1] > 127)
@@ -25,14 +26,12 @@
available = false;
}
- if (available)
+ if (cmd == Pam.ProvidePin || available)
{
index = cmdIX + 1;
this.Add(cmd);
- _ = cmdLengths.TryGetValue(cmd, out cmdLength);
-
for (var i = 0; i < cmdLength; i++)
{
this.Add(bytes[index++]);