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
{
///
/// 录音开始命令
///
public class JT808_0x8804 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze
{
///
/// 0x8804
///
public override ushort MsgId { get; } = 0x8804;
///
/// 录音开始命令
///
public override string Description => "录音开始命令";
///
/// 录音命令
/// 0:停止录音;0x01:开始录音;
///
public JT808RecordCmd RecordCmd { get; set; }
///
/// 单位为秒(s),0 表示一直录音
///
public ushort RecordTime { get; set; }
///
/// 保存标志
/// 0:实时上传;1:保存
///
public JT808RecordSave RecordSave { get; set; }
///
/// 音频采样率
/// 0:8K;1:11K;2:23K;3:32K;其他保留
///
public byte AudioSampleRate { get; set; }
///
///
///
///
///
///
public JT808_0x8804 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8804 jT808_0X8804 = new JT808_0x8804();
jT808_0X8804.RecordCmd = (JT808RecordCmd)reader.ReadByte();
jT808_0X8804.RecordTime = reader.ReadUInt16();
jT808_0X8804.RecordSave = (JT808RecordSave)reader.ReadByte();
jT808_0X8804.AudioSampleRate = reader.ReadByte();
return jT808_0X8804;
}
///
///
///
///
///
///
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8804 value, IJT808Config config)
{
writer.WriteByte((byte)value.RecordCmd);
writer.WriteUInt16(value.RecordTime);
writer.WriteByte((byte)value.RecordSave);
writer.WriteByte(value.AudioSampleRate);
}
///
///
///
///
///
///
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8804 value = new JT808_0x8804();
value.RecordCmd = (JT808RecordCmd)reader.ReadByte();
value.RecordTime = reader.ReadUInt16();
value.RecordSave = (JT808RecordSave)reader.ReadByte();
value.AudioSampleRate = reader.ReadByte();
writer.WriteNumber($"[{ ((byte)(value.RecordCmd)).ReadNumber()}]录音命令-{value.RecordCmd.ToString()}", (byte)value.RecordCmd);
writer.WriteNumber($"[{value.RecordTime.ReadNumber()}]单位为秒(s)", value.RecordTime);
writer.WriteNumber($"[{((byte)value.RecordSave).ReadNumber()}]保存标志-{value.RecordSave.ToString()}", (byte)value.RecordSave);
switch (value.AudioSampleRate)
{
case 0:
writer.WriteNumber($"[{value.AudioSampleRate.ReadNumber()}]音频采样率-8K", value.AudioSampleRate);
break;
case 1:
writer.WriteNumber($"[{value.AudioSampleRate.ReadNumber()}]音频采样率-11K", value.AudioSampleRate);
break;
case 2:
writer.WriteNumber($"[{value.AudioSampleRate.ReadNumber()}]音频采样率-23K", value.AudioSampleRate);
break;
case 3:
writer.WriteNumber($"[{value.AudioSampleRate.ReadNumber()}]音频采样率-32K", value.AudioSampleRate);
break;
default:
writer.WriteNumber($"[{value.AudioSampleRate.ReadNumber()}]音频采样率-保留", value.AudioSampleRate);
break;
}
}
}
}