using ProGauge_StartItaliana_Probe.MessageEntity.Outgoing;
using System;
using System.Collections.Generic;
using System.Text;
namespace ProGauge_StartItaliana_Probe.MessageEntity.Incoming
{
public class DiagnosticResponse
{
///
/// water in dmm for probes up to 5,5 mt.
/// water in mm for probes above 5,5 mt
///
public double WaterLevel { get; private set; }
///
/// product in dmm for probes up to 5,5 mt.
/// product in mm for probes above 5,5 mt
///
public double ProductLevel { get; private set; }
///
///
///
public double TotalLenghtInPulseValue { get; private set; }
public double TemperatureCompensationFactor { get; private set; }
public double OffestSignal { get; private set; }
public double PulseSignal { get; private set; }
public double PowerSupply { get; private set; }
///
/// alarm set in dmm
///
public double AlarmSet { get; private set; }
public double AlarmStatus { get; private set; }
public static DiagnosticResponse Parse(byte[] raw)
{
var response = new DiagnosticResponse();
var msg = Encoding.ASCII.GetString(raw);
var parts = msg.Split(' ');
if (parts.Length != 9)
throw new ArgumentException("msg must has 8 chars of ' '");
response.WaterLevel = double.Parse(parts[0]);
response.ProductLevel = double.Parse(parts[1]);
response.TotalLenghtInPulseValue = double.Parse(parts[2]);
response.TemperatureCompensationFactor = double.Parse(parts[3]);
response.OffestSignal = double.Parse(parts[4]);
response.PulseSignal = double.Parse(parts[5]);
response.PowerSupply = double.Parse(parts[6]);
response.AlarmSet = double.Parse(parts[7]);
response.AlarmStatus = double.Parse(parts[8]);
return response;
}
}
}