131 lines
5.7 KiB
C#
131 lines
5.7 KiB
C#
|
|
using System;
|
|||
|
|
using System.Xml;
|
|||
|
|
using DTS.Common.Enums;
|
|||
|
|
using System.Text;
|
|||
|
|
using DTS.Common.Utilities;
|
|||
|
|
using DTS.Common.Classes.Sensors;
|
|||
|
|
|
|||
|
|
namespace DTS.DASLib.Service
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// Class for storing/applying Streaming output settings as a channel
|
|||
|
|
/// </summary>
|
|||
|
|
[Serializable]
|
|||
|
|
public class StreamOutputDASChannel : OutputDASChannel
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// CTOR to populate a channel's owning module and channel WRT that module. Calls
|
|||
|
|
/// base class CTOR.
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="owner">Module that contains this channel.</param>
|
|||
|
|
/// <param name="channelNumber">ChannelNumber of this channel WRT owning module.</param>
|
|||
|
|
public StreamOutputDASChannel(DASModule owner, int channelNumber)
|
|||
|
|
: base(owner, channelNumber)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public StreamOutputDASChannel()
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// Serial number of the sensor.
|
|||
|
|
/// </summary>
|
|||
|
|
public string SerialNumber { get; set; }
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// The name of the hardware channel
|
|||
|
|
/// </summary>
|
|||
|
|
public string HardwareChannelName { get; set; }
|
|||
|
|
|
|||
|
|
public string UDPProfileName { get; set; } = UDPStreamProfile.CH10_ANALOG_2HDR.ToString();
|
|||
|
|
public ushort UDPTimeChannelId { get; set; }
|
|||
|
|
public ushort UDPDataChannelId { get; set; }
|
|||
|
|
public ushort IRIGTimeDataPacketIntervalMs { get; set; }
|
|||
|
|
/// <summary>
|
|||
|
|
/// time between sending TMATS information while streaming
|
|||
|
|
/// http://manuscript.dts.local/f/cases/29987/Add-CG-DP-TMATS-interval-UI-support
|
|||
|
|
/// </summary>
|
|||
|
|
public ushort TMATSIntervalMs { get; set; } = StreamOutputRecord.DEFAULT_TMATS_INTERVAL_MS;
|
|||
|
|
public string UDPAddress { get; set; } = string.Empty;
|
|||
|
|
public uint[] UDPTmNSConfig { get; set; } = new uint[8];
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// If the channel has a serial number in the SerialNumber field, it is "Configured".
|
|||
|
|
/// </summary>
|
|||
|
|
public override bool IsConfigured()
|
|||
|
|
{
|
|||
|
|
return !string.IsNullOrEmpty(SerialNumber);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override string ToString()
|
|||
|
|
{
|
|||
|
|
return $"Stream{ModuleChannelNumber}";
|
|||
|
|
}
|
|||
|
|
public override void WriteXml(XmlWriter writer)
|
|||
|
|
{
|
|||
|
|
base.WriteXml(writer);
|
|||
|
|
|
|||
|
|
// SerialNumber
|
|||
|
|
XMLHelper.PutString(writer, "SerialNumber", SerialNumber);
|
|||
|
|
XMLHelper.PutString(writer, "HardwareChannelName", HardwareChannelName);
|
|||
|
|
XMLHelper.PutString(writer, "UDPProfileName", UDPProfileName);
|
|||
|
|
XMLHelper.PutString(writer, "UDPTimeChannelId", UDPTimeChannelId.ToString());
|
|||
|
|
XMLHelper.PutString(writer, "UDPDataChannelId", UDPDataChannelId.ToString());
|
|||
|
|
XMLHelper.PutString(writer, "IRIGTimeDataPacketIntervalMs", IRIGTimeDataPacketIntervalMs.ToString());
|
|||
|
|
XMLHelper.PutString(writer, TMATS_INTERVAL_MS_TAG, TMATSIntervalMs.ToString());
|
|||
|
|
XMLHelper.PutString(writer, "UDPAddress", UDPAddress.ToString());
|
|||
|
|
XMLHelper.PutString(writer, "UDPTmNSConfig", ArrayToString.ArrayObjectToString(UDPTmNSConfig));
|
|||
|
|
}
|
|||
|
|
private const string SERIALNUMBER_TAG = "SerialNumber";
|
|||
|
|
private const string HARDWARECHANNELNAME_TAG = "HardwareChannelName";
|
|||
|
|
private const string UDPPROFILENAME_TAG = "UDPProfileName";
|
|||
|
|
private const string UDPTIMECHANNELID_TAG = "UDPTimeChannelId";
|
|||
|
|
private const string UDPDATACHANNELID_TAG = "UDPDataChannelId";
|
|||
|
|
private const string IRIGTIMEDATAPACKETINTERVALMS_TAG = "IRIGTimeDataPacketIntervalMs";
|
|||
|
|
private const string UDPADDRESS_TAG = "UDPAddress";
|
|||
|
|
private const string UDPTMNSCONFIG_TAG = "UDPTmNSConfig";
|
|||
|
|
private const string TMATS_INTERVAL_MS_TAG = "TMATSIntervalMs";
|
|||
|
|
protected override void HandleElement(XmlReader reader)
|
|||
|
|
{
|
|||
|
|
base.HandleElement(reader);
|
|||
|
|
if (reader.NodeType == XmlNodeType.Element)
|
|||
|
|
{
|
|||
|
|
var value = string.Empty;
|
|||
|
|
switch (reader.Name)
|
|||
|
|
{
|
|||
|
|
case SERIALNUMBER_TAG:
|
|||
|
|
SerialNumber = XMLHelper.GetString(reader);
|
|||
|
|
break;
|
|||
|
|
case HARDWARECHANNELNAME_TAG:
|
|||
|
|
HardwareChannelName = XMLHelper.GetString(reader);
|
|||
|
|
break;
|
|||
|
|
case UDPPROFILENAME_TAG:
|
|||
|
|
UDPProfileName = XMLHelper.GetString(reader);
|
|||
|
|
break;
|
|||
|
|
case UDPTIMECHANNELID_TAG:
|
|||
|
|
UDPTimeChannelId = Convert.ToUInt16(XMLHelper.GetInt(reader));
|
|||
|
|
break;
|
|||
|
|
case UDPDATACHANNELID_TAG:
|
|||
|
|
UDPDataChannelId = Convert.ToUInt16(XMLHelper.GetInt(reader));
|
|||
|
|
break;
|
|||
|
|
case IRIGTIMEDATAPACKETINTERVALMS_TAG:
|
|||
|
|
IRIGTimeDataPacketIntervalMs = Convert.ToUInt16(XMLHelper.GetInt(reader));
|
|||
|
|
break;
|
|||
|
|
case UDPADDRESS_TAG:
|
|||
|
|
UDPAddress = XMLHelper.GetString(reader);
|
|||
|
|
break;
|
|||
|
|
case UDPTMNSCONFIG_TAG:
|
|||
|
|
UDPTmNSConfig = ArrayToString.StringToUIntArray(XMLHelper.GetString(reader));
|
|||
|
|
break;
|
|||
|
|
case TMATS_INTERVAL_MS_TAG:
|
|||
|
|
TMATSIntervalMs = Convert.ToUInt16(XMLHelper.GetInt(reader));
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
// let child handle it
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|