using JT808.Protocol.Enums;
using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System;
using System.Buffers.Binary;
using System.Collections.Generic;
using System.Text;
using System.Text.Json;
namespace JT808.Protocol.MessageBody.CarDVR
{
///
/// 采集记录仪执行标准版本
/// 返回:记录仪执行标准的年号及修改单号
///
public class JT808_CarDVR_Up_0x00 : JT808CarDVRUpBodies, IJT808MessagePackFormatter, IJT808Analyze
{
///
/// 0x00
///
public override byte CommandId => JT808CarDVRCommandID.采集记录仪执行标准版本.ToByteValue();
///
/// 记录仪执行标准年号后 2 位 BCD 码
/// 无应答则默认为 03
///
public string StandardYear { get; set; }
///
/// 修改单号
/// 无修改单或无应答则默认为 00H
///
public byte ModifyNumber { get; set; }
///
/// 记录仪执行标准的年号及修改单号
///
public override string Description => "记录仪执行标准的年号及修改单号";
///
///
///
///
///
///
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_CarDVR_Up_0x00 value = new JT808_CarDVR_Up_0x00();
value.StandardYear = reader.ReadBCD(2);
writer.WriteString($"[{value.StandardYear}]记录仪执行标准年号", value.StandardYear);
value.ModifyNumber = reader.ReadByte();
writer.WriteNumber($"[{value.ModifyNumber.ReadNumber()}]修改单号", value.ModifyNumber);
}
///
///
///
///
///
///
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x00 value, IJT808Config config)
{
writer.WriteBCD(value.StandardYear, 2);
writer.WriteByte(value.ModifyNumber);
}
///
///
///
///
///
///
public JT808_CarDVR_Up_0x00 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_CarDVR_Up_0x00 value = new JT808_CarDVR_Up_0x00();
value.StandardYear = reader.ReadBCD(2);
value.ModifyNumber = reader.ReadByte();
return value;
}
}
}