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.

68 lines
2.4 KiB

  1. using JT809.Protocol.Enums;
  2. using JT809.Protocol.Formatters;
  3. using JT809.Protocol.MessagePack;
  4. using JT809.Protocol.Extensions;
  5. using JT809.Protocol.Interfaces;
  6. namespace JT809.Protocol.SubMessageBody
  7. {
  8. /// <summary>
  9. /// 下发车辆报文应答消息
  10. /// <para>子业务类型标识:UP_CTRL_MSG_TEXT_INFO_ACK</para>
  11. /// <para>描述:下级平台应答上级平台下发的报文是否成功到达指定车辆</para>
  12. /// </summary>
  13. public class JT809_0x1500_0x1503:JT809SubBodies, IJT809MessagePackFormatter<JT809_0x1500_0x1503>, IJT809_2019_Version
  14. {
  15. public override ushort SubMsgId => JT809SubBusinessType.下发车辆报文应答消息.ToUInt16Value();
  16. public override string Description => "下发车辆报文应答消息";
  17. /// <summary>
  18. /// 对应下发车辆报文请求消息源子业务类型标识
  19. /// </summary>
  20. public ushort SourceDataType { get; set; }
  21. /// <summary>
  22. /// 对应下发车辆报文请求消息源报文序列号
  23. /// </summary>
  24. public uint SourceMsgSn { get; set; }
  25. /// <summary>
  26. /// 消息ID
  27. /// 对应“下发车辆报文请求消息”中的MSG_ID
  28. /// </summary>
  29. public uint MsgID { get; set; }
  30. /// <summary>
  31. /// 应答结果
  32. /// </summary>
  33. public JT809_0x1503_Result Result { get; set; }
  34. public JT809_0x1500_0x1503 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
  35. {
  36. JT809_0x1500_0x1503 value = new JT809_0x1500_0x1503();
  37. if (config.Version == JT809Version.JTT2019)
  38. {
  39. value.SourceDataType = reader.ReadUInt16();
  40. value.SourceMsgSn = reader.ReadUInt32();
  41. }
  42. else
  43. {
  44. value.MsgID = reader.ReadUInt32();
  45. }
  46. value.Result = (JT809_0x1503_Result)reader.ReadByte();
  47. return value;
  48. }
  49. public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1500_0x1503 value, IJT809Config config)
  50. {
  51. if (config.Version == JT809Version.JTT2019)
  52. {
  53. writer.WriteUInt16(value.SourceDataType);
  54. writer.WriteUInt32(value.SourceMsgSn);
  55. }
  56. else
  57. {
  58. writer.WriteUInt32(value.MsgID);
  59. }
  60. writer.WriteByte((byte)value.Result);
  61. }
  62. }
  63. }