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);
}
}
}