using JT809.Protocol.Enums; using JT809.Protocol.Extensions; using JT809.Protocol.Interfaces; using JT809.Protocol.MessagePack; using System; using System.Buffers; using System.Collections.Generic; using System.Text; namespace JT809.Protocol.Formatters { public class JT809HeaderFormatter : IJT809MessagePackFormatter { public readonly static JT809HeaderFormatter Instance = new JT809HeaderFormatter(); public JT809Header Deserialize(ref JT809MessagePackReader reader, IJT809Config config) { JT809Header jT809Header = new JT809Header(); jT809Header.MsgLength = reader.ReadUInt32(); jT809Header.MsgSN = reader.ReadUInt32(); jT809Header.BusinessType = reader.ReadUInt16(); jT809Header.MsgGNSSCENTERID = reader.ReadUInt32(); jT809Header.Version = new JT809Header_Version(reader.ReadArray(JT809Header_Version.FixedByteLength)); jT809Header.EncryptFlag = (JT809Header_Encrypt)reader.ReadByte(); jT809Header.EncryptKey = reader.ReadUInt32(); return jT809Header; } public void Serialize(ref JT809MessagePackWriter writer, JT809Header value, IJT809Config config) { writer.WriteUInt32(value.MsgLength); writer.WriteUInt32( value.MsgSN); writer.WriteUInt16(value.BusinessType); writer.WriteUInt32(value.MsgGNSSCENTERID); writer.WriteArray(value.Version.Buffer); writer.WriteByte((byte)value.EncryptFlag); writer.WriteUInt32(value.EncryptKey); } } }