using JT808.Protocol.Enums; using JT808.Protocol.Extensions; using JT808.Protocol.Formatters; using JT808.Protocol.Interfaces; using JT808.Protocol.MessagePack; using System.Text.Json; namespace JT808.Protocol.MessageBody { /// /// 多媒体事件信息上传 /// 0x0800 /// public class JT808_0x0800 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { public override ushort MsgId { get; } = 0x0800; public override string Description => "多媒体事件信息上传"; /// /// 多媒体数据 ID /// public uint MultimediaId { get; set; } /// /// 多媒体类型 /// 0:图像;1:音频;2:视频; /// /// public byte MultimediaType { get; set; } /// /// 多媒体格式编码 /// 0:JPEG;1:TIF;2:MP3;3:WAV;4:WMV;其他保留 /// /// public byte MultimediaCodingFormat { get; set; } /// /// 事件项编码 /// 0:平台下发指令; /// 1:定时动作; /// 2:抢劫报警触发; /// 3:碰撞侧翻报警触发; /// 4:门开拍照; /// 5:门关拍照; /// 6:车门由开变关,时速从<20 公里到超过 20 公里; /// 7:定距拍照; /// 其他保留 /// public byte EventItemCoding { get; set; } /// /// 通道 ID /// public byte ChannelId { get; set; } public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x0800 value = new JT808_0x0800(); value.MultimediaId = reader.ReadUInt32(); writer.WriteNumber($"[{value.MultimediaId.ReadNumber()}]多媒体ID", value.MultimediaId); value.MultimediaType = reader.ReadByte(); writer.WriteNumber($"[{value.MultimediaType.ReadNumber()}]多媒体类型-{((JT808MultimediaType)value.MultimediaType).ToString()}", value.MultimediaType); value.MultimediaCodingFormat = reader.ReadByte(); writer.WriteNumber($"[{value.MultimediaCodingFormat.ReadNumber()}]多媒体格式编码-{((JT808MultimediaCodingFormat)value.MultimediaCodingFormat).ToString()}", value.MultimediaCodingFormat); value.EventItemCoding = reader.ReadByte(); writer.WriteNumber($"[{value.EventItemCoding.ReadNumber()}]事件项编码-{((JT808EventItemCoding)value.EventItemCoding).ToString()}", value.MultimediaCodingFormat); value.ChannelId = reader.ReadByte(); writer.WriteNumber($"[{value.ChannelId.ReadNumber()}]通道ID", value.ChannelId); } public JT808_0x0800 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0800 value = new JT808_0x0800(); value.MultimediaId = reader.ReadUInt32(); value.MultimediaType = reader.ReadByte(); value.MultimediaCodingFormat = reader.ReadByte(); value.EventItemCoding = reader.ReadByte(); value.ChannelId = reader.ReadByte(); return value; } public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0800 value, IJT808Config config) { writer.WriteUInt32(value.MultimediaId); writer.WriteByte(value.MultimediaType); writer.WriteByte(value.MultimediaCodingFormat); writer.WriteByte(value.EventItemCoding); writer.WriteByte(value.ChannelId); } } }