using System; using DTS.Common.Enums.DASFactory; using System.Xml; using System.IO.Ports; using DTS.Common.Enums; using DTS.Common.Utilities.Logging; namespace DTS.DASLib.Service { /// /// Class for storing/applying CAN settings as a channel /// [Serializable] public class CANInputDASChannel : InputDASChannel { /// /// CTOR to populate a channel's owning module and channel WRT that module. Calls /// base class CTOR. /// /// Module that contains this channel. /// ChannelNumber of this channel WRT owning module. public CANInputDASChannel(DASModule owner, int channelNumber) : base(owner, channelNumber) { SerialNumber = owner.SerialNumber(); } public CANInputDASChannel() { } /// /// Serial number of the sensor. /// public string SerialNumber { get; set; } /// /// The name of the hardware channel /// public string HardwareChannelName { get; set; } public bool IsFD { get; set; } public int ArbBaseBitrate { get; set; } public int ArbBaseSJW { get; set; } public int DataBitrate { get; set; } public int DataSJW { get; set; } public string FileType { get; set; } /// /// If the channel has a serial number in the SerialNumber field, it is "Configured". /// public override bool IsConfigured() { return !string.IsNullOrEmpty(SerialNumber); } public override string ToString() { return $"CAN{ModuleChannelNumber}"; } public override void WriteXml(XmlWriter writer) { base.WriteXml(writer); // SerialNumber XMLHelper.PutString(writer, "SerialNumber", SerialNumber); XMLHelper.PutString(writer, "HardwareChannelName", HardwareChannelName); XMLHelper.PutString(writer, "IsFD", IsFD.ToString()); XMLHelper.PutString(writer, "ArbBaseBitrate", ArbBaseBitrate.ToString()); XMLHelper.PutString(writer, "ArbBaseSJW", ArbBaseSJW.ToString()); XMLHelper.PutString(writer, "DataBitrate", DataBitrate.ToString()); XMLHelper.PutString(writer, "DataSJW", DataSJW.ToString()); XMLHelper.PutString(writer, "FileType", FileType); } private const string SERIALNUMBER_TAG = "SerialNumber"; private const string HARDWARECHANNELNAME_TAG = "HardwareChannelName"; private const string ISFD_TAG = "IsFD"; private const string ARBBASEBITRATE_TAG = "ArbBaseBitrate"; private const string ARBBASESJW_TAG = "ArbBaseSJW"; private const string DATABITRATE_TAG = "DataBitrate"; private const string DATASJW_TAG = "DataSJW"; private const string FILETYPE_TAG = "FileType"; protected override void HandleElement(XmlReader reader) { base.HandleElement(reader); if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case SERIALNUMBER_TAG: SerialNumber = XMLHelper.GetString(reader); break; case HARDWARECHANNELNAME_TAG: HardwareChannelName = XMLHelper.GetString(reader); break; case ISFD_TAG: IsFD = Convert.ToBoolean(XMLHelper.GetString(reader)); break; case ARBBASEBITRATE_TAG: ArbBaseBitrate = Convert.ToInt32(XMLHelper.GetString(reader)); break; case ARBBASESJW_TAG: ArbBaseSJW = Convert.ToInt32(XMLHelper.GetString(reader)); break; case DATABITRATE_TAG: DataBitrate = Convert.ToInt32(XMLHelper.GetString(reader)); break; case DATASJW_TAG: DataSJW = Convert.ToInt32(XMLHelper.GetString(reader)); break; case FILETYPE_TAG: FileType = XMLHelper.GetString(reader); break; default: // let child handle it return; } } } } }