using JT808.Protocol.Enums;
using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System;
using System.Text.Json;
namespace JT808.Protocol.MessageBody
{
///
/// 存储多媒体数据检索
/// 0x8802
///
public class JT808_0x8802 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze
{
public override ushort MsgId { get; } = 0x8802;
public override string Description => "存储多媒体数据检索";
///
/// 多媒体类型
///
///
public byte MultimediaType { get; set; }
///
/// 通道 ID
///
public byte ChannelId { get; set; }
///
/// 事件项编码
///
/// 0:平台下发指令;1:定时动作;2:抢劫报警触发;3:碰撞侧翻报警触发;其他保留
///
public byte EventItemCoding { get; set; }
///
/// 起始时间
/// YY-MM-DD-hh-mm-ss
///
public DateTime StartTime { get; set; }
///
/// 结束时间
/// YY-MM-DD-hh-mm-ss
///
public DateTime EndTime { get; set; }
public JT808_0x8802 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8802 jT808_0X8802 = new JT808_0x8802();
jT808_0X8802.MultimediaType = reader.ReadByte();
jT808_0X8802.ChannelId = reader.ReadByte();
jT808_0X8802.EventItemCoding = reader.ReadByte();
jT808_0X8802.StartTime = reader.ReadDateTime6();
jT808_0X8802.EndTime = reader.ReadDateTime6();
return jT808_0X8802;
}
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8802 value, IJT808Config config)
{
writer.WriteByte(value.MultimediaType);
writer.WriteByte(value.ChannelId);
writer.WriteByte(value.EventItemCoding);
writer.WriteDateTime6(value.StartTime);
writer.WriteDateTime6(value.EndTime);
}
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8802 value = new JT808_0x8802();
value.MultimediaType = reader.ReadByte();
value.ChannelId = reader.ReadByte();
value.EventItemCoding = reader.ReadByte();
value.StartTime = reader.ReadDateTime6();
value.EndTime = reader.ReadDateTime6();
JT808MultimediaType multimediaType = (JT808MultimediaType)value.MultimediaType;
JT808EventItemCoding eventItemCoding = (JT808EventItemCoding)value.EventItemCoding;
writer.WriteNumber($"[{ value.MultimediaType.ReadNumber()}]多媒体类型-{multimediaType.ToString()}", value.MultimediaType);
writer.WriteNumber($"[{ value.ChannelId.ReadNumber()}]通道ID", value.ChannelId);
writer.WriteNumber($"[{ value.EventItemCoding.ReadNumber()}]事件项编码-{eventItemCoding.ToString()}", value.EventItemCoding);
writer.WriteString($"[{ value.StartTime.ToString("yyMMddHHmmss")}]起始时间", value.StartTime.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteString($"[{ value.EndTime.ToString("yyMMddHHmmss")}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
}
}
}