You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.7 KiB

  1. using JT809.Protocol.Enums;
  2. using JT809.Protocol.Extensions;
  3. using JT809.Protocol.Formatters;
  4. using JT809.Protocol.Interfaces;
  5. using JT809.Protocol.MessagePack;
  6. using System.Text.Json;
  7. namespace JT809.Protocol.MessageBody
  8. {
  9. /// <summary>
  10. /// 上级平台主动关闭链路通知消息
  11. /// <para>业务数据类型标识:DOWN_CLOSELINK_INFORM</para>
  12. /// </summary>
  13. public class JT809_0x9008:JT809Bodies, IJT809MessagePackFormatter<JT809_0x9008>, IJT809Analyze
  14. {
  15. public override ushort MsgId => JT809BusinessType.上级平台主动关闭链路通知消息.ToUInt16Value();
  16. public override string Description => "上级平台主动关闭链路通知消息";
  17. public override JT809_LinkType LinkType => JT809_LinkType.subordinate;
  18. /// <summary>
  19. /// 链路关闭原因
  20. /// </summary>
  21. public JT809_0x9008_ReasonCode ReasonCode { get; set; }
  22. public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
  23. {
  24. JT809_0x9008 value = new JT809_0x9008();
  25. value.ReasonCode = (JT809_0x9008_ReasonCode)reader.ReadByte();
  26. writer.WriteString($"[{value.ReasonCode.ToByteValue()}]链路关闭原因", value.ReasonCode.ToString());
  27. }
  28. public JT809_0x9008 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
  29. {
  30. JT809_0x9008 value = new JT809_0x9008();
  31. value.ReasonCode = (JT809_0x9008_ReasonCode)reader.ReadByte();
  32. return value;
  33. }
  34. public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9008 value, IJT809Config config)
  35. {
  36. writer.WriteByte((byte)value.ReasonCode);
  37. }
  38. }
  39. }