using DTS.Serialization.IRIGCh10.Attributes; using DTS.Serialization.IRIGCH10.Enums; using System; using System.Collections; namespace DTS.Serialization.IRIGCH10 { /// /// implements a time data packet, allowing time data packets to be put into a ch 10 file /// public class TimeDataPacket : AbstractDataPacket, IDataPacket { public TimeDataPacket() : base(DataFileDataTypes.TimeDataFormat1) { _dataBytes = new byte[12]; } private DateTime _dt; public DateTime GetDateTime() { return _dt; } public void SetTime(DateTime dt) { _dt = dt; _dataBytes[4] = Utils.Utils.GetBCDBytes(dt.Millisecond/10)[0]; _dataBytes[5] = Utils.Utils.GetBCDBytes(dt.Second)[0]; _dataBytes[6] = Utils.Utils.GetBCDBytes(dt.Minute)[0]; _dataBytes[7] = Utils.Utils.GetBCDBytes(dt.Hour)[0]; _dataBytes[8] = Utils.Utils.GetBCDBytes(dt.Day)[0]; _dataBytes[9] = Utils.Utils.GetBCDBytes(dt.Month)[0]; _dataBytes[10] = Utils.Utils.GetBCDBytes(dt.Year)[0]; _dataBytes[11] = Utils.Utils.GetBCDBytes(dt.Year)[1]; } public void SetTimeSource(byte b) { var bitArray = new BitArray(new[] {_dataBytes[0]}); var bitArray2 = new BitArray(new[] {b}); bitArray[0] = bitArray2[0]; bitArray[1] = bitArray2[1]; bitArray[2] = bitArray2[2]; bitArray[3] = bitArray2[3]; bitArray.CopyTo(_dataBytes, 0); } public void SetTimeSource(TimeSource src) { var bitArray = new BitArray(new[] {_dataBytes[0], _dataBytes[1], _dataBytes[2], _dataBytes[3]}); var bytevalue = new BitArray(new[] {PacketHeaderValueAttribute.GetPacketHeaderValue(src)}); //ref Chapter 10, 10-47 bitArray[0] = bytevalue[3]; bitArray[1] = bytevalue[2]; bitArray[2] = bytevalue[1]; bitArray[3] = bytevalue[0]; bitArray.CopyTo(_dataBytes, 0); } public void SetTimeFormat(TimeFormats fmt) { var bitArray = new BitArray(new[] {_dataBytes[0], _dataBytes[1], _dataBytes[2], _dataBytes[3]}); var bytevalue = new BitArray(new[] {PacketHeaderValueAttribute.GetPacketHeaderValue(fmt)}); //ref Chapter 10, 10-47 bitArray[4] = bytevalue[3]; bitArray[5] = bytevalue[2]; bitArray[6] = bytevalue[1]; bitArray[7] = bytevalue[0]; bitArray.CopyTo(_dataBytes, 0); } } }