From 9993737ad42ea10c183b5d563a71d6fb99ef3ccc Mon Sep 17 00:00:00 2001
From: SmallChi <564952747@qq.com>
Date: Sun, 9 Jun 2019 23:07:57 +0800
Subject: [PATCH] =?UTF-8?q?v1.3.0=201.=E5=A2=9E=E5=8A=A0=E7=88=B6=E5=AD=90?=
=?UTF-8?q?=E5=91=BD=E4=BB=A4=E5=AD=97=E7=9A=84=E9=9D=99=E6=80=81=E5=BA=8F?=
=?UTF-8?q?=E5=88=97=E5=8C=96=E5=B7=A5=E5=8E=82=202.=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E7=88=B6=E5=AD=90=E5=91=BD=E4=BB=A4=E5=AD=97=E7=9A=84=E6=A8=A1?=
=?UTF-8?q?=E6=9D=BF=E5=88=9B=E5=BB=BA=203.=E4=BF=AE=E6=94=B9=E5=A4=B4?=
=?UTF-8?q?=E9=83=A8=E5=BA=8F=E5=88=97=E5=8C=96=E5=99=A8=E7=9A=84=E5=91=BD?=
=?UTF-8?q?=E5=90=8D=204.=E4=BF=AE=E5=A4=8D0x1600=5F0x1601=E5=BA=8F?=
=?UTF-8?q?=E5=88=97=E5=8C=96=E5=99=A8=205.=E5=A2=9E=E5=8A=A0=E7=88=B6?=
=?UTF-8?q?=E5=AD=90=E5=91=BD=E4=BB=A4=E5=AD=97=E6=A8=A1=E6=9D=BF=E5=88=9B?=
=?UTF-8?q?=E5=BB=BA=E6=B5=8B=E8=AF=95=206.=E4=BF=AE=E6=94=B9=E5=9F=BA?=
=?UTF-8?q?=E5=87=86=E6=B5=8B=E8=AF=95=E7=9A=84=E6=8A=A5=E5=91=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 80 +-
.../JT809.Protocol.Benchmark.csproj | 4 +-
...ocol.Extensions.DependencyInjection.csproj | 4 +-
.../JT809SubPackageExtensionsTest.cs | 90 +++
.../Extensions/JT809FormatterExtensions.cs | 10 +
.../Extensions/JT809PackageExtensions.cs | 34 +-
.../JT809PackageExtensionsTemplate.cs | 711 ++++++++++++++++++
.../JT809PackageExtensionsTemplate.tt | 63 ++
.../Extensions/JT809SubPackageExtensions.cs | 16 +
.../JT809SubPackageExtensionsTemplate.cs | 410 ++++++++++
.../JT809SubPackageExtensionsTemplate.tt | 51 ++
.../Formatters/IJT809FormatterOfT.cs | 7 +-
.../Formatters/JT809BodiesFormatter.cs | 17 +-
...tter.cs => JT809HeaderPackageFormatter.cs} | 39 +-
.../Formatters/JT809PackageFormatter.cs | 50 +-
...er.cs => JT809_0x1600_0x1601_Formatter.cs} | 2 +-
.../Internal/BusinessTypeSerializerFactory.cs | 138 ++++
.../SubBodiesTypeSerializerFactory.cs | 221 ++++++
src/JT809.Protocol/JT809.Protocol.csproj | 47 +-
src/JT809.Protocol/JT809HeaderPackage.cs | 2 +-
src/JT809.Protocol/JT809Serializer.cs | 17 +-
.../SubMessageBody/JT809_0x1600_0x1601.cs | 2 +-
.../SubMessageBody/JT809_0x9200_0x9204.cs | 2 +-
.../SubMessageBody/JT809_0x9200_0x920B.cs | 2 +-
24 files changed, 1900 insertions(+), 119 deletions(-)
create mode 100644 src/JT809.Protocol.Test/JT809Extensions/JT809SubPackageExtensionsTest.cs
create mode 100644 src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.cs
create mode 100644 src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.tt
create mode 100644 src/JT809.Protocol/Extensions/JT809SubPackageExtensions.cs
create mode 100644 src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.cs
create mode 100644 src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.tt
rename src/JT809.Protocol/Formatters/{JT809HeaderPackageFromatter.cs => JT809HeaderPackageFormatter.cs} (63%)
rename src/JT809.Protocol/Formatters/SubMessageBodyFormatters/{JT809_0x9600_0x1601_Formatter.cs => JT809_0x1600_0x1601_Formatter.cs} (93%)
create mode 100644 src/JT809.Protocol/Internal/BusinessTypeSerializerFactory.cs
create mode 100644 src/JT809.Protocol/Internal/SubBodiesTypeSerializerFactory.cs
diff --git a/README.md b/README.md
index 92b11a8..73bdce6 100644
--- a/README.md
+++ b/README.md
@@ -192,25 +192,35 @@ JT809GlobalConfig.Instance.SetHeaderOptions(new JT809HeaderOptions
});
// 根据业务类型创建对应包
-JT809Package jT809Package = JT809BusinessType.从链路报警信息交互消息.Create(new JT809_0x9400
-{
- VehicleNo = "粤A12345",
- VehicleColor = JT809VehicleColorType.黄色,
- SubBusinessType = JT809SubBusinessType.报警督办请求消息,
- JT809SubBodies = new JT809_0x9400_0x9401
+JT809Package jT809Package = JT809BusinessType.从链路报警信息交互消息.Create_从链路报警信息交互消息(
+ new JT809Header
+ {
+ MsgSN = 1666,
+ EncryptKey = 9999,
+ EncryptFlag = JT809Header_Encrypt.None,
+ Version = new JT809Header_Version(1, 0, 0),
+ MsgGNSSCENTERID = 20180920,
+ }, new JT809_0x9400
{
- WarnSrc = JT809WarnSrc.车载终端,
- WarnType = JT809WarnType.疲劳驾驶报警,
- WarnTime = DateTime.Parse("2018-09-27 10:24:00"),
- SupervisionID = "123FFAA1",
- SupervisionEndTime = DateTime.Parse("2018-09-27 11:24:00"),
- SupervisionLevel = 3,
- Supervisor = "smallchi",
- SupervisorTel = "12345678901",
- SupervisorEmail = "123456@qq.com"
+ VehicleNo = "粤A12345",
+ VehicleColor = JT809VehicleColorType.黄色,
+ SubBusinessType = JT809SubBusinessType.报警督办请求,
+ SubBodies = JT809SubBusinessType.报警督办请求.Create_报警督办请求(
+ new JT809_0x9400_0x9401
+ {
+ WarnSrc = JT809WarnSrc.车载终端,
+ WarnType = JT809WarnType.疲劳驾驶报警,
+ WarnTime = DateTime.Parse("2018-09-27 10:24:00"),
+ SupervisionID = "123FFAA1",
+ SupervisionEndTime = DateTime.Parse("2018-09-27 11:24:00"),
+ SupervisionLevel = 3,
+ Supervisor = "smallchi",
+ SupervisorTel = "12345678901",
+ SupervisorEmail = "123456@qq.com"
+ })
}
-});
-var hex = JT809Serializer.Serialize(jT809Package);
+);
+var hex = JT809Serializer.Serialize(jT809Package).ToHexString();
```
### 举个栗子3
@@ -296,29 +306,29 @@ static async Task Main(string[] args)
``` ini
-BenchmarkDotNet=v0.11.3, OS=Windows 10.0.17134.472 (1803/April2018Update/Redstone4)
+BenchmarkDotNet=v0.11.5, OS=Windows 10.0.17763.379 (1809/October2018Update/Redstone5)
Intel Core i7-8700K CPU 3.70GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
- [Host] : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
- Job-FVMQGI : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3260.0
- Job-LGLQDK : .NET Core 2.2.1 (CoreCLR 4.6.27207.03, CoreFX 4.6.27207.03), 64bit RyuJIT
+ [Host] : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3362.0
+ Job-FVMQGI : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3362.0
+ Job-LGLQDK : .NET Core 2.2.5 (CoreCLR 4.6.27617.05, CoreFX 4.6.27618.01), 64bit RyuJIT
Platform=AnyCpu Runtime=Clr Server=False
```
-| Method | Toolchain | N | Mean | Error | StdDev | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
-|---------------------------------------- |-------------- |------- |-------------:|-----------:|-----------:|------------:|------------:|------------:|--------------------:|
-| **JT809_0x9400_0x9401_Package_Deserialize** | **Default** | **100** | **3.401 ms** | **0.0665 ms** | **0.0792 ms** | **70.3125** | **-** | **-** | **447.72 KB** |
-| JT809_0x9400_0x9401_Package_Serialize | Default | 100 | 3.809 ms | 0.0633 ms | 0.0592 ms | 74.2188 | - | - | 460.91 KB |
-| JT809_0x9400_0x9401_Package_Deserialize | .NET Core 2.2 | 100 | 2.571 ms | 0.0456 ms | 0.0427 ms | 62.5000 | - | - | 403.5 KB |
-| JT809_0x9400_0x9401_Package_Serialize | .NET Core 2.2 | 100 | 2.830 ms | 0.0324 ms | 0.0271 ms | 66.4063 | - | - | 408.27 KB |
-| **JT809_0x9400_0x9401_Package_Deserialize** | **Default** | **10000** | **339.987 ms** | **4.6700 ms** | **4.3683 ms** | **7000.0000** | **-** | **-** | **44784.51 KB** |
-| JT809_0x9400_0x9401_Package_Serialize | Default | 10000 | 381.159 ms | 7.0290 ms | 6.5749 ms | 7000.0000 | - | - | 46096.55 KB |
-| JT809_0x9400_0x9401_Package_Deserialize | .NET Core 2.2 | 10000 | 251.317 ms | 4.9186 ms | 4.6009 ms | 6000.0000 | - | - | 40374.08 KB |
-| JT809_0x9400_0x9401_Package_Serialize | .NET Core 2.2 | 10000 | 280.964 ms | 4.4244 ms | 3.6946 ms | 6000.0000 | - | - | 40837.81 KB |
-| **JT809_0x9400_0x9401_Package_Deserialize** | **Default** | **100000** | **3,415.104 ms** | **66.8704 ms** | **68.6710 ms** | **72000.0000** | **-** | **-** | **447679.84 KB** |
-| JT809_0x9400_0x9401_Package_Serialize | Default | 100000 | 3,866.718 ms | 26.2001 ms | 23.2257 ms | 75000.0000 | - | - | 460885.07 KB |
-| JT809_0x9400_0x9401_Package_Deserialize | .NET Core 2.2 | 100000 | 2,549.544 ms | 23.0695 ms | 20.4505 ms | 65000.0000 | - | - | 403220.45 KB |
-| JT809_0x9400_0x9401_Package_Serialize | .NET Core 2.2 | 100000 | 2,747.892 ms | 36.6155 ms | 34.2502 ms | 66000.0000 | - | - | 407869.06 KB |
+| Method | Toolchain | N | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
+|---------------------------------------- |-------------- |------- |-------------:|--------------:|--------------:|-----------:|------:|------:|-------------:|
+| **JT809_0x9400_0x9401_Package_Deserialize** | **Default** | **100** | **203.8 us** | **0.5634 us** | **0.4995 us** | **21.9727** | **-** | **-** | **135.16 KB** |
+| JT809_0x9400_0x9401_Package_Serialize | Default | 100 | 321.9 us | 1.4627 us | 1.2967 us | 20.5078 | - | - | 128.91 KB |
+| JT809_0x9400_0x9401_Package_Deserialize | .NET Core 2.2 | 100 | 142.8 us | 0.5950 us | 0.5274 us | 21.9727 | - | - | 135.16 KB |
+| JT809_0x9400_0x9401_Package_Serialize | .NET Core 2.2 | 100 | 195.8 us | 0.6448 us | 0.5716 us | 20.7520 | - | - | 128.91 KB |
+| **JT809_0x9400_0x9401_Package_Deserialize** | **Default** | **10000** | **21,072.4 us** | **38.5387 us** | **32.1815 us** | **2187.5000** | **-** | **-** | **13515.94 KB** |
+| JT809_0x9400_0x9401_Package_Serialize | Default | 10000 | 31,782.0 us | 117.6549 us | 91.8572 us | 2062.5000 | - | - | 12891.23 KB |
+| JT809_0x9400_0x9401_Package_Deserialize | .NET Core 2.2 | 10000 | 14,103.7 us | 39.9789 us | 35.4402 us | 2187.5000 | - | - | 13515.63 KB |
+| JT809_0x9400_0x9401_Package_Serialize | .NET Core 2.2 | 10000 | 19,754.9 us | 63.4952 us | 56.2868 us | 2093.7500 | - | - | 12890.63 KB |
+| **JT809_0x9400_0x9401_Package_Deserialize** | **Default** | **100000** | **210,655.4 us** | **702.2667 us** | **586.4245 us** | **21666.6667** | **-** | **-** | **135159.23 KB** |
+| JT809_0x9400_0x9401_Package_Serialize | Default | 100000 | 318,362.4 us | 1,623.0459 us | 1,518.1981 us | 20000.0000 | - | - | 128914.17 KB |
+| JT809_0x9400_0x9401_Package_Deserialize | .NET Core 2.2 | 100000 | 142,826.0 us | 611.7525 us | 572.2337 us | 21750.0000 | - | - | 135156.25 KB |
+| JT809_0x9400_0x9401_Package_Serialize | .NET Core 2.2 | 100000 | 198,473.8 us | 585.6268 us | 519.1429 us | 20666.6667 | - | - | 128906.25 KB |
## JT809协议消息对照表
diff --git a/src/JT809.Protocol.Benchmark/JT809.Protocol.Benchmark.csproj b/src/JT809.Protocol.Benchmark/JT809.Protocol.Benchmark.csproj
index de8359d..417a34d 100644
--- a/src/JT809.Protocol.Benchmark/JT809.Protocol.Benchmark.csproj
+++ b/src/JT809.Protocol.Benchmark/JT809.Protocol.Benchmark.csproj
@@ -6,9 +6,9 @@
-
+
-
+
diff --git a/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj b/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj
index 1d19415..5bce2a0 100644
--- a/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj
+++ b/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj
@@ -12,9 +12,9 @@
false
https://github.com/SmallChi/JT809
https://github.com/SmallChi/JT809
- https://github.com/SmallChi/JT809/blob/master/LICENSE
+ https://github.com/SmallChi/JT809/blob/master/LICENSE
true
- 1.2.1
+ 1.3.0
diff --git a/src/JT809.Protocol.Test/JT809Extensions/JT809SubPackageExtensionsTest.cs b/src/JT809.Protocol.Test/JT809Extensions/JT809SubPackageExtensionsTest.cs
new file mode 100644
index 0000000..3f091f4
--- /dev/null
+++ b/src/JT809.Protocol.Test/JT809Extensions/JT809SubPackageExtensionsTest.cs
@@ -0,0 +1,90 @@
+using JT809.Protocol.Attributes;
+using JT809.Protocol.Enums;
+using JT809.Protocol.Extensions;
+using JT809.Protocol.MessageBody;
+using JT809.Protocol.SubMessageBody;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Xunit;
+
+namespace JT809.Protocol.Test.JT809Extensions
+{
+ public class JT809SubPackageExtensionsTest
+ {
+ [Fact]
+ public void Test1()
+ {
+ var types = Enum.GetNames(typeof(JT809SubBusinessType));
+ foreach (var item in types)
+ {
+ JT809SubBusinessType jT809SubBusinessType = item.ToEnum();
+ JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = jT809SubBusinessType.GetAttribute();
+ JT809SubBusinessTypeDescriptionAttribute jT809SubBusinessTypeDescriptionAttribute = jT809SubBusinessType.GetAttribute();
+ if (jT809SubBusinessType == JT809SubBusinessType.None)
+ {
+ Assert.Null(jT809SubBodiesTypeAttribute);
+ Assert.Null(jT809SubBusinessTypeDescriptionAttribute);
+ continue;
+ }
+ Assert.NotNull(jT809SubBusinessTypeDescriptionAttribute.Code);
+ Assert.NotNull(jT809SubBusinessTypeDescriptionAttribute.Name);
+ }
+ }
+
+ [Fact]
+ public void Create_0x1001_Test()
+ {
+ JT809Package jT809Package= JT809BusinessType.主链路登录请求消息.Create_主链路登录请求消息(new JT809Header
+ {
+ MsgSN = 133,
+ EncryptKey = 9999,
+ MsgGNSSCENTERID = 20180920,
+ }, new MessageBody.JT809_0x1001
+ {
+ UserId = 20180920,
+ Password = "20180920",
+ DownLinkIP = "127.0.0.1",
+ DownLinkPort = 809
+ });
+ var hex = JT809Serializer.Serialize(jT809Package).ToHexString();
+ Assert.Equal("5B000000480000008510010133EFB8010000000000270F0133EFB832303138303932303132372E302E302E31000000000000000000000000000000000000000000000003296A915D", hex);
+ }
+
+ [Fact]
+ public void Create_JT809_0x9400_0x9401_Test()
+ {
+ JT809Package jT809Package = JT809BusinessType.从链路报警信息交互消息.Create_从链路报警信息交互消息(
+ new JT809Header
+ {
+ MsgSN = 1666,
+ EncryptKey = 9999,
+ EncryptFlag = JT809Header_Encrypt.None,
+ Version = new JT809Header_Version(1, 0, 0),
+ MsgGNSSCENTERID = 20180920,
+ }, new JT809_0x9400
+ {
+ VehicleNo = "粤A12345",
+ VehicleColor = JT809VehicleColorType.黄色,
+ SubBusinessType = JT809SubBusinessType.报警督办请求,
+ SubBodies = JT809SubBusinessType.报警督办请求.Create_报警督办请求(
+ new JT809_0x9400_0x9401
+ {
+ WarnSrc = JT809WarnSrc.车载终端,
+ WarnType = JT809WarnType.疲劳驾驶报警,
+ WarnTime = DateTime.Parse("2018-09-27 10:24:00"),
+ SupervisionID = "123FFAA1",
+ SupervisionEndTime = DateTime.Parse("2018-09-27 11:24:00"),
+ SupervisionLevel = 3,
+ Supervisor = "smallchi",
+ SupervisorTel = "12345678901",
+ SupervisorEmail = "123456@qq.com"
+ })
+ }
+ );
+ var hex = JT809Serializer.Serialize(jT809Package).ToHexString();
+ Assert.Equal("5B000000920000068294000133EFB8010000000000270FD4C1413132333435000000000000000000000000000294010000005C010002000000005A01AC3F40123FFAA1000000005A01AC4D5003736D616C6C636869000000000000000031323334353637383930310000000000000000003132333435364071712E636F6D00000000000000000000000000000000000000BAD85D", hex);
+ }
+ }
+}
diff --git a/src/JT809.Protocol/Extensions/JT809FormatterExtensions.cs b/src/JT809.Protocol/Extensions/JT809FormatterExtensions.cs
index 4af8775..1ae3b4c 100644
--- a/src/JT809.Protocol/Extensions/JT809FormatterExtensions.cs
+++ b/src/JT809.Protocol/Extensions/JT809FormatterExtensions.cs
@@ -46,5 +46,15 @@ namespace JT809.Protocol.Extensions
}
return formatter;
}
+
+ static JT809FormatterExtensions()
+ {
+ PackageFormatter = (JT809PackageFormatter)GetFormatter();
+ HeaderPackageFormatter = (JT809HeaderPackageFormatter)GetFormatter();
+ HeaderFormatter = (JT809HeaderFormatter)GetFormatter();
+ }
+ public static JT809PackageFormatter PackageFormatter { get; }
+ public static JT809HeaderPackageFormatter HeaderPackageFormatter { get; }
+ public static JT809HeaderFormatter HeaderFormatter { get; }
}
}
diff --git a/src/JT809.Protocol/Extensions/JT809PackageExtensions.cs b/src/JT809.Protocol/Extensions/JT809PackageExtensions.cs
index 910c383..2b775c5 100644
--- a/src/JT809.Protocol/Extensions/JT809PackageExtensions.cs
+++ b/src/JT809.Protocol/Extensions/JT809PackageExtensions.cs
@@ -5,7 +5,7 @@ using System.Text;
namespace JT809.Protocol.Extensions
{
- public static class JT809PackageExtensions
+ public static partial class JT809PackageExtensions
{
public static JT809Package Create(this JT809BusinessType jT809BusinessType, TJT809Bodies jT809Bodies)
where TJT809Bodies: JT809Bodies
@@ -38,5 +38,37 @@ namespace JT809.Protocol.Extensions
};
return jT809Package;
}
+
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809Header jT809Header, TJT809Bodies jT809Bodies)
+ where TJT809Bodies : JT809Bodies
+ {
+ JT809Package jT809Package = new JT809Package();
+ jT809Package.Bodies = jT809Bodies;
+ jT809Package.Header = new JT809Header()
+ {
+ BusinessType = jT809BusinessType,
+ MsgSN = jT809Header.MsgSN,
+ EncryptFlag = jT809Header.EncryptFlag,
+ EncryptKey = jT809Header.EncryptKey,
+ MsgGNSSCENTERID = jT809Header.MsgGNSSCENTERID,
+ Version = jT809Header.Version
+ };
+ return jT809Package;
+ }
+
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809Header jT809Header)
+ {
+ JT809Package jT809Package = new JT809Package();
+ jT809Package.Header = new JT809Header()
+ {
+ BusinessType = jT809BusinessType,
+ MsgSN = jT809Header.MsgSN,
+ EncryptFlag = jT809Header.EncryptFlag,
+ EncryptKey = jT809Header.EncryptKey,
+ MsgGNSSCENTERID = jT809Header.MsgGNSSCENTERID,
+ Version = jT809Header.Version
+ };
+ return jT809Package;
+ }
}
}
diff --git a/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.cs b/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.cs
new file mode 100644
index 0000000..3a37f1c
--- /dev/null
+++ b/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.cs
@@ -0,0 +1,711 @@
+
+using JT809.Protocol.Enums;
+
+namespace JT809.Protocol.Extensions
+{
+ public static partial class JT809PackageExtensions
+ {
+ ///
+ /// UP_CONNECT_REQ - 主链路登录请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路登录请求消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1001 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_CONNECT_REQ - 主链路登录请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1001 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_CONNECT_REQ - 主链路登录请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路登录请求消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1001 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_CONNECT_RSP - 主链路登录应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路登录应答消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1002 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_CONNECT_RSP - 主链路登录应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1002 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_CONNECT_RSP - 主链路登录应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路登录应答消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1002 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_DISCONNECT_REQ - 主链路注销请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路注销请求消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1003 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_DISCONNECT_REQ - 主链路注销请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1003 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_DISCONNECT_REQ - 主链路注销请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路注销请求消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1003 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_DISCONNECT_RSP - 主链路注销应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路注销应答消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1004 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_DISCONNECT_RSP - 主链路注销应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1004 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_DISCONNECT_RSP - 主链路注销应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路注销应答消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1004 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_LINKTEST_REQ - 主链路连接保持请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路连接保持请求消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1005 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_LINKTEST_REQ - 主链路连接保持请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1005 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_LINKTEST_REQ - 主链路连接保持请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路连接保持请求消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1005 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_LINKTEST_RSP - 主链路连接保持应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路连接保持应答消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1006 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_LINKTEST_RSP - 主链路连接保持应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1006 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_LINKTEST_RSP - 主链路连接保持应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路连接保持应答消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1006 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_DISCONNECT_INFORM - 主链路断开通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路断开通知消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1007 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_DISCONNECT_INFORM - 主链路断开通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1007 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_DISCONNECT_INFORM - 主链路断开通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路断开通知消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1007 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_下级平台主动关闭链路通知消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1008 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1008 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_CLOSELINK_INFORM - 下级平台主动关闭链路通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_下级平台主动关闭链路通知消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1008 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_EXG_MSG - 主链路动态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路动态信息交换消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1200 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_EXG_MSG - 主链路动态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1200 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_EXG_MSG - 主链路动态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路动态信息交换消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1200 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_PLATFORM_MSG - 主链路平台间信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路平台间信息交互消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1300 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_PLATFORM_MSG - 主链路平台间信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1300 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_PLATFORM_MSG - 主链路平台间信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路平台间信息交互消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1300 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_WARN_MSG - 主链路报警信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路报警信息交互消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1400 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_WARN_MSG - 主链路报警信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1400 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_WARN_MSG - 主链路报警信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路报警信息交互消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1400 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_CTRL_MSG - 主链路车辆监管消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路车辆监管消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1500 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_CTRL_MSG - 主链路车辆监管消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1500 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_CTRL_MSG - 主链路车辆监管消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路车辆监管消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1500 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// UP_BASE_MSG - 主链路静态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路静态信息交换消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x1600 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_BASE_MSG - 主链路静态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x1600 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// UP_BASE_MSG - 主链路静态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_主链路静态信息交换消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x1600 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_CONNECT_REQ - 从链路连接请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路连接请求消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9001 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_CONNECT_REQ - 从链路连接请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9001 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_CONNECT_REQ - 从链路连接请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路连接请求消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9001 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_CONNECT_RSP - 从链路连接应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路连接应答消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9002 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_CONNECT_RSP - 从链路连接应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9002 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_CONNECT_RSP - 从链路连接应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路连接应答消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9002 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_DISCONNECT_REQ - 从链路注销请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路注销请求消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9003 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_DISCONNECT_REQ - 从链路注销请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9003 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_DISCONNECT_REQ - 从链路注销请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路注销请求消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9003 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_DISCONNECT_RSP - 从链路注销应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路注销应答消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9004 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_DISCONNECT_RSP - 从链路注销应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9004 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_DISCONNECT_RSP - 从链路注销应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路注销应答消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9004 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_LINKTEST_REQ - 从链路连接保持请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路连接保持请求消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9005 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_LINKTEST_REQ - 从链路连接保持请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9005 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_LINKTEST_REQ - 从链路连接保持请求消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路连接保持请求消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9005 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_LINKTEST_RSP - 从链路连接保持应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路连接保持应答消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9006 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_LINKTEST_RSP - 从链路连接保持应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9006 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_LINKTEST_RSP - 从链路连接保持应答消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路连接保持应答消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9006 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_DISCONNECT_INFORM - 从链路断开通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路断开通知消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9007 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_DISCONNECT_INFORM - 从链路断开通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9007 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_DISCONNECT_INFORM - 从链路断开通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路断开通知消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9007 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_CLOSELINK_INFORM - 上级平台主动关闭链路通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_上级平台主动关闭链路通知消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9008 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_CLOSELINK_INFORM - 上级平台主动关闭链路通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9008 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_CLOSELINK_INFORM - 上级平台主动关闭链路通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_上级平台主动关闭链路通知消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9008 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_接收定位信息数量通知消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9101 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9101 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_TOTAL_RECV_BACK_MSG - 接收定位信息数量通知消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_接收定位信息数量通知消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9101 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_EXG_MSG - 从链路动态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路动态信息交换消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9200 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_EXG_MSG - 从链路动态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9200 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_EXG_MSG - 从链路动态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路动态信息交换消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9200 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_PLATFORM_MSG - 从链路平台间信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路平台间信息交互消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9300 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_PLATFORM_MSG - 从链路平台间信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9300 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_PLATFORM_MSG - 从链路平台间信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路平台间信息交互消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9300 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_WARN_MSG - 从链路报警信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路报警信息交互消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9400 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_WARN_MSG - 从链路报警信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9400 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_WARN_MSG - 从链路报警信息交互消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路报警信息交互消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9400 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_CTRL_MSG - 从链路车辆监管消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路车辆监管消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9500 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_CTRL_MSG - 从链路车辆监管消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9500 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_CTRL_MSG - 从链路车辆监管消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路车辆监管消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9500 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ ///
+ /// DOWN_BASE_MSG - 从链路静态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路静态信息交换消息(this JT809BusinessType jT809BusinessType,JT809.Protocol.MessageBody.JT809_0x9600 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_BASE_MSG - 从链路静态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, JT809.Protocol.MessageBody.JT809_0x9600 bodies)
+ {
+ return Create(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// DOWN_BASE_MSG - 从链路静态信息交换消息
+ /// auto-generated
+ ///
+ public static JT809Package Create_从链路静态信息交换消息(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, JT809.Protocol.MessageBody.JT809_0x9600 bodies)
+ {
+ return Create(jT809BusinessType,jT809Header,bodies);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.tt b/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.tt
new file mode 100644
index 0000000..87db0b3
--- /dev/null
+++ b/src/JT809.Protocol/Extensions/JT809PackageExtensionsTemplate.tt
@@ -0,0 +1,63 @@
+<#@ template debug="false" hostspecific="false" language="C#" #>
+<#@ assembly name="netstandard" #>
+<#@ assembly name="System.Core" #>
+<#@ assembly name="System" #>
+<#@ assembly name="$(TargetPath)" #>
+<#@ import namespace="JT809.Protocol" #>
+<#@ import namespace="JT809.Protocol.Enums" #>
+<#@ import namespace="JT809.Protocol.Extensions" #>
+<#@ import namespace="JT809.Protocol.Attributes" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Text" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.Reflection" #>
+<#@ output extension=".cs" #>
+
+<#
+ var types=Enum.GetNames(typeof(JT809BusinessType));
+#>
+using JT809.Protocol.Enums;
+
+namespace JT809.Protocol.Extensions
+{
+ public static partial class JT809PackageExtensions
+ {
+ <#
+ foreach (var item in types)
+ {
+ JT809BusinessType jT809BusinessType = item.ToEnum();
+ JT809BodiesTypeAttribute jT809BodiesTypeAttribute = jT809BusinessType.GetAttribute();
+ JT809BusinessTypeDescriptionAttribute jT809MsgIdDescriptionAttribute = jT809BusinessType.GetAttribute();
+
+#>
+ ///
+ /// <#= jT809MsgIdDescriptionAttribute.Code #> - <#= jT809MsgIdDescriptionAttribute.Name #>
+ /// auto-generated
+ ///
+ public static JT809Package Create_<#= jT809MsgIdDescriptionAttribute.Name #>(this JT809BusinessType jT809BusinessType,<#= jT809BodiesTypeAttribute.JT809BodiesType.FullName #> bodies)
+ {
+ return Create<<#= jT809BodiesTypeAttribute.JT809BodiesType.FullName#>>(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// <#= jT809MsgIdDescriptionAttribute.Code #> - <#= jT809MsgIdDescriptionAttribute.Name #>
+ /// auto-generated
+ ///
+ public static JT809Package Create(this JT809BusinessType jT809BusinessType, <#= jT809BodiesTypeAttribute.JT809BodiesType.FullName #> bodies)
+ {
+ return Create<<#= jT809BodiesTypeAttribute.JT809BodiesType.FullName#>>(jT809BusinessType,bodies);
+ }
+
+ ///
+ /// <#= jT809MsgIdDescriptionAttribute.Code #> - <#= jT809MsgIdDescriptionAttribute.Name #>
+ /// auto-generated
+ ///
+ public static JT809Package Create_<#= jT809MsgIdDescriptionAttribute.Name #>(this JT809BusinessType jT809BusinessType,JT809Header jT809Header, <#= jT809BodiesTypeAttribute.JT809BodiesType.FullName #> bodies)
+ {
+ return Create<<#= jT809BodiesTypeAttribute.JT809BodiesType.FullName#>>(jT809BusinessType,jT809Header,bodies);
+ }
+<#
+ }
+#>
+ }
+}
\ No newline at end of file
diff --git a/src/JT809.Protocol/Extensions/JT809SubPackageExtensions.cs b/src/JT809.Protocol/Extensions/JT809SubPackageExtensions.cs
new file mode 100644
index 0000000..17dc8e6
--- /dev/null
+++ b/src/JT809.Protocol/Extensions/JT809SubPackageExtensions.cs
@@ -0,0 +1,16 @@
+using JT809.Protocol.Enums;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.Extensions
+{
+ public static partial class JT809SubPackageExtensions
+ {
+ public static TJT809SubBodies Create(this JT809SubBusinessType jT809SubBusinessType, TJT809SubBodies jT809SubBodies)
+ where TJT809SubBodies : JT809SubBodies
+ {
+ return jT809SubBodies;
+ }
+ }
+}
diff --git a/src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.cs b/src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.cs
new file mode 100644
index 0000000..67c9184
--- /dev/null
+++ b/src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.cs
@@ -0,0 +1,410 @@
+
+using JT809.Protocol.Enums;
+
+namespace JT809.Protocol.Extensions
+{
+ ///
+ /// 子命令包
+ /// auto-generated
+ ///
+ public static partial class JT809SubPackageExtensions
+ {
+
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_REGISTER - 上传车辆注册信息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1201 Create_上传车辆注册信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1201 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_REAL_LOCATION - 实时上传车辆定位信息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1202 Create_实时上传车辆定位信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1202 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_HISTORY_LOCATION - 车辆定位信息自动补报
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1203 Create_车辆定位信息自动补报(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1203 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_RETURN_STARTUP_ACK - 启动车辆定位信息交换应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1205 Create_启动车辆定位信息交换应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1205 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_RETURN_END_ACK - 结束车辆定位信息交换应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1206 Create_结束车辆定位信息交换应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1206 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP - 申请交换指定车辆定位信息请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1207 Create_申请交换指定车辆定位信息请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1207 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_APPLY_FOR_MONITOR_END - 取消交换指定车辆定位信息请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208 Create_取消交换指定车辆定位信息请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1208 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_APPLY_HISGNSSDATA_REQ - 补发车辆定位信息请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x1209 Create_补发车辆定位信息请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x1209 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_REPORT_DRIVER_INFO_ACK - 上报车辆驾驶员身份识别信息应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120A Create_上报车辆驾驶员身份识别信息应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120A subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_TAKE_EWAYBILL_ACK - 上报车辆电子运单应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120B Create_上报车辆电子运单应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120B subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_REPORT_DRIVER_INFO - 主动上报驾驶员身份信息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120C Create_主动上报驾驶员身份信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120C subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路动态信息交换消息
+ /// UP_EXG_MSG_REPORT_EWAYBILL_INFO - 主动上报车辆电子运单信息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1200_0x120D Create_主动上报车辆电子运单信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1200_0x120D subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路平台间信息交互消息
+ /// UP_PLATFORM_MSG_POST_QUERY_ACK - 平台查岗应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1300_0x1301 Create_平台查岗应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1301 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路平台间信息交互消息
+ /// UP_PLATFORM_MSG_INFO_ACK - 下发平台间报文应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1300_0x1302 Create_下发平台间报文应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1300_0x1302 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路报警信息交互消息
+ /// UP_WARN_MSG_URGE_TODO_ACK - 报警督办应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1401 Create_报警督办应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1401 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路报警信息交互消息
+ /// UP_WARN_MSG_ADPT_INFO - 上报报警信息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1402 Create_上报报警信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1402 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路报警信息交互消息
+ /// UP_WARN_MSG_ADPT_TODO_INFO - 主动上报报警处理结果信息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403 Create_主动上报报警处理结果信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1400_0x1403 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路车辆监管消息
+ /// UP_CTRL_MSG_MONITOR_VEHICLE_ACK - 车辆单向监听应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1500_0x1501 Create_车辆单向监听应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1501 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路车辆监管消息
+ /// UP_CTRL_MSG_TAKE_PHOTO_ACK - 车辆拍照应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1500_0x1502 Create_车辆拍照应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1502 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路车辆监管消息
+ /// UP_CTRL_MSG_TEXT_INFO_ACK - 下发车辆报文应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1500_0x1503 Create_下发车辆报文应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1503 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路车辆监管消息
+ /// UP_CTRL_MSG_TAKE_TRAVEL_ACK - 上报车辆行驶记录应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504 Create_上报车辆行驶记录应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路车辆监管消息
+ /// UP_CTRL_MSG_EMERGENCY_MONITORING_ACK - 车辆应急接入监管平台应答消息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1500_0x1505 Create_车辆应急接入监管平台应答消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1500_0x1505 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 主链路静态信息交换消息
+ /// UP_BASE_MSG_VEHICLE_ADDED_ACK - 补报车辆静态信息应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x1600_0x1601 Create_补报车辆静态信息应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x1600_0x1601 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路动态信息交换消息
+ /// DOWN_EXG_MSG_CAR_LOCATION - 交换车辆定位信息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9202 Create_交换车辆定位信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9202 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路动态信息交换消息
+ /// DOWN_EXG_MSG_HISTORY_ARCOSSAREA - 车辆定位信息交换补发
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9203 Create_车辆定位信息交换补发(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9203 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路动态信息交换消息
+ /// DOWN_EXG_MSG_CAR_INFO - 交换车辆静态信息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9204 Create_交换车辆静态信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9204 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路动态信息交换消息
+ /// DOWN_EXG_MSG_RETURN_STARTUP - 启动车辆定位信息交换请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9205 Create_启动车辆定位信息交换请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9205 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路动态信息交换消息
+ /// DOWN_EXG_MSG_RETURN_END - 结束车辆定位信息交换请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9206 Create_结束车辆定位信息交换请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9206 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路动态信息交换消息
+ /// DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK - 申请交换指定车辆定位信息应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9207 Create_申请交换指定车辆定位信息应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9207 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路动态信息交换消息
+ /// DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK - 取消交换指定车辆定位信息应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9208 Create_取消交换指定车辆定位信息应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9208 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路动态信息交换消息
+ /// DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK - 补发车辆定位信息应答
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209 Create_补发车辆定位信息应答(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x9209 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路动态信息交换消息
+ /// DOWN_EXG_MSG_REPORT_DRIVER_INFO - 上报车辆驾驶员身份识别信息请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x920A Create_上报车辆驾驶员身份识别信息请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920A subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路动态信息交换消息
+ /// DOWN_EXG_MSG_TAKE_EWAYBILL_REQ - 上报车辆电子运单请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9200_0x920B Create_上报车辆电子运单请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9200_0x920B subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路平台间信息交互消息
+ /// DOWN_PLATFORM_MSG_POST_QUERY_REQ - 平台查岗请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9300_0x9301 Create_平台查岗请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9300_0x9301 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路平台间信息交互消息
+ /// DOWN_PLATFORM_MSG_INFO_REQ - 下发平台间报文请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9300_0x9302 Create_下发平台间报文请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9300_0x9302 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路报警信息交互消息
+ /// DOWN_WARN_MSG_URGE_TODO_REQ - 报警督办请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9400_0x9401 Create_报警督办请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9401 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路报警信息交互消息
+ /// DOWN_WARN_MSG_INFORM_TIPS - 报警预警
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402 Create_报警预警(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9402 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路报警信息交互消息
+ /// DOWN_WARN_MSG_EXG_INFORM - 实时交换报警信息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9400_0x9403 Create_实时交换报警信息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9400_0x9403 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路车辆监管消息
+ /// DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ - 车辆单向监听请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9501 Create_车辆单向监听请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9501 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路车辆监管消息
+ /// DOWN_CTRL_MSG_TAKE_PHOTO_REQ - 车辆拍照请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9502 Create_车辆拍照请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9502 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路车辆监管消息
+ /// DOWN_CTRL_MSG_TEXT_INFO - 下发车辆报文请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9503 Create_下发车辆报文请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9503 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路车辆监管消息
+ /// DOWN_CTRL_MSG_TAKE_TRAVEL_REQ - 上报车辆行驶记录请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9504 Create_上报车辆行驶记录请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9504 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路车辆监管消息
+ /// DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ - 车辆应急接入监管平台请求消息
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9500_0x9505 Create_车辆应急接入监管平台请求消息(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9500_0x9505 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ ///
+ /// 从链路静态信息交换消息
+ /// DOWN_BASE_MSG_VEHICLE_ADDED - 补报车辆静态信息请求
+ /// auto-generated
+ ///
+ public static JT809.Protocol.SubMessageBody.JT809_0x9600_0x9601 Create_补报车辆静态信息请求(this JT809SubBusinessType jT809SubBusinessType,JT809.Protocol.SubMessageBody.JT809_0x9600_0x9601 subBodies)
+ {
+ return Create(jT809SubBusinessType,subBodies);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.tt b/src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.tt
new file mode 100644
index 0000000..a623d92
--- /dev/null
+++ b/src/JT809.Protocol/Extensions/JT809SubPackageExtensionsTemplate.tt
@@ -0,0 +1,51 @@
+<#@ template debug="false" hostspecific="false" language="C#" #>
+<#@ assembly name="netstandard" #>
+<#@ assembly name="System.Core" #>
+<#@ assembly name="System" #>
+<#@ assembly name="$(TargetPath)" #>
+<#@ import namespace="JT809.Protocol" #>
+<#@ import namespace="JT809.Protocol.Enums" #>
+<#@ import namespace="JT809.Protocol.Extensions" #>
+<#@ import namespace="JT809.Protocol.Attributes" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Text" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.Reflection" #>
+<#@ output extension=".cs" #>
+
+<#
+ var types=Enum.GetNames(typeof(JT809SubBusinessType));
+#>
+using JT809.Protocol.Enums;
+
+namespace JT809.Protocol.Extensions
+{
+ ///
+ /// 子命令包
+ /// auto-generated
+ ///
+ public static partial class JT809SubPackageExtensions
+ {
+
+<#
+ foreach (var item in types)
+ {
+ JT809SubBusinessType jT809SubBusinessType = item.ToEnum();
+ if (jT809SubBusinessType == JT809SubBusinessType.None) continue;
+ JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = jT809SubBusinessType.GetAttribute();
+ JT809SubBusinessTypeDescriptionAttribute jT809SubBusinessTypeDescriptionAttribute = jT809SubBusinessType.GetAttribute();
+#>
+ ///
+ /// <#= jT809SubBusinessTypeDescriptionAttribute.BusinessType.ToString() #>
+ /// <#= jT809SubBusinessTypeDescriptionAttribute.Code #> - <#= jT809SubBusinessTypeDescriptionAttribute.Name #>
+ /// auto-generated
+ ///
+ public static <#= jT809SubBodiesTypeAttribute.JT809BodiesType.FullName #> Create_<#= jT809SubBusinessTypeDescriptionAttribute.Name #>(this JT809SubBusinessType jT809SubBusinessType,<#= jT809SubBodiesTypeAttribute.JT809BodiesType.FullName #> subBodies)
+ {
+ return Create<<#= jT809SubBodiesTypeAttribute.JT809BodiesType.FullName#>>(jT809SubBusinessType,subBodies);
+ }
+<#
+ }
+#>
+ }
+}
\ No newline at end of file
diff --git a/src/JT809.Protocol/Formatters/IJT809FormatterOfT.cs b/src/JT809.Protocol/Formatters/IJT809FormatterOfT.cs
index 2d83c10..c9527ee 100644
--- a/src/JT809.Protocol/Formatters/IJT809FormatterOfT.cs
+++ b/src/JT809.Protocol/Formatters/IJT809FormatterOfT.cs
@@ -3,10 +3,15 @@ using System.Buffers;
namespace JT809.Protocol.Formatters
{
- public interface IJT809Formatter
+ public interface IJT809Formatter: IJT809Formatter
{
T Deserialize(ReadOnlySpan bytes, out int readSize);
int Serialize(ref byte[] bytes, int offset, T value);
}
+
+ public interface IJT809Formatter
+ {
+
+ }
}
diff --git a/src/JT809.Protocol/Formatters/JT809BodiesFormatter.cs b/src/JT809.Protocol/Formatters/JT809BodiesFormatter.cs
index 0562892..bfe6736 100644
--- a/src/JT809.Protocol/Formatters/JT809BodiesFormatter.cs
+++ b/src/JT809.Protocol/Formatters/JT809BodiesFormatter.cs
@@ -6,6 +6,7 @@ using System;
using System.Buffers;
using System.Collections.Generic;
using System.Text;
+using JT809.Protocol.Internal;
namespace JT809.Protocol.Formatters
{
@@ -20,15 +21,9 @@ namespace JT809.Protocol.Formatters
jT809Bodies.VehicleColor = (JT809VehicleColorType)JT809BinaryExtensions.ReadByteLittle(bytes, ref offset);
jT809Bodies.SubBusinessType = (JT809SubBusinessType)JT809BinaryExtensions.ReadUInt16Little(bytes, ref offset);
jT809Bodies.DataLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
- //JT809.Protocol.Enums.JT809BusinessType 映射对应消息特性
- JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = jT809Bodies.SubBusinessType.GetAttribute();
- if (jT809SubBodiesTypeAttribute == null)
- {
- throw new JT809Exception(JT809ErrorCode.GetAttributeError, $"JT809BodiesTypeAttribute Not Found>{jT809Bodies.SubBusinessType.ToString()}");
- }
try
{
- jT809Bodies.SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809Bodies.DataLength), out readSize);
+ jT809Bodies.SubBodies = jT809Bodies.SubBusinessType.Deserialize(bytes.Slice(offset, (int)jT809Bodies.DataLength), out readSize);
}
catch
{
@@ -43,17 +38,11 @@ namespace JT809.Protocol.Formatters
offset += JT809BinaryExtensions.WriteStringLittle(bytes, offset, value.VehicleNo, 21);
offset += JT809BinaryExtensions.WriteByteLittle(bytes, offset, (byte)value.VehicleColor);
offset += JT809BinaryExtensions.WriteUInt16Little(bytes, offset, (ushort)value.SubBusinessType);
- //JT809.Protocol.Enums.JT809BusinessType 映射对应消息特性
- JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = value.SubBusinessType.GetAttribute();
- if (jT809SubBodiesTypeAttribute == null)
- {
- throw new JT809Exception(JT809ErrorCode.GetAttributeError, $"JT809BodiesTypeAttribute Not Found>{value.SubBusinessType.ToString()}");
- }
try
{
// 先写入内容,然后在根据内容反写内容长度
offset = offset + 4;
- int contentOffset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), ref bytes, offset, value.SubBodies);
+ int contentOffset = value.SubBusinessType.Serialize(ref bytes, offset, value.SubBodies);
JT809BinaryExtensions.WriteUInt32Little(bytes, offset - 4, (uint)(contentOffset- offset));
offset = contentOffset;
}
diff --git a/src/JT809.Protocol/Formatters/JT809HeaderPackageFromatter.cs b/src/JT809.Protocol/Formatters/JT809HeaderPackageFormatter.cs
similarity index 63%
rename from src/JT809.Protocol/Formatters/JT809HeaderPackageFromatter.cs
rename to src/JT809.Protocol/Formatters/JT809HeaderPackageFormatter.cs
index 791c286..b24c6b8 100644
--- a/src/JT809.Protocol/Formatters/JT809HeaderPackageFromatter.cs
+++ b/src/JT809.Protocol/Formatters/JT809HeaderPackageFormatter.cs
@@ -6,7 +6,7 @@ using System;
namespace JT809.Protocol.Formatters
{
- public class JT809HeaderPackageFromatter : IJT809Formatter
+ public class JT809HeaderPackageFormatter : IJT809Formatter
{
public JT809HeaderPackage Deserialize(ReadOnlySpan bytes, out int readSize)
{
@@ -35,7 +35,7 @@ namespace JT809.Protocol.Formatters
// 3.初始化消息头
try
{
- jT809HeaderPackage.Header = JT809FormatterExtensions.GetFormatter().Deserialize(buffer.Slice(offset, JT809Header.FixedByteLength), out readSize);
+ jT809HeaderPackage.Header = JT809FormatterExtensions.HeaderFormatter.Deserialize(buffer.Slice(offset, JT809Header.FixedByteLength), out readSize);
}
catch (Exception ex)
{
@@ -46,30 +46,25 @@ namespace JT809.Protocol.Formatters
// 5.1 判断是否有数据体(总长度-固定长度)> 0
if ((jT809HeaderPackage.Header.MsgLength - JT809Package.FixedByteLength) > 0)
{
- //JT809.Protocol.Enums.JT809BusinessType 映射对应消息特性
- JT809BodiesTypeAttribute jT809BodiesTypeAttribute = jT809HeaderPackage.Header.BusinessType.GetAttribute();
- if (jT809BodiesTypeAttribute != null)
+ try
{
- try
+ // 5.2 是否加密
+ switch (jT809HeaderPackage.Header.EncryptFlag)
{
- // 5.2 是否加密
- switch (jT809HeaderPackage.Header.EncryptFlag)
- {
- case JT809Header_Encrypt.None:
- //5.3 处理消息体
- jT809HeaderPackage.Bodies = buffer.Slice(offset, checkIndex - offset).ToArray();
- break;
- case JT809Header_Encrypt.Common:
- byte[] bodiesData = JT809GlobalConfig.Instance.Encrypt.Decrypt(buffer.Slice(offset, checkIndex - offset).ToArray(), jT809HeaderPackage.Header.EncryptKey);
- jT809HeaderPackage.Bodies = bodiesData;
- break;
- }
- }
- catch (Exception ex)
- {
- throw new JT809Exception(JT809ErrorCode.BodiesParseError, $"offset>{offset.ToString()}", ex);
+ case JT809Header_Encrypt.None:
+ //5.3 处理消息体
+ jT809HeaderPackage.Bodies = buffer.Slice(offset, checkIndex - offset).ToArray();
+ break;
+ case JT809Header_Encrypt.Common:
+ byte[] bodiesData = JT809GlobalConfig.Instance.Encrypt.Decrypt(buffer.Slice(offset, checkIndex - offset).ToArray(), jT809HeaderPackage.Header.EncryptKey);
+ jT809HeaderPackage.Bodies = bodiesData;
+ break;
}
}
+ catch (Exception ex)
+ {
+ throw new JT809Exception(JT809ErrorCode.BodiesParseError, $"offset>{offset.ToString()}", ex);
+ }
}
jT809HeaderPackage.EndFlag = buffer[buffer.Length - 1];
readSize = buffer.Length;
diff --git a/src/JT809.Protocol/Formatters/JT809PackageFormatter.cs b/src/JT809.Protocol/Formatters/JT809PackageFormatter.cs
index d7ca3d7..cc65408 100644
--- a/src/JT809.Protocol/Formatters/JT809PackageFormatter.cs
+++ b/src/JT809.Protocol/Formatters/JT809PackageFormatter.cs
@@ -2,6 +2,7 @@
using JT809.Protocol.Enums;
using JT809.Protocol.Exceptions;
using JT809.Protocol.Extensions;
+using JT809.Protocol.Internal;
using System;
using System.Buffers;
using System.Collections.Generic;
@@ -38,7 +39,7 @@ namespace JT809.Protocol.Formatters
// 3.初始化消息头
try
{
- jT809Package.Header = JT809FormatterExtensions.GetFormatter().Deserialize(buffer.Slice(offset, JT809Header.FixedByteLength), out readSize);
+ jT809Package.Header = JT809FormatterExtensions.HeaderFormatter.Deserialize(buffer.Slice(offset, JT809Header.FixedByteLength), out readSize);
}
catch (Exception ex)
{
@@ -49,30 +50,25 @@ namespace JT809.Protocol.Formatters
// 5.1 判断是否有数据体(总长度-固定长度)> 0
if ((jT809Package.Header.MsgLength - JT809Package.FixedByteLength) > 0)
{
- //JT809.Protocol.Enums.JT809BusinessType 映射对应消息特性
- JT809BodiesTypeAttribute jT809BodiesTypeAttribute = jT809Package.Header.BusinessType.GetAttribute();
- if (jT809BodiesTypeAttribute != null)
+ try
{
- try
+ // 5.2 是否加密
+ switch (jT809Package.Header.EncryptFlag)
{
- // 5.2 是否加密
- switch (jT809Package.Header.EncryptFlag)
- {
- case JT809Header_Encrypt.None:
- //5.3 处理消息体
- jT809Package.Bodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809BodiesTypeAttribute.JT809BodiesType), buffer.Slice(offset, checkIndex - offset), out readSize);
- break;
- case JT809Header_Encrypt.Common:
- byte[] bodiesData = JT809GlobalConfig.Instance.Encrypt.Decrypt(buffer.Slice(offset, checkIndex - offset).ToArray(), jT809Package.Header.EncryptKey);
- jT809Package.Bodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809BodiesTypeAttribute.JT809BodiesType), bodiesData, out readSize);
- break;
- }
- }
- catch (Exception ex)
- {
- throw new JT809Exception(JT809ErrorCode.BodiesParseError,$"offset>{offset.ToString()}", ex);
+ case JT809Header_Encrypt.None:
+ //5.3 处理消息体
+ jT809Package.Bodies = jT809Package.Header.BusinessType.Deserialize(buffer.Slice(offset, checkIndex - offset), out readSize);
+ break;
+ case JT809Header_Encrypt.Common:
+ byte[] bodiesData = JT809GlobalConfig.Instance.Encrypt.Decrypt(buffer.Slice(offset, checkIndex - offset).ToArray(), jT809Package.Header.EncryptKey);
+ jT809Package.Bodies = jT809Package.Header.BusinessType.Deserialize(bodiesData, out readSize);
+ break;
}
}
+ catch (Exception ex)
+ {
+ throw new JT809Exception(JT809ErrorCode.BodiesParseError,$"offset>{offset.ToString()}", ex);
+ }
}
jT809Package.EndFlag = buffer[buffer.Length - 1];
readSize = buffer.Length;
@@ -83,14 +79,10 @@ namespace JT809.Protocol.Formatters
{
// 1. 先序列化数据体,根据数据体的长度赋值给头部,在序列化头部。
int messageBodyOffset = 0;
- JT809BodiesTypeAttribute jT809BodiesTypeAttribute = value.Header.BusinessType.GetAttribute();
- if (jT809BodiesTypeAttribute != null)
+ if (value.Bodies != null)
{
- if (value.Bodies != null)
- {
- // 1.1 处理数据体
- messageBodyOffset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809BodiesTypeAttribute.JT809BodiesType), ref bytes, messageBodyOffset, value.Bodies);
- }
+ // 1.1 处理数据体
+ messageBodyOffset = value.Header.BusinessType.Serialize(ref bytes, messageBodyOffset, value.Bodies);
}
byte[] messageBodyData=null;
if (messageBodyOffset != 0)
@@ -119,7 +111,7 @@ namespace JT809.Protocol.Formatters
value.Header.MsgLength = JT809Package.FixedByteLength;
}
// 2.1写入头部数据
- offset = JT809FormatterExtensions.GetFormatter().Serialize(ref bytes, offset, value.Header);
+ offset = JT809FormatterExtensions.HeaderFormatter.Serialize(ref bytes, offset, value.Header);
if (messageBodyOffset != 0)
{
// 3. 写入数据体
diff --git a/src/JT809.Protocol/Formatters/SubMessageBodyFormatters/JT809_0x9600_0x1601_Formatter.cs b/src/JT809.Protocol/Formatters/SubMessageBodyFormatters/JT809_0x1600_0x1601_Formatter.cs
similarity index 93%
rename from src/JT809.Protocol/Formatters/SubMessageBodyFormatters/JT809_0x9600_0x1601_Formatter.cs
rename to src/JT809.Protocol/Formatters/SubMessageBodyFormatters/JT809_0x1600_0x1601_Formatter.cs
index fa32bdf..dc722f5 100644
--- a/src/JT809.Protocol/Formatters/SubMessageBodyFormatters/JT809_0x9600_0x1601_Formatter.cs
+++ b/src/JT809.Protocol/Formatters/SubMessageBodyFormatters/JT809_0x1600_0x1601_Formatter.cs
@@ -7,7 +7,7 @@ using System.Text;
namespace JT809.Protocol.Formatters.SubMessageBodyFormatters
{
- public class JT809_0x9600_0x1601_Formatter : IJT809Formatter
+ public class JT809_0x1600_0x1601_Formatter : IJT809Formatter
{
public JT809_0x1600_0x1601 Deserialize(ReadOnlySpan bytes, out int readSize)
{
diff --git a/src/JT809.Protocol/Internal/BusinessTypeSerializerFactory.cs b/src/JT809.Protocol/Internal/BusinessTypeSerializerFactory.cs
new file mode 100644
index 0000000..ce538e9
--- /dev/null
+++ b/src/JT809.Protocol/Internal/BusinessTypeSerializerFactory.cs
@@ -0,0 +1,138 @@
+using JT809.Protocol.Enums;
+using JT809.Protocol.Formatters;
+using JT809.Protocol.Formatters.MessageBodyFormatters;
+using JT809.Protocol.MessageBody;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.Internal
+{
+ static class BusinessTypeSerializerFactory
+ {
+ static JT809_0x1001_Formatter jT809_0x1001_Formatter = new JT809_0x1001_Formatter();
+ static JT809_0x1002_Formatter jT809_0x1002_Formatter = new JT809_0x1002_Formatter();
+ static JT809_0x1003_Formatter jT809_0x1003_Formatter = new JT809_0x1003_Formatter();
+ static JT809_0x1007_Formatter jT809_0x1007_Formatter = new JT809_0x1007_Formatter();
+ static JT809_0x1008_Formatter jT809_0x1008_Formatter = new JT809_0x1008_Formatter();
+ static JT809BodiesFormatter JT809_0x1200_Formatter = new JT809BodiesFormatter();
+ static JT809_0x1300_Formatter jT809_0x1300_Formatter = new JT809_0x1300_Formatter();
+ static JT809BodiesFormatter JT809_0x1400_Formatter = new JT809BodiesFormatter();
+ static JT809BodiesFormatter JT809_0x1500_Formatter = new JT809BodiesFormatter();
+ static JT809BodiesFormatter JT809_0x1600_Formatter = new JT809BodiesFormatter();
+ static JT809_0x9001_Formatter jT809_0x9001_Formatter = new JT809_0x9001_Formatter();
+ static JT809_0x9002_Formatter jT809_0x9002_Formatter = new JT809_0x9002_Formatter();
+ static JT809_0x9003_Formatter jT809_0x9003_Formatter = new JT809_0x9003_Formatter();
+ static JT809_0x9007_Formatter jT809_0x9007_Formatter = new JT809_0x9007_Formatter();
+ static JT809_0x9008_Formatter jT809_0x9008_Formatter = new JT809_0x9008_Formatter();
+ static JT809_0x9101_Formatter jT809_0x9101_Formatter = new JT809_0x9101_Formatter();
+ static JT809BodiesFormatter jT809_0x9200_Formatter = new JT809BodiesFormatter();
+ static JT809_0x9300_Formatter jT809_0x9300_Formatter = new JT809_0x9300_Formatter();
+ static JT809BodiesFormatter jT809_0x9400_Formatter = new JT809BodiesFormatter();
+ static JT809BodiesFormatter jT809_0x9500_Formatter = new JT809BodiesFormatter();
+ static JT809BodiesFormatter jT809_0x9600_Formatter = new JT809BodiesFormatter();
+
+ public static JT809Bodies Deserialize(this JT809BusinessType jT809BusinessType, ReadOnlySpan bytes, out int readSize)
+ {
+ switch (jT809BusinessType)
+ {
+ case JT809BusinessType.主链路登录请求消息:
+ return jT809_0x1001_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.主链路登录应答消息:
+ return jT809_0x1002_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.主链路注销请求消息:
+ return jT809_0x1003_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.主链路断开通知消息:
+ return jT809_0x1007_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.下级平台主动关闭链路通知消息:
+ return jT809_0x1008_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.主链路动态信息交换消息:
+ return JT809_0x1200_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.主链路平台间信息交互消息:
+ return jT809_0x1300_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.主链路报警信息交互消息:
+ return JT809_0x1400_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.主链路车辆监管消息:
+ return JT809_0x1500_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.主链路静态信息交换消息:
+ return JT809_0x1600_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.从链路连接请求消息:
+ return jT809_0x9001_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.从链路连接应答消息:
+ return jT809_0x9002_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.从链路注销请求消息:
+ return jT809_0x9003_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.从链路断开通知消息:
+ return jT809_0x9007_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.上级平台主动关闭链路通知消息:
+ return jT809_0x9008_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.接收定位信息数量通知消息:
+ return jT809_0x9101_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.从链路动态信息交换消息:
+ return jT809_0x9200_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.从链路平台间信息交互消息:
+ return jT809_0x9300_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.从链路报警信息交互消息:
+ return jT809_0x9400_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.从链路车辆监管消息:
+ return jT809_0x9500_Formatter.Deserialize(bytes, out readSize);
+ case JT809BusinessType.从链路静态信息交换消息:
+ return jT809_0x9600_Formatter.Deserialize(bytes, out readSize);
+ default:
+ readSize = 0;
+ return default;
+ }
+ }
+
+ public static int Serialize(this JT809BusinessType jT809BusinessType, ref byte[] bytes, int offset, dynamic value)
+ {
+ switch (jT809BusinessType)
+ {
+ case JT809BusinessType.主链路登录请求消息:
+ return jT809_0x1001_Formatter.Serialize(ref bytes,offset, value);
+ case JT809BusinessType.主链路登录应答消息:
+ return jT809_0x1002_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.主链路注销请求消息:
+ return jT809_0x1003_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.主链路断开通知消息:
+ return jT809_0x1007_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.下级平台主动关闭链路通知消息:
+ return jT809_0x1008_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.主链路动态信息交换消息:
+ return JT809_0x1200_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.主链路平台间信息交互消息:
+ return jT809_0x1300_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.主链路报警信息交互消息:
+ return JT809_0x1400_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.主链路车辆监管消息:
+ return JT809_0x1500_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.主链路静态信息交换消息:
+ return JT809_0x1600_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.从链路连接请求消息:
+ return jT809_0x9001_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.从链路连接应答消息:
+ return jT809_0x9002_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.从链路注销请求消息:
+ return jT809_0x9003_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.从链路断开通知消息:
+ return jT809_0x9007_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.上级平台主动关闭链路通知消息:
+ return jT809_0x9008_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.接收定位信息数量通知消息:
+ return jT809_0x9101_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.从链路动态信息交换消息:
+ return jT809_0x9200_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.从链路平台间信息交互消息:
+ return jT809_0x9300_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.从链路报警信息交互消息:
+ return jT809_0x9400_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.从链路车辆监管消息:
+ return jT809_0x9500_Formatter.Serialize(ref bytes, offset, value);
+ case JT809BusinessType.从链路静态信息交换消息:
+ return jT809_0x9600_Formatter.Serialize(ref bytes, offset, value);
+ default:
+ return offset;
+ }
+ }
+ }
+}
diff --git a/src/JT809.Protocol/Internal/SubBodiesTypeSerializerFactory.cs b/src/JT809.Protocol/Internal/SubBodiesTypeSerializerFactory.cs
new file mode 100644
index 0000000..a1cb288
--- /dev/null
+++ b/src/JT809.Protocol/Internal/SubBodiesTypeSerializerFactory.cs
@@ -0,0 +1,221 @@
+using JT809.Protocol.Enums;
+using JT809.Protocol.Formatters.SubMessageBodyFormatters;
+using System;
+
+namespace JT809.Protocol.Internal
+{
+ static class SubBodiesTypeSerializerFactory
+ {
+ static JT809_0x1200_0x1201_Formatter jT809_0X1200_0X1201_Formatter = new JT809_0x1200_0x1201_Formatter();
+ static JT809_0x1200_0x1202_Formatter jT809_0X1200_0X1202_Formatter = new JT809_0x1200_0x1202_Formatter();
+ static JT809_0x1200_0x1203_Formatter jT809_0X1200_0X1203_Formatter = new JT809_0x1200_0x1203_Formatter();
+ static JT809_0x1200_0x1207_Formatter jT809_0X1200_0X1207_Formatter = new JT809_0x1200_0x1207_Formatter();
+ static JT809_0x1200_0x1209_Formatter jT809_0X1200_0X1209_Formatter = new JT809_0x1200_0x1209_Formatter();
+ static JT809_0x1200_0x120A_Formatter jT809_0X1200_0X120A_Formatter = new JT809_0x1200_0x120A_Formatter();
+ static JT809_0x1200_0x120B_Formatter jT809_0X1200_0X120B_Formatter = new JT809_0x1200_0x120B_Formatter();
+ static JT809_0x1200_0x120C_Formatter jT809_0X1200_0X120C_Formatter = new JT809_0x1200_0x120C_Formatter();
+ static JT809_0x1200_0x120D_Formatter jT809_0X1200_0X120D_Formatter = new JT809_0x1200_0x120D_Formatter();
+ static JT809_0x1300_0x1301_Formatter jT809_0X1300_0X1301_Formatter = new JT809_0x1300_0x1301_Formatter();
+ static JT809_0x1300_0x1302_Formatter jT809_0X1300_0X1302_Formatter = new JT809_0x1300_0x1302_Formatter();
+ static JT809_0x1400_0x1401_Formatter jT809_0X1400_0X1401_Formatter = new JT809_0x1400_0x1401_Formatter();
+ static JT809_0x1400_0x1402_Formatter jT809_0X1400_0X1402_Formatter = new JT809_0x1400_0x1402_Formatter();
+ static JT809_0x1400_0x1403_Formatter jT809_0X1400_0X1403_Formatter = new JT809_0x1400_0x1403_Formatter();
+ static JT809_0x1500_0x1501_Formatter jT809_0X1500_0X1501_Formatter = new JT809_0x1500_0x1501_Formatter();
+ static JT809_0x1500_0x1502_Formatter jT809_0X1500_0X1502_Formatter = new JT809_0x1500_0x1502_Formatter();
+ static JT809_0x1500_0x1503_Formatter jT809_0X1500_0X1503_Formatter = new JT809_0x1500_0x1503_Formatter();
+ static JT809_0x1500_0x1504_Formatter jT809_0X1500_0X1504_Formatter = new JT809_0x1500_0x1504_Formatter();
+ static JT809_0x1500_0x1505_Formatter jT809_0X1500_0X1505_Formatter = new JT809_0x1500_0x1505_Formatter();
+ static JT809_0x1600_0x1601_Formatter jT809_0X1600_0X1601_Formatter = new JT809_0x1600_0x1601_Formatter();
+
+ static JT809_0x9200_0x9202_Formatter jT809_0X9200_0X9202_Formatter = new JT809_0x9200_0x9202_Formatter();
+ static JT809_0x9200_0x9203_Formatter jT809_0X9200_0X9203_Formatter = new JT809_0x9200_0x9203_Formatter();
+ static JT809_0x9200_0x9204_Formatter jT809_0X9200_0X9204_Formatter = new JT809_0x9200_0x9204_Formatter();
+ static JT809_0x9200_0x9205_Formatter jT809_0X9200_0X9205_Formatter = new JT809_0x9200_0x9205_Formatter();
+ static JT809_0x9200_0x9206_Formatter jT809_0X9200_0X9206_Formatter = new JT809_0x9200_0x9206_Formatter();
+ static JT809_0x9200_0x9207_Formatter jT809_0X9200_0X9207_Formatter = new JT809_0x9200_0x9207_Formatter();
+ static JT809_0x9200_0x9208_Formatter jT809_0X9200_0X9208_Formatter = new JT809_0x9200_0x9208_Formatter();
+ static JT809_0x9200_0x9209_Formatter jT809_0X9200_0X9209_Formatter = new JT809_0x9200_0x9209_Formatter();
+ static JT809_0x9300_0x9301_Formatter jT809_0X9300_0X9301_Formatter = new JT809_0x9300_0x9301_Formatter();
+ static JT809_0x9300_0x9302_Formatter jT809_0X9300_0X9302_Formatter = new JT809_0x9300_0x9302_Formatter();
+ static JT809_0x9400_0x9401_Formatter jT809_0X9400_0X9401_Formatter = new JT809_0x9400_0x9401_Formatter();
+ static JT809_0x9400_0x9402_Formatter jT809_0X9400_0X9402_Formatter = new JT809_0x9400_0x9402_Formatter();
+ static JT809_0x9400_0x9403_Formatter jT809_0X9400_0X9403_Formatter = new JT809_0x9400_0x9403_Formatter();
+ static JT809_0x9500_0x9501_Formatter jT809_0X9500_0X9501_Formatter = new JT809_0x9500_0x9501_Formatter();
+ static JT809_0x9500_0x9502_Formatter jT809_0X9500_0X9502_Formatter = new JT809_0x9500_0x9502_Formatter();
+ static JT809_0x9500_0x9503_Formatter jT809_0X9500_0X9503_Formatter = new JT809_0x9500_0x9503_Formatter();
+ static JT809_0x9500_0x9504_Formatter jT809_0X9500_0X9504_Formatter = new JT809_0x9500_0x9504_Formatter();
+ static JT809_0x9500_0x9505_Formatter jT809_0X9500_0X9505_Formatter = new JT809_0x9500_0x9505_Formatter();
+
+
+ public static JT809SubBodies Deserialize(this JT809SubBusinessType jT809SubBusinessType, ReadOnlySpan bytes, out int readSize)
+ {
+ switch (jT809SubBusinessType)
+ {
+ case JT809SubBusinessType.上传车辆注册信息:
+ return jT809_0X1200_0X1201_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.实时上传车辆定位信息:
+ return jT809_0X1200_0X1202_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.车辆定位信息自动补报:
+ return jT809_0X1200_0X1203_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.申请交换指定车辆定位信息请求:
+ return jT809_0X1200_0X1207_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.补发车辆定位信息请求:
+ return jT809_0X1200_0X1209_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.上报车辆驾驶员身份识别信息应答:
+ return jT809_0X1200_0X120A_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.上报车辆电子运单应答:
+ return jT809_0X1200_0X120B_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.主动上报驾驶员身份信息:
+ return jT809_0X1200_0X120C_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.主动上报车辆电子运单信息:
+ return jT809_0X1200_0X120D_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.平台查岗应答:
+ return jT809_0X1300_0X1301_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.下发平台间报文应答:
+ return jT809_0X1300_0X1302_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.报警督办应答:
+ return jT809_0X1400_0X1401_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.上报报警信息:
+ return jT809_0X1400_0X1402_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.主动上报报警处理结果信息:
+ return jT809_0X1400_0X1403_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.车辆单向监听应答:
+ return jT809_0X1500_0X1501_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.车辆拍照应答:
+ return jT809_0X1500_0X1502_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.下发车辆报文应答:
+ return jT809_0X1500_0X1503_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.上报车辆行驶记录应答:
+ return jT809_0X1500_0X1504_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.车辆应急接入监管平台应答消息:
+ return jT809_0X1500_0X1505_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.补报车辆静态信息应答:
+ return jT809_0X1600_0X1601_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.交换车辆定位信息:
+ return jT809_0X9200_0X9202_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.车辆定位信息交换补发:
+ return jT809_0X9200_0X9203_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.交换车辆静态信息:
+ return jT809_0X9200_0X9204_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.启动车辆定位信息交换请求:
+ return jT809_0X9200_0X9205_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.结束车辆定位信息交换请求:
+ return jT809_0X9200_0X9206_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.申请交换指定车辆定位信息应答:
+ return jT809_0X9200_0X9207_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.取消交换指定车辆定位信息应答:
+ return jT809_0X9200_0X9208_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.补发车辆定位信息应答:
+ return jT809_0X9200_0X9209_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.平台查岗请求:
+ return jT809_0X9300_0X9301_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.下发平台间报文请求:
+ return jT809_0X9300_0X9302_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.报警督办请求:
+ return jT809_0X9400_0X9401_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.报警预警:
+ return jT809_0X9400_0X9402_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.实时交换报警信息:
+ return jT809_0X9400_0X9403_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.车辆单向监听请求:
+ return jT809_0X9500_0X9501_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.车辆拍照请求:
+ return jT809_0X9500_0X9502_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.下发车辆报文请求:
+ return jT809_0X9500_0X9503_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.上报车辆行驶记录请求:
+ return jT809_0X9500_0X9504_Formatter.Deserialize(bytes, out readSize);
+ case JT809SubBusinessType.车辆应急接入监管平台请求消息:
+ return jT809_0X9500_0X9505_Formatter.Deserialize(bytes, out readSize);
+ default:
+ readSize = 0;
+ return default;
+ }
+ }
+
+ public static int Serialize(this JT809SubBusinessType jT809SubBusinessType, ref byte[] bytes, int offset, dynamic value)
+ {
+ switch (jT809SubBusinessType)
+ {
+ case JT809SubBusinessType.上传车辆注册信息:
+ return jT809_0X1200_0X1201_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.实时上传车辆定位信息:
+ return jT809_0X1200_0X1202_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.车辆定位信息自动补报:
+ return jT809_0X1200_0X1203_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.申请交换指定车辆定位信息请求:
+ return jT809_0X1200_0X1207_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.补发车辆定位信息请求:
+ return jT809_0X1200_0X1209_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.上报车辆驾驶员身份识别信息应答:
+ return jT809_0X1200_0X120A_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.上报车辆电子运单应答:
+ return jT809_0X1200_0X120B_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.主动上报驾驶员身份信息:
+ return jT809_0X1200_0X120C_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.主动上报车辆电子运单信息:
+ return jT809_0X1200_0X120D_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.平台查岗应答:
+ return jT809_0X1300_0X1301_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.下发平台间报文应答:
+ return jT809_0X1300_0X1302_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.报警督办应答:
+ return jT809_0X1400_0X1401_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.上报报警信息:
+ return jT809_0X1400_0X1402_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.主动上报报警处理结果信息:
+ return jT809_0X1400_0X1403_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.车辆单向监听应答:
+ return jT809_0X1500_0X1501_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.车辆拍照应答:
+ return jT809_0X1500_0X1502_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.下发车辆报文应答:
+ return jT809_0X1500_0X1503_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.上报车辆行驶记录应答:
+ return jT809_0X1500_0X1504_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.车辆应急接入监管平台应答消息:
+ return jT809_0X1500_0X1505_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.补报车辆静态信息应答:
+ return jT809_0X1600_0X1601_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.交换车辆定位信息:
+ return jT809_0X9200_0X9202_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.车辆定位信息交换补发:
+ return jT809_0X9200_0X9203_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.交换车辆静态信息:
+ return jT809_0X9200_0X9204_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.启动车辆定位信息交换请求:
+ return jT809_0X9200_0X9205_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.结束车辆定位信息交换请求:
+ return jT809_0X9200_0X9206_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.申请交换指定车辆定位信息应答:
+ return jT809_0X9200_0X9207_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.取消交换指定车辆定位信息应答:
+ return jT809_0X9200_0X9208_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.补发车辆定位信息应答:
+ return jT809_0X9200_0X9209_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.平台查岗请求:
+ return jT809_0X9300_0X9301_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.下发平台间报文请求:
+ return jT809_0X9300_0X9302_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.报警督办请求:
+ return jT809_0X9400_0X9401_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.报警预警:
+ return jT809_0X9400_0X9402_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.实时交换报警信息:
+ return jT809_0X9400_0X9403_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.车辆单向监听请求:
+ return jT809_0X9500_0X9501_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.车辆拍照请求:
+ return jT809_0X9500_0X9502_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.下发车辆报文请求:
+ return jT809_0X9500_0X9503_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.上报车辆行驶记录请求:
+ return jT809_0X9500_0X9504_Formatter.Serialize(ref bytes, offset, value);
+ case JT809SubBusinessType.车辆应急接入监管平台请求消息:
+ return jT809_0X9500_0X9505_Formatter.Serialize(ref bytes, offset, value);
+ default:
+ return offset;
+ }
+ }
+ }
+}
diff --git a/src/JT809.Protocol/JT809.Protocol.csproj b/src/JT809.Protocol/JT809.Protocol.csproj
index 4781bb1..57628f1 100644
--- a/src/JT809.Protocol/JT809.Protocol.csproj
+++ b/src/JT809.Protocol/JT809.Protocol.csproj
@@ -12,9 +12,9 @@
false
https://github.com/SmallChi/JT809
https://github.com/SmallChi/JT809
- https://github.com/SmallChi/JT809/blob/master/LICENSE
+ https://github.com/SmallChi/JT809/blob/master/LICENSE
true
- 1.2.1
+ 1.3.0
@@ -84,12 +84,53 @@
+
+
+ True
+ True
+ JT809PackageExtensionsTemplate.tt
+
+
+ True
+ True
+ JT809SubPackageExtensionsTemplate.tt
+
+
+
-
+
+
+
+ TextTemplatingFileGenerator
+ JT809PackageExtensionsTemplate.cs
+
+
+ TextTemplatingFileGenerator
+ JT809SubPackageExtensionsTemplate.cs
+
+
+
+
+
+
+
+
+
+ True
+ True
+ JT809PackageExtensionsTemplate.tt
+
+
+ True
+ True
+ JT809SubPackageExtensionsTemplate.tt
+
+
+
diff --git a/src/JT809.Protocol/JT809HeaderPackage.cs b/src/JT809.Protocol/JT809HeaderPackage.cs
index 159dcdc..4f46968 100644
--- a/src/JT809.Protocol/JT809HeaderPackage.cs
+++ b/src/JT809.Protocol/JT809HeaderPackage.cs
@@ -9,7 +9,7 @@ namespace JT809.Protocol
///
/// JT809头部数据包
///
- [JT809Formatter(typeof(JT809HeaderPackageFromatter))]
+ [JT809Formatter(typeof(JT809HeaderPackageFormatter))]
public class JT809HeaderPackage
{
public byte BeginFlag { get; set; } = JT809Package.BEGINFLAG;
diff --git a/src/JT809.Protocol/JT809Serializer.cs b/src/JT809.Protocol/JT809Serializer.cs
index 4048494..7376926 100644
--- a/src/JT809.Protocol/JT809Serializer.cs
+++ b/src/JT809.Protocol/JT809Serializer.cs
@@ -14,12 +14,21 @@ namespace JT809.Protocol
{
public static byte[] Serialize(JT809Package jT809Package, int minBufferSize = 1024)
{
- return Serialize(jT809Package, minBufferSize);
+ byte[] buffer = JT809ArrayPool.Rent(minBufferSize);
+ try
+ {
+ var len = JT809FormatterExtensions.PackageFormatter.Serialize(ref buffer, 0, jT809Package);
+ return buffer.AsSpan(0, len).ToArray();
+ }
+ finally
+ {
+ JT809ArrayPool.Return(buffer);
+ }
}
public static JT809Package Deserialize(ReadOnlySpan bytes)
{
- return Deserialize(bytes);
+ return JT809FormatterExtensions.PackageFormatter.Deserialize(bytes, out _);
}
public static byte[] Serialize(T obj, int minBufferSize = 1024)
@@ -39,9 +48,7 @@ namespace JT809.Protocol
public static T Deserialize(ReadOnlySpan bytes)
{
- var formatter = JT809FormatterExtensions.GetFormatter();
- int readSize;
- return formatter.Deserialize(bytes, out readSize);
+ return JT809FormatterExtensions.GetFormatter().Deserialize(bytes, out _);
}
}
}
diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x1600_0x1601.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x1600_0x1601.cs
index ab1dd37..0d201d5 100644
--- a/src/JT809.Protocol/SubMessageBody/JT809_0x1600_0x1601.cs
+++ b/src/JT809.Protocol/SubMessageBody/JT809_0x1600_0x1601.cs
@@ -11,7 +11,7 @@ namespace JT809.Protocol.SubMessageBody
/// 子业务类型标识:UP_BASE_MSG_VEHICLE_ADDED_ACK
/// 描述:上级平台应答下级平台发送的补报车辆静态信息清求消息
///
- [JT809Formatter(typeof(JT809_0x9600_0x1601_Formatter))]
+ [JT809Formatter(typeof(JT809_0x1600_0x1601_Formatter))]
public class JT809_0x1600_0x1601:JT809SubBodies
{
///
diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x9200_0x9204.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x9200_0x9204.cs
index 7f39824..704d7e1 100644
--- a/src/JT809.Protocol/SubMessageBody/JT809_0x9200_0x9204.cs
+++ b/src/JT809.Protocol/SubMessageBody/JT809_0x9200_0x9204.cs
@@ -12,7 +12,7 @@ namespace JT809.Protocol.SubMessageBody
/// 描述:在首次启动跨域车辆定位信息交换,或者以后交换过程中车辆静态信息有更新时,由上级平台向下级平台下发一次车辆静态信息。下.级平台接收后自行更新该车辆静态信息
///
[JT809Formatter(typeof(JT809_0x9200_0x9204_Formatter))]
- public class JT809_0x9200_0x9204
+ public class JT809_0x9200_0x9204:JT809SubBodies
{
///
/// 车辆信息
diff --git a/src/JT809.Protocol/SubMessageBody/JT809_0x9200_0x920B.cs b/src/JT809.Protocol/SubMessageBody/JT809_0x9200_0x920B.cs
index 28d7d84..fe0695b 100644
--- a/src/JT809.Protocol/SubMessageBody/JT809_0x9200_0x920B.cs
+++ b/src/JT809.Protocol/SubMessageBody/JT809_0x9200_0x920B.cs
@@ -8,7 +8,7 @@ namespace JT809.Protocol.SubMessageBody
/// 上报车辆电子运单请求消息
/// 子业务类型标识:DOWN_EXG_MSG_TAKE_EWAYBILL_REQ
///
- public class JT809_0x9200_0x920B
+ public class JT809_0x9200_0x920B:JT809SubBodies
{
}
}