long time noc commit
This commit is contained in:
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user