long time noc commit

This commit is contained in:
Roland Drabesch
2023-11-27 16:54:53 +01:00
parent c4e4381a20
commit 04ff12ecb5
65 changed files with 2430 additions and 157 deletions
@@ -2018,7 +2018,10 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
try
{
Logout();
//todo only from Bench
//WriteRegister<Byte>(Register.Genesisflow.SampleRate, 2, checkRegister: true);
//WriteRegister(Register.Genesisflow.LedMode, 0, checkRegister: true);
//Logout();
}
catch (Exception)
{
@@ -2396,6 +2399,14 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
}
}
}
public void TestBenchDispose()
{
if (IsLoggedOn)
{
}
}
#endregion
}
}
@@ -47,7 +47,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
{
if (!SkipPreparationForTestBench)
{
SkipPreparationForTestBench = true;
//SkipPreparationForTestBench = true;
//TODO set display unit
//TODO calculated overflow volume for display
WriteRegister<Byte>(Register.Genesisflow.SampleRate, 16, checkRegister: true);
@@ -100,7 +100,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisPwd
{
var url = ServiceUrls.GenesisGetPasswordContainerServiceUrl();
var requestResponse = LocalWebRequest.GetRequestWithError(url + pcbId, out var errorCode, 20000, isRetry: true);
var requestResponse = LocalWebRequest.GetRequestWithError(url + pcbId, out var errorCode, 30000, isRetry: true);
if (errorCode == HttpStatusCode.OK.GetHashCode())
{
passwordContainer = JsonConvert.DeserializeObject<MeterPwdDb>(requestResponse);
@@ -123,5 +123,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisStatus
/// Date of approval.
/// </summary>
public DateTime ApprovalDate;
public Double UNTLimit { get; internal set; } = 0;
public Boolean UNTStatus { get; internal set; } = false;
}
}
@@ -136,6 +136,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisStatus
// convert the seconds to years
status.RemainingLifeTimeYears = remainingLifetime_s / 3600 / 24 / 365.25;
status.UNTLimit = 1368000000 + (status.ExceededLifeTime_s * 77.7);
status.UNTStatus = status.UNTLimit >= status.DrainedBatteryLoad_uAs;
return retVal;
}
}
@@ -600,15 +600,41 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol
Byte[] payload = null, Int32 expectedLength = 4, Boolean hideDataInLog = false,
UInt16 skipRetryErrorCode = CommunicationConfig.SkipRetryErrorCode)
{
//if (command == Commands.MultipleReadData && meterRegister != null && meterRegister.DataType == typeof(String))
//{
// var completeResponse = new List<Byte>();
// while (!completeResponse.Contains(0))
// {
// var cRecord = CommandToMeter(Commands.ReadData, meterRegister, payload, 4, hideDataInLog,
// skipRetryErrorCode);
// var rest = ProcessRecordList();
// if (rest == RequestAcknowledgeState.Ok && cRecord?.ResponsePayload != null)
// {
// completeResponse.AddRange(cRecord.ResponsePayload);
// if (cRecord.ResponsePayload.Contains(0))
// {
// cRecord.ResponsePayload = completeResponse;
// OnMeterRegisterUpdated?.Invoke(this,
// new RegisterUpdatedEventArgs(meterRegister, completeResponse.ToArray()));
// return cRecord;
// }
// }
// else
// {
// }
// }
//}
if (command == Commands.MultipleReadData && meterRegister != null && meterRegister.DataType == typeof(String))
{
var completeResponse = new List<Byte>();
while (!completeResponse.Contains(0))
//TODO THW check this including the recursive call CommandToMeter
while (true)
{
var cRecord = CommandToMeter(Commands.ReadData, meterRegister, payload, 4, hideDataInLog,
skipRetryErrorCode);
var cRecord = CommandToMeter(Commands.ReadData, meterRegister, payload, expectedLength,
hideDataInLog, skipRetryErrorCode);
var rest = ProcessRecordList();
if (rest == RequestAcknowledgeState.Ok && cRecord?.ResponsePayload != null)
if (rest == RequestAcknowledgeState.Ok && cRecord != null && cRecord.ResponsePayload != null)
{
completeResponse.AddRange(cRecord.ResponsePayload);
if (cRecord.ResponsePayload.Contains(0))
@@ -616,9 +642,40 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol
cRecord.ResponsePayload = completeResponse;
OnMeterRegisterUpdated?.Invoke(this,
new RegisterUpdatedEventArgs(meterRegister, completeResponse.ToArray()));
if (completeResponse.Count < expectedLength)
{
_logger.Debug("Too Short. Payload contains zero");
}
return cRecord;
}
}
else
{
if (completeResponse.Any() &&
completeResponse.Count < expectedLength)
{
if (rest != RequestAcknowledgeState.Ok)
{
_logger.Debug($"Too Short.Request Acknowledge State is {rest}");
}
else if (cRecord == null)
{
_logger.Debug("Too Short.Record is empty or null");
}
else if (cRecord.ResponsePayload == null)
{
_logger.Debug("Too Short.ResponsePayload is empty or null");
}
else
{
_logger.Debug("Too Short.Unkown reason");
}
}
return cRecord;
}
}
}
//the minimum payload is one 4 byte chunk
@@ -1206,6 +1206,11 @@ namespace Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxCore
}
}
}
public void TestBenchDispose()
{
//nothing to do
}
#endregion
}
}
@@ -0,0 +1,12 @@
namespace Xylem.Common.Hardware.WaterMeter.WaterMeterCore.BatchActions
{
/// <inheritdoc />
public class BatchCallTestBenchDispose: BatchCall
{
/// <inheritdoc />
public override void DoSingleAction(IMeter meter)
{
meter.TestBenchDispose();
}
}
}
@@ -282,6 +282,6 @@ namespace Xylem.Common.Hardware.WaterMeter.WaterMeterCore
/// Clear all object set up on runtime
/// </summary>
void DisposeMeter();
void TestBenchDispose();
}
}
@@ -247,5 +247,11 @@ namespace Xylem.Common.Hardware.WaterMeter.WaterMeterCore
}
}
public void DisposeTestBench()
{
_logger.Info("Dispose batch make sure green LED is off");
var batchCall = new BatchCallStopMeasurement();
batchCall.RunAction(ListOfMeters);
}
}
}
@@ -254,6 +254,7 @@
<Compile Include="BatchActions\BatchCallStartCalibration.cs" />
<Compile Include="BatchActions\BatchCallStartMeasurement.cs" />
<Compile Include="BatchActions\BatchCallStopCalibration.cs" />
<Compile Include="BatchActions\BatchCallTestBenchDispose.cs" />
<Compile Include="BatchActions\BatchCallStopMeasurement.cs" />
<Compile Include="Consts\DisplayCodes.cs" />
<Compile Include="DataPackages\FlowDeviations.cs" />