using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
namespace JT808.Protocol.MessageBody
{
///
/// 多媒体数据上传
/// 0x0801
///
public class JT808_0x0801 : JT808Bodies, IJT808MessagePackFormatter, IJT808_2019_Version
{
public override ushort MsgId { get; } = 0x0801;
public override string Description => "多媒体数据上传";
///
/// 多媒体 ID
///
public uint MultimediaId { get; set; }
///
/// 多媒体类型
///
///
public byte MultimediaType { get; set; }
///
/// 多媒体格式编码
/// 0:JPEG;1:TIF;2:MP3;3:WAV;4:WMV;其他保留
///
///
public byte MultimediaCodingFormat { get; set; }
///
/// 事件项编码
///
///
public byte EventItemCoding { get; set; }
///
/// 通道 ID
///
public byte ChannelId { get; set; }
///
/// 位置信息汇报(0x0200)消息体
/// 表示拍摄或录制的起始时刻的位置基本信息数据
///
public JT808_0x0200 Position { get; set; }
///
/// 多媒体数据包
///
public byte[] MultimediaDataPackage { get; set; }
public JT808_0x0801 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x0801 jT808_0X0801 = new JT808_0x0801();
jT808_0X0801.MultimediaId = reader.ReadUInt32();
jT808_0X0801.MultimediaType = reader.ReadByte();
jT808_0X0801.MultimediaCodingFormat = reader.ReadByte();
jT808_0X0801.EventItemCoding = reader.ReadByte();
jT808_0X0801.ChannelId = reader.ReadByte();
JT808MessagePackReader positionReader = new JT808MessagePackReader(reader.ReadArray(28));
jT808_0X0801.Position = config.GetMessagePackFormatter().Deserialize(ref positionReader, config);
jT808_0X0801.MultimediaDataPackage = reader.ReadContent().ToArray();
return jT808_0X0801;
}
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0801 value, IJT808Config config)
{
writer.WriteUInt32(value.MultimediaId);
writer.WriteByte(value.MultimediaType);
writer.WriteByte(value.MultimediaCodingFormat);
writer.WriteByte(value.EventItemCoding);
writer.WriteByte(value.ChannelId);
config.GetMessagePackFormatter().Serialize(ref writer, value.Position, config);
writer.WriteArray(value.MultimediaDataPackage);
}
}
}