From 3539b9883c6c1451e43946075435b83e0eefffab Mon Sep 17 00:00:00 2001 From: "SmallChi(Koike)" <564952747@qq.com> Date: Mon, 27 Apr 2020 13:43:00 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E5=88=86=E6=9E=90=E5=99=A8?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=202.=E9=87=8D=E6=96=B0=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=B8=BB=E5=91=BD=E4=BB=A4=E5=92=8C=E5=AD=90=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E7=9A=84=E6=89=A9=E5=B1=95=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JT809BinaryExtensionsTest.cs | 9 +- src/JT809.Protocol/Enums/JT809BusinessType.cs | 18 +- .../JT809PackageExtensionsTemplate.cs | 154 +++++++++++++++--- .../JT809PackageExtensionsTemplate.tt | 12 +- .../JT809SubPackageExtensionsTemplate.cs | 98 ++++++++++- src/JT809.Protocol/JT809.Protocol.csproj | 32 +--- src/JT809.Protocol/JT809Bodies.cs | 2 +- src/JT809.Protocol/JT809Package.cs | 9 +- src/JT809.Protocol/JT809Serializer.cs | 100 +++++++++++- .../MessageBody/JT809_2019_0x9101.cs | 2 +- 10 files changed, 365 insertions(+), 71 deletions(-) diff --git a/src/JT809.Protocol.Test/JT809Extensions/JT809BinaryExtensionsTest.cs b/src/JT809.Protocol.Test/JT809Extensions/JT809BinaryExtensionsTest.cs index 67efbb4..b6ed209 100644 --- a/src/JT809.Protocol.Test/JT809Extensions/JT809BinaryExtensionsTest.cs +++ b/src/JT809.Protocol.Test/JT809Extensions/JT809BinaryExtensionsTest.cs @@ -1,4 +1,5 @@ -using JT809.Protocol.Enums; +using JT809.Protocol.Attributes; +using JT809.Protocol.Enums; using JT809.Protocol.Extensions; using System; using System.Collections.Generic; @@ -42,6 +43,12 @@ namespace JT809.Protocol.Test.JT809Extensions public void Test5() { var jT808_Status5 = JT809EnumExtensions.GetEnumTypes(8388609, 32,false); + } + [Fact] + public void Test6() + { + JT809BodiesTypeAttribute jT809BodiesTypeAttribute = JT809BusinessType.接收车辆定位信息数量通知消息.GetAttribute(); + JT809BodiesTypeAttribute jT809BodiesTypeAttribute1 = JT809BusinessType.发送车辆定位信息数据量通知消息_2019.GetAttribute(); } } } diff --git a/src/JT809.Protocol/Enums/JT809BusinessType.cs b/src/JT809.Protocol/Enums/JT809BusinessType.cs index deaf481..9053aff 100644 --- a/src/JT809.Protocol/Enums/JT809BusinessType.cs +++ b/src/JT809.Protocol/Enums/JT809BusinessType.cs @@ -155,12 +155,12 @@ namespace JT809.Protocol.Enums ///发送车辆定位信息数据量通知消息_2019 ///DOWN_TOTAL_RECV_BACK_MSG /// - [Description("接收车辆定位信息数量通知消息")] + [Description("发送车辆定位信息数据量通知消息_2019")] [JT809BodiesType(typeof(JT809_2019_0x9101))] - [JT809BusinessTypeDescription("DOWN_TOTAL_RECV_BACK_MSG", "发送车辆定位信息数据量通知消息")] - 发送车辆定位信息数据量通知消息_2019 = 0x9101, + [JT809BusinessTypeDescription("DOWN_TOTAL_RECV_BACK_MSG", "发送车辆定位信息数据量通知消息_2019")] + 发送车辆定位信息数据量通知消息_2019 = 0x9101, /// - ///发送车辆定位信息数据量通知消息_2019 + ///平台链路连接情况与车辆定位消息传输情况上报请求消息_2019 ///DOWN_TOTAL_RECV_BACK_MSG /// [Description("平台链路连接情况与车辆定位消息传输情况上报请求消息")] @@ -168,18 +168,18 @@ namespace JT809.Protocol.Enums [JT809BusinessTypeDescription("DOWN_MANAGE_MSG_REQ", "平台链路连接情况与车辆定位消息传输情况上报请求消息")] 平台链路连接情况与车辆定位消息传输情况上报请求消息_2019 = 0x9102, /// - ///发送车辆定位信息数据量通知消息_2019 + ///平台链路连接情况与车辆定位消息传输情况上报应答消息_2019 ///UP_MANAGE_MSG_RSP /// [Description("平台链路连接情况与车辆定位消息传输情况上报应答消息")] [JT809BodiesType(typeof(JT809_0x1102))] - [JT809BusinessTypeDescription("UP_MANAGE_MSG_RSP", "平台链路连接情况与车辆定位消息传输情况上报应答消息")] + [JT809BusinessTypeDescription("UP_MANAGE_MSG_RSP", "平台链路连接情况与车辆定位消息传输情况上报应答消息_2019")] 平台链路连接情况与车辆定位消息传输情况上报应答消息_2019 = 0x1102, /// ///上传平台间消息序列号通知消息 ///UP_MANAGE_MSG_SN_INFORM /// - [Description("上传平台间消息序列号通知消息")] + [Description("上传平台间消息序列号通知消息_2019")] [JT809BodiesType(typeof(JT809_0x1102))] [JT809BusinessTypeDescription("UP_MANAGE_MSG_SN_INFORM", "上传平台间消息序列号通知消息")] 上传平台间消息序列号通知消息_2019 = 0x1103, @@ -187,9 +187,9 @@ namespace JT809.Protocol.Enums ///下发平台间消息序列号通知消息 ///UP_MANAGE_MSG_SN_INFORM /// - [Description("下发平台间消息序列号通知消息")] + [Description("下发平台间消息序列号通知消息_2019")] [JT809BodiesType(typeof(JT809_0x1102))] - [JT809BusinessTypeDescription("DOWN_MANAGE_MSG_SN_INFORM", "下发平台间消息序列号通知消息")] + [JT809BusinessTypeDescription("DOWN_MANAGE_MSG_SN_INFORM", "下发平台间消息序列号通知消息_2019")] 下发平台间消息序列号通知消息_2019 = 0x9103, #endregion #region 车辆动态信息交换 diff --git a/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.cs b/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.cs index 85e8819..de904ac 100644 --- a/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.cs +++ b/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.cs @@ -1,11 +1,12 @@  + using JT809.Protocol.Enums; namespace JT809.Protocol.Extensions { public static partial class JT809PackageExtensions { - /// + /// /// UP_CONNECT_REQ - 主链路登录请求消息 /// auto-generated /// @@ -31,7 +32,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_CONNECT_RSP - 主链路登录应答消息 /// auto-generated /// @@ -57,7 +58,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_DISCONNECT_REQ - 主链路注销请求消息 /// auto-generated /// @@ -83,7 +84,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_DISCONNECT_RSP - 主链路注销应答消息 /// auto-generated /// @@ -109,7 +110,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_LINKTEST_REQ - 主链路连接保持请求消息 /// auto-generated /// @@ -135,7 +136,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_LINKTEST_RSP - 主链路连接保持应答消息 /// auto-generated /// @@ -161,7 +162,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_DISCONNECT_INFORM - 主链路断开通知消息 /// auto-generated /// @@ -187,7 +188,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_CLOSELINK_INFORM - 下级平台主动关闭主从链路通知消息 /// auto-generated /// @@ -213,7 +214,50 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } + /// + /// UP_MANAGE_MSG_RSP - 平台链路连接情况与车辆定位消息传输情况上报应答消息_2019 + /// auto-generated + /// + public static JT809Package Create_平台链路连接情况与车辆定位消息传输情况上报应答消息_2019(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1102 bodies) + { + return Create(jT809BusinessType,bodies); + } + + /// + /// UP_MANAGE_MSG_RSP - 平台链路连接情况与车辆定位消息传输情况上报应答消息_2019 + /// auto-generated + /// + public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1102 bodies) + { + return Create(jT809BusinessType,bodies); + } + + /// + /// UP_MANAGE_MSG_RSP - 平台链路连接情况与车辆定位消息传输情况上报应答消息_2019 + /// auto-generated + /// + public static JT809Package Create_平台链路连接情况与车辆定位消息传输情况上报应答消息_2019(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1102 bodies) + { + return Create(jT809BusinessType,jT809Header,bodies); + } + /// + /// UP_MANAGE_MSG_SN_INFORM - 上传平台间消息序列号通知消息_2019 + /// auto-generated + /// + public static JT809Package Create_上传平台间消息序列号通知消息_2019(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1102 bodies) + { + return Create(jT809BusinessType,bodies); + } + /// + /// UP_MANAGE_MSG_SN_INFORM - 上传平台间消息序列号通知消息_2019 + /// auto-generated + /// + public static JT809Package Create_上传平台间消息序列号通知消息_2019(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1102 bodies) + { + return Create(jT809BusinessType,jT809Header,bodies); + } + /// /// UP_EXG_MSG - 主链路车辆动态信息交换业务 /// auto-generated /// @@ -239,7 +283,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_PLATFORM_MSG - 主链路平台间信息交互消息 /// auto-generated /// @@ -265,7 +309,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_WARN_MSG - 主链路报警信息交互消息 /// auto-generated /// @@ -291,7 +335,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_CTRL_MSG - 主链路车辆监管消息 /// auto-generated /// @@ -317,7 +361,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// UP_BASE_MSG - 主链路静态信息交换消息 /// auto-generated /// @@ -343,7 +387,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_CONNECT_REQ - 从链路连接请求消息 /// auto-generated /// @@ -369,7 +413,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_CONNECT_RSP - 从链路连接应答信息 /// auto-generated /// @@ -395,7 +439,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_DISCONNECT_REQ - 从链路注销请求消息 /// auto-generated /// @@ -421,7 +465,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_DISCONNECT_RSP - 从链路注销应答消息 /// auto-generated /// @@ -447,7 +491,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_LINKTEST_REQ - 从链路连接保持请求消息 /// auto-generated /// @@ -473,7 +517,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_LINKTEST_RSP - 从链路连接保持应答消息 /// auto-generated /// @@ -499,7 +543,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_DISCONNECT_INFORM - 从链路断开通知消息 /// auto-generated /// @@ -525,7 +569,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_CLOSELINK_INFORM - 上级平台主动关闭链路通知消息 /// auto-generated /// @@ -551,6 +595,34 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } + + /// + /// DOWN_TOTAL_RECV_BACK_MSG - 发送车辆定位信息数据量通知消息_2019 + /// auto-generated + /// + public static JT809Package Create_发送车辆定位信息数据量通知消息_2019(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_2019_0x9101 bodies) + { + return Create(jT809BusinessType,bodies); + } + + /// + /// DOWN_TOTAL_RECV_BACK_MSG - 发送车辆定位信息数据量通知消息_2019 + /// auto-generated + /// + public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_2019_0x9101 bodies) + { + return Create(jT809BusinessType,bodies); + } + + /// + /// DOWN_TOTAL_RECV_BACK_MSG - 发送车辆定位信息数据量通知消息_2019 + /// auto-generated + /// + public static JT809Package Create_发送车辆定位信息数据量通知消息_2019(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_2019_0x9101 bodies) + { + return Create(jT809BusinessType,jT809Header,bodies); + } + /// /// DOWN_TOTAL_RECV_BACK_MSG - 接收车辆定位信息数量通知消息 /// auto-generated @@ -577,7 +649,41 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } + /// + /// DOWN_MANAGE_MSG_REQ - 平台链路连接情况与车辆定位消息传输情况上报请求消息_2019 + /// auto-generated + /// + public static JT809Package Create_平台链路连接情况与车辆定位消息传输情况上报请求消息_2019(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9102 bodies) + { + return Create(jT809BusinessType,bodies); + } + /// + /// DOWN_MANAGE_MSG_REQ - 平台链路连接情况与车辆定位消息传输情况上报请求消息_2019 + /// auto-generated + /// + public static JT809Package Create_平台链路连接情况与车辆定位消息传输情况上报请求消息_2019(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9102 bodies) + { + return Create(jT809BusinessType,jT809Header,bodies); + } + /// + /// DOWN_MANAGE_MSG_SN_INFORM - 下发平台间消息序列号通知消息_2019 + /// auto-generated + /// + public static JT809Package Create_下发平台间消息序列号通知消息_2019(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1102 bodies) + { + return Create(jT809BusinessType,bodies); + } + + /// + /// DOWN_MANAGE_MSG_SN_INFORM - 下发平台间消息序列号通知消息_2019 + /// auto-generated + /// + public static JT809Package Create_下发平台间消息序列号通知消息_2019(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1102 bodies) + { + return Create(jT809BusinessType,jT809Header,bodies); + } + /// /// DOWN_EXG_MSG - 从链路车辆动态信息交换业务 /// auto-generated /// @@ -603,7 +709,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_PLATFORM_MSG - 从链路平台间信息交互业务 /// auto-generated /// @@ -629,7 +735,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_WARN_MSG - 从链路报警信息交互消息 /// auto-generated /// @@ -655,7 +761,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_CTRL_MSG - 从链路车辆监管消息 /// auto-generated /// @@ -681,7 +787,7 @@ namespace JT809.Protocol.Extensions { return Create(jT809BusinessType,jT809Header,bodies); } - /// + /// /// DOWN_BASE_MSG - 从链路静态信息交换消息 /// auto-generated /// diff --git a/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.tt b/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.tt index 87db0b3..cef6a9f 100644 --- a/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.tt +++ b/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.tt @@ -16,6 +16,7 @@ <# var types=Enum.GetNames(typeof(JT809BusinessType)); #> + using JT809.Protocol.Enums; namespace JT809.Protocol.Extensions @@ -28,19 +29,18 @@ namespace JT809.Protocol.Extensions JT809BusinessType jT809BusinessType = item.ToEnum(); JT809BodiesTypeAttribute jT809BodiesTypeAttribute = jT809BusinessType.GetAttribute(); JT809BusinessTypeDescriptionAttribute jT809MsgIdDescriptionAttribute = jT809BusinessType.GetAttribute(); - #> /// - /// <#= jT809MsgIdDescriptionAttribute.Code #> - <#= jT809MsgIdDescriptionAttribute.Name #> + /// <#= jT809MsgIdDescriptionAttribute.Code #> - <#= item #> /// auto-generated /// - public static JT809Package Create_<#= jT809MsgIdDescriptionAttribute.Name #>(this JT809BusinessType jT809BusinessType,<#= jT809BodiesTypeAttribute.JT809BodiesType.FullName #> bodies) + public static JT809Package Create_<#= item #>(this JT809BusinessType jT809BusinessType,<#= jT809BodiesTypeAttribute.JT809BodiesType.FullName #> bodies) { return Create<<#= jT809BodiesTypeAttribute.JT809BodiesType.FullName#>>(jT809BusinessType,bodies); } /// - /// <#= jT809MsgIdDescriptionAttribute.Code #> - <#= jT809MsgIdDescriptionAttribute.Name #> + /// <#= jT809MsgIdDescriptionAttribute.Code #> - <#= item #> /// auto-generated /// public static JT809Package Create(this JT809BusinessType jT809BusinessType, <#= jT809BodiesTypeAttribute.JT809BodiesType.FullName #> bodies) @@ -49,10 +49,10 @@ namespace JT809.Protocol.Extensions } /// - /// <#= jT809MsgIdDescriptionAttribute.Code #> - <#= jT809MsgIdDescriptionAttribute.Name #> + /// <#= jT809MsgIdDescriptionAttribute.Code #> - <#= item #> /// auto-generated /// - public static JT809Package Create_<#= jT809MsgIdDescriptionAttribute.Name #>(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, <#= jT809BodiesTypeAttribute.JT809BodiesType.FullName #> bodies) + public static JT809Package Create_<#= item #>(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, <#= jT809BodiesTypeAttribute.JT809BodiesType.FullName #> bodies) { return Create<<#= jT809BodiesTypeAttribute.JT809BodiesType.FullName#>>(jT809BusinessType,jT809Header,bodies); } diff --git a/src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.cs b/src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.cs index 5e68c66..e90666e 100644 --- a/src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.cs +++ b/src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.cs @@ -119,6 +119,15 @@ namespace JT809.Protocol.Extensions return Create(jT809SubBusinessType,subBodies); } /// + /// 4608 + /// UP_EXG_MSG_DRVLINE_INFO - 主动上报车辆行驶路线信息 + /// auto-generated + /// + public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120E Create_主动上报车辆行驶路线信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120E subBodies) + { + return Create(jT809SubBusinessType,subBodies); + } + /// /// 4864 /// UP_PLATFORM_MSG_POST_QUERY_ACK - 平台查岗应答消息 /// auto-generated @@ -137,6 +146,15 @@ namespace JT809.Protocol.Extensions return Create(jT809SubBusinessType,subBodies); } /// + /// 4864 + /// UP_PLATFORM_MSG_RETRAN_REQ - 上传平台间消息补传请求消息 + /// auto-generated + /// + public static JT809.Protocol.SubMessageBody.JT809_0x1300_0x1303 Create_上传平台间消息补传请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1303 subBodies) + { + return Create(jT809SubBusinessType,subBodies); + } + /// /// 5120 /// UP_WARN_MSG_URGE_TODO_ACK - 报警督办应答消息 /// auto-generated @@ -156,14 +174,41 @@ namespace JT809.Protocol.Extensions } /// /// 5120 - /// UP_WARN_MSG_ADPT_TODO_INFO - 主动上报报警处理结果信息 + /// UP_WARN_MSG_ADPT_TODO_INFO_2013_UP_WARN_MSG_INFORM_TIPS_2019 - 主动上报报警处理结果信息2013_上报报警预警信息2019 /// auto-generated /// - public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403 Create_主动上报报警处理结果信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403 subBodies) + public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403 Create_主动上报报警处理结果信息2013_上报报警预警信息2019(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403 subBodies) { return Create(jT809SubBusinessType,subBodies); } /// + /// 5120 + /// UP_WARN_MSG_URGE_TODO_ACK_INFO - 上报报警督办应答消息 + /// auto-generated + /// + public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1411 Create_上报报警督办应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1411 subBodies) + { + return Create(jT809SubBusinessType,subBodies); + } + /// + /// 5120 + /// UP_WARN_MSG_URGE_TODO_ACK_INFO - 主动上报报警处理结果消息 + /// auto-generated + /// + public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1412 Create_主动上报报警处理结果消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1412 subBodies) + { + return Create(jT809SubBusinessType,subBodies); + } + /// + /// 5120 + /// UP_WARN_MSG_URGE_TODO_REQ_INFO - 上报报警督办请求消息 + /// auto-generated + /// + public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1413 Create_上报报警督办请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1413 subBodies) + { + return Create(jT809SubBusinessType,subBodies); + } + /// /// 5376 /// UP_CTRL_MSG_MONITOR_VEHICLE_ACK - 车辆单向监听应答 /// auto-generated @@ -218,6 +263,24 @@ namespace JT809.Protocol.Extensions return Create(jT809SubBusinessType,subBodies); } /// + /// 5632 + /// UP_BASE_MSG_DRVLINE_ADDED_REQ - 补报车辆行驶路线信息应答消息 + /// auto-generated + /// + public static JT809.Protocol.SubMessageBody.JT809_0x1600_0x1602 Create_补报车辆行驶路线信息应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1600_0x1602 subBodies) + { + return Create(jT809SubBusinessType,subBodies); + } + /// + /// 37376 + /// DOWN_EXG_MSG_REGISTER_ACK - 车辆注册信息应答消息 + /// auto-generated + /// + public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9201 Create_车辆注册信息应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9201 subBodies) + { + return Create(jT809SubBusinessType,subBodies); + } + /// /// 37376 /// DOWN_EXG_MSG_CAR_LOCATION - 交换车辆定位信息消息 /// auto-generated @@ -308,6 +371,24 @@ namespace JT809.Protocol.Extensions return Create(jT809SubBusinessType,subBodies); } /// + /// 37376 + /// DOWN_BASE_MSG_DRVLINE_REQ - 上报车辆车辆行驶路线请求 + /// auto-generated + /// + public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x920C Create_上报车辆车辆行驶路线请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920C subBodies) + { + return Create(jT809SubBusinessType,subBodies); + } + /// + /// 37376 + /// DOWN_BASE_MSG_DRVLINE_ACK - 车辆行驶线路请求应答 + /// auto-generated + /// + public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x920D Create_车辆行驶线路请求应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920D subBodies) + { + return Create(jT809SubBusinessType,subBodies); + } + /// /// 37632 /// DOWN_PLATFORM_MSG_POST_QUERY_REQ - 平台查岗请求 /// auto-generated @@ -326,6 +407,15 @@ namespace JT809.Protocol.Extensions return Create(jT809SubBusinessType,subBodies); } /// + /// 37632 + /// DOWN_PLATFORM_MSG_RETRAN_REQ - 下发平台间消息补传请求消息 + /// auto-generated + /// + public static JT809.Protocol.SubMessageBody.JT809_0x9300_0x9303 Create_下发平台间消息补传请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9300_0x9303 subBodies) + { + return Create(jT809SubBusinessType,subBodies); + } + /// /// 37888 /// DOWN_WARN_MSG_URGE_TODO_REQ - 报警督办请求消息 /// auto-generated @@ -336,10 +426,10 @@ namespace JT809.Protocol.Extensions } /// /// 37888 - /// DOWN_WARN_MSG_INFORM_TIPS - 报警预警 + /// DOWN_WARN_MSG_INFORM_TIPS - 报警预警2013_下发报警预警消息2019 /// auto-generated /// - public static JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402 Create_报警预警(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402 subBodies) + public static JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402 Create_报警预警2013_下发报警预警消息2019(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402 subBodies) { return Create(jT809SubBusinessType,subBodies); } diff --git a/src/JT809.Protocol/JT809.Protocol.csproj b/src/JT809.Protocol/JT809.Protocol.csproj index ad2ffe9..4a1585d 100644 --- a/src/JT809.Protocol/JT809.Protocol.csproj +++ b/src/JT809.Protocol/JT809.Protocol.csproj @@ -96,19 +96,6 @@ - - - True - True - JT809PackageExtensionsTemplate.tt - - - True - True - JT809SubPackageExtensionsTemplate.tt - - - @@ -123,17 +110,9 @@ - - - TextTemplatingFileGenerator - JT809PackageExtensionsTemplate.cs - - - TextTemplatingFileGenerator - JT809SubPackageExtensionsTemplate.cs - + @@ -150,7 +129,14 @@ - + + TextTemplatingFileGenerator + JT809PackageExtensionsTemplate.cs + + + TextTemplatingFileGenerator + JT809SubPackageExtensionsTemplate.cs + diff --git a/src/JT809.Protocol/JT809Bodies.cs b/src/JT809.Protocol/JT809Bodies.cs index c321621..1255764 100644 --- a/src/JT809.Protocol/JT809Bodies.cs +++ b/src/JT809.Protocol/JT809Bodies.cs @@ -11,7 +11,7 @@ namespace JT809.Protocol /// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 /// public virtual bool SkipSerialization { get; set; } = false; - public virtual JT809Version Version => JT809Version.JTT2011; + public virtual JT809Version Version { get;} = JT809Version.JTT2011; public abstract ushort MsgId { get; } public abstract JT809_LinkType LinkType { get; } public abstract string Description { get; } diff --git a/src/JT809.Protocol/JT809Package.cs b/src/JT809.Protocol/JT809Package.cs index 942adc4..0e0854c 100644 --- a/src/JT809.Protocol/JT809Package.cs +++ b/src/JT809.Protocol/JT809Package.cs @@ -5,10 +5,11 @@ using JT809.Protocol.Formatters; using JT809.Protocol.Interfaces; using JT809.Protocol.MessagePack; using System; +using System.Text.Json; namespace JT809.Protocol { - public class JT809Package:IJT809MessagePackFormatter, IJT809_2019_Version + public class JT809Package:IJT809MessagePackFormatter, IJT809Analyze, IJT809_2019_Version { public const byte BEGINFLAG = 0X5B; @@ -174,5 +175,11 @@ namespace JT809.Protocol writer.WriteEncode(); // -----------组包完成---------- } + + public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config) + { +#warning Analyze NotImplementedException + throw new NotImplementedException(); + } } } diff --git a/src/JT809.Protocol/JT809Serializer.cs b/src/JT809.Protocol/JT809Serializer.cs index 52d3b18..0b86056 100644 --- a/src/JT809.Protocol/JT809Serializer.cs +++ b/src/JT809.Protocol/JT809Serializer.cs @@ -1,4 +1,5 @@ -using JT809.Protocol.Extensions; +using JT809.Protocol.Enums; +using JT809.Protocol.Extensions; using JT809.Protocol.Formatters; using JT809.Protocol.Interfaces; using JT809.Protocol.Internal; @@ -6,7 +7,9 @@ using JT809.Protocol.MessagePack; using System; using System.Buffers; using System.Collections.Generic; +using System.IO; using System.Text; +using System.Text.Json; namespace JT809.Protocol { @@ -103,5 +106,100 @@ namespace JT809.Protocol JT809ArrayPool.Return(buffer); } } + + + public string Analyze(ReadOnlySpan bytes,JsonWriterOptions options = default, int minBufferSize = 8096) + { + byte[] buffer = JT809ArrayPool.Rent(minBufferSize); + try + { + JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes); + jT809MessagePackReader.Decode(buffer); + using (MemoryStream memoryStream = new MemoryStream()) + using (Utf8JsonWriter utf8JsonWriter = new Utf8JsonWriter(memoryStream, options)) + { + jT809Package.Analyze(ref jT809MessagePackReader, utf8JsonWriter, jT809Config); + utf8JsonWriter.Flush(); + string value = Encoding.UTF8.GetString(memoryStream.ToArray()); + return value; + } + } + finally + { + JT809ArrayPool.Return(buffer); + } + } + + public string Analyze(ReadOnlySpan bytes,JsonWriterOptions options = default, int minBufferSize = 8096) + { + byte[] buffer = JT809ArrayPool.Rent(minBufferSize); + try + { + JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes); + if (CheckPackageType(typeof(T))) + jT809MessagePackReader.Decode(buffer); + var analyze = jT809Config.GetAnalyze(); + using (MemoryStream memoryStream = new MemoryStream()) + using (Utf8JsonWriter utf8JsonWriter = new Utf8JsonWriter(memoryStream, options)) + { + if (!CheckPackageType(typeof(T))) utf8JsonWriter.WriteStartObject(); + analyze.Analyze(ref jT809MessagePackReader, utf8JsonWriter, jT809Config); + if (!CheckPackageType(typeof(T))) utf8JsonWriter.WriteEndObject(); + utf8JsonWriter.Flush(); + string value = Encoding.UTF8.GetString(memoryStream.ToArray()); + return value; + } + } + finally + { + JT809ArrayPool.Return(buffer); + } + } + + public byte[] AnalyzeJsonBuffer(ReadOnlySpan bytes, JsonWriterOptions options = default, int minBufferSize = 8096) + { + byte[] buffer = JT809ArrayPool.Rent(minBufferSize); + try + { + JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes); + jT809MessagePackReader.Decode(buffer); + using (MemoryStream memoryStream = new MemoryStream()) + using (Utf8JsonWriter utf8JsonWriter = new Utf8JsonWriter(memoryStream, options)) + { + jT809Package.Analyze(ref jT809MessagePackReader, utf8JsonWriter, jT809Config); + utf8JsonWriter.Flush(); + return memoryStream.ToArray(); + } + } + finally + { + JT809ArrayPool.Return(buffer); + } + } + + public byte[] AnalyzeJsonBuffer(ReadOnlySpan bytes, JsonWriterOptions options = default, int minBufferSize = 8096) + { + byte[] buffer = JT809ArrayPool.Rent(minBufferSize); + try + { + JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes); + if (CheckPackageType(typeof(T))) + jT809MessagePackReader.Decode(buffer); + var analyze = jT809Config.GetAnalyze(); + using (MemoryStream memoryStream = new MemoryStream()) + using (Utf8JsonWriter utf8JsonWriter = new Utf8JsonWriter(memoryStream, options)) + { + if (!CheckPackageType(typeof(T))) utf8JsonWriter.WriteStartObject(); + analyze.Analyze(ref jT809MessagePackReader, utf8JsonWriter, jT809Config); + if (!CheckPackageType(typeof(T))) utf8JsonWriter.WriteEndObject(); + utf8JsonWriter.Flush(); + return memoryStream.ToArray(); + } + } + finally + { + JT809ArrayPool.Return(buffer); + } + } } } diff --git a/src/JT809.Protocol/MessageBody/JT809_2019_0x9101.cs b/src/JT809.Protocol/MessageBody/JT809_2019_0x9101.cs index a4286af..ec99dbd 100644 --- a/src/JT809.Protocol/MessageBody/JT809_2019_0x9101.cs +++ b/src/JT809.Protocol/MessageBody/JT809_2019_0x9101.cs @@ -19,7 +19,7 @@ namespace JT809.Protocol.MessageBody public class JT809_2019_0x9101 : JT809Bodies, IJT809MessagePackFormatter { public override ushort MsgId => JT809BusinessType.发送车辆定位信息数据量通知消息_2019.ToUInt16Value(); - public override string Description => "发送车辆定位信息数据量通知消息"; + public override string Description => "发送车辆定位信息数据量通知消息_2019"; public override JT809_LinkType LinkType => JT809_LinkType.main; public override JT809Version Version => JT809Version.JTT2019;